// Revision history:
//
// 20.08.2001 - FT fragments & DR keywords.
// - optional output: graphical alignment, FT fragments, etc.
// - file name settings at start.
//
// 25.05.2001 - Progress bar. (See annexe.h).
// - Matrix name included into the parm table.
// - Corrected refs to the help in the parm table.
// - 10 min wait msg.
// 10.05.2001 - Matrix removed ??
// 07.05.2001 - Corrected internal refs: blank replaced by '_':
// in kwOut(): strtr( $kw, " ", "_" )
// (10.05) in stOut(): strtr( rtrim(substr( $s, 1, $pos - 4 ))," ","_" ). ">\n";
?>
Processing your request...
// --------------------- test flag
//$test = TRUE;
$test = FALSE;
if( !isset($email) ) $email = ""; // if no 'email' field..
// --------------------------------------------- Windows/Linux
$Windows = FALSE;
$Linux = TRUE;
if( strtoupper(substr(PHP_OS,0,3)) == "WIN" ) {
$Windows = TRUE; $Linux=FALSE;
}
if( $test ) {
echo 'Win=', $Windows, ', Linux=', $Linux, "
";
}
// Win File names:
if( $Windows ) {
//+$a["a"] = 1;
//+if( !isset($a["b"]) ) echo " a[b] = FALSE
";
$title = "Sample 44";
$title = "Sample P10318";
//$title = "Sample P14942";
//-$seqname = ">P10318"; // ?
//$SEQ = ">P10318
//$SEQ = ">P14942
//$SEQ = ">Sample 44
$SEQ = ">P10318
MTEYKLVVVG AGGVGKSALT IQLIQNHFVD EYDPTIEDSY RKQVVIDGET CLLDILDTAG
QEEYSAMRDQ VFAINNSKSF ADINLYREQI KRVKDSDDVP MVLVGNKCDL PTRTVDTKQA
HELAKSYGIP GVEDAFYTLV REIRQYRMKK LNSSDDGTQG CMGLPCVVM
";
$F_PREF= "e:\vnickolaev\annot\\" . "44\\" . "44";
$F_PREF= "e:\vnickolaev\annot\\" . "p10318\\" . "p10318";
//$F_PREF= "e:\vnickolaev\annot\\" . "p14942\\" . "p14942";
/**
$F_PRE = $F_PREF . ".pre";
$F_MOT = $F_PREF . ".mot";
//$F_MOT = $F_PREF . ".mot18";
//$F_MOT = $F_PREF . ".mot21";
//$F_MOT = $F_PREF . ".mot38";
//$F_MOT = $F_PREF . ".mot41";
//$F_MOT = $F_PREF . ".mot58";
//$F_MOT = $F_PREF . ".mot61";
$F_PRN = $F_PREF . ".prn";
$F_M2M = $F_PREF . ".m2m";
//$F_STA = $F_PREF . ".sta";
//$F_STA = $F_PREF . ".st2";
$F_STA = $F_PREF . ".sta";
$F_FRAG = $F_PREF . ".inf";
**/
$F_IMPREF = "run\\" ;
dl( "php_gd" );
// Linux File names: (except $inp_file, see annexe.h)
} else {
// from annexe.h
// $indir = "/hdisk1/g_mail/-m_in/"; // ************* Linux indir
$indir = "/g_mail_in/-m_in/"; // ************* Linux indir
$outdir = "/g_mail_out/m_out/"; // ************* outdir ?
$pid = getmypid();
//$gif_file = "../trash/".$pid. $F_IM1 . $i . $F_IMEXT; // from annout_grali.h
$F_IMPREF = "../trash/".$pid ;
//++$res_file = $outdir.$pid."-.ht0"; // *** 10.05.2001
//++$F_PRE = $res_file.".pre"; // ************ Linux
//++$F_M2M = $res_file.".m2m"; // ************ Linux
$F_PREF = $outdir.$pid."-.ht0";
}
/**
$F_IM1 = "run\amot31_";
$F_IM2 = "run\am2m31_1";
//$F_IM2 = "am2m26_3";
$F_IM3 = "run\asta31_";
$F_IM4 = "run\aft31_0"; // FT fragments + DR keywords *** 07.22
**/
$F_IM1 = $F_IMPREF. "amot32_";
$F_IM2 = $F_IMPREF. "am2m32_1";
$F_IM3 = $F_IMPREF. "asta32_";
$F_IM4 = $F_IMPREF. "aft32_0"; // FT fragments + DR keywords *** 07.22
/**
if( $Linux ) {
//$F_IMEXT = ".gif"; // ************ Linux GIF
$F_IMEXT = ".png"; // ************ Linux png
} else {
$F_IMEXT = ".png";
}
**/
$F_IMEXT = ".png";
$F_PRE = $F_PREF . ".pre";
$F_MOT = $F_PREF . ".mot";
//$F_MOT = $F_PREF . ".mot18";
//$F_MOT = $F_PREF . ".mot21";
//$F_MOT = $F_PREF . ".mot38";
//$F_MOT = $F_PREF . ".mot41";
//$F_MOT = $F_PREF . ".mot58";
//$F_MOT = $F_PREF . ".mot61";
$F_PRN = $F_PREF . ".prn";
$F_M2M = $F_PREF . ".m2m";
//$F_STA = $F_PREF . ".sta";
//$F_STA = $F_PREF . ".st2";
$F_STA = $F_PREF . ".sta";
$F_FRAG = $F_PREF . ".inf"; // new file (FT frag & DR kw) *** 20.08.2001
$KW_REF = "http://expasy.pku.edu.cn/cgi-bin/kwdef.pl?";
$SEQ_REF1 = "http://www.genebee.msu.su/cgi-bin/nph-scr_keyw.pl?KEYW="; // . $seq_name .
$SEQ_REF2 = "&P_BANKS=SPR&FIELDS=AC";
$EMAIL = $email;
$TITLE = $title;
if( $test ) {
if( $email != "" ) {
echo "email = ", $email,"
";
} else {
echo "email = ","N/A
";
}
//$Windows=1;
//$Linux=0;
echo 'OS=', PHP_OS, '
';
echo 'OS=', $HTTP_ENV_VARS['OS'], '
';
//echo "length= ", $length, "
";
}
// Advanced
if( isset( $SP_SEQ ) ) { // SP_SEQ - start position of seq
// ...
// Basic defaults
} else {
//+$SP_SEQ = 0;
$FRAGMAX = 15;
$DOMAINEXT = "ON";
$EXCLUFRAG[] = "CHAIN";
}
$DOMAINEXT = strtoUpper( $DOMAINEXT ); // ?
#____________________________________ find 'k' in array 'aA = { k }'
function f_afind( $aA, $k ) {
if( !isset( $aA ) )
return -2; // -------------------> array is unset
for( $i = 0; $i < count( $aA ); $i++ ) {
if( $aA[ $i ] == $k )
return $i;
}
return -1; // not found
}
// ---------------------------------------
#--------------------------------------------------------SIMIL
# Print parameter into resulting page. If ref != 0
# is given parameter name if arranged as reference
#--------------------------------------------------------
function printPar( $name, $ref, $val ) {
if( $ref == "" )
//echo "$name | $val |
";
echo "$name | $val |
";
else
//echo "$name | $val |
";
echo "$name | $val |
";
return 0;
}
# ------------------------------------------------------------------------------
# Detect moleculare type for the given sequence.
# //Returns: 1 - protein, 0 - nucleotide. (simil.php3)
# Returns: 0 - protein, 1 - nucleotide. (like in C++ prog)***
#
# in seqbase.h: enum { MQ_PROTEIN, MQ_DNARNA, MQ_BOTH };
# ------------------------------------------------------------------------------
$PROTEIN = 0; //1;
$DNA = 1; //0;
function getMolType( $seq ) {
$upseq = strtoupper( $seq );
$len = strlen( $upseq );
$nlet = 0;
$nnuc = 0;
for( $i = 0; $i < $len; $i++ ) {
#echo $seq[ $i ]." ".intval( $seq[ $i ] )."
";
#if( 64 < intval( $seq[ $i ] ) && intval( $seq[ $i ] ) < 91 ) {
$nlet++;
if( $seq[ $i ] == 'A' ||
$seq[ $i ] == 'C' ||
$seq[ $i ] == 'G' ||
$seq[ $i ] == 'N' ||
$seq[ $i ] == 'T' ||
$seq[ $i ] == 'U' )
$nnuc++;
#}
}
// DNA PROT
// $molType = ( 100*$nnuc > 80*$nlet ) ? 0 : 1; // simil
$molType = ( 100*$nnuc > 80*$nlet ) ? 1 : 0;
#echo $nlet." ".$nlet." ".$len." ".$molType."
";
return $molType;
}
// ----------------------------------------------------
// Get Base of a file name
// ----------------------------------------------------
function f_fileBase( $fName ) {
$iL = strlen ( $fName );
$point = strrpos( $fName, '.' );
if( $point < 1 ) $point = $iL; // -> fName.end
$slash = strrpos ( $fName, '/' );
if( $slash < 1 ) $slash = strrpos ( $fName, '\\' );
if( $slash < 1 ) $slash = 0; // php3 & 4 ?
$start = 0; //fName;
if( $slash > 0 ) $start = $slash + 1;
$len = $point - $start;
//if( len > lenMax ) len = lenMax;
return substr( $fName, $start, $len );
}
if( $test ) {
echo " Base of /some/two/base.matr = ", f_fileBase( "/some/two/base.matr" ), "
";
}
# --------------------------------------------------------
# Check some conditions.
# --------------------------------------------------------
/*****/
if( $SEQ == "" ) {
echo "I guess, you forgot to enter/paste your favorite sequence.
I can't read that guy out of your mind so far. Sorry...";
exit;
}
// -------------------------------- split Fasta seq to: name, seq.
//echo "SEQ = " , $seq, "
";
echo '
';
//$iPS = strpos ($SEQ, '\n');
//if( substr( $SEQ, $iPS, 1 ) == "\r" ) $iPS--;
//$seqname = substr( $SEQ, 0, $iPS );
//$seqbody = substr( $SEQ, $iPS + 1);
$parts = split( "[\r\n]+", $SEQ);
$seqname = $parts[0];
if( $test ) {
//echo "iPS = ", $iPS, "
";
echo "SEQ name = " , $seqname, "*
";
//echo "SEQ body = " , $seqbody, "*
";
}
/*****/
# --------------------------------------------------------
# Creats lock-file for input file
# --------------------------------------------------------
$T = 0;
//++$T = 5*( count( $P_BANKS ) + count( $N_BANKS ) );
if( $T == 0 )
$T = 10; //5; // *** 25.05.2001
//echo "Estimated time before completing your //request is approximately $T minutes...";
//echo "Estimated time before completing your request is //approximately $T minutes...";
echo "Estimated time before completing your request is approximately $T minutes...";
flush();
// -----------------------
// Set default parameters
// -----------------------
/**/
// if( !isset() ) ... OK basic/advanced
if( !isset( $ML_THRESH ) ) $ML_THRESH = 7;
if( !isset( $MHP_THRESH ) ) $MHP_THRESH = 0.01;
if( !isset( $C_RATIO ) ) $C_RATIO = 0.02;
if( !isset( $W_WIDTH ) ) $W_WIDTH = 7; // ** 5
if( !isset( $NUM_COI ) ) $NUM_COI = 0; // ** 4 ?
if( !isset( $P_SIZE ) ) $P_SIZE = 100;
if( !isset( $MN_SHIFTS ) ) $MN_SHIFTS = 20;
if( !isset( $MN_ALIGN ) ) $MN_ALIGN = 100;
if( !isset( $MN_PRINT ) ) $MN_PRINT = 10; // Max supermotifs to print
//if( !isset( $MN_PRINT2 ) ) $MN_PRINT2 = 15;
if( !isset( $MN_KW ) ) $MN_KW = 12; // Max keywords in gr.alignment
if( !isset( $SP_SEQ ) ) $SP_SEQ = 0;
if( !isset( $EP_SEQ ) ) $EP_SEQ = 100000;
if( !isset( $GAP_PEN ) ) $GAP_PEN = 1.0;
if( !isset( $DOTHELIX ) ) $DOTHELIX = "Y";
if( !isset( $MFR ) ) $MFR = "Y";
if( !isset( $TRANS ) ) $TRANS = "N"; // Strand
//+$STRAND = "N";
if( !isset( $CLUSTER ) ) $CLUSTER = "f";
if( !isset( $MP_THRESH ) ) $MP_THRESH = 4;
if( !isset( $AP_THRESH ) ) $AP_THRESH = 6;
/**/
/***
$ML_THRESH = 7;
$MP_THRESH = 4;
$AP_THRESH = 6;
$MP_THRESH_BASIC = 4;
$MP_THRESH_MINOR = 0;
$MP_THRESH_SIGNI = 6;
$MHP_THRESH = 0.005; // homology
$MFR = 1; // N;
$NORM = 0; // N;
$DH_ACCURATE = 0; // N;
$MN_PRINT = 20;
$MN_PLOT = 1000; //
//$SEQTYPE = "Auto";
//$MULTI_PWMATRIX = "BLOSUM";
//$MULTI_DNAMATRIX = "IUB";
// File Names:
$S1_FNAME = "seq1.txt";
$S2_FNAME = "seq2.txt";
$MAP_MSGS = "map_msgs.txt";
$MOT_LIST = "motifs.txt";
$IMAGE_PREF = "mot12_";
// TODO:
//$WMATR = "blos.wmt";
//$PARMFILE = "parm.txt";
// -----------------------
// Change defaults
// -----------------------
if( !empty($nplot ) ) $MN_PLOT = $nplot;
if( !empty($ntext ) ) $MN_PRINT = $ntext;
if( !empty($length ) ) $ML_THRESH = $length;
if( !empty($power ) ) $MP_THRESH_BASIC = $power;
if( !empty($power0 ) ) $MP_THRESH_MINOR = $power0;
if( !empty($powerS ) ) $MP_THRESH_SIGNI = $powerS;
if( !empty($accurate) ) $DH_ACCURATE = ($accurate=="Off" ? 0 : 1);
if( !empty($homology) ) $MHP_THRESH = $homology;
if( !empty($mfr ) ) $MFR = ($mfr=="Off" ? 0 : 1 );
if( !empty($norm ) ) $NORM = ($norm=="Off" ? 0 : 1 );
if( $MFR == 0 ) $NORN = 0;
// ___________________________________________________ molType & matrix select
//if( !empty($seqtype ) ) $SEQTYPE = $seqtype;
$MOLTYPE = getMolType( $seq1 ); // $seqtype == "Auto"
if( $test )
echo "AUTO MOLTYPE = ", $MOLTYPE, "
";
if( $SEQTYPE == "DNA" ) {
if( $MOLTYPE == $PROTEIN ) {
echo "Warning: The sequences seem to be Protein, but you have selected DNA matrix.
";
}
$MOLTYPE = $DNA; // 0
}
if( $SEQTYPE == "Protein" ) {
if( $MOLTYPE == $DNA ) {
echo "Warning: The sequences seem to be DNA, but you have selected Protein matrix.
";
}
$MOLTYPE = $PROTEIN; // 0
}
***/
include "annexe.h";
/**
if( $Windows ) {
//system( ... );
} else {
//system( ... );
}
**/
# -----------------------------------------------------------
# Output results.
# -----------------------------------------------------------
#_________________________ Banner
//echo "Screening by Similarity Results
";
echo "
";
echo "";
echo " Genebee Predicted Annotation
";
//if( $TITLE != "" ) echo "",$TITLE,"
";
if( $TITLE != "" ) echo "",$TITLE,"
";
/*******
// __________________________References:
echo "References:
";
echo "1. Leontovich A.M.,Brodsky L.I., Gorbalenya A.E., Construction of the full ";
echo "local similarity map for two biopolymers, 1993, Biosystems, 30,57-63.";
echo "2. Brodsky L.I., Ivanov V.V., Ya.L. Kalaydzidis,Leontovich A.M., Nikolaev V.K., ";
echo "Feranchuk S.I.,Drachev V.A., GeneBee-NET:Internet-based server for analyzing ";
echo "biopolymers structure, 1995, Biochemistry, 60,8,923-928.
";
******/
#_________________________ Content
//echo "
";
echo "";
echo "Contents: | | |
| ";
/**
#_________________________ Banks Version fron file 'banks.version'.
$frel = fopen( "/www/services/banks.version", "r" );
echo "";
while( $buf = fgets( $frel, 128 ) )
echo $buf;
echo " | ";
fclose( $frel );
**/
echo " |
";
#_________________________ Parameters.
echo " Parameters
";
//++echo "
";
// +echo "";
echo '
';
echo " Name | ";
echo " Value | ";
if( $TITLE != "" ) {
printPar("Title","",$TITLE);
}
if( $EMAIL != "" ) {
printPar("User Email Address","",$EMAIL);
}
/***
printPar( "Motif power threshold - DotHelix","help.html#mpower",$MP_THRESH);
printPar( "Alignment power threshold - DotHelix","help.html#apower",$AP_THRESH);
printPar( "Motif length threshold","help.html#length",$ML_THRESH );
printPar( ". . .","","?" );
printPar( ". . .","","?" );
printPar( "Minimal homology ratio ","help.html#homology",$MHP_THRESH );
printPar( "Accurate Dothelix","help.html#accurate",$DH_ACCURATE );
printPar( "Motif frequences recalc","help.html#mfr",$MFR );
***/
printPar("Motif's power threshold","help.html#mpower",$MP_THRESH);
printPar("Alignment's power threshold","help.html#apower",$AP_THRESH);
printPar( "Motif's length threshold","help.html#length",$ML_THRESH );
printPar( "Coincidence ratio","help.html#cratio",$C_RATIO );
printPar( "Maximum number of shifts","help.html#mn_shifts",$MN_SHIFTS );
printPar( "Maximum number of selected alignments","help.html#mn_align",$MN_ALIGN );
printPar( "Start position of query sequence","help.html#seqpos",$SP_SEQ );
printPar( "End position of query sequence","help.html#seqpos",$EP_SEQ );
printPar( "Gap penalty","help.html#gap_pen",$GAP_PEN );
$Strand = ( $TRANS == "Y" ) ? "Both" : "Only forward";
$Cluster = ( $CLUSTER == "f" ) ? "Each frame separately" : "Codirectional joinly";
printPar( "Strand","help.html#strand", $Strand );
printPar( "Clusterization type","help.html#cluster", $Cluster );
printPar( "Threshold of motif's homology percentage","help.html#homology",$MHP_THRESH );
printPar( "Accurate dothelix","help.html#accurate",$DOTHELIX );
printPar( "Motif frequences recalc","help.html#mfr",$MFR );
printPar( "Weight matrix","help.html#matrices",$MATR ); // *** 25.05.2001
// FT fragment options
printPar( "Max number of FT keywords","help.html#FRAGMAX",$FRAGMAX );
if( !isset($EXCLUFRAG[0]) ) {
$sWk = "None";
} else {
$sWk = $EXCLUFRAG[0];
if( $sWk == "HELIX" ) {
$sWk = "HELIX, TURN, STRAND";
}
for( $i = 1; $i < count( $EXCLUFRAG ); ++$i ) {
$sWk .= (", " . $EXCLUFRAG[$i] ) ;
}
}
printPar( "Excluded fragments","help.html#EXCLUFRAG",$sWk );
printPar( "DOMAIN extension to qualifier","help.html#DOMAINEXT",$DOMAINEXT );
// Opt Line:
$optline = "ANum=" .$MN_ALIGN . ",MPower=" . $MP_THRESH . ",APower=" . $AP_THRESH;
$optline.= ( ",Len=" . $ML_THRESH . ",Accu=" . $DOTHELIX . ",Freq=" . $MFR );
$optline.= ( ",Homo=" . $MHP_THRESH . ",Coin=" . $C_RATIO . ",Gap=" . $GAP_PEN );
echo "
";
/*** *** 10.05.2001 Matrix removed ????????????
echo "
";
echo "
";
//echo "
Aminoacid matrix | ";
// *********
//echo "";
echo "";
/***
if( $Linux ) {
$fmat = fopen( "../data/".$MATR.".matrix", "r" ); // ************ Linux
} else {
//$fmat = fopen( $wmFile, "r" );
$fmat = fopen( $MATR.".matrix", "r" );
}
while( $buf = fgets( $fmat, 128 ) ) {
echo $buf;
}
fclose( $fmat );
***/
/***
if( $Linux ) {
$fmat = "../../data/".$MATR.".matrix"; // ************ Linux *** 07.05.2001
} else {
$fmat = $MATR.".matrix";
}
readfile( $fmat );
echo " | |
";
echo "
";
***/
/*****
// --------------------------------------------------------
// List of the mouse sensitive msgs - maps' polygons, etc.
// --------------------------------------------------------
$fmsg = fopen( $MAP_MSGS, "r" );
while( $buf = fgets( $fmsg, 128 ) ) {
echo $buf;
}
fclose( $fmsg );
//echo "";
//echo "";
*****/
// --------------------------------------------------------
// Predicted annotation.
// --------------------------------------------------------
function f_kwOut( $s, $xx, $KW_REF, &$aST ) {
global $OUTPUT;
//+$r = strpos( $s, " ", 5 );
//echo "r = ", $r, "
";
//+$kw = substr( $s, 5, $r - 5 );
$kw = rtrim(substr( $s, 5, 40 ));
$r = strlen( $kw ) + 5;
//echo $xx, " ", $kw, "";
if( $xx == "KW" )
echo $xx, " ", $kw, "";
else
echo $xx, " ", $kw, "";
//echo substr( $s, $r, strlen( $s ) - $r - 1 ), " (stat)\n";
//$sd = strpos( $s, " SD", 41 ) - 6; // always found
//echo substr( $s, $r, $sd - $r - 1 ), " ";
//echo( substr( $s, $sd, 6 + 3 ) . "" . substr( $s, $sd + 6 + 3) );
$sd = strpos( $s, " SD", 41 ); // always found
$prob = strpos( $s, " Prob", 41 ) + 1; // always found
//echo substr( $s, $r, $prob - $r - 1 ), " "; // ***07.05.2001
echo( substr( $s, $r, $prob - $r - 1 ) . " " );
if( f_afind( $OUTPUT, "STAT" ) > -1 ) {
echo( "" );
}
echo( substr( $s , $prob , $sd - $prob ) );
if( f_afind( $OUTPUT, "STAT" ) > -1 )
echo( "" );
echo( substr( $s, $sd ) );
/**/
// KW Stats:
$v = substr( $s, $sd, 6 );
settype( $v, "double" );
$tkw = $xx . ": " . $kw;
if( isset($aST[ $tkw ]) ) {
if( $aST[ $tkw ] < $v )
$aST[ $tkw ] = $v;
} else
$aST[ $tkw ] = $v;
/**/
return $kw;
}
echo "
";
echo " Predicted Annotation
";
echo "";
/** see at start
//$F_PRE = "e:\vnickolaev\annot\\" . "44\\" . "44.pre";
if( $Linux ) {
$res_file = $outdir.$pid."-.ht0"; // *** 10.05.2001
$F_PRE = $res_file.".pre"; // ************ Linux
$F_M2M = $res_file.".m2m"; // ************ Linux
}
**/
$fpre = fopen( $F_PRE, "r" );
$iKW = -1;
$kwPrev = "";
$kwLine = "*,"; // *** 20.01.01
$seqLen = 0;
while( $buf = fgets( $fpre, 128 ) ) {
$xx = substr($buf,0,2);
if( $xx == "DE" || $xx == "KW" || $xx == "FT" ) {
$kw = f_kwOut( $buf, $xx, $KW_REF, $aST );
if( $iKW >= ($MN_KW - 1) ) continue; // <-------- too many keywords *** 02.02.01
$tKw = $xx . ": " . $kw;
if( $xx != "FT" ) {
$iKW++;
//$aKW[$iKW] = $xx . ": " . $kw;
$aKW[$iKW] = $tKw;
$kwLine .= ( $tKw . "," );
} else {
if( $kw != $kwPrev ) {
$iKW++;
$kwPrev = $kw; // Same FT keywords must be groupped together !
//$aKW[$iKW] = $xx . ": " . $kw;
$aKW[$iKW] = $tKw;
$kwLine .= ( $tKw . "," );
}
}
} else {
// get seqLen:
if( $xx == "ID" ) {
echo( $buf );
$pos = strpos( $buf, " AA." );
if( $pos > 0 ) {
$str = rtrim( substr( $buf, 0, $pos ) );
$bla = strrpos( $str, " " );
$seqLen = substr( $str, $bla+1 );
settype( $seqLen, "integer" );
//+echo "seqlen=" . $seqLen . "
";
}
// Set seq ref:
} else if( $xx == "SQ" ) {
echo( "" );
echo( $buf );
echo( "" );
} else
echo $buf;
}
}
fclose( $fpre );
echo "
";
// ***********************************************************
#--------------------------------------------------------
# Get motifs information from Genebee motif file,
# created by search program.
#--------------------------------------------------------
// $beg - starts in source seq
// $beg2 - start of the found seq motif
//+function getMotGen( &$iSup, &$beg, &$len, &$maxLen, &$power, $mot_file, &$aSN ) {
function getMotGen( &$iSup, &$beg, &$len, &$maxLen, &$power, $mot_file, &$aSN, &$beg2 ) {
if( file_exists( $mot_file ) ) {
$fmot = fopen( $mot_file, "r" );
$iSup = -1;
while( $buf = fgets( $fmot, 1024 ) ) {
if( ereg( "Supermot", $buf ) ) {
$iMot = 0;
$iSup++;
$parts = split( "[ ]+", $buf, 8 );
$nMot = $parts[ 6 ];
//+echo " SN = *", $parts[ 4 ], "*
";
$aSN[$iSup] = $parts[ 4 ];
$power[ $iSup ] = $parts[ 5 ];
}
else {
if( $iSup == -1 ) continue; // < ------------------------ ***
$parts = split( "[ ]+", $buf, 6 );
$beg[ $iSup ][ $iMot ] = $parts[ 2 ];
$beg2[ $iSup ][ $iMot ] = $parts[ 3 ]; // *** 07.22
$len[ $iSup ][ $iMot ] = $parts[ 4 ];
if( $iMot < $nMot )
$iMot++;
}
}
fclose( $fmot );
$maxLen = 0;
$iSup++;
for( $i=0; $i < $iSup; $i++) {
for( $j=0; $j < count( $beg[ $i ] ); $j++) {
$maxLen = max( $maxLen, ( $beg[ $i ][ $j ] + $len[ $i ][ $j ] ) );
}
}
return $iSup;
}
else
return 0;
}
#--------------------------------------------------------
# Create Graphic Alignment Image-file
#--------------------------------------------------------
include "annali.h";
#--------------------------------------------------------
# Make string for displaying during mouse moving
# over the graphic alignment.
#--------------------------------------------------------
function makeOneStr( $buf ) {
$part1 = strchr( $buf, "[" );
$len = strcspn( $part1, "]" );
$part2 = trim( strchr( $buf, "!" ) );
$res = substr( $part1, 1, $len-1 ).substr( $part2, 3 );
return $res;
}
/***
function noAns( $res_file ) {
$sign = 0;
$fr = fopen( $res_file, "r" );
while( $buf = fgets( $fr, 1024 ) ) {
#echo $buf."
";
if( ereg( "========", $buf ) ) {
$sign = 1;
break;
}
}
if( $sign ) {
echo "
";
echo "";
while( $buf = fgets( $fr, 1024 ) ) {
#echo $buf."
";
if( ereg( "========", $buf ) ) {
echo "";
break;
}
if( !ereg( "FONT", $buf ) ) {
echo $buf."
";
}
}
}
fclose( $fr );
return $sign;
}
if( $Linux ) {
$res_file = $outdir.$pid."-.ht0"; // ************ Linux
if( file_exists( $res_file ) ) {
if( noAns( $res_file ) )
exit; // ----------------------->No reply ?
}
}
}
***/
# -----------------------------------------------------------
# Find out supermotifs information from GeneBee motif file
# Here: iSup - number of supermotifs.
# beg[][] - array of motifs beginnings
# len[][] - array of motifs lengths
# power[] - array of supermotif's powers
# -----------------------------------------------------------
/** // *** 20.08.2001
if( $Linux ) {
$F_MOT = $res_file.".mot"; // ************ Linux
} else {
//$mot_file = $F_MOT;
dl( "php_gd" );
}
**/
getMotGen( $iSup, $beg, $len, $maxLen, $power, $F_MOT, $aSN, $beg2 ); // +beg2 *** 07.22
# -----------------------------------------------------------
# Create graphic alignment Image-file. (.png)
# -----------------------------------------------------------
/*** ????????????????????????
if( $Linux ) {
//$gif_file = "../trash/".$pid.".gif"; // ************ Linux GIF ??
$gif_file = "../trash/".$pid. $F_IM1 . "0" . $F_IMEXT;
if( file_exists( $gif_file ) ) {
unlink( $gif_file );
}
}
***/
$size = 3;
$bor = 5;
$wid = 600;
$key_size = 33;
$space = 2; //3; // ***
$xtra = 1;
/**/
// Enlarge picture:
//+if( $iSup < 10 )
if( $iSup < 20 ) // *** 02.02.01
$size *= 3;
//+else if( $iSup < 20 )
//++else if( $iSup < 40 )
else if( $iSup < 60 )
$size *= 2;
/**/
// ---------------------------------------------------------
// Get KW lines of 1&0.
// kwLine - contains only significant KWs.
// ---------------------------------------------------------
function f_getKW( $fsta, &$aKW01, $type, $kwLine ) { // type = FT, DE, KW
// skip till " ...; 1 1 ..."
$pos = 0;
while( $buf = fgets( $fsta, 512 ) ) {
if( ($pos = strpos( $buf, ';' )) > 0 ) break;
}
do {
$k = trim( substr( $buf, 0, $pos ) ); // key
$tk = $type . ": " . $k;
if( strpos( $kwLine, "," . $tk . "," ) < 1 ) continue;
//echo " pos = ", $pos, ", k = ", $k, "
";
//$n = strpos( $buf, '\n', $pos+4);
$v = trim(substr( $buf, $pos+1, strlen( $buf) - 1 - $pos - 1 )); // value = "1 1 1 0 ..."
//echo "*v = ", $v, ", buf = ", $buf,"
";
//+$aKW01[ $type . ": " . $k ] = $v;
$aKW01[ $tk ] = $v;
} while ( ($buf = fgets( $fsta, 512 )) && ($pos = strpos( $buf, ";" )) > 0 );
//+echo "Num of aKW01[] = " . count( $aKW01 ) . "
";
}
// ---------------------------------
/**
if( $Linux ) {
//$F_STA = $res_file.".sta"; // ************ Linux
$F_STA = $res_file.".sta"; // ************ Linux
}
**/
$fsta = fopen( $F_STA, "r" );
// Seq Num -> Name: $aNumName[]
while( $buf = fgets( $fsta, 128 ) ) {
if( ereg( "List", $buf ) ) break;
}
while( $buf = fgets( $fsta, 128 ) ) {
if( strlen( $buf ) > 3 ) break;
}
$i = 0;
do {
//+echo "buf=", $buf,"
";
$parts = split( "[ \r\n]+", $buf, 4 );
//echo "parts: ", $parts[1], "*, ", $parts[0], "*
";
//$aNumName[ settype( $parts[1], "string") ] = $parts[0];
$aNumName[ $parts[1] ] = $parts[0];
$aPosName[ $parts[0] ] = $i++; // *** 20.01.01
} while( ($buf = fgets( $fsta, 128 )) && ( strlen( $buf ) > 3 ) );
//+-echo "***aNumName[53802]=", $aNumName["53802"],"
";
// Get 0/1's:
$bFT = FALSE;
$bKW = FALSE;
$bDE = FALSE;
while( $buf = fgets( $fsta, 128 ) ) {
$posFT = strpos( $buf,"= FT =" );
$posDE = strpos( $buf,"= DE =" );
$posKW = strpos( $buf,"= KW =" );
if( $posDE > 0 ) {
$bDE = TRUE;
f_getKW( $fsta, &$aKW01, "DE", $kwLine );
} else if( $posKW > 0 ) {
$bKW = TRUE;
f_getKW( $fsta, &$aKW01, "KW", $kwLine );
} else if( $posFT > 0 ) {
$bFT = TRUE;
f_getKW( $fsta, &$aKW01, "FT", $kwLine );
} else {
continue;
}
if( $bFT && $bDE && $bKW )
break; // ----------------->
}
fclose( $fsta );
/**
// Test output: **********
if( count( $aKW01 ) > 0 ) {
$aWk = array_keys( $aKW01 );
for( $i = 0; $i < count( $aKW01 ); $i++ ) {
echo " key = *", $aWk[$i], "*, value = *", $aKW01[ $aWk[$i] ], "*
";
}
}
**/
// --------------------------------------------------------
// XREF: get found seq names & supermotif name
// --------------------------------------------------------
$fmot = fopen( $F_MOT, "r" );
$i = 1;
$iFS = 0;
while( $buf = fgets( $fmot, 128 ) ) {
if( substr( $buf, 0,5 ) == "Super" ) {
//+$pos = strpos( $buf, ".dat" );
//+$aFS[substr( $buf, $pos + 5, 6 )] = ++$iFS;
$wk = split( "[ ]+", $buf, 6 );
//echo "wk4=", $wk[4], "*
";
$aFS[ $wk[4] ] = ++$iFS;
$aSupName[] = $aNumName[ $wk[4] ];
//+$iFS = 1;
//-echo "FS ID = ", $wk[4], "*", $wk[0], "*", $wk[1], "*", $wk[2],"
";
//+echo "FS ID = *", $aFS[0], "*","
";
break;
}
}
while( $buf = fgets( $fmot, 128 ) ) {
if( substr( $buf, 0,5 ) == "Super" ) {
//+$pos = strpos( $buf, ".dat" );
//+if( !isset( $aFS[substr( $buf, $pos + 5, 6 )] ) ) {
//+ $aFS[substr( $buf, $pos + 5, 6 )] = ++$iFS;
$wk = split( "[ ]+", $buf, 6 );
//echo "wk4=", $wk[4], "*
";
if( !isset( $aFS[ $wk[4] ] ) ) {
$aFS[ $wk[4] ] = ++$iFS;
}
if( isset($aNumName[ $wk[4] ]) ) {
$aSupName[] = $aNumName[ $wk[4] ];
} else {
$aSupName[] = "*" . $wk[4];
}
}
}
//+echo "FS N = ", $iFS, "
";
fclose( $fmot );
// -------------------------------------------------------
// maxLen must be seqLen ! *** 02.02.01
if( $seqLen == 0 )
$seqLen = $maxLen;
$wid0 = $wid; //$hei0 = $hei; // save *** 07.22
#____________________________________________Graphical alignment display
if( f_afind( $OUTPUT, "GRALI" ) > -1 ) {
$section = "AGRAPH";
include "annmline.h";
include "annout_grali.h";
}
#____________________________________________FT fragments & DR keywords
if( f_afind( $OUTPUT, "FRAG" ) > -1 ) {
$section = "FRAG";
include "annmline.h";
include "annout_frag.h";
}
/**
echo "*
\n";
echo "*
\n";
echo "*
\n";
echo "*
\n";
echo "*
\n";
echo "*
\n";
echo "*
\n";
echo "*
\n";
echo "*
\n";
echo "*
\n";
echo "*
\n";
echo "*
\n";
echo "*
\n";
echo "*
\n";
echo "*
\n";
echo "*
\n";
echo "*
\n";
echo "*
\n";
echo "*
\n";
echo "*
\n";
echo "*
\n";
echo "*
\n";
echo "*
\n";
echo "*
\n";
echo "*
\n";
echo "*
\n";
echo "*
\n";
echo "*
\n";
exit();
**/
// **************
//+$section = "XREF";
//+include "annmline.h";
// --------------------------------------------------------
// XREF: generate image
// --------------------------------------------------------
if( f_afind( $OUTPUT, "XREF" ) > -1 ) {
$section = "XREF";
include "annmline.h";
include "annxref.h";
/**
if( $Linux ) {
$m2m_file = "../trash/".$pid. $F_IM2 . $F_IMEXT; // ************ Linux ??
} else {
$m2m_file = $F_IM2 . $F_IMEXT; //"am2m1_1.png";
}
**/
$m2m_file = $F_IM2 . $F_IMEXT; //"am2m1_1.png"; // *** 20.08.2001
$iw = 640; $ih = 500;
f_m2mImage( $F_M2M, $m2m_file, $aFS, $iFS, $aNumName, $seqname, $iw, $ih,
$MATR, $SEQ_REF1, $SEQ_REF2, &$m2mMap, $optline );
// $wk = $SEQ_REF1 . $aSupName[ $i - 1 ] . $SEQ_REF2;
echo "
Cross-Reference Map of The Found Sequences
";
//echo( "
" );
echo( "
" );
/***/
// m2m map:
echo "";
} // end of XREF
#____________________________________________Brief descr & first 10 supermotifs
if( f_afind( $OUTPUT, "DESCR" ) > -1 ) {
$section = "BRIEF"; // n/a
include "annmline.h";
include "annout_descr.h";
}
// --------------------------------------------------------
// Statistics.
// --------------------------------------------------------
/**/
function f_stOut( $s, $pos ) {
global $OUTPUT;
//echo "\n";
echo( "\n" ); // *** 07.05.2001
echo( "" . substr($s,0,strlen($s) - 2) . " [annotation]");
if( f_afind( $OUTPUT, "GRALI" ) > -1 )
echo( "[gr.alignment]" );
echo( "\n
");
}
/**/
if( f_afind( $OUTPUT, "STAT" ) > -1 ) {
$section = "STAT";
include "annmline.h";
include "annsta.h";
echo "
Statistics
";
echo "";
$fsta = fopen( $F_STA, "r" );
$stat_on = FALSE;
$i = 0;
while( $buf = fgets( $fsta, 512 ) ) {
if( ($pos = strpos( $buf,"_statist" )) > 4 ) {
$i++;
//if( $i > 6 ) break; // ------------>
if( $i > 50 ) break; // ------------>
//if( $i > 15 ) break; // ------------>
//+$stat_on = TRUE;
f_stOut( $buf, $pos );
//+if( $i < 7 ) { // 4
$aBuf[0] = fgets( $fsta, 512 );
$aBuf[1] = fgets( $fsta, 512 );
$aBuf[2] = fgets( $fsta, 512 );
$aBuf[3] = fgets( $fsta, 512 );
$iw = 500; $ih = 250+10; // may be changed ?
/**
if( $Linux ) {
$sta_file = "../trash/".$pid. $F_IM3 . $i . $F_IMEXT; // ************ Linux ??
} else {
$sta_file = $F_IM3 . $i . $F_IMEXT; //"asta1_1.png";
}
**/
$sta_file = $F_IM3 . $i . $F_IMEXT; //"asta1_1.png"; // *** 20.08.2001
f_staImage( $sta_file, $buf, $pos, $aBuf, $iw, $ih, $seqname, $MATR, $optline );
echo( "
" );
echo( "
" );
//} else {
// if( $stat_on )
//+}
if( $test ) {
echo $aBuf[0]; echo $aBuf[1];
echo $aBuf[2]; echo $aBuf[3];
}
//}
}
} // end of while loop
fclose( $fsta );
echo "
";
} // end of stat
/***/
/***
// test .prn
echo " Test .prn
";
echo "";
$fsta = fopen( "P10318.prn", "r" );
while( $buf = fgets( $fsta, 256 ) ) {
//if( ($pos = strpos( $buf,"_statist" )) > 4 ) {
// f_stOut( $buf, $pos );
//} else {
echo $buf;
//}
}
fclose( $fsta );
echo "
";
***/
?>
/***
echo( '
";
***/
//- echo( "
" ); // no effect
$section = "BOTTOM";
include "annmline.h";
# Delete all temporary files.
if( $Linux ) {
system( "rm $F_PRE" ); // ************ Linux
system( "rm $F_MOT" );
system( "rm $F_FRAG" );
system( "rm $F_M2M" );
system( "rm $F_PRN" );
system( "rm $F_STA" );
//system( "rm $PARMFILE" ); // ? + images
}
/**/
?>
Designed by Valeri Kazatchenko.
Last updated: September 7, 2001.
Comments and bug-reports send to
Vladimir Nikolaev
Created: .