SlideShare a Scribd company logo
1 of 18
Download to read offline
Integrating InChI and RInChI
Native Libraries into Java
Applications
István Őri
We are your scientific partner to build a
sustainable future through innovating
best-in-class software solutions for
chemistry and biology.
About ChemAxon
About me
Name: István Őri
Job title: Technical Lead
Company: ChemAxon
Team: Representation & IO
WHY DID WE INTEGRATE?
Why?
Basically, because InChI and InChIKey are working.
They are useful identifiers which can represent chemical
structures in a canonical form, in a compact,
machine-friendly way.
HOW DID WE DO IT?
Access InChI software from Java
● Option A:
Expect the user to install and configure the InChI library and use it in a
process from Java
● Option B:
Wrap the native libraries within the Java application and access it via JNI or
JNA as an API
Option A
Pros:
● No extra trick required, can be used as a command line tool.
Cons:
● It is inconvenient for the user
● Handling of different versions of the InChI software is required
● The API offers more than the command line interface.
Option B
Pros:
● The API offers more than the command line interface.
● It is more convenient for the user
● Full control over the version of the library
Cons:
● It is inconvenient for the developer
● It is quite easy to work with C libraries in Java, but in case of C++ libraries it
can be difficult to manage complex data structures
Option B - Inconveniences
● Memory management in C/C++ and Java is very different
● It is relatively easy to manage structs and primitive variables, but the
management of class instances is on a whole other level
Option B - Weapon of choice
● JNI or JNA?
Option B - Solutions
● Memory management in C/C++ and Java is very different
Get used to it!
● It is relatively easy to manage structs and primitive variables, but the
management of class instances is on a whole other level
Use the subset of the API where structs and primitive variables are enough.
DTOs for Java API JNA Structs for C API InChI v1.05
Toolkits and services
Data transformations in Option B (InChI)
Data transformations in Option B (RInChI)
DTOs for Java API JNA String from C++ API
RInChI v1.00
Toolkits and services
RXN Export JNA String for C++ API
Fallback to InChI workflow
The result
Issues
● No Mac support
● No agents for RInChI export
FUTURE PLANS
Plans
● We would like to integrate InChI v1.06 instead of v1.05
● Make our Java library opensource
István Őri
iori@chemaxon.com

More Related Content

What's hot

Calling The Notes C Api From Lotus Script
Calling The Notes C Api From Lotus ScriptCalling The Notes C Api From Lotus Script
Calling The Notes C Api From Lotus Script
dominion
 
Lecture 11
Lecture 11Lecture 11
Lecture 11
Abbas Ajmal
 

What's hot (7)

Presentation1
Presentation1Presentation1
Presentation1
 
Java vs. Kotlin: Which is the Better Option for Android App Development
Java vs. Kotlin: Which is the Better Option for Android App DevelopmentJava vs. Kotlin: Which is the Better Option for Android App Development
Java vs. Kotlin: Which is the Better Option for Android App Development
 
C Language
C LanguageC Language
C Language
 
Calling The Notes C Api From Lotus Script
Calling The Notes C Api From Lotus ScriptCalling The Notes C Api From Lotus Script
Calling The Notes C Api From Lotus Script
 
6 Week C++ Language Training In Ambala
6 Week C++ Language Training In Ambala6 Week C++ Language Training In Ambala
6 Week C++ Language Training In Ambala
 
Object oriented slides
Object oriented slidesObject oriented slides
Object oriented slides
 
Lecture 11
Lecture 11Lecture 11
Lecture 11
 

Similar to Integrating InChI and RInChI Native Libraries into Java Applications

Similar to Integrating InChI and RInChI Native Libraries into Java Applications (20)

Managing modular software for your nu get, c++ and java development
Managing modular software for your nu get, c++ and java developmentManaging modular software for your nu get, c++ and java development
Managing modular software for your nu get, c++ and java development
 
Introduction to java
Introduction to java Introduction to java
Introduction to java
 
Java Fundamentals in Mule
Java Fundamentals in MuleJava Fundamentals in Mule
Java Fundamentals in Mule
 
C# programming language
C# programming languageC# programming language
C# programming language
 
Session 01 - Introduction to Java
Session 01 - Introduction to JavaSession 01 - Introduction to Java
Session 01 - Introduction to Java
 
C vs JAVA.pptx
C vs JAVA.pptxC vs JAVA.pptx
C vs JAVA.pptx
 
Introduction to java
Introduction to javaIntroduction to java
Introduction to java
 
C++ vs java which is best for future
C++ vs java which is best for futureC++ vs java which is best for future
C++ vs java which is best for future
 
Introduction to Java
Introduction to Java Introduction to Java
Introduction to Java
 
Introduction to Java Part-2
Introduction to Java Part-2Introduction to Java Part-2
Introduction to Java Part-2
 
Unit 1 of c++ part 1 basic introduction
Unit 1 of c++ part 1 basic introductionUnit 1 of c++ part 1 basic introduction
Unit 1 of c++ part 1 basic introduction
 
How Bankwest delivers business value through modern RESTful APIs with Java in...
How Bankwest delivers business value through modern RESTful APIs with Java in...How Bankwest delivers business value through modern RESTful APIs with Java in...
How Bankwest delivers business value through modern RESTful APIs with Java in...
 
Shuzworld Analysis
Shuzworld AnalysisShuzworld Analysis
Shuzworld Analysis
 
00 intro to java
00 intro to java00 intro to java
00 intro to java
 
Exploring the World of Java Native Interface 1.pdf
Exploring the World of Java Native Interface 1.pdfExploring the World of Java Native Interface 1.pdf
Exploring the World of Java Native Interface 1.pdf
 
21UCAC61 C# and .Net Programming.pdf(MTNC)(BCA)
21UCAC61 C# and .Net Programming.pdf(MTNC)(BCA)21UCAC61 C# and .Net Programming.pdf(MTNC)(BCA)
21UCAC61 C# and .Net Programming.pdf(MTNC)(BCA)
 
Arquillian 소개
Arquillian 소개Arquillian 소개
Arquillian 소개
 
테스트 어디까지 해봤니? Arquillian을 이용한 Real Object 테스트
테스트 어디까지 해봤니? Arquillian을 이용한 Real Object 테스트테스트 어디까지 해봤니? Arquillian을 이용한 Real Object 테스트
테스트 어디까지 해봤니? Arquillian을 이용한 Real Object 테스트
 
Features of Java.pptx
Features of Java.pptxFeatures of Java.pptx
Features of Java.pptx
 
Introduction to java
Introduction to javaIntroduction to java
Introduction to java
 

More from Eszter Szabó

Computational tools for drug discovery
Computational tools for drug discoveryComputational tools for drug discovery
Computational tools for drug discovery
Eszter Szabó
 

More from Eszter Szabó (7)

Compound design and progression tracking with CROs
Compound design and progression tracking with CROsCompound design and progression tracking with CROs
Compound design and progression tracking with CROs
 
Compound design and progression tracking with CROs
Compound design and progression tracking with CROsCompound design and progression tracking with CROs
Compound design and progression tracking with CROs
 
New way of writing chemistry patents english
New way of writing chemistry patents englishNew way of writing chemistry patents english
New way of writing chemistry patents english
 
The new way of writing chemistry patents
The new way of writing chemistry patentsThe new way of writing chemistry patents
The new way of writing chemistry patents
 
How to find leads and analogs in Enamine REAL using a highly scalable search ...
How to find leads and analogs in Enamine REAL using a highly scalable search ...How to find leads and analogs in Enamine REAL using a highly scalable search ...
How to find leads and analogs in Enamine REAL using a highly scalable search ...
 
Automation of building reliable models
Automation of building reliable modelsAutomation of building reliable models
Automation of building reliable models
 
Computational tools for drug discovery
Computational tools for drug discoveryComputational tools for drug discovery
Computational tools for drug discovery
 

Recently uploaded

Digital Dentistry.Digital Dentistryvv.pptx
Digital Dentistry.Digital Dentistryvv.pptxDigital Dentistry.Digital Dentistryvv.pptx
Digital Dentistry.Digital Dentistryvv.pptx
MohamedFarag457087
 
Module for Grade 9 for Asynchronous/Distance learning
Module for Grade 9 for Asynchronous/Distance learningModule for Grade 9 for Asynchronous/Distance learning
Module for Grade 9 for Asynchronous/Distance learning
levieagacer
 
Human genetics..........................pptx
Human genetics..........................pptxHuman genetics..........................pptx
Human genetics..........................pptx
Silpa
 
Biogenic Sulfur Gases as Biosignatures on Temperate Sub-Neptune Waterworlds
Biogenic Sulfur Gases as Biosignatures on Temperate Sub-Neptune WaterworldsBiogenic Sulfur Gases as Biosignatures on Temperate Sub-Neptune Waterworlds
Biogenic Sulfur Gases as Biosignatures on Temperate Sub-Neptune Waterworlds
Sérgio Sacani
 
development of diagnostic enzyme assay to detect leuser virus
development of diagnostic enzyme assay to detect leuser virusdevelopment of diagnostic enzyme assay to detect leuser virus
development of diagnostic enzyme assay to detect leuser virus
NazaninKarimi6
 
Asymmetry in the atmosphere of the ultra-hot Jupiter WASP-76 b
Asymmetry in the atmosphere of the ultra-hot Jupiter WASP-76 bAsymmetry in the atmosphere of the ultra-hot Jupiter WASP-76 b
Asymmetry in the atmosphere of the ultra-hot Jupiter WASP-76 b
Sérgio Sacani
 

Recently uploaded (20)

Locating and isolating a gene, FISH, GISH, Chromosome walking and jumping, te...
Locating and isolating a gene, FISH, GISH, Chromosome walking and jumping, te...Locating and isolating a gene, FISH, GISH, Chromosome walking and jumping, te...
Locating and isolating a gene, FISH, GISH, Chromosome walking and jumping, te...
 
FAIRSpectra - Enabling the FAIRification of Analytical Science
FAIRSpectra - Enabling the FAIRification of Analytical ScienceFAIRSpectra - Enabling the FAIRification of Analytical Science
FAIRSpectra - Enabling the FAIRification of Analytical Science
 
Selaginella: features, morphology ,anatomy and reproduction.
Selaginella: features, morphology ,anatomy and reproduction.Selaginella: features, morphology ,anatomy and reproduction.
Selaginella: features, morphology ,anatomy and reproduction.
 
An introduction on sequence tagged site mapping
An introduction on sequence tagged site mappingAn introduction on sequence tagged site mapping
An introduction on sequence tagged site mapping
 
Zoology 5th semester notes( Sumit_yadav).pdf
Zoology 5th semester notes( Sumit_yadav).pdfZoology 5th semester notes( Sumit_yadav).pdf
Zoology 5th semester notes( Sumit_yadav).pdf
 
Digital Dentistry.Digital Dentistryvv.pptx
Digital Dentistry.Digital Dentistryvv.pptxDigital Dentistry.Digital Dentistryvv.pptx
Digital Dentistry.Digital Dentistryvv.pptx
 
Module for Grade 9 for Asynchronous/Distance learning
Module for Grade 9 for Asynchronous/Distance learningModule for Grade 9 for Asynchronous/Distance learning
Module for Grade 9 for Asynchronous/Distance learning
 
Human genetics..........................pptx
Human genetics..........................pptxHuman genetics..........................pptx
Human genetics..........................pptx
 
Grade 7 - Lesson 1 - Microscope and Its Functions
Grade 7 - Lesson 1 - Microscope and Its FunctionsGrade 7 - Lesson 1 - Microscope and Its Functions
Grade 7 - Lesson 1 - Microscope and Its Functions
 
Use of mutants in understanding seedling development.pptx
Use of mutants in understanding seedling development.pptxUse of mutants in understanding seedling development.pptx
Use of mutants in understanding seedling development.pptx
 
GBSN - Microbiology (Unit 3)
GBSN - Microbiology (Unit 3)GBSN - Microbiology (Unit 3)
GBSN - Microbiology (Unit 3)
 
Velocity and Acceleration PowerPoint.ppt
Velocity and Acceleration PowerPoint.pptVelocity and Acceleration PowerPoint.ppt
Velocity and Acceleration PowerPoint.ppt
 
Biogenic Sulfur Gases as Biosignatures on Temperate Sub-Neptune Waterworlds
Biogenic Sulfur Gases as Biosignatures on Temperate Sub-Neptune WaterworldsBiogenic Sulfur Gases as Biosignatures on Temperate Sub-Neptune Waterworlds
Biogenic Sulfur Gases as Biosignatures on Temperate Sub-Neptune Waterworlds
 
Chemistry 5th semester paper 1st Notes.pdf
Chemistry 5th semester paper 1st Notes.pdfChemistry 5th semester paper 1st Notes.pdf
Chemistry 5th semester paper 1st Notes.pdf
 
Factory Acceptance Test( FAT).pptx .
Factory Acceptance Test( FAT).pptx       .Factory Acceptance Test( FAT).pptx       .
Factory Acceptance Test( FAT).pptx .
 
Thyroid Physiology_Dr.E. Muralinath_ Associate Professor
Thyroid Physiology_Dr.E. Muralinath_ Associate ProfessorThyroid Physiology_Dr.E. Muralinath_ Associate Professor
Thyroid Physiology_Dr.E. Muralinath_ Associate Professor
 
Clean In Place(CIP).pptx .
Clean In Place(CIP).pptx                 .Clean In Place(CIP).pptx                 .
Clean In Place(CIP).pptx .
 
development of diagnostic enzyme assay to detect leuser virus
development of diagnostic enzyme assay to detect leuser virusdevelopment of diagnostic enzyme assay to detect leuser virus
development of diagnostic enzyme assay to detect leuser virus
 
module for grade 9 for distance learning
module for grade 9 for distance learningmodule for grade 9 for distance learning
module for grade 9 for distance learning
 
Asymmetry in the atmosphere of the ultra-hot Jupiter WASP-76 b
Asymmetry in the atmosphere of the ultra-hot Jupiter WASP-76 bAsymmetry in the atmosphere of the ultra-hot Jupiter WASP-76 b
Asymmetry in the atmosphere of the ultra-hot Jupiter WASP-76 b
 

Integrating InChI and RInChI Native Libraries into Java Applications

  • 1. Integrating InChI and RInChI Native Libraries into Java Applications István Őri
  • 2. We are your scientific partner to build a sustainable future through innovating best-in-class software solutions for chemistry and biology. About ChemAxon
  • 3. About me Name: István Őri Job title: Technical Lead Company: ChemAxon Team: Representation & IO
  • 4. WHY DID WE INTEGRATE?
  • 5. Why? Basically, because InChI and InChIKey are working. They are useful identifiers which can represent chemical structures in a canonical form, in a compact, machine-friendly way.
  • 6. HOW DID WE DO IT?
  • 7. Access InChI software from Java ● Option A: Expect the user to install and configure the InChI library and use it in a process from Java ● Option B: Wrap the native libraries within the Java application and access it via JNI or JNA as an API
  • 8. Option A Pros: ● No extra trick required, can be used as a command line tool. Cons: ● It is inconvenient for the user ● Handling of different versions of the InChI software is required ● The API offers more than the command line interface.
  • 9. Option B Pros: ● The API offers more than the command line interface. ● It is more convenient for the user ● Full control over the version of the library Cons: ● It is inconvenient for the developer ● It is quite easy to work with C libraries in Java, but in case of C++ libraries it can be difficult to manage complex data structures
  • 10. Option B - Inconveniences ● Memory management in C/C++ and Java is very different ● It is relatively easy to manage structs and primitive variables, but the management of class instances is on a whole other level Option B - Weapon of choice ● JNI or JNA?
  • 11. Option B - Solutions ● Memory management in C/C++ and Java is very different Get used to it! ● It is relatively easy to manage structs and primitive variables, but the management of class instances is on a whole other level Use the subset of the API where structs and primitive variables are enough.
  • 12. DTOs for Java API JNA Structs for C API InChI v1.05 Toolkits and services Data transformations in Option B (InChI)
  • 13. Data transformations in Option B (RInChI) DTOs for Java API JNA String from C++ API RInChI v1.00 Toolkits and services RXN Export JNA String for C++ API Fallback to InChI workflow
  • 15. Issues ● No Mac support ● No agents for RInChI export
  • 17. Plans ● We would like to integrate InChI v1.06 instead of v1.05 ● Make our Java library opensource