Processing your request...
// --------------------- test flag
//$test = TRUE;
$test = FALSE;
$EMAIL = $email;
$TITLE = $title;
$Windows = FALSE;
$Linux = TRUE;
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 "seqtype = " , $seqtype, "
";
echo "multi_pwmatrix = " , $multi_pwmatrix, "
";
echo "ntext = ", $ntext, "
";
echo "nplot = ", $nplot, "
";
echo "length= ", $length, "
";
}
// --------------------------------------------- Windows/Linux
if( strtoupper(substr(PHP_OS,0,3)) == "WIN" ) {
$Windows = TRUE; $Linux=FALSE;
}
if( $test ) {
echo 'Win=', $Windows, ', Linux=', $Linux, "
";
}
#--------------------------------------------------------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.
# Returns: 0 - protein, 1 - nucleotide. (like in C++ prog)***
# --------------------------------------------------------
$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;
$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 seq
//echo "SEQ = " , $seq, "
";
echo '
';
$iP2 = strrpos ($seq, '>');
//if( $iP2 < ?5 ) ...format ?
$seq1 = substr( $seq, 0, $iP2 - 1);
$seq2 = substr( $seq, $iP2 );
if( $test ) {
echo "iP2 = ", $iP2, "
";
echo "SEQ1 = " , $seq1, "
";
echo "SEQ2 = " , $seq2, "
";
}
# --------------------------------------------------------
# Creats lock-file for input file
# --------------------------------------------------------
$T = 0;
//++$T = 5*( count( $P_BANKS ) + count( $N_BANKS ) );
if( $T == 0 )
$T = 5;
//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
// -----------------------
/**
$ML_THRESH = 7;
$MHP_THRESH = 0.01;
$C_RATIO = 0.02;
$W_WIDTH = 7;
$NUM_COI = 0;
$P_SIZE = 100;
$MN_SHIFTS = 20;
$MN_ALIGN = 100;
$SP_SEQ = 0;
$EP_SEQ = 100000;
$GAP_PEN = 1.0;
$DOTHELIX = Y;
$MFR = Y;
$TRANS = N;
$CLUSTER = f;
**/
$ML_THRESH = 7;
$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:
$TMP = tempnam( "/tmp/", "dhm" );
$S1_FNAME = $TMP.".seq1";
$S2_FNAME = $TMP.".seq2";
$MAP_MSGS = $TMP.".msgs";
$MOT_LIST = $TMP.".motifs";
$IMAGE_PREF = tempnam( "../../trash/", "dhm" );
$DHM_PROGRAM = "/www/services/dhm/dhm";
$DHM_PROTOCOL = $TMP.".txt";
$WM = Array (
"BLOSUM" => Array ("blosum30.matrix","blosum50.matrix","blosum62.matrix"),
"PAM" => Array ("dayhoff.matrix"),
"GONNET" => Array ("johnson.matrix"),
"ID" => Array ("dnarna.matrix"),
"IUB" => Array ("dnarna.matrix"),
"CLUSTALW" => Array ("dnarna.matrix")
);
// TODO:
$WMATR = "blos.wmt";
$PARMFILE = $TMP.".parm";
// -----------------------
// 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
}
if( !empty( $multi_pwmatrix ) ) $MULTI_PWMATRIX = $multi_pwmatrix;
if( !empty( $multi_dnamatrix ) ) $MULTI_DNAMATRIX = $multi_dnamatrix;
// ____________________________________________________ matrix Line
if( $MOLTYPE == $PROTEIN )
$wmList = $WM[$MULTI_PWMATRIX];
else
$wmList = $WM[$MULTI_DNAMATRIX];
$WM_LINE = f_fileBase( $wmList[0] );
if( $test )
echo " start WM_LINE = ", $WM_LINE, "
";
$numMatr = sizeof($wmList);
for( $i = 1; $i < $numMatr; $i++ ){
$wm_ = f_fileBase($wmList[$i]);
$WM_LINE = "$WM_LINE, $wm_";
}
$WM_LINE = strToUpper( $WM_LINE );
// --------------------------> wmList, numMatr
//echo "ML_THRESH = ", $ML_THRESH, "
";
//if( $Windows ) {
$fp = fopen( $PARMFILE, "w" );
fputs( $fp, "Plot $MN_PLOT\n" );
fputs( $fp, "Print $MN_PRINT\n" );
fputs( $fp, "PowerSigni $MP_THRESH_SIGNI\n" );
fputs( $fp, "NoiseUpperBound $MP_THRESH_BASIC\n" );
fputs( $fp, "PowerLow $MP_THRESH_MINOR\n" );
fputs( $fp, "Length $ML_THRESH\n" );
fputs( $fp, "Accurate $DH_ACCURATE\n" );
fputs( $fp, "Homology $MHP_THRESH\n" );
fputs( $fp, "Frequency $MFR\n" );
fputs( $fp, "Normalize $NORM\n" );
fputs( $fp, "Moltype $MOLTYPE\n" );
fputs( $fp, "Seq1 $S1_FNAME\n" );
fputs( $fp, "Seq2 $S2_FNAME\n" );
fputs( $fp, "Map msg file $MAP_MSGS\n" );
fputs( $fp, "Motifs file $MOT_LIST\n" );
fputs( $fp, "PNG name pref $IMAGE_PREF\n" );
//$MAP_MSGS = "map_msgs.txt";
//$MOT_LIST = "motifs.txt";
//$IMAGE_PREF = "mot12_";
for( $i = 0; $i < $numMatr; $i++ ) {
fputs( $fp, "Matrix $wmList[$i]\n" );
}
fclose( $fp );
//}
/**
#$indir = "/hdisk1/g_mail/-m_in/";
$indir = "/g_mail_in/-m_in/";
$outdir = "/g_mail_out/m_out/";
$pid = getmypid();
$sem_name = $indir.$pid.".lok";
$fp = fopen( $sem_name, "w" );
fclose( $fp );
# --------------------------------------------------------
# Creates input file
# --------------------------------------------------------
$inp_file = $indir.$pid;
$fp = fopen( $inp_file, "w" );
fputs( $fp, "From: " );
fputs( $fp, $EMAIL."\n" );
fputs( $fp, "\n[addrfrom]\n" );
fputs( $fp, "from: WWW to: GeneBee (MOSAIC)\n" );
if( $TYPE != "SIM_KEY" )
fputs( $fp, "Screening by similarity\n" );
else
fputs( $fp, "Keyword -> Similarity\n" );
fputs( $fp, "\n[receive]\n" );
fputs( $fp, "Receive Sequence= $RCV_SEQ\n" );
fputs( $fp, "3D_COORDINATE= $D_COORD\n" );
if( $SEQ_ALIGN == "SEQUENCE" || $TYPE == "SIM_KEY" ) {
$molType = getMolType( $SEQ );
fputs( $fp, "[sequence]\n" );
if( $SEQ_NAME == "" )
fputs( $fp, ">Unnamed\n" );
else
fputs( $fp, ">".$SEQ_NAME."\n" );
}
else
fputs( $fp, "[align]\n" );
fputs( $fp, $SEQ );
if( $MATR == "" ) {
if( $molType == 1 )
$MATR = "blosum62";
else
$MATR = "dnarna";
}
fputs( $fp, "\n\n[matrix]\n" );
$fmat = fopen( "../data/".$MATR.".matrix", "r" );
while( $buf = fgets( $fmat, 128 ) ) {
fputs( $fp, $buf );
}
fclose( $fmat );
fputs( $fp, "\n\n[banks]\n" );
$numP = count( $P_BANKS );
$numN = count( $N_BANKS );
$numG = count( $G_BANKS );
if( $numP + $numN + $numG == 0 ) {
if( $molType == 1 ) {
$P_BANKS[ 0 ] = "SPR";
$numP = 1;
}
else {
$N_BANKS[ 0 ] = "HUM";
$numN = 1;
}
}
for( $i = 0; $i < $numP; $i++ )
fputs( $fp, $P_BANKS[ $i ]." " );
for( $i = 0; $i < $numN; $i++ )
fputs( $fp, $N_BANKS[ $i ]." " );
for( $i = 0; $i < $numG; $i++ )
fputs( $fp, $G_BANKS[ $i ]." " );
if( $TYPE == "SIM_RED" || $TYPE == "SIM_KEY" ) { // Set default parameters if REDUCE was choosen
$ML_THRESH = 7;
$MHP_THRESH = 0.01;
$C_RATIO = 0.02;
$W_WIDTH = 7;
$NUM_COI = 0;
$P_SIZE = 100;
$MN_SHIFTS = 20;
$MN_ALIGN = 100;
$SP_SEQ = 0;
$EP_SEQ = 100000;
$GAP_PEN = 1.0;
$DOTHELIX = Y;
$MFR = Y;
$TRANS = N;
$CLUSTER = f;
if( $molType == 1 ) { // The case protein
$C_RATIO = 0.02;
$W_WIDTH = 7;
$NUM_COI = 0;
$DOTHELIX = Y;
}
else {
$C_RATIO = 0.05;
$W_WIDTH = 5;
$NUM_COI = 4;
$DOTHELIX = N;
}
}
fputs( $fp, "\n\n[params]\n" );
fputs( $fp, "Length threshold $ML_THRESH\n" );
fputs( $fp, "Power threshold $MP_THRESH\n" );
fputs( $fp, "Subalign. power $AP_THRESH\n" );
fputs( $fp, "Min. homology ratio $MHP_THRESH\n" );
fputs( $fp, "Coincidence ratio $C_RATIO\n" );
fputs( $fp, "Window width $W_WIDTH\n" );
fputs( $fp, "Number of coincide $NUM_COI\n" );
fputs( $fp, "Part size $P_SIZE\n" );
fputs( $fp, "Max. number of shifts $MN_SHIFTS\n" );
fputs( $fp, "Max. number of supermotifs $MN_ALIGN\n" );
fputs( $fp, "Start position $SP_SEQ\n" );
fputs( $fp, "End position $EP_SEQ\n" );
fputs( $fp, "Gap penalty $GAP_PEN\n" );
fputs( $fp, "Accurate Dothelix $DOTHELIX\n" );
fputs( $fp, "Motif frequences recalc. $MFR\n" );
fputs( $fp, "Reverse $TRANS\n" );
fputs( $fp, "Clusterization $CLUSTER\n" );
if( $TYPE == "SIM_KEY" ) {
fputs( $fp, "\n\n[keyword]\n" );
fputs( $fp, "$KEYW\n" );
fputs( $fp, "\n\n[fields]\n" );
for( $i = 0; $i < count( $FIELDS ); $i++ ) {
fputs( $fp, $FIELDS[ $i ]." " );
}
}
fclose( $fp );
chmod( $inp_file, 0666 );
unlink( $sem_name );
# -----------------------------------------------------------
# Wait while query will be ready
# -----------------------------------------------------------
while( file_exists( $inp_file ) ) {
sleep( 1 );
clearstatcache();
}
***/
/**/
$fp = fopen( $S1_FNAME, "w" ); //'seq1.txt', "w" );
fputs( $fp, $seq1 );
fclose( $fp );
$fp = fopen( $S2_FNAME, "w" ); //'seq2.txt', "w" );
fputs( $fp, $seq2 );
fclose( $fp );
//++$fseqName = tempnam( "temp", "dh_" );
//++echo " Temp name = " , $fseqName , "
";
//$fseq = fopen( $fseqName, "w" );
//fclose( $fseqName );
//-mkdir( $fseqName, 0700 );
//$output = `dir *.* >mmap_dir.txt`;
//echo "$output
";
if( $Windows ) {
system( "e:\kvi\projects\dh\debug\dh.exe >DH.TXT" );
} else {
system( "$DHM_PROGRAM $PARMFILE > $DHM_PROTOCOL" );
}
//- exec( 'dir *.* >mmap_dir.txt');
/**/
# -----------------------------------------------------------
# Output results.
# -----------------------------------------------------------
#_________________________ Banner
//echo "Screening by Similarity Results
";
echo "
";
echo "";
echo " DotHelix: Motifs' Collection Map Results
";
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's power threshold - DotHelix","help.html#power0",$MP_THRESH_MINOR);
printPar("Motif's power threshold - significant", "help.html#powerS",
$MP_THRESH_SIGNI);
printPar("Motif's power threshold - noise upper bound", "help.html#power",
$MP_THRESH_BASIC);
printPar( "Motif's length threshold","help.html#length",$ML_THRESH );
//? printPar( "Coincidence ratio","hlp/req1hlp.html#TAG51",$C_RATIO );
printPar( "Maximum number of motifs to plot","help.html#nplot",$MN_PLOT );
printPar( "Maximum number of motifs to output","help.html#ntext",$MN_PRINT );
//$Strand = ( $TRANS == "Y" ) ? "Both" : "Only forward";
//$Cluster = ( $CLUSTER == "f" ) ? "Each frame separately" : "Codirectional joinly";
//printPar( "Strand","hlp/req1hlp.html#TAG65", $Strand );
//printPar( "Clusterization type","hlp/req1hlp.html#TAG67", $Cluster );
printPar( "Threshold of motif's homology percentage_","help.html#homology",$MHP_THRESH );
printPar( "Accurate Dothelix","help.html#accurate",$DH_ACCURATE );
printPar( "Motif frequences recalc","help.html#mfr",$MFR );
printPar( "Normalize weight matrix","help.html#mfr",$NORM );
printPar( "Weight matrices","help.html#type",$WM_LINE );
echo "
";
#_________________________ Sequences.
echo " Sequences
";
$iP = strpos( $seq1, "\n" ); // TODO: check iP ?
echo "", substr($seq1,0, $iP), "\n
";
echo substr( $seq1, $iP ),"
";;
$iP = strpos( $seq2, "\n" ); // TODO: check iP ?
echo "", substr($seq2,0, $iP), "\n
";
echo substr( $seq2, $iP ),"
";
// --------------------------------------------------------
// 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 "";
$fmot = fopen( $MOT_LIST, "r" );
#_________________________ Loop on Matrices.
for( $i = 0; $i < $numMatr; $i++ ) {
$wm_ = strToUpper( f_fileBase( $wmList[$i] ) );
$wmFile = $wmList[$i];
echo "
Weight Matrix of $wm_
";
echo "
";
//echo "
Aminoacid matrix | ";
// *********
//echo "";
echo "";
//$fmat = fopen( "../data/".$MATR.".matrix", "r" );
//+$fmat = fopen( $WMATR, "r" );
$fmat = fopen( $wmFile, "r" );
while( $buf = fgets( $fmat, 128 ) ) {
echo $buf;
}
fclose( $fmat );
//echo " | |
";
echo "";
echo "
";
?>
>
echo $wm_?>: Graphic of the Pairwise Motifs' Collection of DotHelix
//+$MATR_PREF = "mot11_";
//+for( $i = 0; $i < 2; $i++ ) {
?>
//}
?>
// --------------------------------------------------------
// List of Motifs - actually several lists.
// --------------------------------------------------------
echo "$wm_: List of Motifs
";
//+$fmot = fopen( $MOT_LIST, "r" );
while( $buf = fgets( $fmot, 128 ) ) {
//-if( !( $buf = fgets( $fmot, 128 ) ) ) break;
if( substr($buf,0,5) == "*next" )
//echo "***Next motif collection";
break;
else
echo $buf;
}
//+fclose( $fmot );
//echo "
";
?>
";
} // end Loop on WM
fclose( $fmot );
# Delete all temporary files.
if( $Linux ) {
system( "rm $S1_FNAME" );
system( "rm $S2_FNAME" );
system( "rm $MAP_MSGS" );
system( "rm $MOT_LIST" );
system( "rm $PARMFILE" ); // ? + images
for( $i = 0; $i < $numMatr; $i++ ) {
//system( "rm ".$IMAGE_PREF.$i.".png" );
}
}
?>