biotite 1.5.0__cp314-cp314-macosx_10_13_x86_64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of biotite might be problematic. Click here for more details.
- biotite/__init__.py +18 -0
- biotite/application/__init__.py +69 -0
- biotite/application/application.py +276 -0
- biotite/application/autodock/__init__.py +12 -0
- biotite/application/autodock/app.py +500 -0
- biotite/application/blast/__init__.py +14 -0
- biotite/application/blast/alignment.py +92 -0
- biotite/application/blast/webapp.py +428 -0
- biotite/application/clustalo/__init__.py +12 -0
- biotite/application/clustalo/app.py +223 -0
- biotite/application/dssp/__init__.py +12 -0
- biotite/application/dssp/app.py +216 -0
- biotite/application/localapp.py +342 -0
- biotite/application/mafft/__init__.py +12 -0
- biotite/application/mafft/app.py +116 -0
- biotite/application/msaapp.py +363 -0
- biotite/application/muscle/__init__.py +13 -0
- biotite/application/muscle/app3.py +227 -0
- biotite/application/muscle/app5.py +163 -0
- biotite/application/sra/__init__.py +18 -0
- biotite/application/sra/app.py +447 -0
- biotite/application/tantan/__init__.py +12 -0
- biotite/application/tantan/app.py +199 -0
- biotite/application/util.py +77 -0
- biotite/application/viennarna/__init__.py +18 -0
- biotite/application/viennarna/rnaalifold.py +310 -0
- biotite/application/viennarna/rnafold.py +254 -0
- biotite/application/viennarna/rnaplot.py +208 -0
- biotite/application/viennarna/util.py +77 -0
- biotite/application/webapp.py +76 -0
- biotite/copyable.py +71 -0
- biotite/database/__init__.py +23 -0
- biotite/database/afdb/__init__.py +12 -0
- biotite/database/afdb/download.py +197 -0
- biotite/database/entrez/__init__.py +15 -0
- biotite/database/entrez/check.py +60 -0
- biotite/database/entrez/dbnames.py +101 -0
- biotite/database/entrez/download.py +228 -0
- biotite/database/entrez/key.py +44 -0
- biotite/database/entrez/query.py +263 -0
- biotite/database/error.py +16 -0
- biotite/database/pubchem/__init__.py +21 -0
- biotite/database/pubchem/download.py +258 -0
- biotite/database/pubchem/error.py +30 -0
- biotite/database/pubchem/query.py +819 -0
- biotite/database/pubchem/throttle.py +98 -0
- biotite/database/rcsb/__init__.py +13 -0
- biotite/database/rcsb/download.py +161 -0
- biotite/database/rcsb/query.py +963 -0
- biotite/database/uniprot/__init__.py +13 -0
- biotite/database/uniprot/check.py +40 -0
- biotite/database/uniprot/download.py +126 -0
- biotite/database/uniprot/query.py +292 -0
- biotite/file.py +244 -0
- biotite/interface/__init__.py +19 -0
- biotite/interface/openmm/__init__.py +20 -0
- biotite/interface/openmm/state.py +93 -0
- biotite/interface/openmm/system.py +227 -0
- biotite/interface/pymol/__init__.py +201 -0
- biotite/interface/pymol/cgo.py +346 -0
- biotite/interface/pymol/convert.py +185 -0
- biotite/interface/pymol/display.py +267 -0
- biotite/interface/pymol/object.py +1228 -0
- biotite/interface/pymol/shapes.py +178 -0
- biotite/interface/pymol/startup.py +169 -0
- biotite/interface/rdkit/__init__.py +19 -0
- biotite/interface/rdkit/mol.py +490 -0
- biotite/interface/version.py +94 -0
- biotite/interface/warning.py +19 -0
- biotite/sequence/__init__.py +84 -0
- biotite/sequence/align/__init__.py +199 -0
- biotite/sequence/align/alignment.py +702 -0
- biotite/sequence/align/banded.cpython-314-darwin.so +0 -0
- biotite/sequence/align/banded.pyx +652 -0
- biotite/sequence/align/buckets.py +71 -0
- biotite/sequence/align/cigar.py +425 -0
- biotite/sequence/align/kmeralphabet.cpython-314-darwin.so +0 -0
- biotite/sequence/align/kmeralphabet.pyx +595 -0
- biotite/sequence/align/kmersimilarity.cpython-314-darwin.so +0 -0
- biotite/sequence/align/kmersimilarity.pyx +233 -0
- biotite/sequence/align/kmertable.cpython-314-darwin.so +0 -0
- biotite/sequence/align/kmertable.pyx +3411 -0
- biotite/sequence/align/localgapped.cpython-314-darwin.so +0 -0
- biotite/sequence/align/localgapped.pyx +892 -0
- biotite/sequence/align/localungapped.cpython-314-darwin.so +0 -0
- biotite/sequence/align/localungapped.pyx +279 -0
- biotite/sequence/align/matrix.py +631 -0
- biotite/sequence/align/matrix_data/3Di.mat +24 -0
- biotite/sequence/align/matrix_data/BLOSUM100.mat +31 -0
- biotite/sequence/align/matrix_data/BLOSUM30.mat +31 -0
- biotite/sequence/align/matrix_data/BLOSUM35.mat +31 -0
- biotite/sequence/align/matrix_data/BLOSUM40.mat +31 -0
- biotite/sequence/align/matrix_data/BLOSUM45.mat +31 -0
- biotite/sequence/align/matrix_data/BLOSUM50.mat +31 -0
- biotite/sequence/align/matrix_data/BLOSUM50_13p.mat +25 -0
- biotite/sequence/align/matrix_data/BLOSUM50_14.3.mat +25 -0
- biotite/sequence/align/matrix_data/BLOSUM50_5.0.mat +25 -0
- biotite/sequence/align/matrix_data/BLOSUM55.mat +31 -0
- biotite/sequence/align/matrix_data/BLOSUM60.mat +31 -0
- biotite/sequence/align/matrix_data/BLOSUM62.mat +31 -0
- biotite/sequence/align/matrix_data/BLOSUM62_13p.mat +25 -0
- biotite/sequence/align/matrix_data/BLOSUM62_14.3.mat +25 -0
- biotite/sequence/align/matrix_data/BLOSUM62_5.0.mat +25 -0
- biotite/sequence/align/matrix_data/BLOSUM65.mat +31 -0
- biotite/sequence/align/matrix_data/BLOSUM70.mat +31 -0
- biotite/sequence/align/matrix_data/BLOSUM75.mat +31 -0
- biotite/sequence/align/matrix_data/BLOSUM80.mat +31 -0
- biotite/sequence/align/matrix_data/BLOSUM85.mat +31 -0
- biotite/sequence/align/matrix_data/BLOSUM90.mat +31 -0
- biotite/sequence/align/matrix_data/BLOSUMN.mat +31 -0
- biotite/sequence/align/matrix_data/CorBLOSUM49_5.0.mat +25 -0
- biotite/sequence/align/matrix_data/CorBLOSUM57_13p.mat +25 -0
- biotite/sequence/align/matrix_data/CorBLOSUM57_14.3.mat +25 -0
- biotite/sequence/align/matrix_data/CorBLOSUM61_5.0.mat +25 -0
- biotite/sequence/align/matrix_data/CorBLOSUM66_13p.mat +25 -0
- biotite/sequence/align/matrix_data/CorBLOSUM67_14.3.mat +25 -0
- biotite/sequence/align/matrix_data/DAYHOFF.mat +32 -0
- biotite/sequence/align/matrix_data/GONNET.mat +26 -0
- biotite/sequence/align/matrix_data/IDENTITY.mat +25 -0
- biotite/sequence/align/matrix_data/MATCH.mat +25 -0
- biotite/sequence/align/matrix_data/NUC.mat +25 -0
- biotite/sequence/align/matrix_data/PAM10.mat +34 -0
- biotite/sequence/align/matrix_data/PAM100.mat +34 -0
- biotite/sequence/align/matrix_data/PAM110.mat +34 -0
- biotite/sequence/align/matrix_data/PAM120.mat +34 -0
- biotite/sequence/align/matrix_data/PAM130.mat +34 -0
- biotite/sequence/align/matrix_data/PAM140.mat +34 -0
- biotite/sequence/align/matrix_data/PAM150.mat +34 -0
- biotite/sequence/align/matrix_data/PAM160.mat +34 -0
- biotite/sequence/align/matrix_data/PAM170.mat +34 -0
- biotite/sequence/align/matrix_data/PAM180.mat +34 -0
- biotite/sequence/align/matrix_data/PAM190.mat +34 -0
- biotite/sequence/align/matrix_data/PAM20.mat +34 -0
- biotite/sequence/align/matrix_data/PAM200.mat +34 -0
- biotite/sequence/align/matrix_data/PAM210.mat +34 -0
- biotite/sequence/align/matrix_data/PAM220.mat +34 -0
- biotite/sequence/align/matrix_data/PAM230.mat +34 -0
- biotite/sequence/align/matrix_data/PAM240.mat +34 -0
- biotite/sequence/align/matrix_data/PAM250.mat +34 -0
- biotite/sequence/align/matrix_data/PAM260.mat +34 -0
- biotite/sequence/align/matrix_data/PAM270.mat +34 -0
- biotite/sequence/align/matrix_data/PAM280.mat +34 -0
- biotite/sequence/align/matrix_data/PAM290.mat +34 -0
- biotite/sequence/align/matrix_data/PAM30.mat +34 -0
- biotite/sequence/align/matrix_data/PAM300.mat +34 -0
- biotite/sequence/align/matrix_data/PAM310.mat +34 -0
- biotite/sequence/align/matrix_data/PAM320.mat +34 -0
- biotite/sequence/align/matrix_data/PAM330.mat +34 -0
- biotite/sequence/align/matrix_data/PAM340.mat +34 -0
- biotite/sequence/align/matrix_data/PAM350.mat +34 -0
- biotite/sequence/align/matrix_data/PAM360.mat +34 -0
- biotite/sequence/align/matrix_data/PAM370.mat +34 -0
- biotite/sequence/align/matrix_data/PAM380.mat +34 -0
- biotite/sequence/align/matrix_data/PAM390.mat +34 -0
- biotite/sequence/align/matrix_data/PAM40.mat +34 -0
- biotite/sequence/align/matrix_data/PAM400.mat +34 -0
- biotite/sequence/align/matrix_data/PAM410.mat +34 -0
- biotite/sequence/align/matrix_data/PAM420.mat +34 -0
- biotite/sequence/align/matrix_data/PAM430.mat +34 -0
- biotite/sequence/align/matrix_data/PAM440.mat +34 -0
- biotite/sequence/align/matrix_data/PAM450.mat +34 -0
- biotite/sequence/align/matrix_data/PAM460.mat +34 -0
- biotite/sequence/align/matrix_data/PAM470.mat +34 -0
- biotite/sequence/align/matrix_data/PAM480.mat +34 -0
- biotite/sequence/align/matrix_data/PAM490.mat +34 -0
- biotite/sequence/align/matrix_data/PAM50.mat +34 -0
- biotite/sequence/align/matrix_data/PAM500.mat +34 -0
- biotite/sequence/align/matrix_data/PAM60.mat +34 -0
- biotite/sequence/align/matrix_data/PAM70.mat +34 -0
- biotite/sequence/align/matrix_data/PAM80.mat +34 -0
- biotite/sequence/align/matrix_data/PAM90.mat +34 -0
- biotite/sequence/align/matrix_data/PB.license +21 -0
- biotite/sequence/align/matrix_data/PB.mat +18 -0
- biotite/sequence/align/matrix_data/RBLOSUM52_5.0.mat +25 -0
- biotite/sequence/align/matrix_data/RBLOSUM59_13p.mat +25 -0
- biotite/sequence/align/matrix_data/RBLOSUM59_14.3.mat +25 -0
- biotite/sequence/align/matrix_data/RBLOSUM64_5.0.mat +25 -0
- biotite/sequence/align/matrix_data/RBLOSUM69_13p.mat +25 -0
- biotite/sequence/align/matrix_data/RBLOSUM69_14.3.mat +25 -0
- biotite/sequence/align/multiple.cpython-314-darwin.so +0 -0
- biotite/sequence/align/multiple.pyx +619 -0
- biotite/sequence/align/pairwise.cpython-314-darwin.so +0 -0
- biotite/sequence/align/pairwise.pyx +585 -0
- biotite/sequence/align/permutation.cpython-314-darwin.so +0 -0
- biotite/sequence/align/permutation.pyx +313 -0
- biotite/sequence/align/primes.txt +821 -0
- biotite/sequence/align/selector.cpython-314-darwin.so +0 -0
- biotite/sequence/align/selector.pyx +954 -0
- biotite/sequence/align/statistics.py +264 -0
- biotite/sequence/align/tracetable.cpython-314-darwin.so +0 -0
- biotite/sequence/align/tracetable.pxd +64 -0
- biotite/sequence/align/tracetable.pyx +370 -0
- biotite/sequence/alphabet.py +555 -0
- biotite/sequence/annotation.py +836 -0
- biotite/sequence/codec.cpython-314-darwin.so +0 -0
- biotite/sequence/codec.pyx +155 -0
- biotite/sequence/codon.py +476 -0
- biotite/sequence/codon_tables.txt +202 -0
- biotite/sequence/graphics/__init__.py +33 -0
- biotite/sequence/graphics/alignment.py +1101 -0
- biotite/sequence/graphics/color_schemes/3di_flower.json +48 -0
- biotite/sequence/graphics/color_schemes/autumn.json +51 -0
- biotite/sequence/graphics/color_schemes/blossom.json +51 -0
- biotite/sequence/graphics/color_schemes/clustalx_dna.json +11 -0
- biotite/sequence/graphics/color_schemes/clustalx_protein.json +28 -0
- biotite/sequence/graphics/color_schemes/flower.json +51 -0
- biotite/sequence/graphics/color_schemes/jalview_buried.json +31 -0
- biotite/sequence/graphics/color_schemes/jalview_hydrophobicity.json +31 -0
- biotite/sequence/graphics/color_schemes/jalview_prop_helix.json +31 -0
- biotite/sequence/graphics/color_schemes/jalview_prop_strand.json +31 -0
- biotite/sequence/graphics/color_schemes/jalview_prop_turn.json +31 -0
- biotite/sequence/graphics/color_schemes/jalview_taylor.json +28 -0
- biotite/sequence/graphics/color_schemes/jalview_zappo.json +28 -0
- biotite/sequence/graphics/color_schemes/ocean.json +51 -0
- biotite/sequence/graphics/color_schemes/pb_flower.json +40 -0
- biotite/sequence/graphics/color_schemes/rainbow_dna.json +11 -0
- biotite/sequence/graphics/color_schemes/rainbow_protein.json +30 -0
- biotite/sequence/graphics/color_schemes/spring.json +51 -0
- biotite/sequence/graphics/color_schemes/sunset.json +51 -0
- biotite/sequence/graphics/color_schemes/wither.json +51 -0
- biotite/sequence/graphics/colorschemes.py +170 -0
- biotite/sequence/graphics/dendrogram.py +231 -0
- biotite/sequence/graphics/features.py +544 -0
- biotite/sequence/graphics/logo.py +102 -0
- biotite/sequence/graphics/plasmid.py +712 -0
- biotite/sequence/io/__init__.py +12 -0
- biotite/sequence/io/fasta/__init__.py +22 -0
- biotite/sequence/io/fasta/convert.py +283 -0
- biotite/sequence/io/fasta/file.py +265 -0
- biotite/sequence/io/fastq/__init__.py +19 -0
- biotite/sequence/io/fastq/convert.py +117 -0
- biotite/sequence/io/fastq/file.py +507 -0
- biotite/sequence/io/genbank/__init__.py +17 -0
- biotite/sequence/io/genbank/annotation.py +269 -0
- biotite/sequence/io/genbank/file.py +573 -0
- biotite/sequence/io/genbank/metadata.py +336 -0
- biotite/sequence/io/genbank/sequence.py +173 -0
- biotite/sequence/io/general.py +201 -0
- biotite/sequence/io/gff/__init__.py +26 -0
- biotite/sequence/io/gff/convert.py +128 -0
- biotite/sequence/io/gff/file.py +449 -0
- biotite/sequence/phylo/__init__.py +36 -0
- biotite/sequence/phylo/nj.cpython-314-darwin.so +0 -0
- biotite/sequence/phylo/nj.pyx +221 -0
- biotite/sequence/phylo/tree.cpython-314-darwin.so +0 -0
- biotite/sequence/phylo/tree.pyx +1169 -0
- biotite/sequence/phylo/upgma.cpython-314-darwin.so +0 -0
- biotite/sequence/phylo/upgma.pyx +164 -0
- biotite/sequence/profile.py +561 -0
- biotite/sequence/search.py +117 -0
- biotite/sequence/seqtypes.py +720 -0
- biotite/sequence/sequence.py +373 -0
- biotite/setup_ccd.py +197 -0
- biotite/structure/__init__.py +135 -0
- biotite/structure/alphabet/__init__.py +25 -0
- biotite/structure/alphabet/encoder.py +332 -0
- biotite/structure/alphabet/encoder_weights_3di.kerasify +0 -0
- biotite/structure/alphabet/i3d.py +109 -0
- biotite/structure/alphabet/layers.py +86 -0
- biotite/structure/alphabet/pb.license +21 -0
- biotite/structure/alphabet/pb.py +170 -0
- biotite/structure/alphabet/unkerasify.py +128 -0
- biotite/structure/atoms.py +1562 -0
- biotite/structure/basepairs.py +1403 -0
- biotite/structure/bonds.cpython-314-darwin.so +0 -0
- biotite/structure/bonds.pyx +2036 -0
- biotite/structure/box.py +724 -0
- biotite/structure/celllist.cpython-314-darwin.so +0 -0
- biotite/structure/celllist.pyx +864 -0
- biotite/structure/chains.py +310 -0
- biotite/structure/charges.cpython-314-darwin.so +0 -0
- biotite/structure/charges.pyx +520 -0
- biotite/structure/compare.py +683 -0
- biotite/structure/density.py +109 -0
- biotite/structure/dotbracket.py +213 -0
- biotite/structure/error.py +39 -0
- biotite/structure/filter.py +591 -0
- biotite/structure/geometry.py +817 -0
- biotite/structure/graphics/__init__.py +13 -0
- biotite/structure/graphics/atoms.py +243 -0
- biotite/structure/graphics/rna.py +298 -0
- biotite/structure/hbond.py +425 -0
- biotite/structure/info/__init__.py +24 -0
- biotite/structure/info/atom_masses.json +121 -0
- biotite/structure/info/atoms.py +98 -0
- biotite/structure/info/bonds.py +149 -0
- biotite/structure/info/ccd.py +200 -0
- biotite/structure/info/components.bcif +0 -0
- biotite/structure/info/groups.py +128 -0
- biotite/structure/info/masses.py +121 -0
- biotite/structure/info/misc.py +137 -0
- biotite/structure/info/radii.py +267 -0
- biotite/structure/info/standardize.py +185 -0
- biotite/structure/integrity.py +213 -0
- biotite/structure/io/__init__.py +29 -0
- biotite/structure/io/dcd/__init__.py +13 -0
- biotite/structure/io/dcd/file.py +67 -0
- biotite/structure/io/general.py +243 -0
- biotite/structure/io/gro/__init__.py +14 -0
- biotite/structure/io/gro/file.py +343 -0
- biotite/structure/io/mol/__init__.py +20 -0
- biotite/structure/io/mol/convert.py +112 -0
- biotite/structure/io/mol/ctab.py +420 -0
- biotite/structure/io/mol/header.py +120 -0
- biotite/structure/io/mol/mol.py +149 -0
- biotite/structure/io/mol/sdf.py +940 -0
- biotite/structure/io/netcdf/__init__.py +13 -0
- biotite/structure/io/netcdf/file.py +64 -0
- biotite/structure/io/pdb/__init__.py +20 -0
- biotite/structure/io/pdb/convert.py +389 -0
- biotite/structure/io/pdb/file.py +1380 -0
- biotite/structure/io/pdb/hybrid36.cpython-314-darwin.so +0 -0
- biotite/structure/io/pdb/hybrid36.pyx +242 -0
- biotite/structure/io/pdbqt/__init__.py +15 -0
- biotite/structure/io/pdbqt/convert.py +113 -0
- biotite/structure/io/pdbqt/file.py +688 -0
- biotite/structure/io/pdbx/__init__.py +23 -0
- biotite/structure/io/pdbx/bcif.py +674 -0
- biotite/structure/io/pdbx/cif.py +1091 -0
- biotite/structure/io/pdbx/component.py +251 -0
- biotite/structure/io/pdbx/compress.py +362 -0
- biotite/structure/io/pdbx/convert.py +2113 -0
- biotite/structure/io/pdbx/encoding.cpython-314-darwin.so +0 -0
- biotite/structure/io/pdbx/encoding.pyx +1078 -0
- biotite/structure/io/trajfile.py +696 -0
- biotite/structure/io/trr/__init__.py +13 -0
- biotite/structure/io/trr/file.py +43 -0
- biotite/structure/io/util.py +38 -0
- biotite/structure/io/xtc/__init__.py +13 -0
- biotite/structure/io/xtc/file.py +43 -0
- biotite/structure/mechanics.py +72 -0
- biotite/structure/molecules.py +337 -0
- biotite/structure/pseudoknots.py +622 -0
- biotite/structure/rdf.py +245 -0
- biotite/structure/repair.py +302 -0
- biotite/structure/residues.py +716 -0
- biotite/structure/rings.py +451 -0
- biotite/structure/sasa.cpython-314-darwin.so +0 -0
- biotite/structure/sasa.pyx +322 -0
- biotite/structure/segments.py +328 -0
- biotite/structure/sequence.py +110 -0
- biotite/structure/spacegroups.json +1567 -0
- biotite/structure/spacegroups.license +26 -0
- biotite/structure/sse.py +306 -0
- biotite/structure/superimpose.py +511 -0
- biotite/structure/tm.py +581 -0
- biotite/structure/transform.py +736 -0
- biotite/structure/util.py +160 -0
- biotite/version.py +34 -0
- biotite/visualize.py +375 -0
- biotite-1.5.0.dist-info/METADATA +162 -0
- biotite-1.5.0.dist-info/RECORD +354 -0
- biotite-1.5.0.dist-info/WHEEL +6 -0
- biotite-1.5.0.dist-info/licenses/LICENSE.rst +30 -0
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# This source code is part of the Biotite package and is distributed
|
|
2
|
+
# under the 3-Clause BSD License. Please see 'LICENSE.rst' for further
|
|
3
|
+
# information.
|
|
4
|
+
|
|
5
|
+
"""
|
|
6
|
+
This module provides functions to calculate atomistic densities.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
__name__ = "biotite.structure"
|
|
10
|
+
__author__ = "Daniel Bauer"
|
|
11
|
+
__all__ = ["density"]
|
|
12
|
+
|
|
13
|
+
import numpy as np
|
|
14
|
+
from biotite.structure.atoms import coord
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def density(atoms, selection=None, delta=1.0, bins=None, density=False, weights=None):
|
|
18
|
+
r"""
|
|
19
|
+
Compute the density of the selected atoms.
|
|
20
|
+
|
|
21
|
+
This creates a 3d histogram over the coordinates of selected atoms.
|
|
22
|
+
By default, the grid for the histogram is built based on the
|
|
23
|
+
coordinates of the given `atoms` with an even gridspacing of
|
|
24
|
+
`delta` in all three dimensions.
|
|
25
|
+
Alternatively, a custom grid can be used.
|
|
26
|
+
|
|
27
|
+
Parameters
|
|
28
|
+
----------
|
|
29
|
+
atoms : AtomArray or AtomArrayStack or ndarray, shape=(n,3) or shape=(m,n,3)
|
|
30
|
+
The density is calculated based on these atoms.
|
|
31
|
+
Alternatively, the coordinates can be directly provided as
|
|
32
|
+
`ndarray`.
|
|
33
|
+
selection : ndarray, dtype=bool, shape=(n,), optional
|
|
34
|
+
Boolean mask for `atoms` to calculate the density only on a set
|
|
35
|
+
of atoms.
|
|
36
|
+
delta : float, optional
|
|
37
|
+
Distance between grid points for density calculation (in Å).
|
|
38
|
+
bins : int or sequence of scalars or str, optional
|
|
39
|
+
Bins for the RDF.
|
|
40
|
+
|
|
41
|
+
- If `bins` is an `int`, it defines the number of bins.
|
|
42
|
+
- If `bins` is a sequence, it defines the bin edges, ignoring
|
|
43
|
+
the actual coordinates of the `atoms` selection.
|
|
44
|
+
- If `bins` is a string, it defines the function used to
|
|
45
|
+
calculate the bins.
|
|
46
|
+
|
|
47
|
+
See :func:`numpy.histogramdd()` for further details.
|
|
48
|
+
density : boolean, optional
|
|
49
|
+
If False, the number of samples in each bin is returned.
|
|
50
|
+
Otherwise, returns the probability density function of each bin.
|
|
51
|
+
See :func:`numpy.histogramdd()` for further details.
|
|
52
|
+
weights : ndarray, shape=(n,) or shape=(m,n), optional
|
|
53
|
+
An array of values to weight the contribution of *n* atoms in
|
|
54
|
+
*m* models.
|
|
55
|
+
If the shape is *(n,)*, the weights will be interpreted as
|
|
56
|
+
*per atom*.
|
|
57
|
+
A shape of *(m,n)* allows to additionally weight atoms on a
|
|
58
|
+
*per model* basis.
|
|
59
|
+
|
|
60
|
+
Returns
|
|
61
|
+
-------
|
|
62
|
+
H : ndarray, dtype=float
|
|
63
|
+
The threedimensional histogram of the selected atoms.
|
|
64
|
+
The histogram takes the atoms in all models into account.
|
|
65
|
+
The length of the histogram depends on `atoms` coordinates and
|
|
66
|
+
`delta`, or the supplied `bins` input parameter.
|
|
67
|
+
edges : list of ndarray, dtype=float
|
|
68
|
+
A list containing the 3 arrays describing the bin edges.
|
|
69
|
+
"""
|
|
70
|
+
coords = coord(atoms)
|
|
71
|
+
|
|
72
|
+
is_stack = coords.ndim == 3
|
|
73
|
+
|
|
74
|
+
# Define the grid for coordinate binning based on coordinates of
|
|
75
|
+
# supplied atoms
|
|
76
|
+
# This makes the binning independent of a supplied box vector and
|
|
77
|
+
# fluctuating box dimensions are not a problem
|
|
78
|
+
# However, this means that the user has to make sure the region of
|
|
79
|
+
# interest is in the center of the box, i.e. by centering the
|
|
80
|
+
# investigated protein in the box.
|
|
81
|
+
if bins is None:
|
|
82
|
+
if is_stack:
|
|
83
|
+
axis = (0, 1)
|
|
84
|
+
else:
|
|
85
|
+
axis = 0
|
|
86
|
+
grid_min, grid_max = np.min(coords, axis=axis), np.max(coords, axis=axis)
|
|
87
|
+
bins = [
|
|
88
|
+
np.arange(grid_min[0], grid_max[0] + delta, delta),
|
|
89
|
+
np.arange(grid_min[1], grid_max[1] + delta, delta),
|
|
90
|
+
np.arange(grid_min[2], grid_max[2] + delta, delta),
|
|
91
|
+
]
|
|
92
|
+
|
|
93
|
+
if selection is None:
|
|
94
|
+
selected_coords = coords
|
|
95
|
+
else:
|
|
96
|
+
selected_coords = coords[..., selection, :]
|
|
97
|
+
|
|
98
|
+
# Reshape the coords into Nx3
|
|
99
|
+
coords = selected_coords.reshape((np.prod(selected_coords.shape[:-1]), 3))
|
|
100
|
+
|
|
101
|
+
# We need a weight value per coordinate, but input might be per atom
|
|
102
|
+
if weights is not None:
|
|
103
|
+
if is_stack and len(weights.shape) < 2:
|
|
104
|
+
weights = np.tile(weights, len(selected_coords))
|
|
105
|
+
weights = weights.reshape(coords.shape[0])
|
|
106
|
+
|
|
107
|
+
# Calculate the histogram
|
|
108
|
+
hist = np.histogramdd(coords, bins=bins, density=density, weights=weights)
|
|
109
|
+
return hist
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
# This source code is part of the Biotite package and is distributed
|
|
2
|
+
# under the 3-Clause BSD License. Please see 'LICENSE.rst' for further
|
|
3
|
+
# information.
|
|
4
|
+
|
|
5
|
+
"""
|
|
6
|
+
This module handles conversion of RNA structures to
|
|
7
|
+
dot-bracket-notation.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
__name__ = "biotite.structure"
|
|
11
|
+
__author__ = "Tom David Müller"
|
|
12
|
+
__all__ = ["dot_bracket_from_structure", "dot_bracket", "base_pairs_from_dot_bracket"]
|
|
13
|
+
|
|
14
|
+
import numpy as np
|
|
15
|
+
from biotite.structure.basepairs import base_pairs
|
|
16
|
+
from biotite.structure.pseudoknots import pseudoknots
|
|
17
|
+
from biotite.structure.residues import get_residue_count, get_residue_positions
|
|
18
|
+
|
|
19
|
+
_OPENING_BRACKETS = "([{<ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
|
20
|
+
_OPENING_BRACKETS_BYTES = _OPENING_BRACKETS.encode()
|
|
21
|
+
_CLOSING_BRACKETS = ")]}>abcdefghijklmnopqrstuvwxyz"
|
|
22
|
+
_CLOSING_BRACKETS_BYTES = _CLOSING_BRACKETS.encode()
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def dot_bracket_from_structure(
|
|
26
|
+
nucleic_acid_strand, scores=None, max_pseudoknot_order=None
|
|
27
|
+
):
|
|
28
|
+
"""
|
|
29
|
+
Represent a nucleic-acid-strand in dot-bracket-letter-notation
|
|
30
|
+
(DBL-notation). :footcite:`Antczak2018`
|
|
31
|
+
|
|
32
|
+
Parameters
|
|
33
|
+
----------
|
|
34
|
+
nucleic_acid_strand : AtomArray
|
|
35
|
+
The nucleic acid strand to be represented in DBL-notation.
|
|
36
|
+
scores : ndarray, dtype=int, shape=(n,)
|
|
37
|
+
The score for each base pair, which is passed on to
|
|
38
|
+
:func:`pseudoknots()`.
|
|
39
|
+
max_pseudoknot_order : int
|
|
40
|
+
The maximum pseudoknot order to be found. If a base pair would
|
|
41
|
+
be of a higher order, it is represented as unpaired. If ``None``
|
|
42
|
+
is given, all base pairs are evaluated.
|
|
43
|
+
|
|
44
|
+
Returns
|
|
45
|
+
-------
|
|
46
|
+
notations : list [str, ...]
|
|
47
|
+
The DBL-notation for each solution from :func:`pseudoknots()`.
|
|
48
|
+
|
|
49
|
+
See Also
|
|
50
|
+
--------
|
|
51
|
+
base_pairs : Compute the base pairs from a structure as passed to this function.
|
|
52
|
+
dot_bracket : Compute the dot bracket notation directly from base pairs.
|
|
53
|
+
pseudoknots : Get the pseudoknot order for each base pair.
|
|
54
|
+
|
|
55
|
+
References
|
|
56
|
+
----------
|
|
57
|
+
|
|
58
|
+
.. footbibliography::
|
|
59
|
+
"""
|
|
60
|
+
basepairs = base_pairs(nucleic_acid_strand)
|
|
61
|
+
if len(basepairs) == 0:
|
|
62
|
+
return [""]
|
|
63
|
+
basepairs = get_residue_positions(nucleic_acid_strand, basepairs)
|
|
64
|
+
length = get_residue_count(nucleic_acid_strand)
|
|
65
|
+
return dot_bracket(
|
|
66
|
+
basepairs, length, scores=scores, max_pseudoknot_order=max_pseudoknot_order
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
def dot_bracket(basepairs, length, scores=None, max_pseudoknot_order=None):
|
|
71
|
+
"""
|
|
72
|
+
Represent a nucleic acid strand in dot-bracket-letter-notation
|
|
73
|
+
(DBL-notation). :footcite:`Antczak2018`
|
|
74
|
+
|
|
75
|
+
The nucleic acid strand is represented as nucleotide sequence,
|
|
76
|
+
where the nucleotides are counted continiously from zero.
|
|
77
|
+
|
|
78
|
+
Parameters
|
|
79
|
+
----------
|
|
80
|
+
basepairs : ndarray, shape=(n,2)
|
|
81
|
+
Each row corresponds to the positions of the bases in the
|
|
82
|
+
strand.
|
|
83
|
+
length : int
|
|
84
|
+
The number of bases in the strand.
|
|
85
|
+
scores : ndarray, dtype=int, shape=(n,)
|
|
86
|
+
The score for each base pair, which is passed on to :func:`pseudoknots()`.
|
|
87
|
+
max_pseudoknot_order : int
|
|
88
|
+
The maximum pseudoknot order to be found. If a base pair would
|
|
89
|
+
be of a higher order, it is represented as unpaired. If ``None``
|
|
90
|
+
is given, all pseudoknot orders are evaluated.
|
|
91
|
+
|
|
92
|
+
Returns
|
|
93
|
+
-------
|
|
94
|
+
notations : list [str, ...]
|
|
95
|
+
The DBL-notation for each solution from :func:`pseudoknots()`.
|
|
96
|
+
|
|
97
|
+
See Also
|
|
98
|
+
--------
|
|
99
|
+
base_pairs_from_dot_bracket : The reverse operation.
|
|
100
|
+
dot_bracket_from_structure : Compute the dot bracket notation from a structure.
|
|
101
|
+
base_pairs : Compute the base pairs from a structure as passed to this function.
|
|
102
|
+
pseudoknots : Get the pseudoknot order for each base pair.
|
|
103
|
+
|
|
104
|
+
References
|
|
105
|
+
----------
|
|
106
|
+
|
|
107
|
+
.. footbibliography::
|
|
108
|
+
|
|
109
|
+
Examples
|
|
110
|
+
--------
|
|
111
|
+
The sequence ``ACGTC`` has a length of 5. If there was to be a
|
|
112
|
+
pairing interaction between the ``A`` and ``T``, `basepairs` would
|
|
113
|
+
have the form:
|
|
114
|
+
|
|
115
|
+
>>> import numpy as np
|
|
116
|
+
>>> basepairs = np.array([[0, 3]])
|
|
117
|
+
|
|
118
|
+
The DBL Notation can then be found with ``dot_bracket()``:
|
|
119
|
+
|
|
120
|
+
>>> dot_bracket(basepairs, 5)[0]
|
|
121
|
+
'(..).'
|
|
122
|
+
"""
|
|
123
|
+
# Make sure the lower residue is on the left for each row
|
|
124
|
+
basepairs = np.sort(basepairs, axis=1)
|
|
125
|
+
|
|
126
|
+
# Get pseudoknot order
|
|
127
|
+
pseudoknot_order = pseudoknots(
|
|
128
|
+
basepairs, scores=scores, max_pseudoknot_order=max_pseudoknot_order
|
|
129
|
+
)
|
|
130
|
+
|
|
131
|
+
# Each optimal pseudoknot order solution is represented in
|
|
132
|
+
# dot-bracket-notation
|
|
133
|
+
notations = [bytearray((b"." * length)) for _ in range(len(pseudoknot_order))]
|
|
134
|
+
for s, solution in enumerate(pseudoknot_order):
|
|
135
|
+
for basepair, order in zip(basepairs, solution):
|
|
136
|
+
if order == -1:
|
|
137
|
+
continue
|
|
138
|
+
notations[s][basepair[0]] = _OPENING_BRACKETS_BYTES[order]
|
|
139
|
+
notations[s][basepair[1]] = _CLOSING_BRACKETS_BYTES[order]
|
|
140
|
+
return [notation.decode() for notation in notations]
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
def base_pairs_from_dot_bracket(dot_bracket_notation):
|
|
144
|
+
"""
|
|
145
|
+
Extract the base pairs from a nucleic-acid-strand in
|
|
146
|
+
dot-bracket-letter-notation (DBL-notation). :footcite:`Antczak2018`
|
|
147
|
+
|
|
148
|
+
The nucleic acid strand is represented as nucleotide sequence,
|
|
149
|
+
where the nucleotides are counted continiously from zero.
|
|
150
|
+
|
|
151
|
+
Parameters
|
|
152
|
+
----------
|
|
153
|
+
dot_bracket_notation : str
|
|
154
|
+
The DBL-notation.
|
|
155
|
+
|
|
156
|
+
Returns
|
|
157
|
+
-------
|
|
158
|
+
basepairs : ndarray, shape=(n,2)
|
|
159
|
+
Each row corresponds to the positions of the bases in the
|
|
160
|
+
sequence.
|
|
161
|
+
|
|
162
|
+
See Also
|
|
163
|
+
--------
|
|
164
|
+
dot_bracket : The reverse operation.
|
|
165
|
+
|
|
166
|
+
References
|
|
167
|
+
----------
|
|
168
|
+
|
|
169
|
+
.. footbibliography::
|
|
170
|
+
|
|
171
|
+
Examples
|
|
172
|
+
--------
|
|
173
|
+
The notation string ``'(..).'`` contains a base pair between the
|
|
174
|
+
indices 0 and 3. This pairing interaction can be extracted
|
|
175
|
+
conveniently by the use of :func:`base_pairs_from_dot_bracket()`:
|
|
176
|
+
|
|
177
|
+
>>> base_pairs_from_dot_bracket('(..).')
|
|
178
|
+
array([[0, 3]])
|
|
179
|
+
"""
|
|
180
|
+
basepairs = []
|
|
181
|
+
opened_brackets = [[] for _ in range(len(_OPENING_BRACKETS))]
|
|
182
|
+
|
|
183
|
+
# Iterate through input string and extract base pairs
|
|
184
|
+
for pos, symbol in enumerate(dot_bracket_notation):
|
|
185
|
+
if symbol in _OPENING_BRACKETS:
|
|
186
|
+
# Add opening residues to list (separate list for each
|
|
187
|
+
# bracket type)
|
|
188
|
+
index = _OPENING_BRACKETS.index(symbol)
|
|
189
|
+
opened_brackets[index].append(pos)
|
|
190
|
+
|
|
191
|
+
elif symbol in _CLOSING_BRACKETS:
|
|
192
|
+
# For each closing bracket, the the base pair consists out
|
|
193
|
+
# of the current index and the last index added to the list
|
|
194
|
+
# in `opened_brackets` corresponding to the same bracket
|
|
195
|
+
# type.
|
|
196
|
+
index = _CLOSING_BRACKETS.index(symbol)
|
|
197
|
+
basepairs.append((opened_brackets[index].pop(), pos))
|
|
198
|
+
|
|
199
|
+
else:
|
|
200
|
+
if symbol != ".":
|
|
201
|
+
raise ValueError(f"'{symbol}' is an invalid character for DBL-notation")
|
|
202
|
+
|
|
203
|
+
for not_closed in opened_brackets:
|
|
204
|
+
if not_closed != []:
|
|
205
|
+
raise ValueError(
|
|
206
|
+
"Invalid DBL-notation, not all opening brackets have a closing bracket"
|
|
207
|
+
)
|
|
208
|
+
|
|
209
|
+
# Sort the base pair indices in ascending order
|
|
210
|
+
basepairs = np.array(basepairs)
|
|
211
|
+
if len(basepairs) > 0:
|
|
212
|
+
basepairs = basepairs[np.argsort(basepairs[:, 0])]
|
|
213
|
+
return basepairs
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# This source code is part of the Biotite package and is distributed
|
|
2
|
+
# under the 3-Clause BSD License. Please see 'LICENSE.rst' for further
|
|
3
|
+
# information..
|
|
4
|
+
|
|
5
|
+
"""
|
|
6
|
+
This module contains all possible errors of the `structure` subpackage.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
__name__ = "biotite.structure"
|
|
10
|
+
__author__ = "Patrick Kunzmann"
|
|
11
|
+
__all__ = [
|
|
12
|
+
"BadStructureError",
|
|
13
|
+
"IncompleteStructureWarning",
|
|
14
|
+
"UnexpectedStructureWarning",
|
|
15
|
+
]
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class BadStructureError(Exception):
|
|
19
|
+
"""
|
|
20
|
+
Indicates that a structure is not suitable for a certain operation.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
pass
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class IncompleteStructureWarning(Warning):
|
|
27
|
+
"""
|
|
28
|
+
Indicates that a structure is not complete.
|
|
29
|
+
"""
|
|
30
|
+
|
|
31
|
+
pass
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
class UnexpectedStructureWarning(Warning):
|
|
35
|
+
"""
|
|
36
|
+
Indicates that a structure was not expected.
|
|
37
|
+
"""
|
|
38
|
+
|
|
39
|
+
pass
|