Polymers make this question more or less unanswerable.
Consider human chromosome 1, which contains about 249,000,000 base pairs. There is nothing that says we couldn't order those pairs in any way we like, so for DNA alone, in a quantity that exists in every person on Earth, there exists the possibility for 4249000000 different molecules. Include things ...
I haven't seen any rigorous benchmarking or guidelines.
Consider that the total number of conformers goes up like $3^n$, where $n$ is the number of rotatable bonds, and ~3 is the approximate number of symmetrically unique conformers for each rotatable bond.
For small molecules with <3-4 rotatable bonds, using 100 conformers seems to be enough (i.e, only ...
According to the website, Open Babel should do the trick: Documentation - SMILES, Sourceforge.
For example, the following code will give you a neat SVG file of the molecule benzene:
obabel -:"c1ccccc1" -O benzen.svg
If you experience problems using it, you are welcome to ask more specifically.
Alternatively, you can use a web-query from the national ...
Okay, let's tackle at least one problem here. Consider the rotation of 1,2-dichloroethane (BP86/cc-pVDZ):
These conformational changes can be further rationalised:
C and C' are the same conformation, since these are mirror images.
The same applies to B and B'.
A and C are local minima and can be referred to as conformes in the above given way
B and D ...
For the coloring part I would suggest you look at the CPK coloring convention.
As for the decision whether a bond is a single or a double bond: You could make this decision based on the bond length between two atoms. But you will need to find typical values for single, double and triple bonds for every combination of elements which seems a bit too much ...
Unfortunately Pubchem is right, the two structures have the same InChI string and key, since the protonation state is the same in the zwitterion and the neutral form. So the reason for the discrepancy is by design.
I also always thought, InChI was designed for distinguishing between these conformations, but it turns out to just be one of the limitations of ...
This sounds like you were exploring work at least related to the work by the Lilienfeld group equally hosting a dedicated site here about data sets already used in their earlier and ongoing exploration of chemical space, programs used to work with the data, and publications.
To go considerably higher in molecule count than QM9, you could either go for
Without some constraint on the number of atoms/molecular weight, the number of possible theoretical compounds is infinite, for the reason given by Jason Patterson: you can always extend a polymer by one more unit.
It has been estimated that there are 10^60 possible organic compounds with molecular weight less than 500 The art and practice of structure-based ...
You might want to have a look at Open Babel.
It is licensed under GNU GPLv2
It has bindings for Python
It has bindings for PHP
It has bindings for Ruby
It can read (and write) SMILES
It can read (and write) InChI
It can write SVG
It can write a list of painter commands
You can generate the geometry for your molecule of choice by drawing it in Avogadro. More often than not, you want to refine the geometry through a force field calculation.
Avogadro supports multiple ways of visualization, which all can be configured according to your preferences. A ball-and-stick model, which you seem to prefer, is included.
If you want ...
This is a method to generate alternate Lewis structures of the same molecule. Here are two examples from the cumulative dissertation by Sascha Urbaczek:
If you were to search for the left molecule in panel (1) using an image search or a SMILES string, you might miss the right molecule in that panel.
According to the RDkit document cited in the question, ...
SMILES is insufficient
SMILES strings do not encode 3D structure information. They only convey atom type, connectivity and bond types. InChI is like SMILES in this regard.
Thus, you will need either (a) an algorithm to infer or guess a plausible 3D conformation of a molecule or (b) a file type that has already specified the 3D arrangement of the molecule....
The best way to download bulk data from PubChem is actually FTP, as documented in their documentation.
For example, if you want the unfiltered SMILES of every CID in PubChem, the URL is ftp://ftp.ncbi.nlm.nih.gov/pubchem/Compound/Extras/CID-SMILES.gz
You can also download subsets using the PubChem Structure Download service
And as mentioned above, there ...
Norbert Haider from the University of Vienna has been working on the identification of functional groups for quite a while.
You might want to have a look at his checkmol/matchmol tool, which natively reads from MDL, Alchemy, and Sybyl mol files.
Other input formats may be processed after converting them using Open Babel.
Usually, structure search is implemented using a graph model. For example, let's take cyclohexane. On screen this is a hexagon - but this is converted on the server to a simple atom/bond graph model of six carbons in a ring.
This graph can then be compared to all the molecules in the database by various means. For example, subgraph isomorphism or ...
InChI is intended to ignore tautomeric forms. As Martin indicates this also means zwitterions are considered identical to the neutral form.
Unlike you and Martin, I'm not sure I see this as a bug, since predicting the most stable tautomer or zwitterion/neutral is a complicated issue.
If you want to keep track of zwitterions, I think SMILES is a better ...
In addition to the other good answers, I'd recommend rdkit, an open-source, freely available software for chemoinformatics. Most people use rdkit via its Python interface.
Here are some rdkit basics:
The code base is available in GitHub, here.
The license is quite permissive; you don't need to worry about what type of work (commercial, personal, or ...
One of the goals of the InChI project was to ensure uniqueness: 
Strict uniqueness of identifier
The same label always means the same substance, and the same substance always receives the same label (under the same labelling conditions). This is achieved through a well-defined procedure of obtaining canonical numbering of atoms.
Whilst this is often the ...
The ISOL24 database (http://www.thch.uni-bonn.de/tc.old/downloads/GMTKN/GMTKN55/ISOL24.html) contains molecules with up to 81 atoms!
The other answer says that there's a database called "OE" with molecules that have up to 174 atoms, but it is "not yet publicly available".
As you mentioned, there've been quite some attempts on CAOS (Computer-Assisted Organic Synthesis), such as
WODCA from the Gasteiger group
CHIRON from the Hanessian group
LHASA from the Corey group
I might be awfully wrong, but I think they were/are all closed source.
But you might want to have a look at OSET, an open source Java project on which Ivan ...
You want the Open Babel "report" format, e.g.:
obabel benzene.cml -oreport
EXACT MASS: 78.0469502
C 1 C 2 C 3 C 4 C 5 C 6
C 1 0.0000
C 2 ...
First off this is SMARTS not SMILES.
Think of SMARTS as like a regular expression language for molecules (e.g., SMILES).
So let's break down some of those characters:
~ is "any bond"
! is "not"
$ indicates a recursive SMARTS expression.
@ indicates "any ring bond"
The $(*#*) means "two atoms with a triple bond between them". The !D1 means and not an atom ...
This is typically called library (or scaffold) enumeration. Doing it in SMILES is usually pretty easy by script, but there are a few other options:
But it's very easy to write a script like this, e.g. (in python)
r1 = [ "", "C", "N" ]
r2 = [ "H", "C", "c3ccccc3", "C(=O)O" ]
r3 = [ "", "C", "C#N", "O" ]
scaffold = "Xc(cc1c2)ccc1c(Y)cc2-C(C=C1)...
You should also look at RDKit, which is at its core is C++ code for manipulating molecular structures, but which also has Python and Java bindings. Most people use it via its Python bindings.
Here's some example code.
# import rdkit components
from rdkit import Chem
from rdkit.Chem import Draw
from rdkit.Chem.Draw import IPythonConsole
A few more links to those listed above:
Peter Ertl's synthetic accessibility score (SAscore)
ArChem - also called Route Designer
There was also a lot of hype a few years ago about an effort called Chematica, but I have not seen an actual shipping product (commercial or otherwise).
The best known databases are Beilstein and Chemical Abstracts with around 22 millions reactions each since the end of the 19th century but they are commercial.
Organic Syntheses has made available its database for free and it covers 6000 reactions. One of the greatest advantages is that each step is described in depth and each reaction has been thoroughly ...
If you have the latest copy of cclib installed, it can extract both the energies and geometries and write the geometries to an XYZ trajectory file that you can open with Avogadro or VMD.
To print the HF or DFT energies to the screen,
$ ccget scfenergies admp.out
but be warned that the energies are in eV, not hartree.
To dump geometries to XYZ files, here'...
SMARTS is deliberately designed to be a superset of SMILES. That is, any valid SMILES depiction should also be a valid SMARTS query, one that will retrieve the very structure that the SMILES string depicts.
However, as a query language, SMARTS can be more general than SMILES is. For example, CC as a SMILES string depicts a single compound: ethane. As a ...
I am not aware of any other Python tool not mentioned in the question @Mithoron linked to. Openbabel is available via pip by the way.
That RDKit is not available on PyPi should not hinder you from using it in a virtual environment. RDKit is available via the conda package manager which is easy to use and combinable with pip.
If you are on Linux, the ...