[Bio] / FigKernelScripts / check_sims_basic.pl Repository:
ViewVC logotype

Diff of /FigKernelScripts/check_sims_basic.pl

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1, Sun May 30 06:22:40 2004 UTC revision 1.5, Mon Apr 18 20:08:15 2005 UTC
# Line 1  Line 1 
1  $usage = "usage: check_sims_basic NR < sims > checked.sims 2> errors";  # -*- perl -*-
2    
3  ($nr = shift @ARGV)  $SIG{HUP} = 'ignore';
4    
5    use FIG;
6    use File::Path;
7    use File::Basename;
8    
9    $usage = "usage: check_sims_basic [-delint_dir=Dir] [-logfile=log] NR [ < sims | - | SimsDir | Sims1 Sims2 Sims3 ...] > checked.sims [2> errors (recommended if a logfile isn't specified)]";
10    
11    $outdir  = "";
12    $logfile = "";
13    $trouble = 0;
14    for ($i=0; $i < @ARGV; )
15    {
16        if ($ARGV[$i] =~ m/-delint_dir=(\S+)/)
17        {
18            $outdir = $1;
19            splice @ARGV, $i, 1;
20            if (-d $outdir)
21            {
22                $trouble = 1;
23                warn "$outdir exists";
24            } else {
25                mkpath($outdir, 0, 0777) || die "Could not create $outdir";
26            }
27        }
28        elsif ($ARGV[$i] =~ m/-logfile=(\S+)/)
29        {
30            $logfile = $1;
31            splice @ARGV, $i, 1;
32            open($logfh, ">$logfile") || die "Could not open $logfile";
33        }
34        elsif (-s $ARGV[$i]) {
35            ++$i;
36        }
37        else {
38            $trouble = 1;
39            print STDERR "Invalid arg $ARGV[$i]\n";
40            ++$i;
41        }
42    }
43    die "aborting due to invalid args" if ($trouble);
44    
45    (($nr = shift @ARGV) && (-s $nr))
46      || die $usage;      || die $usage;
47    
48  open(NR,"<$nr") || die $usage;  if (@ARGV == 0)
49    {
50        if (-t STDIN)
51        {
52            push @ARGV, '-';
53        }
54        else
55        {
56            print STDERR "No arguments given --- checking $FIG_Config::data/Sims by default\n";
57            push @ARGV, "$FIG_Config::data/Sims";
58        }
59    }
60    
61    if ((@ARGV == 1) && (-d $ARGV[0]))
62    {
63        $sims_dir = shift @ARGV;
64        opendir(SIMS, $sims_dir) || die "Could not open $sims_dir";
65        @ARGV = grep !/^\./, readdir(SIMS);
66        @ARGV = map  { $_ = "$sims_dir/$_" } @ARGV;
67        closedir(SIMS) || die "Could not close $sims_dir";
68    }
69    
70    $trouble = 0;
71    foreach $file (@ARGV)
72    {
73        next if ($file eq '-');
74        if (!-e $file) { print STDERR "Simfile $file does not exist"; $trouble = 1; }
75    }
76    die "There were nonexistent input files" if $trouble;
77    
78    unless ($logfile) { $logfh = \*STDERR; }
79    unless ($outdir)  { $outfh = \*STDOUT; }
80    
81  $/ = "\n>";  opendir(ORGS, "$FIG_Config::organisms") || die "Could not open dir $FIG_Config::organisms";
82  while (defined($_ = <NR>))  @env = grep s{^(9999999\.\d+)}{$FIG_Config::organisms/$1/Features/peg/fasta}, readdir(ORGS);
83    closedir(ORGS) || die "Could not close dir $FIG_Config::organisms";
84    
85    foreach $file ($nr, @env)
86  {  {
87      chomp;      open(TMP, "<$file") || die "Could not read-open $file";
88      if ($_ =~ /^>?(\S+)[^\n]*\n(.*)/s)      print STDERR "Loading lengths from $file ...\n" if $ENV{FIG_VERBOSE};
89        while (($id, $seqP) = &FIG::read_fasta_record(\*TMP))
90      {      {
91          $id  =  $1;          $ln{$id} = length($$seqP);
         $seq =  $2;  
         $seq =~ s/\s//gs;  
         $ln{$id} = length($seq);  
92      }      }
93  }  }
 $/ = "\n";  
 close(NR);  
94    
95  while (defined($_ = <STDIN>))  
96    foreach $simfile (@ARGV)
97  {  {
98      chomp;    # $/)      print STDERR "Processing $simfile\n" if $ENV{FIG_VERBOSE};
99      if ($_ =~ m/^\S+\t\S+\t(\d+|\d+\.\d+)(\t\d+){7}\t(\d+(\.\d*)?e[-+]?\d+|\d+\.\d+)\t(\d\.\d*e[-+]?\d+|\d+\.\d+|\d+)/)  
100        open(SIMFILE, "<$simfile") || die "Could not open $simfile";
101        if ($outdir)
102      {      {
103          # print STDERR "$1\t$2\t$3\t$4\t$5\t$6\n";          $outfile  = "$outdir/" . basename($simfile);
104          ($id1,$id2,$iden,$ali_ln,$mis,$gaps,$b1,$e1,$b2,$e2,$psc,$bsc,$ln1,$ln2) =          open($outfh, ">$outfile") || die "could not write-open $outfile";
105              split(/\t/,$_);      }
106    
107        while (defined($sim = <SIMFILE>))
108        {
109            chomp $sim;
110    
111            if ($sim =~ m/^(\S+)\t(\S+)\t(\d+|\d+\.\d+)\t\d+\t\d+\t\d+\t\d+\t\d+\t\d+\t\d+\t(\d+(\.\d*)?e[-+]?\d+|\d+\.\d+)\t(\d\.\d*e[-+]?\d+|\d+\.\d+|\d+)\t(\d+)\t(\d+)/o)
112            {
113                # die "$1, $2, $3, $4, $5, $6, $7, $8, $9\n";
114                ($id1, $id2, $ln1, $ln2) = ($1, $2, $7, $8);
115                # die "$id1, $id2, $ln1, $ln2";
116    
117          if ($ln{$id1} && $ln{$id2} && ($ln{$id1} == $ln1) && ($ln{$id2} == $ln2))          if ($ln{$id1} && $ln{$id2} && ($ln{$id1} == $ln1) && ($ln{$id2} == $ln2))
118          {          {
119              print "$_\n";                  print $outfh "$sim\n";   #...print valid sims to OUTPUT
120          }          }
121          else          else
122          {          {
123              if ($ln{$id1})              if ($ln{$id1})
124              {              {
125                  if ($ln{$id1} != $ln1) { print STDERR "badlen1\t$id1\t$ln{$id1}\t$ln1\t$_\n"; }                      if ($ln{$id1} != $ln1) { print $logfh "badlen1\t$simfile, $.:\t$id1\t$ln{$id1}\t$ln1\t$sim\n"; }
126              }              }
127              else              else
128              {              {
129                  print STDERR "undef1\t$id1\t\t\t$_\n";                      print $logfh "undef1\t$simfile, $.:\t$id1\t\t\t$sim\n";
130              }              }
131    
132              if ($ln{$id2})              if ($ln{$id2})
133              {              {
134                  if ($ln{$id2} != $ln2) { print STDERR "badlen2\t$id2\t$ln{$id2}\t$ln2\t$_\n"; }                      if ($ln{$id2} != $ln2) { print $logfh "badlen2\t$simfile, $.:\t$id2\t$ln{$id2}\t$ln2\t$sim\n"; }
135              }              }
136              else              else
137              {              {
138                  print STDERR "undef2\t$id2\t\t\t$_\n";                      print $logfh "undef2\t$simfile, $.:\t$id2\t\t\t$sim\n";
139              }              }
140          }          }
141      }      }
142      else      else
143      {      {
144          print STDERR "INVALID FORMAT: $_\n";              print $logfh "INVALID FORMAT\t$simfile, $.:\t$sim\n";
145            }
146      }      }
147  }  }

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.5

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3