Skip to content

Commit c7b54dc

Browse files
committed
update base files
1 parent a8c65eb commit c7b54dc

File tree

4 files changed

+116
-8
lines changed

4 files changed

+116
-8
lines changed

mos_tax.tsv

+8-8
Original file line numberDiff line numberDiff line change
@@ -644,7 +644,7 @@ Aztecaedes ramirezi Aztecaedes Vargas & Downs 1950
644644
Belkinius aurotaeniatus Belkinius Edwards 1922
645645
Bifidistylus boneti Bifidistylus Gil, Collado 1936
646646
Bifidistylus lamborni Bifidistylus Edwards 1923
647-
Bironella confusa Neobironella Bonne-Wepster 195l
647+
Bironella confusa Neobironella Bonne-Wepster 1951
648648
Bironella derooki Neobironella Soesilo & van Slooten 1931
649649
Bironella gracilis Bironella Theobald 1905
650650
Bironella hollandi Brugella Taylor 1934
@@ -950,12 +950,12 @@ Culex clarki Melanoconion Evans 1924
950950
Culex clastrieri Aedinus Casal & Garcia 1968
951951
Culex coerulescens Lophoceraomyia Edwards 1928
952952
Culex collessi Lophoceraomyia Sirivanakarn 1968
953-
Culex columnaris Melanoconion Sá & Hutchings -
953+
Culex columnaris Melanoconion Sá & Hutchings
954954
Culex comatus Melanoconion Senevet & Abonnenc 1939
955955
Culex commevynensis Melanoconion Bonne-Wepster & Bonne 1920
956956
Culex comminutor Melanoconion Dyar 1920
957957
Culex comorensis Culex Brunhes 1977
958-
Culex comptus Melanoconion Sá & Sallum -
958+
Culex comptus Melanoconion Sá & Sallum
959959
Culex confundior Melanoconion Komp & Rozeboom 1951
960960
Culex conservator Anoedioporpa Dyar & Knab 1906
961961
Culex consolator Microculex Dyar & Knab 1906
@@ -1202,8 +1202,8 @@ Culex lineatus Afroculex Theobald 1912
12021202
Culex litoralis Culex Bohart 1946
12031203
Culex litwakae Culex Harbach 1985
12041204
Culex longicornis Oculeomyia Sirivanakarn 1976
1205-
Culex longisetosus Melanoconion Sá & Sallum -
1206-
Culex longistylus Melanoconion Sá & Sallum -
1205+
Culex longisetosus Melanoconion Sá & Sallum
1206+
Culex longistylus Melanoconion Sá & Sallum
12071207
Culex lopesi Melanoconion Sirivanakarn & Jakob 1979
12081208
Culex lucaris Lophoceraomyia Colless 1965
12091209
Culex lucifugus Melanoconion Komp 1936
@@ -1455,7 +1455,7 @@ Culex spathulatus Melanoconion Forattini & Sallum 1987
14551455
Culex sphinx Culex Howard, Dyar & Knab 1913
14561456
Culex spiculostylus Culiciomyia Chen 1989
14571457
Culex spiculosus Lophoceraomyia Bram & Rattanarithikul 1967
1458-
Culex spinifer Melanoconion Sá & Sallum -
1458+
Culex spinifer Melanoconion Sá & Sallum
14591459
Culex spinosus Culex Lutz 1905
14601460
Culex spissipes Melanoconion Theobald 1903
14611461
Culex squamosus Oculeomyia Taylor 1914
@@ -3415,7 +3415,7 @@ Verrallina stunga Harbachius Klein 1973
34153415
Verrallina taeniata Neomacleaya Leicester 1908
34163416
Verrallina torosa Neomacleaya Delfinado 1967
34173417
Verrallina trispinata Verrallina King & Hoogstraal 1947
3418-
Verrallina unca Neomacleaya Theobald 190l
3418+
Verrallina unca Neomacleaya Theobald 1901
34193419
Verrallina uniformis Harbachius Theobald 1910
34203420
Verrallina vallistris Neomacleaya Barraud 1928
34213421
Verrallina vanapa Verrallina Huang 1968
@@ -3577,4 +3577,4 @@ Zavortinkius pollinctor Zavortinkius Graham 1910
35773577
Zeugnomyia aguilari Zeugnomyia Baisas & Feliciano 1953
35783578
Zeugnomyia fajardoi Zeugnomyia Baisas & Feliciano 1953
35793579
Zeugnomyia gracilis Zeugnomyia Leicester 1908
3580-
Zeugnomyia lawtoni Zeugnomyia Baisas 1946
3580+
Zeugnomyia lawtoni Zeugnomyia Baisas 1946

plots.py

+108
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
#!/usr/bin/python3
2+
# -*- coding: utf-8 -*-
3+
###############################>GENERAL-INFORMATIONS<###############################
4+
"""
5+
Build in Python 3.6.5+
6+
7+
Author:
8+
Filipe Dezordi
9+
zimmer.filipe@gmail.com
10+
https://dezordi.github.io/
11+
12+
"""
13+
###############################>LIBRARIES<###############################
14+
import pandas as pd
15+
import numpy as np
16+
import argparse, re
17+
import seaborn as sns
18+
import matplotlib.pyplot as plt
19+
import matplotlib.style as style
20+
from matplotlib.colors import ListedColormap
21+
22+
23+
###############################>ARGUMENTS<###############################
24+
parser = argparse.ArgumentParser(description = 'Create beeswarm plots of .tax files')
25+
parser.add_argument("-in", "--input", help="TSV file (mos_tax.tsv)", required=True)
26+
parser.add_argument("-md","--mode",help="Create plots about Genus, Subgenus, Specie or Year? default = Genus",default='Genus', choices=['Genus','Subgenus','Specie','Year'])
27+
parser.add_argument("-st","--specifictax",help="Pass specific taxon to generate plots, e.g. Aedes Culex",nargs='+')
28+
parser.add_argument("-pt","--plottype",help="Choose the type of graph, default = Bar",default='Bar', choices=['Donut','Bar','Hist'])
29+
parser.add_argument("-gb","--groupby",help="Treshold value to group taxon in 'Others' category, default = 30",default = int(30), type=int)
30+
parser.add_argument("-cm","--colormap",help="Choose seaborn colors, default=rainbow",default='rainbow')
31+
args = parser.parse_args()
32+
input_file = args.input
33+
plot_mode = args.mode
34+
plot_type = args.plottype
35+
specific_tax = args.specifictax
36+
group_by = args.groupby
37+
color_palette = args.colormap
38+
###############################>SNS-STYLE<###############################
39+
sns.set(style="ticks")
40+
my_cmap = ListedColormap(sns.color_palette(color_palette))
41+
###############################>Functions<###############################
42+
def taxonomy_distribuition(tsv_file,plot_type):
43+
if plot_type == 'Bar':
44+
tax_count = df[plot_mode].value_counts()
45+
df2 = pd.DataFrame(tax_count)
46+
df2.columns = ['Number']
47+
bar_plot =sns.barplot(x=df2.index.values, y='Number', data=df2,palette=color_palette)
48+
sns.despine(fig=None, top=True, right=True, left=False, bottom=False, offset=None, trim=False)
49+
bar_plot.set_ylabel('Number of species')
50+
bar_plot.set_xlabel(plot_mode)
51+
bar_plot.set_xticklabels(bar_plot.get_xticklabels(),rotation=90)
52+
bar_plot.annotate('Sources: plot(https://github.com/dezordi/mosquitotax), taxonomy(http://mosquito-taxonomic-inventory.info/).', xy=(1, 0), xycoords='axes fraction', fontsize=6, xytext=(0, 265), textcoords='offset points',ha='right', va='top')
53+
plt.savefig(input_file+'.bar_plot.pdf',dpi=300,bbox_inches='tight')
54+
plt.clf()
55+
if plot_type == 'Donut':
56+
tax_count = df[plot_mode].value_counts()
57+
df2 = pd.DataFrame(tax_count)
58+
df2.columns = ['Number']
59+
my_circle=plt.Circle((0,0), 0.5, color='white')
60+
donut_plot = df2.plot.pie(y='Number', cmap = my_cmap,radius=1.7,labels=None)
61+
donut_plot.set_ylabel('')
62+
df2.reset_index(level=0, inplace=True)
63+
list_ = [df2.columns.values.tolist()] + df2.values.tolist()
64+
labels_list = [''.join(str(x)) for x in list_]
65+
del labels_list[0]
66+
labels = []
67+
for i in labels_list:
68+
i = re.sub(r"\['",'',i)
69+
i = re.sub(r"', ",' ',i)
70+
i = re.sub(r"\]",'',i)
71+
labels.append(i)
72+
donut_plot.legend(loc='center left', bbox_to_anchor=(1.2, 0.5), ncol=1, fancybox=True, prop={'size': 12},title=plot_mode+' and Nº species', labels=labels)
73+
donut_plot.annotate('Sources: plot(https://github.com/dezordi/mosquitotax), taxonomy(http://mosquito-taxonomic-inventory.info/).', xy=(1, 0), xycoords='axes fraction', fontsize=8, xytext=(30, -65), textcoords='offset points',ha='right', va='top')
74+
p=plt.gcf()
75+
p.gca().add_artist(my_circle)
76+
plt.savefig(input_file+'.donut_plot.pdf',dpi=300,bbox_inches='tight')
77+
plt.clf()
78+
if plot_type == "Hist":
79+
df.dropna(inplace=True)
80+
df['Year'].loc[(df['Year'] <= 1800)] = 1800
81+
df['Year'].loc[(df['Year'] > 1800) & (df['Year'] <= 1850)] = 1850
82+
df['Year'].loc[(df['Year'] > 1850) & (df['Year'] <= 1900)] = 1900
83+
data = df['Year'].tolist()
84+
data = list(map(int, data))
85+
dist_plot = sns.distplot(data)
86+
plt.savefig(input_file+'.hist_plot.pdf',dpi=300,bbox_inches='tight')
87+
plt.clf()
88+
89+
90+
91+
if __name__ == '__main__':
92+
'''
93+
Main Routine
94+
This block of code is executed, whenever the script
95+
is started from the command line.
96+
'''
97+
98+
###############################>DATAFRAME<###############################
99+
df = pd.read_csv(input_file, sep='\t',header = 0)
100+
if specific_tax != None:
101+
df = df.loc[df[plot_mode].isin(specific_tax)]
102+
tax_count = df[plot_mode].value_counts()
103+
tax_low= tax_count[tax_count <= group_by]
104+
tax_low_list = tax_low.index
105+
for i in tax_low_list:
106+
df[plot_mode] = df[plot_mode].replace({i:'Others'})
107+
108+
taxonomy_distribuition(input_file,plot_type)

plots/mos_tax_barplot_all.pdf

21.7 KB
Binary file not shown.

plots/mos_tax_donut_all.pdf

17 KB
Binary file not shown.

0 commit comments

Comments
 (0)