mirror of
https://github.com/schrodinger/pymol-open-source.git
synced 2026-06-03 19:54:24 +08:00
Fix dropped residues with cif_use_auth and inscodes
This commit is contained in:
@@ -11,6 +11,7 @@
|
||||
#include <string>
|
||||
#include <map>
|
||||
#include <set>
|
||||
#include <unordered_map>
|
||||
#include <vector>
|
||||
#include <memory>
|
||||
#include <array>
|
||||
@@ -134,6 +135,13 @@ struct CifContentInfo {
|
||||
std::set<std::string> polypeptide_entities; // entity ids
|
||||
std::map<std::string, seqvec_t> sequences; // entity_id -> [resn1, resn2, ...]
|
||||
|
||||
// _pdbx_poly_seq_scheme: label_asym_id -> (label_seq_id -> auth numbering)
|
||||
struct SeqSchemeEntry {
|
||||
int auth_seq_id;
|
||||
char ins_code;
|
||||
};
|
||||
std::unordered_map<std::string, std::unordered_map<int, SeqSchemeEntry>> seq_scheme;
|
||||
|
||||
bool is_excluded_chain(const char * chain) const {
|
||||
if (chains_filter.empty())
|
||||
return false;
|
||||
@@ -1331,6 +1339,44 @@ static bool read_entity_poly(PyMOLGlobals * G, const pymol::cif_data * data, Cif
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Read _pdbx_poly_seq_scheme to get the mapping from label_seq_id to
|
||||
* auth_seq_id + insertion code. This is needed to correctly number
|
||||
* missing residues when cif_use_auth is on and insertion codes are involved.
|
||||
*/
|
||||
static bool read_pdbx_poly_seq_scheme(PyMOLGlobals * G,
|
||||
const pymol::cif_data * data, CifContentInfo &info) {
|
||||
if (!info.use_auth)
|
||||
return false;
|
||||
|
||||
const cif_array *arr_asym_id, *arr_seq_id, *arr_pdb_seq_num;
|
||||
|
||||
if (!(arr_asym_id = data->get_arr("_pdbx_poly_seq_scheme.asym_id")) ||
|
||||
!(arr_seq_id = data->get_arr("_pdbx_poly_seq_scheme.seq_id")) ||
|
||||
!(arr_pdb_seq_num = data->get_arr("_pdbx_poly_seq_scheme.pdb_seq_num")))
|
||||
return false;
|
||||
|
||||
const cif_array *arr_pdb_ins_code =
|
||||
data->get_arr("_pdbx_poly_seq_scheme.pdb_ins_code");
|
||||
|
||||
for (unsigned i = 0, n = arr_asym_id->size(); i < n; i++) {
|
||||
if (arr_pdb_seq_num->is_missing(i))
|
||||
continue;
|
||||
|
||||
CifContentInfo::SeqSchemeEntry entry;
|
||||
entry.auth_seq_id = arr_pdb_seq_num->as_i(i);
|
||||
entry.ins_code = '\0';
|
||||
|
||||
if (arr_pdb_ins_code && !arr_pdb_ins_code->is_missing(i)) {
|
||||
entry.ins_code = makeInscode(arr_pdb_ins_code->as_s(i)[0]);
|
||||
}
|
||||
|
||||
info.seq_scheme[arr_asym_id->as_s(i)][arr_seq_id->as_i(i)] = entry;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sub-routine for `add_missing_ca`
|
||||
*
|
||||
@@ -1346,6 +1392,7 @@ static void add_missing_ca_sub(PyMOLGlobals * G,
|
||||
const int i_ref, int resv,
|
||||
const seqvec_t * current_seq,
|
||||
const char * entity_id,
|
||||
const std::unordered_map<int, CifContentInfo::SeqSchemeEntry> * scheme = nullptr,
|
||||
bool at_terminus = true)
|
||||
{
|
||||
if (!atInfo[i_ref].temp1)
|
||||
@@ -1360,12 +1407,28 @@ static void add_missing_ca_sub(PyMOLGlobals * G,
|
||||
if (!resn)
|
||||
continue;
|
||||
|
||||
int added_resv = current_resv + (atInfo[i_ref].resv - atInfo[i_ref].temp1);
|
||||
int added_resv;
|
||||
char added_inscode = '\0';
|
||||
bool from_scheme = false;
|
||||
|
||||
if (!at_terminus && ((i_ref > 0 && added_resv <= atInfo[i_ref - 1].resv) ||
|
||||
added_resv >= atInfo[i_ref].resv)) {
|
||||
// don't use insertion codes
|
||||
continue;
|
||||
// look up auth numbering from _pdbx_poly_seq_scheme
|
||||
if (scheme) {
|
||||
auto entry_it = scheme->find(current_resv);
|
||||
if (entry_it != scheme->end()) {
|
||||
added_resv = entry_it->second.auth_seq_id;
|
||||
added_inscode = entry_it->second.ins_code;
|
||||
from_scheme = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (!from_scheme) {
|
||||
added_resv = current_resv + (atInfo[i_ref].resv - atInfo[i_ref].temp1);
|
||||
|
||||
if (!at_terminus && ((i_ref > 0 && added_resv <= atInfo[i_ref - 1].resv) ||
|
||||
added_resv >= atInfo[i_ref].resv)) {
|
||||
// don't use insertion codes
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
AtomInfoType *ai = atInfo.check(atomCount);
|
||||
@@ -1381,6 +1444,7 @@ static void add_missing_ca_sub(PyMOLGlobals * G,
|
||||
|
||||
ai->temp1 = current_resv;
|
||||
ai->resv = added_resv;
|
||||
ai->setInscode(added_inscode);
|
||||
|
||||
AtomInfoAssignParameters(G, ai);
|
||||
AtomInfoAssignColors(G, ai);
|
||||
@@ -1408,6 +1472,7 @@ static bool add_missing_ca(PyMOLGlobals * G,
|
||||
int current_resv = 0;
|
||||
const seqvec_t * current_seq = nullptr;
|
||||
const char * current_entity_id = "";
|
||||
const std::unordered_map<int, CifContentInfo::SeqSchemeEntry> * current_scheme = nullptr;
|
||||
|
||||
for (int i = 0; i < oldAtomCount; ++i) {
|
||||
const char * entity_id = LexStr(G, atInfo[i].custom);
|
||||
@@ -1420,11 +1485,12 @@ static bool add_missing_ca(PyMOLGlobals * G,
|
||||
add_missing_ca_sub(G,
|
||||
atInfo, current_resv, atomCount,
|
||||
i - 1, current_seq->size() + 1,
|
||||
current_seq, current_entity_id);
|
||||
current_seq, current_entity_id, current_scheme);
|
||||
}
|
||||
|
||||
current_resv = 0;
|
||||
current_seq = nullptr;
|
||||
current_scheme = nullptr;
|
||||
current_entity_id = entity_id;
|
||||
|
||||
if (info.is_polypeptide(entity_id) && !info.is_excluded_chain(atInfo[i].segi)) {
|
||||
@@ -1433,6 +1499,14 @@ static bool add_missing_ca(PyMOLGlobals * G,
|
||||
if (it != info.sequences.end()) {
|
||||
current_seq = &it->second;
|
||||
}
|
||||
|
||||
// get auth numbering scheme for this chain
|
||||
if (!info.seq_scheme.empty()) {
|
||||
auto scheme_it = info.seq_scheme.find(LexStr(G, atInfo[i].segi));
|
||||
if (scheme_it != info.seq_scheme.end()) {
|
||||
current_scheme = &scheme_it->second;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} else if (i > 0 && atInfo[i].temp1 == atInfo[i - 1].temp1) {
|
||||
@@ -1443,7 +1517,7 @@ static bool add_missing_ca(PyMOLGlobals * G,
|
||||
add_missing_ca_sub(G,
|
||||
atInfo, current_resv, atomCount,
|
||||
i, atInfo[i].temp1,
|
||||
current_seq, entity_id, false);
|
||||
current_seq, entity_id, current_scheme, false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1452,7 +1526,7 @@ static bool add_missing_ca(PyMOLGlobals * G,
|
||||
add_missing_ca_sub(G,
|
||||
atInfo, current_resv, atomCount,
|
||||
oldAtomCount - 1, current_seq->size() + 1,
|
||||
current_seq, current_entity_id);
|
||||
current_seq, current_entity_id, current_scheme);
|
||||
}
|
||||
|
||||
atInfo.resize(atomCount);
|
||||
@@ -2098,6 +2172,7 @@ ObjectMolecule *ObjectMoleculeReadCifData(PyMOLGlobals * G,
|
||||
|
||||
// polymer information
|
||||
read_entity_poly(G, datablock, info);
|
||||
read_pdbx_poly_seq_scheme(G, datablock, info);
|
||||
|
||||
// missing residues
|
||||
if (!I->DiscreteFlag && !SettingGetGlobal_i(G, cSetting_retain_order)) {
|
||||
|
||||
282
testing/data/1hbb_pdbx_seq_one_letter_code-ins-scheme.cif
Normal file
282
testing/data/1hbb_pdbx_seq_one_letter_code-ins-scheme.cif
Normal file
@@ -0,0 +1,282 @@
|
||||
data_1HBB
|
||||
#
|
||||
loop_
|
||||
_entity_poly.entity_id
|
||||
_entity_poly.type
|
||||
_entity_poly.nstd_linkage
|
||||
_entity_poly.nstd_monomer
|
||||
_entity_poly.pdbx_seq_one_letter_code
|
||||
_entity_poly.pdbx_strand_id
|
||||
1 'polypeptide(L)' no no
|
||||
;VLSPADKTNVKAAWGKVGAHAGEYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHGKKVADALTNAVAHVDDMPNAL
|
||||
SALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPAEFTPAVHASLDKFLASVSTVLTSKYR
|
||||
;
|
||||
A
|
||||
#
|
||||
loop_
|
||||
_pdbx_poly_seq_scheme.asym_id
|
||||
_pdbx_poly_seq_scheme.entity_id
|
||||
_pdbx_poly_seq_scheme.seq_id
|
||||
_pdbx_poly_seq_scheme.mon_id
|
||||
_pdbx_poly_seq_scheme.pdb_seq_num
|
||||
_pdbx_poly_seq_scheme.pdb_strand_id
|
||||
_pdbx_poly_seq_scheme.pdb_ins_code
|
||||
A 1 1 VAL 1 A .
|
||||
A 1 2 LEU 2 A .
|
||||
A 1 3 SER 3 A .
|
||||
A 1 4 PRO 4 A .
|
||||
A 1 5 ALA 5 A .
|
||||
A 1 6 ASP 6 A .
|
||||
A 1 7 LYS 7 A .
|
||||
A 1 8 THR 8 A .
|
||||
A 1 9 ASN 9 A .
|
||||
A 1 10 VAL 9 A A
|
||||
A 1 11 LYS 9 A B
|
||||
A 1 12 ALA 9 A C
|
||||
A 1 13 ALA 9 A D
|
||||
A 1 14 TRP 9 A E
|
||||
A 1 15 GLY 9 A F
|
||||
A 1 16 LYS 9 A G
|
||||
A 1 17 VAL 9 A H
|
||||
A 1 18 GLY 9 A I
|
||||
A 1 19 ALA 9 A J
|
||||
A 1 20 HIS 10 A .
|
||||
A 1 21 ALA 11 A .
|
||||
A 1 22 GLY 12 A .
|
||||
A 1 23 GLU 13 A .
|
||||
A 1 24 TYR 14 A .
|
||||
A 1 25 GLY 15 A .
|
||||
A 1 26 ALA 16 A .
|
||||
A 1 27 GLU 17 A .
|
||||
A 1 28 ALA 18 A .
|
||||
A 1 29 LEU 19 A .
|
||||
A 1 30 GLU 30 A .
|
||||
A 1 31 ARG 31 A .
|
||||
A 1 32 MET 32 A .
|
||||
A 1 33 PHE 33 A .
|
||||
A 1 34 LEU 34 A .
|
||||
A 1 35 SER 35 A .
|
||||
A 1 36 PHE 36 A .
|
||||
A 1 37 PRO 37 A .
|
||||
A 1 38 THR 38 A .
|
||||
A 1 39 THR 39 A .
|
||||
A 1 40 LYS 40 A .
|
||||
#
|
||||
loop_
|
||||
_atom_site.type_symbol
|
||||
_atom_site.label_atom_id
|
||||
_atom_site.label_alt_id
|
||||
_atom_site.label_comp_id
|
||||
_atom_site.label_asym_id
|
||||
_atom_site.label_entity_id
|
||||
_atom_site.label_seq_id
|
||||
_atom_site.pdbx_PDB_ins_code
|
||||
_atom_site.Cartn_x
|
||||
_atom_site.Cartn_y
|
||||
_atom_site.Cartn_z
|
||||
_atom_site.auth_seq_id
|
||||
O OG . SER A 1 3 ? 15.226 19.253 6.158 3
|
||||
N N . PRO A 1 4 ? 15.482 22.408 4.967 4
|
||||
C CA . PRO A 1 4 ? 16.666 22.979 4.309 4
|
||||
C C . PRO A 1 4 ? 17.686 21.870 4.153 4
|
||||
O O . PRO A 1 4 ? 18.302 21.692 3.105 4
|
||||
C CB . PRO A 1 4 ? 17.127 24.101 5.240 4
|
||||
C CG . PRO A 1 4 ? 15.822 24.569 5.841 4
|
||||
C CD . PRO A 1 4 ? 15.090 23.241 6.116 4
|
||||
N N . ALA A 1 5 ? 17.783 21.099 5.227 5
|
||||
C CA . ALA A 1 5 ? 18.704 19.941 5.288 5
|
||||
C C . ALA A 1 5 ? 18.433 18.924 4.195 5
|
||||
O O . ALA A 1 5 ? 19.327 18.435 3.508 5
|
||||
C CB . ALA A 1 5 ? 18.545 19.336 6.677 5
|
||||
N N . ASP A 1 6 ? 17.164 18.558 4.042 6
|
||||
C CA . ASP A 1 6 ? 16.762 17.621 2.990 6
|
||||
C C . ASP A 1 6 ? 17.203 18.179 1.634 6
|
||||
O O . ASP A 1 6 ? 17.682 17.447 0.751 6
|
||||
C CB . ASP A 1 6 ? 15.221 17.443 2.959 6
|
||||
C CG . ASP A 1 6 ? 14.659 16.636 4.095 6
|
||||
O OD1 . ASP A 1 6 ? 15.304 15.686 4.574 6
|
||||
O OD2 . ASP A 1 6 ? 13.537 16.973 4.537 6
|
||||
N N . LYS A 1 7 ? 16.930 19.486 1.485 7
|
||||
C CA . LYS A 1 7 ? 17.230 20.147 0.181 7
|
||||
C C . LYS A 1 7 ? 18.697 20.097 -0.148 7
|
||||
O O . LYS A 1 7 ? 19.142 19.769 -1.264 7
|
||||
C CB . LYS A 1 7 ? 16.658 21.533 0.111 7
|
||||
C CG . LYS A 1 7 ? 15.126 21.608 0.162 7
|
||||
C CD . LYS A 1 7 ? 14.715 23.062 0.385 7
|
||||
C CE . LYS A 1 7 ? 13.239 23.292 0.519 7
|
||||
N NZ . LYS A 1 7 ? 12.961 24.677 1.001 7
|
||||
N N . THR A 1 8 ? 19.510 20.370 0.861 8
|
||||
C CA . THR A 1 8 ? 20.975 20.302 0.679 8
|
||||
C C . THR A 1 8 ? 21.411 18.899 0.305 8
|
||||
O O . THR A 1 8 ? 22.262 18.732 -0.582 8
|
||||
C CB . THR A 1 8 ? 21.665 20.739 2.043 8
|
||||
O OG1 . THR A 1 8 ? 21.263 22.125 2.225 8
|
||||
C CG2 . THR A 1 8 ? 23.170 20.513 2.049 8
|
||||
N N . ASN A 1 9 ? 20.824 17.931 1.014 9
|
||||
C CA . ASN A 1 9 ? 21.145 16.503 0.809 9
|
||||
C C . ASN A 1 9 ? 20.831 16.034 -0.603 9
|
||||
O O . ASN A 1 9 ? 21.601 15.311 -1.231 9
|
||||
C CB . ASN A 1 9 ? 20.445 15.614 1.839 9
|
||||
C CG . ASN A 1 9 ? 20.991 15.746 3.235 9
|
||||
O OD1 . ASN A 1 9 ? 20.348 15.285 4.183 9
|
||||
N ND2 . ASN A 1 9 ? 22.151 16.376 3.368 9
|
||||
N N . HIS A 1 20 ? 25.132 10.904 -15.253 10
|
||||
C CA . HIS A 1 20 ? 24.759 9.486 -15.198 10
|
||||
C C . HIS A 1 20 ? 23.274 9.318 -14.973 10
|
||||
O O . HIS A 1 20 ? 22.793 8.182 -15.063 10
|
||||
C CB . HIS A 1 20 ? 25.557 8.704 -14.133 10
|
||||
C CG . HIS A 1 20 ? 27.010 8.651 -14.521 10
|
||||
N ND1 . HIS A 1 20 ? 27.607 7.578 -15.126 10
|
||||
C CD2 . HIS A 1 20 ? 27.966 9.602 -14.397 10
|
||||
C CE1 . HIS A 1 20 ? 28.881 7.862 -15.349 10
|
||||
N NE2 . HIS A 1 20 ? 29.121 9.084 -14.925 10
|
||||
N N . ALA A 1 21 ? 22.602 10.417 -14.696 11
|
||||
C CA . ALA A 1 21 ? 21.151 10.400 -14.438 11
|
||||
C C . ALA A 1 21 ? 20.404 9.501 -15.407 11
|
||||
O O . ALA A 1 21 ? 19.592 8.645 -14.998 11
|
||||
C CB . ALA A 1 21 ? 20.599 11.824 -14.441 11
|
||||
N N . GLY A 1 22 ? 20.637 9.687 -16.689 12
|
||||
C CA . GLY A 1 22 ? 19.975 8.915 -17.737 12
|
||||
C C . GLY A 1 22 ? 20.122 7.416 -17.531 12
|
||||
O O . GLY A 1 22 ? 19.119 6.673 -17.514 12
|
||||
N N . GLU A 1 23 ? 21.363 6.991 -17.404 13
|
||||
C CA . GLU A 1 23 ? 21.708 5.569 -17.205 13
|
||||
C C . GLU A 1 23 ? 21.099 5.042 -15.925 13
|
||||
O O . GLU A 1 23 ? 20.581 3.908 -15.844 13
|
||||
C CB . GLU A 1 23 ? 23.204 5.371 -17.269 13
|
||||
C CG . GLU A 1 23 ? 23.972 4.606 -16.206 13
|
||||
C CD . GLU A 1 23 ? 25.476 4.738 -16.269 13
|
||||
O OE1 . GLU A 1 23 ? 26.071 5.601 -16.904 13
|
||||
O OE2 . GLU A 1 23 ? 26.052 3.852 -15.598 13
|
||||
N N . TYR A 1 24 ? 21.096 5.864 -14.898 14
|
||||
C CA . TYR A 1 24 ? 20.538 5.451 -13.603 14
|
||||
C C . TYR A 1 24 ? 19.017 5.354 -13.731 14
|
||||
O O . TYR A 1 24 ? 18.408 4.476 -13.112 14
|
||||
C CB . TYR A 1 24 ? 21.011 6.374 -12.494 14
|
||||
C CG . TYR A 1 24 ? 22.488 6.440 -12.180 14
|
||||
C CD1 . TYR A 1 24 ? 23.436 5.631 -12.789 14
|
||||
C CD2 . TYR A 1 24 ? 22.956 7.356 -11.220 14
|
||||
C CE1 . TYR A 1 24 ? 24.787 5.728 -12.476 14
|
||||
C CE2 . TYR A 1 24 ? 24.298 7.466 -10.889 14
|
||||
C CZ . TYR A 1 24 ? 25.218 6.647 -11.525 14
|
||||
O OH . TYR A 1 24 ? 26.565 6.717 -11.244 14
|
||||
N N . GLY A 1 25 ? 18.416 6.216 -14.520 15
|
||||
C CA . GLY A 1 25 ? 16.954 6.223 -14.726 15
|
||||
C C . GLY A 1 25 ? 16.546 4.919 -15.385 15
|
||||
O O . GLY A 1 25 ? 15.588 4.246 -14.965 15
|
||||
N N . ALA A 1 26 ? 17.310 4.551 -16.396 16
|
||||
C CA . ALA A 1 26 ? 17.079 3.297 -17.136 16
|
||||
C C . ALA A 1 26 ? 17.256 2.077 -16.236 16
|
||||
O O . ALA A 1 26 ? 16.454 1.106 -16.261 16
|
||||
C CB . ALA A 1 26 ? 17.962 3.245 -18.371 16
|
||||
N N . GLU A 1 27 ? 18.286 2.104 -15.411 17
|
||||
C CA . GLU A 1 27 ? 18.558 0.998 -14.490 17
|
||||
C C . GLU A 1 27 ? 17.431 0.848 -13.479 17
|
||||
O O . GLU A 1 27 ? 17.022 -0.272 -13.146 17
|
||||
C CB . GLU A 1 27 ? 19.857 1.177 -13.713 17
|
||||
C CG . GLU A 1 27 ? 20.200 0.062 -12.720 17
|
||||
C CD . GLU A 1 27 ? 21.496 0.240 -11.964 17
|
||||
O OE1 . GLU A 1 27 ? 22.383 0.725 -12.697 17
|
||||
O OE2 . GLU A 1 27 ? 21.660 -0.056 -10.794 17
|
||||
N N . ALA A 1 28 ? 16.943 1.974 -12.995 18
|
||||
C CA . ALA A 1 28 ? 15.831 1.957 -12.033 18
|
||||
C C . ALA A 1 28 ? 14.607 1.293 -12.670 18
|
||||
O O . ALA A 1 28 ? 13.911 0.512 -11.975 18
|
||||
C CB . ALA A 1 28 ? 15.502 3.332 -11.515 18
|
||||
N N . LEU A 1 29 ? 14.369 1.577 -13.937 19
|
||||
C CA . LEU A 1 29 ? 13.197 0.984 -14.645 19
|
||||
C C . LEU A 1 29 ? 13.380 -0.530 -14.730 19
|
||||
O O . LEU A 1 29 ? 12.474 -1.285 -14.347 19
|
||||
C CB . LEU A 1 29 ? 13.006 1.663 -15.991 19
|
||||
C CG . LEU A 1 29 ? 12.508 3.101 -16.021 19
|
||||
C CD1 . LEU A 1 29 ? 12.623 3.632 -17.445 19
|
||||
C CD2 . LEU A 1 29 ? 11.076 3.156 -15.533 19
|
||||
N N . GLU A 1 30 ? 14.538 -0.955 -15.207 30
|
||||
C CA . GLU A 1 30 ? 14.819 -2.407 -15.298 30
|
||||
C C . GLU A 1 30 ? 14.671 -3.106 -13.966 30
|
||||
O O . GLU A 1 30 ? 14.074 -4.191 -13.869 30
|
||||
C CB . GLU A 1 30 ? 16.199 -2.682 -15.821 30
|
||||
C CG . GLU A 1 30 ? 16.473 -3.999 -16.560 30
|
||||
C CD . GLU A 1 30 ? 17.767 -3.871 -17.347 30
|
||||
O OE1 . GLU A 1 30 ? 17.820 -3.249 -18.395 30
|
||||
O OE2 . GLU A 1 30 ? 18.702 -4.407 -16.734 30
|
||||
N N . ARG A 1 31 ? 15.209 -2.514 -12.895 31
|
||||
C CA . ARG A 1 31 ? 15.065 -3.131 -11.564 31
|
||||
C C . ARG A 1 31 ? 13.580 -3.250 -11.234 31
|
||||
O O . ARG A 1 31 ? 13.106 -4.226 -10.629 31
|
||||
C CB . ARG A 1 31 ? 15.808 -2.328 -10.487 31
|
||||
C CG . ARG A 1 31 ? 17.340 -2.395 -10.667 31
|
||||
C CD . ARG A 1 31 ? 18.019 -1.574 -9.618 31
|
||||
N NE . ARG A 1 31 ? 19.477 -1.649 -9.716 31
|
||||
C CZ . ARG A 1 31 ? 20.242 -2.599 -9.191 31
|
||||
N NH1 . ARG A 1 31 ? 19.728 -3.536 -8.391 31
|
||||
N NH2 . ARG A 1 31 ? 21.549 -2.616 -9.473 31
|
||||
N N . MET A 1 32 ? 12.813 -2.225 -11.590 32
|
||||
C CA . MET A 1 32 ? 11.367 -2.213 -11.299 32
|
||||
C C . MET A 1 32 ? 10.598 -3.298 -12.056 32
|
||||
O O . MET A 1 32 ? 9.703 -3.986 -11.510 32
|
||||
C CB . MET A 1 32 ? 10.794 -0.812 -11.538 32
|
||||
C CG . MET A 1 32 ? 9.331 -0.839 -11.126 32
|
||||
S SD . MET A 1 32 ? 8.582 0.705 -11.695 32
|
||||
C CE . MET A 1 32 ? 8.605 0.510 -13.472 32
|
||||
N N . PHE A 1 33 ? 10.932 -3.464 -13.325 33
|
||||
C CA . PHE A 1 33 ? 10.306 -4.458 -14.185 33
|
||||
C C . PHE A 1 33 ? 10.595 -5.861 -13.677 33
|
||||
O O . PHE A 1 33 ? 9.644 -6.673 -13.741 33
|
||||
C CB . PHE A 1 33 ? 10.618 -4.268 -15.660 33
|
||||
C CG . PHE A 1 33 ? 10.060 -2.993 -16.221 33
|
||||
C CD1 . PHE A 1 33 ? 8.800 -2.541 -15.824 33
|
||||
C CD2 . PHE A 1 33 ? 10.812 -2.254 -17.131 33
|
||||
C CE1 . PHE A 1 33 ? 8.271 -1.372 -16.327 33
|
||||
C CE2 . PHE A 1 33 ? 10.287 -1.055 -17.655 33
|
||||
C CZ . PHE A 1 33 ? 9.020 -0.625 -17.247 33
|
||||
N N . LEU A 1 34 ? 11.805 -6.081 -13.193 34
|
||||
C CA . LEU A 1 34 ? 12.234 -7.383 -12.675 34
|
||||
C C . LEU A 1 34 ? 11.685 -7.696 -11.296 34
|
||||
O O . LEU A 1 34 ? 11.257 -8.840 -11.035 34
|
||||
C CB . LEU A 1 34 ? 13.748 -7.559 -12.720 34
|
||||
C CG . LEU A 1 34 ? 14.491 -7.623 -14.030 34
|
||||
C CD1 . LEU A 1 34 ? 15.953 -8.003 -13.783 34
|
||||
C CD2 . LEU A 1 34 ? 13.859 -8.653 -14.964 34
|
||||
N N . SER A 1 35 ? 11.717 -6.733 -10.397 35
|
||||
C CA . SER A 1 35 ? 11.223 -6.961 -9.048 35
|
||||
C C . SER A 1 35 ? 9.718 -6.863 -8.895 35
|
||||
O O . SER A 1 35 ? 9.175 -7.552 -7.997 35
|
||||
C CB . SER A 1 35 ? 11.921 -6.013 -8.055 35
|
||||
O OG . SER A 1 35 ? 13.325 -6.227 -8.168 35
|
||||
N N . PHE A 1 36 ? 9.070 -6.024 -9.677 36
|
||||
C CA . PHE A 1 36 ? 7.616 -5.772 -9.572 36
|
||||
C C . PHE A 1 36 ? 7.021 -5.864 -10.971 36
|
||||
O O . PHE A 1 36 ? 6.747 -4.853 -11.628 36
|
||||
C CB . PHE A 1 36 ? 7.403 -4.396 -8.926 36
|
||||
C CG . PHE A 1 36 ? 8.193 -4.126 -7.672 36
|
||||
C CD1 . PHE A 1 36 ? 7.833 -4.691 -6.457 36
|
||||
C CD2 . PHE A 1 36 ? 9.315 -3.295 -7.709 36
|
||||
C CE1 . PHE A 1 36 ? 8.571 -4.463 -5.278 36
|
||||
C CE2 . PHE A 1 36 ? 10.061 -3.047 -6.564 36
|
||||
C CZ . PHE A 1 36 ? 9.703 -3.628 -5.348 36
|
||||
N N . PRO A 1 37 ? 6.843 -7.098 -11.415 37
|
||||
C CA . PRO A 1 37 ? 6.369 -7.401 -12.768 37
|
||||
C C . PRO A 1 37 ? 5.046 -6.793 -13.151 37
|
||||
O O . PRO A 1 37 ? 4.804 -6.645 -14.365 37
|
||||
C CB . PRO A 1 37 ? 6.333 -8.922 -12.860 37
|
||||
C CG . PRO A 1 37 ? 7.315 -9.365 -11.808 37
|
||||
C CD . PRO A 1 37 ? 7.174 -8.337 -10.676 37
|
||||
N N . THR A 1 38 ? 4.223 -6.489 -12.173 38
|
||||
C CA . THR A 1 38 ? 2.910 -5.881 -12.423 38
|
||||
C C . THR A 1 38 ? 3.064 -4.500 -13.027 38
|
||||
O O . THR A 1 38 ? 2.097 -4.023 -13.648 38
|
||||
C CB . THR A 1 38 ? 1.998 -5.880 -11.146 38
|
||||
O OG1 . THR A 1 38 ? 2.605 -4.967 -10.180 38
|
||||
C CG2 . THR A 1 38 ? 1.789 -7.265 -10.525 38
|
||||
N N . THR A 1 39 ? 4.211 -3.860 -12.881 39
|
||||
C CA . THR A 1 39 ? 4.430 -2.495 -13.430 39
|
||||
C C . THR A 1 39 ? 4.538 -2.525 -14.936 39
|
||||
O O . THR A 1 39 ? 4.356 -1.540 -15.673 39
|
||||
C CB . THR A 1 39 ? 5.666 -1.792 -12.732 39
|
||||
O OG1 . THR A 1 39 ? 6.849 -2.604 -13.036 39
|
||||
C CG2 . THR A 1 39 ? 5.467 -1.594 -11.227 39
|
||||
N N . LYS A 1 40 ? 4.819 -3.706 -15.459 40
|
||||
C CA . LYS A 1 40 ? 4.950 -3.931 -16.894 40
|
||||
C C . LYS A 1 40 ? 3.637 -3.711 -17.637 40
|
||||
O O . LYS A 1 40 ? 3.647 -3.387 -18.854 40
|
||||
@@ -40,3 +40,13 @@ class TestPYMOL2727(testing.PyMOLTestCase):
|
||||
|
||||
seq = self._get_seq('segi A')
|
||||
self.assertEqual(seq, 'VLSPADKTNHAGEYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHGKKVADALTNAVAHVDDMPNALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPAEFTPAVHASLDKFLASVSTVLTSKYR')
|
||||
|
||||
@testing.requires_version('2.4')
|
||||
def testMissingResInsScheme(self):
|
||||
# With _pdbx_poly_seq_scheme, missing residues with insertion codes
|
||||
# should be inserted correctly (GH #303)
|
||||
cmd.set('cif_use_auth', 1)
|
||||
cmd.load(self.datafile('1hbb_pdbx_seq_one_letter_code-ins-scheme.cif'), '1hbb')
|
||||
|
||||
seq = self._get_seq('segi A')
|
||||
self.assertEqual(seq, 'VLSPADKTNVKAAWGKVGAHAGEYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHGKKVADALTNAVAHVDDMPNALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPAEFTPAVHASLDKFLASVSTVLTSKYR')
|
||||
|
||||
Reference in New Issue
Block a user