source: branches/alma/src/STMathWrapper.h@ 1680

Last change on this file since 1680 was 1680, checked in by Takeshi Nakazato, 15 years ago

New Development: No

JIRA Issue: Yes CAS-1823

Ready to Release: Yes

Interface Changes: 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...

  1. Bug fix

In scantable.py, self._math = stmath() should be
self._math = stmath( rcParamsinsitu ).

  1. Delete operation mode

I have deleted operation mode parameter which is used for a function
to do an operation of scantable with 1D list, since I have implemented
the operation of scantable with 2D list.

  1. Extend operation of scantable

Now, operation of scantable with 2D list is available.

  1. Accept integer input for operation

Operation of scantable with int as well as int list is working
in addition to operation with float or float list.


  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 9.1 KB
Line 
1//
2// C++ Interface: STMathWrapper
3//
4// Description:
5//
6//
7// Author: Malte Marquarding <Malte.Marquarding@csiro.au>, (C) 2006
8//
9// Copyright: See COPYING file that comes with this distribution
10//
11//
12#ifndef ASAPSTMATHWRAPPER_H
13#define ASAPSTMATHWRAPPER_H
14
15#include <vector>
16#include <string>
17
18#include <casa/Utilities/CountedPtr.h>
19
20#include "STMath.h"
21#include "Scantable.h"
22#include "ScantableWrapper.h"
23
24namespace asap {
25
26/**
27Wrapper class to handle ScantableWrapper
28
29@author Malte Marquarding
30*/
31class STMathWrapper : public STMath {
32public:
33 STMathWrapper() {;}
34 explicit STMathWrapper(bool insitu) : STMath(insitu) {;}
35
36 virtual ~STMathWrapper() {;}
37
38 ScantableWrapper
39 average( const std::vector<ScantableWrapper>& in,
40 const std::vector<bool>& mask,
41 const std::string& weight,
42 const std::string& avmode )
43 {
44 std::vector<casa::CountedPtr<Scantable> > sts;
45 for (unsigned int i=0; i<in.size(); ++i) sts.push_back(in[i].getCP());
46 return ScantableWrapper(STMath::average(sts, mask, weight, avmode));
47 }
48
49 ScantableWrapper
50 averageChannel( const ScantableWrapper& in,
51 const std::string& mode = "MEDIAN",
52 const std::string& avmode = "NONE")
53 {
54 return ScantableWrapper(STMath::averageChannel(in.getCP(), mode, avmode));
55 }
56
57 ScantableWrapper
58 averagePolarisations( const ScantableWrapper& in,
59 const std::vector<bool>& mask,
60 const std::string& weight)
61 { return ScantableWrapper(STMath::averagePolarisations(in.getCP(),mask, weight));}
62
63 ScantableWrapper
64 averageBeams( const ScantableWrapper& in,
65 const std::vector<bool>& mask,
66 const std::string& weight)
67
68 { return ScantableWrapper(STMath::averageBeams(in.getCP(),mask, weight));}
69
70 ScantableWrapper
71 unaryOperate( const ScantableWrapper& in, float val,
72 const std::string& mode, bool tsys=false )
73 { return ScantableWrapper(STMath::unaryOperate(in.getCP(), val, mode, tsys)); }
74
75 ScantableWrapper arrayOperate( const ScantableWrapper& in,
76 const std::vector<float> val,
77 const std::string& mode,
78 bool tsys=false )
79 { return ScantableWrapper(STMath::arrayOperateChannel(in.getCP(), val, mode, tsys)); }
80
81 ScantableWrapper array2dOperate( const ScantableWrapper& in,
82 const std::vector< std::vector<float> > val,
83 const std::string& mode, bool tsys=false )
84 { return ScantableWrapper(STMath::array2dOperate(in.getCP(), val, mode, tsys)); }
85
86 ScantableWrapper binaryOperate( const ScantableWrapper& left,
87 const ScantableWrapper& right,
88 const std::string& mode)
89 { return ScantableWrapper( STMath::binaryOperate( left.getCP(), right.getCP(),
90 mode ) ); }
91
92
93 ScantableWrapper autoQuotient( const ScantableWrapper& in,
94 const std::string& mode = "NEAREST",
95 bool preserve = true )
96 { return ScantableWrapper(STMath::autoQuotient(in.getCP(), mode, preserve)); }
97
98 ScantableWrapper quotient( const ScantableWrapper& on,
99 const ScantableWrapper& off,
100 bool preserve = true )
101 { return ScantableWrapper( STMath::quotient( on.getCP(), off.getCP(),
102 preserve ) ); }
103
104 ScantableWrapper dototalpower( const ScantableWrapper& calon,
105 const ScantableWrapper& caloff, casa::Float tcal= 0 )
106 { return ScantableWrapper( STMath::dototalpower( calon.getCP(), caloff.getCP(), tcal ) ); }
107
108 ScantableWrapper dosigref( const ScantableWrapper& sig,
109 const ScantableWrapper& ref,
110 int smoothref = 0, casa::Float tsysv=0.0, casa::Float tau=0.0)
111 { return ScantableWrapper( STMath::dosigref( sig.getCP(), ref.getCP(), smoothref, tsysv, tau ) ); }
112
113 ScantableWrapper donod( const ScantableWrapper& s,
114 const std::vector<int>& scans,
115 int smoothref = 0,
116 casa::Float tsysv=0.0, casa::Float tau=0.0, casa::Float tcal=0.0 )
117 { return ScantableWrapper( STMath::donod( s.getCP(), scans, smoothref, tsysv, tau, tcal ) ); }
118
119 ScantableWrapper dofs( const ScantableWrapper& s,
120 const std::vector<int>& scans,
121 int smoothref = 0,
122 casa::Float tsysv=0.0, casa::Float tau=0.0, casa::Float tcal=0.0 )
123 { return ScantableWrapper( STMath::dofs( s.getCP(), scans, smoothref, tsysv, tau, tcal ) ); }
124
125 ScantableWrapper
126 freqSwitch( const ScantableWrapper& in )
127 { return ScantableWrapper(STMath::freqSwitch(in.getCP())); }
128
129 std::vector<float> statistic(const ScantableWrapper& in,
130 const std::vector<bool>& mask,
131 const std::string& which)
132 { return STMath::statistic(in.getCP(), mask, which); }
133
134 std::vector<int> minMaxChan(const ScantableWrapper& in,
135 const std::vector<bool>& mask,
136 const std::string& which)
137 { return STMath::minMaxChan(in.getCP(), mask, which); }
138
139 ScantableWrapper bin( const ScantableWrapper& in, int width=5)
140 { return ScantableWrapper(STMath::bin(in.getCP(), width)); }
141
142 ScantableWrapper
143 resample(const ScantableWrapper& in,
144 const std::string& method, float width)
145 { return ScantableWrapper(STMath::resample(in.getCP(), method, width)); }
146
147 ScantableWrapper
148 smooth(const ScantableWrapper& in, const std::string& kernel, float width)
149 { return ScantableWrapper(STMath::smooth(in.getCP(), kernel, width)); }
150
151 ScantableWrapper
152 gainElevation(const ScantableWrapper& in,
153 const std::vector<float>& coeff,
154 const std::string& filename,
155 const std::string& method)
156
157 { return
158 ScantableWrapper(STMath::gainElevation(in.getCP(), coeff, filename, method)); }
159
160 ScantableWrapper
161 convertFlux(const ScantableWrapper& in, float d,
162 float etaap, float jyperk)
163 { return ScantableWrapper(STMath::convertFlux(in.getCP(), d, etaap, jyperk)); }
164
165 ScantableWrapper opacity(const ScantableWrapper& in,
166 float tau)
167 { return ScantableWrapper(STMath::opacity(in.getCP(), tau)); }
168
169 ScantableWrapper
170 merge(const std::vector<ScantableWrapper >& in)
171
172 {
173 std::vector<casa::CountedPtr<Scantable> > sts;
174 for (unsigned int i=0; i<in.size(); ++i) sts.push_back(in[i].getCP());
175 return ScantableWrapper(STMath::merge(sts)); }
176
177 ScantableWrapper rotateXYPhase( const ScantableWrapper& in, float angle)
178 { return ScantableWrapper(STMath::rotateXYPhase(in.getCP(), angle)); }
179
180 ScantableWrapper rotateLinPolPhase( const ScantableWrapper& in, float angle)
181 { return ScantableWrapper(STMath::rotateLinPolPhase(in.getCP(), angle)); }
182
183 ScantableWrapper invertPhase( const ScantableWrapper& in )
184 { return ScantableWrapper(STMath::invertPhase(in.getCP())); }
185
186 ScantableWrapper swapPolarisations( const ScantableWrapper& in )
187 { return ScantableWrapper(STMath::swapPolarisations(in.getCP())); }
188
189 ScantableWrapper frequencyAlign( const ScantableWrapper& in,
190 const std::string& refTime,
191 const std::string& method )
192 { return ScantableWrapper(STMath::frequencyAlign(in.getCP())); }
193
194 ScantableWrapper convertPolarisation( const ScantableWrapper& in,
195 const std::string& newtype )
196 { return ScantableWrapper(STMath::convertPolarisation(in.getCP(),newtype)); }
197
198 ScantableWrapper mxExtract( const ScantableWrapper& in,
199 const std::string& scantype="on" )
200 { return ScantableWrapper(STMath::mxExtract(in.getCP(),scantype)); }
201
202 ScantableWrapper lagFlag( const ScantableWrapper& in,
203 double frequency, double width )
204 { return ScantableWrapper(STMath::lagFlag(in.getCP(), frequency, width)); }
205
206 // test for average spectra with different channel/resolution
207 ScantableWrapper
208 new_average( const std::vector<ScantableWrapper>& in,
209 const bool& compel,
210 const std::vector<bool>& mask,
211 const std::string& weight,
212 const std::string& avmode )
213 {
214 std::vector<casa::CountedPtr<Scantable> > sts;
215 for (unsigned int i=0; i<in.size(); ++i) sts.push_back(in[i].getCP());
216 return ScantableWrapper(STMath::new_average(sts, compel, mask, weight, avmode));
217 }
218
219 // cwcal
220 ScantableWrapper cwcal( const ScantableWrapper &in,
221 const std::string calmode,
222 const std::string antname )
223 {
224 casa::CountedPtr<Scantable> tab = in.getCP() ;
225 casa::String mode( calmode ) ;
226 casa::String name( antname ) ;
227 return ScantableWrapper( STMath::cwcal( tab, mode, name ) ) ;
228 }
229 // almacal
230 ScantableWrapper almacal( const ScantableWrapper &in,
231 const std::string calmode )
232 {
233 casa::CountedPtr<Scantable> tab = in.getCP() ;
234 casa::String mode( calmode ) ;
235 return ScantableWrapper( STMath::almacal( tab, mode ) ) ;
236 }
237};
238
239}
240
241#endif
Note: See TracBrowser for help on using the repository browser.