Skip to content

Heinzeen/InChI

 
 

Repository files navigation

Official home of the InChI

Version 1.07.1 (09/08/2024)

Using precompiled binaries

64-bit and 32-bit precompiled binaries (executable, .dll/.so and ELF files) are located in the following folders:

Microsoft® Windows
Files (given in compressed .zip format) Location(s) Compiler
inchi-1.exe 64-bit: INCHI-1-BIN/windows/64bit Microsoft® Visual Studio C++ (MSVC)
32-bit: INCHI-1-BIN/windows/32bit MinGW-w64/GCC
libinchi.dll
+ corresponding inchi_main.exe
64-bit: INCHI-1-BIN/windows/64bit/dll Microsoft® Visual Studio C++ (MSVC)
32-bit: INCHI-1-BIN/windows/32bit/dll MinGW-w64/GCC

UNIX-based OSs (except MacOS®)
Files (given in compressed .gz format) Location(s) Compiler
inchi-1 (ELF file) 64-bit: INCHI-1-BIN/linux/64bit/
32-bit: INCHI-1-BIN/linux/32bit/
GCC
libinchi.so.1.07
+ corresponding inchi_main (ELF file)
64-bit: INCHI-1-BIN/linux/64bit/so/
32-bit: INCHI-1-BIN/linux/32bit/so/
GCC

Precompiled binaries for MacOS® (i.e. .app executables and .dylib libraries) will be provided very soon. Until then, please note that InChI can now be compiled from source on MacOS® using native/default Clang or GCC (if installed).

Compiling InChI v.1.07 from source

Microsoft® Windows: Solution/project files for Microsoft® Visual C++ (MSVC)/Clang/LLVM and Intel® oneAPI DPC++/C++ Compiler are provided for both command line and API versions of InChI v.1.07. The solution/project files are located in the following folders:

  • INCHI-1-SRC/INCHI_EXE/inchi-1/vc14 (command line version)
  • INCHI-1-SRC/INCHI_API/demos/inchi_main/vc14 (API version consisting of libinchi.dll and its corresponding executable inchi_main.exe)
  • INCHI-1-SRC/INCHI_API/libinchi/vc14 (API version consisting only of libinchi.dll).

UNIX-based OSs/MacOS®/Microsoft® Windows: For GCC and Clang/LLVM compilers, InChI v.1.07 can be compiled from the source using Make software. makefile/makefile32 files are provided in the following folders:

  • INCHI-1-SRC/INCHI_EXE/inchi-1/gcc (command line version)
  • INCHI-1-SRC/INCHI_API/demos/inchi_main/gcc (API version consisting of libinchi.dll/libinchi.so.1.07/libinchi.dylib.1.07 and its corresponding executable/ELF inchi_main.exe/inchi_main)
  • INCHI-1-SRC/INCHI_API/libinchi/gcc (API version consisting only of libinchi.dll/libinchi.so.1.07/libinchi.dylib.1.07).

makefile/makefile32 files are configured to detect OSs automatically, so it is no longer needed to specify OS explicitly or run batch/bash script(s) before compiling. GCC and Clang/LLVM compilers are also automatically detected by makefile/makefile32 files, with GCC set as default compiler. If both GCC and Clang/LLVM compilers are installed, setting Clang/LLVM as default compiler can be done simply by changing CCN parameter from value 1 to 2 in makefile/makefile32.

Support for native/default MacOS® Clang compiler is now provided with 64-bit versions of makefile files (we would like to thank John Mayfield for his assistance with this matter).

If makefile/makefile32 is used for compiling libinchi on Microsoft® Windows, libinchi.dll is now generated instead of libinchi.so.1.07.

Additional notes:

Known issues

If API version (i.e. libinchi.so.1.07 and inchi_main ELF file) is compiled using Clang/LLVM on Linux OS, and libinchi.so.1.07 cannot be found by inchi_main, LD_LIBRARY_PATH should be set either temporarily or permanently before inchi_main ELF file is used. It might be worth trying to change the value of LINKER_CWD_PATH to -Wl,-R,"",-rpath,$(LIB_DIR) (i.e. replacing = with ,) in corresponding makefile/makefile32; however, please note that during our tests, this option failed to generate libinchi.so.1.07 with Clang/LLVM on Linux. More reliably, LD_LIBRARY_PATH can be set in several ways:

  • Temporarily:

    • by running a shell script ldlp_fix.sh (located in /INCHI_API/bin/Linux) with either of these two commands:

      • . ldlp_fix.sh

      • source ldlp_fix.sh;

        path to libinchi.so.1.07 can be edited in ldlp_fix.sh

    • using command line interface:

      export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/libinchi.so.1.07
      
  • Permanently:

    • by adding the following line in ~/.bashrc:

       ```
       LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/path/to/libinchi.so.1.07"
       ```
      
    • by adding the libinchi.so.1.07 path to ld.so.conf, which means adding a file /etc/ld.so.conf.d/local.conf containing just one line:

       ```
       path/to/libinchi.so.1.07
       ```
      
       and then running `sudo ldconfig`.
      
    • Open-source utility patchelf can also be of use.

If a similar issue occurs on MacOS®, one of the above solutions should be applied for setting DYLD_LIBRARY_PATH and/or DYLD_FALLBACK_LIBRARY_PATH (which behave like LD_LIBRARY_PATH).

Optional features

Experimental features under development

Some of the experimental/engineering/hidden options featured in InChI 1.07 which are known to be not fully functional are:

  • In command line version:

    • 32-bit Microsoft® Visual Studio C++ (MSVC) Win32 compiler-specific issue with the following options:

      • AMI Allow multiple input files (wildcards supported)
      • AMIOutStd Write output to stdout (in AMI mode)
      • AMILogStd Write log to stderr (in AMI mode)
      • AMIPrbNone Suppress creation of problem files (in AMI mode)
  • In API/.dll/.so version:
    • PT_22_00 Account for PT_22_00 tautomerism (experimental)
    • PT_16_00 Account for PT_16_00 tautomerism (experimental)
    • PT_06_00 Account for PT_06_00 tautomerism (experimental)
    • PT_39_00 Account for PT_39_00 tautomerism (experimental)
    • PT_13_00 Account for PT_13_00 tautomerism (experimental)
    • PT_18_00 Account for PT_18_00 tautomerism (experimental)
    • Polymers105 Allow processing of polymers (experimental, legacy mode of v. 1.05)
    • NoEdits Disable polymer CRU frame shift and folding
    • NPZz Allow non-polymer-related Zz atoms (pseudo element placeholders)
    • SAtZz Allow stereo at atoms connected to Zz(default: disabled)
    • InChI2Struct Test mode: Mol/SDfile -> InChI -> Structure -> (InChI+AuxInfo) -- produces Fatal Error (2)3 just like in InChI v.1.06
    • InChI2InChI Convert Convert InChI string(s) into InChI string(s) -- produces Fatal Error(2)3 just like in InChI v.1.06

Please refrain from using the above mentioned options as they might not function properly, or will not be recognised. Regular updates with regard to their functionality will be posted on this page.

About

Main InChI repository

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • C 96.6%
  • HTML 1.8%
  • Python 1.0%
  • Makefile 0.4%
  • C++ 0.2%
  • Shell 0.0%