InChI
 
Loading...
Searching...
No Matches
ichinorm.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
46#ifndef _ICHINORM_H_
47#define _ICHINORM_H_
48
49#include "mode.h"
50#include "ichitaut.h"
51
52#ifndef COMPILE_ALL_CPP
53#ifdef __cplusplus
54extern "C" {
55#endif
56#endif
57
58/* main normalization procedure */
60 struct tagCANON_GLOBALS *pCG,
61 inp_ATOM *at,
62 inp_ATOM *at_fixed_bonds_out,
63 int num_atoms,
64 struct tagInchiTime *ulTimeOutTime,
65 T_GROUP_INFO *t_group_info,
66 INCHI_MODE *inpbTautFlags,
67 INCHI_MODE *inpbTautFlagsDone,
68 int nebend, int *ebend );
69
70int MarkTautomerGroups( struct tagCANON_GLOBALS *pCG, inp_ATOM *at,
71 int num_atoms,
72 T_GROUP_INFO *t_group_info,
73 C_GROUP_INFO *c_group_info,
74 struct BalancedNetworkStructure *pBNS,
75 struct BalancedNetworkData *pBD );
76
77int MarkChargeGroups( struct tagCANON_GLOBALS *pCG,
78 inp_ATOM *at,
79 int num_atoms,
80 C_GROUP_INFO *c_group_info,
81 T_GROUP_INFO *t_group_info,
82 struct BalancedNetworkStructure *pBNS,
83 struct BalancedNetworkData *pBD );
85 inp_ATOM *at,
86 int num_atoms,
87 S_GROUP_INFO *s_group_info,
88 T_GROUP_INFO *t_group_info,
89 C_GROUP_INFO *c_group_info,
90 struct BalancedNetworkStructure *pBNS,
91 struct BalancedNetworkData *pBD );
93 inp_ATOM *at,
94 int num_atoms,
95 S_GROUP_INFO *s_group_info,
96 T_GROUP_INFO *t_group_info,
97 C_GROUP_INFO *c_group_info,
98 struct BalancedNetworkStructure *pBNS,
99 struct BalancedNetworkData *pBD );
101 inp_ATOM *at, int num_atoms,
102 S_GROUP_INFO *s_group_info,
103 T_GROUP_INFO *t_group_info,
104 C_GROUP_INFO *c_group_info,
105 struct BalancedNetworkStructure *pBNS );
107 int num_atoms,
108 S_GROUP_INFO *s_group_info,
109 T_GROUP_INFO *t_group_info );
110
111int remove_terminal_HDT( int num_atoms,
112 inp_ATOM *at,
113 int bFixTermHChrg );
114int RemoveExcessiveImplicitH( int num_atoms,
115 int num_removed_H,
116 inp_ATOM *at );
117int add_DT_to_num_H( int num_atoms,
118 inp_ATOM *at );
120 int num_atoms,
121 int start );
122int free_t_group_info( T_GROUP_INFO *t_group_info );
124 T_GROUP_INFO *t_group_info_orig );
125int set_tautomer_iso_sort_keys( T_GROUP_INFO *t_group_info );
127 int num_atoms,
128 T_GROUP_INFO *t_group_info );
130 int num_atoms,
131 T_GROUP_INFO *t_group_info );
133 T_GROUP_INFO *t_group_info,
134 int num_atoms,
135 int num_at_tg,
136 AT_RANK *nRank );
137int FillIsotopicAtLinearCT( int num_atoms,
138 sp_ATOM* at,
139 const AT_RANK *nAtomNumber,
140 AT_ISOTOPIC *LinearCTIsotopic,
141 int nMaxLenLinearCTIsotopic,
142 int *pnLenLinearCTIsotopic );
143int FillTautLinearCT2( struct tagCANON_GLOBALS *pCG,
144 int num_atoms,
145 int num_at_tg,
146 int bIsoTaut,
147 const AT_RANK *nRank,
148 const AT_RANK *nAtomNumber,
149 const AT_RANK *nSymmRank,
150 const AT_RANK *nRankIso,
151 const AT_RANK *nAtomNumberIso,
152 const AT_RANK *nSymmRankIso,
153 AT_TAUTOMER *LinearCTTautomer,
154 int nMaxLenLinearCTTautomer,
155 int *pnLenLinearCTTautomer,
156 AT_ISO_TGROUP *LinearCTIsotopicTautomer,
157 int nMaxLenLinearCTIsotopicTautomer,
158 int *pnLenLinearCTIsotopicTautomer,
159 T_GROUP_INFO *t_group_info );
160
161
162#ifndef COMPILE_ALL_CPP
163#ifdef __cplusplus
164}
165#endif
166#endif
167
168
169
170#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:858
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:780
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:3953
int free_t_group_info(T_GROUP_INFO *t_group_info)
Definition ichitaut.c:6336
int remove_terminal_HDT(int num_atoms, inp_ATOM *at, int bFixTermHChrg)
Definition strutil.c:3716
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:3483
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:4336
int MakeIsotopicHGroup(inp_ATOM *at, int num_atoms, S_GROUP_INFO *s_group_info, T_GROUP_INFO *t_group_info)
Definition ichitaut.c:4156
int MarkRingSystemsInp(inp_ATOM *at, int num_atoms, int start)
Definition ichinorm.c:59
int set_tautomer_iso_sort_keys(T_GROUP_INFO *t_group_info)
Definition ichitaut.c:6464
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:7006
int make_a_copy_of_t_group_info(T_GROUP_INFO *t_group_info, T_GROUP_INFO *t_group_info_orig)
Definition ichitaut.c:6364
int add_DT_to_num_H(int num_atoms, inp_ATOM *at)
Definition strutil.c:3698
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:5235
int CountTautomerGroups(sp_ATOM *at, int num_atoms, T_GROUP_INFO *t_group_info)
Definition ichitaut.c:6506
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:2397
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:2961
unsigned short AT_RANK
Definition ichisize.h:46
unsigned long INCHI_MODE
Definition ichisize.h:60
AT_NUMB AT_TAUTOMER
Definition ichitaut.h:109
Definition ichi_bns.h:286
Definition ichi_bns.h:233
Definition extr_ct.h:110
Definition ichicant.h:338
Definition ichitaut.h:303
Definition ichitime.h:85
Definition ichitime.h:69
Definition inpdef.h:110
Definition extr_ct.h:90
Definition ichitaut.h:121
Definition ichitaut.h:321
Definition ichitaut.h:222