#!/usr/bin/env perl
use
5.010;
my
$option_help
= 0;
my
$option_man
= 0;
my
$option_dump
= 0;
my
$option_html
= 0;
my
$option_wiki
= 0;
my
$option_size
= 0;
my
$option_si
= 0;
my
$option_relative
= 0;
Getopt::Long::Configure (
"bundling"
);
GetOptions(
'help|?'
=> \
$option_help
,
'man'
=> \
$option_man
,
'dump|d'
=> \
$option_dump
,
'size|s'
=> \
$option_size
,
'html|h'
=> \
$option_html
,
'wiki|w'
=> \
$option_wiki
,
'sample_info|i'
=> \
$option_si
,
'relative|r'
=> \
$option_relative
,
) or pod2usage(2);
pod2usage(1)
if
$option_help
;
pod2usage(
-existstatus
=> 0,
-verbose
=> 2)
if
$option_man
;
@ARGV
== 1 or
do
{
say
STDERR
"Expecting a single input file\n"
; pod2usage(2) };
my
$file
=
shift
@ARGV
;
-e
$file
or
die
"file '$file' does not exist"
;
-f
$file
or
die
"'$file' is not a plain file"
;
-s
$file
or
die
"'$file' has zero size"
;
open
INPUT,
"<$file"
or
die
"can't open '$file': $!"
;
binmode
INPUT;
my
$header
= Finnigan::FileHeader->decode(\
*INPUT
);
my
$seq_row
= Finnigan::SeqRow->decode(\
*INPUT
,
$header
->version);
my
$cas_info
= Finnigan::CASInfo->decode(\
*INPUT
);
my
$rfi
= Finnigan::RawFileInfo->decode(\
*INPUT
,
$header
->version);
my
$run_header_addr
=
$rfi
->preamble->run_header_addr;
seek
INPUT,
$run_header_addr
, 0;
my
$run_header
= Finnigan::RunHeader->decode(\
*INPUT
,
$header
->version);
if
(
$option_size
) {
if
(
$option_si
) {
say
"size: "
.
$run_header
->sample_info->size;
}
else
{
say
"size: "
.
$run_header
->size;
}
}
if
(
$option_dump
) {
if
(
$option_html
) {
if
(
$option_si
) {
$run_header
->sample_info->
dump
(
style
=>
'html'
,
relative
=>
$option_relative
);
}
else
{
$run_header
->
dump
(
style
=>
'html'
,
relative
=>
$option_relative
);
}
}
elsif
(
$option_wiki
) {
if
(
$option_si
) {
$run_header
->sample_info->
dump
(
style
=>
'wiki'
,
relative
=>
$option_relative
);
}
else
{
$run_header
->
dump
(
style
=>
'wiki'
,
relative
=>
$option_relative
);
}
}
else
{
if
(
$option_si
) {
$run_header
->sample_info->
dump
(
relative
=>
$option_relative
);
}
else
{
$run_header
->
dump
(
relative
=>
$option_relative
);
}
}
}
else
{
say
"$file: "
.
"scan range: ["
.
$run_header
->sample_info->low_mz .
".."
.
$run_header
->sample_info->high_mz .
"]; "
.
"scan numbers: ["
.
$run_header
->sample_info->first_scan .
".."
.
$run_header
->sample_info->last_scan .
"]; "
.
"number of segments: "
.
$run_header
->nsegs .
"; "
.
"inst. status samples: "
.
$run_header
->sample_info->inst_log_length .
"; "
.
"max. ion current: "
.
$run_header
->sample_info->max_ion_current .
"; "
.
"retention time: ["
.
$run_header
->sample_info->start_time .
".."
.
$run_header
->sample_info->end_time .
"]; "
.
"ntrailer: "
.
$run_header
->ntrailer .
"; "
.
"nparams: "
.
$run_header
->nparams .
"; "
.
"unknown[1]: "
.
$run_header
->u1 .
"; "
.
"unknown[2]: "
.
$run_header
->u2 .
"; "
;
}