In [1]:
%matplotlib inline
In [2]:
import firecloud.api as fc
import pandas as pd
from StringIO import StringIO
from ggplot import *
In [5]:
ws1=fc.get_entities('broad-ccdg-dev','mw-pathseq-dev For TOPMED',"sample_set").json()
In [19]:
sample_set=filter(lambda x:x["name"]==u'low_alignment_76',ws)[0]["attributes"]
print(sample_set)
samples=map(lambda x: x["entityName"],sample_set["samples"]["items"])
samples
{u'samples': {u'items': [{u'entityName': u'NWD101890', u'entityType': u'sample'}, {u'entityName': u'NWD126997', u'entityType': u'sample'}, {u'entityName': u'NWD134908', u'entityType': u'sample'}, {u'entityName': u'NWD138077', u'entityType': u'sample'}, {u'entityName': u'NWD140885', u'entityType': u'sample'}, {u'entityName': u'NWD145983', u'entityType': u'sample'}, {u'entityName': u'NWD150966', u'entityType': u'sample'}, {u'entityName': u'NWD161240', u'entityType': u'sample'}, {u'entityName': u'NWD162156', u'entityType': u'sample'}, {u'entityName': u'NWD178223', u'entityType': u'sample'}, {u'entityName': u'NWD210010', u'entityType': u'sample'}, {u'entityName': u'NWD224546', u'entityType': u'sample'}, {u'entityName': u'NWD241617', u'entityType': u'sample'}, {u'entityName': u'NWD291730', u'entityType': u'sample'}, {u'entityName': u'NWD292352', u'entityType': u'sample'}, {u'entityName': u'NWD300364', u'entityType': u'sample'}, {u'entityName': u'NWD305463', u'entityType': u'sample'}, {u'entityName': u'NWD331699', u'entityType': u'sample'}, {u'entityName': u'NWD335462', u'entityType': u'sample'}, {u'entityName': u'NWD349967', u'entityType': u'sample'}, {u'entityName': u'NWD350715', u'entityType': u'sample'}, {u'entityName': u'NWD359453', u'entityType': u'sample'}, {u'entityName': u'NWD372521', u'entityType': u'sample'}, {u'entityName': u'NWD384199', u'entityType': u'sample'}, {u'entityName': u'NWD385146', u'entityType': u'sample'}, {u'entityName': u'NWD399523', u'entityType': u'sample'}, {u'entityName': u'NWD405261', u'entityType': u'sample'}, {u'entityName': u'NWD409089', u'entityType': u'sample'}, {u'entityName': u'NWD420967', u'entityType': u'sample'}, {u'entityName': u'NWD430403', u'entityType': u'sample'}, {u'entityName': u'NWD437320', u'entityType': u'sample'}, {u'entityName': u'NWD452076', u'entityType': u'sample'}, {u'entityName': u'NWD453002', u'entityType': u'sample'}, {u'entityName': u'NWD463889', u'entityType': u'sample'}, {u'entityName': u'NWD484358', u'entityType': u'sample'}, {u'entityName': u'NWD504436', u'entityType': u'sample'}, {u'entityName': u'NWD511943', u'entityType': u'sample'}, {u'entityName': u'NWD524409', u'entityType': u'sample'}, {u'entityName': u'NWD526542', u'entityType': u'sample'}, {u'entityName': u'NWD528158', u'entityType': u'sample'}, {u'entityName': u'NWD530315', u'entityType': u'sample'}, {u'entityName': u'NWD532043', u'entityType': u'sample'}, {u'entityName': u'NWD541615', u'entityType': u'sample'}, {u'entityName': u'NWD542138', u'entityType': u'sample'}, {u'entityName': u'NWD542979', u'entityType': u'sample'}, {u'entityName': u'NWD544436', u'entityType': u'sample'}, {u'entityName': u'NWD552724', u'entityType': u'sample'}, {u'entityName': u'NWD564630', u'entityType': u'sample'}, {u'entityName': u'NWD566739', u'entityType': u'sample'}, {u'entityName': u'NWD568421', u'entityType': u'sample'}, {u'entityName': u'NWD569397', u'entityType': u'sample'}, {u'entityName': u'NWD572895', u'entityType': u'sample'}, {u'entityName': u'NWD593411', u'entityType': u'sample'}, {u'entityName': u'NWD597805', u'entityType': u'sample'}, {u'entityName': u'NWD600720', u'entityType': u'sample'}, {u'entityName': u'NWD621380', u'entityType': u'sample'}, {u'entityName': u'NWD626132', u'entityType': u'sample'}, {u'entityName': u'NWD634651', u'entityType': u'sample'}, {u'entityName': u'NWD655235', u'entityType': u'sample'}, {u'entityName': u'NWD702653', u'entityType': u'sample'}, {u'entityName': u'NWD713375', u'entityType': u'sample'}, {u'entityName': u'NWD723021', u'entityType': u'sample'}, {u'entityName': u'NWD727298', u'entityType': u'sample'}, {u'entityName': u'NWD730970', u'entityType': u'sample'}, {u'entityName': u'NWD732699', u'entityType': u'sample'}, {u'entityName': u'NWD757579', u'entityType': u'sample'}, {u'entityName': u'NWD758112', u'entityType': u'sample'}, {u'entityName': u'NWD764627', u'entityType': u'sample'}, {u'entityName': u'NWD826219', u'entityType': u'sample'}, {u'entityName': u'NWD840948', u'entityType': u'sample'}, {u'entityName': u'NWD846462', u'entityType': u'sample'}, {u'entityName': u'NWD846965', u'entityType': u'sample'}, {u'entityName': u'NWD865512', u'entityType': u'sample'}, {u'entityName': u'NWD872226', u'entityType': u'sample'}, {u'entityName': u'NWD915153', u'entityType': u'sample'}, {u'entityName': u'NWD941323', u'entityType': u'sample'}, {u'entityName': u'NWD965754', u'entityType': u'sample'}, {u'entityName': u'NWD967952', u'entityType': u'sample'}], u'itemsType': u'EntityReference'}}
Out[19]:
[u'NWD101890',
 u'NWD126997',
 u'NWD134908',
 u'NWD138077',
 u'NWD140885',
 u'NWD145983',
 u'NWD150966',
 u'NWD161240',
 u'NWD162156',
 u'NWD178223',
 u'NWD210010',
 u'NWD224546',
 u'NWD241617',
 u'NWD291730',
 u'NWD292352',
 u'NWD300364',
 u'NWD305463',
 u'NWD331699',
 u'NWD335462',
 u'NWD349967',
 u'NWD350715',
 u'NWD359453',
 u'NWD372521',
 u'NWD384199',
 u'NWD385146',
 u'NWD399523',
 u'NWD405261',
 u'NWD409089',
 u'NWD420967',
 u'NWD430403',
 u'NWD437320',
 u'NWD452076',
 u'NWD453002',
 u'NWD463889',
 u'NWD484358',
 u'NWD504436',
 u'NWD511943',
 u'NWD524409',
 u'NWD526542',
 u'NWD528158',
 u'NWD530315',
 u'NWD532043',
 u'NWD541615',
 u'NWD542138',
 u'NWD542979',
 u'NWD544436',
 u'NWD552724',
 u'NWD564630',
 u'NWD566739',
 u'NWD568421',
 u'NWD569397',
 u'NWD572895',
 u'NWD593411',
 u'NWD597805',
 u'NWD600720',
 u'NWD621380',
 u'NWD626132',
 u'NWD634651',
 u'NWD655235',
 u'NWD702653',
 u'NWD713375',
 u'NWD723021',
 u'NWD727298',
 u'NWD730970',
 u'NWD732699',
 u'NWD757579',
 u'NWD758112',
 u'NWD764627',
 u'NWD826219',
 u'NWD840948',
 u'NWD846462',
 u'NWD846965',
 u'NWD865512',
 u'NWD872226',
 u'NWD915153',
 u'NWD941323',
 u'NWD965754',
 u'NWD967952']
In [25]:
temp=fc.get_entities('broad-ccdg-dev','mw-pathseq-dev For TOPMED',"sample").json()
ws=filter(lambda x: x["name"] in samples, temp)
In [26]:
def get_top_pathseq_contam(wsi):
    
    url=wsi.get('attributes').get('pathseq_WGS_scores')
    url_metrics=wsi.get('attributes').get('pathseq_WGS_filter_metrics')
    aligned=wsi.get('attributes').get('Aligned')
    if aligned is None:
        return None
    content=!gsutil cat {url}
    content_metrics=!gsutil cat {url_metrics}
    data=pd.read_csv(StringIO("\n".join(content)),sep="\t")
    data_metrics=pd.read_csv(StringIO("\n".join(content_metrics)),sep="\t",comment='#',header=True)
    genus=data[data.type=='genus']
    top_genus=genus.sort(columns='reads',ascending=False).iloc[0]
    return {"top_genus_name":top_genus['name'],
     "top_genus_reads":top_genus['reads'],
     "percent_in_top_genus":top_genus['reads']/data_metrics.PRIMARY_READS[0],
     "percent_passing_filters":data_metrics.FINAL_TOTAL_READS[0]/ data_metrics.PRIMARY_READS[0],
     "percent_aligned_in_original":float(aligned)/100
   }
In [28]:
res=pd.DataFrame.from_records(
    filter(lambda x: x is not None,
           map(lambda i: get_top_pathseq_contam(ws[i]),
               range(len(ws)))))
res['percent_aligned_in_original']=res['percent_aligned_in_original'].convert_objects(convert_numeric=True)
res['top_genus_reads']=res['top_genus_reads'].convert_objects(convert_numeric=True)
In [29]:
res
Out[29]:
percent_aligned_in_original percent_in_top_genus percent_passing_filters top_genus_name top_genus_reads
0 0.921 0.023011 0.026341 Burkholderia 755919
1 0.777 0.094377 0.109037 Burkholderia 3107261
2 0.868 0.042616 0.049280 Burkholderia 1540820
3 0.832 0.072890 0.081240 Burkholderia 2868810
4 0.899 0.048014 0.055502 Burkholderia 1787626
5 0.925 0.030945 0.035564 Burkholderia 1052788
6 0.884 0.058506 0.067308 Burkholderia 1996875
7 0.899 0.039174 0.043852 Burkholderia 1353239
8 0.892 0.037284 0.043140 Burkholderia 1276633
9 0.634 0.175668 0.202326 Burkholderia 6514246
10 0.830 0.080190 0.095242 Burkholderia 2779127
11 0.900 0.030114 0.034007 Burkholderia 1036494
12 0.821 0.071107 0.081683 Burkholderia 2980364
13 0.924 0.036561 0.040776 Burkholderia 1220420
14 0.889 0.055994 0.064449 Burkholderia 2052276
15 0.830 0.081350 0.093405 Burkholderia 3066371
16 0.843 0.071420 0.082260 Burkholderia 2507800
17 0.921 0.033193 0.038302 Burkholderia 900991
18 0.908 0.037209 0.042972 Burkholderia 1475171
19 0.891 0.058214 0.066961 Burkholderia 1906210
20 0.847 0.071535 0.082547 Burkholderia 2644156
21 0.867 0.062447 0.072581 Burkholderia 2313629
22 0.888 0.058817 0.067842 Burkholderia 1923656
23 0.916 0.027552 0.031483 Burkholderia 888180
24 0.843 0.076827 0.089718 Burkholderia 2848090
25 0.842 0.084464 0.097657 Burkholderia 2919889
26 0.889 0.033223 0.038671 Burkholderia 1157609
27 0.842 0.072844 0.083699 Burkholderia 2444146
28 0.800 0.106221 0.120451 Burkholderia 3843035
29 0.812 0.077418 0.087399 Burkholderia 2348368
... ... ... ... ... ...
48 0.876 0.046475 0.051561 Burkholderia 2126301
49 0.627 0.180503 0.207284 Burkholderia 6259427
50 0.831 0.089284 0.102981 Burkholderia 3443396
51 0.925 0.032658 0.037962 Burkholderia 1099399
52 0.799 0.086941 0.101394 Burkholderia 2920921
53 0.845 0.048837 0.055135 Burkholderia 1699544
54 0.875 0.053265 0.061503 Burkholderia 1838181
55 0.874 0.049175 0.057219 Burkholderia 1932810
56 0.759 0.082477 0.094783 Burkholderia 3203769
57 0.924 0.037334 0.043608 Burkholderia 1353140
58 0.907 0.046069 0.054163 Burkholderia 1795228
59 0.915 0.034483 0.040174 Burkholderia 1343573
60 0.920 0.037385 0.043450 Burkholderia 1469216
61 0.864 0.073049 0.082117 Burkholderia 2841263
62 0.924 0.039061 0.045586 Burkholderia 1355285
63 0.888 0.046212 0.053382 Burkholderia 1629583
64 0.870 0.068607 0.078638 Burkholderia 2154967
65 0.801 0.089212 0.102541 Burkholderia 2713538
66 0.848 0.048310 0.054645 Burkholderia 1504349
67 0.906 0.031439 0.036963 Burkholderia 916480
68 0.812 0.078503 0.090836 Burkholderia 2377942
69 0.863 0.043450 0.075533 Burkholderia 1432167
70 0.753 0.109075 0.125756 Burkholderia 3481733
71 0.775 0.090946 0.104664 Burkholderia 2819956
72 0.897 0.046829 0.054429 Burkholderia 1142161
73 0.863 0.068531 0.078728 Burkholderia 2280578
74 0.680 0.133057 0.153943 Burkholderia 3817184
75 0.885 0.052923 0.060984 Burkholderia 1765474
76 0.710 0.145445 0.167382 Burkholderia 4307602
77 0.903 0.039572 0.048285 Burkholderia 1497509

78 rows × 5 columns

In [31]:
p=ggplot(res,aes(x='percent_aligned_in_original',y='percent_in_top_genus',label='top_genus_name'))+ geom_point()
p.save("test.pdf")
In [ ]:
from collections import Counter