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 ...
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 ...
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 ...
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 ...
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 ...
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 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
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
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 ...
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.
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 ...
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....
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 ...
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 ...
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 ...
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 ...
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)...
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".
There are general problems representing delocalized bonding and organometallic compounds in cheminformatics (generally) and SMILES in specific.
To quote the Open SMILES standard:
This simple mental model [of a connection table between atoms using valence bonds] has little resemblance to the underlying quantum-mechanical reality of electrons, protons and ...
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 ...
To extend on Philipp's excellent answer, I'd like to offer some advice on judging bond orders. Pekka Pyykkö and Michiko Atsumi published covalent (single-, double-, triple-) bond radii for (almost) the entire periodic table in Chem. Eur. J. 2009, 15, 12770-12779. It is summarised in figure 3. These are obtained from experimental or theoretical data.
InChI is the acronym for the IUPAC International Chemical Identifier. It is basically as system, to catalogue molecular information. Its prime advantage is, that it is just a text string. That basically means, that it can easily be understood by machines. The other advantage is, that it is also human readable. It consists of several layers: the molecular ...
Open Babel does not generate "ball and stick 3D depictions" directly, because it's not a molecular visualization program.
That's why we started Avogadro.
There are a few formats supported in Open Babel to write out 3D depictions, e.g.:
STL - for 3D printing
Point Cloud - outlining the Van der Waals surface
But you can make a pseudo-3D "ball and ...
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
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 ...
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, ...