mol.h

来自「最经典的分子对结软件」· C头文件 代码 · 共 437 行

H
437
字号
/*                                                                    *//*                        Copyright UCSF, 1997                        *//*                                                                    *//*Written by Todd Ewing5/97*//*Structures to hold molecule data5/97 te*/typedef struct info_struct{  int	input_id;		/* id from input file */  int	output_id;		/* id for output file */  char	*name;			/* name string */  char	*comment;		/* comment string */  char	*molecule_type;		/* type string (from sybyl) */  char	*charge_type;		/* charge string (from sybyl) */  char	*status_bits;		/* status string (from sybyl) */  char	*source_file;		/* name of source file (ptr format) */  long	source_position;	/* file position in source (ptr format) */  long	file_position;		/* position in input file */  int	allocated;		/* flag for array allocation */  int	assign_chem;		/* flag for chemical label assignment */  int	assign_vdw;		/* flag for vdw label assignment */  int	assign_flex;		/* flag for flex label assignment */} INFO;typedef struct transform_struct{  int	flag;			/* flag for transformation */  int	trans_flag;		/* flag for rigid body translation */  int	rot_flag;		/* flag for rigid body rotation */  int	refl_flag;		/* flag for chiral reflection */  int	tors_flag;		/* flag for bond rotation */  XYZ	translate;		/* translation from reference */  XYZ	rotate;			/* rotation from reference */  int	conf_total;		/* Number of conformations */  int	anchor_segment;		/* Anchor segment */  int	anchor_atom;		/* Anchor atom */  int	active_layer;		/* Current active layer */  int	fold_flag;		/* flag for chemical key folding */  XYZ	com;			/* center of mass of current position */  float	rmsd;			/* RMS deviation from reference */  int	heavy_total;		/* Number of non-hydrogen atoms */} TRANSFORM;typedef struct score_part_struct{  int	current_flag;		/* Flag for whether score up-to-date */  float electro;		/* Electrostatic component of score */  float vdw;			/* Van der Waals component of score */  float total;			/* Total score */} SCORE_PART;typedef struct mol_score_struct{  int	type;			/* type of score method */  int	bumpcount;		/* number of bumps */  SCORE_PART	intra;		/* intramolecular score */  SCORE_PART	inter;		/* intermolecular score */  float	total;			/* total score */} MOL_SCORE;typedef struct arraysize_struct{  int	atoms;			/* Number of atoms */  int	bonds;			/* Number of bonds */  int	substs;			/* Number of substructures */  int	torsions;		/* Number of torsions */  int	sets;			/* Number of sets */  int	segments;		/* Number of segments */  int	layers;			/* Number of layers */  int	keys;			/* Number of keys (along one dimension) */} ARRAYSIZE;typedef struct link_struct{  int	id;			/* Link id */  int	bond_id;		/* Bond id */  int	out_flag;		/* Flag for whether outward or inward link */} LINK;typedef struct atom_struct{  int	number;			/* Atom number */  int	subst_id;		/* Substructure id */  int	segment_id;		/* Molecular segment id */  int	chem_id;		/* Chemical label id */  int	vdw_id;			/* VDW id */  int	heavy_flag;		/* Heavy atom flag */  int	centrality;		/* Proximity of most distant atom */  int	flag;			/* General purpose flag */  float	charge;			/* Atomic partial charge */  char	*name;			/* Atom name */  char	*type;			/* Atom type */  LINK	*neighbor;		/* Atom neighbor list */  int	neighbor_total;		/* Number of neighbors */  int	neighbor_max;		/* Maximum number of neighbors */} ATOM;typedef struct bond_struct{  int	id;			/* Bond id */  int	origin;			/* Atom at bond origin */  int	target;			/* Atom at bond target */  int	ring_flag;		/* Molecular ring id */  int	flex_id;		/* Flexible label id */  char	*type;			/* Bond type */} BOND;typedef struct subst_struct{  int	number;			/* Substructure number */  int	root_atom;		/* First atom in substructure */  int	dict_type;		/* Dictionary type (sybyl) */  int	inter_bonds;		/* Number of inter-substructure bonds */  char	*name;			/* Substructure name */  char	*type;			/* Substructure type */  char	*chain;			/* Substructure chain identifier */  char	*sub_type;		/* Sub-type */  char	*status;		/* Status string (sybyl) */} SUBST;typedef struct torsion_struct{  int	flex_id;		/* Flexible label id */  int	bond_id;		/* Bond id */  int	segment_id;		/* Segment id */  int	flag;			/* General purpose flag */  int	periph_flag;		/* Flag for peripheral torsion (eg. hydroxyl) */  int	reverse_flag;		/* Flag for reversal of origin/target */  int	origin;			/* Atom at bond origin */  int	target;			/* Atom at bond target */  int	origin_neighbor;	/* Neighbor to atom at bond origin */  int	target_neighbor;	/* Neighbor to atom at bond origin */  float	current_angle;		/* Current torsion angle */  float	target_angle;		/* Target torsion angle */} TORSION;typedef struct set_struct{  char	*name;			/* Set name */  char	*type;			/* Set type */  char	*obj_type;		/* Set object type (ATOMS, BONDS, SUBSTS) */  char	*sub_type;		/* Set subtype (Sybyl) */  char	*status;		/* Set statis bits (Sybyl) */  char	*comment;		/* Set comment */  int	member_total;		/* Number of members in the set */  int	*member;		/* Set members */} SET;typedef struct key_struct{  int	count;			/* Number of distances stored (folded) */  MASK	distance;		/* Distance keys between labels */} KEY;typedef struct segment_struct{  int	id;			/* Segment id */  int	torsion_id;		/* Torsion in this segment */  int	layer_id;		/* Layer to which segment belongs */  int	periph_flag;		/* Flag for peripheral segment */  int	heavy_total;		/* Number of heavy atoms */  int	active_flag;		/* Flag for whether to score, etc. */  int	min_flag;		/* Flag for whether to minimize */  int	conform_total;		/* Number of conformations in segment */  int	conform_count;		/* Number of current conformation */  int	conform_seed;		/* Random seed for conformation search */  MOL_SCORE	score;		/* Score for segment */  int	*atom;			/* Atoms in this segment */  int	atom_max;		/* Maximum number of atoms in segment */  int	atom_total;		/* Number of atoms in segment */  LINK	*neighbor;		/* Neighboring segments */  int	neighbor_max;		/* Maximum number of neighboring segments */  int	neighbor_total;		/* Number of neighboring segments */} SEGMENT;typedef struct layer_struct{  int	id;			/* Layer id */  int	active_flag;		/* Flag for whether to score, etc. */  int	conform_total;		/* Total number of conformations for layer */  MOL_SCORE	score;		/* Score for layer */  int	*segment;		/* Segments in this layer */  int	segment_max;		/* Maximum number of segments in layer */  int	segment_total;		/* Number of segments in layer */} LAYER;typedef struct molecule_struct{  INFO		info;		/* General info */  TRANSFORM	transform;	/* Transformation info */  MOL_SCORE	score;		/* Molecule score info */  ARRAYSIZE	total;		/* Current size of arrays */  ARRAYSIZE	max;		/* Allocated size of arrays */  ATOM		*atom;		/* Atom info */  XYZ		*coord;		/* Atom coordinates */  BOND		*bond;		/* Bond info */  SUBST		*subst;		/* Sybyl substructure info */  SET		*set;		/* Sybyl set info */  TORSION	*torsion;	/* Rotatable torsion info */  SEGMENT	*segment;	/* Rigid segment info */  LAYER		*layer;		/* Segment layer info */  KEY		**key;		/* Chemical keys */} MOLECULE;typedef struct linked_molecule{  struct linked_molecule *next_head, *next_member;  MOLECULE *molecule;} LINKED_MOLECULE;/*Routines used to manipulate molecule data structures12/96 te*/void allocate_molecule			(MOLECULE *);void allocate_info			(MOLECULE *);void allocate_transform			(MOLECULE *);void allocate_score			(MOL_SCORE *);void allocate_atoms			(MOLECULE *);void allocate_atom_neighbors		(ATOM     *);void allocate_bonds			(MOLECULE *);void allocate_torsions			(MOLECULE *);void allocate_substs			(MOLECULE *);void allocate_segments			(MOLECULE *);void allocate_segment_atoms		(SEGMENT  *);void allocate_segment_neighbors		(SEGMENT  *);void allocate_layers			(MOLECULE *);void allocate_layer_torsions		(LAYER    *);void allocate_layer_segments		(LAYER    *);void allocate_sets			(MOLECULE *);void allocate_keys			(MOLECULE *);void reset_molecule			(MOLECULE *);void reset_info				(MOLECULE *);void reset_transform			(MOLECULE *);void reset_score			(MOL_SCORE *);void reset_score_parts			(SCORE_PART *);void reset_atoms			(MOLECULE *);void reset_atom				(ATOM     *);void reset_atom_neighbors		(ATOM     *);void reset_bonds			(MOLECULE *);void reset_bond				(BOND     *);void reset_torsions			(MOLECULE *);void reset_torsion			(TORSION  *);void reset_substs			(MOLECULE *);void reset_subst			(SUBST    *);void reset_segments			(MOLECULE *);void reset_segment			(SEGMENT  *);void reset_segment_neighbors		(SEGMENT  *);void reset_layers			(MOLECULE *);void reset_layer			(MOLECULE *, int);void reset_sets				(MOLECULE *);void reset_set				(SET      *);void reset_keys				(MOLECULE *);void free_molecule			(MOLECULE *);void free_info				(MOLECULE *);void free_atoms				(MOLECULE *);void free_atom				(ATOM     *);void free_atom_neighbors		(ATOM     *);void free_bonds				(MOLECULE *);void free_bond				(BOND     *);void free_torsions			(MOLECULE *);void free_substs			(MOLECULE *);void free_subst				(SUBST    *);void free_segments			(MOLECULE *);void free_segment_atoms			(SEGMENT  *);void free_segment_neighbors		(SEGMENT  *);void free_layers			(MOLECULE *);void free_layer_segments		(LAYER    *);void free_sets				(MOLECULE *);void free_set				(SET      *);void free_keys				(MOLECULE *);void reallocate_molecule		(MOLECULE *);void reallocate_atoms			(MOLECULE *);void reallocate_atom_neighbors		(ATOM     *);void reallocate_bonds			(MOLECULE *);void reallocate_torsions		(MOLECULE *);void reallocate_substs			(MOLECULE *);void reallocate_segments		(MOLECULE *);void reallocate_segment_atoms		(SEGMENT  *);void reallocate_segment_neighbors	(SEGMENT  *);void reallocate_layers			(MOLECULE *);void reallocate_layer_segments		(LAYER    *);void reallocate_sets			(MOLECULE *);void reallocate_keys			(MOLECULE *);void copy_molecule			(MOLECULE *, MOLECULE *);void copy_info				(MOLECULE *, MOLECULE *);void copy_transform			(MOLECULE *, MOLECULE *);void copy_score				(MOL_SCORE *, MOL_SCORE *);void copy_atoms				(MOLECULE *, MOLECULE *);void copy_atom				(ATOM     *, ATOM     *);void copy_atom_neighbors		(ATOM     *, ATOM     *);void copy_coords			(MOLECULE *, MOLECULE *);void copy_coord				(XYZ       , XYZ       );void copy_bonds				(MOLECULE *, MOLECULE *);void copy_bond				(BOND     *, BOND     *);void copy_torsions			(MOLECULE *, MOLECULE *);void copy_torsion			(TORSION  *, TORSION  *);void copy_substs			(MOLECULE *, MOLECULE *);void copy_subst				(SUBST    *, SUBST    *);void copy_segments			(MOLECULE *, MOLECULE *);void copy_segment			(SEGMENT  *, SEGMENT  *);void copy_layers			(MOLECULE *, MOLECULE *);void copy_layer				(LAYER    *, LAYER    *);void copy_sets				(MOLECULE *, MOLECULE *);void copy_set				(SET      *, SET      *);void copy_keys				(MOLECULE *, MOLECULE *);void save_molecule			(MOLECULE *, FILE *);void save_info				(MOLECULE *, FILE *);void save_transform			(MOLECULE *, FILE *);void save_score				(MOL_SCORE *, FILE *);void save_atoms				(MOLECULE *, FILE *);void save_atom				(ATOM     *, FILE *);void save_atom_neighbors		(ATOM     *, FILE *);void save_bonds				(MOLECULE *, FILE *);void save_bond				(BOND     *, FILE *);void save_torsions			(MOLECULE *, FILE *);void save_substs			(MOLECULE *, FILE *);void save_subst				(SUBST    *, FILE *);void save_segments			(MOLECULE *, FILE *);void save_segment			(SEGMENT  *, FILE *);void save_layers			(MOLECULE *, FILE *);void save_layer				(LAYER    *, FILE *);void save_sets				(MOLECULE *, FILE *);void save_set				(SET      *, FILE *);void save_keys				(MOLECULE *, FILE *);void load_molecule			(MOLECULE *, FILE *);void load_info				(MOLECULE *, FILE *);void load_transform			(MOLECULE *, FILE *);void load_score				(MOL_SCORE *, FILE *);void load_atoms				(MOLECULE *, FILE *);void load_atom				(ATOM     *, FILE *);void load_atom_neighbors		(ATOM     *, FILE *);void load_bonds				(MOLECULE *, FILE *);void load_bond				(BOND     *, FILE *);void load_torsions			(MOLECULE *, FILE *);void load_substs			(MOLECULE *, FILE *);void load_subst				(SUBST    *, FILE *);void load_segments			(MOLECULE *, FILE *);void load_segment			(SEGMENT  *, FILE *);void load_layers			(MOLECULE *, FILE *);void load_layer				(LAYER    *, FILE *);void load_sets				(MOLECULE *, FILE *);void load_set				(SET      *, FILE *);void load_keys				(MOLECULE *, FILE *);void save_string			(char **, FILE *);void load_string			(char **, FILE *);int get_identifier			(void);void atom_neighbors			(MOLECULE *);void revise_atom_neighbors		(MOLECULE *);void get_torsion_neighbors		(MOLECULE *);void reverse_torsion			(TORSION  *);float calculate_distances		(MOLECULE *, float ***, int *);void free_distances			(float ***, int *);int get_atom_neighbor(  void *atom,  int atom_id,  int neighbor_id);void flag_atom_neighbor(   void  *atom_in,  int   atom_id,  int   neighbor,  int   flag   );void flag_segment_neighbor(   void  *segment_in,  int   segment_id,  int   neighbor,  int   flag   );int get_segment_neighbor(  void *segment,  int segment_id,  int neighbor_id);int get_atom_centrality(  MOLECULE *molecule,  int atom_id);

⌨️ 快捷键说明

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