Gemmi C++ API
Loading...
Searching...
No Matches
seqtools.hpp
Go to the documentation of this file.
1// Copyright Global Phasing Ltd.
2//
3// Functions for working with sequences (other than alignment).
4
5#ifndef GEMMI_SEQTOOLS_HPP_
6#define GEMMI_SEQTOOLS_HPP_
7
8#include "resinfo.hpp" // for find_tabulated_residue
9#include "metadata.hpp" // for Entity::first_mon, PolymerType
10
11namespace gemmi {
12
13constexpr double h2o_weight() { return 2 * 1.00794 + 15.9994; }
14
15inline double calculate_sequence_weight(const std::vector<std::string>& seq,
16 double unknown=0.) {
17 double weight = 0.;
18 for (const std::string& item : seq) {
20 weight += res_info.found() ? res_info.weight : unknown;
21 }
22 return weight - (seq.size() - 1) * h2o_weight();
23}
24
25inline std::string one_letter_code(const std::vector<std::string>& seq) {
26 std::string r;
27 for (const std::string& item : seq)
28 r += find_tabulated_residue(Entity::first_mon(item)).fasta_code();
29 return r;
30}
31
35inline std::string pdbx_one_letter_code(const std::vector<std::string>& seq,
36 ResidueKind kind) {
37 std::string r;
38 for (const std::string& item : seq) {
39 std::string code = Entity::first_mon(item);
41 if (ri.is_standard() && ri.kind == kind)
42 r += ri.one_letter_code;
43 else
44 cat_to(r, '(', code, ')');
45 }
46 return r;
47}
48
52 return ResidueKind::AA;
54 return ResidueKind::DNA;
56 return ResidueKind::RNA;
58 fail("sequence_kind(): unknown polymer type");
59 return ResidueKind::AA;
60}
61
62} // namespace gemmi
63#endif
ResidueKind sequence_kind(PolymerType ptype)
used with expand_one_letter_sequence()
Definition seqtools.hpp:50
double calculate_sequence_weight(const std::vector< std::string > &seq, double unknown=0.)
Definition seqtools.hpp:15
std::string pdbx_one_letter_code(const std::vector< std::string > &seq, ResidueKind kind)
Returns the format used in _entity_poly.pdbx_seq_one_letter_code, in which non-standard amino acids/n...
Definition seqtools.hpp:35
bool is_polypeptide(PolymerType pt)
Definition metadata.hpp:211
std::string one_letter_code(const std::vector< std::string > &seq)
Definition seqtools.hpp:25
void cat_to(std::string &)
Definition util.hpp:25
constexpr double h2o_weight()
Definition seqtools.hpp:13
void fail(const std::string &msg)
Definition fail.hpp:59
ResidueKind
Definition resinfo.hpp:26
GEMMI_DLL ResidueInfo find_tabulated_residue(const std::string &name)
static std::string first_mon(const std::string &mon_list)
Definition metadata.hpp:241