def test_format(self): # This test exists mainly to assert that the directory format is # defined and functional. More extensive testing is performed # on its underlying formats (FastqGzFormat). for read in ['forward', 'reverse']: filepath = self.get_data_path('%s.fastq.gz' % read) shutil.copy(filepath, os.path.join(self.temp_dir.name, '%s.fastq.gz' % read)) format = MultiplexedPairedEndBarcodeInSequenceDirFmt( self.temp_dir.name, mode='r') # Should not error. format.validate()
def setUp(self): super().setUp() self.fastq_fp = \ self.get_data_path('forward.fastq.gz') self.fastq = FastqGzFormat(self.fastq_fp, mode='r') self.seqs_dir_fmt = MultiplexedPairedEndBarcodeInSequenceDirFmt() self.seqs_dir_fmt.forward_sequences.write_data(self.fastq, FastqGzFormat) self.seqs_dir_fmt.reverse_sequences.write_data(self.fastq, FastqGzFormat) self.barcode_series = pd.Series(['A', 'G'], index=['sample_a', 'sample_b']) self.per_sample_dir_fmt = SingleLanePerSampleSingleEndFastqDirFmt() self.untrimmed_dir_fmt = MultiplexedPairedEndBarcodeInSequenceDirFmt()
def demux_paired(seqs: MultiplexedPairedEndBarcodeInSequenceDirFmt, forward_barcodes: qiime2.CategoricalMetadataColumn, reverse_barcodes: qiime2.CategoricalMetadataColumn = None, error_rate: float = 0.1, batch_size: int = 0, minimum_length: int = 1, mixed_orientation: bool = False) -> \ (CasavaOneEightSingleLanePerSampleDirFmt, MultiplexedPairedEndBarcodeInSequenceDirFmt): if mixed_orientation and reverse_barcodes is not None: raise ValueError('Dual-indexed barcodes for mixed orientation ' 'reads are not supported.') per_sample_sequences = CasavaOneEightSingleLanePerSampleDirFmt() mux_fmt = MultiplexedPairedEndBarcodeInSequenceDirFmt untrimmed = _demux( seqs, per_sample_sequences, forward_barcodes, reverse_barcodes, error_rate, mux_fmt, batch_size, minimum_length) if mixed_orientation: fwd = untrimmed.forward_sequences.view(FastqGzFormat) rev = untrimmed.reverse_sequences.view(FastqGzFormat) remaining_seqs = MultiplexedPairedEndBarcodeInSequenceDirFmt() # fwd -> rev && rev -> fwd remaining_seqs.forward_sequences.write_data(rev, FastqGzFormat) remaining_seqs.reverse_sequences.write_data(fwd, FastqGzFormat) untrimmed = _demux( remaining_seqs, per_sample_sequences, forward_barcodes, reverse_barcodes, error_rate, mux_fmt, batch_size, minimum_length) return per_sample_sequences, untrimmed
def demux_paired(seqs: MultiplexedPairedEndBarcodeInSequenceDirFmt, forward_barcodes: qiime2.MetadataCategory, error_rate: float=0.1) -> \ (CasavaOneEightSingleLanePerSampleDirFmt, MultiplexedPairedEndBarcodeInSequenceDirFmt): untrimmed = MultiplexedPairedEndBarcodeInSequenceDirFmt() return _demux(seqs, forward_barcodes, error_rate, untrimmed)