Forum Moderators: coopster
<?php
$max_seqs = 1000;
$page = $_SERVER['PHP_SELF'];
$sec = "10";
header("Refresh: $sec; url=$page");
?>
<html>
<head>
<style>
body
{
font-family: arial;
color: #003965;
font-size: 14px;
}
textarea
{
width: 620px;
height: 120px;
font-family: courier;
}
.whole
{
width: 1000px;
border-collapse: collapse;
margin-top:20px;
margin-bottom:20px;
text-align: center;
background-color: #e8e8e8;
font-size: 12px;
}
.browse_cell
{
background:#d8dada;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 13px;
padding: 3;
border-spacing: 2;
text-align: center;
font-weight: bold;
color:#424d5d;
}
.browse_cell_change1
{
background:#BFBFF6;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
padding: 2;
}
.browse_cell_change2
{
background:#D9D9D9;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
padding: 2;
border-spacing:4px;
}
.headcell
{
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 16px;
font-weight:bold;
line-height: 15px;
text-align: center;
color: #000144;
}
</style>
</head>
<body>
<?php
if( isset ( $_POST['sequence'] ))#run part
{
function readSeqs($text)
{
if( !preg_match( '/^>/m', $text ) )
return readSeqs( ">\n$text" );
$seqs = array();
$text = preg_replace( '/[\n\r]+/', "\n", $text );
preg_match_all( '/^>([^\n]*)\n([^>]*)/ms', $text, $matches );
foreach( $matches[1] as $k=>$name1 )
{
$seqs_number++;
$seq = $matches[2][$k];
$name1 = trim($name1);
$name=substr($name1, 0, 50);#keep only the first 40 characters (if the name is longer)
$name=preg_replace('/\s+/', ' ', $name);
$name=preg_replace('/[\|\s\/\\\%\*&\#\@\(\)\[\]\$\^\!]/', '_', $name);
$seq = preg_replace( '/\s+/', '', $seq );
$seqs[] = array( 'name'=>$name, 'seq'=>$seq );
}
return $seqs;
}
$uniq_number = uniqid();
$input_folder = './tmp_files/myfolder_'.$uniq_number;
mkdir($input_folder);
$input_file = $input_folder.'/'.'input_seqs';
$seqs = readSeqs($_POST['sequence']);
$run_mode = $_POST['mode'];
$signal='';
$phmms='';
if($_POST[sp_pred] == 'on')
{
$signal = $_POST['sp_pred'];
}
else
{
$signal = 'off';
}
if($_POST['pfams'] == 'on')
{
$phmms = $_POST['pfams'];
}
else
{
$phmms = 'off';
}
$seqs_number = count($seqs);
$prior_info1 = $_POST['prior'];
if (preg_match('/Example/', $prior_info1))
{
$prior_info='--';
$prior_info_final='NO_INFO';
}
else
{
$prior_info=$prior_info1;
$prior_info_final=str_replace(';', 'A', $prior_info);
}
if( $seqs_number == 0 )
{
echo "<em>You did not submit any sequences.</em>";
}
elseif( $seqs_number > $max_seqs )
{
echo "<em>You can input no more than $max_seqs sequences at a time.</em>";
}
elseif ( $seqs_number > 1 and $seqs_number <= $max_seqs )
{
$input = '';
foreach($seqs as $v) #create input file for run
{ $input.= ">".$v['name']."\n".$v['seq']."\n"; }#write each FASTA seq in input file
file_put_contents( $input_file, $input );#(if we will allow >1 proteins)
#echo "perl Whole_Program.pl $input_folder $seqs_number $prior_info_final $run_mode $signal $phmms<br>";
exec ("perl Whole_Program.pl $input_folder $seqs_number $prior_info_final $run_mode $signal $phmms", $res_total, $ret);
if($ret==0)
{
$text_file = $input_file.'.txt_res';
$zip_file = 'tmp_files/'.$uniq_number.'.tgz';
echo "<table class=\"whole\">\n";
echo "<tbody>\n";
echo "<tr><td class=\"headcell\" align=\"right\" colspan=\"7\"><br>Results<br><br></td></tr>\n";
echo "<tr>\n";
echo "<td width=\"14%\" class=\"browse_cell\">Entry</td>\n".
"<td width=\"12%\" class=\"browse_cell\">Length</td>\n".
"<td width=\"14%\" class=\"browse_cell\">Signal peptide</td>\n".
"<td width=\"14%\" class=\"browse_cell\">β-score</td>\n".
"<td width=\"38%\" class=\"browse_cell\">OMPdb family</td>\n".
"<td width=\"14%\" class=\"browse_cell\">#TM</td>\n".
"<td width=\"12%\" class=\"browse_cell\">Topology image</td>\n";
echo "</tr>\n";
foreach ($res_total as $line_entry)
{
$counter++;
if ($counter % 2){$colour_class="browse_cell_change1";}
else{$colour_class="browse_cell_change2";}
$all_data = preg_split("/\t/", $line_entry);
$id=$all_data[0];
$seq_len=$all_data[1];
$signal=$all_data[2];
$score=$all_data[3];
$family_name=$all_data[4];
$family_number=$families_array[$family_name];
$tm_num=$all_data[5];
if($tm_num==0) {$tm_num='--';}
$topo_img_link=$all_data[6];
echo "<tr>\n";
echo "<td width=\"14%\" align=\"left\" class=\"".$colour_class."\">".$id."</td>\n".
"<td width=\"12%\" class=\"".$colour_class."\">".$seq_len."</td>\n".
"<td width=\"14%\" class=\"".$colour_class."\">".$signal."</td>\n".
"<td width=\"14%\" class=\"".$colour_class."\">".$score."</td>\n".
"<td width=\"38%\" align=\"left\" class=\"".$colour_class."\">";
if($family_name == "--")
{
echo "$family_name</td>\n";
}
else
{
echo "<a target=\"_blank\" href=\"http://www.ompdb.org/OMPdb/view_family.php?fam_id=".$family_number."\">".
$family_name."</a></td>\n";
}
echo "<td width=\"14%\" class=\"".$colour_class."\">".$tm_num."</td>\n";
if($topo_img_link=='--')
{
echo "<td width=\"12%\" class=\"".$colour_class."\">--</td>\n";
}
else
{
echo "<td width=\"12%\" class=\"".$colour_class."\"><a target=\"_blank\" href=\"".$topo_img_link."\"> Download</a></td>\n";
}
echo "</tr>\n";
}
echo "</tbody></table>\n";
}
else
{
echo "<br /><br />Program error!";
}
}
echo "<br /><a target=\"_blank\" href=\"".$text_file."\">Download</a> results in plain text format\n";
echo "<br /><a target=\"_blank\" href=\"".$zip_file."\">Download</a> all files related to this submission as a tarball\n";
echo "<br /><br /><a href=\"index.php\">Run again</a><br />";
}
else #index initial page
{
echo "Please paste up one or more ".
" - formatted sequences in the textarea below: <br /><br />\n";
echo "<form method=post name=\"seq_form\">".
"<textarea name=\"sequence\"></textarea>
<br /><br />
Select mode:
<input type=\"radio\" name=\"mode\" value=\"1\" checked /> MSA-version (1 sequence)
<input type=\"radio\" name=\"mode\" value=\"2\" /> Single-sequence version (up to $max_seqs sequences)
<br /><br />
Run signal-peptide prediction using <a target=\"_blank\" href=\"http://www.compgen.org/tools/PRED-TAT/\">PRED-TAT</a>:
<input type=\"checkbox\" name=\"sp_pred\" checked>
<br /><br />
Use library in prediction:
<input type=\"checkbox\" name=\"pfams\" checked>
<br /><br />
Prior information (constrained prediction):
<input type=\"text\" name=\"prior\" size=\"33\" style=\"color:#888;\"
value=\"Example: I:1-15;M:20-25;O:30-30\" onfocus=\"inputFocus(this)\" onblur=\"inputBlur(this)\" />
<br /><br />
<input type=\"submit\" value=\"Run prediction\" />
<input type=\"reset\" value=\"Clear fields\" />
<input type=\"button\" value=\"Generate sample input\" onclick=\"example_fill();\">
</form>";
echo "<br /><hr>";
}
?>
</body>
</html>