def test_mixed_hcv_skipped(): base_calls_folder = '/path/Data/Intensities/BaseCalls' session = DummySession(skipped_types={PipelineType.MIXED_HCV_MAIN, PipelineType.MIXED_HCV_MIDI}) folder_watcher = FolderWatcher(base_calls_folder, runner=session) sample_watcher = SampleWatcher(SampleGroup( '2130A', ('2130A-HCV_S15_L001_R1_001.fastq.gz', '2130AMIDI-MidHCV_S16_L001_R1_001.fastq.gz'))) folder_watcher.sample_watchers.append(sample_watcher) folder_watcher.poll_runs() # Start filter_quality session.finish_all_runs() # Finish filter_quality folder_watcher.poll_runs() # start main and midi assert {102: dict(id=102, folder_watcher=folder_watcher, sample_watcher=sample_watcher, pipeline_type=PipelineType.MAIN), 103: dict(id=103, folder_watcher=folder_watcher, sample_watcher=sample_watcher, pipeline_type=PipelineType.MIDI) } == session.active_runs expected_active_samples = {'2130A-HCV_S15_L001_R1_001.fastq.gz', '2130AMIDI-MidHCV_S16_L001_R1_001.fastq.gz'} assert expected_active_samples == folder_watcher.active_samples assert 2 == len(folder_watcher.active_runs)
def test_hcv_mixed_hcv_running_on_singleton(): base_calls_folder = '/path/Data/Intensities/BaseCalls' session = DummySession() folder_watcher = FolderWatcher(base_calls_folder, runner=session) sample_watcher = SampleWatcher(SampleGroup( 'NEG1', ('NEG1-HCV_S15_L001_R1_001.fastq.gz', None))) folder_watcher.sample_watchers.append(sample_watcher) folder_watcher.poll_runs() # Start filter_quality session.finish_all_runs() # Finish filter_quality folder_watcher.poll_runs() # start main, midi, and mixed HCV folder_watcher.poll_runs() # main, midi, and mixed HCV still running assert {102: dict(id=102, folder_watcher=folder_watcher, sample_watcher=sample_watcher, pipeline_type=PipelineType.MIXED_HCV_MAIN), 103: dict(id=103, folder_watcher=folder_watcher, sample_watcher=sample_watcher, pipeline_type=PipelineType.MAIN) } == session.active_runs expected_active_samples = {'NEG1-HCV_S15_L001_R1_001.fastq.gz'} assert expected_active_samples == folder_watcher.active_samples assert 2 == len(folder_watcher.active_runs)
def test_hcv_mixed_hcv_running_on_singleton(): base_calls_folder = '/path/Data/Intensities/BaseCalls' session = DummySession() folder_watcher = FolderWatcher(base_calls_folder, runner=session) sample_watcher = SampleWatcher( SampleGroup('NEG1', ('NEG1-HCV_S15_L001_R1_001.fastq.gz', None))) folder_watcher.sample_watchers.append(sample_watcher) folder_watcher.poll_runs() # Start filter_quality session.finish_all_runs() # Finish filter_quality folder_watcher.poll_runs() # start main, midi, and mixed HCV folder_watcher.poll_runs() # main, midi, and mixed HCV still running assert { 102: dict(id=102, folder_watcher=folder_watcher, sample_watcher=sample_watcher, pipeline_type=PipelineType.MIXED_HCV_MAIN), 103: dict(id=103, folder_watcher=folder_watcher, sample_watcher=sample_watcher, pipeline_type=PipelineType.MAIN) } == session.active_runs expected_active_samples = {'NEG1-HCV_S15_L001_R1_001.fastq.gz'} assert expected_active_samples == folder_watcher.active_samples assert 2 == len(folder_watcher.active_runs)
def test_main_running(): base_calls_folder = '/path/Data/Intensities/BaseCalls' session = DummySession( skipped_types={ PipelineType.DENOVO_MAIN, PipelineType.DENOVO_MIDI, PipelineType.DENOVO_RESISTANCE }) folder_watcher = FolderWatcher(base_calls_folder, runner=session) sample_watcher = SampleWatcher( SampleGroup('1234A', ('1234A-V3LOOP_R1_001.fastq.gz', None), ('V3LOOP', None))) folder_watcher.sample_watchers.append(sample_watcher) folder_watcher.poll_runs() # Start filter_quality session.finish_all_runs() # Finish filter_quality folder_watcher.poll_runs() # start main folder_watcher.poll_runs() # main still running assert { 102: dict(id=102, folder_watcher=folder_watcher, sample_watcher=sample_watcher, pipeline_type=PipelineType.MAIN) } == session.active_runs
def test_mixed_hcv_skipped(): base_calls_folder = '/path/Data/Intensities/BaseCalls' session = DummySession(skipped_types={ PipelineType.MIXED_HCV_MAIN, PipelineType.MIXED_HCV_MIDI }) folder_watcher = FolderWatcher(base_calls_folder, runner=session) sample_watcher = SampleWatcher( SampleGroup('2130A', ('2130A-HCV_S15_L001_R1_001.fastq.gz', '2130AMIDI-MidHCV_S16_L001_R1_001.fastq.gz'))) folder_watcher.sample_watchers.append(sample_watcher) folder_watcher.poll_runs() # Start filter_quality session.finish_all_runs() # Finish filter_quality folder_watcher.poll_runs() # start main and midi assert { 102: dict(id=102, folder_watcher=folder_watcher, sample_watcher=sample_watcher, pipeline_type=PipelineType.MAIN), 103: dict(id=103, folder_watcher=folder_watcher, sample_watcher=sample_watcher, pipeline_type=PipelineType.MIDI) } == session.active_runs expected_active_samples = { '2130A-HCV_S15_L001_R1_001.fastq.gz', '2130AMIDI-MidHCV_S16_L001_R1_001.fastq.gz' } assert expected_active_samples == folder_watcher.active_samples assert 2 == len(folder_watcher.active_runs)
def test_main_failed(): base_calls_folder = '/path/Data/Intensities/BaseCalls' session = DummySession() folder_watcher = FolderWatcher(base_calls_folder, runner=session) sample_watcher = SampleWatcher( SampleGroup('1234A', ('1234A-V3LOOP_R1_001.fastq.gz', None), ('V3LOOP', None))) folder_watcher.sample_watchers.append(sample_watcher) folder_watcher.poll_runs() # Start filter_quality session.finish_all_runs() # Finish filter_quality folder_watcher.poll_runs() # Start main denovo_main, mapping_main = session.active_runs.values() session.fail_run(mapping_main) folder_watcher.poll_runs() # Notice run failed is_complete_after_failure = folder_watcher.is_complete session.finish_all_runs() folder_watcher.poll_runs() is_complete_at_end = folder_watcher.is_complete assert not is_complete_after_failure assert is_complete_at_end
def test_hcv_mixed_hcv_not_finished(): base_calls_folder = '/path/Data/Intensities/BaseCalls' session = DummySession() folder_watcher = FolderWatcher(base_calls_folder, runner=session) sample_watcher = SampleWatcher(SampleGroup( '2130A', ('2130A-HCV_S15_L001_R1_001.fastq.gz', '2130AMIDI-MidHCV_S16_L001_R1_001.fastq.gz'))) folder_watcher.sample_watchers.append(sample_watcher) folder_watcher.poll_runs() # Start filter_quality session.finish_all_runs() # Finish filter_quality folder_watcher.poll_runs() # start main, midi, and mixed HCV session.finish_run(dict(id=104)) # Finish main session.finish_run(dict(id=105)) # Finish midi folder_watcher.poll_runs() # mixed HCV still running, resistance started session.finish_run(dict(id=106)) # Finish res folder_watcher.poll_runs() # mixed HCV still running, resistance finished assert {102: dict(id=102, folder_watcher=folder_watcher, sample_watcher=sample_watcher, pipeline_type=PipelineType.MIXED_HCV_MAIN), 103: dict(id=103, folder_watcher=folder_watcher, sample_watcher=sample_watcher, pipeline_type=PipelineType.MIXED_HCV_MIDI) } == session.active_runs expected_active_samples = {'2130A-HCV_S15_L001_R1_001.fastq.gz', '2130AMIDI-MidHCV_S16_L001_R1_001.fastq.gz'} assert expected_active_samples == folder_watcher.active_samples assert 2 == len(folder_watcher.active_runs) assert not folder_watcher.is_complete
def test_mixed_hcv_skipped_and_complete(): base_calls_folder = '/path/Data/Intensities/BaseCalls' session = DummySession( skipped_types={ PipelineType.MIXED_HCV_MAIN, PipelineType.MIXED_HCV_MIDI, PipelineType.DENOVO_MAIN, PipelineType.DENOVO_MIDI, PipelineType.DENOVO_RESISTANCE }) folder_watcher = FolderWatcher(base_calls_folder, runner=session) sample_watcher = SampleWatcher( SampleGroup('2130A', ('2130A-HCV_S15_L001_R1_001.fastq.gz', '2130AMIDI-MidHCV_S16_L001_R1_001.fastq.gz'), ('HCV', 'MidHCV'))) folder_watcher.sample_watchers.append(sample_watcher) folder_watcher.poll_runs() # Start filter_quality session.finish_all_runs() # Finish filter_quality folder_watcher.poll_runs() # start main and midi session.finish_all_runs() # Finish main and midi folder_watcher.poll_runs() # start resistance session.finish_all_runs() # Finish resistance folder_watcher.poll_runs() # done assert not session.active_runs assert not folder_watcher.active_runs assert not folder_watcher.active_samples assert folder_watcher.is_complete
def test_filter_quality_failed(): base_calls_folder = '/path/Data/Intensities/BaseCalls' session = DummySession() folder_watcher = FolderWatcher(base_calls_folder, runner=session) sample_watcher = SampleWatcher(SampleGroup('1234A', ('1234A-V3LOOP_R1_001.fastq.gz', None))) folder_watcher.sample_watchers.append(sample_watcher) folder_watcher.poll_runs() # Start filter_quality filter_quality, = session.active_runs.values() session.fail_run(filter_quality) folder_watcher.poll_runs() # start main assert {} == session.active_runs assert folder_watcher.is_complete
def test_filter_quality_running(): base_calls_folder = '/path/Data/Intensities/BaseCalls' session = DummySession() folder_watcher = FolderWatcher(base_calls_folder, runner=session) sample_watcher = SampleWatcher(SampleGroup('1234A', ('1234A-V3LOOP_R1_001.fastq.gz', None))) folder_watcher.sample_watchers.append(sample_watcher) folder_watcher.poll_runs() # Start filter_quality folder_watcher.poll_runs() # filter_quality still running assert {101: dict(id=101, folder_watcher=folder_watcher, sample_watcher=None, pipeline_type=PipelineType.FILTER_QUALITY) } == session.active_runs
def test_filter_quality_failed(): base_calls_folder = '/path/Data/Intensities/BaseCalls' session = DummySession() folder_watcher = FolderWatcher(base_calls_folder, runner=session) sample_watcher = SampleWatcher( SampleGroup('1234A', ('1234A-V3LOOP_R1_001.fastq.gz', None))) folder_watcher.sample_watchers.append(sample_watcher) folder_watcher.poll_runs() # Start filter_quality filter_quality, = session.active_runs.values() session.fail_run(filter_quality) folder_watcher.poll_runs() # start main assert {} == session.active_runs assert folder_watcher.is_complete
def test_filter_quality_finished(): base_calls_folder = '/path/Data/Intensities/BaseCalls' session = DummySession() folder_watcher = FolderWatcher(base_calls_folder, runner=session) sample_watcher = SampleWatcher(SampleGroup('1234A', ('1234A-V3LOOP_R1_001.fastq.gz', None))) folder_watcher.sample_watchers.append(sample_watcher) folder_watcher.poll_runs() # Start filter_quality session.finish_all_runs() # Finish filter_quality folder_watcher.poll_runs() # start main assert {102: dict(id=102, folder_watcher=folder_watcher, sample_watcher=sample_watcher, pipeline_type=PipelineType.MAIN) } == session.active_runs
def test_filter_quality_running(): base_calls_folder = '/path/Data/Intensities/BaseCalls' session = DummySession() folder_watcher = FolderWatcher(base_calls_folder, runner=session) sample_watcher = SampleWatcher( SampleGroup('1234A', ('1234A-V3LOOP_R1_001.fastq.gz', None))) folder_watcher.sample_watchers.append(sample_watcher) folder_watcher.poll_runs() # Start filter_quality folder_watcher.poll_runs() # filter_quality still running assert { 101: dict(id=101, folder_watcher=folder_watcher, sample_watcher=None, pipeline_type=PipelineType.FILTER_QUALITY) } == session.active_runs
def test_filter_quality_finished(): base_calls_folder = '/path/Data/Intensities/BaseCalls' session = DummySession() folder_watcher = FolderWatcher(base_calls_folder, runner=session) sample_watcher = SampleWatcher( SampleGroup('1234A', ('1234A-V3LOOP_R1_001.fastq.gz', None))) folder_watcher.sample_watchers.append(sample_watcher) folder_watcher.poll_runs() # Start filter_quality session.finish_all_runs() # Finish filter_quality folder_watcher.poll_runs() # start main assert { 102: dict(id=102, folder_watcher=folder_watcher, sample_watcher=sample_watcher, pipeline_type=PipelineType.MAIN) } == session.active_runs
def test_denovo_main_finished(): base_calls_folder = '/path/Data/Intensities/BaseCalls' session = DummySession() folder_watcher = FolderWatcher(base_calls_folder, runner=session) sample_watcher = SampleWatcher( SampleGroup('1234A', ('1234A-V3LOOP_R1_001.fastq.gz', None), ('V3LOOP', None))) folder_watcher.sample_watchers.append(sample_watcher) folder_watcher.poll_runs() # Start filter_quality session.finish_all_runs() # Finish filter_quality folder_watcher.poll_runs() # Start main session.finish_all_runs() # Finish main folder_watcher.poll_runs() # Start resistance assert { 104: dict(id=104, folder_watcher=folder_watcher, sample_watcher=sample_watcher, pipeline_type=PipelineType.DENOVO_RESISTANCE), 105: dict(id=105, folder_watcher=folder_watcher, sample_watcher=sample_watcher, pipeline_type=PipelineType.RESISTANCE) } == session.active_runs assert 2 == len(folder_watcher.active_runs)
def test_resistance_finished(): base_calls_folder = '/path/Data/Intensities/BaseCalls' session = DummySession() folder_watcher = FolderWatcher(base_calls_folder, runner=session) sample_watcher = SampleWatcher(SampleGroup('1234A', ('1234A-V3LOOP_R1_001.fastq.gz', None))) folder_watcher.sample_watchers.append(sample_watcher) folder_watcher.poll_runs() # Start filter_quality session.finish_all_runs() # Finish filter_quality folder_watcher.poll_runs() # Start main session.finish_all_runs() # Finish main folder_watcher.poll_runs() # Start resistance session.finish_all_runs() # Finish resistance folder_watcher.poll_runs() # Finish sample assert not session.active_runs assert not folder_watcher.active_samples assert not folder_watcher.active_runs assert folder_watcher.is_complete
def test_hcv_mixed_hcv_not_finished(): base_calls_folder = '/path/Data/Intensities/BaseCalls' session = DummySession( skipped_types={ PipelineType.DENOVO_MAIN, PipelineType.DENOVO_MIDI, PipelineType.DENOVO_RESISTANCE }) folder_watcher = FolderWatcher(base_calls_folder, runner=session) sample_watcher = SampleWatcher( SampleGroup('2130A', ('2130A-HCV_S15_L001_R1_001.fastq.gz', '2130AMIDI-MidHCV_S16_L001_R1_001.fastq.gz'), ('HCV', 'MidHCV'))) folder_watcher.sample_watchers.append(sample_watcher) folder_watcher.poll_runs() # Start filter_quality session.finish_all_runs() # Finish filter_quality folder_watcher.poll_runs() # start main, midi, and mixed HCV session.finish_run(dict(id=104)) # Finish main session.finish_run(dict(id=105)) # Finish midi folder_watcher.poll_runs() # mixed HCV still running, resistance started session.finish_run(dict(id=106)) # Finish res folder_watcher.poll_runs() # mixed HCV still running, resistance finished assert { 102: dict(id=102, folder_watcher=folder_watcher, sample_watcher=sample_watcher, pipeline_type=PipelineType.MIXED_HCV_MAIN), 103: dict(id=103, folder_watcher=folder_watcher, sample_watcher=sample_watcher, pipeline_type=PipelineType.MIXED_HCV_MIDI) } == session.active_runs expected_active_samples = { '2130A-HCV_S15_L001_R1_001.fastq.gz', '2130AMIDI-MidHCV_S16_L001_R1_001.fastq.gz' } assert expected_active_samples == folder_watcher.active_samples assert 2 == len(folder_watcher.active_runs) assert not folder_watcher.is_complete
def test_resistance_finished(): base_calls_folder = '/path/Data/Intensities/BaseCalls' session = DummySession() folder_watcher = FolderWatcher(base_calls_folder, runner=session) sample_watcher = SampleWatcher( SampleGroup('1234A', ('1234A-V3LOOP_R1_001.fastq.gz', None))) folder_watcher.sample_watchers.append(sample_watcher) folder_watcher.poll_runs() # Start filter_quality session.finish_all_runs() # Finish filter_quality folder_watcher.poll_runs() # Start main session.finish_all_runs() # Finish main folder_watcher.poll_runs() # Start resistance session.finish_all_runs() # Finish resistance folder_watcher.poll_runs() # Finish sample assert not session.active_runs assert not folder_watcher.active_samples assert not folder_watcher.active_runs assert folder_watcher.is_complete
def test_denovo_resistance_complete(): base_calls_folder = '/path/Data/Intensities/BaseCalls' session = DummySession() folder_watcher = FolderWatcher(base_calls_folder, runner=session) sample_watcher = SampleWatcher( SampleGroup('1234A', ('1234A-V3LOOP_R1_001.fastq.gz', None), ('V3LOOP', None))) folder_watcher.sample_watchers.append(sample_watcher) folder_watcher.poll_runs() # Start filter_quality session.finish_all_runs() # Finish filter_quality folder_watcher.poll_runs() # Start main session.finish_all_runs() # Finish main folder_watcher.poll_runs() # Start resistance denovo_resistance = sample_watcher.runs[PipelineType.DENOVO_RESISTANCE] session.finish_run(denovo_resistance) folder_watcher.poll_runs() # denovo resistance finished folder_watcher.poll_runs() # main resistance still running assert not folder_watcher.is_complete
def test_mixed_hcv_skipped_and_complete(): base_calls_folder = '/path/Data/Intensities/BaseCalls' session = DummySession(skipped_types={PipelineType.MIXED_HCV_MAIN, PipelineType.MIXED_HCV_MIDI}) folder_watcher = FolderWatcher(base_calls_folder, runner=session) sample_watcher = SampleWatcher(SampleGroup( '2130A', ('2130A-HCV_S15_L001_R1_001.fastq.gz', '2130AMIDI-MidHCV_S16_L001_R1_001.fastq.gz'))) folder_watcher.sample_watchers.append(sample_watcher) folder_watcher.poll_runs() # Start filter_quality session.finish_all_runs() # Finish filter_quality folder_watcher.poll_runs() # start main and midi session.finish_all_runs() # Finish main and midi folder_watcher.poll_runs() # start resistance session.finish_all_runs() # Finish resistance folder_watcher.poll_runs() # done assert not session.active_runs assert not folder_watcher.active_runs assert not folder_watcher.active_samples assert folder_watcher.is_complete
def test_resistance_running(): base_calls_folder = '/path/Data/Intensities/BaseCalls' session = DummySession() folder_watcher = FolderWatcher(base_calls_folder, runner=session) sample_watcher = SampleWatcher(SampleGroup('1234A', ('1234A-V3LOOP_R1_001.fastq.gz', None))) folder_watcher.sample_watchers.append(sample_watcher) folder_watcher.poll_runs() # Start filter_quality session.finish_all_runs() # Finish filter_quality folder_watcher.poll_runs() # Start main session.finish_all_runs() # Finish main folder_watcher.poll_runs() # Start resistance folder_watcher.poll_runs() # resistance still running assert {103: dict(id=103, folder_watcher=folder_watcher, sample_watcher=sample_watcher, pipeline_type=PipelineType.RESISTANCE) } == session.active_runs assert {'1234A-V3LOOP_R1_001.fastq.gz'} == folder_watcher.active_samples assert not folder_watcher.is_complete
def test_resistance_running(): base_calls_folder = '/path/Data/Intensities/BaseCalls' session = DummySession() folder_watcher = FolderWatcher(base_calls_folder, runner=session) sample_watcher = SampleWatcher( SampleGroup('1234A', ('1234A-V3LOOP_R1_001.fastq.gz', None))) folder_watcher.sample_watchers.append(sample_watcher) folder_watcher.poll_runs() # Start filter_quality session.finish_all_runs() # Finish filter_quality folder_watcher.poll_runs() # Start main session.finish_all_runs() # Finish main folder_watcher.poll_runs() # Start resistance folder_watcher.poll_runs() # resistance still running assert { 103: dict(id=103, folder_watcher=folder_watcher, sample_watcher=sample_watcher, pipeline_type=PipelineType.RESISTANCE) } == session.active_runs assert {'1234A-V3LOOP_R1_001.fastq.gz'} == folder_watcher.active_samples assert not folder_watcher.is_complete