Slide 1

Slide 1 text

  Zen And The aRt Of Workflow Maintenance Jennifer Bryan 
 RStudio, University of British Columbia @JennyBryan @jennybc

Slide 2

Slide 2 text

rstd.io/jenny-latinr links to stuff in this talk!!

Slide 3

Slide 3 text

Is data science just a trendy term for statistics? 7 Life-Changing Workflow Tips Every useR Should Know

Slide 4

Slide 4 text

Is data science just a trendy term for statistics?

Slide 5

Slide 5 text

Is data science just a trendy term for statistics? No.

Slide 6

Slide 6 text

Import Tidy Communicate Transform Visualise Model

Slide 7

Slide 7 text

Import Tidy Communicate Transform Visualise Model

Slide 8

Slide 8 text

Quandary of the applied statistician

Slide 9

Slide 9 text

2008−10−07−p03−01−D11 Aligned Time (s) Motion index 0 5 10 15 20 25 30 0 20 40 60 80 100 Motion Index PRE L1 L2 E1 E2 R1 R2

Slide 10

Slide 10 text

2009−03−25−p03−01−C10 Aligned Time (s) Motion index 0 5 10 15 20 25 30 0 20 40 60 80 100 isoproteretol 2009−04−14− 2009−04−14− 2009−04−14− 2009−04−14− 2009−04−14− 2009−04−14− 2009−04−14− 2009−04−14− 2009−04−14− 2009−04−14− diazepam 2009−04−10− 2009−04−10− 2009−04−10− 2009−04−10− 2009−04−10− 2009−04−10− 2009−04−10− 2009−04−10− 2009−04−10− 2009−04−10− R(−)−Apomorphine 2008−02−05− 2008−02−14− 2008−02−14− 2008−01−23− 2008−01−23− 2008−01−23− 2008−02−14− 2008−02−05− 2008−02−05− digitoxigenin 2009−03−25− 2009−03−25− 2009−03−25− 2009−03−25− 2009−03−25− 2009−03−25− 2009−03−25− 2009−03−25− 2009−03−25− 2009−03−25− 6−Nitroquipazine maleate 2008−02−14− 2008−02−14− 2008−02−14− 2008−01−23− 2008−01−23− 2008−02−05− 2008−01−23− 2008−02−05− 2008−02−05− 2009−04−10−p01−01−D03 Aligned Time (s) Motion index 0 5 10 15 20 25 30 0 20 40 60 80 100 2008−01−23−p01−03−E08 Aligned Time (s) Motion index 0 5 10 15 20 25 30 0 20 40 60 80 100 Isoproterenol Diazepam Digitoxigenin Apomorphine 6-nitroquipazine 2008−02−14−p03−02−G09 Aligned Time (s) Motion index 0 5 10 15 20 25 30 0 20 40 60 80 100 Motion index Motion index Motion index Time (s) Time (s) Time (s) isoproteretol 2009−04−14− 2009−04−14− 2009−04−14− 2009−04−14− 2009−04−14− 2009−04−14− 2009−04−14− 2009−04−14− 2009−04−14− 2009−04−14− diazepam 2009−04−10− 2009−04−10− 2009−04−10− 2009−04−10− 2009−04−10− 2009−04−10− 2009−04−10− 2009−04−10− 2009−04−10− 2009−04−10− R(−)−Apomorphine 2008−02−05− 2008−02−14− 2008−02−14− 2008−01−23− 2008−01−23− 2008−01−23− 2008−02−14− 2008−02−05− 2008−02−05− digitoxigenin 2009−03−25− 2009−03−25− 2009−03−25− 2009−03−25− 2009−03−25− 2009−03−25− 2009−03−25− 2009−03−25− 2009−03−25− 2009−03−25− 6−Nitroquipazine maleate 2008−02−14− 2008−02−14− 2008−02−14− 2008−01−23− 2008−01−23− 2008−02−05− 2008−01−23− 2008−02−05− 2008−02−05− isoproteretol 2009−04−14− 2009−04−14− 2009−04−14− 2009−04−14− 2009−04−14− 2009−04−14− 2009−04−14− 2009−04−14− 2009−04−14− 2009−04−14− diazepam 2009−04−10− 2009−04−10− 2009−04−10− 2009−04−10− 2009−04−10− 2009−04−10− 2009−04−10− 2009−04−10− 2009−04−10− 2009−04−10− R(−)−Apomorphine 2008−02−05− 2008−02−14− 2008−02−14− 2008−01−23− 2008−01−23− 2008−01−23− 2008−02−14− 2008−02−05− 2008−02−05− digitoxigenin 2009−03−25− 2009−03−25− 2009−03−25− 2009−03−25− 2009−03−25− 2009−03−25− 2009−03−25− 2009−03−25− 2009−03−25− 2009−03−25− 6−Nitroquipazine maleate 2008−02−14− 2008−02−14− 2008−02−14− 2008−01−23− 2008−01−23− 2008−02−05− 2008−01−23− 2008−02−05− 2008−02−05− isoproteretol 2009−04−14− 2009−04−14− 2009−04−14− 2009−04−14− 2009−04−14− 2009−04−14− 2009−04−14− 2009−04−14− 2009−04−14− 2009−04−14− diazepam 2009−04−10− 2009−04−10− 2009−04−10− 2009−04−10− 2009−04−10− 2009−04−10− 2009−04−10− 2009−04−10− 2009−04−10− 2009−04−10− R(−)−Apomorphine 2008−02−05− 2008−02−14− 2008−02−14− 2008−01−23− 2008−01−23− 2008−01−23− 2008−02−14− 2008−02−05− 2008−02−05− digitoxigenin 2009−03−25− 2009−03−25− 2009−03−25− 2009−03−25− 2009−03−25− 2009−03−25− 2009−03−25− 2009−03−25− 2009−03−25− 2009−03−25− 6−Nitroquipazine maleate 2008−02−14− 2008−02−14− 2008−02−14− 2008−01−23− 2008−01−23− 2008−02−05− 2008−01−23− 2008−02−05− 2008−02−05− Time (s) Motion index D G J M E H K N F I L O 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 −4 −2 −1 0 1 2 3 4 less active than controls more active than controls PRE L1 L2 E1 E2 R1 R2 helSed letSick Vab © 2010 Nature America, Inc. All rights reserved. NATURE CHEMICAL BIOLOGY | ADVANCE ONLINE PUBLICATION | www.nature.com/naturechemicalbiology 1 Neuroactive drugs discovered in the 1950s revolutionized our understanding of the nervous system and the treatment of its disorders1. Most of these drugs were discovered seren- dipitously when they produced unexpected behavioral changes in animals or humans. Elucidation of the targets of these behavior- modifying compounds led to insights into nervous system function, and many of the drugs used for treating nervous system disorders today were derived from those same, serendipitous discoveries. Unfortunately, few new classes of neuroactive molecules have been discovered in the last 50 years, in part because pharmaceutical discovery efforts are dominated by simple, in vitro screening assays that fail to capture the complexity of the vertebrate nervous system2. Current drug discovery approaches are typically target based, mean- ing they seek to identify compounds that modify the in vitro activity of a specific protein target. These approaches benefit from being sys- tematic and high throughput. However, they generally lack the ability to discover drugs that modify nervous system function in new ways. Unlike target-based approaches, phenotype-based screens can identify compounds that produce a desired phenotype without a priori assumptions about their targets. Phenotype-based screens in cultured cells and whole organisms have identified powerful new compounds with novel activities on unexpected targets in vivo3. However, it has been difficult to combine chemical- screening para- digms with behavioral phenotyping, perhaps because many well studied behaviors are too variable or occur in animals that are too large for screening in multi-well format. A common limitation of compounds discovered by phenotype-based methods is the difficulty in determining their mechanisms of action. It has been proposed that systems-level analyses of content-rich pheno- typic data could be used to identify mechanistic similarities between compounds and predict their mechanisms of action4. Repositories of high-throughput screening data such as PubChem and ChemBank are beginning to make such analyses possible, but difficulties remain, including the challenges of comparing phenotypes across disparate assay types, libraries and experimental conditions. Theoretically, the behavioral effects of small molecules could provide sufficient content to enable compound characterization and prediction of their mecha- nisms of action. However, because behaviors can be complex and dif- ficult to quantify, systems-level comparison of behavioral phenotypes would require conversion of the behaviors into simple, quantitative measures that are more amenable to such approaches. Given the unmet need for novel psychotropic drugs, we sought to develop a small-molecule discovery process that combined the scale of modern high-throughput screening with the biological complexity of behavioral phenotyping in living animals. Here, we report development of a fully automated platform for analyzing the behavioral effects of small molecules on embryonic zebrafish. Using this platform, we have identified hundreds of behavior-modifying compounds. We further demonstrate that complex behavioral changes can be distilled into simple behavioral ‘barcodes’ to classify psychotropic drugs and determine their mechanisms of action. RESULTS The photomotor response We discovered that a high-intensity light stimulus elicits a stereo- typic series of motor behaviors in embryonic zebrafish that we call the photomotor response (PMR) (Fig. 1a,b and Supplementary Movies 1–3). The PMR can be divided into four broad phases: a pre-stimulus background phase, a latency phase, an excitation phase and a refractory phase (Fig. 1c). During the pre-stimulus phase, zebrafish embryos were mostly inactive, showing low basal activity characterized by spontaneous and infrequent body flexions within their chorions. Presentation of a light stimulus elicited a robust motor excitation phase (lasting 5–7 s) characterized by vigorous 1Cardiovascular Research Center and Division of Cardiology, Department of Medicine, Massachusetts General Hospital, Harvard Medical School, Charlestown, Massachusetts, USA. 2Broad Institute, Cambridge, Massachusetts, USA. 3Department of Statistics and 4Michael Smith Laboratories, University of British Columbia, Vancouver, British Columbia, Canada. 5Department of Pharmaceutical Chemistry, University of California, San Francisco, California, USA. 6Center for Human Genetic Research, Massachusetts General Hospital, Boston, Massachusetts, USA. 7Stanley Center for Psychiatric Research, Cambridge, Massachusetts, USA. *e-mail: [email protected] or [email protected] Rapid behavior-based identification of neuroactive small molecules in the zebrafish David Kokel1,2*, Jennifer Bryan3,4, Christian Laggner5, Rick White3, Chung Yan J Cheung1,2, Rita Mateus1,2, David Healey1,2, Sonia Kim1,2, Andreas A Werdich1, Stephen J Haggarty2,6,7, Calum A MacRae1, Brian Shoichet5 & Randall T Peterson1,2* Neuroactive small molecules are indispensable tools for treating mental illnesses and dissecting nervous system function. However, it has been difficult to discover novel neuroactive drugs. Here, we describe a high-throughput, behavior-based approach to neuroactive small molecule discovery in the zebrafish. We used automated screening assays to evaluate thousands of chemical compounds and found that diverse classes of neuroactive molecules caused distinct patterns of behavior. These ‘behavioral barcodes’ can be used to rapidly identify new psychotropic chemicals and to predict their molecular targets. For example, we identified new acetylcholinesterase and monoamine oxidase inhibitors using phenotypic comparisons and computational techniques. By combining high-throughput screening technologies with behavioral phenotyping in vivo, behavior-based chemical screens can accelerate the pace of neuroactive drug discovery and provide small-molecule tools for understanding vertebrate behavior. NATURE CHEMICAL BIOLOGY | VOL 6 | MARCH 2010 | www.nature.com/naturechemicalbiology 1Cardiovascular Research Center and Division of Cardiology, Department of Medicine, Massachusetts General Hospital, Harvard Medical S Charlestown, Massachusetts, USA. 2Broad Institute, Cambridge, Massachusetts, USA. 3Department of Statistics and 4Michael Smith Labo University of British Columbia, Vancouver, British Columbia, Canada. 5Department of Pharmaceutical Chemistry, University of California, S California, USA. 6Center for Human Genetic Research, Massachusetts General Hospital, Boston, Massachusetts, USA. 7Stanley Center for Research, Cambridge, Massachusetts, USA. *e-mail: [email protected] or [email protected] © 2010 Nature America, Inc. All rights reserved. NATURE CHEMICAL BIOLOGY | ADVANCE ONLINE PUBLICATION | www.nature.com/naturechemicalbiology 1 Neuroactive drugs discovered in the 1950s revolutionized our understanding of the nervous system and the treatment of its disorders1. Most of these drugs were discovered seren- dipitously when they produced unexpected behavioral changes in animals or humans. Elucidation of the targets of these behavior- modifying compounds led to insights into nervous system function, and many of the drugs used for treating nervous system disorders today were derived from those same, serendipitous discoveries. Unfortunately, few new classes of neuroactive molecules have been discovered in the last 50 years, in part because pharmaceutical discovery efforts are dominated by simple, in vitro screening assays that fail to capture the complexity of the vertebrate nervous system2. Current drug discovery approaches are typically target based, mean- ing they seek to identify compounds that modify the in vitro activity of a specific protein target. These approaches benefit from being sys- tematic and high throughput. However, they generally lack the ability to discover drugs that modify nervous system function in new ways. Unlike target-based approaches, phenotype-based screens can identify compounds that produce a desired phenotype without a priori assumptions about their targets. Phenotype-based screens in cultured cells and whole organisms have identified powerful new compounds with novel activities on unexpected targets in vivo3. However, it has been difficult to combine chemical- screening para- digms with behavioral phenotyping, perhaps because many well studied behaviors are too variable or occur in animals that are too large for screening in multi-well format. A common limitation of compounds discovered by phenotype-based methods is the difficulty in determining their mechanisms of action. It has been proposed that systems-level analyses of content-rich pheno- typic data could be used to identify mechanistic similarities between compounds and predict their mechanisms of action4. Repositories of high-throughput screening data such as PubChem and ChemBank are beginning to make such analyses possible, but difficulties remain, including the challenges of comparing phenotypes across disparate assay types, libraries and experimental conditions. Theoretically, the behavioral effects of small molecules could provide sufficient content to enable compound characterization and prediction of their mecha- nisms of action. However, because behaviors can be complex and dif- ficult to quantify, systems-level comparison of behavioral phenotypes would require conversion of the behaviors into simple, quantitative measures that are more amenable to such approaches. Given the unmet need for novel psychotropic drugs, we sought to develop a small-molecule discovery process that combined the scale of modern high-throughput screening with the biological complexity of behavioral phenotyping in living animals. Here, we report development of a fully automated platform for analyzing the behavioral effects of small molecules on embryonic zebrafish. Using this platform, we have identified hundreds of behavior-modifying compounds. We further demonstrate that complex behavioral changes can be distilled into simple behavioral ‘barcodes’ to classify psychotropic drugs and determine their mechanisms of action. RESULTS The photomotor response We discovered that a high-intensity light stimulus elicits a stereo- typic series of motor behaviors in embryonic zebrafish that we call the photomotor response (PMR) (Fig. 1a,b and Supplementary Movies 1–3). The PMR can be divided into four broad phases: a pre-stimulus background phase, a latency phase, an excitation phase and a refractory phase (Fig. 1c). During the pre-stimulus phase, zebrafish embryos were mostly inactive, showing low basal activity characterized by spontaneous and infrequent body flexions within their chorions. Presentation of a light stimulus elicited a robust motor excitation phase (lasting 5–7 s) characterized by vigorous 1Cardiovascular Research Center and Division of Cardiology, Department of Medicine, Massachusetts General Hospital, Harvard Medical School, Charlestown, Massachusetts, USA. 2Broad Institute, Cambridge, Massachusetts, USA. 3Department of Statistics and 4Michael Smith Laboratories, University of British Columbia, Vancouver, British Columbia, Canada. 5Department of Pharmaceutical Chemistry, University of California, San Francisco, California, USA. 6Center for Human Genetic Research, Massachusetts General Hospital, Boston, Massachusetts, USA. 7Stanley Center for Psychiatric Research, Cambridge, Massachusetts, USA. *e-mail: [email protected] or [email protected] Rapid behavior-based identification of neuroactive small molecules in the zebrafish David Kokel1,2*, Jennifer Bryan3,4, Christian Laggner5, Rick White3, Chung Yan J Cheung1,2, Rita Mateus1,2, David Healey1,2, Sonia Kim1,2, Andreas A Werdich1, Stephen J Haggarty2,6,7, Calum A MacRae1, Brian Shoichet5 & Randall T Peterson1,2* Neuroactive small molecules are indispensable tools for treating mental illnesses and dissecting nervous system function. However, it has been difficult to discover novel neuroactive drugs. Here, we describe a high-throughput, behavior-based approach to neuroactive small molecule discovery in the zebrafish. We used automated screening assays to evaluate thousands of chemical compounds and found that diverse classes of neuroactive molecules caused distinct patterns of behavior. These ‘behavioral barcodes’ can be used to rapidly identify new psychotropic chemicals and to predict their molecular targets. For example, we identified new acetylcholinesterase and monoamine oxidase inhibitors using phenotypic comparisons and computational techniques. By combining high-throughput screening technologies with behavioral phenotyping in vivo, behavior-based chemical screens can accelerate the pace of neuroactive drug discovery and provide small-molecule tools for understanding vertebrate behavior.

Slide 11

Slide 11 text

dopa Dihydrexidine HCl (DOPA) L−Cysteine sulfinic acid (EAA) 5−Methylurapidil (5HT) MK 212 HCl (5HT) 5654183 (unk) Blank (Control) Chloroethylclonidine 2HCl (ADR) 6951255 (unk) Glycopyrrolate (MUSC−) (±)−PD 128,907 HCl (DOPA) Kyotorphin (OPI) N6−P−Sulfophenyladenosine (ADS) BICUCULLINE (+) (GABA) VERATRIDINE (CHA) Dipropyl−6,7−ADTN HBr (DOPA) 6986473 (unk) Bromocriptine mesylate (DOPA) R(−)−2,10,11−Trihydroxyap (DOPA) Dihydroergocristine mesyl (DOPA) R(−)−2,10,11−Trihydroxyap (DOPA) A−77636 HCl (DOPA) A−77636 HCl (DOPA) O−Phospho−L−serine (EAA) Dipropyl−6,7−ADTN HBr (DOPA) (+)−PD 128907 HCl (DOPA) 5−Methylurapidil (5HT) Imidazole−4−acetic acid H (GABA) Dihydrexidine HCl (DOPA) Dihydroergocristine mesyl (DOPA) Dihydroergocristine mesyl (DOPA) V V V V V V

Slide 12

Slide 12 text

http://stat545.com

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

How STAT 545 projects went sideways: An Incomplete List inability to … scrape data off the web … request data from an API … parse JSON or XML utter defeat by date times text encoding fiascos ineptitude with regular expressions R scripts that consume infinite time and RAM software installation gong shows

Slide 16

Slide 16 text

@JennyBryan @jennybc @STAT545 http://stat545.com    What if … I actually taught that?!

Slide 17

Slide 17 text

@JennyBryan @jennybc @STAT545 http://stat545.com    Step 1: get better at it myself!

Slide 18

Slide 18 text

Professional Masters degree 10-months full-time 24 1-credit course modules 6-credit Capstone Project Collaborative effort by STAT & CS (Faculty of Science)

Slide 19

Slide 19 text

Descriptive Statistics and Probability Statistical Inference and Computation I Statistical Inference and Computation II Regression I Regression II Spatial and Temporal Models Experimentation and Causal Inference Algorithms and Data Structures Databases and Data Retrieval STAT CS Supervised Learning I Supervised Learning II Unsupervised Learning Feature and Model Selection Advanced Machine Learning STAT/CS 14/30 credits

Slide 20

Slide 20 text

Programming for Data Science Computing Platforms for Data Science Data Science Workflows Collaborative Software Development Web and Cloud Computing Data Wrangling Data Visualization I Data Visualization II Privacy, Ethics, and Security Communication and Argumentation Capstone Project 16/30 credits STAT CS DS

Slide 21

Slide 21 text

via Donoho’s 50 years of Data Science

Slide 22

Slide 22 text

"We don't have to teach data science, it's just a fancy word for statistics" "Why would we teach programming? This is a statistics course" Tweet by David Robinson @drob

Slide 23

Slide 23 text

pick one: data science is ‘just’ statistics data wrangling is not statistics programming version control visualization testing web apps ...

Slide 24

Slide 24 text

pick, at most, one: data science is ‘just’ statistics data wrangling is not statistics programming version control visualization testing web apps ...

Slide 25

Slide 25 text

We can say "data science is just statistics" if and only if we broaden the definition of "statistics".

Slide 26

Slide 26 text

https://doi.org/10.1080/10618600.2017.1389743

Slide 27

Slide 27 text

Is data science just a trendy term for statistics? No.

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

from Mächler’s talk

Slide 30

Slide 30 text

R has changed since you graduated

Slide 31

Slide 31 text

http://kbroman.org/hipsteR/ hipsteR re-educating people who learned R before it was cool … my knowledge of R seems stuck in 2001. I keep finding out about “new” R functions (like replicate, which was new in 2003). This is a tutorial for people like me, or people who were taught by people like me.

Slide 32

Slide 32 text

Tidy Import Visualise Transform Model Program tibble tidyr purrr magrittr dplyr forcats hms ggplot2 broom modelr readr readxl haven xml2 lubridate stringr tidyverse.org r4ds.had.co.nz tidyposterior yardstick rsample recipes

Slide 33

Slide 33 text

Use an IDE Integrated Development Environment

Slide 34

Slide 34 text

Emacs + ESS vim + Nvim-R … RStudio

Slide 35

Slide 35 text

source is real “The source code is real. The objects are realizations of the source code. Source for EVERY user modified object is placed in a particular directory or directories, for later editing and retrieval.” -- from the ESS manual

Slide 36

Slide 36 text

No content

Slide 37

Slide 37 text

If the first line of your R script is rm(list = ls()) I will come into your office and SET YOUR COMPUTER ON FIRE .

Slide 38

Slide 38 text

Restart R with a clean slate OFTEN, e.g., multiple times per day

Slide 39

Slide 39 text

Accept help re: missing )’s or errant ,s

Slide 40

Slide 40 text

use [Pp]rojects

Slide 41

Slide 41 text

No content

Slide 42

Slide 42 text

No content

Slide 43

Slide 43 text

@JennyBryan @jennybc @STAT545 http://stat545.com   

Slide 44

Slide 44 text

No content

Slide 45

Slide 45 text

One folder per project That folder is an • RStudio Project (package? website? whatever) • Or similar implementation in your IDE of choice • Git repo, with associated GitHub remote Work on multiple projects at once w/ multiple instances of RStudio (or other IDE) • Each gets own child R process • R & file browser have sane working directory

Slide 46

Slide 46 text

use portable file paths

Slide 47

Slide 47 text

If the first line of your R script is setwd("C:\Users\jenny\path\that\only\I\have") I* will come into your office and SET YOUR COMPUTER ON FIRE . * or maybe Timothée Poisot will

Slide 48

Slide 48 text

Blog post: Project-oriented workflow

Slide 49

Slide 49 text

Don’t rush into a complicated folder hierarchy Build paths relative to project’s top-level folder But once you need sub-folders … Use the here package to build paths install.packages("here")

Slide 50

Slide 50 text

ggsave(here("figs", “cleveland-alloc.png”)) Works on my machine, works on yours! Works even if working directory is in a sub-folder Works for RStudio projects, Git repos, R packages, … Works with knitr / rmarkdown

Slide 51

Slide 51 text

expect to iterate

Slide 52

Slide 52 text

No content

Slide 53

Slide 53 text

Reason to iterate #1: Get it right! New data? New understanding of data?

Slide 54

Slide 54 text

No content

Slide 55

Slide 55 text

Reason to iterate #2: Refine and Extend Make your code more Readable Efficient Resilient General

Slide 56

Slide 56 text

beware of monoliths

Slide 57

Slide 57 text

break logic & output into pieces

Slide 58

Slide 58 text

everything.R smell-test.R wrangle.R model.R make-figs.R report.Rmd >>>

Slide 59

Slide 59 text

smell-test.R wrangle.R model.R make-figs.R report.Rmd

Slide 60

Slide 60 text

.Rdata raw-data.xlsx data.csv fits.rds ests.csv >>>

Slide 61

Slide 61 text

raw-data.xlsx data.csv fits.rds ests.csv figs/hist.png figs/dot.png

Slide 62

Slide 62 text

Input Code Output raw data smell-test.R wisdom raw data wrangle.R data.csv data.csv model.R fits.rds ests.csv data.csv make-figs.R figs/* fits.rds ests.csv figs/* report.Rmd report.html ests.csv report.docx report.pdf

Slide 63

Slide 63 text

a humane API for your analysis

Slide 64

Slide 64 text

consider version control

Slide 65

Slide 65 text

I use Git + GitHub

Slide 66

Slide 66 text

“commit” a file or project state that is meaningful to you for inspection, comparison, restoration

Slide 67

Slide 67 text

“diff” What changed here? Why? Δ

Slide 68

Slide 68 text

No content

Slide 69

Slide 69 text

No content

Slide 70

Slide 70 text

Excuse me, do you have a moment to talk about version control? https://doi.org/10.7287/peerj.preprints.3159v2

Slide 71

Slide 71 text

happygitwithr.com

Slide 72

Slide 72 text

No content

Slide 73

Slide 73 text

Good enough practices in scientific computing Wilson, Bryan, Cranston, Kitzes, Nederbragt, Teal https://doi.org/10.1371/journal.pcbi.1005510 http://bit.ly/good-enuff

Slide 74

Slide 74 text

Thanks: Mara Averick Matthew Lincoln Hadley Wickham STAT 545 TAs UBC MDS Fellows & Faculty @JennyBryan @jennybc  