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

View of /FigKernelScripts/LigandCleanup.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.2 - (download) (as text) (annotate)
Tue Feb 5 02:47:15 2008 UTC (11 years, 9 months ago) by parrello
Branch: MAIN
CVS Tags: mgrast_dev_08112011, rast_rel_2009_05_18, mgrast_dev_08022011, rast_rel_2014_0912, rast_rel_2008_06_18, myrast_rel40, rast_rel_2008_06_16, mgrast_dev_05262011, rast_rel_2008_12_18, mgrast_dev_04082011, rast_rel_2008_07_21, rast_rel_2010_0928, rast_2008_0924, mgrast_version_3_2, mgrast_dev_12152011, rast_rel_2008_04_23, mgrast_dev_06072011, rast_rel_2008_09_30, rast_rel_2009_0925, rast_rel_2010_0526, rast_rel_2014_0729, mgrast_dev_02212011, rast_rel_2010_1206, mgrast_release_3_0, mgrast_dev_03252011, rast_rel_2010_0118, mgrast_rel_2008_0924, mgrast_rel_2008_1110_v2, rast_rel_2009_02_05, rast_rel_2011_0119, mgrast_rel_2008_0625, mgrast_release_3_0_4, mgrast_release_3_0_2, mgrast_release_3_0_3, mgrast_release_3_0_1, mgrast_dev_03312011, mgrast_release_3_1_2, mgrast_release_3_1_1, mgrast_release_3_1_0, mgrast_dev_04132011, rast_rel_2008_10_09, mgrast_dev_04012011, rast_release_2008_09_29, mgrast_rel_2008_0806, mgrast_rel_2008_0923, mgrast_rel_2008_0919, rast_rel_2009_07_09, rast_rel_2010_0827, mgrast_rel_2008_1110, myrast_33, rast_rel_2011_0928, rast_rel_2008_09_29, mgrast_rel_2008_0917, rast_rel_2008_10_29, mgrast_dev_04052011, mgrast_dev_02222011, rast_rel_2009_03_26, mgrast_dev_10262011, rast_rel_2008_11_24, rast_rel_2008_08_07, HEAD
Changes since 1.1: +0 -2 lines
Removed obsolete use clases.

#!/usr/bin/perl -w

=head1 Ligand Docking Results Fixup

This script will fix up the ligand docking results files, replacing
the MacIntosh line-ends with Unix line-ends and sorting then with
the lowest binding energy at the top. The positional parameters are
the names of the files to process. Each file is copied to a temporary
location and the line-endings are fixed. Then it is copied back over the
original location after sorting.

The currently-supported command-line options are as follows.

=over 4

=item user

Name suffix to be used for log files. If omitted, the PID is used.

=item trace

Numeric trace level. A higher trace level causes more messages to appear. The
default trace level is 2. Tracing will be directly to the standard output
as well as to a C<trace>I<User>C<.log> file in the FIG temporary directory,
where I<User> is the value of the B<user> option above.

=item sql

If specified, turns on tracing of SQL activity.

=item background

Save the standard and error output to files. The files will be created
in the FIG temporary directory and will be named C<err>I<User>C<.log> and
C<out>I<User>C<.log>, respectively, where I<User> is the value of the
B<user> option above.

=item h

Display this command's parameters and options.

=item phone

Phone number to message when the script is complete.

=item noSort

If specified, the file will be cleaned but not sorted.

=back

=cut

use strict;
use Tracer;
use Cwd;
use File::Copy;
use File::Path;
use FIG;

# Get the command-line options and parameters.
my ($options, @parameters) = StandardSetup([qw() ],
                                           {
                                              noSort => ["", "if specified, the line endings will be cleaned but no sort will be performed"],
                                              trace => ["2", "trace level"],
                                              phone => ["", "phone number (international format) to call when load finishes"],
                                           },
                                           "<fileName1> <fileName2> ... <fileNameN>",
                                           @ARGV);
# Set a variable to contain return type information.
my $rtype;
# Insure we catch errors.
eval {
    # Compute our temporary file name.
    my $tempName = "$FIG_Config::temp/DrugCleanup$$.tbl";
    # Loop through the file names.
    for my $fileName (@parameters) {
        if (! -f $fileName) {
            Trace("Warning: file \"$fileName\" not found.") if T(1);
        } else {
            Open(\*DIRTYIN, "<$fileName");
            Open(\*CLEANOUT, ">$tempName");
            # Read through the original file, converting the line-endings from to \n.
            Trace("Cleaning $fileName to $tempName.") if T(2);
            while (defined(my $line = <DIRTYIN>)) {
                # Trim the real line ending.
                chomp $line;
                # Split at each "\r". If the file is from Windows, this will
                # simply chop off the \r at the end. If it's from the
                # Macintosh, the entire file will have been pulled in as a single
                # line and we'll split into the lines they should be.
                my @lines = grep { $_ } split /\r/, $line;
                for my $realLine (@lines) {
                    print CLEANOUT "$realLine\n";
                }
            }
            close DIRTYIN;
            close CLEANOUT;
            # Now our temporary file is a legitimate Unix-style tab-delimited text
            # file. We read it back in and put it to the original location after a sort.
            Open(\*CLEANIN, "<$tempName");
            if ($options->{noSort}) {
                Open(\*SORTOUT, ">$fileName");
            } else {
                Open(\*SORTOUT, "| sort -k2g -t\"\t\" >$fileName");
            }
            my $count = 0;
            while (defined(my $line = <CLEANIN>)) {
                $count++;
                print SORTOUT $line;
            }
            Trace("$count lines written to $fileName.") if T(2);
            # Close the files. This will finish the sort.
            close CLEANIN;
            close SORTOUT;
            Trace("$fileName converted.") if T(2);
        }
    }
    # Now we've processed all the file names.
    Trace("Cleaning up.") if T(2);
    unlink $tempName;
    Trace("Processing complete.") if T(2);
};
if ($@) {
    Trace("Script failed with error: $@") if T(0);
    $rtype = "error";
} else {
    Trace("Script complete.") if T(2);
    $rtype = "no error";
}
if ($options->{phone}) {
    my $msgID = Tracer::SendSMS($options->{phone}, "Ligand Docking Results Fixup terminated with $rtype.");
    if ($msgID) {
        Trace("Phone message sent with ID $msgID.") if T(2);
    } else {
        Trace("Phone message not sent.") if T(2);
    }
}



1;

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3