$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 ); } /** $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") ); **/ /** //$PROTEIN = Array ( "dayhoff.matrix" $wmPROTEIN[0] = "dayhoff"; $wmPROTEIN[1] = "johnson"; $wmPROTEIN[2] = "blosum30"; $wmPROTEIN[3] = "blosum50"; $wmPROTEIN[4] = "blosum62"; $wmPROTEIN[5] = "reserved"; $wmPROTEIN[6] = "pam60"; $wmPROTEIN[7] = "pam120"; $wmPROTEIN[8] = "pam250"; $wmPROTEIN[9] = "gon120"; $wmPROTEIN[10] = "gon250"; $wmPROTEIN[11] = "gon350"; $wmDNARNA = "dnarna"; **/ // ----------------------- // 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( isset( $dnarna ) ) { // if( $MOLTYPE == $PROTEIN ) { if( isset( $wmatr ) ) { if( $MOLTYPE == $PROTEIN && ($wmatr[0] == "dnarna") ) { // *** echo "

Warning: The sequences seem to be Protein, but you have selected DNA matrix.


"; } //+$MOLTYPE = $DNA; // 0 } //if( isset( $protein ) ) { // if( $MOLTYPE == $DNA ) { if( isset( $wmatr ) ) { if( $MOLTYPE == $DNA && ($wmatr[0] != "dnarna" || count($wmatr) > 1) ) { // *** echo "

Warning: The sequences seem to be DNA, but you have selected Protein matrix.


"; } //+$MOLTYPE = $PROTEIN; // 0 } // Default matrix: //if( !isset( $dnarna ) && !isset( $protein ) ) { if( !isset( $wmatr ) ) { if( $MOLTYPE == $PROTEIN ) { //$wmatr[0] = "blosum30"; // *** $wmatr[0] = "dayhoff"; // *** } else { $wmatr[0] = "dnarna"; // *** } } ******/ //+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_"; } **/ /***** //$iL = sizeof( $wmPROTEIN ); $iL = count( $wmatr ); for( $i = 0; $i < $iL; $i++ ){ //if( !isset( $protein[ $i ] ) ) continue; // <------ //$wm_ = $wmPROTEIN[ $i ]; $wm_ = $wmatr[ $i ]; if( isset( $WM_LINE ) ) { $WM_LINE = "$WM_LINE, $wm_"; } else { $WM_LINE = $wm_; } $wmList[] = $wm_ . ".matrix"; } $numMatr = count( $wmList ); $WM_LINE = strToUpper( $WM_LINE ); // --------------------------> wmList, numMatr *****/ #______________________________Auto height function f_numSeq( $Align ) { $aLi = split( "[\n]", $Align ); $iL = count( $aLi ); // Skip first non-seq ( starting with blank ): for( $i = 0; $i < $iL; ++$i ) { if( strpos( $aLi[$i], " " ) > 0 ) break; } $numSeq = 0; for( ; $i < $iL; ++$i ) { if( strpos( $aLi[$i], " " ) == 0 ) { break; } $numSeq++; } return $numSeq; } // - - - - - - - - - - - - - function f_setAlignOpt( $ALIGN, $ALGO, $PARMFILE, $hei0, $IMAGE_PREF ) { // $hei0 - maybe AUTO global $WIDTH, $HEIGHT, $FILLING, $SPLIT, $TITLE; global $auto_hei, $wid, $hei; global $PICTURE, $PicType, $SELGROUP, $GROUPTYPE, $PicSelType, $ImageTail; global $PicTitle, $sPicLine; global $MATR, $ERRFILE; // *** 22.08.2001 //echo " *** hei0 = " . $hei0 . "
\n"; $auto_hei = FALSE; //if( strtoupper($HEIGHT) == "AUTO" ) { if( strtoupper($hei0) == "AUTO" ) { $numSeq = f_numSeq( $ALIGN ); //+echo "
numSeq = " . $numSeq . "
\n"; $HEIGHT = $numSeq * 20 + 26 + 10 + 22 + 3*16 + 7; if( $HEIGHT < 150 ) $HEIGHT = 150; if( $HEIGHT > 6000 ) $HEIGHT = 6000; $auto_hei = TRUE; //echo " *** auto/hei = " . $HEIGHT . "
\n"; // *** 0 - AUTO inside C++ prog $HEIGHT = 0; } ## ## width & height ## $wid = $WIDTH; $hei = $HEIGHT; if( empty($wid) ) { $wid = 800; } ## default //if( empty($hei) ) { $hei = 480; } ## default if( empty($hei) ) { $hei = 0; $auto_hei = TRUE; } ## default AUTO if( $wid < 450 ) { $wid = 450; } ## min if( $wid > 3000 ) { $wid = 3000; } ## max //if( $hei < 240 ) { $hei = 240; } ## min //if( $hei > 1500 ) { $hei = 1500; } ## max if( $hei < 200 && !$auto_hei ) { $hei = 200; } ## min if( $hei > 10000 ) { $hei = 10000; } ## max //echo " *** wid/hei = " . $wid . "/" . $hei . "
\n"; #______________________________PARMFILE $fp = fopen( $PARMFILE, "w" ); fputs( $fp, "-i". $IMAGE_PREF ."_\n" ); // OK "-irun\\\\\clu3_\n" -> -irun\\clu3_ //fputs( $fp, "-W". $WIDTH ."\n" ); //fputs( $fp, "-H". $HEIGHT ."\n" ); fputs( $fp, "-W". $wid ."\n" ); fputs( $fp, "-H". $hei ."\n" ); if( $ALGO != "" ) fputs( $fp, "-A". $ALGO ."\n" ); if( $TITLE != "" ) fputs( $fp, "-T". $TITLE ."\n" ); fputs( $fp, "-f". $FILLING ."\n" ); if( $SPLIT != "NONE" ) fputs( $fp, "-S". $SPLIT ."\n" ); // +Matrix file.. if( $GROUPTYPE == "AUTO" ) { // *nothing: see C++ prog } else if( $GROUPTYPE == "PROTEIN" ) { if( !isset( $MATR ) ) fputs( $fp, "-m". "blosum62.matrix" ."\n" ); fputs( $fp, "-g". "color10.def" ."\n" ); } else if( $GROUPTYPE == "DNARNA" ) { if( !isset( $MATR ) ) fputs( $fp, "-m". "dnarna.matrix" ."\n" ); fputs( $fp, "-g". "color5.def" ."\n" ); } if( isset( $MATR ) ) { fputs( $fp, "-m". $MATR . ".matrix" ."\n" ); // if... } fputs( $fp, "-E". $ERRFILE ."\n" ); // error file name $numPic = count($PICTURE); $PicType = Array ( "ALLGROUPS" => "0", "MAXATCOL" => "1", "SELGROUPS" => "2", "STAT1" => "11", "STAT2" => "12", "STAT99" => "0" ); $PicSelType = "11"; $PicTitle = Array ( "ALLGROUPS" => "All groups", "MAXATCOL" => "Max group at column", "SELGROUPS" => "Selected groups", "STAT1" => "Column values", "STAT2" => "Column values (best-to-worst)", "STAT99" => "0" ); $ImageTail = Array ( "ALLGROUPS" => "a", "MAXATCOL" => "m", "SELGROUPS" => "se", "STAT1" => "s1", "STAT2" => "s2", "STAT99" => "0" ); $sPicLine = ""; if( isset( $PICTURE[0] ) && $PICTURE[0] != "NONE" ) { for( $i = 0; $i < $numPic; $i++ ) { fputs( $fp, "-t". $PicType[ $PICTURE[$i] ] ."\n" ); if( $i == 0 ) { $sPicLine = $PicTitle[ $PICTURE[$i] ]; } else { $sPicLine = $sPicLine . ",
" .$PicTitle[ $PICTURE[$i] ]; } } } $numSel = count( $SELGROUP ); //+echo "numSel = " . $numSel . "
"; if( isset( $SELGROUP[0] ) && $SELGROUP[0] != "UNSELECTED" ) { $selTit = $PicTitle["SELGROUPS"] . ": "; if( $sPicLine == "" ) { $sPicLine = "Selected groups: "; } else { $sPicLine = $sPicLine . ",
Selected groups: "; } $dlm = " "; // Only gaps if( $SELGROUP[0] == "99" ) { $sPicLine = $sPicLine . " only gaps"; $selTit = $selTit . " only gaps"; fputs( $fp, "-s". $SELGROUP[ 0 ] ."\n" ); } else { for( $i = 0; $i < $numSel; $i++ ) { // Remove 99 from selected group. 99 maybe just the last selection. if( $SELGROUP[ $i ] == "99" ) break; fputs( $fp, "-s". $SELGROUP[ $i ] ."\n" ); //$iWk = $sPicLine = $sPicLine . $dlm . (($SELGROUP[ $i ]) + 1); $selTit = $selTit . $dlm . (($SELGROUP[ $i ]) + 1); $dlm = ", "; } } $PicTitle["SELGROUPS"] = $selTit; } //$PicTitle["SELGROUPS"] = $selTit; fclose( $fp ); } // eof f_setAlignOpt() function f_exeAlignProg( $ALIGN, $PROG, $PARMFILE, $ALIGNFILE, $PROTOCOL ) { $fp = fopen( $ALIGNFILE, "w" ); // fputs( $fp, $ALIGN ); fclose( $fp ); #________________________________________________C++ CALL system( "$PROG $PARMFILE $ALIGNFILE > $PROTOCOL" ); } function f_outAlignSpecopt() { global $WIDTH, $HEIGHT, $FILLING, $SPLIT, $GROUPTYPE, $sPicLine, $auto_hei; //$TITLE; global $wid, $hei; global $MATR; // *** 22.08.2001 if( $WIDTH == $wid ) { printPar( "Alignment picture width" , "help.html#WIDTH", $WIDTH ); } else { printPar( "Alignment picture width" , "help.html#WIDTH", $WIDTH . " (adjusted to ".$wid.")" ); } if( $auto_hei ) { //printPar( "Alignment picture height", "help.html#HEIGHT", "AUTO: " . $hei ); //$HEIGHT ); printPar( "Alignment picture height", "help.html#HEIGHT", "AUTO" ); //$HEIGHT ); } else { if( $HEIGHT == $hei ) { printPar( "Alignment picture height", "help.html#HEIGHT", $HEIGHT ); } else { printPar( "Alignment picture height", "help.html#HEIGHT", $HEIGHT . " (adjusted to ".$hei.")" ); } } $sWk = "Even"; if( $FILLING == "6" ) $sWk = "Sparse"; if( $FILLING == "7" ) $sWk = "Very sparse"; printPar( "Coloring mode" , "help.html#FILLING", $sWk ); //if( $SPLIT == "NONE" ) printPar( "Splitting block size" , "help.html#SPLIT", $SPLIT ); //else // printPar( "Splitting block size" , "help.html#SPLIT", $SPLIT . " (reserved).
" . // "Sorry this option is not implemented yet." ); if( isset( $MATR ) ) { printPar( "Weight matrix" , "help.html#matrices", $MATR ); } $MT_ERR = ""; if( isset( $MATR ) && $GROUPTYPE != "AUTO" ) { if( ($GROUPTYPE == "DNARNA" && $MATR != "dnarna" ) || ($GROUPTYPE != "DNARNA" && $MATR == "dnarna" ) ) { $MT_ERR = "
WARNING:
You selected " .( $MATR == "dnarna" ? "nucleotide" : " protein") . " matrix and " .( $MATR != "dnarna" ? "nucleotide" : " protein") . " groups.
Result may be inconsistent.
"; } } printPar( "Color group type" , "help.html#GROUPS", $GROUPTYPE . $MT_ERR ); printPar( "Alignment picture types" , "help.html#PICTURE", $sPicLine ); //printPar( "Normalize weight matrix","help.html#mfr",( $NORM == 1 ) ? "ON" : "OFF" ); //printPar( "Weight matrices","help.html#type",$WM_LINE ); } // end of f_outAlignSpecOpt() ## ## Picture (Form) ## function f_outAlignImages( $pref1, $pref2, $IMAGE_PREF ) { // "pic_", "gali_im" global $PICTURE, $PicType, $SELGROUP, $PicSelType, $ImageTail; global $wid, $hei, $PicTitle; $fn = $IMAGE_PREF; $numPic = count($PICTURE); ## Load Images ## (not the case - needed for rolling pictures - if any, some other day...) print "\n"; // Tags for( $i = 0; $i < $numPic; $i++ ){ $ty = $PicType [ $PICTURE[$i] ]; if( $ty > 10 ) continue; $tail = $ImageTail[ $PICTURE[$i] ]; print "

". $PicTitle[$PICTURE[$i]] . "

\n"; //print "
// // //
//print "
//

\n"; //width=".$wid." height=".$hei." >

\n"; //

\n"; } for( $i = 0; $i < $numPic; $i++ ){ $ty = $PicType [ $PICTURE[$i] ]; if( $ty <= 10 ) continue; $tail = $ImageTail[ $PICTURE[$i] ]; print "

". $PicTitle[$PICTURE[$i]] . "

\n"; //print "
// // //
print "

\n"; //width=".$wid." height=".$hei." >

\n"; //

\n"; } } // eof f_outAlignImages() ?>