InChI
 
Loading...
Searching...
No Matches
ichinorm.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
11#ifndef _ICHINORM_H_
12#define _ICHINORM_H_
13
14#include "mode.h"
15#include "ichitaut.h"
16
17#ifndef COMPILE_ALL_CPP
18#ifdef __cplusplus
19extern "C" {
20#endif
21#endif
22
23/* main normalization procedure */
25 struct tagCANON_GLOBALS *pCG,
26 inp_ATOM *at,
27 inp_ATOM *at_fixed_bonds_out,
28 int num_atoms,
29 struct tagInchiTime *ulTimeOutTime,
30 T_GROUP_INFO *t_group_info,
31 INCHI_MODE *inpbTautFlags,
32 INCHI_MODE *inpbTautFlagsDone,
33 int nebend, int *ebend );
34
35int MarkTautomerGroups( struct tagCANON_GLOBALS *pCG, inp_ATOM *at,
36 int num_atoms,
37 T_GROUP_INFO *t_group_info,
38 C_GROUP_INFO *c_group_info,
39 struct BalancedNetworkStructure *pBNS,
40 struct BalancedNetworkData *pBD );
41
42int MarkChargeGroups( struct tagCANON_GLOBALS *pCG,
43 inp_ATOM *at,
44 int num_atoms,
45 C_GROUP_INFO *c_group_info,
46 T_GROUP_INFO *t_group_info,
47 struct BalancedNetworkStructure *pBNS,
48 struct BalancedNetworkData *pBD );
50 inp_ATOM *at,
51 int num_atoms,
52 S_GROUP_INFO *s_group_info,
53 T_GROUP_INFO *t_group_info,
54 C_GROUP_INFO *c_group_info,
55 struct BalancedNetworkStructure *pBNS,
56 struct BalancedNetworkData *pBD );
58 inp_ATOM *at,
59 int num_atoms,
60 S_GROUP_INFO *s_group_info,
61 T_GROUP_INFO *t_group_info,
62 C_GROUP_INFO *c_group_info,
63 struct BalancedNetworkStructure *pBNS,
64 struct BalancedNetworkData *pBD );
66 inp_ATOM *at, int num_atoms,
67 S_GROUP_INFO *s_group_info,
68 T_GROUP_INFO *t_group_info,
69 C_GROUP_INFO *c_group_info,
70 struct BalancedNetworkStructure *pBNS );
72 int num_atoms,
73 S_GROUP_INFO *s_group_info,
74 T_GROUP_INFO *t_group_info );
75
76int remove_terminal_HDT( int num_atoms,
77 inp_ATOM *at,
78 int bFixTermHChrg,
79 const unsigned char* keep_explicit_HDT);
80int RemoveExcessiveImplicitH( int num_atoms,
81 int num_removed_H,
82 inp_ATOM *at );
83int add_DT_to_num_H( int num_atoms,
84 inp_ATOM *at );
86 int num_atoms,
87 int start );
88int free_t_group_info( T_GROUP_INFO *t_group_info );
90 T_GROUP_INFO *t_group_info_orig );
91int set_tautomer_iso_sort_keys( T_GROUP_INFO *t_group_info );
93 int num_atoms,
94 T_GROUP_INFO *t_group_info );
96 int num_atoms,
97 T_GROUP_INFO *t_group_info );
99 T_GROUP_INFO *t_group_info,
100 int num_atoms,
101 int num_at_tg,
102 AT_RANK *nRank );
103int FillIsotopicAtLinearCT( int num_atoms,
104 sp_ATOM* at,
105 const AT_RANK *nAtomNumber,
106 AT_ISOTOPIC *LinearCTIsotopic,
107 int nMaxLenLinearCTIsotopic,
108 int *pnLenLinearCTIsotopic );
109int FillTautLinearCT2( struct tagCANON_GLOBALS *pCG,
110 int num_atoms,
111 int num_at_tg,
112 int bIsoTaut,
113 const AT_RANK *nRank,
114 const AT_RANK *nAtomNumber,
115 const AT_RANK *nSymmRank,
116 const AT_RANK *nRankIso,
117 const AT_RANK *nAtomNumberIso,
118 const AT_RANK *nSymmRankIso,
119 AT_TAUTOMER *LinearCTTautomer,
120 int nMaxLenLinearCTTautomer,
121 int *pnLenLinearCTTautomer,
122 AT_ISO_TGROUP *LinearCTIsotopicTautomer,
123 int nMaxLenLinearCTIsotopicTautomer,
124 int *pnLenLinearCTIsotopicTautomer,
125 T_GROUP_INFO *t_group_info );
126
127
128#ifndef COMPILE_ALL_CPP
129#ifdef __cplusplus
130}
131#endif
132#endif
133
134
135
136#endif /* _ICHINORM_H_ */
int FillTautLinearCT2(struct tagCANON_GLOBALS *pCG, int num_atoms, int num_at_tg, int bIsoTaut, const AT_RANK *nRank, const AT_RANK *nAtomNumber, const AT_RANK *nSymmRank, const AT_RANK *nRankIso, const AT_RANK *nAtomNumberIso, const AT_RANK *nSymmRankIso, AT_TAUTOMER *LinearCTTautomer, int nMaxLenLinearCTTautomer, int *pnLenLinearCTTautomer, AT_ISO_TGROUP *LinearCTIsotopicTautomer, int nMaxLenLinearCTIsotopicTautomer, int *pnLenLinearCTIsotopicTautomer, T_GROUP_INFO *t_group_info)
Definition ichicano.c:823
int RemoveExcessiveImplicitH(int num_atoms, int num_removed_H, inp_ATOM *at)
int FillIsotopicAtLinearCT(int num_atoms, sp_ATOM *at, const AT_RANK *nAtomNumber, AT_ISOTOPIC *LinearCTIsotopic, int nMaxLenLinearCTIsotopic, int *pnLenLinearCTIsotopic)
Definition ichicano.c:745
int MergeSaltTautGroups(struct tagCANON_GLOBALS *pCG, inp_ATOM *at, int num_atoms, S_GROUP_INFO *s_group_info, T_GROUP_INFO *t_group_info, C_GROUP_INFO *c_group_info, struct BalancedNetworkStructure *pBNS)
Definition ichitaut.c:3918
int free_t_group_info(T_GROUP_INFO *t_group_info)
Definition ichitaut.c:6301
int MarkSaltChargeGroups(struct tagCANON_GLOBALS *pCG, inp_ATOM *at, int num_atoms, S_GROUP_INFO *s_group_info, T_GROUP_INFO *t_group_info, C_GROUP_INFO *c_group_info, struct BalancedNetworkStructure *pBNS, struct BalancedNetworkData *pBD)
Definition ichitaut.c:3448
int MarkTautomerGroups(struct tagCANON_GLOBALS *pCG, inp_ATOM *at, int num_atoms, T_GROUP_INFO *t_group_info, C_GROUP_INFO *c_group_info, struct BalancedNetworkStructure *pBNS, struct BalancedNetworkData *pBD)
Definition ichitaut.c:4301
int MakeIsotopicHGroup(inp_ATOM *at, int num_atoms, S_GROUP_INFO *s_group_info, T_GROUP_INFO *t_group_info)
Definition ichitaut.c:4121
int MarkRingSystemsInp(inp_ATOM *at, int num_atoms, int start)
Definition ichinorm.c:25
int set_tautomer_iso_sort_keys(T_GROUP_INFO *t_group_info)
Definition ichitaut.c:6442
int CountTautomerGroupsInpAt(inp_ATOM *at, int num_atoms, T_GROUP_INFO *t_group_info)
int SortTautomerGroupsAndEndpoints(struct tagCANON_GLOBALS *pCG, T_GROUP_INFO *t_group_info, int num_atoms, int num_at_tg, AT_RANK *nRank)
Definition ichitaut.c:6984
int make_a_copy_of_t_group_info(T_GROUP_INFO *t_group_info, T_GROUP_INFO *t_group_info_orig)
Definition ichitaut.c:6329
int add_DT_to_num_H(int num_atoms, inp_ATOM *at)
Definition strutil.c:3658
int mark_alt_bonds_and_taut_groups(struct tagINCHI_CLOCK *ic, struct tagCANON_GLOBALS *pCG, inp_ATOM *at, inp_ATOM *at_fixed_bonds_out, int num_atoms, struct tagInchiTime *ulTimeOutTime, T_GROUP_INFO *t_group_info, INCHI_MODE *inpbTautFlags, INCHI_MODE *inpbTautFlagsDone, int nebend, int *ebend)
Definition ichi_bns.c:5206
int CountTautomerGroups(sp_ATOM *at, int num_atoms, T_GROUP_INFO *t_group_info)
Definition ichitaut.c:6484
int MarkChargeGroups(struct tagCANON_GLOBALS *pCG, inp_ATOM *at, int num_atoms, C_GROUP_INFO *c_group_info, T_GROUP_INFO *t_group_info, struct BalancedNetworkStructure *pBNS, struct BalancedNetworkData *pBD)
Definition ichitaut.c:2362
int remove_terminal_HDT(int num_atoms, inp_ATOM *at, int bFixTermHChrg, const unsigned char *keep_explicit_HDT)
Definition strutil.c:3710
int MarkSaltChargeGroups2(struct tagCANON_GLOBALS *pCG, inp_ATOM *at, int num_atoms, S_GROUP_INFO *s_group_info, T_GROUP_INFO *t_group_info, C_GROUP_INFO *c_group_info, struct BalancedNetworkStructure *pBNS, struct BalancedNetworkData *pBD)
Definition ichitaut.c:2926
unsigned short AT_RANK
Definition ichisize.h:11
unsigned long INCHI_MODE
Definition ichisize.h:25
AT_NUMB AT_TAUTOMER
Definition ichitaut.h:74
Definition ichi_bns.h:251
Definition ichi_bns.h:198
Definition extr_ct.h:75
Definition ichicant.h:303
Definition ichitaut.h:268
Definition ichitime.h:50
Definition ichitime.h:34
Structure describing an input atom.
Definition inpdef.h:107
Definition extr_ct.h:55
Definition ichitaut.h:86
Definition ichitaut.h:286
Definition ichitaut.h:187