General - How do I...

Get a List of Stands for a Particular Date

To obtain an ordered numpy array of stands connected to the DP system at a particular station for a particular date:

1
2
3
from lsl.common import stations
lwa1 = stations.lwa1()
stands = lwa1.getStands(2455548.38787, JD=True)

This retrieves a lsl.common.stations.LWAStation object for LWA-1 and queries the obejct for a list of stands for JD 2,455,548.38. Alternatively, the date used can be set as a string, i.e.,:

stands = lwa1.getStands('2010/12/17 21:18:00')

This fetches the list of stands for UT December 17, 2010 at 21:18.

Get the Coordinates of a Particular Stand

The lsl.correlator.uvUtils module contains functions to return the location of a particular stand. Stands are numbered from 1 to 258 with stand #257 being the isolated stand in the south west corner of LWA-1 and stand #258 the outlier (RTA). Two method exist to get stand position, lsl.correlator.uvUtils.getXYZ and lsl.correlator.uvUtils.PositionCache. The difference between these two methods is that the former reads in the list of stand coordinates each time it is called whereas the latter reads in the locations only once and caches the results. To use either method:

1
2
3
4
5
import numpy
from lsl.correlator import uvUtils
xyz = uvUtils.getXYZ( numpy.array([1, 2, 3]) )
pCache = uvUtils.PositionCache()
xyz = pCache.getXYZ( numpy.array([1, 2, 3]) )

Both lines 3 and 5 retrive the x, y, and z coordinates (in meters) of stands 1, 2, and 3.

Get the Cable Delays for a Particular Stand

Similar to the coordinates, the lsl.correlator.uvUtils module has functions to retrieve the the cable delays as a function of frequency for a particular stand over a particular range of frequencies. In addition, there also exists both stand-alone and cached versions of the functions. To calculate cable delays in seconds:

1
2
3
import numpy
from lsl.correlator import uvUtils
dly = uvUtils.cableDelay(1, freq=numpy.array([50e6, 55e6, 60e6]))

which returns a numpy array of delays for stand #1 at teh frequencies 50, 55, and 60 MHz. The cached version is implemented differently so that the frequencies used are also stored in the object:

1
2
3
4
5
6
import numpy
from lsl.correlator import uvUtils
dCache = uvUtils.CableCache(numpy.array([50e6, 55e6, 60e6]))
dly = dCache.cableDelay(1)
dCache.updateFreq(numpy.array([40e6, 45e6]))
dly = dCache.cableDelay(1)

Line 3 creates the cache for frequencies of 50, 55, and 60 MHz and line 4 returns the delays at those frequencies for stand #1. Unless the frequencies stored in the cache are updated (i.e., line 5), all other calls to the cache use the initial frequency set.

Compute the uvw Coordinates of a Baseline

The lsl.correlator.uvUtils.computeUVW function allows for uvw coordinates to be computed for a all baselines formed from a collection of stands for a particular hour angle, declination, and frequency:

1
2
3
4
5
from lsl.common import stations
from lsl.correlator import uvUtils
lwa1 = stations.lwa1()
stands = lwa1.getStands(2455548.38787, JD=True)
uvw = uvUtils.computeUVW(stands, HA=1.0, dec=65.0, freq=50e6, IncludeAuto=True)

The above code block computes the uvw coordinates at 50 MHz for all stands used on JD 2,455,548.38 for an object at an hour angle of 1 hour and a declination of +65 degrees. The returned list of uvw coordinates will also include entries for autocorrelations. The order of the baselines is given by the function lsl.correlator.uvUtils.getBaselines.

Retrieve Earth Orientation Parameters

The lsl.misc.geodesy modules includes functions to retrieve earth orientation parameters (EOP; x, y, and UT1-UTC) for a given modified Julian Date (MJD) or MJD range. To retrieve the parameters as a lsl.misc.geodesy.EOP object, use:

1
2
3
4
5
from lsl import astro
from lsl.misc import geodesy
jd = 2455548.38787
mjd = jd - astro.MJD_OFFSET
eop = geodesy.getEOP(mjd)

For multiple MJDs, use lsl.misc.geodesy.getEOPRange to return a list of EOPs, one for each day:

1
2
3
4
5
6
7
8
9
from lsl import astro
from lsl.misc import geodesy
jd1 = 2455548.38787
jd2 = 2455552.38787
mjd1 = jd1 - astro.MJD_OFFSET
mjd2 = jd2 - astro.MJD_OFFSET
eops = geodesy.getEOPRange(mjd1, mdj2)
for eop in eops:
        print str(eop)