25 while (std::getline(input_stream, line)) {
27 if (line.find(
"axis") != std::string::npos) {
32 if (line.find(
"data") != std::string::npos)
39 std::ostream& output_stream)
41 output_stream <<
"# BornAgain Intensity Data\n\n";
43 for (
size_t i = 0; i < data.
rank(); ++i) {
44 std::string axis_name = std::string(
"axis") + std::to_string(i);
45 std::unique_ptr<IAxis> P_axis(data.
axis(i).
clone());
46 P_axis->setName(axis_name);
47 output_stream << std::endl;
48 output_stream <<
"# axis-" << i <<
"\n";
49 output_stream << (*P_axis) <<
"\n";
53 output_stream <<
"\n# data\n";
55 output_stream << std::endl;
59 std::ostream& output_stream,
size_t n_columns)
63 output_stream.imbue(std::locale::classic());
66 while (it != data.
end()) {
68 double z_value = *it++;
70 if (ncol == n_columns) {
71 output_stream << std::endl;
79 return (std::fpclassify(value) == FP_SUBNORMAL) ? 0.0 : value;
Defines various functions to interact from numpy on Python side.
Defines a few helper functions.
Defines OutputDataReadWriteINT.
virtual IAxis * clone() const =0
clone function
virtual size_t size() const =0
retrieve the number of bins
static void writeOutputDataDoubles(const OutputData< double > &data, std::ostream &output_stream, size_t n_columns)
OutputData< double > * readOutputData(std::istream &input_stream)
void writeOutputData(const OutputData< double > &data, std::ostream &output_stream)
static double ignoreDenormalized(double value)
iterator end()
Returns read/write iterator that points to the one past last element.
size_t rank() const
Returns number of dimensions.
const IAxis & axis(size_t serial_number) const
returns axis with given serial number
void addAxis(const IAxis &new_axis)
iterator begin()
Returns read/write iterator that points to the first element.
std::string trim(const std::string &str, const std::string &whitespace=" \t")
Cuts any of the chars given in whitespace from start and end of str.
std::string scientific(const T value, int n=10)
Returns scientific string representing given value of any numeric type.