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
915d6504
Unverified
Commit
915d6504
authored
Apr 13, 2021
by
Maarten L. Hekkelman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
First steps, remove CCP4 info from compound
parent
5e63ca7a
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
56 additions
and
68 deletions
+56
-68
include/cif++/Cif++.hpp
+29
-7
include/cif++/Compound.hpp
+0
-0
include/cif++/Structure.hpp
+0
-7
src/Compound.cpp
+0
-0
src/PDB2Cif.cpp
+25
-28
src/Structure.cpp
+2
-26
No files found.
include/cif++/Cif++.hpp
View file @
915d6504
...
@@ -289,9 +289,10 @@ namespace detail
...
@@ -289,9 +289,10 @@ namespace detail
void
swap
(
ItemReference
&
b
);
void
swap
(
ItemReference
&
b
);
template
<
typename
T
=
std
::
string
>
template
<
typename
T
=
std
::
string
>
T
as
()
const
auto
as
()
const
{
{
return
item_value_as
<
T
>::
convert
(
*
this
);
using
value_type
=
std
::
remove_cv_t
<
std
::
remove_reference_t
<
T
>>
;
return
item_value_as
<
value_type
>::
convert
(
*
this
);
}
}
template
<
typename
T
>
template
<
typename
T
>
...
@@ -337,11 +338,13 @@ namespace detail
...
@@ -337,11 +338,13 @@ namespace detail
template
<
typename
T
>
template
<
typename
T
>
struct
ItemReference
::
item_value_as
<
T
,
std
::
enable_if_t
<
std
::
is_floating_point_v
<
T
>>>
struct
ItemReference
::
item_value_as
<
T
,
std
::
enable_if_t
<
std
::
is_floating_point_v
<
T
>>>
{
{
static
T
convert
(
const
ItemReference
&
ref
)
using
value_type
=
std
::
remove_reference_t
<
std
::
remove_cv_t
<
T
>>
;
static
value_type
convert
(
const
ItemReference
&
ref
)
{
{
T
result
=
{};
value_type
result
=
{};
if
(
not
ref
.
empty
())
if
(
not
ref
.
empty
())
result
=
static_cast
<
T
>
(
std
::
stod
(
ref
.
c_str
()));
result
=
static_cast
<
value_type
>
(
std
::
stod
(
ref
.
c_str
()));
return
result
;
return
result
;
}
}
...
@@ -376,7 +379,7 @@ namespace detail
...
@@ -376,7 +379,7 @@ namespace detail
};
};
template
<
typename
T
>
template
<
typename
T
>
struct
ItemReference
::
item_value_as
<
T
,
std
::
enable_if_t
<
std
::
is_integral_v
<
T
>
and
std
::
is_unsigned_v
<
T
>>>
struct
ItemReference
::
item_value_as
<
T
,
std
::
enable_if_t
<
std
::
is_integral_v
<
T
>
and
std
::
is_unsigned_v
<
T
>
and
not
std
::
is_same_v
<
T
,
bool
>
>>
{
{
static
T
convert
(
const
ItemReference
&
ref
)
static
T
convert
(
const
ItemReference
&
ref
)
{
{
...
@@ -417,7 +420,7 @@ namespace detail
...
@@ -417,7 +420,7 @@ namespace detail
};
};
template
<
typename
T
>
template
<
typename
T
>
struct
ItemReference
::
item_value_as
<
T
,
std
::
enable_if_t
<
std
::
is_integral_v
<
T
>
and
std
::
is_signed_v
<
T
>>>
struct
ItemReference
::
item_value_as
<
T
,
std
::
enable_if_t
<
std
::
is_integral_v
<
T
>
and
std
::
is_signed_v
<
T
>
and
not
std
::
is_same_v
<
T
,
bool
>
>>
{
{
static
T
convert
(
const
ItemReference
&
ref
)
static
T
convert
(
const
ItemReference
&
ref
)
{
{
...
@@ -482,6 +485,25 @@ namespace detail
...
@@ -482,6 +485,25 @@ namespace detail
}
}
};
};
template
<
typename
T
>
struct
ItemReference
::
item_value_as
<
T
,
std
::
enable_if_t
<
std
::
is_same_v
<
T
,
bool
>>>
{
static
bool
convert
(
const
ItemReference
&
ref
)
{
bool
result
=
false
;
if
(
not
ref
.
empty
())
result
=
iequals
(
ref
.
c_str
(),
"y"
);
return
result
;
}
static
int
compare
(
const
ItemReference
&
ref
,
bool
value
,
bool
icase
)
{
bool
rv
=
convert
(
ref
);
return
value
&&
rv
?
0
:
(
rv
<
value
?
-
1
:
1
);
}
};
template
<
size_t
N
>
template
<
size_t
N
>
struct
ItemReference
::
item_value_as
<
char
[
N
]
>
struct
ItemReference
::
item_value_as
<
char
[
N
]
>
{
{
...
...
include/cif++/Compound.hpp
View file @
915d6504
This diff is collapsed.
Click to expand it.
include/cif++/Structure.hpp
View file @
915d6504
...
@@ -141,9 +141,6 @@ class Atom
...
@@ -141,9 +141,6 @@ class Atom
// access data in compound for this atom
// access data in compound for this atom
// the energy-type field
std
::
string
energyType
()
const
;
// convenience routine
// convenience routine
bool
isBackBone
()
const
bool
isBackBone
()
const
{
{
...
@@ -243,10 +240,6 @@ class Residue
...
@@ -243,10 +240,6 @@ class Residue
bool
isWater
()
const
{
return
mCompoundID
==
"HOH"
;
}
bool
isWater
()
const
{
return
mCompoundID
==
"HOH"
;
}
bool
isSugar
()
const
;
bool
isPyranose
()
const
;
bool
isFuranose
()
const
;
const
Structure
&
structure
()
const
{
return
*
mStructure
;
}
const
Structure
&
structure
()
const
{
return
*
mStructure
;
}
bool
empty
()
const
{
return
mStructure
==
nullptr
;
}
bool
empty
()
const
{
return
mStructure
==
nullptr
;
}
...
...
src/Compound.cpp
View file @
915d6504
This diff is collapsed.
Click to expand it.
src/PDB2Cif.cpp
View file @
915d6504
...
@@ -457,7 +457,6 @@ class PDBFileParser
...
@@ -457,7 +457,6 @@ class PDBFileParser
char
iCode
;
char
iCode
;
int
numHetAtoms
=
0
;
int
numHetAtoms
=
0
;
std
::
string
text
;
std
::
string
text
;
bool
sugar
=
false
;
std
::
string
asymID
;
std
::
string
asymID
;
std
::
vector
<
PDBRecord
*>
atoms
;
std
::
vector
<
PDBRecord
*>
atoms
;
bool
processed
=
false
;
bool
processed
=
false
;
...
@@ -467,14 +466,6 @@ class PDBFileParser
...
@@ -467,14 +466,6 @@ class PDBFileParser
HET
(
const
std
::
string
&
hetID
,
char
chainID
,
int
seqNum
,
char
iCode
,
int
numHetAtoms
=
0
,
const
std
::
string
&
text
=
{})
HET
(
const
std
::
string
&
hetID
,
char
chainID
,
int
seqNum
,
char
iCode
,
int
numHetAtoms
=
0
,
const
std
::
string
&
text
=
{})
:
hetID
(
hetID
),
chainID
(
chainID
),
seqNum
(
seqNum
),
iCode
(
iCode
),
numHetAtoms
(
numHetAtoms
),
text
(
text
)
:
hetID
(
hetID
),
chainID
(
chainID
),
seqNum
(
seqNum
),
iCode
(
iCode
),
numHetAtoms
(
numHetAtoms
),
text
(
text
)
{
{
// just in case we don't have a CCP4 available
if
(
hetID
==
"MAN"
or
hetID
==
"BMA"
or
hetID
==
"NAG"
or
hetID
==
"NDG"
or
hetID
==
"FUC"
or
hetID
==
"FUL"
)
sugar
=
true
;
else
{
auto
compound
=
CompoundFactory
::
instance
().
create
(
hetID
);
sugar
=
compound
?
compound
->
isSugar
()
:
false
;
}
}
}
};
};
...
@@ -4374,33 +4365,38 @@ void PDBFileParser::ConstructEntities()
...
@@ -4374,33 +4365,38 @@ void PDBFileParser::ConstructEntities()
mMod2parent
.
count
(
cc
)
?
mMod2parent
[
cc
]
:
cc
mMod2parent
.
count
(
cc
)
?
mMod2parent
[
cc
]
:
cc
);
);
std
::
string
formula
=
mFormuls
[
cc
];
std
::
string
name
;
if
(
formula
.
empty
()
and
compound
!=
nullptr
)
std
::
string
formula
;
formula
=
compound
->
formula
();
std
::
string
type
;
else
{
const
std
::
regex
rx
(
R"(\d+\((.+)\))"
);
std
::
smatch
m
;
if
(
std
::
regex_match
(
formula
,
m
,
rx
))
formula
=
m
[
1
].
str
();
}
std
::
string
name
=
mHetnams
[
cc
];
if
(
name
.
empty
()
and
compound
!=
nullptr
)
name
=
compound
->
name
();
std
::
string
type
=
"other"
;
std
::
string
nstd
=
"."
;
std
::
string
nstd
=
"."
;
std
::
string
formulaWeight
;
if
(
compound
!=
nullptr
)
if
(
compound
!=
nullptr
)
{
{
name
=
compound
->
name
();
type
=
compound
->
type
();
type
=
compound
->
type
();
if
(
type
.
empty
())
type
=
"NON-POLYMER"
;
if
(
iequals
(
type
,
"L-peptide linking"
)
or
iequals
(
type
,
"peptide linking"
))
if
(
iequals
(
type
,
"L-peptide linking"
)
or
iequals
(
type
,
"peptide linking"
))
nstd
=
"y"
;
nstd
=
"y"
;
formula
=
compound
->
formula
();
formulaWeight
=
std
::
to_string
(
compound
->
formulaWeight
());
}
if
(
name
.
empty
())
name
=
mHetnams
[
cc
];
if
(
type
.
empty
())
type
=
"NON-POLYMER"
;
if
(
formula
.
empty
())
{
formula
=
mFormuls
[
cc
];
const
std
::
regex
rx
(
R"(\d+\((.+)\))"
);
std
::
smatch
m
;
if
(
std
::
regex_match
(
formula
,
m
,
rx
))
formula
=
m
[
1
].
str
();
}
}
if
(
modResSet
.
count
(
cc
))
if
(
modResSet
.
count
(
cc
))
...
@@ -4410,6 +4406,7 @@ void PDBFileParser::ConstructEntities()
...
@@ -4410,6 +4406,7 @@ void PDBFileParser::ConstructEntities()
{
"id"
,
cc
},
{
"id"
,
cc
},
{
"name"
,
name
},
{
"name"
,
name
},
{
"formula"
,
formula
},
{
"formula"
,
formula
},
{
"formula_weight"
,
formulaWeight
},
{
"mon_nstd_flag"
,
nstd
},
{
"mon_nstd_flag"
,
nstd
},
{
"type"
,
type
}
{
"type"
,
type
}
});
});
...
...
src/Structure.cpp
View file @
915d6504
...
@@ -566,16 +566,6 @@ int Atom::charge() const
...
@@ -566,16 +566,6 @@ int Atom::charge() const
return
property
<
int
>
(
"pdbx_formal_charge"
);
return
property
<
int
>
(
"pdbx_formal_charge"
);
}
}
std
::
string
Atom
::
energyType
()
const
{
std
::
string
result
;
if
(
impl
()
and
impl
()
->
mCompound
)
result
=
impl
()
->
mCompound
->
getAtomByID
(
impl
()
->
mAtomID
).
typeEnergy
;
return
result
;
}
float
Atom
::
uIso
()
const
float
Atom
::
uIso
()
const
{
{
float
result
;
float
result
;
...
@@ -1013,21 +1003,6 @@ bool Residue::isEntity() const
...
@@ -1013,21 +1003,6 @@ bool Residue::isEntity() const
return
a1
.
size
()
==
a2
.
size
();
return
a1
.
size
()
==
a2
.
size
();
}
}
bool
Residue
::
isSugar
()
const
{
return
compound
().
isSugar
();
}
bool
Residue
::
isPyranose
()
const
{
return
cif
::
iequals
(
compound
().
group
(),
"pyranose"
);
}
bool
Residue
::
isFuranose
()
const
{
return
cif
::
iequals
(
compound
().
group
(),
"furanose"
);
}
std
::
string
Residue
::
authID
()
const
std
::
string
Residue
::
authID
()
const
{
{
std
::
string
result
;
std
::
string
result
;
...
@@ -2101,7 +2076,7 @@ void Structure::insertCompound(const std::string& compoundID, bool isEntity)
...
@@ -2101,7 +2076,7 @@ void Structure::insertCompound(const std::string& compoundID, bool isEntity)
{
{
auto
compound
=
Compound
::
create
(
compoundID
);
auto
compound
=
Compound
::
create
(
compoundID
);
if
(
compound
==
nullptr
)
if
(
compound
==
nullptr
)
throw
std
::
runtime_error
(
"Trying to insert unknown compound "
+
compoundID
+
" (not found in CC
P4 monomers lib
)"
);
throw
std
::
runtime_error
(
"Trying to insert unknown compound "
+
compoundID
+
" (not found in CC
D
)"
);
cif
::
Datablock
&
db
=
*
mFile
.
impl
().
mDb
;
cif
::
Datablock
&
db
=
*
mFile
.
impl
().
mDb
;
...
@@ -2113,6 +2088,7 @@ void Structure::insertCompound(const std::string& compoundID, bool isEntity)
...
@@ -2113,6 +2088,7 @@ void Structure::insertCompound(const std::string& compoundID, bool isEntity)
{
"id"
,
compoundID
},
{
"id"
,
compoundID
},
{
"name"
,
compound
->
name
()
},
{
"name"
,
compound
->
name
()
},
{
"formula"
,
compound
->
formula
()
},
{
"formula"
,
compound
->
formula
()
},
{
"formula_weight"
,
compound
->
formulaWeight
()
},
{
"type"
,
compound
->
type
()
}
{
"type"
,
compound
->
type
()
}
});
});
}
}
...
...
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