Skip to content

Commit

Permalink
Update QuPath ROIsplitter to v0.2.1 (#758)
Browse files Browse the repository at this point in the history
* Initial commit

* Fix test

* Fix test

* Fix test

* Fix test

* Fix test

* Fix test

* Fix test
  • Loading branch information
npinter authored Apr 25, 2024
1 parent 8e3a5e1 commit 00029e8
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 8 deletions.
15 changes: 11 additions & 4 deletions tools/qupath_roi_splitter/qupath_roi_splitter.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,20 +25,22 @@ def draw_roi(input_roi, input_img, fill):
# 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

Expand Down Expand Up @@ -89,13 +91,18 @@ def split_qupath_roi(in_roi):

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)")
parser.add_argument("--qupath_roi", default=False, help="Input QuPath annotation (GeoJSON file)")
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:
Expand Down
22 changes: 18 additions & 4 deletions tools/qupath_roi_splitter/qupath_roi_splitter.xml
Original file line number Diff line number Diff line change
@@ -1,36 +1,42 @@
<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
python3 '$__tool_directory__/qupath_roi_splitter.py'
--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>
Expand All @@ -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"/>
Expand All @@ -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[
Expand Down

0 comments on commit 00029e8

Please sign in to comment.