📄 link.h
字号:
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 + -