MeltDBWiki/ListAnnotations

From BRF-Software
Revision as of 12:32, 4 April 2008 by imported>HeikoNeuweger
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

ListAnnotations

  • This sample script will connect to your MeltDB Server and print all annotations associated to Peaks in your chromatogram.



#!/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;
use Data::Dumper;



#  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;
}

my $master = $app_frame->application_master();
my $chromatogram = $master->AC->Chromatogram->init_name($opt_c);

unless(ref $chromatogram){
    print "Error, could not $opt_c!\n";
    exit 1;
}

print "Retention Time\tAnnotation\n";

foreach my $peak (@{$master->Peak->fetchallby_chromatogram($chromatogram)}) {

    my $latest_anno = $peak->latest_annotation();
    
    if (ref $latest_anno && $latest_anno->isa("MELT::DB::Annotation")) {
	print $peak->rt(), "\t", $latest_anno->description(), "\n";
    }

}


The output of the script consists of two tab separated columns, the first gives the Retention Time of the peak in seconds and the second columns contains the Description of the latest annotation.


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)
....