Molecule API¶
Introduction¶
The ccdc.molecule
contains classes concerned with chemistry.
The three main classes of the ccdc.molecule
module are:
The ccdc.molecule.Molecule
class contains attributes relating to the
chemistry of the molecule, for example the SMILES representation.
>>> from ccdc.io import MoleculeReader
>>> csd_mol_reader = MoleculeReader('CSD')
>>> first_mol_in_csd = csd_mol_reader[0]
>>> print(first_mol_in_csd.smiles)
CC(=O)NN1C=NN=C1N(N=Cc1c(Cl)cccc1Cl)C(C)=O
In some cases a molecule may not have a canonical SMILES representation - where the structure has unknown atoms or bonds. In these cases the value will be None:
>>> AJABIX01 = csd_mol_reader.molecule('AJABIX01')
>>> print(AJABIX01.smiles)
None
The ccdc.molecule.Molecule
also contains lists of atoms and bonds.
>>> len(first_mol_in_csd.atoms)
35
>>> len(first_mol_in_csd.bonds)
36
>>> first_atom = first_mol_in_csd.atoms[0]
>>> first_bond = first_mol_in_csd.bonds[0]
The ccdc.molecule.Atom
contains attributes such as the
ccdc.molecule.Atom.atomic_symbol
.
>>> print(first_atom.atomic_symbol)
Cl
The ccdc.molecule.Bond
contains attributes such as the
ccdc.molecule.Bond.bond_type
.
>>> first_bond.bond_type # doctest: +ELLIPSIS
<ccdc.molecule.Bond.BondType object at ...>
>>> str(first_bond.bond_type)
'Single'
>>> first_bond.bond_type == 1
True
See also
API¶
-
class
ccdc.molecule.
Atom
(atomic_symbol='', atomic_number=0, coordinates=None, label='', formal_charge=0, _atom=None)[source]¶ Represents an atom.
-
class
DisplacementParameters
(_displacement_parameters)[source]¶ Represents the atomic displacement parameters of an atom, where present.
Atoms read from a PDB format file may have displacement parameters, the same is true for structures read from a CIF format, and structures from newer versions of SQLite crystal structure databases.
-
isotropic_equivalent
¶ The equivalent isotropic displacement.
See Fischer and Tillmanns (1988), Acta Cryst. C44, pp. 775-776.
-
precision
¶ The precision of uncertainty values in the displacement parameters.
-
temperature_factor
¶ The temperature factor.
-
type
¶ Whether the atomic displacement parameters be anisotropic, isotropic or from multipole expansion.
Returns: One of ‘Anisotropic’, ‘Isotropic’, ‘Multipole’, or None
if no atomic displacement parameters are defined.
-
uncertainties
¶ The uncertainties in the displacement parameters.
-
values
¶ The six values of the displacement parameters.
-
-
atomic_number
¶ The atomic number of the element represented.
>>> atom = Atom(atomic_symbol='N') >>> print(atom.atomic_number) 7
-
atomic_symbol
¶ The atomic symbol of the element represented.
>>> atom = Atom(atomic_symbol='N') >>> print(atom.atomic_symbol) N
-
atomic_weight
¶ The atomic weight of the atom.
-
bonds
¶ The bonds which this atom forms
-
chain_label
¶ The label of the chain in which the atom lies if available.
-
chirality
¶ The R/S Chirality flag for this atom.
Returns one of ‘’, ‘R’, ‘S’, ‘Mixed’, ‘Error’.
-
coordinates
¶ The x, y, z coordinates of the atoms in orthogonal space.
>>> atom = Atom(atomic_symbol='C', coordinates=(1.0, 2.0, 3.0)) >>> atom.coordinates Coordinates(x=1.000, y=2.000, z=3.000)
The coordinates may be addressed by index or by key:
>>> atom.coordinates.x 1.0 >>> atom.coordinates[2] 3.0
Note that this function will return
None
if the atom does not have 3D coordinates.>>> atom = Atom(atomic_symbol='C') >>> print(atom.coordinates) None
-
displacement_parameters
¶ The displacement parameters of this atom.
Returns: ccdc.molecule.Atom.DisplacementParameters
orNone
-
formal_charge
¶ Formal charge on the atom.
>>> atom = Atom(atomic_symbol='Cl') >>> atom.formal_charge 0
-
fractional_coordinates
¶ The fractional coordinates of an atom.
The coordinates of the atom expressed in terms of the underlying crystal’s unit cell. Where there is no underlying crystal, these will appear relative to the default unit cell, so orthogonal and fractional coordinates coincide.
-
fractional_uncertainties
¶ The fractional coordinates of the atom with the uncertainty information, if present.
If no uncertainty information was recorded for the atom, this will be
None
.
-
index
¶ The index of this atom in its parent molecule.
Note that if an atom is not part of a molecule this function will return
None
.>>> atom = Atom(atomic_symbol='Fe') >>> print(atom.index) None
-
is_acceptor
¶ Test whether or not the atom is a hydrogen bond acceptor.
>>> atom = Atom(atomic_symbol='C') >>> atom.is_acceptor False
-
is_chiral
¶ Whether the atom is chiral.
>>> atom = Atom() >>> atom.is_chiral False
Returns True if the R/S Chirality flag for this atom is one of ‘R’, ‘S’, or ‘Mixed’.
-
is_cyclic
¶ Test whether the atom is part of a ring system.
>>> atom = Atom() >>> atom.is_cyclic False
-
is_donor
¶ Test whether or not the atom is a hydrogen bond donor.
>>> atom = Atom(atomic_symbol='C') >>> atom.is_donor False
-
is_in_line_of_sight
(atom, molecules=None)[source]¶ Whether the other atom is within the line of this atom.
Parameters: - atom – a
ccdc.molecule.Atom
instance. - molecules – an iterable of molecules to test for occlusion, or None.
If molecules is None or an empty iterable the only molecules to be tested will be those of the atoms involved.
- atom – a
-
is_in_protein
¶ Whether or not the atom is in a protein.
-
is_metal
¶ Whether this atom is a metal.
>>> atom = Atom(atomic_symbol='C') >>> atom.is_metal False >>> atom = Atom(atomic_symbol='Hg') >>> atom.is_metal True
-
is_spiro
¶ Whether this is a spiro atom.
-
label
¶ The label for the atom.
>>> atom = Atom(atomic_symbol='C', label='C1') >>> print(atom.label) C1 >>> atom = Atom(atomic_symbol='C') >>> print(atom.label) <BLANKLINE>
-
neighbours
¶ Those atoms bonded to this one
-
occupancy
¶ The occupancy of the atom.
-
partial_charge
¶ Partial charge on the atom.
-
protein_atom_type
¶ The protein atom type of an atom.
This may be ‘Amino_acid’, ‘Ligand’, ‘Cofactor’, ‘Water’, ‘Metal’, ‘Nucleotide’ or ‘Unknown’.
-
residue_label
¶ The residue label of the atom if available, or
None
.
-
rings
¶ The collection of
ccdc.molecule.Ring
in which this atom lies.
-
solvent_accessible_surface
(probe_radius=1.1, npoints=6000, method='random', filter_by_ligand=False, ligand_atoms=None)[source]¶ The fraction of the atom’s surface which is solvent-accessible.
Parameters: - probe_radius – the radius of the probe’s sphere.
- npoints – the number of points to generate on the surface of a sphere.
- method – one of ‘random’ or ‘equidistant’
- filter_by_ligand – bool True or False - this parameter controls whether
to measure the contacting accessible surface. If True then only the solvent accessible surface that is within a certain distance of the ligand atoms is counted. This allows the user to measure, on this molecule, the accessible surface that is in contact with another molecule. :parameter ligand_atoms: list of atoms :returns: the fraction of the atom’s surface area which is accessible.
-
sybyl_type
¶ The Sybyl atom type of an atom.
-
vdw_radius
¶ The Van der Waals radius of the atom.
-
class
-
class
ccdc.molecule.
Bond
(bond_type=None, _bond=None)[source]¶ A bond between two atoms of a molecule.
-
class
BondType
(bond_type)[source]¶ Represent a bond type as either an integer or a string.
>>> bond_type = Bond.BondType(1) >>> print(bond_type) Single >>> bond_type == 1 True
-
atoms
¶ The two atoms which this bond connects.
-
bond_type
¶ The bond type represented as a
ccdc.molecule.Bond.BondType
.
-
ez_stereochemistry
¶ The E/Z stereochemistry for this bond.
Returns one of ‘’, ‘E’, ‘Z’, ‘Unknown’, ‘Error’.
-
ideal_bond_length
¶ The ideal bond length for a bond of this type connected these atoms.
-
is_conjugated
¶ Whether the bond is conjugated.
-
is_cyclic
¶ Test whether the bond is part of a ring system.
-
is_rotatable
¶ Test whether the bond is rotatable.
-
length
¶ The length of the bond in Angstroms.
-
rings
¶ The collection of
ccdc.molecule.Ring
of which this bond is a part.
-
sybyl_type
¶ The Sybyl bond type of this bond.
-
class
-
class
ccdc.molecule.
Ring
(atoms, _molecule=None)[source]¶ A ring of atoms in a molecule.
-
bonds
¶ The bonds of this ring.
-
is_aromatic
¶ Whether or not the ring is aromatic.
-
is_fully_conjugated
¶ Whether each bond of the ring is conjugated.
-
is_fused
¶ Whether the ring is fused with another.
-
-
class
ccdc.molecule.
Molecule
(identifier='', _molecule=None)[source]¶ Represents a molecule
-
class
Contact
(_contact)[source]¶ A contact between two molecules.
-
atoms
¶ The atoms forming this contact.
-
intermolecular
¶ Whether the contact is inter- or intra-molecular.
-
is_in_line_of_sight
¶ Whether the contact is occluded by other atoms of the structure.
-
length
¶ The length of the contact.
-
strength
¶ The strength of this contact.
-
type
¶ The type of contact.
-
-
class
HBond
(_contact)[source]¶ A hydrogen bond between atoms of a molecule.
-
angle
¶ The donor-hydrogen-acceptor angle or
None
if the hydrogen is implicit.
-
atoms
¶ The atoms forming this contact.
If a Hydrogen is present in the contact it will be the central atom. Either the donor or the acceptor may come first: which may be determined by inspecting the neighbours of the atoms. (Testing the attribute
ccdc.molecule.atom.is_donor
can be misleading if an atom acts as both a donor and an acceptor in a crystal structure.)
-
da_distance
¶ The donor-acceptor distance of this hydrogen bond.
-
is_in_line_of_sight
¶ Whether the HBond is in line of sight or occluded.
-
length
¶ The length of the hydrogen bond.
This is the distance between the hydrogen and the acceptor, or
None
if the hydrogen is implicit.
-
type
¶ The type of this contact (‘HBond’).
-
-
class
HBondCriterion
(_hbc=None)[source]¶ Defines the conditions for an HBond to be detected in a molecule.
Contains two dictionary like objects for the donor atom types and the acceptor atom types, whether or not hydrogens are required, a distance range and an angle tolerance (if hydrogen atoms are required), whether or not the distance range is relative to Van der Waals radii, whether inter-, intra- or both HBonds should be detected, and a range of path separation distances for atoms to be considered hydrogen bonded.
In almost all cases the defaults will give good results, but users may wish to fine-tune the detection algorithm.
-
class
HBondAtomTypes
(type, _hbc)[source]¶ A dictionary-like class providing access to the atom types of a donor or an acceptor.
-
angle_tolerance
¶ The tolerance of the HBond angle.
-
distance_range
¶ Allowable distance range for an HBond to be formed.
-
intermolecular
¶ Whether HBonds should be intermolecular, intramolecular, or any.
-
path_length_range
¶ The shortest and longest bond-path separation for intramolecular contacts.
-
require_hydrogens
¶ Whether Hydrogens are required for the HBond.
-
vdw_corrected
¶ Whether the distance range is Van der Waals corrected.
-
class
-
class
Transformation
(matrix=None, _transformation=None)[source]¶ Transformation matrix that could be applied to the coordinates of a molecule
-
static
from_rotation_and_translation
(rotation, translation)[source]¶ Create a transformation from a rotation matrix and translation vector
Parameters: - rotation – A 3 x 3 rotation matrix as a tuple of 3 tuples of 3 doubles
- translation – A translation vector as a tuple of 3 doubles (x, y, z)
Returns: A Molecule.Transformation
-
inverse
()[source]¶ Return the inverse of this transformation
Returns: A Molecule.Transformation that is the inverse of this transformation
-
rotation
¶ The rotational component of the transformation
Returns: A 3 x 3 rotation matrix as a tuple of 3 tuples of 3 doubles
-
translation
¶ The translational component of the transformation
Returns: A translation vector as a tuple of 3 doubles (x, y, z)
-
static
-
add_atom
(atom)[source]¶ Add an atom.
Parameters: atom – ccdc.molecule.Atom
Returns: a copy of the atom which is now in this molecule
-
add_atoms
(iterable)[source]¶ Add atoms, whether from another molecule or constructed ab initio.
Parameters: iterable – any iterable of ccdc.molecule.Atom
Returns: a tuple of copies of the atoms in iterable
-
add_bond
(bond_type, atom1, atom2)[source]¶ Add a bond between two atoms.
Parameters: - bond_type –
ccdc.molecule.Bond.BondType
instance - atom2 (atom1,) –
ccdc.molecule.Atom
instances which must already be present in the molecule
- bond_type –
-
add_bonds
(iterable)[source]¶ Add several bonds to the molecule.
Parameters: iterable – should be an iterable of triples, ( ccdc.molecule.Bond.BondType
,ccdc.molecule.Atom
,ccdc.molecule.Atom
) where the atoms must be in this molecule
-
add_group
(mol, atom1, atom2)[source]¶ Add a group from another molecule.
All atoms and bonds of downstream of the pair atom1, atom2 will be added to the molecule.
Parameters: - mol –
ccdc.molecule.Molecule
- atom1 –
ccdc.molecule.Atom
which must be in mol - atom2 –
ccdc.molecule.Atom
which must be in mol
- mol –
-
add_hydrogens
(mode='all', add_sites=True)[source]¶ Add hydrogen atoms to the molecule.
Parameters: - mode – ‘all’ to generate all hydrogens (throws away existing hydrogens) or ‘missing’ to generate hydrogens deemed to be missing.
- add_sites – ‘True’ to generate 3D coordinates for hydrogens (default) ‘False’ to only generate siteless atoms
Raises: RuntimeError if any heavy atom has no site.
Raises: RuntimeError if any atoms are of unknown type.
Raises: RuntimeError if any bonds are of unknown type.
-
add_molecule
(molecule)[source]¶ Add a copy of all the atoms and bonds of molecule.
Parameters: molecule – ccdc.molecule.Molecule
-
all_atoms_have_sites
¶ Whether all atoms have coordinates.
-
apply_quaternion
(Q)[source]¶ Apply a Quaternion to the molecule, rotating it about an arbitrary axis.
Parameters: Q – a sequence of 4 floats Raises: RuntimeError if an atom has no coordinates
-
assign_bond_types
(which='All')[source]¶ Assign bond types to the molecule.
Parameters: which – may be ‘all’ or ‘unknown’ Raises: ValueError if an unrecognised which
parameter is provided
-
assign_partial_charges
()[source]¶ Assigns partial charges to atoms using the Gasteiger-Marsili algorithm.
Reference: Gasteiger J.; Marsili M., Tetrahedron 36 (22) 3219-3228 1980.
This is a fast, convergent algorithm only suitable for organic molecules.
Returns: bool, indicating success or failure of the algorithm.
-
atom
(label)[source]¶ The unique atom with this label.
Parameters: label – a string Raises: RuntimeError if there is not exactly one atom in the molecule with this label Returns: ccdc.molecule.Atom
-
atoms
¶ List of the atoms in the molecule.
-
bond
(label1, label2)[source]¶ The bond between the atoms uniquely so labelled.
Parameters: label2 (label1,) – strings Raises: RuntimeError if the atom labels are not unique or the atoms are not bonded Returns: ccdc.molecule.Bond
-
bonds
¶ List of the bonds in the molecule.
-
centre_of_geometry
()[source]¶ Geometric centre of the molecule.
Raises: RuntimeError if an atom has no coordinates
-
change_group
(atom1, atom2, mol, atom3, atom4)[source]¶ Transfer a copy of a group of atoms and bonds.
All atoms downstream of atom1 - atom2 will be removed and copies of all atoms and bonds downstream of atom3 - atom4 will be added to the molecule. The geometry of the copied atoms will be translated and rotated such that the bond atom3 - atom4 is aligned with atom1 - atom2.
The bond connecting the groups will have the same type as that between atom1 and atom2.
Parameters: - atom1 –
ccdc.molecule.Atom
- atom2 –
ccdc.molecule.Atom
- atom3 –
ccdc.molecule.Atom
- atom4 –
ccdc.molecule.Atom
- mol –
ccdc.molecule.Molecule
in which atom3 and atom4 must be present
Raises: RuntimeError if any atom of mol is siteless, or if the bond atom3 - atom4 is cyclic.
Returns: a tuple of
ccdc.molecule.Atom
which are the newly added atoms of the molecule.- atom1 –
-
components
¶ List of the disconnected molecules with the molecule.
-
contacts
(distance_range=(-5.0, 0.0), only_strongest=False, path_length_range=(4, 999))[source]¶ The collection of short nonbonded contacts in this molecule.
Distance limits for nonbonded contacts are defined as distances relative to the sum of van der Waals Radii, i.e.:
v(X) + v(Y) - p < d(X…Y) < v(X) + v(Y) - qwhere v(X) and v(Y) are the vdW radii of X and Y respectively and p and q are user-specified values in Angstroms (e.g., if p = 0.5 and q = 0.1, the contact must be at least 0.1 Angstroms shorter than the sum of vdW radii but no more than 0.5 Angstroms shorter).
Standard van der Waals radii are assigned to the common elements. They are taken from Bondi, J.Phys.Chem., 68, 441, 1964. Other elements are assigned van der Waals radii of 2.0 Angstroms.
Parameters: - distance_range – Minimum and maximum values (Van der Waals corrected) for a short contact (Angstroms).
- only_strongest – whether to return only the strongest contact made.
- path_length_range – Minimum and maximum values for length of path between the contact atoms.
-
contains_unknown_bonds
¶ Whether the molecule contains unknown bonds.
-
formal_charge
¶ The formal charge of the molecule represented as an integer.
-
formula
¶ Return the chemical formula of the molecule.
-
static
from_string
(s, format='')[source]¶ Create a molecule from a string representation.
The format will be auto-detected if not specified.
Parameters: - s – molecule string representation
- format – one of ‘mol2’, ‘sdf’, ‘mol’, ‘cif’ or ‘smiles’
Return type: Raises: TypeError if the format string is not ‘’, ‘mol2’, ‘sdf’, ‘mol’, ‘cif’ or ‘smiles’.
Raises: RuntimeError if the string representation is incorrectly formatted
-
fuse_rings
(atom1, atom2, mol, atom3, atom4)[source]¶ Fuse a copy of a ring system.
The bond between atom3 and atom4 will be superimposed on the bond between atom1 and atom2.
Parameters: - atom1 –
ccdc.molecule.Atom
within this molecule - atom2 –
ccdc.molecule.Atom
within this molecule - mol –
ccdc.molecule.Molecule
- atom3 –
ccdc.molecule.Atom
which must be within mol - atom4 –
ccdc.molecule.Atom
which must be within mol
Raises: RuntimeError if bonds between atoms are not cyclic
Returns: a tuple of
ccdc.molecule.Atom
which are the newly added atoms of the molecule- atom1 –
-
hbonds
(distance_range=(-5.0, 0.0), angle_tolerance=120.0, vdw_corrected=True, require_hydrogens=True, path_length_range=(4, 999), hbond_criterion=None)[source]¶ The collection of molecular hydrogen bonds in this molecule.
The definition of a hydrogen bond (D-H…A) is a contact meeting the following criteria:
- The donor (D) must be a nitrogen, oxygen or sulphur atom covalently bound to at least one hydrogen.
- The acceptor (A) must be a nitrogen, oxygen, sulphur or halogen with at least one available lone pair (e.g., pyramidal trigonal nitrogen is regarded as an acceptor but planar trigonal nitrogen is not).
- The D…A distance must be less than the sum of van der Waals Radii of the D and A atoms (vdw_corrected is True) or within the absolute specified range (vdw_corrected is False) in Angstroms.
- The D-H…A angle must be within the specified angle_tolerance range.
- The contact may be intermolecular and/or intramolecular involving donor and acceptor atoms separated with covalent bonds within the specified path length.
If hydrogens are not required, they will not appear in the returned
ccdc.molecule.Molecule.HBond.atoms
.Parameters: - distance_range – Minimum and maximum distances considered acceptable for a hydrogen bond to be formed.
- vdw_corrected – Whether the distances are relative to the Van der Waals radius of the atoms (Angstroms).
- angle_tolerance – Acceptable range for a hydrogen Donor-Hydrogen-Acceptor angle (degrees).
- require_hydrogens – whether hydrogens are necessary for the hydrogen bond.
- path_length_range – Minimum and maximum values for length of path between donor and acceptor atom. If it is desirable to detect hydrogen bonds spanning discrete components of the molecule, this should be set to (-1, 999).
- hbond_criterion – an instance of
ccdc.molecule.Molecule.HBondCriterion
orNone
. If this is notNone
then it will be used to override all of the other parameters.
Returns: a tuple of
ccdc.molecule.Molecule.HBond
-
heaviest_component
¶ The heaviest component, useful for stripping solvents.
-
heavy_atoms
¶ List of the heavy atoms in the molecule.
-
identifier
¶ The string identifier of the molecule, e.g. ‘ABEBUF’.
-
is_3d
¶ Whether the molecule has 3d coordinates for all heavy atoms.
-
is_organic
¶ Uses CSD definitions for organometallic molecules.
-
is_organometallic
¶ Uses CSD definitions for organometallic molecules.
-
is_polymeric
¶ Whether the molecule contains polymeric bonds.
-
kekulize
()[source]¶ Convert the molecule to a Kekule representation, replacing all aromatic bonds by alternating single and double bonds.
-
largest_ring_size
¶ The size of the largest basic
ccdc.molecule.Ring
in the molecule.Returns: the size of the largest basic ccdc.molecule.Ring
orNone
if there are no rings in the molecule.
-
molecular_volume
¶ The molecular volume of the molecule.
-
molecular_weight
¶ The molecular weight of the molecule.
-
normalise_atom_order
()[source]¶ Reorder the atoms of the molecule canonically.
This will not work for structures with unknown atoms or bonds.
This may be useful for comparing polymorphs, for example:
>>> from ccdc import io >>> csd = io.MoleculeReader('csd') >>> hxacan = csd.molecule('HXACAN') >>> hxacan26 = csd.molecule('HXACAN26') >>> all(a.label == b.label for a, b in zip(hxacan.atoms, hxacan26.atoms)) False >>> hxacan.normalise_atom_order() >>> hxacan.normalise_labels() >>> hxacan26.normalise_atom_order() >>> hxacan26.normalise_labels() >>> all(a.label == b.label for a, b in zip(hxacan.atoms, hxacan26.atoms)) True
-
normalise_hydrogens
()[source]¶ Normalise the hydrogen atom positions in the molecule.
This will normalise the position of hydrogen atoms attached to oxygen, nitrogen or carbon atoms to standard X-H distance values derived from statistical surveys of neutron diffraction data.
Note that this function will only modify the X-H distance. In other words the bond vector direction will be unaffected.
-
normalise_labels
()[source]¶ Ensure labels of atoms are unique.
Labels will be the atom’s atomic symbol followed by an integer.
-
remove_atom
(atom)[source]¶ Remove an atom from the molecule.
Parameters: atom – ccdc.molecule.Atom
which must be in the molecule.Raises: RuntimeError if atom is not in the molecule.
-
remove_atoms
(iterable)[source]¶ Remove several atoms from the molecule.
Parameters: iterable – any iterable of ccdc.molecule.Atom
Raises: RuntimeError if any atom is not in the molecule.
-
remove_bond
(bond)[source]¶ Remove a bond.
Parameters: bond – ccdc.molecule.Bond
which must be in the moleculeRaises: RuntimeError if the bond is not present
-
remove_bonds
(iterable)[source]¶ Remove bonds.
Parameters: iterable – any iterable of ccdc.molecule.Bond
Raises: RuntimeError if any bond is not in the molecule
-
remove_group
(atom1, atom2)[source]¶ Remove the group of atoms and bonds downstream from atom1, atom2.
Parameters: atom2 (atom1) – ccdc.molecule.Atom
which must be in the molecule.
-
remove_unknown_atoms
()[source]¶ Remove all atoms with an atomic number of zero (e.g. lone pairs, dummy atoms).
-
rings
¶ The collection of basic
ccdc.molecule.Ring
in the molecule.
-
rotate
(xyz, theta)[source]¶ Rotate a molecule about the vector xyz by theta degrees.
The molecule will be rotated about its centre of geometry.
Parameters: - xyz – the rotation axis, a sequence of length 3
- theta – angle by which to rotate, in degrees
-
set_bond_length
(atom1, atom2, distance)[source]¶ Set the bond length between the two atoms to distance.
Parameters: - atom2 (atom1,) –
ccdc.molecule.Atom
- distance – the desired distance between atom1 and atom2
Raises: RuntimeError if the two atoms are not neighbours or if the bond between them is cyclic or if an affected atom has no coordinates
- atom2 (atom1,) –
-
set_coordinates
(mol, atoms=None)[source]¶ Set the coordinates of this molecule to those of the other molecule.
For example AACFAZ has no coordinates, so in some circumstances one might wish to use the coordinates from AACFAZ10.
Parameters: - mol – another molecule
- atoms – an iterable of pairs of atoms, the first of which is in this molecule, the second in the other molecule. If this is empty (or None) then it is assumed that the molecules’ atoms match exactly.
-
set_formal_charges
()[source]¶ Calculate formal charges for atoms assuming bond types and protonation are correct.
-
set_residue_by_component
()[source]¶ Sets the residue label of disconnected components of the molecule.
-
set_torsion_angle
(atom1, atom2, atom3, atom4, theta)[source]¶ Set the torsion angle between the specified atoms to theta.
Parameters: - atom1 –
ccdc.molecule.Atom
- atom2 –
ccdc.molecule.Atom
- atom3 –
ccdc.molecule.Atom
- atom4 –
ccdc.molecule.Atom
- theta – the desired torsion angle in degrees
Raises: RuntimeError if the atoms are not connected or if a bond is cyclic or if an affected atom has no coordinates.
- atom1 –
-
set_valence_angle
(atom1, atom2, atom3, theta)[source]¶ Set the valence angle subtended by atom1, atom2, atom3 to theta.
Parameters: - atom1 –
ccdc.molecule.Atom
- atom2 –
ccdc.molecule.Atom
- atom3 –
ccdc.molecule.Atom
- theta – the desired angle in degrees
Raises: RuntimeError if the atoms are not connected, if either bond is cyclic, or if an affected atom has no coordinates.
- atom1 –
-
shortest_path
(atom1, atom2)[source]¶ Return the shortest path between two atoms.
Parameters: - atom1 –
ccdc.molecule.Atom
- atom2 –
ccdc.molecule.Atom
Returns: integer of shortest path, or 0 if no path can be found.
Raises: TypeError if atoms are not in this molecule.
- atom1 –
-
shortest_path_atoms
(atom1, atom2)[source]¶ The list of atoms along the shortest path from atom1 to atom2.
Parameters: - atom1 –
ccdc.molecule.Atom
- atom2 –
ccdc.molecule.Atom
Returns: list of
ccdc.molecule.Atom
instancesRaises: TypeError if atoms are not in this molecule.
- atom1 –
-
shortest_path_bonds
(atom1, atom2)[source]¶ The list of bonds along the shortest path from atom1 to atom2.
Parameters: - atom1 –
ccdc.molecule.Atom
- atom2 –
ccdc.molecule.Atom
Returns: list of
ccdc.molecule.Bond
instancesRaises: TypeError if atoms are not in this molecule.
- atom1 –
-
smallest_ring_size
¶ Size of the smallest
ccdc.molecule.Ring
in the molecule.Returns: the size of the smallest ccdc.molecule.Ring
orNone
if there are no rings in the molecule.
-
smiles
¶ The canonical SMILES representation of the molecule.
This will raise a RuntimeError if the molecule contains unknown atoms or bonds, delocalised bonds or if there are non-terminal hydrogens.
-
to_string
(format='mol2')[source]¶ Return a string representation of a molecule.
Parameters: format – ‘mol2’, ‘sdf’, ‘mol’, ‘cif’ or ‘smiles’ Return type: string Raises: TypeError if the format string is not ‘mol2’, ‘sdf’, ‘mol’, ‘cif’ or ‘smiles’.
-
transform
(M)[source]¶ Apply a matrix to the coordinates of the molecule.
The method will not check that the matrix is appropriate for a molecular transformation; it is for the user to ensure that inappropriate affine transformations are avoided.
Parameters: M – a sequence of length 4 of sequences of length 4 of floats
-
class