{ FTkey =>{ p1 p2 1/0} } // ? $FTseqName[1] = "*"; $bDomainPlus = false; if( $DOMAINEXT == "ON" ) $bDomainPlus = true; // ************************** //$bDomainPlus = false; //$bDomainPlus = true; // ************************* //$EXCLUFRAG[] = "CHAIN"; //$EXCLUFRAG[] = "HELIX"; //$EXCLUFRAG[] = "DOMAIN"; // - $excluFrag = "*,CHAIN,"; if( isset( $EXCLUFRAG[0] ) && $EXCLUFRAG[0] != "NONE" ) { if( f_afind( $EXCLUFRAG, "CHAIN" ) > -1 ) { $aExcluFrag[] = "CHAIN"; } if( f_afind( $EXCLUFRAG, "HELIX" ) > -1 ) { $aExcluFrag[] = "HELIX"; $aExcluFrag[] = "TURN"; $aExcluFrag[] = "STRAND"; } if( f_afind( $EXCLUFRAG, "DOMAIN" ) > -1 ) { $aExcluFrag[] = "DOMAIN"; $bDomainPlus = false; } } while( $buf = fgets( $finf, 512 ) ) { $sWk = substr( $buf, 0, 3 ); if( $sWk == "AC " ) { //++fputs( $fdrft, "-------------------------------------------------\n" ); //++fputs( $fdrft, $buf ); // Add fragments of the previous seq if( isset($FTseqName[1]) && isset( $aSeqFrag ) ) { //$aFrag[ $FTseqName[1] ] = $aSeqFrag; $aFr[ $FTseqName[1] ] = $aSeqFrag; //+echo "===" . $FTseqName[1] . " " . (count($aSeqFrag)/4) ."
\n"; } // Add DRs of the previous seq if( isset($FTseqName[1]) && isset( $aSeqDR ) ) { $aDR[ $FTseqName[1] ] = $aSeqDR; //+echo "
===" . $FTseqName[1] . " " . (count($aSeqDR)) ."\n"; while( list( $key, $val ) = each( $aSeqDR ) ) { //+echo "/" . $key . "/"; if( !isset( $aDRQ[ $key ] ) ) { $aDRName[ $key ] = $val; $aDRQ[ $key ] = 1; } else { ++$aDRQ[ $key ]; if( strpos( "*" . $val, "_" ) > 0 ) { $aDRName[ $key ] = $val; // with '_' } } } } // get seq name $FTseqName = split( "[ ;]+", $buf, 3 ); // [1] - 1st // echo "===" . $FTseqName[1] . "
\n"; unset( $aSeqFrag ); $iFrag = 0; unset( $aSeqDR ); // Skip 2nd and more AC lines (NB! or find seq name, if not found before...) while( $buf = fgets( $finf, 512 ) ) { $sWk = substr( $buf, 0, 3 ); if( $sWk != "AC " ) // DT line as a rule break; // ----------------> } } else if( $sWk == "DR " || $sWk == "FT " ) { //++fputs( $fdrft, $buf ); if( $sWk == "DR " ) { //&& substr( $buf, 0, 8 ) != "FT " ) { $part = split( "[ ;\r\n]+", $buf, 5 ); if( isset( $part[3] ) && $part[3] != "-." && $part[3] != "-" ) { if( !isset( $aDRskip[ $part[1] ] ) ) { $wk = strtoupper( $part[3] ); if( substr( $wk, -1, 1 ) == "." ) $wk = substr( $wk, 0, strlen($wk) - 1 ); $wk2 = str_replace( "_", "", $wk ); if( strpos( "*" . $wk, "_" ) > 0 || !isset( $aSeqDR[ $wk2 ] ) ) { $aSeqDR[ $wk2 ] = $wk; // maybe replace } //else // already OK } } } if( $sWk == "FT " && substr( $buf, 0, 8 ) != "FT " ) { $part = split( "[ ]+", $buf, 5 ); //-$part = split( "[ \r\n]+", $buf, 6 ); //echo $part[0]. "/". $part[1]. "/". $part[2]."/". $part[3]. "/". $part[4]. "
\n"; //break; //if( $part[1] != "CONFLICT" && $part[1] != "VARIANT" && $part[1] != "INIT_MET" ) { if( !isset($aFTskip[ $part[1] ]) ) { $key = $part[1]; $iWk = $iFrag*4; $aSeqFrag[$iWk] = $key; // FT SIGNAL <1 20 if( substr( $part[2], 0,1 ) == "<" ) { $aSeqFrag[$iWk+1] = intval(substr( $part[2], 1 ) ); } else { $aSeqFrag[$iWk+1] = intval( $part[2] ); // intval -> MOD_RES ?1 ?1 BLOCKED } $aSeqFrag[$iWk+2] = intval( $part[3] ); /** $aSeqFrag[$iWk+3] = 1; if( isset( $part[4] ) && (strpos( "*". $part[4], "POTENTIAL" ) > 0) ) { $aSeqFrag[$iWk+3] = 0; } **/ $aSeqFrag[$iWk+3] = ""; if( isset( $part[4] ) && $part[4] != "" ) { // remove last "." and ",": $part4 = split( "[\r\n]+", $part[4], 2 ); if( substr( $part4[0], -1, 1 ) == "." || substr( $part4[0], -1, 1 ) == "," ) { //+$aSeqFrag[$iWk+3] = substr( $part4[0], 0, strlen($part4[0]) - 1 ); //echo "substr = " . substr( $part[4], 0, strlen($part[4]) - 1 ) . "
\n"; $part[4] = substr( $part4[0], 0, strlen($part4[0]) - 1 ); } else { //+$aSeqFrag[$iWk+3] = $part4[0]; // to count qualifiers later... $part[4] = $part4[0]; } if( $bDomainPlus && $key == "DOMAIN" ) { $wk = ""; if( strpos( "*". $part[4], "BY SIMILARITY" ) ) $wk = "BY SIMILARITY"; if( strpos( "*". $part[4], "POTENTIAL" ) ) $wk = "POTENTIAL"; if( strpos( "*". $part[4], "PROBABLE" ) ) $wk = "PROBABLE"; $part4_0 = $part[4]; // save $part[4] = str_replace( "BY SIMILARITY", "", $part[4] ); $part[4] = str_replace( "POTENTIAL", "", $part[4] ); $part[4] = str_replace( "PROBABLE" , "", $part[4] ); $part[4] = str_replace( "()", "", $part[4] ); $part[4] = trim( $part[4] ); $aSeqFrag[$iWk] = $key . " " . $part[4]; //$aSeqFrag[$iWk+3] = $wk; $aSeqFrag[$iWk+3] = $part4_0; } else { $aSeqFrag[$iWk+3] = $part[4]; // to count qualifiers later... } } ++$iFrag; /*** // key + qualifier with weight $qua = ""; if( isset( $part[4] ) && strlen( $part[4] ) > 2 ) { $key2 = split( "[.\r\n]+", $part[4], 2 ); $qua = $key2[0]; echo "qua = " . $qua. "
\n"; } if( !isset( $aFTQV[ $key ] ) ) { unset( $aQV ); $aQV [ $qua ] = 1; // isset } else { $aQV = $aFTQV[ $key ]; if( !isset( $aQV[ $qua ] ) ) { $aQV[ $qua ] = 1; } else { ++$aQV[ $qua ]; } } $aFTQV[ $key ] = $aQV; ***/ // key [+qualifier] without weight if( $bFTQ && isset( $part[4] ) && strlen( $part[4] ) > 2 ) { $part[4] = str_replace( "POTENTIAL", "", $part[4] ); $part[4] = str_replace( "()", "", $part[4] ); $key2 = split( "[.\r\n]+", $part[4], 2 ); //if( strlen( $key2[0] ) > 0 ) $key .= (" " . $key2[0]); $key = trim( $key ); } /** if( !isset( $aFT[$key] ) ) { $aFT[$key] = 1; //$key2[0]; //fputs( $fft, $key ); } else { ++$aFT[$key]; } } else { //if( !isset( $part[4] ) ) { **/ if( !isset( $aFT[$key] ) ) { $aFT[$key] = 1; } else { ++$aFT[$key]; } //} } } } } fclose( $finf ); //++fclose( $fdrft ); arsort( $aDRQ ); $i = 0; // ****************************** $numDRmax = 10; // ******************************* while( list($key, $val) = each( $aDRQ ) ) { //+echo "-" . $aDRName[$key]. " = " . $val . "
\n"; if( $i < $numDRmax ) { //$aDRQQ[ $key ] = $val; $aDRN[ $key ] = $aDRName[$key]; } ++$i; } while( list($key, $val) = each( $aFT ) ) { //++echo $key . " / " . $val . "
\n"; //++fputs( $fft, $key . " / " . $val ); } //++fclose( $fft ); /** echo "*** aFTQV:
\n"; reset( $aFTQV ); while( list($key, $aQV) = each( $aFTQV ) ) { echo "--- " .$key . "
\n"; while( list( $qua, $nn ) = each( $aQV ) ) { echo "-----------" . $qua. " " . $nn . "
\n"; } } **/ include "annfrag.h"; // Set fragment colors and frequencies: $aClr = false; $numClr = 0; // *********************************** $numClrMax = intval($FRAGMAX); if( $numClrMax > 20 ) $numClrMax = 20; // upper bound //$numClrMax = 14; //7; //9; //20; // *********************************** //$red = imagecolorallocate($k,255,0,0); //$green = imagecolorallocate($k,0,128,0); //$blue = imagecolorallocate($k,0,0,255); for( $i=0; $i < $iSup; $i++) { unset( $aQ ); unset( $aQQ ); if( isset($aFr[ $aSupName[ $i ] ]) ) { $aFrag = $aFr[ $aSupName[ $i ] ]; $iFragLen = count( $aFrag ) / 4; //3; //+echo "*seq = " . $aSupName[ $i ]. " len = $iFragLen
\n"; for( $j = 0; $j < $iFragLen; ++$j ) { $jj = 4*$j; // 3*$j; $begX = 0; $lenX = 0; unset( $extra ); f_getFragPos( $aFrag[$jj+1], $aFrag[$jj+2], $beg[$i], $beg2[$i], $len[$i], $begX, $lenX, $extra ); /** if( $lenX > 0 && ($numClr < $numClrMax) ) { if( !isset($aClr[ $aFrag[$jj] ] ) ) { // *tst $iWk = $numClr % 3; $c = 0; //$red; If( $iWk == 1 ) $c = 0; //$blue; If( $iWk == 2 ) $c = 0; //$green; $aClr[ $aFrag[$jj] ] = $c; ++$numClr; } } **/ if( $lenX > 0 ) { if( !isset($aQ[ $aFrag[$jj] ] ) ) { $aQ[ $aFrag[$jj] ] = 1; } //+if( $aFrag[$jj+3] != "" ) //+ echo " * frag jj+3 = ". $aFrag[$jj+3] . "/". $aFrag[$jj]."
\n"; //+echo " * frag jj = ". $aFrag[$jj] . "/". $aSupName[ $i ]."
\n"; if( !isset($aQQ[ $aFrag[$jj] ] ) ) { unset( $aV ); $aV[ $aFrag[$jj+3] ] = 1; $aQQ[ $aFrag[$jj] ] = $aV; } else { $aV = $aQQ[ $aFrag[$jj] ]; $aV [ $aFrag[$jj+3] ] = 1; $aQQ[ $aFrag[$jj] ] = $aV; } } } //+if( !isset( $aQQ["MUTAGEN"] ) ) //+ echo "?MUTAGEN IS SET * " ."
\n"; // only keys if( isset( $aQ ) ) { while( list( $key, $val ) = each( $aQ ) ) { //++echo " ** aKeyQ = ". $key . "
\n"; if( !isset( $aKeyQ[ $key ] ) ) { $aKeyQ[ $key ] = 1; } else { ++$aKeyQ[$key]; } } } // plus qualifiers if( isset( $aQQ ) ) { while( list( $key, $aV ) = each( $aQQ ) ) { //echo " ** aKeyQ = ". $key . "
\n"; //+if( $key == "MUTAGEN" ) //+ echo "?MUTAGEN: " . "
\n"; if( !isset( $aKeyQQ[ $key ] ) ) { $aKeyQQ[ $key ] = $aV; } else { $aV0 = $aKeyQQ[ $key ]; while( list( $v, $q ) = each( $aV ) ) { //+if( $key == "MUTAGEN" ) //+ echo "?MUTA: " . $v. "
\n"; if( !isset( $aV0[ $v ] ) ) { $aV0[ $v ] = 1; } else { //+echo "*aV0 = " . $v . "
\n"; ++$aV0[$v]; } } $aKeyQQ[ $key ] = $aV0; } } } } } if( isset($aKeyQ) ) { // Tune a litle before sort while( list($key, $val) = each( $aKeyQ ) ) { //$val *= 10; if( $key == "DISULFID" || $key == "THIOLEST" || $key == "THIOETH" ) { // ok $aKeyQ[$key] = ($val*10 - 1) * 0.1; // decrease a little $aKeyQ[$key] = $val - 0.001; // decrease a little //+echo "DIS = " . $aKeyQ[$key] . "
\n"; } if( $key == "HELIX" || $key == "STRAND" || $key == "TURN" ) { $aKeyQ[$key] = $val + 0.0002; // increase a little } if( strpos( "*". $key , "DOMAIN" ) == 1 ) { $aKeyQ[$key] = $val + 0.001; // increase a little } } arsort( $aKeyQ ); //while( list($key, $val) = each( $aKeyQ ) ) { // echo "FT: = " . $aKeyQ[$key] . " " . $val . "
\n"; //} } // Translate part[4] to 0/1 weight if( isset( $aFr ) ) { reset( $aFr ); while( list( $seqName, $aFrag ) = each( $aFr )) { //$aFrag = $aFr[ $aSupName[ $i ] ]; $iFragLen = count( $aFrag ) / 4; //3; for( $j = 0; $j < $iFragLen; ++$j ) { $jj = 4*$j; // 3*$j; $v = $aFrag[$jj+3]; if( (strpos( "*". $v, "POTENTIAL" ) > 0) || (strpos( "*". $v, "POTENTIAL" ) > 0) || (strpos( "*". $v, "BY SIMILARITY" ) > 0) ) { // +PROB, BY SIM $aFrag[$jj+3] = 0; } else { $aFrag[$jj+3] = 1; } } $aFr2[ $seqName] = $aFrag; } $aFr = $aFr2; } $ft_file = $F_IM4 . $F_IMEXT; //"aft1_1.png"; $wid = $wid0; //$hei = $hei0; $key_size = 35; //40; //35; if( !isset($aFr) ) $aFr = Array(); if( !isset($aKeyQ) ) $aKeyQ = Array(); unset( $kwMap ); if( !isset($aExcluFrag) ) $aExcluFrag = Array(); makeGrapFrag( $iSup, $beg, $beg2, $len, $seqLen, $power, $ft_file, $bor, $size, $key_size, $wid, $hei, $aSupName, $seqname, $MATR, $optline, $DX0, $DX1, $DX12, $aKW01, $aPosName, $aST, $kwMap, $fttMap, $aExcluFrag, $aFr, $aKeyQ,$numClrMax, $aDRN, $aDR ); //Clr ); echo ""; // To border: echo( "" ); // FTT map: for( $i = 0; $i < count( $fttMap ); $i++) { echo( $fttMap[$i] ); } for( $i = 0; $i < count( $kwMap ); $i++) { echo( $kwMap[$i] ); } echo ""; echo "

FT Fragments and DR Keywords

"; //echo( "
" ); // border ref: echo( "" ); echo( "
" ); #_________________________ FT keyword table. if( !empty( $aKeyQ ) ) { echo "

FT Keyword Frequencies

"; //++echo "

"; // +echo ""; echo '

'; echo " "; echo " "; echo " "; echo " "; // echo ""; $iNA = 0; // num of n/a //reset( $aFTQV ); reset( $aKeyQ ); reset( $aKeyQQ ); //while( list($key, $aQV) = each( $aFTQV ) ) { while( list($key, $val) = each( $aKeyQ ) ) { $key2 = str_replace(" ", "_", $key ); echo ""; /** if( isset($aKeyQ[ $key ]) ) echo $aKeyQ[ $key ] . ""; else echo ""; **/ $iWk = $val * 100 / $iSup; $iWk = round( $iWk * 10 ) * 0.1; echo $iWk . "%"; //$aQV = $aFTQV[ $key ]; $aQV = $aKeyQQ[ $key ]; arsort( $aQV ); //reset( $aQV ); $i = 0; echo ""; echo "\n"; } } echo "
Key Key
frequency
Qualifier Qualifier
frequency
$name // $val
$key"; //+echo $aFT[ $key ] . ""; $Qfreq = ""; while( list( $qua, $nn ) = each( $aQV ) ) { if( $i > 0 ) { echo "
"; $Qfreq .= "
"; } if( empty($qua) ) { if( $iNA == 0 ) { $qua = "not available (n/a)"; } else { $qua = "n/a"; } ++$iNA; } echo $qua; $iWk = $nn * 100 / $iSup; $iWk = round( $iWk * 10 ) * 0.1; $Qfreq .= ( $iWk ."%" ); //$nn; ++$i; } echo "
$Qfreq
"; ?>