changeset 3:24ccdcfbabac draft

planemo upload for repository hhttps://github.com/npinter/ROIsplitter commit 00029e8a3ee400f69a6dbe9e556ec9c27c6979cb
author galaxyp
date Thu, 25 Apr 2024 15:13:22 +0000
parents 7bee859bbd11
children 9f136ebf73ac
files qupath_roi_splitter.py qupath_roi_splitter.xml
diffstat 2 files changed, 29 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/qupath_roi_splitter.py	Thu Apr 11 07:52:58 2024 +0000
+++ b/qupath_roi_splitter.py	Thu Apr 25 15:13:22 2024 +0000
@@ -25,20 +25,22 @@
             # Polygon with holes
             if not isinstance(sub_roi[0][0], list):
                 if first_roi:
-                    input_img = draw_poly(sub_roi, input_img, fill=fill)
                     first_roi = False
+                    col = (0, 0, 0)
                 else:
                     # holes in ROI
-                    input_img = draw_poly(sub_roi, input_img, col=(255, 255, 255), fill=fill)
+                    col = (255, 255, 255) if not fill else (0, 0, 0)
+                input_img = draw_poly(sub_roi, input_img, col=col, fill=fill)
             else:
                 # MultiPolygon with holes
                 for sub_coord in sub_roi:
                     if first_roi:
-                        input_img = draw_poly(sub_coord, input_img, fill=fill)
                         first_roi = False
+                        col = (0, 0, 0)
                     else:
                         # holes in ROI
-                        input_img = draw_poly(sub_coord, input_img, col=(255, 255, 255), fill=fill)
+                        col = (255, 255, 255) if not fill else (0, 0, 0)
+                    input_img = draw_poly(sub_coord, input_img, col=col, fill=fill)
 
     return input_img
 
@@ -89,6 +91,10 @@
 
         coords_df.to_csv("{}_{}.txt".format(tma_name, cell_type), sep='\t', index=False)
 
+        # img save
+        if args.img:
+            cv2.imwrite("{}_{}.png".format(tma_name, cell_type), img)
+
 
 if __name__ == "__main__":
     parser = argparse.ArgumentParser(description="Split ROI coordinates of QuPath TMA annotation by cell type (classfication)")
@@ -96,6 +102,7 @@
     parser.add_argument("--fill", action="store_true", required=False, help="Fill pixels in ROIs")
     parser.add_argument('--version', action='version', version='%(prog)s 0.1.0')
     parser.add_argument("--all", action="store_true", required=False, help="Extracts all ROIs")
+    parser.add_argument("--img", action="store_true", required=False, help="Generates image of ROIs")
     args = parser.parse_args()
 
     if args.qupath_roi:
--- a/qupath_roi_splitter.xml	Thu Apr 11 07:52:58 2024 +0000
+++ b/qupath_roi_splitter.xml	Thu Apr 25 15:13:22 2024 +0000
@@ -1,14 +1,14 @@
 <tool id="qupath_roi_splitter" name="QuPath ROI Splitter" version="@VERSION@+galaxy@VERSION_SUFFIX@">
     <description>Split ROI coordinates of QuPath TMA annotation by cell type (classification)</description>
     <macros>
-        <token name="@VERSION@">0.2.0</token>
+        <token name="@VERSION@">0.2.1</token>
         <token name="@VERSION_SUFFIX@">0</token>
     </macros>
     <requirements>
         <requirement type="package" version="3.0.1">geojson</requirement>
         <requirement type="package" version="1.24.2">numpy</requirement>
         <requirement type="package" version="4.7.0">opencv</requirement>
-        <requirement type="package" version="2.0.0">pandas</requirement>        
+        <requirement type="package" version="2.0.0">pandas</requirement>
     </requirements>
      <command detect_errors="exit_code"><![CDATA[
         #for $input in $input_collection
@@ -16,21 +16,27 @@
                 --qupath_roi '$input'
                 $optional.fill
                 $optional.all
+                $optional.img
              &&
         #end for
         mkdir out
         && mv *.txt out/
+        && mv *.png out/
     ]]></command>
     <inputs>
         <param name="input_collection" type="data_collection" format="geojson" label="Input QuPath annotation" help="Collection containing GeoJSON files"/>
         <section name="optional" title="Optional">
             <param name="fill" type="boolean" truevalue="--fill" falsevalue="" checked="false" label="Fill ROIs" help="Fill pixels in ROIs"/>
             <param name="all" type="boolean" truevalue="--all" falsevalue="" checked="false" label="Extract all" help="Extracts all ROIs"/>
+            <param name="img" type="boolean" truevalue="--img" falsevalue="" checked="false" label="Generate image" help="Generates image from ROIs"/>
         </section>
     </inputs>
     <outputs>
         <collection name="output_txts" type="list" label="${tool.name} on ${on_string}: ROI data">
-            <discover_datasets pattern="__name_and_ext__" directory="out" visible="false" format="txt"/>
+            <discover_datasets pattern="(?P&lt;name&gt;.*\.txt)" directory="out" visible="false" ext="txt"/>
+        </collection>
+        <collection name="output_imgs" type="list" label="${tool.name} on ${on_string}: Images of ROIs">
+            <discover_datasets pattern="(?P&lt;name&gt;.*\.png)" directory="out" visible="false" ext="png"/>
         </collection>
     </outputs>
     <tests>
@@ -43,9 +49,10 @@
             </param>
             <section name="optional">
                 <param name="fill" value="true"/>
+                <param name="img" value="true"/>
             </section>
             <output_collection name="output_txts" type="list" count="4">
-                <element name="F-5_Stroma">
+                <element name="F-5_Stroma.txt">
                     <assert_contents>
                         <has_text text="x"/>
                         <has_text text="y"/>
@@ -54,6 +61,13 @@
                     </assert_contents>
                 </element>
             </output_collection>
+            <output_collection name="output_imgs" type="list" count="4">
+                <element name="E-5_Tumor.png">
+                    <assert_contents>
+                        <has_size value="1309478"/>
+                    </assert_contents>
+                </element>
+            </output_collection>
         </test>
     </tests>
     <help><![CDATA[