Migrating to carpentries WIP
[rnaseq-cwl-training.git] / _episodes / 02-workflow.md
similarity index 58%
rename from lesson1/lesson1.md
rename to _episodes/02-workflow.md
index 03173b6d82abe9adf4025a68b8a0ab7f19a2b301..a3700a9def6b1cf2727dbdcd609e959c78ca9d6c 100644 (file)
-# Turning a shell script into a workflow by composing existing tools
-
-## Introduction
-
-The goal of this training is to walk through the development of a
-best-practices CWL workflow by translating an existing bioinformatics
-shell script into CWL.  Specific knowledge of the biology of RNA-seq
-is *not* a prerequisite for these lessons.
-
-These lessons are based on "Introduction to RNA-seq using
-high-performance computing (HPC)" lessons developed by members of the
-teaching team at the Harvard Chan Bioinformatics Core (HBC).  The
-original training, which includes additional lectures about the
-biology of RNA-seq can be found here:
-
-https://github.com/hbctraining/Intro-to-rnaseq-hpc-O2
-
-## Background
-
-RNA-seq is the process of sequencing RNA in a biological sample.  From
-the sequence reads, we want to measure the relative number of RNA
-molecules appearing in the sample that were produced by particular
-genes.  This analysis is called "differential gene expression".
-
-The entire process looks like this:
-
-![](RNAseqWorkflow.png)
-
-For this training, we are only concerned with the middle analytical
-steps (skipping adapter trimming).
-
-* Quality control (FASTQC)
-* Alignment (mapping)
-* Counting reads associated with genes
-
-## Analysis shell script
-
-This analysis is already available as a Unix shell script, which we
-will refer to in order to build the workflow.
-
-Some of the reasons to use CWL over a plain shell script: portability,
-scalability, ability to run on platforms that are not traditional HPC.
-
-rnaseq_analysis_on_input_file.sh
-
-```
-#!/bin/bash
-
-# Based on
-# https://hbctraining.github.io/Intro-to-rnaseq-hpc-O2/lessons/07_automating_workflow.html
-#
-
-# This script takes a fastq file of RNA-Seq data, runs FastQC and outputs a counts file for it.
-# USAGE: sh rnaseq_analysis_on_input_file.sh <name of fastq file>
-
-set -e
-
-# initialize a variable with an intuitive name to store the name of the input fastq file
-fq=$1
-
-# grab base of filename for naming outputs
-base=`basename $fq .subset.fq`
-echo "Sample name is $base"
-
-# specify the number of cores to use
-cores=4
-
-# directory with genome reference FASTA and index files + name of the gene annotation file
-genome=rnaseq/reference_data
-gtf=rnaseq/reference_data/chr1-hg19_genes.gtf
-
-# make all of the output directories
-# The -p option means mkdir will create the whole path if it
-# does not exist and refrain from complaining if it does exist
-mkdir -p rnaseq/results/fastqc
-mkdir -p rnaseq/results/STAR
-mkdir -p rnaseq/results/counts
-
-# set up output filenames and locations
-fastqc_out=rnaseq/results/fastqc
-align_out=rnaseq/results/STAR/${base}_
-counts_input_bam=rnaseq/results/STAR/${base}_Aligned.sortedByCoord.out.bam
-counts=rnaseq/results/counts/${base}_featurecounts.txt
-
-echo "Processing file $fq"
-
-# Run FastQC and move output to the appropriate folder
-fastqc $fq
-
-# Run STAR
-STAR --runThreadN $cores --genomeDir $genome --readFilesIn $fq --outFileNamePrefix $align_out --outSAMtype BAM SortedByCoordinate --outSAMunmapped Within --outSAMattributes Standard
-
-# Create BAM index
-samtools index $counts_input_bam
-
-# Count mapped reads
-featureCounts -T $cores -s 2 -a $gtf -o $counts $counts_input_bam
-```
-
-## Setting up
+---
+title: "Turning a shell script into a workflow by composing existing tools"
+teaching: 0
+exercises: 0
+questions:
+- "Key question (FIXME)"
+objectives:
+- "First learning objective. (FIXME)"
+keypoints:
+- "First key point. Brief Answer to questions. (FIXME)"
+---
+
+# Setting up
 
 We will create a new git repository and import a library of existing
 tool definitions that will help us build our workflow.
@@ -120,9 +33,9 @@ Next, import bio-cwl-tools with this command:
 git submodule add https://github.com/common-workflow-library/bio-cwl-tools.git
 ```
 
-## Writing the workflow
+# Writing the workflow
 
-### 1. File header
+## 1. File header
 
 Create a new file "main.cwl"
 
@@ -135,7 +48,7 @@ class: Workflow
 label: RNAseq CWL practice workflow
 ```
 
-### 2. Workflow Inputs
+## 2. Workflow Inputs
 
 The purpose of a workflow is to consume some input parameters, run a
 series of steps, and produce output values.
@@ -168,7 +81,7 @@ inputs:
   gtf: File
 ```
 
-### 3. Workflow Steps
+## 3. Workflow Steps
 
 A workflow consists of one or more steps.  This is the `steps` section.
 
@@ -203,7 +116,7 @@ steps:
     out: [html_file]
 ```
 
-### 4. Running alignment with STAR
+## 4. Running alignment with STAR
 
 STAR has more parameters.  Sometimes we want to provide input values
 to a step without making them as workflow-level inputs.  We can do
@@ -225,7 +138,7 @@ this with `{default: N}`
     out: [alignment]
 ```
 
-### 5. Running samtools
+## 5. Running samtools
 
 The third step is to generate an index for the aligned BAM.
 
@@ -244,7 +157,7 @@ step will not run until the `STAR` step has completed successfully.
     out: [bam_sorted_indexed]
 ```
 
-### 6. featureCounts
+## 6. featureCounts
 
 As of this writing, the `subread` package that provides
 `featureCounts` is not available in bio-cwl-tools (and if it has been
@@ -252,7 +165,7 @@ added since writing this, let's pretend that it isn't there.)  We will
 go over how to write a CWL wrapper for a command line tool in
 lesson 3.  For now, we will leave off the final step.
 
-### 7. Workflow Outputs
+## 7. Workflow Outputs
 
 The last thing to do is declare the workflow outputs in the `outputs` section.