Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Does this pipeline support PhenoCycler-Fusion Codex format? #541

Open
liuyang2006 opened this issue Mar 9, 2024 · 7 comments
Open

Does this pipeline support PhenoCycler-Fusion Codex format? #541

liuyang2006 opened this issue Mar 9, 2024 · 7 comments

Comments

@liuyang2006
Copy link

liuyang2006 commented Mar 9, 2024

I have a new data format called PhenoCycler-Fusion. Can MIMICRO handle this type of image data (.qptiff)? Thank you!

@ArtemSokolov
Copy link
Collaborator

Hi @liuyangzzu,

MCMICRO is Bio-Formats compatible: https://bio-formats.readthedocs.io/en/v7.2.0/supported-formats.html
If you instrument adheres to the Bio-Formats standards, MCMICRO should theoretically run on your data.

You can control what file extensions MCMICRO looks for in your params.yml.

@liuyang2006
Copy link
Author

Hi,

I am working with PhenoCycler-Fusion CODEX image data, specifically *.qptiff files. According to the documentation available at Bio-Formats Documentation, these files should be compatible with Bio-Formats.

However, I've encountered an issue where the first registration step in your pipeline fails when I attempt to process these files. Could you please let me know if you have any test cases or examples that involve processing this specific type of file? Your guidance on how to successfully navigate this issue would be greatly appreciated.

Thank you in advance.

Best regards,
Yang

@ArtemSokolov
Copy link
Collaborator

Hi @liuyangzzu,

Can you please share the error message you are getting, as well as your params.yml?

We do not have a test case for that particular instrument, but based on the bio-formats documentation, it looks like a multi-file format. Can you try specifying the following in your params.yml:

workflow:
  multi-formats: qptiff

@liuyang2006
Copy link
Author

liuyang2006 commented Mar 20, 2024

Thank you for quick response. My QPTIFF image is a single file contains 41 channels. I got below error message.

executor >  local (1)
[-        ] process > illumination                -
[84/271f7e] process > registration:ashlar (1)     [100%] 1 of 1, failed: 1 ✘
[-        ] process > background:backsub          -
[-        ] process > dearray:coreograph          -
[-        ] process > dearray:roadie:runTask      -
[-        ] process > segmentation:roadie:runTask -
[-        ] process > segmentation:worker         -
[-        ] process > segmentation:s3seg          -
[-        ] process > quantification:mcquant      -
[-        ] process > downstream:worker           -
[-        ] process > viz:autominerva             -
Error executing process > 'registration:ashlar (1)'

Caused by:
  Process `registration:ashlar (1)` terminated with an error exit status (1)

Command executed:

  ashlar 'raw/FV_UC-01.qptiff'  -m 30  -o jax_data_test.ome.tif

Command exit status:
  1



  + ashlar raw/FV_UC-01.qptiff -m 30 -o jax_data_test.ome.tif
  WARNING: Stage coordinates undefined; falling back to (0, 0).
  Stitching and registering input images
  Cycle 0:
      reading raw/FV_UC-01.qptiff
  Traceback (most recent call last):
    File "/usr/local/bin/ashlar", line 8, in <module>
      sys.exit(main())
    File "/usr/local/lib/python3.10/dist-packages/ashlar/scripts/ashlar.py", line 226, in main
      return process_single(
    File "/usr/local/lib/python3.10/dist-packages/ashlar/scripts/ashlar.py", line 262, in process_single
      edge_aligner.run()
    File "/usr/local/lib/python3.10/dist-packages/ashlar/reg.py", line 505, in run
      self.check_overlaps()
    File "/usr/local/lib/python3.10/dist-packages/ashlar/reg.py", line 527, in check_overlaps
      for t1, t2 in self.neighbors_graph.edges
    File "/usr/local/lib/python3.10/dist-packages/ashlar/reg.py", line 473, in neighbors_graph
      max_distance = aligner.metadata.size.max() + 1
    File "/usr/local/lib/python3.10/dist-packages/ashlar/reg.py", line 108, in size
      raise ValueError("Image series must all have the same dimensions")
  ValueError: Image series must all have the same dimensions

@jmuhlich
Copy link
Contributor

Those files are pre-stitched and heavily pre-processed for visual review, not quantification. You can try placing the qptiff in the registration folder and starting mcmicro from segmentation but the quantification results may not be satisfactory due to the pre-processing.

@liuyang2006
Copy link
Author

Hi,

I have put my QPTIFF files in registration/ folder, and use start-at: segmentation in params.yml file.

But the pipeline failed with error message:

 -- Check script '/home/liuya/.nextflow/assets/labsyspharm/mcmicro/main.nf' at line: 88 or see '.nextflow.log' file for more details

[-        ] process > illumination                -
[-        ] process > registration:ashlar         -
[-        ] process > background:backsub          -
[-        ] process > dearray:coreograph          -
[-        ] process > dearray:roadie:runTask      -
[-        ] process > segmentation:roadie:runTask -
[-        ] process > segmentation:worker         -
[-        ] process > segmentation:s3seg          -
[-        ] process > quantification:mcquant      -
[-        ] process > downstream:worker           -
[-        ] process > viz:autominerva             -
No pre-stitched image in /projects/li-lab/yang/codex2/data/jax_data_test/registration

 -- Check script '/home/liuya/.nextflow/assets/labsyspharm/mcmicro/main.nf' at line: 88 or see '.nextflow.log' file for more details

@ArtemSokolov
Copy link
Collaborator

Hi @jmuhlich and @liuyangzzu,

The issue is here: https://github.com/labsyspharm/mcmicro/blob/master/main.nf#L87
It will only look for files with the following extensions in the registration folder: "*.{ome.tiff,ome.tif,tif,tiff,btf}"

I am not super familiar with the QPTIFF format. What will happen if you do:

import tifffile
img = tifffile.imread('myimage.qptiff', key=0)

Will it load the first (in 0-based indexing) channel as expected?

If so, then we can probably just augment that line to also look for qptiff files.
If the above doesn't work as expected, then we need to build a bioformats -> .ome.tiff converter for pre-stitched images.

(The imread() call above is basically how all downstream modules read individual channels from a stitched and registered OME-TIFF.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants