Skip to content

Commit

Permalink
Fixed dictionary key deletion bug
Browse files Browse the repository at this point in the history
  • Loading branch information
schultzm committed Sep 6, 2017
1 parent d0857d9 commit bc7d1f3
Show file tree
Hide file tree
Showing 2 changed files with 73 additions and 66 deletions.
36 changes: 16 additions & 20 deletions Pandoo/pandoo_tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -177,30 +177,25 @@ def run_abricate(infile, outfile, outfile_simple, isolate, dbase, coverage,
ab_results_simplified = defaultdict(list)
for i in ab_data.index.values:
gene_name = pregx.sub('', ab_data.loc[i, 'GENE'])
# print('gene_name', gene_name)
ab_results_simplified['Abricate_'+dbase[0]+'_all_genes'] \
.append(gene_name)
for key, value in genes_dict['GENES'].items():
# for item in genes_dict['GENES'][key]:
# print(item)
# print('key', key)
# sublist = [j for j in genes_dict['GENES'][key] if gene_name.lower() == j.lower()]
# print(isolate, 'dbase', dbase[0], 'sublist', sublist, gene_name)
if gene_name in genes_dict['GENES'][key]:
ab_results_simplified['Abricate_'+dbase[0]+'_'+key] \
.append(gene_name)

# RULES:
# CPE_ALERT
# ENTEROBACTERIACEAE with CPE_gene
if key == 'CPE_genes':
if species.split()[0] in [genus for genus in genes_dict['Enterobacteriaceae']] or species in [genus for genus in genes_dict['Enterobacteriaceae']]:
if 'CPE_ALERT_'+dbase[0] not in ab_results_simplified:
ab_results_simplified['CPE_ALERT_'+dbase[0]] = 'CPE_ALERT'
if species.split()[0] in [genus for genus in
genes_dict['Enterobacteriaceae']] or species in [genus for genus in genes_dict['Enterobacteriaceae']]:
ab_results_simplified['CPE_ALERT_'+dbase[0]] = 'CPE_ALERT'
# RULES:
# CARALERT
# Enterobacteriaceae with 16S_Methyltransferase_gene.
if key == '16S_Methyltransferase_genes':
if species.split()[0] in [genus for genus in genes_dict['Enterobacteriaceae']] or species in [genus for genus in genes_dict['Enterobacteriaceae']]:
if 'CARALERT_'+dbase[0] not in ab_results_simplified:
ab_results_simplified['CARALERT_'+dbase[0]] = 'CARALERT'


# print(ab_results_simplified)
ab_results_simplified['CARALERT_'+dbase[0]] = 'CARALERT'
ab_results = {}
# Generate the simplified dict
simplifiedtable_key = 'abricate_'+dbase[0] +\
Expand All @@ -211,16 +206,17 @@ def run_abricate(infile, outfile, outfile_simple, isolate, dbase, coverage,
ab_results_simplified[simplifiedtable_key] = 'yes'
ab_results_simplified['Abricate_'+dbase[0] +
'_genes_confirmed'] \
.append(gene_name)
.append(gene_name)
else:
ab_results_simplified[simplifiedtable_key] = 'maybe'
del ab_results_simplified['Abricate_'+dbase[0] +
'_genes_confirmed']
if 'Abricate_'+dbase[0]+'_genes_confirmed' in ab_results_simplified:
if gene_name in ab_results_simplified['Abricate_'+dbase[0] +
'_genes_confirmed']:
ab_results_simplified['Abricate_'+dbase[0] +
'_genes_confirmed'].remove(gene_name)
ab_results_simplified['Abricate_'+dbase[0] +
'_genes_unconfirmed'] \
.append(gene_name)
# if ab_data.loc[i, '%COVERAGE'] < coverage or \
# ab_data.loc[i, '%IDENTITY'] < identity:
else:
ab_results_simplified[simplifiedtable_key] = 'maybe'
ab_results_simplified['Abricate_'+dbase[0] +
Expand Down
103 changes: 57 additions & 46 deletions Pandoo/resistance_alert.py
Original file line number Diff line number Diff line change
@@ -1,55 +1,77 @@
#this code is development
import pandas as pd
from collections import defaultdict


DFRAME = pd.read_table('ftp://ftp.ncbi.nlm.nih.gov/pathogen/betalactamases/Allele.tab', header=0, index_col='#allele name')
# print(DFRAME)
FTP_URL = 'ftp://ftp.ncbi.nlm.nih.gov/pathogen/betalactamases/Allele.tab'
DFRAME = pd.read_table(FTP_URL, header=0, index_col='#allele name')

def gene_list(dframe, k_word, columnname):
'''
Parse DFRAME to retrieve gene list matching k_word and columnname criteria.
'''
return [dframe.loc[value, 'gene name'] for value in dframe.index.values if k_word in dframe.loc[value, columnname]]
return [dframe.loc[value, 'gene name'] for value in dframe.index.values
if k_word in dframe.loc[value, columnname]]


METALLO_BETALACTAMASES = gene_list(DFRAME, 'metallo-beta-lactamase', 'curated gene product name')
CARBAPENEMASES = gene_list(DFRAME, 'carbapenem-hydrolyzing', 'curated gene product name')
METALLO_BETALACTAMASES = gene_list(DFRAME, 'metallo-beta-lactamase',
'curated gene product name')
CARBAPENEMASES = gene_list(DFRAME, 'carbapenem-hydrolyzing',
'curated gene product name')
FULL_CPE_GENES = METALLO_BETALACTAMASES + CARBAPENEMASES
ESBL_GENES = gene_list(DFRAME, 'extended-spectrum beta-lactamase', 'curated gene product name')
ESBL_GENES = gene_list(DFRAME, 'extended-spectrum beta-lactamase',
'curated gene product name')
RMTASE_GENES = ['armA',
'npmA',
'rmtA',
'rmtA_1',
'rmtB',
'rmtB1',
'rmtB2',
'rmtB2_1',
'rmtB3',
'rmtB4',
'rmtB_1',
'rmtC',
'rmtC_1',
'rmtD',
'rmtD1',
'rmtD2',
'rmtD2_1',
'rmtD_1',
'rmtE',
'rmtE1',
'rmtE2',
'rmtE_1',
'rmtF',
'rmtF1',
'rmtF2',
'rmtG',
'rmtG_1',
'rmtH',
'npmA']

COLISTIN_GENES = ['mcr-1']#.1',
# 'mcr-1.2',
# 'mcr-1.3',
# 'mcr-1.4',
# 'mcr-1.5',
# 'mcr-1.6',
# 'mcr-1.7',
# 'mcr-1.8',
# 'mcr-2.1',
# 'mcr-3.1',
# 'mcr-4.1']
# print(METALLO_BETALACTAMASES)
# print(CARBAPENEMASES)
# print('carbapenemases', FULL_CPE_GENES)
# print(ESBL_GENES)
'rmtH_1',
'rmtf_1']

COLISTIN_GENES = ['mcr-1',
'mcr-1.1',
'mcr-1.2',
'mcr-1.2_1',
'mcr-1.3',
'mcr-1.3_1',
'mcr-1.4',
'mcr-1.4_1',
'mcr-1.5',
'mcr-1.5_1',
'mcr-1.6',
'mcr-1.6_1',
'mcr-1.7',
'mcr-1.7_1',
'mcr-1.8',
'mcr-1.9_1',
'mcr-1_1',
'mcr-2',
'mcr-2_1',
'mcr-3_1',
'mcr_1.8_1']

#CARALERT NOTIFICATION
#Enterobacteriaceae with 16S rRNA methylase gene detected.

#CPE alert
#ENTEROBACTERIACEAE with full_cpe_gene
ENTEROBACTERIACEAE = ['Cedecea',
'Citrobacter',
'Morganella',
Expand All @@ -72,25 +94,14 @@ def gene_list(dframe, k_word, columnname):
'Serratia',
'Shigella',
'Yersinia']
# RULES:
# CARALERT NOTIFICATION
# Enterobacteriaceae with 16S_Methyltransferase_gene.
# CPE alert
# ENTEROBACTERIACEAE with CPE_gene

GENES_DICT = {'GENES': {'CPE_genes': FULL_CPE_GENES,
'ESBL_genes': ESBL_GENES,
'16S_Methyltransferase_genes': RMTASE_GENES,
'Colistin_genes': COLISTIN_GENES},
'Enterobacteriaceae': ENTEROBACTERIACEAE}
# print(GENES_DICT)

# print(genes_dict)
# class Isolate:
# def __init__(name, genus_epithet, specific_epithet, amr_profile):
# '''
# Isolate name, genus, species, and resistance genes.
# '''
# self.name = name
# self.genus_epithet = genus_epithet
# self.specific_epithet = specific_epithet
# self.amr_profile = amr_profile
# def x():
# pass
#

0 comments on commit bc7d1f3

Please sign in to comment.