#include <stdlib.h>
#include <string.h>
#include "mode.h"
#include "ichitaut.h"
#include "ichicomn.h"
#include "ichitime.h"
#include "ichicant.h"
#include "util.h"
#include "bcf_s.h"
Data Structures | |
struct | tagChargeType |
Typedefs | |
typedef struct tagChargeType | CHARGE_TYPE |
Functions | |
int | SetTautomericBonds (inp_ATOM *at, int nNumBondPos, T_BONDPOS *BondPos) |
int | CompRankTautomer (const void *a1, const void *a2, void *) |
int | RegisterEndPoints (CANON_GLOBALS *pCG, T_GROUP_INFO *t_group_info, T_ENDPOINT *EndPoint, int nNumEndPoints, inp_ATOM *at, int num_atoms, C_GROUP_INFO *cgi, struct BalancedNetworkStructure *pBNS) |
int | cmpTGroupNumber (const void *a1, const void *a2) |
int | comp_candidates (const void *a1, const void *a2) |
int | MoveEndpoint (inp_ATOM *at, S_CANDIDATE *s_candidate, AT_NUMB endpoint, AT_NUMB *nTGroupNewNumbers, AT_NUMB *nTGroupPosition, int nNewTGroupOrd, T_GROUP_INFO *t_group_info) |
int | FindAccessibleEndPoints (CANON_GLOBALS *pCG, T_ENDPOINT *EndPoint, int *nNumEndPoints, T_BONDPOS *BondPos, int *nNumBondPos, struct BalancedNetworkStructure *pBNS, struct BalancedNetworkData *pBD, inp_ATOM *at, int num_atoms, C_GROUP_INFO *cgi, int taut_mode) |
int | GetChargeType (inp_ATOM *atom, int iat, S_CHAR *cChargeSubtype) |
int | GetNeutralRepsIfNeeded (AT_NUMB *pri, AT_NUMB *prj, inp_ATOM *at, int num_atoms, T_ENDPOINT *EndPoint, int nNumEndPoints, C_GROUP_INFO *cgi) |
int | bCanBeACPoint (inp_ATOM *at, S_CHAR cCharge, S_CHAR cChangeValence, S_CHAR neutral_bonds_valence, S_CHAR neutral_valence, S_CHAR nEndpointValence, S_CHAR *cChargeSubtype) |
int | CmpCCandidates (const void *a1, const void *a2) |
int | RegisterCPoints (C_GROUP *c_group, int *pnum_c, int max_num_c, T_GROUP_INFO *t_group_info, int point1, int point2, int ctype, inp_ATOM *at, int num_atoms) |
int | GetSaltChargeType (inp_ATOM *at, int at_no, T_GROUP_INFO *t_group_info, int *s_subtype) |
int | GetOtherSaltChargeType (inp_ATOM *at, int at_no, T_GROUP_INFO *t_group_info, int *s_subtype, int bAccept_O) |
int | MergeSaltTautGroupsBlind (inp_ATOM *at, int s_type, int num_atoms, S_GROUP_INFO *s_group_info, int nNumCandidates, T_GROUP_INFO *t_group_info, C_GROUP_INFO *c_group_info, struct BalancedNetworkStructure *pBNS) |
int | ConnectSaltTGroups2SuperTGroup (inp_ATOM *at, int num_atoms, S_GROUP_INFO *s_group_info, int nNumCandidates, T_GROUP_INFO *t_group_info, C_GROUP_INFO *c_group_info, struct BalancedNetworkStructure *pBNS, int *nNewTGroupNumber, int *vertSuperTGroup) |
int | bDoNotMergeNonTautAtom (inp_ATOM *at, int at_no) |
int | GetOtherSaltType (inp_ATOM *at, int at_no, int *s_subtype) |
int | is_centerpoint_elem (U_CHAR el_number) |
int | is_centerpoint_elem_KET (U_CHAR el_number) |
int | is_centerpoint_elem_strict (U_CHAR el_number) |
int | AddAtom2num (AT_RANK num[], inp_ATOM *atom, int at_no, int bSubtract) |
void | AddAtom2DA (AT_RANK num_DA[], inp_ATOM *atom, int at_no, int bSubtract) |
int | AddEndPoint (T_ENDPOINT *pEndPoint, inp_ATOM *at, int iat) |
int | nGetEndpointInfo (inp_ATOM *atom, int iat, ENDPOINT_INFO *eif) |
int | nGetEndpointInfo_PT_22_00 (inp_ATOM *atom, int iat, ENDPOINT_INFO *eif) |
int | nGetEndpointInfo_PT_16_00 (inp_ATOM *atom, int iat, ENDPOINT_INFO *eif) |
int | nGetEndpointInfo_PT_06_00 (inp_ATOM *atom, int iat, ENDPOINT_INFO *eif) |
int | nGetEndpointInfo_PT_39_00 (inp_ATOM *atom, int iat, ENDPOINT_INFO *eif) |
int | nGetEndpointInfo_PT_13_00 (inp_ATOM *atom, int iat, ENDPOINT_INFO *eif) |
int | nGetEndpointInfo_PT_18_00 (inp_ATOM *atom, int iat, ENDPOINT_INFO *eif) |
int | nGetEndpointInfo_KET (inp_ATOM *atom, int iat, ENDPOINT_INFO *eif) |
int | MarkChargeGroups (struct tagCANON_GLOBALS *pCG, inp_ATOM *at, int num_atoms, C_GROUP_INFO *c_group_info, T_GROUP_INFO *t_group_info, struct BalancedNetworkStructure *pBNS, struct BalancedNetworkData *pBD) |
int | MarkSaltChargeGroups2 (CANON_GLOBALS *pCG, inp_ATOM *at, int num_atoms, S_GROUP_INFO *s_group_info, T_GROUP_INFO *t_group_info, C_GROUP_INFO *c_group_info, struct BalancedNetworkStructure *pBNS, struct BalancedNetworkData *pBD) |
int | MarkSaltChargeGroups (CANON_GLOBALS *pCG, inp_ATOM *at, int num_atoms, S_GROUP_INFO *s_group_info, T_GROUP_INFO *t_group_info, C_GROUP_INFO *c_group_info, struct BalancedNetworkStructure *pBNS, struct BalancedNetworkData *pBD) |
int | MergeSaltTautGroups (CANON_GLOBALS *pCG, inp_ATOM *at, int num_atoms, S_GROUP_INFO *s_group_info, T_GROUP_INFO *t_group_info, C_GROUP_INFO *c_group_info, struct BalancedNetworkStructure *pBNS) |
int | MakeIsotopicHGroup (inp_ATOM *at, int num_atoms, S_GROUP_INFO *s_group_info, T_GROUP_INFO *t_group_info) |
int | MarkTautomerGroups (CANON_GLOBALS *pCG, inp_ATOM *at, int num_atoms, T_GROUP_INFO *t_group_info, C_GROUP_INFO *c_group_info, struct BalancedNetworkStructure *pBNS, struct BalancedNetworkData *pBD) |
int | free_t_group_info (T_GROUP_INFO *t_group_info) |
int | make_a_copy_of_t_group_info (T_GROUP_INFO *t_group_info, T_GROUP_INFO *t_group_info_orig) |
int | set_tautomer_iso_sort_keys (T_GROUP_INFO *t_group_info) |
int | CountTautomerGroups (sp_ATOM *at, int num_atoms, T_GROUP_INFO *t_group_info) |
int | SortTautomerGroupsAndEndpoints (CANON_GLOBALS *pCG, T_GROUP_INFO *t_group_info, int num_atoms, int num_at_tg, AT_RANK *nRank) |
Variables | |
const CHARGE_TYPE | CType [] |
#define ACCEPTOR_PAIR 1 |
#define ACTUAL_ORDER | ( | PBNS, | |
IAT, | |||
IBOND, | |||
BTYPE | |||
) |
#define ALLOWED_EDGE | ( | PBNS, | |
IAT, | |||
IBOND | |||
) | ( !(PBNS) || !(PBNS)->edge || !(PBNS)->vert || !(PBNS)->edge[(PBNS)->vert[IAT].iedge[IBOND]].forbidden) |
#define ALT_PATH_FOUND (MAX_ATOMS+1) |
#define C_SUBTYPE_CHARGED 0 |
#define C_SUBTYPE_CHARGED 0 |
#define C_SUBTYPE_CHARGED_H_ACCEPT (C_SUBTYPE_CHARGED|C_SUBTYPE_H_ACCEPT) |
#define C_SUBTYPE_CHARGED_H_ACCEPT_p_DONOR (C_SUBTYPE_CHARGED|C_SUBTYPE_H_ACCEPT|C_SUBTYPE_p_DONOR) |
#define C_SUBTYPE_CHARGED_H_DONOR (C_SUBTYPE_CHARGED|C_SUBTYPE_H_DONOR |C_SUBTYPE_p_DONOR) |
#define C_SUBTYPE_CHARGED_NON_TAUT (C_SUBTYPE_CHARGED) |
#define C_SUBTYPE_CHARGED_p_DONOR (C_SUBTYPE_CHARGED|C_SUBTYPE_p_DONOR) |
#define C_SUBTYPE_H_ACCEPT 4 |
#define C_SUBTYPE_H_ACCEPT 4 |
#define C_SUBTYPE_H_DONOR 8 |
#define C_SUBTYPE_H_DONOR 8 |
#define C_SUBTYPE_NEUTRAL 16 |
#define C_SUBTYPE_NEUTRAL 16 |
#define C_SUBTYPE_NEUTRAL_H_ACCEPT (C_SUBTYPE_NEUTRAL|C_SUBTYPE_H_ACCEPT) |
#define C_SUBTYPE_NEUTRAL_H_ACCEPT_p_ACCEPT (C_SUBTYPE_NEUTRAL|C_SUBTYPE_H_ACCEPT|C_SUBTYPE_p_ACCEPT) |
#define C_SUBTYPE_NEUTRAL_H_DONOR (C_SUBTYPE_NEUTRAL|C_SUBTYPE_H_DONOR) |
#define C_SUBTYPE_NEUTRAL_NON_TAUT (C_SUBTYPE_NEUTRAL) |
#define C_SUBTYPE_p_ACCEPT 2 /* new */ |
#define C_SUBTYPE_p_ACCEPT 2 /* new */ |
#define C_SUBTYPE_p_DONOR 1 /* new */ |
#define C_SUBTYPE_p_DONOR 1 /* new */ |
#define cPAIR | ( | a, | |
b | |||
) | cPair[a+b*nNumLeftCandidates] |
#define DISABLE_CANDIDATE 10 |
#define DONOR_PAIR 2 |
#define MAX_ALT_PATH_LEN 8 |
#define MAX_LOCAL_TGNUM 0 /* was 32; disable since it has not been used */ |
#define MAX_STACK_ARRAY_LEN 127 |
#define MAX_TGROUP_ARRAY_LEN 127 |
#define NO_ENDPOINT (MAX_ATOMS+2) /* the two defines must be different */ |
typedef struct tagChargeType CHARGE_TYPE |
int AddEndPoint | ( | T_ENDPOINT * | pEndPoint, |
inp_ATOM * | at, | ||
int | iat | ||
) |
int bCanBeACPoint | ( | inp_ATOM * | at, |
S_CHAR | cCharge, | ||
S_CHAR | cChangeValence, | ||
S_CHAR | neutral_bonds_valence, | ||
S_CHAR | neutral_valence, | ||
S_CHAR | nEndpointValence, | ||
S_CHAR * | cChargeSubtype | ||
) |
int bDoNotMergeNonTautAtom | ( | inp_ATOM * | at, |
int | at_no | ||
) |
int CmpCCandidates | ( | const void * | a1, |
const void * | a2 | ||
) |
int cmpTGroupNumber | ( | const void * | a1, |
const void * | a2 | ||
) |
int comp_candidates | ( | const void * | a1, |
const void * | a2 | ||
) |
int CompRankTautomer | ( | const void * | a1, |
const void * | a2, | ||
void * | p | ||
) |
int ConnectSaltTGroups2SuperTGroup | ( | inp_ATOM * | at, |
int | num_atoms, | ||
S_GROUP_INFO * | s_group_info, | ||
int | nNumCandidates, | ||
T_GROUP_INFO * | t_group_info, | ||
C_GROUP_INFO * | c_group_info, | ||
struct BalancedNetworkStructure * | pBNS, | ||
int * | nNewTGroupNumber, | ||
int * | vertSuperTGroup | ||
) |
int CountTautomerGroups | ( | sp_ATOM * | at, |
int | num_atoms, | ||
T_GROUP_INFO * | t_group_info | ||
) |
int FindAccessibleEndPoints | ( | CANON_GLOBALS * | pCG, |
T_ENDPOINT * | EndPoint, | ||
int * | nNumEndPoints, | ||
T_BONDPOS * | BondPos, | ||
int * | nNumBondPos, | ||
struct BalancedNetworkStructure * | pBNS, | ||
struct BalancedNetworkData * | pBD, | ||
inp_ATOM * | at, | ||
int | num_atoms, | ||
C_GROUP_INFO * | cgi, | ||
int | taut_mode | ||
) |
int free_t_group_info | ( | T_GROUP_INFO * | t_group_info | ) |
int GetNeutralRepsIfNeeded | ( | AT_NUMB * | pri, |
AT_NUMB * | prj, | ||
inp_ATOM * | at, | ||
int | num_atoms, | ||
T_ENDPOINT * | EndPoint, | ||
int | nNumEndPoints, | ||
C_GROUP_INFO * | cgi | ||
) |
int GetOtherSaltChargeType | ( | inp_ATOM * | at, |
int | at_no, | ||
T_GROUP_INFO * | t_group_info, | ||
int * | s_subtype, | ||
int | bAccept_O | ||
) |
int GetOtherSaltType | ( | inp_ATOM * | at, |
int | at_no, | ||
int * | s_subtype | ||
) |
int GetSaltChargeType | ( | inp_ATOM * | at, |
int | at_no, | ||
T_GROUP_INFO * | t_group_info, | ||
int * | s_subtype | ||
) |
int is_centerpoint_elem | ( | U_CHAR | el_number | ) |
int is_centerpoint_elem_KET | ( | U_CHAR | el_number | ) |
int is_centerpoint_elem_strict | ( | U_CHAR | el_number | ) |
int make_a_copy_of_t_group_info | ( | T_GROUP_INFO * | t_group_info, |
T_GROUP_INFO * | t_group_info_orig | ||
) |
int MakeIsotopicHGroup | ( | inp_ATOM * | at, |
int | num_atoms, | ||
S_GROUP_INFO * | s_group_info, | ||
T_GROUP_INFO * | t_group_info | ||
) |
int MarkChargeGroups | ( | struct tagCANON_GLOBALS * | pCG, |
inp_ATOM * | at, | ||
int | num_atoms, | ||
C_GROUP_INFO * | c_group_info, | ||
T_GROUP_INFO * | t_group_info, | ||
struct BalancedNetworkStructure * | pBNS, | ||
struct BalancedNetworkData * | pBD | ||
) |
int MarkSaltChargeGroups | ( | CANON_GLOBALS * | pCG, |
inp_ATOM * | at, | ||
int | num_atoms, | ||
S_GROUP_INFO * | s_group_info, | ||
T_GROUP_INFO * | t_group_info, | ||
C_GROUP_INFO * | c_group_info, | ||
struct BalancedNetworkStructure * | pBNS, | ||
struct BalancedNetworkData * | pBD | ||
) |
int MarkSaltChargeGroups2 | ( | CANON_GLOBALS * | pCG, |
inp_ATOM * | at, | ||
int | num_atoms, | ||
S_GROUP_INFO * | s_group_info, | ||
T_GROUP_INFO * | t_group_info, | ||
C_GROUP_INFO * | c_group_info, | ||
struct BalancedNetworkStructure * | pBNS, | ||
struct BalancedNetworkData * | pBD | ||
) |
int MarkTautomerGroups | ( | CANON_GLOBALS * | pCG, |
inp_ATOM * | at, | ||
int | num_atoms, | ||
T_GROUP_INFO * | t_group_info, | ||
C_GROUP_INFO * | c_group_info, | ||
struct BalancedNetworkStructure * | pBNS, | ||
struct BalancedNetworkData * | pBD | ||
) |
int MergeSaltTautGroups | ( | CANON_GLOBALS * | pCG, |
inp_ATOM * | at, | ||
int | num_atoms, | ||
S_GROUP_INFO * | s_group_info, | ||
T_GROUP_INFO * | t_group_info, | ||
C_GROUP_INFO * | c_group_info, | ||
struct BalancedNetworkStructure * | pBNS | ||
) |
int MergeSaltTautGroupsBlind | ( | inp_ATOM * | at, |
int | s_type, | ||
int | num_atoms, | ||
S_GROUP_INFO * | s_group_info, | ||
int | nNumCandidates, | ||
T_GROUP_INFO * | t_group_info, | ||
C_GROUP_INFO * | c_group_info, | ||
struct BalancedNetworkStructure * | pBNS | ||
) |
int MoveEndpoint | ( | inp_ATOM * | at, |
S_CANDIDATE * | s_candidate, | ||
AT_NUMB | endpoint, | ||
AT_NUMB * | nTGroupNewNumbers, | ||
AT_NUMB * | nTGroupPosition, | ||
int | nNewTGroupOrd, | ||
T_GROUP_INFO * | t_group_info | ||
) |
int nGetEndpointInfo | ( | inp_ATOM * | atom, |
int | iat, | ||
ENDPOINT_INFO * | eif | ||
) |
int nGetEndpointInfo_KET | ( | inp_ATOM * | atom, |
int | iat, | ||
ENDPOINT_INFO * | eif | ||
) |
int nGetEndpointInfo_PT_06_00 | ( | inp_ATOM * | atom, |
int | iat, | ||
ENDPOINT_INFO * | eif | ||
) |
int nGetEndpointInfo_PT_13_00 | ( | inp_ATOM * | atom, |
int | iat, | ||
ENDPOINT_INFO * | eif | ||
) |
int nGetEndpointInfo_PT_16_00 | ( | inp_ATOM * | atom, |
int | iat, | ||
ENDPOINT_INFO * | eif | ||
) |
int nGetEndpointInfo_PT_18_00 | ( | inp_ATOM * | atom, |
int | iat, | ||
ENDPOINT_INFO * | eif | ||
) |
int nGetEndpointInfo_PT_22_00 | ( | inp_ATOM * | atom, |
int | iat, | ||
ENDPOINT_INFO * | eif | ||
) |
int nGetEndpointInfo_PT_39_00 | ( | inp_ATOM * | atom, |
int | iat, | ||
ENDPOINT_INFO * | eif | ||
) |
int RegisterCPoints | ( | C_GROUP * | c_group, |
int * | pnum_c, | ||
int | max_num_c, | ||
T_GROUP_INFO * | t_group_info, | ||
int | point1, | ||
int | point2, | ||
int | ctype, | ||
inp_ATOM * | at, | ||
int | num_atoms | ||
) |
int RegisterEndPoints | ( | CANON_GLOBALS * | pCG, |
T_GROUP_INFO * | t_group_info, | ||
T_ENDPOINT * | EndPoint, | ||
int | nNumEndPoints, | ||
inp_ATOM * | at, | ||
int | num_atoms, | ||
C_GROUP_INFO * | cgi, | ||
struct BalancedNetworkStructure * | pBNS | ||
) |
int set_tautomer_iso_sort_keys | ( | T_GROUP_INFO * | t_group_info | ) |
int SortTautomerGroupsAndEndpoints | ( | CANON_GLOBALS * | pCG, |
T_GROUP_INFO * | t_group_info, | ||
int | num_atoms, | ||
int | num_at_tg, | ||
AT_RANK * | nRank | ||
) |
const CHARGE_TYPE CType[] |