104#define T_NUM_NO_ISOTOPIC 2
105#define T_NUM_ISOTOPIC NUM_H_ISOTOPES
107#define T_GROUP_HDR_LEN (1+T_NUM_NO_ISOTOPIC )
116#define T_GROUP_ISOWT_MULT 1024
172#define TGSO_CURR_ORDER 0
173#define TGSO_SYMM_RANK 1
174#define TGSO_SYMM_IORDER 2
175#define TGSO_SYMM_IRANK 3
176#define TGSO_TOTAL_LEN 4
181#define FLAG_PROTON_NPO_SIMPLE_REMOVED 0x0001
182#define FLAG_PROTON_NP_HARD_REMOVED 0x0002
183#define FLAG_PROTON_AC_SIMPLE_ADDED 0x0004
184#define FLAG_PROTON_AC_SIMPLE_REMOVED 0x0008
185#define FLAG_PROTON_AC_HARD_REMOVED 0x0010
186#define FLAG_PROTON_AC_HARD_ADDED 0x0020
187#define FLAG_PROTON_CHARGE_CANCEL 0x0040
188#define FLAG_PROTON_SINGLE_REMOVED 0x0080
191#define FLAG_NORM_CONSIDER_TAUT ( FLAG_PROTON_NPO_SIMPLE_REMOVED | \
192 FLAG_PROTON_NP_HARD_REMOVED | \
193 FLAG_PROTON_AC_SIMPLE_ADDED | \
194 FLAG_PROTON_AC_SIMPLE_REMOVED | \
195 FLAG_PROTON_AC_HARD_REMOVED | \
196 FLAG_PROTON_AC_HARD_ADDED | \
197 FLAG_PROTON_SINGLE_REMOVED | \
198 FLAG_PROTON_CHARGE_CANCEL )
200#if ( FIX_N_MINUS_NORN_BUG == 1 )
201#define FLAG_FORCE_SALT_TAUT ( FLAG_PROTON_NP_HARD_REMOVED | \
202 FLAG_PROTON_AC_HARD_REMOVED | \
203 FLAG_PROTON_AC_HARD_ADDED | \
204 FLAG_PROTON_CHARGE_CANCEL )
207#define FLAG_FORCE_SALT_TAUT ( FLAG_PROTON_NP_HARD_REMOVED | \
208 FLAG_PROTON_AC_HARD_REMOVED | \
209 FLAG_PROTON_AC_HARD_ADDED )
241#define CANON_FLAG_NO_H_RECANON 0x0001
242#define CANON_FLAG_NO_TAUT_H_DIFF 0x0002
243#define CANON_FLAG_ISO_ONLY_NON_TAUT_DIFF 0x0004
244#define CANON_FLAG_ISO_TAUT_DIFF 0x0008
245#define CANON_FLAG_ISO_FIXED_H_DIFF 0x0010
288#define CHARGED_CPOINT(X,i) ((X)[i].charge==1)
363#ifndef COMPILE_ALL_CPP
371#if ( KETO_ENOL_TAUT == 1 )
377#if ( TAUT_PT_22_00 == 1 )
380#if ( TAUT_PT_16_00 == 1 )
383#if ( TAUT_PT_06_00 == 1 )
386#if ( TAUT_PT_39_00 == 1 )
389#if ( TAUT_PT_13_00 == 1 )
392#if ( TAUT_PT_18_00 == 1 )
396#if ( KETO_ENOL_TAUT == 1 )
425 int nStartAtomNeighbor,
442 int nStartAtomNeighbor,
443 int nStartAtomNeighborEndpoint,
444 int nStartAtomNeighborNeighborEndpoint,
461 int nStartAtomNeighbor,
462 int nStartAtomNeighborEndpoint,
463 int nStartAtomNeighborNeighborEndpoint,
479 int nStartAtom,
AT_RANK *nDfsPathPos,
493#ifndef COMPILE_ALL_CPP
long AT_ISO_SORT_KEY
Definition extr_ct.h:69
unsigned short AT_NUMB
Definition ichisize.h:45
unsigned short AT_RANK
Definition ichisize.h:46
signed short NUM_H
Definition ichisize.h:49
unsigned long INCHI_MODE
Definition ichisize.h:60
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:407
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:211
int bHasAcidicHydrogen(inp_ATOM *at, int i)
Definition ichi_bns.c:4196
struct tagTautomerEndpoint T_ENDPOINT
struct tagIsotopicTautomerGroup AT_ISO_TGROUP
#define T_NUM_NO_ISOTOPIC
Definition ichitaut.h:104
AT_ISO_SORT_KEY T_GROUP_ISOWT
Definition ichitaut.h:111
int nGetEndpointInfo_KET(inp_ATOM *atom, int iat, ENDPOINT_INFO *eif)
Definition ichitaut.c:916
int bHasAcidicMinus(inp_ATOM *at, int i)
Definition ichi_bns.c:4320
int nGetEndpointInfo_PT_22_00(inp_ATOM *atom, int iat, ENDPOINT_INFO *eif)
Definition ichitaut.c:452
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:322
int nGetEndpointInfo_PT_39_00(inp_ATOM *atom, int iat, ENDPOINT_INFO *eif)
Definition ichitaut.c:677
struct tagChargeCandidate C_CANDIDATE
struct tagChargeGroup C_GROUP
int nGetEndpointInfo_PT_06_00(inp_ATOM *atom, int iat, ENDPOINT_INFO *eif)
Definition ichitaut.c:600
struct tagEndpointInfo ENDPOINT_INFO
int is_centerpoint_elem_KET(U_CHAR el_number)
Definition ichitaut.c:182
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:240
struct tagSaltChargeCandidate S_CANDIDATE
int nGetEndpointInfo_PT_16_00(inp_ATOM *atom, int iat, ENDPOINT_INFO *eif)
Definition ichitaut.c:524
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:283
void AddAtom2DA(AT_RANK num_DA[], inp_ATOM *atom, int at_no, int bSubtract)
Definition ichitaut.c:250
struct tagAtomSizes ATOM_SIZES
int is_centerpoint_elem_strict(U_CHAR el_number)
Definition ichitaut.c:190
#define T_NUM_ISOTOPIC
Definition ichitaut.h:105
int AddEndPoint(T_ENDPOINT *pEndPoint, inp_ATOM *at, int iat)
Definition ichitaut.c:330
struct tagSaltGroupInfo S_GROUP_INFO
tagTG_NumDA
Definition ichitaut.h:136
@ TG_Num_dH
Definition ichitaut.h:137
@ TG_Num_dM
Definition ichitaut.h:138
@ TG_Num_aO
Definition ichitaut.h:142
@ TG_Num_aM
Definition ichitaut.h:140
@ TG_NUM_DA
Definition ichitaut.h:143
@ TG_Num_dO
Definition ichitaut.h:141
@ TG_Num_aH
Definition ichitaut.h:139
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:361
AT_NUMB AT_TAUTOMER
Definition ichitaut.h:109
int is_centerpoint_elem(U_CHAR el_number)
Definition ichitaut.c:157
int bIsCenterPointStrict(inp_ATOM *atom, int iat)
Definition ichiqueu.c:215
struct tagTautomerNormInfo TNI
int nGetEndpointInfo(inp_ATOM *atom, int iat, ENDPOINT_INFO *eif)
Definition ichitaut.c:359
int nGetEndpointInfo_PT_18_00(inp_ATOM *atom, int iat, ENDPOINT_INFO *eif)
Definition ichitaut.c:832
struct tagTautomerBondLocation T_BONDPOS
int bHasOtherExchangableH(inp_ATOM *at, int i)
Definition ichi_bns.c:4216
int nGetEndpointInfo_PT_13_00(inp_ATOM *atom, int iat, ENDPOINT_INFO *eif)
Definition ichitaut.c:756
signed char S_CHAR
Definition inchi_api.h:113
#define NUM_H_ISOTOPES
Definition inchi_api.h:107
unsigned char U_CHAR
Definition inchi_api.h:114
Definition ichi_bns.h:286
Definition ichi_bns.h:233
Definition ichitaut.h:331
int nLenBonds
Definition ichitaut.h:337
int bMayHaveStereo
Definition ichitaut.h:343
int nLenLinearCTIsotopicTautomer
Definition ichitaut.h:349
int nLenIsotopicEndpoints
Definition ichitaut.h:351
int nLenCT
Definition ichitaut.h:336
int nLenLinearCTStereoDble
Definition ichitaut.h:340
int nMaxNumStereoBonds
Definition ichitaut.h:334
int nMaxNumStereoAtoms
Definition ichitaut.h:333
int bHasIsotopicTautGroups
Definition ichitaut.h:350
int nLenIsotopic
Definition ichitaut.h:338
int bIgnoreIsotopic
Definition ichitaut.h:345
int nLenLinearCTTautomer
Definition ichitaut.h:348
int nLenCTAtOnly
Definition ichitaut.h:339
int nLenLinearCTStereoCarb
Definition ichitaut.h:341
int num_isotopic_atoms
Definition ichitaut.h:335
Definition ichicant.h:338
Definition ichitaut.h:290
S_CHAR subtype
Definition ichitaut.h:293
S_CHAR type
Definition ichitaut.h:292
AT_NUMB atnumber
Definition ichitaut.h:291
Definition ichitaut.h:296
AT_RANK num_CPoints
Definition ichitaut.h:298
AT_RANK num[2]
Definition ichitaut.h:297
AT_NUMB nGroupNumber
Definition ichitaut.h:299
U_CHAR cGroupType
Definition ichitaut.h:300
Definition ichitaut.h:303
int num_candidates
Definition ichitaut.h:310
C_CANDIDATE * c_candidate
Definition ichitaut.h:308
int num_c_groups
Definition ichitaut.h:305
int max_num_c_groups
Definition ichitaut.h:306
C_GROUP * c_group
Definition ichitaut.h:304
int max_num_candidates
Definition ichitaut.h:309
Definition ichitaut.h:355
U_CHAR bond_type
Definition ichitaut.h:358
AT_RANK at_no
Definition ichitaut.h:356
S_CHAR bond_pos
Definition ichitaut.h:359
Definition ichitaut.h:276
S_CHAR cAcceptor
Definition ichitaut.h:281
S_CHAR cMobile
Definition ichitaut.h:279
S_CHAR cKetoEnolCode
Definition ichitaut.h:282
S_CHAR cNeutralBondsValence
Definition ichitaut.h:278
S_CHAR cDonor
Definition ichitaut.h:280
S_CHAR cMoveableCharge
Definition ichitaut.h:277
Definition ichitaut.h:121
AT_NUMB num[T_NUM_ISOTOPIC]
Definition ichitaut.h:133
AT_NUMB tgroup_num
Definition ichitaut.h:122
Definition ichitaut.h:271
AT_NUMB nAtomNumber
Definition ichitaut.h:272
AT_NUMB neighbor_index
Definition ichitaut.h:273
Definition ichitaut.h:251
AT_NUMB nAtomNumber
Definition ichitaut.h:267
AT_RANK num_DA[TG_NUM_DA]
Definition ichitaut.h:264
AT_RANK num[T_NUM_NO_ISOTOPIC+T_NUM_ISOTOPIC]
Definition ichitaut.h:263
AT_NUMB nEquNumber
Definition ichitaut.h:266
AT_NUMB nGroupNumber
Definition ichitaut.h:265
Definition ichitaut.h:146
AT_NUMB nNumEndpoints
Definition ichitaut.h:167
AT_RANK num_DA[TG_NUM_DA]
Definition ichitaut.h:164
T_GROUP_ISOWT iWeight
Definition ichitaut.h:165
AT_NUMB nFirstEndpointAtNoPos
Definition ichitaut.h:168
AT_RANK num[T_NUM_NO_ISOTOPIC+T_NUM_ISOTOPIC]
Definition ichitaut.h:162
AT_NUMB nGroupNumber
Definition ichitaut.h:166
Definition ichitaut.h:222
int max_num_t_groups
Definition ichitaut.h:228
AT_NUMB * tGroupNumber
Definition ichitaut.h:225
int bIgnoreIsotopic
Definition ichitaut.h:229
int num_t_groups
Definition ichitaut.h:227
AT_NUMB * nIsotopicEndpointAtomNumber
Definition ichitaut.h:231
INCHI_MODE bTautFlagsDone
Definition ichitaut.h:238
T_GROUP * t_group
Definition ichitaut.h:223
TNI tni
Definition ichitaut.h:235
NUM_H num_iso_H[NUM_H_ISOTOPES]
Definition ichitaut.h:233
INCHI_MODE bTautFlags
Definition ichitaut.h:237
int nNumIsotopicEndpoints
Definition ichitaut.h:232
AT_NUMB * nEndpointAtomNumber
Definition ichitaut.h:224
int nNumEndpoints
Definition ichitaut.h:226
Definition ichitaut.h:212
NUM_H nNumRemovedExplicitH
Definition ichitaut.h:213
INCHI_MODE bNormalizationFlags
Definition ichitaut.h:216
NUM_H nNumRemovedProtonsIsotopic[NUM_H_ISOTOPES]
Definition ichitaut.h:215
NUM_H nNumRemovedProtons
Definition ichitaut.h:214