NAME
MS::Reader::MzXML::Spectrum - An MzXML spectrum object
SYNOPSIS
use MS::Reader::MzXML;
my $run = MS::Reader::MzXML->new('run.mzXML');
while (my $spectrum = $run->next_spectrum) {
# Note that these two methods are functionally identical
my $id = $spectrum->id;
my $scan_num = $spectrum->scan_number;
my $rt = $spectrum->rt;
my $mz = $spectrum->mz;
my $int = $spectrum->int;
my $lvl = $spectrum->ms_level;
# $spectrum inherits from MS::Reader::MzML::Record, so you can do:
my $tc = $spectrum->param(MS_TOTAL_ION_CURRENT);
my $sn = $spectrum->get_array(MS_CHARGE_ARRAY); # if present
# in addition,
my $z = $spectrum->get_array('charge'); # if present
my $precursor = $spectrum->precursor;
my $pre_mz = $precursor->{mono_mz};
my $pre_mz = $precursor->{mono_mz};
# or access the guts directly (yes, it's okay!)
my $current = $spectrum->{totIonCurrent};
# print the underlying data structure
$spectrum->dump;
}
DESCRIPTION
MS::Reader::MzXML::Spectrum
objects represent spectra parsed from an mzXML file. The class is an implementation of MS::Spectrum and so implements the standard data accessors associated with that class, as well as a few extra, as documented below. The underlying hash is a nested data structure containing all information present in the original mzXML record. This information can be accessed directly (see below for details of the data structure) when class methods do not exist for doing so.
METHODS
mz
my $mz = $spectrum->mz;
for (@$mz) { # do something }
Returns an array reference to the m/z data array
int
my $int = $spectrum->int;
for (@$int) { # do something }
Returns an array reference to the peak intensity data array
rt
my $rt = $spectrum->rt;
Returns the retention time of the spectra, in SECONDS
ms_level
my $l = $spectrum->ms_level;
Returns the MS level of the spectrum as a positive integer
get_array
my $a = $spectrum->get_array('type');
Returns an array reference to the data array specified. Type can be one of
I<m/z-int|m/z|intensity|m/z ruler|TOF|S/N|charge>. Not all arrays will be
present in all files. Note that mz/intensity pairs can be represented by
individual 'm/z' and 'intensity' arrays or by a single interleaved
'm/z-int' array. The C<mz()> and C<int()> methods take care of figuring
this out for you.
precursor
my $pre = $spectrum->precursor;
my $pre_mz = $pre->{mono_mz};
Returns a hash reference containing information about the precursor ion for MSn spectra. Throws an exception if called on an MS1 spectrum. Note that this information is pulled directly from the MSn record. The actual spectrum object for the precursor ion could be fetched e.g. by:
my $pre_idx = $run->get_index_by_id( 'spectrum' => $pre->{scan_num} );
my $pre_obj = $run->fetch_spectrum( $pre_idx );
id
scan_number
my $scan = $spectrum->scan_number;
my $id = $spectrum->id;
Returns the scan number of the spectrum. Since mzXML spectrum records have no 'id' attribute per se, the id()
method is simply a link to the scan_number
method as the unique identifier.
scan_window
my $limits = $spectrum->scan_window;
my ($lower, $upper) = @$limits;
Returns an array reference to the lower and upper limits of the scan window(s) of the array, in m/z. If not available, returns the lowest and highest observed m/z (from annotations). Otherwise returns undef.
CAVEATS AND BUGS
The API is in alpha stage and is not guaranteed to be stable.
Please reports bugs or feature requests through the issue tracker at https://github.com/jvolkening/p5-MS/issues.
SEE ALSO
AUTHOR
Jeremy Volkening <jdv@base2bio.com>
COPYRIGHT AND LICENSE
Copyright 2015-2016 Jeremy Volkening
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.