Mercurial > repos > bgruening > 3dtrees_segmentanytree
changeset 0:6f80b2dfb7d4 draft default tip
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/3dtrees_segmentanytree commit 7540181d97a24b5bf07dde308f6d79bee5f18c9c
| author | bgruening |
|---|---|
| date | Thu, 30 Oct 2025 14:37:55 +0000 |
| parents | |
| children | |
| files | segmentanytree.xml test-data/mikro.laz test-data/prepared_files_mikro.zip |
| diffstat | 3 files changed, 122 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/segmentanytree.xml Thu Oct 30 14:37:55 2025 +0000 @@ -0,0 +1,122 @@ +<tool id="3dtrees_segmentanytree" name="3Dtrees: SegmentAnyTree" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="24.2"> + <description> + Forest instance segmentation. + </description> + <macros> + <token name="@TOOL_VERSION@">1.1.0</token> + <token name="@VERSION_SUFFIX@">0</token> + </macros> + <requirements> + <container type="docker"> + ghcr.io/3dtrees-earth/3dtrees_sat:@TOOL_VERSION@ + </container> + </requirements> + <command detect_errors="exit_code"><![CDATA[ + export NUMBA_CACHE_DIR=\$TMPDIR && + #if $input.ext == "zip": + ln -s '$input' input.zip && + python3.8 -u /src/run.py + --dataset-path input.zip + --output-dir . + --log_file '$log_file' && + mv processed_files.zip '$output' + #if $log_file: + && mv resource_usage.log '$resource_usage' + #end if + #else: + ln -s '$input' input.laz && + python3.8 -u /src/run.py + --dataset-path input.laz + --output-dir . + --log_file '$log_file' && + mv segmented_pc.laz '$output' + #if $log_file: + && mv resource_usage.log '$resource_usage' + #end if + #end if + ]]> + </command> + <inputs> + <param argument="--input" type="data" format="zip,laz" label="Input Dataset" help="ZIP file containing point cloud data with required folder structure / single LAZ/LAS point cloud file."/> + <param argument="--log_file" type="boolean" label="Resource log" help="If set to true, it returns a log file containing the CPU, RAM and GPU usage statistics"/> + </inputs> + <outputs> + <data name="output" format="zip" label="Processed Files"> + <change_format> + <when input="input.ext" value="laz" format="laz"/> + </change_format> + </data> + <data name="resource_usage" format="txt" label="Resource Usage"> + <filter>log_file</filter> + </data> + </outputs> + <tests> + <test expect_num_outputs="2"> + <param name="input" value="prepared_files_mikro.zip"/> + <param name="log_file" value="true"/> + <output name="resource_usage"> + <assert_contents> + <has_line line="timestamp,cpu_percent,cpu_cores_used,cpu_cores_total,mem_used_mb,mem_total_mb,gpu_mem_used_mb,gpu_mem_total_mb" n="1"/> + </assert_contents> + </output> + <assert_stdout> + <has_text text="Loading checkpoint from /src/SegmentAnyTree/model_file/PointGroup-PAPER.pt"/> + <has_text text="Segmentation complete"/> + </assert_stdout> + </test> + <test expect_exit_code="1" expect_failure="true"> + <param name="input" value="mikro.laz"/> + <param name="log_file" value="false"/> + <assert_stderr> + <has_text text="RuntimeError: Found no NVIDIA driver"/> + </assert_stderr> + <assert_stdout> + <has_text text="Loading checkpoint from /src/SegmentAnyTree/model_file/PointGroup-PAPER.pt"/> + </assert_stdout> + </test> + </tests> + <help format="markdown"> +**What it does** + +This tool performs deep learning-based tree segmentation on LiDAR point clouds using the **SegmentAnyTree** algorithm (Wielgosz et al., 2024). It is sensor- and platform-agnostic, working across airborne (ALS/ULS), terrestrial (TLS), and mobile (MLS) laser scanning data. + +----- + + +**Input** +- A **ZIP file** containing the following directory structure: + + 00_original/ + input.laz + 01_subsampled/ + input_subsampled.laz + 02_input_SAT/ + tile_1.laz + tile_2.laz + ... + +- A single **LAZ/LAS file** containing a point cloud + +----- + +**Output** + +The output depends on the input type: +- **ZIP input** → ZIP output containing the complete processed folder structure. +- **LAZ input** → Single LAZ output file `segmented_pc.laz` containing the segmented point cloud with tree instance IDs. + +We recommend using the [3DTrees: Tile and Merge](https://usegalaxy.eu/?tool_id=toolshed.g2.bx.psu.edu%2Frepos%2Fbgruening%2F3dtrees_tile_merge%2F3dtrees_tile_merge%2F1.0.1%2Bgalaxy0&version=latest) tool to preprocess and remap the segmented point cloud back to original resolution. + + </help> + <creator> + <person name="Marc Wielgosz" email="maciej.wielgosz@nibio.no" url="https://maciej.wielgosz.info/"/> + <person name="Kilian Gerberding" email="kilian.gerberding@geosense.uni-freiburg.de" url="https://orcid.org/0009-0002-5001-2571"/> + <organization name="3Dtrees-Team, University of Freiburg" url="https://github.com/3dTrees-earth"/> + </creator> + <citations> + <citation type="doi">10.1016/j.rse.2024.114367</citation> + <citation type="bibtex"> + @misc{3dtrees_segmentanytree, title = {3Dtrees: SegmentAnyTree}, author = {3Dtrees-Project}, year = {2025}} + </citation> + </citations> +</tool>
