get dimensions from metadata differently, documentation, change dataprocessor method args to const

This commit is contained in:
Michael Nilsson
2016-06-22 14:17:59 -04:00
parent db4b241485
commit 22d03a3bcd
7 changed files with 67 additions and 32 deletions
+34 -4
View File
@@ -2,7 +2,7 @@
* *
* OpenSpace *
* *
* Copyright (c) 2014-2015 *
* Copyright (c) 2014-2016 *
* *
* Permission is hereby granted, free of charge, to any person obtaining a copy of this *
* software and associated documentation files (the "Software"), to deal in the Software *
@@ -38,9 +38,39 @@ public:
DataProcessor();
~DataProcessor();
virtual std::vector<std::string> readMetadata(std::string data, glm::size3_t& dimensions) = 0;
virtual void addDataValues(std::string data, properties::SelectionProperty& dataOptions) = 0;
virtual std::vector<float*> processData(std::string data, properties::SelectionProperty& dataOptions, glm::size3_t& dimensions) = 0;
/**
* Reads and returns the metadata from the data file.
*
* @param data The data file content to read metadata from
* @param dimensions the dimensions of the data, will be modified
*
* @return An array with data variable options
*/
virtual std::vector<std::string> readMetadata(const std::string& data, glm::size3_t& dimensions) = 0;
/**
* Function that initializes the dataprocessor for a new data variable by
* calculating its min & max value, standard deviation, sum and histogram for a
* given data file. This file will then be used as reference when normalizing, filtering
* and give auto-contrast
*
* @param data The data file content to add data from
* @param dataOptions a list of dataoptions that you want to pre-process
*/
virtual void addDataValues(const std::string& data, const properties::SelectionProperty& dataOptions) = 0;
/**
* Will take raw input data as a string and return it as a vector of
* float arrays (one float array per data variable that is selected).
* Before returning it, the data is processed with normalization and
* an optional histogram equalization.
*
* @param data input data. directly from data file (file contents)
* @param dataOptions Pass in the dataOptions property from the Renderable
* @param dimensions Dimensions of the data
* @return Processed data
*/
virtual std::vector<float*> processData(const std::string& data, const properties::SelectionProperty& dataOptions, const glm::size3_t& dimensions) = 0;
void useLog(bool useLog);
void useHistogram(bool useHistogram);
+12 -11
View File
@@ -2,7 +2,7 @@
* *
* OpenSpace *
* *
* Copyright (c) 2014-2015 *
* Copyright (c) 2014-2016 *
* *
* Permission is hereby granted, free of charge, to any person obtaining a copy of this *
* software and associated documentation files (the "Software"), to deal in the Software *
@@ -39,20 +39,21 @@ DataProcessorJson::DataProcessorJson()
DataProcessorJson::~DataProcessorJson(){}
std::vector<std::string> DataProcessorJson::readMetadata(std::string data, glm::size3_t& dimensions){
std::vector<std::string> DataProcessorJson::readMetadata(const std::string& data, glm::size3_t& dimensions){
std::vector<std::string> options = std::vector<std::string>();
if(!data.empty()){
json j = json::parse(data);
json variables = j["variables"];
for(json::iterator it = variables.begin(); it != variables.end(); ++it){
std::string option = it.key();
if(option == "ep"){
json row = it.value();
json col = row.at(0);
//Setting dimensions
json::iterator it = variables.begin();
json row = it.value();
json col = row.at(0);
dimensions = glm::size3_t(col.size(), row.size(), 1);
dimensions = glm::size3_t(col.size(), row.size(), 1);
}
//Reading options
for(; it != variables.end(); ++it){
std::string option = it.key();
if(_coordinateVariables.find(option) == _coordinateVariables.end()){
options.push_back(option);
@@ -62,7 +63,7 @@ std::vector<std::string> DataProcessorJson::readMetadata(std::string data, glm::
return options;
}
void DataProcessorJson::addDataValues(std::string data, properties::SelectionProperty& dataOptions){
void DataProcessorJson::addDataValues(const std::string& data, const properties::SelectionProperty& dataOptions){
int numOptions = dataOptions.options().size();
initializeVectors(numOptions);
@@ -99,7 +100,7 @@ void DataProcessorJson::addDataValues(std::string data, properties::SelectionPro
}
}
std::vector<float*> DataProcessorJson::processData(std::string data, properties::SelectionProperty& dataOptions, glm::size3_t& dimensions){
std::vector<float*> DataProcessorJson::processData(const std::string& data, const properties::SelectionProperty& dataOptions, const glm::size3_t& dimensions){
if(!data.empty()){
json j = json::parse(data);
json variables = j["variables"];
+3 -3
View File
@@ -33,9 +33,9 @@ public:
DataProcessorJson();
~DataProcessorJson();
virtual std::vector<std::string> readMetadata(std::string data, glm::size3_t& dimensions) override;
virtual void addDataValues(std::string data, properties::SelectionProperty& dataOptions) override;
virtual std::vector<float*> processData(std::string data, properties::SelectionProperty& dataOptions, glm::size3_t& dimensions) override;
std::vector<std::string> readMetadata(const std::string& data, glm::size3_t& dimensions) override;
void addDataValues(const std::string& data, const properties::SelectionProperty& dataOptions) override;
std::vector<float*> processData(const std::string& data, const properties::SelectionProperty& dataOptions, const glm::size3_t& dimensions) override;
};
}// namespace
+4 -4
View File
@@ -42,7 +42,7 @@ DataProcessorKameleon::DataProcessorKameleon()
DataProcessorKameleon::~DataProcessorKameleon(){}
std::vector<std::string> DataProcessorKameleon::readMetadata(std::string path, glm::size3_t& dimensions){
std::vector<std::string> DataProcessorKameleon::readMetadata(const std::string& path, glm::size3_t& dimensions){
if(!path.empty()){
if(path != _kwPath || !_kw){
@@ -64,7 +64,7 @@ std::vector<std::string> DataProcessorKameleon::readMetadata(std::string path, g
return std::vector<std::string>();
}
void DataProcessorKameleon::addDataValues(std::string path, properties::SelectionProperty& dataOptions){
void DataProcessorKameleon::addDataValues(const std::string& path, const properties::SelectionProperty& dataOptions){
int numOptions = dataOptions.options().size();
initializeVectors(numOptions);
@@ -98,13 +98,13 @@ void DataProcessorKameleon::addDataValues(std::string path, properties::Selectio
add(optionValues, sum);
}
}
std::vector<float*> DataProcessorKameleon::processData(std::string path, properties::SelectionProperty& dataOptions, glm::size3_t& dimensions, float slice){
std::vector<float*> DataProcessorKameleon::processData(const std::string path, const properties::SelectionProperty& dataOptions, const glm::size3_t& dimensions, float slice){
_slice = slice;
// _dimensions = dimensions;
return processData(path, dataOptions, dimensions);
}
std::vector<float*> DataProcessorKameleon::processData(std::string path, properties::SelectionProperty& dataOptions, glm::size3_t& dimensions){
std::vector<float*> DataProcessorKameleon::processData(const std::string& path, const properties::SelectionProperty& dataOptions, const glm::size3_t& dimensions){
int numOptions = dataOptions.options().size();
if(!path.empty()){
+8 -4
View File
@@ -29,15 +29,19 @@
namespace openspace {
/**
* See DataProcessor for documentation.
* Instead of data file content as first argument, pass path to cdf file for all overriden functions
*/
class DataProcessorKameleon : public DataProcessor {
public:
DataProcessorKameleon();
~DataProcessorKameleon();
virtual std::vector<std::string> readMetadata(std::string path, glm::size3_t& dimensions) override;
virtual void addDataValues(std::string data, properties::SelectionProperty& dataOptions) override;
virtual std::vector<float*> processData(std::string path, properties::SelectionProperty& dataOptions, glm::size3_t& dimensions) override;
virtual std::vector<float*> processData(std::string path, properties::SelectionProperty& dataOptions, glm::size3_t& dimensions, float slice);
std::vector<std::string> readMetadata(const std::string& path, glm::size3_t& dimensions) override;
void addDataValues(const std::string& path, const properties::SelectionProperty& dataOptions) override;
std::vector<float*> processData(const std::string& path, const properties::SelectionProperty& dataOptions, const glm::size3_t& dimensions) override;
std::vector<float*> processData(const std::string path, const properties::SelectionProperty& dataOptions, const glm::size3_t& dimensions, float slice);
void dimensions(glm::size3_t dimensions){_dimensions = dimensions;}
private:
+3 -3
View File
@@ -43,7 +43,7 @@ DataProcessorText::DataProcessorText()
DataProcessorText::~DataProcessorText(){}
std::vector<std::string> DataProcessorText::readMetadata(std::string data, glm::size3_t& dimensions){
std::vector<std::string> DataProcessorText::readMetadata(const std::string& data, glm::size3_t& dimensions){
//The intresting part of the file looks like this:
//# Output data: field with 61x61=3721 elements
//# x y z N V_x B_x
@@ -84,7 +84,7 @@ std::vector<std::string> DataProcessorText::readMetadata(std::string data, glm::
return options;
}
void DataProcessorText::addDataValues(std::string data, properties::SelectionProperty& dataOptions){
void DataProcessorText::addDataValues(const std::string& data, const properties::SelectionProperty& dataOptions){
int numOptions = dataOptions.options().size();
initializeVectors(numOptions);
@@ -142,7 +142,7 @@ void DataProcessorText::addDataValues(std::string data, properties::SelectionPro
}
}
std::vector<float*> DataProcessorText::processData(std::string data, properties::SelectionProperty& dataOptions, glm::size3_t& dimensions){
std::vector<float*> DataProcessorText::processData(const std::string& data, const properties::SelectionProperty& dataOptions, const glm::size3_t& dimensions){
if(!data.empty()){
std::string line;
+3 -3
View File
@@ -33,9 +33,9 @@ public:
DataProcessorText();
~DataProcessorText();
virtual std::vector<std::string> readMetadata(std::string data, glm::size3_t& dimensions) override;
virtual void addDataValues(std::string data, properties::SelectionProperty& dataOptions) override;
virtual std::vector<float*> processData(std::string data, properties::SelectionProperty& dataOptions, glm::size3_t& dimensions) override;
std::vector<std::string> readMetadata(const std::string& data, glm::size3_t& dimensions) override;
void addDataValues(const std::string& data, const properties::SelectionProperty& dataOptions) override;
std::vector<float*> processData(const std::string& data, const properties::SelectionProperty& dataOptions, const glm::size3_t& dimensions) override;
private:
// void initialize(int numOptions);