71 Pdb(
int atom_count_in = 0,
int model_count_in = 1);
73 Pdb(
const std::string &file_name_in,
int model_index = -1,
74 const std::vector<char> &alternate_prefs = {
' ',
'A' });
76 Pdb(
const std::string &file_name_in,
const std::vector<int> &model_indices,
77 const std::vector<char> &alternate_prefs = {
' ',
'A' });
79 Pdb(
int atom_count_in,
int model_count_in,
const std::vector<double> &x_coordinates_in,
80 const std::vector<double> &y_coordinates_in,
const std::vector<double> &z_coordinates_in,
81 const std::vector<char4> &atom_names_in,
const std::vector<char4> &residue_names_in,
82 const std::vector<char> &chain_names_in,
const std::vector<double> &occupancies_in,
83 const std::vector<double> &b_factors_in,
const std::vector<char2> &elements_in = {},
84 const std::vector<int> &atom_numbers_in = {},
85 const std::vector<int> &residue_numbers_in = {},
86 const std::vector<int> &anisotropy_matrices_in = {},
87 const std::vector<PdbAtomKind> &atom_classes_in = {},
88 const std::vector<std::string> &header_in = {},
89 const std::vector<std::string> &remark_in = {},
90 const std::vector<std::string> &extras_in = {});
100 template <
typename T>
103 template <
typename T>
128 HybridFormat layout = default_hpc_format)
const;
141 template <
typename T>
148 void writeToFile(
const std::string &file_name, PrintSituation expectation,
149 const std::vector<int> &model_indices = {})
const;
194 template <
typename T>
195 void loadCoordinates(
const T* xcrd_in,
const T* ycrd_in,
const T* zcrd_in,
int model_index = 0,
196 double gpos_scale = 1.0);
198 void loadCoordinates(
const llint* xcrd_in,
const llint* ycrd_in,
const llint* zcrd_in,
199 const int* xcrd_ovrf,
const int* ycrd_ovrf,
const int* zcrd_ovrf,
200 double gpos_scale = 1.0,
int model_index = 0);
210 template <
typename T>
213 template <
typename T>
216 void loadCoordinates(
const PhaseSpaceSynthesis *poly_ps,
int system_index,
int model_index = 0);
218 void loadCoordinates(
const PhaseSpaceSynthesis &poly_ps,
int system_index,
int model_index = 0);
220 void loadCoordinates(
const Condensate *cdns,
int system_index,
int model_index = 0);
222 void loadCoordinates(
const Condensate &cdns,
int system_index,
int model_index = 0);
231 std::string file_name;
238 int padded_atom_count;
245 UnitCellType unit_cell;
246 std::vector<PdbAtomKind> atom_classes;
247 std::vector<int> atom_numbers;
250 std::vector<char4> atom_names;
253 std::vector<char4> residue_names;
256 std::vector<char> chain_names;
257 std::vector<int> residue_numbers;
260 std::vector<double> x_coordinates;
261 std::vector<double> y_coordinates;
262 std::vector<double> z_coordinates;
263 std::vector<double> box_dimensions;
269 std::vector<double> occupancies;
272 std::vector<double> b_factors;
273 std::vector<char2> atom_symbols;
274 std::vector<int> atom_formal_charges;
275 std::vector<int> ter_card_locations;
284 std::vector<int> anisotropy_xx;
285 std::vector<int> anisotropy_xy;
286 std::vector<int> anisotropy_xz;
287 std::vector<int> anisotropy_yy;
288 std::vector<int> anisotropy_yz;
289 std::vector<int> anisotropy_zz;
293 bool print_formal_charges;
307 void computeTransforms(
const int model_index, std::vector<double> *umat,
308 std::vector<double> *invu)
const;
316 int countAtomRecords(
const TextFile &tf,
int line_start = 0,
int line_end = -1)
const;
325 void readAtomRecords(
const TextFile &tf,
int line_start,
int line_end,
int atom_start,
326 const std::vector<char> &alternate_prefs = {
' ',
'A' });
335 void seekUnitCellDimensions(
const TextFile &tf,
int line_start,
int line_end,
int box_start);
341 void validateModelIndex(
int model_index,
const char* caller =
nullptr)
const;
347 void writeModel(std::ofstream *foutp,
const int model_index)
const;