Brief description of class still missing. More...
#include <Acquisition.h>
Public Member Functions | |
Acquisition () | |
Acquisition (double timeScale=1.0) | |
Histogram | apparentResistivityHistogram () const |
Histogram | currentHistogram () const |
const QString & | fileName () const |
bool | read (QString fileName=QString::null) |
void | setDelay (double d) |
bool | setSignals (SubSignalPool subPool) |
void | startStations (QString stationList) |
void | status () |
void | stop () |
void | stopStations (QString stationList) |
Histogram | variabilityHistogram () const |
Curve< Point2D > | varVoltageCurve () const |
Histogram | voltageHistogram () const |
void | write (QTextStream &s, double voltageThreshold, double variabilityThreshold) const |
~Acquisition () | |
~Acquisition () | |
Static Public Member Functions | |
static const QDir & | destination () |
static bool | setDestination (QString destDir) |
Protected Member Functions | |
virtual void | run () |
Brief description of class still missing.
Full description of class still missing
Acquisition::Acquisition | ( | double | timeScale = 1.0 | ) |
References QGpCoreTools::Histogram::addValue(), QGpCoreTools::LogScale, QGpCoreTools::Histogram::setSampling(), and TRACE.
Referenced by Results::Results().
{ TRACE; Histogram h; h.setSampling(200, 0.5, 2000.0, LogScale); for(QList<Measurement *>::const_iterator it=_measurements.begin(); it!=_measurements.end(); it++) { h.addValue((*it)->apparentResistivity()); } return h; }
Histogram Acquisition::currentHistogram | ( | ) | const |
References QGpCoreTools::Histogram::addValue(), QGpCoreTools::LogScale, QGpCoreTools::Histogram::setSampling(), and TRACE.
Referenced by Results::Results().
{ TRACE; Histogram h; h.setSampling(200, 0.05, 1000.0, LogScale); for(QList<Measurement *>::const_iterator it=_measurements.begin(); it!=_measurements.end(); it++) { h.addValue((*it)->current()); } return h; }
static const QDir& Acquisition::destination | ( | ) | [inline, static] |
{return _destDir;}
const QString& Acquisition::fileName | ( | ) | const [inline] |
Referenced by read(), and Results::Results().
{return _fileName;}
bool Acquisition::read | ( | QString | fileName = QString::null | ) |
References HeaderMap::count(), QGpCoreTools::LineParser::count(), fileName(), HeaderMap::isOk(), HeaderMap::map(), HeaderMap::maximumCount(), HeaderMap::missingFields(), MSG_ID, Measurement::set(), QGpCoreTools::LineParser::setDelimiters(), QGpCoreTools::LineParser::setSkipEmpty(), QGpCoreTools::LineParser::setString(), QGpCoreTools::tr(), and TRACE.
Referenced by main().
{ TRACE; if(fileName.isEmpty()) { fileName=Message::getOpenFileName(tr("Open ABEM output file"), tr("ABEM output file (*.txt)")); if(fileName.isEmpty()) { return false; } } _fileName=fileName; QFile f(fileName); if(!f.open(QIODevice::ReadOnly)) { Message::warning(MSG_ID, tr("Open ABEM output file"), tr("Cannot open file %1").arg(fileName), Message::cancel()); return false; } QTextStream s(&f); LineParser parser; parser.setDelimiters("\t"); parser.setSkipEmpty(false); int lineNumber=1; HeaderMap header; while(!s.atEnd()) { QString line=s.readLine(); parser.setString(line); if(parser.count()>=HeaderMap::maximumCount() && header.map(parser) && header.count()>=12) { // Matched at least A(x), B(x),... break; } else if(!line.isEmpty()) { switch(line.at(0).unicode()) { case 'A': if(line.startsWith("ArrayCode:")) { _arrayCode=line.section(":", 1,1).trimmed().toInt(); } case 'P': if(line.startsWith("Project name:")) { _projectName=line.section(":", 1,1).trimmed(); } case 'T': if(line.startsWith("Task Name:")) { _taskName=line.section(":", 1,1).trimmed(); } case 'S': if(line.startsWith("Smallest electrode spacing:")) { _minimumElectrodeSpacing=line.section(":", 1,1).trimmed().toDouble(); } } } lineNumber++; } if(!header.isOk()) { Message::warning(MSG_ID, tr("Open ABEM output file"), tr("Cannot find header line or this(these) fields is(are) missing:\n" "[header line identified at line %1]\n" "%2") .arg(lineNumber).arg(header.missingFields()), Message::cancel()); return false; } int columnCount=parser.count(); lineNumber++; while(!s.atEnd()) { QString line=s.readLine(); parser.setString(line); if(parser.count()!=columnCount) { break; } Measurement * m=new Measurement; if(m->set(parser, header, lineNumber)) { _measurements.append(m); } else { delete m; return false; } lineNumber++; } Message::information(MSG_ID, tr("Open ABEM output file"), tr("Read %1 measurements").arg(_measurements.count()), Message::ok()); return true; }
void Acquisition::run | ( | ) | [protected, virtual] |
References GeopsyCore::TimeRange::lengthSeconds(), and TRACE.
{ TRACE; mainLoop(); _globalTimer=new QTimer; _globalTimer->setSingleShot(false); connect(_globalTimer, SIGNAL(timeout()), this, SLOT(mainLoop()), Qt::DirectConnection); _globalTimer->start((int)ceil(( _globalTimeWindow.lengthSeconds() + 2*_delay) * 1000.0/_timeScale) ); QThread::exec(); }
void Acquisition::setDelay | ( | double | d | ) | [inline] |
Referenced by main().
{_delay=fabs(d);}
bool Acquisition::setDestination | ( | QString | destDir | ) | [static] |
References TRACE.
Referenced by main().
{ TRACE; _destDir.setPath(destDir); if(_destDir.exists()) { QStringList filters; filters.append("*.mseed"); QStringList files=_destDir.entryList(filters); for(QStringList::iterator it=files.begin();it!=files.end();it++) { _destDir.remove( *it); } return true; } else { return false; } }
bool Acquisition::setSignals | ( | SubSignalPool | subPool | ) |
References GeopsyCore::StationList::addSignals(), QGpCoreTools::endl(), GeopsyCore::StationList::hasAllComponents(), ArrayCore::ArrayStations::hasCompatibleStations(), QGpCoreTools::log(), GeopsyCore::TimeRange::setEnd(), GeopsyCore::TimeRange::setStart(), AcquisitionSignals::setT0(), GeopsyCore::TimeRange::start(), QGpCoreTools::tr(), and TRACE.
Referenced by main().
{ TRACE; QString log; if( !_array.addSignals(&subPool , &log) || !_array.hasAllComponents(&log) || !_array.hasCompatibleStations(&log) ) { App::stream() << log << endl; return false; } if(_array.count()<2) { App::stream() << tr("Creating array: found less than 2 stations." ) << endl; return false; } log += tr( "Found %1 different stations\n" ).arg(_array.count()); App::stream() << log << endl; int n=_array.count(); for(int i=0;i<n;i++) { AcquisitionSignals * stat=new AcquisitionSignals(_array.at(i), _timeScale); _stations.append(stat); } // Set available signals for each station double globalMinTime=1e99; double globalMaxTime=-1e99; /*WindowingParameters param; param.setNComponents(_array.nComponents()); param.setNStations(_array.count()); param.rawSignal.doIt=false; param.filtSignal.doIt=false; param.percClip=100;*/ for(int i=0;i<n;i++) { double t1, t2; t1=_array.at(i)->minTime(); if(t1<globalMinTime) globalMinTime=t1; t2=_array.at(i)->maxTime(); if(t2>globalMaxTime) globalMaxTime=t2; AcquisitionSignals * stat=_stations.at(i); /*TimeRange tw(t1, t2); AcquisitionSignals * stat=_stations.at(i); //SparseTimeRange stat->originalSignals()->timeRange(tw) const; //stat->setRange(tw); //stat->setKeep(param,i); stat->setProcessed(tw, 0);*/ stat->setT0(t1); } _globalTimeWindow.setStart(globalMinTime); _globalTimeWindow.setEnd(globalMaxTime); for(int i=0;i<n;i++) { _stations.at(i)->setGlobalT0(_globalTimeWindow.start()); } return true; }
void Acquisition::startStations | ( | QString | stationList | ) |
References GeopsyCore::StationSignals::name(), GeopsyCore::StationProcessSignals::originalSignals(), AcquisitionSignals::setOn(), and TRACE.
Referenced by main().
{ TRACE; QStringList stations=stationList.split(",", QString::SkipEmptyParts); bool all=stationList=="all"; int n=_array.count(); for(QStringList::iterator it=stations.begin();it!=stations.end();it++) { for(int i=0;i<n;i++) { AcquisitionSignals * s=_stations.at(i); if(all || s->originalSignals()->name()==*it) { s->setOn(true); } } } }
void Acquisition::status | ( | ) |
void Acquisition::stop | ( | ) |
References QGpCoreTools::Thread::sleep(), and TRACE.
Referenced by main().
{ TRACE; _globalTimer->stop(); int n=_array.count(); for(int i=0;i<n;i++) { _stations.at(i)->stop(); } exit(); while(isRunning()) { CoreApplication::sleep(500); QCoreApplication::processEvents(); } }
void Acquisition::stopStations | ( | QString | stationList | ) |
References GeopsyCore::StationSignals::name(), GeopsyCore::StationProcessSignals::originalSignals(), AcquisitionSignals::setOn(), and TRACE.
Referenced by main().
{ TRACE; QStringList stations=stationList.split(",", QString::SkipEmptyParts); bool all=stationList=="all"; int n=_array.count(); for(QStringList::iterator it=stations.begin();it!=stations.end();it++) { for(int i=0;i<n;i++) { AcquisitionSignals * s=_stations.at(i); if(all || s->originalSignals()->name()==*it) { s->setOn(false); } } } }
Histogram Acquisition::variabilityHistogram | ( | ) | const |
References QGpCoreTools::Histogram::addValue(), QGpCoreTools::LogScale, QGpCoreTools::Histogram::setSampling(), and TRACE.
Referenced by Results::Results().
{ TRACE; Histogram h; h.setSampling(200, 0.05, 2000.0, LogScale); for(QList<Measurement *>::const_iterator it=_measurements.begin(); it!=_measurements.end(); it++) { h.addValue((*it)->variability()); } return h; }
Curve< Point2D > Acquisition::varVoltageCurve | ( | ) | const |
References QGpCoreTools::Curve< pointType >::append(), TRACE, Measurement::variability(), and Measurement::voltage().
Referenced by Results::Results().
{ TRACE; Curve<Point2D> c; for(QList<Measurement *>::const_iterator it=_measurements.begin(); it!=_measurements.end(); it++) { const Measurement& m=**it; c.append(Point2D(1e3*m.voltage(), m.variability())); } return c; }
Histogram Acquisition::voltageHistogram | ( | ) | const |
References QGpCoreTools::Histogram::addValue(), QGpCoreTools::LogScale, QGpCoreTools::Histogram::setSampling(), and TRACE.
Referenced by Results::Results().
{ TRACE; Histogram h; h.setSampling(200, 0.005, 20000.0, LogScale); for(QList<Measurement *>::const_iterator it=_measurements.begin(); it!=_measurements.end(); it++) { h.addValue(1e3*(*it)->voltage()); } return h; }
void Acquisition::write | ( | QTextStream & | s, |
double | voltageThreshold, | ||
double | variabilityThreshold | ||
) | const |
References Measurement::a(), Measurement::b(), Measurement::m(), Measurement::n(), Measurement::resistance(), TRACE, Measurement::variability(), Measurement::voltage(), QGpCoreTools::Point2D::x(), and QGpCoreTools::Point::z().
Referenced by Results::exportDAT().
{ TRACE; // Count good measurements int n=0; for(QList<Measurement *>::const_iterator it=_measurements.begin(); it!=_measurements.end(); it++) { const Measurement& m=**it; if(m.voltage()>=voltageThreshold && m.variability()<=variabilityThreshold) { n++; } } s << _projectName << "_" << _taskName << "\n" << _minimumElectrodeSpacing << "\n" "11\n" << _arrayCode << "\n" "Type of measurement (0=app.resistivity,1=resistance)\n" "1\n" << n << "\n" << "2\n" "0\n"; for(QList<Measurement *>::const_iterator it=_measurements.begin(); it!=_measurements.end(); it++) { const Measurement& m=**it; if(m.voltage()>=voltageThreshold && m.variability()<=variabilityThreshold) { s << "4 " << m.a().x() << " " << m.a().z() << " " << m.b().x() << " " << m.b().z() << " " << m.m().x() << " " << m.m().z() << " " << m.n().x() << " " << m.n().z() << " " << m.resistance() << "\n"; } } s << "0\n0\n0\n0\n"; }