Developing JWST Pipelines at STScI Robert Jedrzejewski.

Slides:



Advertisements
Similar presentations
Configuration management
Advertisements

Designing Reusable Frameworks for Test Automation
Creating a Program In today’s lesson we will look at: what programming is different types of programs how we create a program installing an IDE to get.

Proposed CalJWST Structure M. Robberto. Cross-Instrument Rationale 2 level processing  CALinsA: from RAMP to calibrated images  CALinsB: associated.
STScI TIPS 19 January 2006 Removing SAA-Persistent Cosmic Ray Flux from NICMOS Anton Koekemoer (INS) 1 Removing SAA-Persistent Cosmic Ray Flux from NICMOS.
Lab#1 (14/3/1431h) Introduction To java programming cs425
Concepts of Version Control A Technology-Independent View.
HAWCPol / SuperHAWC Software & Operations J. Dotson July 28, 2007.
Chapter 8: Introduction to High-level Language Programming Invitation to Computer Science, C++ Version, Third Edition.
Chapter 8: Introduction to High-Level Language Programming Invitation to Computer Science, C++ Version, Fourth Edition.
Programming. Software is made by programmers Computers need all kinds of software, from operating systems to applications People learn how to tell the.
INTRODUCTION TO JAVA PROGRAMMING Chapter 1. What is Computer Programming?
Copyright © 2001 by Wiley. All rights reserved. Chapter 1: Introduction to Programming and Visual Basic Computer Operations What is Programming? OOED Programming.
Zach Miller Condor Project Computer Sciences Department University of Wisconsin-Madison Flexible Data Placement Mechanisms in Condor.
Overview of JSP Technology. The need of JSP With servlets, it is easy to – Read form data – Read HTTP request headers – Set HTTP status codes and response.
CASE Tools And Their Effect On Software Quality Peter Geddis – pxg07u.
JWST Calibration Pipeline Software Requirements Walkthrough June 10, 2010 Robert Jedrzejewski Science Software Branch/STScI.
Learning Objectives Data and Information Six Basic Operations Computer Operations Programs and Programming What is Programming? Types of Languages Levels.
Basics of Web Databases With the advent of Web database technology, Web pages are no longer static, but dynamic with connection to a back-end database.
6e-1 Science Data Products Daryl Swade DMS Systems Engineer S&OC System Design Review #1.
Data Management Subsystem: Data Processing, Calibration and Archive Systems for JWST with implications for HST Gretchen Greene & Perry Greenfield.
NGC 6217 in DSI mode with F658N Mosaic before new superbias why we don’t release images until after SMOV! ACS CCD monitoring and pipeline calibration review.
Software Engineering 2003 Jyrki Nummenmaa 1 CASE Tools CASE = Computer-Aided Software Engineering A set of tools to (optimally) assist in each.
DCS Overview MCS/DCS Technical Interchange Meeting August, 2000.
Dec 2, 2014 Hubble Legacy Archive and Hubble Source Catalog Rick White & Brad Whitmore Current teams: HLA: Michael Dulude, Mark Kyprianou, Steve Lubow,
SPACE TELESCOPE SCIENCE INSTITUTE Operated for NASA by AURA COS Pipeline Language(s) We plan to develop CALCOS using Python and C Another programming language?
File FormatsFile Formats File Name ConventionsFile Name Conventions File ContentsFile Contents Association Contents & RulesAssociation Contents & Rules.
Data Management Subsystem Jeff Valenti (STScI). DMS Context PRDS - Project Reference Database PPS - Proposal and Planning OSS - Operations Scripts FOS.
1 The WFC3 Quicklook Project 17 January What is Quicklook? The WFC3 Quicklook project is a complete archive of all ~90k in-flight WFC3 images.
Software Development Software Testing. Testing Definitions There are many tests going under various names. The following is a general list to get a feel.
Navigation and Ancillary Information Facility NIF Preview of a Web-based GUI Interface to SPICE “WebGeocalc” The NAIF and UCD Teams August 22, 2011 SPICE.
SPACE TELESCOPE SCIENCE INSTITUTE Operated for NASA by AURA COS Status FUV Detector “1-bounce design” NUV Detector HST aberration fully-corrected Calibration.
CSCI-383 Object-Oriented Programming & Design Lecture 13.
COS PIPELINE PDR Daryl Swade December 7, 2000OPUS / OTFR Space Telescope Science Institute 1 of 24 Science Data Processing
Guide to Programming with Python Chapter One Getting Started: The Game Over Program.
C++ History C++ was designed at AT&T Bell Labs by Bjarne Stroustrup in the early 80's Based on the ‘C’ programming language C++ language standardised in.
ACS Drizzling Overview J. Mack; DA Training 10/5/07 Distortion Dither Strategies MultiDrizzle ‘Fine-tuning’ Data Quality Photometry.
JWST Calibration mini-summit STScI June 13, 2008.
Coding the JWST Calibration Pipeline(s) 2010 Calibration Workshop Robert Jedrzejewski/STScI.
JWST Calibration Error Budget Jerry Kriss. 15 March 20072/14 JWST Flux & Wavelength Calibration Requirements SR-20: JWST shall be capable of achieving.
Where will PyRAF lead us?: The future of data analysis software at STScI Perry Greenfield Science Analysis Tools Project Space Telescope Science Institute.
WFPC2 UPDATE TIPS : August 15, 2002 L.M. Lubin New WFPC2 Documentation 1.Cycle 12 Instrument Handbook (V7.0, Biretta et al.)  Updated information on the.
SPACE TELESCOPE SCIENCE INSTITUTE Operated for NASA by AURA WFC3 and StarView
SSC SI Data Processing Pipeline Plans Tom Stephens USRA Information Systems Development Manager SSSC Meeting – Sept 29, 2009.
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
Chapter One An Introduction to Programming and Visual Basic.
Overall ArchitectureOverall Architecture Use of AssociationsUse of Associations Outline of ProcessingOutline of Processing Reuse of CALACS and CALNIC CodeReuse.
Overall ArchitectureOverall Architecture Outline of ProcessingOutline of Processing Reuse of CALACS and CALNIC CodeReuse of CALACS and CALNIC Code Processing.
Modularity Computer Science 3. What is Modularity? Computer systems are organized into components called modules. The extent to which this is done is.
JWST Pipeline/Analysis Tools Perry Greenfield Science Software Branch.
Java Example Presentation of a Language. Background Conception: Java began as a language for embedded processors in consumer electronics, such as VCR,
ADPS Science Software Development Bryan Franz NASA Ocean Biology Processing Group Aquarius Data Processing Workshop, NASA/GSFC, March 2007.
Chapter 11: Advanced Inheritance Concepts. Objectives Create and use abstract classes Use dynamic method binding Create arrays of subclass objects Use.
STScI 2010 Calibration Workshop The NICMOS Legacy Archival Recalibration Project Anton M. Koekemoer and the STScI NICMOS Team (E. Barker, E. Bergeron,
WFC3 PIPELINE CDR Jim Rose October 16, 2001OPUS Science Data Processing Space Telescope Science Institute 1 of 13 Science Data Processing
Duke CPS Programming Heuristics l Identify the aspects of your application that vary and separate them from what stays the same ä Take what varies.
1 Future Directions in HST Data Processing 19 November 2004.
STScI TIPS, 15 January 2004MultiDrizzle Overview - Anton Koekemoer1 MultiDrizzle Status and Development Overview Anton Koekemoer, ACS+WFPC2 Branch Project.
GPU Computing for GIS James Mower Department of Geography and Planning University at Albany.
1 SPIE Astronomical Telescopes + Instrumentation | 26 June - 1 July 2016 | Edinburgh, United Kingdom Investigating interoperability of the LSST Data Management.
HST and JWST Pipelines and Reference Files
SOAR Data Reduction Pipelines
Learning to Program D is for Digital.
JWST Pipeline Overview
Application Development Theory
Programming.
Tonga Institute of Higher Education IT 141: Information Systems
Tonga Institute of Higher Education IT 141: Information Systems
VoiceXML An investigation Author: Mya Anderson
Presentation transcript:

Developing JWST Pipelines at STScI Robert Jedrzejewski

Who we are The Science Software Branch at STScI 16 members Most have an astronomy background 6 have PhDs Combined experience in group: 125 years Combined experience at STScI: 200 years

What we do Develop HST calibration pipelines STSDAS/TABLES PyRAF, PyFITS, STScI_Python HST Exposure Time Calculators Other smaller projects (Gemini/GOODS/Hubble Legacy Archive/GoogleSky/JWST Backplane Stability…)

Development Experience Python Java C/C++ Fortran spp/cl IDL (Perl/Assembly/Tcl…)

Our preferred development model Python! We find we can be extremely productive writing in Python Speed is occasionally an issue, so we use C extensions when necessary Very little pipeline code requires performance optimization

Development style Use version control (subversion) Use regression tests + nightly builds + web reporting tools Trac for problem tracking/wiki for information dissemination Unit/doc tests Multiple platforms (Linux/Mac/Solaris/Windows)

How we did HST pipelines Calfoc, calfos, calhrs, calwfpc, calwp2 –First generation pipelines, written in spp, read GEIS files Calstis, calnic(a/b) –Second generation, written in C using hstio (which wraps IRAF imio libraries) to read multiple extension FITS files Calacs –Borrowed much code from calstis imaging Calwfc3 –Borrowed much code from calacs, calnic Calcos –Third generation, written in Python (+ c where needed) Later pipelines were more likely to be used by IDTs for calibrating ground test data

More on HST pipelines Pipeline operation is data-driven –Calibration steps as header keywords: FLATCORR=PERFORM/OMIT/COMPLETE/SKIPPED –Reference file names as header keywords FLATFILE=oref$g _flt.fits This decouples some of the intelligence from the code –No need to rebuild code if step or reference file changes

Multidrizzle Multidrizzle is used by the ACS and WFPC2 pipelines to combine images with small position offsets (dithered), removing cosmic rays It is a Python application that can be used with ACS, STIS, WFPC2, NICMOS and WFC3 data This breaks from our ‘tradition’ of having 1 calibration pipeline program for each instrument

How we see the JWST Pipelines A series of calibration steps Calibration Step Input stage Output stage Reference File

Early design ideas No need to have separate pipeline programs for each JWST instrument –Many calibration steps depend on detector, and JWST instruments use detectors of the same type –We can use the same code, instead of having to replicate it (and maintain it) in more than one place –Some calibration steps will probably be identical for all JWST data (e.g. the MASKCORR step, where a static mask from a reference is applied to the DQ array of the data)

Try not to make the mistakes we made with HST Use the same keywords for the same quantities Use the same file/association structure Use the same algorithms to do the same calibration –Unless a team shows that a given algorithm does not work for their instrument –Even then, try and keep as much code common as possible, only breaking out the code that is different –Sometimes it is possible to encapsulate the differences in the reference files, keeping the code the same

JWST Pipelines (continued…) Python gives us object-oriented capabilities –‘input_stage’ and ‘output_stage’ are objects that encapsulate information on their state and on how to calibrate themselves –For example, they might be NIRSPEC IFU data objects, or MIRI imaging data objects –When executing a given step, they may use their own custom method, or else defer to a method that they inherit from a more ‘generic’ datatype –E.g. MIRI imaging data and NIRCAM imaging data may both use the flatfield() method of the JWSTImagingData class, from which they both inherit

JWST Pipelines (continued…) The inheritance hierarchy encapsulates information about what is the same and what is different about JWST data types –We can mix in behaviors from different types of object, as necessary –But, to the extent that is possible, we try and keep as much the same as possible –The people who inherit this project will thank us

What goes in? IDTs and instrument teams at STScI will figure out: –Which steps are needed, and their ordering –Which instruments/modes use the steps –What each step does –What calibration reference data are needed –What tests the code needs to pass

Facilitating the process Calibration data will be in a “public” repository This will include: –Code –Test data –Documentation

Facilitating… We will encourage everyone to try out our algorithms as we develop them And we encourage everyone to contribute their own algorithms We’ll handle keeping teams synchronized by versioning and providing different builds –E.g. Team A may still be testing build X, when team B needs to test the next stage of functionality in build X.1 –When Team B is ready to test the functionality in build X.1, there may already be build X.2 (which includes the functionality in build X.1 as well as new functionality) –In the end, all the teams will test the same code

Facilitating How do we know that the code does the ‘right’ thing? –Teams provide test data with test results –Then we know that the result is correct because it reproduces team-supplied answers –Test results could be actual data (e.g. FITS files) Pixels in pipeline-calibrated data should be identical within +/- –Or results of analysis Aperture photometry should be the same to within +/-

Interfacing with other languages If teams develop code that does a lot of fancy processing, we can try to include it by wrapping Python talks to C/C++ using C extensions An existing C function can be wrapped so that Python objects can be passed to C/C++, and C objects passed back to Python We can wrap relatively simple C functions –Arguments are arrays or primitive datatypes (integer/float/string…) –No objects as arguments –Structs are OK, as long as they are simple (flat) –Play nice with memory

Wishlists We don’t need to feel constrained by HST What are the biggest deficiencies in HST? –Best reference files and best calibration steps can be determined by querying a service Don’t need to rely on HST archive to find these out –Reference files can be downloaded as needed –Even calibration code can be updated as needed (don’t need to wait 6 months for the next STSDAS release)

Wishlists Tell us what you want! –The earlier the better –Some aspects of the overall architecture are still flexible And not just pipeline calibration code –We are going to need tools for data analysis, evaluation, interpretation, visualization –Reference file generation