📄 parameter.c
字号:
# include "process.h"
Parameter::Parameter(char *filename)
{
strcpy(ligands_file,"none");
similarity_cutoff=0.90;
num_output=200;
strcpy(output_dir,"results.mdb");
max_mol_weight=600;
min_mol_weight=200;
max_logp=6.00;
min_logp=2.00;
max_pkd=10.00;
min_pkd=5.00;
Read_Index(filename);
Check_Output_Directory();
}
Parameter::~Parameter()
{
// deconstructor
}
void Parameter::Read_Index(char *filename)
{
FILE *fp;
char buf[160],head[80];
int num_error;
if((fp=fopen(filename,"r"))==NULL) Openning_File_Error(filename);
for(;;)
{
if(fgets(buf,160,fp)==NULL) break;
else if(buf[0]=='#') continue;
else if(Blank_Line_Check(buf)==TRUE) continue;
else sscanf(buf,"%s",head);
if(!strcmp(head,"LIGAND_COLLECTION_FILE"))
{
sscanf(buf,"%*s%s",ligands_file);
}
else if(!strcmp(head,"SIMILARITY_CUTOFF"))
{
sscanf(buf,"%*s%f",&similarity_cutoff);
}
else if(!strcmp(head,"NUMBER_OF_OUTPUT_MOLECULES"))
{
sscanf(buf,"%*s%d",&num_output);
}
else if(!strcmp(head,"OUTPUT_DIRECTORY"))
{
sscanf(buf,"%*s%s",output_dir);
}
else if(!strcmp(head,"MAXIMAL_MOLECULAR_WEIGHT"))
{
sscanf(buf,"%*s%d",&max_mol_weight);
}
else if(!strcmp(head,"MINIMAL_MOLECULAR_WEIGHT"))
{
sscanf(buf,"%*s%d",&min_mol_weight);
}
else if(!strcmp(head,"MAXIMAL_LOGP"))
{
sscanf(buf,"%*s%f",&max_logp);
}
else if(!strcmp(head,"MINIMAL_LOGP"))
{
sscanf(buf,"%*s%f",&min_logp);
}
else if(!strcmp(head,"MAXIMAL_PKD"))
{
sscanf(buf,"%*s%f",&max_pkd);
}
else if(!strcmp(head,"MINIMAL_PKD"))
{
sscanf(buf,"%*s%f",&min_pkd);
}
else continue;
}
fclose(fp);
num_error=0;
if(!strcmp(ligands_file,"none"))
{
Missing_Parameter_Error("LIGAND_COLLECTION_FILE");
num_error++;
}
if(similarity_cutoff<0.00||similarity_cutoff>1.00)
{
Invalid_Parameter_Error("SIMILARITY_CUTOFF");
num_error++;
}
if(max_mol_weight<min_mol_weight)
{
puts("Error: MAXIMAL_MOLECULAR_WEIGHT < MINIMAL_MOLECULAR_WEIGHT");
num_error++;
}
if(max_logp<min_logp)
{
puts("Error: MAXIMAL_LOGP < MINIMAL_LOGP");
num_error++;
}
if(max_pkd<min_pkd)
{
puts("Error: MAXIMAL_PKD < MINIMAL_PKD");
num_error++;
}
if(num_output<=0)
{
Invalid_Parameter_Error("NUMBER_OF_OUTPUT_MOLECULES");
num_error++;
}
Check_Directory(output_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("\n");
printf("LIGAND_COLLECTION_FILE\t\t%s\n",ligands_file);
printf("SIMILARITY_CUTOFF\t\t%-5.2f\n",similarity_cutoff);
printf("NUMBER_OF_OUTPUT_MOLECULES\t%d\n",num_output);
printf("OUTPUT_DIRECTORY\t\t%s\n",output_dir);
printf("MAXIMAL_MOLECULAR_WEIGHT\t%d\n",max_mol_weight);
printf("MINIMAL_MOLECULAR_WEIGHT\t%d\n",min_mol_weight);
printf("MAXIMAL_LOGP\t%5.2f\n",max_logp);
printf("MINIMAL_LOGP\t%5.2f\n",min_logp);
printf("MAXIMAL_PKD\t%6.2f\n",max_pkd);
printf("MINIMAL_PKD\t%6.2f\n",min_pkd);
return;
}
void Parameter::Check_Output_Directory() const
{
FILE *fp;
char filename[160],command[160];
strcpy(filename,output_dir); strcat(filename,".");
if((fp=fopen(filename,"r"))==NULL)
{
strcpy(command,"mkdir ");
strcat(command,output_dir);
system(command);
printf("\nDirectory '%s' does not exist ... ", output_dir);
printf("it is created automatically.\n\n");
}
fclose(fp);
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -