Finnigan::ScanIndexEntry -- a decoder for ScanIndexEntry, a linked list element pointing to scan data
use Finnigan; my $entry = Finnigan::ScanIndexEntry->decode(\*INPUT, $VERSION); say $entry->offset; # returns an offset from the start of scan data stream say $entry->data_size; $entry->dump;
ScanIndexEntry is a static (fixed-size) structure containing the pointer to a scan, the scan's data size and some auxiliary information about the scan.
Scan Index elements seem to form a linked list. Each ScanIndexEntry contains the index of the next entry.
Although in all observed instances the scans were sequential and their indices could be ignored, it may not always be the case.
It is not clear whether scan index numbers start at 0 or at 1. If they start at 0, the list link index must point to the next item. If they start at 1, then "index" will become "previous" and "next" becomes "index" -- the list will be linked from tail to head. Although observations are lacking, I am inclined to interpret it as a forward-linked list, simply from common sense.
Note: The "current/next" theory of the two ordinal numbers in this structure may be totally wrong. It may just be that one of these numbers is the 0-base index (0 .. n -1), and the other is 1-based: (1 .. n). It is suspicious that in the last entry in every stream, the "next" value is not null, it simply n.
The constructor method
Get the address of the corresponding ScanDataPacket relative to the start of the data stream
Get this element's index (a valid assumption if the scan data indices start at 0, otherwise this is the previous element's index)
Get the next element's index(a valid assumption if the scan data indices start at 0, otherwise this is the current element's index)
Get the index of this element's ScanEventTemplate in the current scan segment
Get the index of this element's scan segment in Scan Event Hierarchy
Get the size of the ScanDataPacket this index element is pointing to
Get the current scan's start time
Get the scan's total current (a rough indicator of how many ions were scanned)
Get the intensity of the most abundant ion
Get the M/z value of the most abundant ion
Get the low end of the scan range
Get the high end of the scan range
Get the only unknown UInt32 stored in the index entry. Its value (or some bits in it) seem to correspond to the type of scan, but its interpretation is uncertain.
Gene Selkov, <email@example.com>
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.