SlideShare una empresa de Scribd logo
1 de 27
Combining disparate cheminformatics resources into a single toolkit Noel M. O’Boyle and Geoffrey R. Hutchison Mar 2010 239th ACS National Meeting, San Francisco
Toolkits, toolkits and more toolkits Commercial cheminformatics toolkits:
Toolkits, toolkits and more toolkits Open Source cheminformatics toolkits: CDK OpenBabel OASA PerlMol
The importance of being interoperable Good for users Can take advantage of complementary features CDK:Gasteiger π charges, maximal common substructure, shape similarity with ultrafast shape descriptors, mass-spectrometry analysis RDKit:RECAP fragmentation, calculation of R/S, atom pair fingerprints, shape similarity with volume overlap OpenBabel:several forcefields, crystallography, large number of file formats, conformer searching, InChIKey
The importance of being interoperable Good for users Can take advantage of complementary features Can choose between different implementations Faster SMARTS searching, better 2D depiction, more accurate 3D structure generation Avoid vendor lock-in Good for developers Less reinvention of wheel, more time to spend on development of complementary features Avoid balkanisation of field Bigger pool of users
J. Chem. Inf. Model., 2006, 46, 991 http://www.blueobelisk.org
J. Chem. Inf. Model., 2006, 46, 991 http://www.blueobelisk.org
Bringing it all together with Cinfony Different languages Java (CDK), C++ (OpenBabel, RDKit) Use Python, a higher-level language that can bridge to both Different APIs Each toolkit uses different commands to carry out the same tasks Implement a common API Different chemical models Different internal representation of a molecule Use existing method for storage and transfer of chemical information: chemical file formats MDL mol file for 2D and 3D, SMILES for 0D
Cinfony API
One API to rule them all Example - create a Molecule from a SMILES string: mol = Chem.MolFromSmiles(SMILESstring) mol = openbabel.OBMol() obconversion = openbabel.OBConversion() obconversion.SetInFormat("smi") obconversion.ReadString(mol, SMILESstring) OpenBabel CDK builder = cdk.DefaultChemObjectBuilder.getInstance() sp = cdk.smiles.SmilesParser(builder) mol = sp.parseSmiles(SMILESstring) RDKit mol = toolkit.readstring("smi", SMILESstring) wheretoolkit is either obabel, cdk or rdk
Design of Cinfony API API is small (“fits your brain”) Covers core functionality of toolkits Corollary: need to access underlying toolkit for additional functionality Makes it easy to carry out common tasks API is stable Make it easy to find relevant methods Example: add hydrogens to a molecule atommanip = cdk.tools.manipulator.AtomContainerManipulatoratommanip.convertImplicitToExplicitHydrogens(molecule) CDK molecule.addh()
cinfony.toolkit
cinfony.toolkit.Molecule
Examples of use Chemistry Toolkit Rosetta http://ctr.wikia.com Andrew Dalke
Combining toolkits >>> from cinfony import rdk, cdk, obabel>>> obabelmol = obabel.readstring("smi", "CCC")>>> rdkmol = rdk.Molecule(obabelmol)>>> rdkmol.draw(show=False, filename="propane.png")>>> print cdk.Molecule(rdkmol).calcdesc(){'chi0C': 2.7071067811865475, 'BCUT.4': 4.4795252101839402, 'rotatableBondsCount': 2, 'mde.9': 0.0, 'mde.8': 0.0, ... } Import Cinfony Read in a molecule from a SMILES string with OpenBabel Convert it to an RDKit Molecule Create a 2D depiction of the molecule with RDKit Convert it to a CDK Molecule and calculate descriptor values
Comparing toolkits >>> from cinfony import rdk, cdk, obabel>>> for toolkit in [rdk, cdk, obabel]: ...     mol = toolkit.readstring("smi", "CCC") ...     print mol.molwt ...     mol.draw(filename="%s.png" % toolkit.__name__) Import Cinfony For each toolkit... ... Read in a molecule from a SMILES string ... Print its molecular weight ... Create a 2D depiction Useful for sanity checks, identifying limitations, bugs Calculating the molecular weight (http://tinyurl.com/chemacs3) implicit hydrogen, isotopes Comparison of descriptor values (http://tinyurl.com/chemacs2) Should be highly correlated Comparison of depictions (http://tinyurl.com/chemacs1)
Cinfony and the Web
Webel - Chemistry for Web 2.0 Webel is a new Cinfony module that runs entirely using web services CDK webservices by Rajarshi Guha, hosted at Uppsala University NCI/CADD Chemical Identifier Resolver by Markus Sitzmann (uses Cactvs for much of backend) - see CINF147 at 2:20pm in Room 212 Easy to install – no dependencies Can be used in environments where installing a cheminformatics toolkit is not possible Web services may provide additional services not available elsewhere Example: how similar is aspirin to Dr. Scholl’s Wart Remover Kit? >>> from cinfony import webel >>> aspirin = webel.readstring("name", "aspirin")>>> wartremover = webel.readstring("name", ...                     "Dr. Scholl’s Wart Remover Kit")>>> print aspirin.calcfp() | wartremover.calcfp() 0.59375
Webel - Chemistry for Web 2.0 Webel is a new Cinfony module that runs entirely using web services CDK webservices by Rajarshi Guha, hosted at Uppsala University NCI/CADD Chemical Identifier Resolver by Markus Sitzmann (uses Cactvs for much of backend) - see CINF147 at 2:20pm in Room 212 Easy to install – no dependencies Can be used in environments where installing a cheminformatics toolkit is not possible Web services may provide additional services not available elsewhere Example: how similar is aspirin to Dr. Scholl’s Wart Remover Kit? >>> from cinfony import webel >>> aspirin = webel.readstring("name", "aspirin")>>> wartremover = webel.readstring("name", ...                     "Dr. Scholl’s Wart Remover Kit")>>> print aspirin.calcfp() | wartremover.calcfp() 0.59375
Cheminformatics in the browser See http://baoilleach.webfactional.com/site_media/webel/ or just Google “webelsilverlight”
makes it easy to... Start using a new toolkit Carry out common tasks Combine functionality from different toolkits Compare results from different toolkits Do cheminformatics through the web, and on the web
Combining disparate cheminformatics resources into a single toolkit Chem. Cent. J., 2008, 2, 24. http://cinfony.googlecode.com http://baoilleach.blogspot.com Acknowledgements CDK: Egon Willighagen, Rajarshi Guha OpenBabel: Chris Morley, Tim Vandermeersch RDKit: Greg Landrum OASA: Beda Kosata JPype: Steve Ménard Chemical Identifier Resolver: Markus Sitzmann Interactive Tutorial: Michael Foord Image: Tintin44 (Flickr)
Cheminformatics in the browser As Webel is pure Python, it can run places where traditional cheminformatics software cannot... ...such as in a web browser Microsoft have developed a browser plugin called Silverlight for developing applications for the web It includes a Python interpreter (IronPython) So you can use Webel in Silverlight applications Michael Foord has developed an interactive Python tutorial using Silverlight See http://ironpython.net/tutorial/ I have combined this with Webel to develop an interactive Cheminformatics tutorial
Performance

Más contenido relacionado

Similar a Cinfony - Combining disparate cheminformatics resources into a single toolkit

A DevOps guide to Kubernetes
A DevOps guide to KubernetesA DevOps guide to Kubernetes
A DevOps guide to KubernetesPaul Czarkowski
 
JavaLand - Integration Testing How-to
JavaLand - Integration Testing How-toJavaLand - Integration Testing How-to
JavaLand - Integration Testing How-toNicolas Fränkel
 
Workshop - The Little Pattern That Could.pdf
Workshop - The Little Pattern That Could.pdfWorkshop - The Little Pattern That Could.pdf
Workshop - The Little Pattern That Could.pdfTobiasGoeschel
 
Kubernetes for the PHP developer
Kubernetes for the PHP developerKubernetes for the PHP developer
Kubernetes for the PHP developerPaul Czarkowski
 
We continue checking Microsoft projects: analysis of PowerShell
We continue checking Microsoft projects: analysis of PowerShellWe continue checking Microsoft projects: analysis of PowerShell
We continue checking Microsoft projects: analysis of PowerShellPVS-Studio
 
Googleappengineintro 110410190620-phpapp01
Googleappengineintro 110410190620-phpapp01Googleappengineintro 110410190620-phpapp01
Googleappengineintro 110410190620-phpapp01Tony Frame
 
Care and feeding notes
Care and feeding notesCare and feeding notes
Care and feeding notesPerrin Harkins
 
10 reasons to choose CakePHP as Framework
10 reasons to choose CakePHP as Framework10 reasons to choose CakePHP as Framework
10 reasons to choose CakePHP as FrameworkTrusted Web Service
 
Provisioning Toolchain Introduction for Velocity Online Conference (March 2010)
Provisioning Toolchain Introduction for Velocity Online Conference (March 2010)Provisioning Toolchain Introduction for Velocity Online Conference (March 2010)
Provisioning Toolchain Introduction for Velocity Online Conference (March 2010)dev2ops
 
201502 - Integration Testing
201502 - Integration Testing201502 - Integration Testing
201502 - Integration Testinglyonjug
 
Why so continuous
Why so continuousWhy so continuous
Why so continuousMax Lobur
 
Generic Repository Pattern in MVC3 Application with Entity Framework
Generic Repository Pattern in MVC3 Application with Entity FrameworkGeneric Repository Pattern in MVC3 Application with Entity Framework
Generic Repository Pattern in MVC3 Application with Entity FrameworkAkhil Mittal
 
Ben ford intro
Ben ford introBen ford intro
Ben ford introPuppet
 
Telemetry doesn't have to be scary; Ben Ford
Telemetry doesn't have to be scary; Ben FordTelemetry doesn't have to be scary; Ben Ford
Telemetry doesn't have to be scary; Ben FordPuppet
 
Spring Boot & Spring Cloud on PAS- Nate Schutta (2/2)
Spring Boot & Spring Cloud on PAS- Nate Schutta (2/2)Spring Boot & Spring Cloud on PAS- Nate Schutta (2/2)
Spring Boot & Spring Cloud on PAS- Nate Schutta (2/2)VMware Tanzu
 
ChircuVictor StefircaMadalin rad_aspmvc3_wcf_vs2010
ChircuVictor StefircaMadalin rad_aspmvc3_wcf_vs2010ChircuVictor StefircaMadalin rad_aspmvc3_wcf_vs2010
ChircuVictor StefircaMadalin rad_aspmvc3_wcf_vs2010vchircu
 
Divide and Conquer – Microservices with Node.js
Divide and Conquer – Microservices with Node.jsDivide and Conquer – Microservices with Node.js
Divide and Conquer – Microservices with Node.jsSebastian Springer
 

Similar a Cinfony - Combining disparate cheminformatics resources into a single toolkit (20)

A DevOps guide to Kubernetes
A DevOps guide to KubernetesA DevOps guide to Kubernetes
A DevOps guide to Kubernetes
 
JavaLand - Integration Testing How-to
JavaLand - Integration Testing How-toJavaLand - Integration Testing How-to
JavaLand - Integration Testing How-to
 
Workshop - The Little Pattern That Could.pdf
Workshop - The Little Pattern That Could.pdfWorkshop - The Little Pattern That Could.pdf
Workshop - The Little Pattern That Could.pdf
 
It's always your fault
It's always your faultIt's always your fault
It's always your fault
 
Kubernetes for the PHP developer
Kubernetes for the PHP developerKubernetes for the PHP developer
Kubernetes for the PHP developer
 
We continue checking Microsoft projects: analysis of PowerShell
We continue checking Microsoft projects: analysis of PowerShellWe continue checking Microsoft projects: analysis of PowerShell
We continue checking Microsoft projects: analysis of PowerShell
 
ASP.NET MVC3 RAD
ASP.NET MVC3 RADASP.NET MVC3 RAD
ASP.NET MVC3 RAD
 
Googleappengineintro 110410190620-phpapp01
Googleappengineintro 110410190620-phpapp01Googleappengineintro 110410190620-phpapp01
Googleappengineintro 110410190620-phpapp01
 
Care and feeding notes
Care and feeding notesCare and feeding notes
Care and feeding notes
 
10 reasons to choose CakePHP as Framework
10 reasons to choose CakePHP as Framework10 reasons to choose CakePHP as Framework
10 reasons to choose CakePHP as Framework
 
Provisioning Toolchain Introduction for Velocity Online Conference (March 2010)
Provisioning Toolchain Introduction for Velocity Online Conference (March 2010)Provisioning Toolchain Introduction for Velocity Online Conference (March 2010)
Provisioning Toolchain Introduction for Velocity Online Conference (March 2010)
 
Grails Advanced
Grails Advanced Grails Advanced
Grails Advanced
 
201502 - Integration Testing
201502 - Integration Testing201502 - Integration Testing
201502 - Integration Testing
 
Why so continuous
Why so continuousWhy so continuous
Why so continuous
 
Generic Repository Pattern in MVC3 Application with Entity Framework
Generic Repository Pattern in MVC3 Application with Entity FrameworkGeneric Repository Pattern in MVC3 Application with Entity Framework
Generic Repository Pattern in MVC3 Application with Entity Framework
 
Ben ford intro
Ben ford introBen ford intro
Ben ford intro
 
Telemetry doesn't have to be scary; Ben Ford
Telemetry doesn't have to be scary; Ben FordTelemetry doesn't have to be scary; Ben Ford
Telemetry doesn't have to be scary; Ben Ford
 
Spring Boot & Spring Cloud on PAS- Nate Schutta (2/2)
Spring Boot & Spring Cloud on PAS- Nate Schutta (2/2)Spring Boot & Spring Cloud on PAS- Nate Schutta (2/2)
Spring Boot & Spring Cloud on PAS- Nate Schutta (2/2)
 
ChircuVictor StefircaMadalin rad_aspmvc3_wcf_vs2010
ChircuVictor StefircaMadalin rad_aspmvc3_wcf_vs2010ChircuVictor StefircaMadalin rad_aspmvc3_wcf_vs2010
ChircuVictor StefircaMadalin rad_aspmvc3_wcf_vs2010
 
Divide and Conquer – Microservices with Node.js
Divide and Conquer – Microservices with Node.jsDivide and Conquer – Microservices with Node.js
Divide and Conquer – Microservices with Node.js
 

Más de baoilleach

We need to talk about Kekulization, Aromaticity and SMILES
We need to talk about Kekulization, Aromaticity and SMILESWe need to talk about Kekulization, Aromaticity and SMILES
We need to talk about Kekulization, Aromaticity and SMILESbaoilleach
 
Open Babel project overview
Open Babel project overviewOpen Babel project overview
Open Babel project overviewbaoilleach
 
So I have an SD File... What do I do next?
So I have an SD File... What do I do next?So I have an SD File... What do I do next?
So I have an SD File... What do I do next?baoilleach
 
Chemistrify the Web
Chemistrify the WebChemistrify the Web
Chemistrify the Webbaoilleach
 
Universal Smiles: Finally a canonical SMILES string
Universal Smiles: Finally a canonical SMILES stringUniversal Smiles: Finally a canonical SMILES string
Universal Smiles: Finally a canonical SMILES stringbaoilleach
 
What's New and Cooking in Open Babel 2.3.2
What's New and Cooking in Open Babel 2.3.2What's New and Cooking in Open Babel 2.3.2
What's New and Cooking in Open Babel 2.3.2baoilleach
 
Intro to Open Babel
Intro to Open BabelIntro to Open Babel
Intro to Open Babelbaoilleach
 
Protein-ligand docking
Protein-ligand dockingProtein-ligand docking
Protein-ligand dockingbaoilleach
 
Making the most of a QM calculation
Making the most of a QM calculationMaking the most of a QM calculation
Making the most of a QM calculationbaoilleach
 
Data Analysis in QSAR
Data Analysis in QSARData Analysis in QSAR
Data Analysis in QSARbaoilleach
 
Large-scale computational design and selection of polymers for solar cells
Large-scale computational design and selection of polymers for solar cellsLarge-scale computational design and selection of polymers for solar cells
Large-scale computational design and selection of polymers for solar cellsbaoilleach
 
My Open Access papers
My Open Access papersMy Open Access papers
My Open Access papersbaoilleach
 
Improving the quality of chemical databases with community-developed tools (a...
Improving the quality of chemical databases with community-developed tools (a...Improving the quality of chemical databases with community-developed tools (a...
Improving the quality of chemical databases with community-developed tools (a...baoilleach
 
De novo design of molecular wires with optimal properties for solar energy co...
De novo design of molecular wires with optimal properties for solar energy co...De novo design of molecular wires with optimal properties for solar energy co...
De novo design of molecular wires with optimal properties for solar energy co...baoilleach
 
Density functional theory calculations on Ruthenium polypyridyl complexes inc...
Density functional theory calculations on Ruthenium polypyridyl complexes inc...Density functional theory calculations on Ruthenium polypyridyl complexes inc...
Density functional theory calculations on Ruthenium polypyridyl complexes inc...baoilleach
 
Application of Density Functional Theory to Scanning Tunneling Microscopy
Application of Density Functional Theory to Scanning Tunneling MicroscopyApplication of Density Functional Theory to Scanning Tunneling Microscopy
Application of Density Functional Theory to Scanning Tunneling Microscopybaoilleach
 
Towards Practical Molecular Devices
Towards Practical Molecular DevicesTowards Practical Molecular Devices
Towards Practical Molecular Devicesbaoilleach
 
Why multiple scoring functions can improve docking performance - Testing hypo...
Why multiple scoring functions can improve docking performance - Testing hypo...Why multiple scoring functions can improve docking performance - Testing hypo...
Why multiple scoring functions can improve docking performance - Testing hypo...baoilleach
 
Why multiple scoring functions can improve docking performance - Testing hypo...
Why multiple scoring functions can improve docking performance - Testing hypo...Why multiple scoring functions can improve docking performance - Testing hypo...
Why multiple scoring functions can improve docking performance - Testing hypo...baoilleach
 
Improving enrichment rates
Improving enrichment ratesImproving enrichment rates
Improving enrichment ratesbaoilleach
 

Más de baoilleach (20)

We need to talk about Kekulization, Aromaticity and SMILES
We need to talk about Kekulization, Aromaticity and SMILESWe need to talk about Kekulization, Aromaticity and SMILES
We need to talk about Kekulization, Aromaticity and SMILES
 
Open Babel project overview
Open Babel project overviewOpen Babel project overview
Open Babel project overview
 
So I have an SD File... What do I do next?
So I have an SD File... What do I do next?So I have an SD File... What do I do next?
So I have an SD File... What do I do next?
 
Chemistrify the Web
Chemistrify the WebChemistrify the Web
Chemistrify the Web
 
Universal Smiles: Finally a canonical SMILES string
Universal Smiles: Finally a canonical SMILES stringUniversal Smiles: Finally a canonical SMILES string
Universal Smiles: Finally a canonical SMILES string
 
What's New and Cooking in Open Babel 2.3.2
What's New and Cooking in Open Babel 2.3.2What's New and Cooking in Open Babel 2.3.2
What's New and Cooking in Open Babel 2.3.2
 
Intro to Open Babel
Intro to Open BabelIntro to Open Babel
Intro to Open Babel
 
Protein-ligand docking
Protein-ligand dockingProtein-ligand docking
Protein-ligand docking
 
Making the most of a QM calculation
Making the most of a QM calculationMaking the most of a QM calculation
Making the most of a QM calculation
 
Data Analysis in QSAR
Data Analysis in QSARData Analysis in QSAR
Data Analysis in QSAR
 
Large-scale computational design and selection of polymers for solar cells
Large-scale computational design and selection of polymers for solar cellsLarge-scale computational design and selection of polymers for solar cells
Large-scale computational design and selection of polymers for solar cells
 
My Open Access papers
My Open Access papersMy Open Access papers
My Open Access papers
 
Improving the quality of chemical databases with community-developed tools (a...
Improving the quality of chemical databases with community-developed tools (a...Improving the quality of chemical databases with community-developed tools (a...
Improving the quality of chemical databases with community-developed tools (a...
 
De novo design of molecular wires with optimal properties for solar energy co...
De novo design of molecular wires with optimal properties for solar energy co...De novo design of molecular wires with optimal properties for solar energy co...
De novo design of molecular wires with optimal properties for solar energy co...
 
Density functional theory calculations on Ruthenium polypyridyl complexes inc...
Density functional theory calculations on Ruthenium polypyridyl complexes inc...Density functional theory calculations on Ruthenium polypyridyl complexes inc...
Density functional theory calculations on Ruthenium polypyridyl complexes inc...
 
Application of Density Functional Theory to Scanning Tunneling Microscopy
Application of Density Functional Theory to Scanning Tunneling MicroscopyApplication of Density Functional Theory to Scanning Tunneling Microscopy
Application of Density Functional Theory to Scanning Tunneling Microscopy
 
Towards Practical Molecular Devices
Towards Practical Molecular DevicesTowards Practical Molecular Devices
Towards Practical Molecular Devices
 
Why multiple scoring functions can improve docking performance - Testing hypo...
Why multiple scoring functions can improve docking performance - Testing hypo...Why multiple scoring functions can improve docking performance - Testing hypo...
Why multiple scoring functions can improve docking performance - Testing hypo...
 
Why multiple scoring functions can improve docking performance - Testing hypo...
Why multiple scoring functions can improve docking performance - Testing hypo...Why multiple scoring functions can improve docking performance - Testing hypo...
Why multiple scoring functions can improve docking performance - Testing hypo...
 
Improving enrichment rates
Improving enrichment ratesImproving enrichment rates
Improving enrichment rates
 

Último

🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
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.pdfUK Journal
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
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...Igalia
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
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 2024The Digital Insurer
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
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.pptxEarley Information Science
 
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 Scriptwesley chun
 
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 organizationRadu Cotescu
 
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 DevelopmentsTrustArc
 
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.pdfEnterprise Knowledge
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 

Último (20)

🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
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
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
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...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
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
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
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
 
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
 
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
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 

Cinfony - Combining disparate cheminformatics resources into a single toolkit

  • 1. Combining disparate cheminformatics resources into a single toolkit Noel M. O’Boyle and Geoffrey R. Hutchison Mar 2010 239th ACS National Meeting, San Francisco
  • 2. Toolkits, toolkits and more toolkits Commercial cheminformatics toolkits:
  • 3. Toolkits, toolkits and more toolkits Open Source cheminformatics toolkits: CDK OpenBabel OASA PerlMol
  • 4. The importance of being interoperable Good for users Can take advantage of complementary features CDK:Gasteiger π charges, maximal common substructure, shape similarity with ultrafast shape descriptors, mass-spectrometry analysis RDKit:RECAP fragmentation, calculation of R/S, atom pair fingerprints, shape similarity with volume overlap OpenBabel:several forcefields, crystallography, large number of file formats, conformer searching, InChIKey
  • 5. The importance of being interoperable Good for users Can take advantage of complementary features Can choose between different implementations Faster SMARTS searching, better 2D depiction, more accurate 3D structure generation Avoid vendor lock-in Good for developers Less reinvention of wheel, more time to spend on development of complementary features Avoid balkanisation of field Bigger pool of users
  • 6. J. Chem. Inf. Model., 2006, 46, 991 http://www.blueobelisk.org
  • 7. J. Chem. Inf. Model., 2006, 46, 991 http://www.blueobelisk.org
  • 8. Bringing it all together with Cinfony Different languages Java (CDK), C++ (OpenBabel, RDKit) Use Python, a higher-level language that can bridge to both Different APIs Each toolkit uses different commands to carry out the same tasks Implement a common API Different chemical models Different internal representation of a molecule Use existing method for storage and transfer of chemical information: chemical file formats MDL mol file for 2D and 3D, SMILES for 0D
  • 9.
  • 10.
  • 12. One API to rule them all Example - create a Molecule from a SMILES string: mol = Chem.MolFromSmiles(SMILESstring) mol = openbabel.OBMol() obconversion = openbabel.OBConversion() obconversion.SetInFormat("smi") obconversion.ReadString(mol, SMILESstring) OpenBabel CDK builder = cdk.DefaultChemObjectBuilder.getInstance() sp = cdk.smiles.SmilesParser(builder) mol = sp.parseSmiles(SMILESstring) RDKit mol = toolkit.readstring("smi", SMILESstring) wheretoolkit is either obabel, cdk or rdk
  • 13. Design of Cinfony API API is small (“fits your brain”) Covers core functionality of toolkits Corollary: need to access underlying toolkit for additional functionality Makes it easy to carry out common tasks API is stable Make it easy to find relevant methods Example: add hydrogens to a molecule atommanip = cdk.tools.manipulator.AtomContainerManipulatoratommanip.convertImplicitToExplicitHydrogens(molecule) CDK molecule.addh()
  • 16. Examples of use Chemistry Toolkit Rosetta http://ctr.wikia.com Andrew Dalke
  • 17. Combining toolkits >>> from cinfony import rdk, cdk, obabel>>> obabelmol = obabel.readstring("smi", "CCC")>>> rdkmol = rdk.Molecule(obabelmol)>>> rdkmol.draw(show=False, filename="propane.png")>>> print cdk.Molecule(rdkmol).calcdesc(){'chi0C': 2.7071067811865475, 'BCUT.4': 4.4795252101839402, 'rotatableBondsCount': 2, 'mde.9': 0.0, 'mde.8': 0.0, ... } Import Cinfony Read in a molecule from a SMILES string with OpenBabel Convert it to an RDKit Molecule Create a 2D depiction of the molecule with RDKit Convert it to a CDK Molecule and calculate descriptor values
  • 18. Comparing toolkits >>> from cinfony import rdk, cdk, obabel>>> for toolkit in [rdk, cdk, obabel]: ... mol = toolkit.readstring("smi", "CCC") ... print mol.molwt ... mol.draw(filename="%s.png" % toolkit.__name__) Import Cinfony For each toolkit... ... Read in a molecule from a SMILES string ... Print its molecular weight ... Create a 2D depiction Useful for sanity checks, identifying limitations, bugs Calculating the molecular weight (http://tinyurl.com/chemacs3) implicit hydrogen, isotopes Comparison of descriptor values (http://tinyurl.com/chemacs2) Should be highly correlated Comparison of depictions (http://tinyurl.com/chemacs1)
  • 20. Webel - Chemistry for Web 2.0 Webel is a new Cinfony module that runs entirely using web services CDK webservices by Rajarshi Guha, hosted at Uppsala University NCI/CADD Chemical Identifier Resolver by Markus Sitzmann (uses Cactvs for much of backend) - see CINF147 at 2:20pm in Room 212 Easy to install – no dependencies Can be used in environments where installing a cheminformatics toolkit is not possible Web services may provide additional services not available elsewhere Example: how similar is aspirin to Dr. Scholl’s Wart Remover Kit? >>> from cinfony import webel >>> aspirin = webel.readstring("name", "aspirin")>>> wartremover = webel.readstring("name", ... "Dr. Scholl’s Wart Remover Kit")>>> print aspirin.calcfp() | wartremover.calcfp() 0.59375
  • 21. Webel - Chemistry for Web 2.0 Webel is a new Cinfony module that runs entirely using web services CDK webservices by Rajarshi Guha, hosted at Uppsala University NCI/CADD Chemical Identifier Resolver by Markus Sitzmann (uses Cactvs for much of backend) - see CINF147 at 2:20pm in Room 212 Easy to install – no dependencies Can be used in environments where installing a cheminformatics toolkit is not possible Web services may provide additional services not available elsewhere Example: how similar is aspirin to Dr. Scholl’s Wart Remover Kit? >>> from cinfony import webel >>> aspirin = webel.readstring("name", "aspirin")>>> wartremover = webel.readstring("name", ... "Dr. Scholl’s Wart Remover Kit")>>> print aspirin.calcfp() | wartremover.calcfp() 0.59375
  • 22. Cheminformatics in the browser See http://baoilleach.webfactional.com/site_media/webel/ or just Google “webelsilverlight”
  • 23. makes it easy to... Start using a new toolkit Carry out common tasks Combine functionality from different toolkits Compare results from different toolkits Do cheminformatics through the web, and on the web
  • 24. Combining disparate cheminformatics resources into a single toolkit Chem. Cent. J., 2008, 2, 24. http://cinfony.googlecode.com http://baoilleach.blogspot.com Acknowledgements CDK: Egon Willighagen, Rajarshi Guha OpenBabel: Chris Morley, Tim Vandermeersch RDKit: Greg Landrum OASA: Beda Kosata JPype: Steve Ménard Chemical Identifier Resolver: Markus Sitzmann Interactive Tutorial: Michael Foord Image: Tintin44 (Flickr)
  • 25.
  • 26. Cheminformatics in the browser As Webel is pure Python, it can run places where traditional cheminformatics software cannot... ...such as in a web browser Microsoft have developed a browser plugin called Silverlight for developing applications for the web It includes a Python interpreter (IronPython) So you can use Webel in Silverlight applications Michael Foord has developed an interactive Python tutorial using Silverlight See http://ironpython.net/tutorial/ I have combined this with Webel to develop an interactive Cheminformatics tutorial

Notas del editor

  1. OB has around 112 classes, 227 global functions. CDK has 882 classes.