def test_from_reader(self): scheme = GdcV1_0_0_ProtectedScheme() lines = [ TestMafHeader.__version_line, TestMafHeader.__annotation_line, TestMafHeader.__sort_order_line, ] reader = MafReader( lines=lines, validation_stringency=ValidationStringency.Silent, scheme=scheme, ) reader.close() # No overrides header = MafHeader.from_reader(reader=reader) self.assertEqual(header.scheme().version(), scheme.version()) self.assertEqual(header.scheme().annotation_spec(), scheme.annotation_spec()) self.assertEqual(header.sort_order().name(), Coordinate.name()) # Override version and annotation scheme = GdcV1_0_0_PublicScheme() header = MafHeader.from_reader( reader=reader, version=scheme.version(), annotation=scheme.annotation_spec(), sort_order=sort_order.Unsorted().name(), ) self.assertEqual(header.scheme().version(), scheme.version()) self.assertEqual(header.scheme().annotation_spec(), scheme.annotation_spec()) self.assertEqual(header.sort_order().name(), sort_order.Unsorted().name())
def setup_maf_header(self): """ Sets up the maf header. """ # Reader header _hdr = MafHeader.from_reader(reader=self.maf_reader) if not self.options["reference_fasta_index"]: self.maf_header = MafHeader.from_defaults( version=self.options["version"], annotation=self.options["annotation"], sort_order=BarcodesAndCoordinate(), contigs=_hdr.contigs(), ) else: self.maf_header = MafHeader.from_defaults( version=self.options["version"], annotation=self.options["annotation"], sort_order=BarcodesAndCoordinate(), fasta_index=self.options["reference_fasta_index"], ) self.maf_header.validation_stringency = ValidationStringency.Strict header_date = BaseRunner.get_header_date() self.maf_header[header_date.key] = header_date try: nkey = _hdr["normal.aliquot"] self.maf_header["normal.aliquot"] = nkey except KeyError as e: if not self.options["tumor_only"]: raise e tkey = _hdr["tumor.aliquot"] self.maf_header["tumor.aliquot"] = tkey
def writer_from_reader(reader, options): """ Builds a writer from the given reader and command line options. :param options: the command line options, which should have "output", "version", and "annotation" defined. :param reader: the reader from which to records will be obtained :return: """ out_header = MafHeader.from_reader( reader=reader, version=options.version, annotation=options.annotation, sort_order=options.sort_order \ if hasattr(options, 'sort_order') else None ) if options.output: writer = MafWriter.from_path( path=options.output, header=out_header, validation_stringency=options.validation_stringency) else: writer = MafWriter.from_fd( desc=sys.stdout, header=out_header, validation_stringency=options.validation_stringency) return writer
def setup_maf_header(self): """ Sets up the maf header. """ # Reader header _hdr = MafHeader.from_reader(reader=self.maf_readers[0]) self.maf_header = MafHeader.from_defaults( version=self.options['version'], annotation=self.options['annotation'], sort_order=BarcodesAndCoordinate(), contigs=_hdr.contigs()) self.maf_header.validation_stringency = ValidationStringency.Strict header_date = BaseRunner.get_header_date() self.maf_header[header_date.key] = header_date nkey = _hdr["normal.aliquot"] self.maf_header["normal.aliquot"] = nkey tkey = _hdr["tumor.aliquot"] self.maf_header["tumor.aliquot"] = tkey