def __init__(self, path, sample_name, n_spectra=None, deconvoluted=True): if n_spectra is None: n_spectra = 2e5 super(MzMLScanStorageHandler, self).__init__() self.path = path self.handle = open(path, 'wb') self.serializer = MzMLScanSerializer(self.handle, n_spectra, sample_name=sample_name, deconvoluted=deconvoluted)
def __init__(self, path, sample_name, n_spectra=None, deconvoluted=True): if n_spectra is None: n_spectra = 2e5 super(MzMLScanCacheHandler, self).__init__() self.path = path self.handle = open(path, 'wb') self.serializer = MzMLScanSerializer( self.handle, n_spectra, sample_name=sample_name, deconvoluted=deconvoluted)
class MzMLScanCacheHandler(ScanCacheHandlerBase): def __init__(self, path, sample_name, n_spectra=None, deconvoluted=True): if n_spectra is None: n_spectra = 2e5 super(MzMLScanCacheHandler, self).__init__() self.path = path self.handle = open(path, 'wb') self.serializer = MzMLScanSerializer( self.handle, n_spectra, sample_name=sample_name, deconvoluted=deconvoluted) def _get_sample_run(self): return self.serializer.sample_run def register_parameter(self, name, value): self.serializer.add_processing_parameter(name, value) @classmethod def configure_storage(cls, path=None, name=None, source=None): if path is not None: if name is None: sample_name = os.path.basename(path) else: sample_name = name else: path = "processed.mzML" if source is not None: reader = MSFileLoader(source.scan_source) n_spectra = len(reader.index) deconvoluting = source.deconvoluting inst = cls(path, sample_name, n_spectra=n_spectra, deconvoluted=deconvoluting) try: description = reader.file_description() except AttributeError: description = FileInformation() source_file_metadata = MetadataSourceFile.from_path(source.scan_source) inst.serializer.add_file_information(description) try: inst.serializer.remove_file_contents("profile spectrum") except KeyError: pass inst.serializer.add_file_contents("centroid spectrum") if source_file_metadata not in description.source_files: inst.serializer.add_source_file(source_file_metadata) try: instrument_configs = reader.instrument_configuration() for config in instrument_configs: inst.serializer.add_instrument_configuration(config) except Exception as e: log_handle.error( "An error occurred while writing instrument configuration", e) for trans in source.ms1_peak_picking_args.get("transforms"): inst.register_parameter("parameter: ms1-%s" % trans.__class__.__name__, repr(trans)) if deconvoluting: if source.ms1_deconvolution_args.get("averagine"): inst.register_parameter( "parameter: ms1-averagine", repr(source.ms1_deconvolution_args.get("averagine"))) if source.ms1_deconvolution_args.get("scorer"): inst.register_parameter( "parameter: ms1-scorer", repr(source.ms1_deconvolution_args.get("scorer"))) if source.ms1_averaging > 0: inst.register_parameter("parameter: ms1-averaging", repr(source.ms1_averaging)) if source.ignore_tandem_scans: inst.register_parameter("parameter: ignore-tandem-scans", "") if source.extract_only_tandem_envelopes: inst.register_parameter("parameter: extract-only-tandem-envelopes", "") if source.msn_peak_picking_args is not None: for trans in source.msn_peak_picking_args.get("transforms"): inst.register_parameter("parameter: msn-%s" % trans.__class__.__name__, repr(trans)) if deconvoluting: if source.msn_deconvolution_args.get("averagine"): inst.register_parameter( "parameter: msn-averagine", repr(source.msn_deconvolution_args.get("averagine"))) if source.msn_deconvolution_args.get("scorer"): inst.register_parameter( "parameter: msn-scorer", repr(source.msn_deconvolution_args.get("scorer"))) data_processing = inst.serializer.build_processing_method() inst.serializer.add_data_processing(data_processing) else: n_spectra = 2e5 inst = cls(path, sample_name, n_spectra=n_spectra) # Force marshalling of controlled vocabularies early. inst.serializer.writer.param("32-bit float") return inst def save_bunch(self, precursor, products): self.serializer.save_scan_bunch(ScanBunch(precursor, products)) def complete(self): self.save() self.serializer.complete() try: self.serializer.format() except OSError as e: if e.errno == 32: log_handle.log("Could not reformat the file in-place") except Exception: import traceback traceback.print_exc()
class MzMLScanStorageHandler(ScanStorageHandlerBase): def __init__(self, path, sample_name, n_spectra=None, deconvoluted=True): if n_spectra is None: n_spectra = 2e5 super(MzMLScanStorageHandler, self).__init__() self.path = path self.handle = open(path, 'wb') self.serializer = MzMLScanSerializer(self.handle, n_spectra, sample_name=sample_name, deconvoluted=deconvoluted) def _get_sample_run(self): return self.serializer.sample_run def register_parameter(self, name, value): self.serializer.add_processing_parameter(name, value) @classmethod def configure_storage(cls, path=None, name=None, source=None): if path is not None: if name is None: sample_name = os.path.basename(path) else: sample_name = name else: path = "processed.mzML" if source is not None: reader = MSFileLoader(source.scan_source) n_spectra = len(reader.index) deconvoluting = source.deconvoluting inst = cls(path, sample_name, n_spectra=n_spectra, deconvoluted=deconvoluting) try: description = reader.file_description() except AttributeError: description = FileInformation() source_file_metadata = MetadataSourceFile.from_path( source.scan_source) inst.serializer.add_file_information(description) try: inst.serializer.remove_file_contents("profile spectrum") except KeyError: pass inst.serializer.add_file_contents("centroid spectrum") if source_file_metadata not in description.source_files: inst.serializer.add_source_file(source_file_metadata) try: instrument_configs = reader.instrument_configuration() for config in instrument_configs: inst.serializer.add_instrument_configuration(config) except Exception as e: inst.error( "An error occurred while writing instrument configuration", e) for trans in source.ms1_peak_picking_args.get("transforms", []): inst.register_parameter( "parameter: ms1-%s" % trans.__class__.__name__, repr(trans)) if deconvoluting: if source.ms1_deconvolution_args.get("averagine"): inst.register_parameter( "parameter: ms1-averagine", repr(source.ms1_deconvolution_args.get("averagine"))) if source.ms1_deconvolution_args.get("scorer"): inst.register_parameter( "parameter: ms1-scorer", repr(source.ms1_deconvolution_args.get("scorer"))) if source.ms1_averaging > 0: inst.register_parameter("parameter: ms1-averaging", repr(source.ms1_averaging)) if source.ignore_tandem_scans: inst.register_parameter("parameter: ignore-tandem-scans", "") if source.extract_only_tandem_envelopes: inst.register_parameter( "parameter: extract-only-tandem-envelopes", "") if source.msn_peak_picking_args is not None: for trans in source.msn_peak_picking_args.get( "transforms", []): inst.register_parameter( "parameter: msn-%s" % trans.__class__.__name__, repr(trans)) if deconvoluting: if source.msn_deconvolution_args.get("averagine"): inst.register_parameter( "parameter: msn-averagine", repr(source.msn_deconvolution_args.get("averagine"))) if source.msn_deconvolution_args.get("scorer"): inst.register_parameter( "parameter: msn-scorer", repr(source.msn_deconvolution_args.get("scorer"))) data_processing = inst.serializer.build_processing_method() inst.serializer.add_data_processing(data_processing) else: n_spectra = 2e5 inst = cls(path, sample_name, n_spectra=n_spectra) # Force marshalling of controlled vocabularies early. inst.serializer.writer.param("32-bit float") return inst def save_bunch(self, precursor, products): self.serializer.save_scan_bunch(ScanBunch(precursor, products)) def complete(self): self.save() self.serializer.close()