source: trunk/admin/requirements2.tex @ 646

Last change on this file since 646 was 646, checked in by phi196, 19 years ago

support for 7 fields

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 53.4 KB
Line 
1\documentclass[11pt]{article}
2\usepackage{a4}
3\usepackage{calc}
4\usepackage{ifthen}
5\usepackage{smartref}
6\usepackage{longtable}
7
8\def\complete{yes}
9
10% Adjust the page size
11\addtolength{\oddsidemargin}{-0.4in}
12\addtolength{\evensidemargin}{+0.4in}
13\addtolength{\textwidth}{+0.8in}
14
15\setlength{\parindent}{0mm}
16\setlength{\parskip}{1ex}
17
18
19\title{ASAP - ATNF Spectral Analysis Package\\
20  Software Requirements - Development Cycle 2 }
21 \author{Chris Phillips \& Malte Marquarding}
22
23\newcounter{requirement}
24\newcounter{subrequirement}
25
26\addtoreflist{requirement}
27\newcommand{\reqref}[1]{R\ref{#1}-\requirementref{#1}}
28
29\newcommand{\makenote}[1]{{\bf \tt \em#1}}
30
31\newcommand{\anitem}[2]{\smallskip \parbox[t]{2cm}{#1}%
32  \parbox[t]{\textwidth-2cm}{#2}}
33
34\newcommand{\showreqcounter}{
35  R\arabic{section}.\arabic{subsection}-\arabic{requirement}
36}
37
38\newcommand{\showsubreqcounter}{
39  R\arabic{section}.\arabic{subsection}-\arabic{requirement}.\arabic{subrequirement}
40}
41
42\newcommand{\status}[2]{
43  \ifthenelse{\equal{#1}{Started}}{Started \hspace*{1cm} {\em Priority #2}}
44 {\ifthenelse{\equal{#1}{Not started}}{Not Started\hspace*{1cm} {\em Priority #2}}
45 {\ifthenelse{\equal{#1}{Done1}}{Completed}
46 { \ifthenelse{\equal{#1}{Duplicate}}{Duplicate?}
47 {#1}
48 }}}
49}
50
51% Also Deferred, Obsolete
52
53% Requirement command
54%  Summary
55%  Status
56%  Priority
57%  Time estimate
58%  Percent complete
59%  Completion date
60%  Text
61
62%\newarray\Requirements
63
64%\newcounter{numreq}
65
66\newcommand{\requirement}[7]{
67  \ifthenelse{\equal{\complete}{yes}}
68             {\dorequirement{#1}{#2}{#3}{#4}{#5}{#6}{#7}}
69             {\ifthenelse{\equal{#2}{Done1}
70                 \or \equal{#2}{Deferred}
71                 \or \equal{#2}{Removed}
72                 \or \equal{#2}{Obsolete}}{}
73               {\dorequirement{#1}{#2}{#3}{#4}{#5}{#6}{#7}}}
74}
75
76\newcommand{\subrequirement}[7]{
77  \ifthenelse{\equal{\complete}{yes}}
78             {\dosubrequirement{#1}{#2}{#3}{#4}{#5}{#6}{#7}}
79             {\ifthenelse{\equal{#2}{Done1}
80                 \or \equal{#2}{Deferred}
81                 \or \equal{#2}{Obsolete}
82                 \or \equal{#2}{Removed}}{}
83               {\dosubrequirement{#1}{#2}{#3}{#4}{#5}{#6}{#7}}}
84}
85
86
87\newcommand{\dorequirement}[7]{
88
89  \setcounter{subrequirement}{0}
90
91  \hspace*{2mm}\begin{minipage}{\textwidth-2mm}
92    \setlength{\parindent}{-2mm}
93    \stepcounter{requirement}
94    {\bf \showreqcounter\ \bf #1} \\
95    #7 \\
96    \hspace*{1cm} \status{#2}{#3}
97  \end{minipage}
98
99  \typeout{REQUIREMENT: \showreqcounter & #1 & #2 & #3 & #4 & #5 & #6 :ENDREQ}
100}
101
102\newcommand{\extendedrequirement}[7]{
103  \setcounter{subrequirement}{0}
104
105  \hspace*{2mm}\begin{minipage}{\textwidth-2mm}
106    \setlength{\parindent}{-2mm}
107    \stepcounter{requirement}
108    {\bf \showreqcounter\  #1}
109    #7
110    \hspace*{1cm} \status{#2}{#3}
111  \end{minipage}
112
113  \typeout{REQUIREMENT: \showreqcounter & #1 & #2 & #3 & #4 & #5 & #6 :ENDREQ}
114}
115
116\newcommand{\dosubrequirement}[7]{
117  \hspace*{2mm}\begin{minipage}{\textwidth-2mm}
118    \setlength{\parindent}{-2mm}
119    \stepcounter{subrequirement}
120    {\bf \showsubreqcounter\ \bf #1} \\
121    #7 \\
122    \hspace*{1cm} \status{#2}{#3}
123  \end{minipage}
124
125  \typeout{REQUIREMENT: \showsubreqcounter & #1 & #2 & #3  & #4 & #5 & #6 :ENDREQ}
126}
127
128\newcommand{\reqeqn}[1]{\\\hspace*{1cm} $#1$}
129
130\let\oldsection\section
131\renewcommand{\section}[1]{\setcounter{requirement}{0}\oldsection{#1}}
132
133\let\oldsubsection\subsection
134\renewcommand{\subsection}[1]{\setcounter{requirement}{0}\oldsubsection{#1}}
135
136\begin{document}
137
138\maketitle
139
140\section{Introduction}
141
142ASAP has been written to replace the venerable single-dish software
143{\tt spc} for processing of single dish spectral line data from all
144ATNF observatories. Version 1.0 of ASAP was released in March
1452005. This document reflects an update of the initial requirements
146document. Some new requirements have been added and the requirement
147priorities have been reassessed for the next development cycle.
148
149\section{Scope}
150
151ASAP should be able to process all spectral line single-dish
152observations from ATNF telescopes (Parkes, Mopra \& Tidbinbilla). This
153includes reading the data produced by the telescope, calibration and
154reduction of the data and basic analysis of the data such as fitting
155line profiles etc.
156
157It has been assumed that the following processing is out of the scope
158of ASAP.
159\begin{itemize}
160\item Raster or ``on-the-fly'' mapping (This is handled by
161``livedata'' and gridzilla).
162\item Very complex or specific data processing. (A route into
163  Class\footnote{Part of the GLIDAS software package, produced by
164  Institut de Radio Astronomie Millime\'trique http://www.iram.fr}
165  should be available for advanced processing).
166%%TODO%% give example
167\item Continuum data.
168\item Pulsar timing observations.
169\end{itemize}
170
171\section{Priorities}
172
173Requirements have been given a value of 1 to 3. The other requirements
174will be implemented mainly depending on priority, with ``1'' the
175highest. Priority 3 and some priority 2 requirements will probably not
176get implemented in the duration of the second development cycle.
177
178\section{User Interface}
179
180The user interface (UI) is the most important part of a single dish
181processing package, but probably the most difficult to get right. Long
182term the UI for this software will consist of three parts.
183\begin{itemize}
184  \item A graphical user interface (GUI).
185  \item An interactive command line interface (CLI).
186  \item A scriptable interface for batch processing.
187\end{itemize}
188
189The CLI and scriptable interface are essentially be the same.
190
191The software does not {\em need} to be able to run solely from a
192``vt100'' style terminal. It can be assumed that the user is running
193the software from within a windowed (i.e. X11) environment. This will
194mean it will not necessarily be possible to run the software remotely
195over a slow network connection (e.g. internationally or from home).
196Where possible, operations on the data should be possible from all
197three aspects of the user interface.
198
199The user interface needs to be implemented so that the user can easily
200and transparently work on spectra either one at a time or by
201processing multiple spectra in parallel. This means there must be an
202easy way to select specific or multiple spectra to display or process.
203
204At this stage the development of a GUI has been deferred until the
205basic package has stabilised and most features have been
206implemented. At that stage a decision will be made on how to best
207implement a GUI. On a shorter timescale specific purpose GUIs (such as
208a simple Wizard for processing standard Mopra data) may be produced on
209an as-needed basic.
210
211\subsection{Graphical User Interface}
212
213At this stage the ASAP GUI has been deferred to a later date.
214
215\smallskip
216
217\requirement{Simple interface}{Deferred}{}{}{}{}{It should be simple,
218intuitive and uncluttered. Specifically, use of many windows
219simultaneously should be discouraged, as should hiding functionality
220behind layers of dialog boxes.}
221
222\requirement{Integrated plotter}{Deferred}{}{}{}{}{The plotting window
223should be a major component of the GUI control, not a separate
224isolated window.}
225
226\requirement{Minimal controls}{Deferred}{}{}{}{}{The interface should use
227  minimal ``always visible'' controls, with use of pull down menus and
228  maybe a toolbar for frequency used functions. }
229
230\requirement{Keyboard shortcuts}{Deferred}{}{}{}{}{Keyboard shortcuts should
231be available.}
232
233\requirement{GUI user preferences}{Deferred}{}{}{}{}{Most user preferences
234(i.e. keywords in the CLI) should be presented in a popup, tabbed,
235dialog box.}
236
237\requirement{GUI line fitting}{Deferred}{}{}{}{}{When performing line
238profile fitting, a spreadsheet type window should be viewable which
239shows the current parameter values (amplitude, velocity etc) for each
240line fitted and allow the user to change these parameters or set the
241current value as fixed. This GUI should stay synchronised with any CLI
242changes to these values.}
243
244\subsection{Command Line Interface}
245
246The command line interface is the main user interface to ASAP. It is
247implemented in ipython using a objected oriented command approach.
248
249\requirement{Virtual CLI}{Obsolete}{}{}{}{}{While the GUI should be the main
250interface for new users and for basic manipulation, some tasks can be
251more efficiently performed using a CLI. A virtual CLI could be
252integrated as part of the GUI.}
253
254\requirement{CLI keyword/argument}{Obsolete}{}{}{}{}{The CLI should have a
255keyword/argument form and never prompt the user for specific values
256(the user should be able to change values which are retained until
257they wants to change them again).}
258
259\requirement{CLI case insensitive}{Obsolete}{}{}{}{}{The CLI should be case
260insensitive and accept minimum matching and short forms of
261keywords.}
262
263\requirement{CLI available routines}{Done1}{}{}{}{}{The user must be able to
264quickly and easily see from the command line the available routines
265and keywords which affect it, so they can see which parameters may
266need changing.}
267
268\subsection{Scripting}
269
270\requirement{Scripting}{Done1}{1}{}{}{}{It must be possible to run the
271software in a scripting mode. This would be to process large amounts
272of data in a routine manner and also to automatically reproduce
273specific plots etc (So the scripting must have full control of the
274plotter). Preferably the scripting ``language'' and the CLI would be
275the same.}
276
277%\requirement{Scripts from History}{Duplicate}{}{}{}{}{It would be worthwhile
278%having a method to auto-generate scripts (for reduction or plotting)
279%from current spectra history, or some similar method.}
280
281\section{Plotter}
282
283The plotter should be fully interactive and be an integral part of the
284GUI and software interface.
285
286\requirement{High quality plots}{Done1}{}{}{}{}{It must be able to
287produce plots of publishable quality.}
288
289\subrequirement{Histogram plots}{Not started}{1}{}{}{} {As well as line
290plots, there needs to be an option to plot spectra in ``Histogram''
291mode}
292
293
294The user must be able to specify:
295
296\subrequirement{Line Thickness}{Started}{1}{}{}{}{}
297
298\subrequirement{Character size}{Not started}{1}{}{}{}{}
299
300\subrequirement{Colours}{Started}{1}{}{}{}{}
301
302\subrequirement{Line styles}{Not started}{1}{}{}{}{}
303
304\subrequirement{Position of axis ticks}{Done1}{2}{}{}{}{}
305
306\subrequirement{Hard Copies}{Done1}{1}{}{}{}{Producing hard copies
307in postscript and .png format. Other formats may be added on an as
308need basic.}
309
310\subrequirement{Non-interactive hard copies}{Not started}{1}{}{}{}
311{It must be possible to produce hard copiers without an interactive
312(i.e X11) plotter starting}.
313
314\subrequirement{Scriptable plotting}{Done1}{1}{}{}{} {All aspects of
315the plotter (zooming etc) must be setable from the command line for
316scripting}
317
318\requirement{Arbitrary plots}{Not started}{3}{}{}{}
319{It must be possible to flexibly select the data to plot (e.g. Tsys vs
320time etc as well as plots such as amplitude vs channel number or
321velocity). Preferably any of the header values for a selection of
322scans could be plotted on a scatter plot (e.g. Tsys vs elevation)}
323
324\requirement{Overlay spectra}{Done1}{}{}{}{}{It must be possible to overlay
325  multiple spectra on a single plot using different colours and/or
326  different line styles. (Including multiple stokes data and multiple
327  IFs).[[CHECK]]}
328
329\requirement{Plot individual spectra}{Done1}{}{}{}{}{It must be possible to
330  plot either the individual integrations (in either a stacked
331  fashion, or using a new subplot per integration)}
332
333\subrequirement{Auto-average integrations for plotting}{Not started}{2}{}{}{}
334{It should be possible to optionally auto-average integrations of a
335scan for plotting (for data thats has not already been scan averaged)}
336
337\requirement{Plotter multi-panelling}{Done1}{1}{}{}{}
338{It must be possible to multi-panel spectra in an n$\times$m size
339grid. It must be possible to easily change the number of plots per
340page, ie define the ``n'' and ``m'' values.}
341
342\subrequirement{Step between plots}{Not started}{1}{}{}{}
343{If more spectra than can fit on the plot matrix are to be plotted,
344then it must be possible to step back and forth between the viewable
345spectra (i.e. ``multi-page'' plots). This includes stepping through a
346single plot on the pages at a time.}
347
348\requirement{Multi-panel: change \# panels}{Not started}{2}{}{}{}
349{When using multi-panelling, the plotter should automatically update
350the plot when the plot matrix dimensions (``n'' and ``m'' are changed)}
351
352\requirement{Plotter interactive zooming}{Done1}{}{}{}{}{It must be possible
353  to interactively zoom the plot (channel range selection and
354  amplitude of the spectra etc.)  This includes both GUI control of
355  the zooming as well as command line control of either the zoom
356  factor or directly specifying the zoom bounds. }
357
358\requirement{Zoomed subplot}{Not started}{2}{}{}{}
359{On a single plot, it should be possible to plot the full spectrum and
360a zoomed copy of the data (using a different lie style) to see weak
361features. The user must be able to specify the zoom factor.}
362
363\requirement{Offset plots}{Not started}{2}{}{}{}{Optionally when stacking
364  multiple spectral plots in one subwindow, a (user definable) offset
365  in the ``y'' direction should be added to each subsequent
366  spectra.}
367
368\requirement{Plotter auto-update}{Not started}{3}{}{}{}
369{The plotter should automatically update to reflect user processing,
370either from the CLI or GUI. The user should have to option to turn
371this feature off if they so wish.}
372
373\requirement{Waterfall plot}{Not started}{3}{}{}{}
374{It should be possible to plot individual integrations (possibly from
375multiple scans) in a ``waterfall'' plot. This is an image based
376display, where spectral channel is along the x-axis of the plot, time
377(or integration number) along the y-axis and greyscale or colour
378represent the amplitude of spectra. Interactive zooming and panning of
379this image should be supported. }
380
381\requirement{Waterfall editing}{Not started}{3}{}{}{}
382{When plotting ``waterfall'' plots, it should be possible to
383interactively select regions or points and mark them as invalid
384(i.e. to remove RFI affected data). The plotter should also show the
385time/velocity of the pixel beneath the cursor.}
386
387\requirement{Export waterfall to FITS}{Not started}{3}{}{}{}
388{It should be possible to export the ``waterfall'' plot images as a
389FITs file, for user specific analysis.}
390
391\requirement{Plot overlays}{Not started}{1}{}{}{} {Line markers overlays,
392read from a catalogue should be optionally available. This would
393include the full Lovas catalogue, the JPL line catalogue and radio
394recombination lines. The lines would be Doppler corrected to a
395specified velocity. The user must be able to plot just a sub-section
396of the lines in any specific catalogue (to avoid clutter).}
397
398\subrequirement{Plot overlays}{Not started}{2}{}{}{}
399{Simple user definable catalogue should be definable for plot overlays}
400
401\requirement{Plot fitted functions}{Done1}{}{}{}{}
402{Optionally plot fitted functions (e.g line profiles or baseline
403fit). If multiple components (e.g. Gaussian) have been fit, it should
404be possible to show the individual functions or the sum of the
405components}
406
407\requirement{Plot residual data}{Started}{1}{}{}{}
408{It should be possible to plot the residual data with or without
409subtraction of fit functions. This includes plotting the spectra with
410or without baseline removal and the residual after subtracting
411Gaussian fits. The default should be to plot the data with baseline
412subtracted but profile fits not subtracted.}
413
414\requirement{Plot header data}{Not started}{2}{}{}{} {Basic header data
415(source name, molecule, observation time, Tsys, elevation, parallactic
416angle etc) should be optionally shown, either on the plot or next to
417it. This may either consist of a set of values, or only one or two
418values the user specifically wants to see (source name and molecule,
419for example).}
420
421\subrequirement{User define header plot positions}{Not started}{3}{}{}{}
422{The user should be able to define where on the plot the header info
423would appear.}
424
425\requirement{Realtime cursor position}{Done1}{}{}{}{}
426{Optionally, relevant data such as the current mouse position should
427be displayed (maybe with a mode to display an extended cross,
428horizontal or vertical line at the current cursor position).}
429
430\requirement{Plot annotations}{Not started}{2}{}{}{}{The user should be able
431  to define simple annotations. This would include text overlay and
432  probably simple graphics (lines, arrows etc).}
433
434The user must be able to use the plotter window to interactively set
435initial values and ranges used for fitting functions etc. The use of
436keyboard ``shortcuts'' or other similar ``power user'' features should
437be available to save the time of experienced users.
438
439{\em The following requirements are deferred as they require a version
440of Matplotlib not yet available.}
441
442The plotter should be used to set the following values:
443
444\requirement{Interactive channel selection}{Deferred}{1}{}{}{}{Range of
445 spectral channels needed for specific tasks (ie the channel mask)
446 (See requirement \reqref{ref:chansel})}
447
448\requirement{Interactive line fitting}{Deferred}{1}{}{}{}{Initial
449Gaussian parameters (velocity, width, amplitude) for profile
450fitting.}
451
452\requirement{Plotter change fit values}{Deferred}{1}{}{}{}
453{Change the parameter values of existing line profile
454fits, or channel ranges used for baseline fits.}
455
456\section{Functionality}
457
458\subsection{Import/export}
459
460The software needs a set of import/export functions to deal with a
461variety of data formats and to be able to exchange data with other
462popular packages. These functions should be flexible enough to allow
463the user to perform analysis functions in an different package and
464re-import the data (or vice versa). The import function must be
465modular enough to easily add new file formats when the need arises.
466To properly import data, extra information may have to be read from
467secondary calibration files (such as GTP, Gated Total Power, for 3~mm
468wavelength data taken with Mopra). The import functions should be
469flexible enough to gracefully handle data files with missing headers
470etc. They should also be able to make telescope and date specific
471corrections to the data (for ATNF observatories).
472
473The software must be able to read (import) the following file formats.
474
475\requirement{Read rpfits}{Done1}{}{}{}{}{The rpfits file format produced by
476  all current ATNF correlators.}
477
478\requirement{Read sdfits}{Done1}{}{}{}{}{SDFITS (currently written by {\tt SPC}).}
479
480\requirement{Read simple FITS}{Not started}{2}{}{}{}{Simple ``image'' FITS
481(used by CLASS}
482
483\requirement{Read historic formats}{Not started}{3}{}{}{}
484{Historic ATNF single dish formats (Spectra, SPC, SLAP). Possibly a
485set of routines to translate these formats to SDFITs would suffice.}
486
487\requirement{Read PSRFITS}{Deferred}{}{}{}{}{PSRFIT for pulsar spectroscopy.}
488
489\requirement{Read online data}{Not started}{1}{}{}{}
490{For online analysis, the software should be able to read an rpfits
491file which is is still currently open for writing by the telescope
492backend processor.}
493
494\requirement{Handle Doppler data}{Done1}{1}{}{}{}{Data which has been
495observed in either a fixed frequency or Doppler tracked fashion needs
496to be handled.}
497
498The software should be able to export the data in the following formats.
499
500\requirement{Write SDFITS}{Done1}{}{}{}{}{Single Dish FITS.}
501
502\requirement{Write simple FITS}{Done1}{}{}{}{}
503{Simple ``image'' FITS (as used by CLASS). It must be possible to to
504export multiple spectra simultaneously, using default file name and
505postfix.}
506
507\requirement{}{Removed}{}{}{}{}{}{In a format which can be imported by other popular
508    packages such as Class.
509
510\requirement{Write ASCIIs}{Done1}{}{}{}{}
511{Simple ASCIIs format, suitable for use with programs such as Perl,
512Python, SuperMongo etc.}
513
514\requirement{Header Writing}{Not started}{1}{}{}{}
515{The exported data should retain as much header data as possible. It
516should also be possible to request specific data be written in the
517desired form (B1950 coordinates, optical velocity definition etc).}
518
519\requirement{Import corrections}{Done1}{}{}{}{}
520{The import function should apply relevant corrections (especially
521those which are time dependent) to specific telescopes. See
522$\S$\ref{sec:issues} for a list of currently known issues.}
523
524\requirement{Append output files}{Not started}{1}{}{}{} {It must be possible
525to append spectra to existing output files, specifically sdfits and
526asap output files.}
527
528\subsection{Sky subtraction}
529\label{sec:skysubtraction}
530To remove the effects of the passband filter shape and atmospheric
531fluctuations across the band, sky subtraction must be performed on the
532data. The software must be able to do sky subtraction using both
533position switching (quotient spectra) and frequency switching
534techniques.
535
536\requirement{Quotient Spectra}{Done1}{}{}{}{}
537{\label{ref:skysub} Position switched sky subtraction should be
538implemented using the algorithm \medskip\reqeqn{T_{ref} \times
539\frac{S}{R} - T_{sig}} -- removes continuum\bigskip \reqeqn{T_{ref}
540\times \frac{S}{R} - T_{ref}} -- preserves continuum\medskip}
541
542\requirement{Arbitrary reference}{Not started}{2}{}{}{}
543{The user should be able to specify an arbitrarily complex
544reference/source order (which repeats), which can then be used to make
545perform multiple sky subtractions in parallel.}
546
547\requirement{Frequency switching}{Not started}{2}{}{}{}
548{Frequency switched sky subtraction should be supported. (Ref. Liszt,
5491997, A\&AS, 124, 183) }
550
551%\requirement{For wideband multibit sampled data it may be desirable or
552%even required to assume Tsys has a frequency dependency. Appropriate
553%sky subtraction algorithms will need to be investigated.}{3}
554
555\requirement{Pulsar off pulse quotient}{}{}{}{Deferred}{3}
556{For pulsar binned data, the (user specified) off pulse bins can be
557used as the reference spectra. Due to potentially rapid amplitude
558fluctuations, sky subtractions may need to be done on a
559integration basis.}
560
561Multibeam systems can observe in a nodding fashion (called MX mode at
562Parkes), where the telescope position is nodded between scans so that
563the source is observed in turn by two beams and a reference spectra
564for one beam is obtained while the other is observing the target source.
565
566\requirement{Multibeam MX mode}{Not started}{2}{}{}{}
567{For multibeam systems, it must be possible to perform sky subtraction
568with the source and reference in an alternate pair of beams}
569
570\subsection{Baseline removal}
571
572Baseline removal is needed to correct for imperfections in sky
573subtraction. Depending on the stability of the system, the residual
574spectral baseline errors can be small or quite large. Baseline removal
575is usually done by fitting a function to the (user specified) line
576free channels.
577
578\requirement{Baseline removal}{Done1}{}{}{}{}
579{The software must be able to do baseline removal by fitting a n'th
580order polynomials to the line free channels using a least squares
581method.}
582
583\requirement{Standing wave ripples}{Not started}{3}{}{}{}
584{Removal of standing wave ripples should be done by fitting a Sine
585function to the line free channels.}
586
587\requirement{Robust fitting}{Not started}{3}{}{}{}
588{``Robust'' fitting functions should be available, which are more
589tolerant to RFI.}
590
591\requirement{Auto-baseline}{Done1}{}{}{}{}
592{Automatic techniques for baselining should be investigated.}
593
594\subsection{Line Profile Fitting}
595
596The user will want to fit multicomponent line profiles to the data in
597a simple manner and be able to manipulate the exact fitting
598parameters.
599
600\requirement{Gaussian fitting}{Done1}{}{}{}{}
601{The software must be able to do multi-component Gaussian fitting of
602the spectra. The initial amplitude, width and velocity of each
603component should be able to be set by the user and specific values to
604be fit should be easily set.}
605
606\requirement{Chi squared}{Done1}{}{}{}{}
607{The reduce Chi squared (or similar statistic) of the fit should given
608to the user, so that they can easily see if adding extra components
609give a statistically significant improvement to the fit.}
610
611%\requirement{The fit parameters should be stored with the data so that
612%the user can work on multiple data sets simultaneously and experiment
613%with different fitting values. These values should be saved to disk
614%along with the data.}{1}
615
616\requirement{Fit multipol data}{}{}{}{Done1}{}
617{For multiple polarisation data, the individual stokes parameters or
618polarisation products should be fit independently.}
619
620\requirement{Export fits}{Not started}{1}{}{}{}
621{There should be an easy way of exporting the fit parameter from
622multiple spectra, e.g. as an ASCII table.}
623
624\requirement{Constrained fitting}{Not started}{1}{}{}{}
625{It should be also possible to do constrained fitting of multiple
626hyperfine components, e.g. the NH$_3$ hyperfine components. (The
627constraints may be either the frequency separation of the individual
628components or the amplitude ratio etc.)}
629
630\requirement{Edit fits parameters}{Done1}{}{}{}{}
631{It must be possible to alter the line profile fit parameter values by
632hand at any stage.}
633
634\requirement{Fix fit parameters}{Done1}{}{}{}{}
635{It must be possible to ``fix'' particular values of the line profile
636parameters, so that only subset of lines or (say) the width of a line
637is fit.}
638
639\requirement{Arbitrary line fitting}{Done1}{}{}{}{}
640{The software should allow hooks for line profile shapes other than
641Gaussian to be added in the future, possible user specified.}
642
643\requirement{Save fit parameters}{Done1}{}{}{}{}
644{The fitting parameters for functions which have been fit to the data
645(e.g. for baseline removal or Gaussian fits) should be retained as an
646integral part of the data and stored permanently on disk.}
647
648\requirement{Undo subtracted fits}{Not started}{3}{}{}{}
649{It should be possible to ``undo'' functions which have been
650subtracted from the data (e.g. baseline polynomials).}
651
652\requirement{Gaussian line area}{Not started}{1}{}{}{}
653{Optionally the area under a fitted Gaussian should be calculated for
654the user.}
655
656%\makenote{Should it be possible to attach multiple sets of fits to the
657%data (similar to CL tables in classic AIPS), so the user can
658%experiment with different ways of fitting the data?}
659
660%\makenote{Should calculations of rotational temperatures etc be
661%handled when fitting hyperfine components, or should the user be doing
662%this themselves?}
663
664\subsection{Calibration}
665
666The software should handle all basic system temperature (Tsys) and
667gain calibration as well as opacity corrections where relevant. The
668Tsys value should be contained in the rpfits files. The actual
669application of the T$_{\mbox{sys}}$ factor will be applied as part of
670the sky subtraction ($\S$\ref{sec:skysubtraction}). The units of Tsys
671recorded in the data may be either in Jy or Kelvin, which will affect
672how the data is calibrated. The rpfits file does {\em not} distinguish
673if the flux units are Kelvin or Janskys.
674
675\requirement{Gain-elevation}{Done1}{}{}{}{}
676{Gain elevation corrections should be implemented using a elevation
677dependent polynomial. The polynomial coefficients will be telescope
678and frequency dependent. They will also have a (long term) time
679dependence.}
680
681\requirement{User gain polynomial}{Done1}{}{}{}{}
682{The user may wish to supply their own gain polynomial.}
683
684\requirement{K-Jy conversion}{Done1}{}{}{}{}
685{When required by the user, the spectral units must be converted from
686Kelvin to Jansky. At higher (3mm) frequencies this conversion is often
687not applied. The conversion factor is\medskip \reqeqn{\mbox{Flux (Jy)}
688= \frac{T \times 2 k_b \times 10^{26}}{\eta A}},\medskip\\where $k_b$
689is Boltzmann's constant, A is the illuminated area of the telescope
690and $\eta$ is the efficiency of the telescope (frequency, telescope
691and time dependent)}
692
693\requirement{Scale Tsys}{Done1}{}{}{}{}
694{In some cases the recorded Tsys values will be wrong. There needs to
695be a mechanism to scale the Tsys value and the spectrum if the Tsys
696value has already been applied (i.e. a simple and consistent rescaling
697factor).}
698
699\requirement{Opacity}{Done1}{}{}{}{}
700{The data may need to be corrected for opacity effects, particularly
701at frequencies of 20~GHz and higher. The opacity factor to apply is
702given by\medskip\reqeqn{C_o = e^{\tau/cos(z)}}\medskip\\ where $\tau$
703is the opacity and z is the zenith angle (90-El). These corrections
704will generally be derived from periodic ``skydip'' measurements. These
705values will not be contained in the rpfits files, so there should be a
706simple way of the software obtaining them and interpolating in time
707(the user should not {\em have} to type them in, but may want
708to). Reading in an ASCIIs file which contains the skydip data along
709with a time-stamp would be one possibility.}
710
711\requirement{Tsys variation with freq}{Not started}{3}{}{}{}
712{For wideband, multibit observations, the software should have the
713option to handle Tsys which varies across the band. The exact
714implementation will have to be decided once experience is gained with
715the new Mopra digital filterbank. This will affect the sky subtraction
716algorithms (requirement \reqref{ref:skysub}).}
717
718%\makenote{Is the dependence of gain on frequency weak enough for one
719%set of coefficients for each receiver, or is a full frequency dependent
720%set of values needed?}
721
722%\makenote{Should it be possible to read ``correct'' Tsys values from
723%an external ascii file?}
724
725\subsection{Editing \& RFI robustness}
726
727In a data set with many observations, individual spectra may be
728corrupted or the data may be affected by RFI and ``birdies''. The user
729needs to be able to easily flag individual spectra or channels. This
730may affect other routines such as sky-subtraction, as this will
731disrupt the reference/source sequence.
732
733\requirement{Spectra flagging}{Started}{1}{}{}{}
734{The user must be able to set an entire spectra or part thereof
735(individual polarisation, IF etc) as being invalid.}
736
737\requirement{Channel flagging}{Started}{1}{}{}{}
738{The user must be able to indicate an individual spectral point or
739range of spectral points are invalid. This should be applied to an
740individual spectra, or set of spectra.}
741
742\subrequirement{Flagged channel plotting}{???}{1}{}{}{} {When plotting data
743with flagged spectral channels, the plotting should left a gap (blank)
744in the plotted data|}.
745
746\subrequirement{Flagged channel interpolatin}{Not started}{2}{}{}{}
747{When plotting or processing data (e.g. quotient spectra), the users
748should be able to request that the values for flagged data are
749obtained by interpolation from good data either side of the flagged
750points.}
751
752\requirement{Plot average flux vs time}{Not started}{3}{}{}{}
753{The user should be able to plot the average spectral flux across the
754band, or part of the band, as a function of time and interactively
755select sections of data which should be marked as invalid (similar to
756IBLED in classic aips).}
757
758\requirement{Robust Fitting}{Duplicate}{2}{}{}{}
759{Where relevant, fitting routines etc should have the option of
760selecting RFI tolerant (``robust'') algorithms. This will require
761investigating alternate fitting routines other than the least-squares
762approach.}
763
764\requirement{Birdie finder}{Not started}{2}{}{}{}
765{A routine to automatically find birdies or RFI corrupted data and
766indicate the data as invalid would be useful.}
767
768\requirement{Handle flagged data}{Done1}{}{}{}{}
769{Other routines must be able to cope with portions of data which are
770marked as invalid.}
771
772\subsection{Spectra mathematics and manipulation}
773
774A flexible suite of mathematical operations on the spectra should be
775possible. This should include options such as adding, subtracting,
776averaging and scaling the data. For common operations such as
777averaging and smoothing, it must be simple for the user to invoke the
778function (i.e. not to have to start up a complex spectral
779calculator). Where it makes sense, it should be possible to manipulate
780multiple spectra simultaneously.
781
782The spectral manipulations which should be available are:
783
784\requirement{Add spectra}{Done1}{}{}{}{}{Add or subtract multiple spectra.}
785
786\requirement{Average spectra}{Done1}{1}{}{}{}
787{Averaging multiple spectra, with optional weighting based on Tsys,
788integration or rms.}
789
790\subrequirement{Average spectra with velocity shift}{Not started}{1}{}{}{}
791{If the velocity of the spectra to be averaged is different, the data
792should be aligned in velocity. The user should be able to turn this
793feature on or off.}
794
795\requirement{Robust averaging}{Not started}{2}{}{}{}
796{Various robust averaging possibilities (e.g. median averaging,
797clipped means etc) should be possible.}
798
799\requirement{Data re-binning}{Done1}{}{}{}{}
800{Re-sampling or re-binning of the data to a lower (or higher) spectral
801resolution (i.e. change the number of spectral points). The
802re-sampling factor may not necessarily be an integer.}
803
804\requirement{Velocity shift}{Done1}{}{}{}{}
805{It must be possible to shift the data in ``frequency/velocity''. This
806should include channel, frequency and velocity shifts of an arbitrary
807amount.}
808
809\requirement{Spectra smoothing}{Done1}{}{}{}{}
810{Spectral smoothing of the data. Hanning, Tukey, boxcar and Gaussian
811smoothing of variable widths should be possible.}
812
813\requirement{Spectra scaling}{Done1}{}{}{}{}{Scaling of the spectra.}
814
815\requirement{Spectra statistics}{Done1}{}{}{}{}
816{Calculate basic statistical values (maximum, minimum, rms, mean) on a
817range of spectral points. The range may not be contiguous. The
818calculated rms value should be retained with the spectra so it can be
819optionally used for weighted averaging of spectra.}
820
821\requirement{Line flux}{Not started}{2}{}{}{}
822{It must be possible to calculate the flux integral over a range of
823channels. The units should be Jy.km/s (or Kelvin.km/s). The channel
824range for the calculation should be specific via the GUI or CLI.}
825
826\requirement{Line width}{Not started}{2}{}{}{}
827{It must be possible to calculate the numerical ``width'' of a line
828(full width at half maximum type measurement). This should be
829calculated by specifying a channel range and finding the maximum value
830in this range and then finding the interpolated crossing point of the
831data as a user defined fraction of the maximum (default 50\%). The
832profile width and velocity mid-point should then be computed. If the
833profile shape is complex (e.g. double arch) with multiple crossing
834points of the fraction value, the minimum and maximum width values
835should be calculated. There should be the option of using a user
836specified ``maximum value''.}
837
838\requirement{Change rest frequency}{Done1}{}{}{}{}
839{The user must be able to easily change the rest-frequency to which
840the velocity is referenced.}
841
842\requirement{FFT filtering}{Not started}{3}{}{}{}
843{FFT filtering for high- and lowpass filtering and tapering.}
844
845\requirement{FFT to/from autocorrelation function}{Not started}{3}{}{}{}
846{It should be possible to FFT the data to and from power spectra to
847the autocorrelation function.}
848
849\requirement{Cross correlation}{Not started}{3}{}{}{}
850{The user may wish to compute the cross correlation function of two
851spectra. The result should be a standard ``spectra'', which can be
852displayed and analysed using other functions (max, rms etc).}
853
854\requirement{Spectral calculator}{Started}{1}{}{}{}
855{Complex experiment specific processing can often be done using a
856series of the simple of basic functions. A spectral calculator options
857should be added to the CLI to perform a series of manipulations on a
858set of spectra.}
859
860The user may want to perform specific analysis on the data using the
861functionality above, but wish to do the manipulation between two
862polarisations or IFs. Allowing the functions to also, optionally,
863specify specific polarisations or IF would be an implementation and
864interface nightmare. The simplest solution is to allow the data to be
865``split'' into separate spectra.
866
867\requirement{Splice data}{Not started}{1}{}{}{}
868{It must be possible to take multi IF, multibeam or polarisation data
869and split out the individual spectral portions to form self contained
870spectra.}
871
872\requirement{Splice spectral channels}{Not started}{1}{}{}{} {It must be
873possible to select a range of spectral channels to form self contained
874spectra. The channel selection may be different for different IFs.}
875
876\requirement{Merge scantables}{Not started}{1}{}{}{}
877{It must be possible to append rows from one scantable onto another}
878
879\subsection{Polarimetry}
880
881The software must fully support polarmetric analysis. This includes
882calibration and basic conversions. Observations may be made with
883linear or circular feed and the backend may or may not compute the
884cross polarisation products. As such the software must cope with a
885variety of conversions. The software should be able to calculate
886stokes parameters with or without solving for leakage terms.
887
888%\makenote{It is debatable whether stokes I is the sum or average or
889%two dual polarisation measurements.}
890
891\requirement{Support polarimetry}{Done1}{}{}{}{}
892{All functions on the data (calibration, sky subtraction spectral
893mathematics) must support arbitrary, multiple, polarisation (linear,
894circular \& stokes and single, dual \& cross polarisations.}
895
896\requirement{Calculate stokes I}{Done1}{}{}{}{}
897{It must be possible to calculate stokes I from single or dual
898polarisation observations.}
899
900\requirement{Average mixed pol data}{Not started}{2}{}{}{}
901{Average a mixture of dual polarisation and single polarisation data
902and form average stokes I (e.g. for a long observation of a source, in
903which one polarisation is missing for some time.}
904
905\requirement{Calculate stokes}{Done1}{}{}{}{}
906{Full stokes parameters should be obtained from dual pol (linear or
907circular) observations where the cross polarisation products have been
908calculated.}
909
910%\requirement{If the observations used linear polarisations and the
911%cross polarisations were not computed, the source needs to be
912%observed with the feeds set at least 3 different parallactic angles
913%(note that if dual linear feeds are available, 2 orthogonal
914%parallactic angles are obtained at once). The Stokes parameters can be
915%solved using a least squares fit to the equation:
916%\reqeqn{Iu/2 + Ip * cos^2 (PA + p)},\\
917%where PA is the linear feed position angle, p is the polarisation
918%angle, Iu and Ip and the unpolarised and linearly polarised
919%intensity. {\em Stolen from SPC. I need to write this in more useful
920%language. Is this technique likely to be used anymore?.}}{}{}{}{3}
921
922\requirement{Compute stokes V without crosspol}{Not started}{2}{}{}{}
923{If dual circular polarisation measurements are taken, without
924computing the cross products, the software should still be able to
925compute stokes I and V.}
926
927\requirement{Polarisation leakages}{Not started}{3}{}{}{}
928{The software should be able to calculate leakage terms from a
929calibrator source and correct the data either before or after
930conversion to Stokes. (ref. Johnston, 2002, PASA, 19, 277)}
931
932\requirement{Calibrate position angle}{Not started}{3}{}{}{}
933{The software should be able to determine absolute position angle from
934a calibrator source and correct the data either before or after
935conversion to Stokes.}
936
937\requirement{Zeeman splitting}{Not started}{3}{}{}{}
938{Zeeman splitting factors should be derived from (previous) profile
939fitting and the left and right circular polarisations. The velocity
940shift varies linearly with the magnetic field, but the scaling factor
941depends on the molecule and transition. Scaling factor for common
942transitions should be known by the software and the user able to enter
943factors for less common transitions. Correctly identifying Zeeman
944pairs is crucial in getting the correct result. The software should
945attempt to make an initial guess of pairs (based on component velocity
946and width) but make the user confirm and override the pairing if
947required.}
948
949\subsection{Data Selection}
950While the software is running the user will usually have loaded
951multiple (possibly many) spectra each of which may have multiple IFs,
952data from multiple beams and multiple polarisations. The user will
953want to be able to quickly flip from considering one spectra to
954another and, where relevant, want to perform parallel processing on
955multiple spectra at once (e.g. baselining a sequence of on/off
956observations of the same source which will later be averaged
957together).
958
959\requirement{Spectra selection}{Started}{1}{}{}{}
960{The software needs an easy-to-use mechanism to select either
961individual or multiple spectra for viewing, parallel processing
962etc.}
963
964\requirement{Beam/IF selection}{Started}{1}{}{}{}
965{An easy-to-use mechanism to select individual IFs, beams or
966polarisations is needed.}
967
968\requirement{Interactive channel selection}{Duplicate}{1}{}{}{}
969{\label{ref:chansel} The range of spectral points to use for baseline
970removal, statistical calculations, RFI editing, analysis etc must be
971easily set by the user from both the CLI and GUI. From the CLI there
972must be the option of setting the range using a variety of units
973(channel number, velocity, frequency). The selection range will
974probably not be a contiguous set of channels, but many sets of
975disjoint channel ranges. For some tasks (such as baseline subtraction
976and statistical values), the channel range should be retained and be
977available as a plot overlay.}
978
979\requirement{Auto-identify reference spectra}{Not started}{1}{}{}{}
980{When performing sky subtraction on many spectra simultaneously, the
981software should have a mechanism for identifying ``on'' and ``off''
982spectra and automatically selecting the signal and quotient
983spectra. The algorithm needs to cope with on/off/on/off sequences as
984well as off/on/on/off. If an individual quotient spectra has been
985marked as invalid, an alternative should be found. User specified
986preference such as ``closest in time'' to ``first reference before
987source'' should be accommodated.}
988
989\requirement{Select source via header values}{Started}{1}{}{}{}
990{The software should be able to select sets of sources based on simple
991regular expression type filtering (wild cards) on a range of header
992values. }
993
994\subrequirement{Select on source name}{Done1}{1}{}{}{}
995{The use should be able to select dana on source name, e.g G309$*$ or
996G309$*$w}
997
998\subrequirement{Select on molecule}{Done1}{2}{}{}{}
999{The use should be able to select data on molecule name, e.g. NH3$*$.}
1000
1001\subsection{Plugins}
1002
1003\requirement{Plugins}{Started}{1}{}{}{}
1004{The package should support ``plugins'', user definable
1005functions for specific processing. The plugin code must have full
1006access (read/write) to the spectra data and headers.}
1007
1008\requirement{Plugins can reduce dimensions}{Not started}{2}{}{}{}
1009{Plugins need to be able to create ``derived'' spectra with reduced
1010  dimensions (i.e. less beams, IFs, polarisations or spectral
1011  channels)}
1012
1013\requirement{Simulated data}{Not stated}{3}{}{}{}
1014{The user should be able to create new spectra which the software
1015treats the same as the original data. This includes full specification
1016of the header items.}
1017
1018\subsection{Pipelining}
1019
1020\requirement{Pipelining}{Done1}{}{}{}{}
1021{Some sort of pipelining mode is required. This would involve doing a
1022quotient spectra, applying appropriate calibration and possibly
1023fitting a Gaussian to any lines present.}
1024
1025\subsection{Methanol Multibeam Survey}
1026
1027The software may need to support reduction of data from the methanol
1028multibeam project. If so the pipelining will need to be flexible and
1029powerful enough to support this.
1030
1031\subsection{Miscellaneous functionality}
1032
1033\requirement{Position fitting}{Not started}{2}{}{}{}
1034{The software should be able to take a simple ``grid'' of observations
1035(normally a set of observations in a cross pattern on the sky) and,
1036for a subset of channels, fit the position of the emission. The fit
1037positions should be either plotted on the screen or exported in a
1038simple ASCIIs form.}
1039
1040\requirement{Kinematic distance}{Not started}{3}{}{}{}
1041{The kinematic distance of a source should be calculated using basic
1042Galactic rotation models. Multiple Galactic rotation models must be
1043supported and a mechanism for easily adding more.}
1044
1045\requirement{Plot sigma errors on spectra}{Not started}{3}{}{}{}
1046{For 1420 MHz observations of HI, the rms (Tsys) values vary
1047significantly across the band. The software should be able to compute
1048the rms as a function of frequency across the spectra from the
1049off-pulse data and then be able to plot n-sigma error bars on the
1050spectra.}
1051
1052\requirement{Simple Mapping}{Not started}{3}{}{}{}
1053{It should be possible to take a selection of calibrated spectra which
1054are then passed to the ``Gridzilla'' program to produce an image
1055cube. Analysis of this cube would be done using external programs
1056(e.g. Miriad, aips++)}
1057
1058\section{Help}
1059
1060\requirement{Built in help}{Done1}{}{}{}{}
1061{There should be built-in and web-based documentation, which can be
1062easily kept up-to-date}
1063
1064\requirement{Cookbook}{Done1}{}{}{}{}
1065{A short and simple end-to-end cookbook for basic data analysis should
1066be available.}
1067
1068\requirement{Programmers Documentation}{Not started}{2}{}{}{}
1069{There should be documentation aimed at astronomers wishing to write
1070there own scripts, detailing the methods needed and how to get low
1071level access to the data.}
1072
1073\section{Data and meta-data}
1074
1075\requirement{Handle multi dimensional data}{Done1}{}{}{}{}
1076{The software must be capable of handling multi-IF (potentially dozens
1077of IFs) and multi-beam data with arbitrary polarisation (e.g. single
1078pol, dual pol, full stokes etc).}
1079
1080\requirement{Handle pulsar data}{Deferred}{}{}{}{}
1081{The software should handle pulsar binned data for pulsar absorption
1082experiments.}
1083
1084\subsection{History}
1085
1086\requirement{History}{Done1}{}{}{}{}
1087{A user viewable history of data processing steps should be kept as
1088part of the data. Where possible this should be retained when data is
1089imported from other packages.}{
1090
1091\requirement{Convert history to script}{Not started}{2}{}{}{}
1092{It should be possible to use the history information to create
1093template pipeline scripts for batch processing.}
1094
1095\subsection{Multiple IFs}
1096
1097\requirement{Transparently handle multi-IF data}{Done1}{}{}{}{}
1098{If multiple IFs are present (currently Tidbinbilla can produce two
1099IFs and the new wideband spectrometer for Mopra may have dozens of
1100IFs) the software should handle the data transparently. Potentially
1101each IF may have a significantly different sky frequency and be
1102observing a different molecule or transition with a different rest
1103frequency. From the users point of view, simultaneously obtained IFs
1104should be kept within the same ``container'' (not split into a myriad
1105of separate ``container'').}
1106
1107\requirement{IFs with different number of spectral channels}{Not started}{2}{}{}{}
1108{Separate IFs may have a different number of spectral channels.}
1109
1110\subsection{Multibeam}
1111
1112\requirement{Handle multibeam data}{Done1}{}{}{}{}
1113{Basic handling of multibeam data should be possible (ie in general
1114each beam will be treated as a separate observation, but all within
1115the same container). The user should be able to view or process either
1116individual beams or all beams in parallel.}
1117
1118\requirement{Multibeam simultaneous reference/signal}{Not started}{3}{}{}{}
1119{The use of a single beam observing a source and the rest of the beams
1120as reference beams for sky-subtraction should be investigated.}
1121
1122\subsection{Robust fitting}
1123
1124\requirement{Retain raw correlator integrations}{Done1}{}{}{}{}
1125{If robust fitting using median filtering is used, then the individual
1126integrations from the observations should {\em not} be averaged when
1127the data is imported, but retained within a single
1128container. Inspection of this data should be optionally of the
1129averaged or individual data.}
1130
1131\subsection{Coordinate frames and units}
1132
1133\requirement{Flexible coordinate frames}{Done1}{}{}{}{}
1134{Coordinate frames and unit selection and handling needs to be
1135flexible and relatively transparent to the user (i.e. if the users
1136preference is for LSRK velocities, they do not need to worry about the
1137reference frame in which the data was observed).}
1138
1139\requirement{Specific reference frames}{Done1}{}{}{}{}
1140{At a minimum the following reference frames and conventions should be
1141handled: \setlength{\parindent}{0pt}
1142
1143\smallskip
1144\anitem{Position}{(RA,Dec) in J2000 \& B1950 (as well as other
1145  arbitrary epochs), Galactic, (Az,El).}
1146
1147\anitem{Frequency}{Velocity (Topocentric, Geocentric, Barycentric,
1148    Heliocentric, kinematical LSR, dynamical LSR, Rest), Frequency
1149    (MHz, GHz), channel number.}
1150
1151\anitem{Velocity}{ Optical, Radio, Relativistic.}
1152
1153\anitem{Flux}{ Jansky, Kelvin (mJy etc).}}
1154
1155\requirement{Data units and frames properly labelled}{Done1}{}{}{}{}
1156{All data should be internally labelled with the appropriate
1157 coordinate frame and units. If this information is ambiguous for some
1158 reason, it should be set when the data is imported and the user
1159 should not have to worry about it again.}
1160
1161\requirement{Current reference frames clear to user}{Done1}{}{}{}{}
1162{It should be clear to the user what coordinate frame (velocity,
1163position etc) the data is being presented as.}
1164
1165\requirement{Positional Reference Frame}{Not started}{1}{}{}{} {The user
1166should be able to specify the reference frame (Epoch,Equinox etc) for
1167which is used for exporting data, simple mapping output etc. J2000,
1168B1950 and Galactic should be supported. The default should be the frame
1169in what the data was recorded.}
1170
1171\requirement{Non-conformist Positional Reference Frame}{Not started}{2}{}{}{}
1172{Non-confirmist positional frames such as Az-El should be supported.}
1173
1174\subsection{Meta-data}
1175
1176A comprehensive set of header data should be read from the input data
1177files. In general all meta-data available in the rpfits file should be
1178retained. The user may wish to enter some specific values by hand.
1179
1180\requirement{View and edit header data}{Started}{1}{}{}{}
1181{All header data should be viewable and editable by the user. This
1182includes changes such as scaling the given Tsys values.}
1183
1184\requirement{Missing header data}{Done1}{}{}{}{}
1185{Missing header data should be handled gracefully, i.e. the software
1186should fill the values with ``blanks'' and be able to continue to
1187process the data if possible.}
1188
1189\requirement{User add missing header data}{Not started}{2}{}{}{}
1190{The user must be able to add missing header data, which is not
1191present in the RPFITs file. It must be possible to add the same header
1192data to multiple scans simultaneously.}
1193
1194\extendedrequirement{Itemised header items}{Started}{1}{}{}{}
1195{The following header data would be required per scan:
1196\begin{itemize}
1197  \item Source name
1198  \item Scan type (signal or reference)
1199  \item Integration time
1200  \item Scan length (actual time of observation, $\ge$ integration time)
1201  \item Telescope
1202  \item UT time and date of observation
1203  \item Telescope elevation of observation
1204  \item Parallactic angle
1205  \item Beam size
1206  \item Scan ID
1207  \item Observer
1208  \item Project
1209  \item Polarisation
1210  \item Receiver
1211  \item Telescope coordinates
1212  \item Weather info (temperature, pressure, humidity)
1213  \item User axis display preference (LSR velocity, frequency etc).
1214\end{itemize}
1215}
1216
1217\extendedrequirement{IF header items}{Started}{1}{}{}{}
1218{\label{req:if}
1219The following header data is required for each IF, beam etc:
1220\begin{itemize}
1221\item Source coordinates and coordinate frame
1222\item Frequency/velocity axis definition and type
1223\item System Temperature
1224\item Beam number
1225\item Molecule rest frequency$^\dagger$
1226\item Molecular name$^\dagger$
1227\item Molecular transition$^\dagger$
1228\item Molecular formula$^\dagger$
1229\end{itemize}
1230}
1231
1232\requirement{Pretty print formula}{Not started}{3}{}{}{}
1233{The molecular formula could be stored with embedded superscripted and
1234subscripted symbols for ``pretty'' printing on the plotted, but
1235printed in plain text on the CLI or in ASCIIs output}
1236
1237Some molecular line rest-frequencies are close enough that two or more
1238molecules or transitions may be observed in a single IF. Typical
1239examples include the 1665/1667~MHz OH maser pair, NH$_3$ transitions,
1240and many observations in the 3~mm band.
1241\vspace{\parskip}
1242
1243\requirement{Multiple rest frequencies per IF}{Not started}{2}{}{}{}
1244{The software should optionally support multiple lines per IF, by
1245storing a set of rest frequencies per IF, rather than a single
1246value. The header values in requirement \reqref{req:if} marked with a
1247$\dagger$ would all have to be stored as an array of values rather
1248than a scalar. A simple mechanism must be possible to change the
1249currently ``active'' rest-frequency.}
1250
1251\section{Installation}
1252
1253\requirement{Easy installation}{Started}{1}{}{}{}
1254{It must be possible for astronomers to install the software at their
1255own institute with either a moderate amount of OS experience or some
1256help from the local system administrators. This includes installation
1257on a central ``NFS'' server as well as local desk-tops.}
1258
1259\requirement{Linux Support}{Started}{1}{}{}{}
1260{The software must run on major flavours of Linux
1261(Fedora/Redhat, Debian, etc).}
1262
1263\subrequirement{Solaris Support}{Started}{1}{}{}{}
1264{The software must run on Solaris}
1265
1266\requirement{Run on laptop}{Done1}{}{}{}{}
1267{It must be possible for users to install the software on their
1268laptops and run with no network connection.}
1269
1270\requirement{Easy upgrade}{Done1}{}{}{}{}
1271{It should be relatively easy to upgrade to the latest version of the
1272software.}
1273
1274\requirement{MacOS/X support}{Not started}{1}{}{}{}
1275{The software should run on MacOS/X}
1276
1277\requirement{Windows support}{Not started}{3}{}{}{}
1278{It would be desirable for the software to run on Windows.}
1279
1280\section{Known Issues}
1281\label{sec:issues}
1282The following issue are known problems with the data from ATNF
1283telescopes, which probably should be automatically corrected for if at
1284all possible. The best place to do this is while loading the data.
1285
1286\subsection{General}
1287
1288\begin{itemize}
1289  \item All polarisations in the RPFITS files are labelled as
1290  XX/YY. These need to be relabelled as LL/RR when appropriate.
1291\end{itemize}
1292
1293\subsection{Mopra}
1294
1295\begin{itemize}
1296\item Data obtained in 2002 \& 2003 (and probably before) have an
1297  error in the frequency headers (this may be corrected by an external
1298  program). \makenote{Nedd Ladd}
1299
1300\item The (RA,Dec) positions in the data file are in date coordinates
1301  not J2000. This causes problems for packages like Class when
1302  averaging the data. \makenote{Maria Hunt}
1303
1304\item It is possible Tsys calibration is inconsistent currently.
1305  \makenote{Cormac Purcell??}
1306
1307\end{itemize}
1308
1309\subsection{Parkes}
1310
1311\begin{itemize}
1312\item For pulsar data the automatic gain control is disabled. This
1313means the nominal Tsys measurement does not change and Tsys per
1314integration is encoded in a non-standard way. \makenote{Simon
1315Johnston}
1316\end{itemize}
1317
1318\subsection{Tidbinbilla}
1319
1320\begin{itemize}
1321\item All 20-GHz data is calibrated in flux units of Kelvin.
1322\item Elevation is not written into the rpfits file.
1323\end{itemize}
1324
1325
1326\section{Requirements Matrix}
1327
1328\begin{longtable}{|l|l|l|c|}
1329
1330\input{reqsum.tex}
1331
1332\end{longtable}
1333
1334
1335\end{document}
Note: See TracBrowser for help on using the repository browser.