[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.2, Sat Feb 5 02:07:14 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 File::Path;
6    use File::Basename;
7    
8    $usage = "usage: check_sims_basic [-delint_dir=Dir] [-logfile=log] NR [SimsDir | Sims1 Sims2 Sims3 ...] < sims > checked.sims [2> errors (recommended if a logfile isn't specified)]";
9    
10    $outdir  = "";
11    $logfh   = \*STDERR;
12    $trouble = 0;
13    for ($i=0; $i < @ARGV; )
14    {
15        if ($ARGV[$i] =~ m/-delint_dir=(\S+)/)
16        {
17            $outdir = $1;
18            splice @ARGV, $i, 1;
19            if (-d $outdir)
20            {
21                $trouble = 1;
22                warn "$outdir exists";
23            } else {
24                mkpath($outdir, 0, 0777) || die "Could not create $outdir";
25            }
26        }
27        elsif ($ARGV[$i] =~ m/-logfile=(\S+)/)
28        {
29            $logfile = $1;
30            splice @ARGV, $i, 1;
31            open(LOG, ">$logfile") || die "Could not open $logfile";
32            $logfh = \*LOG;
33        }
34        elsif (-s $ARGV[$i]) {
35            ++$i;
36        }
37        else {
38            print STDERR "Invalid arg $ARGV[$i]";
39            ++$i;
40        }
41    }
42    die "There were bad args" if ($trouble);
43    
44    (($nr = shift @ARGV) && (-s $nr))
45      || die $usage;      || die $usage;
46    
47    if  (@ARGV == 0) { push @ARGV, "$FIG_Config::data/Sims"; }
48    if ((@ARGV == 1) && (-d $ARGV[0]))
49    {
50        $sims_dir = shift @ARGV;
51        opendir(SIMS, $sims_dir) || die "Could not open $sims_dir";
52        @ARGV = grep !/^\./, readdir(SIMS);
53        @ARGV = map  { $_ = "$sims_dir/$_" } @ARGV;
54        closedir(SIMS) || die "Could not close $sims_dir";
55    }
56    
57    $trouble = 0;
58    foreach $file (@ARGV)
59    {
60        next if ($file eq '-');
61        if (!-e $file) { print STDERR "Simfile $file does not exist"; $trouble = 1; }
62    }
63    die "There were nonexistent input files" if $trouble;
64    
65  open(NR,"<$nr") || die $usage;  open(NR,"<$nr") || die $usage;
66    
67  $/ = "\n>";  $/ = "\n>";
# Line 20  Line 79 
79  $/ = "\n";  $/ = "\n";
80  close(NR);  close(NR);
81    
82  while (defined($_ = <STDIN>))  if ($outdir)
83    {
84        $file  = "$outdir/" . basename($ARGV[0]);
85        open(OUTPUT, ">$file") || die "could not write-open $file";
86        print STDERR "Opening $file" if $ENV{FIG_VERBOSE};
87        $outfh = \*OUTPUT;
88    }
89    else
90    {
91        $outfh = \*STDOUT;
92    }
93    
94    while (defined($_ = <>))
95  {  {
96      chomp;    # $/)      chomp;    # $/)
97      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+)/)      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+)/)
# Line 31  Line 102 
102    
103          if ($ln{$id1} && $ln{$id2} && ($ln{$id1} == $ln1) && ($ln{$id2} == $ln2))          if ($ln{$id1} && $ln{$id2} && ($ln{$id1} == $ln1) && ($ln{$id2} == $ln2))
104          {          {
105              print "$_\n";              print $outfh "$_\n";   #...print valid sims to OUTPUT
106          }          }
107          else          else
108          {          {
109              if ($ln{$id1})              if ($ln{$id1})
110              {              {
111                  if ($ln{$id1} != $ln1) { print STDERR "badlen1\t$id1\t$ln{$id1}\t$ln1\t$_\n"; }                  if ($ln{$id1} != $ln1) { print $logfh "badlen1\t$ARGV, $.:\t$id1\t$ln{$id1}\t$ln1\t$_\n"; }
112              }              }
113              else              else
114              {              {
115                  print STDERR "undef1\t$id1\t\t\t$_\n";                  print $logfh "undef1\t$ARGV, $.:\t$id1\t\t\t$_\n";
116              }              }
117    
118              if ($ln{$id2})              if ($ln{$id2})
119              {              {
120                  if ($ln{$id2} != $ln2) { print STDERR "badlen2\t$id2\t$ln{$id2}\t$ln2\t$_\n"; }                  if ($ln{$id2} != $ln2) { print $logfh "badlen2\t$ARGV, $.:\t$id2\t$ln{$id2}\t$ln2\t$_\n"; }
121              }              }
122              else              else
123              {              {
124                  print STDERR "undef2\t$id2\t\t\t$_\n";                  print $logfh "undef2\t$ARGV, $.:\t$id2\t\t\t$_\n";
125              }              }
126          }          }
127      }      }
128      else      else
129      {      {
130          print STDERR "INVALID FORMAT: $_\n";          print $logfh "INVALID FORMAT\t$ARGV, $.:\t$_\n";
131        }
132    }
133    continue
134    {
135        if (eof)
136        {
137    #...reset line-number to zero, so that we know which line of which file is bad...
138            close(ARGV) || warn "Could not close $ARGV";
139            print STDERR "Finished processing $ARGV\n\n" if $ENV{FIG_VERBOSE};
140    
141            if ($outdir && $ARGV)
142            {
143                $file  = "$outdir/" . basename($ARGV[0]);
144                open(OUTPUT, ">$file") || die "could not write-open $file";
145                print STDERR "Opening $file" if $ENV{FIG_VERBOSE};
146                $outfh = \*OUTPUT;
147            }
148      }      }
149  }  }

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

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3