Class JniInchiWrapper
JNI Wrapper for International Chemical Identifier (InChI) C++ library.
This class is not intended to be used directly, but should be accessed through subclasses that read data formats and load them into the InChI data structures.
Subclasses should load data through the addAtom, addBond and addParity methods. Once the molecule is fully loaded then the generateInchi method should be called. Ideally this should all take place within the subclass's constructor. The public get methods will all return null until this has happened.
See inchi_api.h.
-
Field Summary
FieldsModifier and TypeFieldDescription(package private) static final String
Switch character for passing options.private static final String
private static JniInchiWrapper
private static final boolean
Flag indicating windows or linux.private static boolean
Records whether native library has been loaded by system.private static final Lock
private static final int
Maximum time to wait for a lock (in seconds).private static final String
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic INCHI_STATUS
checkInchi
(String inchi, boolean strict) Checks if the string represents valid InChI/standard InChI.private int
CheckINCHI
(String inchi, boolean strict) static INCHI_KEY_STATUS
checkInchiKey
(String key) Checks whether a string represents valid InChIKey.private int
CheckINCHIKey
(String key) private static void
Checks the expected native code version has been loaded.protected static String
checkOptions
(String ops) Checks and canonicalises options.protected static String
checkOptions
(List<INCHI_OPTION> ops) Checks and canonicalises options.static JniInchiOutput
getInchi
(JniInchiInput input) Generates the InChI for a chemical structure.private JniInchiOutput
GetINCHI
(JniInchiInput input) static JniInchiOutput
Converts an InChI into an InChI for validation purposes (the same as the -InChI2InChI option).private JniInchiOutput
GetINCHIfromINCHI
(String inchi, String options) private JniInchiInputData
GetINCHIInputFromAuxInfo
(String auxInfo, boolean bDoNotAddH, boolean bDiffUnkUndfStereo) static JniInchiOutputKey
getInchiKey
(String inchi) Calculates the InChIKey for an InChI string.private JniInchiOutputKey
GetINCHIKeyFromINCHI
(String inchi) static JniInchiInputData
getInputFromAuxInfo
(String auxInfo) private static void
getLock()
static JniInchiOutput
getStdInchi
(JniInchiInput input) Calculates the Standard InChI string for a chemical structure.private JniInchiOutput
GetStdINCHI
(JniInchiInput input) private JniInchiOutputKey
GetStdINCHIKeyFromStdINCHI
(String inchi) private JniInchiOutputStructure
GetStructFromINCHI
(String inchi, String options) static JniInchiOutputStructure
Generated 0D structure from an InChI string.private static JniInchiWrapper
private static void
init()
protected static String
static void
Loads native library.
-
Field Details
-
ID
- See Also:
-
VERSION
- See Also:
-
MAX_LOCK_TIMEOUT
private static final int MAX_LOCK_TIMEOUTMaximum time to wait for a lock (in seconds).- See Also:
-
IS_WINDOWS
private static final boolean IS_WINDOWSFlag indicating windows or linux. -
flagChar
Switch character for passing options. / in windows, - on other systems. -
libraryLoaded
private static boolean libraryLoadedRecords whether native library has been loaded by system. -
inchiWrapper
-
lock
-
-
Constructor Details
-
JniInchiWrapper
Constructor- Throws:
LoadNativeLibraryException
-
-
Method Details
-
loadLibrary
Loads native library.- Throws:
JniInchiException
- Library failed to loadLoadNativeLibraryException
-
checkNativeCodeVersion
private static void checkNativeCodeVersion()Checks the expected native code version has been loaded.- Throws:
UnsatisfiedLinkError
-
getWrapper
- Throws:
LoadNativeLibraryException
-
checkOptions
Checks and canonicalises options.- Parameters:
ops
- List of INCHI_OPTION- Throws:
JniInchiException
-
checkOptions
Checks and canonicalises options.- Parameters:
ops
- Space delimited string of options to pass to InChI library. Each option may optionally be preceded by a command line switch (/ or -).- Throws:
JniInchiException
-
getInchi
Generates the InChI for a chemical structure.
If no InChI creation/stereo modification options are specified then a standard InChI is produced, otherwise the generated InChI will be a non-standard one.
Valid options:
Structure perception (compatible with stdInChI): /NEWPSOFF /DoNotAddH /SNon Stereo interpretation (lead to generation of non-standard InChI) /SRel /SRac /SUCF /ChiralFlagON /ChiralFlagOFF InChI creation options (lead to generation of non-standard InChI) /SUU /SLUUD /FixedH /RecMet /KET /15T
Other options:
/AuxNone Omit auxiliary information (default: Include) /Wnumber Set time-out per structure in seconds; W0 means unlimited In InChI library the default value is unlimited /OutputSDF Output SDfile instead of InChI /WarnOnEmptyStructure Warn and produce empty InChI for empty structure /SaveOpt Save custom InChI creation options (non-standard InChI)
- Parameters:
input
-- Returns:
- Throws:
JniInchiException
-
getStdInchi
Calculates the Standard InChI string for a chemical structure.
The only valid structure perception options are NEWPSOFF/DoNotAddH/SNon. In any other structural perception options are specified then the calculation will fail.
- Parameters:
input
-- Returns:
- Throws:
JniInchiException
-
getInchiFromInchi
Converts an InChI into an InChI for validation purposes (the same as the -InChI2InChI option).
This method may also be used to filter out specific layers. For instance, /Snon would remove the stereochemical layer; Omitting /FixedH and/or /RecMet would remove Fixed-H or Reconnected layers. In order to keep all InChI layers use options string "/FixedH /RecMet"; option /InChI2InChI is not needed.
- Parameters:
input
-- Returns:
- Throws:
JniInchiException
-
getStructureFromInchi
public static JniInchiOutputStructure getStructureFromInchi(JniInchiInputInchi input) throws JniInchiException Generated 0D structure from an InChI string.- Parameters:
input
-- Returns:
- Throws:
JniInchiException
-
getInchiKey
Calculates the InChIKey for an InChI string.- Parameters:
inchi
- source InChI string- Returns:
- InChIKey output
- Throws:
JniInchiException
-
checkInchiKey
Checks whether a string represents valid InChIKey.- Parameters:
key
-- Returns:
- Throws:
JniInchiException
-
checkInchi
Checks if the string represents valid InChI/standard InChI.
- Parameters:
inchi
- source InChIstrict
- iffalse
, just briefly check for proper layout (prefix, version, etc.) The result may not be strict. Iftrue
, try to perform InChI2InChI conversion and returns success if a resulting InChI string exactly match source. The result may be 'false alarm' due to imperfectness of- Throws:
JniInchiException
-
getInputFromAuxInfo
- Throws:
JniInchiException
-
getLock
- Throws:
JniInchiException
-
LibInchiGetVersion
-
init
private static void init() -
GetINCHI
-
GetStdINCHI
-
GetINCHIfromINCHI
-
GetStructFromINCHI
-
GetINCHIKeyFromINCHI
-
GetStdINCHIKeyFromStdINCHI
-
CheckINCHIKey
-
CheckINCHI
-
GetINCHIInputFromAuxInfo
private JniInchiInputData GetINCHIInputFromAuxInfo(String auxInfo, boolean bDoNotAddH, boolean bDiffUnkUndfStereo)
-