All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
v0.0.55 - 2024-07-01
- Support NumPy 2.0
v0.0.54 - 2024-05-23
- Added
SimpleIntervalto the pure Python implementation. This should allow the base library to work when the C extensions are not installed.
- Guarded
qsizeinvocations on platforms that don't support it. - Error message logging in
ms-deisotopewere invoking using incorrect syntax.
v0.0.53 - 2023-10-01
- Return to requiring a minimum
pyteomicsversion, starting at 4.6.2 now to avoid thepandasdependency from 4.6.1 - Allow overriding the
read_schemaparameter forMzMLLoaderobjects, to be used when handling mzML files which have invalid XSD URIs. This defaults to using a pre- compiled schema inpyteomics.
v0.0.52 - 2023-09-04
- Pinned
pyteomicsto 4.6.0 pendingpandasdependency change
v0.0.51 - 2023-08-28
- Multiprocessing logging uses the logger system better
- More corrected type annotations
v0.0.50 - 2023-07-20
UnitIntextension converted to pure Python type to cooperate with Cython 3.
v0.0.49 - 2023-06-14
- The default compressor for
MzMLbSerializerhas been changed to default to the default compressor frompsims(currentlyblosc).
v0.0.48 - 2023-05-22
- More type annotations and documentation.
- Avoid excessive hysterical reloading of spectra from mzML files when trying to find precursor scan IDs.
- Fix an outdated placeholder filter in
PeakDependencyNetworkthat caused the first peak in any spectrum to be ignored.
v0.0.47 - 2023-05-08
- More type annotations
- Arrays used to reconstruct deconvoluted peak sets are not guaranteed to be copied.
WrappedScanobjects now properly propagate overridden attributes when copied.- More docstring formatting was fixed and missing arguments were described
v0.0.46 - 2023-01-22
- Documentation for the
ms_deisotope.peak_setmodule. - Added
FunctionScorertoms_deisotope.scoringto allow user-defined scoring functions to be used without sub-classing. This incurs some extra overhead on every call, so performance may be worse than a built-in sub-class.
ms_deisotope.deconvolution.prepare_peaklistnow coerces a tuple of parallel sequences ornumpyarrays of m/z and intensities properly, so the caller does not need to zip them into a list of(mz, intensity)pairs.
ms_deisotope.deconvolute_peakswas incorrectly callingms_deisotope.deconvolution.prepare_peaklisttoo late, so no useful coercion was done for the user.prepare_peaklistis now correctly called before passing the provided peak list to the deconvolution machinery, removing the need for users to call it explicitly.
v0.0.45 - 2023-01-14
- More type annotations for
ProcessedScan-yielding readers. - C accelerators for
pyteomics's unit-scalars and CV-params to speed up parsing and reduce memory usage. - Created a low level C API for stripped-down peak lists that does not use the GIL, limited use-cases currently.
- Loads of type annotations.
- Added a
-Xoption to pass raw key-value pairs to the mzML converter inms-index mzmlto make experimental configuration easier.
v0.0.44 - 2022-10-09
- The minimum NumPy version on Python 3.10 was increased to 1.23.2
- Fix software ID in mzML writing.
v0.0.43 - 2022-09-29
- Add support for
os.PathLikeobjects toms_deisotope.MSFileLoader.
- mzML and mzXML now properly capture the relationship between instrument configuration and software.
- Fixed division in
_binsearchused forprecursor-clustering.
v0.0.42 - 22-06-15
- Added
closeparameter toMzMLSerializerandMzMLbSerializerto reflect the change made upstream inpsims. These govern the automatic closing behavior of the buffer after completing the data document. If you need the buffer to remain open after completing file writing, passclose=Falseto the writer.
v0.0.40 - 22-06-14
- Make
CVPrimitiveWrapperMetahashable.
- Updated automatic release workflow
- Allow
ProcessingMethodto repeat terms
v0.0.39 - 22-05-29
- When using
ms_deisotope.test.common.datafile, if the file isn't found in the package data directory, it will be downloaded from GitHub. Downloaded files will be stored in thetest_data/directory under the path returned byms_deisotope.config.get_config_dir. - Use internal C extensions to speed up unit primitives.
- When
isalis installed, useisal.isal_zlibin place of the stockzlib.
v0.0.38 - 22-04-28
- Added
IonMobilityAware3DMzMLbSerializertoms_deisotope.output.mzmlb. - Added IBT10 reporter ions to
TMTReporterExtractor - Added
extract-reporter-ionstoms-indexto extract reporter ions to CSV.
- Raised minimum
ms_peak_pickerversion tov0.1.38 - Changed the default
dxofScan.averageandScan.average_withfrom 0.01 to 0.002 to reduce distortion when centroiding averaged spectra. - Change logging to be consistent across modules.
- Removed deprecated
ScanProcessor.get_precursor_peak_for_product_scans
v0.0.36 - 2022-01-15
- Added
get_writertoms_deisotope.outputwhich will guess which writer (and compression) to use from a file path or name of a file-like object. - Added an option to skip envelope decoding during
deserialize_deconvoluted_peak_setas a theoretical optimization.
- Restore unpickling of
ThermoRawLoaders
v0.0.35 - 2021-12-29
- Added
toggle_peak_loadingtoPeakSetDeserializingMixinto toggle loading and parsing of deconvoluted peak sets. - Refactored
MSFileLoaderinto a callable class,ms_deisotope.data_source.infer_type.FormatGuesser. There is now ams_deisotope.output.ProcessedMSFileLoadercallable that can be used to determine the correct opener for processed mzML, MGF, and mzMLb files.
- Added a missing parameter
use_indextoProcessedMGFLoaderthat made positional argument passing fail when unpickling instances of this subclass. - Repaired
peak_collectionfused functions to optimizeDeconvolutedPeakSetIndexedtoo. - Fixed
TheoreticalIsotopicPattern.totalusing an uninitialized accumulator.
v0.0.33 - 2021-12-05
- Added an example script for splitting a FAIMS file into separate mzML files.
- Added an example script for ion mobility and charge state deconvolving Waters HDMSe data.
- Added Waters MassLynx SDK bindings for reading Waters .RAW folders directly on Windows when the SDK C library is present.
- Added a new command
ms-index maintenance register-waters-masslynxto register the location of the Waters MassLynx SDK if it is not installed in the expected location. - Improved documentation of
mzMLbreading and writing.
- Added an extra
ms_levelindex to Thermo readers. - PROXI server now uses appropriate JSON types in its USI response.
ProcessedMGFLoader's iterator behavior will bind generatedProcessedScanobjects, keeping parity withProcessedMzMLLoader.- The
mzml,mzmlbandmgfcommands forms-indexcan now handle reading mzML files fromSTDIN.
PeakSetMethodsfacet__call__properly detects peak modes.
v0.0.30 - 2021-9-2
- Added
ms_deisotope.clustering.alignmentto provide a home forSpectrumAlignmentandSpectrumAlignmentGraph.
MzMLSerializercorrectly interprets centroid-only but not peak-pickedScanobjects.- Using
_InterleavedGroupedScanIteratorImplon Py2 no longer uses adequeas it is missinginsert. LCMSFeatureSetFitnow hasn_pointsin the pure Python version.SpectrumAlignmentnow works properly.- Fix error in
MzMLSerializerwhen trying to serialize a spectrum that has been peak-picked but where the peak set was empty.
v0.0.29 - 2021-7-8
- Fix specifying the precursor m/z, charge and polarity of a spectrum from CSV or via
data_source.memory.make_scan.
v0.0.28 - 2021-7-7
- Added string parsing and formatting to
IDFormatfor those terms which define a nativeID format. - Added an
id_formatproperty toFileInformationandScanFileMetadataBasewhich retrieves the nativeID format or formats for a given file.
- The default behavior of
_InterleavedGroupedScanIteratorImpl, the implementation of grouped iterators, when producing a newScanBunchthat any product scans whose precursor ID that has been in the product map for more thanself.ms1_bufferingproductions will be added to the producedScanBunchto prevent loss of information if iteration is interrupted. quick_index.indexnow tries much harder to start from an MS1 scan if it can.
v0.0.27 - 2021-6-21
- Added TMT11 to
ms_deisotope.qc.signature. - Added
ms_deisotope.output.mzml.IonMobilityAware3DMzMLSerializerto write processed 3D IMS-MS spectra from mobility frames with feature maps. - Added
ms_deisotope.output.mzml.ProcessedGeneric3DIonMobilityFrameSourceto read processed feature maps out from 3D IMS-MS spectra. - Made
Generic3DIonMobilityFrameSourcewrapper iterable and more sequence-like. - Added
ms-index ms1-spectrum-diagnosticsto the CLI to collect relatively low level MS1 spectrum metadata.
- Made
LCMSFeatureProcessorconsider fewer combinations of feature sets, lowering the upper bound on the combinations. Such cases that required this should be quite rare. IonMobilityFrameis closer to being a first-class object instead of an immutable data wrapper.
- Iterating over MS3-containing datasets in grouped mode will now properly group MS3 spectra with their MS2 spectra. Applies for higher exponentiated MSn as well.
TheoreticalIsotopicPattern.incremental_truncationconsistently respects its truncation threshold.
v0.0.26 - 2021-5-30
- Add
ion_mobility_typeproperty toScanBaseto allow checking ion mobility type on the scan object itself. - Add a prototype
FAIMSFilterandFAIMSDemultiplexingIteratortodata_source.query. - Add a new examples set to the repository showing other ways to use the library's features.
- Ensure that any lingering MSn scans are flushed with the final MS1 scan when an interleaved scan iteration strategy is wrapping up.
- Made
LCMSFeatureProcessorsubstantially faster and more memory efficient during dependence graph solving by introducing a Cython implementation. The solver is still vulnerable to high density noise clusters slowing it down, but will no longer completely OOM when these are wide enough.
v0.0.25 - 2021-5-02
- Added
has_arraymethod toRawDataArraysandRawDataArrays3Dto semantically query whether an array collection has an array of a particular type (like a flavor of ion mobility) without iteratively probing. - Added
ms_deisotope.data_source.scan.mobility_frame.Generic3DIonMobilityFrameSourcewhich can serve a ion mobility-aware data structure when there is a profile-mode m/z, intensity and ion mobility array in a single spectrum like the one produced by MSConvert's combine-ion-mobility-spectra option.
Scan.plotwill automatically callpick_peaksifnot self.is_profile and self.peak_set is Noneto avoid unexpectedly ending up without a plot in this common scenario.
- Fixed Docker container build process to use latest released versions of libraries.
v0.0.24 - 2021-4-10
- Made
feature_fit.map_coordhelper structure properly comparable.
- Re-aliased
Processed*DeserializertoProcessed*Loaderwhere*is MzML, MGF, or MzMLb.
- The Waters SDK no longer uses absolute local imports.
- The Waters driver registration code no longer introduces
Noneinto the list of paths and breaks on Py3.
v0.0.22 - 2021-4-4
ms_deisotope.data_sourcenow exportsscan_from_csvandmake_scanhelper methods.ms_deisotope.data_source.mzmlb.MzMLbLoaderis now available for reading mzMLb HDF5 files whenpyteomics.mzmlbis available.ms_deisotope.output.MzMLbSerializeris now available for writing mzMLb HDF5 files whenpsims.mzmlbis available. This is further exposed throughms-index mzmlbfor CLI conversion. Expect this feature to undergo further evolution as the extended indices used for other features may also be stored in mzMLb as extra datasets.
Scanobjects explicitly are not hashable.- Changed the
delimiterargument ofms_deisotope.data_source.text.scan_from_csvto be a regular expression to handle arbitrary whitespace delimiters, and added an optionalskiprowargument to allow you to skip headers in the all-too-common text spectrum exports that spectrum viewers provide. - Removed the resampling API from
RunningWeightedAverage, improving memory efficiency.
- Made random-access gzip compressor interface
idzipcompatible with Py3 buffered IO streams. - Added an additional flag
-Dto indicate toms-index metadata-indexthat the input file is an a deisotoped and charge state deconvolved mzML to extract additional fields. - Fixed an interface error in
ms_deisotope._c.feature_map.processor.
- All grouped scan iterators now use an interleaved iteration strategy to handle interleaving of MS1 scans that are
not the precursor of a subsequent series of MSn scans. When using
start_from_scan, product scans which follow the first MS1 but not actually produced from that first MS1 scan will be included in the product scan list for thatScanBunch. guess_typenow includes the input object in the error message when it fails to locate a loader type to reduce the amount of blind guessing at the problem.
- Retrieving the precursor scan is now safer with
thermo_raw_net.ThermoRawLoader ms-index spectrum-clusteringnow remembers source files when scans are loaded in memory- Use a more thorough precursor scan determination algorithm for
ThermoRawLoaderimplementations - Fixed
ms-deisotope's sequential scan numbering when there is scan interleaving
v0.0.19 - 2020-11-24
- Make
peak_set.mergeable to merge more than 2DeconvolutedPeakSetinstances
- Always infer the precursor scan relationship in ThermoRaw readers using the "Master Scan Number" header
v0.0.18 - 2020-10-09
- Added
CHANGELOG.md - Added the option for
ProcessedMzMLLoaderto detect and handle deconvoluted peak lists from other tools and to load them without crashing while looking forms_deisotope-specific extra data. This behavior can be customized by overriding thedeserialize_external_deconvoluted_peak_setmethod in a derived class. - Added a
timeattribute toRandomAccessScanSource-based readers which lets you use index and slice notation with time values (floats) using the standard minute unit common acrossms_deisotope. - Made
ms_deisotope.data_source.mgf.MGFLoader,ms_deisotope.peak_set.decharge, andms_deisotope.processor.processpart of the top-level module's API. - Added
RawDataArray.sizeproperty to report the length of the m/z and intensity array. - Added
default_precursor_ion_selection_window(-D) to thems-deisotopecommand line tool. - Add drift time aware variant of
DeconvolutedPeak,IonMobilityDeconvolutedPeakwhich has adrift_timeattribute. - Added more documentation on the
truncate_afterparameter for deconvolution.
- The
_reindexmethod ofDeconvolutedPeakSethas been renamedreindexto reflect that it should be part of the type's public API since user code may need to call it if they apply some new transformation to the list of peaks. - The
composition_listargument toHybridAveragineCompositionListPeakDependenceGraphDeconvoluteris now optional. - The
incremental_truncationoption fordeconvolute_peaksandExhaustivePeakSearchDeconvoluterBase-based strategies now apply truncation to all fits, not just those passing the initial full-width fit. This required more invasive changes to the implementations ofAveragineDeconvoluterBaseandMultiAveragineDeconvoluterBasebut is now more consistent with the original intent behindincremental_truncation. Scan.clearnow takes afullparameter which will discard thepeak_set,deconvoluted_peak_set, andproduct_scansattributes' data. This more aggressively frees memory.Scan.averageandScan.average_withnow skip scans with empty signal arrays.- The
ScanProcessor.deconvolute_precursor_scanmethod now explicitly requestsproduct_scansbe passed as an argument. It also extracts co-isolating precursor ions from the isolation window even if a deconvoluted peak is not found for the precursor ion. MzMLSerializernow propagates allPrecursorInformation.annotationsas parameters.ScanProcessornow reports coisolation even when the precursor peak is not found (though it still omits it if an unacceptable solution is reported).
- When using the
CompositionList-based deconvoluters with a mass shift, the theoretical isotopic pattern will now have the correct monoisotopic m/z. IntervalTreeNode.overlapsis now consistent withSpanningMixin.overlaps.ms-deisotopeCLI now properly handles the case when the MSn average option-anis not passed.ms-deisotopeCLI now properly builds the extended scan index when processing a file with only MSn spectra