IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Oct 13, 2004, 7:06:32 PM (22 years ago)
Author:
eugene
Message:

design work towards PDR

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/doc/design/ippSDRS.tex

    r1399 r2114  
    1 %%% $Id: ippSDRS.tex,v 1.4 2004-08-06 19:06:01 eugene Exp $
     1%%% $Id: ippSDRS.tex,v 1.5 2004-10-14 05:06:31 eugene Exp $
    22\documentclass[panstarrs]{panstarrs}
    33
     
    3636\pagenumbering{arabic}
    3737
    38 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    39 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    40 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    41 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    42 
    4338\section{Scope}
    44 
    45 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    46 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    47 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4839
    4940\subsection{Identification}
     
    5445Pan-STARRS 1 (PS-1), the initial demonstration telescope to be
    5546constructed on Haleakala by Jan 2006. 
    56 
    57 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    58 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    59 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6047
    6148\subsection{System Overview}
     
    7259roughly 2 years.
    7360
    74 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    75 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    76 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    77 
    7861\subsection{Document Overview}
    7962
     
    8568Open Issues and TBDs in this document are marked \tbd{in bold, red
    8669type with surrounding square brackets}.
    87 
    88 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    89 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    90 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    91 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    9270
    9371\DocumentsInternalSection
     
    10078\DocumentsEnd
    10179
    102 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    103 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    104 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    105 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    106 
    107 \section{System Design Decisions}
     80\section{Subsystem Overview}
     81
     82The Pan-STARRS Image Processing Pipeline (IPP) performs the image
     83processing and data analysis tasks needed to enable the scientific use
     84of the images obtained by the Pan-STARRS telescopes.  The primary
     85goals of the IPP are to process the science images from the Pan-STARRS
     86telescopes and make the results available to other systems within
     87Pan-STARRS.  It also is responsible for combining all of the science
     88images in a given filter into a single representation of the
     89non-variable component of the night sky called the ``Static Sky''.  To
     90achieve these goals, the IPP also performs other analysis functions to
     91generate the calibrations needed in the science image processing and
     92to occasionally use the derived data to generate improved astrometric
     93and photometric reference catalogs.  It also provides the
     94infrastructure needed to store the incoming data and the resulting
     95data products.
     96
     97The IPP inherits lessons learned, and in some cases code and prototype
     98code, from several other astronomy image analysis systems, including
     99Imcat (Kaiser), the Sloan Digital Sky Survey (REF), the Elixir system
     100(Magnier \& Cuillandre), and Vista (Tonry).  Imcat and Vista have a
     101large number of robust image processing functions.  SDSS has
     102demonstrated a working analysis pipeline and large-scale database
     103system for a dedicated project.  The Elixir system has demonstrated an
     104automatic image processing system and an object database system for
     105operational usage.
     106
     107The users of the IPP output are all systems internal to the Pan-STARRS
     108project.  They consist of the Transient Science Client, which will
     109receive the detections of transient objects on short time-scales; the
     110Moving Object Processing System (MOPS), which will receive the
     111detections of non-stationary transient objects on day-to-week
     112timescales; and the Published Science Products Subsystem (PSPS), which
     113will receive all data products of interest to the outside world, and
     114will act as the long-term archive and publishing clearinghouse.
     115
     116An important operational choice for the IPP is the decision not to
     117attempt to save all raw data.  Once the IPP is running in a standard
     118operational mode, data will be processed by the pipeline and deleted
     119when it is no longer needed.  Raw images will only be saved for a
     120short period to allow tests and quality assurance, and potentially to
     121allow systems which study transient phenomena to return to recent data
     122for closer inspection.  In general, during normal operations, raw
     123science images will be deleted after $\sim$1 month.
     124
     125The primary IPP hardware system on which the software operates will
     126not be located at the summit.  Instead, because of thermal, power, and
     127space constraints, the hardware will likely be located in a facility
     128off the mountain.  A subset of processing tasks may eventually be
     129assigned to machines at the summit if justified by the savings in data
     130transfer time and cost.
     131
     132\subsection{Analysis Tasks and Stages}
     133
     134Specific programs are required to perform the processing steps listed
     135above.  These can be divided into well-defined analysis stages, each
     136of which operates on a particular unit of data, such as a single OTA
     137image or a collection of astronomical objects.  Analysis tasks
     138representing the different analysis stages are performed on the IPP
     139computer cluster.  Note the distinction between the generic analysis
     140{\em stage} and a specific analysis {\em task}.  An analysis stage
     141represents a type of analysis which is performed, such as the basic
     142image calibration and object detection analysis.  An analysis task is
     143a particular realization of an analysis stage, e.g., the analysis of
     144OTA number 61 from exposure 654321 to produce a specific set of output
     145data products.  The analysis stages are discussed in detail in
     146Section~\ref{IPP:AnalysisStages}.
     147
     148Depending on the particular stage, it may process individual images,
     149collections of images, or on derived data products.  Because of the
     150nature of the image data, many of the analysis stages can be run in
     151parallel because, for example, the analysis of a chip in one image
     152does not depend on the results from another chip.
     153
     154\subsection{Architectural Components}
     155
     156In order to achieve the required functionality, the IPP provides an
     157infrastructure within which the Analysis Stages above are exectuted.
     158We have divided the IPP software infrastructure into a number of
     159clearly-defined architectural software units, listed as follows:
     160
     161\begin{itemize}
     162
     163\item {\bf Image Server:} This component is a large data store for all
     164  images used by the IPP, including the raw images from the telescope,
     165  the master calibration images, the reference static-sky images, and
     166  any temporary image data products produced by the IPP.  The Image
     167  Server accepts the incoming data and stores it until it is no longer
     168  needed by other portions of the IPP.  The Image Server is not
     169  restricted to imaging data: it is capable of storing any large data
     170  files which are not well-suited for inclusion in a more structured
     171  relational database and for which access needs to be widely
     172  available beyond the individual process which created the file.
     173
     174\item {\bf Astrometry \& Photometry Database (AP DB):} This component
     175  stores and manipulates astronomical objects detected in various
     176  images, as identified above, including individual measurements of
     177  objects on the images, the summary information about those objects,
     178  and reference object data.  It also provides mechanisms for users to
     179  query and manipulate the objects and detections.
     180
     181\item {\bf Metadata Database:} This component stores the data which is
     182  not directly related to images or astronomical objects, but which is
     183  needed to perform the IPP analyses.  The metadata may include the
     184  summary weather information for each night, or details about the
     185  filters, camera, telescopes, etc. 
     186
     187\item {\bf IPP Controller:} In order to perform the analysis stages
     188  required by the IPP, it is necessary to use distributed computing
     189  processes on a large number of computers.  The IPP Controller
     190  manages the collection of analysis tasks performed on these
     191  machines.
     192
     193\item {\bf IPP Scheduler:} This component is a decision-making
     194  mechanism which guides the operation of the IPP.  It evaluates the
     195  currently available collection of data, identifies the necessary
     196  analysis, and assigns the analysis tasks to the IPP Controller.
     197
     198\end{itemize}
     199
     200The relationship between these software units is shown in
     201Figure~\ref{overview}.  This figure also shows the interactions
     202between the IPP and other Pan-STARRS systems.  The architectural
     203components are discussed in detail in
     204Section~\ref{IPP:ArchComponents}.
     205
     206\begin{figure}
     207\begin{center}
     208\resizebox{6in}{!}{\includegraphics{pics/IPPoverview}}
     209\caption{ \label{overview} IPP System Overview}
     210\end{center}
     211\end{figure}
     212
     213\subsection{IPP Hardware Organization}
     214
     215\begin{figure}
     216\begin{center}
     217\resizebox{4.5in}{!}{\includegraphics{pics/IPPhardware}}
     218\caption{ \label{hardware} IPP Hardware Organization}
     219\end{center}
     220\end{figure}
     221
     222The IPP needs substantial computer resources, both in terms of
     223computational power and in terms of data storage and network
     224bandwidth.  The IPP requires relatively large amounts of data storage
     225space, primarily for the image data.  Image data is organized in two
     226categories.  First, there is the per-OTA data -- data associated with
     227specific OTAs, including the raw images, the calibration images, and
     228temporary processed images at various stages.  Second, there is the
     229data associated with the static sky imagery, which is in turn
     230organized into smaller sky-cell units.  In addition to image data,
     231there are the somewhat smaller data entities of the Metadata Database
     232and AP Database.
     233
     234The computer hardware is organized into nodes which provide both data
     235storage and computational resources.  The data storage nodes are
     236divided into three classes: those which deal with the per-OTA image
     237data, those that provide the storage for the static sky images, and
     238those that provide the storage for the other data systems, the
     239Metadata Database and the AP Database.  In addition, the computational
     240tasks related to Phase 2 take place on the per-OTA storage nodes and
     241the Phase 4 computation takes place on the static sky storage nodes.
     242
     243Figure~\ref{hardware} shows our basic concept for the hardware
     244organization for the IPP.  This diagram shows the two types of compute
     245nodes: OTA-level processing and storage nodes (dominated by Phase 2)
     246and static sky processing and storage nodes (mostly Phase 4).  Also
     247shown are two switches which divide the network into OTA and
     248Static-Sky portions.  In such an organization, the interswitch
     249communication must meet the throughput needs between these network
     250portions.  The additional data systems (Metadata Database and AP
     251Database) are also shown.
     252
     253%%% needs some work / move around elsewhere
     254\subsection{System Interfaces}
     255
     256\paragraph{MOPS and other Client Science Pipelines}
     257
     258The Client Science Programs (CSPs) and the Moving Object Processing
     259System (MOPS) are not a part of the IPP, but are external systems.  We
     260include them here to show the required interfaces.
     261
     262The CSPs and MOPS may query the Pixel DB, the Metadata DB and the
     263Object DB.  In addition, they may write certain fields to the object
     264DB (e.g., the external identifiers and class of object) as they
     265process objects, and they may retrieve pixel data from the Nodes.
     266
     267Since ``CSPs'' is a vague term, we now give some examples which may
     268help to illustrate the functionality.
     269
     270One example of a CSP is a web front-end to retrieve (published) images
     271and objects from the Pixel DB and Object DB.
     272
     273Another example would be a program interested in searching for
     274transiting extrasolar planets.  Such a program may periodically poll
     275the Metadata DB for new processed observations in its region of
     276interest (such as the Galactic Plane), retrieve the object photometry
     277of all high signal-to-noise stars in the processed observations, and
     278attempt to identify a planetary transit in progress.
     279
     280Yet another example would be a Stationary Transient Object Pipeline,
     281which would periodically poll the Metadata DB for new processed
     282observations, and query the Object DB for variable sources which were
     283identified twice (so that they are not moving objects).
     284
     285\subsection{System Design Decisions}
    108286
    109287Since \PS{} is a survey project, all data from the telescopes will be
     
    128306System (MOPS), and potentially other client science pipelines.
    129307
    130 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    131 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    132 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    133 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    134 
    135 \subsection{System Overview}
    136 
    137 The \PS{} Image Processing Pipeline (IPP) consists of a collection of
    138 computer hardware and software organized to perform the tasks required
    139 to process images from the \PS{} telescopes.  The primary goal of the
    140 IPP is to process the science images from the \PS{} telescopes and
    141 make the results available to other systems within \PS{}.  To achieve
    142 this goal, the IPP must also perform other analysis functions to
    143 generate the calibrations needed in the science image processing and
    144 to occasionally use the derived data to generate improved astrometric
    145 and photometric reference catalogs.
    146 
    147 In order to meet these broad goals, the IPP must have the following
    148 capabilities:
     308\section{System Design : Architectural Components}
     309
     310\subsection{IPP Image Server}
     311
     312\begin{figure}
     313\psfig{file=pics/ImageServer,width=15cm,angle=0}
     314\caption{The components of the IPP Image Server.}
     315\label{fig:ImageServer}
     316\end{figure}
     317
     318The IPP Image Server is a repository for all images and other large
     319data files required by the IPP.  In addition, it provides tools for
     320managing the distribution of these large data files and for accessing
     321the files.  Data files stored by the IPP Image Server include the raw
     322images, the calibration images, intermediate processing stage images
     323as needed, final processed images, difference images, image
     324subsections, and any large non-imaging datafiles needed by the IPP.
     325The IPP Image Server must retain the files for as long as they are
     326needed by the IPP.
     327
     328The IPP Image Server is a parallel storage system.  It stores data
     329across a collection of computer nodes, each with their own data
     330storage resources.  Any single file is stored on only a single
     331computer and storage system.  In order to achieve the data throughput
     332requirements, the IPP Image Server may distribute the images across
     333the processor nodes in an organized fashion, i.e.\ associating
     334specific machines with specific detectors.  It is not the
     335responsibility of the IPP Image Server to determine which computer
     336should be associated with a specific data concept (Chip / region of
     337sky), but it must enable the association of a particular file with a
     338particular machine.
     339
     340There are three data concepts relevant to the IPP Image Server:
    149341\begin{itemize}
    150 \item Store a large amount of image data, and other derived data
    151 products (metadata and extracted objects);
    152 \item Provide access mechanisms to these data products (both to the
    153 subsystems of the IPP and in some cases to external users);
    154 \item Continuously accept new image data and metadata from the
    155 telescope system;
    156 \item Execute various analysis processes using these data products;
    157 and
    158 \item Provide the decision-making logic needed to guide the data
    159 processing, and to automatically launch the data processing tasks on
    160 an appropriate timescale.
     342\item {\bf storage object} This represents a single, unique data
     343  entity the Image Server.
     344
     345\item {\bf instance} A single copy of the storage object in the Image
     346  Server.  In general, given storage object may have several instances
     347  in the Image Server, normally on different computer nodes.
     348
     349\item {\bf file ID} This is the identifier of a particular storage
     350  object in the Image Server.  The file ID is simply a unique string,
     351  equivalent to the filename in a UNIX file system.
    161352\end{itemize}
    162 The IPP therefore includes subsystems which provide the data storage
    163 framework, the data analysis framework, and the scheduling of the
    164 analysis processes.  The data storage subsystems also provide
    165 interface mechanisms to the external \PS{} systems.
    166 
    167 The IPP architecture can be viewed in several possible ways.  We first
    168 consider the software architecture components needed by the IPP.
    169 These subsystems provide the infrastructure for the data storage and
    170 the data processing.  Next, we consider the analysis pipelines which
    171 make up the major processing tasks that must be performed by the IPP.
    172 Finally, we consider the hardware organization required to efficiently
    173 and cost-effectively achieve the necessary computing and storage
    174 requirements.
    175 
    176 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    177 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    178 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    179 
    180 \subsection{System Architecture}
    181 
    182 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    183 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    184 
    185 \subsubsection{Architectural Components}
    186 
    187 In Figure~\ref{fig:functionalities} we show the functionality of the
    188 IPP.
    189 
    190 The Observatory and Telescope System (\textbf{OATS}) system at the
    191 summit periodically produces metadata (e.g.\ weather measurements,
    192 observations completed) and pixel data (the image pixels from the
    193 cameras).  The \textbf{Pollster} regularly (e.g., twice per minute)
    194 polls OATS for the existence of new data.  If new data exists, the
    195 Pollster writes it to the \textbf{Metadata DB}, which maintains a
    196 table of observations that have been obtained and whether these
    197 observations are reduced, not reduced, or being reduced.  The
    198 \textbf{Scheduler} regularly (e.g., twice per minute) polls the
    199 Metadata DB for observations that match predefined criteria that are
    200 required to run reduction processes.  For example, the Phase 1
    201 processing requires that Phase 0 has been run on a focal plane
    202 metadata, and also requires that the observations are available and
    203 have not yet been processed.  If the criteria are met, the appropriate
    204 stage is passed to the \textbf{Localiser} which, checks the
    205 \textbf{Pixel DB} to determine if the stage should be performed on a
    206 particular node.  The Localiser passes the reduction stage to be
    207 processed, along with the preferred (or mandatory) node that should
    208 execute the reduction stage, to the \textbf{Controller}.  It is the
    209 Controller's responsibility to maintain the list of reduction stages
    210 to be processed and execute these stages on the \textbf{Nodes}.  The
    211 Nodes may retrieve the pixel data from OATS, they write to the Pixel
    212 DB the location of the products of the reduction and report their
    213 completion to the Controller.
    214 
    215 External systems, such as the Moving Object Processing System
    216 (\textbf{MOPS}) and other Client Science Pipelines (\textbf{CSPs})
    217 read the Metadata DB and the Object DB.  They may also write to the
    218 Object DB the classification of particular objects (e.g., identify an
    219 object as an asteroid).  Also, the MOPS and CSPs may also query the
    220 Pixel DB for the location of pixel data and copies data from the
    221 Nodes.
    222 
    223 \begin{figure}
    224 \psfig{file=pics/IPPfunctionalities,width=15cm,angle=0}
    225 \caption{The functionalities of the architectural design.  See the text
    226 for further explanation.}
    227 \label{fig:functionalities}
    228 \end{figure}
    229 
    230 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    231 
    232 \paragraph{OATS}
    233 
    234 The Observatory And Telescope System (OATS) is not a part of the IPP,
    235 but interfaces are required with it in order to allow the Pollster to
    236 get the list of observations not in the Metadata DB, and the nodes to
    237 retrieve pixel data.  Also, the Scheduler may report the need for new
    238 calibration data.
    239 
    240 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    241 
    242 \paragraph{Pollster}
    243 
    244 The Pollster is a program that polls OATS at regular intervals for the
    245 existence of observations not contained in the Metadata DB.  New
    246 weather and image metadata are written to the Metadata DB.
    247 
    248 There is no reason why this architectural component cannot be
    249 contained within another (such as the Scheduler), but it is shown here
    250 as separate for simplicity.
    251 
    252 A polling model is adopted so that OATS' interface may be kept as
    253 simple as possible --- OATS should not be concerned with whether the
    254 IPP has received notifications.  Under this polling model, it is
    255 specifically the responsibility of the IPP to retrieve from OATS the
    256 metadata that is not not already in the Metadata DB.
    257 
    258 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    259 
    260 \paragraph{Metadata DB}
    261 
    262 The Metadata DB stores and maintains the metadata\footnote{Note that
    263 metadata is any data which is not pixel data or object data.},
    264 including the list of images taken by the telescope system and whether
    265 these images have been processed.  The Metadata DB is regularly polled
    266 by the Scheduler to determine what images are ready to be processed.
    267 
    268 Both the Scheduler and the Pollster update the status of the Metadata
    269 DB --- the Pollster as new images become available at the Summit, and
    270 the Scheduler as images are processed.
    271 
    272 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    273 
    274 \paragraph{Scheduler}
    275 
    276 The Scheduler is responsible for determining the processing stages
    277 that are required to be run on any data.  Examples of these processing
    278 stages are ``Copy the pixels from the summit'' and ``Run Phase 2
    279 processing on chip 12 of exposure 123''.
    280 
    281 Processing stages to be executed are passed to the Localiser, which
    282 returns to the Scheduler the list of processing stages with node
    283 assignments to each of the stages.  This list of processing stages
    284 with node assignments is passed to the Controller for execution.
    285 
    286 Processing stages which have executed are reported by the Controller,
    287 which updates the Metadata DB appropriately.
    288 
    289 The Scheduler may also interact with OATS to inform it of the need
    290 for new calibration data.
    291 
    292 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    293 
    294 \paragraph{Localiser}
    295 \label{sec:localiser}
    296 
    297 It is the duty of the Localiser to assign processing stages to
    298 particular nodes.  This may be in order to optimise performance by
    299 distributing the stages across the nodes, or in the simplest possible
    300 case, it may make no recommendation upon the node which performs a
    301 particular stage.
    302 
    303 The Localiser may query the Pixel DB in order to identify the location
    304 of calibration data that may be needed for the processing stage to run
    305 (and in all likelihood, assign the processing stage to the same node as
    306 that which holds the calibration data).
    307 
    308 The Localiser may either demand or request that a stage is performed on
    309 a particular node, or make no recommendation, and passes the processing
    310 stage back to the Scheduler.
    311 
    312 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    313 
    314 \paragraph{Controller}
    315 
    316 The Controller's job is to control the execution of the processing
    317 stages on the nodes.  It is passed stages by the Localiser, and
    318 executes them on the appropriate nodes.  It must detect whether a node
    319 executing a processing stage has died, and re-execute the stage on an
    320 alternate node.
    321 
    322 The completed stages are reported back to the Scheduler.
    323 
    324 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    325 
    326 \paragraph{Pixel DB}
    327 \label{sec:pixeldb}
    328 
    329 The Pixel DB is responsible for storing and maintaining the location
    330 of pixel data in the IPP, including the raw images from the telescope,
    331 the master calibration images, the reference static-sky images, and
    332 any temporary image data products produced by the IPP.  It provides
    333 this information upon request to the Localiser. 
    334 
    335 Note that this design assumes that the pixel data will be stored on
    336 the same nodes that will be doing the processing.
    337 
    338 The Pixel DB will be periodically ``published'' as the quality of the
    339 data is assured.  The external world will only have access to the
    340 published version of the Pixel DB.
    341 
    342 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    343 
    344 \paragraph{Nodes}
    345 
    346 The Nodes perform the grunt work of executing the processing stages as
    347 directed by the Controller.  When the processing stage has completed,
    348 they report back to the Controller.
    349 
    350 They may retrieve pixel data from OATS (the Summit) and write it to
    351 local disk when directed to do so by the Controller.  They also may
    352 access the Metadata DB to read configurations, weather information
    353 etc, and to write summary statistics etc.  They may also access the
    354 Object DB to read objects of interest, and to write objects from the
    355 processing stage.
    356 
    357 As they write products, the Nodes register with the Pixel DB that they
    358 have written the requested output (so that the Pixel DB is aware that
    359 the data has been written and is not merely scheduled to be written).
    360 The Nodes do not need to read from the Pixel DB, since everything
    361 (where to read input pixels from, where to write output pixels to) is
    362 specified by the Localiser.
    363 
    364 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    365 
    366 \paragraph{Object DB}
    367 
    368 The Object DB is a facility to store all of the information about
    369 astronomical objects, including individual measurements of objects on
    370 the images, the summary information about those objects, and reference
    371 object data\footnote{Note that this is (possibly) a separate entity
    372 from the object database being developed by SAIC.}.
    373 
    374 The Nodes, CSPs and MOPS may read objects from the Object DB, and the
    375 Nodes may write objects (either new objects or updates), and the CSPs
    376 and MOPS may write certain fields of objects (e.g., the external
    377 identifiers and class of object).
    378 
    379 The Object DB will be periodically ``published'' as the quality of the
    380 data is assured.  The external world will only have access to the
    381 published version of the Object DB.  The published version of the
    382 Object DB will likely be the DB being developed by SAIC.
    383 
    384 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    385 
    386 \paragraph{CSPs and MOPS}
    387 
    388 The Client Science Programs (CSPs) and the Moving Object Processing
    389 System (MOPS) are not a part of the IPP, but are external systems.  We
    390 include them here to show the required interfaces.
    391 
    392 The CSPs and MOPS may query the Pixel DB, the Metadata DB and the
    393 Object DB.  In addition, they may write certain fields to the object
    394 DB (e.g., the external identifiers and class of object) as they
    395 process objects, and they may retrieve pixel data from the Nodes.
    396 
    397 Since ``CSPs'' is a vague term, we now give some examples which may
    398 help to illustrate the functionality.
    399 
    400 One example of a CSP is a web front-end to retrieve (published) images
    401 and objects from the Pixel DB and Object DB.
    402 
    403 Another example would be a program interested in searching for
    404 transiting extrasolar planets.  Such a program may periodically poll
    405 the Metadata DB for new processed observations in its region of
    406 interest (such as the Galactic Plane), retrieve the object photometry
    407 of all high signal-to-noise stars in the processed observations, and
    408 attempt to identify a planetary transit in progress.
    409 
    410 Yet another example would be a Stationary Transient Object Pipeline,
    411 which would periodically poll the Metadata DB for new processed
    412 observations, and query the Object DB for variable sources which were
    413 identified twice (so that they are not moving objects).
    414 
    415 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    416 
    417 \paragraph{Related/Connected components}
    418 
    419 The Pollster may be contained within the Scheduler (i.e., the
    420 Scheduler may initiate and/or schedule as a processing stage the
    421 Pollster), but this is not assumed to be so in this document; this
    422 decision is left to the implementation.
    423 
    424 The Localiser is strongly coupled to the Pixel DB, and throughout this
    425 document, these are both referred to as components of the ``IPP Pixel
    426 Server''.
    427 
    428 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    429 
    430 \paragraph{Responsibility}
    431 
    432 The IPP team will develop and have responsibility for maintaining
    433 these systems.
    434 
    435 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    436 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    437 
    438 \subsubsection{Processing Stages}
    439 \label{sec:processingStages}
    440 
    441 We now consider the collection of IPP processing stages which are
    442 executed by the Controller on the Nodes.  We define a ``stage'' to be
    443 the largest complete task which may be performed in serial without
    444 interation between parallel threads.
    445 
    446 Depending on the particular stage, it may process individual images,
    447 collections of images, or on derived data products.  Because of the
    448 nature of the image data, many of the analysis stages can be run in
    449 parallel because, for example, the analysis of a chip in one image
    450 does not depend on the results from another chip.
    451 
    452 The data analysis stages are divided into several categories as follows:
    453 
    454 \begin{enumerate}
    455 \item Retrieval Stage --- pixel data are retrieved from OATS (the
    456   Summit).
    457 \item Science Image Processing Stages
    458   \begin{enumerate}
    459   \item Phase 1: image processing preparation --- estimates
    460     first-order astrometric and photometric solutions required to
    461     process each major frame.
    462   \item Phase 2: image reduction --- produces calibrated chips from
    463     raw chips.
    464   \item Phase 3: exposure analysis --- processes an FPA to produce
    465     unified and consistent backgrounds, photometry and astrometry for
    466     the component chips.
    467   \item Phase 4: image combination --- processes sky cells overlapped
    468     by a major frame.
    469   \end{enumerate}
    470 \item Calibration Image Processing Stages
    471   \begin{enumerate}
    472   \item Cal 1: Basic master-detrend creation --- combination of simple
    473     detrend images (e.g., bias, dome flat etc).
    474   \item Cal 2: Sky-model/fringe-mode generation --- combination of
    475     more-complicated detrend images (e.g., fringe, scattered light
    476     etc).
    477   \item Cal 3: Flat-field correction image creation --- analysis of
    478     photometry from multiple dithered FPAs.
    479   \end{enumerate}
    480 \item Calibration Test Processing Stage
    481   \begin{enumerate}
    482     \item CalTest 1: Detrend frame testing --- tests whether new
    483       calibration frames are required.
    484     \item CalTest 2: Photometric float correction testing --- tests
    485       whether a new photometric flat correction is required.
    486   \end{enumerate}
    487 \item Reference Catalog Processing Stages
    488   \begin{enumerate}
    489   \item Astrometry reference catalog generation --- processing of the
    490     astrometric data to determine and apply a consistent global
    491     solution.
    492   \item Photometry reference catalog generation --- processing of the
    493     photometric data to determine and apply a consistent global
    494     solution.
    495   \end{enumerate}
    496 \end{enumerate}
    497 
    498 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    499 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    500 
    501 \subsubsection{Hardware Systems}
    502 
    503 The basic IPP hardware organization is shown in Figure~\ref{hardware}.
    504 The overall hardware organization, with a Detector subcluster and a
    505 Static Sky subcluster, is largely chosen to reduce the I/O load during
    506 the pre-reduction analysis of the raw science images.  In addition, we
    507 have specified distinct machines to maintain the object and metadata
    508 databases.  \tbd{This last aspect is largely theoretical until we have
    509 defined the details of these databases; it may be more appropriate
    510 depending on the eventual solutions to distribute these database
    511 elements across the Detector and Static Sky subclusters.}
    512 
    513 \begin{figure}
     353
     354The Image Server provides file pointers (in C), handles (in Perl), or
     355file names corresponding to the instances of the storage objects.
     356Image Server requires a file system which provides files in the local
     357file system.  This may be done over many machines with a network file
     358system such as NFS or GFS.  \tbd{select file system for IPP / test NFS
     359vs GFS vs Mogile, etc}.
     360
     361The IPP Image Server provides the storage and access mechanisms, but
     362it does not include any logic or information about the data.  The
     363Image Server does not, e.g., monitor the age of images and delete them
     364on some schedule.
     365
     366The IPP Image Server consists of the following components:
     367
     368\begin{itemize}
     369\item Image Server storage hardware
     370\item Image Server database
     371\item Image Server daemon
     372\item Image Server client APIs
     373\end{itemize}
     374
     375\paragraph{IPP Image Server Client APIs}
     376
     377Clients interact with the IPP Image Server with a small number of C
     378APIs (Bindings are also provided for Perl \tbr{and Python}).  The
     379client commands are:
     380
     381\begin{itemize}
     382\item {\tt new object}: create a new storage object in the Image
     383  Server.  This function takes as input the file ID and returns a
     384  C-style file pointer or a Perl file handle to the instance of the
     385  storage object.  The arguments to the function include an optional
     386  node name on which the new storage object must be located.  If this
     387  target is not given, the Image Server places the new storage object
     388  on an appropriate machine from the pool (least filled?  most data?
     389  randomized?  the details need to be decided).
     390
     391\item {\tt open object}: open an instance of an existing storage
     392  object, as identified by the file ID.  This function may also
     393  specify the node on which the object should be opened (if an
     394  instance of the object is not stored on that node, the function
     395  returns an error).  On success, the function returns a file pointer.
     396
     397\item {\tt find object}: return a list of filenames in the UNIX name
     398  space associated with the storage object identified by the given
     399  file ID.  Since there are in general multiple instances for a given
     400  storage object, this function returns the collection of all
     401  available instances.  These may be freely opened by the client
     402  server using the standard \code{fopen} functions.
     403
     404\item {\tt stat object}: returns status information about the
     405  specified storage object, including the number of instances of the object.
     406
     407\item {\tt increment object count}: adds a new instance of the given
     408  storage object.  The target node may be optionally specified,
     409  otherwise an appropriate node is selected.
     410
     411\item {\tt decrement object count}: removes one of the instances of
     412  the storage object.  The input parameters may optionally specify the
     413  target machine to delete.
     414
     415\item {\tt delete object}: deletes all instances of the storage object
     416  and sets the storage object status to {\tt deleted}. 
     417\end{itemize}
     418
     419\subsubsection{IPP Image Server Daemon}
     420
     421The Image Server client requests are mediated via the Image Server
     422daemon.  Communication between the clients and the server is via
     423\tbr{SOAP (or flat text commands)} implementing the commands above.
     424
     425\subsubsection{IPP Image Server Database}
     426
     427The IPP Image Server daemon uses a database to store the information
     428about the data storage objects, their instances, and the available
     429hardware resources.  A \tt{mysql} database engine is used to manage
     430the database.  The database tables defined for the Image Server are
     431listed in Table~\ref{ImageServerTables}, and their current contents
     432are listed in Appendix A.  This database engine need not the same one
     433as used for the IPP Metadata Database.
     434%
     435\begin{table}
    514436\begin{center}
    515 \resizebox{8cm}{!}{\includegraphics{pics/hardware}}
    516 \caption{ \label{hardware} IPP Hardware Organization}
     437\caption{Image Server Database Tables\label{ImageServerTables}}
     438\begin{tabular}{ll}
     439\hline
     440\hline
     441{\bf Table Name} & {\bf Description} \\
     442\hline
     443\code{storage_object}  & all storage objects known to Image Server \\
     444\code{instance}        & all instances of all storage objects \\
     445\code{volume}          & data storage devices known to Image Server \\
     446\hline
     447\end{tabular}
    517448\end{center}
    518 \end{figure}
    519 
    520 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    521 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    522 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    523 
    524 \subsection{Software Hierarchy}
    525 
    526 In order to facilitate testing and development, and to encourage
    527 flexibility, the IPP will be built in a layered fashion.  The lowest
    528 level functions will be written in C and collected together into a
    529 \PS{} library.  These library functions will be used to write more
    530 complex modules.  The modules will be written in C but will make use
    531 of the SWIG tool to make their functionality available within other
    532 frameworks.  In particular, the modules can be tied together with a
    533 simple framework (an `engine') or with detailed flow-control through
    534 the use of a high-level language such as Perl, Python, or Tcl
    535 employing the SWIG interfaces.  For the high-level functions in the
    536 operational system, the IPP will make use of \tbd{Python} as the
    537 scripting language to provide the required flow-control to tie the
    538 modules together.
    539 
    540 This approach satisfies the requirement that complicated low-level
    541 analysis steps run fast, while preserving flexibility for coding the
    542 high-level wrappers for which the speed requirements are not so
    543 stringent.
    544 
    545 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    546 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    547 
    548 \subsubsection{External Libraries}
    549 
    550 \PS{} will employ several external libraries to save duplicating
    551 functionality that is already available.  These external libraries
    552 will be wrapped by the \PS{} Library, insulating the project from the
    553 implementation details of the external libraries.  Examples of the
    554 external libraries are FFTW and SLALib.
    555 
    556 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    557 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    558 
    559 \subsubsection{\PS{} Library}
    560 
    561 The \PS{} Library will consist of C structures describing the basic
    562 data types needed by the IPP and C functions which perform the basic
    563 data manipulation operations.  Note that a subset of the library
    564 functions will be provided with SWIG interfaces as well to allow for
    565 their use in the creation of the processing stages.  Examples of the
    566 \PS{} Library are fourier transforms and transforming between pixel
    567 and celestial coordinates.
    568 
    569 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    570 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    571 
    572 \subsubsection{Modules}
    573 
    574 The IPP analysis stages are broken down into modules which represent
    575 specific functional operations.  The modules will be written in C
    576 using the \PS{} Library functions and will be grouped into a \PS{}
    577 Module Library.  The modules will be provided with SWIG interfaces to
    578 all public APIs for their use in processing stages.  Examples of
    579 modules are overscan subtraction and image combination.  Some modules
    580 (e.g.\ find objects on an image) will be used by multiple stages.
    581 
    582 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    583 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    584 
    585 \subsubsection{Stages}
    586 
    587 The major IPP processing tasks are organized into stages, which
    588 consist of multiple modules.  Each stage represents a collection of
    589 complex operations performed on a single data entity.  Each stage
    590 therefore represents the maximum amount of effort which can be
    591 performed in serial without interaction between parallel threads.  The
    592 stages will be written in \tbd{Python}, linking the modules together.
    593 Examples of stages are Phase 2 (detrend images) and Phase 4 (combine
    594 images from multiple telescopes and search for transients).
    595 
    596 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    597 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    598 
    599 \subsubsection{Orchestration}
    600 
    601 High-level components such as the Scheduler, the Controller and the
    602 Localiser are for process control.  As such, they shall be written in
    603 \tbd{Python} in order to maintain flexibility.
    604 
    605 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    606 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    607 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    608 
    609 \subsection{System Interfaces}
    610 
    611 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    612 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    613 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    614 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    615  
    616 \section{System Architectural Design}
    617 
    618 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    619 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    620 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    621 
    622 \subsection{Architectural Components}
    623 
    624 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    625 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    626 
    627 \subsubsection{Pollster}
    628 
    629 The Pollster simply polls OATS on a regular basis for metadata
    630 (including telescope exposures) which is not known by the IPP (i.e.,
    631 already written in the Metadata DB).  On the discovery of such metadata,
    632 it is written to the Metadata DB.
    633 
    634 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    635 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    636 
    637 \subsubsection{Pixel Server}
    638 
    639 The IPP Pixel Server (IPS) is a repository for all image pixel data
    640 required by the IPP, and fulfills the roles of the Pixel DB
    641 (\S\ref{sec:pixeldb}) and the Localiser (\S\ref{sec:localiser}).  In
    642 addition, it also provides components for managing the distribution of
    643 data, and accessing the data.
    644 
    645 Images may reside in the IPS for different periods depending on their
    646 use and type.  Data stored by the IPS include the raw images, the
    647 calibration images, intermediate processing stage images as needed,
    648 final processed images, difference images, and image subsections,
    649 \tbd{along with the associated metadata}.  The IPS must retain images
    650 as long as they are needed, up to the lifetime of the project.  In
    651 order to achieve the I/O requirements, the IPS may maintain the pixel
    652 data distributed across the processor nodes in an organized fashion,
    653 i.e.\ associating specific machines with specific detectors.  The IPS
    654 interacts with the IPP Metadata Database to allow other systems or
    655 subsystems to identify the available images meeting specified
    656 criteria.  IPS specifications are described in the IPS subsystem
    657 specification.
    658 
    659 In addition to storing the pixel data, the IPS is responsible for
    660 acquiring new image data and metadata from the Summit Pixel Server and
    661 making it available for processing by the IPP System.
    662 
    663 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    664 
    665 \paragraph{IPP Pixel Server Components}
    666 
    667 The IPP Pixel Server (IPS) fulfills the roles of the Pixel DB
    668 (\S\ref{sec:pixeldb}) and the Localiser (\S\ref{sec:localiser}), and
    669 consists of the following components:
    670 
    671 \begin{enumerate}
    672 \item IPP Pixel Server Data Locality Optimizer (IPSDLO)
    673 \item IPP Pixel Server Database (IPSD)
    674 \item IPP Pixel Server Maintainance (IPSM)
    675 \item IPP Pixel Server I/O Library (IPSIOL)
    676 \end{enumerate}
    677 
    678 This assumes that the pixel data will be stored on the nodes.  Each
    679 image shall have a unique Universal Resource Identifier (URI) which
    680 specifies the location of the pixel data.  As an example, consider a
    681 cluster with cross-mounted disks --- in this case, the filename
    682 incorporating the full path would serve as the URI.
    683 
    684 The components of the IPS and their relation to other components (both
    685 within the IPS and without) are showin in Figure~\ref{fig:ips}.
    686 
    687 \begin{figure}
    688 \psfig{file=pics/IPS,width=15cm,angle=0}
    689 \caption{The components of the IPS.  In addition to the IPSDLO, IPSD
    690 and IPSM, the IPSIOL is also a component of the IPS; use of the IPSIOL
    691 is shown as dotted arrows in the interactions.  Note that the nodes use
    692 the IPSIOL to pass pixel data between each other.}
    693 \label{fig:ips}
    694 \end{figure}
    695 
    696 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    697 
    698 \subparagraph{IPP Pixel Server Data Locality Optimizer (IPPDLO)}
    699 
    700 Processing stages generated by the Scheduler are passed through the
    701 IPSDLO which does the following:
    702 \begin{enumerate}
    703 \item assigns tasks to specific nodes;
    704 \item identifies the URI of the required input data; and
    705 \item identifies the URI the output data should be written to.
    706 \end{enumerate}
    707 
    708 This allows the choice of processing node to be optimized so that it
    709 resides on the node which will process it, as well as allowing the
    710 output to be written to the node which requires it for the next
    711 processing stage.
    712 
    713 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    714 
    715 \subparagraph{IPP Pixel Server Database (IPSD)}
    716 \label{sec:ipsd}
    717 
    718 The IPSD maintains a database of URIs for the pixel data on the nodes.
    719 It should be able to return the URI of the pixel data given one of:
    720 \begin{enumerate}
    721 \item an exposure identifier and a chip identifier (raw and processed
    722   pixel data from the telescope);
    723 \item a calibration identifier (detrend pixel data); and
    724 \item a sky cell identifier (summed static sky, reduced and difference
    725   pixel data).
    726 \end{enumerate}
    727 
    728 The IPSD will also contain a history of data management commands and
    729 actions.
    730 
    731 \tbd{Is there a reason why this is not a part of the Metadata DB?}
    732 
    733 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    734 
    735 \subparagraph{IPP Pixel Server Maintenance (IPSM)}
    736 
    737 The IPSM initiates the execution of bulk data management processing
    738 stages.  It may have an automated component which, e.g., monitors the
    739 disk space on each of the nodes and redistributes them if they become
    740 unbalanced.  However, the main intent is that it is used by a human
    741 operator to reorgainise the data, e.g., after a new data optimisation
    742 plan has been formulated, or to delete old data.
    743 
    744 The IPSM passes processing stages to the Controller which executes
    745 them on the specified nodes.
    746 
    747 The IPSM allows four types of operation:
    748 \begin{itemize}
    749 \item Retrieve external data --- to manually trigger the copying of
    750   external data (routine copying of the pixel data from OATS is
    751   handled by the Scheduler).  The IPSM generates {\em retrieve data}
    752   stages which are passed to the Controller for execution.
    753 \item Delete data --- to delete old data.  The IPSM looks up the
    754   location of the data in the IPSD and generates {\em delete data}
    755   stages which are passed to the Controller for execution.
    756 \item Replicate data --- to backup and rearrange data.  The IPSM
    757   generates {\em copy data} stages which are passed to the Controller
    758   for execution.  Note that this mode differs from the ``copy external
    759   data'' mode in that it copies data already within the IPS.
    760 \item Move data --- to reorganise storage.  The IPSM executes a
    761   replication followed by a deletion.
    762 \end{itemize}
    763 
    764 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    765 
    766 \subparagraph{IPP Pixel Server I/O Library (IPSIOL)}
    767 
    768 The IPSIOL provides a mechanism for reading and writing pixel data to
    769 the IPS.  The existence of the IPSIOL insulates the processing stages
    770 from the details of how the pixel data are stored (i.e., the
    771 processing stages need not worry whether the data is stored locally or
    772 remotely).  It will generally be used on the nodes and the IPSDLO,
    773 although other components will also make use of it.
    774 
    775 The IPSIOL will be able to:
    776 \begin{itemize}
    777 \item Open a file specified by a URI --- it may simply open the file
    778   if it exists on the particular node, or it may retrieve the file
    779   over the network.
    780 \item Write a file specified by a URI --- it may simply write the file
    781   if it exists on the particular node, or it may copy the file over
    782   the network.  It should also register with the IPSD that a file
    783   specified by a URI has been written.
    784 \item Delete a file specified by a URI --- it may simply delete the
    785   file if it exists on the particular node, or it may delete the file
    786   over the network.
    787 \item Interface with the IPSD to return a URI given one of the
    788   identifiers in \S\ref{sec:ipsd}.
    789 \end{itemize}
    790 
    791 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    792 
    793 \paragraph{Pixel Data Flow Examples}
    794 
    795 For examples of the operation of the IPS, below we sketch out the
    796 intended sequence of events for common operations.
    797 
    798 Reads during processing:
    799 \begin{enumerate}
    800 \item A processing stage has been passed (from the Scheduler) the URI
    801   for an image that it needs to load into memory.
    802 \item The processing stage uses the IPSIOL to open the image.
    803 \item The processing stage reads the image into local memory in the
    804   usual manner.
    805 \item The processing stage closes the image using the IPSIOL.
    806 \end{enumerate}
    807 
    808 Writes during processing:
    809 \begin{enumerate}
    810 \item A processing stage has been passed (from the Scheduler) the URI
    811   for an image that needs to be saved, e.g., a subtracted image.
    812 \item The processing stage uses the IPSIOL to open the image.
    813 \item The processing stage writes the image in the usual manner.
    814 \item The processing stage closes the image using the IPSIOL.
    815 \end{enumerate}
    816 
    817 Note how the IPSIOL has insulated the processing stage from the details
    818 of the reading and writing.
    819 
    820 Maintenance:
    821 \begin{enumerate}
    822 \item A human operator decides that all the pixel data for chip 12
    823   should be stored on node 3.
    824 \item Operator plugs this into the IPSM.
    825 \item The IPSM queries the IPSD using the IPSIOL.
    826 \item The IPSD returns the URIs for all the pixel data for chip 12.
    827 \item The IPSM generates processing tasks to be executed on the nodes
    828   that will copy the data from the old URIs to a new URI which
    829   specifies node 3.
    830 \item The IPSM generates processing tasks to be executed on the nodes
    831   that deletes the data pointed to by the old URIs.
    832 \item The IPSM reports success to the operator.
    833 \end{enumerate}
    834 
    835 Client Science Pipelines:
    836 \begin{enumerate}
    837 \item A CSP wants some pixel data.
    838 \item The CSP queries the IPSD using the IPSIOL (e.g., asking for a
    839   particular exposure or sky cell).
    840 \item The IPSD returns the URI for the pixel data.
    841 \item The CSP opens the image using the IPSIOL and the URI.
    842 \item The CSP reads the pixel data into memory in the usual manner.
    843 \item The CSP closes the image using the IPSIOL.
    844 \end{enumerate}
    845 
    846 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     449\end{table}
     450
     451\subsubsection{IPP Image Server Storage Hardware}
     452
     453The IPP Image Server manages data across a collection of computers and
     454possibly on multiple storage devices on those computer nodes.  The
     455Image Server maintains a table of the available data volumes.  The
     456Image Server tracks information about each volume such as the total
     457capacity, the current capacity, the association between computer and
     458data volume.
     459
     460\paragraph{IPP Image Server Maintenance Tools}
     461
     462The IPP Image Server provides a collection of administration tools
     463which allow for maintainence.  These are operations which may be
     464automatically scheduled for the IPP or which may be initiated by a
     465human via a command-shell interface.  The maintainence functions
     466include migrating data between nodes to rebalance the available space
     467(this would only occur for instances which have not been placed on a
     468specific node by the client API).  Other functions include checking
     469for file corruption, which involves sweeping all files on a data
     470volume and comparing the calculated file checksum to the currently
     471recorded value. 
     472
    847473%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    848474
     
    14771103manner given the capabilities of the science pipelines.
    14781104
     1105\paragraph{Pollster}
     1106
     1107The Pollster is a program that polls OATS at regular intervals for the
     1108existence of observations not contained in the Metadata DB.  New
     1109weather and image metadata are written to the Metadata DB.
     1110
     1111There is no reason why this architectural component cannot be
     1112contained within another (such as the Scheduler), but it is shown here
     1113as separate for simplicity.
     1114
     1115A polling model is adopted so that OATS' interface may be kept as
     1116simple as possible --- OATS should not be concerned with whether the
     1117IPP has received notifications.  Under this polling model, it is
     1118specifically the responsibility of the IPP to retrieve from OATS the
     1119metadata that is not not already in the Metadata DB.
     1120
     1121\subsubsection{Pollster}
     1122
     1123The Pollster simply polls OATS on a regular basis for metadata
     1124(including telescope exposures) which is not known by the IPP (i.e.,
     1125already written in the Metadata DB).  On the discovery of such metadata,
     1126it is written to the Metadata DB.
     1127
    14791128%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    14801129%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
    15251174%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    15261175
    1527 \subsection{Processing Stages}
     1176\subsection{Analysis Tasks and Stages}
    15281177
    15291178In this section, we review the processing stages which are executed on
     
    23261975%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    23271976%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     1977
     1978\subsection{Software Hierarchy}
     1979
     1980In order to facilitate testing and development, and to encourage
     1981flexibility, the IPP will be built in a layered fashion.  The lowest
     1982level functions will be written in C and collected together into a
     1983\PS{} library.  These library functions will be used to write more
     1984complex modules.  The modules will be written in C but will make use
     1985of the SWIG tool to make their functionality available within other
     1986frameworks.  In particular, the modules can be tied together with a
     1987simple framework (an `engine') or with detailed flow-control through
     1988the use of a high-level language such as Perl, Python, or Tcl
     1989employing the SWIG interfaces.  For the high-level functions in the
     1990operational system, the IPP will make use of \tbd{Python} as the
     1991scripting language to provide the required flow-control to tie the
     1992modules together.
     1993
     1994This approach satisfies the requirement that complicated low-level
     1995analysis steps run fast, while preserving flexibility for coding the
     1996high-level wrappers for which the speed requirements are not so
     1997stringent.
     1998
     1999\subsubsection{External Libraries}
     2000
     2001\PS{} will employ several external libraries to save duplicating
     2002functionality that is already available.  These external libraries
     2003will be wrapped by the \PS{} Library, insulating the project from the
     2004implementation details of the external libraries.  Examples of the
     2005external libraries are FFTW and SLALib.
     2006
     2007\subsubsection{\PS{} Library}
     2008
     2009The \PS{} Library will consist of C structures describing the basic
     2010data types needed by the IPP and C functions which perform the basic
     2011data manipulation operations.  Note that a subset of the library
     2012functions will be provided with SWIG interfaces as well to allow for
     2013their use in the creation of the processing stages.  Examples of the
     2014\PS{} Library are fourier transforms and transforming between pixel
     2015and celestial coordinates.
     2016
     2017\subsubsection{Modules}
     2018
     2019The IPP analysis stages are broken down into modules which represent
     2020specific functional operations.  The modules will be written in C
     2021using the \PS{} Library functions and will be grouped into a \PS{}
     2022Module Library.  The modules will be provided with SWIG interfaces to
     2023all public APIs for their use in processing stages.  Examples of
     2024modules are overscan subtraction and image combination.  Some modules
     2025(e.g.\ find objects on an image) will be used by multiple stages.
     2026
     2027\subsubsection{Stages}
     2028
     2029The major IPP processing tasks are organized into stages, which
     2030consist of multiple modules.  Each stage represents a collection of
     2031complex operations performed on a single data entity.  Each stage
     2032therefore represents the maximum amount of effort which can be
     2033performed in serial without interaction between parallel threads.  The
     2034stages will be written in \tbd{Python}, linking the modules together.
     2035Examples of stages are Phase 2 (detrend images) and Phase 4 (combine
     2036images from multiple telescopes and search for transients).
    23282037
    23292038\subsection{Modules}
     
    32652974\section{Appendices}
    32662975
     2976\subsection{Image Server Database Tables}
     2977
     2978\begin{table}
     2979\begin{center}
     2980\caption{Storage Object Table Contents\label{ImageServerTables:SO}}
     2981\begin{tabular}{ll}
     2982\hline
     2983\hline
     2984{\bf Column Name} & {\bf Datatype} & {\bf Description} \\
     2985\hline
     2986\code{so_id}      & integer        & internal storage object identifier \\
     2987\code{ext_id}     & string         & external storage object identifier (file ID) \\
     2988\code{comment}    & string         & user description of object \\
     2989\code{epoch}      & time/date      & last date of access \\
     2990\hline
     2991\end{tabular}
     2992\end{center}
     2993\end{table}
     2994
     2995\begin{table}
     2996\begin{center}
     2997\caption{Instance Table Contents\label{ImageServerTables:INT}}
     2998\begin{tabular}{ll}
     2999\hline
     3000\hline
     3001{\bf Column Name} & {\bf Datatype} & {\bf Description} \\
     3002\hline
     3003\code{ins_id}     & integer        & internal instance identifier \\
     3004\code{so_id}      & integer        & key to storage object table \\
     3005\code{uri}        & string         & location in hardware collection \\
     3006\code{sha1sum}    & string         & checksum information \\
     3007\code{assigned_location} & boolean & is location user-specified? \\
     3008\code{epoch}      & time/date      & last date of access \\
     3009\code{atime}      & time/date      & last date of access \\
     3010\hline
     3011\end{tabular}
     3012\end{center}
     3013\end{table}
     3014
     3015\begin{table}
     3016\begin{center}
     3017\caption{Volume Table Contents\label{ImageServerTables:VOL}}
     3018\begin{tabular}{ll}
     3019\hline
     3020\hline
     3021{\bf Column Name} & {\bf Datatype} & {\bf Description} \\
     3022\hline
     3023\code{vol_id}     & integer        & internal volume identifier \\
     3024\code{uri}        & string         & node name? \\
     3025\hline
     3026\end{tabular}
     3027\end{center}
     3028\end{table}
    32673029
    32683030\bibliographystyle{plain}
Note: See TracChangeset for help on using the changeset viewer.