📄 parameter.c
字号:
# include "pocket.h"
Parameter::Parameter()
{
strcpy(pdb_file,"none");
strcpy(lig_file,"none");
strcpy(parameter_dir,"none");
strcpy(pocket_file,"pocket.txt");
strcpy(grid_file,"grid.txt");
strcpy(interact_file,"key_site.pdb");
strcpy(pharmacophore_pdb,"pharmacophore.pdb");
strcpy(pharmacophore_txt,"pharmacophore.txt");
min_feature_distance=3.50;
max_feature_number=8;
}
Parameter::~Parameter()
{
}
void Parameter::Read_Index(char *filename)
{
extern Protein *prot;
FILE *fp;
char buf[160],head[80];
int i,num_error;
if((fp=fopen(filename,"r"))==NULL) Openning_File_Error(filename);
prot->num_pocket_res=0;
for(;;)
{
if(fgets(buf,160,fp)==NULL) break;
else if(Blank_Line_Check(buf)==TRUE) continue;
else if(buf[0]=='#') continue;
else sscanf(buf,"%s",head);
if(!strcmp(head,"RECEPTOR_FILE"))
{
sscanf(buf,"%*s%s",pdb_file);
}
else if(!strcmp(head,"LIGAND_FILE"))
{
sscanf(buf,"%*s%s",lig_file);
}
else if(!strcmp(head,"PARAMETER_DIRECTORY"))
{
sscanf(buf,"%*s%s",parameter_dir);
}
else if(!strcmp(head,"POCKET_ATOM_FILE"))
{
sscanf(buf,"%*s%s",pocket_file);
}
else if(!strcmp(head,"POCKET_GRID_FILE"))
{
sscanf(buf,"%*s%s",grid_file);
}
else if(!strcmp(head,"KEY_SITE_FILE"))
{
sscanf(buf,"%*s%s",interact_file);
}
else if(!strcmp(head,"PHARMACOPHORE_PDB_FILE"))
{
sscanf(buf,"%*s%s",pharmacophore_pdb);
}
else if(!strcmp(head,"PHARMACOPHORE_TXT_FILE"))
{
sscanf(buf,"%*s%s",pharmacophore_txt);
}
else if(!strcmp(head,"POCKET_RESIDUE"))
{
// this is another way to define the binding pocket
// using definitions of POCKET_RESIDUE in the index
// but it is not mentioned in the user manual
// add a default chain label 'A'
i=strlen(buf); i--; buf[i]='\0'; strcat(buf," A");
sscanf(buf,"%*s%s%s%c",
prot->pocket_res[prot->num_pocket_res].name,
prot->pocket_res[prot->num_pocket_res].id,
&prot->pocket_res[prot->num_pocket_res].chain);
prot->pocket_res[prot->num_pocket_res].valid=1;
prot->num_pocket_res++;
}
else if(!strcmp(head,"MINIMAL_FEATURE_DISTANCE"))
{
sscanf(buf,"%*s%f",&min_feature_distance);
}
else if(!strcmp(head,"MAXIMAL_FEATURE_NUMBER"))
{
sscanf(buf,"%*s%d",&max_feature_number);
}
else continue;
}
fclose(fp);
num_error=0;
if(!strcmp(pdb_file,"none"))
{
Missing_Parameter_Error("RECEPTOR_FILE");
num_error++;
}
if(!strcmp(lig_file,"none"))
{
Missing_Parameter_Error("LIGAND_FILE");
num_error++;
}
if(!strcmp(parameter_dir,"none"))
{
Missing_Parameter_Error("PARAMETER_DIRECTORY");
num_error++;
}
if(min_feature_distance<0.00)
{
Invalid_Parameter_Error("MAXIMAL_FEATURE_NUMBER");
num_error++;
}
if(max_feature_number<=0)
{
Invalid_Parameter_Error("MAXIMAL_FEATURE_NUMBER");
num_error++;
}
Check_Directory(parameter_dir);
if(num_error!=0)
{
printf("\n");
printf("%d errors have been detected in the parameter file.\n",num_error);
printf("Please correct them and try again.\n");
exit(1);
}
return;
}
void Parameter::Show_Content() const
{
printf("\nRECEPTOR_FILE\t%s\n", pdb_file);
printf("LIGAND_FILE\t%s\n", lig_file);
printf("PARAMETER_DIRECTORY\t%s\n", parameter_dir);
printf("POCKET_ATOM_FILE\t%s\n", pocket_file);
printf("POCKET_GRID_FILE\t%s\n", grid_file);
printf("KEY_SITE_FILE\t%s\n", interact_file);
printf("PHARMACOPHORE_PDB_FILE\t%s\n", pharmacophore_pdb);
printf("PHARMACOPHORE_TXT_FILE\t%s\n", pharmacophore_txt);
printf("MINIMAL_FEATURE_DISTANCE\t%5.2f\n", min_feature_distance);
printf("MAXIMAL_FEATURE_NUMBER\t%d\n\n", max_feature_number);
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -