Mercurial > repos > goeckslab > vitessce_spatial
changeset 5:97be83fc3677 draft default tip
planemo upload for repository https://github.com/goeckslab/tools-mti/tree/main/tools/vitessce commit 90f081e58b5ee41bba3a7e6f01d97b5bd9392759
author | goeckslab |
---|---|
date | Wed, 28 May 2025 21:14:59 +0000 (4 days ago) |
parents | 068da7f7cd83 |
children | |
files | gate_finder.py index.html main_macros.xml vitessce_spatial.py vitessce_spatial.xml |
diffstat | 5 files changed, 52 insertions(+), 30 deletions(-) [+] |
line wrap: on
line diff
--- a/gate_finder.py Thu Feb 20 19:47:16 2025 +0000 +++ b/gate_finder.py Wed May 28 21:14:59 2025 +0000 @@ -53,7 +53,7 @@ return get_gate_phenotype(gate, np.ravel(data_norm)) -def main(inputs, output, image, anndata, offsets=None, masks=None): +def main(inputs, output, image, anndata, offsets=None, masks=None, config_path=None): """ Parameter --------- @@ -67,12 +67,17 @@ File path to anndata containing phenotyping info. masks : str File path to the image masks. + config_path : str + File path to the config containing galaxy_url and dataset_id. """ warnings.simplefilter('ignore') with open(inputs, 'r') as param_handler: params = json.load(param_handler) + with open(config_path) as conf_fh: + config = json.load(conf_fh) + marker = params['marker'].strip() from_gate = params['from_gate'] to_gate = params['to_gate'] @@ -80,6 +85,12 @@ x_coordinate = params['x_coordinate'].strip() or 'X_centroid' y_coordinate = params['y_coordinate'].strip() or 'Y_centroid' + galaxy_url = config["galaxy_url"] + dataset_id = config["dataset_id"] + + # Build the prefix that Vitessce should use + display_prefix = (f"{galaxy_url}/api/datasets/{dataset_id}/display?filename=") + adata = read_h5ad(anndata) # If no raw data is available make a copy @@ -191,7 +202,7 @@ ) # export config file - config_dict = vc.export(to='files', base_url='http://localhost', out_dir=output) + config_dict = vc.export(to='files', base_url=display_prefix, out_dir=output) with open(Path(output).joinpath('config.json'), 'w') as f: json.dump(config_dict, f, indent=4) @@ -205,7 +216,8 @@ aparser.add_argument("-a", "--anndata", dest="anndata", required=True) aparser.add_argument("-f", "--offsets", dest="offsets", required=False) aparser.add_argument("-m", "--masks", dest="masks", required=False) + aparser.add_argument("--galaxy_config", dest="config_path", required=True) args = aparser.parse_args() - main(args.inputs, args.output, args.image, args.anndata, args.offsets, args.masks) + main(args.inputs, args.output, args.image, args.anndata, args.offsets, args.masks, args.config_path)
--- a/index.html Thu Feb 20 19:47:16 2025 +0000 +++ b/index.html Wed May 28 21:14:59 2025 +0000 @@ -27,31 +27,13 @@ import { Vitessce } from 'vitessce'; import { config } from './config.js'; - console.log('here be url: '+window.location.href); - var current_url = window.location.href.replace(new RegExp('\/[^\/]*$'), ''); - console.log(current_url); - function rewriteURL(input) { - for (let k in input) { - if (typeof input[k] === 'string' || input[k] instanceof String) { - input[k] = input[k].replace('http://localhost', current_url) - } - else { - input[k] = rewriteURL(input[k]) - } - } - return input; - }; - var fixed_conf = {...config}; - fixed_conf = rewriteURL(fixed_conf); - console.log('conf fixed:'); - console.log(fixed_conf); function MyApp() { return React.createElement( Vitessce, { height: 1000, theme: 'dark', - config: fixed_conf, + config: config, } ); }
--- a/main_macros.xml Thu Feb 20 19:47:16 2025 +0000 +++ b/main_macros.xml Wed May 28 21:14:59 2025 +0000 @@ -1,6 +1,6 @@ <macros> <token name="@TOOL_VERSION@">3.5.1</token> - <token name="@VERSION_SUFFIX@">0</token> + <token name="@VERSION_SUFFIX@">1</token> <token name="@PROFILE@">22.01</token> <xml name="vitessce_requirements"> @@ -68,6 +68,7 @@ --inputs '$inputs' --output '${output.files_path}' --image '${output.files_path}/A/0/image01.ome.tiff' + --galaxy_config '${galaxy_config}' --offsets '$image.metadata.offsets' #if $masks --masks '${output.files_path}/A/0/masks01.ome.tiff' @@ -76,8 +77,9 @@ --anndata '$anndata' #end if && - cp '$__tool_directory__/index.html' '$output'; - echo "export var config = \$(cat ${output.files_path}/config.json)" >> '${output.files_path}/config.js'; + cp '$__tool_directory__/index.html' '$output' && + sed -i 's|display?filename=/|display?filename=|g' ${output.files_path}/config.json && + echo "export var config = \$(cat ${output.files_path}/config.json)" >> '${output.files_path}/config.js' && cat '${output.files_path}/config.json' >> '$vitessce_config'; ]]> </command>
--- a/vitessce_spatial.py Thu Feb 20 19:47:16 2025 +0000 +++ b/vitessce_spatial.py Wed May 28 21:14:59 2025 +0000 @@ -2,6 +2,7 @@ import json import warnings from os.path import isdir, join +# import urllib.parse from pathlib import Path import scanpy as sc @@ -19,7 +20,7 @@ ) -def main(inputs, output, image, offsets=None, anndata=None, masks=None): +def main(inputs, output, image, offsets=None, anndata=None, masks=None, config_path=None): """ Parameter --------- @@ -33,12 +34,20 @@ File path to anndata containing phenotyping info. masks : str File path to the image masks. + config_path : str + File path to the config file containing galaxy_url and dataset_id. """ warnings.simplefilter('ignore') with open(inputs, 'r') as param_handler: params = json.load(param_handler) + with open(config_path) as conf_fh: + config = json.load(conf_fh) + + galaxy_url = config["galaxy_url"] + dataset_id = config["dataset_id"] + # initialize vitessce config and add OME-TIFF image, and masks if specified vc = VitessceConfig(schema_version="1.0.17", name=None, description=None) dataset = vc.add_dataset() @@ -73,12 +82,15 @@ w=lc_dims[0], h=lc_dims[1]) + # Build the prefix that Vitessce should use + display_prefix = (f"{galaxy_url}/api/datasets/{dataset_id}/display?filename=") + # if no anndata file, export the config with these minimal components if not anndata: vc.layout(lc | spatial) config_dict = vc.export( to='files', - base_url='http://localhost', + base_url=display_prefix, out_dir=output) with open(Path(output).joinpath('config.json'), 'w') as f: json.dump(config_dict, f, indent=4) @@ -191,7 +203,7 @@ # export the config file config_dict = vc.export( to='files', - base_url='http://localhost', + base_url=display_prefix, out_dir=output) with open(Path(output).joinpath('config.json'), 'w') as f: @@ -206,7 +218,8 @@ aparser.add_argument("-f", "--offsets", dest="offsets", required=False) aparser.add_argument("-a", "--anndata", dest="anndata", required=False) aparser.add_argument("-m", "--masks", dest="masks", required=False) + aparser.add_argument("--galaxy_config", dest="config_path", required=True) args = aparser.parse_args() - main(args.inputs, args.output, args.image, args.offsets, args.anndata, args.masks) + main(args.inputs, args.output, args.image, args.offsets, args.anndata, args.masks, args.config_path)
--- a/vitessce_spatial.xml Thu Feb 20 19:47:16 2025 +0000 +++ b/vitessce_spatial.xml Wed May 28 21:14:59 2025 +0000 @@ -16,6 +16,14 @@ <configfiles> <inputs name="inputs" /> + <configfile name="galaxy_config"> + <![CDATA[ + { + "galaxy_url": "${__app__.config.galaxy_infrastructure_url}", + "dataset_id": "${__app__.security.encode_id($output.dataset.id)}" + } + ]]> + </configfile> </configfiles> <inputs> @@ -88,7 +96,12 @@ </inputs> <outputs> <data format="html" name="output" /> - <data format="json" name="vitessce_config" from_work_dir="config.json" hidden="true" label="Vitessce config file on ${on_string}" /> + <data format="json" + name="vitessce_config" + from_work_dir="config.json" + hidden="true" + label="Vitessce config file on ${on_string}"> + </data> </outputs> <tests> <test>