def test_same_consensus(self): source_seqs = {('R1-seed', 'R1'): make_nuc_rows('ACACAC')} target_seqs = {('R1-seed', 'R1'): make_nuc_rows('ACACAC')} coverage_scores = [{ 'seed': 'R1-seed', 'region': 'R1', 'project': 'R1', 'on.score': '4' }] sample = Sample( MiseqRun(target_path='run1/Results/versionX'), 'sample42', SampleFiles(region_consensus=source_seqs, coverage_scores=coverage_scores), SampleFiles(region_consensus=target_seqs, coverage_scores=coverage_scores)) expected_diffs = [] expected_scenarios = {} diffs = [] scenarios = defaultdict(list) compare_consensus( sample, diffs, Scenarios.MAIN_CONSENSUS_CHANGED | Scenarios.OTHER_CONSENSUS_CHANGED, scenarios) self.assertEqual(expected_diffs, diffs) self.assertEqual(expected_scenarios, scenarios)
def test_other_consensus_change(self): source_seqs = {('R1-seed', 'R1', '0.250'): 'ACACAC'} target_seqs = {('R1-seed', 'R1', '0.250'): 'ACACAT'} sample = Sample(MiseqRun(target_path='run1/Results/versionX'), 'sample42', SampleFiles(), SampleFiles()) expected_diffs = ['run1:sample42 consensus: R1-seed R1 0.250', '- ACACAC', '? ^', '+ ACACAT', '? ^'] expected_scenarios = {} diffs = [] scenarios = defaultdict(list) compare_consensus( sample, source_seqs, target_seqs, diffs, Scenarios.NONE, scenarios) self.assertEqual(expected_diffs, diffs) self.assertEqual(expected_scenarios, scenarios)
def test_consensus_change_diff(self): source_seqs = {('R1-seed', 'R1'): make_nuc_rows('ACACAC')} target_seqs = {('R1-seed', 'R1'): make_nuc_rows('ACACAT')} coverage_scores = [{ 'seed': 'R1-seed', 'region': 'R1', 'project': 'R1', 'on.score': '4' }] sample = Sample( MiseqRun(target_path='run1/Results/versionX'), 'sample42', SampleFiles(region_consensus=source_seqs, coverage_scores=coverage_scores), SampleFiles(region_consensus=target_seqs, coverage_scores=coverage_scores)) expected_diffs = [ 'run1:sample42 consensus: R1-seed R1 MAX', '- ACACAC', '? ^', '+ ACACAT', '? ^' ] expected_scenarios = {} diffs = [] scenarios = defaultdict(list) compare_consensus(sample, diffs, Scenarios.NONE, scenarios) self.assertEqual(expected_diffs, diffs) self.assertEqual(expected_scenarios, scenarios)
def test_consensus_trailing_change(self): source_seqs = {('R1-seed', 'R1'): make_nuc_rows('ACTTAC------GTAC')} target_seqs = {('R1-seed', 'R1'): make_nuc_rows('ACTTAC')} coverage_scores = [{ 'seed': 'R1-seed', 'region': 'R1', 'project': 'R1', 'on.score': '4' }] sample = Sample( MiseqRun(target_path='run1/Results/versionX'), 'sample42', SampleFiles(region_consensus=source_seqs, coverage_scores=coverage_scores), SampleFiles(region_consensus=target_seqs, coverage_scores=coverage_scores)) expected_diffs = [ 'run1:sample42 consensus: R1-seed R1 MAX', '- ACTTAC------GTAC', '+ ACTTAC' ] expected_consensus_distances = [ ConsensusDistance(region='R1', cutoff='MAX', distance=4, pct_diff=25) ] diffs = [] scenarios = defaultdict(list) consensus_distances = compare_consensus(sample, diffs, Scenarios.NONE, scenarios) self.assertEqual(expected_diffs, diffs) self.assertEqual(expected_consensus_distances, consensus_distances)
def test_one_consensus_changes(self): source_seqs = { ('R1-seed', 'R1', 'MAX'): 'ACACACGT', ('R2-seed', 'R2', 'MAX'): 'ACACACGT' } target_seqs = { ('R1-seed', 'R1', 'MAX'): 'ACACACGT', ('R2-seed', 'R2', 'MAX'): 'ACACAMGT' } sample = Sample(MiseqRun(target_path='run1/Results/versionX'), 'sample42', SampleFiles(), SampleFiles()) expected_diffs = [ 'run1:sample42 consensus: R2-seed R2 MAX', '- ACACACGT', '? ^', '+ ACACAMGT', '? ^' ] expected_consensus_distances = [ ConsensusDistance(region='R1', cutoff='MAX', distance=0, pct_diff=0), ConsensusDistance(region='R2', cutoff='MAX', distance=1, pct_diff=12.5) ] diffs = [] scenarios = defaultdict(list) consensus_distances = compare_consensus(sample, source_seqs, target_seqs, diffs, Scenarios.NONE, scenarios) self.assertEqual(expected_diffs, diffs) self.assertEqual(expected_consensus_distances, consensus_distances)
def test_consensus_trailing_change(self): source_seqs = {('R1-seed', 'R1', 'MAX'): 'ACTTAC------GTAC'} target_seqs = {('R1-seed', 'R1', 'MAX'): 'ACTTAC'} sample = Sample(MiseqRun(target_path='run1/Results/versionX'), 'sample42', SampleFiles(), SampleFiles()) expected_diffs = ['run1:sample42 consensus: R1-seed R1 MAX', '- ACTTAC------GTAC', '+ ACTTAC'] expected_consensus_distances = [ConsensusDistance(region='R1', cutoff='MAX', distance=4, pct_diff=25)] diffs = [] scenarios = defaultdict(list) consensus_distances = compare_consensus( sample, source_seqs, target_seqs, diffs, Scenarios.NONE, scenarios) self.assertEqual(expected_diffs, diffs) self.assertEqual(expected_consensus_distances, consensus_distances)
def test_one_consensus_changes(self): source_seqs = {('R1-seed', 'R1', 'MAX'): 'ACACACGT', ('R2-seed', 'R2', 'MAX'): 'ACACACGT'} target_seqs = {('R1-seed', 'R1', 'MAX'): 'ACACACGT', ('R2-seed', 'R2', 'MAX'): 'ACACAMGT'} sample = Sample(MiseqRun(target_path='run1/Results/versionX'), 'sample42', SampleFiles(), SampleFiles()) expected_diffs = ['run1:sample42 consensus: R2-seed R2 MAX', '- ACACACGT', '? ^', '+ ACACAMGT', '? ^'] expected_consensus_distances = [ConsensusDistance(region='R1', cutoff='MAX', distance=0, pct_diff=0), ConsensusDistance(region='R2', cutoff='MAX', distance=1, pct_diff=12.5)] diffs = [] scenarios = defaultdict(list) consensus_distances = compare_consensus( sample, source_seqs, target_seqs, diffs, Scenarios.NONE, scenarios) self.assertEqual(expected_diffs, diffs) self.assertEqual(expected_consensus_distances, consensus_distances)
def test_same_consensus(self): source_seqs = {('R1-seed', 'R1', 'MAX'): 'ACACAC'} target_seqs = {('R1-seed', 'R1', 'MAX'): 'ACACAC'} sample = Sample(MiseqRun(target_path='run1/Results/versionX'), 'sample42', SampleFiles(), SampleFiles()) expected_diffs = [] expected_scenarios = {} diffs = [] scenarios = defaultdict(list) compare_consensus( sample, source_seqs, target_seqs, diffs, Scenarios.MAIN_CONSENSUS_CHANGED | Scenarios.OTHER_CONSENSUS_CHANGED, scenarios) self.assertEqual(expected_diffs, diffs) self.assertEqual(expected_scenarios, scenarios)
def test_other_consensus_change(self): source_seqs = {('R1-seed', 'R1', '0.250'): 'ACACAC'} target_seqs = {('R1-seed', 'R1', '0.250'): 'ACACAT'} sample = Sample(MiseqRun(target_path='run1/Results/versionX'), 'sample42', SampleFiles(), SampleFiles()) expected_diffs = [ 'run1:sample42 consensus: R1-seed R1 0.250', '- ACACAC', '? ^', '+ ACACAT', '? ^' ] expected_scenarios = {} diffs = [] scenarios = defaultdict(list) compare_consensus(sample, source_seqs, target_seqs, diffs, Scenarios.NONE, scenarios) self.assertEqual(expected_diffs, diffs) self.assertEqual(expected_scenarios, scenarios)
def test_consensus_added(self): source_seqs = {} target_seqs = {('R1-seed', 'R1', 'MAX'): 'ACTTAC'} sample = Sample(MiseqRun(target_path='run1/Results/versionX'), 'sample42', SampleFiles(), SampleFiles()) expected_diffs = [ 'run1:sample42 consensus: R1-seed R1 MAX', '+ ACTTAC' ] expected_consensus_distances = [] diffs = [] scenarios = defaultdict(list) consensus_distances = compare_consensus(sample, source_seqs, target_seqs, diffs, Scenarios.NONE, scenarios) self.assertEqual(expected_diffs, diffs) self.assertEqual(expected_consensus_distances, consensus_distances)
def test_consensus_added(self): source_seqs = {} target_seqs = {('R1-seed', 'R1', 'MAX'): 'ACTTAC'} sample = Sample(MiseqRun(target_path='run1/Results/versionX'), 'sample42', SampleFiles(), SampleFiles()) expected_diffs = ['run1:sample42 consensus: R1-seed R1 MAX', '+ ACTTAC'] expected_consensus_distances = [] diffs = [] scenarios = defaultdict(list) consensus_distances = compare_consensus( sample, source_seqs, target_seqs, diffs, Scenarios.NONE, scenarios) self.assertEqual(expected_diffs, diffs) self.assertEqual(expected_consensus_distances, consensus_distances)
def test_consensus_trailing_change(self): source_seqs = {('R1-seed', 'R1', 'MAX'): 'ACTTAC------GTAC'} target_seqs = {('R1-seed', 'R1', 'MAX'): 'ACTTAC'} sample = Sample(MiseqRun(target_path='run1/Results/versionX'), 'sample42', SampleFiles(), SampleFiles()) expected_diffs = [ 'run1:sample42 consensus: R1-seed R1 MAX', '- ACTTAC------GTAC', '+ ACTTAC' ] expected_consensus_distances = [ ConsensusDistance(region='R1', cutoff='MAX', distance=4, pct_diff=25) ] diffs = [] scenarios = defaultdict(list) consensus_distances = compare_consensus(sample, source_seqs, target_seqs, diffs, Scenarios.NONE, scenarios) self.assertEqual(expected_diffs, diffs) self.assertEqual(expected_consensus_distances, consensus_distances)