Coverage for /wheeldirectory/casa-6.7.0-12-py3.10.el8/lib/py/lib/python3.10/site-packages/casatools/componentlist.py: 60%

135 statements  

« prev     ^ index     » next       coverage.py v7.6.4, created at 2024-10-31 19:10 +0000

1##################### generated by xml-casa (v2) from componentlist.xml ############# 

2##################### 43a16d9ee24c4de1d5c37387c410a8fa ############################## 

3from __future__ import absolute_import 

4from .__casac__.componentlist import componentlist as _componentlist 

5 

6from .errors import create_error_string 

7from .typecheck import CasaValidator as _validator 

8_pc = _validator( ) 

9from .coercetype import coerce as _coerce 

10 

11 

12class componentlist: 

13 _info_group_ = """components""" 

14 _info_desc_ = """A tool for the manipulation of groups of components""" 

15 ### self 

16 def __init__(self, *args, **kwargs): 

17 """Use this constructor to construct a componentlist tool that does not 

18 contain any components. Components can be appended to the list using 

19 the addcomponent or simulate functions, 

20 and the list can be stored to disk by giving it a name with cl.rename 

21  

22 """ 

23 self._swigobj = kwargs.get('swig_object',None) 

24 if self._swigobj is None: 

25 self._swigobj = _componentlist() 

26 

27 def open(self, filename='', nomodify=False, log=True): 

28 """Use this constructor to construct a componentlist tool by reading 

29 the data from an table. To ensure that this table contains 

30 all the necessary columns and to allow the table format to be 

31 enhanced in the future, it is highly recommended that the table be 

32 created using a componentlist tool. 

33  

34 The table that contains the componentlist may be opened read-only by 

35 setting the readonly flag to True. When this is done some of the 

36 functions in the componentlist tool cannot be used. These include 

37 the ``set'', ``convert'', ``remove'', ``replace'', ``purge'', 

38 ``recover'', and ``sort'' functions. 

39  

40 """ 

41 return self._swigobj.open(filename, nomodify, log) 

42 

43 def asciitocomponentlist(self, filename, asciifile, refer='J2000', format='ST', direction={ }, spectrum={ }, flux={ }, log=True): 

44 """This constructor will allow conversion of a number of ascii-file-based 

45 formats to componentlists. 

46  

47 """ 

48 return self._swigobj.asciitocomponentlist(filename, asciifile, refer, format, direction, spectrum, flux, log) 

49 

50 def concatenate(self, list=[ ], which=[ int(-1) ], log=True): 

51 """The concatenate function copies the specified component(s), from 

52 the specified to list, to the end of the current list. The 

53 components are specified by numbering them from one to the length 

54 of the list. You cannot append components to a list that has been 

55 opened read only but the list you are copying from may be 

56 readonly. 

57  

58 You use a vector of indices to copy a number of components at 

59 once. By default all components are copied. 

60  

61 """ 

62 return self._swigobj.concatenate(list, which, log) 

63 

64 def fromrecord(self, record={ }): 

65 """This function allows the componentlist records that are returned 

66 by other functions (for e.g from imageanalysis tool) be converted 

67 to a tool to be manipulated or to be saved on disk 

68  

69  

70 """ 

71 return self._swigobj.fromrecord(record) 

72 

73 def haskeyword(self, keyword='metadata'): 

74 """Does the attached component list table have the specified keyword? This 

75 method will not work for in-memory componentlists. That is, the componentlist 

76 must exist on disk. If not, an exception is thrown. This method is for 

77 convenience for string keywords and is not meant as a replacement for the 

78 table tool API. 

79  

80  

81 """ 

82 return self._swigobj.haskeyword(keyword) 

83 

84 def putkeyword(self, keyword='metadata', value=[ ]): 

85 """Set the specified keyword in the componentlist table. If the keyword 

86 already exists in the table, it will be overwritten with this specified 

87 value. The value can be any type that CASA supports as an input 

88 parameter to tool methods. This method will not work for in-memory 

89 componentlists. That is, the componentlist must exist on disk. If not, 

90 an exception is thrown. This method is for convenience for string 

91 keywords and is not meant as a replacement for the table tool API. 

92  

93 """ 

94 return self._swigobj.putkeyword(keyword, value) 

95 

96 def getkeyword(self, keyword='metadata'): 

97 """Get the specified keyword in the componentlist table. This method 

98 will not work for in-memory componentlists. That is, the componentlist 

99 must exist on disk. If not, an exception is thrown. If the specified 

100 keyword does not exist in the table, an exception is thrown. This 

101 method is for convenience for string keywords and is not meant as a 

102 replacement for the table tool API. 

103  

104 """ 

105 return self._swigobj.getkeyword(keyword) 

106 

107 def torecord(self): 

108 """This function allows the componentlist to be converted to a 

109 record. Usually useful to pass to other functions in image 

110 analysis for e.g 

111  

112  

113 """ 

114 return self._swigobj.torecord() 

115 

116 def remove(self, which=[ int(-1) ], log=True): 

117 """The remove function removes the specified component(s) from the 

118 list. Components are specified by numbering them from one to the 

119 length of the list. So removing component one will remove the 

120 first component. After using this function all the 

121 remaining components will be shuffled down so that component two 

122 becomes component one. You cannot remove components from a list 

123 that has been opened read only. 

124  

125 You can specify a vector of indices to remove a number of 

126 components at once. For example in a five element list removing 

127 elements [1,3,5] will result in a two element list, now indexed as 

128 elements one and two, containing what was previously the second 

129 and fourth components. 

130  

131 Components that have been deleted using this function are not 

132 lost. The recover function can be used to get them back unless the 

133 purge function has been executed. Then they are completely gone. 

134  

135  

136 """ 

137 return self._swigobj.remove(which, log) 

138 

139 def purge(self): 

140 """The remove function deletes components from the list but does not 

141 remove them from memory. They remain accessible and can be 

142 obtained with the recover function. The purge function frees up 

143 the memory occupied by the removed components. You cannot use the 

144 recover function to obtain the removed components after the purge 

145 function has been called. 

146  

147  

148 """ 

149 return self._swigobj.purge() 

150 

151 def recover(self, log=True): 

152 """The recover function appends components to the end of the list 

153 that have been deleted with the remove function. This does not 

154 include components that were removed before the purge function was 

155 last executed. 

156  

157 """ 

158 return self._swigobj.recover(log) 

159 

160 def length(self): 

161 """The length function returns a non-negative integer that 

162 indicates how many components the list currently contains. 

163  

164 """ 

165 return self._swigobj.length() 

166 

167 def indices(self): 

168 """The indices function will returns a vector of non-negative 

169 integers that can be used to index through the list. This vector 

170 always contains the integers starting at one and increasing 

171 sequentially to the length of the list. Its main use is in for 

172 loops as is illustrated in the example below. 

173  

174 """ 

175 return self._swigobj.indices() 

176 

177 def sort(self, criteria='Flux', log=True): 

178 """The sort function can sort all the components in a list using a 

179 variety of criteria. Currently the following criteria are 

180 available: 

181 Flux: Sorts the list so that the brightest components, 

182 as defined by Stokes I, are at the beginning of the list. 

183 Position: Sorts the list so that components that are 

184 closest to a reference position, which is currently fixed at 

185 (ra,dec)=(0,0), are at the beginning of the list. 

186 Polarization: Sorts the list so that components with the 

187 largest fractional polarization, sqrt(Q**2+U**2+V**2)/I, are 

188 at the front of the list. Components where I=0 are placed at 

189 the end of the list. 

190 The parsing of the string containg the sorting criteria is case 

191 insensitive. You cannot sort a list that has been opened read only. 

192  

193 """ 

194 return self._swigobj.sort(criteria, log) 

195 

196 def isphysical(self, which=[ int(-1) ]): 

197 """The isphysical function is used to check if the specified 

198 components meet a number of criteria that must be true if the 

199 component could be used to model a physical process. These 

200 criteria are: 

201 1. I >= sqrt(Q**2 + U**2 + V**2) 

202 2. That the flux, when represented using the Stokes 

203 representation, has a zero imaginary value. 

204  

205 The ``Flux properties'' section of the ComponentModels module 

206 documentation describes how it is possible to generate a 

207 component which has non-zero imaginary value in the Stokes 

208 representation. 

209  

210 It is possible to check a number of components at once by 

211 specifying the indicies of all the components. The returned value 

212 will only be True if all the specified components are physical. 

213  

214  

215 """ 

216 return self._swigobj.isphysical(which) 

217 

218 def sample(self, direction=[ ], pixellatsize=[ ], pixellongsize=[ ], frequency=[ ]): 

219 """The sample function will returns a vector containing the flux in 

220 Janskys/pixel of all the components in the list, in the specified 

221 direction, at the specified frequency. The returned vector always 

222 contains four elements corresponding to the Stokes parameters 

223 I,Q,U,V. 

224  

225  

226 """ 

227 return self._swigobj.sample(direction, pixellatsize, pixellongsize, frequency) 

228 

229 def rename(self, filename, log=True): 

230 """The rename function is used to specify the name of the table 

231 associated with this componentlist. 

232  

233 When a componentlist is created it is not associated with an casa 

234 table. So when the componentlist is removed from memory its 

235 contents are lost. But if a name is attached to the componentlist, 

236 using the rename function, then its contents are saved in a table 

237 with the specified name when the componentlist is closed 

238  

239 NOTE: that by just using rename the componentlist is not ensured 

240 to be on disk; to be sure use close after rename 

241  

242 If the componentlist is created using the open() constructor then 

243 this function will rename the table associated with the list to 

244 the user specified name. You cannot rename a componentlist that 

245 has been opened read only. 

246  

247  

248  

249  

250 """ 

251 return self._swigobj.rename(filename, log) 

252 

253 def simulate(self, howmany=int(1), log=True): 

254 """The simulate function adds simulated components to the list. The 

255 simulation criterion is very simple, all the components added are 

256 identical! They are point sources at the J2000 north pole with a 

257 flux in Stokes I of 1~Jy, and zero in the other polarizations. The 

258 spectrum is constant. The 'set' functions (eg. setflux, setfreq) 

259 can be used to change these parameters to desired ones. 

260  

261 The howmany argument indicates how many components to append to 

262 the list. 

263  

264 """ 

265 return self._swigobj.simulate(howmany, log) 

266 

267 def addcomponent(self, flux=[ ], fluxunit='Jy', polarization='Stokes', dir=[ ], shape='point', majoraxis=[ ], minoraxis=[ ], positionangle=[ ], freq=[ ], spectrumtype='constant', index=[ ], optionalparms=[ float(0.0) ], label=''): 

268 """The addcomponent function is a convenience function that ties 

269 together the simulate function, and the various set 

270 functions. This function adds a component to the end of the 

271 list. For a description of the arguments see the following 

272 functions. 

273 [flux, fluxunit, polarization] See setflux 

274 [ra, raunit, dec, decunit] See setrefdir 

275 [dirframe] See setrefdirframe 

276 [shape, majoraxis, minoraxis, positionangle] See setshape 

277 [freq] A frequency quantity which is split into a value and 

278 units and passed to the setfreq function 

279 [freqframe] See setfreq 

280 [spectrumtype, index] The spectral index alpha such that flux density S 

281 as a function of frequency nu is: S~nu**alpha. 

282 See also the setspectrum or setstokesspectrum functions. 

283 [label] See setlabel 

284  

285 """ 

286 return self._swigobj.addcomponent(flux, fluxunit, polarization, dir, shape, majoraxis, minoraxis, positionangle, freq, spectrumtype, index, optionalparms, label) 

287 

288 def close(self, log=True): 

289 """The close function resets the componentlist to its default state. In 

290 this state it contains no components and is not associated with 

291 any table. 

292  

293 This function flushes all the components in memory to disk if the 

294 componentlist is associated with a table. The table is then 

295 closed, and the contents of the list deleted. 

296  

297 If the list is not associated with a table its contents are still 

298 deleted and memory used by the list is released. 

299  

300 """ 

301 return self._swigobj.close(log) 

302 

303 def edit(self, which, log=True): 

304 """ 

305 """ 

306 return self._swigobj.edit(which, log) 

307 

308 def done(self): 

309 """The done function frees up all the memory associated with a 

310 componentlist tool. After calling this function the componentlist 

311 tool cannot be used, either to manipulate the current list, or 

312 to open a new one. This function does not delete the disk 

313 file associated with a componentlist, but it will shut down the 

314 server process if there are no other componentlist tools being used. 

315  

316 """ 

317 return self._swigobj.done() 

318 

319 def select(self, which): 

320 """The select function is used to mark the specified components as 

321 ``selected''. This function will be used in conjunction with the 

322 planned graphical user interface. Other functions functions in the 

323 componentlist tool will behave no differently if a component is 

324 marked as ``selected''. 

325  

326 Components are not selected when the list is initially read 

327 from disk or when a new component is added to the list using the 

328 simulate function. 

329  

330 """ 

331 return self._swigobj.select(which) 

332 

333 def deselect(self, which): 

334 """The deselect function is used to remove the ``selected'' mark from 

335 specified components in the list. This function wiil be used in 

336 conjunction with the planned graphical user interface and no other 

337 functions in the componentlist will behave differently if a 

338 component is marked as ``selected'' or not. 

339  

340 Components are not selected when the list is initially read from 

341 disk or when a new component is added to the list using the 

342 simulate function. function. Deselecting a component that is 

343 already deselected is perfectly valid and results in no change. 

344  

345 """ 

346 return self._swigobj.deselect(which) 

347 

348 def selected(self): 

349 """The selected function is used to determine which components in a 

350 list are selected. It returns a vector with indices that indicate 

351 which components are selected. A zero length vector is returned if 

352 no components are selected. 

353  

354 Components are marked as selected using the 

355 select 

356 function. This function will be used in conjunction with the 

357 graphical user interface and other functions in the componentlist 

358 tool will behave no differently if a component is marked as 

359 ``selected'' or not. 

360  

361  

362 """ 

363 return self._swigobj.selected() 

364 

365 def getlabel(self, which): 

366 """The getlabel function returns the label associated with the specified 

367 component. The label is an arbitrary text string that can be used 

368 to tag a component. 

369  

370 """ 

371 return self._swigobj.getlabel(which) 

372 

373 def setlabel(self, which, value, log=True): 

374 """The setlabel function is used to reassign the label (an arbitrary 

375 text string) of the specified components to 

376 a new value. 

377  

378 """ 

379 return self._swigobj.setlabel(which, value, log) 

380 

381 def getfluxvalue(self, which): 

382 """The getfluxvalue function returns the value of the flux of the 

383 specified component using the current units and the current 

384 polarization representation. The functions 

385 getfluxunit & 

386 getfluxpol & 

387 can be used to get the units and polarization 

388 representation that corresponds to the supplied value. 

389  

390 """ 

391 return self._swigobj.getfluxvalue(which) 

392 

393 def getfluxunit(self, which): 

394 """The getfluxunit function returns the units of the flux of the 

395 specified component. The actual values are obtained using the 

396 getfluxvalue function. 

397  

398 """ 

399 return self._swigobj.getfluxunit(which) 

400 

401 def getfluxpol(self, which): 

402 """The getfluxunit function returns the polarization representation 

403 of the flux of the specified component. The actual values are 

404 obtained using the 

405 getfluxvalue 

406 function. 

407  

408 """ 

409 return self._swigobj.getfluxpol(which) 

410 

411 def getfluxerror(self, which): 

412 """The getfluxerror function returns the error in the flux of the 

413 specified component using the current units and the current 

414 polarization representation. The functions 

415 getfluxvalue & 

416 getfluxunit & 

417 getfluxpol & 

418 can be used to get the value, units and polarization 

419 representation that corresponds to the specified error. 

420  

421 No error calculations are done by this tool. The error can be 

422 stored and retreived and if any of the parameters of the flux 

423 change the user is responsible for updating the errors. 

424  

425 """ 

426 return self._swigobj.getfluxerror(which) 

427 

428 def setflux(self, which, value=[ ], unit='Jy', polarization='Stokes', error=[ ], log=True): 

429 """The setflux function is used to reassign the flux of the 

430 specified components to a new value. The flux value, unit and 

431 polarization can be specified and any number of components can be 

432 set to the new value. (Currently, the parameter, error is 

433 ignored.) 

434  

435 """ 

436 return self._swigobj.setflux(which, value, unit, polarization, error, log) 

437 

438 def convertfluxunit(self, which, unit='Jy'): 

439 """The convertfluxunit function is used to convert the flux to another 

440 unit. The units emph{must} have the same dimensions as the Jansky. 

441  

442 """ 

443 return self._swigobj.convertfluxunit(which, unit) 

444 

445 def convertfluxpol(self, which, polarization='Stokes'): 

446 """The convertfluxpol function is used to convert the flux to another 

447 polarization representation. There are are three representations 

448 used, namely , 'Stokes', 'linear' & 'circular' 

449  

450 """ 

451 return self._swigobj.convertfluxpol(which, polarization) 

452 

453 def getrefdir(self, which): 

454 """The getrefdir function returns, as a direction measure, the 

455 reference direction for the specified component. The reference 

456 direction is for all the currently supported component shapes the 

457 direction of the centre of the component. 

458  

459 """ 

460 return self._swigobj.getrefdir(which) 

461 

462 def getrefdirra(self, which, unit='deg', precision=int(6)): 

463 """ 

464 """ 

465 return self._swigobj.getrefdirra(which, unit, precision) 

466 

467 def getrefdirdec(self, which, unit='deg', precision=int(6)): 

468 """The getrefdirdec function returns the declination of the reference 

469 direction of the component as a formatted string. If the reference 

470 frame is something other than J2000 or B1950 the value returned is 

471 the longitude or the altitude. 

472  

473 See the getrefdirra function for a description of the unit and 

474 precision arguments. 

475  

476  

477 """ 

478 return self._swigobj.getrefdirdec(which, unit, precision) 

479 

480 def getrefdirframe(self, which): 

481 """The getrefdirframe function returns the reference frame of the reference 

482 direction of the component as a string. The returned string is 

483 always in upper case. Common frames are, 'J2000', 'B1950' and 'GALACTIC'. 

484  

485  

486 """ 

487 return self._swigobj.getrefdirframe(which) 

488 

489 def setrefdir(self, which=int(1), ra=[ ], dec=[ ], log=True): 

490 """The setrefdir function sets the reference direction of the 

491 specified components to a new value. The direction is defined by 

492 separately specifying the right ascension and the declination. 

493  

494 The right ascension is specified as a string or a real number 

495  

496 Ra can be in standard angle units 'deg', 'rad', or time formatted as such 'HH:MM:SS.sss' 

497 eg., '19:34:63.8' or angle formatted as such '+DDD.MM.SS.sss' eg., 

498 '127.23.12.37'. 

499  

500 Similarly the declination is specified as a string or a real 

501 number and the decunit can be any angular unit or 'angle' or 

502 'time'. 

503  

504 """ 

505 return self._swigobj.setrefdir(which, ra, dec, log) 

506 

507 def setrefdirframe(self, which, frame, log=True): 

508 """The setrefdirframe function sets the reference frame for the 

509 reference direction of the specified components (what a mouthful)! 

510  

511 Currently the reference frame does not include additional 

512 information like when and where the observation took place. Hence 

513 only reference frames that are independent of this information can be 

514 used. This includes the common ones of 'J2000', 'B1950', and 

515 'Galactic'. The measures module contains a 

516 complete listing of all possible reference frames. The parsing of 

517 the reference frame string is case-insensitive. 

518  

519  

520 """ 

521 return self._swigobj.setrefdirframe(which, frame, log) 

522 

523 def convertrefdir(self, which, frame): 

524 """The convertrefdir function changes the specified components to use a 

525 new direction reference frame. Using this function will change the 

526 right-ascension and declination of the component(s), unlike the 

527 setrefdirframe which does not. 

528  

529 Please see the 

530 setrefdirframe 

531 function for a description of what frames are allowed. 

532  

533  

534 """ 

535 return self._swigobj.convertrefdir(which, frame) 

536 

537 def shapetype(self, which): 

538 """The shapetype function returns the current shape of the specified 

539 component. The shape defines how the flux of the component varies 

540 with direction on the sky. Currently there are three shapes 

541 available. These are 'Point', 'Gaussian', and 'Disk'. This 

542 function returns one of these four strings. 

543  

544  

545 """ 

546 return self._swigobj.shapetype(which) 

547 

548 def getshape(self, which): 

549 """The getshape function returns the shape parameters of a component 

550 in a record. As different shapes can have a differing number and 

551 type of parameters the shape parameters are returned in a record 

552 with fields that correspond to parameters relevant to the current 

553 shape. 

554  

555 For a point shape there are only two fields; type and 

556 direction. These are the shape type, and the reference 

557 direction. These values are also returned by the 

558 shapetype and 

559 getrefdir 

560 functions. 

561  

562 For both the Gaussian and disk shapes there are three additional 

563 fields; majoraxis, minoraxis, positionangle. These are angular 

564 quantities, and hence are records with a value 

565 and a unit. 

566  

567  

568 """ 

569 return self._swigobj.getshape(which) 

570 

571 def setshape(self, which, type='Point', majoraxis=[ ], minoraxis=[ ], positionangle=[ ], majoraxiserror=[ ], minoraxiserror=[ ], positionangleerror=[ ], optionalparms=[ float(0.0) ], log=True): 

572 """The setshape function changes the shape of the specified components 

573 to the user specified shape. 

574  

575 The type argument defines what the sort of new shape to use. This 

576 can be either 'point', 'Gaussian', or 'disk'. 

577 The parsing of this string is case insensitive. 

578  

579  

580 If the shape type is 'point' then the remaining arguments in this 

581 function are ignored. There are no other parameters needed to 

582 specify a point shape. 

583  

584 But if the shape is 'Gaussian', or 'disk', 

585 the remaining arguments are needed to fully specify the shape. 

586 The majoraxis, minoraxis and positionangle arguments are quantities (see the 

587 quanta module for a definition of a 

588 quantity). Hence they can be specified either as with string eg., 

589 '1arcsec' or with a record eg., [value=1, unit='deg']. 

590  

591 The major axis is the width of the larger axis. For the Gaussian 

592 shape this is the full width at half maximum. And the minor axis 

593 is the width of the orthogonal axis. The positionangle is the 

594 specifies the rotation of these two axes with respect to a line 

595 connecting the poles of the current direction reference frame. If 

596 the angle is positive the the north point of the component moves 

597 in the eastern direction. 

598  

599  

600 """ 

601 return self._swigobj.setshape(which, type, majoraxis, minoraxis, positionangle, majoraxiserror, minoraxiserror, positionangleerror, optionalparms, log) 

602 

603 def convertshape(self, which, majoraxis='arcmin', minoraxis='arcmin', positionangle='deg'): 

604 """ 

605 """ 

606 return self._swigobj.convertshape(which, majoraxis, minoraxis, positionangle) 

607 

608 def spectrumtype(self, which): 

609 """The spectrumtype function returns the current spectral shape of the 

610 specified component. The spectral shape defines how the flux of 

611 the component varies with frequency. Returns one of "Constant", 

612 "Spectral Index", "Tabular Spectrum", and "Power Logarithmic Polynomial". 

613  

614  

615 """ 

616 return self._swigobj.spectrumtype(which) 

617 

618 def getspectrum(self, which): 

619 """The getspectrum function returns the spectral parameters of a 

620 component in a record. As different spectral shapes can have a 

621 differing number and type of parameters the spectral parameters 

622 are returned in a record with fields that correspond to parameters 

623 relevant to the current spectral shape. 

624  

625 For a constant spectrum there are only two fields; type and 

626 frequency. These are the spectral type, and the reference 

627 frequency. These values are also returned by the 

628 spectrumtype and 

629 getfreq 

630 functions. 

631  

632 For the spectral index spectral shape there is also an index 

633 field. This contains a vector with four numbers, these are the 

634 spectral indicies for the I,Q,U,V components of the flux. 

635  

636 The dictionary associated with a power log polynomial spectrum has the following structure: 

637  

638 { 

639 'coeffs': array([ 1., 2., 3.]), 

640 'frequency': { 

641 'type': 'frequency', 

642 'm0': {'value': 1.4200000000000002, 'unit': 'GHz'}, 

643 'refer': 'LSRK' 

644 }, 

645 'type': 'Power Logarithmic Polynomial', 

646 'error': array([ 0., 0., 0.]) 

647 } 

648  

649 The 'error' value is currently not used. 

650  

651  

652  

653 """ 

654 return self._swigobj.getspectrum(which) 

655 

656 def setstokesspectrum(self, which, type='spectral index', index=[ float(0.0) ], tabularfreqs=[ float(1.0e11) ], tabulari=[ float(1.0) ], tabularq=[ float(0.0) ], tabularu=[ float(0.0) ], tabularv=[ float(0.0) ], reffreq=[ ], frame='LSRK'): 

657 """The setstokesspectrum function changes the spectrum of the specified components 

658 to the user specified spectrum. This is different from setspectrum as it provides ways to control variation of all 4 Stokes parameters with frequency. If only I variation is needed please use setspectrum 

659  

660 The type argument defines what the sort of new spectrum to use. This 

661 can be either 'constant' or 'spectral index' or 'tabular'. The parsing of this 

662 string is case insensitive. 

663  

664 If the spectrum type is 'constant' then the remaining arguments in 

665 this function are ignored. There are no other parameters needed to 

666 specify a constant spectrum. 

667  

668 But if the spectrum is 'spectral index', the 'index' argument is 

669 needed. It is a 4 element vector. 

670  

671 The first element ($alpha_0$) is the spectral index of stokes I ($ I(nu)=I(nu_0)({{nu}over{nu_0}})^{alpha_0} $) 

672  

673 The second element ($alpha_1$) is a spectral index for the fractional linear polarization ( $sqrt{{{(Q(nu)^2+U(nu)^2)}over{I(nu)^2}}} = sqrt{{{(Q(nu_0)^2+U(nu_0)^2)}over{I(nu_0)^2}}}({{nu}over{nu_0}})^{alpha_1}$). $alpha_1=0$ implies constant fractional linear polarization w.r.t frequency. 

674  

675 The third element is a "Rotation Measure" factor, i.e angle of rotation $theta= alpha_2 (lambda^2 - lambda_0^2)$ of the linear polarization at frequency $nu$ w.r.t frequency $nu_0$. 

676  

677 The fourth element is a spectral index for the fractional spectral polarization ( $ {{V(nu)}over{I(nu)}} = {{V(nu_0)}over{I(nu_0)}}({{nu}over{nu_0}})^{alpha_3}$ 

678  

679 If the spectrum is 'tabular', then {tt index} is ignored but the six parameters 

680 {tt tabularfreqs, tabulari, tabularq, tabularu, tabularv and tabularframe} are considered. {tt tabularfreqs} and {tt tabulari, tabularq, tabularu, tabularv} have to be list of same lengths and larger than 2. You need at least 2 samples to interpolate the spectral value in between. 

681 The Stokes parameters of the source is interpolated from these values. Extrappolation outside the range given in {tt tabularfreqs} is not done. 

682 {tt tabularfreqs} should be float values in 'Hz' 

683 {tt tabulari, tabularq, tabularu, tabularv} should be float values in 'Jy' 

684  

685  

686 You should ensure that the reference 

687 frequency is set to the value you desire, using the 

688 setfreq 

689 function if you change to the spectral index shape. 

690  

691  

692 """ 

693 return self._swigobj.setstokesspectrum(which, type, index, tabularfreqs, tabulari, tabularq, tabularu, tabularv, reffreq, frame) 

694 

695 def setspectrum(self, which, type='spectral index', index=[ ], tabularfreqs=[ float(1.0e11) ], tabularflux=[ float(1.0) ], tabularframe='LSRK'): 

696 """The setspectrum function changes the spectrum of the specified components 

697 to the user specified spectrum. 

698  

699 The type argument defines what the sort of new spectrum to use. This 

700 can be one of 'constant', 'tabular', 'plp', or 'spectral index'. Minimal 

701 match, case insensitive. 

702  

703 If the spectrum type is 'constant' then the remaining arguments in 

704 this function are ignored. There are no other parameters needed to 

705 specify a constant spectrum. The reference frequency is set to be 

706 the same value as the component being replaced. Although this is 

707 unimportant for a constant spectrum, it may be important if 

708 the spectral model of the component in question is changed again 

709 later. See rules to how the reference frequencies of various spectral 

710 models are set in the description below. 

711  

712 If the spectrum is 'spectral index', the 'index' argument is 

713 needed to fully specify the spectrum by using the index argument. The 

714 index parameter may be in the form of a single numerical value, or 

715 an array containing a numerical value. In the case of the array containing 

716 multiple values, the zeroth value is used as the value of index, while 

717 subsequent values are tacitly ignored. The functional form of this model 

718 is 

719  

720 R = x^(alpha) 

721  

722 where R = I_nu/I_nu0 is the ratio of the intensities at observed frequency nu 

723 and the reference frequency nu_0, x = nu/nu_0, and alpha is the specified 

724 spectral index. The reference frequency is tacitly set to that of the component 

725 being replaced. and can be changed by a subsequent call to setfreq(). 

726  

727 If spectrum = 'plp', then the spectral model is set to a power log polynomial. 

728 The functional form of this model is 

729  

730 R = x^(c_0 + c_1*(ln(x)) + c_2*(ln(x))^2 + c_3*(ln(x))^3 + ... + c_n*(ln(x))^n) 

731  

732 where R = I_nu/I_nu0 is the ratio of the intensities at observed frequency nu 

733 and the reference frequency nu_0, x = nu/nu_0, ln is the natural logarithm, and 

734 c_0 ... c_n are the coefficients specified by index. In this case, index should 

735 be an array of numerical values, and the array length is unconstrained. The 

736 reference frequency is tacitly set to that of the component being replaced, and 

737 can be changed by a subsequent call to setfreq(). 

738  

739 If the spectrum is 'tabular', then 'index' is ignored but the 

740 three parameters 'tabularfreqs', 'tabularflux' and 'tabularframe' 

741 are considered. 'tabularfreqs' and 'tabularflux' have to be list 

742 of same lengths and larger than 2. You need at least 2 samples to 

743 interpolate the spectral value in between. The flux of the source 

744 is interpolated from these values. Extrapolation outside the range 

745 given in 'tabularfreqs' is not done. 

746 'tabularfreqs' should be float values in 'Hz' 

747 'tabularflux' should be float values in 'Jy' 

748 The reference frequency is chosen to be the zeroth element of tabularfreqs. 

749  

750  

751  

752 You should ensure that the reference 

753 frequency is set to the value you desire, using the 

754 setfreq 

755 function if you change to the spectral index shape. 

756  

757  

758 """ 

759 return self._swigobj.setspectrum(which, type, index, tabularfreqs, tabularflux, tabularframe) 

760 

761 def getfreq(self, which): 

762 """ 

763 """ 

764 return self._swigobj.getfreq(which) 

765 

766 def getfreqvalue(self, which): 

767 """ 

768 """ 

769 return self._swigobj.getfreqvalue(which) 

770 

771 def getfrequnit(self, which): 

772 """ 

773 """ 

774 return self._swigobj.getfrequnit(which) 

775 

776 def getfreqframe(self, which): 

777 """ 

778 """ 

779 return self._swigobj.getfreqframe(which) 

780 

781 def setfreq(self, which, value, unit='GHz', log=True): 

782 """The setfreq function sets the reference frequency of the specified 

783 components to a new value. The frequency is defined by separately 

784 specifying the value and its units. Use the 

785 setfreqframe 

786 function to set the frequency reference frame 

787  

788  

789 """ 

790 return self._swigobj.setfreq(which, value, unit, log) 

791 

792 def setfreqframe(self, which, frame='LSRK', log=True): 

793 """The setfreqframe function sets the reference frame for the 

794 reference frequency of the specified components. 

795  

796 Currently the reference frame does not include additional 

797 information like when are where the observation took place. Hence 

798 no conversion between reference frames is available. In the 

799 interim I recommend you always use the same frame. 

800  

801  

802 """ 

803 return self._swigobj.setfreqframe(which, frame, log) 

804 

805 def convertfrequnit(self, which, unit='GHz'): 

806 """The convertfrequnit function changes the specified components to use 

807 a new unit for the reference frequency. Using this function will 

808 change the frequency value also so that the overall reference 

809 frequency is not changed. It will affect the values and units 

810 obtained with 

811 setfreqvalue 

812 function. 

813  

814 Any unit can be used that has the same dimensions as the 'Hz'. 

815  

816  

817 """ 

818 return self._swigobj.convertfrequnit(which, unit) 

819 

820 def getcomponent(self, which, iknow=False): 

821 """The component function returns a record, showing the current state 

822 of the specified component in the list. 

823  

824 Modifying the record that is returned by this function does not 

825 modify the component in the list. To do this you must remove the 

826 component from the list, using the 

827 remove function, 

828 and add the modified component using the 

829 add function, or use 

830 the replace object 

831 function. This function will be removed in a future release of 

832 and you are urged to use the get functions to extract 

833 information about a component. 

834  

835  

836 """ 

837 return self._swigobj.getcomponent(which, iknow) 

838 

839 def add(self, thecomponent, iknow=True): 

840 """The add function adds a component to the component 

841 list. You cannot add components to a list that has been opened 

842 read only. To use this function you need to know the details of 

843 the record format. however this has been deprecated and you are 

844 urged to use the set functions, in conjunction with the simulate 

845 function to add a component to the list. 

846  

847  

848 """ 

849 return self._swigobj.add(thecomponent, iknow) 

850 

851 def replace(self, which, list, whichones=[ int(-1) ]): 

852 """The replace function replaces the components from the list with 

853 the specified components from another list. The source list can be 

854 opened readonly and the length of the vectors in the first and 

855 third arguments must the the name. 

856  

857 You cannot replace components in a list that has been opened read 

858 only. 

859  

860  

861 """ 

862 return self._swigobj.replace(which, list, whichones) 

863 

864 def summarize(self, which=int(-1)): 

865 """The summarize function summarizes the contents of the specified components to the logger. 

866  

867 """ 

868 return self._swigobj.summarize(which) 

869 

870 def iscomponentlist(self, tool=[ ]): 

871 """This global function can be used to determine if the supplied 

872 argument is a componentlist tool. If so it returns True, otherwise 

873 it returns False. 

874  

875 """ 

876 return self._swigobj.iscomponentlist(tool) 

877