source: branches/profile/PERL_SCRIPTS/SAI/SAI_demo.pl

Last change on this file was 4070, checked in by westram, 18 years ago
  • show how to use SAI.pm
  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 1.8 KB
Line 
1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
6BEGIN {
7  if (not exists $ENV{'ARBHOME'}) { die "Environment variable \$ARBHOME has to be defined"; }
8  my $arbhome = $ENV{'ARBHOME'};
9  push @INC, "$arbhome/lib";
10  push @INC, "$arbhome/PERL_SCRIPTS/GENOME";
11  1;
12}
13
14use ARB;
15use SAI;
16
17# -----------------------
18
19sub expectEntry($$) {
20  my ($gb_father,$key) = @_;
21  my $gb = ARB::search($gb_father, $key, 'NONE');
22  defined $gb || die "Expected entry '$key' in '".ARB::get_db_path($gb_father)."'";
23  return $gb;
24}
25
26# -----------------------
27
28SAI::connectDB();
29
30my @SAI = ();
31SAI::scanSAIs(@SAI);
32
33print "SAIs in current database:\n";
34foreach (@SAI) {
35  print "- $_\n";
36}
37
38my $sai_name = 'POS_VAR_BY_PARSIMONY';
39my $gb_posvar = SAI::findSAI($sai_name);
40if ($gb_posvar) {
41  print "Details for SAI '$sai_name':\n";
42
43  my @alis = ();
44  SAI::getSAIalignments($gb_posvar,@alis);
45
46  print "- Contains information for the following alignments:\n";
47  foreach my $ali (@alis) {
48    print "  - $ali\n";
49    my $gb_ali = expectEntry($gb_posvar, $ali);
50
51    my $gb_cat = expectEntry($gb_ali, '_CATEGORIES');
52    my $cat    = ARB::read_string($gb_cat);
53    print "    cat='$cat'\n";
54
55    my $gb_data = expectEntry($gb_ali, 'data');
56    my $data = ARB::read_string($gb_data);
57    # print "    data='$data'\n";
58    print "    data contains ".length($data)." characters.\n";
59
60    my $gb_freqs = expectEntry($gb_ali, 'FREQUENCIES');
61    my @freq_entries = ( 'NA', 'NC', 'NG', 'NU');
62    foreach my $fentry (@freq_entries) {
63      my $gb_f = expectEntry($gb_freqs, $fentry);
64      my @values = ();
65      SAI::readIntegerArray($gb_f,@values);
66      print "    $fentry contains ".scalar(@values)." integer values, ";
67      my $sum = 0;
68      foreach (@values) { $sum += $_; }
69      print "    $fentry sum is $sum\n";
70    }
71  }
72}
73else {
74  print "No such SAI '$sai_name'\n";
75}
76
77SAI::disconnectDB();
78
Note: See TracBrowser for help on using the repository browser.