def _make_seq_run(): """ Make a sequencing run pointed at real data for the tests :return: SequencingRun object """ files_1 = model.SequenceFile([ path.join(path_to_module, "fake_ngs_data", "Data", "Intensities", "BaseCalls", "01-1111_S1_L001_R1_001.fastq.gz"), path.join(path_to_module, "fake_ngs_data", "Data", "Intensities", "BaseCalls", "01-1111_S1_L001_R2_001.fastq.gz"), ]) files_2 = model.SequenceFile([ path.join(path_to_module, "fake_ngs_data", "Data", "Intensities", "BaseCalls", "02-2222_S1_L001_R1_001.fastq.gz"), path.join(path_to_module, "fake_ngs_data", "Data", "Intensities", "BaseCalls", "02-2222_S1_L001_R2_001.fastq.gz"), ]) files_3 = model.SequenceFile([ path.join(path_to_module, "fake_ngs_data", "Data", "Intensities", "BaseCalls", "03-3333_S1_L001_R1_001.fastq.gz"), path.join(path_to_module, "fake_ngs_data", "Data", "Intensities", "BaseCalls", "03-3333_S1_L001_R2_001.fastq.gz"), ]) sample_1 = model.Sample("test_sample", "description", 1) sample_1.sequence_file = files_1 sample_2 = model.Sample("test_sample", "description", 1) sample_2.sequence_file = files_2 sample_3 = model.Sample("test_sample", "description", 1) sample_3.sequence_file = files_3 project = model.Project("test_project", [sample_1, sample_2, sample_3], "description") sequencing_run = model.SequencingRun({"layoutType": "PAIRED_END"}, [project], "miseq") return sequencing_run
def build_sequencing_run_from_samples(sample_sheet_file, metadata, sequencing_run_type): """ Create a SequencingRun object with full project/sample/sequence_file structure :param sample_sheet_file: :param metadata: :param sequencing_run_type: :return: SequencingRun """ sample_list = _parse_sample_list(sample_sheet_file) logging.debug("Building SequencingRun from parsed data") # create list of projects and add samples to appropriate project project_list = [] for sample in sample_list: project = None for p in project_list: if sample.get('sample_project') == p.id: project = p if project is None: project = model.Project(id=sample.get('sample_project')) project_list.append(project) project.add_sample(sample) sequence_run = model.SequencingRun(metadata=metadata, project_list=project_list, sequencing_run_type=sequencing_run_type) logging.debug("SequencingRun built") return sequence_run
def build_sequencing_run_from_samples(sample_list, metadata, sequence_run_type): """ Create a SequencingRun object with full project/sample/sequence_file structure :param sample_list: List of Sample objects :param metadata: metadata dict to add to the run :param sequence_run_type: string identifier for sequencer type when generating api route :return: SequencingRun """ logging.debug("Building SequencingRun from parsed data") # create list of projects and add samples to appropriate project project_list = [] for sample in sample_list: project = None for p in project_list: if sample.get('sample_project') == p.id: project = p if project is None: project = model.Project(id=sample.get('sample_project')) project_list.append(project) project.add_sample(sample) sequence_run = model.SequencingRun(metadata=metadata, project_list=project_list, sequencing_run_type=sequence_run_type) logging.debug("SequencingRun built") return sequence_run