SlideShare uma empresa Scribd logo
1 de 6
Baixar para ler offline
Making portable applications with
RDKIT
• Chemistry application or chemistry library
– Written in C++ and using RDKit
– Self-contained in a single file on your computer
– Will work on all versions of Windows from XP
onwards
• Why? Super-portable!
– No deployment problems – will just work
Noel O’Boyle
NameRXN
C:NameRxnRelease> namerxn.exe C:ReactionsFromPatents.rsmi
US20010000038A1 : 10.1.1 Bromination [Halogenation]
US20010000038A1 : 10.1.1 Bromination [Halogenation]
US20010000038A1 : 0.0 Unrecognized [Unassigned]
US20010000038A1 : 9.7.27 Chloro to hydroxy [Other functional group
interconversion]
US20010000038A1 : 1.7.0 Ethyl esterification [O-substitution]
• Commandline application that names reactions
Compile with MSVC++
• Depends on MSVC++ dlls which may not be
present on the user’s machine
– Would have to bundle somehow with the application
• Solution: Use the MinGW compiler
– GCC, Open source
C:NameRxnRelease> C:Cygwinbincygcheck.exe ./namerxn.exe
C:NameRxnReleasenamerxn.exe
...
...
...
C:Windowssystem32MSVCP110.dll
C:Windowssystem32MSVCR110.dll
• Use Cygwin’s Cygcheck to look at dependencies
MINGW anD rdkit applications
• Need to build everything from the bottom-up
with MinGW
– Boost
– RDKit
– Any other dependencies (e.g. zlib, cairo)
• Finally build your own application
– Statically link any dependencies
Compile with MINGW
• Same problem as with MSVC++, but this time
there is a solution
– Use special compile and link flags:
“-static-libgcc” “-static-libstdc++” and “-s”
• Removes the dependency on MinGW dlls
• Use Cygwin’s Cygcheck to look at dependencies
C:NameRxnRelease> C:Cygwinbincygcheck.exe ./namerxn.exe
C:NameRxnnamerxn.exe
...
...
...
C:MinGWbinlibgcc_s_dw2-1.dll
C:MinGWbinlibstdc++-6.dll
End result
• Portable namerxn.exe
• Also portable SWIG bindings
– Python, .NET, Java (“-Wl,--kill-at”)
• Python modules: one .py file, one .pyd
• Java library: one jar file, one dll
• .NET: one .NET dll, one C++ dll
– Used to create NameRxn Plugin for Accelrys Draw

Mais conteúdo relacionado

Destaque

The JESS3 guide to Facebook Emoticons
The JESS3 guide to Facebook EmoticonsThe JESS3 guide to Facebook Emoticons
The JESS3 guide to Facebook Emoticons
JESS3
 
Pathfinders to Information: Administering Reference Service in School Libraries
Pathfinders to Information:  Administering Reference Service in School LibrariesPathfinders to Information:  Administering Reference Service in School Libraries
Pathfinders to Information: Administering Reference Service in School Libraries
Johan Koren
 
Content: Optimizing the Events Channel
Content: Optimizing the Events ChannelContent: Optimizing the Events Channel
Content: Optimizing the Events Channel
Kapost
 

Destaque (16)

mfj
mfjmfj
mfj
 
Huevos rellenos de bonito del norte y remolacha
Huevos rellenos de bonito del norte y remolachaHuevos rellenos de bonito del norte y remolacha
Huevos rellenos de bonito del norte y remolacha
 
The JESS3 guide to Facebook Emoticons
The JESS3 guide to Facebook EmoticonsThe JESS3 guide to Facebook Emoticons
The JESS3 guide to Facebook Emoticons
 
Sdc13 feb13 class12
Sdc13 feb13 class12Sdc13 feb13 class12
Sdc13 feb13 class12
 
Tapit NFC Worldwide Handset Forecasts 2014
Tapit NFC Worldwide Handset Forecasts 2014 Tapit NFC Worldwide Handset Forecasts 2014
Tapit NFC Worldwide Handset Forecasts 2014
 
Open data spotlight: Badges for open science
Open data spotlight: Badges for open scienceOpen data spotlight: Badges for open science
Open data spotlight: Badges for open science
 
Ws 601 jump start your share point governance _ then take it home
Ws 601 jump start your share point governance _ then take it homeWs 601 jump start your share point governance _ then take it home
Ws 601 jump start your share point governance _ then take it home
 
Catalunya Music Dante
Catalunya Music DanteCatalunya Music Dante
Catalunya Music Dante
 
Funciones racionales
Funciones racionalesFunciones racionales
Funciones racionales
 
Mobile Wars
Mobile WarsMobile Wars
Mobile Wars
 
Driving a data-centric culture
Driving a data-centric cultureDriving a data-centric culture
Driving a data-centric culture
 
Pathfinders to Information: Administering Reference Service in School Libraries
Pathfinders to Information:  Administering Reference Service in School LibrariesPathfinders to Information:  Administering Reference Service in School Libraries
Pathfinders to Information: Administering Reference Service in School Libraries
 
7 WEIRD WAYS YOUR POSTURE MESSES WITH YOU
7 WEIRD WAYS YOUR POSTURE MESSES WITH YOU7 WEIRD WAYS YOUR POSTURE MESSES WITH YOU
7 WEIRD WAYS YOUR POSTURE MESSES WITH YOU
 
New Economy Summit 2014
New Economy Summit 2014New Economy Summit 2014
New Economy Summit 2014
 
Content: Optimizing the Events Channel
Content: Optimizing the Events ChannelContent: Optimizing the Events Channel
Content: Optimizing the Events Channel
 
Bingo fada 2011
Bingo fada 2011Bingo fada 2011
Bingo fada 2011
 

Semelhante a Making portable applications with RDKit

LECTURE 1 - Introduction to Programming.pptx
LECTURE 1 - Introduction to Programming.pptxLECTURE 1 - Introduction to Programming.pptx
LECTURE 1 - Introduction to Programming.pptx
AOmaAli
 
AOUG_11Nov2016_Challenges_with_EBS12_2
AOUG_11Nov2016_Challenges_with_EBS12_2AOUG_11Nov2016_Challenges_with_EBS12_2
AOUG_11Nov2016_Challenges_with_EBS12_2
Sean Braymen
 

Semelhante a Making portable applications with RDKit (20)

01. introduction to-programming
01. introduction to-programming01. introduction to-programming
01. introduction to-programming
 
Integration of Cincom Smalltalk Systems
Integration of Cincom Smalltalk SystemsIntegration of Cincom Smalltalk Systems
Integration of Cincom Smalltalk Systems
 
Accelerate application delivery with docker containers and windows server 2016
Accelerate application delivery with docker containers and windows server 2016Accelerate application delivery with docker containers and windows server 2016
Accelerate application delivery with docker containers and windows server 2016
 
Ch 6: The Wild World of Windows
Ch 6: The Wild World of WindowsCh 6: The Wild World of Windows
Ch 6: The Wild World of Windows
 
Docker in Production: How RightScale Delivers Cloud Applications
Docker in Production: How RightScale Delivers Cloud ApplicationsDocker in Production: How RightScale Delivers Cloud Applications
Docker in Production: How RightScale Delivers Cloud Applications
 
CNIT 127 Ch 6: The Wild World of Windows
CNIT 127 Ch 6: The Wild World of WindowsCNIT 127 Ch 6: The Wild World of Windows
CNIT 127 Ch 6: The Wild World of Windows
 
Pass4sure 70-410 Study Guide
Pass4sure 70-410 Study GuidePass4sure 70-410 Study Guide
Pass4sure 70-410 Study Guide
 
Version control for PL/SQL
Version control for PL/SQLVersion control for PL/SQL
Version control for PL/SQL
 
Run automated tests in Docker
Run automated tests in DockerRun automated tests in Docker
Run automated tests in Docker
 
Power-Up Your Test Suite with OLE Automation by Joshua Russell
Power-Up Your Test Suite with OLE Automation by Joshua RussellPower-Up Your Test Suite with OLE Automation by Joshua Russell
Power-Up Your Test Suite with OLE Automation by Joshua Russell
 
Flexible delivery options
Flexible delivery options Flexible delivery options
Flexible delivery options
 
LECTURE 1 - Introduction to Programming.pptx
LECTURE 1 - Introduction to Programming.pptxLECTURE 1 - Introduction to Programming.pptx
LECTURE 1 - Introduction to Programming.pptx
 
SDLC Using Docker for Fun and Profit
SDLC Using Docker for Fun and ProfitSDLC Using Docker for Fun and Profit
SDLC Using Docker for Fun and Profit
 
70-414 exam-implementing an advanced server infrastructure
70-414 exam-implementing an advanced server infrastructure70-414 exam-implementing an advanced server infrastructure
70-414 exam-implementing an advanced server infrastructure
 
Linuxing in London: Docker Intro Workshop
Linuxing in London: Docker Intro WorkshopLinuxing in London: Docker Intro Workshop
Linuxing in London: Docker Intro Workshop
 
Twelve-Factor App: Software Application Architecture
Twelve-Factor App: Software Application ArchitectureTwelve-Factor App: Software Application Architecture
Twelve-Factor App: Software Application Architecture
 
CI/CD Pipeline with Docker
CI/CD Pipeline with DockerCI/CD Pipeline with Docker
CI/CD Pipeline with Docker
 
Developer South Coast 2018: Modernizing .NET Apps with Docker
Developer South Coast 2018: Modernizing .NET Apps with DockerDeveloper South Coast 2018: Modernizing .NET Apps with Docker
Developer South Coast 2018: Modernizing .NET Apps with Docker
 
AOUG_11Nov2016_Challenges_with_EBS12_2
AOUG_11Nov2016_Challenges_with_EBS12_2AOUG_11Nov2016_Challenges_with_EBS12_2
AOUG_11Nov2016_Challenges_with_EBS12_2
 
Microsoft 70-416 it certifications
Microsoft  70-416  it certificationsMicrosoft  70-416  it certifications
Microsoft 70-416 it certifications
 

Mais de NextMove Software

CINF 170: Regioselectivity: An application of expert systems and ontologies t...
CINF 170: Regioselectivity: An application of expert systems and ontologies t...CINF 170: Regioselectivity: An application of expert systems and ontologies t...
CINF 170: Regioselectivity: An application of expert systems and ontologies t...
NextMove Software
 

Mais de NextMove Software (20)

DeepSMILES
DeepSMILESDeepSMILES
DeepSMILES
 
CINF 170: Regioselectivity: An application of expert systems and ontologies t...
CINF 170: Regioselectivity: An application of expert systems and ontologies t...CINF 170: Regioselectivity: An application of expert systems and ontologies t...
CINF 170: Regioselectivity: An application of expert systems and ontologies t...
 
Building a bridge between human-readable and machine-readable representations...
Building a bridge between human-readable and machine-readable representations...Building a bridge between human-readable and machine-readable representations...
Building a bridge between human-readable and machine-readable representations...
 
CINF 35: Structure searching for patent information: The need for speed
CINF 35: Structure searching for patent information: The need for speedCINF 35: Structure searching for patent information: The need for speed
CINF 35: Structure searching for patent information: The need for speed
 
A de facto standard or a free-for-all? A benchmark for reading SMILES
A de facto standard or a free-for-all? A benchmark for reading SMILESA de facto standard or a free-for-all? A benchmark for reading SMILES
A de facto standard or a free-for-all? A benchmark for reading SMILES
 
Recent Advances in Chemical & Biological Search Systems: Evolution vs Revolution
Recent Advances in Chemical & Biological Search Systems: Evolution vs RevolutionRecent Advances in Chemical & Biological Search Systems: Evolution vs Revolution
Recent Advances in Chemical & Biological Search Systems: Evolution vs Revolution
 
Can we agree on the structure represented by a SMILES string? A benchmark dat...
Can we agree on the structure represented by a SMILES string? A benchmark dat...Can we agree on the structure represented by a SMILES string? A benchmark dat...
Can we agree on the structure represented by a SMILES string? A benchmark dat...
 
Comparing Cahn-Ingold-Prelog Rule Implementations
Comparing Cahn-Ingold-Prelog Rule ImplementationsComparing Cahn-Ingold-Prelog Rule Implementations
Comparing Cahn-Ingold-Prelog Rule Implementations
 
Eugene Garfield: the father of chemical text mining and artificial intelligen...
Eugene Garfield: the father of chemical text mining and artificial intelligen...Eugene Garfield: the father of chemical text mining and artificial intelligen...
Eugene Garfield: the father of chemical text mining and artificial intelligen...
 
Chemical similarity using multi-terabyte graph databases: 68 billion nodes an...
Chemical similarity using multi-terabyte graph databases: 68 billion nodes an...Chemical similarity using multi-terabyte graph databases: 68 billion nodes an...
Chemical similarity using multi-terabyte graph databases: 68 billion nodes an...
 
Recent improvements to the RDKit
Recent improvements to the RDKitRecent improvements to the RDKit
Recent improvements to the RDKit
 
Pharmaceutical industry best practices in lessons learned: ELN implementation...
Pharmaceutical industry best practices in lessons learned: ELN implementation...Pharmaceutical industry best practices in lessons learned: ELN implementation...
Pharmaceutical industry best practices in lessons learned: ELN implementation...
 
Digital Chemical Representations
Digital Chemical RepresentationsDigital Chemical Representations
Digital Chemical Representations
 
Challenges and successes in machine interpretation of Markush descriptions
Challenges and successes in machine interpretation of Markush descriptionsChallenges and successes in machine interpretation of Markush descriptions
Challenges and successes in machine interpretation of Markush descriptions
 
PubChem as a Biologics Database
PubChem as a Biologics DatabasePubChem as a Biologics Database
PubChem as a Biologics Database
 
CINF 17: Comparing Cahn-Ingold-Prelog Rule Implementations: The need for an o...
CINF 17: Comparing Cahn-Ingold-Prelog Rule Implementations: The need for an o...CINF 17: Comparing Cahn-Ingold-Prelog Rule Implementations: The need for an o...
CINF 17: Comparing Cahn-Ingold-Prelog Rule Implementations: The need for an o...
 
CINF 13: Pistachio - Search and Faceting of Large Reaction Databases
CINF 13: Pistachio - Search and Faceting of Large Reaction DatabasesCINF 13: Pistachio - Search and Faceting of Large Reaction Databases
CINF 13: Pistachio - Search and Faceting of Large Reaction Databases
 
Building on Sand: Standard InChIs on non-standard molfiles
Building on Sand: Standard InChIs on non-standard molfilesBuilding on Sand: Standard InChIs on non-standard molfiles
Building on Sand: Standard InChIs on non-standard molfiles
 
Chemical Structure Representation of Inorganic Salts and Mixtures of Gases: A...
Chemical Structure Representation of Inorganic Salts and Mixtures of Gases: A...Chemical Structure Representation of Inorganic Salts and Mixtures of Gases: A...
Chemical Structure Representation of Inorganic Salts and Mixtures of Gases: A...
 
Advanced grammars for state-of-the-art named entity recognition (NER)
Advanced grammars for state-of-the-art named entity recognition (NER)Advanced grammars for state-of-the-art named entity recognition (NER)
Advanced grammars for state-of-the-art named entity recognition (NER)
 

Último

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 

Último (20)

Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 

Making portable applications with RDKit

  • 1. Making portable applications with RDKIT • Chemistry application or chemistry library – Written in C++ and using RDKit – Self-contained in a single file on your computer – Will work on all versions of Windows from XP onwards • Why? Super-portable! – No deployment problems – will just work Noel O’Boyle
  • 2. NameRXN C:NameRxnRelease> namerxn.exe C:ReactionsFromPatents.rsmi US20010000038A1 : 10.1.1 Bromination [Halogenation] US20010000038A1 : 10.1.1 Bromination [Halogenation] US20010000038A1 : 0.0 Unrecognized [Unassigned] US20010000038A1 : 9.7.27 Chloro to hydroxy [Other functional group interconversion] US20010000038A1 : 1.7.0 Ethyl esterification [O-substitution] • Commandline application that names reactions
  • 3. Compile with MSVC++ • Depends on MSVC++ dlls which may not be present on the user’s machine – Would have to bundle somehow with the application • Solution: Use the MinGW compiler – GCC, Open source C:NameRxnRelease> C:Cygwinbincygcheck.exe ./namerxn.exe C:NameRxnReleasenamerxn.exe ... ... ... C:Windowssystem32MSVCP110.dll C:Windowssystem32MSVCR110.dll • Use Cygwin’s Cygcheck to look at dependencies
  • 4. MINGW anD rdkit applications • Need to build everything from the bottom-up with MinGW – Boost – RDKit – Any other dependencies (e.g. zlib, cairo) • Finally build your own application – Statically link any dependencies
  • 5. Compile with MINGW • Same problem as with MSVC++, but this time there is a solution – Use special compile and link flags: “-static-libgcc” “-static-libstdc++” and “-s” • Removes the dependency on MinGW dlls • Use Cygwin’s Cygcheck to look at dependencies C:NameRxnRelease> C:Cygwinbincygcheck.exe ./namerxn.exe C:NameRxnnamerxn.exe ... ... ... C:MinGWbinlibgcc_s_dw2-1.dll C:MinGWbinlibstdc++-6.dll
  • 6. End result • Portable namerxn.exe • Also portable SWIG bindings – Python, .NET, Java (“-Wl,--kill-at”) • Python modules: one .py file, one .pyd • Java library: one jar file, one dll • .NET: one .NET dll, one C++ dll – Used to create NameRxn Plugin for Accelrys Draw