Observation information web services

Get a human-readable observation summary page

e.g. http://ws.mwatelescope.org/observation/obs/?obsid=1174096840 

This service takes an observation ID and returns a human readable web page summarising the observation, including any errors, files recorded, etc.

The parameters are:

  • obsid or obs_id: The starttime of an observation in GPS seconds. If not supplied, the most recent observation is used.
  • filename: If obsid is not given, you can specify the name of a data file generated by the given observation instead.
  • hidenulls: By default, the sky map beam nulls are shown by including (black) contour lines at power levels of 0.001. If this parameter is passed, the null contour lines are not drawn.
  • flip: If this parameter is included, the slot order in the colour coded error table (8-1 from top to bottom) is flipped, to show slot 1 tiles at the top of the table.
  • maxbaddipoles: By default, a tile will be marked as having a bad beamshape if more than one bad dipole is present in the same polarisation on that tile. This parameter allows the user to specify a different threshold.
  • nocache: Don't use cached observation data.

If you are making a query, and you don't want the results taken from the cache (you want them to be read directly from the database) than add the nocache parameter to your query.


Web page to generate full-power (0-327.68 MHz) PPD data plots

e.g. http://ws.mwatelescope.org/observation/ppds 

This web page shows a human-readable HTML form with all of the above PPD  plotting parameters, to make it easier for humans to plot PPD data from an observation. It can also be called with all the above parameters in the URL (or in POST data), and those values will be used to pre-fill the form data. It plots the data in the web page, using the above 'powerplot' web service. 


Get a summary of hardware/software errors that affected a given observation

e.g. http://ws.mwatelescope.org/observation/errors/?obsid=1174096840 

This service takes an observation ID and returns a summary of the errors (failures to communicate with receivers and/or beamformers) that affected that observation. By default, the service will return a colour-coded HTML table, but several forms of machine readable (JSON) output are available as well.

The parameters are:

  • obsid or obs_id: The starttime of an observation in GPS seconds. If not supplied, the most recent observation is used.
  • filename: If obsid is not given, you can specify the name of a data file generated by the given observation instead.
  • maxbaddipoles: By default, a tile will be marked as having a bad beam shape if more than one bad dipole is present in the same polarisation on that tile. This parameter allows the user to specify a different threshold.
  • refresh: If this parameter is included, the HTML table returned will include a REFRESH tag, to force the browser to update it every 60 seconds.
  • flip: If this parameter is included, the slot order (8-1 from top to bottom) is flipped, to show slot 1 tiles at the top of the table.
  • raw: Return a JSON structure containing a list of human-readable strings summarising the receiver/tile communication errors.
  • cooked: Return a JSON structure containing a list of human-readable strings summarising the errors in a different format.
  • dictformat: Return a JSON structure containing a fully machine readable list of tile IDs with problems in each of the possible categories (badpointings, badfreqs, badgains, badstates, badbeamshape and flagged), as well as the cooked and raw format lists of strings.

If you pass 1 to the pretty parameter, than the JSON results are indented to make them more human readable (the default when a GUI web browser is used to make the query). If 0 is passed, then the results are not indented.

The dictformat output contains:

  • badstates: a dict of all recid/tileids where the receiver wasn't observing at all
  • badpointings: a dict of all recid/tileids that had bad comms to the beamformer to set the delays
  • badfreqs: a dict of all recid/tileids where the ADFB wasn't set to the correct coarse channel set
  • badgains: a dict of all recid/tileids where the analogue attenuation wasn't set correctly
  • badbeamshape: a dict of all recid/tileids where there are two or more bad dipoles in the same polarisation
  • flagged: a dict of all recid/tileids where we have manually flagged the tile as bad
  • tileflags: All of the tiles in that observation that were manually flagged as bad, and when/why
  • rawerrors, cookederrors, shortstring, htmlstring: human-readable strings to summarise those errors.

An example of dictformat output is:

 Click here to expand JSON output...

{

    "badgains": {}, 
    "rawerrors": [
        "No status for rec05", 
        "Rec03:", 
        "    Mismatch in xdelaysetting[4] - Az/El=(None,None) should be Az/El=(206.6,74.6)", 
        "    Mismatch in ydelaysetting[4] - Az/El=(None,None) should be Az/El=(206.6,74.6)", 
        "Rec07:", 
        "    Mismatch in xdelaysetting[3] - Az/El=(90.0,76.3) should be Az/El=(206.6,74.6)", 
        "    Mismatch in ydelaysetting[3] - Az/El=(90.0,76.3) should be Az/El=(206.6,74.6)", 
        "Receivers Rec12 - Rec13", 
        "    Mismatch in xdelaysetting[8] - Az/El=(None,None) should be Az/El=(206.6,74.6)", 
        "    Mismatch in ydelaysetting[8] - Az/El=(None,None) should be Az/El=(206.6,74.6)", 
        "Rec15:", 
        "    Mismatch in xdelaysetting[7] - Az/El=(None,None) should be Az/El=(77.8,68.7)", 
        "    Mismatch in ydelaysetting[7] - Az/El=(None,None) should be Az/El=(206.6,74.6)", 
        "PyController failed to point tile/s: [LBA3]"
    ], 
    "cookederrors": [
        "Bad Receiver State:[rec05]", 
        "Bad pointing:\n       rec01:[LBA3]\n       rec03:[LBF4]\n       rec07:[Tile073]\n       rec12:[Tile128]\n       rec13:[LBE8]\n       rec15:[Tile157]", 
        "Bad Beam Shape:\n       rec06:[Tile142,Tile144]\n       rec07:[Tile072,Tile074,Tile078]\n       rec10:[Tile103,Tile104]\n       rec11:[Tile117]\n       rec12:[Tile123,Tile127]\n       rec14:[LBC4,LBC7]\n       rec15:[Tile155,Tile156]\n       rec16:[Tile161,Tile167]"
    ], 
    "badpointings": {
        "1": [2003], 
        "3": [2044], 
        "7": [73], 
        "12": [128], 
        "13": [2040], 
        "15": [157]
    }, 
    "badstates": {
        "5": [51, 52, 53, 54, 55, 56, 57, 58]
    }, 
    "badbeamshape": {
        "6": [142, 144], 
        "7": [72, 74, 78], 
        "10": [103, 104], 
        "11": [117], 
        "12": [123, 127], 
        "14": [2020, 2023], 
        "15": [155, 156], 
        "16": [161, 167]
    }, 
    "flagged": {
        "8": [2016], 
        "13": [2040], 
        "14": [2020, 2022, 2024]
    }, 
    "badfreqs": {}
}

Get a sky map with the MWA beam shape for an observation

e.g. http://ws.mwatelescope.org/observation/skymap/?obsid=1174096840 

This service takes an observation ID and returns a sky map showing the MWA beam for an observation, superimposed on a HASLAM background image with radio sources.

The parameters are:

  • obsid or obs_id: The starttime of an observation in GPS seconds. 
  • filename: If obsid is not given, you can specify the name of a data file generated by the given observation instead.
  • plotscale: If not specified, a 1200x1200 pixel PNG is returned. If plotscale=0.5 (for example), a 600x600 pixel image is returned instead.
  • hidenulls: By default, the beam nulls are shown by including (black) contour lines at power levels of 0.001. If this parameter is passed, the null contour lines are not drawn.
  • channel: By default, the centre frequency for the observation is used for the beam model. If this parameter is given, this MWA channel number (0-255) is used to generate the beam shape instead.

Note that this service returns binary data containing a PNG image, not a JSON structure. Use the URL in a web browser, use 'wget' or 'curl' from the command line and save to 'filename.png', or use the urllib2.urlopen() function, and call the read() method on the connection object that it returns to read the binary data.

Get a PPD plot with the full-power (0-327.68 MHz) PPD data recorded from each tile during an observation, or an observation group

e.g. http://ws.mwatelescope.org/observation/powerplot/?obsid=1296214080 

This service takes an observation ID and returns a plot showing PPD data recorded by the receivers.

The parameters are:

  • obsid or obs_id: The starttime of an observation in GPS seconds. If not supplied, the most recent observation is used.
  • group: If given, and non-zero, instead of just plotting PPDs taking during the given observation, include PPDs from all observations with the same groupid (contiguous observations all scheduled with the same command).
  • plotscale: Defaults to 1.0, pass larger or smaller values to return PNG files with larger or smaller dimensions.
  • merge: By default, PPDs from tiles with different cable 'flavor' (type and length of cable) are plotted separately, because the shape of the power spectrum depend on cable flavor. If this parameter is given, and non-zero, and non-zero, they are all plotted together.
  • corgains: If this parameter is given, and non-zero, the digital gain value used in the receiver for each MWA channel number (0-255) is used to flatten the PPDs, and make the values from tiles with different cable flavors more similar.
  • adu: If this parameter is given, and non-zero, plot the PPDs in 5+5i ADU units, as seen on raw voltage values sent from the receiver to the fine PFB. Instead of average power, the peak (0.1%, or 3.29 sigma) is shown, to check for underflow/saturation. 
  • waterfall: If this parameter is given, and non-zero, plot the PPDs on a waterfall plot (time on the vertical axis), to look for RFI during an observation. Note that each tile has PP data collected every 8 seconds, but this isn't coordinated between receivers, so PPD data will be clumped in time, with regular gaps. For a waterfall plot, it's recommended to use merge=1&corgains=1&adu=1.

Note that this service returns binary data containing a PNG image, not a JSON structure. Use the URL in a web browser, use 'wget' or 'curl' from the command line and save to 'filename.png', or use the urllib2.urlopen() function, and call the read() method on the connection object that it returns to read the binary data.