Skip to content
Snippets Groups Projects
Commit dbdf6721 authored by Gerardo Tauriello's avatar Gerardo Tauriello
Browse files

SCHWED-1740: test multi-loop handling for SidechainReconstructor

parent db050d87
Branches
Tags
No related merge requests found
HEADER PLANT PROTEIN 30-APR-81 1CRN
TITLE WATER STRUCTURE OF A HYDROPHOBIC PROTEIN AT ATOMIC RESOLUTION.
TITLE 2 PENTAGON RINGS OF WATER MOLECULES IN CRYSTALS OF CRAMBIN
COMPND MOL_ID: 1;
COMPND 2 MOLECULE: CRAMBIN;
COMPND 3 CHAIN: A;
COMPND 4 ENGINEERED: YES
SOURCE MOL_ID: 1;
SOURCE 2 ORGANISM_SCIENTIFIC: CRAMBE HISPANICA SUBSP. ABYSSINICA;
SOURCE 3 ORGANISM_TAXID: 3721;
SOURCE 4 STRAIN: SUBSP. ABYSSINICA
KEYWDS PLANT SEED PROTEIN, PLANT PROTEIN
EXPDTA X-RAY DIFFRACTION
AUTHOR W.A.HENDRICKSON,M.M.TEETER
REVDAT 7 11-JUL-12 1CRN 1 SCALE1 VERSN HEADER
REVDAT 6 24-FEB-09 1CRN 1 VERSN
REVDAT 5 16-APR-87 1CRN 1 HEADER
REVDAT 4 04-MAR-85 1CRN 1 REMARK
REVDAT 3 30-SEP-83 1CRN 1 REVDAT
REVDAT 2 03-DEC-81 1CRN 1 SHEET
REVDAT 1 28-JUL-81 1CRN 0
JRNL AUTH M.M.TEETER
JRNL TITL WATER STRUCTURE OF A HYDROPHOBIC PROTEIN AT ATOMIC
JRNL TITL 2 RESOLUTION: PENTAGON RINGS OF WATER MOLECULES IN CRYSTALS OF
JRNL TITL 3 CRAMBIN.
JRNL REF PROC.NATL.ACAD.SCI.USA V. 81 6014 1984
JRNL REFN ISSN 0027-8424
JRNL PMID 16593516
JRNL DOI 10.1073/PNAS.81.19.6014
REMARK 1
REMARK 1 REFERENCE 1
REMARK 1 AUTH W.A.HENDRICKSON,M.M.TEETER
REMARK 1 TITL STRUCTURE OF THE HYDROPHOBIC PROTEIN CRAMBIN DETERMINED
REMARK 1 TITL 2 DIRECTLY FROM THE ANOMALOUS SCATTERING OF SULPHUR
REMARK 1 REF NATURE V. 290 107 1981
REMARK 1 REFN ISSN 0028-0836
REMARK 1 REFERENCE 2
REMARK 1 AUTH M.M.TEETER,W.A.HENDRICKSON
REMARK 1 TITL HIGHLY ORDERED CRYSTALS OF THE PLANT SEED PROTEIN CRAMBIN
REMARK 1 REF J.MOL.BIOL. V. 127 219 1979
REMARK 1 REFN ISSN 0022-2836
REMARK 2
REMARK 2 RESOLUTION. 1.50 ANGSTROMS.
REMARK 3
REMARK 3 REFINEMENT.
REMARK 3 PROGRAM : PROLSQ
REMARK 3 AUTHORS : KONNERT,HENDRICKSON
REMARK 3
REMARK 3 DATA USED IN REFINEMENT.
REMARK 3 RESOLUTION RANGE HIGH (ANGSTROMS) : 1.50
REMARK 3 RESOLUTION RANGE LOW (ANGSTROMS) : NULL
REMARK 3 DATA CUTOFF (SIGMA(F)) : NULL
REMARK 3 COMPLETENESS FOR RANGE (%) : NULL
REMARK 3 NUMBER OF REFLECTIONS : NULL
REMARK 3
REMARK 3 FIT TO DATA USED IN REFINEMENT.
REMARK 3 CROSS-VALIDATION METHOD : NULL
REMARK 3 FREE R VALUE TEST SET SELECTION : NULL
REMARK 3 R VALUE (WORKING + TEST SET) : NULL
REMARK 3 R VALUE (WORKING SET) : NULL
REMARK 3 FREE R VALUE : NULL
REMARK 3 FREE R VALUE TEST SET SIZE (%) : NULL
REMARK 3 FREE R VALUE TEST SET COUNT : NULL
REMARK 3
REMARK 3 FIT/AGREEMENT OF MODEL WITH ALL DATA.
REMARK 3 R VALUE (WORKING + TEST SET, NO CUTOFF) : NULL
REMARK 3 R VALUE (WORKING SET, NO CUTOFF) : NULL
REMARK 3 FREE R VALUE (NO CUTOFF) : NULL
REMARK 3 FREE R VALUE TEST SET SIZE (%, NO CUTOFF) : NULL
REMARK 3 FREE R VALUE TEST SET COUNT (NO CUTOFF) : NULL
REMARK 3 TOTAL NUMBER OF REFLECTIONS (NO CUTOFF) : NULL
REMARK 3
REMARK 3 NUMBER OF NON-HYDROGEN ATOMS USED IN REFINEMENT.
REMARK 3 PROTEIN ATOMS : 327
REMARK 3 NUCLEIC ACID ATOMS : 0
REMARK 3 HETEROGEN ATOMS : 0
REMARK 3 SOLVENT ATOMS : 0
REMARK 3
REMARK 3 B VALUES.
REMARK 3 FROM WILSON PLOT (A**2) : NULL
REMARK 3 MEAN B VALUE (OVERALL, A**2) : NULL
REMARK 3 OVERALL ANISOTROPIC B VALUE.
REMARK 3 B11 (A**2) : NULL
REMARK 3 B22 (A**2) : NULL
REMARK 3 B33 (A**2) : NULL
REMARK 3 B12 (A**2) : NULL
REMARK 3 B13 (A**2) : NULL
REMARK 3 B23 (A**2) : NULL
REMARK 3
REMARK 3 ESTIMATED COORDINATE ERROR.
REMARK 3 ESD FROM LUZZATI PLOT (A) : NULL
REMARK 3 ESD FROM SIGMAA (A) : NULL
REMARK 3 LOW RESOLUTION CUTOFF (A) : NULL
REMARK 3
REMARK 3 RMS DEVIATIONS FROM IDEAL VALUES.
REMARK 3 DISTANCE RESTRAINTS. RMS SIGMA
REMARK 3 BOND LENGTH (A) : NULL ; NULL
REMARK 3 ANGLE DISTANCE (A) : NULL ; NULL
REMARK 3 INTRAPLANAR 1-4 DISTANCE (A) : NULL ; NULL
REMARK 3 H-BOND OR METAL COORDINATION (A) : NULL ; NULL
REMARK 3
REMARK 3 PLANE RESTRAINT (A) : NULL ; NULL
REMARK 3 CHIRAL-CENTER RESTRAINT (A**3) : NULL ; NULL
REMARK 3
REMARK 3 NON-BONDED CONTACT RESTRAINTS.
REMARK 3 SINGLE TORSION (A) : NULL ; NULL
REMARK 3 MULTIPLE TORSION (A) : NULL ; NULL
REMARK 3 H-BOND (X...Y) (A) : NULL ; NULL
REMARK 3 H-BOND (X-H...Y) (A) : NULL ; NULL
REMARK 3
REMARK 3 CONFORMATIONAL TORSION ANGLE RESTRAINTS.
REMARK 3 SPECIFIED (DEGREES) : NULL ; NULL
REMARK 3 PLANAR (DEGREES) : NULL ; NULL
REMARK 3 STAGGERED (DEGREES) : NULL ; NULL
REMARK 3 TRANSVERSE (DEGREES) : NULL ; NULL
REMARK 3
REMARK 3 ISOTROPIC THERMAL FACTOR RESTRAINTS. RMS SIGMA
REMARK 3 MAIN-CHAIN BOND (A**2) : NULL ; NULL
REMARK 3 MAIN-CHAIN ANGLE (A**2) : NULL ; NULL
REMARK 3 SIDE-CHAIN BOND (A**2) : NULL ; NULL
REMARK 3 SIDE-CHAIN ANGLE (A**2) : NULL ; NULL
REMARK 3
REMARK 3 OTHER REFINEMENT REMARKS: NULL
REMARK 4
REMARK 4 1CRN COMPLIES WITH FORMAT V. 3.30, 13-JUL-11
REMARK 100
REMARK 100 THIS ENTRY HAS BEEN PROCESSED BY BNL.
REMARK 200
REMARK 200 EXPERIMENTAL DETAILS
REMARK 200 EXPERIMENT TYPE : X-RAY DIFFRACTION
REMARK 200 DATE OF DATA COLLECTION : NULL
REMARK 200 TEMPERATURE (KELVIN) : NULL
REMARK 200 PH : NULL
REMARK 200 NUMBER OF CRYSTALS USED : NULL
REMARK 200
REMARK 200 SYNCHROTRON (Y/N) : NULL
REMARK 200 RADIATION SOURCE : NULL
REMARK 200 BEAMLINE : NULL
REMARK 200 X-RAY GENERATOR MODEL : NULL
REMARK 200 MONOCHROMATIC OR LAUE (M/L) : NULL
REMARK 200 WAVELENGTH OR RANGE (A) : NULL
REMARK 200 MONOCHROMATOR : NULL
REMARK 200 OPTICS : NULL
REMARK 200
REMARK 200 DETECTOR TYPE : NULL
REMARK 200 DETECTOR MANUFACTURER : NULL
REMARK 200 INTENSITY-INTEGRATION SOFTWARE : NULL
REMARK 200 DATA SCALING SOFTWARE : NULL
REMARK 200
REMARK 200 NUMBER OF UNIQUE REFLECTIONS : NULL
REMARK 200 RESOLUTION RANGE HIGH (A) : NULL
REMARK 200 RESOLUTION RANGE LOW (A) : NULL
REMARK 200 REJECTION CRITERIA (SIGMA(I)) : NULL
REMARK 200
REMARK 200 OVERALL.
REMARK 200 COMPLETENESS FOR RANGE (%) : NULL
REMARK 200 DATA REDUNDANCY : NULL
REMARK 200 R MERGE (I) : NULL
REMARK 200 R SYM (I) : NULL
REMARK 200 <I/SIGMA(I)> FOR THE DATA SET : NULL
REMARK 200
REMARK 200 IN THE HIGHEST RESOLUTION SHELL.
REMARK 200 HIGHEST RESOLUTION SHELL, RANGE HIGH (A) : NULL
REMARK 200 HIGHEST RESOLUTION SHELL, RANGE LOW (A) : NULL
REMARK 200 COMPLETENESS FOR SHELL (%) : NULL
REMARK 200 DATA REDUNDANCY IN SHELL : NULL
REMARK 200 R MERGE FOR SHELL (I) : NULL
REMARK 200 R SYM FOR SHELL (I) : NULL
REMARK 200 <I/SIGMA(I)> FOR SHELL : NULL
REMARK 200
REMARK 200 DIFFRACTION PROTOCOL: NULL
REMARK 200 METHOD USED TO DETERMINE THE STRUCTURE: NULL
REMARK 200 SOFTWARE USED: NULL
REMARK 200 STARTING MODEL: NULL
REMARK 200
REMARK 200 REMARK: NULL
REMARK 280
REMARK 280 CRYSTAL
REMARK 280 SOLVENT CONTENT, VS (%): 32.16
REMARK 280 MATTHEWS COEFFICIENT, VM (ANGSTROMS**3/DA): 1.81
REMARK 280
REMARK 280 CRYSTALLIZATION CONDITIONS: NULL
REMARK 290
REMARK 290 CRYSTALLOGRAPHIC SYMMETRY
REMARK 290 SYMMETRY OPERATORS FOR SPACE GROUP: P 1 21 1
REMARK 290
REMARK 290 SYMOP SYMMETRY
REMARK 290 NNNMMM OPERATOR
REMARK 290 1555 X,Y,Z
REMARK 290 2555 -X,Y+1/2,-Z
REMARK 290
REMARK 290 WHERE NNN -> OPERATOR NUMBER
REMARK 290 MMM -> TRANSLATION VECTOR
REMARK 290
REMARK 290 CRYSTALLOGRAPHIC SYMMETRY TRANSFORMATIONS
REMARK 290 THE FOLLOWING TRANSFORMATIONS OPERATE ON THE ATOM/HETATM
REMARK 290 RECORDS IN THIS ENTRY TO PRODUCE CRYSTALLOGRAPHICALLY
REMARK 290 RELATED MOLECULES.
REMARK 290 SMTRY1 1 1.000000 0.000000 0.000000 0.00000
REMARK 290 SMTRY2 1 0.000000 1.000000 0.000000 0.00000
REMARK 290 SMTRY3 1 0.000000 0.000000 1.000000 0.00000
REMARK 290 SMTRY1 2 -1.000000 0.000000 0.000000 0.00000
REMARK 290 SMTRY2 2 0.000000 1.000000 0.000000 9.32500
REMARK 290 SMTRY3 2 0.000000 0.000000 -1.000000 0.00000
REMARK 290
REMARK 290 REMARK: NULL
REMARK 300
REMARK 300 BIOMOLECULE: 1
REMARK 300 SEE REMARK 350 FOR THE AUTHOR PROVIDED AND/OR PROGRAM
REMARK 300 GENERATED ASSEMBLY INFORMATION FOR THE STRUCTURE IN
REMARK 300 THIS ENTRY. THE REMARK MAY ALSO PROVIDE INFORMATION ON
REMARK 300 BURIED SURFACE AREA.
REMARK 350
REMARK 350 COORDINATES FOR A COMPLETE MULTIMER REPRESENTING THE KNOWN
REMARK 350 BIOLOGICALLY SIGNIFICANT OLIGOMERIZATION STATE OF THE
REMARK 350 MOLECULE CAN BE GENERATED BY APPLYING BIOMT TRANSFORMATIONS
REMARK 350 GIVEN BELOW. BOTH NON-CRYSTALLOGRAPHIC AND
REMARK 350 CRYSTALLOGRAPHIC OPERATIONS ARE GIVEN.
REMARK 350
REMARK 350 BIOMOLECULE: 1
REMARK 350 AUTHOR DETERMINED BIOLOGICAL UNIT: MONOMERIC
REMARK 350 APPLY THE FOLLOWING TO CHAINS: A
REMARK 350 BIOMT1 1 1.000000 0.000000 0.000000 0.00000
REMARK 350 BIOMT2 1 0.000000 1.000000 0.000000 0.00000
REMARK 350 BIOMT3 1 0.000000 0.000000 1.000000 0.00000
REMARK 400
REMARK 400 COMPOUND
REMARK 400 THE SECONDARY STRUCTURE SPECIFICATIONS ARE THOSE DEFINED
REMARK 400 IN REFERENCE 1 ABOVE AND DEPEND ON PARTICULAR DEFINITIONS
REMARK 400 THAT MAY AFFECT THE DETERMINATION OF END POINTS. PLEASE
REMARK 400 CONSULT THE PRIMARY REFERENCE AND EXAMINE STRUCTURAL
REMARK 400 DETAILS SUCH AS HYDROGEN BONDING AND CONFORMATION ANGLES
REMARK 400 WHEN MAKING USE OF THE SPECIFICATIONS.
REMARK 500
REMARK 500 GEOMETRY AND STEREOCHEMISTRY
REMARK 500 SUBTOPIC: COVALENT BOND ANGLES
REMARK 500
REMARK 500 THE STEREOCHEMICAL PARAMETERS OF THE FOLLOWING RESIDUES
REMARK 500 HAVE VALUES WHICH DEVIATE FROM EXPECTED VALUES BY MORE
REMARK 500 THAN 6*RMSD (M=MODEL NUMBER; RES=RESIDUE NAME; C=CHAIN
REMARK 500 IDENTIFIER; SSEQ=SEQUENCE NUMBER; I=INSERTION CODE).
REMARK 500
REMARK 500 STANDARD TABLE:
REMARK 500 FORMAT: (10X,I3,1X,A3,1X,A1,I4,A1,3(1X,A4,2X),12X,F5.1)
REMARK 500
REMARK 500 EXPECTED VALUES PROTEIN: ENGH AND HUBER, 1999
REMARK 500 EXPECTED VALUES NUCLEIC ACID: CLOWNEY ET AL 1996
REMARK 500
REMARK 500 M RES CSSEQI ATM1 ATM2 ATM3
REMARK 500 ARG A 10 NE - CZ - NH2 ANGL. DEV. = -3.6 DEGREES
REMARK 500 TYR A 29 CB - CG - CD1 ANGL. DEV. = -4.7 DEGREES
REMARK 500
REMARK 500 REMARK: NULL
DBREF 1CRN A 1 46 UNP P01542 CRAM_CRAAB 1 46
SEQRES 1 A 46 THR THR CYS CYS PRO SER ILE VAL ALA ARG SER ASN PHE
SEQRES 2 A 46 ASN VAL CYS ARG LEU PRO GLY THR PRO GLU ALA ILE CYS
SEQRES 3 A 46 ALA THR TYR THR GLY CYS ILE ILE ILE PRO GLY ALA THR
SEQRES 4 A 46 CYS PRO GLY ASP TYR ALA ASN
HELIX 1 H1 ILE A 7 PRO A 19 13/10 CONFORMATION RES 17,19 13
HELIX 2 H2 GLU A 23 THR A 30 1DISTORTED 3/10 AT RES 30 8
SHEET 1 S1 2 THR A 1 CYS A 4 0
SHEET 2 S1 2 CYS A 32 ILE A 35 -1
SSBOND 1 CYS A 3 CYS A 40 1555 1555 2.00
SSBOND 2 CYS A 4 CYS A 32 1555 1555 2.04
SSBOND 3 CYS A 16 CYS A 26 1555 1555 2.05
CRYST1 40.960 18.650 22.520 90.00 90.77 90.00 P 1 21 1 2
ORIGX1 1.000000 0.000000 0.000000 0.00000
ORIGX2 0.000000 1.000000 0.000000 0.00000
ORIGX3 0.000000 0.000000 1.000000 0.00000
SCALE1 0.024414 0.000000 0.000328 0.00000
SCALE2 0.000000 0.053619 0.000000 0.00000
SCALE3 0.000000 0.000000 0.044409 0.00000
ATOM 1 N THR A 1 17.047 14.099 3.625 1.00 13.79 N ATOM 1 N THR A 1 17.047 14.099 3.625 1.00 13.79 N
ATOM 2 CA THR A 1 16.967 12.784 4.338 1.00 10.80 C ATOM 2 CA THR A 1 16.967 12.784 4.338 1.00 10.80 C
ATOM 3 C THR A 1 15.685 12.755 5.133 1.00 9.19 C ATOM 3 C THR A 1 15.685 12.755 5.133 1.00 9.19 C
...@@ -282,14 +10,11 @@ ATOM 9 CA THR A 2 13.856 11.469 6.066 1.00 8.31 C ...@@ -282,14 +10,11 @@ ATOM 9 CA THR A 2 13.856 11.469 6.066 1.00 8.31 C
ATOM 10 C THR A 2 14.164 10.785 7.379 1.00 5.80 C ATOM 10 C THR A 2 14.164 10.785 7.379 1.00 5.80 C
ATOM 11 O THR A 2 14.993 9.862 7.443 1.00 6.94 O ATOM 11 O THR A 2 14.993 9.862 7.443 1.00 6.94 O
ATOM 12 CB THR A 2 12.732 10.711 5.261 1.00 10.32 C ATOM 12 CB THR A 2 12.732 10.711 5.261 1.00 10.32 C
ATOM 13 OG1 THR A 2 13.308 9.439 4.926 1.00 12.81 O
ATOM 14 CG2 THR A 2 12.484 11.442 3.895 1.00 11.90 C
ATOM 15 N CYS A 3 13.488 11.241 8.417 1.00 5.24 N ATOM 15 N CYS A 3 13.488 11.241 8.417 1.00 5.24 N
ATOM 16 CA CYS A 3 13.660 10.707 9.787 1.00 5.39 C ATOM 16 CA CYS A 3 13.660 10.707 9.787 1.00 5.39 C
ATOM 17 C CYS A 3 12.269 10.431 10.323 1.00 4.45 C ATOM 17 C CYS A 3 12.269 10.431 10.323 1.00 4.45 C
ATOM 18 O CYS A 3 11.393 11.308 10.185 1.00 6.54 O ATOM 18 O CYS A 3 11.393 11.308 10.185 1.00 6.54 O
ATOM 19 CB CYS A 3 14.368 11.748 10.691 1.00 5.99 C ATOM 19 CB CYS A 3 14.368 11.748 10.691 1.00 5.99 C
ATOM 20 SG CYS A 3 15.885 12.426 10.016 1.00 7.01 S
ATOM 21 N CYS A 4 12.019 9.272 10.928 1.00 3.90 N ATOM 21 N CYS A 4 12.019 9.272 10.928 1.00 3.90 N
ATOM 22 CA CYS A 4 10.646 8.991 11.408 1.00 4.24 C ATOM 22 CA CYS A 4 10.646 8.991 11.408 1.00 4.24 C
ATOM 23 C CYS A 4 10.654 8.793 12.919 1.00 3.72 C ATOM 23 C CYS A 4 10.654 8.793 12.919 1.00 3.72 C
......
...@@ -42,13 +42,14 @@ SidechainReconstructorPtr GetScRec(const ost::mol::EntityHandle& test_ent) { ...@@ -42,13 +42,14 @@ SidechainReconstructorPtr GetScRec(const ost::mol::EntityHandle& test_ent) {
return sc_rec; return sc_rec;
} }
void CheckLoopRec(const SidechainReconstructorPtr sc_rec, // assume: single chain and res_idx = resnum-1
uint start_resnum, uint loop_length, uint num_residues) { void CheckRecData(SidechainReconstructionDataPtr sc_data,
// reconstruct const std::vector<uint>& start_resnums,
SidechainReconstructionDataPtr sc_data; const std::vector<uint>& loop_lengths,
sc_data = sc_rec->Reconstruct(start_resnum, loop_length); uint num_residues) {
// check all_pos size // check all_pos size
BOOST_CHECK_EQUAL(sc_data->all_pos->GetNumResidues(), num_residues); BOOST_CHECK_EQUAL(sc_data->all_pos->GetNumResidues(), num_residues);
// check env_pos consistency // check env_pos consistency
const uint num_rec_residues = sc_data->env_pos->res_indices.size(); const uint num_rec_residues = sc_data->env_pos->res_indices.size();
BOOST_CHECK_EQUAL(sc_data->env_pos->all_pos->GetNumResidues(), BOOST_CHECK_EQUAL(sc_data->env_pos->all_pos->GetNumResidues(),
...@@ -60,16 +61,32 @@ void CheckLoopRec(const SidechainReconstructorPtr sc_rec, ...@@ -60,16 +61,32 @@ void CheckLoopRec(const SidechainReconstructorPtr sc_rec,
BOOST_CHECK_EQUAL(sc_data->env_pos->all_pos->GetAA(i), BOOST_CHECK_EQUAL(sc_data->env_pos->all_pos->GetAA(i),
sc_data->all_pos->GetAA(res_idx)); sc_data->all_pos->GetAA(res_idx));
} }
// check loop
BOOST_CHECK_EQUAL(sc_data->loop_start_indices.size(), 1u); // generate expected data for loops -> set to be ok with flips
BOOST_CHECK_EQUAL(sc_data->loop_lengths.size(), 1u); const uint num_loops = start_resnums.size();
BOOST_CHECK_EQUAL(sc_data->loop_lengths[0], loop_length); std::set<uint> exp_loop_lengths(loop_lengths.begin(), loop_lengths.end());
for (uint i = 0; i < loop_length; ++i) { std::set<uint> exp_res_indices;
for (uint i_loop = 0; i_loop < num_loops; ++i_loop) {
for (uint idx = 0; idx < loop_lengths[i_loop]; ++idx) {
exp_res_indices.insert(start_resnums[i_loop] + idx - 1);
}
}
// check loops
BOOST_CHECK_EQUAL(sc_data->loop_start_indices.size(), num_loops);
BOOST_CHECK_EQUAL(sc_data->loop_lengths.size(), num_loops);
std::set<uint> sc_loop_lengths(sc_data->loop_lengths.begin(),
sc_data->loop_lengths.end());
BOOST_CHECK(sc_loop_lengths == exp_loop_lengths);
std::set<uint> sc_res_indices;
for (uint i_loop = 0; i_loop < num_loops; ++i_loop) {
// all loop res. assumed to be contiguous // all loop res. assumed to be contiguous
const uint start_idx = sc_data->loop_start_indices[0]; const uint start_idx = sc_data->loop_start_indices[i_loop];
const uint res_idx = sc_data->env_pos->res_indices[start_idx + i]; for (uint idx = 0; idx < sc_data->loop_lengths[i_loop]; ++idx) {
BOOST_CHECK(res_idx == start_resnum + i - 1); sc_res_indices.insert(sc_data->env_pos->res_indices[start_idx + idx]);
} }
}
BOOST_CHECK(sc_res_indices == exp_res_indices);
// check N-ter / C-ter info // check N-ter / C-ter info
BOOST_CHECK_EQUAL(sc_data->env_pos->res_indices.size(), BOOST_CHECK_EQUAL(sc_data->env_pos->res_indices.size(),
sc_data->is_n_ter.size()); sc_data->is_n_ter.size());
...@@ -82,6 +99,7 @@ void CheckLoopRec(const SidechainReconstructorPtr sc_rec, ...@@ -82,6 +99,7 @@ void CheckLoopRec(const SidechainReconstructorPtr sc_rec,
BOOST_CHECK(is_nter == sc_data->is_n_ter[i]); BOOST_CHECK(is_nter == sc_data->is_n_ter[i]);
BOOST_CHECK(is_cter == sc_data->is_c_ter[i]); BOOST_CHECK(is_cter == sc_data->is_c_ter[i]);
} }
// check rotamer_res_indices // check rotamer_res_indices
for (uint i = 0; i < sc_data->rotamer_res_indices.size(); ++i) { for (uint i = 0; i < sc_data->rotamer_res_indices.size(); ++i) {
const uint i_res = sc_data->rotamer_res_indices[i]; const uint i_res = sc_data->rotamer_res_indices[i];
...@@ -89,6 +107,7 @@ void CheckLoopRec(const SidechainReconstructorPtr sc_rec, ...@@ -89,6 +107,7 @@ void CheckLoopRec(const SidechainReconstructorPtr sc_rec,
const uint res_idx = sc_data->env_pos->res_indices[i_res]; const uint res_idx = sc_data->env_pos->res_indices[i_res];
BOOST_CHECK(!(sc_data->all_pos->IsAllSet(res_idx))); BOOST_CHECK(!(sc_data->all_pos->IsAllSet(res_idx)));
} }
// check disulfid_bridges // check disulfid_bridges
for (uint i = 0; i < sc_data->disulfid_bridges.size(); ++i) { for (uint i = 0; i < sc_data->disulfid_bridges.size(); ++i) {
const uint i_res1 = sc_data->disulfid_bridges[i].first; const uint i_res1 = sc_data->disulfid_bridges[i].first;
...@@ -102,6 +121,29 @@ void CheckLoopRec(const SidechainReconstructorPtr sc_rec, ...@@ -102,6 +121,29 @@ void CheckLoopRec(const SidechainReconstructorPtr sc_rec,
} }
} }
void CheckLoopRec(const SidechainReconstructorPtr sc_rec,
uint start_resnum, uint loop_length, uint num_residues) {
// reconstruct
SidechainReconstructionDataPtr sc_data;
sc_data = sc_rec->Reconstruct(start_resnum, loop_length);
// DEBUG-OUT
// std::cout << "SRN: " << start_resnum << ", LL: " << loop_length
// << ", NR: " << num_residues
// << ", RIS: " << sc_data->env_pos->res_indices.size()
// << ", RRIS: " << sc_data->rotamer_res_indices.size()
// << ", DBS: " << sc_data->disulfid_bridges.size() << "\n";
// turn into vector for check and to call other one
std::vector<uint> start_resnums(1, start_resnum);
std::vector<uint> loop_lengths(1, loop_length);
// check
CheckRecData(sc_data, start_resnums, loop_lengths, num_residues);
// call other one
std::vector<uint> chain_indices(1, 0);
sc_data = sc_rec->Reconstruct(start_resnums, loop_lengths, chain_indices);
// check
CheckRecData(sc_data, start_resnums, loop_lengths, num_residues);
}
void CheckEmptyLoop(const SidechainReconstructionDataPtr sc_data, void CheckEmptyLoop(const SidechainReconstructionDataPtr sc_data,
uint num_residues) { uint num_residues) {
// must all be valid and empty // must all be valid and empty
...@@ -145,11 +187,23 @@ BOOST_AUTO_TEST_CASE(test_sidechain_reconstructor_loops) { ...@@ -145,11 +187,23 @@ BOOST_AUTO_TEST_CASE(test_sidechain_reconstructor_loops) {
std::vector<uint> chain_indices(1, 0); std::vector<uint> chain_indices(1, 0);
sc_data = sc_rec->Reconstruct(start_resnums, loop_lengths, chain_indices); sc_data = sc_rec->Reconstruct(start_resnums, loop_lengths, chain_indices);
CheckEmptyLoop(sc_data, num_residues); CheckEmptyLoop(sc_data, num_residues);
// try three loops (note: overlap resolution is tested with IdxHandler)
loop_lengths[0] = 3;
start_resnums.push_back(20);
start_resnums.push_back(30);
loop_lengths.push_back(2);
loop_lengths.push_back(1);
chain_indices.push_back(0);
chain_indices.push_back(0);
sc_data = sc_rec->Reconstruct(start_resnums, loop_lengths, chain_indices);
CheckRecData(sc_data, start_resnums, loop_lengths, num_residues);
} }
BOOST_AUTO_TEST_CASE(test_sidechain_reconstructor_loops_crn) { BOOST_AUTO_TEST_CASE(test_sidechain_reconstructor_loops_crn) {
// setup crn to test disulfid bridges // setup crn to test disulfid bridges
ost::mol::EntityHandle test_ent = LoadTestStructure("data/1crn_sc_test.pdb"); ost::mol::EntityHandle test_ent = LoadTestStructure("data/1crn_sc_test.pdb");
// -> sc missing for THR2 & CYS3, 3 disulfid bridges expected...
uint num_residues = test_ent.GetResidueCount(); uint num_residues = test_ent.GetResidueCount();
SidechainReconstructorPtr sc_rec = GetScRec(test_ent); SidechainReconstructorPtr sc_rec = GetScRec(test_ent);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment