InChI
 
Loading...
Searching...
No Matches
inpdef.h
Go to the documentation of this file.
1/*
2 * International Chemical Identifier (InChI)
3 * Version 1
4 * Software version 1.07
5 * April 30, 2024
6 *
7 * MIT License
8 *
9 * Copyright (c) 2024 IUPAC and InChI Trust
10 *
11 * Permission is hereby granted, free of charge, to any person obtaining a copy
12 * of this software and associated documentation files (the "Software"), to deal
13 * in the Software without restriction, including without limitation the rights
14 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15 * copies of the Software, and to permit persons to whom the Software is
16 * furnished to do so, subject to the following conditions:
17 *
18 * The above copyright notice and this permission notice shall be included in all
19 * copies or substantial portions of the Software.
20 *
21 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
27 * SOFTWARE.
28 *
29 * The InChI library and programs are free software developed under the
30 * auspices of the International Union of Pure and Applied Chemistry (IUPAC).
31 * Originally developed at NIST.
32 * Modifications and additions by IUPAC and the InChI Trust.
33 * Some portions of code were developed/changed by external contributors
34 * (either contractor or volunteer) which are listed in the file
35 * 'External-contributors' included in this distribution.
36 *
37 * info@inchi-trust.org
38 *
39 */
40
41#ifndef _INPDEF_H_
42#define _INPDEF_H_
43
44/* input/output format */
45
46#include "ichidrp.h"
47#include "mode.h"
48#include "mol_fmt.h"
49
50#define CLOSING_STARRED_SRU_IS_A_MUST 1
51#define ALLOW_CLOSING_SRU_VIA_HIGHER_ORDER_BOND 1
52#define ALLOW_CLOSING_SRU_VIA_DIRADICAL 1
53
54#define CLOSING_SRU_NOT_APPLICABLE 0
55#define CLOSING_SRU_RING 1
56#define CLOSING_SRU_HIGHER_ORDER_BOND 2
57#define CLOSING_SRU_DIRADICAL 3
58#define CLOSING_SRU_RING_OPENED 4
59#define CLOSING_SRU_MOVED_BRACKETS 5
60
61#define bDrawingLabelLeftShift endpoint
63
64/* inp_ATOM::at_type */
65#define ATT_NONE 0x0000
66#define ATT_ACIDIC_CO 0x0001
67#define ATT_ACIDIC_S 0x0002
68#define ATT_OO 0x0004
69#define ATT_ZOO 0x0008
70#define ATT_NO 0x0010
71#define ATT_N_O 0x0020
72#define ATT_ATOM_N 0x0040
73#define ATT_ATOM_P 0x0080
74#define ATT_OTHER_NEG_O 0x0100
75#define ATT_OTHER_ZO 0x0200
76#define ATT_OH_MINUS 0x0400
77#define ATT_O_PLUS 0x0800
78#define ATT_PROTON 0x1000
79#define ATT_HalAnion 0x2000
80#define ATT_HalAcid 0x4000
81#if (FIX_NP_MINUS_BUG == 1)
82#define ATT_NP_MINUS_V23 0x8000
83#endif
84
85#define AT_FLAG_ISO_H_POINT 0x01
87#define PERIODIC_NUMBER_H 1
88
89#ifndef NUMH
90#define NUM_ISO_H(AT, N) (AT[N].num_iso_H[0] + AT[N].num_iso_H[1] + AT[N].num_iso_H[2])
91#define NUMH(AT, N) (AT[N].num_H + NUM_ISO_H(AT, N))
92#endif
93
94#define FlagSC_0D 1
95#define FlagSB_0D 2
97#define SB_PARITY_FLAG 0x38
98#define SB_PARITY_SHFT 3
99#define SB_PARITY_MASK 0x07
100#define SB_PARITY_1(X) (X & SB_PARITY_MASK)
101#define SB_PARITY_2(X) (((X) >> SB_PARITY_SHFT) & SB_PARITY_MASK)
141typedef struct tagInputAtom
142{
143 char elname[ATOM_EL_LEN]; /* name of chemical element */
144 U_CHAR el_number; /* number of the element in the Periodic Table */
145 AT_NUMB neighbor[MAXVAL]; /* positions (from 0) of the neighbors in the inp_ATOM array*/
146 AT_NUMB orig_at_number; /* original atom number */
147 AT_NUMB orig_compt_at_numb; /* original atom number within the component */
148 /* before terminal H removal */
149 S_CHAR bond_stereo[MAXVAL]; /* 1=Up,4=Either,6=Down; this atom is at the pointing wedge,*/
150 /* negative => on the opposite side; 3=Either double bond */
151 U_CHAR bond_type[MAXVAL]; /* 1..4; 4="aromatic", should be discouraged on input */
152 S_CHAR valence; /* for most chemists, it is coordination number, CN; */
153 /* number of bonds = number of neighbors */
154 S_CHAR chem_bonds_valence; /* for most chemists, it is what usually called valence; */
155 /* sum of bond types (type 4 needs special treatment) */
156 S_CHAR num_H; /* number of implicit hydrogens, including D and T */
157 S_CHAR num_iso_H[NUM_H_ISOTOPES]; /* number of implicit 1H, 2H(D), 3H(T) < 16 */
158 S_CHAR iso_atw_diff; /* =0 => natural isotopic abundances */
159 /* >0 => (mass) - (mass of the most abundant isotope) + 1 */
160 /* <0 => (mass) - (mass of the most abundant isotope) */
161 S_CHAR charge; /* charge */
162 S_CHAR radical; /* RADICAL_SINGLET, RADICAL_DOUBLET, or RADICAL_TRIPLET */
164 S_CHAR cFlags; /* AT_FLAG_ISO_H_POINT */
165 AT_NUMB at_type; /* ATT_NONE, ATT_ACIDIC */
166 AT_NUMB component; /* number of the structure component > 0 */
167 AT_NUMB endpoint; /* id of a tautomeric group */
168 AT_NUMB c_point; /* id of a positive charge group */
169 double x;
170 double y;
171 double z;
172 /* 0D parities (originally were used with CML) */
173 S_CHAR bUsed0DParity; /* bit=1 => stereobond; bit=2 => stereocenter */
174 /* 0D tetrahedral parity */
177 /* 0D bond parities */
178 S_CHAR sb_ord[MAX_NUM_STEREO_BONDS]; /* stereo bond/neighbor ordering number, starts from 0 */
179 /* neighbors on both sides of stereobond have same sign=> trans/T/E, diff. signs => cis/C/Z */
180 S_CHAR sn_ord[MAX_NUM_STEREO_BONDS]; /* ord. num. of the neighbor adjacent to the SB; */
181 /* starts from 0; */
182 /* -1 means removed explicit H */
183 /* neighbors on both sides of stereobond have same parity => trans/T/E/2, diff. parities => cis/C/Z/1 */
185 AT_NUMB sn_orig_at_num[MAX_NUM_STEREO_BONDS]; /* orig. at number of sn_ord[] neighbors */
186
187#if (FIND_RING_SYSTEMS == 1)
192
193#if (FIND_RINS_SYSTEMS_DISTANCES == 1)
194 AT_NUMB nDistanceFromTerminal; /* terminal atom or ring system has 1, next has 2, etc. */
195#endif
196
197#endif
199
200/* v. 1.05 extensions: extended input supporting V3000; polymers */
201/* OAD stands for OrigAtData */
202
203/* v. 1.05 Polymer stuff */
204
205/* Polymer representation type */
206#define NO_POLYMER -1
207#define POLYMER_REPRESENTATION_SOURCE_BASED 1
208#define POLYMER_REPRESENTATION_STRUCTURE_BASED 2
209#define POLYMER_REPRESENTATION_MIXED 3
210#define POLYMER_REPRESENTATION_UNRECOGNIZED 4
211
212#define ALLOW_MIXED_SRU_AND_MON 1
214#define POLYMER_STY_NON 0
215#define POLYMER_STY_SRU 1
216#define POLYMER_STY_MON 2
217#define POLYMER_STY_COP 3
218#define POLYMER_STY_MOD 4
219#define POLYMER_STY_CRO 5
220#define POLYMER_STY_MER 6
222#define POLYMER_SST_NON 0
223#define POLYMER_SST_ALT 1
224#define POLYMER_SST_RAN 2
225#define POLYMER_SST_BLK 3
226
227#define POLYMER_CONN_NON 0
228#define POLYMER_CONN_HT 1
229#define POLYMER_CONN_HH 2
230#define POLYMER_CONN_EU 3
231
261typedef struct OAD_PolymerUnit
262{
263 int id; /* it is what is called 'Sgroup number' in CTFILE */
264 int type; /* type as by MDL format (STY) */
265 int subtype; /* subtype as by MDL format (SST) */
266 int conn; /* connection scheme as by MDL format (SCN) */
267 int label; /* it is what is called 'unique Sgroup identifier' CTFILE */
268 int na; /* number of atoms in the unit */
269 int nb; /* number of bonds in the unit */
270 int cyclizable; /* =1 if frame shift via CRU 'cyclization' is applicable */
271 int cyclized; /* =1 if CRU already was frame_shift' treated */
272 double xbr1[4]; /* bracket ends coordinates (SDI) */
273 double xbr2[4]; /* bracket ends coordinates (SDI) */
274 char smt[80]; /* Sgroup Subscript (SMT) */
276 /* CRU structure is: cap1-[-end_atom1/\/\/\end_atom2-]-cap2 */
277 int cap1;
280 int cap2;
283 int *alist; /* list of atoms in the unit (SAL) */
284 int *blist; /* bonds in the unit as list [atom1, atom2; atom1, atom2,..]*/
285 /* for crossing bonds (S) */
286 int maxbkbonds; /* max (allocd) number of frame_shift involved bonds */
287 int nbkbonds; /* number of bkbonds in CRU main chain */
288 /* bkbonds are [breakable at possible frame shift] backbone */
289 /* bonds in between "left" end_atom1 and "right" end_atom2 */
290 /* ends (they may be only single-order non-intraring bonds) */
291 int **bkbonds; /* list of [breakable] backbone bonds [(a1,a2), (a3,a4),...}*/
293
308typedef struct OAD_Polymer
309{
310 OAD_PolymerUnit **units; /* array of pointers to units */
311 int n;
312 int n_pzz; /* number of polymeric Zz atoms */
313 /* paired undefined-nature caps/stars around*/
314 /* CRY's (must be even) */
315 int *pzz; /* polymeric Zz atoms */
317 int frame_shift_scheme; /* frame shift analysis scheme */
318 int treat;
321 int edit_repeats; /* -1 unknown, to be checked */
322 /* 0 no, no edits required */
323 /* 1 yes, edits are necessary */
325
337typedef struct OAD_AtProps
338{
339 int erank; /* rank of element; 2 - C, >2 - rank of heteroatom in chain, */
340 /* O > S > Se > Te > N ...., Rule 4 */
341 int ring_erank; /* 0 - not ring or just carbocycle,
342 >2 - rank of senior heteroatom in this cycle */
343 /* according to Rule 2 ( N > O >... ) */
345 int ring_size; /* 0 or ring system size */
346 /* that is: */
347 /* ring_erank != 0 heterocycle of ring_size */
348 /* ring_erank==0 && ring_size>0 carbocycle of ring_size */
350
378/* Extended input supports v. 1.05 extensions: V3000; polymers */
379typedef struct OAD_V3000
380{
383 int *atom_index_orig; /* index as supplied for atoms */
384 int *atom_index_fin; /* = index or -1 for star atom */
385 int n_sgroups; /* currently, we do not use this. */
386 int n_3d_constraints; /* currently, we do not use this. */
391 /* haptic_bonds[i] is pointer to int* which contains: */
392 /* bond_type, non-star atom number, nendpts, */
393 /* then endpts themselves */
394 /* Enhanced stereo */
396 int **lists_steabs; /* steabs[k][0] - not used */
397 /* steabs[k][1] - number of members in collection */
398 /* steabs[k][2..] - member atom numbers */
400 int **lists_sterel; /* sterel[k][0] - n from "STERELn" tag */
401 /* sterel[k][1] - number of members in collection */
402 /* sterel[k][2..] - member atom numbers */
404 int **lists_sterac; /* sterac[k][0] - n from "STERACn" tag */
405 /* sterac[k][1] - number of members in collection */
406 /* sterac[k][0] - number from "STERACn" tag */
408
432typedef struct tagOrigAtom
433{
434 /* Initially filled out by CreateOrigInpDataFromMolfile() */
435 /* may be changed by disconnecting salts and disconnecting metals */
440 /* may be changed by disconnecting salts and disconnecting metals */
441 int num_components; /* set by MarkDisconnectedComponents and disconn. metals*/
442 int bDisconnectSalts; /* whether salt disconnection is possible */
443 int bDisconnectCoord; /* 0 if no disconnection needed */
444 /* else (NumImplicitH to disconnect)+1 */
445#if (bRELEASE_VERSION == 0)
446 int bExtract;
447#endif
448 AT_NUMB *nCurAtLen; /* has max_num_components elements */
449 AT_NUMB *nOldCompNumber; /* 0 or component number in previous numbering */
450 int nNumEquSets; /* number of found component equivalence sets */
451 AT_NUMB *nEquLabels; /* num_inp_atoms elements, value>0 marks atoms */
452 /* in the set #value */
453 AT_NUMB *nSortedOrder; /* num_components elements, values = 1..num_components; */
454 /* only if num_components > 1 */
458 /* v. 1.05 extensions */
462 int n_zy; /* number of non-polymeric pseudoatoms (Zy) */
463
465
477typedef struct tagOriginalStruct
478{
480 char *szAtoms;
481 char *szBonds;
482 char *szCoord;
483 /* v. 1.05 extensions */
484 OAD_Polymer *polymer; /* uses pointer copy from orig_inp_data, do not free after use! */
485 OAD_V3000 *v3000; /* uses pointer copy from orig_inp_data, do not free after use! */
486 int n_zy; /* number of non-polymeric pseudoatoms (Zy) */
487
489
527
528#define INF_STEREO_ABS 0x0001
529#define INF_STEREO_REL 0x0002
530#define INF_STEREO_RAC 0x0004
531#define INF_STEREO_NORM 0x0008
532#define INF_STEREO_INV 0x0010
533#define INF_STEREO 0x0020
534#define INF_STEREO_ABS_REL_RAC (INF_STEREO_ABS | INF_STEREO_REL | INF_STEREO_RAC)
535#define INF_STEREO_NORM_INV (INF_STEREO_NORM | INF_STEREO_INV)
536
537#define MAX_LEN_REMOVED_PROTONS 128
538
565
587typedef struct tagInputAtomData
588{
590 inp_ATOM *at_fixed_bonds; /* tautomeric case, added or removed H */
602 /* isotopic composition of removed protons, not included in num_iso_H[] */
604 /* isotopic H on tautomerIC atoms and those in nIsotopicEndpointAtomNumber */
609
611
627
647{
654 int bDeleted; /* unused */
659 /* isotopic composition of removed protons, not included in num_iso_H[] */
661 /* isotopic H on tautomeric atoms and those */
662 /* in nIsotopicEndpointAtomNumber */
666
667/*
668typedef COMP_ATOM_DATA COMP_ATOM_DATA3[TAUT_NUM+1];
669*/
670
671#define ADD_LEN_STRUCT_FPTRS 100 /* allocation increments */
672
673typedef long INCHI_FPTR;
674
683typedef struct tagStructFptrs
684{
685 INCHI_FPTR *fptr; /* input: fptr[cur_fptr] =file ptr to the struct to read */
686 /* output: fptr[cur_fptr+1]=file ptr to the next struct or EOF */
687 int len_fptr; /* allocated length of fptr */
688 int cur_fptr; /* input: k-1 to read the kth struct, k = 1, 2, 3,...; */
689 /* left unchanged; struct number := cur_fptr+1 */
690 int max_fptr; /* length of the filled out portion of fptr */
692
693/* forward declaration */
694struct tagCANON_GLOBALS;
695
696#ifndef __ICHITIME_H__
697struct tagInchiTime;
698struct tagINCHI_CLOCK;
699int bInchiTimeIsOver(struct tagINCHI_CLOCK *ic, struct tagInchiTime *TickEnd);
700#endif
701
702#define FLAG_INP_AT_CHIRAL 1
703#define FLAG_INP_AT_NONCHIRAL 2
704#define FLAG_SET_INP_AT_CHIRAL 4
705#define FLAG_SET_INP_AT_NONCHIRAL 8
706#define FLAG_SET_INP_LARGE_MOLS 16
707
708#ifndef COMPILE_ALL_CPP
709#ifdef __cplusplus
710extern "C"
711{
712#endif
713#endif
714
736 int CreateOrigInpDataFromMolfile(INCHI_IOSTREAM *inp_file, ORIG_ATOM_DATA *orig_at_data, int bMergeAllInputStructures, int bGetOrigCoord, int bDoNotAddH, int treat_polymers, int treat_NPZz,
737 const char *pSdfLabel, char *pSdfValue, unsigned long *lSdfId, long *lMolfileNumber, INCHI_MODE *pInpAtomFlags, int *err, char *pStrErr, int bNoWarnings);
738
757 int InchiToOrigAtom(INCHI_IOSTREAM *infile, ORIG_ATOM_DATA *orig_at_data, int bMergeAllInputStructures, int bGetOrigCoord, int bDoNotAddH, int vABParityUnknown, INPUT_TYPE nInputType, char *pSdfLabel,
758 char *pSdfValue, unsigned long *lSdfId, INCHI_MODE *pInpAtomFlags, int *err, char *pStrErr);
759
767 int MarkDisconnectedComponents(ORIG_ATOM_DATA *orig_at_data, int bProcessOldCompNumbers);
768
776 int DisconnectSalts(ORIG_ATOM_DATA *orig_inp_data, int bDisconnect);
777
786 int DisconnectMetals(ORIG_ATOM_DATA *orig_inp_data, int bCheckMetalValence, INCHI_MODE *bTautFlagsDone);
787
796 int bMayDisconnectMetals(ORIG_ATOM_DATA *orig_inp_data, int bCheckMetalValence, INCHI_MODE *bTautFlagsDone);
797
804 int bHasMetalAtom(ORIG_ATOM_DATA *orig_inp_data);
805
813 int FixAdjacentRadicals(int num_inp_atoms, inp_ATOM *at); /* FIX_ADJ_RAD == 1 */
814
824 int fix_odd_things(int num_atoms, inp_ATOM *at, int bFixBug, int bFixNonUniformDraw);
825
833 int post_fix_odd_things(int num_atoms, inp_ATOM *at);
834
842 int remove_ion_pairs(int num_atoms, inp_ATOM *at);
843
851 int bFoundFeature(inp_ATOM *at, int num_atoms);
852
860 int UnMarkRingSystemsInp(inp_ATOM *at, int num_atoms);
861
875 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);
876
882 void FreeInpAtom(inp_ATOM **at);
883
890
896 void FreeOrigAtData(ORIG_ATOM_DATA *orig_at_data);
897
905
911 void FreeInpAtomData(INP_ATOM_DATA *inp_at_data);
912
918 void FreeCompAtomData(COMP_ATOM_DATA *inp_at_data);
919
925 void FreeInfoAtomData(INF_ATOM_DATA *inf_at_data);
926
927 /*
928 ORIG_ATOM_DATA
929 functions
930 */
931
932 /* OAD_Edit */
933
953
961
968
975
976#if (RING2CHAIN == 1)
977
986 int Ring2Chain(struct tagINCHI_CLOCK *ic, struct tagCANON_GLOBALS *pCG, ORIG_ATOM_DATA *orig_inp_data);
987#endif
988
989#if (UNDERIVATIZE == 1)
1001 int OAD_Edit_Underivatize(struct tagINCHI_CLOCK *ic, struct tagCANON_GLOBALS *pCG, ORIG_ATOM_DATA *orig_inp_data, int bOutputSdf, int bOutputReport, char *pSdfValue);
1002
1011 void OAD_Edit_MergeComponentsAndRecreateOAD(ORIG_ATOM_DATA *orig_OrigAtomData, INP_ATOM_DATA *curr_InpAtomData, int num_components, int *errcode);
1012
1013#endif
1014
1015 /* OAD misc. */
1016
1027 int OAD_ValidatePolymerAndPseudoElementData(ORIG_ATOM_DATA *orig_at_data, int treat_polymers, int bNPZz, char *pStrErr, int bNoWarnings);
1028
1029 /* OAD_Polymer */
1039 void OAD_ValidateAndSortOutPseudoElementAtoms(ORIG_ATOM_DATA *orig_at_data, int treat_polymers, int use_zz, int *err, char *pStrErr);
1040
1048
1058 int OAD_Polymer_CyclizeCloseableUnits(ORIG_ATOM_DATA *orig_at_data, int use_zz, char *pStrErr, int bNoWarnings);
1059
1072 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);
1073
1084 void OAD_Polymer_SetAtProps(OAD_Polymer *pd, inp_ATOM *at, int nat, int *num_inp_bonds, OAD_AtProps *aprops, int *cano_nums);
1085
1094 int OAD_Polymer_CompareBackboneBondsSeniority(int *b1, int *b2, OAD_AtProps *aprops);
1095
1104 int OAD_Polymer_CompareRanksOfTwoAtoms(int atom1, int atom2, OAD_AtProps *aprops);
1105
1114 int OAD_Polymer_IsFirstAtomRankLower(int atom1, int atom2, OAD_AtProps *aprops);
1115
1124
1134
1143 void OAD_Polymer_FindBackbones(ORIG_ATOM_DATA *where_to_look, COMP_ATOM_DATA *composite_norm_data, int *err, char *pStrErr);
1144
1155 int OAD_Polymer_PrepareWorkingSet(OAD_Polymer *p, int *cano_nums, int *compnt_nums, OAD_PolymerUnit **units2, int *unum);
1156
1163
1170
1179 void OAD_Polymer_SmartReopenCyclizedUnits(OAD_Polymer *p, inp_ATOM *at, int nat, int *num_inp_bonds);
1180
1192 int OAD_Polymer_PrepareFoldCRUEdits(ORIG_ATOM_DATA *orig_at_data, char *sinchi_noedits, char *saux_noedits, char *sinchi, char *saux, OAD_StructureEdits *ed);
1193
1203 int OAD_Polymer_PrepareFrameShiftEdits(ORIG_ATOM_DATA *orig_at_data, char *sinchi, char *saux, OAD_StructureEdits *ed);
1204
1205 /* OAD_PolymerUnit */
1206
1226 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,
1227 int **bkbonds);
1228
1236
1243
1250
1265 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);
1266
1275 void OAD_PolymerUnit_SetEndsAndCaps(OAD_PolymerUnit *unit, ORIG_ATOM_DATA *orig_at_data, int *err, char *pStrErr);
1276
1285 void OAD_PolymerUnit_UnlinkCapsAndConnectEndAtoms(OAD_PolymerUnit *unit, ORIG_ATOM_DATA *orig_at_data, int *err, char *pStrErr);
1286
1295 void OAD_PolymerUnit_PrepareToFrameShift(OAD_PolymerUnit *unit, ORIG_ATOM_DATA *orig_at_data, int *err, char *pStrErr);
1296
1310 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);
1311
1325 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);
1326
1340 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);
1341
1350 void OAD_PolymerUnit_DelistIntraRingBackboneBonds(OAD_PolymerUnit *unit, ORIG_ATOM_DATA *orig_at_data, int *err, char *pStrErr);
1351
1361 void OAD_PolymerUnit_DelistHighOrderBackboneBonds(OAD_PolymerUnit *unit, ORIG_ATOM_DATA *orig_at_data, COMP_ATOM_DATA *composite_norm_data, int *err, char *pStrErr);
1362
1371
1381 void OAD_PolymerUnit_ReopenCyclized(OAD_PolymerUnit *u, inp_ATOM *at, OAD_AtProps *aprops, int nat, int *num_inp_bonds);
1382
1391
1400
1410
1419
1427 int FixUnkn0DStereoBonds(inp_ATOM *at, int num_at);
1428
1435 inf_ATOM *CreateInfAtom(int num_atoms);
1436
1443 inp_ATOM *CreateInpAtom(int num_atoms);
1444
1453 int CreateInfoAtomData(INF_ATOM_DATA *inf_at_data, int num_atoms, int num_components);
1454
1463 int AllocateInfoAtomData(INF_ATOM_DATA *inf_at_data, int num_atoms, int num_components);
1464
1472 int DuplicateInfoAtomData(INF_ATOM_DATA *inf_at_data_to, const INF_ATOM_DATA *inf_at_data_from);
1473
1482 int CreateInpAtomData(INP_ATOM_DATA *inp_at_data, int num_atoms, int create_at_fixed_bonds);
1483
1493 int CreateCompAtomData(COMP_ATOM_DATA *inp_at_data, int num_atoms, int num_components, int bIntermediateTaut);
1494
1495#ifndef COMPILE_ANSI_ONLY
1496 int DisplayInputStructure(char *szOutputString, inp_ATOM *at, INF_ATOM_DATA *inf_at_data, int num_at, DRAW_PARMS *dp);
1497#endif
1498
1506 void PrintFileName(const char *fmt, FILE *out_file, const char *szFname);
1507
1513 void MySleep(unsigned long ms);
1514
1523 int ReconcileAllCmlBondParities(inp_ATOM *at, int num_atoms, int bDisconnected);
1524
1525#ifndef COMPILE_ALL_CPP
1526#ifdef __cplusplus
1527}
1528#endif
1529#endif
1530
1531#endif /* _INPDEF_H_ */
#define ATOM_EL_LEN
Definition ichicant.h:97
#define MAXVAL
Definition ichicant.h:95
enum tagInputType INPUT_TYPE
unsigned short AT_NUMB
Definition ichisize.h:45
signed short NUM_H
Definition ichisize.h:49
unsigned long INCHI_MODE
Definition ichisize.h:60
char MOL_COORD[LEN_COORD *NUM_COORD+NUM_COORD - 1]
Definition ichisize.h:64
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
#define INCHI_NUM
Definition inchi_api.h:1179
#define MAX_NUM_STEREO_BONDS
Definition inchi_api.h:1176
signed short S_SHORT
Definition inchi_api.h:119
#define MAX_NUM_STEREO_ATOM_NEIGH
Definition inchi_api.h:1173
#define ATOM_INFO_LEN
Definition incomdef.h:57
#define MAX_STEREO_BONDS
Definition incomdef.h:59
int OAD_PolymerUnit_SetReopeningDetails(OAD_PolymerUnit *u, inp_ATOM *at)
Set reopening details for a polymer unit.
Definition runichi3.c:3986
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:5936
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:111
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:1143
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:3857
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:1959
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:4076
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:4375
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:2998
void FreeInpAtomData(INP_ATOM_DATA *inp_at_data)
Free input atom data.
Definition mol2atom.c:1075
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 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:4188
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:915
INP_ATOM_DATA INP_ATOM_DATA2[TAUT_NUM]
Definition inpdef.h:610
inp_ATOM * CreateInpAtom(int num_atoms)
Create/allocate a Inp Atom object.
Definition mol2atom.c:1054
int AllocateInfoAtomData(INF_ATOM_DATA *inf_at_data, int num_atoms, int num_components)
Allocate memory for Info Atom Data object.
int DuplicateInfoAtomData(INF_ATOM_DATA *inf_at_data_to, const INF_ATOM_DATA *inf_at_data_from)
Duplicate Info Atom Data object.
int CreateInfoAtomData(INF_ATOM_DATA *inf_at_data, int num_atoms, int num_components)
Create a Info Atom Data object.
int DisconnectMetals(ORIG_ATOM_DATA *orig_inp_data, int bCheckMetalValence, INCHI_MODE *bTautFlagsDone)
Disconnect metals in the original atom data.
Definition strutil.c:2858
int fix_odd_things(int num_atoms, inp_ATOM *at, int bFixBug, int bFixNonUniformDraw)
Fix odd things in the input atoms.
Definition strutil.c:603
void OAD_StructureEdits_Clear(OAD_StructureEdits *ed)
Clear structure edits.
Definition runichi2.c:1769
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:7364
void OAD_Polymer_Free(OAD_Polymer *p)
Free polymer data structure.
Definition runichi3.c:2051
void OAD_Polymer_DebugTrace(OAD_Polymer *p)
Debug trace for polymer data structure (print the whole polymer data)
Definition runichi3.c:3736
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:3291
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:3147
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:4035
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:1067
void OAD_StructureEdits_DebugPrint(OAD_StructureEdits *ed)
Debug print structure edits.
Definition runichi2.c:1807
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:4348
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:2522
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:1497
long INCHI_FPTR
Definition inpdef.h:673
int OAD_PolymerUnit_CompareAtomLists(OAD_PolymerUnit *u1, OAD_PolymerUnit *u2)
Compare two polymer units based on their atom lists.
Definition runichi3.c:1381
int DisconnectSalts(ORIG_ATOM_DATA *orig_inp_data, int bDisconnect)
Disconnect salts in the original atom data.
Definition strutil.c:2661
S_SHORT ST_CAP_FLOW
Definition inpdef.h:62
int MarkDisconnectedComponents(ORIG_ATOM_DATA *orig_at_data, int bProcessOldCompNumbers)
Mark disconnected components in the original atom data.
Definition strutil.c:4270
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:1418
int OAD_StructureEdits_Init(OAD_StructureEdits *ed)
Initialize structure edits.
Definition runichi2.c:1735
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:2322
int OAD_Polymer_GetRepresentation(OAD_Polymer *p)
Get polymer representation type.
Definition runichi3.c:3767
#define MAX_LEN_REMOVED_PROTONS
Definition inpdef.h:537
int UnMarkRingSystemsInp(inp_ATOM *at, int num_atoms)
Unmark ring systems in the input atoms.
Definition runichi3.c:1941
int OAD_PolymerUnit_CompareAtomListsMod(OAD_PolymerUnit *u1, OAD_PolymerUnit *u2)
Compare two polymer units based on their atom lists with modifications.
Definition runichi3.c:1358
int FixUnkn0DStereoBonds(inp_ATOM *at, int num_at)
Fix unknown stereo bonds in the input atoms.
Definition ichister.c:2006
OAD_PolymerUnit * OAD_PolymerUnit_CreateCopy(OAD_PolymerUnit *u)
Create a copy of a polymer unit.
Definition runichi3.c:1241
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:3488
void OAD_PolymerUnit_DebugTrace(OAD_PolymerUnit *unit)
Debug trace for a polymer unit (print the whole polymer unit)
Definition runichi3.c:3621
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:2755
void FreeCompAtomData(COMP_ATOM_DATA *inp_at_data)
Free composite atom data.
Definition mol2atom.c:1109
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:3215
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:3932
int CreateCompAtomData(COMP_ATOM_DATA *inp_at_data, int num_atoms, int num_components, int bIntermediateTaut)
Create a Comp Atom Data object.
Definition mol2atom.c:1125
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:1838
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:2246
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:3088
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:257
int ReconcileAllCmlBondParities(inp_ATOM *at, int num_atoms, int bDisconnected)
Reconcile all CML bond parities in the input atoms.
Definition ichister.c:4662
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:2926
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:2146
void PrintFileName(const char *fmt, FILE *out_file, const char *szFname)
Print the file name.
Definition strutil.c:5526
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:2035
int CreateInpAtomData(INP_ATOM_DATA *inp_at_data, int num_atoms, int create_at_fixed_bonds)
Create a Inp Atom Data object.
Definition mol2atom.c:1089
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:7565
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:2852
void FreeOrigAtData(ORIG_ATOM_DATA *orig_at_data)
Free original atom data.
Definition mol2atom.c:1254
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:1042
void FreeExtOrigAtData(OAD_Polymer *pd, OAD_V3000 *v3k)
Free extended original atom data (polymers and V3000)
Definition mol2atom.c:1300
inf_ATOM * CreateInfAtom(int num_atoms)
Create/allocate a Inf Atom object.
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:4107
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:2081
void OAD_PolymerUnit_Free(OAD_PolymerUnit *unit)
Free a polymer unit.
Definition runichi3.c:1323
void FreeInpAtom(inp_ATOM **at)
Free input atom array.
Definition mol2atom.c:1062
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:783
#define TAUT_NUM
Definition mode.h:593
Structure describing atom properties for OAD.
Definition inpdef.h:338
int ring_num
Definition inpdef.h:344
int erank
Definition inpdef.h:339
int ring_size
Definition inpdef.h:345
int ring_erank
Definition inpdef.h:341
Structure describing a polymer unit.
Definition inpdef.h:262
int nbkbonds
Definition inpdef.h:287
int conn
Definition inpdef.h:266
int label
Definition inpdef.h:267
double xbr2[4]
Definition inpdef.h:273
int representation
Definition inpdef.h:275
int cap2
Definition inpdef.h:280
int * blist
Definition inpdef.h:284
int * alist
Definition inpdef.h:283
int id
Definition inpdef.h:263
int cap1
Definition inpdef.h:277
int na
Definition inpdef.h:268
char smt[80]
Definition inpdef.h:274
int cap1_is_undef
Definition inpdef.h:281
int end_atom1
Definition inpdef.h:278
int nb
Definition inpdef.h:269
int cyclized
Definition inpdef.h:271
int end_atom2
Definition inpdef.h:279
int subtype
Definition inpdef.h:265
int cyclizable
Definition inpdef.h:270
int ** bkbonds
Definition inpdef.h:291
int maxbkbonds
Definition inpdef.h:286
int type
Definition inpdef.h:264
double xbr1[4]
Definition inpdef.h:272
int cap2_is_undef
Definition inpdef.h:282
Structure describing a polymer.
Definition inpdef.h:309
int edit_repeats
Definition inpdef.h:321
int * pzz
Definition inpdef.h:315
int is_in_reconn
Definition inpdef.h:320
int n_pzz
Definition inpdef.h:312
int representation
Definition inpdef.h:319
int n
Definition inpdef.h:311
int really_do_frame_shift
Definition inpdef.h:316
int frame_shift_scheme
Definition inpdef.h:317
OAD_PolymerUnit ** units
Definition inpdef.h:310
int treat
Definition inpdef.h:318
Structure describing v. 1.05 extended input supporting V3000; polymers.
Definition inpdef.h:380
int n_non_star_atoms
Definition inpdef.h:381
int n_sterel
Definition inpdef.h:399
int * atom_index_orig
Definition inpdef.h:383
int n_steabs
Definition inpdef.h:395
int * atom_index_fin
Definition inpdef.h:384
int n_non_haptic_bonds
Definition inpdef.h:388
int n_sgroups
Definition inpdef.h:385
int ** lists_sterac
Definition inpdef.h:404
int ** lists_haptic_bonds
Definition inpdef.h:390
int ** lists_steabs
Definition inpdef.h:396
int n_star_atoms
Definition inpdef.h:382
int ** lists_sterel
Definition inpdef.h:400
int n_collections
Definition inpdef.h:387
int n_haptic_bonds
Definition inpdef.h:389
int n_sterac
Definition inpdef.h:403
int n_3d_constraints
Definition inpdef.h:386
Structure describing atom parameters for drawing.
Definition inpdef.h:509
S_CHAR cStereoBondWarning[MAX_STEREO_BONDS]
Definition inpdef.h:524
AT_NUMB nCanonNbr
Definition inpdef.h:513
AT_NUMB nTautGroupCanonNbr
Definition inpdef.h:515
S_CHAR cFlags
Definition inpdef.h:517
char at_string[ATOM_INFO_LEN]
Definition inpdef.h:510
int DrawingLabelLeftShift
Definition inpdef.h:511
S_CHAR cStereoBondParity[MAX_STEREO_BONDS]
Definition inpdef.h:523
AT_NUMB nCanonEquNbr
Definition inpdef.h:514
S_CHAR cStereoCenterParity
Definition inpdef.h:522
S_CHAR cHighlightTheAtom
Definition inpdef.h:521
AT_NUMB nTautGroupEquNbr
Definition inpdef.h:516
int DrawingLabelLength
Definition inpdef.h:512
S_CHAR cStereoBondNumber[MAX_STEREO_BONDS]
Definition inpdef.h:525
Definition ichicant.h:338
Structure describing composite atom data for InChI generation.
Definition inpdef.h:647
AT_NUMB * nOffsetAtAndH
Definition inpdef.h:663
int bHasIsotopicLayer
Definition inpdef.h:655
int bExists
Definition inpdef.h:653
int num_isotopic
Definition inpdef.h:652
int num_at
Definition inpdef.h:649
int num_removed_H
Definition inpdef.h:650
int num_components
Definition inpdef.h:664
int nNumRemovedProtons
Definition inpdef.h:657
inp_ATOM * at
Definition inpdef.h:648
int bDeleted
Definition inpdef.h:654
NUM_H nNumRemovedProtonsIsotopic[NUM_H_ISOTOPES]
Definition inpdef.h:658
int num_bonds
Definition inpdef.h:651
int bTautomeric
Definition inpdef.h:656
NUM_H num_iso_H[NUM_H_ISOTOPES]
Definition inpdef.h:660
Definition ichidrp.h:78
Definition ichitime.h:85
INT_ARRAY - Dynamically growing array of int.
Definition mol_fmt.h:207
Definition ichitime.h:69
Structure describing information about atoms for InChI generation.
Definition inpdef.h:553
AT_NUMB num_components
Definition inpdef.h:557
NUM_H num_iso_H[NUM_H_ISOTOPES]
Definition inpdef.h:562
AT_NUMB * pStereoFlags
Definition inpdef.h:558
int num_at
Definition inpdef.h:555
char szRemovedProtons[MAX_LEN_REMOVED_PROTONS]
Definition inpdef.h:563
int num_removed_iso_H
Definition inpdef.h:561
AT_NUMB StereoFlags
Definition inpdef.h:556
int nNumRemovedProtons
Definition inpdef.h:560
inf_ATOM * at
Definition inpdef.h:554
Structure describing input atom data for InChI generation.
Definition inpdef.h:588
inp_ATOM * at_fixed_bonds
Definition inpdef.h:590
INCHI_MODE bTautFlagsDone
Definition inpdef.h:606
int num_removed_H
Definition inpdef.h:592
NUM_H num_iso_H[NUM_H_ISOTOPES]
Definition inpdef.h:603
INCHI_MODE bNormalizationFlags
Definition inpdef.h:607
int num_isotopic
Definition inpdef.h:594
inp_ATOM * at
Definition inpdef.h:589
int bHasIsotopicLayer
Definition inpdef.h:597
int bTautPreprocessed
Definition inpdef.h:599
int num_bonds
Definition inpdef.h:593
int bTautomeric
Definition inpdef.h:598
int nNumRemovedProtons
Definition inpdef.h:600
NUM_H nNumRemovedProtonsIsotopic[NUM_H_ISOTOPES]
Definition inpdef.h:601
INCHI_MODE bTautFlags
Definition inpdef.h:605
int bDeleted
Definition inpdef.h:596
int bExists
Definition inpdef.h:595
int num_at
Definition inpdef.h:591
Structure describing an input atom.
Definition inpdef.h:142
S_CHAR bUsed0DParity
Definition inpdef.h:173
AT_NUMB orig_compt_at_numb
Definition inpdef.h:147
AT_NUMB nNumAtInRingSystem
Definition inpdef.h:190
S_CHAR sb_ord[MAX_NUM_STEREO_BONDS]
Definition inpdef.h:178
AT_NUMB p_orig_at_num[MAX_NUM_STEREO_ATOM_NEIGH]
Definition inpdef.h:176
S_CHAR radical
Definition inpdef.h:162
S_CHAR chem_bonds_valence
Definition inpdef.h:154
S_CHAR num_iso_H[NUM_H_ISOTOPES]
Definition inpdef.h:157
double z
Definition inpdef.h:171
AT_NUMB orig_at_number
Definition inpdef.h:146
AT_NUMB component
Definition inpdef.h:166
double y
Definition inpdef.h:170
S_CHAR bond_stereo[MAXVAL]
Definition inpdef.h:149
char elname[ATOM_EL_LEN]
Definition inpdef.h:143
S_CHAR bAmbiguousStereo
Definition inpdef.h:163
AT_NUMB nRingSystem
Definition inpdef.h:189
AT_NUMB at_type
Definition inpdef.h:165
AT_NUMB neighbor[MAXVAL]
Definition inpdef.h:145
S_CHAR bCutVertex
Definition inpdef.h:188
S_CHAR sb_parity[MAX_NUM_STEREO_BONDS]
Definition inpdef.h:184
S_CHAR valence
Definition inpdef.h:152
S_CHAR num_H
Definition inpdef.h:156
AT_NUMB sn_orig_at_num[MAX_NUM_STEREO_BONDS]
Definition inpdef.h:185
double x
Definition inpdef.h:169
S_CHAR sn_ord[MAX_NUM_STEREO_BONDS]
Definition inpdef.h:180
S_CHAR cFlags
Definition inpdef.h:164
AT_NUMB c_point
Definition inpdef.h:168
AT_NUMB nBlockSystem
Definition inpdef.h:191
AT_NUMB endpoint
Definition inpdef.h:167
U_CHAR el_number
Definition inpdef.h:144
S_CHAR p_parity
Definition inpdef.h:175
S_CHAR charge
Definition inpdef.h:161
S_CHAR iso_atw_diff
Definition inpdef.h:158
U_CHAR bond_type[MAXVAL]
Definition inpdef.h:151
Structure describing normalization and canonicalization flags.
Definition inpdef.h:621
INCHI_MODE bNormalizationFlags[INCHI_NUM][TAUT_NUM]
Definition inpdef.h:624
int nCanonFlags[INCHI_NUM][TAUT_NUM]
Definition inpdef.h:625
INCHI_MODE bTautFlags[INCHI_NUM][TAUT_NUM]
Definition inpdef.h:622
INCHI_MODE bTautFlagsDone[INCHI_NUM][TAUT_NUM]
Definition inpdef.h:623
Structure describing structure edits.
Definition inpdef.h:945
INT_ARRAY * new_bond
Definition inpdef.h:948
int del_side_chains
Definition inpdef.h:951
INT_ARRAY * del_atom
Definition inpdef.h:946
INT_ARRAY * del_bond
Definition inpdef.h:947
INT_ARRAY * mod_bond
Definition inpdef.h:949
INT_ARRAY * mod_coord
Definition inpdef.h:950
Structure describing original atom data.
Definition inpdef.h:433
AT_NUMB * nSortedOrder
Definition inpdef.h:453
int nNumEquSets
Definition inpdef.h:450
int bDisconnectSalts
Definition inpdef.h:442
AT_NUMB * nEquLabels
Definition inpdef.h:451
int num_dimensions
Definition inpdef.h:437
inp_ATOM * at
Definition inpdef.h:436
int num_components
Definition inpdef.h:441
int n_zy
Definition inpdef.h:462
AT_NUMB * nOldCompNumber
Definition inpdef.h:449
OAD_V3000 * v3000
Definition inpdef.h:460
int bPreprocessed[INCHI_NUM]
Definition inpdef.h:456
AT_NUMB * nCurAtLen
Definition inpdef.h:448
int bSavedInINCHI_LIB[INCHI_NUM]
Definition inpdef.h:455
MOL_COORD * szCoord
Definition inpdef.h:457
int bDisconnectCoord
Definition inpdef.h:443
OAD_Polymer * polymer
Definition inpdef.h:459
int num_inp_atoms
Definition inpdef.h:439
int valid_polymer
Definition inpdef.h:461
int num_inp_bonds
Definition inpdef.h:438
Structure describing original structure.
Definition inpdef.h:478
int n_zy
Definition inpdef.h:486
OAD_V3000 * v3000
Definition inpdef.h:485
int num_atoms
Definition inpdef.h:479
char * szBonds
Definition inpdef.h:481
OAD_Polymer * polymer
Definition inpdef.h:484
char * szCoord
Definition inpdef.h:482
char * szAtoms
Definition inpdef.h:480
Definition mode.h:1030
Structure describing file pointers for structures.
Definition inpdef.h:684
int cur_fptr
Definition inpdef.h:688
int max_fptr
Definition inpdef.h:690
int len_fptr
Definition inpdef.h:687
INCHI_FPTR * fptr
Definition inpdef.h:685