next up previous contents index
Next: Bibliography Up: 8 Appendix Previous: 8.1 Example httpd.conf for   Contents   Index


8.2 Sample perl script

This sample Perl script is for submitting searches to a local wwwblast setup

#!/usr/bin/perl

use URI::Escape;

use LWP::Simple;

#

# usage: www_blast2.pl config_file

#

# Sample input config_file format for www_blast2.pl:

# --cut content between this and the -end line --

# query|cross_sp1.faa

# db|refseq_protein

# program|blastp

# expect|0.01

# filter|L

# view|9

# output_file|www_cross_sp1.output

# --end--

# query specifies input query sequence file

# db specifies the target database

# program specifies the program to use

# expect specifies the expect value cutoff

# filter specifies what filter string to use

# view specifies the alignment view

# output_file specifies the file result is to be saved in

#

my %params;

my ($seq, $query, $db, $program, $result, $output );

%params = read_params();

print "Read parameters. Getting sequences ... \n";

$seq = read_fasta (%params);

$params{'query'} = $seq;

print "Got fasta query. Sending it to search ...\n";

$result = put_url(%params);

$output = $params{"output_file"};

open (OUT, ">$output") || die "Cannot open $output: $!\n";

print OUT $result; close (OUT);

print "Done, output in $output\n";

#**********************************************************

# Reads input parameters from file supplied on command line

# Input file must have lines of the following format:

# parameter|value

# where parameter is the URL parameter name and value is the

# value to be assigned to parameter

# Output: %params; keys are parameter names, values are values

# Example: $params{'program'} = 'blastp'

#

sub read_params {

my ($param, $value);

my %params;

#

#check for correct command line syntax

#

if ($#ARGV != 0) { die "Usage: www_blast2.pl input_file\n"; }

#

#read input parameter file

#

open(INPUT, "<$ARGV[0]") || die "Aborting. Can't open $ARGV[0]\n";

while (<INPUT>) {

chomp;

($param, $value) = split(/\|/);

print STDERR "$param\t$value\n";

$params{$param} = $value;

print STDERR "$param\t$params{'program'}\n";

}

close INPUT; return (%params);

}

#**********************************************************

# reads fasta sequence from $params{'input_file'}

# each sequence is stored as an element in @seqs returns @seqs

#

sub read_fasta {

my %params = @_;

my ($seq, $file);

$file = $params{"query"};

open (INPUT, "<$file") || die "Can't open $file: $! \n";

while (<INPUT>) {

next if (/^\s*$/); #skips blank lines in the query file

$seq .= $_;

}

close(INPUT);

$seq = uri_escape ($seq);

return($seq);

}

#**********************************************************

# posts a single BLAST Put URL using the parameters in %params

# returns the result in required format.

#

sub put_url {

my %params = @_;

my ($base, $url, $result);

#for my $i( keys %params){

print STDERR "$i, $params{$i}\n"}

$base = "http://localhost/blast/blast.cgi?";

#

#The based URL for your setup may be different from this

#

$url = $base."PROGRAM=".$params{'program'}."&DATABASE=".$params{'db'}."&EXPECT=";

$url .= $params{"expect"}."&FILTER=".$params{"filter"}."&QUERY=".$params{"query"};

$url .= "&ALIGNMENT_VIEW=". $params{"view"};

$result = get ($url);

return $result;

}


next up previous contents index
Next: Bibliography Up: 8 Appendix Previous: 8.1 Example httpd.conf for   Contents   Index
Tao Tao 2006-12-04