Upgrading: what changed in your results¶
pyMzLib bundles one mzLib build, and every pyMzLib release moves it forward. Most of what a new mzLib brings is new capability. This page is the rest: changes that give you a different answer from the same file and the same call. Read the section for the release you are moving to before you compare numbers across the upgrade.
Each entry names the mzLib pull request it comes from, so you can read the change itself. The
changelog has everything else.
Which mzLib a bridge was built from is in pymzlib.bridge_version()["mzlib"].
0.4.0 (still built from mzLib 1.0.593)¶
mzLib did not move, so no mzLib change gives you a different answer. These three are pyMzLib's own.
Calls that used to succeed are now refused¶
out=must name a.tsvfile on everyreaders.read_*()function, single-file and_many(any case:.TSVis fine).out="table.csv", or a path with no extension, is now aUsageErrorbefore anything is read. The file was always tab-separated, so the fix is to rename it.
Same file, different value¶
read_records()on an SDRF returns no columns.headerandcellsused to come back as;-joined strings, which could not be split back because SDRF cells contain;themselves. Both are now listed inexcluded_fieldswith the reason"use sdrf read";record_countis unchanged. Read SDRFs withsdrf.read().
Same failure, different error¶
- A read whose answer is too large to return (past about 1.07 billion characters of JSON) is a
UsageErrornaming the record count and telling you to uselimit/offsetorout=. It used to fail with an unexplainedOutOfMemoryException.
0.3.0 (built from mzLib 1.0.593)¶
Files that used to be refused now read¶
- MetaMorpheus protein-group tables written without quantification
(mzLib#1365).
AllProteinGroups.tsvand each file's<file>_ProteinGroups.tsvraisedTsv file type not supported. They now read asMetaMorpheusQuantifiedProteinGroups, with spectral counts and no intensities:intensityis inabsent_fields, meaning no basis, not zero. - RNA quantification tables (mzLib#1388).
AllQuantifiedTranscriptGroups.tsvandAllQuantifiedOligos.tsvare new file types, soformats()lists more entries than before. Code that asserts a count of formats needs updating.
Same file, different value¶
- Four modifications write their Unimod accession in
pro_forma(mzLib#1328). Inread_records()on a MetaMorpheus.psmtsvor.osmtsv,GG (Ubiquitination Site)is now[UNIMOD:121], bothMyristoylationentries[UNIMOD:45]andEQIGG[UNIMOD:846], where they were written by name. Masses are unchanged. A string comparison ofpro_formaacross the upgrade will see these peptides as different; a pipeline keyed on Unimod will now see ubiquitination sites it silently dropped before.
Same failure, different error¶
- A read fault on an existing
.mzid(mzLib#1362) is now aBridgeErrorwitherror_typeMzLibException, naming the file, where it was anIOException. A missing file is still aUsageError. A plain.mzidis now streamed from disk, so reading a large one needs far less memory. - PRIDE errors name the file and the host, never the URL
(mzLib#1350), so a reviewer token in a
query string cannot reach a log. Every transport failure is still a
ServiceUnavailableError. Code that parsed a URL out of an error message will find none.
pyMzLib 0.2.0 (built from mzLib 1.0.592)¶
Files that used to be refused now read¶
- mzIdentML (
.mzid, and.mzid.gzwithout unpacking it, mzLib#1313), and MetaMorpheus'sAllQuantifiedProteinGroups.tsvandAllQuantifiedPeptides.tsv(mzLib#1347). - Pytheas match output (mzLib#1277). A
.txtwhose first five lines carry#theoretical_digestreads as Pytheas; any other.txtis still Crux. - Current FlashLFQ and MetaMorpheus
QuantifiedPeaks.tsv(mzLib#1345), which have noMBR Scorecolumn, read instead of failing withHeaderValidationException.
Same file, different value¶
pro_formais filled on older MetaMorpheus files (mzLib#1346). MetaMorpheus 1.1.11 and earlier wrote no ProForma column, soread_records()gaveNone; mzLib now convertsfull_sequence. Ambiguous (|-joined) or unconvertible rows are stillNone. Reading is slower: a 295 MBAllPSMs.psmtsvtook 21% longer.mbr_scoreisNonewhere it was0in a FlashLFQQuantifiedPeaks.tsv(mzLib#1345), for every peak without a score. A0used to say "scored, and scored nothing". Seven columns also join the record:organism,peak_fwhm,peak_fwhm_status,pip_q_value,pip_pep,decoy_peptideandrandom_rt.- MGF
one_based_precursor_scan_numberis no longer alwaysNone(mzLib#1227): mzLib reads it from thePRECURSORSCANheader it writes. It is stillNoneon MGF files mzLib did not write. - FlashLFQ with match-between-runs is reproducible across thread counts (mzLib#1155). Before, more than one thread could give different peptide and protein numbers for identical inputs.
Earlier releases¶
- MSFragger retention times are minutes from pyMzLib 0.1.0
(mzLib#1116). Before, an MSFragger
psm.tsvpassed seconds through, and FlashLFQ quantified it in the wrong window.