-
Notifications
You must be signed in to change notification settings - Fork 467
add bellavista prepare #6946
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
add bellavista prepare #6946
Changes from 6 commits
4d4a300
0f6af69
171aa14
a248674
53591c2
26fe6d0
ce9e1ee
3a728f8
4ec64ec
aa0f821
cbd095d
25523cd
6c9ac97
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
name: bellavista | ||
owner: iuc | ||
description: Open-Source Visualization for Imaging-Based Spatial Transcriptomics | ||
homepage_url: https://github.com/pkosurilab/BellaVista | ||
long_description: | | ||
BellaVista is an open-source Python package developed for 10x Genomics Xenium, Vizgen MERSCOPE, and custom (home-built) MERFISH datasets utilizing napari for interactive data exploration. | ||
remote_repository_url: https://github.com/galaxyproject/tools-iuc/tree/master/tools/bellavista | ||
type: unrestricted | ||
categories: | ||
- Single Cell | ||
- Spatial Omics | ||
- Transcriptomics | ||
- Imaging | ||
auto_tool_repositories: | ||
name_template: "{{ tool_id }}" | ||
description_template: "Wrapper for {{ tool_name }}." |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
#!/usr/bin/bash | ||
|
||
cd "$BELLAVISTA_DIR" && | ||
touch './bellavista.log' && | ||
/opt/bellavista/bellavista/bin/bellavista "./config.json" | tee './bellavista.log' && | ||
TOOL_PID=$! | ||
|
||
while sleep 1; do | ||
if grep -q "OME-Zarr image saved successfully" './bellavista.log'; then | ||
echo "Bella Vista input files created! Stopping the tool..." | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think you need an additional safe-guards here. What happens if this string never appears? Should we kill the tool after X hours? The X hours can be taken optionally from an ENV var, so the admin can overwrite it? Also would it make sense to actually check if the result file exist? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I added a timeout to the script. |
||
kill -INT $TOOL_PID | ||
break | ||
fi | ||
done && | ||
|
||
wait $TOOL_PID && | ||
echo "Bella Vista stopped." |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,180 @@ | ||
<tool id="bellavista_prepare" name="Bellavista" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="@PROFILE@"> | ||
<description>Prepare large images for bellavista visualizer</description> | ||
<creator> | ||
<organization name="European Galaxy Team" url="https://galaxyproject.org/eu/" /> | ||
<person givenName="Amirhossein" familyName="Naghsh Nilchi" email="[email protected]" /> | ||
<person givenName="Pavan" familyName="Videm" email="[email protected]" /> | ||
<person givenName="Björn" familyName="Grüning" email="[email protected]" /> | ||
</creator> | ||
<macros> | ||
<import>macros.xml</import> | ||
</macros> | ||
<expand macro="requirements"/> | ||
<command detect_errors="exit_code"><![CDATA[ | ||
export BELLAVISTA_DIR=`pwd`/input/ && | ||
mkdir -p 'input' 'input/BellaVista_output' && | ||
chmod -R 777 'input/' && | ||
#if $technology_conditional.plot_genes.plot_transcripts == "true": | ||
ln -s '$technology_conditional.plot_genes.transcript_filename' './input/${technology_conditional.plot_genes.transcript_filename.element_identifier}.${technology_conditional.plot_genes.transcript_filename.ext}' && | ||
#end if | ||
#for $image in $technology_conditional.images: | ||
ln -s '$image' 'input/${image.element_identifier}.${image.ext}' && | ||
#end for | ||
ln -s '$bellavista_config_file' './input/config.json' && | ||
#if $technology_conditional.plot_cell_segmentation.plot_cell_seg == "true": | ||
ln -s '$technology_conditional.plot_cell_segmentation.cell_segmentation' './input/${technology_conditional.plot_cell_segmentation.cell_segmentation.element_identifier}.${technology_conditional.plot_cell_segmentation.cell_segmentation.ext}' && | ||
#end if | ||
#if $technology_conditional.plot_nuclear_segmentation.plot_nuclear_seg == "true": | ||
ln -s '$technology_conditional.plot_nuclear_segmentation.nuclear_segmentation' './input/${technology_conditional.plot_nuclear_segmentation.nuclear_segmentation.element_identifier}.${technology_conditional.plot_nuclear_segmentation.nuclear_segmentation.ext}' && | ||
#end if | ||
#if $technology_conditional.technology == "MERSCOPE": | ||
ln -s '$technology_conditional.um_to_px_transform' './input/micron_to_mosaic_pixel_transform.csv' && | ||
#end if | ||
cat ./input/config.json && | ||
|
||
bash '$__tool_directory__/bellavista.bash' | ||
nilchia marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
cd ../ && | ||
tar -czf 'bellavista.tar.gz' 'input/BellaVista_output' | ||
]]></command> | ||
<configfiles> | ||
<configfile name="bellavista_config_file"><![CDATA[ | ||
{ | ||
"system": "$technology", | ||
"data_folder": "./", | ||
"create_bellavista_inputs": true, | ||
|
||
"visualization_parameters": { | ||
"plot_image": true, | ||
#if $technology_conditional.plot_genes.plot_transcripts == "true": | ||
"plot_transcripts": true, | ||
#else | ||
"plot_transcripts": false, | ||
#end if | ||
#if $technology_conditional.plot_cell_segmentation.plot_cell_seg == "true": | ||
"plot_cell_seg": true, | ||
#else | ||
"plot_cell_seg": false, | ||
#end if | ||
#if $technology_conditional.plot_nuclear_segmentation.plot_nuclear_seg == "true": | ||
"plot_nuclear_seg": true, | ||
#else | ||
"plot_nuclear_seg": false, | ||
#end if | ||
"genes_visible_on_startup": false, | ||
#if $technology_conditional.plot_genes.plot_all_genes.all_genes == "Yes": | ||
"plot_allgenes": true, | ||
#else | ||
"plot_allgenes": false, | ||
#set $gene_list = ['"' + str(x.strip()) + '"' for x in str($technology_conditional.plot_genes.plot_all_genes.selected_genes).split(',')] | ||
#set $genes = ','.join($gene_list) | ||
"selected_genes": $genes, | ||
#end if | ||
"rotate_angle": $rotate_angle, | ||
"transcript_point_size": $transcript_point_size | ||
}, | ||
|
||
"input_files": { | ||
#set $last_index = len($technology_conditional.images) - 1 | ||
"images": [ | ||
#for $i in range(len($images)): | ||
"$images[$i].element_identifier.$images[$i].ext"#if $i != $last_index#,#end if | ||
#end for | ||
], | ||
#if $technology_conditional.plot_cell_segmentation.plot_cell_seg == "true": | ||
"cell_segmentation": "${technology_conditional.plot_cell_segmentation.cell_segmentation.element_identifier}.${technology_conditional.plot_cell_segmentation.cell_segmentation.ext}", | ||
#end if | ||
#if $technology_conditional.plot_nuclear_segmentation.plot_nuclear_seg == "true": | ||
"nuclear_segmentation": "${technology_conditional.plot_nuclear_segmentation.nuclear_segmentation.element_identifier}.${technology_conditional.plot_nuclear_segmentation.nuclear_segmentation.ext}", | ||
#end if | ||
#if $technology_conditional.technology == "MERSCOPE": | ||
"um_to_px_transform": "micron_to_mosaic_pixel_transform.csv", | ||
#end if | ||
#if $technology_conditional.plot_genes.plot_transcripts == "true": | ||
"transcript_filename": "${technology_conditional.plot_genes.transcript_filename.element_identifier}.${technology_conditional.plot_genes.transcript_filename.ext}", | ||
#end if | ||
"z_plane": $technology_conditional.z_plane | ||
} | ||
} | ||
]]></configfile> | ||
</configfiles> | ||
<inputs> | ||
<conditional name="technology_conditional"> | ||
<param name="technology" type="select" label="Spatial transcriptomic technology"> | ||
<option value="Xenium">Xenium</option> | ||
<option value="MERSCOPE" selected="true">MERSCOPE</option> | ||
</param> | ||
<when value="Xenium"> | ||
<expand macro="common_param"/> | ||
</when> | ||
<when value="MERSCOPE"> | ||
<expand macro="common_param"> | ||
<param name="um_to_px_transform" type="data" format="csv" optional="false" label="micron to pixel transformations"/> | ||
</expand> | ||
</when> | ||
</conditional> | ||
<section name="advanced_output" title="Advanced output options"> | ||
<param name="config" type="boolean" truevalue="True" falsevalue="False" checked="true" label="Output config file?"/> | ||
</section> | ||
</inputs> | ||
<outputs> | ||
<data name="bellavista_output" format="tar.gz" label="${tool.name} on ${on_string}: Bellavista prepared inputs" from_work_dir="./bellavista.tar.gz" /> | ||
<data name="config" format="json" label="${tool.name} on ${on_string}: config file" from_work_dir="input/config.json"> | ||
<filter>advanced_output['config']</filter> | ||
</data> | ||
</outputs> | ||
<tests> | ||
<test expect_num_outputs="2"> | ||
<conditional name="technology_conditional"> | ||
<param name="technology" value="MERSCOPE"/> | ||
<param name="images" location="https://zenodo.org/records/15319018/files/mosaic_PolyT_z3.tif,https://zenodo.org/records/15319018/files/mosaic_PolyT_z4.tif"/> | ||
<conditional name="plot_genes"> | ||
<param name="plot_transcripts" value="true"/> | ||
<param name="transcript_filename" location="https://zenodo.org/records/15319018/files/detected_transcripts.csv"/> | ||
</conditional> | ||
<conditional name="plot_cell_segmentation"> | ||
<param name="plot_cell_seg" value="false"/> | ||
</conditional> | ||
<conditional name="plot_nuclear_segmentation"> | ||
<param name="plot_nuclear_seg" value="false"/> | ||
</conditional> | ||
<param name="um_to_px_transform" location="https://zenodo.org/records/15319018/files/micron_to_mosaic_pixel_transform.csv"/> | ||
<param name="z_plane" value="3"/> | ||
<param name="transcript_point_size" value="1"/> | ||
<param name="rotate_angle" value="0"/> | ||
</conditional> | ||
<section name="advanced_output"> | ||
<param name="config" value="true"/> | ||
</section> | ||
<output name="bellavista_output"> | ||
<assert_contents> | ||
<has_archive_member path="input/BellaVista_output/gene_dict.pkl"/> | ||
<has_archive_member path="input/BellaVista_output/OMEzarrImages"/> | ||
<has_archive_member path="input/BellaVista_output/um_to_px_transforms.pkl"/> | ||
</assert_contents> | ||
</output> | ||
<output name="config"> | ||
<assert_contents> | ||
<has_text text="MERSCOPE"/> | ||
<has_text text=""create_bellavista_inputs": true"/> | ||
<has_text text=""plot_cell_seg": false"/> | ||
</assert_contents> | ||
</output> | ||
<assert_stdout> | ||
<has_text text="Creating Bella Vista input files for Vizgen MERSCOPE"/> | ||
<has_text text="Bella Vista input files created!"/> | ||
</assert_stdout> | ||
</test> | ||
</tests> | ||
<help><![CDATA[ | ||
BellaVista is an open-source visualization tool for imaging-based spatial transcriptomics data. It allows users to visualize and explore spatial transcriptomics data in a user-friendly interface. The tool supports MERSCOPE and Xenium imaging-based spatial transcriptomics technologies. | ||
|
||
Users can customize the visualization by selecting specific genes, adjusting image rotation angles, and controlling the size of transcript points. BellaVista also provides options for plotting cell and nuclear segmentation, enhancing the exploration of spatial transcriptomics data. | ||
|
||
.. image:: https://raw.githubusercontent.com/pkosurilab/BellaVista/c8129bb8954c92962a87606595c09b35cc414295/images/bellavista_figure.png | ||
:height: 500 | ||
:width: 700 | ||
]]> | ||
</help> | ||
<expand macro="citations"/> | ||
</tool> |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
<macros> | ||
<token name="@TOOL_VERSION@">0.0.2</token> | ||
<token name="@VERSION_SUFFIX@">0</token> | ||
<token name="@PROFILE@">23.0</token> | ||
<xml name="requirements"> | ||
<requirements> | ||
<container type="docker">quay.io/bgruening/bellavista:0.0.2-3</container> | ||
<yield/> | ||
</requirements> | ||
</xml> | ||
<xml name="common_param"> | ||
<param name="images" type="data" format="tiff,ome.tiff" multiple="true" optional="false" label="Images"/> | ||
<conditional name="plot_genes"> | ||
<param name="plot_transcripts" type="select" label="Plot transcripts?"> | ||
<option value="false">No</option> | ||
<option value="true" selected="true">Yes</option> | ||
</param> | ||
<when value="false"></when> | ||
<when value="true"> | ||
<param name="transcript_filename" type="data" format="csv,parquet" optional="false" label="transcript spatial locations"/> | ||
<conditional name="plot_all_genes"> | ||
<param name="all_genes" type="select" label="Plot all genes?"> | ||
<option value="Yes" selected="true">Yes</option> | ||
<option value="No">No</option> | ||
</param> | ||
<when value="Yes"/> | ||
<when value="No"> | ||
<param name="selected_genes" type="text" optional="false" value="" label="Comma separated list of custom genes"> | ||
<sanitizer> | ||
<valid initial="string.printable"> | ||
<remove value="'"/> | ||
</valid> | ||
</sanitizer> | ||
</param> | ||
</when> | ||
</conditional> | ||
</when> | ||
</conditional> | ||
<conditional name="plot_cell_segmentation"> | ||
<param name="plot_cell_seg" type="select" label="Plot cell segmentation?"> | ||
<option value="false">No</option> | ||
<option value="true" selected="true">Yes</option> | ||
</param> | ||
<when value="false"></when> | ||
<when value="true"> | ||
<param name="cell_segmentation" type="data" format="parquet,zarr" optional="false" label="Cell segmentations"/> | ||
</when> | ||
</conditional> | ||
<conditional name="plot_nuclear_segmentation"> | ||
<param name="plot_nuclear_seg" type="select" label="Plot nuclear segmentation?"> | ||
<option value="false" selected="true">No</option> | ||
<option value="true">Yes</option> | ||
</param> | ||
<when value="false"></when> | ||
<when value="true"> | ||
<param name="nuclear_segmentation" type="data" format="parquet,zarr" optional="false" label="Nuclear segmentations"/> | ||
</when> | ||
</conditional> | ||
<yield /> | ||
<param name="z_plane" type="integer" min="0" value="0" label="z-plane of image to be visualize"/> | ||
<param name="transcript_point_size" type="integer" min="0" value="1" label="Size of the points representing individual transcripts"/> | ||
<param name="rotate_angle" type="integer" min="-180" max="180" value="0" label="Image rotation angle in degrees"/> | ||
</xml> | ||
<xml name="citations"> | ||
<citations> | ||
<citation type="doi">10.1016/j.bpj.2024.11.3199</citation> | ||
<citation type="bibtex">@Manual{github, | ||
title = {Open-source Visualization for Imaging-Based Spatial Transcriptomics}, | ||
url = {https://github.com/pkosurilab/BellaVista}} | ||
</citation> | ||
</citations> | ||
</xml> | ||
</macros> |
Uh oh!
There was an error while loading. Please reload this page.