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.
0.35.0 - 2024-11-01
- Add
ParamBuilder
to make buildingParam
easier - Add
unit_mut
toByteArrayViewMut
- Add error handling logic to nativeID format parsing logic
- Add
MZReaderBuilder
type to the public API - Add more metadata types to the public API
- Add
spectrum_reference
toScanEvent
- Add source-manipulation functions to
Generic3DIonMobilityFrameSource
- Added method to retrieve the raw spectrum from any USI (#15)
- Added
USI::download_spectrum_blocking
andUSI::download_spectrum_async
to retrieve the designated spectrum from a PROXI server
- Added
- Change the hashing function for
mzdata::spectrum::Collator
toIdentityHasher
- Fix multiple errors in
BinaryArrayMap3D
0.35.0 - 2024-11-01
- Add
ParamBuilder
to make buildingParam
easier - Add
unit_mut
toByteArrayViewMut
- Add error handling logic to nativeID format parsing logic
- Add
MZReaderBuilder
type to the public API - Add more metadata types to the public API
- Add
spectrum_reference
toScanEvent
- Add source-manipulation functions to
Generic3DIonMobilityFrameSource
- Added method to retrieve the raw spectrum from any USI (#15)
- Added
USI::download_spectrum_blocking
andUSI::download_spectrum_async
to retrieve the designated spectrum from a PROXI server
- Added
- Change the hashing function for
mzdata::spectrum::Collator
toIdentityHasher
- Fix multiple errors in
BinaryArrayMap3D
0.34.0 - 2024-10-31
- Fix parsing precursor charge in MGF files (#13)
-
fix parsing precursor charge in MGF files
This fixes two issues:
- the charge value in the PEPMASS header can have the same suffixed format as the CHARGE header
- the order of the headers isn't determined, so the charge value should still be saved correctly if the CHARGE header is before the PEPMASS header
0.33.0 - 2024-10-17
- Fixed crash while mgf parsing (#12)
- Fixed rare crash while mgf parsing
- Fixed silent error that returns an unfinished spectrum
- Handle charge when the sign is at the tail
0.32.0 - 2024-10-14
- Add some Thermo scan trailer values to
ThermoRawReaderType
- Add
NativeSpectrumIdentifierFormatTerm::format
- Upgraded
mzpeaks
andmzsignal
dependencies
0.31.0 - 2024-10-03
- Upgrade to
thermorawfilereader
v0.3.0
- Test on thermo feature instead of dependency (#10)
- Fix
mass_charge_ratio
order of operations error
0.30.0 - 2024-09-23
- Add
MZReaderBuilder
to make configuringMZReader
s easier - Add CV-derived dissociation methods and energies, update vendored PSI-MS CV
- Add more descriptive failure messages when parsing MGF files
- Add more descriptive errors and failure messages when encountering errors while parsing mzML files
- Publicly re-export
mzpeaks
dependency to guaranteemz_read
works (#9) Prevent downstream users needing to declare a dependency on mzpeaks when using mz_read macro. This also prevents potential version mismatches.
0.29.0 - 2024-09-07
- Add PROXI format parser/serializer in
mzdata:io:proxi
, no network request feature.
- Upgrade
thermorawfilereader
to v0.2.9, theoretically making an absent .NET framework to be non-fatal - Upgrade
mzsignal
and enable new AVX feature
- Change
average_spectra
to take an iterator overSpectrumLike
(#6)
- Allowed average from an iterator and added more documentation
0.28.1 - 2024-09-01
- Revert
mzsignal
change to fix downstream crashes while averaging
0.28.0 - 2024-08-30
- Add
PeakDataIterDispatch
to the public API - Add more descriptive documentation for
meta
-metadata types.
- Upgraded
mzpeaks
v0.20.0,mzsignal
v0.21.0,thermorawfilereader
v0.2.7
0.27.0 - 2024-08-25
- Add dispatching implementation to
PeakDataIter
andRefPeakDataIter
- Add basic
USI
parsing
- Do not
panic
when requested MGF ID not in the index (#5) - Port #5 to all other reader types
0.26.0 - 2024-08-10
- Added
Unit::VoltSecondPerSquareCentimeter
- Added
BinaryArrayMap3D::ion_mobility_unit
- Add
get
anditer
methods forPeakDataLevel
andRefPeakDataLevel
- Add tutorial for spectrum types
- Add
Sample
to theMSDataFileMetadata
- Add basic
usi
parsing.
- Change
MzMLWriterType
methods to be generic to peaks. All the writing methods are generic over peak types so long as they satisfy theBuildArrayMapFrom
constraint. The type still needs type parameters for default behavior. This may cause parameter inference issues forRawSpectrum
in which case useSpectrumWriter::write
.
- More docs
- Fix mzpeaks API breakage
0.25.0 - 2024-07-26
- Add
NativeSpectrumIdentifierFormatTerm
andMassSpectrometerFileFormatTerm
enums for CV subsetsNativeSpectrumIdentifierFormatTerm
corresponds to "native spectrum identifier format" and includes a regular expression from the controlled vocabulary for parsing ids.MassSpectrometerFileFormatTerm
corresponds to "mass spectrometer file format". No extra behavior.
- Add
IonMobilityFrameGroup
plus associated iterators and traits. - Add
BuildArrayMap3DFrom
andBuildFromArrayMap3D
traits - Add
IonMobilityFrameWriter
trait - Add
read_checksum
toMzMLReaderType
- Add
BuildArrayMap3DFrom
andBuildFromArrayMap3D
to the public API - Add
IonMobilityFrameWriter
implementation for mzML and mzMLbFeatureDataLevel
andRefFeatureDataLevel
to mirror the peak set equivalents forIonMobilityFrameLike
- Implement
From<MultiLayerIonMobilityFrame>
forRawSpectrum
to letIonMobilityFrameWriter
re-use most ofSpectrumWriter
.
- Change
RawSpectrum
to beSpectrumLike
over all peak types. - Upgrade controlled vocabulary
- Rename methods of
IonMobilityFrameWriter
to not clash withSpectrumWriter
- Fixed error in setting highest observed m/z in
SpectrumLike::update_summaries
0.24.0 - 2024-07-18
- Upgrade
mzsignal
to v0.18.0
0.23.0 - 2024-07-17
- Upgraded
serde
,rayon
- Don't write duplicate CV params about MS level
- Write the correct size of the chromatogram list in mzML
- Fix up type names in the spectrum documentation
0.22.0 - 2024-07-16
- Add owning variants for
write_all
SpectrumWriter
- Add
ChromatogramSource
trait for producingChromatogram
s - Add
name
andunit
toByteArrayView
- Change
OffsetIndex
key toBox<str>
This reduces memory consumption. - Upgraded
mzsignal
minimum version
- Fix error in search-by-time methods
0.21.0 - 2024-07-01
- Add Dimensionless to
Unit
for arrays without units - Add ion mobility stacked spectra support, initial build out of trait system.
- Add Boolean variant to
ParamValue
types
- Fixed #3 empty spectrum from trailing newlines in MGF
0.20.0 - 2024-05-30
- Handle unknown mass analyzers slightly more gracefully.
- Actually use the fast path when pre-encoding arrays
0.19.0 - 2024-05-26
- Add more convenience methods for populating
InstrumentConfiguration
andParamDescribed
types - Support writing to STDOUT properly in
mzconvert
example
- Fixed the creation of
InstrumentConfiguration
from Thermo RAW files
0.18.0 - 2024-05-25
- Upgraded
mzpeaks
minimum version to 0.12.0,mzsignal
minimum version to 0.13.0 - Change how spectrum summary descriptions are calculated
- Do not pre-emptively re-calculate summaries when writing to avoid decoding overhead.
- Added
update_summaries
toSpectrumLike
andfetch_summaries
toRefPeakDataLevel
to do this work.
- Upgrade mzsignal minimum version to 0.14.0
- Fix changelog
0.17.0 - 2024-05-18
- Upgraded
mzpeaks
minimum version to 0.12.0,mzsignal
minimum version to 0.13.0 - Change how spectrum summary descriptions are calculated
- Do not pre-emptively re-calculate summaries when writing to avoid decoding overhead.
- Added
update_summaries
toSpectrumLike
andfetch_summaries
toRefPeakDataLevel
to do this work.
- Fix changelog
0.16.0 - 2024-05-07
- Added Thermo instrument methods to Thermo instrumentConfiguration
- Add
Hash
implementation forParam
,Value
, and associated ref types - Add
referenceParamGroup
inference forinstrumentConfiguration
when writing mzML, and escape newlines inParam
values
- Properly set compression in store_compressed
- Empty buffer coercion failure on Linux (#2)
- Prevent slice coercion from failing in coerce_mut
- Prevent potential unwrap failures in PeakData.base_peak when dealing with unorderable floats
0.15.0 - 2024-05-02
- Added
store_compressed
toDataArray
to support compression at-will - Added
encode_array
to specify compression state of aDataArray
inBinaryArrayMap
- Export the utils module for convenience
- Add documentation for more of the param module
- Simplify and document peak type blanket traits
- Document new compression methods
- MGF spectra are properly classified as MS2 and centroid
- PeakDataLevel is now exported as was originally intended
- Use git-cliff
0.14.0 - 2024-04-25
- Added dependency on
chrono
to parse thestartTimeStamp
in mzML(b), and the equivalent Thermo property. - Added more conversion convenience methods for parameter-like enums:
MassSpectrometryFormat
FormatConversion
- Added
mzdata::meta::custom_software_name
convenience for creating a CV parameter describing an unreleased tool. Helpers to deal with published tools will be worked on soon. - Added
MassSpectrometryRun
toThermoRawReaderType
. - Added
Value
andValueRef
types which are used to holdcvParam
/userParam
values with eager parsing. While not an actual space savings, this removes the need to repeatedly parse values if they are accessed more than once. They support coercion via theParamValue
trait in the prelude.Param
andParamCow
also implement this trait and delegate it to theirvalue
field. - Added
ion_mobility
,filter_string
, andmass_resolution
methods toScanEvent
that performcvParam
look ups. - Added
MGFStyle
traits and marker types that control how MGF spectrum headers are populated. The default behavior is now encapsulated in the default style,MZDataMGFStyle
. - Added
SoftwareTerm
enumeration generated from thepsi-ms.obo
.
- The
MassSpectrometryRun.start_time
field is now achrono::DateTime
instead ofString
. Param
andParamCow
now store their values asValue
/ValueRef
, which eagerly parse their values to elide the parsing cost on repeated access.CURIE
can now be constructed with themzdata::curie
macroMGFWriterType
now takes a fourth template parameter, a type implementing theMGFStyle
trait. This is parameterized by default.- The
MGFWriterType
's public API has been expanded and the internal responsibilities refactored so that thewrite_header
andwrite_peaks
methods are more succinct.
0.13.0 - 2024-03-28
MGFReaderType
andMGFWriterType
implementMSDataFileMetadata
ThermoRawFileReader
has been added to read Thermo RAW files when the .NET 8 runtime is available, usingthermorawfilereader
Source
andSink
algebraic types to represent things that spectra can be read from or written to.mz_read
andmz_write
are macros to open files for reading and writing in unboxed context, but which only live within a scoped closure.MassSpectrometryReadWriteProcess
trait for orchestrating reading from aSource
, writing to aSink
, and transforming the data through an arbitrary function specified as part of the trait implementation. Likemz_read
/mz_write
, the scope enclosed by the trait method.
MGFWriterType
now generates a spectrum title when one is absent, rather than defaulting to the spectrum's native ID.CURIE
can now be compared toParam
- Renamed
ScanWriter
toSpectrumWriter
andScanSource
toSpectrumSource
for consistency with other trait naming conventions. MZFileReader::open_file
now returns anio::Result
in keeping with the idea that reading aFile
might fail as well, even if it is already open, because it is the wrong type of file. This also allows file formats that cannot be read from arbitraryio::Read
objects to signal failure without crashing the whole system.Collator
,std::sync::mpsc::{Sender, SyncSender}
now implementSpectrumWriter
when properly parameterized.PeakDataLevel
has been refactored into two types,PeakDataLevel
is an owning type andRefPeakDataLevel
is a borrowing type.
0.12.0 - 2024-01-29
- Require a newer version of
mzsignal
, fixing the rather embarrassing error of swapping FWHM and SNR during peak picking. - Thicken the use of internal abstraction around
PrecursorSelection
for the future of allowing more than oneSelectedIon
perPrecursor
.
0.11.0 - 2024-01-24
- Added an
hdf5_static
flag to build the HDF5 library from source at build time.
- Removed
SpectrumLike
from the crate root, it is more appropriately imported with the rest of the prelude.
0.9.0 - 2024-01-20
RestartableGzDecoder
added tomzdata::io
to provide anio::Seek
compatible GZIP decompressor, with the caveat that seeking backwards requires re-reading everything read thus far and that seeks cannot be relative to the EOF.- Added documentation to more examples.
infer_from_stream
handles compressed streams correctly without triggering an unexpected EOF error.MGFWriterType
properly formats additional annotations.
0.8.0 - 2024-01-10
- Added
close
to theSpectrumWriter
trait which "closes" the formatted structure of the file. As Rust lacks a notion of a "closed"io::Write
, the underlying writer isn't actually "closed" until the whole struct is dropped. - Added
Drop
implementation forMzMLWriterType
andMzMLbWriterType
which ensures that theclose
method is called to make the resulting file well-formed. - Added new peak picking methods
MultiLayerSpectrum::pick_peaks_in_intervals
andRawSpectrum::pick_peaks_in_intervals_into
that pick peaks only in selected m/z regions. - Added
MassSpectrometryRun
to record information found on or near the<run>
element in mzML which includes several default values otherwise absent from the data model. It is accessible viaMSDataFileMetadata::run_description
trait method, included in the prelude. - Added the
MSDataFileMetadata::spectrum_count_hint
which returns the total number of spectra in the file, if available. - Added
MSDataFileMetadata
implementations forSpectrumIterator
,StreamingSpectrumIterator
, andSpectrumGroupingIterator
where their sources do. SpectrumGroupingIterator
and other such iterator supportRandomAccessSpectrumGroupingIterator
.
SpectrumWriter
no longer applies a lifespan requirement on individual writing operations.filename
is no longer a required dependency, it is only needed to useMzMLbReaderType::from_file
which otherwise panics. It introduces unpredictable and difficult to diagnose compilation errors.MGFWriterType
skips MS1 spectra automatically.
- Properly track whether the
spectrumList
has been finished by mzML parsers. - Iteration over
SpectrumGrouping
when there are missing components has been fixed. - Binary data arrays may panic if empty on certain platforms with certain compression schemes.
0.7.0 - 2023-12-25
- Limited async mzML reader support
- mzMLb read and write support
- Reading mzML and MGF from
STDIN
. HDF5, and ergo mzMLb is not supported on non-seek-able I/O devices. See thefrom_stdin
example. - Parsing of mzML
run
andspectrumList
metadata, although they are still not a part of the common data model - Spectrum averaging now has eager
averaging
andaveraging_deferred
adapter implementations as iterator adapters onSpectrumGroupIterator
. The deferred adapter is preferred for distributing the process withrayon
. See theaveraging_writer
example. - Added ordered parallel iteration collation with
mzdata::spectrum::Collator
to make consumingrayon
iterators easier while preserving the original order. Seeaveraging_writer
example. - The mzML and mzMLb writers now write the total ion chromatogram and base peak chromatogram
RandomAccessScanIterator
methods now return mutable references to self, making them actually useful in a chain.- Make some window size attributes smaller as they do not require double precision.
- Clean up the internal implementation of the various internal
SpectrumBuilder
types. - Factor up
mzdata::spectrum::signal
to be less monolithic and a complete redesign of the traits used to convertmzpeaks
to and from binary arrays. - Massive refactoring of
mzdata::io::traits
to make more traits depend uponSpectrumSource
instead ofSpectrumIterator
and to make things slightly less verbose. - Switched the default
mzsignal
backend tonalgebra
instead ofintel-mkl
for simplicity.
0.5.0 - 2021-09-22
- MzML writing via
mzdata::io::mzml::MzMLWriter
- Added feature flags to allow the user to choose amongst more
flate2
backends (zlib default, zlib-ng-compat, miniz_oxide) - Grouped iteration mode for connecting precursor and product spectra over an iterator stream using the
groups
method ofSpectrumSource
.
- Re-structuring and renaming of the various iterator mechanisms for more
consistency.
ScanIterator
->SpectrumIterator
, et cetera. Minor refactoring of this sort expected to come forSpectrumSource
as responsibilities are worked out.
- Fixed documentation in several places, particularly where it was substantially out of date.