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

📄 link.h

📁 药物开发中的基于结构的从头设计代码
💻 H
📖 第 1 页 / 共 2 页
字号:
                char formula[40];
		char index[61];
		float binding_score;
		float chemical_score;
		float logp;
		int num_donor;
		int num_acceptor;
		int wins;
		int num_fused_ring;

                int num_atom;
                int num_bond;
		int num_part;

                Atom *atom;
                Bond *bond;

                Ligand();              		// constructor
		Ligand(int max_atom_num, int max_bond_num);
		Ligand(const Ligand &original);
		~Ligand();			// deconstructor

		Ligand& operator = (const Ligand &original);
		Ligand& operator <= (const Ligand &original);

		void Clean_Members();
		void Show_Parameter() const;
		void Show_Structure() const;
                void Read_From_Mol2(char *filename,int position=1);
                void Write_Out_Mol2(char *filename) const;
                void Read_From_Lig(char *filename,int position=1);
                void Write_Out_Lig(char *filename) const;
                void Assign_Atom_Parameters();
		void Get_Molecular_Properties(); 		
		void Get_Formula();
		void Get_Structure_Index();	
		int Get_Weight() const;		
		int Get_Num_Donor_Atom() const; 
		int Get_Num_Acceptor_Atom() const;
		void Detect_Connections(); 
		char *Get_Atom_Hybridizing_Type(Atom atm) const;
		void Translate(float move[3]);
                void Rotate(float angle,float axis[3],float origin[3]);
                Group Find_A_Group(int atom_id) const;
                void Delete_An_Atom(int atom_id);
                int Arrange_IDs();
		int Inner_Collision_Check() const;
		int Outer_Collision_Check();

		int Connection_1_2_Check(int id1, int id2) const;
		int Connection_1_3_Check(int id1, int id2) const;
		int Connection_1_4_Check(int id1, int id2) const;
		int Connection_1_5_Check(int id1, int id2) const;
		int Two_Bonds_Connection_Check(Bond b1, Bond b2) const;
		void Detect_Rings();
		void Reset_Choices(int id, int choice[]) const;
		void Check_Choices(int head, int choice[]) const;
		void Clean_Choices(int wrong, int choice[]) const;
		int Judge_If_An_Bond_In_Ring(int bond_id) const;
		int Get_Connection_Table(int ctable[]) const;

		// logp.c

		float Get_LogP(); 
		void Assign_Atom_Xtype();
		int Check_Atom_Type(Group &group) const;
		int Hydrophobic_Neighbor_Check(int id) const;
		int Adjacent_Ring_Check(int id) const;
		int Adjacent_Aromatic_Check(int id) const;
		int Count_Hydrophobic_Carbon();
		int Count_Internal_HBond();
		int Count_Halogen_1_3_Pair();
		int Count_Nar_1_4_Pair();
		int Count_O3_1_4_Pair();
		int Count_Acceptor_1_5_Pair();
		int Count_Salicylic_Acid();
		int Count_Amino_Acid();
		
		// score.c

		void Calculate_Binding_Score();
		void Calculate_Chemical_Score();
		int Chemical_Viability_Check();
		int Hydrogen_Bond_Check(Atom atom_1, Atom atom_2) const;
		void Calculate_HB_Root();	
		void Count_Rotors();
		float Get_An_Atom_VDW_Score(Atom atm) const;
		float Get_An_Atom_MB_Score(Atom atm) const;
		void Get_An_Atom_HB_Score(Atom atm, float &shb, float &mhb, 
					  float &whb, float &swh, 
					  float &mwh, float &wwh) const;
		float Get_An_Atom_HM_Score(Atom atm) const;
		float Get_An_Atom_RT_Score(Atom atm) const;

		// link.c

		int Generate_New_Structure(int seed_1, Ligand &frag, int seed_2,
					   Ligand result[24]) const;

		int Grow_A_Fragment(Ligand &core, Ligand &frag, 
				    int seed_1, int seed_2,
				    Ligand result[24]) const;

		int Join_Two_Molecules(Ligand &lig_1, Ligand &lig_2,
                       		       int seed_1, int root_1,
                       		       int seed_2, int root_2,
                       		       char new_bond_type[3], 
				       Ligand &result) const;

		int Find_Root_Of_A_Hydrogen(int id, Group &root) const; 
		int Select_A_Seed_Hydrogen() const;
		int Make_Seed_List(int seed_id[]) const;
		void Seed_Structure_Check() const;	// diff

		struct Linking_Record
			{
			 int num_link;
			 int id1[200];
			 int id2[200];
			 float rmsd;
			};

		int Link_Structure(Linking_Record &record);	// diff
		int Link_Structure();				// diff
		int Bridging(int id1, int id2);
		int Joining(int id1, int id2);
		int Fusing(int id1, int id2);		
		int Record_Sameness_Check(Linking_Record record1,
					  Linking_Record record2) const;
		int Atom_Overlap_Check(Atom atom_1, Atom atom_2) const;
		int Bonding_Match_Check(Atom atm, Group harbor) const;

		// mutate.c

		void Rational_Mutate();
		int Mutate_An_Atom(int atom_id, char grid);
		int Mutate_An_Atom_To_C3(int atom_id);
		int Mutate_An_Atom_To_C2(int atom_id);
		int Mutate_An_Atom_To_Car(int atom_id);
		int Mutate_An_Atom_To_N4(int atom_id);
		int Mutate_An_Atom_To_Nam(int atom_id);
		int Mutate_An_Atom_To_Npl3(int atom_id);
		int Mutate_An_Atom_To_N2(int atom_id);
		int Mutate_An_Atom_To_Nar(int atom_id);
		int Mutate_An_Atom_To_O3(int atom_id);
		int Mutate_An_Atom_To_H(int atom_id);
		int Mutation_Viability_Check(int atom_id) const;
		int CO_Connection_Check(Group group) const;
        };

class FragLibrary
	{
	 private:
		 Ligand *fragment;

	 public:
		 int num_frag; 

	 	 FragLibrary();			// constructor
		 ~FragLibrary();		// deconstructor

		 void Show_Content() const;
		 void Read_Library(char *dirname);
		 void Assign_Parameters();
		 int Get_A_Fragment(int frag_id, Ligand &lig) const;
		 int Make_Fragment_List(int num_wanted, int frag_id[]) const;
		 int Map_A_Molecule(const Ligand &lig) const;
	};

class Population
        {
         private:
                int num_member;
                Ligand *member;

                int num_record;
                struct Growing_Record
                        {
                         int ligand_id;
                         int lig_seed;
                         int fragment_id;
                         int frag_seed;
                        };
		Growing_Record *growing_record;

		int max_weight;
		int min_weight;
                int ave_weight;
                float max_binding_score;
		float min_binding_score;
		float ave_binding_score;
                float max_chemical_score;
		float min_chemical_score;
		float ave_chemical_score;
		float max_logp;
		float min_logp;
		float ave_logp;

         public:
                Population();   // constructor
                ~Population();  // deconstructor

                void Read_From_Lig(char *filename);
                void Write_Out_Lig(char *filename) const;

                void Initialize(Ligand core,int num_generation=0);
                void Count_Wins();
                void Statistics();
		int Select_A_Mother_Molecule() const;
		int Growing_On_Molecule(int mother_id, Ligand result[24]);
                int Add_A_Molecule_To_Result(Ligand &lig) const; 
                void Add_A_Molecule_To_Population(Ligand &lig);
		int Growing_Record_Check(Growing_Record &record) const;
		int Duplicate_Check(Ligand &lig) const;
        };

// check.c
char *New_Bond_Viability_Check(Group &group_1, Group &group_2);
int Group_Viability_Check(const Group &group);
int Conformation_Duplicate_Check(const Ligand &lig1, const Ligand &lig2);
int Molecule_Duplicate_Check(const Ligand &lig1, const Ligand &lig2);
float Cal_Molecular_Similarity(const Ligand &lig1, const Ligand &lig2);

// search.c

class Candidate
	{
	 public:
		 int num;
		 int ID[500];

		 Candidate();
		~Candidate();

		 void Reset(int target);
		 void Clean(int wrong);
		 int Select(); 
	};

int Substructure_Search(const Ligand &lig, const Ligand &frag);
int First_Level_Check(const Ligand &lig, const Ligand &frag);
void Rearrange_Matrix(int size, int matrix[], int id1, int id2);
int Compare_Two_Matrix(int size, int n1, int m1[], int n2, int m2[]);
void Show_Matrix(int subsize, int size, int matrix[]);

// misc.c
float Distance(float a[3], float b[3]);
float Distance2(float a[3], float b[3]);
void Translate_Point(float start[3], float move[3], float end[3]);
void Rotate_Point(float theta, float axis[3], float origin[3],
                  float start[3], float end[3]);
void Cross_Multiply(float v1[3], float v2[3], float result[3]);
float Point_Multiply(float v1[3], float v2[3]);
float Angle_Of_Two_Vectors(float v1[3], float v2[3]);
float Torsion_Angle(float p1[3], float p2[3], float p3[3], float p4[3]);
void Unify_Vector(float vect[3]);
void Get_Sp3_Coordinates(float v1[3], float v2[3], float v3[3], float v4[3]);
void Get_Sp2_Coordinates(float v1[3], float v2[3], float v3[3]);
void Set_Random_Number();
char *Get_Time();
int Pow(int x, int y);
int Blank_Line_Check(char *line);
void Memory_Allocation_Error();
void Openning_File_Error(char *filename);
void Reading_File_Error(char *filename);
void PDB_Format_Error(char *filename);
void Mol2_Format_Error(char *filename);
void Lig_Format_Error(char *filename);
void Missing_Parameter_Error(char *name);
void Invalid_Parameter_Error(char *name);
void Check_Directory(char *name);

⌨️ 快捷键说明

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