Gene Selkov, Jr. > Finnigan > Finnigan::Scan

Download:
Finnigan-0.0206d.tar.gz

Dependencies

Annotate this POD

CPAN RT

New  1
Open  0
View/Report Bugs
Module Version: 0.0206   Source  

NAME ^

Finnigan::Scan -- a lightweight scan data decoder

SUBMODULES ^

Finnigan::Scan::Profile

Finnigan::Scan::ProfileChunk

Finnigan::Scan::CentroidList

SYNOPSIS ^

  my $scan = Finnigan::Scan->decode(\*INPUT);
  say $scan->header->profile_size;
  say $scan->header->peak_list_size;

  my $profile = $scan->profile;
  $profile->set_converter( $converter ); # from ScanEvent
  my $bins = $profile->bins;
  my ($mz, $abundance) = @{$bins->[0]} # data in the first bin

  my $c = $scan->centroids
  say $c->count;

  say $c->list->[0]->[0]; # the first centroid M/z
  say $c->list->[0]->[1]; # abundance

DESCRIPTION ^

This decoder reads the entire ScanDataPacket, discarding the location and type meta-data. It is a more efficient alternative to the full-featured combination decoders using the Finnigan::Profile, Finnigan::Peaks and Finnigan::Peak modules.

METHODS

decode

The constructor method

header

Get the Finnigan::PacketHeader object. It is the only full-featured decoder object used in this module; since it occurs only once in each scan, there is no significant performance loss.

profile

Get the Finingan::Scan::Profile object containing the profile, if it exists

centroids

Get the Finnigan::Scan::CentroidList object containing the peak centroid list, if it exists

SEE ALSO ^

Finnigan::Scan: (lightweight decoder object)

Finnigan::PacketHeader (decoder object)

Finnigan::Scan::Profile (lightweight decoder object)

Finnigan::Scan::CentroidList (lightweight decoder object)

NAME ^

Finnigan::Scan::Profile -- a lightweight decoder for Finnigan scan profiles

SYNOPSIS use Finnigan; ^

  my $scan = Finnigan::Scan->decode(\*INPUT);
  my $profile = $scan->profile;
  $profile->set_converter( $converter ); # from ScanEvent
  my $bins = $profile->bins;
  my ($mz, $abundance) = @{$bins->[0]} # data in the first bin

DESCRIPTION ^

Finningan::Scan::Profile is a lightweight decoder for the Profile structure. It does not save the location and type information for the elements it decodes, nor does it provide element-level accessor methods. That makes it fast, at the cost of a slight reduction in convenience of access to the data.

It does not do file reads either, decoding part of the stream of profile chunks it receives as a constructor argument from the caller. Its full-featured equivalent, Finnigan::Profile, does a file read for every data element down to a single integer of floating-point number, which makes it very slow.

Finnigan::Scan::Profile is good for use in production-level programs that need extensive debugging. In a situation that calls for detailed exploration (e.g., a new file format), better use Finnigan::Peaks, which has an equivalent interface.

Every scan done in the profile mode has a profile, which is either a time-domain signal or a frequency spectrum accumulated in histogram-like bins.

A profile can be either raw or filtered. Filtered profiles are sparse; they consist of separate data chunks. Each chunk consists of a contiguous range of bins containing the above-threshold signal. The bins whose values fall below a cerain threshold are simply discarded, leaving gaps in the profile -- the reason for the ProfileChunk structure to exist.

One special case is raw profile, which preserves all data. Since there are no gaps in a raw profile, it is represented by a single chunk covering the entire range of bins, so the same container structure is suitable for complete profiles, as well as for sparse ones.

The bins store the signal intensity, and the bin co-ordinates are typically the frequencies of Fourier-transformed signal. Since the bins are equally spaced in the frequency domain, only the first bin frequency is stored in each profile header. The bin width is common for all bins and it is also stored in the same header. With these data, it is possible to calculate the bin values based on the bin indices.

The programs reading these data must convert the frequencies into the M/z values using the conversion function specific to the type of analyser used to acquire the signal. The calibrated coefficients for this convesion function are stored in the ScanEvent structure (one instance of this structure exists for every scan).

The bins method of Finnigan::Scan::Profile returns the converted bins, optionally filling the gaps with zeroes.

METHODS

new($buffer, $layout)

The constructor method

nchunks

Get the number of chunks in the profile

set_converter($func_ref)

Set the converter function (f → M/z)

set_inverse_converter($func_ref)

Set the inverse converter function (M/z → f)

bins

Get the reference to an array of bin values. Each array element contains an (M/z, abundance) pair. This method calls the converter set by the set_converter method.

find_peak_intensity($query_mz)

Get the nearest peak in the profile for a given query value. The search will fail if nothing is found within 0.025 kHz of the target value (the parameter set internally as $MAX_DIST). This method supports the search for precursor intensity in uf-mzxml.

SEE ALSO ^

Profile (structure)

ProfileChunk (structure)

Finnigan::Scan::ProfileChunk (lightweight decoder)

Finnigan::PacketHeader (decoder object)

Finnigan::Profile (full-featured decoder)

Finnigan::Scan (lightweight decoder)

ScanEvent (structure containing conversion coefficients)

Finnigan::ScanEvent (decoder object)

uf-scan (command-line tool)

NAME ^

Finnigan::Scan::ProfileChunk -- a lightweight decoder for a single ProfileChunk structure

SYNOPSIS ^

  use Finnigan;

  my $chunk = new Finnigan::Scan::ProfileChunk($buffer, $offset, $packet_header->layout);
  $offset += $chunk->{size};

  say $chunk->{"first bin"} ;
  say $chunk->{fudge};
  my $nbins = $chunk->{nbins};
  foreach my $i ( 0 .. $nbins - 1) {
    say $chunk->signal->[$i];
  }

DESCRIPTION ^

Finningan::Scan::ProfileChunk is a lightweight decoder for the ProfileChunk structure, a segment of a Profile. It does not save the location and type information for the individual list elements, nor does it provide element-level accessor methods. That makes it fast, at the cost of a slight reduction in convenience of access to the data.

It does not do file reads either, decoding part of the stream of profile chunks it receives as a constructor argument from the caller. Its full-featured equivalent, Finnigan::Peaks, does a file read for every data element down to a single integer of floating-point number, which makes it very slow.

Finnigan::Scan::ProfileChunk is good for use in production-level programs that need extensive debugging. In a situation that calls for detailed exploration (e.g., a new file format), better use Finnigan::Peaks, which has an equivalent interface.

Every scan done in the profile mode has a profile, which is either a time-domain signal or a frequency spectrum accumulated in histogram-like bins.

A profile can be either raw or filtered. Filtered profiles are sparse; they consist of separate data chunks. Each chunk consists of a contiguous range of bins containing the above-threshold signal. The bins whose values fall below a cerain threshold are simply discarded, leaving gaps in the profile -- the reason for the ProfileChunk structure to exist.

One special case is raw profile, which preserves all data. Since there are no gaps in a raw profile, it is represented by a single chunk covering the entire range of bins, so the same container structure is suitable for complete profiles, as well as for sparse ones.

The bins store the signal intensity, and the bin co-ordinates are typically the frequencies of Fourier-transformed signal. Since the bins are equally spaced in the frequency domain, only the first bin frequency is stored in each profile header. The bin width is common for all bins and it is also stored in the same header. With these data, it is possible to calculate the bin values based on the bin indices.

Each ProfileChunk structure stores the first bin index, the number of bins, and a list of bin intensities. Additionally, in some layouts, it stores a small floating-point value that most probably represents the instrument drift relative to its calibrated value; this "fudge" value is added to the result of the the frequency to M/z conversion. The chunk layout (the presence or absence of the fudge value) is determined by the layout flag in PacketHeader.

METHODS

new($buffer, $offset, $layout)

The constructor method

This module defines no accessor method because doing so would defeat its goal of being a fast decoder.

NAME ^

Finnigan::Scan::CentroidList -- a lightweight decoder for PeakList, the list of peak centroids

SYNOPSIS ^

  use Finnigan;

  my $c = Finnigan::Scan::CentroidList->new($buffer);
  say $c->count;
  say $c->list->[0]->[0]; # M/z
  say $c->list->[0]->[1]; # abundance

DESCRIPTION ^

This simple and lightweight decoder for the PeakList structure does not save the location and type information for the individual list elements, nor does it provide element-level accessor methods. That makes it fast, at the cost of a slight reduction in convenience of access to the data.

It does not do file reads either, decoding the stream of floating-point numbers it receives as a constructor argument into an array of (M/z, abundance) pairs. Its full-featured equivalent, Finnigan::Peaks, does a file read for each peak, which makes it very slow.

It is good for use in production-level programs that do not need extensive debugging. In a situation that calls for detailed exploration (e.g., a new file format), better use Finnigan::Peaks, which has an equivalent interface.

METHODS

new($buffer)

The constructor method

count

Get the number of peaks in the list

list

Get the reference to an array containing the pairs of (M/z, abundance) values of each centroided peak

SEE ALSO ^

Finnigan::Scan: (lightweight decoder object)

Finnigan::PacketHeader (decoder object)

AUTHOR ^

Gene Selkov, <selkovjr@gmail.com>

COPYRIGHT AND LICENSE ^

Copyright (C) 2010 by Gene Selkov

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.10.0 or, at your option, any later version of Perl 5 you may have available.

syntax highlighting: