69#define T_NUM_NO_ISOTOPIC 2
70#define T_NUM_ISOTOPIC NUM_H_ISOTOPES
72#define T_GROUP_HDR_LEN (1+T_NUM_NO_ISOTOPIC )
81#define T_GROUP_ISOWT_MULT 1024
137#define TGSO_CURR_ORDER 0
138#define TGSO_SYMM_RANK 1
139#define TGSO_SYMM_IORDER 2
140#define TGSO_SYMM_IRANK 3
141#define TGSO_TOTAL_LEN 4
146#define FLAG_PROTON_NPO_SIMPLE_REMOVED 0x0001
147#define FLAG_PROTON_NP_HARD_REMOVED 0x0002
148#define FLAG_PROTON_AC_SIMPLE_ADDED 0x0004
149#define FLAG_PROTON_AC_SIMPLE_REMOVED 0x0008
150#define FLAG_PROTON_AC_HARD_REMOVED 0x0010
151#define FLAG_PROTON_AC_HARD_ADDED 0x0020
152#define FLAG_PROTON_CHARGE_CANCEL 0x0040
153#define FLAG_PROTON_SINGLE_REMOVED 0x0080
156#define FLAG_NORM_CONSIDER_TAUT ( FLAG_PROTON_NPO_SIMPLE_REMOVED | \
157 FLAG_PROTON_NP_HARD_REMOVED | \
158 FLAG_PROTON_AC_SIMPLE_ADDED | \
159 FLAG_PROTON_AC_SIMPLE_REMOVED | \
160 FLAG_PROTON_AC_HARD_REMOVED | \
161 FLAG_PROTON_AC_HARD_ADDED | \
162 FLAG_PROTON_SINGLE_REMOVED | \
163 FLAG_PROTON_CHARGE_CANCEL )
165#if ( FIX_N_MINUS_NORN_BUG == 1 )
166#define FLAG_FORCE_SALT_TAUT ( FLAG_PROTON_NP_HARD_REMOVED | \
167 FLAG_PROTON_AC_HARD_REMOVED | \
168 FLAG_PROTON_AC_HARD_ADDED | \
169 FLAG_PROTON_CHARGE_CANCEL )
172#define FLAG_FORCE_SALT_TAUT ( FLAG_PROTON_NP_HARD_REMOVED | \
173 FLAG_PROTON_AC_HARD_REMOVED | \
174 FLAG_PROTON_AC_HARD_ADDED )
206#define CANON_FLAG_NO_H_RECANON 0x0001
207#define CANON_FLAG_NO_TAUT_H_DIFF 0x0002
208#define CANON_FLAG_ISO_ONLY_NON_TAUT_DIFF 0x0004
209#define CANON_FLAG_ISO_TAUT_DIFF 0x0008
210#define CANON_FLAG_ISO_FIXED_H_DIFF 0x0010
253#define CHARGED_CPOINT(X,i) ((X)[i].charge==1)
328#ifndef COMPILE_ALL_CPP
336#if ( KETO_ENOL_TAUT == 1 )
342#if ( TAUT_PT_22_00 == 1 )
345#if ( TAUT_PT_16_00 == 1 )
348#if ( TAUT_PT_06_00 == 1 )
351#if ( TAUT_PT_39_00 == 1 )
354#if ( TAUT_PT_13_00 == 1 )
357#if ( TAUT_PT_18_00 == 1 )
361#if ( KETO_ENOL_TAUT == 1 )
390 int nStartAtomNeighbor,
407 int nStartAtomNeighbor,
408 int nStartAtomNeighborEndpoint,
409 int nStartAtomNeighborNeighborEndpoint,
426 int nStartAtomNeighbor,
427 int nStartAtomNeighborEndpoint,
428 int nStartAtomNeighborNeighborEndpoint,
444 int nStartAtom,
AT_RANK *nDfsPathPos,
458#ifndef COMPILE_ALL_CPP
long AT_ISO_SORT_KEY
Definition extr_ct.h:34
unsigned short AT_NUMB
Definition ichisize.h:10
unsigned short AT_RANK
Definition ichisize.h:11
signed short NUM_H
Definition ichisize.h:14
unsigned long INCHI_MODE
Definition ichisize.h:25
int nGet15TautInAltPath(struct tagCANON_GLOBALS *pCG, inp_ATOM *atom, int nStartAtom, AT_RANK *nDfsPathPos, DFS_PATH *DfsPath, int nMaxLenDfsPath, T_ENDPOINT *EndPoint, int nMaxNumEndPoint, T_BONDPOS *BondPos, int nMaxNumBondPos, int *pnNumEndPoint, int *pnNumBondPos, struct BalancedNetworkStructure *pBNS, struct BalancedNetworkData *pBD, int num_atoms)
Definition ichiqueu.c:372
struct tagDfsPath DFS_PATH
struct tagTautomerGroupsInfo T_GROUP_INFO
int AddAtom2num(AT_RANK num[], inp_ATOM *atom, int at_no, int bSubtract)
Definition ichitaut.c:176
int bHasAcidicHydrogen(inp_ATOM *at, int i)
Definition ichi_bns.c:4164
struct tagTautomerEndpoint T_ENDPOINT
struct tagIsotopicTautomerGroup AT_ISO_TGROUP
#define T_NUM_NO_ISOTOPIC
Definition ichitaut.h:69
AT_ISO_SORT_KEY T_GROUP_ISOWT
Definition ichitaut.h:76
int nGetEndpointInfo_KET(inp_ATOM *atom, int iat, ENDPOINT_INFO *eif)
Definition ichitaut.c:881
int bHasAcidicMinus(inp_ATOM *at, int i)
Definition ichi_bns.c:4288
int nGetEndpointInfo_PT_22_00(inp_ATOM *atom, int iat, ENDPOINT_INFO *eif)
Definition ichitaut.c:417
int nGet12TautIn5MembAltRing(struct tagCANON_GLOBALS *pCG, inp_ATOM *atom, int nStartAtom, int nStartAtomNeighbor, AT_RANK *nBfsTreePos, DFS_PATH *DfsPath, int nMaxLenBfsTree, T_ENDPOINT *EndPoint, int nMaxNumEndPoint, T_BONDPOS *BondPos, int nMaxNumBondPos, int *pnNumEndPoint, int *pnNumBondPos, struct BalancedNetworkStructure *pBNS, struct BalancedNetworkData *pBD, int num_atoms)
Definition ichiqueu.c:287
int nGetEndpointInfo_PT_39_00(inp_ATOM *atom, int iat, ENDPOINT_INFO *eif)
Definition ichitaut.c:642
struct tagChargeCandidate C_CANDIDATE
struct tagChargeGroup C_GROUP
int nGetEndpointInfo_PT_06_00(inp_ATOM *atom, int iat, ENDPOINT_INFO *eif)
Definition ichitaut.c:565
struct tagEndpointInfo ENDPOINT_INFO
int is_centerpoint_elem_KET(U_CHAR el_number)
Definition ichitaut.c:147
struct tagChargeGroupsInfo C_GROUP_INFO
int nGet14TautIn7MembAltRing(struct tagCANON_GLOBALS *pCG, inp_ATOM *atom, int nStartAtom, int nStartAtomNeighbor, int nStartAtomNeighborEndpoint, int nStartAtomNeighborNeighborEndpoint, AT_RANK *nDfsPathPos, DFS_PATH *DfsPath, int nMaxLenDfsPath, T_ENDPOINT *EndPoint, int nMaxNumEndPoint, T_BONDPOS *BondPos, int nMaxNumBondPos, int *pnNumEndPoint, int *pnNumBondPos, struct BalancedNetworkStructure *pBNS, struct BalancedNetworkData *pBD, int num_atoms)
Definition ichiqueu.c:205
struct tagSaltChargeCandidate S_CANDIDATE
int nGetEndpointInfo_PT_16_00(inp_ATOM *atom, int iat, ENDPOINT_INFO *eif)
Definition ichitaut.c:489
struct tagTautomerGroup T_GROUP
int nGet14TautIn5MembAltRing(struct tagCANON_GLOBALS *pCG, inp_ATOM *atom, int nStartAtom, int nStartAtomNeighbor, int nStartAtomNeighborEndpoint, int nStartAtomNeighborNeighborEndpoint, AT_RANK *nDfsPathPos, DFS_PATH *DfsPath, int nMaxLenDfsPath, T_ENDPOINT *EndPoint, int nMaxNumEndPoint, T_BONDPOS *BondPos, int nMaxNumBondPos, int *pnNumEndPoint, int *pnNumBondPos, struct BalancedNetworkStructure *pBNS, struct BalancedNetworkData *pBD, int num_atoms)
Definition ichiqueu.c:248
void AddAtom2DA(AT_RANK num_DA[], inp_ATOM *atom, int at_no, int bSubtract)
Definition ichitaut.c:215
struct tagAtomSizes ATOM_SIZES
int is_centerpoint_elem_strict(U_CHAR el_number)
Definition ichitaut.c:155
#define T_NUM_ISOTOPIC
Definition ichitaut.h:70
int AddEndPoint(T_ENDPOINT *pEndPoint, inp_ATOM *at, int iat)
Definition ichitaut.c:295
struct tagSaltGroupInfo S_GROUP_INFO
tagTG_NumDA
Definition ichitaut.h:101
@ TG_Num_dH
Definition ichitaut.h:102
@ TG_Num_dM
Definition ichitaut.h:103
@ TG_Num_aO
Definition ichitaut.h:107
@ TG_Num_aM
Definition ichitaut.h:105
@ TG_NUM_DA
Definition ichitaut.h:108
@ TG_Num_dO
Definition ichitaut.h:106
@ TG_Num_aH
Definition ichitaut.h:104
int nGet15TautIn6MembAltRing(struct tagCANON_GLOBALS *pCG, inp_ATOM *atom, int nStartAtom, AT_RANK *nBfsTreePos, DFS_PATH *DfsPath, int nMaxLenBfsTree, T_ENDPOINT *EndPoint, int nMaxNumEndPoint, T_BONDPOS *BondPos, int nMaxNumBondPos, int *pnNumEndPoint, int *pnNumBondPos, struct BalancedNetworkStructure *pBNS, struct BalancedNetworkData *pBD, int num_atoms)
Definition ichiqueu.c:326
AT_NUMB AT_TAUTOMER
Definition ichitaut.h:74
int is_centerpoint_elem(U_CHAR el_number)
Definition ichitaut.c:122
int bIsCenterPointStrict(inp_ATOM *atom, int iat)
Definition ichiqueu.c:180
struct tagTautomerNormInfo TNI
int nGetEndpointInfo(inp_ATOM *atom, int iat, ENDPOINT_INFO *eif)
Definition ichitaut.c:324
int nGetEndpointInfo_PT_18_00(inp_ATOM *atom, int iat, ENDPOINT_INFO *eif)
Definition ichitaut.c:797
struct tagTautomerBondLocation T_BONDPOS
int bHasOtherExchangableH(inp_ATOM *at, int i)
Definition ichi_bns.c:4184
int nGetEndpointInfo_PT_13_00(inp_ATOM *atom, int iat, ENDPOINT_INFO *eif)
Definition ichitaut.c:721
signed char S_CHAR
Definition inchi_api.h:78
#define NUM_H_ISOTOPES
Definition inchi_api.h:72
unsigned char U_CHAR
Definition inchi_api.h:79
Definition ichi_bns.h:251
Definition ichi_bns.h:198
Definition ichitaut.h:296
int nLenBonds
Definition ichitaut.h:302
int bMayHaveStereo
Definition ichitaut.h:308
int nLenLinearCTIsotopicTautomer
Definition ichitaut.h:314
int nLenIsotopicEndpoints
Definition ichitaut.h:316
int nLenCT
Definition ichitaut.h:301
int nLenLinearCTStereoDble
Definition ichitaut.h:305
int nMaxNumStereoBonds
Definition ichitaut.h:299
int nMaxNumStereoAtoms
Definition ichitaut.h:298
int bHasIsotopicTautGroups
Definition ichitaut.h:315
int nLenIsotopic
Definition ichitaut.h:303
int bIgnoreIsotopic
Definition ichitaut.h:310
int nLenLinearCTTautomer
Definition ichitaut.h:313
int nLenCTAtOnly
Definition ichitaut.h:304
int nLenLinearCTStereoCarb
Definition ichitaut.h:306
int num_isotopic_atoms
Definition ichitaut.h:300
Definition ichicant.h:303
Definition ichitaut.h:255
S_CHAR subtype
Definition ichitaut.h:258
S_CHAR type
Definition ichitaut.h:257
AT_NUMB atnumber
Definition ichitaut.h:256
Definition ichitaut.h:261
AT_RANK num_CPoints
Definition ichitaut.h:263
AT_RANK num[2]
Definition ichitaut.h:262
AT_NUMB nGroupNumber
Definition ichitaut.h:264
U_CHAR cGroupType
Definition ichitaut.h:265
Definition ichitaut.h:268
int num_candidates
Definition ichitaut.h:275
C_CANDIDATE * c_candidate
Definition ichitaut.h:273
int num_c_groups
Definition ichitaut.h:270
int max_num_c_groups
Definition ichitaut.h:271
C_GROUP * c_group
Definition ichitaut.h:269
int max_num_candidates
Definition ichitaut.h:274
Definition ichitaut.h:320
U_CHAR bond_type
Definition ichitaut.h:323
AT_RANK at_no
Definition ichitaut.h:321
S_CHAR bond_pos
Definition ichitaut.h:324
Definition ichitaut.h:241
S_CHAR cAcceptor
Definition ichitaut.h:246
S_CHAR cMobile
Definition ichitaut.h:244
S_CHAR cKetoEnolCode
Definition ichitaut.h:247
S_CHAR cNeutralBondsValence
Definition ichitaut.h:243
S_CHAR cDonor
Definition ichitaut.h:245
S_CHAR cMoveableCharge
Definition ichitaut.h:242
AT_NUMB num[T_NUM_ISOTOPIC]
Definition ichitaut.h:98
AT_NUMB tgroup_num
Definition ichitaut.h:87
Definition ichitaut.h:236
AT_NUMB nAtomNumber
Definition ichitaut.h:237
AT_NUMB neighbor_index
Definition ichitaut.h:238
Definition ichitaut.h:216
AT_NUMB nAtomNumber
Definition ichitaut.h:232
AT_RANK num_DA[TG_NUM_DA]
Definition ichitaut.h:229
AT_RANK num[T_NUM_NO_ISOTOPIC+T_NUM_ISOTOPIC]
Definition ichitaut.h:228
AT_NUMB nEquNumber
Definition ichitaut.h:231
AT_NUMB nGroupNumber
Definition ichitaut.h:230
Definition ichitaut.h:111
AT_NUMB nNumEndpoints
Definition ichitaut.h:132
AT_RANK num_DA[TG_NUM_DA]
Definition ichitaut.h:129
T_GROUP_ISOWT iWeight
Definition ichitaut.h:130
AT_NUMB nFirstEndpointAtNoPos
Definition ichitaut.h:133
AT_RANK num[T_NUM_NO_ISOTOPIC+T_NUM_ISOTOPIC]
Definition ichitaut.h:127
AT_NUMB nGroupNumber
Definition ichitaut.h:131
Definition ichitaut.h:187
int max_num_t_groups
Definition ichitaut.h:193
AT_NUMB * tGroupNumber
Definition ichitaut.h:190
int bIgnoreIsotopic
Definition ichitaut.h:194
int num_t_groups
Definition ichitaut.h:192
AT_NUMB * nIsotopicEndpointAtomNumber
Definition ichitaut.h:196
INCHI_MODE bTautFlagsDone
Definition ichitaut.h:203
T_GROUP * t_group
Definition ichitaut.h:188
TNI tni
Definition ichitaut.h:200
NUM_H num_iso_H[NUM_H_ISOTOPES]
Definition ichitaut.h:198
INCHI_MODE bTautFlags
Definition ichitaut.h:202
int nNumIsotopicEndpoints
Definition ichitaut.h:197
AT_NUMB * nEndpointAtomNumber
Definition ichitaut.h:189
int nNumEndpoints
Definition ichitaut.h:191
Definition ichitaut.h:177
NUM_H nNumRemovedExplicitH
Definition ichitaut.h:178
INCHI_MODE bNormalizationFlags
Definition ichitaut.h:181
NUM_H nNumRemovedProtonsIsotopic[NUM_H_ISOTOPES]
Definition ichitaut.h:180
NUM_H nNumRemovedProtons
Definition ichitaut.h:179