# Convert Salmon output to Sleuth-compatible format

## Program introduction

### What is Sleuth?

[Sleuth](http://pachterlab.github.io/sleuth/) is a program that performs differential expression analysis of gene isoforms using the transcript abundance estimates output from alignment-free methods, such as Sailfish, Salmon and Kallisto.

### What is wasabi?

[Wasabi](https://github.com/COMBINE-lab/wasabi) is a program that converts Sailfish and Salmon output for downstream analysis with [Sleuth](http://pachterlab.github.io/sleuth/).

## Format conversion

We use [Wasabi](https://github.com/COMBINE-lab/wasabi) to prepare Salmon output for downstream analysis with [sleuth](https://github.com/pachterlab/sleuth)

```bash
$ cd /home/USER/SSAPs
$ R
```

Define the file path to Salmon (and STAR+Salmon) quant directories

* The "**Salmon**" mapping strategy is described [here](https://ycl6.gitbook.io/guide-to-rna-seq-analysis/raw-read-processing/mapping/alignment-free-method#salmon)
* The "**STAR + Salmon**"  strategy is described [here](https://ycl6.gitbook.io/guide-to-rna-seq-analysis/raw-read-processing/mapping/alignment-based-method#star-salmon-quantification-alignment-based-mode)&#x20;
* The "**Salmon with bootstrap**" strategy is described [here](https://ycl6.gitbook.io/guide-to-rna-seq-analysis/raw-read-processing/mapping/alignment-free-method#salmon-with-bootstrap)

```r
library(wasabi)

# Salmon
files1 = file.path("salmon", list.files("salmon"))

# STAR + Salmon
files2 = file.path("salmon_star", list.files("salmon_star"))

# Salmon with bootstrap
files3 = file.path("salmon-bs", list.files("salmon-bs"))
```

```r
> files1
 [1] "salmon/ERR2675454" "salmon/ERR2675455" "salmon/ERR2675458"
 [4] "salmon/ERR2675459" "salmon/ERR2675460" "salmon/ERR2675461"
 [7] "salmon/ERR2675464" "salmon/ERR2675465" "salmon/ERR2675468"
[10] "salmon/ERR2675469" "salmon/ERR2675472" "salmon/ERR2675473"
[13] "salmon/ERR2675476" "salmon/ERR2675477" "salmon/ERR2675478"
[16] "salmon/ERR2675479" "salmon/ERR2675480" "salmon/ERR2675481"
[19] "salmon/ERR2675484" "salmon/ERR2675485"

> files2
 [1] "salmon_star/ERR2675454" "salmon_star/ERR2675455" "salmon_star/ERR2675458"
 [4] "salmon_star/ERR2675459" "salmon_star/ERR2675460" "salmon_star/ERR2675461"
 [7] "salmon_star/ERR2675464" "salmon_star/ERR2675465" "salmon_star/ERR2675468"
[10] "salmon_star/ERR2675469" "salmon_star/ERR2675472" "salmon_star/ERR2675473"
[13] "salmon_star/ERR2675476" "salmon_star/ERR2675477" "salmon_star/ERR2675478"
[16] "salmon_star/ERR2675479" "salmon_star/ERR2675480" "salmon_star/ERR2675481"
[19] "salmon_star/ERR2675484" "salmon_star/ERR2675485"

> files3
 [1] "salmon-bs/ERR2675454" "salmon-bs/ERR2675455" "salmon-bs/ERR2675458"
 [4] "salmon-bs/ERR2675459" "salmon-bs/ERR2675460" "salmon-bs/ERR2675461"
 [7] "salmon-bs/ERR2675464" "salmon-bs/ERR2675465" "salmon-bs/ERR2675468"
[10] "salmon-bs/ERR2675469" "salmon-bs/ERR2675472" "salmon-bs/ERR2675473"
[13] "salmon-bs/ERR2675476" "salmon-bs/ERR2675477" "salmon-bs/ERR2675478"
[16] "salmon-bs/ERR2675479" "salmon-bs/ERR2675480" "salmon-bs/ERR2675481"
[19] "salmon-bs/ERR2675484" "salmon-bs/ERR2675485"
```

Run the `prepare_fish_for_sleuth` function to start conversion

```r
prepare_fish_for_sleuth(files1)
prepare_fish_for_sleuth(files2)
prepare_fish_for_sleuth(files3)
```

The function will create `abundance.h5` files in sleuth-compatible format in the same directory as the Salmon `quant.sf` files

```r
> list.files(file.path("salmon", list.files("salmon")), 
full.names = TRUE, pattern = "abundance.h5")
 [1] "salmon/ERR2675454/abundance.h5" "salmon/ERR2675455/abundance.h5"
 [3] "salmon/ERR2675458/abundance.h5" "salmon/ERR2675459/abundance.h5"
 [5] "salmon/ERR2675460/abundance.h5" "salmon/ERR2675461/abundance.h5"
 [7] "salmon/ERR2675464/abundance.h5" "salmon/ERR2675465/abundance.h5"
 [9] "salmon/ERR2675468/abundance.h5" "salmon/ERR2675469/abundance.h5"
[11] "salmon/ERR2675472/abundance.h5" "salmon/ERR2675473/abundance.h5"
[13] "salmon/ERR2675476/abundance.h5" "salmon/ERR2675477/abundance.h5"
[15] "salmon/ERR2675478/abundance.h5" "salmon/ERR2675479/abundance.h5"
[17] "salmon/ERR2675480/abundance.h5" "salmon/ERR2675481/abundance.h5"
[19] "salmon/ERR2675484/abundance.h5" "salmon/ERR2675485/abundance.h5"
```

```r
> list.files(file.path("salmon_star", list.files("salmon_star")), 
full.names = TRUE, pattern = "abundance.h5")
 [1] "salmon_star/ERR2675454/abundance.h5" "salmon_star/ERR2675455/abundance.h5"
 [3] "salmon_star/ERR2675458/abundance.h5" "salmon_star/ERR2675459/abundance.h5"
 [5] "salmon_star/ERR2675460/abundance.h5" "salmon_star/ERR2675461/abundance.h5"
 [7] "salmon_star/ERR2675464/abundance.h5" "salmon_star/ERR2675465/abundance.h5"
 [9] "salmon_star/ERR2675468/abundance.h5" "salmon_star/ERR2675469/abundance.h5"
[11] "salmon_star/ERR2675472/abundance.h5" "salmon_star/ERR2675473/abundance.h5"
[13] "salmon_star/ERR2675476/abundance.h5" "salmon_star/ERR2675477/abundance.h5"
[15] "salmon_star/ERR2675478/abundance.h5" "salmon_star/ERR2675479/abundance.h5"
[17] "salmon_star/ERR2675480/abundance.h5" "salmon_star/ERR2675481/abundance.h5"
[19] "salmon_star/ERR2675484/abundance.h5" "salmon_star/ERR2675485/abundance.h5"
```

```r
> list.files(file.path("salmon-bs", list.files("salmon-bs")), 
full.names = TRUE, pattern = "abundance.h5")
 [1] "salmon-bs/ERR2675454/abundance.h5" "salmon-bs/ERR2675455/abundance.h5"
 [3] "salmon-bs/ERR2675458/abundance.h5" "salmon-bs/ERR2675459/abundance.h5"
 [5] "salmon-bs/ERR2675460/abundance.h5" "salmon-bs/ERR2675461/abundance.h5"
 [7] "salmon-bs/ERR2675464/abundance.h5" "salmon-bs/ERR2675465/abundance.h5"
 [9] "salmon-bs/ERR2675468/abundance.h5" "salmon-bs/ERR2675469/abundance.h5"
[11] "salmon-bs/ERR2675472/abundance.h5" "salmon-bs/ERR2675473/abundance.h5"
[13] "salmon-bs/ERR2675476/abundance.h5" "salmon-bs/ERR2675477/abundance.h5"
[15] "salmon-bs/ERR2675478/abundance.h5" "salmon-bs/ERR2675479/abundance.h5"
[17] "salmon-bs/ERR2675480/abundance.h5" "salmon-bs/ERR2675481/abundance.h5"
[19] "salmon-bs/ERR2675484/abundance.h5" "salmon-bs/ERR2675485/abundance.h5"
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://ycl6.gitbook.io/guide-to-rna-seq-analysis/differential-expression-analysis/convert-salmon-to-sleuth-compatible-format.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
