⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 prclusterhist.cc

📁 c++编写的并行拉马克遗传算法的程序。实现分析对接程序
💻 CC
字号:
/* prClusterHist.cc */#ifdef sgi    #include <stdio.h>    #include "prClusterHist.h"#else    extern "C"    {	#include <stdio.h>        #include "prClusterHist.h"    }#endifextern FILE *logFile;void prClusterHist( int ncluster,		    int irunmax,		    float clus_rms_tol,		    int num_in_clu[MAX_RUNS],		    int cluster[MAX_RUNS][MAX_RUNS],		    float econf[MAX_RUNS],		    float clu_rms[MAX_RUNS][MAX_RUNS],		    float ref_rms[MAX_RUNS]){    float         etot = 0.,		  eavg = 0.;    register int  Rank=0,	          j=0;    int           num_multi_mem_clu=0,		  ConfNum=0,		  Rank1=1;    (void)fprintf( logFile, "\n\n" );    (void)fprintf( logFile, "________________________________________________________________________________\n\n" );    (void)fprintf( logFile, "Number of distinct conformational clusters found = %d,  out of %d runs,\nUsing an rmsd-tolerance of %.1f A\n\n\n", ncluster, irunmax, (double)clus_rms_tol );     (void)fprintf( logFile, "\tCLUSTERING HISTOGRAM\n" );    (void)fprintf( logFile, "\t____________________\n\n");    (void)fprintf( logFile, "________________________________________________________________________________\n");    (void)fprintf( logFile, "     |           |     |           |     |                                    \n" );    (void)fprintf( logFile, "Clus | Lowest    | Run | Mean      | Num | Histogram                          \n" );    (void)fprintf( logFile, "-ter | Docked    |     | Docked    | in  |                                    \n" );    (void)fprintf( logFile, "Rank | Energy    |     | Energy    | Clus|    5    10   15   20   25   30   35\n" );    (void)fprintf( logFile, "_____|___________|_____|___________|_____|____:____|____:____|____:____|____:___");    for (Rank = 0;  Rank < ncluster;  Rank++) {	Rank1 = Rank + 1;	(void)fprintf( logFile, "\n%4d |", Rank1);	if (econf[cluster[Rank][0]] > 999999.99) {	    (void)fprintf( logFile, "%+10.2e", econf[cluster[Rank][0]]);	} else {	    (void)fprintf( logFile, "%+10.2f", econf[cluster[Rank][0]]);	}	(void)fprintf( logFile, " |%4d |", cluster[Rank][0]+1);        if (num_in_clu[Rank] > 1) {	    /* Calculate average energy in cluster */	    etot = 0.;	    for (j = 0;  j < num_in_clu[Rank]; j++ ) {		etot += econf[ cluster[Rank][j] ];	    }	    eavg = etot / (float)num_in_clu[Rank];            num_multi_mem_clu++;	    if (eavg > 999999.99) {		(void)fprintf( logFile, "%+10.2e |", eavg );	    } else {		(void)fprintf( logFile, "%+10.2f |", eavg );	    }	} else {	    if (econf[cluster[Rank][0]] > 999999.99) {		(void)fprintf( logFile, "%+10.2e |", econf[cluster[Rank][0]]);	    } else {		(void)fprintf( logFile, "%+10.2f |", econf[cluster[Rank][0]]);	    }	}	(void)fprintf( logFile, "%4d |", num_in_clu[Rank] );        for (j=0;  j<num_in_clu[Rank]; j++) {	    (void)fprintf( logFile, "#" );	}/*j*/    }/*Rank*/    (void)fprintf( logFile, "\n" );    (void)fprintf( logFile, "_____|___________|_____|___________|_____|______________________________________\n");    (void)fprintf( logFile, "\n" );    if (num_multi_mem_clu > 0) {        (void)fprintf( logFile, "\nNumber of multi-member conformational clusters found = %d, out of %d runs.\n\n", num_multi_mem_clu, irunmax );    }    (void)fprintf( logFile, "\n\n" );    (void)fprintf( logFile, "\tRMSD TABLE\n" );    (void)fprintf( logFile, "\t__________\n\n");    (void)fprintf( logFile, "_____________________________________________________________________\n");    (void)fprintf( logFile, "     |      |      |           |         |                 |\n");    (void)fprintf( logFile, "Rank | Sub- | Run  | Docked    | Cluster | Reference       | Grep\n");    (void)fprintf( logFile, "     | Rank |      | Energy    | RMSD    | RMSD            | Pattern\n");    (void)fprintf( logFile, "_____|______|______|___________|_________|_________________|___________\n" );    for (Rank = 0;  Rank < ncluster;  Rank++) {	Rank1 = Rank + 1;	ConfNum = 0;        for (j=0;  j<num_in_clu[Rank]; j++) {	    ++ConfNum;	    if (econf[cluster[Rank][j]] > 999999.99) {		(void)fprintf( logFile, "%4d   %4d   %4d  %+10.2e  %8.2f  %8.2f           RANKING\n", Rank1, ConfNum,  cluster[Rank][j]+1, econf[cluster[Rank][j]], ((j==0)?(0.):(clu_rms[Rank][j])), ref_rms[cluster[Rank][j]] );	    } else {		(void)fprintf( logFile, "%4d   %4d   %4d  %+10.2f  %8.2f  %8.2f           RANKING\n", Rank1, ConfNum,  cluster[Rank][j]+1, econf[cluster[Rank][j]], ((j==0)?(0.):(clu_rms[Rank][j])), ref_rms[cluster[Rank][j]] );	    }        }   /*j*/        //(void)fprintf( logFile, ".......................................................................\n" );    }/*Rank*/    (void)fprintf( logFile, "_______________________________________________________________________\n\n");    //(void)fprintf( logFile, "________________________________________________________________________________\n\n" );    fflush( logFile );}/* EOF */	/*	** kend = num_in_clu[Rank] - 1;        ** (void)fprintf( logFile, "________________________________________________________________________________\n" );        ** (void)fprintf( logFile, "ClusterRank=%d\t", Rank1 );        ** (void)fprintf( logFile, "NumberOfMembers= %d:\n", num_in_clu[Rank] );	*/	/*        ** for (j=0;  j<num_in_clu[Rank]; j+=OUTNUMCLUST) {            ** kmax = min(num_in_clu[Rank],(j + OUTNUMCLUST));            ** (void)fprintf( logFile, "\nClusterRank=%d\tNum=         \t", Rank1 );            ** for (k = j; k < kmax;  k++ ) {                ** (void)fprintf( logFile, "%8d%s", ConfNum, (k == kend)?";":"," );		** ++ConfNum;            ** }            ** (void)fprintf( logFile, "\nClusterRank=%d\tRun=         \t", Rank1 );            ** for (k = j; k < kmax;  k++ ) {                ** (void)fprintf( logFile, "%8d%s", 1+cluster[Rank][k], (k == kend)?";":"," );            ** }            ** (void)fprintf( logFile, "\nClusterRank=%d\tEnergy=      \t", Rank1 );            ** for (k = j; k < kmax; k++ ) {                ** (void)fprintf( logFile, "%+8.2f%s", (double)econf[cluster[Rank][k]], (k == kend)?";":","  );            ** }            ** (void)fprintf( logFile, "\nClusterRank=%d\tClusterRMS=  \t", Rank1 );            ** for (k = j; k < kmax; k++ ) {                ** (void)fprintf( logFile, "%8.2f%s", (double)((k==0)?(0.):(clu_rms[Rank][k])), (k == kend)?";":","  );            ** }            ** (void)fprintf( logFile, "\nClusterRank=%d\tReferenceRMS=\t", Rank1 );            ** for (k = j; k < kmax; k++ ) {                ** (void)fprintf( logFile, "%8.2f%s", (double)ref_rms[cluster[Rank][k]], (k == kend)?";":","  );            ** }            ** (void)fprintf( logFile, "\n" );	    */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -