SlideShare a Scribd company logo
Scientific
Filesystem
Vanessa Sochat
vsochat@stanford.edu
1
“
Welcome!
2
“
Welcome!
3
The Scientific Filesystem
“
Let’s all be friends!
5
Once upon a time…
There was a scientist
The Scientific Filesystem
The Scientific Filesystem
The Scientific Filesystem
Foo Bar
foO baR
The Scientific Filesystem
12
science +
Pipeline foobar
foo bar
?
Pipeline foobar
foo bar
Pipeline foobar
foo bar
Pipeline foobar
foo bar
reproducible
Give it a try?
foo bar
foo bar
ENTRYPOINT
“
What about the human component
of reproducibility?
20
foo bar
content
metadata
foo bar
content
metadata
control
foo bar
content
metadata
control
Entrypoint
Environment
Metadata
Software
Libraries
Scripts
ENTRYPOINT
“
Where are foo and bar?
24
foo bar
content
metadata
control ENTRYPOINT
foo bar
content
metadata
control ENTRYPOINT
exec ./foobar
foo bar
content
metadata
control ENTRYPOINT
exec ./foobar
./foo./bar
foo bar
content
metadata
control ENTRYPOINT
exec ./foobar
./foo./bar
bar
foo
“
I just want to run bar.
29
foo bar
Solution 1: More containers
foo bar
Solution 1: More containers
If foo:
exec foo
else If bar:
exec bar
else:
exec foobar
Solution 2: Custom entrypoint
If foo:
exec foo
else If bar:
exec bar
else:
exec foobar
Solution 2: Custom entrypoint
BESTAPP=FOO
BESTAPP=BAR
EXPORT BESTAPP
bar
foo
“
The Linux Filesystem Hierarchy was
not optimized for scientific applications.
35
foo
control
Linux Filesystem Hierarchy
global content
foo metadata
control
foo bar
bar metadata
“
Let’s make a Scientific Filesystem!
39
What is SCIF?
▪ The specification defines a filesystem
structure and environment variable
namespace that interact with functions
to produce discoverable software
applications.
40
Client
A controller for a SCIF, either for a developer or a user
41
A third party software or tool that understands the
SCIF structure and interacts with all or some portion of
it
Integration
Goals
● Enable users to easily generate predictable,
discoverable applications
● A recipe format that maps to a SCIF, and vice versa
● Software to generate and manage SCIF
42
The Scientific Filesystem (SCIF) explicitly does not
implement, define, or provide in v0.2:
● Package Management
● Workflow Management
● A mechanism for authentication and authorization or
management of file permissions.
● Support or integration with non-linux operating
systems.
43
Non-Goals
“
The SCIF Recipe
44
Metadata
BESTAPP=foo
VERSION=1.0
Entry Points
./run-foo.sh
./run-bar.sh
Content
Files
Install Routine
The SCIF Recipe
45
Metadata
BESTAPP=foo
VERSION=1.0
Entry Points
./run-foo.sh
./run-bar.sh
Content
Files
Install Routine
%apprun hello-world
/bin/bash hello-world.sh
%appinstall hello-world
echo "echo 'Hello World!'" >> $SCIF_APPBIN/hello-world.sh
chmod u+x $SCIF_APPBIN/hello-world.sh
%appenv hello-world
THEBESTAPP=$SCIF_APPNAME
export THEBESTAPP
%applabels hello-world
MAINTAINER Vanessasaur
%apphelp hello-world
This is an example "Hello World" application.
You can install it to a Scientific Filesystem
(scif) with the command:
scif install hello-world.scif
hello-world.scif
https://sci-f.github.io/tutorial-quick-start
%app[action] [name]
scif run fooscif install recipe.scifrecipe.scif
write recipe install interact
Developer Interaction
scif run fooscif install recipe.scifrecipe.scif
write recipe install interact
User Interaction
scif run foo
interact
User Interaction
./container …
apps
run
exec
help
inspect
shell
pyshell
./scif apps
docker run vanessa/scif:hw apps
./scif-cli apps
./scif apps
docker run vanessa/scif:hw apps
./scif-cli apps
%apprun hello-world-echo
exec echo “Hello World!”
./scif run hello-world
docker run vanessa/scif:hw run hello-world-echo
./scif-cli run hello-world-echo
./scif run hello-world
docker run vanessa/scif:hw run hello-world-echo
./scif-cli run hello-world-echo
%apprun hello-world-echo
exec echo “Hello World!”
%appenv hello-world
OMG=TACOS
export OMG
./scif exec hello-world
docker run vanessa/scif:hw exec hello-world echo [e]OMG
./scif-cli exec hello-world echo [e]OMG
%appenv hello-world
OMG=TACOS
export OMG
./scif exec hello-world
docker run vanessa/scif:hw exec hello-world echo [e]OMG
./scif-cli exec hello-world echo [e]OMG
The Scientific Filesystem
./scif inspect hello-world
%apphelp hello-world
This is an example "Hello World" application.
You can install it to a Scientific Filesystem
(scif) with the command:
scif install hello-world.scif
./scif help hello-world
docker run vanessa/scif:hw help hello-world
./scif-cli help hello-world
%appenv hello-world
OMG=TACOS
export OMG
./scif shell hello-world
./scif shell hello-world
./scif pyshell
The Scientific Filesystem
The Scientific Filesystem has a default root on the host to
intentionally be separate from standard linux folders, and to not
interfere with likely existing folders (e.g., just /data or /apps).
/scif
/apps
/data
Architecture
foo runtime
scif entrypoint
foo
/foo
/bin
/lib
/scif
runscript
runscript.help
labels.json
environment.sh
/scif
/apps
Organization
foo runtime
scif entrypoint
foo
/foo
/bin
/lib
/scif
runscript
runscript.help
labels.json
environment.sh
/scif
/apps
← $PATH
← $LD_LIBRARY_PATH
Organization
./container apps …
foo
bar
/scif
/apps
/bar
/foo
Interaction
/foo
/bin
/lib
/scif
runscript
runscript.help
labels.json
environment.sh
/scif
/apps
./container exec bar [command]
Interaction
./container run bar [args]
/scif
/apps
/foo
/bin
/lib
/scif
runscript
runscript.help
labels.json
environment.sh
Interaction
./container shell bar $SCIF_SHELL
./container pyshell bar
/scif
/apps
/foo
/bin
/lib
/scif
runscript
runscript.help
labels.json
environment.sh
Interaction
“
Environment Namespace
70
The Scientific Filesystem
foo active bar sleeping
./container run foo
foo active bar sleeping
./container run foo
BESTAPP=FOO!
foo active bar sleeping
./container run foo
BESTAPP=FOO!
foo active
The Scientific Filesystem
“
What can I do with a SCIF?
77
- expose multiple container entrypoints
- package metrics/evaluation alongside the analysis
- SCIF apps as different working environments, runtime
- SCIF apps for different runtime contexts
“
What are we going to do today?
79
What are we going to do today?
Build Containers
Across different
container
technologies, all
with the same
scientific filesystem
(SCIF)
Run a Workflow
The same
snakemake
workflow made
modular by SCIF
applications
Evaluate
How do the
different container
technologies
compare?
80
The Scientific Filesystem
Scientific Pipeline
- Felix Bartusch
- variant calling
- Snakemake
82
“
What level of modularity?
83
- Level 1: Container Modularity
- One entrypoint
- Run the entire thing, or don’t
./container
- Level 2: Pipeline Modularity
- Multiple entrypoints
- Correspond to pipeline steps
- Step → collection of commands
./container apps
mapping
sorting
./container run mapping
sorting
mapping
- Level 3: Developer Modularity
- Expose lowest level executables
- Ideal for building pipelines
- Step → core tools
./container apps
bwa
samtools
./container run samtools
samtools
bwa
A Scientific Filesystem Design for Variant Calling
What level of modularity should be exposed to interact with the container?
./container apps
bwa
samtools
graphviz_create_dag
snakemake
bwa
samtools
graphviz_create_dag
snakemake
What did I do with the container?
Build Containers Run a Workflow Evaluate
https://github.com/sci-f/snakemake.scif
88
Container Comparisons
What steps did we take across container technologies?
1. build the container
3. run the entire workflow
0. install the software
2. run components of the workflow
What did we learn?
What did I learn about user interaction?
Good software without documentation and tutorial for several
use cases is akin to a treasure chest on a remote planet.
Container Comparisons
What steps did we take across container technologies?
0. install the software
Container Comparisons
What steps did we take across container technologies?
0. install the software
1. Documentation is the first interaction
a. Finding it
b. Is it up to date?
c. Is there too much detail?
d. Is there a clear avenue to get more help?
Container Comparisons
What steps did we take across container technologies?
1. build the container
0. install the software
Container Comparisons
What steps did we take across container technologies?
1. build the container
0. install the software
1. Examples are needed for learning
a. Does it show me all the things I might need?
i. binds
ii. options
iii. permissions
Container Comparisons
What steps did we take across container technologies?
1. build the container
2. run components of the workflow
0. install the software
Container Comparisons
What steps did we take across container technologies?
1. build the container
2. run components of the workflow
0. install the software
1. Establish boundaries
a. show inside vs. outside
Container Comparisons
What steps did we take across container technologies?
1. build the container
3. run the entire workflow
0. install the software
2. run components of the workflow
“
98
Run the entire workflow !
runc --root /tmp/runc run --bundle /tmp/runc snakemake.runc
docker run -v $PWD/data:/scif/data:z -v $PWD:/scif/data/snakemake:z -it
vanessa/snakemake.scif run snakemake all
singularity run --bind data/:/scif/data snakemake.simg run snakemake all
ch-run --cd $PWD -b data:/scif/data /var/tmp/snakemake.ch -- /opt/conda/bin/scif run
snakemake all
shifter --image=vanessa/snakemake.scif --volume `pwd`/data:/scif/data --workdir /scif/data
/opt/conda/bin/scif run snakemake all
runc --root /tmp/runc run --bundle /tmp/runc snakmake.runc
docker run -v $PWD/data:/scif/data:z -v $PWD:/scif/data/snakemake:z -it
vanessa/snakemake.scif run snakemake all
singularity run --bind data/:/scif/data snakemake.simg run snakemake all
ch-run --cd $PWD -b data:/scif/data /var/tmp/snakemake.ch -- /opt/conda/bin/scif run
snakemake all
shifter --image=vanessa/snakemake.scif --volume `pwd`/data:/scif/data --workdir /scif/data
/opt/conda/bin/scif run snakemake all
command
runc --root /tmp/runc run --bundle /tmp/runc snakemake.runc
docker run -v $PWD/data:/scif/data -v $PWD:/scif/data/snakemake -it
vanessa/snakemake.scif run snakemake all
singularity run --bind data/:/scif/data snakemake.simg run snakemake all
ch-run --cd $PWD -b data:/scif/data /var/tmp/snakemake.ch -- /opt/conda/bin/scif run
snakemake all
shifter --image=vanessa/snakemake.scif --volume `pwd`/data:/scif/data --workdir /scif/data
/opt/conda/bin/scif run snakemake all
executable
runc --root /tmp/runc run --bundle /tmp/runc snakmake.runc
docker run -v $PWD/data:/scif/data -v $PWD:/scif/data/snakemake -it
vanessa/snakemake.scif run snakemake all
singularity run --bind data/:/scif/data snakemake.simg run snakemake all
ch-run --cd $PWD -b data:/scif/data /var/tmp/snakemake.ch -- /opt/conda/bin/scif run
snakemake all
shifter --image=vanessa/snakemake.scif --volume `pwd`/data:/scif/data --workdir /scif/data
/opt/conda/bin/scif run snakemake all
executable + action
runc --root /tmp/runc run --bundle /tmp/runc snakemake.runc
docker run -v $PWD/data:/scif/data -v $PWD:/scif/data/snakemake -it
vanessa/snakemake.scif run snakemake all
singularity run --bind data/:/scif/data snakemake.simg run snakemake all
ch-run --cd $PWD -b data:/scif/data /var/tmp/snakemake.ch -- /opt/conda/bin/scif run
snakemake all
shifter --image=vanessa/snakemake.scif --volume `pwd`/data:/scif/data --workdir /scif/data
/opt/conda/bin/scif run snakemake all
container
runc --root /tmp/runc run --bundle /tmp/runc snakmake.runc
docker run -v $PWD/data:/scif/data -v $PWD:/scif/data/snakemake -it
vanessa/snakemake.scif run snakemake all
singularity run --bind data/:/scif/data snakemake.simg run snakemake all
ch-run --cd $PWD -b data:/scif/data /var/tmp/snakemake.ch -- /opt/conda/bin/scif run
snakemake all
shifter --image=vanessa/snakemake.scif --volume `pwd`/data:/scif/data --workdir /scif/data
/opt/conda/bin/scif run snakemake all
volumes / mounts
executable action options container options command
https://github.com/sci-f/snakemake.scif
106
“
Are the outputs comparable?
107
$ diff results/docker/calls.vcf results/singularity/calls.vcf
28c28
< ##bcftools_callCommand=call -mv -; Date=Sat Mar 10 01:07:35 2018
---
> ##bcftools_callCommand=call -mv -; Date=Fri Mar 9 20:07:47 2018
$ diff results/docker/calls.vcf results/runc/calls.vcf
28c28
< ##bcftools_callCommand=call -mv -; Date=Sat Mar 10 01:07:35 2018
---
> ##bcftools_callCommand=call -mv -; Date=Sat Mar 10 01:08:05 2018
$ diff results/docker/calls.vcf results/shifter/calls.vcf
28c28
< ##bcftools_callCommand=call -mv -; Date=Sat Mar 10 01:07:35 2018
---
> ##bcftools_callCommand=call -mv -; Date=Mon Mar 12 20:45:21 2018
$ diff results/docker/calls.vcf results/charliecloud/calls.vcf
28c28
< ##bcftools_callCommand=call -mv -; Date=Sat Mar 10 01:07:35 2018
---
> ##bcftools_callCommand=call -mv -; Date=Sat Mar 10 01:07:57 2018
Results are the same
vs
What did we learn?
Do the technologies produce the same result?
From the perspective of the scientist, we have comparable
resource usage and produce the same output.
“
What about resource usage?
110
singularity run --bind data/:/scif/data snakemake.simg run valgrind
singularity run --bind data/:/scif/data snakemake.simg run timeit
The Scientific Filesystem
The Scientific Filesystem
The Scientific Filesystem
The Scientific Filesystem
The Scientific Filesystem
...but how do my choices of the content, and host, influence my result?
Does Heap Consumption Vary Across Machine Type?
The Scientific Filesystem
sregistry build https://www.github.com/vsoch/hello-world
Local machine
build template
cloud builder cloud storage
sregistry pull sregistry pull vsoch/hello-world:latest...
n1-standard-1
n1-standard-2
n1-standard-4
n1-standard-8
n1-standard-1
n1-standard-2
n1-standard-4
n1-standard-8
n1-standard-1
n1-standard-2
n1-standard-4
n1-standard-8
Does Heap Consumption Vary Across Machine Type?
Variant calling memory usage is comparable from 1 to 64 cores
What is the optimal design?
tensorflow 17.0
tensorflow 17.1
theano 1.0.1
theano 1.0.0
tensorflow 17.0
tensorflow 17.1
theano 1.0.1
theano 1.0.0
“
TLDR
128
129
It does the same thing!
Containerization seems to produce a reproducible workflow.
We need to make tools that are usable across technologies.
Transparency, ease of use, and ability to contribute are important.
It’s our job to encourage introspection and evaluation of variation.
Once upon a time…
There was a scientist
There was a
reproducibility crisis
...but friends were there to help :)
https://sci-f.github.io/snamemake.scif
PRESENTER: VANESSASAURUS
THIS IS THE END
vsochat@stanford.edu

More Related Content

PDF
Intro to git (UT biocomputing 2015)
PDF
Getting root with benign app store apps vsecurityfest
PDF
Chef Conf 2015: Package Management & Chef
PDF
Open shift
PDF
Puppet Camp LA 2/19/2015
PDF
Package manages and Puppet - PuppetConf 2015
PDF
PHP Conference Argentina 2013 - Independizate de tu departamento IT - Habilid...
PDF
PuppetConf 2014 Killer R10K Workflow With Notes
Intro to git (UT biocomputing 2015)
Getting root with benign app store apps vsecurityfest
Chef Conf 2015: Package Management & Chef
Open shift
Puppet Camp LA 2/19/2015
Package manages and Puppet - PuppetConf 2015
PHP Conference Argentina 2013 - Independizate de tu departamento IT - Habilid...
PuppetConf 2014 Killer R10K Workflow With Notes

What's hot (13)

ODP
Continuous Delivery of Puppet Manifests
PPTX
An API Your Parents Would Be Proud Of
PDF
PDF
Scalable Deployment Architectures with TYPO3 Surf, Git and Jenkins
PDF
Battle of the Stacks
PPTX
Easy contributable internationalization process with Sphinx @ pyconsg2015
PPTX
Easy contributable internationalization process with Sphinx (PyCon APAC 2015 ...
PDF
Inside GitHub with Chris Wanstrath
PDF
Giving back with GitHub - Putting the Open Source back in iOS
PDF
Git inter-snapshot public
PDF
WordPress Plugin Unit Tests (FR - WordCamp Paris 2015)
PDF
PuppetConf 2016: The Future of Testing Puppet Code – Gareth Rushgrove, Puppet
PDF
How to Design a Program Repair Bot? Insights from the Repairnator Project
Continuous Delivery of Puppet Manifests
An API Your Parents Would Be Proud Of
Scalable Deployment Architectures with TYPO3 Surf, Git and Jenkins
Battle of the Stacks
Easy contributable internationalization process with Sphinx @ pyconsg2015
Easy contributable internationalization process with Sphinx (PyCon APAC 2015 ...
Inside GitHub with Chris Wanstrath
Giving back with GitHub - Putting the Open Source back in iOS
Git inter-snapshot public
WordPress Plugin Unit Tests (FR - WordCamp Paris 2015)
PuppetConf 2016: The Future of Testing Puppet Code – Gareth Rushgrove, Puppet
How to Design a Program Repair Bot? Insights from the Repairnator Project
Ad

Similar to The Scientific Filesystem (20)

PDF
The Modern Developer Toolbox
PDF
Tools That Help You Write Better Code - 2025 Princeton Software Engineering S...
PDF
Dependent things dependency management for apple sw - slideshare
PDF
How to Reverse Engineer Web Applications
PDF
SFScon19 - Paolo Boldi - Software Ecosystems as Networks the FASTEN project
PDF
Presentation of the FASTEN project, Conference SFScon, Bolzano, Italy
PPTX
Docker Starter Pack
PDF
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
PPTX
Introduction to Singularity and Data Containers
ODP
RichFaces - Testing on Mobile Devices
PDF
Tools to help you write better code - Princeton Wintersession
PDF
David container security-with_falco
PDF
SFScon 2020 - Paolo Boldi - Software Ecosystems as Networks Advances on the F...
PDF
Practical Chaos Engineering
PDF
How to deploy PHP projects with docker
PPTX
Rapid Prototyping Chatter with a PHP/Hack Canvas App on Heroku
PPTX
The Tale of a Docker-based Continuous Delivery Pipeline by Rafe Colton (ModCl...
PDF
Dockercon EU 2014
PDF
Devoxx 2014 [incomplete] summary
PPTX
Reproducible, Automated and Portable Computational and Data Science Experimen...
The Modern Developer Toolbox
Tools That Help You Write Better Code - 2025 Princeton Software Engineering S...
Dependent things dependency management for apple sw - slideshare
How to Reverse Engineer Web Applications
SFScon19 - Paolo Boldi - Software Ecosystems as Networks the FASTEN project
Presentation of the FASTEN project, Conference SFScon, Bolzano, Italy
Docker Starter Pack
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Introduction to Singularity and Data Containers
RichFaces - Testing on Mobile Devices
Tools to help you write better code - Princeton Wintersession
David container security-with_falco
SFScon 2020 - Paolo Boldi - Software Ecosystems as Networks Advances on the F...
Practical Chaos Engineering
How to deploy PHP projects with docker
Rapid Prototyping Chatter with a PHP/Hack Canvas App on Heroku
The Tale of a Docker-based Continuous Delivery Pipeline by Rafe Colton (ModCl...
Dockercon EU 2014
Devoxx 2014 [incomplete] summary
Reproducible, Automated and Portable Computational and Data Science Experimen...
Ad

More from Vanessa S (20)

PDF
The Stories We Tell Ourselves
PDF
Singularity Registry HPC
PPTX
Research Software Engineering at Stanford University
PPTX
Research Software Engineering at Stanford
PPTX
Adding An Operator to Airflow: A Contributor Overflow Exception
PPTX
The Research Software Encyclopedia
PDF
Singularity Containers for Scientific Compute
PPTX
Laboratory of NeuroGenetics QA (8/2010)
PDF
PEARC17: Reproducibility and Containers: The Perfect Sandwich
PPTX
Building Tools for Neuroimaging
PPTX
Brain Maps like Mine
PPTX
Qualifying Exam Presentation
PDF
Pre-Proposal Presentation
PDF
Independent component analysis
PDF
Subnetworks in Schizophrenia, fMRI
PPTX
Research in Progress April 2014
PDF
Research in Progress Presentation
PDF
Introduction to Machine Learning Lecture
PDF
Introduction to Neuroimaging Informatics
PDF
ISIS Clustering Functional Connectivity
The Stories We Tell Ourselves
Singularity Registry HPC
Research Software Engineering at Stanford University
Research Software Engineering at Stanford
Adding An Operator to Airflow: A Contributor Overflow Exception
The Research Software Encyclopedia
Singularity Containers for Scientific Compute
Laboratory of NeuroGenetics QA (8/2010)
PEARC17: Reproducibility and Containers: The Perfect Sandwich
Building Tools for Neuroimaging
Brain Maps like Mine
Qualifying Exam Presentation
Pre-Proposal Presentation
Independent component analysis
Subnetworks in Schizophrenia, fMRI
Research in Progress April 2014
Research in Progress Presentation
Introduction to Machine Learning Lecture
Introduction to Neuroimaging Informatics
ISIS Clustering Functional Connectivity

Recently uploaded (20)

PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Modernizing your data center with Dell and AMD
PDF
Unlocking AI with Model Context Protocol (MCP)
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Encapsulation theory and applications.pdf
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
cuic standard and advanced reporting.pdf
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Machine learning based COVID-19 study performance prediction
PDF
Empathic Computing: Creating Shared Understanding
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
NewMind AI Monthly Chronicles - July 2025
PPTX
A Presentation on Artificial Intelligence
Digital-Transformation-Roadmap-for-Companies.pptx
Encapsulation_ Review paper, used for researhc scholars
Diabetes mellitus diagnosis method based random forest with bat algorithm
Per capita expenditure prediction using model stacking based on satellite ima...
Modernizing your data center with Dell and AMD
Unlocking AI with Model Context Protocol (MCP)
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Reach Out and Touch Someone: Haptics and Empathic Computing
The AUB Centre for AI in Media Proposal.docx
Encapsulation theory and applications.pdf
Advanced methodologies resolving dimensionality complications for autism neur...
cuic standard and advanced reporting.pdf
The Rise and Fall of 3GPP – Time for a Sabbatical?
Dropbox Q2 2025 Financial Results & Investor Presentation
Machine learning based COVID-19 study performance prediction
Empathic Computing: Creating Shared Understanding
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
NewMind AI Monthly Chronicles - July 2025
A Presentation on Artificial Intelligence

The Scientific Filesystem