##
#!/usr/bin/perl -w
use strict;
use CGI;
use Fcntl qw(:DEFAULT :flock);
#SUB error needs to be completed
print "Content-type:text/html\n\n";
#Declaring constants
use constant UPLOAD_DIR => "/tmp/";
use constant MAX_FILE_SIZE => 1_048_576; #Limit each upload to 1MB
use constant MAX_OPEN_TRIES => 100;
use constant BUFFER_SIZE => 16_384;
# New object
$CGI::POSTMAX = MAX_FILE_SIZE;
my $query = new CGI;
$query->cgi_error and error($query, "Error transferring file: " . $query->cgi_error );
my $file = $query->param('fname')|| error ($query, "No file received.");
my $fh = $query->upload("$file");
my $buffer = "";
my $filename = "";
my @annotation = "";
my @list = "";
$query->header();
$query->start_html();
$query->startform();
################# IF file has been uploaded #############################
if($file)
{
$file =~ s/[^\w.-]/_/g; #Rectifying the string for name of the file
if($file=~ /^(\w[\w.-]*)/)
{
$file = $1;
}
else
{
error($query, "Invalid file name; file must start with a letter or number.");
}
until (sysopen OUTPUT, UPLOAD_DIR . $file,O_CREAT|O_EXCL )
{
$file =~ s/(\d*)(\.\w+)$/($1||0)+1 .$2/e;
$1 >= MAX_OPEN_TRIES and error ($query, "Unable to save your file");
}
while(read($fh, $buffer, BUFFER_SIZE)) #Write content to OUTPUT file
{
print OUTPUT $buffer;
}
close OUTPUT;
# $filename = $file.'.'.'fasta';
$filename = $file;
# if($format eq "embl")
# {
#embl_fasta();
# }
# elsif($format eq "genbank")
# {
#genbank_fasta();
# }
open(IN,"UPLOAD_DIR/$filename")||die error($query, "cant open from UPLOAD dir");
my $one = 0;
my $header;
my $prevhead;
my $sequence;
#reading the genome sequence
my $x=1;
while()
{
my $seqline = $_;
$seqline =~ s/\n//g;
if($seqline =~ /^>/g)
{
if($one == 0)
{
$header = $seqline;
$prevhead = $header;
$sequence = '';
$one++;
next;
}
else
{
$header = $seqline;
$annotation[$x]=$prevhead;
$list[$x]=$sequence;
$x++;
$prevhead = $header;
$sequence = '';
next;
}
}#end if $seqline
$sequence = $sequence.$seqline;
$sequence =~ s/\s//g;
}#end while
close(IN);
$annotation[$x]=$prevhead;
$list[$x]=$sequence;
} # If Sequence has been uploaded
################# Opening of each sequence ###############################
my $z=0;
for my $name(@annotation)
{
my $sequence="";
$sequence = $list[$z];
print "$name\t$sequence\n";
$z++;
print $query->p("$sequence");
print " PROMOTER PREDICTION AT A SENSITIVITY LEVEL
";
print " ";
print " Sequence ID :  $sequence
";
print "
";
print "
";
print "FORWARD STRAND
";
print "
";
}
$query->endform();
$query->end_html();
sub error
{
my ($q, $reason)=@_;
print $q -> header ("text/html"),
$q -> start_html ("Error"),
$q -> h1 ("Error"),
$q->p("following err::"),
$q->p($q->i($reason)),
$q-> end_html;
exit;
}
## ##
Promen
PromEn: Promoter prediction using energy differences
##
>EMBOSS_001
gagccggaacaaattgaacaatcctacgccagctgccaaccgtggccggagcaggtggta
ttagatggggaacgtgaaacgttaggcctgtacctgaccggacaccctatcaaccagtat
ttaaaagagattgagcgttatgtcggaggcgtaaggctgaaagacatgcacccgacagaa
cgtggtaaagtcatcacggctgcggggctcgttgttgccgcgcgggttatggtcaccaag
cgcggcaatcgtatcggtatctgcacgctggatgaccgttccgggcggctggaagtgatg
ttgtttactgacgccctggataaataccagcaattgctggaaaaagaccgcatacttatc
gtcagcggacaggtcagctttgatgacttcagcggtgggcttaaaatgaccgctcgcgaa
gtgatggatattgacgaagcccgggaaaaatatgctcgcgggcttgctatctcgctgacg
gacaggcaaattgatgaccagcttttaaaccgactccgtcagtctctggaaccccaccgc
tctgggacaattccagtacatctctactatcagagggcggatgcacgcgcgcggttgcgt
tttggcgcgacgtggcgtgtctctccgagcgatcgtttattaaacgatctccgtggcctc
attggttcggagcaggtggaactggagtttgactaatacaggaatactatgagtctgaat
ttccttgattttgaacagccgattgcagagctggaagcgaaaatcgattctctgactgcg
gttagccgtcaggatgagaaactggatattaacatcgatgaagaagtgcatcgtctgcgt
gaaaaaagcgtagaactgacacgtaaaatcttcgccgatctcggtgcatggcagattgcg
caactggcacgccatccacagcgtccttataccctggattacgttcgcctggcatttgat
gaatttgacgaactggctggcgaccgcgcgtatgcagacgataaagctatcgtcggtggt
atcgcccgtctcgatggtcgtccggtgatgatcattggtcatcaaaaaggtcgtgaaacc
aaagaaaaaattcgccgtaactttggtatgccagcgccagaaggttaccgcaaagcactg
cgtctgatgcaaatggctgaacgctttaagatgcctatcatcacctttatcgacaccccg
ggggcttatcctggcgtgggcgcagaagagcgtggtcagtctgaagccattgcacgcaac
ctgcgtgaaatgtctcgcctcggcgtaccggtagtttgtacggttatcggtgaaggtggt