InChI
 
Loading...
Searching...
No Matches
inpdef.h
Go to the documentation of this file.
1/*
2 * SPDX-License-Identifier: MIT
3 * Copyright (c) 2024 IUPAC and InChI Trust
4 */
5
6#ifndef _INPDEF_H_
7#define _INPDEF_H_
8
9/* input/output format */
10
11#include "ichidrp.h"
12#include "mode.h"
13#include "mol_fmt.h"
14
15#define CLOSING_STARRED_SRU_IS_A_MUST 1
16#define ALLOW_CLOSING_SRU_VIA_HIGHER_ORDER_BOND 1
17#define ALLOW_CLOSING_SRU_VIA_DIRADICAL 1
18
19#define CLOSING_SRU_NOT_APPLICABLE 0
20#define CLOSING_SRU_RING 1
21#define CLOSING_SRU_HIGHER_ORDER_BOND 2
22#define CLOSING_SRU_DIRADICAL 3
23#define CLOSING_SRU_RING_OPENED 4
24#define CLOSING_SRU_MOVED_BRACKETS 5
25
26#define bDrawingLabelLeftShift endpoint
28
29/* inp_ATOM::at_type */
30#define ATT_NONE 0x0000
31#define ATT_ACIDIC_CO 0x0001
32#define ATT_ACIDIC_S 0x0002
33#define ATT_OO 0x0004
34#define ATT_ZOO 0x0008
35#define ATT_NO 0x0010
36#define ATT_N_O 0x0020
37#define ATT_ATOM_N 0x0040
38#define ATT_ATOM_P 0x0080
39#define ATT_OTHER_NEG_O 0x0100
40#define ATT_OTHER_ZO 0x0200
41#define ATT_OH_MINUS 0x0400
42#define ATT_O_PLUS 0x0800
43#define ATT_PROTON 0x1000
44#define ATT_HalAnion 0x2000
45#define ATT_HalAcid 0x4000
46#if (FIX_NP_MINUS_BUG == 1)
47#define ATT_NP_MINUS_V23 0x8000
48#endif
49
50#define AT_FLAG_ISO_H_POINT 0x01
52#define PERIODIC_NUMBER_H 1
53
54#ifndef NUMH
55#define NUM_ISO_H(AT, N) (AT[N].num_iso_H[0] + AT[N].num_iso_H[1] + AT[N].num_iso_H[2])
56#define NUMH(AT, N) (AT[N].num_H + NUM_ISO_H(AT, N))
57#endif
58
59#define FlagSC_0D 1
60#define FlagSB_0D 2
62#define SB_PARITY_FLAG 0x38
63#define SB_PARITY_SHFT 3
64#define SB_PARITY_MASK 0x07
65#define SB_PARITY_1(X) (X & SB_PARITY_MASK)
66#define SB_PARITY_2(X) (((X) >> SB_PARITY_SHFT) & SB_PARITY_MASK)
106typedef struct tagInputAtom
107{
108 char elname[ATOM_EL_LEN]; /* name of chemical element */
109 U_CHAR el_number; /* number of the element in the Periodic Table */
110 AT_NUMB neighbor[MAXVAL]; /* positions (from 0) of the neighbors in the inp_ATOM array*/
111 AT_NUMB orig_at_number; /* original atom number */
112 AT_NUMB orig_compt_at_numb; /* original atom number within the component */
113 /* before terminal H removal */
114 S_CHAR bond_stereo[MAXVAL]; /* 1=Up,4=Either,6=Down; this atom is at the pointing wedge,*/
115 /* negative => on the opposite side; 3=Either double bond */
116 U_CHAR bond_type[MAXVAL]; /* 1..4; 4="aromatic", should be discouraged on input */
117 S_CHAR valence; /* for most chemists, it is coordination number, CN; */
118 /* number of bonds = number of neighbors */
119 S_CHAR chem_bonds_valence; /* for most chemists, it is what usually called valence; */
120 /* sum of bond types (type 4 needs special treatment) */
121 S_CHAR num_H; /* number of implicit hydrogens, including D and T */
122 S_CHAR num_iso_H[NUM_H_ISOTOPES]; /* number of implicit 1H, 2H(D), 3H(T) < 16 */
123 S_CHAR iso_atw_diff; /* =0 => natural isotopic abundances */
124 /* >0 => (mass) - (mass of the most abundant isotope) + 1 */
125 /* <0 => (mass) - (mass of the most abundant isotope) */
126 S_CHAR charge; /* charge */
127 S_CHAR radical; /* RADICAL_SINGLET, RADICAL_DOUBLET, or RADICAL_TRIPLET */
129 S_CHAR cFlags; /* AT_FLAG_ISO_H_POINT */
130 AT_NUMB at_type; /* ATT_NONE, ATT_ACIDIC */
131 AT_NUMB component; /* number of the structure component > 0 */
132 AT_NUMB endpoint; /* id of a tautomeric group */
133 AT_NUMB c_point; /* id of a positive charge group */
134 double x;
135 double y;
136 double z;
137 /* 0D parities (originally were used with CML) */
138 S_CHAR bUsed0DParity; /* bit=1 => stereobond; bit=2 => stereocenter */
139 /* 0D tetrahedral parity */
142 /* 0D bond parities */
143 S_CHAR sb_ord[MAX_NUM_STEREO_BONDS]; /* stereo bond/neighbor ordering number, starts from 0 */
144 /* neighbors on both sides of stereobond have same sign=> trans/T/E, diff. signs => cis/C/Z */
145 S_CHAR sn_ord[MAX_NUM_STEREO_BONDS]; /* ord. num. of the neighbor adjacent to the SB; */
146 /* starts from 0; */
147 /* -1 means removed explicit H */
148 /* neighbors on both sides of stereobond have same parity => trans/T/E/2, diff. parities => cis/C/Z/1 */
150 AT_NUMB sn_orig_at_num[MAX_NUM_STEREO_BONDS]; /* orig. at number of sn_ord[] neighbors */
151
152#if (FIND_RING_SYSTEMS == 1)
157
158#if (FIND_RINS_SYSTEMS_DISTANCES == 1)
159 AT_NUMB nDistanceFromTerminal; /* terminal atom or ring system has 1, next has 2, etc. */
160#endif
161
162#endif
164
165/* v. 1.05 extensions: extended input supporting V3000; polymers */
166/* OAD stands for OrigAtData */
167
168/* v. 1.05 Polymer stuff */
169
170/* Polymer representation type */
171#define NO_POLYMER -1
172#define POLYMER_REPRESENTATION_SOURCE_BASED 1
173#define POLYMER_REPRESENTATION_STRUCTURE_BASED 2
174#define POLYMER_REPRESENTATION_MIXED 3
175#define POLYMER_REPRESENTATION_UNRECOGNIZED 4
176
177#define ALLOW_MIXED_SRU_AND_MON 1
179#define POLYMER_STY_NON 0
180#define POLYMER_STY_SRU 1
181#define POLYMER_STY_MON 2
182#define POLYMER_STY_COP 3
183#define POLYMER_STY_MOD 4
184#define POLYMER_STY_CRO 5
185#define POLYMER_STY_MER 6
187#define POLYMER_SST_NON 0
188#define POLYMER_SST_ALT 1
189#define POLYMER_SST_RAN 2
190#define POLYMER_SST_BLK 3
191
192#define POLYMER_CONN_NON 0
193#define POLYMER_CONN_HT 1
194#define POLYMER_CONN_HH 2
195#define POLYMER_CONN_EU 3
196
226typedef struct OAD_PolymerUnit
227{
228 int id; /* it is what is called 'Sgroup number' in CTFILE */
229 int type; /* type as by MDL format (STY) */
230 int subtype; /* subtype as by MDL format (SST) */
231 int conn; /* connection scheme as by MDL format (SCN) */
232 int label; /* it is what is called 'unique Sgroup identifier' CTFILE */
233 int na; /* number of atoms in the unit */
234 int nb; /* number of bonds in the unit */
235 int cyclizable; /* =1 if frame shift via CRU 'cyclization' is applicable */
236 int cyclized; /* =1 if CRU already was frame_shift' treated */
237 double xbr1[4]; /* bracket ends coordinates (SDI) */
238 double xbr2[4]; /* bracket ends coordinates (SDI) */
239 char smt[80]; /* Sgroup Subscript (SMT) */
241 /* CRU structure is: cap1-[-end_atom1/\/\/\end_atom2-]-cap2 */
242 int cap1;
245 int cap2;
248 int *alist; /* list of atoms in the unit (SAL) */
249 int *blist; /* bonds in the unit as list [atom1, atom2; atom1, atom2,..]*/
250 /* for crossing bonds (S) */
251 int maxbkbonds; /* max (allocd) number of frame_shift involved bonds */
252 int nbkbonds; /* number of bkbonds in CRU main chain */
253 /* bkbonds are [breakable at possible frame shift] backbone */
254 /* bonds in between "left" end_atom1 and "right" end_atom2 */
255 /* ends (they may be only single-order non-intraring bonds) */
256 int **bkbonds; /* list of [breakable] backbone bonds [(a1,a2), (a3,a4),...}*/
258
273typedef struct OAD_Polymer
274{
275 OAD_PolymerUnit **units; /* array of pointers to units */
276 int n;
277 int n_pzz; /* number of polymeric Zz atoms */
278 /* paired undefined-nature caps/stars around*/
279 /* CRY's (must be even) */
280 int *pzz; /* polymeric Zz atoms */
282 int frame_shift_scheme; /* frame shift analysis scheme */
283 int treat;
286 int edit_repeats; /* -1 unknown, to be checked */
287 /* 0 no, no edits required */
288 /* 1 yes, edits are necessary */
290
302typedef struct OAD_AtProps
303{
304 int erank; /* rank of element; 2 - C, >2 - rank of heteroatom in chain, */
305 /* O > S > Se > Te > N ...., Rule 4 */
306 int ring_erank; /* 0 - not ring or just carbocycle,
307 >2 - rank of senior heteroatom in this cycle */
308 /* according to Rule 2 ( N > O >... ) */
310 int ring_size; /* 0 or ring system size */
311 /* that is: */
312 /* ring_erank != 0 heterocycle of ring_size */
313 /* ring_erank==0 && ring_size>0 carbocycle of ring_size */
315
343/* Extended input supports v. 1.05 extensions: V3000; polymers */
344typedef struct OAD_V3000
345{
348 int *atom_index_orig; /* index as supplied for atoms */
349 int *atom_index_fin; /* = index or -1 for star atom */
350 int n_sgroups; /* currently, we do not use this. */
351 int n_3d_constraints; /* currently, we do not use this. */
356 /* haptic_bonds[i] is pointer to int* which contains: */
357 /* bond_type, non-star atom number, nendpts, */
358 /* then endpts themselves */
359 /* Enhanced stereo */
361 int **lists_steabs; /* steabs[k][0] - not used */
362 /* steabs[k][1] - number of members in collection */
363 /* steabs[k][2..] - member atom numbers */
365 int **lists_sterel; /* sterel[k][0] - n from "STERELn" tag */
366 /* sterel[k][1] - number of members in collection */
367 /* sterel[k][2..] - member atom numbers */
369 int **lists_sterac; /* sterac[k][0] - n from "STERACn" tag */
370 /* sterac[k][1] - number of members in collection */
371 /* sterac[k][2..] - member atom numbers */
373
397typedef struct tagOrigAtom
398{
399 /* Initially filled out by CreateOrigInpDataFromMolfile() */
400 /* may be changed by disconnecting salts and disconnecting metals */
405 /* may be changed by disconnecting salts and disconnecting metals */
406 int num_components; /* set by MarkDisconnectedComponents and disconn. metals*/
407 int bDisconnectSalts; /* whether salt disconnection is possible */
408 int bDisconnectCoord; /* 0 if no disconnection needed */
409 /* else (NumImplicitH to disconnect)+1 */
410#if (bRELEASE_VERSION == 0)
411 int bExtract;
412#endif
413 AT_NUMB *nCurAtLen; /* has max_num_components elements */
414 AT_NUMB *nOldCompNumber; /* 0 or component number in previous numbering */
415 int nNumEquSets; /* number of found component equivalence sets */
416 AT_NUMB *nEquLabels; /* num_inp_atoms elements, value>0 marks atoms */
417 /* in the set #value */
418 AT_NUMB *nSortedOrder; /* num_components elements, values = 1..num_components; */
419 /* only if num_components > 1 */
423 /* v. 1.05 extensions */
427 int n_zy; /* number of non-polymeric pseudoatoms (Zy) */
428
430
442typedef struct tagOriginalStruct
443{
445 char *szAtoms;
446 char *szBonds;
447 char *szCoord;
448 /* v. 1.05 extensions */
449 OAD_Polymer *polymer; /* uses pointer copy from orig_inp_data, do not free after use! */
450 OAD_V3000 *v3000; /* uses pointer copy from orig_inp_data, do not free after use! */
451 int n_zy; /* number of non-polymeric pseudoatoms (Zy) */
452
454
492
493#define INF_STEREO_ABS 0x0001
494#define INF_STEREO_REL 0x0002
495#define INF_STEREO_RAC 0x0004
496#define INF_STEREO_NORM 0x0008
497#define INF_STEREO_INV 0x0010
498#define INF_STEREO 0x0020
499#define INF_STEREO_ABS_REL_RAC (INF_STEREO_ABS | INF_STEREO_REL | INF_STEREO_RAC)
500#define INF_STEREO_NORM_INV (INF_STEREO_NORM | INF_STEREO_INV)
501
502#define MAX_LEN_REMOVED_PROTONS 128
503
530
553typedef struct tagInputAtomData
554{
556 inp_ATOM *at_fixed_bonds; /* tautomeric case, added or removed H */
557 unsigned char *keep_explicit_HDT;
569 /* isotopic composition of removed protons, not included in num_iso_H[] */
571 /* isotopic H on tautomerIC atoms and those in nIsotopicEndpointAtomNumber */
576
578
594
614{
621 int bDeleted; /* unused */
626 /* isotopic composition of removed protons, not included in num_iso_H[] */
628 /* isotopic H on tautomeric atoms and those */
629 /* in nIsotopicEndpointAtomNumber */
633
634/*
635typedef COMP_ATOM_DATA COMP_ATOM_DATA3[TAUT_NUM+1];
636*/
637
638#define ADD_LEN_STRUCT_FPTRS 100 /* allocation increments */
639
640typedef long INCHI_FPTR;
641
650typedef struct tagStructFptrs
651{
652 INCHI_FPTR *fptr; /* input: fptr[cur_fptr] =file ptr to the struct to read */
653 /* output: fptr[cur_fptr+1]=file ptr to the next struct or EOF */
654 int len_fptr; /* allocated length of fptr */
655 int cur_fptr; /* input: k-1 to read the kth struct, k = 1, 2, 3,...; */
656 /* left unchanged; struct number := cur_fptr+1 */
657 int max_fptr; /* length of the filled out portion of fptr */
659
660/* forward declaration */
661struct tagCANON_GLOBALS;
662
663#ifndef __ICHITIME_H__
664struct tagInchiTime;
665struct tagINCHI_CLOCK;
666int bInchiTimeIsOver(struct tagINCHI_CLOCK *ic, struct tagInchiTime *TickEnd);
667#endif
668
669#define FLAG_INP_AT_CHIRAL 1
670#define FLAG_INP_AT_NONCHIRAL 2
671#define FLAG_SET_INP_AT_CHIRAL 4
672#define FLAG_SET_INP_AT_NONCHIRAL 8
673#define FLAG_SET_INP_LARGE_MOLS 16
674
675#ifndef COMPILE_ALL_CPP
676#ifdef __cplusplus
677extern "C"
678{
679#endif
680#endif
681
703 int CreateOrigInpDataFromMolfile(INCHI_IOSTREAM *inp_file, ORIG_ATOM_DATA *orig_at_data, int bMergeAllInputStructures, int bGetOrigCoord, int bDoNotAddH, int treat_polymers, int treat_NPZz,
704 const char *pSdfLabel, char *pSdfValue, unsigned long *lSdfId, long *lMolfileNumber, INCHI_MODE *pInpAtomFlags, int *err, char *pStrErr, int bNoWarnings);
705
724 int InchiToOrigAtom(INCHI_IOSTREAM *infile, ORIG_ATOM_DATA *orig_at_data, int bMergeAllInputStructures, int bGetOrigCoord, int bDoNotAddH, int vABParityUnknown, INPUT_TYPE nInputType, char *pSdfLabel,
725 char *pSdfValue, unsigned long *lSdfId, INCHI_MODE *pInpAtomFlags, int *err, char *pStrErr);
726
734 int MarkDisconnectedComponents(ORIG_ATOM_DATA *orig_at_data, int bProcessOldCompNumbers);
735
743 int DisconnectSalts(ORIG_ATOM_DATA *orig_inp_data, int bDisconnect);
744
753 int DisconnectMetals(ORIG_ATOM_DATA *orig_inp_data, int bCheckMetalValence, INCHI_MODE *bTautFlagsDone);
754
763 int bMayDisconnectMetals(ORIG_ATOM_DATA *orig_inp_data, int bCheckMetalValence, INCHI_MODE *bTautFlagsDone);
764
771 int bHasMetalAtom(ORIG_ATOM_DATA *orig_inp_data);
772
780 int FixAdjacentRadicals(int num_inp_atoms, inp_ATOM *at); /* FIX_ADJ_RAD == 1 */
781
791 int fix_odd_things(int num_atoms, inp_ATOM *at, int bFixBug, int bFixNonUniformDraw);
792
800 int post_fix_odd_things(int num_atoms, inp_ATOM *at);
801
809 int remove_ion_pairs(int num_atoms, inp_ATOM *at);
810
818 int bFoundFeature(inp_ATOM *at, int num_atoms);
819
827 int UnMarkRingSystemsInp(inp_ATOM *at, int num_atoms);
828
842 int OrigAtData_WriteToSDfile(const ORIG_ATOM_DATA *inp_at_data, INCHI_IOSTREAM *fcb, const char *name, const char *comment, int bChiralFlag, int bAtomsDT, const char *szLabel, const char *szValue);
843
849 void FreeInpAtom(inp_ATOM **at);
850
857
863 void FreeOrigAtData(ORIG_ATOM_DATA *orig_at_data);
864
872
878 void FreeInpAtomData(INP_ATOM_DATA *inp_at_data);
879
885 void FreeCompAtomData(COMP_ATOM_DATA *inp_at_data);
886
892 void FreeInfoAtomData(INF_ATOM_DATA *inf_at_data);
893
894 /*
895 ORIG_ATOM_DATA
896 functions
897 */
898
899 /* OAD_Edit */
900
920
928
935
942
943#if (RING2CHAIN == 1)
944
953 int Ring2Chain(struct tagINCHI_CLOCK *ic, struct tagCANON_GLOBALS *pCG, ORIG_ATOM_DATA *orig_inp_data);
954#endif
955
956#if (UNDERIVATIZE == 1)
968 int OAD_Edit_Underivatize(struct tagINCHI_CLOCK *ic, struct tagCANON_GLOBALS *pCG, ORIG_ATOM_DATA *orig_inp_data, int bOutputSdf, int bOutputReport, char *pSdfValue);
969
978 void OAD_Edit_MergeComponentsAndRecreateOAD(ORIG_ATOM_DATA *orig_OrigAtomData, INP_ATOM_DATA *curr_InpAtomData, int num_components, int *errcode);
979
980#endif
981
982 /* OAD misc. */
983
994 int OAD_ValidatePolymerAndPseudoElementData(ORIG_ATOM_DATA *orig_at_data, int treat_polymers, int bNPZz, char *pStrErr, int bNoWarnings);
995
996 /* OAD_Polymer */
1006 void OAD_ValidateAndSortOutPseudoElementAtoms(ORIG_ATOM_DATA *orig_at_data, int treat_polymers, int use_zz, int *err, char *pStrErr);
1007
1015
1025 int OAD_Polymer_CyclizeCloseableUnits(ORIG_ATOM_DATA *orig_at_data, int use_zz, char *pStrErr, int bNoWarnings);
1026
1039 int OAD_Polymer_FindRingSystems(OAD_Polymer *pd, inp_ATOM *at, int nat, int *num_inp_bonds, int *num_ring_sys, int *size_ring_sys, int start);
1040
1051 void OAD_Polymer_SetAtProps(OAD_Polymer *pd, inp_ATOM *at, int nat, int *num_inp_bonds, OAD_AtProps *aprops, int *cano_nums);
1052
1061 int OAD_Polymer_CompareBackboneBondsSeniority(int *b1, int *b2, OAD_AtProps *aprops);
1062
1071 int OAD_Polymer_CompareRanksOfTwoAtoms(int atom1, int atom2, OAD_AtProps *aprops);
1072
1081 int OAD_Polymer_IsFirstAtomRankLower(int atom1, int atom2, OAD_AtProps *aprops);
1082
1091
1101
1110 void OAD_Polymer_FindBackbones(ORIG_ATOM_DATA *where_to_look, COMP_ATOM_DATA *composite_norm_data, int *err, char *pStrErr);
1111
1122 int OAD_Polymer_PrepareWorkingSet(OAD_Polymer *p, int *cano_nums, int *compnt_nums, OAD_PolymerUnit **units2, int *unum);
1123
1130
1137
1146 void OAD_Polymer_SmartReopenCyclizedUnits(OAD_Polymer *p, inp_ATOM *at, int nat, int *num_inp_bonds);
1147
1159 int OAD_Polymer_PrepareFoldCRUEdits(ORIG_ATOM_DATA *orig_at_data, char *sinchi_noedits, char *saux_noedits, char *sinchi, char *saux, OAD_StructureEdits *ed);
1160
1170 int OAD_Polymer_PrepareFrameShiftEdits(ORIG_ATOM_DATA *orig_at_data, char *sinchi, char *saux, OAD_StructureEdits *ed);
1171
1172 /* OAD_PolymerUnit */
1173
1193 OAD_PolymerUnit *OAD_PolymerUnit_New(int maxatoms, int maxbonds, int id, int label, int type, int subtype, int conn, char *smt, int na, INT_ARRAY *alist, int nb, INT_ARRAY *blist, int nbkbonds,
1194 int **bkbonds);
1195
1203
1210
1217
1232 void OAD_PolymerUnit_FindEndsAndCaps(OAD_PolymerUnit *unit, ORIG_ATOM_DATA *orig_at_data, int *end1, int *cap1, int *cap1_is_undef, int *end2, int *cap2, int *cap2_is_undef, int *err, char *pStrErr);
1233
1242 void OAD_PolymerUnit_SetEndsAndCaps(OAD_PolymerUnit *unit, ORIG_ATOM_DATA *orig_at_data, int *err, char *pStrErr);
1243
1252 void OAD_PolymerUnit_UnlinkCapsAndConnectEndAtoms(OAD_PolymerUnit *unit, ORIG_ATOM_DATA *orig_at_data, int *err, char *pStrErr);
1253
1262 void OAD_PolymerUnit_PrepareToFrameShift(OAD_PolymerUnit *unit, ORIG_ATOM_DATA *orig_at_data, int *err, char *pStrErr);
1263
1277 int OAD_CollectReachableAtoms(ORIG_ATOM_DATA *orig_at_data, int start_atom, int nforbidden_bonds, int *forbidden_bonds, int *n_reachable, int *reachable, int *err, char *pStrErr);
1278
1292 void OAD_CollectBackboneAtoms(ORIG_ATOM_DATA *at_data, int na, int *alist, int end_atom1, int end_atom2, int *nbkatoms, int *bkatoms, int *err, char *pStrErr);
1293
1307 void OAD_CollectBackboneBonds(ORIG_ATOM_DATA *at_data, int na, int *alist, int end_atom1, int end_atom2, int *nbkbonds, int **bkbonds, int *err, char *pStrErr);
1308
1317 void OAD_PolymerUnit_DelistIntraRingBackboneBonds(OAD_PolymerUnit *unit, ORIG_ATOM_DATA *orig_at_data, int *err, char *pStrErr);
1318
1328 void OAD_PolymerUnit_DelistHighOrderBackboneBonds(OAD_PolymerUnit *unit, ORIG_ATOM_DATA *orig_at_data, COMP_ATOM_DATA *composite_norm_data, int *err, char *pStrErr);
1329
1338
1348 void OAD_PolymerUnit_ReopenCyclized(OAD_PolymerUnit *u, inp_ATOM *at, OAD_AtProps *aprops, int nat, int *num_inp_bonds);
1349
1358
1367
1377
1386
1394 int FixUnkn0DStereoBonds(inp_ATOM *at, int num_at);
1395
1402 inf_ATOM *CreateInfAtom(int num_atoms);
1403
1410 inp_ATOM *CreateInpAtom(int num_atoms);
1411
1420 int CreateInfoAtomData(INF_ATOM_DATA *inf_at_data, int num_atoms, int num_components);
1421
1430 int AllocateInfoAtomData(INF_ATOM_DATA *inf_at_data, int num_atoms, int num_components);
1431
1439 int DuplicateInfoAtomData(INF_ATOM_DATA *inf_at_data_to, const INF_ATOM_DATA *inf_at_data_from);
1440
1449 int CreateInpAtomData(INP_ATOM_DATA *inp_at_data, int num_atoms, int create_at_fixed_bonds);
1450
1460 int CreateCompAtomData(COMP_ATOM_DATA *inp_at_data, int num_atoms, int num_components, int bIntermediateTaut);
1461
1462#ifndef COMPILE_ANSI_ONLY
1463 int DisplayInputStructure(char *szOutputString, inp_ATOM *at, INF_ATOM_DATA *inf_at_data, int num_at, DRAW_PARMS *dp);
1464#endif
1465
1473 void PrintFileName(const char *fmt, FILE *out_file, const char *szFname);
1474
1480 void MySleep(unsigned long ms);
1481
1490 int ReconcileAllCmlBondParities(inp_ATOM *at, int num_atoms, int bDisconnected);
1491
1492#ifndef COMPILE_ALL_CPP
1493#ifdef __cplusplus
1494}
1495#endif
1496#endif
1497
1498#endif /* _INPDEF_H_ */
#define ATOM_EL_LEN
Definition ichicant.h:62
#define MAXVAL
Definition ichicant.h:60
enum tagInputType INPUT_TYPE
unsigned short AT_NUMB
Definition ichisize.h:10
signed short NUM_H
Definition ichisize.h:14
unsigned long INCHI_MODE
Definition ichisize.h:25
char MOL_COORD[LEN_COORD *NUM_COORD+NUM_COORD - 1]
Definition ichisize.h:29
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
#define INCHI_NUM
Definition inchi_api.h:1144
#define MAX_NUM_STEREO_BONDS
Definition inchi_api.h:1141
signed short S_SHORT
Definition inchi_api.h:84
#define MAX_NUM_STEREO_ATOM_NEIGH
Definition inchi_api.h:1138
#define ATOM_INFO_LEN
Definition incomdef.h:22
#define MAX_STEREO_BONDS
Definition incomdef.h:24
int OAD_PolymerUnit_SetReopeningDetails(OAD_PolymerUnit *u, inp_ATOM *at)
Set reopening details for a polymer unit.
Definition runichi3.c:3977
int bFoundFeature(inp_ATOM *at, int num_atoms)
Check if a feature is found in the input atoms ???
int OAD_Edit_Underivatize(struct tagINCHI_CLOCK *ic, struct tagCANON_GLOBALS *pCG, ORIG_ATOM_DATA *orig_inp_data, int bOutputSdf, int bOutputReport, char *pSdfValue)
Underivatize the original atom data (main underivatization procedure)
Definition ichinorm.c:5710
int CreateOrigInpDataFromMolfile(INCHI_IOSTREAM *inp_file, ORIG_ATOM_DATA *orig_at_data, int bMergeAllInputStructures, int bGetOrigCoord, int bDoNotAddH, int treat_polymers, int treat_NPZz, const char *pSdfLabel, char *pSdfValue, unsigned long *lSdfId, long *lMolfileNumber, INCHI_MODE *pInpAtomFlags, int *err, char *pStrErr, int bNoWarnings)
Create original input data from molfile.
Definition mol2atom.c:73
OAD_PolymerUnit * OAD_PolymerUnit_New(int maxatoms, int maxbonds, int id, int label, int type, int subtype, int conn, char *smt, int na, INT_ARRAY *alist, int nb, INT_ARRAY *blist, int nbkbonds, int **bkbonds)
Create a new polymer unit.
Definition runichi3.c:1137
struct tagAtomParmsForDrawing inf_ATOM
Structure describing atom parameters for drawing.
void FreeInfoAtomData(INF_ATOM_DATA *inf_at_data)
Free information atom data.
void OAD_Polymer_SmartReopenCyclizedUnits(OAD_Polymer *p, inp_ATOM *at, int nat, int *num_inp_bonds)
Smartly reopen cyclized units in the original atom data (open pre-cyclized CRUs appropriately (i....
Definition runichi3.c:3848
int FixAdjacentRadicals(int num_inp_atoms, inp_ATOM *at)
Fix adjacent radicals in the input atoms.
int OAD_Polymer_CyclizeCloseableUnits(ORIG_ATOM_DATA *orig_at_data, int use_zz, char *pStrErr, int bNoWarnings)
Cyclize closeable units in the original atom data.
Definition runichi3.c:1949
struct tagOAD_StructureEdits OAD_StructureEdits
Structure describing structure edits.
void OAD_PolymerUnit_SortBackboneBonds(OAD_PolymerUnit *u, OAD_AtProps *aprops, int *bnum)
Collect backbone bonds from a polymer unit and sort them.
Definition runichi3.c:4067
void OAD_ValidateAndSortOutPseudoElementAtoms(ORIG_ATOM_DATA *orig_at_data, int treat_polymers, int use_zz, int *err, char *pStrErr)
Validate and sort out pseudo-element atoms in the original atom data.
Definition runichi3.c:4366
int OAD_CollectReachableAtoms(ORIG_ATOM_DATA *orig_at_data, int start_atom, int nforbidden_bonds, int *forbidden_bonds, int *n_reachable, int *reachable, int *err, char *pStrErr)
Find reachable atoms from a given start atom.
Definition runichi3.c:2989
void FreeInpAtomData(INP_ATOM_DATA *inp_at_data)
Free input atom data.
Definition mol2atom.c:1145
struct tagInputAtom inp_ATOM
Structure describing an input atom.
struct tagInfoAtomData INF_ATOM_DATA
Structure describing information about atoms for InChI generation.
struct tagOriginalStruct ORIG_STRUCT
Structure describing the original structure.
int OAD_Polymer_CompareRanksOfTwoAtoms(int atom1, int atom2, OAD_AtProps *aprops)
Compare ranks of two atoms (compare seniority of two atoms in polymer SRU)
Definition runichi3.c:4179
int post_fix_odd_things(int num_atoms, inp_ATOM *at)
Post-fix odd things in the input atoms (does nothing, returns 0)
Definition strutil.c:906
INP_ATOM_DATA INP_ATOM_DATA2[TAUT_NUM]
Definition inpdef.h:577
inp_ATOM * CreateInpAtom(int num_atoms)
Create/allocate a Inp Atom structure.
Definition mol2atom.c:1120
int AllocateInfoAtomData(INF_ATOM_DATA *inf_at_data, int num_atoms, int num_components)
Allocate memory for Info Atom Data structure.
int DuplicateInfoAtomData(INF_ATOM_DATA *inf_at_data_to, const INF_ATOM_DATA *inf_at_data_from)
Duplicate Info Atom Data structure.
int CreateInfoAtomData(INF_ATOM_DATA *inf_at_data, int num_atoms, int num_components)
Create a Info Atom Data structure.
int DisconnectMetals(ORIG_ATOM_DATA *orig_inp_data, int bCheckMetalValence, INCHI_MODE *bTautFlagsDone)
Disconnect metals in the original atom data.
Definition strutil.c:2820
int fix_odd_things(int num_atoms, inp_ATOM *at, int bFixBug, int bFixNonUniformDraw)
Fix odd things in the input atoms.
Definition strutil.c:587
void OAD_StructureEdits_Clear(OAD_StructureEdits *ed)
Clear structure edits.
Definition runichi2.c:1863
int Ring2Chain(struct tagINCHI_CLOCK *ic, struct tagCANON_GLOBALS *pCG, ORIG_ATOM_DATA *orig_inp_data)
Convert rings to chains in the original atom data.
Definition ichinorm.c:7138
void OAD_Polymer_Free(OAD_Polymer *p)
Free polymer data structure.
Definition runichi3.c:2041
void OAD_Polymer_DebugTrace(OAD_Polymer *p)
Debug trace for polymer data structure (print the whole polymer data)
Definition runichi3.c:3727
void FreeInfAtom(inf_ATOM **at)
Free information atom array (same as FreeInpAtom)
void OAD_Polymer_SetAtProps(OAD_Polymer *pd, inp_ATOM *at, int nat, int *num_inp_bonds, OAD_AtProps *aprops, int *cano_nums)
Set atom properties for the polymer data.
Definition runichi3.c:3282
void OAD_PolymerUnit_DelistIntraRingBackboneBonds(OAD_PolymerUnit *unit, ORIG_ATOM_DATA *orig_at_data, int *err, char *pStrErr)
Collect backbone bonds from a polymer unit and delist intra-ring backbone bonds.
Definition runichi3.c:3138
void OAD_PolymerUnit_SortBackboneBondsAndSetSeniors(OAD_PolymerUnit *u, inp_ATOM *at, OAD_AtProps *aprops, int *senior_bond)
Sort backbone bonds and set seniors for a polymer unit.
Definition runichi3.c:4026
int InchiToOrigAtom(INCHI_IOSTREAM *infile, ORIG_ATOM_DATA *orig_at_data, int bMergeAllInputStructures, int bGetOrigCoord, int bDoNotAddH, int vABParityUnknown, INPUT_TYPE nInputType, char *pSdfLabel, char *pSdfValue, unsigned long *lSdfId, INCHI_MODE *pInpAtomFlags, int *err, char *pStrErr)
Convert InChI representation to original atom data.
Definition runichi2.c:1161
void OAD_StructureEdits_DebugPrint(OAD_StructureEdits *ed)
Debug print structure edits.
Definition runichi2.c:1901
int OAD_Polymer_IsFirstAtomRankLower(int atom1, int atom2, OAD_AtProps *aprops)
Check if the first atom has a lower rank than the second atom (check seniority of two atoms in polyme...
Definition runichi3.c:4339
int OAD_Polymer_PrepareFrameShiftEdits(ORIG_ATOM_DATA *orig_at_data, char *sinchi, char *saux, OAD_StructureEdits *ed)
Prepare frame shift edits for polymer data structure (prepare frame shift edits as suggested by the s...
Definition runichi2.c:2617
int OAD_ValidatePolymerAndPseudoElementData(ORIG_ATOM_DATA *orig_at_data, int treat_polymers, int bNPZz, char *pStrErr, int bNoWarnings)
Validate polymer and pseudo-element data in the original atom data.
Definition runichi3.c:1491
long INCHI_FPTR
Definition inpdef.h:640
int OAD_PolymerUnit_CompareAtomLists(OAD_PolymerUnit *u1, OAD_PolymerUnit *u2)
Compare two polymer units based on their atom lists.
Definition runichi3.c:1375
int DisconnectSalts(ORIG_ATOM_DATA *orig_inp_data, int bDisconnect)
Disconnect salts in the original atom data.
Definition strutil.c:2632
S_SHORT ST_CAP_FLOW
Definition inpdef.h:27
int MarkDisconnectedComponents(ORIG_ATOM_DATA *orig_at_data, int bProcessOldCompNumbers)
Mark disconnected components in the original atom data.
Definition strutil.c:5166
struct tagStructFptrs STRUCT_FPTRS
Structure describing file pointers for structures.
int OAD_PolymerUnit_OrderBondAtomsAndBondsThemselves(OAD_PolymerUnit *u, int n_stars, int *stars)
Order bond atoms and bonds themselves in a polymer unit.
Definition runichi3.c:1412
int OAD_StructureEdits_Init(OAD_StructureEdits *ed)
Initialize structure edits.
Definition runichi2.c:1829
int OAD_Polymer_PrepareWorkingSet(OAD_Polymer *p, int *cano_nums, int *compnt_nums, OAD_PolymerUnit **units2, int *unum)
Prepare working set for polymer processing (replace original atom numbers in polymer data with (canon...
Definition runichi3.c:2312
int OAD_Polymer_GetRepresentation(OAD_Polymer *p)
Get polymer representation type.
Definition runichi3.c:3758
#define MAX_LEN_REMOVED_PROTONS
Definition inpdef.h:502
int UnMarkRingSystemsInp(inp_ATOM *at, int num_atoms)
Unmark ring systems in the input atoms.
Definition runichi3.c:1931
int OAD_PolymerUnit_CompareAtomListsMod(OAD_PolymerUnit *u1, OAD_PolymerUnit *u2)
Compare two polymer units based on their atom lists with modifications.
Definition runichi3.c:1352
int FixUnkn0DStereoBonds(inp_ATOM *at, int num_at)
Fix unknown stereo bonds in the input atoms.
Definition ichister.c:1971
OAD_PolymerUnit * OAD_PolymerUnit_CreateCopy(OAD_PolymerUnit *u)
Create a copy of a polymer unit.
Definition runichi3.c:1235
struct tagNormCanonFlags NORM_CANON_FLAGS
Structure describing normalization and canonicalization flags.
void OAD_PolymerUnit_DelistHighOrderBackboneBonds(OAD_PolymerUnit *unit, ORIG_ATOM_DATA *orig_at_data, COMP_ATOM_DATA *composite_norm_data, int *err, char *pStrErr)
Collect high-order backbone bonds from a polymer unit.
Definition runichi3.c:3479
void OAD_PolymerUnit_DebugTrace(OAD_PolymerUnit *unit)
Debug trace for a polymer unit (print the whole polymer unit)
Definition runichi3.c:3612
int bMayDisconnectMetals(ORIG_ATOM_DATA *orig_inp_data, int bCheckMetalValence, INCHI_MODE *bTautFlagsDone)
Check if metals may be disconnected in the original atom data.
Definition strutil.c:2724
void FreeCompAtomData(COMP_ATOM_DATA *inp_at_data)
Free composite atom data.
Definition mol2atom.c:1185
int OAD_Polymer_FindRingSystems(OAD_Polymer *pd, inp_ATOM *at, int nat, int *num_inp_bonds, int *num_ring_sys, int *size_ring_sys, int start)
Find ring systems in the polymer data.
Definition runichi3.c:3206
void OAD_PolymerUnit_ReopenCyclized(OAD_PolymerUnit *u, inp_ATOM *at, OAD_AtProps *aprops, int nat, int *num_inp_bonds)
Collect backbone atoms from a polymer unit.
Definition runichi3.c:3923
int CreateCompAtomData(COMP_ATOM_DATA *inp_at_data, int num_atoms, int num_components, int bIntermediateTaut)
Create a Comp Atom Data structure.
Definition mol2atom.c:1199
struct tagCompositeAtomData COMP_ATOM_DATA
Structure describing composite atom data for InChI generation.
int OAD_Polymer_PrepareFoldCRUEdits(ORIG_ATOM_DATA *orig_at_data, char *sinchi_noedits, char *saux_noedits, char *sinchi, char *saux, OAD_StructureEdits *ed)
Prepare CRU edits for polymer data structure (prepare CRU fold edits as suggested by the strings with...
Definition runichi2.c:1932
void OAD_PolymerUnit_SetEndsAndCaps(OAD_PolymerUnit *unit, ORIG_ATOM_DATA *orig_at_data, int *err, char *pStrErr)
Set the ends and caps of a polymer unit.
Definition runichi3.c:2236
void OAD_CollectBackboneBonds(ORIG_ATOM_DATA *at_data, int na, int *alist, int end_atom1, int end_atom2, int *nbkbonds, int **bkbonds, int *err, char *pStrErr)
Collect backbone bonds from a polymer unit.
Definition runichi3.c:3079
void OAD_PolymerUnit_PrepareToFrameShift(OAD_PolymerUnit *unit, ORIG_ATOM_DATA *orig_at_data, int *err, char *pStrErr)
Prepare a polymer unit for frame shifting.
int bInchiTimeIsOver(struct tagINCHI_CLOCK *ic, struct tagInchiTime *TickEnd)
Definition ichicano.c:222
int ReconcileAllCmlBondParities(inp_ATOM *at, int num_atoms, int bDisconnected)
Reconcile all CML bond parities in the input atoms.
Definition ichister.c:4628
void OAD_CollectBackboneAtoms(ORIG_ATOM_DATA *at_data, int na, int *alist, int end_atom1, int end_atom2, int *nbkatoms, int *bkatoms, int *err, char *pStrErr)
Collect backbone atoms from a polymer unit.
Definition runichi3.c:2916
int bHasMetalAtom(ORIG_ATOM_DATA *orig_inp_data)
Check if there is a metal atom in the original atom data.
struct tagInputAtomData INP_ATOM_DATA
Structure describing input atom data for InChI generation.
void OAD_PolymerUnit_FindEndsAndCaps(OAD_PolymerUnit *unit, ORIG_ATOM_DATA *orig_at_data, int *end1, int *cap1, int *cap1_is_undef, int *end2, int *cap2, int *cap2_is_undef, int *err, char *pStrErr)
Find the ends and caps of a polymer unit.
Definition runichi3.c:2136
void PrintFileName(const char *fmt, FILE *out_file, const char *szFname)
Print the file name.
Definition strutil.c:6400
int OAD_PolymerUnit_HasMetal(OAD_PolymerUnit *u, inp_ATOM *at)
Check if a polymer unit has a specific atom (e.g., metal)
Definition runichi3.c:2025
int CreateInpAtomData(INP_ATOM_DATA *inp_at_data, int num_atoms, int create_at_fixed_bonds)
Create a Inp Atom Data structure.
Definition mol2atom.c:1166
void OAD_Edit_MergeComponentsAndRecreateOAD(ORIG_ATOM_DATA *orig_OrigAtomData, INP_ATOM_DATA *curr_InpAtomData, int num_components, int *errcode)
Merge components and recreate original atom data.
Definition ichinorm.c:7339
void OAD_Polymer_FindBackbones(ORIG_ATOM_DATA *where_to_look, COMP_ATOM_DATA *composite_norm_data, int *err, char *pStrErr)
Find backbones in the original atom data.
Definition runichi3.c:2842
void FreeOrigAtData(ORIG_ATOM_DATA *orig_at_data)
Free original atom data.
Definition mol2atom.c:1319
struct tagOrigAtom ORIG_ATOM_DATA
Structure describing original atom data.
int remove_ion_pairs(int num_atoms, inp_ATOM *at)
Remove ion pairs from the input atoms.
Definition strutil.c:1030
void FreeExtOrigAtData(OAD_Polymer *pd, OAD_V3000 *v3k)
Free extended original atom data (polymers and V3000)
Definition mol2atom.c:1364
inf_ATOM * CreateInfAtom(int num_atoms)
Create/allocate a Inf Atom structure.
void MySleep(unsigned long ms)
Sleep for a specified amount of time.
int OAD_Polymer_CompareBackboneBondsSeniority(int *b1, int *b2, OAD_AtProps *aprops)
Compare backbone bonds seniority (for sorting SRU cyclizing bonds (PS=='frame-shift') in descending o...
Definition runichi3.c:4098
void OAD_PolymerUnit_UnlinkCapsAndConnectEndAtoms(OAD_PolymerUnit *unit, ORIG_ATOM_DATA *orig_at_data, int *err, char *pStrErr)
Unlink caps and connect end atoms of a polymer unit.
Definition runichi3.c:2071
void OAD_PolymerUnit_Free(OAD_PolymerUnit *unit)
Free a polymer unit.
Definition runichi3.c:1317
void FreeInpAtom(inp_ATOM **at)
Free input atom array.
Definition mol2atom.c:1133
int OrigAtData_WriteToSDfile(const ORIG_ATOM_DATA *inp_at_data, INCHI_IOSTREAM *fcb, const char *name, const char *comment, int bChiralFlag, int bAtomsDT, const char *szLabel, const char *szValue)
Write original atom data to SD file.
Definition mol_fmt4.c:748
#define TAUT_NUM
Definition mode.h:560
Structure describing atom properties for OAD.
Definition inpdef.h:303
int ring_num
Definition inpdef.h:309
int erank
Definition inpdef.h:304
int ring_size
Definition inpdef.h:310
int ring_erank
Definition inpdef.h:306
Structure describing a polymer unit.
Definition inpdef.h:227
int nbkbonds
Definition inpdef.h:252
int conn
Definition inpdef.h:231
int label
Definition inpdef.h:232
double xbr2[4]
Definition inpdef.h:238
int representation
Definition inpdef.h:240
int cap2
Definition inpdef.h:245
int * blist
Definition inpdef.h:249
int * alist
Definition inpdef.h:248
int id
Definition inpdef.h:228
int cap1
Definition inpdef.h:242
int na
Definition inpdef.h:233
char smt[80]
Definition inpdef.h:239
int cap1_is_undef
Definition inpdef.h:246
int end_atom1
Definition inpdef.h:243
int nb
Definition inpdef.h:234
int cyclized
Definition inpdef.h:236
int end_atom2
Definition inpdef.h:244
int subtype
Definition inpdef.h:230
int cyclizable
Definition inpdef.h:235
int ** bkbonds
Definition inpdef.h:256
int maxbkbonds
Definition inpdef.h:251
int type
Definition inpdef.h:229
double xbr1[4]
Definition inpdef.h:237
int cap2_is_undef
Definition inpdef.h:247
Structure describing a polymer.
Definition inpdef.h:274
int edit_repeats
Definition inpdef.h:286
int * pzz
Definition inpdef.h:280
int is_in_reconn
Definition inpdef.h:285
int n_pzz
Definition inpdef.h:277
int representation
Definition inpdef.h:284
int n
Definition inpdef.h:276
int really_do_frame_shift
Definition inpdef.h:281
int frame_shift_scheme
Definition inpdef.h:282
OAD_PolymerUnit ** units
Definition inpdef.h:275
int treat
Definition inpdef.h:283
Structure describing v. 1.05 extended input supporting V3000; polymers.
Definition inpdef.h:345
int n_non_star_atoms
Definition inpdef.h:346
int n_sterel
Definition inpdef.h:364
int * atom_index_orig
Definition inpdef.h:348
int n_steabs
Definition inpdef.h:360
int * atom_index_fin
Definition inpdef.h:349
int n_non_haptic_bonds
Definition inpdef.h:353
int n_sgroups
Definition inpdef.h:350
int ** lists_sterac
Definition inpdef.h:369
int ** lists_haptic_bonds
Definition inpdef.h:355
int ** lists_steabs
Definition inpdef.h:361
int n_star_atoms
Definition inpdef.h:347
int ** lists_sterel
Definition inpdef.h:365
int n_collections
Definition inpdef.h:352
int n_haptic_bonds
Definition inpdef.h:354
int n_sterac
Definition inpdef.h:368
int n_3d_constraints
Definition inpdef.h:351
Structure describing atom parameters for drawing.
Definition inpdef.h:474
S_CHAR cStereoBondWarning[MAX_STEREO_BONDS]
Definition inpdef.h:489
AT_NUMB nCanonNbr
Definition inpdef.h:478
AT_NUMB nTautGroupCanonNbr
Definition inpdef.h:480
S_CHAR cFlags
Definition inpdef.h:482
char at_string[ATOM_INFO_LEN]
Definition inpdef.h:475
int DrawingLabelLeftShift
Definition inpdef.h:476
S_CHAR cStereoBondParity[MAX_STEREO_BONDS]
Definition inpdef.h:488
AT_NUMB nCanonEquNbr
Definition inpdef.h:479
S_CHAR cStereoCenterParity
Definition inpdef.h:487
S_CHAR cHighlightTheAtom
Definition inpdef.h:486
AT_NUMB nTautGroupEquNbr
Definition inpdef.h:481
int DrawingLabelLength
Definition inpdef.h:477
S_CHAR cStereoBondNumber[MAX_STEREO_BONDS]
Definition inpdef.h:490
Definition ichicant.h:303
Structure describing composite atom data for InChI generation.
Definition inpdef.h:614
AT_NUMB * nOffsetAtAndH
Definition inpdef.h:630
int bHasIsotopicLayer
Definition inpdef.h:622
int bExists
Definition inpdef.h:620
int num_isotopic
Definition inpdef.h:619
int num_at
Definition inpdef.h:616
int num_removed_H
Definition inpdef.h:617
int num_components
Definition inpdef.h:631
int nNumRemovedProtons
Definition inpdef.h:624
inp_ATOM * at
Definition inpdef.h:615
int bDeleted
Definition inpdef.h:621
NUM_H nNumRemovedProtonsIsotopic[NUM_H_ISOTOPES]
Definition inpdef.h:625
int num_bonds
Definition inpdef.h:618
int bTautomeric
Definition inpdef.h:623
NUM_H num_iso_H[NUM_H_ISOTOPES]
Definition inpdef.h:627
Definition ichidrp.h:43
Definition ichitime.h:50
INT_ARRAY - Dynamically growing array of int.
Definition mol_fmt.h:171
Definition ichitime.h:34
Structure describing information about atoms for InChI generation.
Definition inpdef.h:518
AT_NUMB num_components
Definition inpdef.h:522
NUM_H num_iso_H[NUM_H_ISOTOPES]
Definition inpdef.h:527
AT_NUMB * pStereoFlags
Definition inpdef.h:523
int num_at
Definition inpdef.h:520
char szRemovedProtons[MAX_LEN_REMOVED_PROTONS]
Definition inpdef.h:528
int num_removed_iso_H
Definition inpdef.h:526
AT_NUMB StereoFlags
Definition inpdef.h:521
int nNumRemovedProtons
Definition inpdef.h:525
inf_ATOM * at
Definition inpdef.h:519
Structure describing input atom data for InChI generation.
Definition inpdef.h:554
inp_ATOM * at_fixed_bonds
Definition inpdef.h:556
INCHI_MODE bTautFlagsDone
Definition inpdef.h:573
int num_removed_H
Definition inpdef.h:559
NUM_H num_iso_H[NUM_H_ISOTOPES]
Definition inpdef.h:570
INCHI_MODE bNormalizationFlags
Definition inpdef.h:574
int num_isotopic
Definition inpdef.h:561
inp_ATOM * at
Definition inpdef.h:555
int bHasIsotopicLayer
Definition inpdef.h:564
int bTautPreprocessed
Definition inpdef.h:566
int num_bonds
Definition inpdef.h:560
int bTautomeric
Definition inpdef.h:565
int nNumRemovedProtons
Definition inpdef.h:567
unsigned char * keep_explicit_HDT
Definition inpdef.h:557
NUM_H nNumRemovedProtonsIsotopic[NUM_H_ISOTOPES]
Definition inpdef.h:568
INCHI_MODE bTautFlags
Definition inpdef.h:572
int bDeleted
Definition inpdef.h:563
int bExists
Definition inpdef.h:562
int num_at
Definition inpdef.h:558
Structure describing an input atom.
Definition inpdef.h:107
S_CHAR bUsed0DParity
Definition inpdef.h:138
AT_NUMB orig_compt_at_numb
Definition inpdef.h:112
AT_NUMB nNumAtInRingSystem
Definition inpdef.h:155
S_CHAR sb_ord[MAX_NUM_STEREO_BONDS]
Definition inpdef.h:143
AT_NUMB p_orig_at_num[MAX_NUM_STEREO_ATOM_NEIGH]
Definition inpdef.h:141
S_CHAR radical
Definition inpdef.h:127
S_CHAR chem_bonds_valence
Definition inpdef.h:119
S_CHAR num_iso_H[NUM_H_ISOTOPES]
Definition inpdef.h:122
double z
Definition inpdef.h:136
AT_NUMB orig_at_number
Definition inpdef.h:111
AT_NUMB component
Definition inpdef.h:131
double y
Definition inpdef.h:135
S_CHAR bond_stereo[MAXVAL]
Definition inpdef.h:114
char elname[ATOM_EL_LEN]
Definition inpdef.h:108
S_CHAR bAmbiguousStereo
Definition inpdef.h:128
AT_NUMB nRingSystem
Definition inpdef.h:154
AT_NUMB at_type
Definition inpdef.h:130
AT_NUMB neighbor[MAXVAL]
Definition inpdef.h:110
S_CHAR bCutVertex
Definition inpdef.h:153
S_CHAR sb_parity[MAX_NUM_STEREO_BONDS]
Definition inpdef.h:149
S_CHAR valence
Definition inpdef.h:117
S_CHAR num_H
Definition inpdef.h:121
AT_NUMB sn_orig_at_num[MAX_NUM_STEREO_BONDS]
Definition inpdef.h:150
double x
Definition inpdef.h:134
S_CHAR sn_ord[MAX_NUM_STEREO_BONDS]
Definition inpdef.h:145
S_CHAR cFlags
Definition inpdef.h:129
AT_NUMB c_point
Definition inpdef.h:133
AT_NUMB nBlockSystem
Definition inpdef.h:156
AT_NUMB endpoint
Definition inpdef.h:132
U_CHAR el_number
Definition inpdef.h:109
S_CHAR p_parity
Definition inpdef.h:140
S_CHAR charge
Definition inpdef.h:126
S_CHAR iso_atw_diff
Definition inpdef.h:123
U_CHAR bond_type[MAXVAL]
Definition inpdef.h:116
Structure describing normalization and canonicalization flags.
Definition inpdef.h:588
INCHI_MODE bNormalizationFlags[INCHI_NUM][TAUT_NUM]
Definition inpdef.h:591
int nCanonFlags[INCHI_NUM][TAUT_NUM]
Definition inpdef.h:592
INCHI_MODE bTautFlags[INCHI_NUM][TAUT_NUM]
Definition inpdef.h:589
INCHI_MODE bTautFlagsDone[INCHI_NUM][TAUT_NUM]
Definition inpdef.h:590
Structure describing structure edits.
Definition inpdef.h:912
INT_ARRAY * new_bond
Definition inpdef.h:915
int del_side_chains
Definition inpdef.h:918
INT_ARRAY * del_atom
Definition inpdef.h:913
INT_ARRAY * del_bond
Definition inpdef.h:914
INT_ARRAY * mod_bond
Definition inpdef.h:916
INT_ARRAY * mod_coord
Definition inpdef.h:917
Structure describing original atom data.
Definition inpdef.h:398
AT_NUMB * nSortedOrder
Definition inpdef.h:418
int nNumEquSets
Definition inpdef.h:415
int bDisconnectSalts
Definition inpdef.h:407
AT_NUMB * nEquLabels
Definition inpdef.h:416
int num_dimensions
Definition inpdef.h:402
inp_ATOM * at
Definition inpdef.h:401
int num_components
Definition inpdef.h:406
int n_zy
Definition inpdef.h:427
AT_NUMB * nOldCompNumber
Definition inpdef.h:414
OAD_V3000 * v3000
Definition inpdef.h:425
int bPreprocessed[INCHI_NUM]
Definition inpdef.h:421
AT_NUMB * nCurAtLen
Definition inpdef.h:413
int bSavedInINCHI_LIB[INCHI_NUM]
Definition inpdef.h:420
MOL_COORD * szCoord
Definition inpdef.h:422
int bDisconnectCoord
Definition inpdef.h:408
OAD_Polymer * polymer
Definition inpdef.h:424
int num_inp_atoms
Definition inpdef.h:404
int valid_polymer
Definition inpdef.h:426
int num_inp_bonds
Definition inpdef.h:403
Structure describing the original structure.
Definition inpdef.h:443
int n_zy
Definition inpdef.h:451
OAD_V3000 * v3000
Definition inpdef.h:450
int num_atoms
Definition inpdef.h:444
char * szBonds
Definition inpdef.h:446
OAD_Polymer * polymer
Definition inpdef.h:449
char * szCoord
Definition inpdef.h:447
char * szAtoms
Definition inpdef.h:445
Definition mode.h:999
Structure describing file pointers for structures.
Definition inpdef.h:651
int cur_fptr
Definition inpdef.h:655
int max_fptr
Definition inpdef.h:657
int len_fptr
Definition inpdef.h:654
INCHI_FPTR * fptr
Definition inpdef.h:652