source: trunk/admin/requirements2.tex @ 644

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

Typo

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