Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
L
libcifpp
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
open
libcifpp
Commits
343465ce
Unverified
Commit
343465ce
authored
Mar 08, 2023
by
Maarten L. Hekkelman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added test for create_non_poly with initializers
parent
bec51594
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
129 additions
and
4 deletions
+129
-4
include/cif++/model.hpp
+8
-0
src/model.cpp
+3
-2
src/pdb/cif2pdb.cpp
+1
-1
test/model-test.cpp
+117
-0
test/unit-v2-test.cpp
+0
-1
No files found.
include/cif++/model.hpp
View file @
343465ce
...
...
@@ -216,6 +216,14 @@ class atom
set_location
(
loc
);
}
/// \brief rotate the coordinates of this atom by \a q around point \a p
void
rotate
(
quaternion
q
,
point
p
)
{
auto
loc
=
get_location
();
loc
.
rotate
(
q
,
p
);
set_location
(
loc
);
}
/// \brief Translate and rotate the position of this atom by \a t and \a q
void
translate_and_rotate
(
point
t
,
quaternion
q
)
{
...
...
src/model.cpp
View file @
343465ce
...
...
@@ -2335,18 +2335,19 @@ std::string structure::create_non_poly(const std::string &entity_id, std::vector
{
auto
atom_id
=
atom_site
.
get_unique_id
(
""
);
atom
.
set_value
(
"
name
"
,
atom_id
);
atom
.
set_value
(
"
id
"
,
atom_id
);
atom
.
set_value
(
"label_asym_id"
,
asym_id
);
atom
.
set_value
(
"auth_asym_id"
,
asym_id
);
atom
.
set_value
(
"label_entity_id"
,
entity_id
);
atom
.
set_value_if_empty
({
"group_PDB"
,
"HETATM"
});
atom
.
set_value_if_empty
({
"label_comp_id"
,
comp_id
});
atom
.
set_value_if_empty
({
"label_seq_id"
,
""
});
atom
.
set_value_if_empty
({
"label_seq_id"
,
"
.
"
});
atom
.
set_value_if_empty
({
"auth_comp_id"
,
comp_id
});
atom
.
set_value_if_empty
({
"auth_seq_id"
,
1
});
atom
.
set_value_if_empty
({
"pdbx_PDB_model_num"
,
1
});
atom
.
set_value_if_empty
({
"label_alt_id"
,
""
});
atom
.
set_value_if_empty
({
"occupancy"
,
1.0
,
2
});
auto
row
=
atom_site
.
emplace
(
atom
.
begin
(),
atom
.
end
());
...
...
src/pdb/cif2pdb.cpp
View file @
343465ce
...
...
@@ -3372,7 +3372,7 @@ std::tuple<int, int> WriteCoordinatesForModel(std::ostream &pdbFile, const datab
auto
&
atom_site
=
db
[
"atom_site"
];
auto
&
atom_site_anisotrop
=
db
[
"atom_site_anisotrop"
];
auto
&
entity
=
db
[
"entity"
];
auto
&
pdbx_poly_seq_scheme
=
db
[
"pdbx_poly_seq_scheme"
];
//
auto &pdbx_poly_seq_scheme = db["pdbx_poly_seq_scheme"];
// auto &pdbx_nonpoly_scheme = db["pdbx_nonpoly_scheme"];
auto
&
pdbx_branch_scheme
=
db
[
"pdbx_branch_scheme"
];
...
...
test/model-test.cpp
View file @
343465ce
...
...
@@ -202,6 +202,123 @@ _atom_type.symbol C
// --------------------------------------------------------------------
BOOST_AUTO_TEST_CASE
(
create_nonpoly_2
)
{
cif
::
VERBOSE
=
1
;
cif
::
file
file
;
file
.
load_dictionary
(
"mmcif_pdbx.dic"
);
file
.
emplace
(
"TEST"
);
// create a datablock
cif
::
mm
::
structure
structure
(
file
);
cif
::
file
lig
(
"HEM.cif"
);
auto
&
chem_comp_atom
=
lig
[
"HEM"
][
"chem_comp_atom"
];
std
::
vector
<
cif
::
row_initializer
>
atoms
;
for
(
const
auto
&
[
type_symbol
,
label_atom_id
,
Cartn_x
,
Cartn_y
,
Cartn_z
]
:
chem_comp_atom
.
rows
<
std
::
string
,
std
::
string
,
float
,
float
,
float
>
(
"type_symbol"
,
"atom_id"
,
"model_Cartn_x"
,
"model_Cartn_y"
,
"model_Cartn_z"
))
{
atoms
.
emplace_back
(
cif
::
row_initializer
{
{
"type_symbol"
,
type_symbol
},
{
"label_atom_id"
,
label_atom_id
},
{
"auth_atom_id"
,
label_atom_id
},
{
"Cartn_x"
,
Cartn_x
},
{
"Cartn_y"
,
Cartn_y
},
{
"Cartn_z"
,
Cartn_z
}
});
if
(
atoms
.
size
()
==
4
)
break
;
}
std
::
string
entity_id
=
structure
.
create_non_poly_entity
(
"HEM"
);
structure
.
create_non_poly
(
entity_id
,
atoms
);
auto
expected
=
R"(
data_TEST
#
_pdbx_nonpoly_scheme.asym_id A
_pdbx_nonpoly_scheme.ndb_seq_num 1
_pdbx_nonpoly_scheme.entity_id 1
_pdbx_nonpoly_scheme.mon_id HEM
_pdbx_nonpoly_scheme.pdb_seq_num 1
_pdbx_nonpoly_scheme.auth_seq_num 1
_pdbx_nonpoly_scheme.pdb_mon_id HEM
_pdbx_nonpoly_scheme.auth_mon_id HEM
_pdbx_nonpoly_scheme.pdb_strand_id A
_pdbx_nonpoly_scheme.pdb_ins_code .
#
loop_
_atom_site.id
_atom_site.auth_asym_id
_atom_site.label_alt_id
_atom_site.label_asym_id
_atom_site.label_atom_id
_atom_site.label_comp_id
_atom_site.label_entity_id
_atom_site.label_seq_id
_atom_site.type_symbol
_atom_site.group_PDB
_atom_site.pdbx_PDB_ins_code
_atom_site.Cartn_x
_atom_site.Cartn_y
_atom_site.Cartn_z
_atom_site.occupancy
_atom_site.pdbx_formal_charge
_atom_site.auth_seq_id
_atom_site.auth_comp_id
_atom_site.auth_atom_id
_atom_site.pdbx_PDB_model_num
1 A ? A CHA HEM 1 . C HETATM ? 2.748 -19.531 39.896 1.00 ? 1 HEM CHA 1
2 A ? A CHB HEM 1 . C HETATM ? 3.258 -17.744 35.477 1.00 ? 1 HEM CHB 1
3 A ? A CHC HEM 1 . C HETATM ? 1.703 -21.9 33.637 1.00 ? 1 HEM CHC 1
4 A ? A CHD HEM 1 . C HETATM ? 1.149 -23.677 38.059 1.00 ? 1 HEM CHD 1
#
_chem_comp.id HEM
_chem_comp.type NON-POLYMER
_chem_comp.name 'PROTOPORPHYRIN IX CONTAINING FE'
_chem_comp.formula 'C34 H32 Fe N4 O4'
_chem_comp.formula_weight 616.487000
#
_pdbx_entity_nonpoly.entity_id 1
_pdbx_entity_nonpoly.name 'PROTOPORPHYRIN IX CONTAINING FE'
_pdbx_entity_nonpoly.comp_id HEM
#
_entity.id 1
_entity.type non-polymer
_entity.pdbx_description 'PROTOPORPHYRIN IX CONTAINING FE'
_entity.formula_weight 616.487000
#
_struct_asym.id A
_struct_asym.entity_id 1
_struct_asym.pdbx_blank_PDB_chainid_flag N
_struct_asym.pdbx_modified N
_struct_asym.details ?
#
_atom_type.symbol C
)"
_cf
;
expected
.
load_dictionary
(
"mmcif_pdbx.dic"
);
if
(
not
(
expected
.
front
()
==
structure
.
get_datablock
()))
{
BOOST_TEST
(
false
);
std
::
cout
<<
expected
.
front
()
<<
std
::
endl
<<
std
::
endl
<<
structure
.
get_datablock
()
<<
std
::
endl
;
expected
.
save
(
"/tmp/a"
);
file
.
save
(
"/tmp/b"
);
}
}
// --------------------------------------------------------------------
BOOST_AUTO_TEST_CASE
(
test_atom_id
)
{
auto
data
=
R"(
...
...
test/unit-v2-test.cpp
View file @
343465ce
...
...
@@ -3104,4 +3104,3 @@ _date today
BOOST_TEST
(
db
==
db2
);
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment