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
SimpleInterval
to the pure Python implementation. This should allow the base library to work when the C extensions are not installed.
- Guarded
qsize
invocations on platforms that don't support it. - Error message logging in
ms-deisotope
were invoking using incorrect syntax.
v0.0.53 - 2023-10-01
- Return to requiring a minimum
pyteomics
version, starting at 4.6.2 now to avoid thepandas
dependency from 4.6.1 - Allow overriding the
read_schema
parameter forMzMLLoader
objects, 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
pyteomics
to 4.6.0 pendingpandas
dependency change
v0.0.51 - 2023-08-28
- Multiprocessing logging uses the logger system better
- More corrected type annotations
v0.0.50 - 2023-07-20
UnitInt
extension converted to pure Python type to cooperate with Cython 3.
v0.0.49 - 2023-06-14
- The default compressor for
MzMLbSerializer
has 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
PeakDependencyNetwork
that 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.
WrappedScan
objects 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_set
module. - Added
FunctionScorer
toms_deisotope.scoring
to 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_peaklist
now coerces a tuple of parallel sequences ornumpy
arrays 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_peaks
was incorrectly callingms_deisotope.deconvolution.prepare_peaklist
too late, so no useful coercion was done for the user.prepare_peaklist
is 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
-X
option to pass raw key-value pairs to the mzML converter inms-index mzml
to 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.PathLike
objects toms_deisotope.MSFileLoader
.
- mzML and mzXML now properly capture the relationship between instrument configuration and software.
- Fixed division in
_binsearch
used forprecursor-clustering
.
v0.0.42 - 22-06-15
- Added
close
parameter toMzMLSerializer
andMzMLbSerializer
to 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=False
to the writer.
v0.0.40 - 22-06-14
- Make
CVPrimitiveWrapperMeta
hashable.
- Updated automatic release workflow
- Allow
ProcessingMethod
to 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
isal
is installed, useisal.isal_zlib
in place of the stockzlib
.
v0.0.38 - 22-04-28
- Added
IonMobilityAware3DMzMLbSerializer
toms_deisotope.output.mzmlb
. - Added IBT10 reporter ions to
TMTReporterExtractor
- Added
extract-reporter-ions
toms-index
to extract reporter ions to CSV.
- Raised minimum
ms_peak_picker
version tov0.1.38
- Changed the default
dx
ofScan.average
andScan.average_with
from 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_writer
toms_deisotope.output
which 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_set
as a theoretical optimization.
- Restore unpickling of
ThermoRawLoader
s
v0.0.35 - 2021-12-29
- Added
toggle_peak_loading
toPeakSetDeserializingMixin
to toggle loading and parsing of deconvoluted peak sets. - Refactored
MSFileLoader
into a callable class,ms_deisotope.data_source.infer_type.FormatGuesser
. There is now ams_deisotope.output.ProcessedMSFileLoader
callable that can be used to determine the correct opener for processed mzML, MGF, and mzMLb files.
- Added a missing parameter
use_index
toProcessedMGFLoader
that made positional argument passing fail when unpickling instances of this subclass. - Repaired
peak_collection
fused functions to optimizeDeconvolutedPeakSetIndexed
too. - Fixed
TheoreticalIsotopicPattern.total
using 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-masslynx
to register the location of the Waters MassLynx SDK if it is not installed in the expected location. - Improved documentation of
mzMLb
reading and writing.
- Added an extra
ms_level
index to Thermo readers. - PROXI server now uses appropriate JSON types in its USI response.
ProcessedMGFLoader
's iterator behavior will bind generatedProcessedScan
objects, keeping parity withProcessedMzMLLoader
.- The
mzml
,mzmlb
andmgf
commands forms-index
can now handle reading mzML files fromSTDIN
.
PeakSetMethods
facet__call__
properly detects peak modes.
v0.0.30 - 2021-9-2
- Added
ms_deisotope.clustering.alignment
to provide a home forSpectrumAlignment
andSpectrumAlignmentGraph
.
MzMLSerializer
correctly interprets centroid-only but not peak-pickedScan
objects.- Using
_InterleavedGroupedScanIteratorImpl
on Py2 no longer uses adeque
as it is missinginsert
. LCMSFeatureSetFit
now hasn_points
in the pure Python version.SpectrumAlignment
now works properly.- Fix error in
MzMLSerializer
when 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
IDFormat
for those terms which define a nativeID format. - Added an
id_format
property toFileInformation
andScanFileMetadataBase
which retrieves the nativeID format or formats for a given file.
- The default behavior of
_InterleavedGroupedScanIteratorImpl
, the implementation of grouped iterators, when producing a newScanBunch
that any product scans whose precursor ID that has been in the product map for more thanself.ms1_buffering
productions will be added to the producedScanBunch
to prevent loss of information if iteration is interrupted. quick_index.index
now 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.IonMobilityAware3DMzMLSerializer
to write processed 3D IMS-MS spectra from mobility frames with feature maps. - Added
ms_deisotope.output.mzml.ProcessedGeneric3DIonMobilityFrameSource
to read processed feature maps out from 3D IMS-MS spectra. - Made
Generic3DIonMobilityFrameSource
wrapper iterable and more sequence-like. - Added
ms-index ms1-spectrum-diagnostics
to the CLI to collect relatively low level MS1 spectrum metadata.
- Made
LCMSFeatureProcessor
consider fewer combinations of feature sets, lowering the upper bound on the combinations. Such cases that required this should be quite rare. IonMobilityFrame
is 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_truncation
consistently respects its truncation threshold.
v0.0.26 - 2021-5-30
- Add
ion_mobility_type
property toScanBase
to allow checking ion mobility type on the scan object itself. - Add a prototype
FAIMSFilter
andFAIMSDemultiplexingIterator
todata_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
LCMSFeatureProcessor
substantially 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_array
method toRawDataArrays
andRawDataArrays3D
to 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.Generic3DIonMobilityFrameSource
which 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.plot
will automatically callpick_peaks
ifnot self.is_profile and self.peak_set is None
to 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_coord
helper structure properly comparable.
- Re-aliased
Processed*Deserializer
toProcessed*Loader
where*
is MzML, MGF, or MzMLb.
- The Waters SDK no longer uses absolute local imports.
- The Waters driver registration code no longer introduces
None
into the list of paths and breaks on Py3.
v0.0.22 - 2021-4-4
ms_deisotope.data_source
now exportsscan_from_csv
andmake_scan
helper methods.ms_deisotope.data_source.mzmlb.MzMLbLoader
is now available for reading mzMLb HDF5 files whenpyteomics.mzmlb
is available.ms_deisotope.output.MzMLbSerializer
is now available for writing mzMLb HDF5 files whenpsims.mzmlb
is available. This is further exposed throughms-index mzmlb
for 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.
Scan
objects explicitly are not hashable.- Changed the
delimiter
argument ofms_deisotope.data_source.text.scan_from_csv
to be a regular expression to handle arbitrary whitespace delimiters, and added an optionalskiprow
argument 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
idzip
compatible with Py3 buffered IO streams. - Added an additional flag
-D
to indicate toms-index metadata-index
that 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_type
now 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-clustering
now remembers source files when scans are loaded in memory- Use a more thorough precursor scan determination algorithm for
ThermoRawLoader
implementations - Fixed
ms-deisotope
's sequential scan numbering when there is scan interleaving
v0.0.19 - 2020-11-24
- Make
peak_set.merge
able to merge more than 2DeconvolutedPeakSet
instances
- 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
ProcessedMzMLLoader
to 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_set
method in a derived class. - Added a
time
attribute toRandomAccessScanSource
-based readers which lets you use index and slice notation with time values (float
s) using the standard minute unit common acrossms_deisotope
. - Made
ms_deisotope.data_source.mgf.MGFLoader
,ms_deisotope.peak_set.decharge
, andms_deisotope.processor.process
part of the top-level module's API. - Added
RawDataArray.size
property to report the length of the m/z and intensity array. - Added
default_precursor_ion_selection_window
(-D
) to thems-deisotope
command line tool. - Add drift time aware variant of
DeconvolutedPeak
,IonMobilityDeconvolutedPeak
which has adrift_time
attribute. - Added more documentation on the
truncate_after
parameter for deconvolution.
- The
_reindex
method ofDeconvolutedPeakSet
has been renamedreindex
to 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_list
argument toHybridAveragineCompositionListPeakDependenceGraphDeconvoluter
is now optional. - The
incremental_truncation
option fordeconvolute_peaks
andExhaustivePeakSearchDeconvoluterBase
-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 ofAveragineDeconvoluterBase
andMultiAveragineDeconvoluterBase
but is now more consistent with the original intent behindincremental_truncation
. Scan.clear
now takes afull
parameter which will discard thepeak_set
,deconvoluted_peak_set
, andproduct_scans
attributes' data. This more aggressively frees memory.Scan.average
andScan.average_with
now skip scans with empty signal arrays.- The
ScanProcessor.deconvolute_precursor_scan
method now explicitly requestsproduct_scans
be 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. MzMLSerializer
now propagates allPrecursorInformation.annotations
as parameters.ScanProcessor
now 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.overlaps
is now consistent withSpanningMixin.overlaps
.ms-deisotope
CLI now properly handles the case when the MSn average option-an
is not passed.ms-deisotope
CLI now properly builds the extended scan index when processing a file with only MSn spectra