Skip to content

Commit

Permalink
Fix #462 by including unmatched MIDI samples.
Browse files Browse the repository at this point in the history
  • Loading branch information
donkirkby committed Mar 15, 2019
1 parent b35726b commit 0b8b84c
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 2 deletions.
8 changes: 7 additions & 1 deletion micall/resistance/resistance.py
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ def combine_aminos(amino_csv, midi_amino_csv, failures):
failures[(seed, region, is_midi)] = ex.args[0]
rows = []
if region.endswith('-NS5b'):
region_midi_rows = midi_rows.get(seed)
region_midi_rows = midi_rows.pop(seed, None)
if region_midi_rows is None:
if is_midi_separate:
failures.setdefault((seed, region, True),
Expand All @@ -162,6 +162,12 @@ def combine_aminos(amino_csv, midi_amino_csv, failures):
rows = combine_midi_rows(rows, region_midi_rows)
yield from rows

# Check for MIDI regions that had no match.
for seed, rows in sorted(midi_rows.items()):
region = rows[0]['region']
failures.setdefault((seed, region, False), NOTHING_MAPPED_MESSAGE)
yield from rows


def write_failure(fail_writer, seed, region, reason):
reported_region = get_reported_region(region)
Expand Down
34 changes: 33 additions & 1 deletion micall/tests/test_resistance.py
Original file line number Diff line number Diff line change
Expand Up @@ -278,9 +278,14 @@ def test_combine_ns5b_multiple_seeds(self):
HCV-1a,HCV1A-H77-NS5b,15,1,559,0,0,0,0,0,0,0,0,10000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10000
HCV-1a,HCV1A-H77-NS5b,15,4,560,0,0,0,0,10000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10000
HCV-1a,HCV1A-H77-NS5b,15,7,561,10000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10000
HCV-1b,HCV1B-Con1-NS5b,15,1,558,0,0,0,0,0,0,0,0,20000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20000
HCV-1b,HCV1B-Con1-NS5b,15,1,559,0,0,0,0,0,0,0,0,20000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20000
HCV-1b,HCV1B-Con1-NS5b,15,4,560,0,0,0,0,20000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20000
HCV-1b,HCV1B-Con1-NS5b,15,7,561,20000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20000
"""
expected_failures = {('HCV-1b', 'HCV1B-Con1-NS5b', False): 'nothing mapped'}

self.check_combination(amino_csv, midi_amino_csv, expected_csv)
self.check_combination(amino_csv, midi_amino_csv, expected_csv, expected_failures)

def test_low_coverage_in_midi(self):
amino_csv = StringIO("""\
Expand Down Expand Up @@ -336,6 +341,33 @@ def test_no_coverage_in_midi(self):

self.check_combination(amino_csv, midi_amino_csv, expected_csv, expected_failures)

def test_no_coverage_in_ns5b(self):
amino_csv = StringIO("""\
seed,region,q-cutoff,query.nuc.pos,refseq.aa.pos,\
A,C,D,E,F,G,H,I,K,L,M,N,P,Q,R,S,T,V,W,Y,*,X,partial,del,ins,clip,g2p_overlap,coverage
""")
amino_csv.name = 'main_amino.csv'
midi_amino_csv = StringIO("""\
seed,region,q-cutoff,query.nuc.pos,refseq.aa.pos,\
A,C,D,E,F,G,H,I,K,L,M,N,P,Q,R,S,T,V,W,Y,*,X,partial,del,ins,clip,g2p_overlap,coverage
HCV-1a,HCV1A-H77-NS5b,15,1,558,0,0,0,0,0,0,0,0,10000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10000
HCV-1a,HCV1A-H77-NS5b,15,1,559,0,0,0,0,0,0,0,0,10000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10000
HCV-1a,HCV1A-H77-NS5b,15,4,560,0,0,0,0,10000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10000
HCV-1a,HCV1A-H77-NS5b,15,7,561,10000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10000
""")
midi_amino_csv.name = 'midi_amino.csv'
expected_csv = """\
seed,region,q-cutoff,query.nuc.pos,refseq.aa.pos,\
A,C,D,E,F,G,H,I,K,L,M,N,P,Q,R,S,T,V,W,Y,*,X,partial,del,ins,clip,g2p_overlap,coverage
HCV-1a,HCV1A-H77-NS5b,15,1,558,0,0,0,0,0,0,0,0,10000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10000
HCV-1a,HCV1A-H77-NS5b,15,1,559,0,0,0,0,0,0,0,0,10000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10000
HCV-1a,HCV1A-H77-NS5b,15,4,560,0,0,0,0,10000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10000
HCV-1a,HCV1A-H77-NS5b,15,7,561,10000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10000
"""
expected_failures = {('HCV-1a', 'HCV1A-H77-NS5b', False): 'nothing mapped'}

self.check_combination(amino_csv, midi_amino_csv, expected_csv, expected_failures)

def test_midi_other_regions(self):
amino_csv = StringIO("""\
seed,region,q-cutoff,query.nuc.pos,refseq.aa.pos,\
Expand Down

0 comments on commit 0b8b84c

Please sign in to comment.