Skip to content
Snippets Groups Projects
Commit 35573d9b authored by Wuttke, Joachim's avatar Wuttke, Joachim
Browse files

fcts -> local ns

parent 00addba9
No related branches found
No related tags found
1 merge request!1628simplify and unify API and code for reading or writing data files
...@@ -29,6 +29,44 @@ bool isDoubleStartChar(char c) ...@@ -29,6 +29,44 @@ bool isDoubleStartChar(char c)
return isdigit(c) || c == '-' || c == '+'; return isdigit(c) || c == '-' || c == '+';
} }
double ignoreDenormalized(double value)
{
return (std::fpclassify(value) == FP_SUBNORMAL) ? 0.0 : value;
}
void write1DRepresentation(const Datafield& data, std::ostream& output_stream)
{
output_stream << "# coordinates intensities" << std::endl;
output_stream.imbue(std::locale::classic());
output_stream << std::scientific << std::setprecision(12);
const std::vector<double> axis_values = data.axis(0).binCenters();
// printing coordinate and associated intensity
for (size_t i = 0, nrows = axis_values.size(); i < nrows; ++i)
output_stream << axis_values[i] << " " << ignoreDenormalized(data[i]) << std::endl;
}
void write2DRepresentation(const Datafield& data, std::ostream& output_stream)
{
const size_t nrows = data.axis(1).size();
const size_t ncols = data.axis(0).size();
output_stream << "# [nrows=" << nrows << ", ncols=" << ncols << "]" << std::endl;
std::vector<std::vector<double>> dataArray = DataUtil::Array::createVector2D(data);
output_stream.imbue(std::locale::classic());
output_stream << std::scientific << std::setprecision(12);
for (size_t i = 0; i < nrows; i++) {
for (size_t j = 0; j < ncols; j++) {
double z_value = dataArray[i][j];
output_stream << ignoreDenormalized(z_value) << " ";
}
output_stream << std::endl;
}
}
} // namespace } // namespace
Datafield* ReadWriteNumpyTXT::readDatafield(std::istream& input_stream) Datafield* ReadWriteNumpyTXT::readDatafield(std::istream& input_stream)
...@@ -98,41 +136,3 @@ void ReadWriteNumpyTXT::writeDatafield(const Datafield& data, std::ostream& outp ...@@ -98,41 +136,3 @@ void ReadWriteNumpyTXT::writeDatafield(const Datafield& data, std::ostream& outp
"of unsupported dimensions"); "of unsupported dimensions");
} }
} }
void ReadWriteNumpyTXT::write1DRepresentation(const Datafield& data, std::ostream& output_stream)
{
output_stream << "# coordinates intensities" << std::endl;
output_stream.imbue(std::locale::classic());
output_stream << std::scientific << std::setprecision(12);
const std::vector<double> axis_values = data.axis(0).binCenters();
// printing coordinate and associated intensity
for (size_t i = 0, nrows = axis_values.size(); i < nrows; ++i)
output_stream << axis_values[i] << " " << ignoreDenormalized(data[i]) << std::endl;
}
void ReadWriteNumpyTXT::write2DRepresentation(const Datafield& data, std::ostream& output_stream)
{
const size_t nrows = data.axis(1).size();
const size_t ncols = data.axis(0).size();
output_stream << "# [nrows=" << nrows << ", ncols=" << ncols << "]" << std::endl;
std::vector<std::vector<double>> dataArray = DataUtil::Array::createVector2D(data);
output_stream.imbue(std::locale::classic());
output_stream << std::scientific << std::setprecision(12);
for (size_t i = 0; i < nrows; i++) {
for (size_t j = 0; j < ncols; j++) {
double z_value = dataArray[i][j];
output_stream << ignoreDenormalized(z_value) << " ";
}
output_stream << std::endl;
}
}
double ReadWriteNumpyTXT::ignoreDenormalized(double value)
{
return (std::fpclassify(value) == FP_SUBNORMAL) ? 0.0 : value;
}
...@@ -29,11 +29,6 @@ class ReadWriteNumpyTXT { ...@@ -29,11 +29,6 @@ class ReadWriteNumpyTXT {
public: public:
static Datafield* readDatafield(std::istream& input_stream); static Datafield* readDatafield(std::istream& input_stream);
static void writeDatafield(const Datafield& data, std::ostream& output_stream); static void writeDatafield(const Datafield& data, std::ostream& output_stream);
private:
static void write1DRepresentation(const Datafield& data, std::ostream& output_stream);
static void write2DRepresentation(const Datafield& data, std::ostream& output_stream);
static double ignoreDenormalized(double value);
}; };
#endif // BORNAGAIN_DEVICE_IO_READWRITENUMPYTXT_H #endif // BORNAGAIN_DEVICE_IO_READWRITENUMPYTXT_H
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment