📄 process.h
字号:
# include <stdio.h>
# include <string.h>
# include <stdlib.h>
# include <math.h>
# include <time.h>
# define TRUE 1
# define FALSE 0
# define ATOM_OVERLAP_RANGE 0.50
class Atom
{
public:
int id; // ID
int valid; // valid indicator
int part; // component indicator
int num_neib; // number of neighboring atoms
int num_nonh; // number of non-H neighboring atoms
int neib[10]; // ID of neighboring atoms
char name[10]; // name of the atom
char type[10]; // SYBYL atom type
char xtype[20]; // SCORE atom type
float coor[3]; // coordinates
float root[3]; // h-bond roots' coordinates
float r; // vdw radius
float eps; // vdw epsilon value
int weight; // atomic weight
float R; // SCORE radius
float logp; // atomic hydrophobic scale
char hb[3]; // h-bond property
float score; // atomic binding score
int ring; // ring indicator
Atom(); // constructor
~Atom(); // deconstructor
void Show_Content() const;
};
class Bond
{
public:
int id;
int valid; // valid indicator
int atom_1; // ID of the atom_1
int atom_2; // ID of the atom_2
char type[3]; // bond type
int part; // ID of the component
int ring; // ring indicator
float length; // bond length
int num_neib; // number of neighboring bonds
int neib[10]; // ID of neighboring bonds
Bond(); // constructor
~Bond(); // deconstructor
void Show_Content() const;
};
class Torsion
{
public:
Atom atom_1;
Atom atom_2;
Atom atom_3;
Atom atom_4;
char type[3]; // type of the torsion between 2-3
int angle; // torsion angle, in degree
float V; // potential barrier
int n; // periodicity
int S; // sign
float e; // torsion energy
Torsion(); // constructor
~Torsion(); // deconstructor
void Show_Content() const;
};
class Group
{
public:
int valid;
int num_neib; // number of neighboring atoms
int num_nonh; // number of neighboring non-h atoms
int num_h; // number of neighboring hydrogen atoms
int num_hetero; // number of neighboring heteroatoms
int num_pi; // number of neighboring pi atoms
int num_car; // number of neighboring c.ar
int num_nar; // number of neighboring n.ar
int db_type; // double bond type
Atom center; // center atom of the group
Atom neib[10]; // neighboring atoms
Bond bond[10]; // bonds
Group(); // constructor
~Group(); // deconstructor
void Show_Content() const;
};
class Parameter
{
public:
char ligands_file[160];
float similarity_cutoff;
int num_output;
char output_dir[160];
int max_mol_weight;
int min_mol_weight;
float max_logp;
float min_logp;
float max_pkd;
float min_pkd;
Parameter(char *filename);
~Parameter();
void Show_Content() const;
void Read_Index(char *filename);
void Check_Output_Directory() const;
};
class Ligand
{
public:
int id;
float possibility;
int valid;
char name[80];
int weight;
char formula[40];
char index[61];
float binding_score;
float chemical_score;
float logp;
int num_donor_atom;
int num_acceptor_atom;
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;
};
class Population
{
private:
int num_output;
Ligand *output;
int num_valid;
Ligand *pool;
int num_member;
struct Record
{
int valid;
int id;
char name[80];
int weight;
char formula[40];
char index[61];
float binding_score;
float chemical_score;
float logp;
int wins;
};
Record *member;
float *sim_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 Analyze_Population(char *filename);
void Extract_Members(char *filename);
void Select_Results();
void Cluster_Results();
void Output_Results();
void Target_Similarity(char *filename);
};
// 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);
// 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 + -