source: trunk/src/STUpgrade.cpp @ 3106

Last change on this file since 3106 was 3106, checked in by Takeshi Nakazato, 8 years ago

New Development: No

JIRA Issue: No

Ready for Test: Yes/No?

Interface Changes: Yes/No?

What Interface Changed: Please list interface changes

Test Programs: List test programs

Put in Release Notes: Yes/No?

Module(s): Module Names change impacts.

Description: Describe your changes here...


Check-in asap modifications from Jim regarding casacore namespace conversion.

File size: 2.9 KB
Line 
1#include <tables/Tables/Table.h>
2#include <tables/Tables/ScaColDesc.h>
3#include <tables/Tables/ArrColDesc.h>
4#include <tables/Tables/ArrayColumn.h>
5
6#include "STUpgrade.h"
7
8
9using namespace casacore;
10
11namespace asap {
12
13std::string STUpgrade::upgrade(const std::string& name) {
14  std::string inname = name;
15  Table origtab(name);
16  uInt version = origtab.keywordSet().asuInt("VERSION");
17  if (version == version_) {
18    return name;
19  }
20  if (version == 2) {
21    inname = two2three(inname);
22    version = 3;
23  }
24  if (version == 3) {
25    return three2four(inname);
26  }
27  throw(AipsError("Unsupported version of ASAP file."));
28}
29
30std::string STUpgrade::two2three(const std::string& name) {
31 
32  std::string fname = name+".asap3";
33  Table origtab(name);
34  origtab.deepCopy(fname, Table::New);
35  Table tab(fname, Table::Update);
36  tab.removeColumn("PARANGLE");
37  Table tfocus = tab.rwKeywordSet().asTable("FOCUS");
38  ScalarColumnDesc<Float> pa("PARANGLE");
39  pa.setDefault(Float(0.0));
40  tfocus.addColumn(pa);
41  //tfocus.rwKeywordSet().define("PARALLACTIFY", False)
42  Int verid = tab.rwKeywordSet().fieldNumber("VERSION");
43  tab.rwKeywordSet().define(verid, uInt(3));
44  tab.tableInfo().setType("Scantable");
45  return fname;
46}
47
48std::string STUpgrade::three2four(const std::string& name) {
49  std::string fname = name;
50  Table origtab(name);
51  Vector<String> cnames(3);
52  cnames[0] = "RESTFREQUENCY";
53  cnames[1] = "NAME";
54  cnames[2] = "FORMATTEDNAME";
55  Table origmoltab = origtab.rwKeywordSet().asTable("MOLECULES");
56  const ColumnDesc &desc = (origmoltab.tableDesc().columnDescSet())[cnames[0]];
57  Bool isScalar = desc.isScalar() ;
58  if ( isScalar ) {
59    fname += ".asap4";
60    origtab.deepCopy(fname, Table::New);
61    Table tab(fname, Table::Update);
62    Table moltable = tab.rwKeywordSet().asTable("MOLECULES");
63    ROScalarColumn<Double> rfcol(moltable, cnames[0]);
64    ROScalarColumn<String> nmecol(moltable,  cnames[1]);
65    ROScalarColumn<String> fmtnmecol(moltable, cnames[2]);
66    Vector<Double> rf = rfcol.getColumn();
67    Vector<String> nme = nmecol.getColumn();
68    Vector<String> fmtnme = fmtnmecol.getColumn();
69    Array<Double> arf = rf.addDegenerate(1);
70    Array<String> anme = nme.addDegenerate(1);
71    Array<String> afmtnme = fmtnme.addDegenerate(1);
72    moltable.removeColumn(cnames);
73    moltable.addColumn(ArrayColumnDesc<Double>(cnames[0]));
74    moltable.addColumn(ArrayColumnDesc<String>(cnames[1]));
75    moltable.addColumn(ArrayColumnDesc<String>(cnames[2]));
76    ArrayColumn<Double> arfcol(moltable, cnames[0]);
77    ArrayColumn<String> anmecol(moltable, cnames[1]);
78    ArrayColumn<String> afmtnmecol(moltable, cnames[2] );
79    arfcol.putColumn(arf);
80    anmecol.putColumn(anme);
81    afmtnmecol.putColumn(afmtnme);
82    Int verid = tab.rwKeywordSet().fieldNumber("VERSION");
83    tab.rwKeywordSet().define(verid, uInt(4));
84  }
85  else {
86    Int verid = origtab.rwKeywordSet().fieldNumber("VERSION");
87    origtab.rwKeywordSet().define(verid, uInt(4));
88  }
89  return fname;
90}
91
92}
Note: See TracBrowser for help on using the repository browser.