Quality_control_and_filtering_melanoma_xenium_workflow
single-cell-spatial-melanoma-SPICA/quality-control-and-filtering-melanoma-xenium-workflow
Launch in Tutorial Mode
question
galaxy-download Download
galaxy-download Download
flowchart TD 0["ℹ️ Input Dataset\nmelanoma_roi.spatialdata.zip"]; style 0 stroke:#2c3143,stroke-width:4px; 1["initial Anndata table"]; 0 -->|output| 1; 2["Inspect AnnData"]; 1 -->|result_adata| 2; 3["Inspect AnnData"]; 1 -->|result_adata| 3; 4["QC metrics before filtering"]; 1 -->|result_adata| 4; 480e466a-0f38-40d8-a144-9544b85e7bf0["Output\nQC metrics before filtering"]; 4 --> 480e466a-0f38-40d8-a144-9544b85e7bf0; style 480e466a-0f38-40d8-a144-9544b85e7bf0 stroke:#2c3143,stroke-width:4px; 5["Violin_Plots_before_filteration"]; 4 -->|anndata_out| 5; 6cc6c8ef-ec55-4fad-9cec-19ee7a046689["Output\nViolin_Plots_before_filteration"]; 5 --> 6cc6c8ef-ec55-4fad-9cec-19ee7a046689; style 6cc6c8ef-ec55-4fad-9cec-19ee7a046689 stroke:#2c3143,stroke-width:4px; 6["Scatter plot before filtering"]; 4 -->|anndata_out| 6; 68b0cadd-79b3-436a-b8ef-ff785b7b2659["Output\nScatter plot before filtering"]; 6 --> 68b0cadd-79b3-436a-b8ef-ff785b7b2659; style 68b0cadd-79b3-436a-b8ef-ff785b7b2659 stroke:#2c3143,stroke-width:4px; 7["SpatialData with QC metrics"]; 0 -->|output| 7; 4 -->|anndata_out| 7; 8["Scanpy filter Minimum genes expressed"]; 4 -->|anndata_out| 8; 47b83004-9657-421f-af26-fff91e232ff2["Output\nFilter minimum genes expressed"]; 8 --> 47b83004-9657-421f-af26-fff91e232ff2; style 47b83004-9657-421f-af26-fff91e232ff2 stroke:#2c3143,stroke-width:4px; 9["Spatial Plot total_counts before filtering"]; 7 -->|spatialdata_output| 9; 0d65f539-3c53-4486-bf86-34446d2f0130["Output\nSpatial Plot total_counts before filtering"]; 9 --> 0d65f539-3c53-4486-bf86-34446d2f0130; style 0d65f539-3c53-4486-bf86-34446d2f0130 stroke:#2c3143,stroke-width:4px; 10["Spatial Plot n_genes_by_counts before filtering"]; 7 -->|spatialdata_output| 10; 7efe5b5c-cef3-4d16-b7b3-ad219e5f308b["Output\nSpatial Plot n_genes_by_counts before filtering"]; 10 --> 7efe5b5c-cef3-4d16-b7b3-ad219e5f308b; style 7efe5b5c-cef3-4d16-b7b3-ad219e5f308b stroke:#2c3143,stroke-width:4px; 11["Inspect AnnData"]; 8 -->|anndata_out| 11; 12["Filter minimum number of counts of gene expressed"]; 8 -->|anndata_out| 12; 3eeec312-343d-45dc-861e-8b2897774a73["Output\nFilter minimum number of counts of gene expressed"]; 12 --> 3eeec312-343d-45dc-861e-8b2897774a73; style 3eeec312-343d-45dc-861e-8b2897774a73 stroke:#2c3143,stroke-width:4px; 13["Inspect AnnData"]; 12 -->|anndata_out| 13; 14["Filter minimum number of cells expressed"]; 12 -->|anndata_out| 14; b7fd86f9-614c-40e7-bcfe-adf512b7d8f8["Output\nFilter minimum number of cells expressed"]; 14 --> b7fd86f9-614c-40e7-bcfe-adf512b7d8f8; style b7fd86f9-614c-40e7-bcfe-adf512b7d8f8 stroke:#2c3143,stroke-width:4px; 15["Filter genes based on number of cells or counts Minimum number of counts"]; 14 -->|anndata_out| 15; b94fe64d-2fc6-4f03-8fe4-bd912045d7e2["Output\nFilter genes based on number of cells or counts Minimum number of counts"]; 15 --> b94fe64d-2fc6-4f03-8fe4-bd912045d7e2; style b94fe64d-2fc6-4f03-8fe4-bd912045d7e2 stroke:#2c3143,stroke-width:4px; 16["Inspect AnnData"]; 15 -->|anndata_out| 16; 17["Filter maximum number of counts"]; 15 -->|anndata_out| 17; cda1adb3-249e-4c41-9964-c7108943e2c1["Output\nFilter maximum number of counts"]; 17 --> cda1adb3-249e-4c41-9964-c7108943e2c1; style cda1adb3-249e-4c41-9964-c7108943e2c1 stroke:#2c3143,stroke-width:4px; 18["Filter maximum number of genes expressed"]; 17 -->|anndata_out| 18; 17e8e16f-fba2-449e-ad0c-c12df7691a94["Output\nFilter maximum number of genes expressed"]; 18 --> 17e8e16f-fba2-449e-ad0c-c12df7691a94; style 17e8e16f-fba2-449e-ad0c-c12df7691a94 stroke:#2c3143,stroke-width:4px; 19["Inspect AnnData"]; 18 -->|anndata_out| 19; 20["Filter cell_area more than 10"]; 18 -->|anndata_out| 20; acc71f7e-f132-4bd2-9e53-877e8770171b["Output\nFilter cell_area more than 10"]; 20 --> acc71f7e-f132-4bd2-9e53-877e8770171b; style acc71f7e-f132-4bd2-9e53-877e8770171b stroke:#2c3143,stroke-width:4px; 21["Filter cell_area less than 400"]; 20 -->|anndata_out| 21; ca03e483-8b0f-44cb-b3ae-e15689b6f2c3["Output\nFilter cell_area less than 400"]; 21 --> ca03e483-8b0f-44cb-b3ae-e15689b6f2c3; style ca03e483-8b0f-44cb-b3ae-e15689b6f2c3 stroke:#2c3143,stroke-width:4px; 22["Filtered AnnData table"]; 21 -->|anndata_out| 22; 60870001-3a7c-4fbb-ab6b-970421fd652e["Output\nFiltered AnnData table"]; 22 --> 60870001-3a7c-4fbb-ab6b-970421fd652e; style 60870001-3a7c-4fbb-ab6b-970421fd652e stroke:#2c3143,stroke-width:4px; 23["Violin_Plots_after_filteration"]; 22 -->|anndata_out| 23; 99276f46-5390-4446-9125-2254860a5f4a["Output\nViolin_Plots_after_filteration"]; 23 --> 99276f46-5390-4446-9125-2254860a5f4a; style 99276f46-5390-4446-9125-2254860a5f4a stroke:#2c3143,stroke-width:4px; 24["Scatter plot after filtering"]; 22 -->|anndata_out| 24; 7bca78a9-9ce9-4ec4-9780-edb169e1f0a8["Output\nScatter plot after filtering"]; 24 --> 7bca78a9-9ce9-4ec4-9780-edb169e1f0a8; style 7bca78a9-9ce9-4ec4-9780-edb169e1f0a8 stroke:#2c3143,stroke-width:4px; 25["SpatialData Operations"]; 0 -->|output| 25; 22 -->|anndata_out| 25; 26["Spatial Plot total_counts after filtering"]; 25 -->|spatialdata_output| 26; 53ce37a0-b4b7-4cae-815e-7d559f9ffbcc["Output\nSpatial Plot after filtering"]; 26 --> 53ce37a0-b4b7-4cae-815e-7d559f9ffbcc; style 53ce37a0-b4b7-4cae-815e-7d559f9ffbcc stroke:#2c3143,stroke-width:4px; 27["Spatial Plot table_processed after filtering"]; 25 -->|spatialdata_output| 27; 7bca9117-c8ca-4e90-9460-6654be842c12["Output\nSpatial Plot table_processed after filtering"]; 27 --> 7bca9117-c8ca-4e90-9460-6654be842c12; style 7bca9117-c8ca-4e90-9460-6654be842c12 stroke:#2c3143,stroke-width:4px;
Inputs
| Input | Label |
|---|---|
| Input dataset | melanoma_roi.spatialdata.zip |
Outputs
| From | Output | Label |
|---|---|---|
| toolshed.g2.bx.psu.edu/repos/iuc/scanpy_inspect/scanpy_inspect/1.11.5+galaxy0 | Scanpy Inspect and manipulate | QC metrics before filtering |
| toolshed.g2.bx.psu.edu/repos/iuc/scanpy_plot/scanpy_plot/1.11.5+galaxy0 | Scanpy plot | Violin_Plots_before_filteration |
| toolshed.g2.bx.psu.edu/repos/iuc/scanpy_plot/scanpy_plot/1.11.5+galaxy0 | Scanpy plot | Scatter plot before filtering |
| toolshed.g2.bx.psu.edu/repos/iuc/scanpy_filter/scanpy_filter/1.11.5+galaxy0 | Scanpy filter | Scanpy filter Minimum genes expressed |
| toolshed.g2.bx.psu.edu/repos/iuc/spatialdata_plot/spatialdata_plot/0.8.0+galaxy0 | SpatialData Plot | Spatial Plot total_counts before filtering |
| toolshed.g2.bx.psu.edu/repos/iuc/spatialdata_plot/spatialdata_plot/0.8.0+galaxy0 | SpatialData Plot | Spatial Plot n_genes_by_counts before filtering |
| toolshed.g2.bx.psu.edu/repos/iuc/scanpy_filter/scanpy_filter/1.11.5+galaxy0 | Scanpy filter | Filter minimum number of counts of gene expressed |
| toolshed.g2.bx.psu.edu/repos/iuc/scanpy_filter/scanpy_filter/1.11.5+galaxy0 | Scanpy filter | Filter minimum number of cells expressed |
| toolshed.g2.bx.psu.edu/repos/iuc/scanpy_filter/scanpy_filter/1.11.5+galaxy0 | Scanpy filter | Filter genes based on number of cells or counts Minimum number of counts |
| toolshed.g2.bx.psu.edu/repos/iuc/scanpy_filter/scanpy_filter/1.11.5+galaxy0 | Scanpy filter | Filter maximum number of counts |
| toolshed.g2.bx.psu.edu/repos/iuc/scanpy_filter/scanpy_filter/1.11.5+galaxy0 | Scanpy filter | Filter maximum number of genes expressed |
| toolshed.g2.bx.psu.edu/repos/iuc/scanpy_filter/scanpy_filter/1.11.5+galaxy0 | Scanpy filter | Filter cell_area more than 10 |
| toolshed.g2.bx.psu.edu/repos/iuc/scanpy_filter/scanpy_filter/1.11.5+galaxy0 | Scanpy filter | Filter cell_area less than 400 |
| toolshed.g2.bx.psu.edu/repos/iuc/scanpy_inspect/scanpy_inspect/1.11.5+galaxy0 | Scanpy Inspect and manipulate | Filtered AnnData table |
| toolshed.g2.bx.psu.edu/repos/iuc/scanpy_plot/scanpy_plot/1.11.5+galaxy0 | Scanpy plot | Violin_Plots_after_filteration |
| toolshed.g2.bx.psu.edu/repos/iuc/scanpy_plot/scanpy_plot/1.11.5+galaxy0 | Scanpy plot | Scatter plot after filtering |
| toolshed.g2.bx.psu.edu/repos/iuc/spatialdata_plot/spatialdata_plot/0.8.0+galaxy0 | SpatialData Plot | Spatial Plot total_counts after filtering |
| toolshed.g2.bx.psu.edu/repos/iuc/spatialdata_plot/spatialdata_plot/0.8.0+galaxy0 | SpatialData Plot | Spatial Plot table_processed after filtering |
Tools
To use these workflows in Galaxy you can either click the links to download the workflows, or you can right-click and copy the link to the workflow which can be used in the Galaxy form to import workflows.
Importing into Galaxy
Below are the instructions for importing these workflows directly into your Galaxy server of choice to start using them!Hands On: Importing a workflow
- Click on galaxy-workflows-activity Workflows in the Galaxy activity bar (on the left side of the screen, or in the top menu bar of older Galaxy instances). You will see a list of all your workflows
- Click on galaxy-upload Import at the top-right of the screen
- Provide your workflow
- Option 1: Paste the URL of the workflow into the box labelled “Archived Workflow URL”
- Option 2: Upload the workflow file in the box labelled “Archived Workflow File”
- Click the Import workflow button
Below is a short video demonstrating how to import a workflow from GitHub using this procedure:
Video: Importing a workflow from URL
Version History
| Version | Commit | Time | Comments |
|---|---|---|---|
| 3 | 0fedcb2b3 | 2026-09-01 14:52:29 | fix viloin plot display |
| 2 | 7bee176ae | 2026-09-01 14:16:46 | update the tutirial to visualise HVG with Morans values and update the workflow to match the tutorial |
| 1 | 5565e4cbc | 2026-09-01 12:16:08 | update tutorial adress most of the commnets |
For Admins
Installing the workflow tools
wget https://training.galaxyproject.org/training-material/topics/single-cell/tutorials/spatial-melanoma-SPICA/workflows/Quality-control-and-filtering-melanoma-xenium-workflow.ga -O workflow.ga workflow-to-tools -w workflow.ga -o tools.yaml shed-tools install -g GALAXY -a API_KEY -t tools.yaml workflow-install -g GALAXY -a API_KEY -w workflow.ga --publish-workflows
Download Workflow RO-Crate