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

📄 parameter.c

📁 药物开发中的基于结构的从头设计代码
💻 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 + -