InChI
 
Loading...
Searching...
No Matches
ichinorm.c File Reference
#include <stdlib.h>
#include <string.h>
#include "mode.h"
#include "ichinorm.h"
#include "ichierr.h"
#include "bcf_s.h"
+ Include dependency graph for ichinorm.c:

Data Structures

struct  tagAtPair
 
struct  tagDerivAttachment
 
struct  tagRing2Chain
 

Macros

#define DERIV_BRIDGE_O   0x0001 /* R1-O-R2 => R1-OH + HO-R2 */
 
#define DERIV_BRIDGE_NH   0x0002 /* R1-NH-R2 amine */
 
#define DERIV_AMINE_tN   0x0004 /* R1-N(-R2)-R3 tertiary amine */
 
#define DERIV_RING_O_OUTSIDE_PRECURSOR   0x0008 /* -O- in a ring */
 
#define DERIV_RING_NH_OUTSIDE_PRECURSOR   0x0010 /* -NH- in a ring */
 
#define DERIV_X_OXIME   0x0020 /* comment out to disable */
 
#define DERIV_UNMARK   0x0040 /* unmark the cut */
 
#define DERIV_DUPLIC   0x0080 /* duplicated disconnection */
 
#define DERIV_RO_COX   0x0100 /* alcohol derivatives: R-O--C(=O)C[n]F[2n+1] 0<n<4, R-O--C(=O)CH3, R-O--C(=O)-Phenyl */
 
#define DERIV_RING_DMOX_DEOX_N   0x0200 /* =N- in a ring: /-O--CH2-\ DMOX, DEOX */
 
#define DERIV_RING_DMOX_DEOX_O   0x0400 /* -O- in a ring: R-C=N--------C<2Me or 2Et */
 
#define DERIV_RING2_PRRLDD_OUTSIDE_PRECUR   0x0800 /* alcohol derivatives: R(=O)-N<C4H4 5-memb ring Pyrrolidides; replace -N< with -OH */
 
#define DERIV_RING2_PPRDN_OUTSIDE_PRECUR   0x1000 /* alcohol derivatives: R(=O)-N<C5H5 6-memb ring Piperidines; replace -N< with -OH */
 
#define DERIV_DANSYL   0x2000 /* alcohol derivatives: R-O--SO2-C10H5-N(CH3)2 => R-OH */
 
#define DERIV_RING_DMOX_DEOX   (DERIV_RING_DMOX_DEOX_O | DERIV_RING_DMOX_DEOX_N)
 
#define DERIV_RING_OUTSIDE_PRECURSOR   (DERIV_RING_O_OUTSIDE_PRECURSOR | DERIV_RING_NH_OUTSIDE_PRECURSOR)
 
#define DERIV_RING2_OUTSIDE_PRECUR   (DERIV_RING2_PRRLDD_OUTSIDE_PRECUR | DERIV_RING2_PPRDN_OUTSIDE_PRECUR)
 
#define DERIV_AT_LEN   4
 
#define DERIV_NOT   0x1000 /* cannot be a derivatization agent atom */
 
#define MAX_AT_DERIV   13 /* max. num of heavy atoms in removed derivatizing agent: RO-C(O)PheF5 */
 
#define NOT_AT_DERIV   99 /* DERIV_AT::num; rejected as > MAX_AT_DERIV */
 
#define MIN_AT_LEFT_DERIV   2 /* was 3 before 2013-11-12; min num heavy atoms in derivative precursor = MIN_AT_LEFT_DERIV-1 */
 
#define NO_ORD_VAL   0x0037 /* not used */
 
#define CFLAG_MARK_BRANCH   1 /* for main derivative traversal */
 
#define CFLAG_MARK_BLOCK   2 /* for block detection */
 
#define CFLAG_MARK_BLOCK_INV   ((char)~(CFLAG_MARK_BLOCK)) /* for block detection */
 
#define COUNT_ALL_NOT_DERIV   1 /* 1=> count ALL atoms that are not in deriv. agents */
 
#define IS_DA_NUM_LE(DA, I, MX)   (((DA)->typ[I] && ((DA)->typ[I] & DERIV_UNEXPADABLE) == (DA)->typ[I]) || (DA)->num[I] <= (MX))
 
#define OX_RING_SIZE   5
 
#define PRRLDD_RING_SIZE   5
 
#define PPRDN_RING_SIZE   6
 
#define MIN_PRRLDD_PPRDN_RING_SIZE   PRRLDD_RING_SIZE
 
#define MAX_PRRLDD_PPRDN_RING_SIZE   PPRDN_RING_SIZE
 
#define DERIV_RING   DERIV_RING_OUTSIDE_PRECURSOR
 
#define UNDERIV_MAX_NUM   512 /*max. number of records in szUnderivList */
 
#define UNDERIV_LEN   128
 
#define UNDERIV_LEN2   128
 
#define ALLOC_AP
 
#define UNDERIV_LIST_LEN   2048
 
#define UNDERIV_LIST_LEN2   2048
 
#define R2C_EMPTY   127
 

Typedefs

typedef struct tagAtPair R2C_ATPAIR
 
typedef struct tagDerivAttachment DERIV_AT
 
typedef enum tagDerivId DerivId
 
typedef enum tagDerivBit DerivBit
 
typedef int BIT_UNDERIV
 
typedef struct tagRing2Chain R2C_AT
 

Enumerations

enum  tagDerivId {
  DERIV_ID_Acentonate , DERIV_ID_Benzlidene , DERIV_ID_BenzOX , DERIV_ID_BuBorate ,
  DERIV_ID_Dansyl , DERIV_ID_DEOX , DERIV_ID_DMOX , DERIV_ID_EtBorate ,
  DERIV_ID_EtOX , DERIV_ID_HFB , DERIV_ID_MeBorate , DERIV_ID_MOX ,
  DERIV_ID_PFB , DERIV_ID_PFP , DERIV_ID_Piperidine , DERIV_ID_Pyrrolidide ,
  DERIV_ID_TBDMS , DERIV_ID_TFA , DERIV_ID_TMS , DERIV_ID_Unknown ,
  DERIV_ID_Acetate , DERIV_ID_Benzoate
}
 
enum  tagDerivBit {
  DERIV_BIT_Acentonate = 1 << DERIV_ID_Acentonate , DERIV_BIT_Benzlidene = 1 << DERIV_ID_Benzlidene , DERIV_BIT_BenzOX = 1 << DERIV_ID_BenzOX , DERIV_BIT_BuBorate = 1 << DERIV_ID_BuBorate ,
  DERIV_BIT_Dansyl = 1 << DERIV_ID_Dansyl , DERIV_BIT_DEOX = 1 << DERIV_ID_DEOX , DERIV_BIT_DMOX = 1 << DERIV_ID_DMOX , DERIV_BIT_EtBorate = 1 << DERIV_ID_EtBorate ,
  DERIV_BIT_EtOX = 1 << DERIV_ID_EtOX , DERIV_BIT_HFB = 1 << DERIV_ID_HFB , DERIV_BIT_MeBorate = 1 << DERIV_ID_MeBorate , DERIV_BIT_MOX = 1 << DERIV_ID_MOX ,
  DERIV_BIT_PFB = 1 << DERIV_ID_PFB , DERIV_BIT_PFP = 1 << DERIV_ID_PFP , DERIV_BIT_Piperidine = 1 << DERIV_ID_Piperidine , DERIV_BIT_Pyrrolidide = 1 << DERIV_ID_Pyrrolidide ,
  DERIV_BIT_TBDMS = 1 << DERIV_ID_TBDMS , DERIV_BIT_TFA = 1 << DERIV_ID_TFA , DERIV_BIT_TMS = 1 << DERIV_ID_TMS , DERIV_BIT_Unknown = 1 << DERIV_ID_Unknown ,
  DERIV_BIT_Acetate = 1 << DERIV_ID_Acetate , DERIV_BIT_Benzoate = 1 << DERIV_ID_Benzoate , DERIV_ID_NUMBER
}
 

Functions

int MarkRingSystemsInp (inp_ATOM *at, int num_atoms, int start)
 
int mark_arom_bonds (struct tagINCHI_CLOCK *ic, struct tagCANON_GLOBALS *pCG, inp_ATOM *at, int num_atoms)
 
void set_R2C_el_numbers (void)
 
int subtract_DT_from_num_H (int num_atoms, inp_ATOM *at)
 
int add_inp_ATOM (inp_ATOM *at, int len_at, int len_cur, inp_ATOM *add, int len_add)
 
int cmp_r2c_atpair (const void *p1, const void *p2)
 
int has_atom_pair (R2C_ATPAIR *ap, int num_ap, AT_NUMB at1, AT_NUMB at2)
 
int mark_atoms_ap (inp_ATOM *at, AT_NUMB start, R2C_ATPAIR *ap, int num_ap, int num, AT_NUMB cFlags)
 
int UnMarkDisconnectedComponents (ORIG_ATOM_DATA *orig_inp_data)
 
int UnMarkOtherIndicators (inp_ATOM *at, int num_atoms)
 
int UnMarkOneComponent (inp_ATOM *at, int num_atoms)
 
int DisconnectInpAtBond (inp_ATOM *at, AT_NUMB *nOldCompNumber, int iat, int neigh_ord)
 
int ExtractConnectedComponent (inp_ATOM *at, int num_at, int component_number, inp_ATOM *component_at)
 
int UnMarkRingSystemsInp (inp_ATOM *at, int num_atoms)
 
int has_atom_pair_seq (R2C_ATPAIR *ap, int num_ap, AT_NUMB at1, AT_NUMB at2)
 
int mark_atoms_cFlags (inp_ATOM *at, int start, int num, char cFlags)
 
int unmark_atoms_cFlags (inp_ATOM *at, int start, int num, char cFlags, char cInvFlags)
 
int is_C_or_S_DB_O (inp_ATOM *at, int i)
 
int is_C_DB_O (inp_ATOM *at, int i)
 
int is_C_unsat_not_arom (inp_ATOM *at, int i)
 
int is_Aryl (inp_ATOM *at, int outside_point, int attachment_pont)
 
int is_Saturated_C (inp_ATOM *at, int attachment_pont)
 
int is_C_Alk (inp_ATOM *at, int i, char cFlags)
 
int is_Phenyl (inp_ATOM *at, int outside_point, int attachment_point)
 
int is_PentaFluoroPhenyl (inp_ATOM *at, int outside_point, int attachment_point)
 
int is_Methyl (inp_ATOM *at, int attachment_point)
 
int is_Ethyl (inp_ATOM *at, int outside_point, int attachment_point)
 
int is_Methyl_or_Etyl (inp_ATOM *at, int outside_point, int attachment_point)
 
int is_Si_IV (inp_ATOM *at, int i)
 
int is_P_TB_N (inp_ATOM *at, int i)
 
int is_DERIV_RING2_PRRLDD_PPRDN (inp_ATOM *at, int cur_atom, int from_ord, DERIV_AT *da, DERIV_AT *da1)
 
int check_arom_chain (inp_ATOM *at, int first, int first_from, int last, int len)
 
int is_Dansyl (inp_ATOM *at, int cur_atom, int from_ord, DERIV_AT *da, DERIV_AT *da1)
 
int is_possibly_deriv_neigh (inp_ATOM *at, int iat, int iord, int type, char cFlags)
 
int get_traversed_deriv_type (inp_ATOM *at, DERIV_AT *da, int k, DERIV_AT *da1, char cFlags)
 
int add_to_da (DERIV_AT *da, DERIV_AT *add)
 
int mark_atoms_deriv (inp_ATOM *at, DERIV_AT *da, int start, int num, char cFlags, int *pbFound)
 
int count_one_bond_atoms (inp_ATOM *at, DERIV_AT *da, int start, int ord, char cFlags, int *bFound)
 
int is_silyl (inp_ATOM *at, int start, int ord_prev)
 
int is_silyl2 (inp_ATOM *at, int start, int from_at)
 
int is_Me_or_Et (inp_ATOM *at, int start, int ord_prev)
 
int is_nButyl (inp_ATOM *at, int start, int ord_prev)
 
int is_CF3_or_linC3F7a (inp_ATOM *at, int start, int iat_prev)
 
int is_CF3_or_linC3F7 (inp_ATOM *at, int start, int ord_prev)
 
int is_phenyl (inp_ATOM *at, int start, int ord_prev)
 
int is_DERIV_RING_O_or_NH_OUTSIDE_PRECURSOR (inp_ATOM *at, int start, int num_atoms, DERIV_AT *da1, int idrv, char *szUnderiv, int lenUnderiv, char *szUnderiv2, int lenUnderiv2, BIT_UNDERIV *bitUnderiv)
 
int is_deriv_chain (inp_ATOM *at, int start, int num_atoms, DERIV_AT *da1, int idrv, char *szUnderiv, int lenUnderiv, char *szUnderiv2, int lenUnderiv2, BIT_UNDERIV *bitUnderiv)
 
int is_deriv_chain2 (inp_ATOM *at, int start, int type, int num, int ord, int idrv, char *szUnderiv, int lenUnderiv, char *szUnderiv2, int lenUnderiv2, BIT_UNDERIV *bitUnderiv)
 
int is_deriv_chain_or_ring (inp_ATOM *at, int start, int num_atoms, DERIV_AT *da1, int *idrv)
 
int remove_deriv (DERIV_AT *da1, int idrv)
 
int remove_deriv_mark (DERIV_AT *da1, int idrv)
 
int underiv_compare (const void *p1, const void *p2)
 
int underiv_list_add_two_cuts (char *szUnderivList, int lenUnderivList, char *szUnderiv, const char cDelim)
 
int sort_merge_underiv (char *pSdfValue, int bOutputSdf, char *szUnderivList, char cDerivSeparator, const char *pszUnderivPrefix, const char *pszUnderivPostfix)
 
int eliminate_deriv_not_in_list (inp_ATOM *at, DERIV_AT *da, int num_atoms, char *szUnderivList, int lenUnderivList, char *szUnderivList2, int lenUnderivList2, BIT_UNDERIV *bitUnderivList)
 
void underiv_buf_clear (char *szUnderiv)
 
int underiv_list_add (char *szUnderivList, int lenUnderivList, const char *szUnderiv, char cDelimiter)
 
const char * underiv_list_get_last (const char *szUnderivList, char cDelimiter)
 
int make_single_cut (inp_ATOM *at, DERIV_AT *da, int iat, int icut)
 
int fill_out_bond_cuts (inp_ATOM *at, DERIV_AT *da, int num_atoms, R2C_ATPAIR *ap, int num_cuts_to_check)
 
int mark_deriv_agents (inp_ATOM *at, DERIV_AT *da, int num_atoms, R2C_ATPAIR *ap, int num_cuts_to_check, AT_NUMB *pnum_comp, int *pcur_num_at)
 
int replace_arom_bonds (inp_ATOM *at, int num_atoms, inp_ATOM *at2, int num_atoms2)
 
int add_explicit_H (INP_ATOM_DATA *inp_cur_data)
 
void free_underiv_temp_data (R2C_ATPAIR *ap, DERIV_AT *da, inp_ATOM *at2, INP_ATOM_DATA *inp_cur_data, int num_components)
 
void remove_cut_derivs (int num_atoms, inp_ATOM *at, INP_ATOM_DATA *inp_cur_data, int i_component, int *errcode)
 
int get_CO_opposite (inp_ATOM *at, int iat, int iord, int *iat_opposite, int *iord_opposite)
 
int is_DERIV_RING_DMOX_DEOX_O (inp_ATOM *at, int cur_atom, int from_ord, DERIV_AT *da, DERIV_AT *da1)
 
int is_DERIV_RING_DMOX_DEOX_N (inp_ATOM *at, int cur_atom, int from_ord, DERIV_AT *da, DERIV_AT *da1)
 
int OAD_Edit_Underivatize (struct tagINCHI_CLOCK *ic, struct tagCANON_GLOBALS *pCG, ORIG_ATOM_DATA *orig_inp_data, int bOutputSdf, int bOutputReport, char *pSdfValue)
 
int detect_r2c_Zatom (inp_ATOM *at, R2C_AT *da, int iZ)
 
int cut_ring_to_chain (inp_ATOM *at, R2C_AT *da, int iZ)
 
int Ring2Chain (struct tagINCHI_CLOCK *ic, struct tagCANON_GLOBALS *pCG, ORIG_ATOM_DATA *orig_inp_data)
 
void OAD_Edit_MergeComponentsAndRecreateOAD (ORIG_ATOM_DATA *orig_OrigAtomData, INP_ATOM_DATA *curr_InpAtomData, int num_components, int *errcode)
 

Variables

static const int DERIV_UNEXPADABLE
 
static const int DERIV_REPL_N_WITH_O
 
static const int DERIV_REPL_N_WITH_OH
 
const char * pszDerivName []
 

Macro Definition Documentation

◆ ALLOC_AP

#define ALLOC_AP
Value:
if ( 0 < num_cuts_to_check && (lenAllocated_ap < num_cuts_to_check || !ap) ) {\
if ( ap )\
inchi_free( ap );\
ap = (R2C_ATPAIR *) inchi_malloc( num_cuts_to_check * sizeof(ap[0]) );\
if ( !ap ) {\
ret = -1;\
goto exit_function; /* malloc failure */\
}\
lenAllocated_ap = num_cuts_to_check;\
}
#define inchi_malloc
Definition mode.h:1153
Definition ichinorm.c:617

◆ CFLAG_MARK_BLOCK

#define CFLAG_MARK_BLOCK   2 /* for block detection */

◆ CFLAG_MARK_BLOCK_INV

#define CFLAG_MARK_BLOCK_INV   ((char)~(CFLAG_MARK_BLOCK)) /* for block detection */

◆ CFLAG_MARK_BRANCH

#define CFLAG_MARK_BRANCH   1 /* for main derivative traversal */

◆ COUNT_ALL_NOT_DERIV

#define COUNT_ALL_NOT_DERIV   1 /* 1=> count ALL atoms that are not in deriv. agents */

◆ DERIV_AMINE_tN

#define DERIV_AMINE_tN   0x0004 /* R1-N(-R2)-R3 tertiary amine */

◆ DERIV_AT_LEN

#define DERIV_AT_LEN   4

◆ DERIV_BRIDGE_NH

#define DERIV_BRIDGE_NH   0x0002 /* R1-NH-R2 amine */

◆ DERIV_BRIDGE_O

#define DERIV_BRIDGE_O   0x0001 /* R1-O-R2 => R1-OH + HO-R2 */

◆ DERIV_DANSYL

#define DERIV_DANSYL   0x2000 /* alcohol derivatives: R-O--SO2-C10H5-N(CH3)2 => R-OH */

◆ DERIV_DUPLIC

#define DERIV_DUPLIC   0x0080 /* duplicated disconnection */

◆ DERIV_NOT

#define DERIV_NOT   0x1000 /* cannot be a derivatization agent atom */

◆ DERIV_RING

#define DERIV_RING   DERIV_RING_OUTSIDE_PRECURSOR

◆ DERIV_RING2_OUTSIDE_PRECUR

#define DERIV_RING2_OUTSIDE_PRECUR   (DERIV_RING2_PRRLDD_OUTSIDE_PRECUR | DERIV_RING2_PPRDN_OUTSIDE_PRECUR)

◆ DERIV_RING2_PPRDN_OUTSIDE_PRECUR

#define DERIV_RING2_PPRDN_OUTSIDE_PRECUR   0x1000 /* alcohol derivatives: R(=O)-N<C5H5 6-memb ring Piperidines; replace -N< with -OH */

◆ DERIV_RING2_PRRLDD_OUTSIDE_PRECUR

#define DERIV_RING2_PRRLDD_OUTSIDE_PRECUR   0x0800 /* alcohol derivatives: R(=O)-N<C4H4 5-memb ring Pyrrolidides; replace -N< with -OH */

◆ DERIV_RING_DMOX_DEOX

#define DERIV_RING_DMOX_DEOX   (DERIV_RING_DMOX_DEOX_O | DERIV_RING_DMOX_DEOX_N)

◆ DERIV_RING_DMOX_DEOX_N

#define DERIV_RING_DMOX_DEOX_N   0x0200 /* =N- in a ring: /-O--CH2-\ DMOX, DEOX */

◆ DERIV_RING_DMOX_DEOX_O

#define DERIV_RING_DMOX_DEOX_O   0x0400 /* -O- in a ring: R-C=N--------C<2Me or 2Et */

◆ DERIV_RING_NH_OUTSIDE_PRECURSOR

#define DERIV_RING_NH_OUTSIDE_PRECURSOR   0x0010 /* -NH- in a ring */

◆ DERIV_RING_O_OUTSIDE_PRECURSOR

#define DERIV_RING_O_OUTSIDE_PRECURSOR   0x0008 /* -O- in a ring */

◆ DERIV_RING_OUTSIDE_PRECURSOR

#define DERIV_RING_OUTSIDE_PRECURSOR   (DERIV_RING_O_OUTSIDE_PRECURSOR | DERIV_RING_NH_OUTSIDE_PRECURSOR)

◆ DERIV_RO_COX

#define DERIV_RO_COX   0x0100 /* alcohol derivatives: R-O--C(=O)C[n]F[2n+1] 0<n<4, R-O--C(=O)CH3, R-O--C(=O)-Phenyl */

◆ DERIV_UNMARK

#define DERIV_UNMARK   0x0040 /* unmark the cut */

◆ DERIV_X_OXIME

#define DERIV_X_OXIME   0x0020 /* comment out to disable */

◆ IS_DA_NUM_LE

#define IS_DA_NUM_LE (   DA,
  I,
  MX 
)    (((DA)->typ[I] && ((DA)->typ[I] & DERIV_UNEXPADABLE) == (DA)->typ[I]) || (DA)->num[I] <= (MX))

◆ MAX_AT_DERIV

#define MAX_AT_DERIV   13 /* max. num of heavy atoms in removed derivatizing agent: RO-C(O)PheF5 */

◆ MAX_PRRLDD_PPRDN_RING_SIZE

#define MAX_PRRLDD_PPRDN_RING_SIZE   PPRDN_RING_SIZE

◆ MIN_AT_LEFT_DERIV

#define MIN_AT_LEFT_DERIV   2 /* was 3 before 2013-11-12; min num heavy atoms in derivative precursor = MIN_AT_LEFT_DERIV-1 */

◆ MIN_PRRLDD_PPRDN_RING_SIZE

#define MIN_PRRLDD_PPRDN_RING_SIZE   PRRLDD_RING_SIZE

◆ NO_ORD_VAL

#define NO_ORD_VAL   0x0037 /* not used */

◆ NOT_AT_DERIV

#define NOT_AT_DERIV   99 /* DERIV_AT::num; rejected as > MAX_AT_DERIV */

◆ OX_RING_SIZE

#define OX_RING_SIZE   5

◆ PPRDN_RING_SIZE

#define PPRDN_RING_SIZE   6

◆ PRRLDD_RING_SIZE

#define PRRLDD_RING_SIZE   5

◆ R2C_EMPTY

#define R2C_EMPTY   127

◆ UNDERIV_LEN

#define UNDERIV_LEN   128

◆ UNDERIV_LEN2

#define UNDERIV_LEN2   128

◆ UNDERIV_LIST_LEN

#define UNDERIV_LIST_LEN   2048

◆ UNDERIV_LIST_LEN2

#define UNDERIV_LIST_LEN2   2048

◆ UNDERIV_MAX_NUM

#define UNDERIV_MAX_NUM   512 /*max. number of records in szUnderivList */

Typedef Documentation

◆ BIT_UNDERIV

typedef int BIT_UNDERIV

◆ DERIV_AT

typedef struct tagDerivAttachment DERIV_AT

◆ DerivBit

typedef enum tagDerivBit DerivBit

◆ DerivId

typedef enum tagDerivId DerivId

◆ R2C_AT

typedef struct tagRing2Chain R2C_AT

◆ R2C_ATPAIR

typedef struct tagAtPair R2C_ATPAIR

Enumeration Type Documentation

◆ tagDerivBit

Enumerator
DERIV_BIT_Acentonate 
DERIV_BIT_Benzlidene 
DERIV_BIT_BenzOX 
DERIV_BIT_BuBorate 
DERIV_BIT_Dansyl 
DERIV_BIT_DEOX 
DERIV_BIT_DMOX 
DERIV_BIT_EtBorate 
DERIV_BIT_EtOX 
DERIV_BIT_HFB 
DERIV_BIT_MeBorate 
DERIV_BIT_MOX 
DERIV_BIT_PFB 
DERIV_BIT_PFP 
DERIV_BIT_Piperidine 
DERIV_BIT_Pyrrolidide 
DERIV_BIT_TBDMS 
DERIV_BIT_TFA 
DERIV_BIT_TMS 
DERIV_BIT_Unknown 
DERIV_BIT_Acetate 
DERIV_BIT_Benzoate 
DERIV_ID_NUMBER 

◆ tagDerivId

enum tagDerivId
Enumerator
DERIV_ID_Acentonate 
DERIV_ID_Benzlidene 
DERIV_ID_BenzOX 
DERIV_ID_BuBorate 
DERIV_ID_Dansyl 
DERIV_ID_DEOX 
DERIV_ID_DMOX 
DERIV_ID_EtBorate 
DERIV_ID_EtOX 
DERIV_ID_HFB 
DERIV_ID_MeBorate 
DERIV_ID_MOX 
DERIV_ID_PFB 
DERIV_ID_PFP 
DERIV_ID_Piperidine 
DERIV_ID_Pyrrolidide 
DERIV_ID_TBDMS 
DERIV_ID_TFA 
DERIV_ID_TMS 
DERIV_ID_Unknown 
DERIV_ID_Acetate 
DERIV_ID_Benzoate 

Function Documentation

◆ add_explicit_H()

int add_explicit_H ( INP_ATOM_DATA inp_cur_data)
+ Here is the caller graph for this function:

◆ add_inp_ATOM()

int add_inp_ATOM ( inp_ATOM at,
int  len_at,
int  len_cur,
inp_ATOM add,
int  len_add 
)
+ Here is the caller graph for this function:

◆ add_to_da()

int add_to_da ( DERIV_AT da,
DERIV_AT add 
)
+ Here is the caller graph for this function:

◆ check_arom_chain()

int check_arom_chain ( inp_ATOM at,
int  first,
int  first_from,
int  last,
int  len 
)
+ Here is the caller graph for this function:

◆ cmp_r2c_atpair()

int cmp_r2c_atpair ( const void *  p1,
const void *  p2 
)
+ Here is the caller graph for this function:

◆ count_one_bond_atoms()

int count_one_bond_atoms ( inp_ATOM at,
DERIV_AT da,
int  start,
int  ord,
char  cFlags,
int *  bFound 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ cut_ring_to_chain()

int cut_ring_to_chain ( inp_ATOM at,
R2C_AT da,
int  iZ 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ detect_r2c_Zatom()

int detect_r2c_Zatom ( inp_ATOM at,
R2C_AT da,
int  iZ 
)
+ Here is the caller graph for this function:

◆ DisconnectInpAtBond()

int DisconnectInpAtBond ( inp_ATOM at,
AT_NUMB nOldCompNumber,
int  iat,
int  neigh_ord 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ eliminate_deriv_not_in_list()

int eliminate_deriv_not_in_list ( inp_ATOM at,
DERIV_AT da,
int  num_atoms,
char *  szUnderivList,
int  lenUnderivList,
char *  szUnderivList2,
int  lenUnderivList2,
BIT_UNDERIV bitUnderivList 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ExtractConnectedComponent()

int ExtractConnectedComponent ( inp_ATOM at,
int  num_at,
int  component_number,
inp_ATOM component_at 
)
+ Here is the caller graph for this function:

◆ fill_out_bond_cuts()

int fill_out_bond_cuts ( inp_ATOM at,
DERIV_AT da,
int  num_atoms,
R2C_ATPAIR ap,
int  num_cuts_to_check 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ free_underiv_temp_data()

void free_underiv_temp_data ( R2C_ATPAIR ap,
DERIV_AT da,
inp_ATOM at2,
INP_ATOM_DATA inp_cur_data,
int  num_components 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ get_CO_opposite()

int get_CO_opposite ( inp_ATOM at,
int  iat,
int  iord,
int *  iat_opposite,
int *  iord_opposite 
)

◆ get_traversed_deriv_type()

int get_traversed_deriv_type ( inp_ATOM at,
DERIV_AT da,
int  k,
DERIV_AT da1,
char  cFlags 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ has_atom_pair()

int has_atom_pair ( R2C_ATPAIR ap,
int  num_ap,
AT_NUMB  at1,
AT_NUMB  at2 
)
+ Here is the call graph for this function:

◆ has_atom_pair_seq()

int has_atom_pair_seq ( R2C_ATPAIR ap,
int  num_ap,
AT_NUMB  at1,
AT_NUMB  at2 
)
+ Here is the caller graph for this function:

◆ is_Aryl()

int is_Aryl ( inp_ATOM at,
int  outside_point,
int  attachment_pont 
)

◆ is_C_Alk()

int is_C_Alk ( inp_ATOM at,
int  i,
char  cFlags 
)

◆ is_C_DB_O()

int is_C_DB_O ( inp_ATOM at,
int  i 
)
+ Here is the caller graph for this function:

◆ is_C_or_S_DB_O()

int is_C_or_S_DB_O ( inp_ATOM at,
int  i 
)
+ Here is the caller graph for this function:

◆ is_C_unsat_not_arom()

int is_C_unsat_not_arom ( inp_ATOM at,
int  i 
)
+ Here is the caller graph for this function:

◆ is_CF3_or_linC3F7()

int is_CF3_or_linC3F7 ( inp_ATOM at,
int  start,
int  ord_prev 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ is_CF3_or_linC3F7a()

int is_CF3_or_linC3F7a ( inp_ATOM at,
int  start,
int  iat_prev 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ is_Dansyl()

int is_Dansyl ( inp_ATOM at,
int  cur_atom,
int  from_ord,
DERIV_AT da,
DERIV_AT da1 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ is_deriv_chain()

int is_deriv_chain ( inp_ATOM at,
int  start,
int  num_atoms,
DERIV_AT da1,
int  idrv,
char *  szUnderiv,
int  lenUnderiv,
char *  szUnderiv2,
int  lenUnderiv2,
BIT_UNDERIV bitUnderiv 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ is_deriv_chain2()

int is_deriv_chain2 ( inp_ATOM at,
int  start,
int  type,
int  num,
int  ord,
int  idrv,
char *  szUnderiv,
int  lenUnderiv,
char *  szUnderiv2,
int  lenUnderiv2,
BIT_UNDERIV bitUnderiv 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ is_deriv_chain_or_ring()

int is_deriv_chain_or_ring ( inp_ATOM at,
int  start,
int  num_atoms,
DERIV_AT da1,
int *  idrv 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ is_DERIV_RING2_PRRLDD_PPRDN()

int is_DERIV_RING2_PRRLDD_PPRDN ( inp_ATOM at,
int  cur_atom,
int  from_ord,
DERIV_AT da,
DERIV_AT da1 
)
+ Here is the caller graph for this function:

◆ is_DERIV_RING_DMOX_DEOX_N()

int is_DERIV_RING_DMOX_DEOX_N ( inp_ATOM at,
int  cur_atom,
int  from_ord,
DERIV_AT da,
DERIV_AT da1 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ is_DERIV_RING_DMOX_DEOX_O()

int is_DERIV_RING_DMOX_DEOX_O ( inp_ATOM at,
int  cur_atom,
int  from_ord,
DERIV_AT da,
DERIV_AT da1 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ is_DERIV_RING_O_or_NH_OUTSIDE_PRECURSOR()

int is_DERIV_RING_O_or_NH_OUTSIDE_PRECURSOR ( inp_ATOM at,
int  start,
int  num_atoms,
DERIV_AT da1,
int  idrv,
char *  szUnderiv,
int  lenUnderiv,
char *  szUnderiv2,
int  lenUnderiv2,
BIT_UNDERIV bitUnderiv 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ is_Ethyl()

int is_Ethyl ( inp_ATOM at,
int  outside_point,
int  attachment_point 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ is_Me_or_Et()

int is_Me_or_Et ( inp_ATOM at,
int  start,
int  ord_prev 
)
+ Here is the caller graph for this function:

◆ is_Methyl()

int is_Methyl ( inp_ATOM at,
int  attachment_point 
)
+ Here is the caller graph for this function:

◆ is_Methyl_or_Etyl()

int is_Methyl_or_Etyl ( inp_ATOM at,
int  outside_point,
int  attachment_point 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ is_nButyl()

int is_nButyl ( inp_ATOM at,
int  start,
int  ord_prev 
)
+ Here is the caller graph for this function:

◆ is_P_TB_N()

int is_P_TB_N ( inp_ATOM at,
int  i 
)

◆ is_PentaFluoroPhenyl()

int is_PentaFluoroPhenyl ( inp_ATOM at,
int  outside_point,
int  attachment_point 
)
+ Here is the caller graph for this function:

◆ is_Phenyl()

int is_Phenyl ( inp_ATOM at,
int  outside_point,
int  attachment_point 
)
+ Here is the caller graph for this function:

◆ is_phenyl()

int is_phenyl ( inp_ATOM at,
int  start,
int  ord_prev 
)
+ Here is the caller graph for this function:

◆ is_possibly_deriv_neigh()

int is_possibly_deriv_neigh ( inp_ATOM at,
int  iat,
int  iord,
int  type,
char  cFlags 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ is_Saturated_C()

int is_Saturated_C ( inp_ATOM at,
int  attachment_pont 
)

◆ is_Si_IV()

int is_Si_IV ( inp_ATOM at,
int  i 
)
+ Here is the caller graph for this function:

◆ is_silyl()

int is_silyl ( inp_ATOM at,
int  start,
int  ord_prev 
)
+ Here is the caller graph for this function:

◆ is_silyl2()

int is_silyl2 ( inp_ATOM at,
int  start,
int  from_at 
)
+ Here is the caller graph for this function:

◆ make_single_cut()

int make_single_cut ( inp_ATOM at,
DERIV_AT da,
int  iat,
int  icut 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ mark_arom_bonds()

int mark_arom_bonds ( struct tagINCHI_CLOCK ic,
struct tagCANON_GLOBALS pCG,
inp_ATOM at,
int  num_atoms 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ mark_atoms_ap()

int mark_atoms_ap ( inp_ATOM at,
AT_NUMB  start,
R2C_ATPAIR ap,
int  num_ap,
int  num,
AT_NUMB  cFlags 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ mark_atoms_cFlags()

int mark_atoms_cFlags ( inp_ATOM at,
int  start,
int  num,
char  cFlags 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ mark_atoms_deriv()

int mark_atoms_deriv ( inp_ATOM at,
DERIV_AT da,
int  start,
int  num,
char  cFlags,
int *  pbFound 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ mark_deriv_agents()

int mark_deriv_agents ( inp_ATOM at,
DERIV_AT da,
int  num_atoms,
R2C_ATPAIR ap,
int  num_cuts_to_check,
AT_NUMB pnum_comp,
int *  pcur_num_at 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ MarkRingSystemsInp()

int MarkRingSystemsInp ( inp_ATOM at,
int  num_atoms,
int  start 
)
+ Here is the caller graph for this function:

◆ OAD_Edit_MergeComponentsAndRecreateOAD()

void OAD_Edit_MergeComponentsAndRecreateOAD ( ORIG_ATOM_DATA orig_OrigAtomData,
INP_ATOM_DATA curr_InpAtomData,
int  num_components,
int *  errcode 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ OAD_Edit_Underivatize()

int OAD_Edit_Underivatize ( struct tagINCHI_CLOCK ic,
struct tagCANON_GLOBALS pCG,
ORIG_ATOM_DATA orig_inp_data,
int  bOutputSdf,
int  bOutputReport,
char *  pSdfValue 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ remove_cut_derivs()

void remove_cut_derivs ( int  num_atoms,
inp_ATOM at,
INP_ATOM_DATA inp_cur_data,
int  i_component,
int *  errcode 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ remove_deriv()

int remove_deriv ( DERIV_AT da1,
int  idrv 
)
+ Here is the caller graph for this function:

◆ remove_deriv_mark()

int remove_deriv_mark ( DERIV_AT da1,
int  idrv 
)
+ Here is the caller graph for this function:

◆ replace_arom_bonds()

int replace_arom_bonds ( inp_ATOM at,
int  num_atoms,
inp_ATOM at2,
int  num_atoms2 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Ring2Chain()

int Ring2Chain ( struct tagINCHI_CLOCK ic,
struct tagCANON_GLOBALS pCG,
ORIG_ATOM_DATA orig_inp_data 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ set_R2C_el_numbers()

void set_R2C_el_numbers ( void  )

◆ sort_merge_underiv()

int sort_merge_underiv ( char *  pSdfValue,
int  bOutputSdf,
char *  szUnderivList,
char  cDerivSeparator,
const char *  pszUnderivPrefix,
const char *  pszUnderivPostfix 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ subtract_DT_from_num_H()

int subtract_DT_from_num_H ( int  num_atoms,
inp_ATOM at 
)
+ Here is the caller graph for this function:

◆ underiv_buf_clear()

void underiv_buf_clear ( char *  szUnderiv)
+ Here is the caller graph for this function:

◆ underiv_compare()

int underiv_compare ( const void *  p1,
const void *  p2 
)
+ Here is the caller graph for this function:

◆ underiv_list_add()

int underiv_list_add ( char *  szUnderivList,
int  lenUnderivList,
const char *  szUnderiv,
char  cDelimiter 
)
+ Here is the caller graph for this function:

◆ underiv_list_add_two_cuts()

int underiv_list_add_two_cuts ( char *  szUnderivList,
int  lenUnderivList,
char *  szUnderiv,
const char  cDelim 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ underiv_list_get_last()

const char * underiv_list_get_last ( const char *  szUnderivList,
char  cDelimiter 
)
+ Here is the caller graph for this function:

◆ unmark_atoms_cFlags()

int unmark_atoms_cFlags ( inp_ATOM at,
int  start,
int  num,
char  cFlags,
char  cInvFlags 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ UnMarkDisconnectedComponents()

int UnMarkDisconnectedComponents ( ORIG_ATOM_DATA orig_inp_data)
+ Here is the caller graph for this function:

◆ UnMarkOneComponent()

int UnMarkOneComponent ( inp_ATOM at,
int  num_atoms 
)
+ Here is the caller graph for this function:

◆ UnMarkOtherIndicators()

int UnMarkOtherIndicators ( inp_ATOM at,
int  num_atoms 
)
+ Here is the caller graph for this function:

◆ UnMarkRingSystemsInp()

int UnMarkRingSystemsInp ( inp_ATOM at,
int  num_atoms 
)
+ Here is the caller graph for this function:

Variable Documentation

◆ DERIV_REPL_N_WITH_O

const int DERIV_REPL_N_WITH_O
static
Initial value:
= 0
#define DERIV_X_OXIME
Definition ichinorm.c:930
#define DERIV_RING_DMOX_DEOX_N
Definition ichinorm.c:937

◆ DERIV_REPL_N_WITH_OH

const int DERIV_REPL_N_WITH_OH
static
Initial value:
= 0
#define DERIV_RING2_PRRLDD_OUTSIDE_PRECUR
Definition ichinorm.c:941
#define DERIV_RING2_PPRDN_OUTSIDE_PRECUR
Definition ichinorm.c:944

◆ DERIV_UNEXPADABLE

const int DERIV_UNEXPADABLE
static
Initial value:
= 0
#define DERIV_RING_DMOX_DEOX_O
Definition ichinorm.c:938
#define DERIV_DANSYL
Definition ichinorm.c:945

◆ pszDerivName

const char* pszDerivName[]