MeltDBWiki/ListAnnotations

From BRF-Software
Jump to: navigation, search

List Peak Annotations


#!/usr/bin/env perl

use strict;
use warnings;

use GPMS::Application_Frame::MELTDB;
use strict;
use Carp;
use Getopt::Std;
use Term::ReadKey;
use IO::Handle;


#  this is necessary if the script is started via rsh(1)
#  otherwise you won't see any output until the first <RETURN>
#
STDOUT->autoflush(1);

sub usage {
    print "list latest peak annotation of a chromatogram in MeltDB.".
	"-p project name\n".
	"-c chromatogram name\n";
}

# global variables
our($opt_p, $opt_c);
			   
getopts('p:c:');

# start sanity checks
if (!$opt_p) {
    usage;
    print "ERROR: Can't start script list_peak_annotations: No project name given!\n";
    exit 1;
};

# start sanity checks
if (!$opt_c) {
    usage;
    print "ERROR: Can't start script list_peak_annotations: No chromatogram name given!\n";
    exit 1;
};

my $usr = defined( $ENV{'LOGNAME'} ) ? $ENV{'LOGNAME'} : (getpwuid( $> ))[0];

print STDOUT "Enter your database password: ";
ReadMode('noecho');
my $password = ReadLine(0);
chomp $password;
print STDOUT "\n";
ReadMode('normal');

# initialize project
my $app_frame = GPMS::Application_Frame::MELTDB->new($usr,
						    $password);

unless(ref $app_frame){
    print "Error, could not connect to database, wrong password?\n";
    exit 1;
}

my $project_name = $opt_p;

unless($app_frame->project($project_name)){
    print "Error, could not init project $project_name\n";
    exit 1;
}

# initialize MeltDB master 
my $master = $app_frame->application_master();

# initialize MeltDB Chromatogram object
my $chromatogram = $master->AC->Chromatogram->init_name($opt_c);

unless(ref $chromatogram && $chromatogram->isa("MELT::DB::AC::Chromatogram")) {
    print "Error, could not initialize $opt_c!\n";
    exit 1;
}

# generating the output

print "Retention Time\tAnnotation\n";


# fetch all peaks and sort them by retention time
foreach my $peak (sort {$a->rt <=> $b->rt()} @{$master->Peak->fetchallby_chromatogram($chromatogram)}) {
    my $latest_anno = $peak->latest_annotation();
    # only peaks with annotations will be listed
    if (ref $latest_anno && $latest_anno->isa("MELT::DB::Annotation")) {
	print $peak->rt(), "\t", $latest_anno->description(), "\n";
    }
}

 



Retention Time  Annotation
483.17202       Xcalibur annotation: Pyruvat(174)
556.99998       Xcalibur annotation: Alanin(116)
730.24998       Xcalibur annotation: Valin(144)
799.578         Xcalibur annotation: Urea(189)
823.45302       Xcalibur annotation: Leucin(158)
....
 
Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox