- Location:
- /trunk/src
- Files:
-
- 3 deleted
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
/trunk/src/SDContainer.cc
r30 r20 173 173 } 174 174 } 175 176 Array<Float> SDContainer::getSpectrum(uInt whichBeam, uInt whichIF) const177 {178 Matrix<Float> spectra(nChan_, nPol_);179 180 // Beam.181 ArrayAccessor<Float, Axis<0> > i0(spectrum_);182 i0.reset(i0.begin(whichBeam));183 184 // IF.185 ArrayAccessor<Float, Axis<1> > i1(i0);186 i1.reset(i1.begin(whichIF));187 188 // Polarization.189 ArrayAccessor<Float, Axis<2> > i2(i1);190 ArrayAccessor<Float, Axis<1> > o1(spectra);191 192 while (i2 != i2.end()) {193 // Channel.194 ArrayAccessor<Float, Axis<3> > i3(i2);195 ArrayAccessor<Float, Axis<0> > o0(o1);196 197 while (i3 != i3.end()) {198 *o0 = *i3;199 200 i3++;201 o0++;202 }203 204 i2++;205 o1++;206 }207 208 return spectra;209 }210 211 Array<uChar> SDContainer::getFlags(uInt whichBeam, uInt whichIF) const212 {213 Matrix<uChar> flagtra(nChan_, nPol_);214 215 // Beam.216 ArrayAccessor<uChar, Axis<0> > i0(flags_);217 i0.reset(i0.begin(whichBeam));218 219 // IF.220 ArrayAccessor<uChar, Axis<1> > i1(i0);221 i1.reset(i1.begin(whichIF));222 223 // Polarization.224 ArrayAccessor<uChar, Axis<2> > i2(i1);225 ArrayAccessor<uChar, Axis<1> > o1(flagtra);226 227 while (i2 != i2.end()) {228 // Channel.229 ArrayAccessor<uChar, Axis<3> > i3(i2);230 ArrayAccessor<uChar, Axis<0> > o0(o1);231 232 while (i3 != i3.end()) {233 *o0 = *i3;234 235 i3++;236 o0++;237 }238 239 i2++;240 o1++;241 }242 243 return flagtra;244 }245 246 Array<Float> SDContainer::getTsys(uInt whichBeam, uInt whichIF) const247 {248 Vector<Float> tsys(nPol_);249 250 // Beam.251 ArrayAccessor<Float, Axis<0> > i0(tsys_);252 i0.reset(i0.begin(whichBeam));253 254 // IF.255 ArrayAccessor<Float, Axis<1> > i1(i0);256 i1.reset(i1.begin(whichIF));257 258 // Channel.259 ArrayAccessor<Float, Axis<3> > i3(i1);260 261 // Polarization.262 ArrayAccessor<Float, Axis<2> > i2(i3);263 ArrayAccessor<Float, Axis<0> > o0(tsys);264 265 while (i2 != i2.end()) {266 *o0 = *i2;267 268 i2++;269 o0++;270 }271 272 return tsys;273 } -
/trunk/src/SDContainer.h
r30 r20 109 109 const Array<uChar>& getFlags() const { return flags_; } 110 110 const Array<Float>& getTsys() const { return tsys_; } 111 112 Array<Float> getSpectrum(uInt whichBeam, uInt whichIF) const;113 Array<uChar> getFlags(uInt whichBeam, uInt whichIF) const;114 Array<Float> getTsys(uInt whichBeam, uInt whichIF) const;115 111 116 112 Double timestamp; 117 113 String sourcename; 118 114 Double interval; 119 Int scanid;115 uInt scanid; 120 116 121 117 private: -
/trunk/src/SDMemTable.cc
r30 r20 65 65 beamSel_(0), 66 66 polSel_(0) { 67 Table tab("dummy"); 68 table_ = tab.copyToMemoryTable("dummy"); 67 name_ = String(name); 68 Table tab(name_); 69 table_ = tab.copyToMemoryTable(name_); 69 70 } 70 71 … … 74 75 this->polSel_= other.polSel_; 75 76 this->chanMask_ = other.chanMask_; 77 this->name_ = String("dummy"); 76 78 this->table_ = other.table_.copyToMemoryTable(String("dummy")); 77 79 // clear all rows() … … 89 91 beamSel_(0), 90 92 polSel_(0) { 93 name_ = String("SDMemTable"); 91 94 String exprs = String("select * from $1 where SCANID == ") 92 95 +String::toString(scanID); 93 96 cerr << exprs << endl; 94 97 Table t = tableCommand(exprs,tab); 95 table_ = t.copyToMemoryTable( "dummy");98 table_ = t.copyToMemoryTable(name_); 96 99 } 97 100 … … 116 119 // Now create a new table from the description. 117 120 118 SetupNewTable aNewTab( "dummy", td, Table::New);121 SetupNewTable aNewTab(name_, td, Table::New); 119 122 table_ = Table(aNewTab, Table::Memory, 0); 123 } 124 125 std::string SDMemTable::name() const { 126 return name_; 120 127 } 121 128 … … 199 206 return mask; 200 207 } 201 std::vector<float> SDMemTable::getSpectrum(Int whichRow) {208 std::vector<float> SDMemTable::getSpectrum(Int whichRow) const { 202 209 203 210 std::vector<float> spectrum; … … 215 222 } 216 223 return spectrum; 217 }218 void SDMemTable::getSpectrum(Vector<Float>& spectrum, Int whichRow=0) {219 ROArrayColumn<Float> spec(table_, "SPECTRA");220 Array<Float> arr;221 spec.get(whichRow, arr);222 spectrum.resize(arr.shape()(3));223 ArrayAccessor<Float, Axis<0> > aa0(arr);224 aa0.reset(aa0.begin(uInt(beamSel_)));//go to beam225 ArrayAccessor<Float, Axis<1> > aa1(aa0);226 aa1.reset(aa1.begin(uInt(IFSel_)));// go to IF227 ArrayAccessor<Float, Axis<2> > aa2(aa1);228 aa2.reset(aa2.begin(uInt(polSel_)));// go to pol229 230 ArrayAccessor<Float, Axis<0> > va(spectrum);231 for (ArrayAccessor<Float, Axis<3> > i(aa2); i != i.end(); ++i) {232 (*va) = (*i);233 va++;234 }235 }236 237 void SDMemTable::getMask(Vector<Bool>& mask, Int whichRow=0) const {238 ROArrayColumn<uChar> spec(table_, "FLAGTRA");239 Array<uChar> arr;240 spec.get(whichRow, arr);241 mask.resize(arr.shape()(3));242 243 ArrayAccessor<uChar, Axis<0> > aa0(arr);244 aa0.reset(aa0.begin(uInt(beamSel_)));//go to beam245 ArrayAccessor<uChar, Axis<1> > aa1(aa0);246 aa1.reset(aa1.begin(uInt(IFSel_)));// go to IF247 ArrayAccessor<uChar, Axis<2> > aa2(aa1);248 aa2.reset(aa2.begin(uInt(polSel_)));// go to pol249 250 Bool useUserMask = ( chanMask_.size() == arr.shape()(3) );251 252 ArrayAccessor<Bool, Axis<0> > va(mask);253 std::vector<bool> tmp;254 tmp = chanMask_; // WHY the fxxx do I have to make a copy here. The255 // iterator should work on chanMask_??256 std::vector<bool>::iterator miter;257 miter = tmp.begin();258 259 for (ArrayAccessor<uChar, Axis<3> > i(aa2); i != i.end(); ++i) {260 bool out =!static_cast<bool>(*i);261 if (useUserMask) {262 out = out && (*miter);263 miter++;264 }265 (*va) = out;266 va++;267 }268 224 } 269 225 … … 347 303 } 348 304 349 SDContainer SDMemTable::getSDContainer(uInt whichRow) const {350 ROScalarColumn<Double> mjd(table_, "TIME");351 ROScalarColumn<String> srcn(table_, "SRCNAME");352 ROArrayColumn<Float> spec(table_, "SPECTRA");353 ROArrayColumn<uChar> flags(table_, "FLAGTRA");354 ROArrayColumn<Float> ts(table_, "TSYS");355 ROScalarColumn<Int> scan(table_, "SCANID");356 ROScalarColumn<Double> integr(table_, "INTERVAL");357 358 SDContainer sdc(nBeam(),nIF(),nPol(),nChan());359 mjd.get(whichRow, sdc.timestamp);360 srcn.get(whichRow, sdc.sourcename);361 integr.get(whichRow, sdc.interval);362 scan.get(whichRow, sdc.scanid);363 Array<Float> spectrum;364 Array<Float> tsys;365 Array<uChar> flagtrum;366 spec.get(whichRow, spectrum);367 sdc.putSpectrum(spectrum);368 flags.get(whichRow, flagtrum);369 sdc.putFlags(flagtrum);370 ts.get(whichRow, tsys);371 sdc.putTsys(tsys);372 return sdc;373 }374 305 bool SDMemTable::putSDHeader(const SDHeader& sdh) { 375 306 table_.lock(); … … 391 322 cerr << "Table Header set" << endl; 392 323 return true; 393 }\ 394 395 SDHeader SDMemTable::getSDHeader() const { 396 SDHeader sdh; 397 table_.keywordSet().get("nBeam",sdh.nbeam); 398 table_.keywordSet().get("nIF",sdh.nif); 399 table_.keywordSet().get("nPol",sdh.npol); 400 table_.keywordSet().get("nChan",sdh.nchan); 401 table_.keywordSet().get("Observer", sdh.observer); 402 table_.keywordSet().get("Project", sdh.project); 403 table_.keywordSet().get("Obstype", sdh.obstype); 404 table_.keywordSet().get("AntennaName", sdh.antennaname); 405 table_.keywordSet().get("AntennaPosition", sdh.antennaposition); 406 table_.keywordSet().get("Equinox", sdh.equinox); 407 table_.keywordSet().get("FreqRefFrame", sdh.freqref); 408 table_.keywordSet().get("FreqRefVal", sdh.reffreq); 409 table_.keywordSet().get("Bandwidth", sdh.bandwidth); 410 table_.keywordSet().get("UTC", sdh.utc); 411 return sdh; 412 } 324 } 325 413 326 void SDMemTable::makePersistent(const std::string& filename) { 414 327 table_.deepCopy(filename,Table::New); … … 463 376 return n; 464 377 } 378 465 379 /* 466 380 void SDMemTable::maskChannels(const std::vector<Int>& whichChans ) { -
/trunk/src/SDMemTable.h
r30 r20 69 69 virtual bool putSDHeader(const SDHeader& sdh); 70 70 virtual bool putSDFreqTable(const SDFrequencyTable& sdft) {;} 71 72 //get the dat wrapped up in a meta container73 virtual SDContainer getSDContainer(uInt whichRow=0) const;74 virtual SDHeader getSDHeader() const;75 71 76 72 // get spectrum,mask and tsys for the given row, at the selected 77 // cursor - all as stl vectors78 virtual std::vector<float> getSpectrum(Int whichRow) ;73 // cursor 74 virtual std::vector<float> getSpectrum(Int whichRow) const; 79 75 virtual std::vector<bool> getMask(Int whichRow) const; 76 virtual Float getTsys(Int whichRow) const; 80 77 81 virtual Float getTsys(Int whichRow) const; 82 // get all as aips++ Vectors 83 virtual void getSpectrum(Vector<Float>& spectrum, Int whichRow=0); 84 virtual void getMask(Vector<Bool>& mask,Int whichRow=0) const; 85 86 // get info for current row 78 // get info fro current row 87 79 virtual Double getTime(Int whichRow) const ; 88 80 virtual std::string getSourceName(Int whichRow) const; … … 103 95 virtual void summary() const; 104 96 97 // the (irrelevant) name 98 std::string name() const; 99 105 100 // write to disk as aips++ table 106 101 void makePersistent(const std::string& filename); … … 109 104 SDMemTable getScan(Int scanID); 110 105 111 const TableRecord& getHeader() const { return table_.keywordSet();}106 const TableRecord& getHeader() const {;} 112 107 // get a handle to the "raw" aips++ table 113 108 const Table& table() { return table_; } … … 119 114 Int nChan() const; 120 115 121 // return the number of rows (integrations) in the table122 Int nRows() const { return table_.nrow(); }123 124 116 // return a row as a Masked array, internally converting uChar flags 125 117 // to bool mask … … 128 120 129 121 private: 130 // set up tab lestructure122 // set up tabel structure 131 123 void setup(); 132 124 // the current cursor into the array -
/trunk/src/SDMemTableWrapper.h
r30 r20 97 97 CountedPtr<SDMemTable> getCP() const {return table_;} 98 98 void summary() { table_->summary(); } 99 std::string name() { return table_->name(); } 99 100 100 101 private: … … 124 125 SDMemTableWrapper multiply(const SDMemTableWrapper& in, 125 126 Float factor) { 126 return SDMemTableWrapper(SDMath::multiply(in.getCP(),factor)); 127 return SDMemTableWrapper(SDMath::multiply(in.getCP(),factor)); 127 128 } 128 /*129 std::vector<float> baseline(const SDMemTableWrapper& in, const std::string& fitexpr) {130 return SDMath::baseline(in.getCP(), fitexpr);131 }132 */133 129 }; 134 130 -
/trunk/src/SDReader.cc
r30 r20 77 77 return; 78 78 } 79 80 79 nBeam_ = beams.nelements(); 80 //cout << "Reading " + format + " format from " + inName << endl; 81 //cout << "nChannels = " << nChan_ << ", " << "nPol = " << nPol_ << endl 82 // << "nIF = " << nIF_ << endl 83 // << "nBeams = " << nBeam_ << endl; 84 81 85 // Get basic parameters. 82 86 header_ = SDHeader(); … … 85 89 header_.nbeam = nBeam_; 86 90 91 //cerr << " getting header ..." << endl; 87 92 Int status = reader_->getHeader(header_.observer, header_.project, 88 93 header_.antennaname, header_.antennaposition, … … 130 135 Complex xCalFctr; 131 136 Vector<Complex> xPol; 137 mjd = 0; 132 138 uInt n = seq.size(); 133 139 //cerr << header_.nif << ", " << header_.nbeam << endl; 134 140 uInt stepsize = header_.nif*header_.nbeam; 135 141 cerr << "SDReader stepsize = " << stepsize << endl; 142 uInt scanid = 0; 143 String prevName = "_noname_";// temporary until scanid is present 136 144 uInt seqi = 0; 137 145 //SDFrequencyTable sdft(); -
/trunk/src/python_SD.cc
r30 r20 27 27 //# AUSTRALIA 28 28 //# 29 //# $Id $29 //# $Id: 30 30 //#--------------------------------------------------------------------------- 31 31 #include <string> … … 41 41 atnf_sd::python::python_SDMemTable(); 42 42 atnf_sd::python::python_SDReader(); 43 atnf_sd::python::python_SDWriter();44 43 atnf_sd::python::python_SDMath(); 45 44 -
/trunk/src/python_SD.h
r30 r20 27 27 //# AUSTRALIA 28 28 //# 29 //# $Id $29 //# $Id: 30 30 //#--------------------------------------------------------------------------- 31 31 #ifndef _PYTHON_SD_H_ … … 37 37 void python_SDMemTable(); 38 38 void python_SDReader(); 39 void python_SDWriter();40 39 void python_SDMath(); 41 40 -
/trunk/src/python_SDMemTable.cc
r30 r20 46 46 .def( init < SDMemTableWrapper, int > () ) 47 47 .def("getscan", &SDMemTableWrapper::getScan) 48 .def("getspectrum", &SDMemTableWrapper::getSpectrum, 49 (boost::python::arg("whichRow")=0) ) 50 .def("getmask", &SDMemTableWrapper::getMask, 51 (boost::python::arg("whichRow")=0) ) 48 .def("getspectrum", &SDMemTableWrapper::getSpectrum) 49 .def("getmask", &SDMemTableWrapper::getMask) 52 50 .def("gettsys", &SDMemTableWrapper::getTsys) 53 51 .def("getsourcename", &SDMemTableWrapper::getSourceName) … … 68 66 .def("makepersistent", &SDMemTableWrapper::makePersistent) 69 67 .def("summary", &SDMemTableWrapper::summary) 68 .def("name", &SDMemTableWrapper::name) 70 69 ; 71 70 };
Note:
See TracChangeset
for help on using the changeset viewer.