Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
"""
This test makes no assertions, it only test whether an exception
occurs, when the `selection` parameter is given in `remove_pbc()`.
"""
array = load_structure(join(data_dir("structure"), "3o5r.mmtf"))
if multi_model:
array = struc.stack([array, array])
struc.remove_pbc(array)
struc.remove_pbc(array, array.chain_id[0])
struc.remove_pbc(array, struc.filter_amino_acids(array))
struc.remove_pbc(array, [struc.filter_amino_acids(array),
(array.res_name == "FK5")])
# Expect error when selectinf an atom multiple times
with pytest.raises(ValueError):
struc.remove_pbc(array, [struc.filter_amino_acids(array),
(array.atom_name == "CA")])
def test_amino_acid_filter(sample_array):
assert len(sample_array[struc.filter_amino_acids(sample_array)]) == 982
def test_remove_pbc_selections(multi_model):
"""
This test makes no assertions, it only test whether an exception
occurs, when the `selection` parameter is given in `remove_pbc()`.
"""
array = load_structure(join(data_dir("structure"), "3o5r.mmtf"))
if multi_model:
array = struc.stack([array, array])
struc.remove_pbc(array)
struc.remove_pbc(array, array.chain_id[0])
struc.remove_pbc(array, struc.filter_amino_acids(array))
struc.remove_pbc(array, [struc.filter_amino_acids(array),
(array.res_name == "FK5")])
# Expect error when selectinf an atom multiple times
with pytest.raises(ValueError):
struc.remove_pbc(array, [struc.filter_amino_acids(array),
(array.atom_name == "CA")])
def test_remove_pbc_selections(multi_model):
"""
This test makes no assertions, it only test whether an exception
occurs, when the `selection` parameter is given in `remove_pbc()`.
"""
array = load_structure(join(data_dir("structure"), "3o5r.mmtf"))
if multi_model:
array = struc.stack([array, array])
struc.remove_pbc(array)
struc.remove_pbc(array, array.chain_id[0])
struc.remove_pbc(array, struc.filter_amino_acids(array))
struc.remove_pbc(array, [struc.filter_amino_acids(array),
(array.res_name == "FK5")])
# Expect error when selectinf an atom multiple times
with pytest.raises(ValueError):
struc.remove_pbc(array, [struc.filter_amino_acids(array),
(array.atom_name == "CA")])
def test_hbond_structure(pdb_id):
file_name = join(data_dir("structure"), pdb_id+".mmtf")
array = load_structure(file_name)
# Only consider amino acids for consistency
# with bonded hydrogen detection in MDTraj
array = array[..., struc.filter_amino_acids(array)]
if isinstance(array, struc.AtomArrayStack):
# For consistency with MDTraj 'S' cannot be acceptor element
# https://github.com/mdtraj/mdtraj/blob/master/mdtraj/geometry/hbond.py#L365
triplets, mask = struc.hbond(array, acceptor_elements=("O","N"))
else:
triplets = struc.hbond(array, acceptor_elements=("O","N"))
# Save to new pdb file for consistent treatment of inscode/altloc
# im MDTraj
file_name = biotite.temp_file("pdb")
save_structure(file_name, array)
# Compare with MDTraj
import mdtraj
traj = mdtraj.load(file_name)
triplets_ref = mdtraj.baker_hubbard(
import biotite.sequence.io.fasta as fasta
import biotite.sequence.align as align
import biotite.sequence.graphics as graphics
import biotite.application.blast as blast
import biotite.application.clustalo as clustalo
import biotite.database.rcsb as rcsb
import biotite.database.entrez as entrez
# Get structure and sequence
pdbx_file = pdbx.PDBxFile.read(rcsb.fetch("1GUU", "mmcif"))
sequence = pdbx.get_sequence(pdbx_file)[0]
# 'use_author_fields' is set to false,
# to ensure that values in the 'res_id' annotation point to the sequence
structure = pdbx.get_structure(pdbx_file, model=1, use_author_fields=False)
structure = structure[struc.filter_amino_acids(structure)]
# Identity threshold for a sequence to be counted as homologous sequence
IDENTITY_THESHOLD = 0.4
# Find homologous proteins in SwissProt via BLAST
app = blast.BlastWebApp("blastp", sequence, database="swissprot")
app.start()
app.join()
alignments = app.get_alignments()
hit_seqs = [sequence]
hit_ids = ["Query"]
hit_starts = [1]
for ali in alignments:
identity = align.get_sequence_identity(ali)
# Do not include the exact same sequence -> identity < 1.0
if identity > IDENTITY_THESHOLD and identity < 1.0:
hit_seqs.append(ali.sequences[1])
def get_diameter(pdb_id):
file_name = rcsb.fetch(pdb_id, "mmtf", gettempdir())
atom_array = strucio.load_structure(file_name)
# Remove all non-amino acids
atom_array = atom_array[struc.filter_amino_acids(atom_array)]
coord = atom_array.coord
# Calculate all pairwise difference vectors
diff = coord[:, np.newaxis, :] - coord[np.newaxis, :, :]
# Calculate absolute of difference vectors -> square distances
sq_dist = np.sum(diff*diff, axis=-1)
# Maximum distance is diameter
diameter = np.sqrt(np.max(sq_dist))
return diameter
def analyze_chirality(array):
# Filter backbone + CB
array = array[struc.filter_amino_acids(array)]
array = array[(array.atom_name == "CB") | (struc.filter_backbone(array))]
# Iterate over each residue
ids, names = struc.get_residues(array)
enantiomers = np.zeros(len(ids), dtype=int)
for i, id in enumerate(ids):
coord = array.coord[array.res_id == id]
if len(coord) != 4:
# Glyine -> no chirality
enantiomers[i] = 0
else:
enantiomers[i] = get_enantiomer(coord[0], coord[1],
coord[2], coord[3])
return enantiomers