Notebook Development and Testing

Slides:



Advertisements
Similar presentations
Introduction to Web Application Architectures Web Application Architectures 18 th March 2005 Bogdan L. Vrusias
Advertisements

1 CS428 Web Engineering Lecture 18 Introduction (PHP - I)
G51FSE Version Control Naisan Benatar. Lecture 5 - Version Control 2 On today’s menu... The problems with lots of code and lots of people Version control.
SubVersioN – the new Central Service at DESY by Marian Gawron.
The iPlant Collaborative Community Cyberinfrastructure for Life Science Tools and Services Workshop Discovery Environment Overview.
8/17/2015CS346 PHP1 Module 1 Introduction to PHP.
Version Control with git. Version Control Version control is a system that records changes to a file or set of files over time so that you can recall.
Module - How To Get Help The DSpace Course. Module Overview  By the end of this module you will:  Understand the help available from the DSpace community.
INTRODUCTION TO WEB DATABASE PROGRAMMING
Chapter 16 The World Wide Web Chapter Goals Compare and contrast the Internet and the World Wide Web Describe general Web processing Describe several.
CPS120: Introduction to Computer Science The World Wide Web Nell Dale John Lewis.
The DSpace Course Module – An introduction to DSpace.
1 Chapter 2 & Chapter 4 §Browsers. 2 Terms §Software §Program §Application.
© 2011 Delmar, Cengage Learning Chapter 7 Managing a Web Server and Files.
Creating Web Applications Using ASP.NET Chapter Microsoft Visual Basic.NET: Reloaded 1.
NA-MIC National Alliance for Medical Image Computing Why NITRC Matters to NA-MIC Steve Pieper, PhD.
10/5/2015CS346 PHP1 Module 1 Introduction to PHP.
ASP.NET.. ASP.NET Environment ASP.NET is Microsoft's programming framework that enables the development of Web applications and services. It is an easy.
WebVizOr: A Fault Detection Visualization Tool for Web Applications Goal: Illustrate and evaluate the uses of WebVizOr, a new tool to aid web application.
Test Data Management. Distributed Version Control Meant for source code, not data Local history of source is good –Often modified  interesting history.
Version Control.
Introduction to Version Control SE-2030 Dr. Rob Hasker 1 Based on material at and slides written.
The iPlant Collaborative Community Cyberinfrastructure for Life Science Tools and Services Workshop Discovery Environment Overview.
Designing Applications for Performance Appropriate I/O for Specific Task Minimize all Initiation and Termination Design Everything to be “Interactive”
The MSR-UR Curriculum Repository Tom Healy Lead Program Manager Microsoft Research University Relations.
May 2, 2013 An introduction to DSpace. Module 1 – An Introduction By the end of this module, you will … Understand what DSpace is, and what it can be.
Google Refine for Data Quality / Integrity. Context BioVeL Data Refinement Workflow Synonym Expansion / Occurrence Retrieval Data Selection Data Quality.
Web Design and Development. World Wide Web  World Wide Web (WWW or W3), collection of globally distributed text and multimedia documents and files 
Virtualization Technology and Microsoft Virtual PC 2007 YOU ARE WELCOME By : Osama Tamimi.
(1) Introduction to Continuous Integration Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of.
8 th Semester, Batch 2009 Department Of Computer Science SSUET.
Build and Deployment Process Understand NCI’s DevOps and continuous integration requirements Understand NCI’s build and distribution requirements.
Windows Vista Configuration MCTS : Internet Explorer 7.0.
1 Chapter 1 INTRODUCTION TO WEB. 2 Objectives In this chapter, you will: Become familiar with the architecture of the World Wide Web Learn about communication.
Subversion Subversion is a brand of version control software that is frequently used to store the code and documentation of a project so as to permit.
Git & Github Timothy McRoy.
Foundations of Data Science
External Web Services Quick Start Guide
CISC103 Web Development Basics: Web site:
CyVerse Discovery Environment
Perspectives on the intersection between computer science and psychology Developing reproducible – and reusable – methods through research software engineering.
Releases and developments
Unit 5: Providing Network Services
BTEC NCF Dip in Comp - Unit 15 Website Development Lesson 05 – Website Performance Mr C Johnston.

MapServer In its most basic form, MapServer is a CGI program that sits inactive on your Web server. When a request is sent to MapServer, it uses.
Instructor: Prasun Dewan (FB 150,
SimpleITK Historical Overview: Standing on the Shoulders of Giants
CISC103 Web Development Basics: Web site:
X in [Integration, Delivery, Deployment]
SimpleITK Historical Overview: Standing on the Shoulders of Giants
Computer Science I CSC 135.
Notebook Development and Testing
Notebook Development and Testing
SimpleITK Setup and Schedule
SimpleITK Setup and Schedule
Lecture 1: Multi-tier Architecture Overview
Managing a Web Server and Files
Module 01 ETICS Overview ETICS Online Tutorials
EMSE 6574 – Programming for Analytics: Python 101 – Python Enviornments Joel Klein.
Jupyter Notebooks in Dyalog APL
Introduction to Version Control with Git
CONTINUOUS INTEGRATION –WHY WE DO IT?
CI/CD Workflow and Event Pages
Python Crash Course CSC 576: Data Science.
SimpleITK Historical Overview: Standing on the Shoulders of Giants
SimpleITK Setup and Schedule
Your computer is the client
Overview on CI Use JJB (Jenkins Job Builder) to manage Jenkins jobs.
The New Tool in Your Kit: Azure Data Studio
Presentation transcript:

Notebook Development and Testing Ziv Yaniv1,2 , Bradley C. Lowekamp1,2 1National Institutes of Health 2Medical Science and Computing LLC

Jupyter Notebooks – no silver bullet but a respectable experimentation environment They aren’t as bad as some claim: Joel Grus’ JupyterCon 2018 talk “I Don’t Like Notebooks” (meme heavy, summary of sorts and comments below): Notebook state is hidden (cells not run in linear order) – interactive vs. batch environment. Results are only valid when the whole notebook is run from scratch. Encourage bad software practices (hacking) – interactive environments tend to do this, not specific to notebooks. Require installation of extensions to enable additional functionality – this is the modern plugin mindset. Developers don’t ship them with a requirements.txt file – this course just did. No testing or linting built-in – true but is readily addressed (see next slides). Useless code completion – move to jupyter lab. … Talk is

Maintaining Your Notebooks Notebooks are code and prose. Use a version control system (git, hg, svn). Test them, at least execution (pytest, nose2, unittest). Notebooks are not pure code, they may also contain execution results. Commit clean notebooks to avoid messy history and an unnecessarily large repository. Use a continuous integration service to run your tests (CircleCI, Travis CI, Appveyor).

SimpleITK Notebook Development and Testing One authoritative repository: github.com/InsightSoftwareConsortium/SimpleITK-Notebooks No direct commits to this repository, only pull requests. Code review and test (pytest) pull requests: Static: (1) ensure notebooks contain no output; (2) spellcheck all markdown/prose cells and comments in code. Dynamic: (1) Run the notebook using the jupyter nbconvert tool and analyze result (notebook in JSON format). Mark code cell meta-data: simpleitk_error_allowed (may or may not happen), simpleitk_error_expected; (2) regression testing – To Do. Deal with memory constraints on build machines.

SimpleITK Notebook Development and Testing Data sharing: Storage: (1) images on Girder data servers or on accessible web pages (raw url); (2) code repository contains data manifest file in JSON format with sha512 to validate download integrity. Retrieval: Cache images locally. (1) without internet access, bulk download script; (2) with internet access, lazy download. For additional details see: “SimpleITK Image-Analysis Notebooks: a Collaborative Environment for Education and Reproducible Research”, 31(3): 290-303, 2018.

Join the Community We welcome questions/requests/contributions from the community: Ask questions (itk discourse) Request features / examples. Report bugs. Contribute code or new notebooks. github.com/SimpleITK/SimpleITK and github.com/InsightSoftwareConsortium/SimpleITK-Notebooks