NAME

Finnigan::OLE2File -- a decoder for Microsoft structured data files (OLE2 a.k.a. CDF)

SYNOPSIS

use Finnigan;
my $container = Finnigan::OLE2File->decode(\*INPUT);
my $analyzer_method_text = $container->find("LTQ/Text")->data;

DESCRIPTION

Thermo uses the Microsoft OLE2 container to store the instrument method files. This container has a hirerachical structure based on a FAT filesystem. It seems like there are always two levels of hierarchy used in the method container: one directory node for each istrument, each directory containing one to three leaf nodes (files) named Data, Text, or Header. The Header file exists only in the first directory corresponding to the mass analyser. Other directories contain either Text and Data, or just Data. It seems like Text is simply a human-readable representation of Data, but this conjectures has not been verified because the structure of the Data files remains unknown.

Finnigan::OLE2File decodes the container structure and allows the extraction of the leaf nodes -- Header, Data, and Text.

METHODS

decode($stream)

The constructor methad

list

Prints the directory listing of the entire OLE2 container to STDOUT. A typical output may look like this:

LTQ 
  Data (7512 bytes)
  Text (9946 bytes)
  Header (1396 bytes)

EksigentNanoLcCom_DLL 
  Data (2898 bytes)
  Text (1924 bytes)

NanoLC-AS1 Autosampler 
  Data (154 bytes)

EksigentNanoLc_Channel2 
  Data (3028 bytes)
  Text (2398 bytes)

This method is not useful as part of the API (directory listings are better understood by humans). But once the path to a node is known, it can be retrieved with the find method.

find($path)

Get the directory entry (Finnigan::OLE2DirectoryEntry) matching the path supplied in the only argument. The directory entry's data method needs to be called in order to extract the node data.

stringify

Make a short string representation of the object, naming the file type and the number of nodes it contains

PRIVATE METHODS

dif
fat
get_chain
magic
read
sector_size
seek_block
stream

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.