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

📄 bestpdb.cc

📁 c++编写的并行拉马克遗传算法的程序。实现分析对接程序
💻 CC
字号:
/* bestpdb.cc */#ifdef sgi    #include <stdio.h>    #include <string.h>    #include "constants.h"    #include "print_rem.h"    #include "strindex.h"    #include "print_avsfld.h"    #include "bestpdb.h"#else    extern "C"    {	#include <stdio.h>	#include <string.h>	#include "constants.h"	#include "print_rem.h"	#include "strindex.h"	#include "print_avsfld.h"        #include "bestpdb.h"    }#endifextern FILE *logFile;extern int keepresnum;extern char dock_param_fn[];void bestpdb( int ncluster, 	      int num_in_clu[MAX_RUNS],	      int cluster[MAX_RUNS][MAX_RUNS],	      float econf[MAX_RUNS],	      float crd[MAX_RUNS][MAX_ATOMS][SPACE],	      char atomstuff[MAX_ATOMS][MAX_CHARS],	      int natom,	      Boole B_write_all_clusmem,	      float ref_rms[MAX_RUNS]){    register int  i=0,	          j=0,	          k=0,		  confnum=0;    int           c = 0,		  kmax = 0,		  /* imol = 0, */		  indpf = 0,		  off[7],		  nframes = 0,	          stride = 0,		  c1 = 1,		  i1 = 1;		      char          rec13[14],		  filnm[MAX_CHARS],		  label[MAX_CHARS],		  rec8[9];    pr( logFile, "\n\tLOWEST ENERGY DOCKED CONFORMATION from EACH CLUSTER");    pr( logFile, "\n\t___________________________________________________\n\n\n" );    if (keepresnum > 0 ) {	pr( logFile, "\nKeeping original residue number (specified in the input PDBQ file) for outputting.\n\n");    } else {	pr( logFile, "\nResidue number will be the conformation's rank.\n\n");    }    for (i = 0;  i < ncluster;  i++) {        i1 = i + 1;        if (B_write_all_clusmem) {            kmax = num_in_clu[i];        } else {            kmax = 1;	/* write lowest-energy only */        }        for ( k = 0; k < kmax; k++ ) {            c = cluster[i][k];            c1 = c + 1;            fprintf( logFile, "USER    DPF = %s\n", dock_param_fn);            fprintf( logFile, "USER    Conformation Number = %d\n", ++confnum);            print_rem(logFile, i1, num_in_clu[i], c1, ref_rms[c]);            if (keepresnum > 0) {                fprintf( logFile, "USER                              x       y       z   Rank Run  Energy    RMS\n");                for (j = 0;  j < natom;  j++) {                    strncpy( rec13, &atomstuff[j][13], (size_t)13);                    rec13[13]='\0';                    fprintf( logFile, "ATOM  %5d  %13s    %8.3f%8.3f%8.3f %3d %3d %+8.2f %8.3f\n", j+1, rec13, crd[c][j][X], crd[c][j][Y], crd[c][j][Z], i1, c1, econf[c], ref_rms[c] );                } /* j */            } else {                fprintf( logFile, "USER                   Rank       x       y       z    Run   Energy    RMS\n");                for (j = 0;  j < natom;  j++) {                    strncpy( rec8, &atomstuff[j][13], (size_t)8);                    rec8[8]='\0';                    fprintf( logFile, "ATOM  %5d  %8s%5d    %8.3f%8.3f%8.3f %3d %+8.2f %8.3f\n", j+1, rec8, i1, crd[c][j][X], crd[c][j][Y], crd[c][j][Z], c1, econf[c], ref_rms[c] );                } /* j */            }            fprintf( logFile, "TER\n" );            fprintf( logFile, "ENDMDL\n" );            fflush( logFile );            nframes++;        } /* for k */    } /* for i */    fprintf( logFile, "\n" );    strcpy(label, "x y z Rank Run Energy RMS\0" );    if (keepresnum > 0) {        off[0]=5; off[1]=6; off[2]=7; off[3]=8; off[4]=9; off[5]=10; off[6]=11;        stride=12;    } else {        off[0]=5; off[1]=6; off[2]=7; off[3]=4; off[4]=8; off[5]=9; off[6]=10;        stride=11;    } /* if */         indpf = strindex( dock_param_fn, ".dpf" );    strncpy( filnm, dock_param_fn, (size_t)indpf );    filnm[ indpf ] = '\0';    strcat( filnm, ".dlg.pdb\0" );         print_avsfld( logFile, 7, natom, nframes, off, stride, label, filnm );}/* EOF */

⌨️ 快捷键说明

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