changeset 0:b66b59713319 draft

"planemo upload for repository https://github.com/goeckslab/tools-mti/tree/main/tools/palom commit 84aa6670d94fc7c7ef3178c606896f678119559e"
author watsocam
date Wed, 16 Mar 2022 20:17:58 +0000
parents
children 69f8e01b2e17
files macros.xml palom_svs.xml
diffstat 2 files changed, 111 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/macros.xml	Wed Mar 16 20:17:58 2022 +0000
@@ -0,0 +1,12 @@
+<macros>
+    <xml name="requirements">
+        <requirements>
+            <container type="docker">quay.io/goeckslab/palom:2021.12.0</container>
+        </requirements>
+    </xml>
+    <xml name="citations">
+        <citations>
+            <yield />
+        </citations>
+    </xml>
+</macros>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/palom_svs.xml	Wed Mar 16 20:17:58 2022 +0000
@@ -0,0 +1,99 @@
+<tool id="palom" name="palom" version="2021.12.0.0">
+    <description>Piecewise alignment for layers of mosaics. A tool for registering whole-slide images with different IHC stainings</description>
+    <macros>
+        <import>macros.xml</import>
+    </macros>
+    <expand macro="requirements" />
+    <command detect_errors="exit_code"><![CDATA[
+        
+        ln -s "$reference_image" ./ref.svs &&
+
+        ln -s "$channels" ./channels.csv &&
+
+        #for $i in $moving_images:
+            ln -s "$i" "${i.name}" &&
+        #end for
+
+        python "$script"
+
+    ]]></command>
+    <configfiles>
+        <configfile name = "script">
+import os
+import pathlib
+import pandas as pd
+import palom
+from palom.cli.svs import run_palom
+
+cwd = os.getcwd()
+
+ref_img = pathlib.Path(os.path.join(cwd,"ref.svs"))
+
+images = [ref_img]
+channels = ["hematoxylin"]
+modes = ["hematoxylin"]
+
+#for $i in $moving_images:
+img = pathlib.Path("${i.name}")
+images.append(img)
+#end for
+
+channel_df = pd.read_csv(os.path.join(cwd, "channels.csv"))
+channel_df = channel_df.astype({'channel':'string'})
+channels += list(channel_df['channel'])
+modes += list(channel_df['mode'])
+
+pixel_size = None
+
+#if $pixel_size:
+pixel_size = int($pixel_size)
+#end if
+
+level = 0
+
+#if $level:
+level = int($level)
+#end if
+
+output_path = pathlib.Path(os.path.join(cwd, "registered.ome.tiff"))
+
+qc_path = output_path.parent / 'qc'
+
+os.mkdir(qc_path)
+
+run_palom(
+    img_paths = images,
+    img_modes = modes,
+    pixel_size = pixel_size,
+    channel_names = channels,
+    output_path = output_path,
+    qc_path = qc_path,
+    level = level
+)
+        </configfile>
+    </configfiles>
+    <inputs>
+        <param name="reference_image" type="data" format="tiff" label="Hematoxylin reference image" help="An H+E image in .svs format"/>
+        <param name="moving_images" type="data_collection" label="Moving Images (data collection)" help="A collection of svs-format images to align to the reference image"/>
+        <param name="channels" type="data" label="Channel and mode dataframe" help="A CSV file with 'channel' and 'mode' columns, with a row corresponding to each moving image"/>
+        <param name="pixel_size" type="integer" optional="true" label="Pixel Size" help="defaults to px size of reference image"/>
+        <param name="level" type="integer" optional="true" label="Level" help="pyramid level, defaults to 0 (lowest level)"/>
+    </inputs>
+    <outputs>
+        <collection name="qc_plots" type="list" label="${tool.name}: qc_plots">
+            <discover_datasets pattern="__name_and_ext__" directory="qc" ext="png" visible="false"/>
+        </collection>
+        <data name="registered" from_work_dir="registered.ome.tiff" format="ome.tiff"/>
+    </outputs>
+    <help><![CDATA[
+# PALOM
+registration of whole-slide images with different IHC stainings
+
+Tool github: https://github.com/Yu-AnChen/palom
+
+# Main developer 
+
+Yu-An Chen (https://github.com/Yu-AnChen)
+    ]]></help>
+    <expand macro="citations" />
+</tool>
\ No newline at end of file