FASTA format for DNA/RNA and amino acid sequences


Biomolecule support.

Molecule lets you define biomolecules with labile hydrogen atoms specified using tritium (T) in the chemical formula. The biomolecule object creates forms with natural isotope ratio, all hydrogen and all deuterium. Density can be provided as natural density or cell volume. A %D2O contrast match value is computed for matching the molecule SLD in the presence of labile hydrogens. Molecule.D2Osld() computes the neutron SLD for the solvated molecule in a %D2O solvent.

D2Omatch() computes the %D2O constrast match value given the fully hydrogenated and fully deuterated forms.

Sequence lets you read amino acid and DNA/RNA sequences from FASTA files.

Tables for common molecules are provided[1]:

AMINO_ACID_CODES : amino acids indexed by FASTA code

RNA_CODES, DNA_CODES* : nucleic bases indexed by FASTA code

RNA_BASES, DNA_BASES* : individual nucleic acid bases


Neutron SLD for water at 20C is also provided as H2O_SLD and D2O_SLD.

For unmodified protein need to add 2*T and O for terminations.

Assumes that proteins were created in an environment with the usual H/D isotope ratio on the non-swappable hydrogens.

[1] Perkins, Modern Physical Methods in Biochemistry Part B, 143-265 (1988)


-: gap
A: alanine
B: aspartic acid/asparagine
C: cysteine
D: aspartic acid
E: glutamic acid
F: phenylalanine
G: glycine
H: histidine
I: isoleucine
J: leucine/isoleucine
K: lysine
L: leucine
M: methionine
N: asparagine
P: proline
Q: glutamine
R: arginine
S: serine
T: threonine
V: valine
W: tryptophan
X: any
Y: tyrosine
Z: glutamic acid/glutamine


adenine: C5H2T2N5
cytosine: C4H2T2N3O
deoxyribose: C5H7O2
guanine: C5HT3N5O
phosphate: NaPO3
ribose: C5H6TO3
thymine: C5H4TN2O2
uracil: C4H2TN2O2


Fuc (terminal): C6H7T3O4
Gal: C6H7T3O5
GalNAc: C8H10T3NO5
Glc: C6H7T3O5
GlcNAc: C8H10T3NO5
Man: C6H7T3O5
Man (terminal): C6H7T4O5
NeuNac (terminal): C11H11T5NO8
chondroitin sulphate: C14H15T4NO14SNa
hyaluronate: C14H15T5NO11Na
keratan sulphate: C14H17T5NO13SNa


DMPC-D52: C36H20D52NO8P
cholesteral: C27H45TO
methylene: CH2
methylene-D: CD2
oleate: C45H78O2
palmitate ester: C39H77T2N2O2P
phospholipid headgroup: C10H18NO8P
triglyceride headgroup: C6H5O6
trioleate form: C57H104O6




class periodictable.fasta.Molecule(name, formula, cell_volume=None, density=None, charge=0)

Bases: object

Specify a biomolecule by name, chemical formula, cell volume and charge.

Labile hydrogen positions should be coded using tritium (T) rather than H. That way the tritium can be changed to H[1] for solutions with pure water, H for solutions with a natural abundance of water or D for solutions with pure deuterium.


formula is the original tritiated formula. You can retrieve the hydrogenated or deuterated forms using isotope_substitution() with formula, periodictable.T and periodictable.H or periodictable.D.

D2Omatch is the % D2O in H2O required to contrast match the molecule, including substitution of labile hydrogen in proportion to the D/H ratio.

sld/Hsld/Dsld are the the scattering length densities of the molecule with tritium replaced by naturally occurring H/D ratios, pure H[1] and pure H[2] respectively.

mass/Hmass/Dmass are the masses the three conditions.

charge is the charge on the molecule

cell_volume is the estimated cell volume for the molecule

density is the estimated molecule density

D2Osld(volume_fraction=1.0, D2O_fraction=0.0)

Neutron SLD of the molecule in a %D2O solvent.

class periodictable.fasta.Sequence(name, sequence, type='aa')

Bases: periodictable.fasta.Molecule

Convert FASTA sequence into chemical formula.

name sequence name

sequence code string

type is one of:

aa: amino acid sequence
dna: dna sequence
rna: rna sequence

Note: rna sequence files treat T as U and dna sequence files treat U as T.

D2Osld(volume_fraction=1.0, D2O_fraction=0.0)

Neutron SLD of the molecule in a %D2O solvent.

static load(filename, type=None)

Load the first FASTA sequence from a file.

static loadall(filename, type=None)

Iterate over sequences in FASTA file, loading each in turn.

Yields one FASTA sequence each cycle.

periodictable.fasta.D2Omatch(Hsld, Dsld)

Find the D2O% concentration of solvent such that neutron SLD of the material matches the neutron SLD of the solvent.

Hsld, Dsld are the SLDs for the hydrogenated and deuterated forms of the material respectively, where D includes all the labile protons swapped for deuterons. Water SLD is calculated at 20 C.

Note that the resulting percentage is only meaningful between 0% to 100%. Beyond 100% you will need an additional constrast agent in the 100% D2O solvent to increase the SLD enough to match.

periodictable.fasta.isotope_substitution(formula, source, target, portion=1)

Substitute one atom/isotope in a formula with another in some proportion.

formula is the formula being updated.

source is the isotope/element to be substituted.

target is the replacement isotope/element.

portion is the proportion of source which is substituted for target.


Iterate over the sequences in a FASTA file.

Each iteration is a pair (sequence name, sequence codes).