Tang-Lab-super / PROST

PROST: A quantitative pattern recognition framework for spatial transcriptomics.
MIT License
5 stars 1 forks source link

Bug report on SeqFISH data #3

Closed rocketeer1998 closed 1 week ago

rocketeer1998 commented 2 months ago

Hi @YchLiang @Sicrve11 , when I reproduced your notebook Tutorial 3: Application on SeqFISH mouse embryo dataset. https://prost-doc.readthedocs.io/en/latest/Tutorial3%20SeqFish.html and in adata = PROST.cal_PI(adata, kernel_size=8, platform="SeqFISH",del_rate=0.05), it threw me an error which said error: OpenCV(4.6.0) D:/a/opencv-python/opencv-python/opencv/modules/imgproc/src/morph.simd.hpp:756: error: (-213:The function/feature is not implemented) Unsupported data type (=4) in function 'cv::opt_AVX2::getMorphologyRowFilter'. Do you know why?

Sicrve11 commented 2 months ago

Thank you very much for your feedback, but some details need to be clarified. Do you have any problems running the other cases ? We tested them several times before releasing them. Another point, our OpenCV version is opencv-python==4.6.0.66, I think it might be a version issue.

rocketeer1998 commented 2 months ago

Below is my conda environment named prost. My OpenCV version is the same as yours (opencv-python==4.6.0.66) because I installed PROST in a way that followed your documentation and without error. Just now, I tried two new procedures inspired by your recommendation:

  1. Run your SeqFISH data and set adata = PROST.cal_PI(adata, platform="visium"). The same error occurred.
  2. Run your DLPFC data and set adata = PROST.cal_PI(adata, platform="visium"). Worked well.

My goal is to run my in-house MERFISH data using PROST, which has the same data structure as SeqFISH test data after inspection. So maybe there is a bug in SeqFISH pipeline but I don't know where it is. Thanks for your patience!

(prost) C:\Users\Administrator>pip list
Package              Version
-------------------- -----------
anndata              0.8.0
anyio                3.7.1
argon2-cffi          23.1.0
argon2-cffi-bindings 21.2.0
attrs                23.2.0
backcall             0.2.0
beautifulsoup4       4.12.3
bleach               6.0.0
certifi              2024.2.2
cffi                 1.15.1
charset-normalizer   3.3.2
colorama             0.4.6
cycler               0.11.0
debugpy              1.7.0
decorator            5.1.1
defusedxml           0.7.1
entrypoints          0.4
exceptiongroup       1.2.0
fastjsonschema       2.19.1
fonttools            4.38.0
h5py                 3.7.0
idna                 3.6
igraph               0.10.8
imageio              2.31.2
importlib-metadata   6.7.0
importlib-resources  5.12.0
ipykernel            6.16.2
ipython              7.34.0
ipython-genutils     0.2.0
jedi                 0.19.1
Jinja2               3.1.3
joblib               1.3.2
jsonschema           4.17.3
jupyter_client       7.4.9
jupyter_core         4.12.0
jupyter-server       1.24.0
jupyterlab-pygments  0.2.2
kiwisolver           1.4.5
leidenalg            0.9.0
llvmlite             0.39.1
MarkupSafe           2.1.5
matplotlib           3.5.3
matplotlib-inline    0.1.6
mistune              3.0.2
natsort              8.2.0
nbclassic            1.0.0
nbclient             0.7.4
nbconvert            7.6.0
nbformat             5.8.0
nest-asyncio         1.6.0
networkx             2.6.3
notebook             6.5.6
notebook_shim        0.2.4
numba                0.56.3
numexpr              2.8.6
numpy                1.21.6
opencv-python        4.6.0.66
packaging            24.0
pandas               1.3.5
pandocfilters        1.5.1
parso                0.8.4
patsy                0.5.6
pickleshare          0.7.5
Pillow               9.5.0
pip                  24.0
pkgutil_resolve_name 1.3.10
prometheus-client    0.17.1
prompt-toolkit       3.0.43
PROST                1.1.2
psutil               5.9.8
pycparser            2.21
Pygments             2.17.2
pynndescent          0.5.12
pyparsing            3.1.2
pyrsistent           0.19.3
python-dateutil      2.9.0.post0
pytz                 2024.1
PyWavelets           1.3.0
pywin32              306
pywinpty             2.0.10
pyzmq                24.0.1
requests             2.31.0
rpy2                 2.9.5
scanpy               1.8.2
scikit-image         0.19.2
scikit-learn         0.24.2
scipy                1.7.3
seaborn              0.12.2
Send2Trash           1.8.3
setuptools           58.2.0
sinfo                0.3.4
six                  1.16.0
sniffio              1.3.1
soupsieve            2.4.1
statsmodels          0.13.5
stdlib-list          0.10.0
tables               3.7.0
terminado            0.17.1
texttable            1.7.0
threadpoolctl        3.1.0
tifffile             2021.11.2
tinycss2             1.2.1
torch                1.8.1
tornado              6.2
tqdm                 4.66.2
traitlets            5.9.0
typing_extensions    4.7.1
umap-learn           0.5.6
urllib3              2.2.1
wcwidth              0.2.13
webencodings         0.5.1
websocket-client     1.6.1
wheel                0.34.2
xlrd                 1.2.0
zipp                 3.15.0
Sicrve11 commented 2 months ago

Thanks for providing more details, according to your feedback, I found a bug in the data format because it will be processed accordingly with different sequencing platforms when using OpenCV.

The bug has been fixed, you need to reinstall PROST and then use it, thank you very much for your bug report!

rocketeer1998 commented 2 months ago

Everything goes smoothly right now! Thanks for your quick response and debugging!

rocketeer1998 commented 1 month ago

Hi @Sicrve11 , I just want to know what will happen if I don't set the platform parameter in PROST.prepare_for_PI(adata, percentage = 0.01, platform="MERFISH") according to my data platform? For example, can I set it as MERFISH to analyze my Visium data correctly?

Sicrve11 commented 1 month ago

Thanks for your feedback! The function PROST.prepare_for_PI has two platform modes: visium and others. visium is the default parameter, and if you want to analyze the other platform data, you can directly input the corresponding platform name, such as platform="merfish", or other non "visium" string. The purpose of distinguishing visium here is mainly to eliminate the interval brought by the 6-neighborhood of the visium platform.

rocketeer1998 commented 1 month ago

What do you think it will happen when i analyze MERFISH data in visium mode?