19#ifndef _GIMLI_DATACONTAINER__H
20#define _GIMLI_DATACONTAINER__H
23#include "baseentity.h"
58 bool sensorIndicesFromOne=
true,
65 const std::string & sensorTokens,
66 bool sensorIndicesFromOne=
true,
79 inline const RVector & operator() (
const std::string & token)
const {
return get(token); }
82 inline RVector & operator() (
const std::string & token) {
return *
ref(token); }
85 inline const RVector & operator[] (
const std::string & token)
const {
return get(token); }
88 inline RVector & operator[] (
const std::string & token) {
return *
ref(token); }
106 virtual void initTokenTranslator();
109 bool haveTranslationForAlias(
const std::string & alias)
const;
112 std::string translateAlias(
const std::string & alias)
const;
115 virtual void clear();
118 inline Index
size()
const {
return dataMap_.find(
"valid")->second.size(); }
133 void setSensorPositions(
const RVector & sensors);
136 void setSensorPositions(
const PosVector & sensors);
139#define GIMLI_USE_POSVECTOR
144 void setSensorPosition(Index i,
const RVector3 & pos);
158 inline const RVector3 &
sensor(Index i)
const {
158 inline const RVector3 &
sensor(Index i)
const {
…}
172 SIndex createSensor(
const RVector3 & pos,
double tolerance=1e-3);
178 void registerSensorIndex(
const std::string & token);
181 bool isSensorIndex(
const std::string & token)
const ;
193 IndexArray findSensorIndex(
const RVector & d)
const;
197 void markInvalidSensorIndices();
202 void removeSensorIdx(Index idx);
207 void removeSensorIdx(
const IndexArray & idx);
215 void sortSensorsX(
bool incX=
true,
bool incY=
true,
bool incZ=
true);
218 void translate(
const RVector3 & trans);
221 void scale(
const RVector3 & scale);
226 IndexArray dataIndex();
231 IndexArray sortSensorsIndex();
254 if (
exists(token))
return (min(abs(
dataMap_.find(token)->second)) > TOLERANCE);
260 inline bool haveData(
const std::string & token)
const {
260 inline bool haveData(
const std::string & token)
const {
…}
267 inline bool exists(
const std::string & token)
const {
268 return dataMap_.count(token) != 0; }
267 inline bool exists(
const std::string & token)
const {
…}
276 virtual int load(
const std::string & fileName,
277 bool sensorIndicesFromOne=
true,
278 bool removeInvalid=
true);
295 virtual int save(
const std::string & fileName,
296 const std::string & fmtData,
297 const std::string & fmtSensor,
299 bool verbose=
false)
const;
302 inline int save(
const std::string & fileName,
303 const std::string & formatData=
"all",
305 bool verbose=
false)
const {
306 return save(fileName, formatData,
"x y z", noFilter, verbose); }
302 inline int save(
const std::string & fileName, {
…}
308 virtual int write(std::fstream & os,
309 const std::string & fmtData,
310 const std::string & fmtSensor,
312 bool verbose=
false)
const;
314 void showInfos()
const ;
318 void resize(Index size);
322 std::string tokenList(
bool withAnnotation=
true)
const;
329 void add(
const std::string & token,
const RVector & data,
const std::string & description =
"");
332 void add(
const std::string & token){
add(token, RVector(this->
size(), 0.0)); }
338 void set(
const std::string & token,
const RVector & data);
342 const RVector & get(
const std::string & token)
const ;
346 const IndexArray id(
const std::string & token)
const ;
350 RVector * ref(
const std::string & token);
355 void setDataDescription(
const std::string & token,
const std::string & description);
359 std::string dataDescription(
const std::string & token)
const;
362 virtual void remove(
const IndexArray & idx);
368 inline void markValid(
const BVector & bvec,
bool valid=
true){
368 inline void markValid(
const BVector & bvec,
bool valid=
true) {
…}
372 inline void markValid(
const IndexArray & idx,
bool valid=
true){
373 dataMap_[
"valid"].setVal(valid, idx);
372 inline void markValid(
const IndexArray & idx,
bool valid=
true) {
…}
377 dataMap_[
"valid" ].setVal(valid, idx);
394 void checkDataValidity(
bool remove=
true);
400 void removeInvalid();
403 void removeUnusedSensors(
bool verbose=
false);
411 return inputFormatString_; }
419 std::string inputFormatStringSensors_;
421 std::string inputFormatString_;
443 std::map< std::string, std::string >
tT_;
DataContainer to store, load and save data in the GIMLi unified data format.
Definition datacontainer.h:48
DataContainer()
Definition datacontainer.cpp:29
std::map< std::string, std::string > dataDescription_
Description for the data map entries.
Definition datacontainer.h:437
const RVector3 & sensorPosition(double i) const
Definition datacontainer.h:151
virtual void checkDataValidityLocal()
Definition datacontainer.h:397
const std::string & formatStringSensors() const
Definition datacontainer.h:210
std::map< std::string, std::string > tT_
Definition datacontainer.h:443
const std::string & inputFormatString() const
Definition datacontainer.h:410
void setSensorIndexOnFileFromOne(bool indexFromOne)
Definition datacontainer.h:187
void addAdditionalPoint(const Pos &p)
Definition datacontainer.h:247
void markValid(const BVector &bvec, bool valid=true)
Definition datacontainer.h:368
void add(const std::string &token)
Definition datacontainer.h:332
const PosVector & sensorPositions() const
Definition datacontainer.h:141
RVector * ref(const std::string &token)
Definition datacontainer.cpp:719
void markInvalid(const IndexArray &idx)
Definition datacontainer.h:384
PosVector topoPoints_
Definition datacontainer.h:440
bool sensorIndexOnFileFromOne() const
Definition datacontainer.h:190
virtual int save(const std::string &fileName, const std::string &fmtData, const std::string &fmtSensor, bool noFilter=false, bool verbose=false) const
Definition datacontainer.cpp:518
void markValid(const IndexArray &idx, bool valid=true)
Definition datacontainer.h:372
std::set< std::string > dataSensorIdx_
Data field that is sensor index.
Definition datacontainer.h:433
void setAdditionalPoint(Index i, const Pos &p)
Definition datacontainer.h:242
const PosVector & additionalPoints() const
Definition datacontainer.h:239
bool haveData(const std::string &token) const
Definition datacontainer.h:260
bool allNonZero(const std::string &token) const
Definition datacontainer.h:253
void setSensor(Index i, const RVector3 &pos)
Definition datacontainer.h:163
void setAdditionalPoints(const PosVector &a)
Definition datacontainer.h:236
const R3Vector & sensors() const
Definition datacontainer.h:155
const std::map< std::string, std::string > & dataDescription() const
Definition datacontainer.h:124
const std::map< std::string, RVector > & dataMap() const
Definition datacontainer.h:121
void markInvalid(const BVector &bvec)
Definition datacontainer.h:381
std::map< std::string, RVector > dataMap_
Data map.
Definition datacontainer.h:425
const RVector & get(const std::string &token) const
Definition datacontainer.cpp:691
int save(const std::string &fileName, const std::string &formatData="all", bool noFilter=false, bool verbose=false) const
Definition datacontainer.h:302
bool exists(const std::string &token) const
Definition datacontainer.h:267
Index sensorCount() const
Definition datacontainer.h:175
void setSensorPosition(Index i, const RVector3 &pos)
Definition datacontainer.cpp:842
PosVector sensorPoints_
Sensor positions.
Definition datacontainer.h:429
void markInvalid(Index idx)
Definition datacontainer.h:387
void remove(const BVector &bvec)
Definition datacontainer.h:365
DataContainer & operator=(const DataContainer &data)
Definition datacontainer.cpp:64
Index size() const
Definition datacontainer.h:118
const RVector3 & sensor(Index i) const
Definition datacontainer.h:158
void markValid(Index idx, bool valid=true)
Definition datacontainer.h:376
void setInputFormatString(const std::string &inputFormatString)
Definition datacontainer.h:406
bool sensorIndexOnFileFromOne_
Definition datacontainer.h:446
const std::map< std::string, std::string > & tokenTranslator() const
Definition datacontainer.h:271
void removeInvalid()
Definition datacontainer.cpp:756
const std::set< std::string > sensorIdx() const
Definition datacontainer.h:184
3 dimensional vector
Definition pos.h:73
GIMLi main namespace for the Geophyiscal Inversion and Modelling Library.
Definition baseentity.h:24
bool zero(const Vector< ValueType > &v)
Definition vector.h:1315
IndexArray find(const BVector &v)
Definition vector.h:1346
bool load(Matrix< ValueType > &A, const std::string &filename)
Definition matrix.h:828