IMP logo
IMP Reference Guide  2.17.0
The Integrative Modeling Platform
FitParameters.h
Go to the documentation of this file.
1 /**
2  * \file IMP/saxs/FitParameters.h \brief
3  *
4  * Copyright 2007-2022 IMP Inventors. All rights reserved.
5  *
6  */
7 
8 #ifndef IMPSAXS_FIT_PARAMETERS_H
9 #define IMPSAXS_FIT_PARAMETERS_H
10 #include <IMP/saxs/saxs_config.h>
11 #include <iostream>
12 
13 IMPSAXS_BEGIN_NAMESPACE
14 
15 //! Parameters of a fit, from ProfileFitter.
16 class IMPSAXSEXPORT FitParameters {
17  public:
19  : chi_square_(0.0), c1_(0.0), c2_(0.0), c_(0.0), o_(0.0),
20  default_chi_square_(0.0) {}
21  FitParameters(double chi_square, double c1, double c2, double c, double o)
22  : chi_square_(chi_square), c1_(c1), c2_(c2), c_(c), o_(o), default_chi_square_(0.0) {}
23  FitParameters(double chi_square, double c1, double c2)
24  : chi_square_(chi_square), c1_(c1), c2_(c2), c_(0.0), o_(0.0),
25  default_chi_square_(0.0) {}
26 
27  double get_score() const { return chi_square_; }
28  double get_chi_square() const { return chi_square_; }
29  double get_c1() const { return c1_; }
30  double get_c2() const { return c2_; }
31  double get_scale() const { return c_; }
32  double get_offset() const { return o_; }
33  double get_default_chi_square() const { return default_chi_square_; }
34  std::string get_pdb_file_name() const { return pdb_file_name_; }
35  std::string get_profile_file_name() const { return profile_file_name_; }
36  int get_mol_index() const { return mol_index_; }
37 
38  void set_score(double score) { chi_square_ = score; }
39  void set_chi_square(double chi_square) { chi_square_ = chi_square; }
40  void set_default_chi_square(double chi_square) { default_chi_square_ = chi_square; }
41  void set_profile_file_name(std::string file_name) {
42  profile_file_name_ = file_name;
43  }
44  void set_pdb_file_name(std::string file_name) { pdb_file_name_ = file_name; }
45  void set_mol_index(int index) { mol_index_ = index; }
46 
47  void show(std::ostream& s) const {
48  if (pdb_file_name_.length() > 0) {
49  s << pdb_file_name_ << " ";
50  }
51  if (profile_file_name_.length() > 0) {
52  s << profile_file_name_ << " ";
53  }
54  s << "Chi^2 = " << chi_square_ << " c1 = " << c1_ << " c2 = " << c2_
55  << " default chi^2 = " << default_chi_square_ << std::endl;
56  }
57 #ifndef SWIG
58  struct compare_fit_parameters {
59  bool operator()(const FitParameters& fp1, const FitParameters& fp2) {
60  return fp1.get_score() < fp2.get_score();
61  }
62  };
63 #endif
64 
65  protected:
66  double chi_square_; // fit score
67  double c1_; // excluded volume fit
68  double c2_; // water layer fit
69  double c_; // scaling
70  double o_; // offset
71  double default_chi_square_; // default chi_square value without fitting c1/c2
72  std::string profile_file_name_;
73  std::string pdb_file_name_;
74  int mol_index_; // unique mol index
75 };
76 
77 IMPSAXS_END_NAMESPACE
78 
79 #endif /* IMPSAXS_FIT_PARAMETERS_H */
Parameters of a fit, from ProfileFitter.
Definition: FitParameters.h:16
std::ostream & show(Hierarchy h, std::ostream &out=std::cout)
Print the hierarchy using a given decorator to display each node.