Go to the source code of this file.
Data Structures | |
struct | BnsEdge |
struct | BnsStEdge |
struct | BnsVertex |
union | BnsAltPath |
struct | BalancedNetworkStructure |
struct | BalancedNetworkData |
struct | BN_AtomsAtTautGroup |
struct | tagBNS_FLOW_CHANGES |
struct | tagNodeSet |
Macros | |
#define | BN_MAX_ALTP 16 |
#define | BNS_EDGE_FORBIDDEN_MASK 1 |
#define | BNS_EDGE_FORBIDDEN_TEMP 2 |
#define | BNS_EDGE_FORBIDDEN_TEST 4 |
#define | BNS_VERT_TYPE_ATOM 0x0001 |
#define | BNS_VERT_TYPE_ENDPOINT 0x0002 /* attribute */ |
#define | BNS_VERT_TYPE_TGROUP 0x0004 |
#define | BNS_VERT_TYPE_C_POINT 0x0008 |
#define | BNS_VERT_TYPE_C_GROUP 0x0010 |
#define | BNS_VERT_TYPE_SUPER_TGROUP 0x0020 |
#define | BNS_VERT_TYPE_TEMP 0x0040 |
#define | BNS_VERT_TYPE__AUX 0x0080 /* vertex added to build charge substructures */ |
#define | BNS_VERT_TYPE_C_NEGATIVE 0x0100 /* negative charge group; attribute, should be used with BNS_VERT_TYPE_C_GROUP */ |
#define | BNS_VERT_TYPE_ACID 0x0200 /* only for this type are allowed paths: t_group-atom-c_group_neg (path_TACN) */ |
#define | BNS_VERT_TYPE_CARBON_GR 0x0400 /* charge of carbon atom; should be used with BNS_VT_C_POS, BNS_VT_C_NEG */ |
#define | BNS_VERT_TYPE_METAL_GR 0x0800 /* metal atom group; may be used alone or with BNS_VT_M_POS, BNS_VT_M_NEG */ |
#define | BNS_VERT_TYPE_ANY_GROUP (BNS_VERT_TYPE_TGROUP | BNS_VERT_TYPE_C_GROUP | BNS_VERT_TYPE_SUPER_TGROUP) |
#define | BNS_VT_C_POS BNS_VERT_TYPE_C_GROUP /* positive charge group, heteroat */ |
#define | BNS_VT_C_NEG (BNS_VERT_TYPE_C_GROUP | BNS_VERT_TYPE_C_NEGATIVE) /* negative charge group, heteroat */ |
#define | BNS_VT_C_POS_C (BNS_VT_C_POS | BNS_VERT_TYPE_CARBON_GR) /* positive charge group, C, Si, Ge, Sn */ |
#define | BNS_VT_C_NEG_C (BNS_VT_C_NEG | BNS_VERT_TYPE_CARBON_GR) /* negative charge group, C, Si, Ge, Sn */ |
#define | BNS_VT_C_POS_M (BNS_VT_C_POS | BNS_VERT_TYPE_METAL_GR) /* positive charge group, metal */ |
#define | BNS_VT_C_NEG_M (BNS_VT_C_NEG | BNS_VERT_TYPE_METAL_GR) /* negative charge group, metal */ |
#define | BNS_VT_M_GROUP BNS_VERT_TYPE_METAL_GR /* metal-group, flower vertex */ |
#define | BNS_VT_C_POS_ALL (BNS_VERT_TYPE_SUPER_TGROUP | BNS_VERT_TYPE_C_GROUP) /* supergroup (+) */ |
#define | BNS_VT_C_NEG_ALL (BNS_VT_C_POS_ALL | BNS_VERT_TYPE_C_NEGATIVE) /* supergroup (-) */ |
#define | BNS_VT_CHRG_STRUCT (BNS_VERT_TYPE__AUX | BNS_VERT_TYPE_TEMP) /* ChargeStruct vertex */ |
#define | BNS_VT_YVCONNECTOR BNS_VERT_TYPE__AUX /* group connection */ |
#define | IS_BNS_VT_C_OR_CSUPER_GR(X) ((X) & BNS_VT_C_POS) |
#define | IS_BNS_VT_C_GR(X) (((X) & BNS_VT_C_POS_ALL) == BNS_VERT_TYPE_C_GROUP) |
#define | IS_BNS_VT_CM_GR(X) (((X) & BNS_VT_C_POS_M) == BNS_VT_C_POS_M) /* metal charge group */ |
#define | IS_BNS_VT_M_GR(X) ((X) == BNS_VERT_TYPE_METAL_GR ) /* metal flower base or vertices */ |
#define | IS_BNS_VT_YVCONNECTOR(X) (((X) & BNS_VERT_TYPE__AUX) && !((X) & BNS_VERT_TYPE_TEMP)) |
#define | IS_BNS_VT_CHRG_STRUCT(X) (((X) & BNS_VERT_TYPE__AUX) && ((X) & BNS_VERT_TYPE_TEMP)) |
#define | IS_BNS_VT_ATOM(X) ((X) & BNS_VERT_TYPE_ATOM) |
#define | BNS_ADD_SUPER_TGROUP 1 /* reserve one more edge for a t-group to connect to a single super-t-group */ |
#define | NUM_KINDS_OF_GROUPS 2 /* 1 accounts for t-group kind, one more 1 accounts for c-group kind */ |
#define | BNS_ADD_ATOMS 2 /* max. number of fictitious atoms to add (except t-gtoups) */ |
#define | BNS_ADD_EDGES 1 /* max. number of edges to add to each atom (except edges to a t-group or c-group) */ |
#define | ALTP_PATH_LEN(altp) (altp)[iALTP_PATH_LEN].number /* number of bonds = number of atoms-1*/ |
#define | ALTP_END_ATOM(altp) (altp)[iALTP_END_ATOM].number |
#define | ALTP_START_ATOM(altp) (altp)[iALTP_START_ATOM].number |
#define | ALTP_THIS_ATOM_NEIGHBOR(altp, X) (altp)[iALTP_NEIGHBOR+(X)].ineigh[0] /* 0 <= X < path_len */ |
#define | ALTP_NEXT_ATOM_NEIGHBOR(altp, X) (altp)[iALTP_NEIGHBOR+(X)].ineigh[1] |
#define | ALTP_CUR_THIS_ATOM_NEIGHBOR(altp) (altp)[iALTP_NEIGHBOR+ALTP_PATH_LEN(altp)].ineigh[0] /* 0 <= X < path_len */ |
#define | ALTP_CUR_NEXT_ATOM_NEIGHBOR(altp) (altp)[iALTP_NEIGHBOR+ALTP_PATH_LEN(altp)].ineigh[1] |
#define | ALTP_NEXT(altp) (++ALTP_PATH_LEN(altp)) |
#define | ALTP_PREV(altp) (--ALTP_PATH_LEN(altp)) |
#define | ALTP_MAY_ADD(altp) (iALTP_NEIGHBOR + (altp)[iALTP_PATH_LEN].number < (altp)[iALTP_MAX_LEN].number) |
#define | ALTP_ALLOCATED_LEN(altp) (altp)[iALTP_MAX_LEN].number |
#define | ALTP_DELTA(altp) (altp)[iALTP_FLOW].flow[0] |
#define | ALTP_OVERFLOW(altp) (altp)[iALTP_FLOW].flow[1] |
#define | Vertex_s 0 |
#define | Vertex_t 1 |
#define | NO_VERTEX -2 |
#define | BLOSSOM_BASE -1 |
#define | ADD_CAPACITY_RADICAL 1 /* add capacity to radical */ |
#define | MAX_BOND_EDGE_CAP 2 /* triple bond */ |
#define | AROM_BOND_EDGE_CAP 1 |
#define | MAX_TGROUP_EDGE_CAP 2 /* -NH2 provides max. capacity */ |
#define | EDGE_FLOW_ST_MASK 0x3fff /* mask for flow */ |
#define | EDGE_FLOW_ST_PATH 0x4000 /* mark: the edge belongs to the augmenting path */ |
#define | EDGE_FLOW_MASK 0x3fff /* mask for flow */ |
#define | EDGE_FLOW_PATH 0x4000 /* mark: the edge belongs to the augmenting path */ |
#define | MAX_AT_FLOW(X) |
#define | MAX_ALT_AATG_ARRAY_LEN 127 |
#define | AATG_MARK_IN_PATH 1 /* atom in path detected by the BNS */ |
#define | AATG_MARK_WAS_IN_PATH 2 /* found to be in path before next level */ |
#define | AATG_MARK_MAIN_TYPE 4 /* atom O-"salt" */ |
#define | AATG_MARK_OTHER_TYPE 8 /* other atom to be tested */ |
#define | ALT_PATH_MODE_TAUTOM 1 |
#define | ALT_PATH_MODE_CHARGE 2 |
#define | ALT_PATH_MODE_4_SALT 3 /* mark alt bonds along the path */ |
#define | ALT_PATH_MODE_4_SALT2 4 /* mark alt bonds along the path, path to taut. group fict. vertex if exists */ |
#define | ALT_PATH_MODE_REM2H_CHG 5 /* remove 2 H along alt. path AH-=-BH => A=-=B and change bonds to alternating */ |
#define | ALT_PATH_MODE_ADD2H_CHG 6 /* add 2 H along alt. path A=-=B => AH-=-BH and change bonds to alternating */ |
#define | ALT_PATH_MODE_REM2H_TST 7 /* test-remove 2 H along alt. path AH-=-BH => A=-=B; restore changed bonds */ |
#define | ALT_PATH_MODE_ADD2H_TST 8 /* test-add 2 H along alt. path A=-=B => AH-=-BH; restore changed bonds */ |
#define | ALT_PATH_MODE_REM_PROTON 9 /* remove proton, adjust bonds, charges, H-counts 2004-03-05 */ |
#define | ALT_PATH_MODE_TAUTOM_KET 10 /* same as ALT_PATH_MODE_TAUTOM, applies to C=-OH or CH-=O; H may be (-) */ |
#define | ALT_PATH_MODE_TAUTOM_PT_22_00 11 |
#define | ALT_PATH_MODE_TAUTOM_PT_16_00 12 |
#define | ALT_PATH_MODE_TAUTOM_PT_06_00 13 |
#define | ALT_PATH_MODE_TAUTOM_PT_39_00 14 |
#define | ALT_PATH_MODE_TAUTOM_PT_13_00 15 |
#define | ALT_PATH_MODE_TAUTOM_PT_18_00 16 |
#define | BIT_WORD_MASK ((bitWord)~0) |
#define | BNS_EF_CHNG_FLOW 1 /* change Balanced Network (BN) flow inside the BNS search */ |
#define | BNS_EF_RSTR_FLOW 2 /* undo BN flow changes after BNS */ |
#define | BNS_EF_CHNG_RSTR (BNS_EF_CHNG_FLOW | BNS_EF_RSTR_FLOW) |
#define | BNS_EF_CHNG_BONDS 4 /* change bonds in the structure according to the BN flow */ |
#define | BNS_EF_ALTR_BONDS 8 /* make altern. bonds in the structure if the flow has changed */ |
#define | BNS_EF_UPD_RAD_ORI |
#define | BNS_EF_SET_NOSTEREO |
#define | BNS_EF_UPD_H_CHARGE 64 /* update charges and H-counts according to change flow to c- and t-group vertices */ |
#define | BNS_EF_SAVE_ALL (BNS_EF_CHNG_FLOW | BNS_EF_CHNG_BONDS | BNS_EF_UPD_RAD_ORI) |
#define | BNS_EF_ALTR_NS (BNS_EF_ALTR_BONDS | BNS_EF_SET_NOSTEREO) |
#define | BNS_EF_RAD_SRCH 128 /* search for rafical paths closures */ |
Typedefs | |
typedef int | Vertex |
typedef int | EdgeIndex |
typedef int | Edge[2] |
typedef int | BNS_IEDGE |
typedef int | EdgeFlow |
typedef int | VertexFlow |
typedef enum tagAltPathConst | ALT_CONST |
typedef struct BnsEdge | BNS_EDGE |
typedef struct BnsStEdge | BNS_ST_EDGE |
typedef struct BnsVertex | BNS_VERTEX |
typedef union BnsAltPath | BNS_ALT_PATH |
typedef struct BalancedNetworkStructure | BN_STRUCT |
typedef enum tagBnsRadSrchMode | BRS_MODE |
typedef struct BalancedNetworkData | BN_DATA |
typedef struct BN_AtomsAtTautGroup | BN_AATG |
typedef struct tagBNS_FLOW_CHANGES | BNS_FLOW_CHANGES |
typedef U_SHORT | bitWord |
typedef struct tagNodeSet | NodeSet |
Enumerations | |
enum | tagAltPathConst { iALTP_MAX_LEN , iALTP_FLOW , iALTP_PATH_LEN , iALTP_START_ATOM , iALTP_END_ATOM , iALTP_NEIGHBOR , iALTP_HDR_LEN = iALTP_NEIGHBOR } |
enum | tagBnsRadSrchMode { RAD_SRCH_NORM = 0 , RAD_SRCH_FROM_FICT = 1 } |
Functions | |
int | NodeSetCreate (struct tagCANON_GLOBALS *pCG, NodeSet *pSet, int n, int L) |
void | NodeSetFree (struct tagCANON_GLOBALS *pCG, NodeSet *pSet) |
int | IsNodeSetEmpty (NodeSet *cur_nodes, int k) |
int | DoNodeSetsIntersect (NodeSet *cur_nodes, int k1, int k2) |
void | AddNodeSet2ToNodeSet1 (NodeSet *cur_nodes, int k1, int k2) |
void | NodeSetFromRadEndpoints (struct tagCANON_GLOBALS *pCG, NodeSet *cur_nodes, int k, Vertex RadEndpoints[], int num_v) |
void | RemoveFromNodeSet (struct tagCANON_GLOBALS *pCG, NodeSet *cur_nodes, int k, Vertex v[], int num_v) |
int | AddNodesToRadEndpoints (struct tagCANON_GLOBALS *pCG, NodeSet *cur_nodes, int k, Vertex RadEndpoints[], Vertex vRad, int nStart, int nLen) |
int | nExists2AtMoveAltPath (struct BalancedNetworkStructure *pBNS, struct BalancedNetworkData *pBD, struct BN_AtomsAtTautGroup *pAATG, inp_ATOM *at, int num_atoms, int jj2, int jj1, struct tagSaltChargeCandidate *s_candidate, int nNumCandidates, AT_NUMB *nForbiddenAtom, int nNumForbiddenAtoms) |
int | bExistsAltPath (struct tagCANON_GLOBALS *pCG, struct BalancedNetworkStructure *pBNS, struct BalancedNetworkData *pBD, struct BN_AtomsAtTautGroup *pAATG, inp_ATOM *at, int num_atoms, int nVertDoubleBond, int nVertSingleBond, int path_type) |
int | bExistsAnyAltPath (struct tagCANON_GLOBALS *pCG, struct BalancedNetworkStructure *pBNS, struct BalancedNetworkData *pBD, inp_ATOM *at, int num_atoms, int nVertDoubleBond, int nVertSingleBond, int path_type) |
int | AddTGroups2BnStruct (struct tagCANON_GLOBALS *pCG, struct BalancedNetworkStructure *pBNS, inp_ATOM *at, int num_atoms, struct tagTautomerGroupsInfo *tgi) |
int | AddSuperTGroup2BnStruct (struct BalancedNetworkStructure *pBNS, inp_ATOM *at, int num_atoms, struct tagTautomerGroupsInfo *tgi) |
int | AddCGroups2BnStruct (struct tagCANON_GLOBALS *pCG, struct BalancedNetworkStructure *pBNS, inp_ATOM *at, int num_atoms, struct tagChargeGroupsInfo *cgi) |
int | ReInitBnStruct (struct BalancedNetworkStructure *pBNS, inp_ATOM *at, int num_at, int bRemoveGroupsFromAtoms) |
int | ReInitBnStructAddGroups (struct tagCANON_GLOBALS *pCG, struct BalancedNetworkStructure *pBNS, inp_ATOM *at, int num_atoms, struct tagTautomerGroupsInfo *tgi, struct tagChargeGroupsInfo *cgi) |
int | DisconnectTestAtomFromTGroup (struct BalancedNetworkStructure *pBNS, int v1, int *pv2, BNS_FLOW_CHANGES *fcd) |
int | DisconnectTGroupFromSuperTGroup (struct BalancedNetworkStructure *pBNS, int v1, int *pv1, int *pv2, BNS_FLOW_CHANGES *fcd) |
int | ReconnectTestAtomToTGroup (struct BalancedNetworkStructure *pBNS, int v1, int v2, int ie, BNS_FLOW_CHANGES *fcd) |
int | bIsHardRemHCandidate (inp_ATOM *at, int i, int *cSubType) |
int | RunBalancedNetworkSearch (BN_STRUCT *pBNS, BN_DATA *pBD, int bChangeFlow) |
BN_STRUCT * | AllocateAndInitBnStruct (inp_ATOM *at, int num_atoms, int nMaxAddAtoms, int nMaxAddEdges, int max_altp, int *num_changed_bonds) |
BN_STRUCT * | DeAllocateBnStruct (BN_STRUCT *pBNS) |
int | ReInitBnStructAltPaths (BN_STRUCT *pBNS) |
int | ReInitBnStructForMoveableAltBondTest (BN_STRUCT *pBNS, inp_ATOM *at, int num_atoms) |
void | ClearAllBnDataVertices (Vertex *v, Vertex value, int size) |
void | ClearAllBnDataEdges (Edge *e, Vertex value, int size) |
BN_DATA * | DeAllocateBnData (BN_DATA *pBD) |
BN_DATA * | AllocateAndInitBnData (int max_num_vertices) |
int | ReInitBnData (BN_DATA *pBD) |
int | SetForbiddenEdges (BN_STRUCT *pBNS, inp_ATOM *at, int num_atoms, int edge_forbidden_mask, int nebend, int *ebend) |
int | BalancedNetworkSearch (BN_STRUCT *pBNS, BN_DATA *pBD, int bChangeFlow) |
int | SetRadEndpoints (BN_STRUCT *pBNS, BN_DATA *pBD, BRS_MODE bRadSrchMode) |
int | SetRadEndpoints2 (struct tagCANON_GLOBALS *pCG, BN_STRUCT *pBNS, BN_DATA *pBD, BRS_MODE bRadSrchMode) |
int | RemoveRadEndpoints (BN_STRUCT *pBNS, BN_DATA *pBD, inp_ATOM *at) |
int | AddRemoveProtonsRestr (inp_ATOM *at, int num_atoms, int *num_protons_to_add, int nNumProtAddedByRestr, INCHI_MODE bNormalizationFlags, int num_tg, int nChargeRevrs, int nChargeInChI) |
int | AddRemoveIsoProtonsRestr (inp_ATOM *at, int num_atoms, NUM_H num_protons_to_add[], int num_tg) |
#define AATG_MARK_IN_PATH 1 /* atom in path detected by the BNS */ |
#define AATG_MARK_MAIN_TYPE 4 /* atom O-"salt" */ |
#define AATG_MARK_OTHER_TYPE 8 /* other atom to be tested */ |
#define AATG_MARK_WAS_IN_PATH 2 /* found to be in path before next level */ |
#define ADD_CAPACITY_RADICAL 1 /* add capacity to radical */ |
#define ALT_PATH_MODE_4_SALT 3 /* mark alt bonds along the path */ |
#define ALT_PATH_MODE_4_SALT2 4 /* mark alt bonds along the path, path to taut. group fict. vertex if exists */ |
#define ALT_PATH_MODE_ADD2H_CHG 6 /* add 2 H along alt. path A=-=B => AH-=-BH and change bonds to alternating */ |
#define ALT_PATH_MODE_ADD2H_TST 8 /* test-add 2 H along alt. path A=-=B => AH-=-BH; restore changed bonds */ |
#define ALT_PATH_MODE_CHARGE 2 |
#define ALT_PATH_MODE_REM2H_CHG 5 /* remove 2 H along alt. path AH-=-BH => A=-=B and change bonds to alternating */ |
#define ALT_PATH_MODE_REM2H_TST 7 /* test-remove 2 H along alt. path AH-=-BH => A=-=B; restore changed bonds */ |
#define ALT_PATH_MODE_REM_PROTON 9 /* remove proton, adjust bonds, charges, H-counts 2004-03-05 */ |
#define ALT_PATH_MODE_TAUTOM 1 |
#define ALT_PATH_MODE_TAUTOM_KET 10 /* same as ALT_PATH_MODE_TAUTOM, applies to C=-OH or CH-=O; H may be (-) */ |
#define ALT_PATH_MODE_TAUTOM_PT_06_00 13 |
#define ALT_PATH_MODE_TAUTOM_PT_13_00 15 |
#define ALT_PATH_MODE_TAUTOM_PT_16_00 12 |
#define ALT_PATH_MODE_TAUTOM_PT_18_00 16 |
#define ALT_PATH_MODE_TAUTOM_PT_22_00 11 |
#define ALT_PATH_MODE_TAUTOM_PT_39_00 14 |
#define ALTP_ALLOCATED_LEN | ( | altp | ) | (altp)[iALTP_MAX_LEN].number |
#define ALTP_CUR_NEXT_ATOM_NEIGHBOR | ( | altp | ) | (altp)[iALTP_NEIGHBOR+ALTP_PATH_LEN(altp)].ineigh[1] |
#define ALTP_CUR_THIS_ATOM_NEIGHBOR | ( | altp | ) | (altp)[iALTP_NEIGHBOR+ALTP_PATH_LEN(altp)].ineigh[0] /* 0 <= X < path_len */ |
#define ALTP_DELTA | ( | altp | ) | (altp)[iALTP_FLOW].flow[0] |
#define ALTP_END_ATOM | ( | altp | ) | (altp)[iALTP_END_ATOM].number |
#define ALTP_MAY_ADD | ( | altp | ) | (iALTP_NEIGHBOR + (altp)[iALTP_PATH_LEN].number < (altp)[iALTP_MAX_LEN].number) |
#define ALTP_NEXT | ( | altp | ) | (++ALTP_PATH_LEN(altp)) |
#define ALTP_NEXT_ATOM_NEIGHBOR | ( | altp, | |
X | |||
) | (altp)[iALTP_NEIGHBOR+(X)].ineigh[1] |
#define ALTP_OVERFLOW | ( | altp | ) | (altp)[iALTP_FLOW].flow[1] |
#define ALTP_PATH_LEN | ( | altp | ) | (altp)[iALTP_PATH_LEN].number /* number of bonds = number of atoms-1*/ |
#define ALTP_PREV | ( | altp | ) | (--ALTP_PATH_LEN(altp)) |
#define ALTP_START_ATOM | ( | altp | ) | (altp)[iALTP_START_ATOM].number |
#define ALTP_THIS_ATOM_NEIGHBOR | ( | altp, | |
X | |||
) | (altp)[iALTP_NEIGHBOR+(X)].ineigh[0] /* 0 <= X < path_len */ |
#define AROM_BOND_EDGE_CAP 1 |
#define BIT_WORD_MASK ((bitWord)~0) |
#define BLOSSOM_BASE -1 |
#define BN_MAX_ALTP 16 |
#define BNS_ADD_ATOMS 2 /* max. number of fictitious atoms to add (except t-gtoups) */ |
#define BNS_ADD_EDGES 1 /* max. number of edges to add to each atom (except edges to a t-group or c-group) */ |
#define BNS_ADD_SUPER_TGROUP 1 /* reserve one more edge for a t-group to connect to a single super-t-group */ |
#define BNS_EDGE_FORBIDDEN_MASK 1 |
#define BNS_EDGE_FORBIDDEN_TEMP 2 |
#define BNS_EDGE_FORBIDDEN_TEST 4 |
#define BNS_EF_ALTR_BONDS 8 /* make altern. bonds in the structure if the flow has changed */ |
#define BNS_EF_ALTR_NS (BNS_EF_ALTR_BONDS | BNS_EF_SET_NOSTEREO) |
#define BNS_EF_CHNG_BONDS 4 /* change bonds in the structure according to the BN flow */ |
#define BNS_EF_CHNG_FLOW 1 /* change Balanced Network (BN) flow inside the BNS search */ |
#define BNS_EF_CHNG_RSTR (BNS_EF_CHNG_FLOW | BNS_EF_RSTR_FLOW) |
#define BNS_EF_RAD_SRCH 128 /* search for rafical paths closures */ |
#define BNS_EF_RSTR_FLOW 2 /* undo BN flow changes after BNS */ |
#define BNS_EF_SAVE_ALL (BNS_EF_CHNG_FLOW | BNS_EF_CHNG_BONDS | BNS_EF_UPD_RAD_ORI) |
#define BNS_EF_SET_NOSTEREO |
#define BNS_EF_UPD_H_CHARGE 64 /* update charges and H-counts according to change flow to c- and t-group vertices */ |
#define BNS_EF_UPD_RAD_ORI |
#define BNS_VERT_TYPE__AUX 0x0080 /* vertex added to build charge substructures */ |
#define BNS_VERT_TYPE_ACID 0x0200 /* only for this type are allowed paths: t_group-atom-c_group_neg (path_TACN) */ |
#define BNS_VERT_TYPE_ANY_GROUP (BNS_VERT_TYPE_TGROUP | BNS_VERT_TYPE_C_GROUP | BNS_VERT_TYPE_SUPER_TGROUP) |
#define BNS_VERT_TYPE_ATOM 0x0001 |
#define BNS_VERT_TYPE_C_GROUP 0x0010 |
#define BNS_VERT_TYPE_C_NEGATIVE 0x0100 /* negative charge group; attribute, should be used with BNS_VERT_TYPE_C_GROUP */ |
#define BNS_VERT_TYPE_C_POINT 0x0008 |
#define BNS_VERT_TYPE_CARBON_GR 0x0400 /* charge of carbon atom; should be used with BNS_VT_C_POS, BNS_VT_C_NEG */ |
#define BNS_VERT_TYPE_ENDPOINT 0x0002 /* attribute */ |
#define BNS_VERT_TYPE_METAL_GR 0x0800 /* metal atom group; may be used alone or with BNS_VT_M_POS, BNS_VT_M_NEG */ |
#define BNS_VERT_TYPE_SUPER_TGROUP 0x0020 |
#define BNS_VERT_TYPE_TEMP 0x0040 |
#define BNS_VERT_TYPE_TGROUP 0x0004 |
#define BNS_VT_C_NEG (BNS_VERT_TYPE_C_GROUP | BNS_VERT_TYPE_C_NEGATIVE) /* negative charge group, heteroat */ |
#define BNS_VT_C_NEG_ALL (BNS_VT_C_POS_ALL | BNS_VERT_TYPE_C_NEGATIVE) /* supergroup (-) */ |
#define BNS_VT_C_NEG_C (BNS_VT_C_NEG | BNS_VERT_TYPE_CARBON_GR) /* negative charge group, C, Si, Ge, Sn */ |
#define BNS_VT_C_NEG_M (BNS_VT_C_NEG | BNS_VERT_TYPE_METAL_GR) /* negative charge group, metal */ |
#define BNS_VT_C_POS BNS_VERT_TYPE_C_GROUP /* positive charge group, heteroat */ |
#define BNS_VT_C_POS_ALL (BNS_VERT_TYPE_SUPER_TGROUP | BNS_VERT_TYPE_C_GROUP) /* supergroup (+) */ |
#define BNS_VT_C_POS_C (BNS_VT_C_POS | BNS_VERT_TYPE_CARBON_GR) /* positive charge group, C, Si, Ge, Sn */ |
#define BNS_VT_C_POS_M (BNS_VT_C_POS | BNS_VERT_TYPE_METAL_GR) /* positive charge group, metal */ |
#define BNS_VT_CHRG_STRUCT (BNS_VERT_TYPE__AUX | BNS_VERT_TYPE_TEMP) /* ChargeStruct vertex */ |
#define BNS_VT_M_GROUP BNS_VERT_TYPE_METAL_GR /* metal-group, flower vertex */ |
#define BNS_VT_YVCONNECTOR BNS_VERT_TYPE__AUX /* group connection */ |
#define EDGE_FLOW_MASK 0x3fff /* mask for flow */ |
#define EDGE_FLOW_PATH 0x4000 /* mark: the edge belongs to the augmenting path */ |
#define EDGE_FLOW_ST_MASK 0x3fff /* mask for flow */ |
#define EDGE_FLOW_ST_PATH 0x4000 /* mark: the edge belongs to the augmenting path */ |
#define IS_BNS_VT_ATOM | ( | X | ) | ((X) & BNS_VERT_TYPE_ATOM) |
#define IS_BNS_VT_C_GR | ( | X | ) | (((X) & BNS_VT_C_POS_ALL) == BNS_VERT_TYPE_C_GROUP) |
#define IS_BNS_VT_C_OR_CSUPER_GR | ( | X | ) | ((X) & BNS_VT_C_POS) |
#define IS_BNS_VT_CHRG_STRUCT | ( | X | ) | (((X) & BNS_VERT_TYPE__AUX) && ((X) & BNS_VERT_TYPE_TEMP)) |
#define IS_BNS_VT_CM_GR | ( | X | ) | (((X) & BNS_VT_C_POS_M) == BNS_VT_C_POS_M) /* metal charge group */ |
#define IS_BNS_VT_M_GR | ( | X | ) | ((X) == BNS_VERT_TYPE_METAL_GR ) /* metal flower base or vertices */ |
#define IS_BNS_VT_YVCONNECTOR | ( | X | ) | (((X) & BNS_VERT_TYPE__AUX) && !((X) & BNS_VERT_TYPE_TEMP)) |
#define MAX_ALT_AATG_ARRAY_LEN 127 |
#define MAX_AT_FLOW | ( | X | ) |
#define MAX_BOND_EDGE_CAP 2 /* triple bond */ |
#define MAX_TGROUP_EDGE_CAP 2 /* -NH2 provides max. capacity */ |
#define NO_VERTEX -2 |
#define NUM_KINDS_OF_GROUPS 2 /* 1 accounts for t-group kind, one more 1 accounts for c-group kind */ |
#define Vertex_s 0 |
#define Vertex_t 1 |
typedef enum tagAltPathConst ALT_CONST |
typedef struct BN_AtomsAtTautGroup BN_AATG |
typedef struct BalancedNetworkData BN_DATA |
typedef struct BalancedNetworkStructure BN_STRUCT |
typedef union BnsAltPath BNS_ALT_PATH |
typedef struct tagBNS_FLOW_CHANGES BNS_FLOW_CHANGES |
typedef int BNS_IEDGE |
typedef struct BnsStEdge BNS_ST_EDGE |
typedef struct BnsVertex BNS_VERTEX |
typedef enum tagBnsRadSrchMode BRS_MODE |
typedef int Edge[2] |
typedef int EdgeFlow |
typedef int EdgeIndex |
typedef struct tagNodeSet NodeSet |
typedef int Vertex |
typedef int VertexFlow |
enum tagAltPathConst |
enum tagBnsRadSrchMode |
int AddCGroups2BnStruct | ( | struct tagCANON_GLOBALS * | pCG, |
struct BalancedNetworkStructure * | pBNS, | ||
inp_ATOM * | at, | ||
int | num_atoms, | ||
struct tagChargeGroupsInfo * | cgi | ||
) |
void AddNodeSet2ToNodeSet1 | ( | NodeSet * | cur_nodes, |
int | k1, | ||
int | k2 | ||
) |
int AddNodesToRadEndpoints | ( | struct tagCANON_GLOBALS * | pCG, |
NodeSet * | cur_nodes, | ||
int | k, | ||
Vertex | RadEndpoints[], | ||
Vertex | vRad, | ||
int | nStart, | ||
int | nLen | ||
) |
int AddRemoveIsoProtonsRestr | ( | inp_ATOM * | at, |
int | num_atoms, | ||
NUM_H | num_protons_to_add[], | ||
int | num_tg | ||
) |
int AddRemoveProtonsRestr | ( | inp_ATOM * | at, |
int | num_atoms, | ||
int * | num_protons_to_add, | ||
int | nNumProtAddedByRestr, | ||
INCHI_MODE | bNormalizationFlags, | ||
int | num_tg, | ||
int | nChargeRevrs, | ||
int | nChargeInChI | ||
) |
int AddSuperTGroup2BnStruct | ( | struct BalancedNetworkStructure * | pBNS, |
inp_ATOM * | at, | ||
int | num_atoms, | ||
struct tagTautomerGroupsInfo * | tgi | ||
) |
int AddTGroups2BnStruct | ( | struct tagCANON_GLOBALS * | pCG, |
struct BalancedNetworkStructure * | pBNS, | ||
inp_ATOM * | at, | ||
int | num_atoms, | ||
struct tagTautomerGroupsInfo * | tgi | ||
) |
BN_DATA * AllocateAndInitBnData | ( | int | max_num_vertices | ) |
BN_STRUCT * AllocateAndInitBnStruct | ( | inp_ATOM * | at, |
int | num_atoms, | ||
int | nMaxAddAtoms, | ||
int | nMaxAddEdges, | ||
int | max_altp, | ||
int * | num_changed_bonds | ||
) |
int bExistsAltPath | ( | struct tagCANON_GLOBALS * | pCG, |
struct BalancedNetworkStructure * | pBNS, | ||
struct BalancedNetworkData * | pBD, | ||
struct BN_AtomsAtTautGroup * | pAATG, | ||
inp_ATOM * | at, | ||
int | num_atoms, | ||
int | nVertDoubleBond, | ||
int | nVertSingleBond, | ||
int | path_type | ||
) |
int bExistsAnyAltPath | ( | struct tagCANON_GLOBALS * | pCG, |
struct BalancedNetworkStructure * | pBNS, | ||
struct BalancedNetworkData * | pBD, | ||
inp_ATOM * | at, | ||
int | num_atoms, | ||
int | nVertDoubleBond, | ||
int | nVertSingleBond, | ||
int | path_type | ||
) |
int bIsHardRemHCandidate | ( | inp_ATOM * | at, |
int | i, | ||
int * | cSubType | ||
) |
int DisconnectTestAtomFromTGroup | ( | struct BalancedNetworkStructure * | pBNS, |
int | v1, | ||
int * | pv2, | ||
BNS_FLOW_CHANGES * | fcd | ||
) |
int DisconnectTGroupFromSuperTGroup | ( | struct BalancedNetworkStructure * | pBNS, |
int | v1, | ||
int * | pv1, | ||
int * | pv2, | ||
BNS_FLOW_CHANGES * | fcd | ||
) |
int DoNodeSetsIntersect | ( | NodeSet * | cur_nodes, |
int | k1, | ||
int | k2 | ||
) |
int IsNodeSetEmpty | ( | NodeSet * | cur_nodes, |
int | k | ||
) |
int nExists2AtMoveAltPath | ( | struct BalancedNetworkStructure * | pBNS, |
struct BalancedNetworkData * | pBD, | ||
struct BN_AtomsAtTautGroup * | pAATG, | ||
inp_ATOM * | at, | ||
int | num_atoms, | ||
int | jj2, | ||
int | jj1, | ||
struct tagSaltChargeCandidate * | s_candidate, | ||
int | nNumCandidates, | ||
AT_NUMB * | nForbiddenAtom, | ||
int | nNumForbiddenAtoms | ||
) |
int NodeSetCreate | ( | struct tagCANON_GLOBALS * | pCG, |
NodeSet * | pSet, | ||
int | n, | ||
int | L | ||
) |
void NodeSetFree | ( | struct tagCANON_GLOBALS * | pCG, |
NodeSet * | pSet | ||
) |
void NodeSetFromRadEndpoints | ( | struct tagCANON_GLOBALS * | pCG, |
NodeSet * | cur_nodes, | ||
int | k, | ||
Vertex | RadEndpoints[], | ||
int | num_v | ||
) |
int ReconnectTestAtomToTGroup | ( | struct BalancedNetworkStructure * | pBNS, |
int | v1, | ||
int | v2, | ||
int | ie, | ||
BNS_FLOW_CHANGES * | fcd | ||
) |
int ReInitBnData | ( | BN_DATA * | pBD | ) |
int ReInitBnStruct | ( | struct BalancedNetworkStructure * | pBNS, |
inp_ATOM * | at, | ||
int | num_at, | ||
int | bRemoveGroupsFromAtoms | ||
) |
int ReInitBnStructAddGroups | ( | struct tagCANON_GLOBALS * | pCG, |
struct BalancedNetworkStructure * | pBNS, | ||
inp_ATOM * | at, | ||
int | num_atoms, | ||
struct tagTautomerGroupsInfo * | tgi, | ||
struct tagChargeGroupsInfo * | cgi | ||
) |
int ReInitBnStructAltPaths | ( | BN_STRUCT * | pBNS | ) |
void RemoveFromNodeSet | ( | struct tagCANON_GLOBALS * | pCG, |
NodeSet * | cur_nodes, | ||
int | k, | ||
Vertex | v[], | ||
int | num_v | ||
) |
int SetForbiddenEdges | ( | BN_STRUCT * | pBNS, |
inp_ATOM * | at, | ||
int | num_atoms, | ||
int | edge_forbidden_mask, | ||
int | nebend, | ||
int * | ebend | ||
) |
int SetRadEndpoints2 | ( | struct tagCANON_GLOBALS * | pCG, |
BN_STRUCT * | pBNS, | ||
BN_DATA * | pBD, | ||
BRS_MODE | bRadSrchMode | ||
) |