Changeset 40130
- Timestamp:
- Sep 9, 2017, 3:20:24 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/doc/release.2015/ps1.datasystem/datasystem.tex
r40071 r40130 93 93 \label{sec:intro} 94 94 95 \note{missing figures: analysis elements, DVO schema} 96 95 97 The 1.8m Pan-STARRS\,1 telescope is located on the summit of Haleakala 96 98 on the Hawaiian island of Maui. The wide-field optical design of the … … 104 106 The \PSONE\ camera \citep{2009amos.confE..40T}, known as GPC1, consists of a 105 107 mosaic of 60 back-illuminated CCDs manufactured by Lincoln Laboratory. 106 The CCDs each consist of an $8\times8$ grid of $ \sim 600\times 600$107 pixel readout regions, yielding an effective $48 00\times4800$108 The CCDs each consist of an $8\times8$ grid of $590 \times 598$ 109 pixel readout regions, yielding an effective $4846 \times 4868$ 108 110 detector. Initial performance assessments are presented in 109 111 \cite{2008SPIE.7014E..0DO}. Routine observations are conducted remotely from the 110 112 Advanced Technology Research Center in Kula, the main facility of the 111 University of Hawaii's Institute for Astronomy operations on Maui.113 University of Hawaii's Institute for Astronomy (IfA) operations on Maui. 112 114 The Pan-STARRS1 filters and photometric system have already been 113 115 described in detail in \cite{2012ApJ...750...99T}. … … 167 169 %Pan-STARRS Pixel Analysis : Source Detection 168 170 \citet[][Paper IV]{magnier2017.analysis} 169 describes the details of the source detection and photometry, including point-spread-function and extended source fitting models, and the techniques for ``forced "photometry measurements.171 describes the details of the source detection and photometry, including point-spread-function and extended source fitting models, and the techniques for ``forced'' photometry measurements. 170 172 171 173 %Magnier et al. 2017 (Paper V) … … 202 204 reducing data from other cameras and telescopes. 203 205 204 \note{overview discussion of Pan-STARRS: the telescope, survey time205 period, surveys. 2 paragraphs.}206 207 The Pan-STARRS Image Processing Pipeline consists of a suite of208 software programs and data systems that are designed to reduce209 astronomical images, with a focus on parallelization necessary to210 speed the processing of the large images produced by the GPC1 camera.211 Part of this parallelization is derived from the fact that this camera212 consists of 60 independent orthogonal transfer array (OTA) devices,213 and can therefore be processed simultaneously. Although there are214 multiple stages that operate on an entire exposure at once, the215 majority of stages operate only on smaller segments of a full exposure216 to allow the processing tasks to be spread over the machines in the217 processing cluster.218 219 220 \note{fix this summary once outline is solidified}221 222 This paper presents a description of the IPP data handling system.223 Section \ref{sec:subsystems} describes the major IPP subsystems that224 underlie the main pipeline, providing a set of common interfaces and225 tools used at multiple stages. The main processing stages of the226 pipeline are described in Section \ref{sec:stages}, although all227 exposures may not necessarily pass through each of these stages. The228 hardware systems that have done the processing for the PV3 data229 release are listed in Section \ref{sec:hardware}, with some details230 on the scale of computing needed to reduce this large number of231 exposures. Finally, Section \ref{sec:discussion} presents a232 discussion of some of the lessons learned in the creation of the IPP,233 and its utility in reducing data from other cameras and telescopes.234 235 206 {\color{red} {\em Note: These papers are being placed on arXiv.org to 236 207 provide crucial support information at the time of the public … … 244 215 \label{sec:overview} 245 216 246 The Pan-STARRS Data Analysis system consists of many elements to 247 support the wide range of activities: archiving and management of the 217 \subsection{Elements of the Pan-STARRS Data Processing System} 218 219 The Pan-STARRS data analysis system consists of many elements to 220 support a wide range of activities: archiving and management of the 248 221 raw and processed image files; real-time nightly processing of images 249 222 for transient and moving object science; large-scale re-processing and 250 223 calibration to produce measurements for the science collaboration and 251 the wider public; specialized image processing t asks to facilitate252 research and development of the analysis system itself; distribution 253 of the resulting data products to various consumers in a variety of 254 formatsand modes.255 256 The Pan-STARRS Data Analysis system is divided internally into several major224 the wider public; specialized image processing to facilitate research 225 and development of the analysis system itself; and distribution of the 226 resulting data products to various consumers in a variety of formats 227 and modes. 228 229 The Pan-STARRS data analysis system is divided internally into several major 257 230 components: 258 231 \begin{itemize} … … 260 233 data analysis tasks needed to support the on-going observations. 261 234 In this article, we focus only on those aspects used by the off-summit 262 analysis stages. \note{is summit processing discussed anywhere?}235 analysis stages. 263 236 \item Image Processing Pipeline (IPP) : this portion of the data 264 237 analysis system takes the data from raw pixels on the summit … … 295 268 the summit systems are described by \note{REF?}. 296 269 270 \begin{figure*}[htbp] 271 \begin{center} 272 \includegraphics[width=\hsize,clip]{PS1_Data_Analysis_System_Overview.pdf} 273 \caption{\label{fig:analysis.elements} Elements of the Pan-STARRS\,1 274 Data Analysis System. Rectangles represent data analysis steps; 275 ellipses represent databases; rounded rectangles represent 276 external groups (``customers''). The arrows show a simplified representation 277 of the major flow of data between the analysis stages and data 278 processing elements.} 279 \end{center} 280 \end{figure*} 281 282 \subsection{Nightly Processing Analysis Stages} 283 297 284 Data analysis to support nightly science operations is driven by two 298 285 main goals: 1) rapid detection of the moving and transient sources to … … 309 296 (\IPPstage{warp}). Warped images may either be added together 310 297 (\IPPstage{stack}) or used in an image subtraction (\IPPstage{diff}). 311 For nightly science operations, images for certain fields such as the 312 Medium Deep survey fields \citep[see][]{MDref}, are stacked together 313 in nightly chunks, providing deeper detection capability on 1-day 314 timescales. Depending on the survey mode, difference images are315 generated for the nightly stack images ( vs a deep stack template) or316 for individual warp images. In the later case, the warp images may be 317 differenceagainst another warp from the same night or against a298 As part of nightly science processing, images for certain fields such 299 as the Medium Deep survey fields \citep[see][]{MDref}, are stacked 300 together in nightly chunks, providing deeper detection capability on 301 1-day timescales. Depending on the survey mode, difference images are 302 generated for the nightly stack images (using a deep stack template) 303 or for individual warp images. In the later case, the warp images may 304 be differenced against another warp from the same night or against a 318 305 reference stack from the appropriate part of the sky. 319 306 307 \subsection{Re-processing Analysis Stages} 308 320 309 Pan-STARRS has performed several large-scale reprocessings of both the 321 Medium Deep and 3pi Survey data for internal consumption. For the 3pi 322 Survey data, we identify these large-scale reprocessings as PV1, PV2, 323 and PV3, with PV3 the analysis used for the first public data release, 324 DR1. We also refer to the nightly science analysis of the data as 325 PV0. For these reprocessing stages, the standard steps of chip 326 through warp, plus stack and diff are performed, starting from raw 327 data, usually using a single homogenous version of the data analysis 328 procedures. PV2 was a special case in which we started from the 329 camera level products of PV1 to speed up the turn-around to the 330 community. In addition to the analysis stages listed above which are 331 shared with the nightly processing, these large-scale reprocessing 332 analyses include additional processing. A more detailed photometric 333 analysis is performed on the stacks, including morphological analysis 334 appropriate to galaxies. The results of the stack photometry analysis 335 are used to drive a forced-photometry analysis of the warp images. 336 The data products from the camera, stack photometry, and forced-warp 337 photometry analysis stages are ingested into the internal calibration 338 database (DVO, the Desktop Virtual Observatory) and used for 339 photometric and astrometric calibrations. 310 Medium Deep and $3\pi$ Survey data for internal consumption. For the 311 $3\pi$ Survey data, we identify these large-scale reprocessings as 312 PV1, PV2, and PV3, with PV3 the analysis used for the first public 313 data release, DR1. We also refer to the nightly science analysis of 314 the data as PV0. For these reprocessing stages, the standard steps of 315 \ippstage{chip} through \ippstage{warp}, plus \ippstage{stack} and 316 \ippstage{diff} are performed, starting from raw data, usually using a 317 single homogenous version of the data analysis procedures. PV2 was a 318 special case in which we started from the camera level products of PV1 319 to speed up the turn-around to the community. In addition to the 320 analysis stages listed above which are shared with the nightly 321 processing, these large-scale reprocessing analyses include additional 322 processing. A more detailed photometric analysis is performed on the 323 stacks, including morphological analysis appropriate to galaxies. The 324 results of the stack photometry analysis are used to drive a 325 forced-photometry analysis of the warp images. The data products from 326 the camera, stack photometry, and forced-warp photometry analysis 327 stages are ingested into the internal calibration database (DVO, the 328 Desktop Virtual Observatory) and used for photometric and astrometric 329 calibrations (see Section~\ref{sec:DVO}). 340 330 341 331 \subsection{Data Access and Distribution} … … 371 361 {\bf Stage} & {\bf Primary Table} & {\bf Secondary Table(s)} & {\bf Key} & {\bf Notes} \\ 372 362 \hline 373 \ippstage{addstar} & \ippdbtable{addRun} & \ippdbtable{addProcessedExp} & \ippdbcolumn{add_id} & \\ 363 \ippstage{summitcopy} & \ippdbtable{pzDataStore} & & & Lists locations to check for new exposures.\\ 364 & \ippdbtable{summitExp} & \ippdbtable{summitImfile} & \ippdbcolumn{summit_id} & Exposures available at the telescope.\\ 365 & \ippdbtable{pzDownloadExp}& \ippdbtable{pzDownloadImfile} & & Exposures that are being downloaded.\\ 366 & \ippdbtable{newExp} & \ippdbtable{newImfile} & \ippdbcolumn{exp_id} & Exposures that have been saved to IPP cluster.\\ 367 368 \ippstage{registration} & \ippdbtable{rawExp} & \ippdbtable{rawImfile} & \ippdbcolumn{exp_id} & \\ 369 \ippstage{chip} & \ippdbtable{chipRun} & \ippdbtable{chipProcessedImfile} & \ippdbcolumn{chip_id} & \\ 374 370 \ippstage{camera} & \ippdbtable{camRun} & \ippdbtable{camProcessedExp} & \ippdbcolumn{cam_id} & \\ 375 \ippstage{chip} & \ippdbtable{chipRun} & \ippdbtable{chipProcessedImfile} & \ippdbcolumn{chip_id} & \\ 371 \ippstage{fake} & \ippdbtable{fakeRun} & \ippdbtable{fakeProcessedImfile} & \ippdbcolumn{fake_id} & \\ 372 \ippstage{warp} & \ippdbtable{warpRun} & \ippdbtable{warpImfile} & \ippdbcolumn{warp_id} & \\ 373 & & \ippdbtable{warpSkyCellMap} & & Mapping of input chips to projection skycells.\\ 374 & & \ippdbtable{warpSkyfile} & & \\ 375 \ippstage{stack} & \ippdbtable{stackRun} & \ippdbtable{stackInputSkyfile} & \ippdbcolumn{stack_id} & \\ 376 & & \ippdbtable{stackSumSkyfile} & & \\ 377 \ippstage{staticsky} & \ippdbtable{staticskyRun} & \ippdbtable{staticskyInput} & \ippdbcolumn{sky_id} & \\ 378 & & \ippdbtable{staticskyResult} & & \\ 379 \ippstage{skycal} & \ippdbtable{skycalRun} & \ippdbtable{skycalResult} & \ippdbcolumn{skycal_id} & \\ 380 \ippstage{fullforce} & \ippdbtable{fullForceRun} & \ippdbtable{fullForceInput} & \ippdbcolumn{ff_id} & \\ 381 & & \ippdbtable{fullForceResult} & & \\ 382 & & \ippdbtable{fullForceSummary} & & Properties about average parameters from all results.\\ 383 \ippstage{diff} & \ippdbtable{diffRun} & \ippdbtable{diffSkyfile} & \ippdbcolumn{diff_id} & \\ 384 & & \ippdbtable{diffInputSkyfile} & & \\ 376 385 \ippstage{detrend} & \ippdbtable{detRun} & \ippdbtable{detRunSummary} & \ippdbcolumn{det_id} & \\ 377 386 & & \ippdbtable{detInputExp} & & \\ … … 381 390 & \ippdbtable{detResidExp} & \ippdbtable{detResidImfile} & & \\ 382 391 & \ippdbtable{detNormalizedExp} & \ippdbtable{detNormalizedImfile} & & \\ 383 \ippstage{diff} & \ippdbtable{diffRun} & \ippdbtable{diffSkyfile} & \ippdbcolumn{diff_id} & \\ 384 & & \ippdbtable{diffInputSkyfile} & & \\ 392 \ippstage{addstar} & \ippdbtable{addRun} & \ippdbtable{addProcessedExp} & \ippdbcolumn{add_id} & \\ 385 393 \ippstage{distribution} & \ippdbtable{distRun} & \ippdbtable{distComponent} & \ippdbcolumn{dist_id} & \\ 386 394 & & \ippdbtable{distTarget} & & \\ 387 \ippstage{fake} & \ippdbtable{fakeRun} & \ippdbtable{fakeProcessedImfile} & \ippdbcolumn{fake_id} & \\ 388 \ippstage{fullforce} & \ippdbtable{fullForceRun} & \ippdbtable{fullForceInput} & \ippdbcolumn{ff_id} & \\ 389 & & \ippdbtable{fullForceResult} & & \\ 390 & & \ippdbtable{fullForceSummary} & & Properties about average parameters from all results.\\ 395 \ippstage{publish} & \ippdbtable{publishRun} & \ippdbtable{publishDone} & \ippdbcolumn{pub_id} & \\ 396 & & \ippdbtable{publishClient} & & \\ 391 397 \ippstage{lap} & \ippdbtable{lapSequence} & \ippdbtable{lapRun} & \ippdbcolumn{seq_id} & Sequence of full reprocessing\\ 392 398 & \ippdbtable{lapRun} & \ippdbtable{lapExp} & \ippdbcolumn{lap_id} & \\ 393 \ippstage{publish} & \ippdbtable{publishRun} & \ippdbtable{publishDone} & \ippdbcolumn{pub_id} & \\394 & & \ippdbtable{publishClient} & & \\395 \ippstage{summitcopy} & \ippdbtable{pzDataStore} & & & Lists locations to check for new exposures.\\396 & \ippdbtable{summitExp} & \ippdbtable{summitImfile} & \ippdbcolumn{summit_id} & Exposures available at the telescope.\\397 & \ippdbtable{pzDownloadExp}& \ippdbtable{pzDownloadImfile} & & Exposures that are being downloaded.\\398 & \ippdbtable{newExp} & \ippdbtable{newImfile} & \ippdbcolumn{exp_id} & Exposures that have been saved to IPP cluster.\\399 400 \ippstage{registration} & \ippdbtable{rawExp} & \ippdbtable{rawImfile} & \ippdbcolumn{exp_id} & \\401 399 \ippstage{remote} & \ippdbtable{remoteRun} & \ippdbtable{remoteComponent} & \ippdbcolumn{remote_id} & \\ 402 \ippstage{skycal} & \ippdbtable{skycalRun} & \ippdbtable{skycalResult} & \ippdbcolumn{skycal_id} & \\403 \ippstage{stack} & \ippdbtable{stackRun} & \ippdbtable{stackInputSkyfile} & \ippdbcolumn{stack_id} & \\404 & & \ippdbtable{stackSumSkyfile} & & \\405 \ippstage{staticsky} & \ippdbtable{staticskyRun} & \ippdbtable{staticskyInput} & \ippdbcolumn{sky_id} & \\406 & & \ippdbtable{staticskyResult} & & \\407 \ippstage{warp} & \ippdbtable{warpRun} & \ippdbtable{warpImfile} & \ippdbcolumn{warp_id} & \\408 & & \ippdbtable{warpSkyCellMap} & & Mapping of input chips to projection skycells.\\409 & & \ippdbtable{warpSkyfile} & & \\410 400 \hline 411 401 \end{tabular} … … 424 414 successive processing stages to begin their own tasks. 425 415 426 The processing database is colloquially referred to as the ` gpc1'416 The processing database is colloquially referred to as the ``gpc1'' 427 417 database, since a single instance of the database is used to track the 428 418 processing of images and data products related to the PS1 GPC1 camera. 429 419 This same database engine also has instances (same schema, different 430 420 data) for other cameras processed by the IPP, e.g., GPC2, the test 431 cameras TC1, TC3, and the Imaging Sky Probe (ISP). 421 cameras TC1, TC3, and the Imaging Sky Probe (ISP). In general, 422 processing information for different cameras is separate in different 423 processing database; merging of output products takes place in DVO. 432 424 433 425 Within the processing database, the various processing stages are … … 435 427 primary table which defines the conceptual list of processing items 436 428 either to be done, in progress, or completed. An associated secondary 437 table (or set of tables) lists the details of elements which have been 438 processed. Table \ref{tab: database schema} contains an outline of 439 the database schema, showing the relations between tables organized by 440 processing stage. As an example, one critical stage is the 441 \ippstage{chip} processing stage (see \S\ref{sec:chip}) in which the 442 individual chips from an exposure are detrended and sources are 443 detected. Within the gpc1 database, the primary table is called 444 \ippdbtable{chipRun} in which each exposure has a single entry. 445 Associated with this table is the \ippdbtable{chipProcessedImfile} 446 table, which contains one row for each of the chips 447 associated with the exposure (up to 60 for gpc1). The primary tables, such as 448 \ippdbtable{chipRun}, are populated once the system has decided that a 449 specific item (e.g., an exposure) should be processed at that stage. 450 Initially, the entry is given a state of ``run'', denoting that the 451 exposure is ready to be processed. The low-level table entries, such 452 as the \ippdbtable{chipProcessedImfile} entries, are only populated 453 once the element (e.g., the chip) has been processed by the analysis 454 system. Once all elements for a given stage, e.g., chips in this 455 case, are completed, then the status of the top-level table entry 456 (\ippdbtable{chipRun}) are switched from ``run'' to ``full''. 429 table (or set of tables) lists the details of component elements which 430 have been processed for each top-level item. Table \ref{tab: database 431 schema} contains an outline of the database schema, showing the 432 relations between tables organized by processing stage. As an 433 example, one critical stage is the \ippstage{chip} processing stage 434 (see \S\ref{sec:chip}) in which the individual chips from an exposure 435 are detrended and sources are detected. Within the gpc1 database, the 436 primary table is called \ippdbtable{chipRun} in which each exposure 437 has a single entry. Associated with this table is the 438 \ippdbtable{chipProcessedImfile} table, which contains one row for 439 each of the chips associated with the exposure (up to 60 for gpc1). 440 The primary tables, such as \ippdbtable{chipRun}, are populated once 441 the system has decided that a specific item (e.g., an exposure) should 442 be processed at that stage. Initially, the entry is given a state of 443 ``run'', denoting that the exposure is ready to be processed. The 444 low-level table entries, such as the \ippdbtable{chipProcessedImfile} 445 entries, are only populated once the element (e.g., the chip) has been 446 processed by the analysis system. Once all elements for a given 447 stage, e.g., chips in this case, are completed, then the status of the 448 top-level table entry (\ippdbtable{chipRun}) are switched from ``run'' 449 to ``full''. 457 450 458 451 If the analysis of an element (e.g., the individual OTA chip) … … 467 460 other hand, if the analysis failed because of a problem with the input 468 461 data, this is noted by setting a non-zero value in a different table 469 field, \ippdbcolumn{quality}. For example, if the chipanalysis462 field, \ippdbcolumn{quality}. For example, if the \ippstage{chip} analysis 470 463 failed to discover any stars because the image was completely 471 464 saturated, the analysis can complete successfully (\ippdbcolumn{fault} … … 483 476 of the \ippdbcolumn{fault}s which occur are ephemeral due to current 484 477 conditions of the processing cluster, the processing stages are set up 485 to occasionally clear and re-try the faulted entries. Some faults478 to occasionally clear and re-try the faulted entries. Some \ippdbcolumn{fault}s 486 479 represent software bugs and in the early stages of processing were 487 480 accumulated until the corresponding software issue could be addressed; 488 481 since the start of the PS1 Science Consortium Surveys, these types of 489 faults have largely been eliminated. Thus, automatic processing is482 \ippdbcolumn{fault}s have largely been eliminated. Thus, automatic processing is 490 483 able to keep the data flowing even in the face of occasional network 491 484 glitches or hardware crashes. … … 496 489 As exposures are taken by the PS1 telescope \& GPC1 camera system, the 497 490 data from the 60 OTA devices are read out by the camera software 498 wsystem and written to disk on a collection of computers at the summit491 system and written to disk on a collection of computers at the summit 499 492 in the PS1 facility called ``pixel servers.'' After the images are 500 493 written to disk, a summary listing of the information about the 501 exposure and the chip images are added to the summit datastore. 494 exposure and the chip images are added to the summit datastore (an 495 internal http-based data sharing tool, see 496 Section~\ref{sec:datastore}). 502 497 503 498 During night-time operations, while the summit datastore is being … … 531 526 532 527 Once the chips for an exposure have all been downloaded, the exposure 533 is ready to be registered. In this context, ` registration' refers to528 is ready to be registered. In this context, ``registration'' refers to 534 529 the process of adding them to the database listing of known, raw 535 exposures (not to be confused with ` registration' in the sense of536 pixel re-alignment). The result of the registrationanalysis is an530 exposures (not to be confused with ``registration'' in the sense of 531 pixel re-alignment). The result of the \ippstage{registration} analysis is an 537 532 entry for each exposure in the \ippdbtable{rawExp} table, and one for 538 533 each chip in the \ippdbtable{rawImfile} table. These tables are 539 534 critical for downstream processing to identify what exposures are 540 available for processing in any other stage. At the registration535 available for processing in any other stage. At the \ippstage{registration} 541 536 stage, a large amount of descriptive metadata for each chip is added 542 537 to the \ippdbtable{rawImfile} table, the majority of which is … … 552 547 553 548 Unlike much of the rest of the IPP stage, the raw exposures may only 554 have a single entry in the registrationtables of the processing549 have a single entry in the \ippstage{registration} tables of the processing 555 550 database tables (\ippdbtable{rawExp} and \ippdbtable{rawImfile}). 556 551 557 For GPC1, the image registrationstage is also the stage at which the552 For GPC1, the \ippstage{registration} stage is also the stage at which the 558 553 \ippprog{burntool} analysis is run. This analysis is more completely 559 554 described in \citet{waters2017}. In brief, the \ippprog{burntool} … … 564 559 observation date and time listed in the headers, with the results 565 560 stored in an text table. As a result of the sequential nature of this 566 analysis, the registrationof exposures is blocked until the561 analysis, the \ippstage{registration} of exposures is blocked until the 567 562 \ippprog{burntool} has been run on the previous exposures. 568 563 569 Once the registration process has finished, new science exposures that570 have an \ippdbcolumn{obs_mode} value that indicates they are part of 571 a particular science survey are automatically launched into the 572 science analysis by defining entries for the \ippstage{chip} 573 processing stage, as described above. This analysis can be relaunched 574 multiple times, such as for the large scale PV3 reprocessing. 575 However, this automatic process ensures the shortest time between 576 observation and analysis, which is particularly important in the 577 search for transient sources.564 Once the \ippstage{registration} process has finished, new science 565 exposures that have an \ippdbcolumn{obs_mode} value that indicates 566 they are part of a particular science survey are automatically 567 launched into the science analysis by defining entries for the 568 \ippstage{chip} processing stage, as described above. The science 569 analysis of a given exposure can be relaunched multiple times, such as 570 for the large scale PV3 reprocessing. The automatically-launched 571 analysis process ensures the shortest time between observation and 572 analysis, particularly important in the search for transient sources. 578 573 579 574 \subsection{Chip Processing} … … 619 614 %% attempts to target the processing for each OTA to the machine on which 620 615 %% the data for that detector is stored. The output products are then 621 %% primarily saved back to the same machine. This ` targetted' processing616 %% primarily saved back to the same machine. This ``targetted'' processing 622 617 %% was an early design choice to minimize the system wide network load 623 618 %% during processing. In practice, as computer disks filled up at … … 647 642 648 643 The results of the image processing are then written to disk, 649 including the science, mask, and variance images, the background model 650 subtracted, the PSF model used in the photometry process, and a FITS 651 catalog of detected sources. Additional binned images of the full OTA 652 are also saved, providing $16\times{}16$ and $256\times{}256$ pixel 653 binning scales for quick visualization. The processing log and a 654 selection of summary metadata describing the processing results are 655 also written to disk. This metadata is used to populate a row in the 656 \ippdbtable{chipProcessedImfile} table (linked to the 657 \ippdbtable{chipRun} entry by a shared \ippdbcolumn{chip_id} value) 658 to indicate that the processing of this OTA is complete. 644 including the science, mask, and variance images, the binned 645 background model subtracted, the PSF model used in the photometry 646 process, and a FITS catalog of detected sources. Additional binned 647 images of the full OTA are also saved, using $16\times{}16$ and 648 $256\times{}256$ pixel binning scales for quick visualization. The 649 processing log and a selection of summary metadata describing the 650 processing results are also written to disk. This metadata is used to 651 populate a row in the \ippdbtable{chipProcessedImfile} table to 652 indicate that the processing of this OTA is complete. 659 653 660 654 As each OTA is processed independently of the others across a number 661 of computers, the \ippprog{pantasks} managing the jobs periodically 662 runs an \ippmisc{advance} task that checks that the number of rows in 663 \ippdbtable{chipProcessedImfile} with \ippdbcolumn{fault} equal to 664 zero matches the associated number of rows in \ippdbtable{rawImfile}. 665 If this condition is met, than all processing for that exposure is 666 finished, and the \ippdbcolumn{state} field is set to ``full''. If 667 the \ippdbtable{chipRun}.\ippdbcolumn{end_stage} field is set to 655 of computers, the \ippprog{pantasks} server managing the jobs 656 periodically runs an \ippmisc{advance} task that checks that the 657 number of rows in \ippdbtable{chipProcessedImfile} with 658 \ippdbcolumn{fault} equal to zero matches the associated number of 659 rows in \ippdbtable{rawImfile}. If this condition is met, than all 660 processing for that exposure is finished, and the \ippdbcolumn{state} 661 field is set to ``full''. If the 662 \ippdbtable{chipRun}.\ippdbcolumn{end_stage} field is set to 668 663 \ippstage{chip}, then no further action is taken. However, this field 669 664 is usually set to a subsequent stage (most often \ippstage{warp}), 670 thenan entry for this exposure is added to the \ippdbtable{camRun}665 in which case an entry for this exposure is added to the \ippdbtable{camRun} 671 666 table, and processing continues. 672 667 … … 710 705 to help guarantee a solution in the case of a modest pointing error. 711 706 The guess astrometry is used to match the reference catalog to the 712 observed stellar positions in the focal plane coordinate system. Once 713 an acceptable match is found, the astrometric calibration of the 707 observed stellar positions in the focal plane coordinate system 708 \citep[see][]{magnier2017.calibration}). 709 710 Once an acceptable match is found, the astrometric calibration of the 714 711 individual chips is performed, including a fit to a single model for 715 712 the distortion introduced by the camera optics. After the astrometic … … 720 717 used to generate synthetic w-band photometry for areas where no 721 718 PS1-based calibrated w-band photometry is available. For more 722 details, see \cite{magnier2017.calibration}. The result of these calibrations is723 stored as a single multi-extension FITS table containing the results 724 from each OTA as a separate extension.719 details, see \cite{magnier2017.calibration}. The result of these 720 calibrations is stored as a single multi-extension FITS table 721 containing the results from each OTA as a separate extension. 725 722 726 723 In addition to the astrometric and photometric calibrations, the … … 740 737 processed all at once, this update also updates the associated 741 738 \ippdbtable{camRun} entry, linked by the \ippdbcolumn{cam_id}. As 742 with the \ippstage{chip} stage, the739 with the \ippstage{chip} stage, if the 743 740 \ippdbtable{camRun}.\ippdbcolumn{end_stage} is for a subsequent 744 741 stage, an appropriate entry is added to the \ippdbtable{fakeRun} 745 table. 746 747 %%\subsection{Fake Analysis}748 %%\label{sec:fake}749 %% 750 %%The \ippstage{fake} stage was originally designed to do false source751 %%injection and recovery, in order to determine the detection efficiency752 %%of sources on the exposure. However, early in the design of the IPP,753 %%this task was moved to the rest of the photometry analysis done at the754 %%\ippstage{chip} stage. Removing the stage would require significant755 %%changes to the database schema. As a result, this conveniently named756 %%stage generally does no actual data processing, and consists mainly of757 %%database operations to move the exposure on to the \ippstage{warp}758 %%stage. The operations mimic the \ippstage{chip} stage, with759 %%individual jobs run for each OTA that update rows in the760 %%\ippdbtable{fakeProcessedImfile}, and an \ippmisc{advance} task that761 %%updates the \ippdbtable{fakeRun} table and promotes the exposure to762 %%the next stage by adding a row to the \ippdbtable{warpRun} table.742 table. 743 744 \subsection{Fake Analysis} 745 \label{sec:fake} 746 747 The \ippstage{fake} stage was originally designed to do false source 748 injection and recovery, in order to determine the detection efficiency 749 of sources on the exposure. However, early in the design of the IPP, 750 this task was moved to the rest of the photometry analysis done at the 751 \ippstage{chip} stage. Removing the stage would require significant 752 changes to the database schema. As a result, this conveniently named 753 stage generally does no actual data processing, and consists mainly of 754 database operations to move the exposure on to the \ippstage{warp} 755 stage. The operations mimic the \ippstage{chip} stage, with 756 individual jobs run for each OTA that update rows in the 757 \ippdbtable{fakeProcessedImfile}, and an \ippmisc{advance} task that 758 updates the \ippdbtable{fakeRun} table and promotes the exposure to 759 the next stage by adding a row to the \ippdbtable{warpRun} table. 763 760 764 761 \subsection{Image Warping} … … 776 773 described by a single tangent plane projection, or for larger regions 777 774 which have multiple projection centers. For the $3\pi$ survey, the 778 \ippmisc{RINGS.V3} tessellation was used that usedprojection centers775 \ippmisc{RINGS.V3} tessellation was used that arrange projection centers 779 776 spaced every four degrees in both RA and DEC, with $0\farcs{}25$ 780 777 pixels. These projections are further broken down into ``skycells'' … … 822 819 \label{sec:stack} 823 820 824 The skycell images generated by the \ippstage{warp} process are added825 together to make deeper, higher signal-to-noise images in the821 The skycell images generated by the \ippstage{warp} process can be 822 added together to make deeper, higher signal-to-noise images in the 826 823 \ippstage{stack} stage. These stacked images also fill in coverage 827 824 gaps between different exposures, resulting in an image of the sky … … 831 828 input images. During nightly science processing, the 8 exposures per 832 829 filter for each Medium Deep field are combined into a set of stacks 833 for that field. These so-called ` nightly stacks' are used by the830 for that field. These so-called ``nightly stacks'' are used by the 834 831 transient survey projects to detect faint supernovae, among other 835 832 transient events. For the PV3 $3\pi$ analysis, all images in each … … 840 837 For the PV3 processing of the Medium Deep fields, stacks have been 841 838 generated for the nightly groups and for the full depth using all 842 exposures, producing ``deep stacks''. In addition, a ` best seeing'839 exposures, producing ``deep stacks''. In addition, a ``best seeing'' 843 840 set of stacks have been produced \note{using image quality cuts to be 844 841 described: need input from MEH}. We have also generated 845 out-of-season stacks for the Medium Deep fields, in which all image 842 out-of-season stacks for the Medium Deep fields, in which all images 846 843 not from a particular observing season for a field are combined into a 847 844 stack. These later stacks are useful as deep templates when studying … … 850 847 season. 851 848 852 When a given set of \ippstage{stack} stage are defined, exposures with853 ex isting \ippstage{warp} entries that match the filter, position, and854 other criteria such as seeing are grouped by their skycell. An entry849 When a given set of \ippstage{stack} stage processing is defined, 850 exposures with existing \ippstage{warp} entries that match the filter, 851 position, and other criteria such as seeing are identified. An entry 855 852 is then added for each skycell in the \ippdbtable{stackRun} table, 856 853 with the \ippdbcolumn{warp_id} entries for the exposures added to the 857 854 \ippdbtable{stackInputSkyfile} table, linked to the 858 \ippdbtable{stackRun} entry by the \ippdbcolumn{stack_id} field. 859 This defines the mapping for which exposures contribute to the 860 \ippstage{stack}. This breaks exposures into single skycells, but as 861 adjacent \ippstage{stack} skycells may contain inputs from different 862 exposures, there is no simple way to group the processing at the 863 \ippstage{stack} stage into exposures. 855 \ippdbtable{stackRun} entry by the \ippdbcolumn{stack_id} field. This 856 defines the mapping for which exposures contribute to the 857 \ippstage{stack}. The \ippstage{stack} stage processing is performed 858 at the skycell level. 864 859 865 860 The \ippstage{stack} jobs pass the information about the input images … … 867 862 image combinations. See~\cite{waters2017} for details on the stack 868 863 combination algorithm. In addition to the standard image, mask, and 869 variance produced at other stage , additional images are constructed864 variance produced at other stages, additional images are constructed 870 865 with information about the contributions to each pixel. A number 871 866 image contains the number of input exposures used for each pixel, … … 887 882 deferred to the \ippstage{staticsky} stage. This separation is 888 883 maintained because the photometry analysis of the \ippstage{stack} 889 images is performed on all 5 filters simultaneously. By deferring 890 this analysis, the processing system may also decouple the generation 891 of the pixels from the source detection. This makes the sequencing of 892 analysis somewhat easier and less subject to blocks due to a failure 893 in the stacking analysis. Similar to the \ippstage{stack} stage, an 894 entry is created in the \ippdbtable{staticskyRun} table, linked to a 895 series of rows in the \ippdbtable{staticskyInput} table by a common 896 \ippdbcolumn{sky_id}, each of which also contains the appropriate 897 \ippdbcolumn{stack_id} entries for the skycell under consideration. 884 images, including convolved galaxy model fitting, is performed on all 885 5 filters simultaneously. By deferring this analysis, the processing 886 system may also decouple the generation of the pixels from the source 887 detection. This makes the sequencing of analysis somewhat easier and 888 less subject to blocks due to a failure in the stacking analysis. 889 Similar to the \ippstage{stack} stage, an entry is created in the 890 \ippdbtable{staticskyRun} table, linked to a series of rows in the 891 \ippdbtable{staticskyInput} table by a common \ippdbcolumn{sky_id}, 892 each of which also contains the appropriate \ippdbcolumn{stack_id} 893 entries for the skycell under consideration. 898 894 899 895 The input images are passed to the \ippprog{psphotStack} program, … … 927 923 The stack photometry output catalogs are re-calibrated for both 928 924 photometry and astrometry in a process very similar to the 929 \ippstage{camera} calibration stage. In the case of this 930 \ippstage{skycal} stage, each skycell is processed independently. 931 Because of this independence, when queued for processing, the entries 932 in the \ippdbtable{skycalRun} table contain the \IPPdbcolumn{sky_id} 933 and \ippdbcolumn{stack_id} entries of the parent data directly. As 934 in the \ippstage{camera} stage, the \ippprog{psastro} program reads in 935 the stack photometry catalog, and produces a calibrated output, with 936 format matching the input. A different processing recipe is supplied 937 to \ippprog{psastro}, which controls for the different data. The same 938 reference catalog is used for the \ippstage{camera} and 939 \ippstage{stack} calibration stages. Upon completion, the analysis 940 statistics are written to the \ippdbtable{skycalResult} table. 925 \ippstage{camera} calibration stage. Although the individual warps 926 which go into the stack are calibrated based on the \ippstage{camera} 927 stage analysis, there was some concern that these calibrations might 928 not be sufficiently well-defined for some of the input warps, biasing 929 the photometry of the stack. By re-calibrating the stacks, we can be 930 sure that the stack photometry as measured is tied to the photometric 931 reference system. 932 933 In the case of this \ippstage{skycal} stage, each skycell is processed 934 independently. Because of this independence, when queued for 935 processing, the entries in the \ippdbtable{skycalRun} table contain 936 the \ippdbcolumn{sky_id} and \ippdbcolumn{stack_id} entries of the 937 parent data directly. As in the \ippstage{camera} stage, the 938 \ippprog{psastro} program reads in the stack photometry catalog, and 939 produces a calibrated output, with format matching the input. A 940 different processing recipe is supplied to \ippprog{psastro}, which 941 controls for the different data. The same reference catalog is used 942 for the \ippstage{camera} and \ippstage{stack} calibration stages. 943 Upon completion, the analysis statistics are written to the 944 \ippdbtable{skycalResult} table. 941 945 942 946 \subsection{Forced Warp Photometry} … … 995 999 individual warp images used to generate the stack. This 996 1000 \ippstage{fullforce} analysis is performed on all warps for a single 997 skycell and filter as a single unit, as this matches the arrangement 998 of the input source catalog from the \ippstage{skycal} stage. When 999 processing is queued for this stage, an entry is added to the 1000 \ippdbtable{fullForceRun} primary database table linking to the 1001 specific \ippdbcolumn{skycal_id} entry that will be used as the 1002 catalog for the photometry. The \ippdbcolumn{warp_id} values for the 1003 input \ippstage{warp} stage images that contributed to the 1004 \ippstage{stack} associated with that \ippdbcolumn{skycal_id} are 1001 skycell and filter as a single unit within the processing database, 1002 while individual warps are processed individually in parallel as 1003 separate processing jobs. 1004 1005 When processing is queued for this stage, an entry is added to the 1006 \ippdbtable{fullForceRun} primary database table with a reference to 1007 the corresponding stack and \ippdbcolumn{skycal_id} entry that is the 1008 input source of detections to be measured. The \ippdbcolumn{warp_id} 1009 values for the input \ippstage{warp} stage images that contributed to 1010 the \ippstage{stack} associated with that \ippdbcolumn{skycal_id} are 1005 1011 then added to the \ippdbtable{fullForceInput} table, linked to the 1006 1012 primary table by the \ippdbcolumn{ff_id} identifier. The individual … … 1008 1014 stage image products along with the \ippstage{skycal} catalog to the 1009 1015 \ippprog{psphotFullForce} program. 1016 1017 %% In this program, the positions of sources are loaded from the input 1018 %% catalog. PSF stars are pre-identified from the stack image and a PSF 1019 %% model generated for each \ippstage{warp} image based on those stars, 1020 %% using the same stars for all warps to the extent possible (PSF stars 1021 %% which are excessively masked on a particular image are not used to 1022 %% model the PSF). The PSF model is fitted to all of the known source 1023 %% positions in the warp images. Aperture magnitudes, Kron magnitudes, 1024 %% and moments are also measured at this stage for each warp. Note that 1025 %% the flux measurement for a faint, but significant, source from the 1026 %% stack image may be at a low significance (less than the $5\sigma$ 1027 %% criterion used when the photometry is not run in this forced mode) in 1028 %% any individual warp image; the flux may even be negative for specific 1029 %% warps. When combined together, these low-significance measurements 1030 %% will result in a signficant measurement as the signal-to-noise 1031 %% increases by the square root of the number of measurements. The 1032 %% individual warp measurements are combined together to generate 1033 %% averages values within DVO. 1010 1034 1011 1035 The convolved galaxy models are also re-measured on the … … 1053 1077 images are matched. \note{discuss Alard-Lupton}. 1054 1078 1055 In the \ippstage{diff} stage, the IPP generates diff ferece images for1079 In the \ippstage{diff} stage, the IPP generates difference images for 1056 1080 appropriately specified pairs of images. It is possible for the 1057 1081 difference image to be generated from a pair of \ippstage{warp} stage 1058 1082 images, from a \ippstage{warp} and a \ippstage{stack} of some variety, 1059 1083 or from a pair of \ippstage{stack} stage images. During the PS1 1060 survey, pairs of exposures, call TTI pairs (see~\note{Survey1084 survey, pairs of exposures, called TTI pairs (see~\note{Survey 1061 1085 Strategy in Chambers et al}), were obtained for each pointing within a $\approx$ 1 1062 1086 hour period in the same filter, and to the extent possible with the … … 1074 1098 \ippdbtable{diffRun} table, and the appropriate input images are added 1075 1099 to the \ippdbtable{diffInputSkyfile} table, with one entry for each 1076 skycell that arecovered by the images. For a \ippstage{diff}1100 skycell that is covered by the images. For a \ippstage{diff} 1077 1101 generated from two \ippstage{warp} stage products, the input images 1078 1102 have their \ippdbcolumn{warp_id} values recorded in the … … 1095 1119 catalogs passed to the \ippprog{ppSub} program. This does the 1096 1120 subtraction, as well as the photometry of any sources detected in the 1097 \ippstage{diff} image. The algorithm used for PSF matching is 1098 described in \citet{waters2017}. Upon completion of these jobs, 1099 statistics about the processing are written to an entry in the 1121 \ippstage{diff} image. Sources may be detected as a positive source 1122 (flux in the minuend is higher than the subtrahend) or as a negative 1123 source (flux in the subtrahend is higher). The algorithm used for PSF 1124 matching is described in \citet{waters2017}. Upon completion of these 1125 jobs, statistics about the processing are written to an entry in the 1100 1126 \ippdbtable{diffSkyfile} table. An \ippmisc{advance} checks for the 1101 1127 completion of all of the components listed in … … 1111 1137 \begin{table}[hb] 1112 1138 \begin{center} 1113 \caption{DVO Database Tables\label{tab:DVO_schema}} 1139 \caption{DVO Database Tables\label{tab:DVO_schema} \note{fix order, 1140 drop invalid tables}} 1114 1141 \begin{tabular}{ll} 1115 1142 \hline … … 1155 1182 DVO tracks three main classes of information: 1) average properties of 1156 1183 astronomical objects; 2) measurements of those objects (from which the 1157 average properties are derived); 3) properties of imagewhich provided1184 average properties are derived); 3) properties of the images which provided 1158 1185 some or all of the measuements. Figure~\ref{fig:DVO_schema} 1159 1186 illustrates the schematic relationship between these types of … … 1182 1209 measurements; those which store information about the images; those 1183 1210 which store supporting information (metadata). 1184 1185 \subsubsubsection{Photcodes}1186 1187 % photcodes1188 DVO has a special metadata table called \ippdbcolumn{photcode} which1189 identifies the photometry filter systems. Entries in this table are1190 used to identify the source of measurements and images. Each row in1191 the \ippdbcolumn{photcode} table includes a \ippdbcolumn{photcode}1192 name, a unique numerical ID, and information about that photometry1193 system.1194 1211 1195 1212 DVO includes two major classes of database tables: those containing … … 1208 1225 levels each containing a finer mesh of regions covering the sky. 1209 1226 1227 \subsubsubsection{Photcodes} 1228 1229 % photcodes 1230 DVO has a special metadata table called \ippdbtable{photcode} which 1231 identifies the photometry filter systems. Entries in this table are 1232 used to identify the source of measurements and images. Each row in 1233 the \ippdbtable{photcode} table includes a \ippdbtable{photcode} 1234 name, a unique numerical ID, and information about that photometry 1235 system. 1236 1237 There are 3 classes of photcodes defined within the DVO system. One 1238 class of photcodes define the filter systems for the average 1239 photometry measurements; these are called \ippmisc{SEC} photcodes. A 1240 second class of photcode is associated with measurements from a 1241 specific camera for which image metadata is available are called 1242 \ippmisc{DEP} photcodes. There are also those measurements which come 1243 from external data sources for which DVO does not have any information 1244 to determine a calibration (e.g., instrumental magnitudes and detector 1245 coordinates). These are measurements are reference values and are 1246 assigned \ippmisc{REF} photcodes. 1247 1210 1248 The names for \ippmisc{SEC} photcodes are the names of filter systems, 1211 1249 such as $g,r,i$ or $J,H,K$. For \ippmisc{DEP} and \ippmisc{REF} … … 1229 1267 properties derived from multiple measurements, and for which the 1230 1268 measurement-to-image relationship is not provided. Ingests methods 1231 have been defined for examplefor 2MASS, WISE, Gaia, USNO-B. In each1269 have been defined, for example, for 2MASS, WISE, Gaia, USNO-B. In each 1232 1270 of these cases, the astrometric and photometric measurements are 1233 1271 stored in the \ippdbtable{Measure} table, with the data source … … 1258 1296 discussed below) and the astrometrically calibrated position. 1259 1297 Astrometric offsets for several systematic corrections discussed below 1260 are also defined for each measurement. Photometry from chip, warp,1261 and stackare all placed in the same table with photcodes1298 are also defined for each measurement. Photometry from \ippstage{chip}, \ippstage{warp}, 1299 and \ippstage{stack} are all placed in the same table with photcodes 1262 1300 distinguishing the source \note{show example of stack and warp 1263 1301 photcodes}. Since stacks and forced warp fluxes may have … … 1269 1307 For the warp images, we also measure the weak lensing KSB parameters 1270 1308 related to the shear and smear tensors \citep{1995ApJ...449..460K}. 1271 These measurements are stored in the \ippdb column{Lensing} table,1309 These measurements are stored in the \ippdbtable{Lensing} table, 1272 1310 along with the radial aperture fluxes for radii numbers 5, 6, \& 7 1273 1311 (respectively 3.0, 4.63, and 7.43 arcsec). This table contains one … … 1281 1319 sorted \ippdbtable{Lensing} table entries. \note{discuss failure of 1282 1320 the Lensing to Measure indexing} 1321 1322 \note{Average used above but defined below} 1283 1323 1284 1324 \subsubsubsection{Object Tables} … … 1359 1399 these photometric distance modulus measurements are not extremely 1360 1400 precise (see below), they provide a constraint on the distance is used 1361 in our analysis of the astrometry \citep[ ][see]{magnier2017.calibration}.1401 in our analysis of the astrometry \citep[see][]{magnier2017.calibration}. 1362 1402 1363 1403 In the \ippdbtable{Measure} table, there are three fields which … … 1416 1456 determined by the photometry calibration analysis and the astrometric 1417 1457 flat-field corrections determined by the astrometry calibration 1418 analysis \citep[][see]{magnier2017.calibration}. 1458 analysis \citep[see][]{magnier2017.calibration}. 1459 \note{use names and match DVO schema table} 1419 1460 1420 1461 \subsubsection{Sky Partition} 1421 1462 1422 DVO includes two major classes of database tables: those containing1463 \note{re-word this sentence} DVO includes two major classes of database tables: those containing 1423 1464 information about astronomical objects in the sky and those containing 1424 1465 other supporting information. The object-related tables are … … 1438 1479 on the one used by the Hubble Space Telescope Guide Star Catalog 1439 1480 files. \note{add figure} Level 0 is a single region covering the full 1440 sky. Level 1 divides the sky in Declination into bands1441 7.5\degree\ high. Level 2 subdivides these Declination bands in the1481 sky. Level 1 divides the sky in declination into bands 1482 7.5\degree\ high. Level 2 subdivides these declination bands in the 1442 1483 RA direction, with spacing related to the stellar density. Level 3 1443 1484 divides these RA chunks into 4 - 8 smaller partitions. This level … … 1459 1500 astronomical objects in the database files, with an associated maximum 1460 1501 of \approx 30 million measurements in these files. With the compression 1461 scheme described above, the largest database files are \approx1502 scheme described below, the largest database files are \approx 1462 1503 3GB, which can be loaded into memory in 30 seconds on the processing 1463 1504 machines that contain partition data. … … 1499 1540 tables are compressed using the (to date) experimental FITS binary 1500 1541 table compression strategy outlined by \note{REF}. Table compression 1501 is in generalan option in DVO; for the PV3 database, the large data1542 is an option in DVO; for the PV3 database, the large data 1502 1543 volume (70TB compressed) drove the decision to compress the tables. 1503 1544 … … 1505 1546 The FITS binary table compression scheme uses a strategy similar to 1506 1547 that used for FITS image compression (\note{REF}). The binary tabular 1507 data is compressed and stored in the ` HEAP' section of the FITS table1548 data is compressed and stored in the ``HEAP'' section of the FITS table 1508 1549 extension, with pointers to the compressed data stored in the regular 1509 1550 data section. Each column in the FITS table is compressed as one (or … … 1511 1552 column format (e.g., TFORM1) are replaced with keywords which describe 1512 1553 the location and size of the compressed data in the HEAP section; the 1513 information about the uncompressed data is moved to a keyword with ` Z'1554 information about the uncompressed data is moved to a keyword with ``Z'' 1514 1555 prepended (e.g., ZFORM1) and an additional field is added to define 1515 1556 the compression algorithm (e.g., ZCTYP1). The column names (e.g., … … 1533 1574 in the tables. In practice, we have chosen a default in which 1534 1575 floating point numbers use \code{GZIP_2}, character strings use 1535 \code{GZIP_1}, integers use \code{RICE}.1576 \code{GZIP_1}, and integers use \code{RICE}. 1536 1577 1537 1578 \subsubsection{Addstar : DVO Ingest} … … 1540 1581 Upon completion of the processing of each stage, the results of the 1541 1582 photometry analysis are stored in a large number of individual catalog 1542 files as described in ~\ref{XXX}. The data from these files are loaded1543 into a DVO database to define the astronomical objects and to allow 1544 for calibration analysis. The program which loads the data into the 1545 DVO database is called \ippprog{addstar}, and is associated with the 1546 the \ippstage{addstar} processing stage. The measurement catalogs 1547 generated by the \ippstage{camera}, \ippstage{staticsky},1548 \ippstage{s kycal}, \ippstage{fullforce}, and \ippstage{diff} stages1549 are processed loaded into DVOs in this fashion, although not every 1550 measurement in each catalog are included in the master DVO that is 1551 constructed. For a particular re-processing version, a single master 1552 DVO is constructed for the positive image stages (\ippstage{camera}, 1553 \ippstage{staticsky}, \ippstage{skycal}, \ippstage{fullforce}) and a 1554 separate one is constructed for the difference image analysis stage1555 results.1583 files as described in \cite{magnier2017.analysis}. The data from 1584 these files are loaded into a DVO database to define the astronomical 1585 objects and to allow for calibration analysis. The program which 1586 loads the data into the DVO database is called \ippprog{addstar}, and 1587 is associated with the the \ippstage{addstar} processing stage. The 1588 measurement catalogs generated by the \ippstage{camera}, 1589 \ippstage{staticsky}, \ippstage{skycal}, \ippstage{fullforce}, and 1590 \ippstage{diff} stages are processed loaded into DVOs in this fashion, 1591 although not every measurement in each catalog are included in the 1592 master DVO that is constructed. For a particular re-processing 1593 version, a single master DVO is constructed for the positive image 1594 stages (\ippstage{camera}, \ippstage{staticsky}, \ippstage{skycal}, 1595 \ippstage{fullforce}) and a separate one is constructed for the 1596 difference image analysis stage results. 1556 1597 1557 1598 The construction of the master DVO is performed in a hierarchical … … 1564 1605 databases together. In the merge, astronomical objects are joined 1565 1606 together using essentially the same rules as those used to associated 1566 detections into objects . One exception: the match radius may be1607 detections into objects with one exception: the match radius may be 1567 1608 chosen to be a different size depending on the data source. For 1568 1609 example, when WISE data is merged with PS1 data, as discussed below, a … … 1612 1653 a function of position in the camera (essentially an astrometric 1613 1654 flat-field correction), as a function of the brightness of the star 1614 (the so-called Koppenh\"offer effect, see~\ ref{magnier2017.calibration}), and as1615 a function of airmass and color ( Differential chromatic refraction).1655 (the so-called Koppenh\"offer effect, see~\citealt{magnier2017.calibration}), and as 1656 a function of airmass and color (differential chromatic refraction). 1616 1657 Once the systematic errors have been measured, they are applied back 1617 1658 to the measurements in the database. Within the DVO … … 1624 1665 astrometry is again performed this time using the corrected positions. 1625 1666 1667 \note{have eddie suggest wording here?} 1668 1626 1669 Photometric calibration consists of determination of zero points for 1627 1670 each exposure along with corrections for systematic effects. In this 1628 1671 case, we rely on efforts of our external collaborators for the initial 1629 1672 zero point determination. The team at CfA downloaded the per-exposure 1630 catalog files (` smf files') and determined the zero points of those1673 catalog files (``smf files'') and determined the zero points of those 1631 1674 exposures which were believed to be obtained in photometric 1632 conditions. This process, called ` \"ubercal', is described in detail1675 conditions. This process, called ``\"ubercal'', is described in detail 1633 1676 by \cite{2012ApJ...756..158S} for the first (PV1) version. In brief, photometric 1634 1677 periods, with time-scales of at least \note{half of a night}, are … … 1638 1681 parameters in this solution consist of a single zero point and airmass 1639 1682 slope for each photometric period along with a collection of 1640 flat-field offsets for several large time range (` flat-field1641 seasons' ). For the PV3 \"ubercal analysis, the flat-field offsets1683 flat-field offsets for several large time range (``flat-field 1684 seasons''). For the PV3 \"ubercal analysis, the flat-field offsets 1642 1685 were determined on a $2\times2$ grid for each chip and 5 flat-field 1643 1686 seasons were chosen (listed in Table~\ref{tab:flat-field-seasons}). … … 1673 1716 Telescope Sciences Institute through their Mikulski Archive for Space 1674 1717 Telescopes (MAST). The underying database at MAST is a copy of a 1675 database generated at the I nstitute for Astronomyby the subsystem1718 database generated at the IfA by the subsystem 1676 1719 called PSPS : the \note{define PSPS}. The construction of the PSPS 1677 1720 version of the PS1 database starts once the PS1 photometry and … … 1681 1724 1682 1725 The first stage of constructing the PSPS database consists of the 1683 generation of small files called ` batches' which contain a complete1726 generation of small files called ``batches'' which contain a complete 1684 1727 set of measurements for a small chunk of the database tables. The 1685 1728 program which is responsible for the construction of these batches is … … 1690 1733 One type of batch consists of measurements from the individual 1691 1734 exposures. These batches are generated based on the output catalog 1692 files generated at the \ippstage{camera} stage (` smf files'). The1735 files generated at the \ippstage{camera} stage (``smf files''). The 1693 1736 \ippprog{ipptopsps} program loads the complete set of measurements and 1694 1737 metadata from the smf catalog file, then queries the DVO database for … … 1757 1800 might be run and to regularly generate new commands based on that 1758 1801 concept. The ``tasks'' are defined using the opihi scripting language 1759 (also shared by DVO and other user-intera tive programs within the1802 (also shared by DVO and other user-interactive programs within the 1760 1803 IPP). 1761 1804 1762 Pantasksrepeatedly checks each task in an attempt to generate a new1763 command: we say pantasks attempts to `execute' the task in each of1805 \ippprog{Pantasks} repeatedly checks each task in an attempt to generate a new 1806 command: we say \ippprog{pantasks} attempts to ``execute'' the task in each of 1764 1807 these attempts. Tasks may specify the time between execution 1765 1808 attempts, with a 1 second default. … … 1773 1816 opihi language) which is run each time the task is executed. The 1774 1817 \code{task.exec} code may refer to variables or other data structures 1775 defined by the opihi language within the pantasksenvironment. Within1818 defined by the opihi language within the \ippprog{pantasks} environment. Within 1776 1819 a single \ippprog{pantasks} instance, all opihi variables and data 1777 1820 structures have global context (\ie, all are visible to all tasks). … … 1782 1825 1783 1826 Within the \ippprog{task.exec} macro, the command to be run must be 1784 defined with the function ` command'. Once the \ippprog{task.exec}1785 macro exits successfully, the defined command is the added to the list of jobs1827 defined with the function ``command''. Once the \ippprog{task.exec} 1828 macro exits successfully, the defined command is then added to the list of jobs 1786 1829 to be run within the UNIX environment. Jobs may be run in one of two 1787 1830 ways: locally or via the parallel processing system. The task, or the 1788 \ippprog{task.exec} macro, uses the ` host'command to define how to1789 run the job. If the host is set to ` local', then the job is run in1790 the background by pantasksitself (using the C \code{execvp}1831 \ippprog{task.exec} macro, uses the ``host'; command to define how to 1832 run the job. If the host is set to ``local'', then the job is run in 1833 the background by \ippprog{pantasks} itself (using the C \code{execvp} 1791 1834 function). Otherwise, the job is sent to the parallel processing 1792 1835 system to be run on another machine within the cluster. If the host 1793 is set to the special value ` anyhost', then the parallel processing1836 is set to the special value ``anyhost'', then the parallel processing 1794 1837 system is allowed to choose the processing computer arbitrarily. Any 1795 1838 other value is taken to be the DNS name of the computer on which this … … 1798 1841 that the job only runs on the specifically named computer. Otherwise, 1799 1842 the parallel processing system may choose to redirect the command to 1800 another computer (based on whatever rules are defined for the parallel1801 processing system).1843 another computer using its own rules, e.g. to balance processing load 1844 across the cluster. 1802 1845 1803 1846 When the \ippprog{task.exec} macro is run, the code may choose (e.g., 1804 1847 based on tests of some global variables) to exit the macro with an 1805 error condition, e.g., with the ` break' command. In this1848 error condition, e.g., with the ``break'' command. In this 1806 1849 circumstance, no job is produced by the task. The task will be tried 1807 1850 again the next time it is executed. This feature allows for the user … … 1818 1861 online user guide?} 1819 1862 1820 The option ` npending' may be used to limit the number of jobs which1863 The option ``npending'' may be used to limit the number of jobs which 1821 1864 are simultaneously executed for a specific task. For example, some 1822 1865 classes of jobs should only be run one-at-a-time because they are not 1823 1866 protected against collisions or they may overload a resource. The use 1824 of ` npending' allows these situations to be handled cleanly within1825 pantasks(avoiding cumbersome coding within with program or supporting1867 of ``npending'' allows these situations to be handled cleanly within 1868 \ippprog{pantasks} (avoiding cumbersome coding within with program or supporting 1826 1869 script). 1827 1870 1828 The option ` nmax' limits the total number of jobs which a task1871 The option ``nmax'' limits the total number of jobs which a task 1829 1872 generates. This option may be useful in cases where 1830 1873 \ippprog{pantasks} is used to perform a limited set of operations. 1831 1874 \note{do we actually use this in IPP?} 1832 1875 1833 The option ` trange' allows the user to restrict the time period during1876 The option ``trange'' allows the user to restrict the time period during 1834 1877 which the specific tasks is executed. This option is given with a 1835 1878 start and an end time for the limiting time range. These times may be … … 1846 1889 ranges may be specified \note{how are they evaluated?} 1847 1890 1848 The option \code{nice} specifies the ` nice' level at which the job is1891 The option \code{nice} specifies the ``nice'' level at which the job is 1849 1892 run when it is executed. The parallel processing system must respect 1850 1893 this concept. 1851 1894 1852 1895 The option \code{active} can be used to turn on and off a task for 1853 periods. Since a user command or a macro run by pantaskscan1896 periods. Since a user command or a macro run by \ippprog{pantasks} can 1854 1897 re-define task options, the \code{active} state may be changed 1855 1898 independently of the task execute. This is useful for keeping tasks … … 1857 1900 prevent them from running for some reason. 1858 1901 1859 \subsubsection{p antasks passes jobs to pcontrol}1902 \subsubsection{pcontrol} 1860 1903 1861 1904 Jobs which are generated by \ippprog{pantasks} may be run locally on … … 1883 1926 Similarly, the hosts may also have one of several states: off, down, 1884 1927 busy, idle, etc. A single host can accept a single job at a time. 1885 Multiple host sinstances corresponding to the same machine may be1928 Multiple host instances corresponding to the same machine may be 1886 1929 specified allowing a single computer to run more than one simultaneous 1887 1930 job. 1888 1931 1889 During operation, pcontrol accepts new jobs from pantasksand adds1890 them to the list of jobs to execute. It also accepts from pantasks1932 During operation, \ippprog{pcontrol} accepts new jobs from \ippprog{pantasks} and adds 1933 them to the list of jobs to execute. It also accepts from \ippprog{pantasks} 1891 1934 the names of computers on which it is allowed to run those jobs. 1892 1935 1893 \subsubsection{pc ontrol passes jobs to pclient}1894 1895 When pcontrolis provided with the name of a computer, it will attempt1936 \subsubsection{pclient} 1937 1938 When \ippprog{pcontrol} is provided with the name of a computer, it will attempt 1896 1939 to make an connection to that machine via ssh (or rsh?). When a 1897 1940 connection is made, the remote shell is used to run a special 1898 1941 interface program call \ippprog{pclient}. This program accepts 1899 command lines from pcontroland is responsible for executing the1942 command lines from \ippprog{pcontrol} and is responsible for executing the 1900 1943 individual commands in the local shell environment. A single ssh 1901 connection to a remote host keeps a single pclientshell running for a1944 connection to a remote host keeps a single \ippprog{pclient} shell running for a 1902 1945 somewhat arbirarly long time, excuting many shell commands as needed. 1903 1946 This architecture avoids wasting overhead making the ssh connection to … … 1906 1949 architecture is allowed to be very light and short running if needed. 1907 1950 1908 After pcontrol sends a job (commands) to a specific pclient, it checks1951 After \ippprog{pcontrol} sends a job (commands) to a specific \ippprog{pclient}, it checks 1909 1952 back occasionally to see if the command has been run and executed. If 1910 it has finished, then pcontrolwill query for the exit status, the1953 it has finished, then \ippprog{pcontrol} will query for the exit status, the 1911 1954 standard output and standard error streams from the command. (where 1912 do these go, back to pantasks?), with the results associated with the1913 job statistics. At that point, the pclienton the remote machine is1914 ready to accept a new job from pcontrol. If any jobs are pending in1915 the list of jobs known to pcontrol, it will send those jobs to any1955 do these go, back to \ippprog{pantasks}?), with the results associated with the 1956 job statistics. At that point, the \ippprog{pclient} on the remote machine is 1957 ready to accept a new job from \ippprog{pcontrol}. If any jobs are pending in 1958 the list of jobs known to \ippprog{pcontrol}, it will send those jobs to any 1916 1959 machines which are idle. 1917 1960 1918 While pcontrolinteracts with the many remote machines, it1919 occasionally interacts with pantasksto report the results from the1920 jobs it has been monitoring. Pantasksoccasionally requests a list of1961 While \ippprog{pcontrol} interacts with the many remote machines, it 1962 occasionally interacts with \ippprog{pantasks} to report the results from the 1963 jobs it has been monitoring. \ippprog{Pantasks} occasionally requests a list of 1921 1964 the completed jobs. It then requests the status information for each 1922 1965 completed job, including the standard error and standard output. As 1923 pantasksreceives this completion information, the jobs are removed1924 from the list managed by pcontrol. Thus pcontrolmaintains at most a1925 modest list of jobs which are ` in flight', leaving all interpretation1926 work to pantasks.1927 1928 At the pantasks level, the tasks define how pantasksshould use the1966 \ippprog{pantasks} receives this completion information, the jobs are removed 1967 from the list managed by \ippprog{pcontrol}. Thus \ippprog{pcontrol} maintains at most a 1968 modest list of jobs which are ``in flight'' , leaving all interpretation 1969 work to \ippprog{pantasks}. 1970 1971 At the \ippprog{pantasks} level, the tasks define how \ippprog{pantasks} should use the 1929 1972 exit status and output products from each job. For example, the 1930 1973 stderr and stdout may be specified to go to a file (with static name … … 1936 1979 started. This mode is useful for testing as all errors are reported 1937 1980 back to the opihi shell. However, when the user exits the shell, the 1938 pantasks instance exits, shutting down pcontroland all remote client1939 connections. In standard operations, pantasksis run in a client1981 \ippprog{pantasks} instance exits, shutting down \ippprog{pcontrol} and all remote client 1982 connections. In standard operations, \ippprog{pantasks} is run in a client 1940 1983 server mode. The server runs continuously in the background and 1941 1984 multiple users may connect via the \ippprog{pantasks_client} program. 1942 1985 Users can the send commands to the server to load scripts, add 1943 parallel hosts, check status, and start or stop the pantasks1986 parallel hosts, check status, and start or stop the \ippprog{pantasks} 1944 1987 operations. 1945 1988 … … 1956 1999 end 1957 2000 \end{verbatim} 1958 \caption{\label{fig:task_example} Example of a simple static1959 task in the opihi-based scripting language used by pantasks. In1960 this example, pantaskswould run a single instance of the command1961 ({\tt ls /tmp}) every 5 seconds, sending the stdout and stderr to1962 the listed files. }2001 \caption{\label{fig:task_example} Example of a simple static 2002 task in the opihi-based scripting language used by ippprog{pantasks}. In 2003 this example, ippprog{pantasks} would run a single instance of the command 2004 ({\tt ls /tmp}) every 5 seconds, sending the stdout and stderr to 2005 the listed files. } 1963 2006 \end{center} 1964 2007 \end{figure} … … 1968 2011 \subsubsection{Pantasks scripts: ippTasks} 1969 2012 1970 Pantasksprovides an environment in which commands can be generated2013 \ippprog{Pantasks} provides an environment in which commands can be generated 1971 2014 and extensive parallel processing managed. The details of how to 1972 2015 implement the different stages of IPP processing are captured in a 1973 collection of scripts written for pantasksin the \code{opihi}2016 collection of scripts written for \ippprog{pantasks} in the \code{opihi} 1974 2017 language. In general, each stage is defined by an associated script 1975 2018 collected together under the \ippmisc{ippTasks} collection. While … … 2001 2044 row in the result set, each column in the row is stored as a separate 2002 2045 line on the \ippmisc{page}, identified by the database column name. An 2003 additional line, the \ippdbcolumn{pantasksState}, is added so pantasks2046 additional line, the \ippdbcolumn{pantasksState}, is added so \ippprog{pantasks} 2004 2047 can manage the processing of the job which will be generated by this 2005 page. When the page is first generate , the2048 page. When the page is first generated, the 2006 2049 \ippdbcolumn{pantasksState} is set to \ippmisc{INIT}, indicating that 2007 2050 this \ippmisc{page} is a new addition to the \ippmisc{book}. Once all … … 2018 2061 construct the appropriate command-line (e.g., lines in the page may 2019 2062 include input file names and output file names for the specific item 2020 in the database). The resulting command becomes a job in the pantasks2063 in the database). The resulting command becomes a job in the \ippprog{pantasks} 2021 2064 collection of jobs. Most IPP analysis stages specify that the jobs 2022 are then sent to pcontrolfor parallel process. Before task generates2065 are then sent to \ippprog{pcontrol} for parallel process. Before task generates 2023 2066 the job, the \ippdbcolumn{pantasksState} is set to \ippmisc{RUN} so a 2024 2067 future execution of the task will not attempt to re-run this specific job. … … 2029 2072 this responsibility is left to the program which ran the analysis. 2030 2073 IPP analysis steps normally consist of two main elements: a C-language 2031 program to do the data analysis work and a supporting perl script2074 program to do the data analysis work and a supporting Perl script 2032 2075 which performs the database update upon completion. Upon completion, 2033 the pantasks\ippmisc{RUN} tasks is responsible for updating the2076 the \ippprog{pantasks} \ippmisc{RUN} tasks is responsible for updating the 2034 2077 status within the book, but not within the processing database. This 2035 split keeps the interactions at the pantaskslevel relatively light,2078 split keeps the interactions at the \ippprog{pantasks} level relatively light, 2036 2079 leaving the overhead of the database interaction within the job 2037 2080 running on one of the computing machines in the cluster. … … 2042 2085 clear jobs which have failed with one of the ephemeral failure modes 2043 2086 (see the discussion in Section~\ref{sec:processing.database}). This 2044 step allows these failures to be cleared from the system, a nd schedule2045 those jobs again for a retry.2087 step allows these failures to be cleared from the system, allowing 2088 those jobs to be scheduled again. 2046 2089 2047 2090 Similarly, some stages have \ippmisc{advance} tasks that update the … … 2066 2109 discussed above, the query to the processing database for new items is 2067 2110 restricted to a set of user-defined labels. A given instance of 2068 pantaskswill be supplied a set of labels which are then applied to2069 all tasks managed by that pantasks. For example, the pantaskswhich2111 \ippprog{pantasks} will be supplied a set of labels which are then applied to 2112 all tasks managed by that \ippprog{pantasks}. For example, the \ippprog{pantasks} which 2070 2113 manages the nightly processing of the basic science analysis stages 2071 ( chip - warp, stack, diff) is supplied with several labels which2114 (\ippstage{chip} - \ippstage{warp}, \ippstage{stack}, \ippstage{diff}) is supplied with several labels which 2072 2115 correspond to the different kinds of observations being performed. In 2073 2116 this way, the analysis of the nightly observations is kept separate … … 2083 2126 \note{then discuss the addstar sequences with manual triggering} 2084 2127 2085 Outside of the basic sequence of chip to warp, there is no single2128 Outside of the basic sequence of \ippstage{chip} to \ippstage{warp}, there is no single 2086 2129 natural next step. For example: a stack can be generated with any 2087 2130 number of input warps; a difference image can be generated between a … … 2103 2146 significantly reduced from the arbitrary case. 2104 2147 2105 {\em Queuing the diffs}is done by first examining the set of all2148 Queuing the diffs is done by first examining the set of all 2106 2149 exposures that have been taken at the summit on the current night of 2107 2150 observing, and querying information from each stage up through … … 2111 2154 group are then sorted by increasing observation date 2112 2155 (\ippdbcolumn{dateobs}). The database results for each stage 2113 ( chip-warp) are checked to ensure that the selected exposures have2156 (\ippstage{chip}-\ippstage{warp}) are checked to ensure that the selected exposures have 2114 2157 been successfully processed for all stages through \ippstage{warp}. 2115 2158 Exposure groups are ignored until all exposures have either been … … 2129 2172 that were excluded due to an odd number of exposures to be paired with 2130 2173 the exposure closest in time (with the exposure that was previously 2131 first ignored). Exposure pairs in which at least one exposure sdoes2174 first ignored). Exposure pairs in which at least one exposure does 2132 2175 not have a pre-existing difference image are queued for difference 2133 2176 image analysis. … … 2138 2181 exposures, as this is the number of exposures taken for each field. 2139 2182 Once this number was reached, no more exposures are expected, so 2140 \ippstage{stack} database entries can be queued withthe2183 \ippstage{stack} database entries can be queued from the 2141 2184 \ippstage{warp} entries. Again, failures and weather can reduce the 2142 2185 number of usable exposures. If no stack could be made for a given MD 2143 2186 field with the minimum number of inputs by the time of the 2144 end-of-night darks, stacks are generated using usingwhatever2187 end-of-night darks, stacks are generated using whatever 2145 2188 exposures are available. 2146 2189 … … 2161 2204 \ippdbtable{lapRun} entries can be queued that define a 2162 2205 \ippdbcolumn{filter} and a \ippdbcolumn{projection_cell} to be 2163 considered. A \ippdbcolumn{projection_cell} is a unit of sky defined 2164 to be a square four degrees on each side which has a single tangent 2165 plane projection \citep[][see]{waters2017}. \note{does waters2017 2166 discuss RINGS.V3? if not, where?} Once this entry is defined, is is 2167 populated with exposures (stored in the \ippdbtable{lapExp} table in 2168 the database), with any exposure located within 5 degrees of the 2169 center of the projection cell included. This radius ensures that any 2170 exposure that overlaps the projection cell will be included. Once the 2171 exposures have been added, the other exposures within the same 2172 sequence are checked to see if a \ippstage{chip} stage entry has been 2173 generated, and if so, the \ippdbcolumn{chip_id} for that entry is 2174 saved into the \ippdbtable{lapExp} as well. This linkage ensures that 2175 each exposure is only processed once. If no entry is found, a new 2176 \ippstage{chip} entry is queued for processing. The task periodically 2177 checks the status of the exposures in each \ippdbtable{lapRun} entry, 2178 and if they have all completed the \ippstage{warp} stage, then a 2179 \ippstage{stack} is queued for each skycell contained within the 2206 considered. These projection cells match the tangent plane centers 2207 used for the warp tessellation. A \ippdbcolumn{projection_cell} is a 2208 unit of sky defined to be a square four degrees on each side which has 2209 a single tangent plane projection \citep[][see]{waters2017}. 2210 \note{does waters2017 discuss RINGS.V3? if not, where?} Once this 2211 entry is defined, it is populated with all exposures (stored in the 2212 \ippdbtable{lapExp} table in the database) that are located 2213 within 5 degrees of the center of the projection cell included. This 2214 radius ensures that any exposure that overlaps the projection cell 2215 will be included. Once the exposures have been added, the other 2216 exposures within the same sequence are checked to see if a 2217 \ippstage{chip} stage entry has been generated, and if so, the 2218 \ippdbcolumn{chip_id} for that entry is saved into the 2219 \ippdbtable{lapExp} as well. This linkage ensures that each exposure 2220 is only processed once. If no entry is found, a new \ippstage{chip} 2221 entry is queued for processing. The task periodically checks the 2222 status of the exposures in each \ippdbtable{lapRun} entry, and if they 2223 have all completed the \ippstage{warp} stage, then a \ippstage{stack} 2224 is queued for each skycell contained within the 2180 2225 \ippdbcolumn{projection_cell}. 2181 2226 … … 2192 2237 system per-se, but only method of tracking the locations of files 2193 2238 within the file system, and of tracking duplicate copies of the same 2194 file. The core of \ippprog{Nebulous} is a dedicated database engine2195 which tracks ``storage objects'', the concept of a file existsin the2239 file. The core of \ippprog{Nebulous} is a mysql database which tracks 2240 ``storage objects'', the equivalent concept of a file within the 2196 2241 system. Each storage object may be associated with a number of copies 2197 2242 of the actual files on the disks in the storage system (called … … 2213 2258 stored on a specific computer (for at least one of the instances). 2214 2259 All of the analysis stages which interact with that chip could then be 2215 preferentially target ted to be run on that computer. The localization2216 in \ippprog{Nebulous} and the host target ted processing in pantasks2260 preferentially targeted to be run on that computer. The localization 2261 in \ippprog{Nebulous} and the host targeted processing in \ippprog{pantasks} 2217 2262 can therefore work together to encourage processing to require only 2218 2263 local disk access, reducing the I/O local on the network … … 2221 2266 practice, the as-built IPP has had sufficient network bandwidth that 2222 2267 this targetting was not required. In practice, due to the timing of 2223 hardware a quisition, occasional hardware failures, and other2224 organizational details, target ted processing has only been used to a2268 hardware acquisition, occasional hardware failures, and other 2269 organizational details, targeted processing has only been used to a 2225 2270 moderate degree within the Pan-STARRS cluster. \note{can we get a 2226 2271 number here?} … … 2229 2274 2230 2275 The user interfaces to Nebulous consist of command-line programs as 2231 well as APIs in both C and Perl. The basic user commands to interact 2232 with Nebulous are to 1) create a new storage object and associated 2233 instance; 2) add a new instance to an existing storage object; 3) 2234 remove (cull) an instance; 4) delete a storage object; and 5) find a 2235 file associated with a given storage objects. Note that these user 2236 commands do not affect the files on disk \note{true for cull?} 2237 (exception: the create function will create an empty file if one does 2238 not exist). They only change the state of the Nebulous database; it 2239 is the responsibility of the user program to read and write data to a 2240 file and to create the copies, etc. 2276 well as APIs in both C and Perl. 2277 2278 "The basic user commands to interact with Nebulous are to 1) query the 2279 database for an existing storage object, and find a valid file 2280 instance associated with that object; 2) create a new storage object, 2281 which instantiates an empty file that can be opened for writing; 3) 2282 replicate an existing storage object to create more file instances; 4) 2283 cull a single file instance of storage object from the cluster; and 5) 2284 remove a storage object, and ensure that all file instances are 2285 removed. The filehandles returned for newly created instances can 2286 then be opened for reading and writing data to that instance. 2287 2288 % The basic user commands to interact 2289 % with Nebulous are to 1) create a new storage object and associated 2290 % instance; 2) add a new instance to an existing storage object; 3) 2291 % remove (cull) an instance; 4) delete a storage object; and 5) find a 2292 % file associated with a given storage objects. Note that these user 2293 % commands do not affect the files on disk \note{true for cull?} 2294 % (exception: the create function will create an empty file if one does 2295 % not exist). They only change the state of the Nebulous database; it 2296 % is the responsibility of the user program to read and write data to a 2297 % file and to create the copies, etc. 2241 2298 2242 2299 For the Nebulous users, the identifier of a storage object is a unique … … 2247 2304 computer (HOST) and disk (VOL). The path and filename portions become 2248 2305 the identifier and are recorded in the \ippmisc{storage_object} table 2249 in the \ippmisc{ext ern_id} field. A storage object entry is then2250 created in the database for this id, and an instance of the file 2251 created on the specified node (or at random from available nodes if 2252 left empty).2306 in the \ippmisc{ext_id} field. A storage object entry is then created 2307 in the database for this id, and an instance of the file created on 2308 the specified node. If the host is unspecified, or if the specified 2309 volume is full, then a host is chosen at random from available nodes. 2253 2310 2254 2311 Files are stored on specific computers in a \ippprog{Nebulous} … … 2258 2315 \code{nebulous}. Beneath the top-level directory are 256 2259 2316 subdirectories with names of the form 00 - ff (i.e., 2 digit 2260 hexadecima te number). Each subdirectory again as 256 subdirectories2261 withthe same naming scheme.2317 hexadecimal number). Each subdirectory has 256 subdirectories with 2318 the same naming scheme. 2262 2319 2263 2320 The filename of an instance in Nebulous is deterministic and derived 2264 from the \ippmisc{ext ern_id}: the \ippmisc{extern_id} is hashed using2321 from the \ippmisc{ext_id}: the \ippmisc{ext_id} is hashed using 2265 2322 the SHA-1 function, and the first four hexadecimal digits of this hash 2266 2323 are separated into two two-digit strings and used as the top and … … 2269 2326 provide a unique SQL ID for each instance. Under the subdirectory 2270 2327 identified above, the disk file name is by appending the database 2271 instance id with a string derived from the \code{ext ern_id}: forward2328 instance id with a string derived from the \code{ext_id}: forward 2272 2329 slash characters are replaced in the name with colons so the string 2273 2330 can represent a file in the UNIX filesystem. For the example URI … … 2333 2390 using only the low-latency SOAP communications. 2334 2391 2335 \note{need a paragraph or two on stats: how many objects, how many 2336 instances?} 2392 The Nebulous database currently (2017 July) contains information about 2393 5,560,533,654 file instances for 3,543,240,981 storage objects. All 2394 raw data, along with permanent products such as catalogs and the 2395 current versions of full-sky stacks, are replicated to ensure at least 2396 two copies exist in case of hardware failure. Based on the most 2397 recent database ID values (which are unique and never reused), this 2398 corresponds to roughly half of all the storage objects and file 2399 instances ever created, due to the transient nature of many pipeline 2400 products. 2401 2402 % those numbers are so_id 6758205602 ins_id 9971666505, with ratios 2403 % 0.5242, 0.5576) 2337 2404 2338 2405 \subsection{Datastore repositories} … … 2343 2410 that exposes data in a common form. \note{add Isani / Hoblitt 2344 2411 reference?} One of the main datastores used by the IPP is the one 2345 located at the summit. This datastore exposes ,a list of the2412 located at the summit. This datastore exposes a list of the 2346 2413 exposures obtained since the start of the PS1 operations. Requests to 2347 2414 this server may restrict to the latest by time. Each row in the … … 2353 2420 associated with that exposure. This listing includes a link to the 2354 2421 individual chip FITS files as well as an md5 checksum. Systems which 2355 are allowed access may download chip FITS files via http requests to2422 are allowed access may download the raw chip FITS files via http requests to 2356 2423 the provided links. 2357 2424 … … 2509 2576 These storage nodes are not fully capable of completing all processing 2510 2577 on the short timescale necessary for each night's worth of data. To 2511 increase the processing capability, we have a large number2512 \note{actual number?} of ``compute'' nodes, that have small amounts of 2513 local storage, but are able to add processing power. In addition to 2514 the direct processing of image data, these nodes are also used to 2515 manage the \ippprog{Nebulous} file interface, as well as controlling 2516 the job scheduling for theprocessing.2578 increase the processing capability, we have 212 ``compute'' nodes that 2579 have small amounts of local storage, but are able to provide 2580 additional processing power. In addition to the direct processing of 2581 image data, these nodes are also used to manage the \ippprog{Nebulous} 2582 file interface, as well as controlling the job scheduling for the 2583 processing. 2517 2584 2518 2585 The final type of computer in the cluster are the database servers. … … 2631 2698 products are present. 2632 2699 2633 Approximately half of the chip through warp processing for the PV32634 reduction was performed on Mustang, with 201,040 / 375,573 of the 2635 \ippstage{camera} stage products reduced there. Only processing 2636 th rough the \ippstage{stack} stage was attempted, although with a2637 smaller fraction of the total compared to the \ippstage{camera} stage, 2638 with 290,257 / 998,886 being produced at Los Alamos. One reason for 2639 this decrease is that due to the memory constraints on the Mustang 2640 processing nodes, we were unable to run stacks with more than 25 2641 inputs there. Stacks with this larger number of inputs overflow the 2642 memory of the processing node, and as they do not have disk space 2643 available for use as virtual memory, cause the machine to hang until 2644 t he job time limit is reached. These stacks were instead processed on2645 the regular IPP cluster, where hosts with sufficent memory were 2646 available.2700 Approximately half of the \ippstage{chip} through \ippstage{warp} 2701 processing for the PV3 reduction was performed on Mustang, with 2702 201,040 / 375,573 of the \ippstage{camera} stage products reduced 2703 there. Only processing through the \ippstage{stack} stage was 2704 attempted, although with a smaller fraction of the total compared to 2705 the \ippstage{camera} stage, with 290,257 / 998,886 being produced at 2706 Los Alamos. One reason for this decrease is that due to the memory 2707 constraints on the Mustang processing nodes, we were unable to run 2708 stacks with more than 25 inputs there. Stacks with larger numbers of 2709 inputs overflow the memory of the processing node, and as they do not 2710 have disk space available for use as virtual memory, cause the machine 2711 to hang until the job time limit is reached. These stacks were 2712 instead processed on the regular IPP cluster, where hosts with 2713 sufficent memory were available. 2647 2714 2648 2715 \subsection{UH Cray Cluster}
Note:
See TracChangeset
for help on using the changeset viewer.
