source: branches/newfiller/src/python_STMath.cpp @ 1815

Last change on this file since 1815 was 1677, checked in by Takeshi Nakazato, 14 years ago

New Development: No

JIRA Issue: Yes CAS-1823

Ready to Release: Yes

Interface Changes: Yes

What Interface Changed: The mode parameter is added to scantable.scale() method.

Test Programs: s = sd.scantable('yourfile',False)

factor = []
for i in range(s.nrow()):

factor.append(i)

s2 = s + factor

Put in Release Notes: Yes

Module(s): -

Description: Describe your changes here...

Basic operations (addition, subtraction, multiplication, division)
of scantable with one dimensional list are implemented.
Size of list operand should be equal to either number of spectral channel
or number of row. In the former case, the list is operated as
channel-by-channel manner, while it is operated as row-by-row manner
in the latter case.
If number of spectral channel is equal to number of row, row-by-row
operation will be done.

The user is able to select operation mode (channel-by-channel or row-by-row)
manually by using lower level function, stmath.arrayop().

The scantable.scale() method is updated to allow list scaling factor.
Scaling is done in channel-by-channel manner if mode is set to 'channel',
while in row-by-row manner if mode is set to 'row'.


  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 3.8 KB
Line 
1//#---------------------------------------------------------------------------
2//# python_STMathWrapper.cc: python exposure of c++ STMath class
3//#---------------------------------------------------------------------------
4//# Copyright (C) 2004
5//# ATNF
6//#
7//# This program is free software; you can redistribute it and/or modify it
8//# under the terms of the GNU General Public License as published by the Free
9//# Software Foundation; either version 2 of the License, or (at your option)
10//# any later version.
11//#
12//# This program is distributed in the hope that it will be useful, but
13//# WITHOUT ANY WARRANTY; without even the implied warranty of
14//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General
15//# Public License for more details.
16//#
17//# You should have received a copy of the GNU General Public License along
18//# with this program; if not, write to the Free Software Foundation, Inc.,
19//# 675 Massachusetts Ave, Cambridge, MA 02139, USA.
20//#
21//# Correspondence concerning this software should be addressed as follows:
22//#        Internet email: Malte.Marquarding@csiro.au
23//#        Postal address: Malte Marquarding,
24//#                        Australia Telescope National Facility,
25//#                        P.O. Box 76,
26//#                        Epping, NSW, 2121,
27//#                        AUSTRALIA
28//#
29//# $Id: python_STMath.cpp 1677 2010-01-27 07:29:48Z TakeshiNakazato $
30//#---------------------------------------------------------------------------
31#include <vector>
32#include <boost/python.hpp>
33
34#include "STMathWrapper.h"
35
36using namespace boost::python;
37
38namespace asap {
39  namespace python {
40    void python_STMath() {
41      class_<STMathWrapper>("stmath")
42        .def( init < > () )
43        .def( init < bool > () )
44        .def("_insitu", &STMathWrapper::insitu)
45        .def("_setinsitu", &STMathWrapper::setInsitu)
46        .def("_average", &STMathWrapper::average)
47        .def("_averagechannel", &STMathWrapper::averageChannel)
48        .def("_averagepol", &STMathWrapper::averagePolarisations)
49        .def("_averagebeams", &STMathWrapper::averageBeams)
50        .def("_unaryop", &STMathWrapper::unaryOperate)
51        .def("_arrayop", &STMathWrapper::arrayOperate)
52        //.def("_array2dop", &STMathWrapper::array2dOperate)
53        .def("_binaryop", &STMathWrapper::binaryOperate)
54        .def("_auto_quotient", &STMathWrapper::autoQuotient)
55        .def("_quotient", &STMathWrapper::quotient)
56        .def("_dototalpower", &STMathWrapper::dototalpower)
57        .def("_dosigref", &STMathWrapper::dosigref)
58        .def("_donod", &STMathWrapper::donod)
59        .def("_dofs", &STMathWrapper::dofs)
60        .def("_stats", &STMathWrapper::statistic)
61        .def("_minmaxchan", &STMathWrapper::minMaxChan)
62        .def("_freqswitch", &STMathWrapper::freqSwitch)
63        .def("_bin", &STMathWrapper::bin)
64        .def("_resample", &STMathWrapper::resample)
65        .def("_smooth", &STMathWrapper::smooth)
66        .def("_gainel", &STMathWrapper::gainElevation)
67        .def("_convertflux", &STMathWrapper::convertFlux)
68        .def("_convertpol", &STMathWrapper::convertPolarisation)
69        .def("_opacity", &STMathWrapper::opacity)
70        .def("_merge", &STMathWrapper::merge)
71        .def("_rotate_xyphase", &STMathWrapper::rotateXYPhase)
72        .def("_rotate_linpolphase", &STMathWrapper::rotateLinPolPhase)
73        .def("_invert_phase", &STMathWrapper::invertPhase)
74        .def("_swap_linears", &STMathWrapper::swapPolarisations)
75        .def("_freq_align", &STMathWrapper::frequencyAlign)
76        .def("_mx_extract", &STMathWrapper::mxExtract)
77        .def("_lag_flag", &STMathWrapper::lagFlag)
78        // testing average spectra with different channel/resolution
79        .def("_new_average", &STMathWrapper::new_average)
80        // cwcal
81        .def("cwcal", &STMathWrapper::cwcal)
82        .def("almacal", &STMathWrapper::almacal)
83          ;
84    };
85
86  } //namespace python
87} // namespace asap
88
Note: See TracBrowser for help on using the repository browser.