Skip to content
Snippets Groups Projects
Commit 4cd4d95a authored by Marco Biasini's avatar Marco Biasini
Browse files

Revert commits 4ddda29c and 12f78739 to avoid conflicts in subsequent merge of develop -> master.

parent b6c6fdb2
Branches
Tags
No related merge requests found
Showing
with 33 additions and 427 deletions
......@@ -3,7 +3,7 @@ from ost import settings, io, seq, LogError
import os
import subprocess
def ClustalW(seq1, seq2=None, clustalw=None, keep_files=False, clustalw_option_string=False):
def ClustalW(seq1, seq2=None, clustalw=None, keep_files=False):
clustalw_path=settings.Locate(('clustalw', 'clustalw2'),
explicit_file_name=clustalw)
......@@ -32,10 +32,6 @@ def ClustalW(seq1, seq2=None, clustalw=None, keep_files=False, clustalw_option_s
command='%s -infile="%s" -output=fasta -outfile="%s"' % (clustalw_path,
temp_dir.files[0],
out)
if clustalw_option_string!=False:
command=command+" "+clustalw_option_string #see useful flags: http://toolkit.tuebingen.mpg.de/clustalw/help_params
ps=subprocess.Popen(command, shell=True, stdout=subprocess.PIPE)
ps.stdout.readlines()
aln=io.LoadAlignment(out)
......
......@@ -14,10 +14,6 @@ class TestClustalWBindings(unittest.TestCase):
self.multseq = io.LoadSequenceList("testfiles/multiple.fasta")
self.pw_alignment = io.LoadAlignment("testfiles/pairwise_aln.fasta")
self.mult_alignment = io.LoadAlignment("testfiles/multiple_aln.fasta")
self.seq1 = io.LoadSequence("testfiles/seq1.fasta")
self.seq2 = io.LoadSequence("testfiles/seq2.fasta")
self.seq1_seq2_alignment = io.LoadAlignment("testfiles/seq1_seq2_aln.fasta")
self.seq1_seq2_alignment_options_changed = io.LoadAlignment("testfiles/seq1_seq2_aln_options_changed.fasta")
def testPairwiseClustalW(self):
aln=clustalw.ClustalW(self.targetseq, self.templseq)
......@@ -34,15 +30,6 @@ class TestClustalWBindings(unittest.TestCase):
assert self.mult_alignment.ToString(80) == aln.ToString(80), \
"Multiple alignment differs from precomputed one"
def testPairwiseClustalWChangedOptions(self):
# five residues removed two positions before the end of seq2
aln=clustalw.ClustalW(self.seq1,self.seq2)
assert self.seq1_seq2_alignment.ToString(80) == aln.ToString(80), \
"Pairwise alignment with default gap penalties differs from precomputed one"
aln=clustalw.ClustalW(self.seq1,self.seq2,clustalw_option_string="-GAPOPEN=2 -GAPEXT=0")
assert self.seq1_seq2_alignment_options_changed.ToString(80) == aln.ToString(80), \
"Pairwise alignment with modified gap penalties differs from precomputed one"
if __name__ == "__main__":
# test if clustalw package is available on system, otherwise ignore tests
......
>target
MAETLIKVDLNQSPYDNPQVHNRWHPDIPMAVWVEPGAEFKLETYDWTGGAIKNDDSAEDVRDVDLSTVHFLSGPVGVKGAEPGDLLVVDLLDIGARDDSLWGFNGFFSKQNGGGFLDEHFPLAQKSIWDFHGMFTKSRHIPGVNFAGLIHPGLIGCLPDPKMLASWNERETGLIATDPDRIPGLANPPNATTAHMGQMQGEARDKAAAEGARTVPPREHGGNCDIKDLSRGSRVFFPVYVDGAGLSVGDLHFSQGDGEITFCGAIEMAGWVHMKVSLIKGGMAKYGIKNPIFKPSPMTPNYKDYLIFEGISVDEKGKQHYLDVTVAYRQACLNAIEYLKKFGYSGAQAYSLLGTAPVQGHISGVVDVPNACATLWLPTEIFDFDINPTAEGPQKIITGGVDLPIAQDK
\ No newline at end of file
>target
MAETLIKVDLNQSPYDNPQVHNRWHPDIPMAVWVEPGAEFKLETYDWTGGAIKNDDSAEDVRDVDLSTVHFLSGPVGVKGAEPGDLLVVDLLDIGARDDSLWGFNGFFSKQNGGGFLDEHFPLAQKSIWDFHGMFTKSRHIPGVNFAGLIHPGLIGCLPDPKMLASWNERETGLIATDPDRIPGLANPPNATTAHMGQMQGEARDKAAAEGARTVPPREHGGNCDIKDLSRGSRVFFPVYVDGAGLSVGDLHFSQGDGEITFCGAIEMAGWVHMKVSLIKGGMAKYGIKNPIFKPSPMTPNYKDYLIFEGISVDEKGKQHYLDVTVAYRQACLNAIEYLKKFGYSGAQAYSLLGTAPVQGHISGVVDVPNACATLWLPTEIFDFDINPTAEGPQKIITGGVDLPIAQDK
>model
---------------------------------VEPGAEFKLETYDWTGGAIKNDDSAEDVRDVDLSTVHFLSGPVGVKGAEPGDLLVVDLLDIGARDDSLWGFNGFFSKQNGGGFLDEHFPLAQKSIWDFHGMFTKSRHIPGVNFAGLIHPGLIGCLPDPKMLASWNERETGLIATDPDRIPGLANPPNATTAHMGQMQGEARDKAAAEGARTVPPREHGGNCDIKDLSRGSRVFFPVYVDGAGLSVGDLHFSQGDGEITFCGAIEMAGWVIK---------------------------------------------------------------------------------------------------------------------------------------
\ No newline at end of file
>target
MAETLIKVDLNQSPYDNPQVHNRWHPDIPMAVWVEPGAEFKLETYDWTGGAIKNDDSAEDVRDVDLSTVHFLSGPVGVKGAEPGDLLVVDLLDIGARDDSLWGFNGFFSKQNGGGFLDEHFPLAQKSIWDFHGMFTKSRHIPGVNFAGLIHPGLIGCLPDPKMLASWNERETGLIATDPDRIPGLANPPNATTAHMGQMQGEARDKAAAEGARTVPPREHGGNCDIKDLSRGSRVFFPVYVDGAGLSVGDLHFSQGDGEITFCGAIEMAGWVHMKVSLIKGGMAKYGIKNPIFKPSPMTPNYKDYLIFEGISVDEKGKQHYLDVTVAYRQACLNAIEYLKKFGYSGAQAYSLLGTAPVQGHISGVVDVPNACATLWLPTEIFDFDINPTAEGPQKIITGGVDLPIAQDK
>model
---------------------------------VEPGAEFKLETYDWTGGAIKNDDSAEDVRDVDLSTVHFLSGPVGVKGAEPGDLLVVDLLDIGARDDSLWGFNGFFSKQNGGGFLDEHFPLAQKSIWDFHGMFTKSRHIPGVNFAGLIHPGLIGCLPDPKMLASWNERETGLIATDPDRIPGLANPPNATTAHMGQMQGEARDKAAAEGARTVPPREHGGNCDIKDLSRGSRVFFPVYVDGAGLSVGDLHFSQGDGEITFCGAIEMAGWV------IK---------------------------------------------------------------------------------------------------------------------------------
\ No newline at end of file
>model
VEPGAEFKLETYDWTGGAIKNDDSAEDVRDVDLSTVHFLSGPVGVKGAEPGDLLVVDLLDIGARDDSLWGFNGFFSKQNGGGFLDEHFPLAQKSIWDFHGMFTKSRHIPGVNFAGLIHPGLIGCLPDPKMLASWNERETGLIATDPDRIPGLANPPNATTAHMGQMQGEARDKAAAEGARTVPPREHGGNCDIKDLSRGSRVFFPVYVDGAGLSVGDLHFSQGDGEITFCGAIEMAGWVIK
\ No newline at end of file
......@@ -136,8 +136,7 @@ void write_atom(std::ostream& ostr, FormattedLine& line,
} else {
for (std::vector<String>::const_iterator
i=names.begin(), e=names.end(); i!=e; ++i) {
geom::Mat4 tf=atom.GetEntity().GetTransformationMatrix();
p=geom::Vec3(tf*geom::Vec4(atom.GetAltPos(*i)));
p=atom.GetAltPos(*i);
line(30, 50).Clear();
if (i->size()>1) {
......
......@@ -364,31 +364,6 @@ BOOST_AUTO_TEST_CASE(write_conect)
"testfiles/pdb/conect-out.pdb"));
}
BOOST_AUTO_TEST_CASE(alt_loc_tf)
{
String fname("testfiles/pdb/alt-loc.pdb");
// this scope is required to force the writer stream to be closed before
// opening the file again in compare_files. Avoids a race condition.
mol::EntityHandle ent=mol::CreateEntity();
PDBReader reader(fname);
reader.Import(ent);
String out_name("testfiles/pdb/alt-loc-tf-out.pdb");
{
PDBWriter writer(out_name);
geom::Mat4 shift;
shift.PasteTranslation(geom::Vec3(10,20,30));
ent.RequestXCSEditor().ApplyTransform(shift);
writer.Write(ent);
}
PDBReader r2(out_name);
mol::EntityHandle ent2=mol::CreateEntity();
r2.Import(ent2);
mol::ResidueHandle res1=ent2.FindResidue("A", mol::ResNum(1));
mol::AtomHandle a1=res1.FindAtom("N");
BOOST_CHECK_EQUAL(res1.GetAltAtomPos(a1, "A"), geom::Vec3(26,84,30));
BOOST_CHECK_EQUAL(res1.GetAltAtomPos(a1, "B"), geom::Vec3(18,-108,30));
}
BOOST_AUTO_TEST_CASE(res_name_too_long)
{
std::stringstream out;
......
from ost import io, seq, mol, conop
from ost import *
import ost
def Renumber(seq_handle, sequence_number_with_attached_view=1):
def Renumber(seq_handle):
"""
Function to renumber an entity according to an alignment between the model sequence
and the full-length target sequence. The aligned model sequence or the alignment itself
with an attached view needs to be provided. Upon succcess, the renumbered entity is returned.
and the full-length target sequence. The aligned model sequence with an attached
view needs to be provided. Upon succcess, the renumbered entity is returned.
.. code-block:: python
......@@ -16,69 +16,35 @@ def Renumber(seq_handle, sequence_number_with_attached_view=1):
pdb_seq=seq.SequenceFromChain("model", ent.chains[0])
aln=ClustalW(s,pdb_seq)
aln.AttachView(1,ent.chains[0].Select(""))
e=Renumber(aln.GetSequence(sequence_number_with_attached_view))
e=Renumber(aln.GetSequence(1))
io.SavePDB(e, "renum.pdb")
"""
if isinstance(seq_handle, seq.SequenceHandle):
if seq_handle.HasAttachedView()==False:
raise RuntimeError, "Sequence Handle has no attached view"
changed_residue_count=0
renumberingFlag = False
ent_n=mol.CreateEntity()
ed=ent_n.RequestXCSEditor()
c=ed.InsertChain(" ")
for pos in range(len(seq_handle)):
if seq_handle[pos]!='-':
r=seq_handle.GetResidue(pos)
if r.IsValid():
#print seq_handle[pos],r.number.num,pos+1
if r.number.num!=pos+1:
changed_residue_count+=1
renumberingFlag = True
r_n=ed.AppendResidue(c,r.name, mol.ResNum(pos+1))
for atom in r.atoms:
ed.InsertAtom(r_n,atom.name,atom.pos,atom.prop)
else:
err='Error: renumbering failed at position %s' %pos
raise RuntimeError, err
if renumberingFlag == True:
err = 'Warning: %s residues have been renumbered!' %changed_residue_count
LogInfo(err)
conop.ConnectAll(ent_n)
return ent_n
if seq_handle.HasAttachedView()==False:
raise RuntimeError, "Sequence Handle has no attached view"
changed_residue_count=0
renumberingFlag = False
ent_n=mol.CreateEntity()
ed=ent_n.RequestXCSEditor()
c=ed.InsertChain(" ")
for pos in range(len(seq_handle)):
if seq_handle[pos]!='-':
r=seq_handle.GetResidue(pos)
if r.IsValid():
#print seq_handle[pos],r.number.num,pos+1
if r.number.num!=pos+1:
changed_residue_count+=1
renumberingFlag = True
r_n=ed.AppendResidue(c,r.name, mol.ResNum(pos+1))
for atom in r.atoms:
ed.InsertAtom(r_n,atom.name,atom.pos,atom.prop)
else:
err='Error: renumbering failed at position %s' %pos
raise RuntimeError, err
if renumberingFlag == True:
err = 'Warning: %s residues have been renumbered!' %changed_residue_count
ost.LogMessage(err)
conop.ConnectAll(ent_n)
return ent_n
elif isinstance(seq_handle, seq.AlignmentHandle):
if seq_handle.GetSequence(sequence_number_with_attached_view).HasAttachedView()==False:
raise RuntimeError, "Sequence Handle has no attached view"
dir(seq_handle)
counter=0
changed_residue_count=0
renumberingFlag = False
ent_n=mol.CreateEntity()
ed=ent_n.RequestXCSEditor()
c=ed.InsertChain(seq_handle.GetSequence(sequence_number_with_attached_view).GetAttachedView().chains[0].name)
for col in seq_handle:
if col[0]!='-' and col[1]!='-':
if col[0]==col[1]:
rnum=seq_handle.GetSequence(sequence_number_with_attached_view).GetResidueIndex(counter)
r=seq_handle.GetSequence(sequence_number_with_attached_view).GetResidue(counter)
if r.IsValid():
if r.number.num!=counter+1:
changed_residue_count+=1
renumberingFlag = True
r_n=ed.AppendResidue(c,r.name, mol.ResNum(counter+1))
for atom in r.atoms:
ed.InsertAtom(r_n,atom.name,atom.pos,atom.prop)
else:
raise RuntimeError("invalide residue at postion %s (renumbering failed)" %(counter))
else:
raise RuntimeError("residue mismatch at position %d (%s vs %s) (renumbering failed)"%(counter, col[0],col[1]))
counter+=1
if renumberingFlag == True:
err = 'Warning: %s residues have been renumbered!' %changed_residue_count
LogInfo(err)
conop.ConnectAll(ent_n)
return ent_n
......@@ -2,7 +2,6 @@ set(OST_SEQ_ALG_UNIT_TESTS
test_merge_pairwise_alignments.cc
test_sequence_identity.cc
tests.cc
test_renumber.py
)
ost_unittest(seq_alg "${OST_SEQ_ALG_UNIT_TESTS}")
......
import unittest
from ost import *
from ost import settings
from ost import seq
from ost.bindings.clustalw import *
from ost.seq.alg import renumber
class TestRenumber(unittest.TestCase):
def setUp(self):
self.target_seq = io.LoadSequence("testfiles/peptide.fasta")
self.peptide_original = io.LoadEntity("testfiles/peptide_original.pdb")
self.peptide_plus_5 = io.LoadEntity("testfiles/peptide_plus_5.pdb")
self.peptide_random = io.LoadEntity("testfiles/peptide_random.pdb")
self.peptide_del_1_2 = io.LoadEntity("testfiles/peptide_del_1_2.pdb")
self.peptide_del_4 = io.LoadEntity("testfiles/peptide_del_4.pdb")
self.peptide_mutation_3 = io.LoadEntity("testfiles/peptide_mutation_3.pdb")
def testPeptidePlusFive(self):
"""
All residue numbers shifted by 5.
Check whether internal atom order changes while renumbering
(a new entity is generated in the edit_mode)
TODO: add more basic tests: are all properties preserved?
"""
model_seq=seq.SequenceFromChain(" ", self.peptide_plus_5.chains[0])
model_seq.name="model"
aln=ClustalW(self.target_seq,model_seq)
aln.AttachView(1,self.peptide_plus_5.Select(""))
ent_n=renumber.Renumber(aln)
for r_counter in range(len(self.peptide_original.residues)):
assert self.peptide_original.residues[r_counter].qualified_name == ent_n.residues[r_counter].qualified_name, \
"Renumbering failed on residue level: restoring from ResNum+5"
for atom_nr in range(len(self.peptide_original.residues[r_counter].atoms)):
assert self.peptide_original.residues[r_counter].atoms[atom_nr].name==ent_n.residues[r_counter].atoms[atom_nr].name, \
"Renumbering failed on atom level: restoring from ResNum+5"
def testPeptideRandom(self):
"""
Change residue names in random order
"""
model_seq=seq.SequenceFromChain(" ", self.peptide_random.chains[0])
model_seq.name="model"
aln=ClustalW(self.target_seq,model_seq)
aln.AttachView(1,self.peptide_random.Select(""))
ent_n=renumber.Renumber(aln)
for r_counter in range(len(self.peptide_original.residues)):
assert self.peptide_original.residues[r_counter].qualified_name == ent_n.residues[r_counter].qualified_name, \
"Renumbering failed on residue level: restoring from random residue numbers"
for atom_nr in range(len(self.peptide_original.residues[r_counter].atoms)):
assert self.peptide_original.residues[r_counter].atoms[atom_nr].name==ent_n.residues[r_counter].atoms[atom_nr].name, \
"Renumbering failed on atom level: restoring from random residue numbers"
def testPeptideDel_1_2(self):
"""
First two residues were removed
"""
model_seq=seq.SequenceFromChain(" ", self.peptide_del_1_2.chains[0])
model_seq.name="model"
aln=ClustalW(self.target_seq,model_seq)
aln.AttachView(1,self.peptide_del_1_2.Select(""))
ent_n=renumber.Renumber(aln)
for r_counter in range(len(self.peptide_original.residues)):
if r_counter==0 or r_counter==1:
continue
assert self.peptide_original.residues[r_counter].qualified_name == ent_n.residues[r_counter-2].qualified_name, \
"Renumbering failed on residue level: restoring from random residue numbers"
for atom_nr in range(len(self.peptide_original.residues[r_counter].atoms)):
assert self.peptide_original.residues[r_counter].atoms[atom_nr].name==ent_n.residues[r_counter-2].atoms[atom_nr].name, \
"Renumbering failed on atom level: restoring from random residue numbers"
def testPeptideDel_4(self):
"""
Residues in the middle (position 4) was removed
"""
model_seq=seq.SequenceFromChain(" ", self.peptide_del_4.chains[0])
model_seq.name="model"
aln=ClustalW(self.target_seq,model_seq)
aln.AttachView(1,self.peptide_del_4.Select(""))
ent_n=renumber.Renumber(aln)
flag=0
for r_counter in range(len(self.peptide_original.residues)):
if r_counter==3:
flag=1
continue
assert self.peptide_original.residues[r_counter].qualified_name == ent_n.residues[r_counter-flag].qualified_name, \
"Renumbering failed on residue level: restoring from random residue numbers"
for atom_nr in range(len(self.peptide_original.residues[r_counter].atoms)):
assert self.peptide_original.residues[r_counter].atoms[atom_nr].name==ent_n.residues[r_counter-flag].atoms[atom_nr].name, \
"Renumbering failed on atom level: restoring from random residue numbers"
def testPeptideMutation_3(self):
"""
Mutation to GLY at postion 3
"""
model_seq=seq.SequenceFromChain(" ", self.peptide_mutation_3.chains[0])
model_seq.name="model"
aln=ClustalW(self.target_seq,model_seq)
aln.AttachView(1,self.peptide_mutation_3.Select(""))
self.assertRaises(RuntimeError, renumber.Renumber, aln)
if __name__ == "__main__":
# test renumbering
try:
unittest.main()
except Exception, e:
print e
\ No newline at end of file
>peptide
MPTNA
\ No newline at end of file
ATOM 16 N THR 1 -26.565 -9.309 10.007 1.00 0.00 N
ATOM 17 CA THR 1 -26.102 -8.194 9.247 1.00 0.00 C
ATOM 18 C THR 1 -25.296 -7.372 10.186 1.00 0.00 C
ATOM 19 O THR 1 -24.295 -6.768 9.810 1.00 0.00 O
ATOM 20 CB THR 1 -27.274 -7.369 8.683 1.00 0.00 C
ATOM 21 OG1 THR 1 -28.080 -6.880 9.762 1.00 0.00 O
ATOM 22 CG2 THR 1 -28.139 -8.227 7.772 1.00 0.00 C
ATOM 23 N ASN 2 -25.736 -7.349 11.452 1.00 0.00 N
ATOM 24 CA ASN 2 -25.104 -6.609 12.495 1.00 0.00 C
ATOM 25 C ASN 2 -23.742 -7.171 12.684 1.00 0.00 C
ATOM 26 O ASN 2 -22.806 -6.454 13.030 1.00 0.00 O
ATOM 27 CB ASN 2 -25.901 -6.728 13.795 1.00 0.00 C
ATOM 28 CG ASN 2 -27.189 -5.929 13.764 1.00 0.00 C
ATOM 29 OD1 ASN 2 -27.340 -5.007 12.963 1.00 0.00 O
ATOM 30 ND2 ASN 2 -28.124 -6.282 14.639 1.00 0.00 N
ATOM 31 N ALA 3 -16.677 -4.828 10.806 1.00 0.00 N
ATOM 32 CA ALA 3 -15.984 -3.708 10.241 1.00 0.00 C
ATOM 33 C ALA 3 -15.498 -2.863 11.363 1.00 0.00 C
ATOM 34 O ALA 3 -14.369 -2.378 11.344 1.00 0.00 O
ATOM 35 CB ALA 3 -16.917 -2.901 9.352 1.00 0.00 C
\ No newline at end of file
ATOM 1 N MET 1 -29.037 -8.783 14.347 1.00 0.00 N
ATOM 2 CA MET 1 -28.985 -9.502 13.056 1.00 0.00 C
ATOM 3 C MET 1 -27.597 -9.852 12.665 1.00 0.00 C
ATOM 4 O MET 1 -26.614 -9.275 13.129 1.00 0.00 O
ATOM 5 CB MET 1 -29.575 -8.640 11.938 1.00 0.00 C
ATOM 6 CG MET 1 -31.084 -8.470 12.016 1.00 0.00 C
ATOM 7 SD MET 1 -31.752 -7.534 10.628 1.00 0.00 S
ATOM 8 CE MET 1 -33.497 -7.530 11.030 1.00 0.00 C
ATOM 9 N PRO 2 -27.533 -10.838 11.828 1.00 0.00 N
ATOM 10 CA PRO 2 -26.273 -11.293 11.337 1.00 0.00 C
ATOM 11 C PRO 2 -25.709 -10.233 10.478 1.00 0.00 C
ATOM 12 O PRO 2 -24.518 -10.265 10.186 1.00 0.00 O
ATOM 13 CB PRO 2 -26.616 -12.565 10.559 1.00 0.00 C
ATOM 14 CG PRO 2 -28.043 -12.386 10.161 1.00 0.00 C
ATOM 15 CD PRO 2 -28.699 -11.637 11.286 1.00 0.00 C
ATOM 16 N THR 3 -26.565 -9.309 10.007 1.00 0.00 N
ATOM 17 CA THR 3 -26.102 -8.194 9.247 1.00 0.00 C
ATOM 18 C THR 3 -25.296 -7.372 10.186 1.00 0.00 C
ATOM 19 O THR 3 -24.295 -6.768 9.810 1.00 0.00 O
ATOM 20 CB THR 3 -27.274 -7.369 8.683 1.00 0.00 C
ATOM 21 OG1 THR 3 -28.080 -6.880 9.762 1.00 0.00 O
ATOM 22 CG2 THR 3 -28.139 -8.227 7.772 1.00 0.00 C
ATOM 31 N ALA 4 -16.677 -4.828 10.806 1.00 0.00 N
ATOM 32 CA ALA 4 -15.984 -3.708 10.241 1.00 0.00 C
ATOM 33 C ALA 4 -15.498 -2.863 11.363 1.00 0.00 C
ATOM 34 O ALA 4 -14.369 -2.378 11.344 1.00 0.00 O
ATOM 35 CB ALA 4 -16.917 -2.901 9.352 1.00 0.00 C
\ No newline at end of file
ATOM 1 N MET 1 -29.037 -8.783 14.347 1.00 0.00 N
ATOM 2 CA MET 1 -28.985 -9.502 13.056 1.00 0.00 C
ATOM 3 C MET 1 -27.597 -9.852 12.665 1.00 0.00 C
ATOM 4 O MET 1 -26.614 -9.275 13.129 1.00 0.00 O
ATOM 5 CB MET 1 -29.575 -8.640 11.938 1.00 0.00 C
ATOM 6 CG MET 1 -31.084 -8.470 12.016 1.00 0.00 C
ATOM 7 SD MET 1 -31.752 -7.534 10.628 1.00 0.00 S
ATOM 8 CE MET 1 -33.497 -7.530 11.030 1.00 0.00 C
ATOM 9 N PRO 2 -27.533 -10.838 11.828 1.00 0.00 N
ATOM 10 CA PRO 2 -26.273 -11.293 11.337 1.00 0.00 C
ATOM 11 C PRO 2 -25.709 -10.233 10.478 1.00 0.00 C
ATOM 12 O PRO 2 -24.518 -10.265 10.186 1.00 0.00 O
ATOM 13 CB PRO 2 -26.616 -12.565 10.559 1.00 0.00 C
ATOM 14 CG PRO 2 -28.043 -12.386 10.161 1.00 0.00 C
ATOM 15 CD PRO 2 -28.699 -11.637 11.286 1.00 0.00 C
ATOM 16 N GLY 3 -26.565 -9.309 10.007 1.00 0.00 N
ATOM 17 CA GLY 3 -26.102 -8.194 9.247 1.00 0.00 C
ATOM 18 C GLY 3 -25.296 -7.372 10.186 1.00 0.00 C
ATOM 19 O GLY 3 -24.295 -6.768 9.810 1.00 0.00 O
ATOM 23 N ASN 4 -25.736 -7.349 11.452 1.00 0.00 N
ATOM 24 CA ASN 4 -25.104 -6.609 12.495 1.00 0.00 C
ATOM 25 C ASN 4 -23.742 -7.171 12.684 1.00 0.00 C
ATOM 26 O ASN 4 -22.806 -6.454 13.030 1.00 0.00 O
ATOM 27 CB ASN 4 -25.901 -6.728 13.795 1.00 0.00 C
ATOM 28 CG ASN 4 -27.189 -5.929 13.764 1.00 0.00 C
ATOM 29 OD1 ASN 4 -27.340 -5.007 12.963 1.00 0.00 O
ATOM 30 ND2 ASN 4 -28.124 -6.282 14.639 1.00 0.00 N
ATOM 31 N ALA 5 -16.677 -4.828 10.806 1.00 0.00 N
ATOM 32 CA ALA 5 -15.984 -3.708 10.241 1.00 0.00 C
ATOM 33 C ALA 5 -15.498 -2.863 11.363 1.00 0.00 C
ATOM 34 O ALA 5 -14.369 -2.378 11.344 1.00 0.00 O
ATOM 35 CB ALA 5 -16.917 -2.901 9.352 1.00 0.00 C
\ No newline at end of file
ATOM 1 N MET 1 -29.037 -8.783 14.347 1.00 0.00 N
ATOM 2 CA MET 1 -28.985 -9.502 13.056 1.00 0.00 C
ATOM 3 C MET 1 -27.597 -9.852 12.665 1.00 0.00 C
ATOM 4 O MET 1 -26.614 -9.275 13.129 1.00 0.00 O
ATOM 5 CB MET 1 -29.575 -8.640 11.938 1.00 0.00 C
ATOM 6 CG MET 1 -31.084 -8.470 12.016 1.00 0.00 C
ATOM 7 SD MET 1 -31.752 -7.534 10.628 1.00 0.00 S
ATOM 8 CE MET 1 -33.497 -7.530 11.030 1.00 0.00 C
ATOM 9 N PRO 2 -27.533 -10.838 11.828 1.00 0.00 N
ATOM 10 CA PRO 2 -26.273 -11.293 11.337 1.00 0.00 C
ATOM 11 C PRO 2 -25.709 -10.233 10.478 1.00 0.00 C
ATOM 12 O PRO 2 -24.518 -10.265 10.186 1.00 0.00 O
ATOM 13 CB PRO 2 -26.616 -12.565 10.559 1.00 0.00 C
ATOM 14 CG PRO 2 -28.043 -12.386 10.161 1.00 0.00 C
ATOM 15 CD PRO 2 -28.699 -11.637 11.286 1.00 0.00 C
ATOM 16 N THR 3 -26.565 -9.309 10.007 1.00 0.00 N
ATOM 17 CA THR 3 -26.102 -8.194 9.247 1.00 0.00 C
ATOM 18 C THR 3 -25.296 -7.372 10.186 1.00 0.00 C
ATOM 19 O THR 3 -24.295 -6.768 9.810 1.00 0.00 O
ATOM 20 CB THR 3 -27.274 -7.369 8.683 1.00 0.00 C
ATOM 21 OG1 THR 3 -28.080 -6.880 9.762 1.00 0.00 O
ATOM 22 CG2 THR 3 -28.139 -8.227 7.772 1.00 0.00 C
ATOM 23 N ASN 4 -25.736 -7.349 11.452 1.00 0.00 N
ATOM 24 CA ASN 4 -25.104 -6.609 12.495 1.00 0.00 C
ATOM 25 C ASN 4 -23.742 -7.171 12.684 1.00 0.00 C
ATOM 26 O ASN 4 -22.806 -6.454 13.030 1.00 0.00 O
ATOM 27 CB ASN 4 -25.901 -6.728 13.795 1.00 0.00 C
ATOM 28 CG ASN 4 -27.189 -5.929 13.764 1.00 0.00 C
ATOM 29 OD1 ASN 4 -27.340 -5.007 12.963 1.00 0.00 O
ATOM 30 ND2 ASN 4 -28.124 -6.282 14.639 1.00 0.00 N
ATOM 31 N ALA 5 -16.677 -4.828 10.806 1.00 0.00 N
ATOM 32 CA ALA 5 -15.984 -3.708 10.241 1.00 0.00 C
ATOM 33 C ALA 5 -15.498 -2.863 11.363 1.00 0.00 C
ATOM 34 O ALA 5 -14.369 -2.378 11.344 1.00 0.00 O
ATOM 35 CB ALA 5 -16.917 -2.901 9.352 1.00 0.00 C
\ No newline at end of file
ATOM 1 N MET 6 -29.037 -8.783 14.347 1.00 0.00 N
ATOM 2 CA MET 6 -28.985 -9.502 13.056 1.00 0.00 C
ATOM 3 C MET 6 -27.597 -9.852 12.665 1.00 0.00 C
ATOM 4 O MET 6 -26.614 -9.275 13.129 1.00 0.00 O
ATOM 5 CB MET 6 -29.575 -8.640 11.938 1.00 0.00 C
ATOM 6 CG MET 6 -31.084 -8.470 12.016 1.00 0.00 C
ATOM 7 SD MET 6 -31.752 -7.534 10.628 1.00 0.00 S
ATOM 8 CE MET 6 -33.497 -7.530 11.030 1.00 0.00 C
ATOM 9 N PRO 7 -27.533 -10.838 11.828 1.00 0.00 N
ATOM 10 CA PRO 7 -26.273 -11.293 11.337 1.00 0.00 C
ATOM 11 C PRO 7 -25.709 -10.233 10.478 1.00 0.00 C
ATOM 12 O PRO 7 -24.518 -10.265 10.186 1.00 0.00 O
ATOM 13 CB PRO 7 -26.616 -12.565 10.559 1.00 0.00 C
ATOM 14 CG PRO 7 -28.043 -12.386 10.161 1.00 0.00 C
ATOM 15 CD PRO 7 -28.699 -11.637 11.286 1.00 0.00 C
ATOM 16 N THR 8 -26.565 -9.309 10.007 1.00 0.00 N
ATOM 17 CA THR 8 -26.102 -8.194 9.247 1.00 0.00 C
ATOM 18 C THR 8 -25.296 -7.372 10.186 1.00 0.00 C
ATOM 19 O THR 8 -24.295 -6.768 9.810 1.00 0.00 O
ATOM 20 CB THR 8 -27.274 -7.369 8.683 1.00 0.00 C
ATOM 21 OG1 THR 8 -28.080 -6.880 9.762 1.00 0.00 O
ATOM 22 CG2 THR 8 -28.139 -8.227 7.772 1.00 0.00 C
ATOM 23 N ASN 9 -25.736 -7.349 11.452 1.00 0.00 N
ATOM 24 CA ASN 9 -25.104 -6.609 12.495 1.00 0.00 C
ATOM 25 C ASN 9 -23.742 -7.171 12.684 1.00 0.00 C
ATOM 26 O ASN 9 -22.806 -6.454 13.030 1.00 0.00 O
ATOM 27 CB ASN 9 -25.901 -6.728 13.795 1.00 0.00 C
ATOM 28 CG ASN 9 -27.189 -5.929 13.764 1.00 0.00 C
ATOM 29 OD1 ASN 9 -27.340 -5.007 12.963 1.00 0.00 O
ATOM 30 ND2 ASN 9 -28.124 -6.282 14.639 1.00 0.00 N
ATOM 31 N ALA 10 -16.677 -4.828 10.806 1.00 0.00 N
ATOM 32 CA ALA 10 -15.984 -3.708 10.241 1.00 0.00 C
ATOM 33 C ALA 10 -15.498 -2.863 11.363 1.00 0.00 C
ATOM 34 O ALA 10 -14.369 -2.378 11.344 1.00 0.00 O
ATOM 35 CB ALA 10 -16.917 -2.901 9.352 1.00 0.00 C
\ No newline at end of file
ATOM 1 N MET 6 -29.037 -8.783 14.347 1.00 0.00 N
ATOM 2 CA MET 6 -28.985 -9.502 13.056 1.00 0.00 C
ATOM 3 C MET 6 -27.597 -9.852 12.665 1.00 0.00 C
ATOM 4 O MET 6 -26.614 -9.275 13.129 1.00 0.00 O
ATOM 5 CB MET 6 -29.575 -8.640 11.938 1.00 0.00 C
ATOM 6 CG MET 6 -31.084 -8.470 12.016 1.00 0.00 C
ATOM 7 SD MET 6 -31.752 -7.534 10.628 1.00 0.00 S
ATOM 8 CE MET 6 -33.497 -7.530 11.030 1.00 0.00 C
ATOM 9 N PRO 1 -27.533 -10.838 11.828 1.00 0.00 N
ATOM 10 CA PRO 1 -26.273 -11.293 11.337 1.00 0.00 C
ATOM 11 C PRO 1 -25.709 -10.233 10.478 1.00 0.00 C
ATOM 12 O PRO 1 -24.518 -10.265 10.186 1.00 0.00 O
ATOM 13 CB PRO 1 -26.616 -12.565 10.559 1.00 0.00 C
ATOM 14 CG PRO 1 -28.043 -12.386 10.161 1.00 0.00 C
ATOM 15 CD PRO 1 -28.699 -11.637 11.286 1.00 0.00 C
ATOM 16 N THR 7 -26.565 -9.309 10.007 1.00 0.00 N
ATOM 17 CA THR 7 -26.102 -8.194 9.247 1.00 0.00 C
ATOM 18 C THR 7 -25.296 -7.372 10.186 1.00 0.00 C
ATOM 19 O THR 7 -24.295 -6.768 9.810 1.00 0.00 O
ATOM 20 CB THR 7 -27.274 -7.369 8.683 1.00 0.00 C
ATOM 21 OG1 THR 7 -28.080 -6.880 9.762 1.00 0.00 O
ATOM 22 CG2 THR 7 -28.139 -8.227 7.772 1.00 0.00 C
ATOM 23 N ASN 4 -25.736 -7.349 11.452 1.00 0.00 N
ATOM 24 CA ASN 4 -25.104 -6.609 12.495 1.00 0.00 C
ATOM 25 C ASN 4 -23.742 -7.171 12.684 1.00 0.00 C
ATOM 26 O ASN 4 -22.806 -6.454 13.030 1.00 0.00 O
ATOM 27 CB ASN 4 -25.901 -6.728 13.795 1.00 0.00 C
ATOM 28 CG ASN 4 -27.189 -5.929 13.764 1.00 0.00 C
ATOM 29 OD1 ASN 4 -27.340 -5.007 12.963 1.00 0.00 O
ATOM 30 ND2 ASN 4 -28.124 -6.282 14.639 1.00 0.00 N
ATOM 31 N ALA 2 -16.677 -4.828 10.806 1.00 0.00 N
ATOM 32 CA ALA 2 -15.984 -3.708 10.241 1.00 0.00 C
ATOM 33 C ALA 2 -15.498 -2.863 11.363 1.00 0.00 C
ATOM 34 O ALA 2 -14.369 -2.378 11.344 1.00 0.00 O
ATOM 35 CB ALA 2 -16.917 -2.901 9.352 1.00 0.00 C
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment