Ignore:
Timestamp:
08/10/06 14:16:19 (18 years ago)
Author:
mar637
Message:

added linecatalog to python inteface

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/LineCatalog.cpp

    r1113 r1126  
    3838  std::string inname = path.expandedName();
    3939  File f(inname);
    40   if (f.isDirectory()) { //assume its a table
     40  if (f.isDirectory()) { //assume it's a table
    4141    table_ = Table(inname);
    4242  } else {
    4343    String formatString;
    4444    // formatSring , TableType, ascii file name, TableDesc name, table name, autoheader
    45   table_ = readAsciiTable(formatString, Table::Plain, inname, "", "", True);
     45    table_ = readAsciiTable(formatString, Table::Plain, inname, "", "", True);
     46    // do not keep aips++ table
     47    table_.markForDelete();
    4648  }
    4749  baseTable_ = table_;
    4850}
    4951
    50 void LineCatalog::setStrengthLimits(float smin, float smax)
     52void LineCatalog::setStrengthLimits(double smin, double smax)
    5153{
    5254  table_ = setLimits(smin, smax, "Column4");
    5355}
    5456
    55 void LineCatalog::setFrequencyLimits(float fmin, float fmax)
     57void LineCatalog::setFrequencyLimits(double fmin, double fmax)
    5658{
    5759  table_ = setLimits(fmin, fmax, "Column2");
     
    6062void LineCatalog::setPattern(const std::string& name, const std::string& stype)
    6163{
    62   std::string mode = stype+"('"+name+"')";
    63   std::string taql = "SELECT from $1 WHERE Column1 == "+mode;
     64  //std::string mode = stype+"('"+name+"')";
     65  std::string taql = "SELECT FROM $1 WHERE Column1 == pattern('"+name+"')";
     66  cerr << taql << endl;
    6467  Table tmp = tableCommand(taql, table_);
    65   if (tmp.nrow() > 0) table_ = tmp;
     68  if (tmp.nrow() > 0) table_ = tmp.sort("Column2");
    6669  else throw(AipsError("No match."));
    6770}
    6871
    69 Table LineCatalog::setLimits(float lmin, float lmax, const std::string& colname)
     72Table LineCatalog::setLimits(double lmin, double lmax, const std::string& colname)
    7073{
    71   Table tmp = table_(table_.col(colname) > lmin && table_.col(colname) > lmax);
    72   if (tmp.nrow() > 0) return tmp;
     74  Table tmp = table_(table_.col(colname) > lmin && table_.col(colname) < lmax);
     75  if (tmp.nrow() > 0) return tmp.sort("Column2");
    7376  else throw(AipsError("No match."));
    7477}
     
    8992  oss << asap::SEPERATOR << endl << endl;
    9093  if (row == -1) {
    91     Vector<uInt> rownrs = table_.rowNumbers(baseTable_);
    92     for (uint i=0; i<rownrs.nelements(); ++i) {
    93       oss << std::right << setw(7) << rownrs[i];
    94       oss << std::left << setw(12) << getName(i);
     94    for (uint i=0; i<table_.nrow(); ++i) {
     95      oss << std::right << setw(7) << i << setw(2) << "";
     96      oss << std::left << setw(20) << getName(i);
    9597      oss << setw(12) << setprecision(8) << std::left << getFrequency(i);
    9698      oss << endl;
    9799    }
    98100  } else {
    99     oss << std::right << setw(7) << row;
    100     oss << std::left << setw(12) << getName(row);
    101     oss << setw(12) << setprecision(8) << std::left << getFrequency(row);
    102     oss << endl;
     101      if ( row < table_.nrow() ) {
     102        oss << std::right << setw(7) << row << setw(2) << "";
     103        oss << std::left << setw(20) << getName(row);
     104        oss << setw(12) << setprecision(8) << std::left << getFrequency(row);
     105        oss << endl;
     106      } else {
     107        throw(AipsError("Row doesn't exist"));
     108      }
    103109  }
    104110  /// @todo implement me
Note: See TracChangeset for help on using the changeset viewer.