From 6ac1f107cdd936c183e6c46f66a7a80478c14981 Mon Sep 17 00:00:00 2001 From: Morgan Howells Date: Mon, 23 Oct 2023 11:01:46 +0000 Subject: [PATCH 01/59] init NCBI to AnnData tutorial --- .../tutorials/scrna-ncbi-anndata/tutorial.md | 308 ++++++++++++++++++ 1 file changed, 308 insertions(+) create mode 100644 topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md new file mode 100644 index 00000000000000..a8ca6ea57d5e8b --- /dev/null +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -0,0 +1,308 @@ +--- +layout: tutorial_hands_on + +title: Converting NCBI data to the AnnData Format +subtopic: single-cell-CS-code +priority: 2 +zenodo_link: 'https://zenodo.org/record/7053673' + +questions: +- How do i understand NCBI data? +- How can i convert raw gene data to the AnnData format? +- How do i manually and automatically add metadata to my AnnData object? +objectives: +- add objectives here +time_estimation: 1H +key_points: +- Single cell data is huge, and must have its many (# genes) dimensions reduced for analysis +- Analysis is more subjective than we think, and biological understanding of the samples as well as many iterations of analysis are important to give us our best change of attaining real biological insights + +requirements: +- + type: "internal" + topic_name: single-cell + tutorials: + - scrna-case_alevin + - scrna-case_alevin-combine-datasets +tags: +- 10x +- paper-replication + +contributions: + authorship: + - hexhowells + +follow_up_training: + - + type: "internal" + topic_name: single-cell + tutorials: + - scrna-case_JUPYTER-trajectories + - scrna-case_monocle3-trajectories + +--- + +> Convert raw data to AnnData +> +> 1. {% tool [Import AnnData and loom](toolshed.g2.bx.psu.edu/repos/iuc/anndata_import/anndata_import/0.7.5+galaxy1) %} with the following parameters: +> - *"hd5 format to be created"*: `Anndata file` +> - *"Format for the annotated data matrix?"*: `Tabular, CSV, TSV` +> - {% icon param-file %} *"Annotated data matrix"*: `Select all imported files` +> - *"Does the first column store the row names?"*: `Yes` +> +{: .hands_on} + +> Transpose AnnData objects +> +> 1. {% tool [Manipulate AnnData](toolshed.g2.bx.psu.edu/repos/iuc/anndata_manipulate/anndata_manipulate/0.7.5+galaxy1) %} with the following parameters: +> - {% icon param-file %} *"Annotated data matrix"*: `Select all AnnData files` +> - *"Function to manipulate the object"*: `Transpose the data matrix, leaving observations and variables interchanged` +> +{: .hands_on} + +> Combine AnnData objects +> +> 1. {% tool [Manipulate AnnData](toolshed.g2.bx.psu.edu/repos/iuc/anndata_manipulate/anndata_manipulate/0.7.5+galaxy1) %} with the following parameters: +> - {% icon param-file %} *"Annotated data matrix"*: `Select first Manipulate AnnData (transpose) output` +> - *"Function to manipulate the object"*: `Concatenate along the observations axis` +> - *"Annotated data matrix to add"*: `Select all other Manipulate AnnData (transpose) outputs` +> - *"Join method"*: `Intersection of variables` +> - *"Key to add the batch annotation to obs"*: `batch` +> - *"Separator to join the existing index names with the batch category"*: `-` +> +> 2. **Rename** {% icon galaxy-pencil %} output `Combined Object` +> +{: .hands_on} + +> +> +> 1. {% tool [Inspect AnnData](toolshed.g2.bx.psu.edu/repos/iuc/anndata_inspect/anndata_inspect/0.7.5+galaxy1) %} with the following parameters: +> - {% icon param-file %} *"Annotated data matrix"*: `Combined Object` +> - *"What to inspect?"*: `Key-indexed observations annotation (obs)` +> +> 2. **Rename** {% icon galaxy-pencil %} output `Combined Object` +> +{: .hands_on} + +> Create replicate metadata +> +> 1. {% tool [Replace Text](toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_column/1.1.3) %} with the following parameters: +> - {% icon param-file %} *"File to process"*: `Observation data` +> - *"1: Replacement"* +> - *"in column"*: `Column: 2` +> - *"Find pattern"*: `2|4|8` +> - *"Replace with"*: `poolA` +> - **+ Insert Replacement** +> - *"2: Replacement"* +> - *"in column"*: `Column: 2` +> - *"Find pattern"*: `3|5|9` +> - *"Replace with"*: `poolB` +> - **+ Insert Replacement** +> - *"3: Replacement"* +> - *"in column"*: `Column: 2` +> - *"Find pattern"*: `6` +> - *"Replace with"*: `poolC` +> - **+ Insert Replacement** +> - *"4: Replacement"* +> - *"in column"*: `Column: 2` +> - *"Find pattern"*: `0|1|7` +> - *"Replace with"*: `NA` +> - **+ Insert Replacement** +> - *"5: Replacement"* +> - *"in column"*: `Column: 2` +> - *"Find pattern"*: `batch` +> - *"Replace with"*: `replicate` +> +> 2. {% tool [Cut](Cut1) %} with the following parameters: +> - *"Cut columns"*: `c2` +> - *"Delimited by"*: `Tab` +> - {% icon param-file %} *"From"*: `output of Replace Text` +> +> 3. **Rename** {% icon galaxy-pencil %} output `Replicate Metadata` +> +{: .hands_on} + +> Create patient data +> +> 1. {% tool [Replace Text](toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_column/1.1.3) %} with the following parameters: +> - {% icon param-file %} *"File to process"*: `Observation data` +> - *"1: Replacement"* +> - *"in column"*: `Column: 2` +> - *"Find pattern"*: `(0$)|(1$)` +> - *"Replace with"*: `patient1` +> - **+ Insert Replacement** +> - *"2: Replacement"* +> - *"in column"*: `Column: 2` +> - *"Find pattern"*: `(2$)|(3$)|(4$)|(5$)|(6$)` +> - *"Replace with"*: `patient2` +> - **+ Insert Replacement** +> - *"3: Replacement"* +> - *"in column"*: `Column: 2` +> - *"Find pattern"*: `(7$)|(8$)|(9$)` +> - *"Replace with"*: `patient3` +> - **+ Insert Replacement** +> - *"5: Replacement"* +> - *"in column"*: `Column: 2` +> - *"Find pattern"*: `batch` +> - *"Replace with"*: `patient` +> +> 2. {% tool [Cut](Cut1) %} with the following parameters: +> - *"Cut columns"*: `c2` +> - *"Delimited by"*: `Tab` +> - {% icon param-file %} *"From"*: `output of Replace Text` +> +> 3. **Rename** {% icon galaxy-pencil %} output `Patient Metadata` +> +{: .hands_on} + +> Create patient metadata +> +> 1. {% tool [Replace Text](toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_column/1.1.3) %} with the following parameters: +> - {% icon param-file %} *"File to process"*: `Observation data` +> - *"1: Replacement"* +> - *"in column"*: `Column: 2` +> - *"Find pattern"*: `0` +> - *"Replace with"*: `AUG_PB1A` +> - **+ Insert Replacement** +> - *"2: Replacement"* +> - *"in column"*: `Column: 2` +> - *"Find pattern"*: `1$` +> - *"Replace with"*: `AUG_PB1B` +> - **+ Insert Replacement** +> - *"3: Replacement"* +> - *"in column"*: `Column: 2` +> - *"Find pattern"*: `(2$)|3` +> - *"Replace with"*: `MAY_PB1A` +> - **+ Insert Replacement** +> - *"4: Replacement"* +> - *"in column"*: `Column: 2` +> - *"Find pattern"*: `4|5|6` +> - *"Replace with"*: `MAY_PB1B` +> - **+ Insert Replacement** +> - *"5: Replacement"* +> - *"in column"*: `Column: 2` +> - *"Find pattern"*: `7` +> - *"Replace with"*: `MAY_PB2A` +> - **+ Insert Replacement** +> - *"6: Replacement"* +> - *"in column"*: `Column: 2` +> - *"Find pattern"*: `8|9` +> - *"Replace with"*: `MAY_PB2B` +> - **+ Insert Replacement** +> - *"7: Replacement"* +> - *"in column"*: `Column: 2` +> - *"Find pattern"*: `batch` +> - *"Replace with"*: `specimenID` +> +> 2. {% tool [Cut](Cut1) %} with the following parameters: +> - *"Cut columns"*: `c2` +> - *"Delimited by"*: `Tab` +> - {% icon param-file %} *"From"*: `output of Replace Text` +> +> 3. **Rename** {% icon galaxy-pencil %} output `Specimen Metadata` +> +{: .hands_on} + +> Create tumor metadata +> +> 1. {% tool [Replace Text](toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_column/1.1.3) %} with the following parameters: +> - {% icon param-file %} *"File to process"*: `Observation data` +> - *"1: Replacement"* +> - *"in column"*: `Column: 2` +> - *"Find pattern"*: `0` +> - *"Replace with"*: `left-mid` +> - **+ Insert Replacement** +> - *"2: Replacement"* +> - *"in column"*: `Column: 2` +> - *"Find pattern"*: `1|2|3|8|9` +> - *"Replace with"*: `right-mid` +> - **+ Insert Replacement** +> - *"3: Replacement"* +> - *"in column"*: `Column: 2` +> - *"Find pattern"*: `4|5|6` +> - *"Replace with"*: `right-apex` +> - **+ Insert Replacement** +> - *"4: Replacement"* +> - *"in column"*: `Column: 2` +> - *"Find pattern"*: `7` +> - *"Replace with"*: `right-anterior` +> - **+ Insert Replacement** +> - *"5: Replacement"* +> - *"in column"*: `Column: 2` +> - *"Find pattern"*: `batch` +> - *"Replace with"*: `tumorSpecimen` +> +> 2. {% tool [Cut](Cut1) %} with the following parameters: +> - *"Cut columns"*: `c2` +> - *"Delimited by"*: `Tab` +> - {% icon param-file %} *"From"*: `output of Replace Text` +> +> 3. **Rename** {% icon galaxy-pencil %} output `Tumor Metadata` +> +{: .hands_on} + +> Combine metadata +> +> 1. {% tool [Paste](Paste1) %} with the following parameters: +> - {% icon param-file %} *"Paste"*: `Replicate Metadata` +> - {% icon param-file %} *"and"*: `Patient Metadata` +> - *"Delimit by"*: `Tab` +> +> 2. {% tool [Paste](Paste1) %} with the following parameters: +> - {% icon param-file %} *"Paste"*: `Output of previous Paste` +> - {% icon param-file %} *"and"*: `Specimen Metadata` +> - *"Delimit by"*: `Tab` +> +> 3. {% tool [Paste](Paste1) %} with the following parameters: +> - {% icon param-file %} *"Paste"*: `Output of previous Paste` +> - {% icon param-file %} *"and"*: `Tumor Metadata` +> - *"Delimit by"*: `Tab` +> +> 4. **Rename** {% icon galaxy-pencil %} output `Cell Metadata` +> +{: .hands_on} + +> Add metadata to AnnData object +> +> 1. {% tool [Manipulate AnnData](toolshed.g2.bx.psu.edu/repos/iuc/anndata_manipulate/anndata_manipulate/0.7.5+galaxy1) %} with the following parameters: +> - {% icon param-file %} *"Annotated data matrix"*: `Combined Object` +> - *"Function to manipulate the object"*: `Add new annotation(s) for observations of variables` +> - *"What to annotate?"*: `Observations (obs)` +> - {% icon param-file %} *"Table with new annotations"*: `Cell Metadata` +> +> 2. **Rename** {% icon galaxy-pencil %} output `Annotated Object` +> +{: .hands_on} + +> Add initial metadata +> +> 1. {% tool [Scanpy FilterCells](toolshed.g2.bx.psu.edu/repos/ebi-gxa/scanpy_filter_cells/scanpy_filter_cells/1.8.1+galaxy9) %} with the following parameters: +> - {% icon param-file %} *"Input object in AnnData/Loom format"*: `Annotated Object` +> - *"Format of input object"*: `AnnData format hdf5` +> - *"Format of output object"*: `AnnData format` +> - *"Name of the column in `anndata.var` that contains gene name"*: `_index` +> - **+ Insert Parameters to select cells to keep** +> - *"1: Parameters to select cells to keep"* +> - *"Name of parameter to filter on"*: `n_genes` +> - *"Min value"*: `0.0` +> - *"Max value"*: `1000000000.0` +> - *"Force recalculation of QC vars"*: `No` +> +{: .hands_on} + +> Add final metadata +> +> 1. {% tool [AnnData Operations](toolshed.g2.bx.psu.edu/repos/ebi-gxa/anndata_ops/anndata_ops/1.8.1+galaxy0) %} with the following parameters: +> - {% icon param-file %} *"Input object in hdf5 AnnData format"*: `Output of Scanpy FilterCells` +> - *"Format of output object"*: `AnnData format` +> - *"Copy AnnData to .raw"*: `No` +> - *"Gene symbols field in AnnData"*: `index` +> - **+ Insert Flag genes that start with these names** +> - *"1: Parameters to select cells to keep"* +> - *"starts withn"*: `MT-` +> - *"Var name"*: `mito` +> - *"Number of top genes"*: `50` +> +> 2. **Rename** {% icon galaxy-pencil %} output `Final Object` +> +{: .hands_on} \ No newline at end of file From 94c9ee21a1a3afaf279f2f14938be5aaa7418ecd Mon Sep 17 00:00:00 2001 From: Morgan Howells Date: Tue, 24 Oct 2023 18:26:51 +0000 Subject: [PATCH 02/59] add introduction and initial descriptions --- .../images/scrna-ncbi-anndata/metadata.png | Bin 0 -> 19524 bytes .../tutorials/scrna-ncbi-anndata/tutorial.md | 73 +++++++++++++++++- 2 files changed, 71 insertions(+), 2 deletions(-) create mode 100644 topics/single-cell/images/scrna-ncbi-anndata/metadata.png diff --git a/topics/single-cell/images/scrna-ncbi-anndata/metadata.png b/topics/single-cell/images/scrna-ncbi-anndata/metadata.png new file mode 100644 index 0000000000000000000000000000000000000000..4fa53fd12be8940628e18db25cebbbfe8c22652c GIT binary patch literal 19524 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 JdtvGt^Iv9$c`pC} literal 0 HcmV?d00001 diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md index a8ca6ea57d5e8b..8e25eca4bc6926 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -2,8 +2,8 @@ layout: tutorial_hands_on title: Converting NCBI data to the AnnData Format -subtopic: single-cell-CS-code -priority: 2 +subtopic: Single cell data ingestion and formats conversion +priority: 3 zenodo_link: 'https://zenodo.org/record/7053673' questions: @@ -42,6 +42,71 @@ follow_up_training: --- +The goal of this tutorial is to take raw NCBI data from some published research, convert the raw data into the AnnData format then add metadata to the object so that it can be used for further processing / analysis. Here we will look at the steps to obtain, understand, and manipulate the data in order for it to be properly processed. + +# Obtaining the Data + +The first step is the obtain the data, for this tutorial we will use data from [this](https://pubmed.ncbi.nlm.nih.gov/35013146/) paper. The data for this research is stored in the Gene Expression Omnibus (GEO) which is a public repository storing public genomics data, the link to the data can be found [here](https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE176031). + +Looking at the GEO repository we can see a lot of data including descriptions of the data and associated paper, what we are interested in however is the supplemental data found at the bottom of the page. Under the download section ```(custom)``` allows us to select individual files to download, however we are going to download all of the data by selecting the ```(http)``` link. + +We now have the raw gene expression data that we will be processing downloaded, however we will need to manually add some metadata which requires finding out some more information about our data. Looking at the link for the paper [https://pubmed.ncbi.nlm.nih.gov/35013146/](https://pubmed.ncbi.nlm.nih.gov/35013146/) we can see a link for accessing the full text, clicking on that will lead us to a page [https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8748675/](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8748675/) which contains more supplementary materials. Under this section we should see various .xlsx files (Excel spreadsheets), go ahead and download Supplementary Dataset 1 (```41467_2021_27322_MOESM2_ESM.xlsx```), this one spreadsheet contains all the information we need to further understand our data. + +# Understanding the Data + +Looking at the excel file we can see multiple sheets, navigating to ```Clinical_info``` shows us that the data consists of 11 different patients with some patients having multiple different samples of different tumor specimens. For this tutorial we are only going to process the first 3 patients, a summary of the relevant data can be seen below: + +| PatientID | Biopsy samples | Tumor Specimen | +|-----------|----------------|----------------| +| Patient 1 | AUG_PB1A | left-mid | +| | AUG_PB1B | right-mid | +| Patient 2 | MAY_PB1A | right-mid | +| | MAY_PB1B | right-apex | +| Patient 3 | MAY_PB2A | right-anterior | +| | MAY_PB2B | right-mid | + +We can see that each patient has 2 different samples from different tumor locations, this is important information that needs to be added to our data so that we can seperate the data during analysis. + +Finally we need to find the files relating to each patient, inspecting ```GSE176031_RAW``` (downloaded earlier) we can see 53 files, unfortunately the names of the files don't exactly match the data in our excel sheet which can make finding the right samples a bit difficult, a summary of which samples match which file can be found below: + +- **AUG_PB1A** ---> **PA_AUG_PB_1A** +- **AUG_PB1B** ---> **PA_AUG_PB_1B** +- **MAY_PB1A** ---> **PA_PB1A** +- **MAY_PB1B** ---> **PA_PB1B** +- **MAY_PB2A** ---> **PA_PB2A** +- **MAY_PB2B** ---> **PA_PB2B** + +You may also notice that we have multiple sample files with the same name suffixed with **_Pool_X** these are replications where multiple samples are taken of the same tumor area which helps get a more comprehensive view of the gene data of the tumor. + +# Importing the Data + +Now we have a general understanding of our data we can import it into Galaxy and start processing it! + +> Upload data to Galaxy +> +> 1. Create a new history for this tutorial +> 2. Import the following files from the ```GSE176031_RAW``` folder +> ``` +GSM5353214_PA_AUG_PB_1A_S1.dge.txt +GSM5353215_PA_AUG_PB_1B_S2.dge.txt +GSM5353216_PA_PB1A_Pool_1_3_S50_L002_dge.txt +GSM5353217_PA_PB1A_Pool_2_S107_L004_dge.txt +GSM5353218_PA_PB1B_Pool_1_2_S74_L003_dge.txt +GSM5353219_PA_PB1B_Pool_3_5_S100_L002_dge.txt +GSM5353220_PA_PB1B_Pool_3_5_S51_L002_dge.txt +GSM5353221_PA_PB2A_Pool_1_3_S25_L001_dge.txt +GSM5353222_PA_PB2B_Pool_1_3_S52_L002_dge.txt +GSM5353223_PA_PB2B_Pool_2_S26_L001_dge.txt +> ``` +> +{: .hands_on} + +It is also a good idea to add tags to each sample in order to keep track of what data is being processed, below the imported data has tags including the patient and sample id: + +![Imported data with tags](../../images/scrna-ncbi-anndata/metadata.png "Imported data with tags") + +# Converting to AnnData and Combining Samples + > Convert raw data to AnnData > > 1. {% tool [Import AnnData and loom](toolshed.g2.bx.psu.edu/repos/iuc/anndata_import/anndata_import/0.7.5+galaxy1) %} with the following parameters: @@ -74,6 +139,8 @@ follow_up_training: > {: .hands_on} +# Annotating the Data + > > > 1. {% tool [Inspect AnnData](toolshed.g2.bx.psu.edu/repos/iuc/anndata_inspect/anndata_inspect/0.7.5+galaxy1) %} with the following parameters: @@ -274,6 +341,8 @@ follow_up_training: > {: .hands_on} +# Further Processing the Data + > Add initial metadata > > 1. {% tool [Scanpy FilterCells](toolshed.g2.bx.psu.edu/repos/ebi-gxa/scanpy_filter_cells/scanpy_filter_cells/1.8.1+galaxy9) %} with the following parameters: From e189f939e1c27e6986dc4bb0f34c5bfa16aa29ae Mon Sep 17 00:00:00 2001 From: Morgan Howells Date: Wed, 25 Oct 2023 11:47:06 +0000 Subject: [PATCH 03/59] add more information --- .../tutorials/scrna-ncbi-anndata/tutorial.md | 50 +++++++++++++++++-- 1 file changed, 47 insertions(+), 3 deletions(-) diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md index 8e25eca4bc6926..3af2a372b8b4e5 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -101,12 +101,14 @@ GSM5353223_PA_PB2B_Pool_2_S26_L001_dge.txt > {: .hands_on} -It is also a good idea to add tags to each sample in order to keep track of what data is being processed, below the imported data has tags including the patient and sample id: +It is also a good idea to add tags to each sample in order to keep track of what data is being processed, below is some of the imported data with added tags for the patient and sample id: ![Imported data with tags](../../images/scrna-ncbi-anndata/metadata.png "Imported data with tags") # Converting to AnnData and Combining Samples +The first step is to convert all of the raw files into AnnData objects, this can be done one at a time or all at once by selecting ```multiple datasets``` when chosing the input and highlighting all the raw data files. + > Convert raw data to AnnData > > 1. {% tool [Import AnnData and loom](toolshed.g2.bx.psu.edu/repos/iuc/anndata_import/anndata_import/0.7.5+galaxy1) %} with the following parameters: @@ -115,8 +117,14 @@ It is also a good idea to add tags to each sample in order to keep track of what > - {% icon param-file %} *"Annotated data matrix"*: `Select all imported files` > - *"Does the first column store the row names?"*: `Yes` > +> 2. {% tool [Inspect AnnData](toolshed.g2.bx.psu.edu/repos/iuc/anndata_inspect/anndata_inspect/0.7.5+galaxy1) %} with the following parameters: +> - {% icon param-file %} *"Annotated data matrix"*: `select any one of the AnnData files` +> - *"What to inspect?"*: `Key-indexed observations annotation (obs)` +> {: .hands_on} +Looking at the observation data (obs) of one of the files we can see that it is storing cell data, however we need the variable data (var) to store the cells and the observation data to store the genes, so we also need to transpose all of our AnnData objects, again we can speed up the process by selecting all of the AnnData objects and process them at once. + > Transpose AnnData objects > > 1. {% tool [Manipulate AnnData](toolshed.g2.bx.psu.edu/repos/iuc/anndata_manipulate/anndata_manipulate/0.7.5+galaxy1) %} with the following parameters: @@ -125,6 +133,8 @@ It is also a good idea to add tags to each sample in order to keep track of what > {: .hands_on} +Now we have all the AnnData files with the data in the correct position we can combine all the data into a single AnnData file which will make it much easier to work with. This combination operation will add an additional column called **batch** which tells us which AnnData object each bit of data came from, this will be useful for further processing! + > Combine AnnData objects > > 1. {% tool [Manipulate AnnData](toolshed.g2.bx.psu.edu/repos/iuc/anndata_manipulate/anndata_manipulate/0.7.5+galaxy1) %} with the following parameters: @@ -139,8 +149,12 @@ It is also a good idea to add tags to each sample in order to keep track of what > {: .hands_on} +Now we have all of our gene expression data stored in a single AnnData object! Now we just need to add our metadata! + # Annotating the Data +The next step is to annotate our data using the information gathered from the excel sheet earlier, we will do this by leveraging the batch column generated when the objects were combined for each individual patient/sample (indicated by the batch number) we will add in the relevant annotations. First lets extract the observation data so we can manipulate it. + > > > 1. {% tool [Inspect AnnData](toolshed.g2.bx.psu.edu/repos/iuc/anndata_inspect/anndata_inspect/0.7.5+galaxy1) %} with the following parameters: @@ -151,6 +165,10 @@ It is also a good idea to add tags to each sample in order to keep track of what > {: .hands_on} +Now for each new column we want to add we need to replace the relvant batch numbers with the appropriate metadata. After that we can cut the modified column out so it is separated. We will repeat this process for each piece of metadata we want to add, all the relevant data can be found in the first table of this tutorial. + +First lets add the replicate column which tells us which rows are part of pools of the same patient and tumor location. + > Create replicate metadata > > 1. {% tool [Replace Text](toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_column/1.1.3) %} with the following parameters: @@ -189,6 +207,8 @@ It is also a good idea to add tags to each sample in order to keep track of what > {: .hands_on} +Next we will add the metadata indicating which patient each row came from. + > Create patient data > > 1. {% tool [Replace Text](toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_column/1.1.3) %} with the following parameters: @@ -222,7 +242,9 @@ It is also a good idea to add tags to each sample in order to keep track of what > {: .hands_on} -> Create patient metadata +We will now add a column to indicate which sample each row came from using the sample ID's described earlier. + +> Create sample id metadata > > 1. {% tool [Replace Text](toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_column/1.1.3) %} with the following parameters: > - {% icon param-file %} *"File to process"*: `Observation data` @@ -270,6 +292,8 @@ It is also a good idea to add tags to each sample in order to keep track of what > {: .hands_on} +Finally we will add the tumor column which indicates which tumor sample each row belongs to. + > Create tumor metadata > > 1. {% tool [Replace Text](toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_column/1.1.3) %} with the following parameters: @@ -308,6 +332,8 @@ It is also a good idea to add tags to each sample in order to keep track of what > {: .hands_on} +Now with all the individual metadata columns created we can combine them together to make a single tabular file containing our metadata. Since the ```Paste``` operation only allows us to combine two columns at once we will need to run the tool a few times to add all the columns together. + > Combine metadata > > 1. {% tool [Paste](Paste1) %} with the following parameters: @@ -329,6 +355,8 @@ It is also a good idea to add tags to each sample in order to keep track of what > {: .hands_on} +With the metadata completed the last step is to add it to our original combined object! + > Add metadata to AnnData object > > 1. {% tool [Manipulate AnnData](toolshed.g2.bx.psu.edu/repos/iuc/anndata_manipulate/anndata_manipulate/0.7.5+galaxy1) %} with the following parameters: @@ -341,8 +369,14 @@ It is also a good idea to add tags to each sample in order to keep track of what > {: .hands_on} +Congratulations! You have successfully interpreted some data and added all the relevant annotations to the AnnData object! All thats left to do is to add some additional metadata using automated tools! + # Further Processing the Data +With the manual annotations added we need to do some further processing to add some statistical metadata about the genes, this is done automatically by running two different tools. + +We can run the ```Scanpy FilterCells``` tool with a large range of filtering values to not actually filter anything but instead add some metadata about the counts and number of expressed genes. + > Add initial metadata > > 1. {% tool [Scanpy FilterCells](toolshed.g2.bx.psu.edu/repos/ebi-gxa/scanpy_filter_cells/scanpy_filter_cells/1.8.1+galaxy9) %} with the following parameters: @@ -359,6 +393,8 @@ It is also a good idea to add tags to each sample in order to keep track of what > {: .hands_on} +The final tool to run is the ```AnnData Operations``` tool which will add the rest of our metadata, mostly information about the mitocondrial cells in the object which are indicated with cells that start with **MT-**. + > Add final metadata > > 1. {% tool [AnnData Operations](toolshed.g2.bx.psu.edu/repos/ebi-gxa/anndata_ops/anndata_ops/1.8.1+galaxy0) %} with the following parameters: @@ -374,4 +410,12 @@ It is also a good idea to add tags to each sample in order to keep track of what > > 2. **Rename** {% icon galaxy-pencil %} output `Final Object` > -{: .hands_on} \ No newline at end of file +> 3. {% tool [Inspect AnnData](toolshed.g2.bx.psu.edu/repos/iuc/anndata_inspect/anndata_inspect/0.7.5+galaxy1) %} with the following parameters: +> - {% icon param-file %} *"Annotated data matrix"*: `Final Object` +> - *"What to inspect?"*: `Key-indexed observations annotation (obs)` +> +{: .hands_on} + +With that run we should be finished! check the observation file to see all the metadata that we've added in throughout the tutorial and take this time to check that all the columns contain data, if any of the columns are blank then there was probably an issue with one of the tools (likely the last 2!). + +Congratulations! Now your data is ready for any further processing or analysis! \ No newline at end of file From 219d64544ea22dec16d8cb09ea568eb0b22d2198 Mon Sep 17 00:00:00 2001 From: Morgan Howells Date: Fri, 3 Nov 2023 12:11:35 +0000 Subject: [PATCH 04/59] update tutorial --- .../tutorials/scrna-ncbi-anndata/tutorial.md | 49 ++++++++++--------- 1 file changed, 26 insertions(+), 23 deletions(-) diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md index 3af2a372b8b4e5..7bb98226935298 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -2,31 +2,25 @@ layout: tutorial_hands_on title: Converting NCBI data to the AnnData Format -subtopic: Single cell data ingestion and formats conversion +subtopic: datamanipulation priority: 3 -zenodo_link: 'https://zenodo.org/record/7053673' questions: - How do i understand NCBI data? - How can i convert raw gene data to the AnnData format? - How do i manually and automatically add metadata to my AnnData object? objectives: -- add objectives here +- Analyse some gene data from NCBI. +- Convert raw gene expression data into the AnnData format. +- Add metadata to the AnnData object to prepare it for analysis. time_estimation: 1H key_points: -- Single cell data is huge, and must have its many (# genes) dimensions reduced for analysis -- Analysis is more subjective than we think, and biological understanding of the samples as well as many iterations of analysis are important to give us our best change of attaining real biological insights +- Single cell data often requires additional processing and conversion before it is able to be analysed. +- Metadata and annotations can be added in both manually and automatically with various tools and resources. -requirements: -- - type: "internal" - topic_name: single-cell - tutorials: - - scrna-case_alevin - - scrna-case_alevin-combine-datasets tags: -- 10x -- paper-replication +- single-cell +- data-management contributions: authorship: @@ -36,12 +30,11 @@ follow_up_training: - type: "internal" topic_name: single-cell - tutorials: - - scrna-case_JUPYTER-trajectories - - scrna-case_monocle3-trajectories --- +# Introduction + The goal of this tutorial is to take raw NCBI data from some published research, convert the raw data into the AnnData format then add metadata to the object so that it can be used for further processing / analysis. Here we will look at the steps to obtain, understand, and manipulate the data in order for it to be properly processed. # Obtaining the Data @@ -50,7 +43,9 @@ The first step is the obtain the data, for this tutorial we will use data from [ Looking at the GEO repository we can see a lot of data including descriptions of the data and associated paper, what we are interested in however is the supplemental data found at the bottom of the page. Under the download section ```(custom)``` allows us to select individual files to download, however we are going to download all of the data by selecting the ```(http)``` link. -We now have the raw gene expression data that we will be processing downloaded, however we will need to manually add some metadata which requires finding out some more information about our data. Looking at the link for the paper [https://pubmed.ncbi.nlm.nih.gov/35013146/](https://pubmed.ncbi.nlm.nih.gov/35013146/) we can see a link for accessing the full text, clicking on that will lead us to a page [https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8748675/](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8748675/) which contains more supplementary materials. Under this section we should see various .xlsx files (Excel spreadsheets), go ahead and download Supplementary Dataset 1 (```41467_2021_27322_MOESM2_ESM.xlsx```), this one spreadsheet contains all the information we need to further understand our data. +That should download a .TAR file which contains all the files compressed into one archive, we will need to decompress/extract this to reveal a folder full of .GZ files, these individual files are further compressed and will each need to be decompressed, this can be done all at once by highlighting all the files in the folder and decompressing/extracting them together. + +We now have the raw gene expression data that we will be processing downloaded, however we will need to manually add some metadata which requires finding out some more information about our files. Looking at the link for the paper ([https://pubmed.ncbi.nlm.nih.gov/35013146/](https://pubmed.ncbi.nlm.nih.gov/35013146/)) we can see a link for accessing the full text, clicking on that will lead us to a page ([https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8748675/](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8748675/)) which contains more supplementary materials. Under this section we should see various .xlsx files (Excel spreadsheets), go ahead and download Supplementary Dataset 1 (```41467_2021_27322_MOESM2_ESM.xlsx```), this one spreadsheet contains all the information we need to further understand our data. # Understanding the Data @@ -65,7 +60,7 @@ Looking at the excel file we can see multiple sheets, navigating to ```Clinical_ | Patient 3 | MAY_PB2A | right-anterior | | | MAY_PB2B | right-mid | -We can see that each patient has 2 different samples from different tumor locations, this is important information that needs to be added to our data so that we can seperate the data during analysis. +We can see that each patient has 2 different samples from different tumor locations, this is important information that needs to be added to our data so that we can seperate it during analysis if needed. Finally we need to find the files relating to each patient, inspecting ```GSE176031_RAW``` (downloaded earlier) we can see 53 files, unfortunately the names of the files don't exactly match the data in our excel sheet which can make finding the right samples a bit difficult, a summary of which samples match which file can be found below: @@ -76,7 +71,7 @@ Finally we need to find the files relating to each patient, inspecting ```GSE176 - **MAY_PB2A** ---> **PA_PB2A** - **MAY_PB2B** ---> **PA_PB2B** -You may also notice that we have multiple sample files with the same name suffixed with **_Pool_X** these are replications where multiple samples are taken of the same tumor area which helps get a more comprehensive view of the gene data of the tumor. +You may also notice that we have multiple sample files with the same name suffixed with **_Pool_X** these are replications where multiple samples are taken of the same tumor area in order to get a more comprehensive view of the gene data of the tumor, we will need to combine these replication files during processing. # Importing the Data @@ -125,6 +120,10 @@ The first step is to convert all of the raw files into AnnData objects, this can Looking at the observation data (obs) of one of the files we can see that it is storing cell data, however we need the variable data (var) to store the cells and the observation data to store the genes, so we also need to transpose all of our AnnData objects, again we can speed up the process by selecting all of the AnnData objects and process them at once. +> Check your data +> Whilst for this specific data the object needed to be transposed this won't always be the case! The easiest way is to check the obs data of the AnnData object using the ```Inspect AnnData``` tool. The obs file should have a column containing gene letters (something like **CGGAAGTGATAC**) if thats the case then the data doesn't need to be transposed! +{: .comment} + > Transpose AnnData objects > > 1. {% tool [Manipulate AnnData](toolshed.g2.bx.psu.edu/repos/iuc/anndata_manipulate/anndata_manipulate/0.7.5+galaxy1) %} with the following parameters: @@ -369,7 +368,7 @@ With the metadata completed the last step is to add it to our original combined > {: .hands_on} -Congratulations! You have successfully interpreted some data and added all the relevant annotations to the AnnData object! All thats left to do is to add some additional metadata using automated tools! +{% icon congratulations %} Congratulations! You have successfully interpreted some data and added all the relevant annotations to the AnnData object! All thats left to do is to add some additional metadata using automated tools! # Further Processing the Data @@ -416,6 +415,10 @@ The final tool to run is the ```AnnData Operations``` tool which will add the re > {: .hands_on} -With that run we should be finished! check the observation file to see all the metadata that we've added in throughout the tutorial and take this time to check that all the columns contain data, if any of the columns are blank then there was probably an issue with one of the tools (likely the last 2!). +With that run we should be finished! check the observation file to see all the metadata that we've added in throughout the tutorial and take this time to check that all the columns contain data. + +> Check your final object! +> The above tools will sometimes run without error but not produce the correct results, inspecing the obs file of the final AnnData object you should see that all the columns contain data, if any of the columns are blank then something has gone wrong! +{: .warning} -Congratulations! Now your data is ready for any further processing or analysis! \ No newline at end of file +{% icon congratulations %} Congratulations! Now your data is ready for further processing or analysis! \ No newline at end of file From 6e2e6852d205ed04286ac4a0e6f69669e5fbfe9c Mon Sep 17 00:00:00 2001 From: Morgan Howells Date: Fri, 3 Nov 2023 13:14:34 +0000 Subject: [PATCH 05/59] fix linting issues --- topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md index 7bb98226935298..2afc822f19642e 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -39,7 +39,7 @@ The goal of this tutorial is to take raw NCBI data from some published research, # Obtaining the Data -The first step is the obtain the data, for this tutorial we will use data from [this](https://pubmed.ncbi.nlm.nih.gov/35013146/) paper. The data for this research is stored in the Gene Expression Omnibus (GEO) which is a public repository storing public genomics data, the link to the data can be found [here](https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE176031). +The first step is the obtain the data, for this tutorial we will use data from the following paper: [https://pubmed.ncbi.nlm.nih.gov/35013146/](https://pubmed.ncbi.nlm.nih.gov/35013146/). The data for this research is stored in the Gene Expression Omnibus (GEO) which is a public repository storing public genomics data, the link to the data can be found in the following GEO repository: [https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE176031](https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE176031). Looking at the GEO repository we can see a lot of data including descriptions of the data and associated paper, what we are interested in however is the supplemental data found at the bottom of the page. Under the download section ```(custom)``` allows us to select individual files to download, however we are going to download all of the data by selecting the ```(http)``` link. From 2c7175fb5894a7e8b75774a3ae56b5eb34daf644 Mon Sep 17 00:00:00 2001 From: Morgan Howells Date: Fri, 10 Nov 2023 12:09:47 +0000 Subject: [PATCH 06/59] add bibliography --- .../tutorials/scrna-ncbi-anndata/tutorial.bib | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.bib diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.bib b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.bib new file mode 100644 index 00000000000000..34c9de458f52ab --- /dev/null +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.bib @@ -0,0 +1,10 @@ +@article{Song2022, + doi = {10.1038/s41467-021-27322-4}, + url = {https://doi.org/10.1038/s41467-021-27322-4}, + year = {2022}, + month = jan, + volume = {13}, + author = {Song, Hanbing and Weinstein, Hannah N W and Allegakoen, Paul andWadsworth, 2nd, Marc H and Xie, Jamie and Yang, Heiko andCastro, Ethan A and Lu, Kevin L and Stohr, Bradley A and Feng,Felix Y and Carroll, Peter R and Wang, Bruce and Cooperberg,Matthew R and Shalek, Alex K and Huang, Franklin W}, + title = {Single-cell analysis of human primary prostate cancer reveals the heterogeneity of tumor-associated epithelial cell states}, + journal = {Nat. Commun.} +} From 2f5567a04ade0310da47b979b987ca2273b15c79 Mon Sep 17 00:00:00 2001 From: Morgan Howells Date: Fri, 10 Nov 2023 12:39:40 +0000 Subject: [PATCH 07/59] update tutorial --- .../tutorials/scrna-ncbi-anndata/tutorial.md | 61 ++++++++++++++++--- 1 file changed, 54 insertions(+), 7 deletions(-) diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md index 2afc822f19642e..4fbcfe56b22c0d 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -1,9 +1,10 @@ --- layout: tutorial_hands_on -title: Converting NCBI data to the AnnData Format +title: Converting NCBI Data to the AnnData Format subtopic: datamanipulation priority: 3 +zenodo_link: 'https://zenodo.org/record/10101768' questions: - How do i understand NCBI data? @@ -39,11 +40,53 @@ The goal of this tutorial is to take raw NCBI data from some published research, # Obtaining the Data -The first step is the obtain the data, for this tutorial we will use data from the following paper: [https://pubmed.ncbi.nlm.nih.gov/35013146/](https://pubmed.ncbi.nlm.nih.gov/35013146/). The data for this research is stored in the Gene Expression Omnibus (GEO) which is a public repository storing public genomics data, the link to the data can be found in the following GEO repository: [https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE176031](https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE176031). +The first step is the obtain the data, for this tutorial we will use data from the paper {% cite Song2022 %}. The data for this research is stored in the Gene Expression Omnibus (GEO) which is a public repository storing public genomics data. -Looking at the GEO repository we can see a lot of data including descriptions of the data and associated paper, what we are interested in however is the supplemental data found at the bottom of the page. Under the download section ```(custom)``` allows us to select individual files to download, however we are going to download all of the data by selecting the ```(http)``` link. +You can access the data for this tutorial in multiple ways: -That should download a .TAR file which contains all the files compressed into one archive, we will need to decompress/extract this to reveal a folder full of .GZ files, these individual files are further compressed and will each need to be decompressed, this can be done all at once by highlighting all the files in the folder and decompressing/extracting them together. +1 - Downloading and extracting the data manually on to your local machine: + +> Option 1: Manually downloading data +> +> 1. Using a web browser navigate to the GEO repsitory for the paper +> +> ``` +> https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE176031 +> ``` +> +> 2. Click on ```(http)``` in the supplemental materials section of the page to download the data +> 3. Using an archive tool (e.g. 7zip) extract the .TAR file +> 4. Using the same archive tool extract all of the .GZ files +> +{: .hands_on} + +2 - Uploading the extracted and filtered data directly from Zenodo: + +> Option 2: Uploading from Zenodo +> +> 1. Create a new history for this tutorial +> 2. Import the following files from [Zenodo]({{ page.zenodo_link }}) +> +> ``` +> {{ page.zenodo_link }}/files/GSM5353214_PA_AUG_PB_1A_S1.dge.txt +> {{ page.zenodo_link }}/files/GSM5353215_PA_AUG_PB_1B_S2.dge.txt +> {{ page.zenodo_link }}/files/GSM5353216_PA_PB1A_Pool_1_3_S50_L002_dge.txt +> {{ page.zenodo_link }}/files/GSM5353217_PA_PB1A_Pool_2_S107_L004_dge.txt +> {{ page.zenodo_link }}/files/GSM5353218_PA_PB1B_Pool_1_2_S74_L003_dge.txt +> {{ page.zenodo_link }}/files/GSM5353219_PA_PB1B_Pool_2_S24_L001_dge.txt +> {{ page.zenodo_link }}/files/GSM5353220_PA_PB1B_Pool_3_S51_L002_dge.txt +> {{ page.zenodo_link }}/files/GSM5353221_PA_PB2A_Pool_1_3_S25_L001_dge.txt +> {{ page.zenodo_link }}/files/GSM5353222_PA_PB2B_Pool_1_3_S52_L002_dge.txt +> {{ page.zenodo_link }}/files/GSM5353223_PA_PB2B_Pool_2_S26_L001_dge.txt +> ``` +> +> {% snippet faqs/galaxy/datasets_import_via_link.md %} +> +> 3. Check that the datatype is `tabular` +> +> {% snippet faqs/galaxy/datasets_change_datatype.md datatype="tabular" %} +> +{: .hands_on} We now have the raw gene expression data that we will be processing downloaded, however we will need to manually add some metadata which requires finding out some more information about our files. Looking at the link for the paper ([https://pubmed.ncbi.nlm.nih.gov/35013146/](https://pubmed.ncbi.nlm.nih.gov/35013146/)) we can see a link for accessing the full text, clicking on that will lead us to a page ([https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8748675/](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8748675/)) which contains more supplementary materials. Under this section we should see various .xlsx files (Excel spreadsheets), go ahead and download Supplementary Dataset 1 (```41467_2021_27322_MOESM2_ESM.xlsx```), this one spreadsheet contains all the information we need to further understand our data. @@ -75,7 +118,7 @@ You may also notice that we have multiple sample files with the same name suffix # Importing the Data -Now we have a general understanding of our data we can import it into Galaxy and start processing it! +Now we have a general understanding of our data we can import it into Galaxy and start processing it! (**If you imported the data from Zenodo earlier you can skip the next step**) > Upload data to Galaxy > @@ -87,8 +130,8 @@ GSM5353215_PA_AUG_PB_1B_S2.dge.txt GSM5353216_PA_PB1A_Pool_1_3_S50_L002_dge.txt GSM5353217_PA_PB1A_Pool_2_S107_L004_dge.txt GSM5353218_PA_PB1B_Pool_1_2_S74_L003_dge.txt -GSM5353219_PA_PB1B_Pool_3_5_S100_L002_dge.txt -GSM5353220_PA_PB1B_Pool_3_5_S51_L002_dge.txt +GSM5353219_PA_PB1B_Pool_2_S24_L001_dge.txt +GSM5353220_PA_PB1B_Pool_3_S51_L002_dge.txt GSM5353221_PA_PB2A_Pool_1_3_S25_L001_dge.txt GSM5353222_PA_PB2B_Pool_1_3_S52_L002_dge.txt GSM5353223_PA_PB2B_Pool_2_S26_L001_dge.txt @@ -376,6 +419,10 @@ With the manual annotations added we need to do some further processing to add s We can run the ```Scanpy FilterCells``` tool with a large range of filtering values to not actually filter anything but instead add some metadata about the counts and number of expressed genes. +> Scanpy FilterCells version issue +> The {% tool [Scanpy FilterCells](toolshed.g2.bx.psu.edu/repos/ebi-gxa/scanpy_filter_cells/scanpy_filter_cells/1.8.1+galaxy9) %} tool (used below) does not work in the latest version (**1.8.1+galaxy93**), switch to version **1.8.1+galaxy9** in order to run the tool without error. +{: .warning} + > Add initial metadata > > 1. {% tool [Scanpy FilterCells](toolshed.g2.bx.psu.edu/repos/ebi-gxa/scanpy_filter_cells/scanpy_filter_cells/1.8.1+galaxy9) %} with the following parameters: From ac64076b2fb02e1b283bfd962cdd1d055c7e774d Mon Sep 17 00:00:00 2001 From: Morgan Howells Date: Fri, 10 Nov 2023 15:38:28 +0000 Subject: [PATCH 08/59] updated tutorial --- .../single-cell/tutorials/scrna-ncbi-anndata/tutorial.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md index 4fbcfe56b22c0d..da9c95f4493ba3 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -7,9 +7,9 @@ priority: 3 zenodo_link: 'https://zenodo.org/record/10101768' questions: -- How do i understand NCBI data? -- How can i convert raw gene data to the AnnData format? -- How do i manually and automatically add metadata to my AnnData object? +- How do I understand NCBI data? +- How can I convert raw gene data to the AnnData format? +- How do I manually and automatically add metadata to my AnnData object? objectives: - Analyse some gene data from NCBI. - Convert raw gene expression data into the AnnData format. @@ -209,7 +209,7 @@ The next step is to annotate our data using the information gathered from the ex Now for each new column we want to add we need to replace the relvant batch numbers with the appropriate metadata. After that we can cut the modified column out so it is separated. We will repeat this process for each piece of metadata we want to add, all the relevant data can be found in the first table of this tutorial. -First lets add the replicate column which tells us which rows are part of pools of the same patient and tumor location. +Lets now add the replicate column which tells us which rows are part of pools of the same patient and tumor location. > Create replicate metadata > From 9b0ac04ded928e0b86f4af507585c494b50fb053 Mon Sep 17 00:00:00 2001 From: Morgan <58524460+hexhowells@users.noreply.github.com> Date: Fri, 10 Nov 2023 15:40:22 +0000 Subject: [PATCH 09/59] Update topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md Co-authored-by: Pavankumar Videm --- topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md index da9c95f4493ba3..ef39594ef983cc 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -175,7 +175,7 @@ Looking at the observation data (obs) of one of the files we can see that it is > {: .hands_on} -Now we have all the AnnData files with the data in the correct position we can combine all the data into a single AnnData file which will make it much easier to work with. This combination operation will add an additional column called **batch** which tells us which AnnData object each bit of data came from, this will be useful for further processing! +Now we have all the AnnData files with the data in the correct orientation we can combine all the data into a single AnnData file which will make it much easier to work with. This combination operation will add an additional column called **batch** which tells us which AnnData object each bit of data came from, this will be useful for further processing! > Combine AnnData objects > From 7e760eaabbfbb03b3e4dd15a4a2e88976ef6a261 Mon Sep 17 00:00:00 2001 From: Morgan <58524460+hexhowells@users.noreply.github.com> Date: Fri, 10 Nov 2023 15:40:31 +0000 Subject: [PATCH 10/59] Update topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md Co-authored-by: Pavankumar Videm --- topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md index ef39594ef983cc..1a04cb20801dc0 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -203,7 +203,7 @@ The next step is to annotate our data using the information gathered from the ex > - {% icon param-file %} *"Annotated data matrix"*: `Combined Object` > - *"What to inspect?"*: `Key-indexed observations annotation (obs)` > -> 2. **Rename** {% icon galaxy-pencil %} output `Combined Object` +> 2. **Rename** {% icon galaxy-pencil %} output `Observation data` > {: .hands_on} From d98ae6db45ac36ab43d7f7478d71e82e87a87fad Mon Sep 17 00:00:00 2001 From: Morgan <58524460+hexhowells@users.noreply.github.com> Date: Fri, 10 Nov 2023 15:40:37 +0000 Subject: [PATCH 11/59] Update topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md Co-authored-by: Pavankumar Videm --- topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md index 1a04cb20801dc0..a77d32d53dde39 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -21,7 +21,7 @@ key_points: tags: - single-cell -- data-management +- data management contributions: authorship: From c32381b479462c83797708d131f2f92f689f46ba Mon Sep 17 00:00:00 2001 From: Morgan Howells Date: Fri, 10 Nov 2023 15:45:48 +0000 Subject: [PATCH 12/59] include all 10 samples in example image --- .../images/scrna-ncbi-anndata/metadata.png | Bin 19524 -> 31328 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/topics/single-cell/images/scrna-ncbi-anndata/metadata.png b/topics/single-cell/images/scrna-ncbi-anndata/metadata.png index 4fa53fd12be8940628e18db25cebbbfe8c22652c..a4bdb033e8182dad9c6ea3e036bd3a96666a128c 100644 GIT binary patch literal 31328 zcmd3tbyQnj+oy3U#ogVVLV@Dm;uP25?(Qx{1BK#NC=`mjdx79kT!REC?rxJl&-c#v z$~SA~&&gU@S;;y{PEO9*`?`PkwWC#)<^Te!JTVG9^p#O{ z*%;^pf|Z1l1Pn|K5beVB8`FYS9TN&7GAmU<$p@{Q2# zt5o7#6$Dh31=Q6QG~_+Iy9HendwcwiOKTfSE#A+-#Lf4*=j92gSzI^3_a4+19`yDe z6bdF53aI*fs>=7x14WJWU!sQLcFc^`V>Hw`9%6j*#BXue~c-y~E+^hRP{xy#ne6)~VSVQK?#?Ay$hoz568}%|Cvd zXsq7rC4_+~mW6$p@K*~=R7@`V9Az9j)O+Ul5^1BtgaDJ(U){RdA)w~`#yF&^#2jJa z674-q>0U1ktSSr)ZhDA?T!KfKTTEn%J~*c6P4kkVOU}+J2m+a z*)ZLvutJ}*VPN?qs=iaOFv7~&eHDPQfQ50i|EQ&C{m4HETX1e{SyjV0(7!-0CsTW%hP5GXQqIbav{I;>>b-stg5m?exL4km$iF7Gr zo7+M|f^Uu`rLG4_AJmrMU|{Lh9YKf+UngCe$g^P(Z9-JqU;;dqX+gfv^@cA$`m!6M zwwzSFl7pvCr@noef}x6d?oNm-KDJSZ6E0>(u<1l{vkC|}eLD@qm%ei`_z_^JdiHHZ zEBiYPlKn%$r-FuWx-oOCO)xLh?P-hINx%0D8z23qo?{tcZVG4XI=)##nBTqlNpovG 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 ZJ_gY%CRd{o^1Np#IVmN{N^#?${|7jjv~~ah literal 19524 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 JdtvGt^Iv9$c`pC} From 660ae61b875fe0fc9ae8624ef56857bf8d3e0963 Mon Sep 17 00:00:00 2001 From: Morgan <58524460+hexhowells@users.noreply.github.com> Date: Fri, 10 Nov 2023 15:52:12 +0000 Subject: [PATCH 13/59] Update tool version Co-authored-by: Pavankumar Videm --- topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md index a77d32d53dde39..8c2f6add16c18a 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -443,7 +443,7 @@ The final tool to run is the ```AnnData Operations``` tool which will add the re > Add final metadata > -> 1. {% tool [AnnData Operations](toolshed.g2.bx.psu.edu/repos/ebi-gxa/anndata_ops/anndata_ops/1.8.1+galaxy0) %} with the following parameters: +> 1. {% tool [AnnData Operations](toolshed.g2.bx.psu.edu/repos/ebi-gxa/anndata_ops/anndata_ops/1.8.1+galaxy9) %} with the following parameters: > - {% icon param-file %} *"Input object in hdf5 AnnData format"*: `Output of Scanpy FilterCells` > - *"Format of output object"*: `AnnData format` > - *"Copy AnnData to .raw"*: `No` From 270fc0588f8565bfbf812144422af5f9bb2c93ea Mon Sep 17 00:00:00 2001 From: Morgan Howells Date: Fri, 10 Nov 2023 15:58:55 +0000 Subject: [PATCH 14/59] update replicate tool parameters --- topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md index 8c2f6add16c18a..5983b88e806cdc 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -217,7 +217,7 @@ Lets now add the replicate column which tells us which rows are part of pools of > - {% icon param-file %} *"File to process"*: `Observation data` > - *"1: Replacement"* > - *"in column"*: `Column: 2` -> - *"Find pattern"*: `2|4|8` +> - *"Find pattern"*: `2|4|7|8` > - *"Replace with"*: `poolA` > - **+ Insert Replacement** > - *"2: Replacement"* @@ -232,7 +232,7 @@ Lets now add the replicate column which tells us which rows are part of pools of > - **+ Insert Replacement** > - *"4: Replacement"* > - *"in column"*: `Column: 2` -> - *"Find pattern"*: `0|1|7` +> - *"Find pattern"*: `0|1` > - *"Replace with"*: `NA` > - **+ Insert Replacement** > - *"5: Replacement"* From bdd9b657de07a27740f832ac0d012efd7db8207c Mon Sep 17 00:00:00 2001 From: Morgan Howells Date: Sun, 19 Nov 2023 18:18:57 +0000 Subject: [PATCH 15/59] add comment box about parameter usage --- .../tutorials/scrna-ncbi-anndata/tutorial.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md index 5983b88e806cdc..ef69856b4032dc 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -257,17 +257,17 @@ Next we will add the metadata indicating which patient each row came from. > - {% icon param-file %} *"File to process"*: `Observation data` > - *"1: Replacement"* > - *"in column"*: `Column: 2` -> - *"Find pattern"*: `(0$)|(1$)` +> - *"Find pattern"*: `0|1` > - *"Replace with"*: `patient1` > - **+ Insert Replacement** > - *"2: Replacement"* > - *"in column"*: `Column: 2` -> - *"Find pattern"*: `(2$)|(3$)|(4$)|(5$)|(6$)` +> - *"Find pattern"*: `2|3|4|5|6` > - *"Replace with"*: `patient2` > - **+ Insert Replacement** > - *"3: Replacement"* > - *"in column"*: `Column: 2` -> - *"Find pattern"*: `(7$)|(8$)|(9$)` +> - *"Find pattern"*: `7|8|9` > - *"Replace with"*: `patient3` > - **+ Insert Replacement** > - *"5: Replacement"* @@ -334,6 +334,12 @@ We will now add a column to indicate which sample each row came from using the s > {: .hands_on} +> $ parameter +> You may have noticied that some of the parameters in the previous tool used the $ symbol, this is due to how the {% tool Replace Text %} tool works. The tool will replace and **update** the data for every insert operation, meaning that lines that have already been updated could be updated again. +> +> Since we are replacing our batch id's with identifiers that include numbers we want to prevent them from being updated again. appending the pattern with the $ symbol tells the tool to only replace the pattern if it is not followed by any other character (so the 1 in `AUG_PB1A` won't be replaced as it is followed by an 'A'). +{: .comment} + Finally we will add the tumor column which indicates which tumor sample each row belongs to. > Create tumor metadata From ba5707c0be8122d29a40f0b256b9c0c372513b6c Mon Sep 17 00:00:00 2001 From: Morgan <58524460+hexhowells@users.noreply.github.com> Date: Mon, 20 Nov 2023 15:32:39 +0000 Subject: [PATCH 16/59] Remove introduction header Co-authored-by: Helena --- topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md index ef69856b4032dc..18b15f62696d05 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -34,8 +34,6 @@ follow_up_training: --- -# Introduction - The goal of this tutorial is to take raw NCBI data from some published research, convert the raw data into the AnnData format then add metadata to the object so that it can be used for further processing / analysis. Here we will look at the steps to obtain, understand, and manipulate the data in order for it to be properly processed. # Obtaining the Data From f01aa1c66e5a14afbc5ba03b808e9a07ea5ca5b5 Mon Sep 17 00:00:00 2001 From: Morgan Howells Date: Tue, 21 Nov 2023 11:37:54 +0000 Subject: [PATCH 17/59] Indent block quote to match item --- .../tutorials/scrna-ncbi-anndata/tutorial.md | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md index 18b15f62696d05..b0107c07cd034f 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -122,18 +122,18 @@ Now we have a general understanding of our data we can import it into Galaxy and > > 1. Create a new history for this tutorial > 2. Import the following files from the ```GSE176031_RAW``` folder -> ``` -GSM5353214_PA_AUG_PB_1A_S1.dge.txt -GSM5353215_PA_AUG_PB_1B_S2.dge.txt -GSM5353216_PA_PB1A_Pool_1_3_S50_L002_dge.txt -GSM5353217_PA_PB1A_Pool_2_S107_L004_dge.txt -GSM5353218_PA_PB1B_Pool_1_2_S74_L003_dge.txt -GSM5353219_PA_PB1B_Pool_2_S24_L001_dge.txt -GSM5353220_PA_PB1B_Pool_3_S51_L002_dge.txt -GSM5353221_PA_PB2A_Pool_1_3_S25_L001_dge.txt -GSM5353222_PA_PB2B_Pool_1_3_S52_L002_dge.txt -GSM5353223_PA_PB2B_Pool_2_S26_L001_dge.txt -> ``` +> ``` +> GSM5353214_PA_AUG_PB_1A_S1.dge.txt +> GSM5353215_PA_AUG_PB_1B_S2.dge.txt +> GSM5353216_PA_PB1A_Pool_1_3_S50_L002_dge.txt +> GSM5353217_PA_PB1A_Pool_2_S107_L004_dge.txt +> GSM5353218_PA_PB1B_Pool_1_2_S74_L003_dge.txt +> GSM5353219_PA_PB1B_Pool_2_S24_L001_dge.txt +> GSM5353220_PA_PB1B_Pool_3_S51_L002_dge.txt +> GSM5353221_PA_PB2A_Pool_1_3_S25_L001_dge.txt +> GSM5353222_PA_PB2B_Pool_1_3_S52_L002_dge.txt +> GSM5353223_PA_PB2B_Pool_2_S26_L001_dge.txt +> ``` > {: .hands_on} From d02b778a7f00746aa9ca392ab08f16ac445cbd90 Mon Sep 17 00:00:00 2001 From: Morgan Howells Date: Tue, 21 Nov 2023 14:40:21 +0000 Subject: [PATCH 18/59] add Choose Your Own Tutorial section --- .../tutorials/scrna-ncbi-anndata/tutorial.md | 30 +++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md index b0107c07cd034f..ba23334bdab425 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -40,11 +40,12 @@ The goal of this tutorial is to take raw NCBI data from some published research, The first step is the obtain the data, for this tutorial we will use data from the paper {% cite Song2022 %}. The data for this research is stored in the Gene Expression Omnibus (GEO) which is a public repository storing public genomics data. -You can access the data for this tutorial in multiple ways: +{% include _includes/cyoa-choices.html option1="Manual" option2="Zenodo" default="Zenodo" + text="If you have experience finding and downloading data from GEO then you can use the Zenodo link to load the data directly into Galaxy, if you don't have experience with GEO then you can manually download, prepare, and load the data into Galaxy." %} -1 - Downloading and extracting the data manually on to your local machine: -> Option 1: Manually downloading data +

+> Download and extract the data from GEO > > 1. Using a web browser navigate to the GEO repsitory for the paper > @@ -57,10 +58,10 @@ You can access the data for this tutorial in multiple ways: > 4. Using the same archive tool extract all of the .GZ files > {: .hands_on} +
-2 - Uploading the extracted and filtered data directly from Zenodo: - -> Option 2: Uploading from Zenodo +
+> Downloading the data from Zenodo > > 1. Create a new history for this tutorial > 2. Import the following files from [Zenodo]({{ page.zenodo_link }}) @@ -85,8 +86,9 @@ You can access the data for this tutorial in multiple ways: > {% snippet faqs/galaxy/datasets_change_datatype.md datatype="tabular" %} > {: .hands_on} +
-We now have the raw gene expression data that we will be processing downloaded, however we will need to manually add some metadata which requires finding out some more information about our files. Looking at the link for the paper ([https://pubmed.ncbi.nlm.nih.gov/35013146/](https://pubmed.ncbi.nlm.nih.gov/35013146/)) we can see a link for accessing the full text, clicking on that will lead us to a page ([https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8748675/](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8748675/)) which contains more supplementary materials. Under this section we should see various .xlsx files (Excel spreadsheets), go ahead and download Supplementary Dataset 1 (```41467_2021_27322_MOESM2_ESM.xlsx```), this one spreadsheet contains all the information we need to further understand our data. +We now have the raw gene expression data that we will be processing, however we will need to manually add some metadata which requires finding out some more information about our files. Looking at the link for the paper ([https://pubmed.ncbi.nlm.nih.gov/35013146/](https://pubmed.ncbi.nlm.nih.gov/35013146/)) we can see a link for accessing the full text, clicking on that will lead us to a page ([https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8748675/](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8748675/)) which contains more supplementary materials. Under this section we should see various .xlsx files (Excel spreadsheets), go ahead and download Supplementary Dataset 1 (```41467_2021_27322_MOESM2_ESM.xlsx```), this one spreadsheet contains all the information we need to further understand our data. # Understanding the Data @@ -114,9 +116,10 @@ Finally we need to find the files relating to each patient, inspecting ```GSE176 You may also notice that we have multiple sample files with the same name suffixed with **_Pool_X** these are replications where multiple samples are taken of the same tumor area in order to get a more comprehensive view of the gene data of the tumor, we will need to combine these replication files during processing. +
# Importing the Data -Now we have a general understanding of our data we can import it into Galaxy and start processing it! (**If you imported the data from Zenodo earlier you can skip the next step**) +Now we have a general understanding of our data we can import it into Galaxy and start processing it! > Upload data to Galaxy > @@ -136,15 +139,18 @@ Now we have a general understanding of our data we can import it into Galaxy and > ``` > {: .hands_on} - -It is also a good idea to add tags to each sample in order to keep track of what data is being processed, below is some of the imported data with added tags for the patient and sample id: - -![Imported data with tags](../../images/scrna-ncbi-anndata/metadata.png "Imported data with tags") +
# Converting to AnnData and Combining Samples The first step is to convert all of the raw files into AnnData objects, this can be done one at a time or all at once by selecting ```multiple datasets``` when chosing the input and highlighting all the raw data files. +> Adding Metadata +> Before starting to process the data it is generally a good idea to add tags to each sample in order to keep track of what data is being processed, below is some of the imported data with added tags for the patient and sample id: +> +> ![Imported data with tags](../../images/scrna-ncbi-anndata/metadata.png "Imported data with tags") +{: .tip} + > Convert raw data to AnnData > > 1. {% tool [Import AnnData and loom](toolshed.g2.bx.psu.edu/repos/iuc/anndata_import/anndata_import/0.7.5+galaxy1) %} with the following parameters: From a3e3747975148cfcb400eff312d303a32a043705 Mon Sep 17 00:00:00 2001 From: Wendi Bacon <44605769+nomadscientist@users.noreply.github.com> Date: Thu, 30 Nov 2023 10:49:12 +0000 Subject: [PATCH 19/59] testing this commit works --- topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md index ba23334bdab425..63ddfa49e74b8c 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -5,7 +5,7 @@ title: Converting NCBI Data to the AnnData Format subtopic: datamanipulation priority: 3 zenodo_link: 'https://zenodo.org/record/10101768' - + questions: - How do I understand NCBI data? - How can I convert raw gene data to the AnnData format? @@ -48,7 +48,7 @@ The first step is the obtain the data, for this tutorial we will use data from t > Download and extract the data from GEO > > 1. Using a web browser navigate to the GEO repsitory for the paper -> +> > ``` > https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE176031 > ``` @@ -478,4 +478,4 @@ With that run we should be finished! check the observation file to see all the m > The above tools will sometimes run without error but not produce the correct results, inspecing the obs file of the final AnnData object you should see that all the columns contain data, if any of the columns are blank then something has gone wrong! {: .warning} -{% icon congratulations %} Congratulations! Now your data is ready for further processing or analysis! \ No newline at end of file +{% icon congratulations %} Congratulations! Now your data is ready for further processing or analysis! From 6a78a2c6e7de4a96e1d8d636a3becb58b199960e Mon Sep 17 00:00:00 2001 From: Wendi Bacon <44605769+nomadscientist@users.noreply.github.com> Date: Thu, 30 Nov 2023 10:49:52 +0000 Subject: [PATCH 20/59] Revert "testing this commit works" This reverts commit a3e3747975148cfcb400eff312d303a32a043705. --- topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md index 63ddfa49e74b8c..ba23334bdab425 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -5,7 +5,7 @@ title: Converting NCBI Data to the AnnData Format subtopic: datamanipulation priority: 3 zenodo_link: 'https://zenodo.org/record/10101768' - + questions: - How do I understand NCBI data? - How can I convert raw gene data to the AnnData format? @@ -48,7 +48,7 @@ The first step is the obtain the data, for this tutorial we will use data from t > Download and extract the data from GEO > > 1. Using a web browser navigate to the GEO repsitory for the paper -> +> > ``` > https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE176031 > ``` @@ -478,4 +478,4 @@ With that run we should be finished! check the observation file to see all the m > The above tools will sometimes run without error but not produce the correct results, inspecing the obs file of the final AnnData object you should see that all the columns contain data, if any of the columns are blank then something has gone wrong! {: .warning} -{% icon congratulations %} Congratulations! Now your data is ready for further processing or analysis! +{% icon congratulations %} Congratulations! Now your data is ready for further processing or analysis! \ No newline at end of file From 3b27cd615f0b4947085018b6415da2a31a8c520c Mon Sep 17 00:00:00 2001 From: Wendi Bacon <44605769+nomadscientist@users.noreply.github.com> Date: Thu, 30 Nov 2023 12:51:44 +0000 Subject: [PATCH 21/59] minor intro text updates --- .../tutorials/scrna-ncbi-anndata/tutorial.bib | 17 ++++++++++------- .../tutorials/scrna-ncbi-anndata/tutorial.md | 10 ++++++---- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.bib b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.bib index 34c9de458f52ab..eddcee5a90c114 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.bib +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.bib @@ -1,10 +1,13 @@ @article{Song2022, - doi = {10.1038/s41467-021-27322-4}, - url = {https://doi.org/10.1038/s41467-021-27322-4}, - year = {2022}, - month = jan, - volume = {13}, - author = {Song, Hanbing and Weinstein, Hannah N W and Allegakoen, Paul andWadsworth, 2nd, Marc H and Xie, Jamie and Yang, Heiko andCastro, Ethan A and Lu, Kevin L and Stohr, Bradley A and Feng,Felix Y and Carroll, Peter R and Wang, Bruce and Cooperberg,Matthew R and Shalek, Alex K and Huang, Franklin W}, title = {Single-cell analysis of human primary prostate cancer reveals the heterogeneity of tumor-associated epithelial cell states}, - journal = {Nat. Commun.} + volume = {13}, + ISSN = {2041-1723}, + url = {http://dx.doi.org/10.1038/s41467-021-27322-4}, + DOI = {10.1038/s41467-021-27322-4}, + number = {1}, + journal = {Nature Communications}, + publisher = {Springer Science and Business Media LLC}, + author = {Song, Hanbing and Weinstein, Hannah N. W. and Allegakoen, Paul and Wadsworth, Marc H. and Xie, Jamie and Yang, Heiko and Castro, Ethan A. and Lu, Kevin L. and Stohr, Bradley A. and Feng, Felix Y. and Carroll, Peter R. and Wang, Bruce and Cooperberg, Matthew R. and Shalek, Alex K. and Huang, Franklin W.}, + year = {2022}, + month = jan } diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md index ba23334bdab425..ca4618609e8dd8 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -11,7 +11,7 @@ questions: - How can I convert raw gene data to the AnnData format? - How do I manually and automatically add metadata to my AnnData object? objectives: -- Analyse some gene data from NCBI. +- Analyse gene data from NCBI. - Convert raw gene expression data into the AnnData format. - Add metadata to the AnnData object to prepare it for analysis. time_estimation: 1H @@ -20,12 +20,14 @@ key_points: - Metadata and annotations can be added in both manually and automatically with various tools and resources. tags: -- single-cell - data management +- data import contributions: authorship: - hexhowells + editing: + - nomadscientist follow_up_training: - @@ -48,7 +50,7 @@ The first step is the obtain the data, for this tutorial we will use data from t > Download and extract the data from GEO > > 1. Using a web browser navigate to the GEO repsitory for the paper -> +> > ``` > https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE176031 > ``` @@ -478,4 +480,4 @@ With that run we should be finished! check the observation file to see all the m > The above tools will sometimes run without error but not produce the correct results, inspecing the obs file of the final AnnData object you should see that all the columns contain data, if any of the columns are blank then something has gone wrong! {: .warning} -{% icon congratulations %} Congratulations! Now your data is ready for further processing or analysis! \ No newline at end of file +{% icon congratulations %} Congratulations! Now your data is ready for further processing or analysis! From e55ebbafd000c45bb455bc1faff2886ef75fa0d2 Mon Sep 17 00:00:00 2001 From: Wendi Bacon <44605769+nomadscientist@users.noreply.github.com> Date: Thu, 30 Nov 2023 13:50:52 +0000 Subject: [PATCH 22/59] changing import to avoid downloading locally --- .../tutorials/scrna-ncbi-anndata/tutorial.md | 57 +++++++++++++++---- 1 file changed, 47 insertions(+), 10 deletions(-) diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md index ca4618609e8dd8..cb387920895289 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -40,7 +40,7 @@ The goal of this tutorial is to take raw NCBI data from some published research, # Obtaining the Data -The first step is the obtain the data, for this tutorial we will use data from the paper {% cite Song2022 %}. The data for this research is stored in the Gene Expression Omnibus (GEO) which is a public repository storing public genomics data. +The first step is the obtain the data. For this tutorial, we will use data from the paper {% cite Song2022 %}. The data for this research is stored in the Gene Expression Omnibus (GEO) which is a public repository storing public genomics data. {% include _includes/cyoa-choices.html option1="Manual" option2="Zenodo" default="Zenodo" text="If you have experience finding and downloading data from GEO then you can use the Zenodo link to load the data directly into Galaxy, if you don't have experience with GEO then you can manually download, prepare, and load the data into Galaxy." %} @@ -49,16 +49,24 @@ The first step is the obtain the data, for this tutorial we will use data from t
> Download and extract the data from GEO > -> 1. Using a web browser navigate to the GEO repsitory for the paper +> 1. Using a web browser navigate to the GEO repository for the paper > > ``` > https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE176031 > ``` > -> 2. Click on ```(http)``` in the supplemental materials section of the page to download the data -> 3. Using an archive tool (e.g. 7zip) extract the .TAR file -> 4. Using the same archive tool extract all of the .GZ files +> 2. Copy the ```(http)``` link in the supplemental materials section of the page to download the data > +> 3. Import the data into Galaxy +> +> {% snippet faqs/galaxy/datasets_import_via_link.md %} +> +> 4. Change the datatype to `tar` +> +> {% snippet faqs/galaxy/datasets_change_datatype.md datatype="tar" %} +> +> 5. {% tool [Unzip](toolshed.g2.bx.psu.edu/repos/imgteam/unzip/unzip/6.0+galaxy0) %} with the following parameters: +> - {% icon param-file %} *"input_file"*: `tar` file you just imported {: .hands_on}
@@ -90,11 +98,36 @@ The first step is the obtain the data, for this tutorial we will use data from t {: .hands_on} -We now have the raw gene expression data that we will be processing, however we will need to manually add some metadata which requires finding out some more information about our files. Looking at the link for the paper ([https://pubmed.ncbi.nlm.nih.gov/35013146/](https://pubmed.ncbi.nlm.nih.gov/35013146/)) we can see a link for accessing the full text, clicking on that will lead us to a page ([https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8748675/](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8748675/)) which contains more supplementary materials. Under this section we should see various .xlsx files (Excel spreadsheets), go ahead and download Supplementary Dataset 1 (```41467_2021_27322_MOESM2_ESM.xlsx```), this one spreadsheet contains all the information we need to further understand our data. +We now have the raw gene expression data that we will be processing, however we will need to manually add some metadata which requires finding out some more information about our files. + +> Finding the metadata +> +> 1. Follow the link for the paper ([https://pubmed.ncbi.nlm.nih.gov/35013146/](https://pubmed.ncbi.nlm.nih.gov/35013146/)), where you can see a link for accessing the full text. +> +> 1. Select that link to access the full text ([https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8748675/](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8748675/)) which contains more supplementary materials. Under this section we should see various `.xlsx` files (Excel spreadsheets). +> +> 3. Download Supplementary Dataset 1 (```41467_2021_27322_MOESM2_ESM.xlsx```). +> +{: .hands_on} + +This one spreadsheet contains all the information we need to further understand our data. # Understanding the Data -Looking at the excel file we can see multiple sheets, navigating to ```Clinical_info``` shows us that the data consists of 11 different patients with some patients having multiple different samples of different tumor specimens. For this tutorial we are only going to process the first 3 patients, a summary of the relevant data can be seen below: +If we look at that excel file `41467_2021_27322_MOESM2_ESM.xlsx`, we can see multiple sheets. + +> +> +> 1. How many different patients are in this study? +> +> > +> > +> > 1. Navigating to ```Clinical_info``` shows us that the data consists of 11 different patients, with some patients having multiple different samples of different tumor specimens. +> > +> {: .solution} +{: .question} + +For this tutorial, we are only going to process the first 3 patients. A summary of the relevant data can be seen below: | PatientID | Biopsy samples | Tumor Specimen | |-----------|----------------|----------------| @@ -105,9 +138,11 @@ Looking at the excel file we can see multiple sheets, navigating to ```Clinical_ | Patient 3 | MAY_PB2A | right-anterior | | | MAY_PB2B | right-mid | -We can see that each patient has 2 different samples from different tumor locations, this is important information that needs to be added to our data so that we can seperate it during analysis if needed. +We can see that each patient has 2 different samples from different tumor locations. This is important information that needs to be added to our dataset so that we can separate it during analysis, if needed. -Finally we need to find the files relating to each patient, inspecting ```GSE176031_RAW``` (downloaded earlier) we can see 53 files, unfortunately the names of the files don't exactly match the data in our excel sheet which can make finding the right samples a bit difficult, a summary of which samples match which file can be found below: +
+ +We now need to find the files relating to each patient. Selecting the output {% icon param-file %} **Unzip** tool shows you 53 files in a {% icon param-collection %}. Unfortunately, the names of the files don't exactly match the data in our excel sheet. This can make finding the right samples a bit difficult! A summary of which samples match which file can be found below: - **AUG_PB1A** ---> **PA_AUG_PB_1A** - **AUG_PB1B** ---> **PA_AUG_PB_1B** @@ -116,9 +151,11 @@ Finally we need to find the files relating to each patient, inspecting ```GSE176 - **MAY_PB2A** ---> **PA_PB2A** - **MAY_PB2B** ---> **PA_PB2B** -You may also notice that we have multiple sample files with the same name suffixed with **_Pool_X** these are replications where multiple samples are taken of the same tumor area in order to get a more comprehensive view of the gene data of the tumor, we will need to combine these replication files during processing. +You may also notice that we have multiple sample files with the same name suffixed with **_Pool_X**. These are replications where multiple samples are taken of the same tumor area in order to get a more comprehensive view of the gene data of the tumor. We will need to combine these replication files during processing.
+
+ # Importing the Data Now we have a general understanding of our data we can import it into Galaxy and start processing it! From 4e7add4136d61a6a40d8d325d90f1a3f0c341a89 Mon Sep 17 00:00:00 2001 From: Wendi Bacon <44605769+nomadscientist@users.noreply.github.com> Date: Thu, 30 Nov 2023 14:00:07 +0000 Subject: [PATCH 23/59] finish data import shift --- .../tutorials/scrna-ncbi-anndata/tutorial.md | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md index cb387920895289..a8e38955da1d9f 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -112,7 +112,7 @@ We now have the raw gene expression data that we will be processing, however we This one spreadsheet contains all the information we need to further understand our data. -# Understanding the Data +## Understanding the Data If we look at that excel file `41467_2021_27322_MOESM2_ESM.xlsx`, we can see multiple sheets. @@ -140,9 +140,7 @@ For this tutorial, we are only going to process the first 3 patients. A summary We can see that each patient has 2 different samples from different tumor locations. This is important information that needs to be added to our dataset so that we can separate it during analysis, if needed. -
- -We now need to find the files relating to each patient. Selecting the output {% icon param-file %} **Unzip** tool shows you 53 files in a {% icon param-collection %}. Unfortunately, the names of the files don't exactly match the data in our excel sheet. This can make finding the right samples a bit difficult! A summary of which samples match which file can be found below: +Unfortunately, the names of the files don't exactly match the data in our excel sheet. This can make finding the right samples a bit difficult! A summary of which samples match which file can be found below: - **AUG_PB1A** ---> **PA_AUG_PB_1A** - **AUG_PB1B** ---> **PA_AUG_PB_1B** @@ -154,16 +152,14 @@ We now need to find the files relating to each patient. Selecting the output {% You may also notice that we have multiple sample files with the same name suffixed with **_Pool_X**. These are replications where multiple samples are taken of the same tumor area in order to get a more comprehensive view of the gene data of the tumor. We will need to combine these replication files during processing.
-
-# Importing the Data +We now need to find the files relating to each patient. Selecting the output {% icon param-file %} **Unzip** tool shows you 53 files in a {% icon param-collection %}. We will work with the 10 files associated with our patient. -Now we have a general understanding of our data we can import it into Galaxy and start processing it! - -> Upload data to Galaxy +> Unhiding 10 target files > -> 1. Create a new history for this tutorial -> 2. Import the following files from the ```GSE176031_RAW``` folder +> 1. In the {% icon galaxy-history %} Galaxy history, select the *Include hidden* icon {% icon galaxy-show-hidden} to see the 53 files in your dataset collection. +> +> 2. Scroll down to visualise the following 10 samples: > ``` > GSM5353214_PA_AUG_PB_1A_S1.dge.txt > GSM5353215_PA_AUG_PB_1B_S2.dge.txt @@ -176,7 +172,9 @@ Now we have a general understanding of our data we can import it into Galaxy and > GSM5353222_PA_PB2B_Pool_1_3_S52_L002_dge.txt > GSM5353223_PA_PB2B_Pool_2_S26_L001_dge.txt > ``` +> 3. For each of those 10 samples, select the *Unhide* icon {% icon galaxy-show-hidden %}. This will move them from *Hidden* to *Active*. > +> 4. Navigate back to the *Active* datasets list, where you will now see your 10 target samples. {: .hands_on}
From 1c2210d6f338de70e580a69581e050b39dfcacdd Mon Sep 17 00:00:00 2001 From: Wendi Bacon <44605769+nomadscientist@users.noreply.github.com> Date: Thu, 30 Nov 2023 14:06:29 +0000 Subject: [PATCH 24/59] fix icon --- _config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_config.yml b/_config.yml index d405034ed8ed01..cdf42ac7777446 100644 --- a/_config.yml +++ b/_config.yml @@ -126,7 +126,7 @@ icon-tag: galaxy-save: far fa-save galaxy-scratchbook: fas fa-th galaxy-selector: far fa-check-square - galaxy-show-hidden: fas fa-eye-slash + galaxy-show-hidden: fa fa-eye-slash galaxy-star: far fa-star galaxy-tags: fas fa-tags galaxy-toggle: fas fa-toggle-on From 3a273a793a6d2881071715f12cd2d515c4ffe209 Mon Sep 17 00:00:00 2001 From: Wendi Bacon <44605769+nomadscientist@users.noreply.github.com> Date: Thu, 30 Nov 2023 14:07:38 +0000 Subject: [PATCH 25/59] Update _config.yml --- _config.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/_config.yml b/_config.yml index cdf42ac7777446..9163ba9e872eed 100644 --- a/_config.yml +++ b/_config.yml @@ -102,6 +102,7 @@ icon-tag: event: far fa-calendar feedback: far fa-comments galaxy-advanced-search: fas fa-angle-double-down + galaxy-show-active: fa-map-marker galaxy-barchart: fas fa-chart-bar galaxy-bug: fas fa-bug galaxy-chart-select-data: fas fa-database From d6c2d3e97bec92beaba254fb30cd992955c87aa2 Mon Sep 17 00:00:00 2001 From: Wendi Bacon <44605769+nomadscientist@users.noreply.github.com> Date: Thu, 30 Nov 2023 14:10:29 +0000 Subject: [PATCH 26/59] Update _config.yml --- _config.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_config.yml b/_config.yml index 9163ba9e872eed..541ecc22ed2e1a 100644 --- a/_config.yml +++ b/_config.yml @@ -102,7 +102,7 @@ icon-tag: event: far fa-calendar feedback: far fa-comments galaxy-advanced-search: fas fa-angle-double-down - galaxy-show-active: fa-map-marker + galaxy-show-active: fa-map-marker galaxy-barchart: fas fa-chart-bar galaxy-bug: fas fa-bug galaxy-chart-select-data: fas fa-database @@ -127,7 +127,7 @@ icon-tag: galaxy-save: far fa-save galaxy-scratchbook: fas fa-th galaxy-selector: far fa-check-square - galaxy-show-hidden: fa fa-eye-slash + galaxy-show-hidden: far fa-eye-slash galaxy-star: far fa-star galaxy-tags: fas fa-tags galaxy-toggle: fas fa-toggle-on From 12eae9c76bde57128dd91f04cdf05fd29bc4f07f Mon Sep 17 00:00:00 2001 From: Wendi Bacon <44605769+nomadscientist@users.noreply.github.com> Date: Thu, 30 Nov 2023 15:29:07 +0000 Subject: [PATCH 27/59] fix yml --- _config.yml | 2 +- topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/_config.yml b/_config.yml index 541ecc22ed2e1a..e5c1a2ae74b03e 100644 --- a/_config.yml +++ b/_config.yml @@ -127,7 +127,7 @@ icon-tag: galaxy-save: far fa-save galaxy-scratchbook: fas fa-th galaxy-selector: far fa-check-square - galaxy-show-hidden: far fa-eye-slash + galaxy-show-hidden: fas fa-eye-slash galaxy-star: far fa-star galaxy-tags: fas fa-tags galaxy-toggle: fas fa-toggle-on diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md index a8e38955da1d9f..e6a970796d1456 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -157,7 +157,7 @@ We now need to find the files relating to each patient. Selecting the output {% > Unhiding 10 target files > -> 1. In the {% icon galaxy-history %} Galaxy history, select the *Include hidden* icon {% icon galaxy-show-hidden} to see the 53 files in your dataset collection. +> 1. In the {% icon galaxy-history %} Galaxy history, select the *Include hidden* icon {% icon galaxy-show-hidden %} to see the 53 files in your dataset collection. > > 2. Scroll down to visualise the following 10 samples: > ``` From 4f7f926c0f6d7466f762bdcac6f5065f7684068c Mon Sep 17 00:00:00 2001 From: Wendi Bacon <44605769+nomadscientist@users.noreply.github.com> Date: Thu, 30 Nov 2023 17:02:04 +0000 Subject: [PATCH 28/59] add final icon in data ingest section --- .../tutorials/scrna-ncbi-anndata/tutorial.md | 26 +++++++++---------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md index e6a970796d1456..d58cab9e329345 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -50,20 +50,18 @@ The first step is the obtain the data. For this tutorial, we will use data from > Download and extract the data from GEO > > 1. Using a web browser navigate to the GEO repository for the paper -> -> ``` -> https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE176031 -> ``` -> -> 2. Copy the ```(http)``` link in the supplemental materials section of the page to download the data +> ``` +> https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE176031 +> ``` +> 2. Copy the ```(http)``` link located in the supplemental materials section of the page > > 3. Import the data into Galaxy > -> {% snippet faqs/galaxy/datasets_import_via_link.md %} +> {% snippet faqs/galaxy/datasets_import_via_link.md %} > > 4. Change the datatype to `tar` > -> {% snippet faqs/galaxy/datasets_change_datatype.md datatype="tar" %} +> {% snippet faqs/galaxy/datasets_change_datatype.md datatype="tar" %} > > 5. {% tool [Unzip](toolshed.g2.bx.psu.edu/repos/imgteam/unzip/unzip/6.0+galaxy0) %} with the following parameters: > - {% icon param-file %} *"input_file"*: `tar` file you just imported @@ -98,7 +96,7 @@ The first step is the obtain the data. For this tutorial, we will use data from {: .hands_on}
-We now have the raw gene expression data that we will be processing, however we will need to manually add some metadata which requires finding out some more information about our files. +We now have the raw gene expression data that we will process. However, we will need to manually add some metadata, which requires finding out some more information about our files. > Finding the metadata > @@ -149,7 +147,7 @@ Unfortunately, the names of the files don't exactly match the data in our excel - **MAY_PB2A** ---> **PA_PB2A** - **MAY_PB2B** ---> **PA_PB2B** -You may also notice that we have multiple sample files with the same name suffixed with **_Pool_X**. These are replications where multiple samples are taken of the same tumor area in order to get a more comprehensive view of the gene data of the tumor. We will need to combine these replication files during processing. +You may also notice that we have multiple sample files with the same name suffixed with `_Pool_X`. These are replications where multiple samples are taken of the same tumor area in order to get a more comprehensive view of the gene data of the tumor. We will need to combine these replication files during processing.
@@ -157,9 +155,9 @@ We now need to find the files relating to each patient. Selecting the output {% > Unhiding 10 target files > -> 1. In the {% icon galaxy-history %} Galaxy history, select the *Include hidden* icon {% icon galaxy-show-hidden %} to see the 53 files in your dataset collection. +> 1. In the {% icon galaxy-history %} Galaxy history panel, select the *Include hidden* icon {% icon galaxy-show-hidden %} to see the 53 files in your dataset collection. > -> 2. Scroll down to visualise the following 10 samples: +> 2. Scroll down to visualise the following 10 samples (likely in opposite order to this!): > ``` > GSM5353214_PA_AUG_PB_1A_S1.dge.txt > GSM5353215_PA_AUG_PB_1B_S2.dge.txt @@ -172,9 +170,9 @@ We now need to find the files relating to each patient. Selecting the output {% > GSM5353222_PA_PB2B_Pool_1_3_S52_L002_dge.txt > GSM5353223_PA_PB2B_Pool_2_S26_L001_dge.txt > ``` -> 3. For each of those 10 samples, select the *Unhide* icon {% icon galaxy-show-hidden %}. This will move them from *Hidden* to *Active*. +> 3. For each of those 10 samples, select the *Unhide* icon {% icon galaxy-show-hidden %}. This will move them from {% icon galaxy-show-hidden %} *Hidden* to *Active*. > -> 4. Navigate back to the *Active* datasets list, where you will now see your 10 target samples. +> 4. Navigate back to the {% icon fa-map-marker %} *Active* datasets list, where you will now see your 10 target samples. {: .hands_on}
From 8d0848ac86f94d393d7c14e1c62bc668ebb43b82 Mon Sep 17 00:00:00 2001 From: Wendi Bacon <44605769+nomadscientist@users.noreply.github.com> Date: Thu, 30 Nov 2023 17:38:31 +0000 Subject: [PATCH 29/59] icon fix --- _config.yml | 2 +- topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/_config.yml b/_config.yml index e5c1a2ae74b03e..ed33bc6ec65a2e 100644 --- a/_config.yml +++ b/_config.yml @@ -102,7 +102,7 @@ icon-tag: event: far fa-calendar feedback: far fa-comments galaxy-advanced-search: fas fa-angle-double-down - galaxy-show-active: fa-map-marker + galaxy-show-active: fas fa-map-marker galaxy-barchart: fas fa-chart-bar galaxy-bug: fas fa-bug galaxy-chart-select-data: fas fa-database diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md index d58cab9e329345..959891e9b903e9 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -172,7 +172,7 @@ We now need to find the files relating to each patient. Selecting the output {% > ``` > 3. For each of those 10 samples, select the *Unhide* icon {% icon galaxy-show-hidden %}. This will move them from {% icon galaxy-show-hidden %} *Hidden* to *Active*. > -> 4. Navigate back to the {% icon fa-map-marker %} *Active* datasets list, where you will now see your 10 target samples. +> 4. Navigate back to the {% icon galaxy-show-active %} *Active* datasets list, where you will now see your 10 target samples. {: .hands_on} From 5e6f6a139992a7f4b4a7afd2e1001aedfdc93895 Mon Sep 17 00:00:00 2001 From: Wendi Bacon <44605769+nomadscientist@users.noreply.github.com> Date: Thu, 30 Nov 2023 14:06:29 +0000 Subject: [PATCH 30/59] Icon updates icon fix add final icon in data ingest section fix yml Update _config.yml fix icon --- _config.yml | 1 + .../tutorials/scrna-ncbi-anndata/tutorial.md | 26 +++++++++---------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/_config.yml b/_config.yml index d405034ed8ed01..ed33bc6ec65a2e 100644 --- a/_config.yml +++ b/_config.yml @@ -102,6 +102,7 @@ icon-tag: event: far fa-calendar feedback: far fa-comments galaxy-advanced-search: fas fa-angle-double-down + galaxy-show-active: fas fa-map-marker galaxy-barchart: fas fa-chart-bar galaxy-bug: fas fa-bug galaxy-chart-select-data: fas fa-database diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md index a8e38955da1d9f..959891e9b903e9 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -50,20 +50,18 @@ The first step is the obtain the data. For this tutorial, we will use data from > Download and extract the data from GEO > > 1. Using a web browser navigate to the GEO repository for the paper -> -> ``` -> https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE176031 -> ``` -> -> 2. Copy the ```(http)``` link in the supplemental materials section of the page to download the data +> ``` +> https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE176031 +> ``` +> 2. Copy the ```(http)``` link located in the supplemental materials section of the page > > 3. Import the data into Galaxy > -> {% snippet faqs/galaxy/datasets_import_via_link.md %} +> {% snippet faqs/galaxy/datasets_import_via_link.md %} > > 4. Change the datatype to `tar` > -> {% snippet faqs/galaxy/datasets_change_datatype.md datatype="tar" %} +> {% snippet faqs/galaxy/datasets_change_datatype.md datatype="tar" %} > > 5. {% tool [Unzip](toolshed.g2.bx.psu.edu/repos/imgteam/unzip/unzip/6.0+galaxy0) %} with the following parameters: > - {% icon param-file %} *"input_file"*: `tar` file you just imported @@ -98,7 +96,7 @@ The first step is the obtain the data. For this tutorial, we will use data from {: .hands_on} -We now have the raw gene expression data that we will be processing, however we will need to manually add some metadata which requires finding out some more information about our files. +We now have the raw gene expression data that we will process. However, we will need to manually add some metadata, which requires finding out some more information about our files. > Finding the metadata > @@ -149,7 +147,7 @@ Unfortunately, the names of the files don't exactly match the data in our excel - **MAY_PB2A** ---> **PA_PB2A** - **MAY_PB2B** ---> **PA_PB2B** -You may also notice that we have multiple sample files with the same name suffixed with **_Pool_X**. These are replications where multiple samples are taken of the same tumor area in order to get a more comprehensive view of the gene data of the tumor. We will need to combine these replication files during processing. +You may also notice that we have multiple sample files with the same name suffixed with `_Pool_X`. These are replications where multiple samples are taken of the same tumor area in order to get a more comprehensive view of the gene data of the tumor. We will need to combine these replication files during processing.
@@ -157,9 +155,9 @@ We now need to find the files relating to each patient. Selecting the output {% > Unhiding 10 target files > -> 1. In the {% icon galaxy-history %} Galaxy history, select the *Include hidden* icon {% icon galaxy-show-hidden} to see the 53 files in your dataset collection. +> 1. In the {% icon galaxy-history %} Galaxy history panel, select the *Include hidden* icon {% icon galaxy-show-hidden %} to see the 53 files in your dataset collection. > -> 2. Scroll down to visualise the following 10 samples: +> 2. Scroll down to visualise the following 10 samples (likely in opposite order to this!): > ``` > GSM5353214_PA_AUG_PB_1A_S1.dge.txt > GSM5353215_PA_AUG_PB_1B_S2.dge.txt @@ -172,9 +170,9 @@ We now need to find the files relating to each patient. Selecting the output {% > GSM5353222_PA_PB2B_Pool_1_3_S52_L002_dge.txt > GSM5353223_PA_PB2B_Pool_2_S26_L001_dge.txt > ``` -> 3. For each of those 10 samples, select the *Unhide* icon {% icon galaxy-show-hidden %}. This will move them from *Hidden* to *Active*. +> 3. For each of those 10 samples, select the *Unhide* icon {% icon galaxy-show-hidden %}. This will move them from {% icon galaxy-show-hidden %} *Hidden* to *Active*. > -> 4. Navigate back to the *Active* datasets list, where you will now see your 10 target samples. +> 4. Navigate back to the {% icon galaxy-show-active %} *Active* datasets list, where you will now see your 10 target samples. {: .hands_on}
From c13ac10317f7fd0850f749ae05844509694cd1f3 Mon Sep 17 00:00:00 2001 From: Wendi Bacon <44605769+nomadscientist@users.noreply.github.com> Date: Thu, 30 Nov 2023 17:47:34 +0000 Subject: [PATCH 31/59] add tagging info --- .../single-cell/tutorials/scrna-ncbi-anndata/tutorial.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md index 959891e9b903e9..29499a2db811c2 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -178,12 +178,15 @@ We now need to find the files relating to each patient. Selecting the output {% # Converting to AnnData and Combining Samples -The first step is to convert all of the raw files into AnnData objects, this can be done one at a time or all at once by selecting ```multiple datasets``` when chosing the input and highlighting all the raw data files. +The next step is to convert all of the raw files into AnnData objects, this can be done one at a time or all at once by selecting ```multiple datasets``` when chosing the input and highlighting all the raw data files. -> Adding Metadata -> Before starting to process the data it is generally a good idea to add tags to each sample in order to keep track of what data is being processed, below is some of the imported data with added tags for the patient and sample id: +> Tag your datasets +> Before starting to process the data, it is generally a good idea to add tags to each sample in order to keep track of what data is being processed. Below is some of the imported data with added tags for the patient and sample id. We suggest you replicate this in your history. > > ![Imported data with tags](../../images/scrna-ncbi-anndata/metadata.png "Imported data with tags") +> +> {% snippet faqs/galaxy/datasets_add_tag.md %} +> {: .tip} > Convert raw data to AnnData From a6cb0e10a0073591e13a771495fb03309d9f6a76 Mon Sep 17 00:00:00 2001 From: Wendi Bacon <44605769+nomadscientist@users.noreply.github.com> Date: Thu, 30 Nov 2023 17:51:14 +0000 Subject: [PATCH 32/59] icon change --- _config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_config.yml b/_config.yml index ed33bc6ec65a2e..021efe5465cb7f 100644 --- a/_config.yml +++ b/_config.yml @@ -102,7 +102,7 @@ icon-tag: event: far fa-calendar feedback: far fa-comments galaxy-advanced-search: fas fa-angle-double-down - galaxy-show-active: fas fa-map-marker + galaxy-show-active: fa fa-map-marker galaxy-barchart: fas fa-chart-bar galaxy-bug: fas fa-bug galaxy-chart-select-data: fas fa-database From 184872f484bee732b8caea65dc0b610438e287f6 Mon Sep 17 00:00:00 2001 From: Wendi Bacon <44605769+nomadscientist@users.noreply.github.com> Date: Thu, 30 Nov 2023 22:34:29 +0000 Subject: [PATCH 33/59] fix zenodo links --- .../single-cell/tutorials/scrna-ncbi-anndata/tutorial.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md index 29499a2db811c2..4375aad6478e59 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -159,8 +159,8 @@ We now need to find the files relating to each patient. Selecting the output {% > > 2. Scroll down to visualise the following 10 samples (likely in opposite order to this!): > ``` -> GSM5353214_PA_AUG_PB_1A_S1.dge.txt -> GSM5353215_PA_AUG_PB_1B_S2.dge.txt +> GSM5353214_PA_AUG_PB_1A_S1_dge.txt +> GSM5353215_PA_AUG_PB_1B_S2_dge.txt > GSM5353216_PA_PB1A_Pool_1_3_S50_L002_dge.txt > GSM5353217_PA_PB1A_Pool_2_S107_L004_dge.txt > GSM5353218_PA_PB1B_Pool_1_2_S74_L003_dge.txt @@ -194,7 +194,8 @@ The next step is to convert all of the raw files into AnnData objects, this can > 1. {% tool [Import AnnData and loom](toolshed.g2.bx.psu.edu/repos/iuc/anndata_import/anndata_import/0.7.5+galaxy1) %} with the following parameters: > - *"hd5 format to be created"*: `Anndata file` > - *"Format for the annotated data matrix?"*: `Tabular, CSV, TSV` -> - {% icon param-file %} *"Annotated data matrix"*: `Select all imported files` +> - *"Annotated data matrix"* +> - {% icon param-files %} *Multiple datasets*: `Select all imported files` > - *"Does the first column store the row names?"*: `Yes` > > 2. {% tool [Inspect AnnData](toolshed.g2.bx.psu.edu/repos/iuc/anndata_inspect/anndata_inspect/0.7.5+galaxy1) %} with the following parameters: From b5a7e4162333635170d8745ec76a07774d7c47a9 Mon Sep 17 00:00:00 2001 From: Wendi Bacon <44605769+nomadscientist@users.noreply.github.com> Date: Thu, 30 Nov 2023 22:41:49 +0000 Subject: [PATCH 34/59] selector is not coloured right --- _config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_config.yml b/_config.yml index 021efe5465cb7f..af5272dbdf356a 100644 --- a/_config.yml +++ b/_config.yml @@ -126,7 +126,7 @@ icon-tag: galaxy-rulebuilder-history: fas fa-history galaxy-save: far fa-save galaxy-scratchbook: fas fa-th - galaxy-selector: far fa-check-square + galaxy-selector: fa fa-check-square galaxy-show-hidden: fas fa-eye-slash galaxy-star: far fa-star galaxy-tags: fas fa-tags From 7b9ebfaacf9faf46c157e5442216b0fe9716e17c Mon Sep 17 00:00:00 2001 From: Wendi Bacon <44605769+nomadscientist@users.noreply.github.com> Date: Thu, 30 Nov 2023 22:52:34 +0000 Subject: [PATCH 35/59] update datatype conversions --- .../tutorials/scrna-ncbi-anndata/tutorial.md | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md index 4375aad6478e59..e54256b4605b93 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -57,11 +57,13 @@ The first step is the obtain the data. For this tutorial, we will use data from > > 3. Import the data into Galaxy > -> {% snippet faqs/galaxy/datasets_import_via_link.md %} +> +> {% snippet faqs/galaxy/datasets_import_via_link.md %} > > 4. Change the datatype to `tar` > -> {% snippet faqs/galaxy/datasets_change_datatype.md datatype="tar" %} +> +> {% snippet faqs/galaxy/datasets_change_datatype.md datatype="tar" %} > > 5. {% tool [Unzip](toolshed.g2.bx.psu.edu/repos/imgteam/unzip/unzip/6.0+galaxy0) %} with the following parameters: > - {% icon param-file %} *"input_file"*: `tar` file you just imported @@ -151,7 +153,7 @@ You may also notice that we have multiple sample files with the same name suffix
-We now need to find the files relating to each patient. Selecting the output {% icon param-file %} **Unzip** tool shows you 53 files in a {% icon param-collection %}. We will work with the 10 files associated with our patient. +We now need to find the files relating to each patient. Selecting the output {% icon param-file %} **Unzip** tool shows you 53 files in a {% icon param-collection %} dataset collection. We will work with the 10 files associated with our target patients. > Unhiding 10 target files > @@ -173,6 +175,15 @@ We now need to find the files relating to each patient. Selecting the output {% > 3. For each of those 10 samples, select the *Unhide* icon {% icon galaxy-show-hidden %}. This will move them from {% icon galaxy-show-hidden %} *Hidden* to *Active*. > > 4. Navigate back to the {% icon galaxy-show-active %} *Active* datasets list, where you will now see your 10 target samples. +> +> 5. In the {% icon galaxy-history %} Galaxy history panel, click the {% icon galaxy-selector %} *Select items* to allow you to select multiple datasets from your history +> +> 6. Select all 10 samples +> +> 7. Select the highlighted rectangle `10 of X` (the X may be different depending on what you've imported!) to give you a menu, from which you select `Change data type` +> +> 8. Select the dropdown menu and either type in or scroll to find `tabular.gz` +> {: .hands_on}
@@ -204,7 +215,7 @@ The next step is to convert all of the raw files into AnnData objects, this can > {: .hands_on} -Looking at the observation data (obs) of one of the files we can see that it is storing cell data, however we need the variable data (var) to store the cells and the observation data to store the genes, so we also need to transpose all of our AnnData objects, again we can speed up the process by selecting all of the AnnData objects and process them at once. +Examine {% icon galaxy-eye} the {% icon param-file %} *"Inspect AnnData"* output. You will find a list of genes - however, the `obs` (observations) layer in the AnnData object should store cell data. The `var` (variables) should store the genes data. We need to transpose all of our AnnData objects. We will speed up the process by selecting all of the AnnData objects and processing them at once. > Check your data > Whilst for this specific data the object needed to be transposed this won't always be the case! The easiest way is to check the obs data of the AnnData object using the ```Inspect AnnData``` tool. The obs file should have a column containing gene letters (something like **CGGAAGTGATAC**) if thats the case then the data doesn't need to be transposed! From ce218252b1e4490bf1aafab139ef3eda1ef63d22 Mon Sep 17 00:00:00 2001 From: Wendi Bacon <44605769+nomadscientist@users.noreply.github.com> Date: Thu, 30 Nov 2023 23:17:05 +0000 Subject: [PATCH 36/59] add param-files icons --- topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md index e54256b4605b93..28d8a1667b3cd8 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -218,13 +218,14 @@ The next step is to convert all of the raw files into AnnData objects, this can Examine {% icon galaxy-eye} the {% icon param-file %} *"Inspect AnnData"* output. You will find a list of genes - however, the `obs` (observations) layer in the AnnData object should store cell data. The `var` (variables) should store the genes data. We need to transpose all of our AnnData objects. We will speed up the process by selecting all of the AnnData objects and processing them at once. > Check your data -> Whilst for this specific data the object needed to be transposed this won't always be the case! The easiest way is to check the obs data of the AnnData object using the ```Inspect AnnData``` tool. The obs file should have a column containing gene letters (something like **CGGAAGTGATAC**) if thats the case then the data doesn't need to be transposed! +> Whilst for this specific data, the object needed to be transposed, this won't always be the case! The easiest way is to check the `obs` data of the AnnData object using the {% icon tool %} **Inspect AnnData** tool. The {% icon param-file %} `obs` file should have a column containing short nucleotide sequences (something like **CGGAAGTGATAC**). If thats the case, then the data doesn't need to be transposed, because those are the cell barcodes! {: .comment} > Transpose AnnData objects > > 1. {% tool [Manipulate AnnData](toolshed.g2.bx.psu.edu/repos/iuc/anndata_manipulate/anndata_manipulate/0.7.5+galaxy1) %} with the following parameters: -> - {% icon param-file %} *"Annotated data matrix"*: `Select all AnnData files` +> - *"Annotated data matrix"* +> - {% icon param-files %} *Multiple datasets*: `Select all AnnData files` > - *"Function to manipulate the object"*: `Transpose the data matrix, leaving observations and variables interchanged` > {: .hands_on} From 7b2676c5c0755c1b3380a4020c3ca6d1710787e3 Mon Sep 17 00:00:00 2001 From: Wendi Bacon <44605769+nomadscientist@users.noreply.github.com> Date: Thu, 30 Nov 2023 23:18:50 +0000 Subject: [PATCH 37/59] minor fix --- topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md index 28d8a1667b3cd8..99696fed7e79c3 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -215,7 +215,7 @@ The next step is to convert all of the raw files into AnnData objects, this can > {: .hands_on} -Examine {% icon galaxy-eye} the {% icon param-file %} *"Inspect AnnData"* output. You will find a list of genes - however, the `obs` (observations) layer in the AnnData object should store cell data. The `var` (variables) should store the genes data. We need to transpose all of our AnnData objects. We will speed up the process by selecting all of the AnnData objects and processing them at once. +Examine {% icon galaxy-eye %} the {% icon param-file %} *"Inspect AnnData"* output. You will find a list of genes - however, the `obs` (observations) layer in the AnnData object should store cell data. The `var` (variables) should store the genes data. We need to transpose all of our AnnData objects. We will speed up the process by selecting all of the AnnData objects and processing them at once. > Check your data > Whilst for this specific data, the object needed to be transposed, this won't always be the case! The easiest way is to check the `obs` data of the AnnData object using the {% icon tool %} **Inspect AnnData** tool. The {% icon param-file %} `obs` file should have a column containing short nucleotide sequences (something like **CGGAAGTGATAC**). If thats the case, then the data doesn't need to be transposed, because those are the cell barcodes! From 53487ee6ba3d85fbb1edbdc604fa073a165bd802 Mon Sep 17 00:00:00 2001 From: Wendi Bacon <44605769+nomadscientist@users.noreply.github.com> Date: Thu, 30 Nov 2023 23:21:52 +0000 Subject: [PATCH 38/59] Update _config.yml --- _config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_config.yml b/_config.yml index af5272dbdf356a..021efe5465cb7f 100644 --- a/_config.yml +++ b/_config.yml @@ -126,7 +126,7 @@ icon-tag: galaxy-rulebuilder-history: fas fa-history galaxy-save: far fa-save galaxy-scratchbook: fas fa-th - galaxy-selector: fa fa-check-square + galaxy-selector: far fa-check-square galaxy-show-hidden: fas fa-eye-slash galaxy-star: far fa-star galaxy-tags: fas fa-tags From 4cd31790292f2aaa04529ab78546e7d07fd657a5 Mon Sep 17 00:00:00 2001 From: Wendi Bacon <44605769+nomadscientist@users.noreply.github.com> Date: Thu, 30 Nov 2023 23:35:22 +0000 Subject: [PATCH 39/59] fix manipulate section --- topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md | 1 + 1 file changed, 1 insertion(+) diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md index 99696fed7e79c3..e8a0cfbbd7b965 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -224,6 +224,7 @@ Examine {% icon galaxy-eye %} the {% icon param-file %} *"Inspect AnnData"* outp > Transpose AnnData objects > > 1. {% tool [Manipulate AnnData](toolshed.g2.bx.psu.edu/repos/iuc/anndata_manipulate/anndata_manipulate/0.7.5+galaxy1) %} with the following parameters: +> > - *"Annotated data matrix"* > - {% icon param-files %} *Multiple datasets*: `Select all AnnData files` > - *"Function to manipulate the object"*: `Transpose the data matrix, leaving observations and variables interchanged` From 32cfc01248335af0ebacf4cf6da298e41e3da6fa Mon Sep 17 00:00:00 2001 From: Wendi Bacon <44605769+nomadscientist@users.noreply.github.com> Date: Thu, 30 Nov 2023 23:42:27 +0000 Subject: [PATCH 40/59] Update tutorial.md --- topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md index e8a0cfbbd7b965..ce5ae735e9a445 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -225,8 +225,8 @@ Examine {% icon galaxy-eye %} the {% icon param-file %} *"Inspect AnnData"* outp > > 1. {% tool [Manipulate AnnData](toolshed.g2.bx.psu.edu/repos/iuc/anndata_manipulate/anndata_manipulate/0.7.5+galaxy1) %} with the following parameters: > -> - *"Annotated data matrix"* -> - {% icon param-files %} *Multiple datasets*: `Select all AnnData files` +> - *"Annotated data matrix"* +> - {% icon param-files %} *Multiple datasets*: `Select all AnnData files` > - *"Function to manipulate the object"*: `Transpose the data matrix, leaving observations and variables interchanged` > {: .hands_on} From f8c23a3d60121ec8edb1524d941b95d26a40aa73 Mon Sep 17 00:00:00 2001 From: Wendi Bacon <44605769+nomadscientist@users.noreply.github.com> Date: Thu, 30 Nov 2023 23:43:59 +0000 Subject: [PATCH 41/59] minor text edits --- topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md index ce5ae735e9a445..559798d2f61dcd 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -231,7 +231,7 @@ Examine {% icon galaxy-eye %} the {% icon param-file %} *"Inspect AnnData"* outp > {: .hands_on} -Now we have all the AnnData files with the data in the correct orientation we can combine all the data into a single AnnData file which will make it much easier to work with. This combination operation will add an additional column called **batch** which tells us which AnnData object each bit of data came from, this will be useful for further processing! +Now, we have all the AnnData objects with the data in the correct orientation. We can combine them into a single AnnData object, which will make the data easier to work with. This combination operation will add an additional column called **batch** which tells us which AnnData object each bit of data came from. This will be useful for further processing! > Combine AnnData objects > From c1d253035655ae29b1cfff0b915ff1a0250ec5c0 Mon Sep 17 00:00:00 2001 From: Wendi Bacon <44605769+nomadscientist@users.noreply.github.com> Date: Thu, 30 Nov 2023 23:51:01 +0000 Subject: [PATCH 42/59] fix grammar --- .../single-cell/tutorials/scrna-ncbi-anndata/tutorial.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md index 559798d2f61dcd..d0b6b2e185194c 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -231,14 +231,14 @@ Examine {% icon galaxy-eye %} the {% icon param-file %} *"Inspect AnnData"* outp > {: .hands_on} -Now, we have all the AnnData objects with the data in the correct orientation. We can combine them into a single AnnData object, which will make the data easier to work with. This combination operation will add an additional column called **batch** which tells us which AnnData object each bit of data came from. This will be useful for further processing! +Now, we have all the AnnData objects with the data in the correct orientation. We can combine them into a single AnnData object, which will make the data easier to work with. This combination operation will add an additional column called `batch` which tells us which AnnData object each bit of data came from. This will be useful for further processing! > Combine AnnData objects > > 1. {% tool [Manipulate AnnData](toolshed.g2.bx.psu.edu/repos/iuc/anndata_manipulate/anndata_manipulate/0.7.5+galaxy1) %} with the following parameters: > - {% icon param-file %} *"Annotated data matrix"*: `Select first Manipulate AnnData (transpose) output` > - *"Function to manipulate the object"*: `Concatenate along the observations axis` -> - *"Annotated data matrix to add"*: `Select all other Manipulate AnnData (transpose) outputs` +> - {% icon param-file %} *"Annotated data matrix to add"*: `Select all other Manipulate AnnData (transpose) outputs` > - *"Join method"*: `Intersection of variables` > - *"Key to add the batch annotation to obs"*: `batch` > - *"Separator to join the existing index names with the batch category"*: `-` @@ -247,11 +247,11 @@ Now, we have all the AnnData objects with the data in the correct orientation. W > {: .hands_on} -Now we have all of our gene expression data stored in a single AnnData object! Now we just need to add our metadata! +Now we have all of our gene expression data stored in a single AnnData object! We just need to add our metadata! # Annotating the Data -The next step is to annotate our data using the information gathered from the excel sheet earlier, we will do this by leveraging the batch column generated when the objects were combined for each individual patient/sample (indicated by the batch number) we will add in the relevant annotations. First lets extract the observation data so we can manipulate it. +The next step is to annotate our data using the information gathered from the excel sheet earlier. We will do this by leveraging the `batch` column generated when the objects were combined for each individual patient/sample (indicated by the batch number). We will add in the relevant annotations. First, let's extract the observation data so we can manipulate it. > > From 169f4edfe484cb026f8c5053be27a1529a3ba986 Mon Sep 17 00:00:00 2001 From: Wendi Bacon <44605769+nomadscientist@users.noreply.github.com> Date: Thu, 30 Nov 2023 23:57:52 +0000 Subject: [PATCH 43/59] more details icon --- .../tutorials/scrna-ncbi-anndata/tutorial.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md index d0b6b2e185194c..d0f9dc8acd3628 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -263,13 +263,13 @@ The next step is to annotate our data using the information gathered from the ex > {: .hands_on} -Now for each new column we want to add we need to replace the relvant batch numbers with the appropriate metadata. After that we can cut the modified column out so it is separated. We will repeat this process for each piece of metadata we want to add, all the relevant data can be found in the first table of this tutorial. +For each new column, we need to replace the relevant batch numbers with the appropriate metadata. After that, we can cut the modified column out so it is separated. We will repeat this process for each piece of metadata we want to add. All the relevant data can be found in the first table of this tutorial. -Lets now add the replicate column which tells us which rows are part of pools of the same patient and tumor location. +Let's now add the replicate column which tells us which cells are part of pools of the same patient and tumor location. > Create replicate metadata > -> 1. {% tool [Replace Text](toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_column/1.1.3) %} with the following parameters: +> 1. {% tool [Replace Text](toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_column/1.1.3) %} *in a specific column* with the following parameters: > - {% icon param-file %} *"File to process"*: `Observation data` > - *"1: Replacement"* > - *"in column"*: `Column: 2` @@ -390,11 +390,11 @@ We will now add a column to indicate which sample each row came from using the s > {: .hands_on} -> $ parameter +> $ parameter > You may have noticied that some of the parameters in the previous tool used the $ symbol, this is due to how the {% tool Replace Text %} tool works. The tool will replace and **update** the data for every insert operation, meaning that lines that have already been updated could be updated again. > > Since we are replacing our batch id's with identifiers that include numbers we want to prevent them from being updated again. appending the pattern with the $ symbol tells the tool to only replace the pattern if it is not followed by any other character (so the 1 in `AUG_PB1A` won't be replaced as it is followed by an 'A'). -{: .comment} +{: .details} Finally we will add the tumor column which indicates which tumor sample each row belongs to. From 7e32d85717f6ee785b053daad66b25afaf17b937 Mon Sep 17 00:00:00 2001 From: Wendi Bacon <44605769+nomadscientist@users.noreply.github.com> Date: Fri, 1 Dec 2023 00:11:50 +0000 Subject: [PATCH 44/59] remove default tool options --- .../tutorials/scrna-ncbi-anndata/tutorial.md | 32 ++++++------------- 1 file changed, 10 insertions(+), 22 deletions(-) diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md index d0f9dc8acd3628..4446ba5fb11460 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -342,7 +342,7 @@ Next we will add the metadata indicating which patient each row came from. We will now add a column to indicate which sample each row came from using the sample ID's described earlier. -> Create sample id metadata +> Create sample ID metadata > > 1. {% tool [Replace Text](toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_column/1.1.3) %} with the following parameters: > - {% icon param-file %} *"File to process"*: `Observation data` @@ -391,9 +391,9 @@ We will now add a column to indicate which sample each row came from using the s {: .hands_on} > $ parameter -> You may have noticied that some of the parameters in the previous tool used the $ symbol, this is due to how the {% tool Replace Text %} tool works. The tool will replace and **update** the data for every insert operation, meaning that lines that have already been updated could be updated again. +> You may have noticed that some of the parameters in the previous tool used the $ symbol. This is due to how the {% tool Replace Text %} tool works. The tool will replace and **update** the data for every insert operation, meaning that lines that have already been updated could be updated again. > -> Since we are replacing our batch id's with identifiers that include numbers we want to prevent them from being updated again. appending the pattern with the $ symbol tells the tool to only replace the pattern if it is not followed by any other character (so the 1 in `AUG_PB1A` won't be replaced as it is followed by an 'A'). +> Since we are replacing our batch ID's with identifiers that include numbers, we want to prevent them from being updated again. Appending the pattern with the `$` symbol tells the tool to only replace the pattern if it is not followed by any other character (so the 1 in `AUG_PB1A` won't be replaced as it is followed by an 'A'). {: .details} Finally we will add the tumor column which indicates which tumor sample each row belongs to. @@ -436,7 +436,7 @@ Finally we will add the tumor column which indicates which tumor sample each row > {: .hands_on} -Now with all the individual metadata columns created we can combine them together to make a single tabular file containing our metadata. Since the ```Paste``` operation only allows us to combine two columns at once we will need to run the tool a few times to add all the columns together. +With all the individual metadata columns created, we can now combine them together to make a single tabular file containing our metadata. Since the ```Paste``` operation only allows us to combine two columns at once we will need to run the tool a few times to add all the columns together. > Combine metadata > @@ -459,7 +459,7 @@ Now with all the individual metadata columns created we can combine them togethe > {: .hands_on} -With the metadata completed the last step is to add it to our original combined object! +With the metadata table ready, the last step is to add it to our original combined object! > Add metadata to AnnData object > @@ -473,13 +473,13 @@ With the metadata completed the last step is to add it to our original combined > {: .hands_on} -{% icon congratulations %} Congratulations! You have successfully interpreted some data and added all the relevant annotations to the AnnData object! All thats left to do is to add some additional metadata using automated tools! +{% icon congratulations %} Congratulations! You have successfully interpreted the milieu of files in a published dataset, transformed the data into a usable format, and added all the relevant annotations to the AnnData object! All thats left to do is to add some quality control metrics using automated tools! -# Further Processing the Data +# Adding Quality Control Metadata -With the manual annotations added we need to do some further processing to add some statistical metadata about the genes, this is done automatically by running two different tools. +With the manual annotations added, we need to do some further processing to add some statistical metadata about the genes. This is done automatically by running two different tools. -We can run the ```Scanpy FilterCells``` tool with a large range of filtering values to not actually filter anything but instead add some metadata about the counts and number of expressed genes. +First, we will run the ```Scanpy FilterCells``` tool without actually filtering. This tool will add some metadata about the counts and numbers of expressed genes. > Scanpy FilterCells version issue > The {% tool [Scanpy FilterCells](toolshed.g2.bx.psu.edu/repos/ebi-gxa/scanpy_filter_cells/scanpy_filter_cells/1.8.1+galaxy9) %} tool (used below) does not work in the latest version (**1.8.1+galaxy93**), switch to version **1.8.1+galaxy9** in order to run the tool without error. @@ -489,32 +489,20 @@ We can run the ```Scanpy FilterCells``` tool with a large range of filtering val > > 1. {% tool [Scanpy FilterCells](toolshed.g2.bx.psu.edu/repos/ebi-gxa/scanpy_filter_cells/scanpy_filter_cells/1.8.1+galaxy9) %} with the following parameters: > - {% icon param-file %} *"Input object in AnnData/Loom format"*: `Annotated Object` -> - *"Format of input object"*: `AnnData format hdf5` -> - *"Format of output object"*: `AnnData format` > - *"Name of the column in `anndata.var` that contains gene name"*: `_index` -> - **+ Insert Parameters to select cells to keep** -> - *"1: Parameters to select cells to keep"* -> - *"Name of parameter to filter on"*: `n_genes` -> - *"Min value"*: `0.0` -> - *"Max value"*: `1000000000.0` -> - *"Force recalculation of QC vars"*: `No` > {: .hands_on} -The final tool to run is the ```AnnData Operations``` tool which will add the rest of our metadata, mostly information about the mitocondrial cells in the object which are indicated with cells that start with **MT-**. +The final tool, {% icon tool %} **AnnData Operations**, will add the rest of our metadata. This is mostly information about the mitochondrial genes present in the object, roughly counted by flagging genes that start with **MT-**. > Add final metadata > > 1. {% tool [AnnData Operations](toolshed.g2.bx.psu.edu/repos/ebi-gxa/anndata_ops/anndata_ops/1.8.1+galaxy9) %} with the following parameters: > - {% icon param-file %} *"Input object in hdf5 AnnData format"*: `Output of Scanpy FilterCells` -> - *"Format of output object"*: `AnnData format` -> - *"Copy AnnData to .raw"*: `No` -> - *"Gene symbols field in AnnData"*: `index` > - **+ Insert Flag genes that start with these names** > - *"1: Parameters to select cells to keep"* > - *"starts withn"*: `MT-` > - *"Var name"*: `mito` -> - *"Number of top genes"*: `50` > > 2. **Rename** {% icon galaxy-pencil %} output `Final Object` > From fc2e0656ad04192ab20abb9c1235e0828715a790 Mon Sep 17 00:00:00 2001 From: Wendi Bacon <44605769+nomadscientist@users.noreply.github.com> Date: Fri, 1 Dec 2023 00:15:00 +0000 Subject: [PATCH 45/59] minor text edits --- .../tutorials/scrna-ncbi-anndata/tutorial.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md index 4446ba5fb11460..b3cd1e885b3ca0 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -187,7 +187,7 @@ We now need to find the files relating to each patient. Selecting the output {% {: .hands_on} -# Converting to AnnData and Combining Samples +# Creating the AnnData object The next step is to convert all of the raw files into AnnData objects, this can be done one at a time or all at once by selecting ```multiple datasets``` when chosing the input and highlighting all the raw data files. @@ -249,7 +249,7 @@ Now, we have all the AnnData objects with the data in the correct orientation. W Now we have all of our gene expression data stored in a single AnnData object! We just need to add our metadata! -# Annotating the Data +# Annotating the data The next step is to annotate our data using the information gathered from the excel sheet earlier. We will do this by leveraging the `batch` column generated when the objects were combined for each individual patient/sample (indicated by the batch number). We will add in the relevant annotations. First, let's extract the observation data so we can manipulate it. @@ -475,7 +475,7 @@ With the metadata table ready, the last step is to add it to our original combin {% icon congratulations %} Congratulations! You have successfully interpreted the milieu of files in a published dataset, transformed the data into a usable format, and added all the relevant annotations to the AnnData object! All thats left to do is to add some quality control metrics using automated tools! -# Adding Quality Control Metadata +# Adding quality control metrics With the manual annotations added, we need to do some further processing to add some statistical metadata about the genes. This is done automatically by running two different tools. @@ -512,10 +512,10 @@ The final tool, {% icon tool %} **AnnData Operations**, will add the rest of our > {: .hands_on} -With that run we should be finished! check the observation file to see all the metadata that we've added in throughout the tutorial and take this time to check that all the columns contain data. +With that run we should be finished! Check the {% icon param-file %} `obs` file to see all the metadata that we've added in throughout the tutorial. > Check your final object! -> The above tools will sometimes run without error but not produce the correct results, inspecing the obs file of the final AnnData object you should see that all the columns contain data, if any of the columns are blank then something has gone wrong! +> The above tools will sometimes run without error but not produce the correct results - just because they run doesn't mean all the parameters and inputs were set properly! When {% icon galaxy-eye %} inspecting the {% icon param-file %} `obs` file of the final AnnData object, you should see that all the columns contain data. If any of the columns are blank, then something has gone wrong! {: .warning} {% icon congratulations %} Congratulations! Now your data is ready for further processing or analysis! From 2c4560dddb350a6ec750de1d9f25bbe7e6aea9af Mon Sep 17 00:00:00 2001 From: Morgan <58524460+hexhowells@users.noreply.github.com> Date: Tue, 12 Dec 2023 12:21:51 +0000 Subject: [PATCH 46/59] Update topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md Co-authored-by: mtekman <20641402+mtekman@users.noreply.github.com> --- topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md index b3cd1e885b3ca0..0720a2d91fb59a 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -149,7 +149,7 @@ Unfortunately, the names of the files don't exactly match the data in our excel - **MAY_PB2A** ---> **PA_PB2A** - **MAY_PB2B** ---> **PA_PB2B** -You may also notice that we have multiple sample files with the same name suffixed with `_Pool_X`. These are replications where multiple samples are taken of the same tumor area in order to get a more comprehensive view of the gene data of the tumor. We will need to combine these replication files during processing. +You may also notice that we have multiple sample files with the same name suffixed with `_Pool_X`. These are *replicates*, where multiple samples are taken of the same tumor area in order to get a more comprehensive view of the gene data of the tumor. We will need to combine these replicates during processing.
From 315a31078d768755be6d6ffd91184dbb0da61fd2 Mon Sep 17 00:00:00 2001 From: Morgan <58524460+hexhowells@users.noreply.github.com> Date: Tue, 12 Dec 2023 12:22:05 +0000 Subject: [PATCH 47/59] Update topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md Co-authored-by: mtekman <20641402+mtekman@users.noreply.github.com> --- topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md index 0720a2d91fb59a..400286de2471a6 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -501,7 +501,7 @@ The final tool, {% icon tool %} **AnnData Operations**, will add the rest of our > - {% icon param-file %} *"Input object in hdf5 AnnData format"*: `Output of Scanpy FilterCells` > - **+ Insert Flag genes that start with these names** > - *"1: Parameters to select cells to keep"* -> - *"starts withn"*: `MT-` +> - *"starts with"*: `MT-` > - *"Var name"*: `mito` > > 2. **Rename** {% icon galaxy-pencil %} output `Final Object` From fc400542b8cb1ecf6c38c68f7fffaa28fca0de7e Mon Sep 17 00:00:00 2001 From: Morgan <58524460+hexhowells@users.noreply.github.com> Date: Tue, 12 Dec 2023 12:24:04 +0000 Subject: [PATCH 48/59] Update topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md Co-authored-by: mtekman <20641402+mtekman@users.noreply.github.com> --- topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md index 400286de2471a6..e860ea49f28dfe 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -218,7 +218,7 @@ The next step is to convert all of the raw files into AnnData objects, this can Examine {% icon galaxy-eye %} the {% icon param-file %} *"Inspect AnnData"* output. You will find a list of genes - however, the `obs` (observations) layer in the AnnData object should store cell data. The `var` (variables) should store the genes data. We need to transpose all of our AnnData objects. We will speed up the process by selecting all of the AnnData objects and processing them at once. > Check your data -> Whilst for this specific data, the object needed to be transposed, this won't always be the case! The easiest way is to check the `obs` data of the AnnData object using the {% icon tool %} **Inspect AnnData** tool. The {% icon param-file %} `obs` file should have a column containing short nucleotide sequences (something like **CGGAAGTGATAC**). If thats the case, then the data doesn't need to be transposed, because those are the cell barcodes! +> Whilst for this specific data, the object needed to be transposed, this won't always be the case! The easiest way is to check the `obs` data of the AnnData object using the {% icon tool %} **Inspect AnnData** tool. The {% icon param-file %} `obs` file should have a column containing short nucleotide sequences (something like **CGGAAGTGATAC**). If that's the case, then the data doesn't need to be transposed, because those are the cell barcodes! {: .comment} > Transpose AnnData objects From 774294dec62770431a59a734257d1d8ca4337a59 Mon Sep 17 00:00:00 2001 From: Morgan Howells Date: Tue, 12 Dec 2023 12:44:39 +0000 Subject: [PATCH 49/59] left align table --- topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md index e860ea49f28dfe..80077de0ebb9a3 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -130,7 +130,7 @@ If we look at that excel file `41467_2021_27322_MOESM2_ESM.xlsx`, we can see mul For this tutorial, we are only going to process the first 3 patients. A summary of the relevant data can be seen below: | PatientID | Biopsy samples | Tumor Specimen | -|-----------|----------------|----------------| +|:----------|:---------------|:---------------| | Patient 1 | AUG_PB1A | left-mid | | | AUG_PB1B | right-mid | | Patient 2 | MAY_PB1A | right-mid | From 95618364c51a7c1cae803469b04c405ec7828165 Mon Sep 17 00:00:00 2001 From: Morgan Howells Date: Tue, 12 Dec 2023 15:54:10 +0000 Subject: [PATCH 50/59] add explanation of NCBI database --- topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md index 80077de0ebb9a3..8eb72dc1fd3935 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -38,9 +38,11 @@ follow_up_training: The goal of this tutorial is to take raw NCBI data from some published research, convert the raw data into the AnnData format then add metadata to the object so that it can be used for further processing / analysis. Here we will look at the steps to obtain, understand, and manipulate the data in order for it to be properly processed. +The [NCBI Database](https://www.ncbi.nlm.nih.gov/) is a large repository for storing and accessing various types of biological data such as genome sequences, protein sequences, academic literature, etc. NCBI is a invaluable tool used for researchers and scientists, as a result it is important to know how to understand and utilise NCBI's data resources. + # Obtaining the Data -The first step is the obtain the data. For this tutorial, we will use data from the paper {% cite Song2022 %}. The data for this research is stored in the Gene Expression Omnibus (GEO) which is a public repository storing public genomics data. +The first step is the obtain the data. For this tutorial, we will use data from the paper {% cite Song2022 %}. The data for this research is stored in the Gene Expression Omnibus (GEO). {% include _includes/cyoa-choices.html option1="Manual" option2="Zenodo" default="Zenodo" text="If you have experience finding and downloading data from GEO then you can use the Zenodo link to load the data directly into Galaxy, if you don't have experience with GEO then you can manually download, prepare, and load the data into Galaxy." %} From 1cd21b6a3fe814594481b6ae320cb65b02d72af1 Mon Sep 17 00:00:00 2001 From: Morgan Howells Date: Tue, 12 Dec 2023 18:32:01 +0000 Subject: [PATCH 51/59] add screenshot of cell metadata --- .../images/scrna-ncbi-anndata/cell_metadata.png | Bin 0 -> 19918 bytes .../tutorials/scrna-ncbi-anndata/tutorial.md | 6 +++++- 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 topics/single-cell/images/scrna-ncbi-anndata/cell_metadata.png diff --git a/topics/single-cell/images/scrna-ncbi-anndata/cell_metadata.png b/topics/single-cell/images/scrna-ncbi-anndata/cell_metadata.png new file mode 100644 index 0000000000000000000000000000000000000000..01dd564c852f4e0372634fa72c3a73f394b44dba GIT binary patch literal 19918 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 {: .hands_on} -With the metadata table ready, the last step is to add it to our original combined object! +After processing the ```Cell Metadata``` table should look like the following: + +![Cell Metadata Table](../../images/scrna-ncbi-anndata/cell_metadata.png "Cell Metadata Table") + +With the metadata table ready, we can add it to our original combined object! > Add metadata to AnnData object > From cd3728b55641562a98d26242ac7862218c25aa09 Mon Sep 17 00:00:00 2001 From: Pavankumar Videm Date: Tue, 12 Dec 2023 20:08:26 +0100 Subject: [PATCH 52/59] add workflow --- .../workflows/NCBI_to_Anndata-test.yml | 49 + .../workflows/NCBI_to_Anndata.ga | 1915 +++++++++++++++++ .../scrna-ncbi-anndata/workflows/index.md | 3 + 3 files changed, 1967 insertions(+) create mode 100644 topics/single-cell/tutorials/scrna-ncbi-anndata/workflows/NCBI_to_Anndata-test.yml create mode 100644 topics/single-cell/tutorials/scrna-ncbi-anndata/workflows/NCBI_to_Anndata.ga create mode 100644 topics/single-cell/tutorials/scrna-ncbi-anndata/workflows/index.md diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/workflows/NCBI_to_Anndata-test.yml b/topics/single-cell/tutorials/scrna-ncbi-anndata/workflows/NCBI_to_Anndata-test.yml new file mode 100644 index 00000000000000..39a366bc775184 --- /dev/null +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/workflows/NCBI_to_Anndata-test.yml @@ -0,0 +1,49 @@ +- doc: Converting NCBI Data to the AnnData Format + job: + GSM5353214_PA_AUG_PB_1A_S1_dge.txt: + class: File + location: https://zenodo.org/record/10101768/files/GSM5353214_PA_AUG_PB_1A_S1_dge.txt + filetype: txt + GSM5353215_PA_AUG_PB_1B_S2_dge.txt: + class: File + location: https://zenodo.org/record/10101768/files/GSM5353215_PA_AUG_PB_1B_S2_dge.txt + filetype: txt + GSM5353216_PA_PB1A_Pool_1_3_S50_L002_dge.txt: + class: File + location: https://zenodo.org/record/10101768/files/GSM5353216_PA_PB1A_Pool_1_3_S50_L002_dge.txt + filetype: txt + GSM5353217_PA_PB1A_Pool_2_S107_L004_dge.txt: + class: File + location: https://zenodo.org/record/10101768/files/GSM5353217_PA_PB1A_Pool_2_S107_L004_dge.txt + filetype: txt + GSM5353218_PA_PB1B_Pool_1_2_S74_L003_dge.txt: + class: File + location: https://zenodo.org/record/10101768/files/GSM5353218_PA_PB1B_Pool_1_2_S74_L003_dge.txt + filetype: txt + GSM5353219_PA_PB1B_Pool_2_S24_L001_dge.txt: + class: File + location: https://zenodo.org/record/10101768/files/GSM5353219_PA_PB1B_Pool_2_S24_L001_dge.txt + filetype: txt + GSM5353220_PA_PB1B_Pool_3_S51_L002_dge.txt: + class: File + location: https://zenodo.org/record/10101768/files/GSM5353220_PA_PB1B_Pool_3_S51_L002_dge.txt + filetype: txt + GSM5353221_PA_PB2A_Pool_1_3_S25_L001_dge.txt: + class: File + location: https://zenodo.org/record/10101768/files/GSM5353221_PA_PB2A_Pool_1_3_S25_L001_dge.txt + filetype: txt + GSM5353222_PA_PB2B_Pool_1_3_S52_L002_dge.txt: + class: File + location: https://zenodo.org/record/10101768/files/GSM5353222_PA_PB2B_Pool_1_3_S52_L002_dge.txt + filetype: txt + GSM5353223_PA_PB2B_Pool_2_S26_L001_dge.txt: + class: File + location: https://zenodo.org/record/10101768/files/GSM5353223_PA_PB2B_Pool_2_S26_L001_dge.txt + filetype: txt + outputs: + obs: + asserts: + has_text: + text: "AAAGGGGAGTGT-0 0 nan patient1 left-mid AUG_PB1A 8165" + has_text: + text: "GGCAATTGGGAC-2 2 poolA patient2 right-mid MAY_PB1A 8848" \ No newline at end of file diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/workflows/NCBI_to_Anndata.ga b/topics/single-cell/tutorials/scrna-ncbi-anndata/workflows/NCBI_to_Anndata.ga new file mode 100644 index 00000000000000..be9f9fd060c627 --- /dev/null +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/workflows/NCBI_to_Anndata.ga @@ -0,0 +1,1915 @@ +{ + "a_galaxy_workflow": "true", + "annotation": "", + "creator": [ + { + "class": "Person", + "identifier": "0009-0008-9422-6380", + "name": "Morgan Howells" + } + ], + "format-version": "0.1", + "license": "CC-BY-4.0", + "name": "NCBI to Anndata", + "steps": { + "0": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 0, + "input_connections": {}, + "inputs": [ + { + "description": "", + "name": "GSM5353216_PA_PB1A_Pool_1_3_S50_L002_dge.txt" + } + ], + "label": "GSM5353216_PA_PB1A_Pool_1_3_S50_L002_dge.txt", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 0, + "top": 6 + }, + "tool_id": null, + "tool_state": "{\"optional\": false, \"tag\": null}", + "tool_version": null, + "type": "data_input", + "uuid": "473c66ce-eb30-483e-bf74-a04f0b452f67", + "when": null, + "workflow_outputs": [] + }, + "1": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 1, + "input_connections": {}, + "inputs": [ + { + "description": "", + "name": "GSM5353221_PA_PB2A_Pool_1_3_S25_L001_dge.txt" + } + ], + "label": "GSM5353221_PA_PB2A_Pool_1_3_S25_L001_dge.txt", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 0, + "top": 160 + }, + "tool_id": null, + "tool_state": "{\"optional\": false, \"tag\": null}", + "tool_version": null, + "type": "data_input", + "uuid": "6b5fc504-7162-4cbb-90a4-97b3fc4f792b", + "when": null, + "workflow_outputs": [] + }, + "2": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 2, + "input_connections": {}, + "inputs": [ + { + "description": "", + "name": "GSM5353223_PA_PB2B_Pool_2_S26_L001_dge.txt" + } + ], + "label": "GSM5353223_PA_PB2B_Pool_2_S26_L001_dge.txt", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 0, + "top": 314 + }, + "tool_id": null, + "tool_state": "{\"optional\": false, \"tag\": null}", + "tool_version": null, + "type": "data_input", + "uuid": "7e556424-a80d-4114-be2e-7c9ced71f048", + "when": null, + "workflow_outputs": [] + }, + "3": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 3, + "input_connections": {}, + "inputs": [ + { + "description": "", + "name": "GSM5353215_PA_AUG_PB_1B_S2_dge.txt" + } + ], + "label": "GSM5353215_PA_AUG_PB_1B_S2_dge.txt", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 0, + "top": 468 + }, + "tool_id": null, + "tool_state": "{\"optional\": false, \"tag\": null}", + "tool_version": null, + "type": "data_input", + "uuid": "99d79b05-7b7a-4986-93e6-6957c34afdca", + "when": null, + "workflow_outputs": [] + }, + "4": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 4, + "input_connections": {}, + "inputs": [ + { + "description": "", + "name": "GSM5353218_PA_PB1B_Pool_1_2_S74_L003_dge.txt" + } + ], + "label": "GSM5353218_PA_PB1B_Pool_1_2_S74_L003_dge.txt", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 0, + "top": 622 + }, + "tool_id": null, + "tool_state": "{\"optional\": false, \"tag\": null}", + "tool_version": null, + "type": "data_input", + "uuid": "ea1f8502-ed3c-45ac-bf09-36a1771dec28", + "when": null, + "workflow_outputs": [] + }, + "5": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 5, + "input_connections": {}, + "inputs": [ + { + "description": "", + "name": "GSM5353220_PA_PB1B_Pool_3_S51_L002_dge.txt" + } + ], + "label": "GSM5353220_PA_PB1B_Pool_3_S51_L002_dge.txt", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 0, + "top": 776 + }, + "tool_id": null, + "tool_state": "{\"optional\": false, \"tag\": null}", + "tool_version": null, + "type": "data_input", + "uuid": "9fce1b9d-52e4-40e5-9c3c-32c1d901aeb1", + "when": null, + "workflow_outputs": [] + }, + "6": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 6, + "input_connections": {}, + "inputs": [ + { + "description": "", + "name": "GSM5353217_PA_PB1A_Pool_2_S107_L004_dge.txt" + } + ], + "label": "GSM5353217_PA_PB1A_Pool_2_S107_L004_dge.txt", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 0, + "top": 930 + }, + "tool_id": null, + "tool_state": "{\"optional\": false, \"tag\": null}", + "tool_version": null, + "type": "data_input", + "uuid": "2222b107-d0bc-4daf-bee0-d8573375ff43", + "when": null, + "workflow_outputs": [] + }, + "7": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 7, + "input_connections": {}, + "inputs": [ + { + "description": "", + "name": "GSM5353222_PA_PB2B_Pool_1_3_S52_L002_dge.txt" + } + ], + "label": "GSM5353222_PA_PB2B_Pool_1_3_S52_L002_dge.txt", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 0, + "top": 1084 + }, + "tool_id": null, + "tool_state": "{\"optional\": false, \"tag\": null}", + "tool_version": null, + "type": "data_input", + "uuid": "3f690013-56d0-4046-a64f-42ddd71ceb81", + "when": null, + "workflow_outputs": [] + }, + "8": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 8, + "input_connections": {}, + "inputs": [ + { + "description": "", + "name": "GSM5353219_PA_PB1B_Pool_2_S24_L001_dge.txt" + } + ], + "label": "GSM5353219_PA_PB1B_Pool_2_S24_L001_dge.txt", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 0, + "top": 1238 + }, + "tool_id": null, + "tool_state": "{\"optional\": false, \"tag\": null}", + "tool_version": null, + "type": "data_input", + "uuid": "fc2d53ef-3b4c-437b-bec7-e7b84f8f6c54", + "when": null, + "workflow_outputs": [] + }, + "9": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 9, + "input_connections": {}, + "inputs": [ + { + "description": "", + "name": "GSM5353214_PA_AUG_PB_1A_S1_dge.txt" + } + ], + "label": "GSM5353214_PA_AUG_PB_1A_S1_dge.txt", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 0, + "top": 1392 + }, + "tool_id": null, + "tool_state": "{\"optional\": false, \"tag\": null}", + "tool_version": null, + "type": "data_input", + "uuid": "7b4a0b40-4a1a-4d89-bb13-6f150be24c9c", + "when": null, + "workflow_outputs": [] + }, + "10": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_import/anndata_import/0.7.5+galaxy1", + "errors": null, + "id": 10, + "input_connections": { + "hd5_format|in|input": { + "id": 0, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "Import Anndata and loom", + "outputs": [ + { + "name": "anndata", + "type": "h5ad" + } + ], + "position": { + "left": 280, + "top": 0 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_import/anndata_import/0.7.5+galaxy1", + "tool_shed_repository": { + "changeset_revision": "fb9e030ffae4", + "name": "anndata_import", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__input_ext\": \"input\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"hd5_format\": {\"filetype\": \"anndata\", \"__current_case__\": 0, \"in\": {\"adata_format\": \"tabular\", \"__current_case__\": 1, \"input\": {\"__class__\": \"ConnectedValue\"}, \"first_column_names\": true}}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "0.7.5+galaxy1", + "type": "tool", + "uuid": "fc0c681e-1aac-40ae-8298-aabc01e5a87b", + "when": null, + "workflow_outputs": [] + }, + "11": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_import/anndata_import/0.7.5+galaxy1", + "errors": null, + "id": 11, + "input_connections": { + "hd5_format|in|input": { + "id": 1, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "Import Anndata and loom", + "outputs": [ + { + "name": "anndata", + "type": "h5ad" + } + ], + "position": { + "left": 280, + "top": 154 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_import/anndata_import/0.7.5+galaxy1", + "tool_shed_repository": { + "changeset_revision": "fb9e030ffae4", + "name": "anndata_import", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__input_ext\": \"input\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"hd5_format\": {\"filetype\": \"anndata\", \"__current_case__\": 0, \"in\": {\"adata_format\": \"tabular\", \"__current_case__\": 1, \"input\": {\"__class__\": \"ConnectedValue\"}, \"first_column_names\": true}}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "0.7.5+galaxy1", + "type": "tool", + "uuid": "b5c7249c-c358-4a71-a637-12f269e009ab", + "when": null, + "workflow_outputs": [] + }, + "12": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_import/anndata_import/0.7.5+galaxy1", + "errors": null, + "id": 12, + "input_connections": { + "hd5_format|in|input": { + "id": 2, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "Import Anndata and loom", + "outputs": [ + { + "name": "anndata", + "type": "h5ad" + } + ], + "position": { + "left": 280, + "top": 308 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_import/anndata_import/0.7.5+galaxy1", + "tool_shed_repository": { + "changeset_revision": "fb9e030ffae4", + "name": "anndata_import", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__input_ext\": \"input\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"hd5_format\": {\"filetype\": \"anndata\", \"__current_case__\": 0, \"in\": {\"adata_format\": \"tabular\", \"__current_case__\": 1, \"input\": {\"__class__\": \"ConnectedValue\"}, \"first_column_names\": true}}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "0.7.5+galaxy1", + "type": "tool", + "uuid": "b69371fd-59c6-4ea7-ba48-bac55f945bad", + "when": null, + "workflow_outputs": [] + }, + "13": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_import/anndata_import/0.7.5+galaxy1", + "errors": null, + "id": 13, + "input_connections": { + "hd5_format|in|input": { + "id": 3, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "Import Anndata and loom", + "outputs": [ + { + "name": "anndata", + "type": "h5ad" + } + ], + "position": { + "left": 280, + "top": 462 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_import/anndata_import/0.7.5+galaxy1", + "tool_shed_repository": { + "changeset_revision": "fb9e030ffae4", + "name": "anndata_import", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__input_ext\": \"input\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"hd5_format\": {\"filetype\": \"anndata\", \"__current_case__\": 0, \"in\": {\"adata_format\": \"tabular\", \"__current_case__\": 1, \"input\": {\"__class__\": \"ConnectedValue\"}, \"first_column_names\": true}}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "0.7.5+galaxy1", + "type": "tool", + "uuid": "bbc79158-5e04-49db-8088-37da78a2c83f", + "when": null, + "workflow_outputs": [] + }, + "14": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_import/anndata_import/0.7.5+galaxy1", + "errors": null, + "id": 14, + "input_connections": { + "hd5_format|in|input": { + "id": 4, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "Import Anndata and loom", + "outputs": [ + { + "name": "anndata", + "type": "h5ad" + } + ], + "position": { + "left": 280, + "top": 616 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_import/anndata_import/0.7.5+galaxy1", + "tool_shed_repository": { + "changeset_revision": "fb9e030ffae4", + "name": "anndata_import", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__input_ext\": \"input\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"hd5_format\": {\"filetype\": \"anndata\", \"__current_case__\": 0, \"in\": {\"adata_format\": \"tabular\", \"__current_case__\": 1, \"input\": {\"__class__\": \"ConnectedValue\"}, \"first_column_names\": true}}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "0.7.5+galaxy1", + "type": "tool", + "uuid": "99a950da-eb84-45c4-b4b6-8d0216940828", + "when": null, + "workflow_outputs": [] + }, + "15": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_import/anndata_import/0.7.5+galaxy1", + "errors": null, + "id": 15, + "input_connections": { + "hd5_format|in|input": { + "id": 5, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "Import Anndata and loom", + "outputs": [ + { + "name": "anndata", + "type": "h5ad" + } + ], + "position": { + "left": 280, + "top": 770 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_import/anndata_import/0.7.5+galaxy1", + "tool_shed_repository": { + "changeset_revision": "fb9e030ffae4", + "name": "anndata_import", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__input_ext\": \"input\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"hd5_format\": {\"filetype\": \"anndata\", \"__current_case__\": 0, \"in\": {\"adata_format\": \"tabular\", \"__current_case__\": 1, \"input\": {\"__class__\": \"ConnectedValue\"}, \"first_column_names\": true}}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "0.7.5+galaxy1", + "type": "tool", + "uuid": "3a263cfa-a15c-4565-b2cd-49989db25371", + "when": null, + "workflow_outputs": [] + }, + "16": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_import/anndata_import/0.7.5+galaxy1", + "errors": null, + "id": 16, + "input_connections": { + "hd5_format|in|input": { + "id": 6, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "Import Anndata and loom", + "outputs": [ + { + "name": "anndata", + "type": "h5ad" + } + ], + "position": { + "left": 280, + "top": 924 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_import/anndata_import/0.7.5+galaxy1", + "tool_shed_repository": { + "changeset_revision": "fb9e030ffae4", + "name": "anndata_import", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__input_ext\": \"input\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"hd5_format\": {\"filetype\": \"anndata\", \"__current_case__\": 0, \"in\": {\"adata_format\": \"tabular\", \"__current_case__\": 1, \"input\": {\"__class__\": \"ConnectedValue\"}, \"first_column_names\": true}}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "0.7.5+galaxy1", + "type": "tool", + "uuid": "2a7d63ed-774f-4894-af10-92e06131adcf", + "when": null, + "workflow_outputs": [] + }, + "17": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_import/anndata_import/0.7.5+galaxy1", + "errors": null, + "id": 17, + "input_connections": { + "hd5_format|in|input": { + "id": 7, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "Import Anndata and loom", + "outputs": [ + { + "name": "anndata", + "type": "h5ad" + } + ], + "position": { + "left": 280, + "top": 1078 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_import/anndata_import/0.7.5+galaxy1", + "tool_shed_repository": { + "changeset_revision": "fb9e030ffae4", + "name": "anndata_import", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__input_ext\": \"input\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"hd5_format\": {\"filetype\": \"anndata\", \"__current_case__\": 0, \"in\": {\"adata_format\": \"tabular\", \"__current_case__\": 1, \"input\": {\"__class__\": \"ConnectedValue\"}, \"first_column_names\": true}}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "0.7.5+galaxy1", + "type": "tool", + "uuid": "177a94fa-ea39-4e04-9d95-47d84bee200d", + "when": null, + "workflow_outputs": [] + }, + "18": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_import/anndata_import/0.7.5+galaxy1", + "errors": null, + "id": 18, + "input_connections": { + "hd5_format|in|input": { + "id": 8, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "Import Anndata and loom", + "outputs": [ + { + "name": "anndata", + "type": "h5ad" + } + ], + "position": { + "left": 280, + "top": 1232 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_import/anndata_import/0.7.5+galaxy1", + "tool_shed_repository": { + "changeset_revision": "fb9e030ffae4", + "name": "anndata_import", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__input_ext\": \"input\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"hd5_format\": {\"filetype\": \"anndata\", \"__current_case__\": 0, \"in\": {\"adata_format\": \"tabular\", \"__current_case__\": 1, \"input\": {\"__class__\": \"ConnectedValue\"}, \"first_column_names\": true}}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "0.7.5+galaxy1", + "type": "tool", + "uuid": "09d068b4-2600-40ca-9d30-216b6568b0aa", + "when": null, + "workflow_outputs": [] + }, + "19": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_import/anndata_import/0.7.5+galaxy1", + "errors": null, + "id": 19, + "input_connections": { + "hd5_format|in|input": { + "id": 9, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "Import Anndata and loom", + "outputs": [ + { + "name": "anndata", + "type": "h5ad" + } + ], + "position": { + "left": 280, + "top": 1386 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_import/anndata_import/0.7.5+galaxy1", + "tool_shed_repository": { + "changeset_revision": "fb9e030ffae4", + "name": "anndata_import", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__input_ext\": \"input\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"hd5_format\": {\"filetype\": \"anndata\", \"__current_case__\": 0, \"in\": {\"adata_format\": \"tabular\", \"__current_case__\": 1, \"input\": {\"__class__\": \"ConnectedValue\"}, \"first_column_names\": true}}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "0.7.5+galaxy1", + "type": "tool", + "uuid": "51f452a2-b1a5-4315-bb26-0093c79a3aa9", + "when": null, + "workflow_outputs": [] + }, + "20": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_manipulate/anndata_manipulate/0.7.5+galaxy1", + "errors": null, + "id": 20, + "input_connections": { + "input": { + "id": 10, + "output_name": "anndata" + } + }, + "inputs": [], + "label": null, + "name": "Manipulate AnnData", + "outputs": [ + { + "name": "anndata", + "type": "h5ad" + } + ], + "position": { + "left": 560, + "top": 0 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_manipulate/anndata_manipulate/0.7.5+galaxy1", + "tool_shed_repository": { + "changeset_revision": "3d748954434b", + "name": "anndata_manipulate", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__input_ext\": \"h5ad\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"input\": {\"__class__\": \"ConnectedValue\"}, \"manipulate\": {\"function\": \"transpose\", \"__current_case__\": 5}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "0.7.5+galaxy1", + "type": "tool", + "uuid": "fe89b9a5-dd11-4750-bdff-998cd62b8c76", + "when": null, + "workflow_outputs": [] + }, + "21": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_manipulate/anndata_manipulate/0.7.5+galaxy1", + "errors": null, + "id": 21, + "input_connections": { + "input": { + "id": 11, + "output_name": "anndata" + } + }, + "inputs": [], + "label": null, + "name": "Manipulate AnnData", + "outputs": [ + { + "name": "anndata", + "type": "h5ad" + } + ], + "position": { + "left": 560, + "top": 154 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_manipulate/anndata_manipulate/0.7.5+galaxy1", + "tool_shed_repository": { + "changeset_revision": "3d748954434b", + "name": "anndata_manipulate", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__input_ext\": \"h5ad\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"input\": {\"__class__\": \"ConnectedValue\"}, \"manipulate\": {\"function\": \"transpose\", \"__current_case__\": 5}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "0.7.5+galaxy1", + "type": "tool", + "uuid": "75fd4890-4bce-4978-a636-f3ec85e3af63", + "when": null, + "workflow_outputs": [] + }, + "22": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_manipulate/anndata_manipulate/0.7.5+galaxy1", + "errors": null, + "id": 22, + "input_connections": { + "input": { + "id": 12, + "output_name": "anndata" + } + }, + "inputs": [], + "label": null, + "name": "Manipulate AnnData", + "outputs": [ + { + "name": "anndata", + "type": "h5ad" + } + ], + "position": { + "left": 560, + "top": 308 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_manipulate/anndata_manipulate/0.7.5+galaxy1", + "tool_shed_repository": { + "changeset_revision": "3d748954434b", + "name": "anndata_manipulate", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__input_ext\": \"h5ad\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"input\": {\"__class__\": \"ConnectedValue\"}, \"manipulate\": {\"function\": \"transpose\", \"__current_case__\": 5}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "0.7.5+galaxy1", + "type": "tool", + "uuid": "a6c1c73b-1c2a-421b-ae4c-d79e286614ea", + "when": null, + "workflow_outputs": [] + }, + "23": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_manipulate/anndata_manipulate/0.7.5+galaxy1", + "errors": null, + "id": 23, + "input_connections": { + "input": { + "id": 13, + "output_name": "anndata" + } + }, + "inputs": [], + "label": null, + "name": "Manipulate AnnData", + "outputs": [ + { + "name": "anndata", + "type": "h5ad" + } + ], + "position": { + "left": 560, + "top": 462 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_manipulate/anndata_manipulate/0.7.5+galaxy1", + "tool_shed_repository": { + "changeset_revision": "3d748954434b", + "name": "anndata_manipulate", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__input_ext\": \"h5ad\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"input\": {\"__class__\": \"ConnectedValue\"}, \"manipulate\": {\"function\": \"transpose\", \"__current_case__\": 5}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "0.7.5+galaxy1", + "type": "tool", + "uuid": "6dea19a9-3530-44d2-97c3-338062560911", + "when": null, + "workflow_outputs": [] + }, + "24": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_manipulate/anndata_manipulate/0.7.5+galaxy1", + "errors": null, + "id": 24, + "input_connections": { + "input": { + "id": 14, + "output_name": "anndata" + } + }, + "inputs": [], + "label": null, + "name": "Manipulate AnnData", + "outputs": [ + { + "name": "anndata", + "type": "h5ad" + } + ], + "position": { + "left": 560, + "top": 616 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_manipulate/anndata_manipulate/0.7.5+galaxy1", + "tool_shed_repository": { + "changeset_revision": "3d748954434b", + "name": "anndata_manipulate", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__input_ext\": \"h5ad\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"input\": {\"__class__\": \"ConnectedValue\"}, \"manipulate\": {\"function\": \"transpose\", \"__current_case__\": 5}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "0.7.5+galaxy1", + "type": "tool", + "uuid": "fd73dc52-957e-433a-9aab-733efb9df757", + "when": null, + "workflow_outputs": [] + }, + "25": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_manipulate/anndata_manipulate/0.7.5+galaxy1", + "errors": null, + "id": 25, + "input_connections": { + "input": { + "id": 15, + "output_name": "anndata" + } + }, + "inputs": [], + "label": null, + "name": "Manipulate AnnData", + "outputs": [ + { + "name": "anndata", + "type": "h5ad" + } + ], + "position": { + "left": 560, + "top": 770 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_manipulate/anndata_manipulate/0.7.5+galaxy1", + "tool_shed_repository": { + "changeset_revision": "3d748954434b", + "name": "anndata_manipulate", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__input_ext\": \"h5ad\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"input\": {\"__class__\": \"ConnectedValue\"}, \"manipulate\": {\"function\": \"transpose\", \"__current_case__\": 5}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "0.7.5+galaxy1", + "type": "tool", + "uuid": "f8e93ee5-b396-4fff-8501-0c7b96a04732", + "when": null, + "workflow_outputs": [] + }, + "26": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_manipulate/anndata_manipulate/0.7.5+galaxy1", + "errors": null, + "id": 26, + "input_connections": { + "input": { + "id": 16, + "output_name": "anndata" + } + }, + "inputs": [], + "label": null, + "name": "Manipulate AnnData", + "outputs": [ + { + "name": "anndata", + "type": "h5ad" + } + ], + "position": { + "left": 560, + "top": 924 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_manipulate/anndata_manipulate/0.7.5+galaxy1", + "tool_shed_repository": { + "changeset_revision": "3d748954434b", + "name": "anndata_manipulate", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__input_ext\": \"h5ad\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"input\": {\"__class__\": \"ConnectedValue\"}, \"manipulate\": {\"function\": \"transpose\", \"__current_case__\": 5}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "0.7.5+galaxy1", + "type": "tool", + "uuid": "50c0a7c0-7c5f-4b6e-8313-716947a8077a", + "when": null, + "workflow_outputs": [] + }, + "27": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_manipulate/anndata_manipulate/0.7.5+galaxy1", + "errors": null, + "id": 27, + "input_connections": { + "input": { + "id": 17, + "output_name": "anndata" + } + }, + "inputs": [], + "label": null, + "name": "Manipulate AnnData", + "outputs": [ + { + "name": "anndata", + "type": "h5ad" + } + ], + "position": { + "left": 560, + "top": 1078 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_manipulate/anndata_manipulate/0.7.5+galaxy1", + "tool_shed_repository": { + "changeset_revision": "3d748954434b", + "name": "anndata_manipulate", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__input_ext\": \"h5ad\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"input\": {\"__class__\": \"ConnectedValue\"}, \"manipulate\": {\"function\": \"transpose\", \"__current_case__\": 5}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "0.7.5+galaxy1", + "type": "tool", + "uuid": "7741d5fb-301e-4232-b6ab-29cab4ce1550", + "when": null, + "workflow_outputs": [] + }, + "28": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_manipulate/anndata_manipulate/0.7.5+galaxy1", + "errors": null, + "id": 28, + "input_connections": { + "input": { + "id": 18, + "output_name": "anndata" + } + }, + "inputs": [], + "label": null, + "name": "Manipulate AnnData", + "outputs": [ + { + "name": "anndata", + "type": "h5ad" + } + ], + "position": { + "left": 560, + "top": 1232 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_manipulate/anndata_manipulate/0.7.5+galaxy1", + "tool_shed_repository": { + "changeset_revision": "3d748954434b", + "name": "anndata_manipulate", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__input_ext\": \"h5ad\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"input\": {\"__class__\": \"ConnectedValue\"}, \"manipulate\": {\"function\": \"transpose\", \"__current_case__\": 5}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "0.7.5+galaxy1", + "type": "tool", + "uuid": "defbd9c2-d44c-48c8-8ed6-b6649dcae1af", + "when": null, + "workflow_outputs": [] + }, + "29": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_manipulate/anndata_manipulate/0.7.5+galaxy1", + "errors": null, + "id": 29, + "input_connections": { + "input": { + "id": 19, + "output_name": "anndata" + } + }, + "inputs": [], + "label": null, + "name": "Manipulate AnnData", + "outputs": [ + { + "name": "anndata", + "type": "h5ad" + } + ], + "position": { + "left": 560, + "top": 1386 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_manipulate/anndata_manipulate/0.7.5+galaxy1", + "tool_shed_repository": { + "changeset_revision": "3d748954434b", + "name": "anndata_manipulate", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__input_ext\": \"h5ad\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"input\": {\"__class__\": \"ConnectedValue\"}, \"manipulate\": {\"function\": \"transpose\", \"__current_case__\": 5}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "0.7.5+galaxy1", + "type": "tool", + "uuid": "0852a076-be4a-4d40-8456-f602e4d98f41", + "when": null, + "workflow_outputs": [] + }, + "30": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_manipulate/anndata_manipulate/0.7.5+galaxy1", + "errors": null, + "id": 30, + "input_connections": { + "input": { + "id": 29, + "output_name": "anndata" + }, + "manipulate|other_adatas": [ + { + "id": 20, + "output_name": "anndata" + }, + { + "id": 21, + "output_name": "anndata" + }, + { + "id": 22, + "output_name": "anndata" + }, + { + "id": 23, + "output_name": "anndata" + }, + { + "id": 24, + "output_name": "anndata" + }, + { + "id": 25, + "output_name": "anndata" + }, + { + "id": 26, + "output_name": "anndata" + }, + { + "id": 27, + "output_name": "anndata" + }, + { + "id": 28, + "output_name": "anndata" + } + ] + }, + "inputs": [], + "label": null, + "name": "Manipulate AnnData", + "outputs": [ + { + "name": "anndata", + "type": "h5ad" + } + ], + "position": { + "left": 850, + "top": 622 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_manipulate/anndata_manipulate/0.7.5+galaxy1", + "tool_shed_repository": { + "changeset_revision": "3d748954434b", + "name": "anndata_manipulate", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__input_ext\": \"h5ad\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"input\": {\"__class__\": \"ConnectedValue\"}, \"manipulate\": {\"function\": \"concatenate\", \"__current_case__\": 0, \"other_adatas\": {\"__class__\": \"ConnectedValue\"}, \"join\": \"inner\", \"batch_key\": \"batch\", \"index_unique\": \"-\"}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "0.7.5+galaxy1", + "type": "tool", + "uuid": "8f439f4f-7495-43fd-a20a-443fb0bb2efa", + "when": null, + "workflow_outputs": [] + }, + "31": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_manipulate/anndata_manipulate/0.7.5+galaxy1", + "errors": null, + "id": 31, + "input_connections": { + "input": { + "id": 30, + "output_name": "anndata" + } + }, + "inputs": [], + "label": null, + "name": "Manipulate AnnData", + "outputs": [ + { + "name": "anndata", + "type": "h5ad" + } + ], + "position": { + "left": 1130, + "top": 659 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_manipulate/anndata_manipulate/0.7.5+galaxy1", + "tool_shed_repository": { + "changeset_revision": "3d748954434b", + "name": "anndata_manipulate", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__input_ext\": \"h5ad\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"input\": {\"__class__\": \"ConnectedValue\"}, \"manipulate\": {\"function\": \"add_annotation\", \"__current_case__\": 6, \"var_obs\": \"obs\", \"new_annot\": null}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "0.7.5+galaxy1", + "type": "tool", + "uuid": "898f9e35-3fef-446e-94e4-ea76be8346e2", + "when": null, + "workflow_outputs": [] + }, + "32": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_inspect/anndata_inspect/0.7.5+galaxy1", + "errors": null, + "id": 32, + "input_connections": { + "input": { + "id": 30, + "output_name": "anndata" + } + }, + "inputs": [], + "label": null, + "name": "Inspect AnnData", + "outputs": [ + { + "name": "obs", + "type": "tabular" + } + ], + "position": { + "left": 1130, + "top": 1026 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_inspect/anndata_inspect/0.7.5+galaxy1", + "tool_shed_repository": { + "changeset_revision": "ee98d611afc6", + "name": "anndata_inspect", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__input_ext\": \"h5ad\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"input\": {\"__class__\": \"ConnectedValue\"}, \"inspect\": {\"info\": \"obs\", \"__current_case__\": 3}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "0.7.5+galaxy1", + "type": "tool", + "uuid": "d5d36561-8879-456c-83c8-4f4cb07c387e", + "when": null, + "workflow_outputs": [] + }, + "33": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/ebi-gxa/scanpy_filter_cells/scanpy_filter_cells/1.8.1+galaxy9", + "errors": null, + "id": 33, + "input_connections": { + "input_obj_file": { + "id": 31, + "output_name": "anndata" + } + }, + "inputs": [], + "label": null, + "name": "Scanpy FilterCells", + "outputs": [ + { + "name": "output_h5ad", + "type": "h5ad" + } + ], + "position": { + "left": 1410, + "top": 664 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/ebi-gxa/scanpy_filter_cells/scanpy_filter_cells/1.8.1+galaxy9", + "tool_shed_repository": { + "changeset_revision": "e9283529cba1", + "name": "scanpy_filter_cells", + "owner": "ebi-gxa", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__input_ext\": \"input\", \"categories\": [], \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"export_mtx\": false, \"force_recalc\": false, \"gene_name\": \"_index\", \"input_format\": \"anndata\", \"input_obj_file\": {\"__class__\": \"ConnectedValue\"}, \"output_format\": \"anndata_h5ad\", \"parameters\": [{\"__index__\": 0, \"name\": \"n_genes\", \"min\": \"0.0\", \"max\": \"1000000000.0\"}], \"save_layer\": null, \"save_raw\": false, \"subsets\": [], \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "1.8.1+galaxy9", + "type": "tool", + "uuid": "e799bf01-950d-434e-a07b-b61e8ccaf0bd", + "when": null, + "workflow_outputs": [] + }, + "34": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_column/1.1.3", + "errors": null, + "id": 34, + "input_connections": { + "infile": { + "id": 32, + "output_name": "obs" + } + }, + "inputs": [], + "label": null, + "name": "Replace Text", + "outputs": [ + { + "name": "outfile", + "type": "input" + } + ], + "position": { + "left": 1410, + "top": 1026 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_column/1.1.3", + "tool_shed_repository": { + "changeset_revision": "ddf54b12c295", + "name": "text_processing", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__input_ext\": \"tabular\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"infile\": {\"__class__\": \"ConnectedValue\"}, \"replacements\": [{\"__index__\": 0, \"column\": \"2\", \"find_pattern\": \"(0$)|(1$)\", \"replace_pattern\": \"patient1\"}, {\"__index__\": 1, \"column\": \"2\", \"find_pattern\": \"(2$)|(3$)|(4$)|(5$)|(6$)\", \"replace_pattern\": \"patient2\"}, {\"__index__\": 2, \"column\": \"2\", \"find_pattern\": \"(7$)|(8$)|(9$)\", \"replace_pattern\": \"patient3\"}, {\"__index__\": 3, \"column\": \"2\", \"find_pattern\": \"batch\", \"replace_pattern\": \"patient\"}], \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "1.1.3", + "type": "tool", + "uuid": "6b9db8dd-5475-4d0d-8721-86c1a295f0da", + "when": null, + "workflow_outputs": [] + }, + "35": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_column/1.1.3", + "errors": null, + "id": 35, + "input_connections": { + "infile": { + "id": 32, + "output_name": "obs" + } + }, + "inputs": [], + "label": null, + "name": "Replace Text", + "outputs": [ + { + "name": "outfile", + "type": "input" + } + ], + "position": { + "left": 1410, + "top": 1180 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_column/1.1.3", + "tool_shed_repository": { + "changeset_revision": "ddf54b12c295", + "name": "text_processing", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__input_ext\": \"tabular\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"infile\": {\"__class__\": \"ConnectedValue\"}, \"replacements\": [{\"__index__\": 0, \"column\": \"2\", \"find_pattern\": \"2|4|8\", \"replace_pattern\": \"poolA\"}, {\"__index__\": 1, \"column\": \"2\", \"find_pattern\": \"3|5|9\", \"replace_pattern\": \"poolB\"}, {\"__index__\": 2, \"column\": \"2\", \"find_pattern\": \"6\", \"replace_pattern\": \"poolC\"}, {\"__index__\": 3, \"column\": \"2\", \"find_pattern\": \"0|1|7\", \"replace_pattern\": \"NA\"}, {\"__index__\": 4, \"column\": \"2\", \"find_pattern\": \"batch\", \"replace_pattern\": \"replicate\"}], \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "1.1.3", + "type": "tool", + "uuid": "e39c581b-79da-4851-b174-cf6b893ba2ee", + "when": null, + "workflow_outputs": [] + }, + "36": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_column/1.1.3", + "errors": null, + "id": 36, + "input_connections": { + "infile": { + "id": 32, + "output_name": "obs" + } + }, + "inputs": [], + "label": null, + "name": "Replace Text", + "outputs": [ + { + "name": "outfile", + "type": "input" + } + ], + "position": { + "left": 1690, + "top": 882 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_column/1.1.3", + "tool_shed_repository": { + "changeset_revision": "ddf54b12c295", + "name": "text_processing", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__input_ext\": \"tabular\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"infile\": {\"__class__\": \"ConnectedValue\"}, \"replacements\": [{\"__index__\": 0, \"column\": \"2\", \"find_pattern\": \"0\", \"replace_pattern\": \"left-mid\"}, {\"__index__\": 1, \"column\": \"2\", \"find_pattern\": \"1|2|3|8|9\", \"replace_pattern\": \"right-mid\"}, {\"__index__\": 2, \"column\": \"2\", \"find_pattern\": \"4|5|6\", \"replace_pattern\": \"right-apex\"}, {\"__index__\": 3, \"column\": \"2\", \"find_pattern\": \"7\", \"replace_pattern\": \"right-anterior\"}, {\"__index__\": 4, \"column\": \"2\", \"find_pattern\": \"batch\", \"replace_pattern\": \"tumorSpecimen\"}], \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "1.1.3", + "type": "tool", + "uuid": "0efbddb8-8f61-40b6-878e-1080f313ec5e", + "when": null, + "workflow_outputs": [] + }, + "37": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_column/1.1.3", + "errors": null, + "id": 37, + "input_connections": { + "infile": { + "id": 32, + "output_name": "obs" + } + }, + "inputs": [], + "label": null, + "name": "Replace Text", + "outputs": [ + { + "name": "outfile", + "type": "input" + } + ], + "position": { + "left": 1970, + "top": 850 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_column/1.1.3", + "tool_shed_repository": { + "changeset_revision": "ddf54b12c295", + "name": "text_processing", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__input_ext\": \"tabular\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"infile\": {\"__class__\": \"ConnectedValue\"}, \"replacements\": [{\"__index__\": 0, \"column\": \"2\", \"find_pattern\": \"0\", \"replace_pattern\": \"AUG_PB1A\"}, {\"__index__\": 1, \"column\": \"2\", \"find_pattern\": \"1$\", \"replace_pattern\": \"AUG_PB1B\"}, {\"__index__\": 2, \"column\": \"2\", \"find_pattern\": \"(2$)|3\", \"replace_pattern\": \"MAY_PB1A\"}, {\"__index__\": 3, \"column\": \"2\", \"find_pattern\": \"4|5|6\", \"replace_pattern\": \"MAY_PB1B\"}, {\"__index__\": 4, \"column\": \"2\", \"find_pattern\": \"7\", \"replace_pattern\": \"MAY_PB2A\"}, {\"__index__\": 5, \"column\": \"2\", \"find_pattern\": \"8|9\", \"replace_pattern\": \"MAY_PB2B\"}, {\"__index__\": 6, \"column\": \"2\", \"find_pattern\": \"batch\", \"replace_pattern\": \"SpecimenID\"}], \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "1.1.3", + "type": "tool", + "uuid": "03794fc2-ffd5-4315-98c3-f7d225465a78", + "when": null, + "workflow_outputs": [] + }, + "38": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/ebi-gxa/anndata_ops/anndata_ops/1.8.1+galaxy0", + "errors": null, + "id": 38, + "input_connections": { + "input_obj_file": { + "id": 33, + "output_name": "output_h5ad" + } + }, + "inputs": [], + "label": null, + "name": "AnnData Operations", + "outputs": [ + { + "name": "output_h5ad", + "type": "h5ad" + } + ], + "position": { + "left": 1690, + "top": 664 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/ebi-gxa/anndata_ops/anndata_ops/1.8.1+galaxy0", + "tool_shed_repository": { + "changeset_revision": "890fb06a2893", + "name": "anndata_ops", + "owner": "ebi-gxa", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__input_ext\": \"input\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"copy_adata_to_raw\": false, \"copy_e\": {\"default\": false, \"__current_case__\": 1}, \"copy_l\": {\"default\": false, \"__current_case__\": 1}, \"copy_o\": {\"default\": false, \"__current_case__\": 1}, \"copy_r\": {\"default\": false, \"__current_case__\": 1}, \"copy_u\": {\"default\": false, \"__current_case__\": 1}, \"copy_x\": {\"default\": false, \"__current_case__\": 1}, \"gene_flags\": [{\"__index__\": 0, \"startswith\": \"MT-\", \"flag\": \"mito\"}], \"gene_symbols_field\": \"index\", \"input_obj_file\": {\"__class__\": \"ConnectedValue\"}, \"modifications\": [], \"output_format\": \"anndata_h5ad\", \"sanitize_varm\": false, \"top_genes\": \"50\", \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "1.8.1+galaxy0", + "type": "tool", + "uuid": "c544d56c-22c8-48e4-8e7e-af7003ff508a", + "when": null, + "workflow_outputs": [] + }, + "39": { + "annotation": "", + "content_id": "Cut1", + "errors": null, + "id": 39, + "input_connections": { + "input": { + "id": 34, + "output_name": "outfile" + } + }, + "inputs": [], + "label": null, + "name": "Cut", + "outputs": [ + { + "name": "out_file1", + "type": "tabular" + } + ], + "position": { + "left": 1690, + "top": 1036 + }, + "post_job_actions": {}, + "tool_id": "Cut1", + "tool_state": "{\"__input_ext\": \"tabular\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"columnList\": \"c2\", \"delimiter\": \"T\", \"input\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "1.0.2", + "type": "tool", + "uuid": "dd958f99-abf9-4c8c-9e33-9667637e40f6", + "when": null, + "workflow_outputs": [] + }, + "40": { + "annotation": "", + "content_id": "Cut1", + "errors": null, + "id": 40, + "input_connections": { + "input": { + "id": 35, + "output_name": "outfile" + } + }, + "inputs": [], + "label": null, + "name": "Cut", + "outputs": [ + { + "name": "out_file1", + "type": "tabular" + } + ], + "position": { + "left": 1690, + "top": 1190 + }, + "post_job_actions": {}, + "tool_id": "Cut1", + "tool_state": "{\"__input_ext\": \"tabular\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"columnList\": \"c2\", \"delimiter\": \"T\", \"input\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "1.0.2", + "type": "tool", + "uuid": "0b61d484-3259-41fe-848b-3399bf98cf71", + "when": null, + "workflow_outputs": [] + }, + "41": { + "annotation": "", + "content_id": "Cut1", + "errors": null, + "id": 41, + "input_connections": { + "input": { + "id": 36, + "output_name": "outfile" + } + }, + "inputs": [], + "label": null, + "name": "Cut", + "outputs": [ + { + "name": "out_file1", + "type": "tabular" + } + ], + "position": { + "left": 1970, + "top": 1004 + }, + "post_job_actions": {}, + "tool_id": "Cut1", + "tool_state": "{\"__input_ext\": \"tabular\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"columnList\": \"c2\", \"delimiter\": \"T\", \"input\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "1.0.2", + "type": "tool", + "uuid": "35c10df1-7eec-4f8e-912a-08cca6ada5b0", + "when": null, + "workflow_outputs": [] + }, + "42": { + "annotation": "", + "content_id": "Cut1", + "errors": null, + "id": 42, + "input_connections": { + "input": { + "id": 37, + "output_name": "outfile" + } + }, + "inputs": [], + "label": null, + "name": "Cut", + "outputs": [ + { + "name": "out_file1", + "type": "tabular" + } + ], + "position": { + "left": 2250, + "top": 872 + }, + "post_job_actions": {}, + "tool_id": "Cut1", + "tool_state": "{\"__input_ext\": \"tabular\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"columnList\": \"c2\", \"delimiter\": \"T\", \"input\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "1.0.2", + "type": "tool", + "uuid": "a03dbe11-9602-4397-9677-27492d4b23e6", + "when": null, + "workflow_outputs": [] + }, + "43": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_inspect/anndata_inspect/0.7.5+galaxy1", + "errors": null, + "id": 43, + "input_connections": { + "input": { + "id": 38, + "output_name": "output_h5ad" + } + }, + "inputs": [], + "label": null, + "name": "Inspect AnnData", + "outputs": [ + { + "name": "obs", + "type": "tabular" + } + ], + "position": { + "left": 1970, + "top": 696 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_inspect/anndata_inspect/0.7.5+galaxy1", + "tool_shed_repository": { + "changeset_revision": "ee98d611afc6", + "name": "anndata_inspect", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__input_ext\": \"h5ad\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"input\": {\"__class__\": \"ConnectedValue\"}, \"inspect\": {\"info\": \"obs\", \"__current_case__\": 3}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "0.7.5+galaxy1", + "type": "tool", + "uuid": "b7441710-467c-495b-8af1-548a7909b237", + "when": null, + "workflow_outputs": [] + }, + "44": { + "annotation": "", + "content_id": "Paste1", + "errors": null, + "id": 44, + "input_connections": { + "input1": { + "id": 40, + "output_name": "out_file1" + }, + "input2": { + "id": 39, + "output_name": "out_file1" + } + }, + "inputs": [], + "label": null, + "name": "Paste", + "outputs": [ + { + "name": "out_file1", + "type": "input" + } + ], + "position": { + "left": 1970, + "top": 1138 + }, + "post_job_actions": {}, + "tool_id": "Paste1", + "tool_state": "{\"__input_ext\": \"tabular\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"delimiter\": \"T\", \"input1\": {\"__class__\": \"ConnectedValue\"}, \"input2\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "1.0.0", + "type": "tool", + "uuid": "ad850511-6ac9-477e-a9a9-ba2472e8de6f", + "when": null, + "workflow_outputs": [] + }, + "45": { + "annotation": "", + "content_id": "Paste1", + "errors": null, + "id": 45, + "input_connections": { + "input1": { + "id": 44, + "output_name": "out_file1" + }, + "input2": { + "id": 41, + "output_name": "out_file1" + } + }, + "inputs": [], + "label": null, + "name": "Paste", + "outputs": [ + { + "name": "out_file1", + "type": "input" + } + ], + "position": { + "left": 2250, + "top": 1006 + }, + "post_job_actions": {}, + "tool_id": "Paste1", + "tool_state": "{\"__input_ext\": \"tabular\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"delimiter\": \"T\", \"input1\": {\"__class__\": \"ConnectedValue\"}, \"input2\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "1.0.0", + "type": "tool", + "uuid": "020facda-ca7f-4dbf-8de1-00cad458e454", + "when": null, + "workflow_outputs": [] + }, + "46": { + "annotation": "", + "content_id": "Paste1", + "errors": null, + "id": 46, + "input_connections": { + "input1": { + "id": 45, + "output_name": "out_file1" + }, + "input2": { + "id": 42, + "output_name": "out_file1" + } + }, + "inputs": [], + "label": null, + "name": "Paste", + "outputs": [ + { + "name": "out_file1", + "type": "input" + } + ], + "position": { + "left": 2530, + "top": 979 + }, + "post_job_actions": {}, + "tool_id": "Paste1", + "tool_state": "{\"__input_ext\": \"tabular\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"delimiter\": \"T\", \"input1\": {\"__class__\": \"ConnectedValue\"}, \"input2\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "1.0.0", + "type": "tool", + "uuid": "95312b03-af63-44ee-999b-f08ee7d89eff", + "when": null, + "workflow_outputs": [] + }, + "47": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_manipulate/anndata_manipulate/0.7.5+galaxy1", + "errors": null, + "id": 47, + "input_connections": { + "input": { + "id": 30, + "output_name": "anndata" + }, + "manipulate|new_annot": { + "id": 46, + "output_name": "out_file1" + } + }, + "inputs": [], + "label": null, + "name": "Manipulate AnnData", + "outputs": [ + { + "name": "anndata", + "type": "h5ad" + } + ], + "position": { + "left": 2810, + "top": 1215 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_manipulate/anndata_manipulate/0.7.5+galaxy1", + "tool_shed_repository": { + "changeset_revision": "3d748954434b", + "name": "anndata_manipulate", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__input_ext\": \"h5ad\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"input\": {\"__class__\": \"ConnectedValue\"}, \"manipulate\": {\"function\": \"add_annotation\", \"__current_case__\": 6, \"var_obs\": \"obs\", \"new_annot\": {\"__class__\": \"ConnectedValue\"}}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "0.7.5+galaxy1", + "type": "tool", + "uuid": "bafffb92-883e-4954-bec0-55551545a625", + "when": null, + "workflow_outputs": [] + }, + "48": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/ebi-gxa/scanpy_filter_cells/scanpy_filter_cells/1.8.1+galaxy9", + "errors": null, + "id": 48, + "input_connections": { + "input_obj_file": { + "id": 47, + "output_name": "anndata" + } + }, + "inputs": [], + "label": null, + "name": "Scanpy FilterCells", + "outputs": [ + { + "name": "output_h5ad", + "type": "h5ad" + } + ], + "position": { + "left": 3090, + "top": 1220 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/ebi-gxa/scanpy_filter_cells/scanpy_filter_cells/1.8.1+galaxy9", + "tool_shed_repository": { + "changeset_revision": "e9283529cba1", + "name": "scanpy_filter_cells", + "owner": "ebi-gxa", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__input_ext\": \"input\", \"categories\": [], \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"export_mtx\": false, \"force_recalc\": false, \"gene_name\": \"_index\", \"input_format\": \"anndata\", \"input_obj_file\": {\"__class__\": \"ConnectedValue\"}, \"output_format\": \"anndata_h5ad\", \"parameters\": [{\"__index__\": 0, \"name\": \"n_genes\", \"min\": \"0.0\", \"max\": \"1000000000.0\"}], \"save_layer\": null, \"save_raw\": false, \"subsets\": [], \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "1.8.1+galaxy9", + "type": "tool", + "uuid": "2ae0ca16-f58b-4a3a-bdef-bf66a74b73c2", + "when": null, + "workflow_outputs": [] + }, + "49": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/ebi-gxa/anndata_ops/anndata_ops/1.8.1+galaxy0", + "errors": null, + "id": 49, + "input_connections": { + "input_obj_file": { + "id": 48, + "output_name": "output_h5ad" + } + }, + "inputs": [], + "label": null, + "name": "AnnData Operations", + "outputs": [ + { + "name": "output_h5ad", + "type": "h5ad" + } + ], + "position": { + "left": 3370, + "top": 1220 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/ebi-gxa/anndata_ops/anndata_ops/1.8.1+galaxy0", + "tool_shed_repository": { + "changeset_revision": "890fb06a2893", + "name": "anndata_ops", + "owner": "ebi-gxa", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__input_ext\": \"input\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"copy_adata_to_raw\": false, \"copy_e\": {\"default\": false, \"__current_case__\": 1}, \"copy_l\": {\"default\": false, \"__current_case__\": 1}, \"copy_o\": {\"default\": false, \"__current_case__\": 1}, \"copy_r\": {\"default\": false, \"__current_case__\": 1}, \"copy_u\": {\"default\": false, \"__current_case__\": 1}, \"copy_x\": {\"default\": false, \"__current_case__\": 1}, \"gene_flags\": [{\"__index__\": 0, \"startswith\": \"MT-\", \"flag\": \"mito\"}], \"gene_symbols_field\": \"index\", \"input_obj_file\": {\"__class__\": \"ConnectedValue\"}, \"modifications\": [], \"output_format\": \"anndata_h5ad\", \"sanitize_varm\": false, \"top_genes\": \"50\", \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "1.8.1+galaxy0", + "type": "tool", + "uuid": "c53d106a-f45b-477d-ab64-ad266c248411", + "when": null, + "workflow_outputs": [ + { + "label": "output_h5ad", + "output_name": "output_h5ad", + "uuid": "98fdc079-8b71-4841-a9aa-a3adda888616" + } + ] + }, + "50": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_inspect/anndata_inspect/0.7.5+galaxy1", + "errors": null, + "id": 50, + "input_connections": { + "input": { + "id": 49, + "output_name": "output_h5ad" + } + }, + "inputs": [], + "label": null, + "name": "Inspect AnnData", + "outputs": [ + { + "name": "obs", + "type": "tabular" + } + ], + "position": { + "left": 3650, + "top": 1252 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_inspect/anndata_inspect/0.7.5+galaxy1", + "tool_shed_repository": { + "changeset_revision": "ee98d611afc6", + "name": "anndata_inspect", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__input_ext\": \"h5ad\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"input\": {\"__class__\": \"ConnectedValue\"}, \"inspect\": {\"info\": \"obs\", \"__current_case__\": 3}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_version": "0.7.5+galaxy1", + "type": "tool", + "uuid": "60a81f95-32e1-47a7-8a95-07586eb9ed6a", + "when": null, + "workflow_outputs": [ + { + "label": "obs", + "output_name": "obs", + "uuid": "e4df8425-3c1e-439c-abe5-42b705eed1b3" + } + ] + } + }, + "tags": [ + "name:single-cell", + "name:data-management" + ], + "uuid": "74c3bf7e-a836-473b-926e-c6c0c70e1000", + "version": 2 +} \ No newline at end of file diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/workflows/index.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/workflows/index.md new file mode 100644 index 00000000000000..e092e0ae66ddd4 --- /dev/null +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/workflows/index.md @@ -0,0 +1,3 @@ +--- +layout: workflow-list +--- From 3f3c8fb646c21c1e69d7740a57cf82c434a1383d Mon Sep 17 00:00:00 2001 From: Morgan Howells Date: Tue, 12 Dec 2023 19:15:13 +0000 Subject: [PATCH 53/59] add more detail about finding metadata --- .../clinical_info_spreadsheet.png | Bin 0 -> 8276 bytes .../patient_samples_paper.png | Bin 0 -> 19748 bytes .../tutorials/scrna-ncbi-anndata/tutorial.md | 15 ++++++++++++--- 3 files changed, 12 insertions(+), 3 deletions(-) create mode 100644 topics/single-cell/images/scrna-ncbi-anndata/clinical_info_spreadsheet.png create mode 100644 topics/single-cell/images/scrna-ncbi-anndata/patient_samples_paper.png diff --git a/topics/single-cell/images/scrna-ncbi-anndata/clinical_info_spreadsheet.png b/topics/single-cell/images/scrna-ncbi-anndata/clinical_info_spreadsheet.png new file mode 100644 index 0000000000000000000000000000000000000000..076ff491a6cab77758b6dd8bded087b8c355836b GIT binary patch literal 8276 zcmbVx2T)Vr(F@IUzW;o`d2im#n>U%oPiV<(*Tg{ z;BZL|@+5=IplAXpbo!DGd;ubolR3~m4SEtoFtm6_YM7~HuK^#7J%oG-IJ4+9#6YgvsTLrOez{vKitiL zbo?kVjs993VJN0Tr%&@79oRa=UwHE?O5ENb6xI<` z^bbg9w|rv6-s44FS@-u3=CAwV=Hk(Y;-NAtQt7z@a#c=sTO(ol^yo0D_%X6u3Cmga zx!rj1ht=%M2lBrfo+|v=dvaW26#bUICJ~aCYmQfdb2aXN=9xI2r@w(LJgRI@TRj>9- zL6Mrbf$ylKj4cDJcm+PD9<1(f2FV(}S47qpd02Ha7wJ)}xB_P%p z=R3~wWbHgZr0AE`8~;Uf7zFcdf}hd%DHgiMQ0L&8Kf2RM*f(Io0ad_@94FKy7NkcUZ9|szy&9<$4|JzdWkD$$UC* zr8?f^H=d`@d5@}W@!cc)tP?h8^ilghn)f!h*>QElwdG?z`J3=^@Iv^Uit=z2IAVw3 z@51ea*Wv+Ype*bWaFf&XFvnih6ZdzTLZAKYX778x7y$y#;C2YRxxbE>XX&hmAg+D2Ql zniyV`rwGJ)vcik5E8TGocIhos6-9QxD(#c{g~%@v?poUr1tKFSLB04{J2Y6Ri5o#e26ESUEowOl0ghoyNHmTOcw5ppJrn-gMv@viPB zu=Zep_R90|_3O)zkqkd1wik4Gn+lX+z66^j>#vqX+$t_0x{3hQgGi6AnbwVTQnSD( zc~f_)v;B+`zErkT!^D%3(gKqP_WY_Aw08n(r^=+)c#oW$YrNM?Q@?C7pN&)MI>~K6 zxj00Ro2A}~Fuw^0eAX;R1FSQ;(Dr0cFBQJXzB+GvoA;>Zu;hw3y&J;=Pogas{u3?) zwa4UAU3xE^-tO`v)99}@8(u^D=Y90QeR4!I|8x4S$P!7kh{%qM%d(^A+LT-Ov{^S< z``YK7msah&YDWV*Wc#V%F@T~S%Zd)&_%erMm<5+{K2Pxe6Ts*T7j+|3`;X~>qdLFy z96h#WK?=L?y2}ddga<@dARp7|{j~ENdEMCT>eIS;Q%mfs><5GQzUY^7@o}`^?l(EO z-+wsURbu*9Tby}|JJ4-;JCYC{)egf?-9VEdTSHKd)`HSX_ep^e2s1iDLXi!)?#7HJ z(IbY7f^%yExai)Ek7DQuzqSwv2uZ>S;a5q~Br1CMS%~4$(v8k&+Zi2nT@z$ur7J7Hf)D0>Byscp|`hh5sSql7$csB1m(x zt+uR1nT7bH z$7k%Rfo)^LaRs-8w_^2!^$AN3UU%qy!DcP=wjm1BQY1B&(tCuCGMA-ytWh5Q=@m)V zT~pFUrF(x?&N;~7dS8ld-WDaH&WF^u!-bp1o(CM&OVcDhr7hXz$V>5*sG%3Qh4qO= z71b}d)sVkJMRh7Q{U(R+pS+Z>MjQ29Uyy*!bJ8UBb5^7j&cV`#_-b_c16f?M9OWDH zb>eJowEaKh{!nvdeGEgrA5#Al4w+>`{g_pfJhQzLnj&rmgT7m%GQ7ybV&vC3MBRC~ zkTHP~Uq|Dlat+|Ygq1X8K;Ing{q+oH?G2S8=s?%qUbIv-nSY@;eJXyidK@v&DI{+H2Pr z%vvW82F*nRSBSJ>-j*4HDm2sf2bF9i3L!S@xqN`vbxXxY`ZuYNfWJ}F9;y0qtK-xd zUdO_nA)C_5xZPpc=W?l97wt(JK>h$H#urn|Cf7Szq116VCx1xDJ$H=%ImZ2oB~KEB z)hrU_pTE+QL1-Bk6T45D;-vTTLY<0C_^E;G;s74{nuMylQ8%(dN`@h7e7r~*IQ>a9YNaymaRpzW{Oq*V1p{{C-)gPTU4n$IFN$}+p+deiFK zbDw+Po#eq;6t{fR%WweZsi(HACZ|BwUD{yt&;8k8AV zoK1-gh#63k`<1Hwjifb0_Sf3u{0eI1YE){Z;STz586?@dS0v6>8}_LY;I)P`?Zxcl z1&IPXVV~9Ek)SuPE8V&ZcUs}8(1|j>f)jGcJa_Ev+uQ6((N#3=aYbXv;2&uGi7?*3 zEus|#0O$i&EIlQ>!s}I5(S$^)zzz7$L7O@pR3P#aMqtl>SH9J{m!S)d?Jd9yNahIq zP^z%501A_MVj#mkTfsh0-|{fpR+V7JMH^E^{3vaYz8}=`AAgOhh%T_~r^Yh!+e_nZ z>7zWV9A2fh3p7-6AX4!RQ+M-k;YWxOXV`yYsZUgEuPg>{>s>>vZd%rbzN?x%$hg&RD~KKX+D@<Sy#BIG z6%@mJ!%s>pOT>KFw0C%_UT6kq-08A2V7S;>52VjGAH?>pJQQgt9s8K3TEpYE_U>_; zL)Z?qn&)Ma;C^u*!zTgM`CiXjM+S+5xR99h8999KD!RIEa$hS;d;#kr>-^MWz^2rC zt5f_aoiMZQr}|`XRengsq` z`!D}KU)YHxr&Lm3XYXiJDb1yw#tEa$pEKBOOvKYR)yuyx=1J)Y2(E7P)ek}K^)=8| z4OAUeNqNFhis*=8M$kuKPDA}@DM`cTn144hyR=%r;o<&|&HsxDPKOe-_@K)P zARm#@L1L^jlA0Ts%VyIY8g2&?2OwH-?Wb^InT(`!!<%?5D){a93BRa5j8=O#Vu&dc z3u95tp@`o@s7G`z8W!cVm2Rz=cS8dQk;AKXk+aNKI`unXl&xaESMg9%peVv8MOyXe z#1L!PoXIzQEVqn04LdE|EJDkTo%itlNWHY$b@u6_qCTlA*Jc!U){);=ZHV>uc-S2N zCx$`IJ)Q%~1CW=Hevn$1D1pVPb<(xKx+Bed8;4=P&B~=aO2}F<2!vqboQY+;OY&P8 zV9dg-v~^5b>(vv~0#(r{gN7SrC_*{}B@>F+8xp${lcm&T&F-DDVnUau z3M6t&u&Ngere5yel>nY{rL*gO7(%<5iB76Xh8*y7yd9{r?u8uz4}sstFle}M_@M36 z_I&tai1D$%61oBq*V*J0f%&V67?r4wjH!=PEBc?KY_%`9n?VWjH>??BW$&?w+wTza zza``2hs4sd-HxJG(j1fV^=~xsLQaGtc&c2G{RissTIbqX6IM7VaAOKq;gdI^v;UfZ zjYYj~JAX4l@^$^%ko3{SNo>vve+w)WFEB9twCx(gxm+6e__u(u@$Xl2CIZhWTQTL` z2HtqT!7MG^!w!}nix2h>+$lexavhDbJa)|AuxI zb08Vm0mB9xWFL|k=K3A&pABv4)nGHuT_TU-GB^#CBoOuA`FLeui7P4)kK-G8+3o1+ z`~kc&byIU1T=Qy5z27%P!^afJpsiL?^_NLm;0hi~wIJjhRAy(m&oQd^MM*(QS|o@Y zQ6Fc)0N=W>C|F(Hm#gNFO5vn$gOrD-yq+_eET$nrQZ2VRK@p7(FJsw_{o*rkP{6rH z5P1_D%y3)t<6n(?ud{jbHx7>Uz69hriBp#P-kS=zsE?aEy*Q+U!-6027);K(2{N=| zgpqm63`}>wEQVvs(CIjIs;R}{;Nt^HP4hBw#<{Caf32;#64kGBAktI~=q6rU7zgy3 zr;!6yZtXN!D!|SlJIG=2?pG=K-EhtFSd>y@NeL9AIv#&|WaY1+r{!L@SHs6VE$T}E zf3;&~$gCZlGmdu3m8z=m4aP|7Jw?vYnt$!3p4@W{qKN2RIgWzFP{@=EC^&r4B!aUH z*Ur+9Sg#jkNChFOsLX1xI15N|m{YPEfOq}j02gJN~gVpnOsZ_;^r0n=v&*#|A8nv{;u)b-)aMymVGB?D%e{r+h)3o$o~3u6kW90Bn6yUjr(_an==tBA?kC-(Jvl6wO8 zJ@B!sSL0GcN4R7EyfIGg4cRa3Ougw+cqqwupUPBEz}zqxc?EvL$VTth@i}imP5RoC zF!C1My9P$uj*)LL)i$jcfKtj~97-07;7W9N6pdKcML+%g=S@FcKeabX2yPlciJ!U( zSMPo|zk@i#Pc_fI$?N!3s}aItIK=b(;pJ|I$@W}-7Hbj0X}vm#*zT)K2>hzDd*vrn zW#ZQtfBl)JFsGpk?llK7V4dU7|L&`@KdQUgPg8g{jvZ6tZY&!c&zc6lbY+Fx?3jVZ zurSfY;H%)=M7%Vg0%;**+Pk6B9>s46iuE_FB9uFY1q zpZRf-&}?s2!Wlv1@>qVO^?m=t?6;bcHFwHZHBR}x*;>U;WUU4H0QCme(gy(=`+p0p zpl%z3pY<#vzJ#Lqq1NW{$W!AX7I?fSB7qXim?p$B4yiohpzit1P6vN-rE_E1)ge_z zt;&H9DDwC9iFkC!?EaoMHRtPNnDC*UqW6ti%}<5+>;mE?{|`Mx7`1m2Q(b>BmXc;a zsF9mC)5BLtI%k$cP>%TQrSFprwsNxV3}-!M#~EvhwKF`Ef-e}5_NF1!ZzfOkIM}Zf z?O_%LWM{i>;>m{~^)^T~S~kzOa(n<$HL%xewl(olx&Ydr&jU2b8J#-6dr)*&u_2o0 zc+u6*EJ(XhyOPSj-W?7zcJ691U>DY5)eG?X*x=lhk8oBcE2DrzYsU}ZeSziMq;ST+ ztqESQ<^;Svh)*h=BCm0jx=n9OU|g?Xp15l{F$SfKg7^>RrmRAIXW+4r_3z#DR%ZNBSf>f`dBA^_!{Rv@#Mma!4wi zEe;&!pTWW)zgFkeN0c8k)R}RW_TZbod~9;*tZWw`^Iecx`duXU-|LE^P$LP?`WV~C zQ+bbqw>nCb&C4Z@Zw;$8#~){`4+sA&pU*=*$L@}(Ng@$56Qe&TKT$J(SIb(ev>`jp zcW!9SaM4x1eWv_)TatZAUl8g(=q=a8-WhCPg0K~goMS$l0o}GKeMm72a>%hlxwpK%)Bacwe8*v=K_$@rtH^5DmEFPkmrABibvZV4>Vzv$T__iFz2&48j zI}tDmI$;~cj8B|U$D$TP5gVRS9k_QmoK{-9@a6Ye`?RCt935=G)PGY>_t3lLE-;1q z`2zE;?3@R)wl^D1%`Dr7?b^!}-FnU?2>=WuU5T0n3|6Dg=Ded41^b(xFXR%X!~Z22 zrr}ZIy^E@{Xm&HgObxXyZ8wb^9LK)>@Kf~DEL30SOAKXeXwW7r1Xc%$wV z7rSWY#2O{jZTjlceSPj-jw2i{tvy5?Aii(7;!(}>!;D znd{p>!CH+WWEZsxe-oFoYEv9Q80tSLIonh-P8YQ4_L1{y`2*ve^jcS>w@f}CqgyM) zTF|0?V7=&-8GO3h&L;vE^jogxPd+YO`raIG?oVw#dE=?SYS_lzEBGlf;9C_~&Be`- zqXe=fFR8A8R8L=|ivPWa@}R*6tfBmp zKua2HIiPdDw+EKuju| zpPeV~RW;S!`?L)0>*?7HSZAhCUV~oZpG|dXZggbrvd&A+D~L%rR}btq&{vz5H~=O! z%94fS6#o0_O={`1^Ea&Ikg*(7Yk0coi~>%NJ23*{fzDkDsNevk`rTtyslRdkUROHr zNpnwU&b^t1Ph^hNu_JXT`(shJ^Y74wYLEB9Ix@;Fg^=D(Q3-4BT_PZ2-;kvG^V8!z z+jhPcF9XI;kjv^1N~Ss;o!`&B**>4W(y3J$w<(V#S@W;(v++67UXMC3kl3jfh za41cOII?>JXBy=PJ7y&g4zFyfS%XBsaI037mG#xdpVNK65t#D%_7{#HdtdA0If_MF zB|fk()!M7lxCkOwVX;4&S&`jZl5&+j!yYbvFnI0Hb%b-)+?(&M{!c>@G)YuZlguCT z?`cww?>en2f3D0w&6p9Gbka%>-Y|}3`ND6H80_NNDt+; zHQgVH+}hN0e*grslDGRpN7};TlY_cZ zN3T1y44j}jr2fy6gT(Qrhf(zru>NN)VnwqMC(7hpm#bp)F%IXpnu#Ds52S`=x z4d~cLDdIo{pl9t}^fEC>6y3MzG#mVsZ>&wGmAAiGgXHv#22Dca`^hSA-0p8pt1FV? zMfaBWT2EsiyLY)&SltVO2s22TfvY@hg`mVc+kzFUHZi;;i2bIirNp0T-VPz9jb~NW z58WRvFMxMA=9nAe8*g?7+R0s~b>%EJ#goPBI-gPKan5WVxbeMKXYl~={+2$+-wYCM z=2rBW$=pNqrjdIRQ7G7Z$wl0lDfG@DS$Xdg4cR{XarP+MFXc{5#O!o4jCIv`9dhP-bZc4{VD560Aa@2 z_a$0M)5~fk38E(uubtw3c|px{2M?VLXo;C5`9dqXQb1{VVH%EnCFzi7d7IdQUDx5j&)KHxx^ZoWoPDLy*bH+n zr4*@WL57~R!(txezaCfyfrl!jhcmVl2ROFCZUGJyiKa0nXV((DOR^?x^IqfPHRqG_ zjiU%Mp}mVW8>7d+eIszuzQ&G4;3AHBtanWZGm+NaW9$#NlB~Tnv^2xq`JM zA3!!RIh0e?d-eZUM$j3nd!CsYc!Mp@+F90aIoqxUH$EzpI%lGIY+!FKD2q%`m(Eae zYE1ED$+ly6vLOuhX@Qwv21=DtV4%kQ$vaIH;8XVnRN56OsHsjSc-9|NtdGzT1Gsh= z7!3x41qGu2BG_3LVS7h6#N!!klVk6ab0(dHx*Li(9oj}S+#N2Y!38YyHZqN^f(}}5 zLWtG<>gtl6d3p$6)=t8}UC|6Dq1{zj$aYF09 z5AOh}Lp;4^PB!A1{UNBM%eqAd)B4tyhY>PD(<|Ne5!cR-4d49Vj-}FdPuSEV2) za7a8GAt3ebviRY%lAP8qM3KDWw6EWY@UOtHCAbTN7B2G_rSFmoe9JX)Fp6~?__?hou#BBA>|)A4{!*Cc(ir0b zQ77#B@3OQeEX{AkOabQ0JaC1)v8u7SKF_K`$1{Xew`Yl_JH z(EmNH0NWG)(;ESOG1wXb1^lZu5(-lMA5E11BK&s`1=;!k;@;7ao%IVseS`a7LTGCl Rz0py9IZ5Z3$Y6ySuwn+~xBA{`dRVy?3p1 zlFUlBJ^R^nc4j70Q9%j`9uFP@0s=`!T3i_d0t)!~dHdU!&)0w6kcppf&_6}wMIay= z;t^hrU_Qr?&dO4v5VaEo$Dac@2Wc&52naNn|8B?)b7GHA6>o}isuCX`A1|Nx_25Cx zPYCkpvCqN7#>aWa$H(nhwD8Br`=|8B$14P+aP-*C`{yq|9%~O@qRAmXUdACHNN+zr zARvDp{-@>i<9+AjvE@@pJeTvgcZ>R+u5{n=qkA_s7L%~D zf$KL&Qswa=YWN=o|4uKQLL>6^86~n7q78VwWJz8RJ8>Z>$ELQg-|xnc({FcXF>PDE z@fg1@=kQo$WLK7UZe1C>6+*z#<=b-=#l&eN(ATWqiu?=`rE!KL4f^=kQ5foQx-uLU zUBB4dd{7_=fh-#n9kIASiW#} z({JoR_@#I#zP`5lWTpuMLMaO5qe%uA!if@@-!}*P0YxShsZKk6wa#zsQkG#e))$xI zEGu1qW%9!s!PEy@iadU&5}b79jdcrCb*!T6=WR%ts*HZXBWSE&OcsVIpFd1TglUjNve{Qf*R~E2LW;zJ`(`(j zQ2FKNc3Nkju4P4NjW8v|5wy7?e4RZNHiyFhZi8SXg99Xt5*1baDyGBbLxYJSG-On| z8?DPG4@GGuYYxt0I2CMj`>klBaTsjpARuJwWyD2PJyyzc`e2Wg ze-pIlSPvt^u(UcS#OU9{%kCuW$j+y$cwOh$-EI@R($wbuHi@Mv`f>Z{a)KKB@qVM2 zP1VIo)fp#GSADll?Ibr3x1OIkQ2qr?SHh+Ui+St7ST!ItL~mv*09TJ2yKLvX$BoMe6UM5&dxvzhd=-W74v*hJjNMaJZ<*Vd(aF92 zKlW25Xgq9?MnYlL%UN|D{E}CDVSY^OR;pm{qcIk}YQ)Ld zt-aOsqiZ0KTKn}v_OKhr~}^K=b_1l?k&ifmUtaj7+5k*{89ASUtmEQ zq8ttw93CD|09v5)x^2tGeoyFhaV{3nV#;}b_-mu+UqHElw2#&mg0Htwz&H^F{JO=C zE9k@mpnlp@rXD?3!6Jfn9(E!+^Jnco&tUBC3u-L32DW#^tYQD*akUZfc|pr*ySzyj zP2r{ir|8n@MV#gnFc5_(xVz800w?;iOn$be&0fmA4S4=~Ep&o2gY!(7DTmaDF5oAn zKc^Nn7Dr~0f`iO#L1{KmoFT}r=BhHI2+HI?Ry{A}o!v~3De+E8qf$5vx5@o++yThEF*fxSRh7qk$t=`wO*XaA{pfrOij0Z*kIF{2Frc?puq3WFG)ESZ}MOUH4pf$M(^ySMpuapC}^2_ zo1I3?4@#-*^WX%cjwsv+%z%YGa~aW|K9 z9#I%e%m7jg&KAqid-ufztww2M$Vnl;ws$QPh)~z$ShD~weeqrRD{huMfChtXv2NeR zb-E3-!n(8+Y3LJbLarp@{ejH7C`1O>3<2egE_C~n(Q}o>RPV%ZNu$jh%Nab%i@-;Z zdIq1fnZ{Wi6SUgL=ej8_1>Ox6htphyXafd@93>yAM-2whUzi7SL(ARXs@|6SA^4*# z+NNIDT2CX+XWsR%5_}3;9s3uT^`aR-!hdkcd6za?BFJ_w<=U=HlO?F*AJ@ypjK9tE zP>I3T_901gt>FYf#WoBfHEuik$JVGubo=I)6uoBx+0?6#w>$kz;88U7zM0;tBwcTd z`Y^o3X~co+$+biRVdtw{-@>qNC5_nTpWahSBh?x@r;0+GUD`uawqt31CLSJW{l5nA zB=n{(@K!F&V_lY!zvLzhs&E_8DJAv9`Sse+RR6Sl0CtE9G&m1`)Ji9&J`|3;W|3|*5HsX z6=CPd7Nx2vUC~XtyjDDC&t<3L+Rm)k6+)KXxw=a(xgn+ULLU9L{C}#2^uJ*R!K&6d z%7ObckvEgVmYfhu-OM1mkttS71zhGzbxbfjOwQH-qqqU`L>jqkCx&3Hg?rEK^?}}M z8{%57tI71m7D)1?h0huN$LSGkXxbZ zAx%5^AyaNTwqGiP1PRtne-T9X_p89?xh&ZwS>CA%8<09E5v_z}dg13)x?$Z3Sjis8 zFlnpPl2(;i{UQkL|9;nUW`om6$+ny#Pg(CpU*XuAqDbeb(Y~tE2u`%hNOE6Fahx#P zcVjCa>K(CB;{P11k#TO z7NbDU8vVoFrX_PJD`03E*;dKgrL_Wsoi~_=tg5B>XX^r9P!awGHJCy0sD&2yd~J2~ z(nPdVoS3D5mQeuAAmMwols%uYX;NY_p#k%aoDsE05M@%AN`77M{(X0N%*(xD*`$_| zzc*3bD!co6&N-Okex+%oD{}U|)a|A65&xBmh`XgH#O>*LLnip=okEga_rGkLZm_K7 zj}N2p+FZTYS0TNsUF5q2f`KoD8-!-MUGqW%3BbgWZX5w8zISr9nk!8%dq5~%*&#c@ zsbpW@fxBi(Pw&i}i3Na?*?I*N=F|L?6Mh-YNJ+=zn!gV^^&7{8KU3FM^}~*}0fNKC zUFoG9`*O)gRn8-WVseBx<=Vdrw47kmPFVn6mSL)a-yn%gbj54k+vUfPhvA7GgZpJ@sgRk(;XcHCDc|JbfF)#ItPN@wO1TDe7V5LPZ0Wn#ny0T z^dr1T*+7-}C#txY=t)9nJ)(DPWLECUe&J)B+w-Kg&Bw9bl<1S`c!1YY)@9MU1xUZY z_VMlNcB9DuxD}Q|Gyn=MC{Fd+cT{3exwujNyjTjiTUQy6-X0Nb3R2kw&InwxPk@@f z8CVaNU;t?y7>7r)T=3XI*A9S0Y^D!a)F*5Uhuq|~R*teJ4a-=%qKcA67^ zk<+21$i@8h_|3W7kcFeIJB(+eKuYv|tszT~W%(Puj`LCw{FR?3%)i&eROHwFnjc}D z-ep{MA&gRW8_W;~hJt8$bsxRI2Z`)4eLeVXAC*auijLu^3(g+jk98Dq_a!rPLjAr# z@`Z`#I@NVpFg#BOKWS_Rt)ZV!p>T3wgT<{I7n@l)hBxZrNkE$M3ZNdn&FlbJ>GVBsRKUq6Xuf$T=DWA4{Gj&B}UzH+@u-8Bp z(!d+I2D8fNY}B)NX_@N&FKsd`@`%Xly@p>DJN(BQmMSS9vA5U#bN}I(mOu?xl`8vB z*P_nf{x7t1Brea{>kG9W)vs~K7p+LrM^7tA)Ovj8yrZGgFTepw`-=_mJ4>&WU4}rH z-QG3A51)hV&fh|u$JMiZ90W0bswNISZ}v4d@5ZF|TzldAVs*Ja&J`gGrUTNu1#^2o z*QE(+3E)0&mkIBq+Q|tKY@}VqVx0~y*Xu#+fAp<(R=>Y5%IAPx@LwD@Jk@*d=$RP2 z{a06BqPm|?>Z0}E7YhfTMzI^7e**ly=hxQl?K*!xa$bAA1eKm*#dtDJ#D5tD3C=m+ zx-QvdbELpZ#5=A;WcHmKW4YQ6Z%re2U%yO@t%n7-bNX8EPrTUUJqa(SF@P+}$}q{J z-F*mt0$7PLG_DWckI&Cj*}6#IYR(t7&v~%jJiO<3o8xA_cY2y_N{#>9RIokVpTA^K z7fUr;=WBNZ0pp}-r&(8O`=5m3DwlnaH^X1Swl+ifv+IReEmlRdsk84-8Doemg8p@i3lFTF+G= zYxB6issP1Z6ig0R9qqT|tra$dCmqGG8fAzbWjcp)1{a*IjMX7Szt?4JwPQX`(M&p4 zQ}HJ|Cg(^$*Tb`d`s~W6Y{Nk%CV~@LFD|c@L8sTH6F&aSSvxm!3M8>V@O|}OD|fi2 z&2I5G^F6iLd>AW!xB(s)t*@$1IwbWcbHZ1CnfF}#+EfkM#!zLX)LYDMi zf3za3=0sbw=lYz0U+1)Xz4v$7+h6*;B-#xaD9Uym5q=Qhj}EGGd9m%-yIxVaR(9Ni zpKt8iuRq>bH5itzc1m~o**#0x;-d548sS$XS9iW()upi689huiyjqToFmQqwqKNYl z7+>aJc{Fz}&rY*A2|btu?s?7|DC}*n8|rp-qg>IGFW5U04$)8rtJShv_%6kPuASmm zLAq#EALBFOswiLzx5Z>|h_Qedx^~JA_W`4YppQ;&63~-r^NJ`Z6f`L*6*rK4%0PCf z)jGZX*;$ObcQkt5{00(#J*8BA;+RX}@{z~E5NMPfgP{aX4VAQepyR^ecVq$?9RNlT z8Q>}m4gId&Hhz16qq`B`HEh=HFy&!KvIFAeg$8eFO{zCl8wc}FP5KMb*gs9?%j9lkg@%3Uzbrl!wL&i_Y#rUMWi7nBvy(DTM!09* zXG?xyu3++QzM=MPa*%#Goa-xq-~Twl%?1|ua2_{QeRzzBX#=L+_LyOuBIiTEeex63 z$Gvnzx;yRhhhX;a#OVNr-a#UQxe7Ke!1dnDpbZwhgKYMKD{94$GPD{%+cZI>!TcS^ z8*lBEB?U-a%t-N88o$2+q18xym~z{$Ue{RAqBcRm3vk6-Pw4x_DN(3zkP&PgV{1NCdJ#%FfjZ`>@D7iy!Kj${-hJ!9)uTqa*uQ*@&Y?)u%�>6{ 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 literal 0 HcmV?d00001 diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md index 34794385837954..b824bc9a320fb1 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -102,13 +102,22 @@ The first step is the obtain the data. For this tutorial, we will use data from We now have the raw gene expression data that we will process. However, we will need to manually add some metadata, which requires finding out some more information about our files. + + > Finding the metadata > -> 1. Follow the link for the paper ([https://pubmed.ncbi.nlm.nih.gov/35013146/](https://pubmed.ncbi.nlm.nih.gov/35013146/)), where you can see a link for accessing the full text. +> 1. Follow the link for the paper ([https://pubmed.ncbi.nlm.nih.gov/35013146/](https://pubmed.ncbi.nlm.nih.gov/35013146/)), where you can see a link for accessing the full text. Accessing the full text takes us the following page [https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8748675/](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8748675/) +> +> 2. Downloading the paper and looking under **Methods** we can see that there are 2 biopsy samples for patients 1-3. For this tutorial we will be processing the first 3 patient's data, therefore we will need to find more information about the biopsy samples. +> ![Snippet of paper about patient biopsies](../../images/scrna-ncbi-anndata/patient_samples_paper.png "Snippet of paper about patient biopsies") +> +> 3. On the NCBI page containing the paper we can scroll down to see a **Supplementary Materials** section. Under this section we should see various `.xlsx` files (Excel spreadsheets). These will contain metadata about the work done in the paper. +> +> 4. Looking through each file we can eventually find the spreadsheet ```41467_2021_27322_MOESM2_ESM.xlsx``` which contains information about each patient including the biopsy sample IDs and tumor specimens. So we will want to download this in order to extract out the required information! > -> 1. Select that link to access the full text ([https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8748675/](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8748675/)) which contains more supplementary materials. Under this section we should see various `.xlsx` files (Excel spreadsheets). +> ![Snippet of clinical info](../../images/scrna-ncbi-anndata/clinical_info_spreadsheet.png "Snippet of clinical info") > -> 3. Download Supplementary Dataset 1 (```41467_2021_27322_MOESM2_ESM.xlsx```). +> 5. Download Supplementary Dataset 1 (```41467_2021_27322_MOESM2_ESM.xlsx```). > {: .hands_on} From e59c559c00585c270580059bfdb7885ae4d05ef6 Mon Sep 17 00:00:00 2001 From: Morgan Howells Date: Tue, 12 Dec 2023 19:23:20 +0000 Subject: [PATCH 54/59] add details about replicate files --- .../scrna-ncbi-anndata/replicates_paper.png | Bin 0 -> 13673 bytes .../tutorials/scrna-ncbi-anndata/tutorial.md | 5 +++++ 2 files changed, 5 insertions(+) create mode 100644 topics/single-cell/images/scrna-ncbi-anndata/replicates_paper.png diff --git a/topics/single-cell/images/scrna-ncbi-anndata/replicates_paper.png b/topics/single-cell/images/scrna-ncbi-anndata/replicates_paper.png new file mode 100644 index 0000000000000000000000000000000000000000..400a79f755b735d3a66a0cad9ca2fe20e12645d6 GIT binary patch literal 13673 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 z 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 wsz5E_XL11=yYY)I>m>dEZM$&0+5 We now need to find the files relating to each patient. Selecting the output {% icon param-file %} **Unzip** tool shows you 53 files in a {% icon param-collection %} dataset collection. We will work with the 10 files associated with our target patients. From 12536a63936dd824c9864f806be7cccca2bf34a3 Mon Sep 17 00:00:00 2001 From: Morgan Howells Date: Tue, 12 Dec 2023 19:49:00 +0000 Subject: [PATCH 55/59] fix typos --- topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md index 277b48d40ebf4b..7d1df2b57d9888 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -205,7 +205,7 @@ We now need to find the files relating to each patient. Selecting the output {% # Creating the AnnData object -The next step is to convert all of the raw files into AnnData objects, this can be done one at a time or all at once by selecting ```multiple datasets``` when chosing the input and highlighting all the raw data files. +The next step is to convert all of the raw files into AnnData objects, this can be done one at a time or all at once by selecting ```multiple datasets``` when choosing the input and highlighting all the raw data files. > Tag your datasets > Before starting to process the data, it is generally a good idea to add tags to each sample in order to keep track of what data is being processed. Below is some of the imported data with added tags for the patient and sample id. We suggest you replicate this in your history. @@ -493,7 +493,7 @@ With the metadata table ready, we can add it to our original combined object! > {: .hands_on} -{% icon congratulations %} Congratulations! You have successfully interpreted the milieu of files in a published dataset, transformed the data into a usable format, and added all the relevant annotations to the AnnData object! All thats left to do is to add some quality control metrics using automated tools! +{% icon congratulations %} Congratulations! You have successfully interpreted the milieu of files in a published dataset, transformed the data into a usable format, and added all the relevant annotations to the AnnData object! All that's left to do is to add some quality control metrics using automated tools! # Adding quality control metrics From d482a1390ab71c4acec9313430e9323d35661ec4 Mon Sep 17 00:00:00 2001 From: Morgan <58524460+hexhowells@users.noreply.github.com> Date: Wed, 13 Dec 2023 10:19:00 +0000 Subject: [PATCH 56/59] Update topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md Co-authored-by: Pavankumar Videm --- topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md | 1 - 1 file changed, 1 deletion(-) diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md index 7d1df2b57d9888..d2c1b3864e9c7c 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -212,7 +212,6 @@ The next step is to convert all of the raw files into AnnData objects, this can > > ![Imported data with tags](../../images/scrna-ncbi-anndata/metadata.png "Imported data with tags") > -> {% snippet faqs/galaxy/datasets_add_tag.md %} > {: .tip} From a5579e715fdaf323a15efa8126e2af1a81f2fc9a Mon Sep 17 00:00:00 2001 From: Morgan <58524460+hexhowells@users.noreply.github.com> Date: Wed, 13 Dec 2023 10:19:15 +0000 Subject: [PATCH 57/59] Fix linting error Co-authored-by: Pavankumar Videm --- topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md index d2c1b3864e9c7c..ee7e8e9623b9e8 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -214,7 +214,7 @@ The next step is to convert all of the raw files into AnnData objects, this can > > {: .tip} - +{% snippet faqs/galaxy/datasets_add_tag.md %} > Convert raw data to AnnData > > 1. {% tool [Import AnnData and loom](toolshed.g2.bx.psu.edu/repos/iuc/anndata_import/anndata_import/0.7.5+galaxy1) %} with the following parameters: From 5503254f3b981f79a46ba83ca14a882d772380e4 Mon Sep 17 00:00:00 2001 From: Pavankumar Videm Date: Wed, 13 Dec 2023 19:14:03 +0100 Subject: [PATCH 58/59] Update to a working worflow and change test files type to tabular --- .../workflows/NCBI_to_Anndata-test.yml | 20 +- .../workflows/NCBI_to_Anndata.ga | 563 ++++++++---------- 2 files changed, 249 insertions(+), 334 deletions(-) diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/workflows/NCBI_to_Anndata-test.yml b/topics/single-cell/tutorials/scrna-ncbi-anndata/workflows/NCBI_to_Anndata-test.yml index 39a366bc775184..cffb8991ab09e3 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/workflows/NCBI_to_Anndata-test.yml +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/workflows/NCBI_to_Anndata-test.yml @@ -3,43 +3,43 @@ GSM5353214_PA_AUG_PB_1A_S1_dge.txt: class: File location: https://zenodo.org/record/10101768/files/GSM5353214_PA_AUG_PB_1A_S1_dge.txt - filetype: txt + filetype: tabular GSM5353215_PA_AUG_PB_1B_S2_dge.txt: class: File location: https://zenodo.org/record/10101768/files/GSM5353215_PA_AUG_PB_1B_S2_dge.txt - filetype: txt + filetype: tabular GSM5353216_PA_PB1A_Pool_1_3_S50_L002_dge.txt: class: File location: https://zenodo.org/record/10101768/files/GSM5353216_PA_PB1A_Pool_1_3_S50_L002_dge.txt - filetype: txt + filetype: tabular GSM5353217_PA_PB1A_Pool_2_S107_L004_dge.txt: class: File location: https://zenodo.org/record/10101768/files/GSM5353217_PA_PB1A_Pool_2_S107_L004_dge.txt - filetype: txt + filetype: tabular GSM5353218_PA_PB1B_Pool_1_2_S74_L003_dge.txt: class: File location: https://zenodo.org/record/10101768/files/GSM5353218_PA_PB1B_Pool_1_2_S74_L003_dge.txt - filetype: txt + filetype: tabular GSM5353219_PA_PB1B_Pool_2_S24_L001_dge.txt: class: File location: https://zenodo.org/record/10101768/files/GSM5353219_PA_PB1B_Pool_2_S24_L001_dge.txt - filetype: txt + filetype: tabular GSM5353220_PA_PB1B_Pool_3_S51_L002_dge.txt: class: File location: https://zenodo.org/record/10101768/files/GSM5353220_PA_PB1B_Pool_3_S51_L002_dge.txt - filetype: txt + filetype: tabular GSM5353221_PA_PB2A_Pool_1_3_S25_L001_dge.txt: class: File location: https://zenodo.org/record/10101768/files/GSM5353221_PA_PB2A_Pool_1_3_S25_L001_dge.txt - filetype: txt + filetype: tabular GSM5353222_PA_PB2B_Pool_1_3_S52_L002_dge.txt: class: File location: https://zenodo.org/record/10101768/files/GSM5353222_PA_PB2B_Pool_1_3_S52_L002_dge.txt - filetype: txt + filetype: tabular GSM5353223_PA_PB2B_Pool_2_S26_L001_dge.txt: class: File location: https://zenodo.org/record/10101768/files/GSM5353223_PA_PB2B_Pool_2_S26_L001_dge.txt - filetype: txt + filetype: tabular outputs: obs: asserts: diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/workflows/NCBI_to_Anndata.ga b/topics/single-cell/tutorials/scrna-ncbi-anndata/workflows/NCBI_to_Anndata.ga index be9f9fd060c627..44b91122375eaf 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/workflows/NCBI_to_Anndata.ga +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/workflows/NCBI_to_Anndata.ga @@ -6,6 +6,11 @@ "class": "Person", "identifier": "0009-0008-9422-6380", "name": "Morgan Howells" + }, + { + "class": "Person", + "identifier": "0000-0002-5192-126X", + "name": "Pavankumar Videm" } ], "format-version": "0.1", @@ -21,10 +26,10 @@ "inputs": [ { "description": "", - "name": "GSM5353216_PA_PB1A_Pool_1_3_S50_L002_dge.txt" + "name": "GSM5353219_PA_PB1B_Pool_2_S24_L001_dge.txt" } ], - "label": "GSM5353216_PA_PB1A_Pool_1_3_S50_L002_dge.txt", + "label": "GSM5353219_PA_PB1B_Pool_2_S24_L001_dge.txt", "name": "Input dataset", "outputs": [], "position": { @@ -35,7 +40,7 @@ "tool_state": "{\"optional\": false, \"tag\": null}", "tool_version": null, "type": "data_input", - "uuid": "473c66ce-eb30-483e-bf74-a04f0b452f67", + "uuid": "fc2d53ef-3b4c-437b-bec7-e7b84f8f6c54", "when": null, "workflow_outputs": [] }, @@ -48,10 +53,10 @@ "inputs": [ { "description": "", - "name": "GSM5353221_PA_PB2A_Pool_1_3_S25_L001_dge.txt" + "name": "GSM5353223_PA_PB2B_Pool_2_S26_L001_dge.txt" } ], - "label": "GSM5353221_PA_PB2A_Pool_1_3_S25_L001_dge.txt", + "label": "GSM5353223_PA_PB2B_Pool_2_S26_L001_dge.txt", "name": "Input dataset", "outputs": [], "position": { @@ -62,7 +67,7 @@ "tool_state": "{\"optional\": false, \"tag\": null}", "tool_version": null, "type": "data_input", - "uuid": "6b5fc504-7162-4cbb-90a4-97b3fc4f792b", + "uuid": "7e556424-a80d-4114-be2e-7c9ced71f048", "when": null, "workflow_outputs": [] }, @@ -75,10 +80,10 @@ "inputs": [ { "description": "", - "name": "GSM5353223_PA_PB2B_Pool_2_S26_L001_dge.txt" + "name": "GSM5353218_PA_PB1B_Pool_1_2_S74_L003_dge.txt" } ], - "label": "GSM5353223_PA_PB2B_Pool_2_S26_L001_dge.txt", + "label": "GSM5353218_PA_PB1B_Pool_1_2_S74_L003_dge.txt", "name": "Input dataset", "outputs": [], "position": { @@ -89,7 +94,7 @@ "tool_state": "{\"optional\": false, \"tag\": null}", "tool_version": null, "type": "data_input", - "uuid": "7e556424-a80d-4114-be2e-7c9ced71f048", + "uuid": "ea1f8502-ed3c-45ac-bf09-36a1771dec28", "when": null, "workflow_outputs": [] }, @@ -102,10 +107,10 @@ "inputs": [ { "description": "", - "name": "GSM5353215_PA_AUG_PB_1B_S2_dge.txt" + "name": "GSM5353216_PA_PB1A_Pool_1_3_S50_L002_dge.txt" } ], - "label": "GSM5353215_PA_AUG_PB_1B_S2_dge.txt", + "label": "GSM5353216_PA_PB1A_Pool_1_3_S50_L002_dge.txt", "name": "Input dataset", "outputs": [], "position": { @@ -116,7 +121,7 @@ "tool_state": "{\"optional\": false, \"tag\": null}", "tool_version": null, "type": "data_input", - "uuid": "99d79b05-7b7a-4986-93e6-6957c34afdca", + "uuid": "473c66ce-eb30-483e-bf74-a04f0b452f67", "when": null, "workflow_outputs": [] }, @@ -129,10 +134,10 @@ "inputs": [ { "description": "", - "name": "GSM5353218_PA_PB1B_Pool_1_2_S74_L003_dge.txt" + "name": "GSM5353221_PA_PB2A_Pool_1_3_S25_L001_dge.txt" } ], - "label": "GSM5353218_PA_PB1B_Pool_1_2_S74_L003_dge.txt", + "label": "GSM5353221_PA_PB2A_Pool_1_3_S25_L001_dge.txt", "name": "Input dataset", "outputs": [], "position": { @@ -143,7 +148,7 @@ "tool_state": "{\"optional\": false, \"tag\": null}", "tool_version": null, "type": "data_input", - "uuid": "ea1f8502-ed3c-45ac-bf09-36a1771dec28", + "uuid": "6b5fc504-7162-4cbb-90a4-97b3fc4f792b", "when": null, "workflow_outputs": [] }, @@ -156,10 +161,10 @@ "inputs": [ { "description": "", - "name": "GSM5353220_PA_PB1B_Pool_3_S51_L002_dge.txt" + "name": "GSM5353215_PA_AUG_PB_1B_S2_dge.txt" } ], - "label": "GSM5353220_PA_PB1B_Pool_3_S51_L002_dge.txt", + "label": "GSM5353215_PA_AUG_PB_1B_S2_dge.txt", "name": "Input dataset", "outputs": [], "position": { @@ -170,7 +175,7 @@ "tool_state": "{\"optional\": false, \"tag\": null}", "tool_version": null, "type": "data_input", - "uuid": "9fce1b9d-52e4-40e5-9c3c-32c1d901aeb1", + "uuid": "99d79b05-7b7a-4986-93e6-6957c34afdca", "when": null, "workflow_outputs": [] }, @@ -183,10 +188,10 @@ "inputs": [ { "description": "", - "name": "GSM5353217_PA_PB1A_Pool_2_S107_L004_dge.txt" + "name": "GSM5353222_PA_PB2B_Pool_1_3_S52_L002_dge.txt" } ], - "label": "GSM5353217_PA_PB1A_Pool_2_S107_L004_dge.txt", + "label": "GSM5353222_PA_PB2B_Pool_1_3_S52_L002_dge.txt", "name": "Input dataset", "outputs": [], "position": { @@ -197,7 +202,7 @@ "tool_state": "{\"optional\": false, \"tag\": null}", "tool_version": null, "type": "data_input", - "uuid": "2222b107-d0bc-4daf-bee0-d8573375ff43", + "uuid": "3f690013-56d0-4046-a64f-42ddd71ceb81", "when": null, "workflow_outputs": [] }, @@ -210,10 +215,10 @@ "inputs": [ { "description": "", - "name": "GSM5353222_PA_PB2B_Pool_1_3_S52_L002_dge.txt" + "name": "GSM5353220_PA_PB1B_Pool_3_S51_L002_dge.txt" } ], - "label": "GSM5353222_PA_PB2B_Pool_1_3_S52_L002_dge.txt", + "label": "GSM5353220_PA_PB1B_Pool_3_S51_L002_dge.txt", "name": "Input dataset", "outputs": [], "position": { @@ -224,7 +229,7 @@ "tool_state": "{\"optional\": false, \"tag\": null}", "tool_version": null, "type": "data_input", - "uuid": "3f690013-56d0-4046-a64f-42ddd71ceb81", + "uuid": "9fce1b9d-52e4-40e5-9c3c-32c1d901aeb1", "when": null, "workflow_outputs": [] }, @@ -237,10 +242,10 @@ "inputs": [ { "description": "", - "name": "GSM5353219_PA_PB1B_Pool_2_S24_L001_dge.txt" + "name": "GSM5353217_PA_PB1A_Pool_2_S107_L004_dge.txt" } ], - "label": "GSM5353219_PA_PB1B_Pool_2_S24_L001_dge.txt", + "label": "GSM5353217_PA_PB1A_Pool_2_S107_L004_dge.txt", "name": "Input dataset", "outputs": [], "position": { @@ -251,7 +256,7 @@ "tool_state": "{\"optional\": false, \"tag\": null}", "tool_version": null, "type": "data_input", - "uuid": "fc2d53ef-3b4c-437b-bec7-e7b84f8f6c54", + "uuid": "2222b107-d0bc-4daf-bee0-d8573375ff43", "when": null, "workflow_outputs": [] }, @@ -303,7 +308,7 @@ } ], "position": { - "left": 280, + "left": 279.9999176480769, "top": 0 }, "post_job_actions": {}, @@ -317,7 +322,7 @@ "tool_state": "{\"__input_ext\": \"input\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"hd5_format\": {\"filetype\": \"anndata\", \"__current_case__\": 0, \"in\": {\"adata_format\": \"tabular\", \"__current_case__\": 1, \"input\": {\"__class__\": \"ConnectedValue\"}, \"first_column_names\": true}}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", "tool_version": "0.7.5+galaxy1", "type": "tool", - "uuid": "fc0c681e-1aac-40ae-8298-aabc01e5a87b", + "uuid": "09d068b4-2600-40ca-9d30-216b6568b0aa", "when": null, "workflow_outputs": [] }, @@ -342,7 +347,7 @@ } ], "position": { - "left": 280, + "left": 279.9999176480769, "top": 154 }, "post_job_actions": {}, @@ -356,7 +361,7 @@ "tool_state": "{\"__input_ext\": \"input\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"hd5_format\": {\"filetype\": \"anndata\", \"__current_case__\": 0, \"in\": {\"adata_format\": \"tabular\", \"__current_case__\": 1, \"input\": {\"__class__\": \"ConnectedValue\"}, \"first_column_names\": true}}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", "tool_version": "0.7.5+galaxy1", "type": "tool", - "uuid": "b5c7249c-c358-4a71-a637-12f269e009ab", + "uuid": "b69371fd-59c6-4ea7-ba48-bac55f945bad", "when": null, "workflow_outputs": [] }, @@ -381,7 +386,7 @@ } ], "position": { - "left": 280, + "left": 279.9999176480769, "top": 308 }, "post_job_actions": {}, @@ -395,7 +400,7 @@ "tool_state": "{\"__input_ext\": \"input\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"hd5_format\": {\"filetype\": \"anndata\", \"__current_case__\": 0, \"in\": {\"adata_format\": \"tabular\", \"__current_case__\": 1, \"input\": {\"__class__\": \"ConnectedValue\"}, \"first_column_names\": true}}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", "tool_version": "0.7.5+galaxy1", "type": "tool", - "uuid": "b69371fd-59c6-4ea7-ba48-bac55f945bad", + "uuid": "99a950da-eb84-45c4-b4b6-8d0216940828", "when": null, "workflow_outputs": [] }, @@ -420,7 +425,7 @@ } ], "position": { - "left": 280, + "left": 279.9999176480769, "top": 462 }, "post_job_actions": {}, @@ -434,7 +439,7 @@ "tool_state": "{\"__input_ext\": \"input\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"hd5_format\": {\"filetype\": \"anndata\", \"__current_case__\": 0, \"in\": {\"adata_format\": \"tabular\", \"__current_case__\": 1, \"input\": {\"__class__\": \"ConnectedValue\"}, \"first_column_names\": true}}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", "tool_version": "0.7.5+galaxy1", "type": "tool", - "uuid": "bbc79158-5e04-49db-8088-37da78a2c83f", + "uuid": "fc0c681e-1aac-40ae-8298-aabc01e5a87b", "when": null, "workflow_outputs": [] }, @@ -459,7 +464,7 @@ } ], "position": { - "left": 280, + "left": 279.9999176480769, "top": 616 }, "post_job_actions": {}, @@ -473,7 +478,7 @@ "tool_state": "{\"__input_ext\": \"input\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"hd5_format\": {\"filetype\": \"anndata\", \"__current_case__\": 0, \"in\": {\"adata_format\": \"tabular\", \"__current_case__\": 1, \"input\": {\"__class__\": \"ConnectedValue\"}, \"first_column_names\": true}}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", "tool_version": "0.7.5+galaxy1", "type": "tool", - "uuid": "99a950da-eb84-45c4-b4b6-8d0216940828", + "uuid": "b5c7249c-c358-4a71-a637-12f269e009ab", "when": null, "workflow_outputs": [] }, @@ -498,7 +503,7 @@ } ], "position": { - "left": 280, + "left": 279.9999176480769, "top": 770 }, "post_job_actions": {}, @@ -512,7 +517,7 @@ "tool_state": "{\"__input_ext\": \"input\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"hd5_format\": {\"filetype\": \"anndata\", \"__current_case__\": 0, \"in\": {\"adata_format\": \"tabular\", \"__current_case__\": 1, \"input\": {\"__class__\": \"ConnectedValue\"}, \"first_column_names\": true}}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", "tool_version": "0.7.5+galaxy1", "type": "tool", - "uuid": "3a263cfa-a15c-4565-b2cd-49989db25371", + "uuid": "bbc79158-5e04-49db-8088-37da78a2c83f", "when": null, "workflow_outputs": [] }, @@ -537,7 +542,7 @@ } ], "position": { - "left": 280, + "left": 279.9999176480769, "top": 924 }, "post_job_actions": {}, @@ -551,7 +556,7 @@ "tool_state": "{\"__input_ext\": \"input\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"hd5_format\": {\"filetype\": \"anndata\", \"__current_case__\": 0, \"in\": {\"adata_format\": \"tabular\", \"__current_case__\": 1, \"input\": {\"__class__\": \"ConnectedValue\"}, \"first_column_names\": true}}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", "tool_version": "0.7.5+galaxy1", "type": "tool", - "uuid": "2a7d63ed-774f-4894-af10-92e06131adcf", + "uuid": "177a94fa-ea39-4e04-9d95-47d84bee200d", "when": null, "workflow_outputs": [] }, @@ -576,7 +581,7 @@ } ], "position": { - "left": 280, + "left": 279.9999176480769, "top": 1078 }, "post_job_actions": {}, @@ -590,7 +595,7 @@ "tool_state": "{\"__input_ext\": \"input\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"hd5_format\": {\"filetype\": \"anndata\", \"__current_case__\": 0, \"in\": {\"adata_format\": \"tabular\", \"__current_case__\": 1, \"input\": {\"__class__\": \"ConnectedValue\"}, \"first_column_names\": true}}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", "tool_version": "0.7.5+galaxy1", "type": "tool", - "uuid": "177a94fa-ea39-4e04-9d95-47d84bee200d", + "uuid": "3a263cfa-a15c-4565-b2cd-49989db25371", "when": null, "workflow_outputs": [] }, @@ -615,7 +620,7 @@ } ], "position": { - "left": 280, + "left": 279.9999176480769, "top": 1232 }, "post_job_actions": {}, @@ -629,7 +634,7 @@ "tool_state": "{\"__input_ext\": \"input\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"hd5_format\": {\"filetype\": \"anndata\", \"__current_case__\": 0, \"in\": {\"adata_format\": \"tabular\", \"__current_case__\": 1, \"input\": {\"__class__\": \"ConnectedValue\"}, \"first_column_names\": true}}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", "tool_version": "0.7.5+galaxy1", "type": "tool", - "uuid": "09d068b4-2600-40ca-9d30-216b6568b0aa", + "uuid": "2a7d63ed-774f-4894-af10-92e06131adcf", "when": null, "workflow_outputs": [] }, @@ -654,7 +659,7 @@ } ], "position": { - "left": 280, + "left": 279.9999176480769, "top": 1386 }, "post_job_actions": {}, @@ -693,7 +698,7 @@ } ], "position": { - "left": 560, + "left": 559.9999540284473, "top": 0 }, "post_job_actions": {}, @@ -707,7 +712,7 @@ "tool_state": "{\"__input_ext\": \"h5ad\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"input\": {\"__class__\": \"ConnectedValue\"}, \"manipulate\": {\"function\": \"transpose\", \"__current_case__\": 5}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", "tool_version": "0.7.5+galaxy1", "type": "tool", - "uuid": "fe89b9a5-dd11-4750-bdff-998cd62b8c76", + "uuid": "defbd9c2-d44c-48c8-8ed6-b6649dcae1af", "when": null, "workflow_outputs": [] }, @@ -732,7 +737,7 @@ } ], "position": { - "left": 560, + "left": 559.9999540284473, "top": 154 }, "post_job_actions": {}, @@ -746,7 +751,7 @@ "tool_state": "{\"__input_ext\": \"h5ad\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"input\": {\"__class__\": \"ConnectedValue\"}, \"manipulate\": {\"function\": \"transpose\", \"__current_case__\": 5}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", "tool_version": "0.7.5+galaxy1", "type": "tool", - "uuid": "75fd4890-4bce-4978-a636-f3ec85e3af63", + "uuid": "a6c1c73b-1c2a-421b-ae4c-d79e286614ea", "when": null, "workflow_outputs": [] }, @@ -771,7 +776,7 @@ } ], "position": { - "left": 560, + "left": 559.9999540284473, "top": 308 }, "post_job_actions": {}, @@ -785,7 +790,7 @@ "tool_state": "{\"__input_ext\": \"h5ad\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"input\": {\"__class__\": \"ConnectedValue\"}, \"manipulate\": {\"function\": \"transpose\", \"__current_case__\": 5}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", "tool_version": "0.7.5+galaxy1", "type": "tool", - "uuid": "a6c1c73b-1c2a-421b-ae4c-d79e286614ea", + "uuid": "fd73dc52-957e-433a-9aab-733efb9df757", "when": null, "workflow_outputs": [] }, @@ -810,7 +815,7 @@ } ], "position": { - "left": 560, + "left": 559.9999540284473, "top": 462 }, "post_job_actions": {}, @@ -824,7 +829,7 @@ "tool_state": "{\"__input_ext\": \"h5ad\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"input\": {\"__class__\": \"ConnectedValue\"}, \"manipulate\": {\"function\": \"transpose\", \"__current_case__\": 5}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", "tool_version": "0.7.5+galaxy1", "type": "tool", - "uuid": "6dea19a9-3530-44d2-97c3-338062560911", + "uuid": "fe89b9a5-dd11-4750-bdff-998cd62b8c76", "when": null, "workflow_outputs": [] }, @@ -849,7 +854,7 @@ } ], "position": { - "left": 560, + "left": 559.9999540284473, "top": 616 }, "post_job_actions": {}, @@ -863,7 +868,7 @@ "tool_state": "{\"__input_ext\": \"h5ad\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"input\": {\"__class__\": \"ConnectedValue\"}, \"manipulate\": {\"function\": \"transpose\", \"__current_case__\": 5}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", "tool_version": "0.7.5+galaxy1", "type": "tool", - "uuid": "fd73dc52-957e-433a-9aab-733efb9df757", + "uuid": "75fd4890-4bce-4978-a636-f3ec85e3af63", "when": null, "workflow_outputs": [] }, @@ -888,7 +893,7 @@ } ], "position": { - "left": 560, + "left": 559.9999540284473, "top": 770 }, "post_job_actions": {}, @@ -902,7 +907,7 @@ "tool_state": "{\"__input_ext\": \"h5ad\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"input\": {\"__class__\": \"ConnectedValue\"}, \"manipulate\": {\"function\": \"transpose\", \"__current_case__\": 5}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", "tool_version": "0.7.5+galaxy1", "type": "tool", - "uuid": "f8e93ee5-b396-4fff-8501-0c7b96a04732", + "uuid": "6dea19a9-3530-44d2-97c3-338062560911", "when": null, "workflow_outputs": [] }, @@ -927,7 +932,7 @@ } ], "position": { - "left": 560, + "left": 559.9999540284473, "top": 924 }, "post_job_actions": {}, @@ -941,7 +946,7 @@ "tool_state": "{\"__input_ext\": \"h5ad\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"input\": {\"__class__\": \"ConnectedValue\"}, \"manipulate\": {\"function\": \"transpose\", \"__current_case__\": 5}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", "tool_version": "0.7.5+galaxy1", "type": "tool", - "uuid": "50c0a7c0-7c5f-4b6e-8313-716947a8077a", + "uuid": "7741d5fb-301e-4232-b6ab-29cab4ce1550", "when": null, "workflow_outputs": [] }, @@ -966,7 +971,7 @@ } ], "position": { - "left": 560, + "left": 559.9999540284473, "top": 1078 }, "post_job_actions": {}, @@ -980,7 +985,7 @@ "tool_state": "{\"__input_ext\": \"h5ad\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"input\": {\"__class__\": \"ConnectedValue\"}, \"manipulate\": {\"function\": \"transpose\", \"__current_case__\": 5}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", "tool_version": "0.7.5+galaxy1", "type": "tool", - "uuid": "7741d5fb-301e-4232-b6ab-29cab4ce1550", + "uuid": "f8e93ee5-b396-4fff-8501-0c7b96a04732", "when": null, "workflow_outputs": [] }, @@ -1005,7 +1010,7 @@ } ], "position": { - "left": 560, + "left": 559.9999540284473, "top": 1232 }, "post_job_actions": {}, @@ -1019,7 +1024,7 @@ "tool_state": "{\"__input_ext\": \"h5ad\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"input\": {\"__class__\": \"ConnectedValue\"}, \"manipulate\": {\"function\": \"transpose\", \"__current_case__\": 5}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", "tool_version": "0.7.5+galaxy1", "type": "tool", - "uuid": "defbd9c2-d44c-48c8-8ed6-b6649dcae1af", + "uuid": "50c0a7c0-7c5f-4b6e-8313-716947a8077a", "when": null, "workflow_outputs": [] }, @@ -1044,7 +1049,7 @@ } ], "position": { - "left": 560, + "left": 559.9999540284473, "top": 1386 }, "post_job_actions": {}, @@ -1074,39 +1079,39 @@ }, "manipulate|other_adatas": [ { - "id": 20, + "id": 23, "output_name": "anndata" }, { - "id": 21, + "id": 24, "output_name": "anndata" }, { - "id": 22, + "id": 21, "output_name": "anndata" }, { - "id": 23, + "id": 25, "output_name": "anndata" }, { - "id": 24, + "id": 22, "output_name": "anndata" }, { - "id": 25, + "id": 27, "output_name": "anndata" }, { - "id": 26, + "id": 28, "output_name": "anndata" }, { - "id": 27, + "id": 26, "output_name": "anndata" }, { - "id": 28, + "id": 20, "output_name": "anndata" } ] @@ -1121,49 +1126,18 @@ } ], "position": { - "left": 850, + "left": 849.9998716765242, "top": 622 }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_manipulate/anndata_manipulate/0.7.5+galaxy1", - "tool_shed_repository": { - "changeset_revision": "3d748954434b", - "name": "anndata_manipulate", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"__input_ext\": \"h5ad\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"input\": {\"__class__\": \"ConnectedValue\"}, \"manipulate\": {\"function\": \"concatenate\", \"__current_case__\": 0, \"other_adatas\": {\"__class__\": \"ConnectedValue\"}, \"join\": \"inner\", \"batch_key\": \"batch\", \"index_unique\": \"-\"}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", - "tool_version": "0.7.5+galaxy1", - "type": "tool", - "uuid": "8f439f4f-7495-43fd-a20a-443fb0bb2efa", - "when": null, - "workflow_outputs": [] - }, - "31": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_manipulate/anndata_manipulate/0.7.5+galaxy1", - "errors": null, - "id": 31, - "input_connections": { - "input": { - "id": 30, + "post_job_actions": { + "RenameDatasetActionanndata": { + "action_arguments": { + "newname": "Combined Object" + }, + "action_type": "RenameDatasetAction", "output_name": "anndata" } }, - "inputs": [], - "label": null, - "name": "Manipulate AnnData", - "outputs": [ - { - "name": "anndata", - "type": "h5ad" - } - ], - "position": { - "left": 1130, - "top": 659 - }, - "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_manipulate/anndata_manipulate/0.7.5+galaxy1", "tool_shed_repository": { "changeset_revision": "3d748954434b", @@ -1171,18 +1145,18 @@ "owner": "iuc", "tool_shed": "toolshed.g2.bx.psu.edu" }, - "tool_state": "{\"__input_ext\": \"h5ad\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"input\": {\"__class__\": \"ConnectedValue\"}, \"manipulate\": {\"function\": \"add_annotation\", \"__current_case__\": 6, \"var_obs\": \"obs\", \"new_annot\": null}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_state": "{\"__input_ext\": \"h5ad\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"input\": {\"__class__\": \"ConnectedValue\"}, \"manipulate\": {\"function\": \"concatenate\", \"__current_case__\": 0, \"other_adatas\": {\"__class__\": \"ConnectedValue\"}, \"join\": \"inner\", \"batch_key\": \"batch\", \"index_unique\": \"-\"}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", "tool_version": "0.7.5+galaxy1", "type": "tool", - "uuid": "898f9e35-3fef-446e-94e4-ea76be8346e2", + "uuid": "8f439f4f-7495-43fd-a20a-443fb0bb2efa", "when": null, "workflow_outputs": [] }, - "32": { + "31": { "annotation": "", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_inspect/anndata_inspect/0.7.5+galaxy1", "errors": null, - "id": 32, + "id": 31, "input_connections": { "input": { "id": 30, @@ -1199,10 +1173,18 @@ } ], "position": { - "left": 1130, - "top": 1026 + "left": 1129.9999080568946, + "top": 416 + }, + "post_job_actions": { + "RenameDatasetActionobs": { + "action_arguments": { + "newname": "Observation data" + }, + "action_type": "RenameDatasetAction", + "output_name": "obs" + } }, - "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_inspect/anndata_inspect/0.7.5+galaxy1", "tool_shed_repository": { "changeset_revision": "ee98d611afc6", @@ -1217,57 +1199,23 @@ "when": null, "workflow_outputs": [] }, - "33": { + "32": { "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/ebi-gxa/scanpy_filter_cells/scanpy_filter_cells/1.8.1+galaxy9", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_column/1.1.3", "errors": null, - "id": 33, + "id": 32, "input_connections": { - "input_obj_file": { + "infile": { "id": 31, - "output_name": "anndata" + "output_name": "obs" } }, - "inputs": [], - "label": null, - "name": "Scanpy FilterCells", - "outputs": [ + "inputs": [ { - "name": "output_h5ad", - "type": "h5ad" + "description": "runtime parameter for tool Replace Text", + "name": "infile" } ], - "position": { - "left": 1410, - "top": 664 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/ebi-gxa/scanpy_filter_cells/scanpy_filter_cells/1.8.1+galaxy9", - "tool_shed_repository": { - "changeset_revision": "e9283529cba1", - "name": "scanpy_filter_cells", - "owner": "ebi-gxa", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"__input_ext\": \"input\", \"categories\": [], \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"export_mtx\": false, \"force_recalc\": false, \"gene_name\": \"_index\", \"input_format\": \"anndata\", \"input_obj_file\": {\"__class__\": \"ConnectedValue\"}, \"output_format\": \"anndata_h5ad\", \"parameters\": [{\"__index__\": 0, \"name\": \"n_genes\", \"min\": \"0.0\", \"max\": \"1000000000.0\"}], \"save_layer\": null, \"save_raw\": false, \"subsets\": [], \"__page__\": null, \"__rerun_remap_job_id__\": null}", - "tool_version": "1.8.1+galaxy9", - "type": "tool", - "uuid": "e799bf01-950d-434e-a07b-b61e8ccaf0bd", - "when": null, - "workflow_outputs": [] - }, - "34": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_column/1.1.3", - "errors": null, - "id": 34, - "input_connections": { - "infile": { - "id": 32, - "output_name": "obs" - } - }, - "inputs": [], "label": null, "name": "Replace Text", "outputs": [ @@ -1277,8 +1225,8 @@ } ], "position": { - "left": 1410, - "top": 1026 + "left": 1409.999944437265, + "top": 416 }, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_column/1.1.3", @@ -1288,25 +1236,30 @@ "owner": "bgruening", "tool_shed": "toolshed.g2.bx.psu.edu" }, - "tool_state": "{\"__input_ext\": \"tabular\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"infile\": {\"__class__\": \"ConnectedValue\"}, \"replacements\": [{\"__index__\": 0, \"column\": \"2\", \"find_pattern\": \"(0$)|(1$)\", \"replace_pattern\": \"patient1\"}, {\"__index__\": 1, \"column\": \"2\", \"find_pattern\": \"(2$)|(3$)|(4$)|(5$)|(6$)\", \"replace_pattern\": \"patient2\"}, {\"__index__\": 2, \"column\": \"2\", \"find_pattern\": \"(7$)|(8$)|(9$)\", \"replace_pattern\": \"patient3\"}, {\"__index__\": 3, \"column\": \"2\", \"find_pattern\": \"batch\", \"replace_pattern\": \"patient\"}], \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_state": "{\"infile\": {\"__class__\": \"RuntimeValue\"}, \"replacements\": [{\"__index__\": 0, \"column\": \"2\", \"find_pattern\": \"0|1\", \"replace_pattern\": \"patient1\"}, {\"__index__\": 1, \"column\": \"2\", \"find_pattern\": \"2|3|4|5|6\", \"replace_pattern\": \"patient2\"}, {\"__index__\": 2, \"column\": \"2\", \"find_pattern\": \"7|8|9\", \"replace_pattern\": \"patient3\"}, {\"__index__\": 3, \"column\": \"2\", \"find_pattern\": \"batch\", \"replace_pattern\": \"patient\"}], \"__page__\": null, \"__rerun_remap_job_id__\": null}", "tool_version": "1.1.3", "type": "tool", "uuid": "6b9db8dd-5475-4d0d-8721-86c1a295f0da", "when": null, "workflow_outputs": [] }, - "35": { + "33": { "annotation": "", "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_column/1.1.3", "errors": null, - "id": 35, + "id": 33, "input_connections": { "infile": { - "id": 32, + "id": 31, "output_name": "obs" } }, - "inputs": [], + "inputs": [ + { + "description": "runtime parameter for tool Replace Text", + "name": "infile" + } + ], "label": null, "name": "Replace Text", "outputs": [ @@ -1316,8 +1269,8 @@ } ], "position": { - "left": 1410, - "top": 1180 + "left": 1409.999944437265, + "top": 570 }, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_column/1.1.3", @@ -1327,21 +1280,21 @@ "owner": "bgruening", "tool_shed": "toolshed.g2.bx.psu.edu" }, - "tool_state": "{\"__input_ext\": \"tabular\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"infile\": {\"__class__\": \"ConnectedValue\"}, \"replacements\": [{\"__index__\": 0, \"column\": \"2\", \"find_pattern\": \"2|4|8\", \"replace_pattern\": \"poolA\"}, {\"__index__\": 1, \"column\": \"2\", \"find_pattern\": \"3|5|9\", \"replace_pattern\": \"poolB\"}, {\"__index__\": 2, \"column\": \"2\", \"find_pattern\": \"6\", \"replace_pattern\": \"poolC\"}, {\"__index__\": 3, \"column\": \"2\", \"find_pattern\": \"0|1|7\", \"replace_pattern\": \"NA\"}, {\"__index__\": 4, \"column\": \"2\", \"find_pattern\": \"batch\", \"replace_pattern\": \"replicate\"}], \"__page__\": null, \"__rerun_remap_job_id__\": null}", + "tool_state": "{\"infile\": {\"__class__\": \"RuntimeValue\"}, \"replacements\": [{\"__index__\": 0, \"column\": \"2\", \"find_pattern\": \"2|4|7|8\", \"replace_pattern\": \"poolA\"}, {\"__index__\": 1, \"column\": \"2\", \"find_pattern\": \"3|5|9\", \"replace_pattern\": \"poolB\"}, {\"__index__\": 2, \"column\": \"2\", \"find_pattern\": \"6\", \"replace_pattern\": \"poolC\"}, {\"__index__\": 3, \"column\": \"2\", \"find_pattern\": \"0|1\", \"replace_pattern\": \"NA\"}, {\"__index__\": 4, \"column\": \"2\", \"find_pattern\": \"batch\", \"replace_pattern\": \"replicate\"}], \"__page__\": null, \"__rerun_remap_job_id__\": null}", "tool_version": "1.1.3", "type": "tool", "uuid": "e39c581b-79da-4851-b174-cf6b893ba2ee", "when": null, "workflow_outputs": [] }, - "36": { + "34": { "annotation": "", "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_column/1.1.3", "errors": null, - "id": 36, + "id": 34, "input_connections": { "infile": { - "id": 32, + "id": 31, "output_name": "obs" } }, @@ -1355,8 +1308,8 @@ } ], "position": { - "left": 1690, - "top": 882 + "left": 1689.9999808176353, + "top": 272 }, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_column/1.1.3", @@ -1373,14 +1326,14 @@ "when": null, "workflow_outputs": [] }, - "37": { + "35": { "annotation": "", "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_column/1.1.3", "errors": null, - "id": 37, + "id": 35, "input_connections": { "infile": { - "id": 32, + "id": 31, "output_name": "obs" } }, @@ -1394,8 +1347,8 @@ } ], "position": { - "left": 1970, - "top": 850 + "left": 1970.0000171980057, + "top": 194 }, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_column/1.1.3", @@ -1412,53 +1365,14 @@ "when": null, "workflow_outputs": [] }, - "38": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/ebi-gxa/anndata_ops/anndata_ops/1.8.1+galaxy0", - "errors": null, - "id": 38, - "input_connections": { - "input_obj_file": { - "id": 33, - "output_name": "output_h5ad" - } - }, - "inputs": [], - "label": null, - "name": "AnnData Operations", - "outputs": [ - { - "name": "output_h5ad", - "type": "h5ad" - } - ], - "position": { - "left": 1690, - "top": 664 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/ebi-gxa/anndata_ops/anndata_ops/1.8.1+galaxy0", - "tool_shed_repository": { - "changeset_revision": "890fb06a2893", - "name": "anndata_ops", - "owner": "ebi-gxa", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"__input_ext\": \"input\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"copy_adata_to_raw\": false, \"copy_e\": {\"default\": false, \"__current_case__\": 1}, \"copy_l\": {\"default\": false, \"__current_case__\": 1}, \"copy_o\": {\"default\": false, \"__current_case__\": 1}, \"copy_r\": {\"default\": false, \"__current_case__\": 1}, \"copy_u\": {\"default\": false, \"__current_case__\": 1}, \"copy_x\": {\"default\": false, \"__current_case__\": 1}, \"gene_flags\": [{\"__index__\": 0, \"startswith\": \"MT-\", \"flag\": \"mito\"}], \"gene_symbols_field\": \"index\", \"input_obj_file\": {\"__class__\": \"ConnectedValue\"}, \"modifications\": [], \"output_format\": \"anndata_h5ad\", \"sanitize_varm\": false, \"top_genes\": \"50\", \"__page__\": null, \"__rerun_remap_job_id__\": null}", - "tool_version": "1.8.1+galaxy0", - "type": "tool", - "uuid": "c544d56c-22c8-48e4-8e7e-af7003ff508a", - "when": null, - "workflow_outputs": [] - }, - "39": { + "36": { "annotation": "", "content_id": "Cut1", "errors": null, - "id": 39, + "id": 36, "input_connections": { "input": { - "id": 34, + "id": 32, "output_name": "outfile" } }, @@ -1472,10 +1386,18 @@ } ], "position": { - "left": 1690, - "top": 1036 + "left": 1690.000040183782, + "top": 426 + }, + "post_job_actions": { + "RenameDatasetActionout_file1": { + "action_arguments": { + "newname": "Patient Metadata" + }, + "action_type": "RenameDatasetAction", + "output_name": "out_file1" + } }, - "post_job_actions": {}, "tool_id": "Cut1", "tool_state": "{\"__input_ext\": \"tabular\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"columnList\": \"c2\", \"delimiter\": \"T\", \"input\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", "tool_version": "1.0.2", @@ -1484,14 +1406,14 @@ "when": null, "workflow_outputs": [] }, - "40": { + "37": { "annotation": "", "content_id": "Cut1", "errors": null, - "id": 40, + "id": 37, "input_connections": { "input": { - "id": 35, + "id": 33, "output_name": "outfile" } }, @@ -1505,10 +1427,18 @@ } ], "position": { - "left": 1690, - "top": 1190 + "left": 1689.9999808176353, + "top": 580 + }, + "post_job_actions": { + "RenameDatasetActionout_file1": { + "action_arguments": { + "newname": "Replicate Metadata" + }, + "action_type": "RenameDatasetAction", + "output_name": "out_file1" + } }, - "post_job_actions": {}, "tool_id": "Cut1", "tool_state": "{\"__input_ext\": \"tabular\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"columnList\": \"c2\", \"delimiter\": \"T\", \"input\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", "tool_version": "1.0.2", @@ -1517,14 +1447,14 @@ "when": null, "workflow_outputs": [] }, - "41": { + "38": { "annotation": "", "content_id": "Cut1", "errors": null, - "id": 41, + "id": 38, "input_connections": { "input": { - "id": 36, + "id": 34, "output_name": "outfile" } }, @@ -1538,10 +1468,18 @@ } ], "position": { - "left": 1970, - "top": 1004 + "left": 1970.0000171980057, + "top": 348 + }, + "post_job_actions": { + "RenameDatasetActionout_file1": { + "action_arguments": { + "newname": "Tumor Metadata" + }, + "action_type": "RenameDatasetAction", + "output_name": "out_file1" + } }, - "post_job_actions": {}, "tool_id": "Cut1", "tool_state": "{\"__input_ext\": \"tabular\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"columnList\": \"c2\", \"delimiter\": \"T\", \"input\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", "tool_version": "1.0.2", @@ -1550,14 +1488,14 @@ "when": null, "workflow_outputs": [] }, - "42": { + "39": { "annotation": "", "content_id": "Cut1", "errors": null, - "id": 42, + "id": 39, "input_connections": { "input": { - "id": 37, + "id": 35, "output_name": "outfile" } }, @@ -1571,10 +1509,18 @@ } ], "position": { - "left": 2250, - "top": 872 + "left": 2250.000053578376, + "top": 216 + }, + "post_job_actions": { + "RenameDatasetActionout_file1": { + "action_arguments": { + "newname": "Specimen Metadata" + }, + "action_type": "RenameDatasetAction", + "output_name": "out_file1" + } }, - "post_job_actions": {}, "tool_id": "Cut1", "tool_state": "{\"__input_ext\": \"tabular\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"columnList\": \"c2\", \"delimiter\": \"T\", \"input\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", "tool_version": "1.0.2", @@ -1583,57 +1529,18 @@ "when": null, "workflow_outputs": [] }, - "43": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_inspect/anndata_inspect/0.7.5+galaxy1", - "errors": null, - "id": 43, - "input_connections": { - "input": { - "id": 38, - "output_name": "output_h5ad" - } - }, - "inputs": [], - "label": null, - "name": "Inspect AnnData", - "outputs": [ - { - "name": "obs", - "type": "tabular" - } - ], - "position": { - "left": 1970, - "top": 696 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_inspect/anndata_inspect/0.7.5+galaxy1", - "tool_shed_repository": { - "changeset_revision": "ee98d611afc6", - "name": "anndata_inspect", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"__input_ext\": \"h5ad\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"input\": {\"__class__\": \"ConnectedValue\"}, \"inspect\": {\"info\": \"obs\", \"__current_case__\": 3}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", - "tool_version": "0.7.5+galaxy1", - "type": "tool", - "uuid": "b7441710-467c-495b-8af1-548a7909b237", - "when": null, - "workflow_outputs": [] - }, - "44": { + "40": { "annotation": "", "content_id": "Paste1", "errors": null, - "id": 44, + "id": 40, "input_connections": { "input1": { - "id": 40, + "id": 37, "output_name": "out_file1" }, "input2": { - "id": 39, + "id": 36, "output_name": "out_file1" } }, @@ -1647,8 +1554,8 @@ } ], "position": { - "left": 1970, - "top": 1138 + "left": 1970.0000171980057, + "top": 482 }, "post_job_actions": {}, "tool_id": "Paste1", @@ -1659,18 +1566,18 @@ "when": null, "workflow_outputs": [] }, - "45": { + "41": { "annotation": "", "content_id": "Paste1", "errors": null, - "id": 45, + "id": 41, "input_connections": { "input1": { - "id": 44, + "id": 40, "output_name": "out_file1" }, "input2": { - "id": 41, + "id": 38, "output_name": "out_file1" } }, @@ -1684,8 +1591,8 @@ } ], "position": { - "left": 2250, - "top": 1006 + "left": 2250.000053578376, + "top": 350 }, "post_job_actions": {}, "tool_id": "Paste1", @@ -1696,18 +1603,18 @@ "when": null, "workflow_outputs": [] }, - "46": { + "42": { "annotation": "", "content_id": "Paste1", "errors": null, - "id": 46, + "id": 42, "input_connections": { "input1": { - "id": 45, + "id": 41, "output_name": "out_file1" }, "input2": { - "id": 42, + "id": 39, "output_name": "out_file1" } }, @@ -1721,10 +1628,18 @@ } ], "position": { - "left": 2530, - "top": 979 + "left": 2530.0000899587462, + "top": 323 + }, + "post_job_actions": { + "RenameDatasetActionout_file1": { + "action_arguments": { + "newname": "Cell Metadata" + }, + "action_type": "RenameDatasetAction", + "output_name": "out_file1" + } }, - "post_job_actions": {}, "tool_id": "Paste1", "tool_state": "{\"__input_ext\": \"tabular\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"delimiter\": \"T\", \"input1\": {\"__class__\": \"ConnectedValue\"}, \"input2\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": null, \"__rerun_remap_job_id__\": null}", "tool_version": "1.0.0", @@ -1733,18 +1648,18 @@ "when": null, "workflow_outputs": [] }, - "47": { + "43": { "annotation": "", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_manipulate/anndata_manipulate/0.7.5+galaxy1", "errors": null, - "id": 47, + "id": 43, "input_connections": { "input": { "id": 30, "output_name": "anndata" }, "manipulate|new_annot": { - "id": 46, + "id": 42, "output_name": "out_file1" } }, @@ -1758,8 +1673,8 @@ } ], "position": { - "left": 2810, - "top": 1215 + "left": 2810.0001263391164, + "top": 605 }, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_manipulate/anndata_manipulate/0.7.5+galaxy1", @@ -1776,14 +1691,14 @@ "when": null, "workflow_outputs": [] }, - "48": { + "44": { "annotation": "", "content_id": "toolshed.g2.bx.psu.edu/repos/ebi-gxa/scanpy_filter_cells/scanpy_filter_cells/1.8.1+galaxy9", "errors": null, - "id": 48, + "id": 44, "input_connections": { "input_obj_file": { - "id": 47, + "id": 43, "output_name": "anndata" } }, @@ -1797,8 +1712,8 @@ } ], "position": { - "left": 3090, - "top": 1220 + "left": 3089.9999252549, + "top": 610 }, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/ebi-gxa/scanpy_filter_cells/scanpy_filter_cells/1.8.1+galaxy9", @@ -1815,14 +1730,14 @@ "when": null, "workflow_outputs": [] }, - "49": { + "45": { "annotation": "", "content_id": "toolshed.g2.bx.psu.edu/repos/ebi-gxa/anndata_ops/anndata_ops/1.8.1+galaxy0", "errors": null, - "id": 49, + "id": 45, "input_connections": { "input_obj_file": { - "id": 48, + "id": 44, "output_name": "output_h5ad" } }, @@ -1836,8 +1751,8 @@ } ], "position": { - "left": 3370, - "top": 1220 + "left": 3369.999842902977, + "top": 610 }, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/ebi-gxa/anndata_ops/anndata_ops/1.8.1+galaxy0", @@ -1860,14 +1775,14 @@ } ] }, - "50": { + "46": { "annotation": "", "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_inspect/anndata_inspect/0.7.5+galaxy1", "errors": null, - "id": 50, + "id": 46, "input_connections": { "input": { - "id": 49, + "id": 45, "output_name": "output_h5ad" } }, @@ -1881,8 +1796,8 @@ } ], "position": { - "left": 3650, - "top": 1252 + "left": 3649.9996418187607, + "top": 642 }, "post_job_actions": {}, "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/anndata_inspect/anndata_inspect/0.7.5+galaxy1", @@ -1910,6 +1825,6 @@ "name:single-cell", "name:data-management" ], - "uuid": "74c3bf7e-a836-473b-926e-c6c0c70e1000", - "version": 2 + "uuid": "5d73dd95-2534-448a-bb8b-2470bfb1db5a", + "version": 5 } \ No newline at end of file From 86229621dfc7d16c16397f8bb3e081ace6dafa95 Mon Sep 17 00:00:00 2001 From: Pavankumar Videm Date: Wed, 13 Dec 2023 19:16:09 +0100 Subject: [PATCH 59/59] Update editors and testers; also added links to workflow and example history --- .../tutorials/scrna-ncbi-anndata/tutorial.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md index ee7e8e9623b9e8..bc06bf5ca77475 100644 --- a/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md +++ b/topics/single-cell/tutorials/scrna-ncbi-anndata/tutorial.md @@ -28,6 +28,11 @@ contributions: - hexhowells editing: - nomadscientist + - pavanvidem + - mtekman + - hexylena + testing: + - pavanvidem follow_up_training: - @@ -79,8 +84,8 @@ The first step is the obtain the data. For this tutorial, we will use data from > 2. Import the following files from [Zenodo]({{ page.zenodo_link }}) > > ``` -> {{ page.zenodo_link }}/files/GSM5353214_PA_AUG_PB_1A_S1.dge.txt -> {{ page.zenodo_link }}/files/GSM5353215_PA_AUG_PB_1B_S2.dge.txt +> {{ page.zenodo_link }}/files/GSM5353214_PA_AUG_PB_1A_S1_dge.txt +> {{ page.zenodo_link }}/files/GSM5353215_PA_AUG_PB_1B_S2_dge.txt > {{ page.zenodo_link }}/files/GSM5353216_PA_PB1A_Pool_1_3_S50_L002_dge.txt > {{ page.zenodo_link }}/files/GSM5353217_PA_PB1A_Pool_2_S107_L004_dge.txt > {{ page.zenodo_link }}/files/GSM5353218_PA_PB1B_Pool_1_2_S74_L003_dge.txt @@ -103,7 +108,6 @@ The first step is the obtain the data. For this tutorial, we will use data from We now have the raw gene expression data that we will process. However, we will need to manually add some metadata, which requires finding out some more information about our files. - > Finding the metadata > > 1. Follow the link for the paper ([https://pubmed.ncbi.nlm.nih.gov/35013146/](https://pubmed.ncbi.nlm.nih.gov/35013146/)), where you can see a link for accessing the full text. Accessing the full text takes us the following page [https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8748675/](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8748675/) @@ -537,4 +541,4 @@ With that run we should be finished! Check the {% icon param-file %} `obs` file > The above tools will sometimes run without error but not produce the correct results - just because they run doesn't mean all the parameters and inputs were set properly! When {% icon galaxy-eye %} inspecting the {% icon param-file %} `obs` file of the final AnnData object, you should see that all the columns contain data. If any of the columns are blank, then something has gone wrong! {: .warning} -{% icon congratulations %} Congratulations! Now your data is ready for further processing or analysis! +{% icon congratulations %} Congratulations! Now your data is ready for further processing or analysis! You can compare your analysis results with this [example history](https://usegalaxy.eu/u/videmp/h/ncbi-to-anndata) and redo the whole analysis with a single click using this [workflow](https://usegalaxy.eu/u/videmp/w/ncbi-to-anndata).