SDF (.sdf, .sd)

Background & Context

    • MIME type: chemical/x-mdl-sdfMDL molecule model files.
    • Used in cheminformatics applications and on the web for storing and exchanging 3D molecule models.
    • Plain text tabular format.
    • Represents an arbitrary number of chemical compounds.
    • Stores atomic coordinates, chemical bond information, and metadata.
    • Maintained by Elsevier Molecular Design Limited (MDL).

Import & Export

  • Import["file.sdf"] imports a list of molecules from an SDF file.
  • Export["file.sdf",expr] exports a molecule or list of molecules to an SDF file.
  • Import["file.sdf",elem] imports the specified element from an SDF file.
  • Import["file.sdf",{elem,suba,subb,}] imports a subelement.
  • Import["file.sdf",{{elem1,elem2,}}] imports multiple elements.
  • The import format can be specified with Import["file","SDF"] or Import["file",{"SDF",elem,}].
  • Export["file.sdf",mol] creates an SDF file from a molecule.
  • Export["file.sdf",{mol1,mol2,}] creates an SDF file from a list of molecules.
  • Export["file.sdf",{expr1,expr2,},{{elem1,elem2,}}] treats each expri as specifying the corresponding elemi.
  • Export["file.sdf",expr,opt1->val1,] exports expr with the specified option elements taken to have the specified values.
  • Export["file.sdf",{elem1->expr1,elem2->expr2,},"Rules"] uses rules to specify the elements to be exported.
  • See the following reference pages for full general information:
  • Import, Exportimport from or export to a file
    CloudImport, CloudExportimport from or export to a cloud object
    ImportString, ExportStringimport from or export to a string
    ImportByteArray, ExportByteArrayimport from or export to a byte array

Import Elements

  • General Import elements:
  • "Elements" list of elements and options available in this file
    "Summary"summary of the file
    "Rules"list of rules for all available elements
  • Data elements:
  • "Molecule"a symbolic representation of the molecule model
    "Molecule", na symbolic representation of the n^(th) molecule
    "Metadata"an Association containing the metadata from the file
    "Metadata", nthe metadata for the n^(th) molecule
  • Graphics elements:
  • "Graphics3D"3D renderings of all molecule models stored in the file
    "Graphics3D",n3D rendering of the n^(th) molecule
    "StructureDiagram"2D structure formulas of all molecules
  • Data representation elements:
  • "EdgeRules"connectivity data, given as a list of lists of rules
    "EdgeTypes"bond types, as a list of lists of strings
    "FormalCharges"charges of the atoms given by "VertexTypes"
    "MassNumbers"isotope mass numbers
    "VertexCoordinates"2D or 3D atomic coordinates, typically in angstroms
    "VertexTypes"all atoms or groups constituting the molecule, typically given as a list of chemical element abbreviations
  • Import["file.sdf","EdgeRules"] gives the connectivity data for all chemical compounds stored in the file as a list of lists of rules.
  • Export["file.sdf",{vertlist,coordlist},{{"VertexTypes","VertexCoordinates"}}] creates an SDF file from a specification of atom types and their 2D or 3D coordinates.
  • Meta-information element:
  • "Header"header information for each molecule stored in the file, given as a list of strings


  • General Import options:
  • ImageSizeAutomaticspecifies the overall size of the graphics to display
    BackgroundWhitespecifies what background color to use
    ViewPointAutomaticpoint in space from which the 3D model is to be viewed
  • With the default setting "ViewPoint"->Automatic, the Wolfram Language automatically calculates the optimal viewing angle for the imported molecule geometry.
  • Selecting a 3D rendering style:
  • "Rendering""BallAndStick"specifies the visualization method
  • Possible settings for "Rendering" are:
  • "BallAndStick"displays atoms and bonds as a ball-and-stick model
    "Spacefilling"atoms shown as overlapping spheres
    "Wireframe"bonds rendered as lines
  • General Export options include:
  • "CoordinateDimension"Automaticwhether to include 2D or 3D coordinates
    "Header"Automatica string to use on the first line
    IncludeHydrogensAutomaticwhether to include explicit hydrogen atoms
  • With the setting of "CoordinateDimension"Automatic, 3 will be chosen if the molecule expression contains explicit AtomCoordinates, and 2 will be chosen if the molecule contains AtomDiagramCoordinates.
  • If neither is present, coordinates will be generated automatically. In this case, three- or two-dimensional coordinates will be used, depending on whether the molecule has explicit or implicit hydrogens, respectively.


open allclose all

Basic Examples  (2)

Show the Import elements available in an SDF file:

Import all molecules:

Import the second molecule from the file:

Import meta-information for the second compound in this file:

This gives the atom types and their 2D coordinates for all structure diagrams stored in the file:

Export a list of molecules to an SDF file:

This creates an SDF file from the previous output:

Export Options  (2)

"CoordinateDimension"  (1)

"Header"  (1)

Use a list of "PubChem" compound IDs to label the output: