proseg icon indicating copy to clipboard operation
proseg copied to clipboard

Error regarding cell_volume in segmentation of Xenium data

Open ochiken-A1772 opened this issue 8 months ago • 2 comments

Thank you so much for developing this wonderful tool.

I wanted more layers of voxel in proseg segmentation and ran with --voxel-layers 10 option. The Run program is shown below.

Xenium_file="/path/to/xenium/transcripts.parquet" output_DIR="/path/to/result_directory" RUST_BACKTRACE=full proseg --xenium ${Xenium_file}
--output-path ${output_DIR}
--voxel-layers 10
--output-cell-voxels "cell-voxels.csv.gz"

Standard output was the same as when proseg ran normally. However, the following error was output and the result file was not output to the directory specified by --output-path.

thread 'main' panicked at /home/ochiken/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/proseg-2.0.3/src/sampler/voxelsampler.rs:699:13: assertion failed: *cell_volume > 0.0 stack backtrace: 0: 0x559c7276a830 - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::h6d42cc84fc840290 1: 0x559c727909a3 - core::fmt::write::h5af61a909e3ec64d 2: 0x559c727678e3 - std::io::Write::write_fmt::h5a7b54aa6e4a315d 3: 0x559c7276a682 - std::sys::backtrace::BacktraceLock::print::h555579e7396c26ac 4: 0x559c7276b71f - std::panicking::default_hook::{{closure}}::h9128866118196224 5: 0x559c7276b58a - std::panicking::default_hook::h52e9e7314e0255f6 6: 0x559c7276c0c2 - std::panicking::rust_panic_with_hook::h541791bcc774ef34 7: 0x559c7276be36 - std::panicking::begin_panic_handler::{{closure}}::h6479a2f0137c7d19 8: 0x559c7276ad49 - std::sys::backtrace::__rust_end_short_backtrace::ha04e7c0fc61ded91 9: 0x559c7276bafd - rust_begin_unwind 10: 0x559c71da7aa0 - core::panicking::panic_fmt::h5764ee7030b7a73d 11: 0x559c71da7b2c - core::panicking::panic::had768957450a0f86 12: 0x559c71ee4861 - proseg::sampler::voxelsampler::VoxelSampler::recompute_cell_volume::hc18e8f31afcd6ddf 13: 0x559c71ee1a2f - proseg::sampler::voxelsampler::VoxelSampler::new::hb59fdebd67aa02dc 14: 0x559c71e9c20f - proseg::main::hdddd627904d5b989 15: 0x559c71ed6a53 - std::sys::backtrace::__rust_begin_short_backtrace::he83e11511f367f9a 16: 0x559c71efbbd9 - std::rt::lang_start::{{closure}}::hefb1b57dc6bf6e56 17: 0x559c727601a0 - std::rt::lang_start_internal::h15895544e2012228 18: 0x559c71ebf8f5 - main 19: 0x1500d61657e5 - __libc_start_main 20: 0x559c71da8080 - 21: 0x0 -

It looks like an error is being output in the process of checking if cell_volume is greater than 0. When I ran without the --voxel-layers 10 option, I did not get this error output. I have no idea what caused this and how to fix it. If you have any ideas, I would appreciate it if you could share them with me.

Regards.

ochiken-A1772 avatar Apr 21 '25 12:04 ochiken-A1772

I just released 2.0.4 which should fix this.

I'd also suggest using the --no-z-layer-doubling argument, otherwise voxel layers get subdivided to 40 by the end of sampling in the default sampling schedule.

dcjones avatar Apr 24 '25 00:04 dcjones

Prof. Jones

Thanks for the quick update.

When I specify the number of z-layers in --voxel-layers 10, does proseg divide the region into 10 parts from the z-coordinate of the highest Transcripts to the z-coordinate of the lowest Transcripts? If so, does the z-axis size of the voxels change for each sample?

When segmenting multiple Xenium data with proseg each, is it possible to specify a constant z-axis size (e.g. in µm) for each Voxel?

Regards.

ochiken-A1772 avatar Apr 26 '25 15:04 ochiken-A1772