Added ISS support of Sanger data format - #75

Merged
LucaMarconato merged 14 commits into
scverse:mainfrom
BioinfoTongLI:main
May 7, 2024
Merged

Added ISS support of Sanger data format#75
LucaMarconato merged 14 commits into
scverse:mainfrom
BioinfoTongLI:main

Conversation

@BioinfoTongLI

Copy link
Copy Markdown
Contributor

No description provided.

@codecov-commenter

codecov-commenter commented Aug 7, 2023

Copy link
Copy Markdown

Codecov Report

Merging #75 (3b3763b) into main (755d475) will increase coverage by 0.07%.
Report is 41 commits behind head on main.
The diff coverage is 36.84%.

Additional details and impacted files
@@ Coverage Diff @@## main #75 +/- ##
==========================================
+ Coverage 41.92% 42.00% +0.07% 
==========================================
Files 16 17 +1 Lines 854 900 +46 ==========================================
+ Hits 358 378 +20 - Misses 496 522 +26 
FilesCoverage Δ
src/spatialdata_io/__init__.py100.00% <100.00%> (ø)
src/spatialdata_io/_constants/_constants.py100.00% <100.00%> (ø)
src/spatialdata_io/readers/experimental/iss.py53.33% <53.33%> (ø)
src/spatialdata_io/readers/merscope.py25.00% <8.33%> (-2.03%)⬇️

... and 1 file with indirect coverage changes

@LucaMarconato

Copy link
Copy Markdown
Member

Thank for the PR!

@giovp the PR enables the support for ISS data. ISS data doesn't come as a commercial format or as the output of a pipeline. I discussed with Tong about supporting readers for non-standard techs, and I think that even if this reader would not be guaranteed to work out-of-the-box like for the other techs, I can see it being helpful for the users as a starting point to build a customize reader for the data.

Wdyt, do you think it could be merged (maybe after some generalization via extra parameters) or should be keep the repository strict to documented techs and maybe ask to move this as a notebook or example code, like for the docs?

@giovp

Copy link
Copy Markdown
Member

Yeah looks good to me! I honestly don't have strong opinion, I guess an idea would be to add it to a separate module called something like "experimental" or so but maybe we don't need to do that yet, and just go with this for now?

@BioinfoTongLI

Copy link
Copy Markdown
ContributorAuthor

experimental does make more sense to me. And it also correctly refects my understanding of SpatialData :)

Comment threadsrc/spatialdata_io/readers/experimental/iss.py Outdated
Comment threadsrc/spatialdata_io/readers/experimental/iss.py Outdated
Comment threadsrc/spatialdata_io/readers/experimental/iss.py Outdated
@LucaMarconato

LucaMarconato commented Feb 9, 2024

Copy link
Copy Markdown
Member

Hi @BioinfoTongLI, getting back to this, sorry quite some time passed. I have added my review.

  • Do you have some public data that I could use to test this? In addition also non-public data would work if you could share it with me (please share to me via Zulip).

A few additional quick comments, after this we could merge. If you can share the data I can also quickly cover the following tasks.

  • Can you please remove change the __init__.py files so that we use from spatialdata_io.experimental import iss and not from spatialdata_io import iss.
  • Please update the changelog to reflect the new added function of this PR.
  • Please update api.md with a new section so the docs also show the experimental readers.

Thanks!

@melonora

Copy link
Copy Markdown
Collaborator

@LucaMarconato What is the status?

@LucaMarconato

Copy link
Copy Markdown
Member

Checking this today. @BioinfoTongLI is it ok if I rehost the data that you gave me?

The data has a T channel (in the screenshot I show the labels). We currently don't support T, so I need to remove it to be able to test the reader. I would upload the data for T=0.

Also, in the future it will be useful to parse the dims directly from the omero metadata when available. It's something that we want to do and when done this reader would benefit from it by become more general.

image

@LucaMarconato

Copy link
Copy Markdown
Member

@BioinfoTongLI there is a problem with the data you shared. These is the AnnData table:

Out[15]: celltype region
61793 PAX3+MyoProg region_labels_image
61147 PAX7+MyoProg region_labels_image
59104 TransMes region_labels_image
58640 Mes1 region_labels_image
62107 PAX7+MyoProg region_labels_image
61720 PAX7+MyoProg region_labels_image
61020 InterZone region_labels_image
59316 ProxMes region_labels_image

And these are the unique IDs from the labels object.

Out[6]: Index([0, 28222, 28462, 28574, 29455, 29524, 29816, 29852, 30020], dtype='uint32')

Therefore the table is not annotating the labels. I will merge the PR anyway, but please when you have time it would be convenient if you could point to/share some public data (or data that I can upload to our public S3 storage) with correct table <> labels matching, so that in the future we can keep testing the dataset.

@LucaMarconato

Copy link
Copy Markdown
Member

Tested and ready to merge, @BioinfoTongLI thanks for the PR! (my comment above is still valid, please check it if you have time).

@LucaMarconato
LucaMarconato merged commit 7427003 into scverse:mainMay 7, 2024
@BioinfoTongLI

Copy link
Copy Markdown
ContributorAuthor

Hi @LucaMarconato , sorry for being silent for a while. I've uploaded another similar dataset onto Zenodo. I've checked the label image and the h5ad is matching this time. Hope that's what you're expecting?
please lmk if there's any other issue.
Best,
Tong

@LucaMarconato

LucaMarconato commented Jun 24, 2024

Copy link
Copy Markdown
Member

Thanks for sharing the new data. I have tried the reader with the new data and noticed that some small fixes were required in the reader (already merged here #164). I think the reader works correctly.

I have used this code to read and visualize the data:

##fromspatialdata_io.experimentalimportissf='/Users/macbook/Downloads/10887810'sdata=iss(f, raw_relative_path='raw.ome.tif', labels_relative_path='label.ome.tif', h5ad_relative_path='iss.h5ad')
fromnapari_spatialdataimportInteractiveInteractive(sdata)

This is the plot that I get in napari (I am showing the instance_id column).
image

The black parts of the plot are the background, while the gray areas indicate pixels that have no corresponding annotation in the table (maybe cells that have been filtered out).

Precisely, we have that this code

fromspatialdataimportget_element_instanceslabels_ids=get_element_instances(sdata['region_labels_image'])
table_ids=sdata['table'].obs['instance_id']
assertset(table_ids).issubset(set(labels_ids))
print(set(labels_ids).difference(set(table_ids)))

gives this:

{0, 43026, 38421, 42526, 42530, 37925, 35385, 37955, 37444, 40004, 41030, 40538, 42586, 39002, 36444, 38493, 35427, 38503, 35953, 41074, 36994, 43650, 36997, 43655, 42641, 40084, 40087, 35996, 40608, 39601, 35520, 41670, 35528, 40145, 37588, 40162, 36583, 40679, 39665, 36084, 40700, 41725, 43276, 42777, 43807, 35623, 41267, 39223, 35641, 39737, 40250, 41790, 39236, 43851, 37708, 42835, 43867, 42334, 42846, 37728, 38755, 38253, 35694, 43375, 38264, 38784, 39811, 39317, 37782, 43415, 37271, 42389, 35738, 42906, 38814, 36261, 36265, 38313, 41901, 43454, 39881, 42443, 39894, 43480, 38875, 37343, 43489, 41960, 39402, 38380, 40941, 37362}

Do you expect some cells not to be annotated by the table? (In any case, the reader seems to work correctly).

@BioinfoTongLI

Copy link
Copy Markdown
ContributorAuthor

Do you expect some cells not to be annotated by the table? (In any case, the reader seems to work correctly).

Yes, those are the cells been discarded in the single-cell processing steps. I forgot to mention that!

Very nice! Thanks for checking!

lucas-diedrich pushed a commit to lucas-diedrich/spatialdata-io that referenced this pull request Nov 26, 2024
Added ISS support of Sanger data format
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@BioinfoTongLI@codecov-commenter@LucaMarconato@giovp@melonora
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Added ISS support of Sanger data format - #75

Merged
LucaMarconato merged 14 commits into
scverse:mainfrom
BioinfoTongLI:main
May 7, 2024
Merged

Added ISS support of Sanger data format#75
LucaMarconato merged 14 commits into
scverse:mainfrom
BioinfoTongLI:main

Conversation

@BioinfoTongLI

Copy link
Copy Markdown
Contributor

No description provided.

@codecov-commenter

codecov-commenter commented Aug 7, 2023

Copy link
Copy Markdown

Codecov Report

Merging #75 (3b3763b) into main (755d475) will increase coverage by 0.07%.
Report is 41 commits behind head on main.
The diff coverage is 36.84%.

Additional details and impacted files
@@ Coverage Diff @@## main #75 +/- ##
==========================================
+ Coverage 41.92% 42.00% +0.07% 
==========================================
Files 16 17 +1 Lines 854 900 +46 ==========================================
+ Hits 358 378 +20 - Misses 496 522 +26 
FilesCoverage Δ
src/spatialdata_io/__init__.py100.00% <100.00%> (ø)
src/spatialdata_io/_constants/_constants.py100.00% <100.00%> (ø)
src/spatialdata_io/readers/experimental/iss.py53.33% <53.33%> (ø)
src/spatialdata_io/readers/merscope.py25.00% <8.33%> (-2.03%)⬇️

... and 1 file with indirect coverage changes

@LucaMarconato

Copy link
Copy Markdown
Member

Thank for the PR!

@giovp the PR enables the support for ISS data. ISS data doesn't come as a commercial format or as the output of a pipeline. I discussed with Tong about supporting readers for non-standard techs, and I think that even if this reader would not be guaranteed to work out-of-the-box like for the other techs, I can see it being helpful for the users as a starting point to build a customize reader for the data.

Wdyt, do you think it could be merged (maybe after some generalization via extra parameters) or should be keep the repository strict to documented techs and maybe ask to move this as a notebook or example code, like for the docs?

@giovp

Copy link
Copy Markdown
Member

Yeah looks good to me! I honestly don't have strong opinion, I guess an idea would be to add it to a separate module called something like "experimental" or so but maybe we don't need to do that yet, and just go with this for now?

@BioinfoTongLI

Copy link
Copy Markdown
ContributorAuthor

experimental does make more sense to me. And it also correctly refects my understanding of SpatialData :)

Comment threadsrc/spatialdata_io/readers/experimental/iss.py Outdated
Comment threadsrc/spatialdata_io/readers/experimental/iss.py Outdated
Comment threadsrc/spatialdata_io/readers/experimental/iss.py Outdated
@LucaMarconato

LucaMarconato commented Feb 9, 2024

Copy link
Copy Markdown
Member

Hi @BioinfoTongLI, getting back to this, sorry quite some time passed. I have added my review.

  • Do you have some public data that I could use to test this? In addition also non-public data would work if you could share it with me (please share to me via Zulip).

A few additional quick comments, after this we could merge. If you can share the data I can also quickly cover the following tasks.

  • Can you please remove change the __init__.py files so that we use from spatialdata_io.experimental import iss and not from spatialdata_io import iss.
  • Please update the changelog to reflect the new added function of this PR.
  • Please update api.md with a new section so the docs also show the experimental readers.

Thanks!

@melonora

Copy link
Copy Markdown
Collaborator

@LucaMarconato What is the status?

@LucaMarconato

Copy link
Copy Markdown
Member

Checking this today. @BioinfoTongLI is it ok if I rehost the data that you gave me?

The data has a T channel (in the screenshot I show the labels). We currently don't support T, so I need to remove it to be able to test the reader. I would upload the data for T=0.

Also, in the future it will be useful to parse the dims directly from the omero metadata when available. It's something that we want to do and when done this reader would benefit from it by become more general.

image

@LucaMarconato

Copy link
Copy Markdown
Member

@BioinfoTongLI there is a problem with the data you shared. These is the AnnData table:

Out[15]: celltype region
61793 PAX3+MyoProg region_labels_image
61147 PAX7+MyoProg region_labels_image
59104 TransMes region_labels_image
58640 Mes1 region_labels_image
62107 PAX7+MyoProg region_labels_image
61720 PAX7+MyoProg region_labels_image
61020 InterZone region_labels_image
59316 ProxMes region_labels_image

And these are the unique IDs from the labels object.

Out[6]: Index([0, 28222, 28462, 28574, 29455, 29524, 29816, 29852, 30020], dtype='uint32')

Therefore the table is not annotating the labels. I will merge the PR anyway, but please when you have time it would be convenient if you could point to/share some public data (or data that I can upload to our public S3 storage) with correct table <> labels matching, so that in the future we can keep testing the dataset.

@LucaMarconato

Copy link
Copy Markdown
Member

Tested and ready to merge, @BioinfoTongLI thanks for the PR! (my comment above is still valid, please check it if you have time).

@LucaMarconato
LucaMarconato merged commit 7427003 into scverse:mainMay 7, 2024
@BioinfoTongLI

Copy link
Copy Markdown
ContributorAuthor

Hi @LucaMarconato , sorry for being silent for a while. I've uploaded another similar dataset onto Zenodo. I've checked the label image and the h5ad is matching this time. Hope that's what you're expecting?
please lmk if there's any other issue.
Best,
Tong

@LucaMarconato

LucaMarconato commented Jun 24, 2024

Copy link
Copy Markdown
Member

Thanks for sharing the new data. I have tried the reader with the new data and noticed that some small fixes were required in the reader (already merged here #164). I think the reader works correctly.

I have used this code to read and visualize the data:

##fromspatialdata_io.experimentalimportissf='/Users/macbook/Downloads/10887810'sdata=iss(f, raw_relative_path='raw.ome.tif', labels_relative_path='label.ome.tif', h5ad_relative_path='iss.h5ad')
fromnapari_spatialdataimportInteractiveInteractive(sdata)

This is the plot that I get in napari (I am showing the instance_id column).
image

The black parts of the plot are the background, while the gray areas indicate pixels that have no corresponding annotation in the table (maybe cells that have been filtered out).

Precisely, we have that this code

fromspatialdataimportget_element_instanceslabels_ids=get_element_instances(sdata['region_labels_image'])
table_ids=sdata['table'].obs['instance_id']
assertset(table_ids).issubset(set(labels_ids))
print(set(labels_ids).difference(set(table_ids)))

gives this:

{0, 43026, 38421, 42526, 42530, 37925, 35385, 37955, 37444, 40004, 41030, 40538, 42586, 39002, 36444, 38493, 35427, 38503, 35953, 41074, 36994, 43650, 36997, 43655, 42641, 40084, 40087, 35996, 40608, 39601, 35520, 41670, 35528, 40145, 37588, 40162, 36583, 40679, 39665, 36084, 40700, 41725, 43276, 42777, 43807, 35623, 41267, 39223, 35641, 39737, 40250, 41790, 39236, 43851, 37708, 42835, 43867, 42334, 42846, 37728, 38755, 38253, 35694, 43375, 38264, 38784, 39811, 39317, 37782, 43415, 37271, 42389, 35738, 42906, 38814, 36261, 36265, 38313, 41901, 43454, 39881, 42443, 39894, 43480, 38875, 37343, 43489, 41960, 39402, 38380, 40941, 37362}

Do you expect some cells not to be annotated by the table? (In any case, the reader seems to work correctly).

@BioinfoTongLI

Copy link
Copy Markdown
ContributorAuthor

Do you expect some cells not to be annotated by the table? (In any case, the reader seems to work correctly).

Yes, those are the cells been discarded in the single-cell processing steps. I forgot to mention that!

Very nice! Thanks for checking!

lucas-diedrich pushed a commit to lucas-diedrich/spatialdata-io that referenced this pull request Nov 26, 2024
Added ISS support of Sanger data format
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@BioinfoTongLI@codecov-commenter@LucaMarconato@giovp@melonora
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Added ISS support of Sanger data format - #75

Merged
LucaMarconato merged 14 commits into
scverse:mainfrom
BioinfoTongLI:main
May 7, 2024
Merged

Added ISS support of Sanger data format#75
LucaMarconato merged 14 commits into
scverse:mainfrom
BioinfoTongLI:main

Conversation

@BioinfoTongLI

Copy link
Copy Markdown
Contributor

No description provided.

@codecov-commenter

codecov-commenter commented Aug 7, 2023

Copy link
Copy Markdown

Codecov Report

Merging #75 (3b3763b) into main (755d475) will increase coverage by 0.07%.
Report is 41 commits behind head on main.
The diff coverage is 36.84%.

Additional details and impacted files
@@ Coverage Diff @@## main #75 +/- ##
==========================================
+ Coverage 41.92% 42.00% +0.07% 
==========================================
Files 16 17 +1 Lines 854 900 +46 ==========================================
+ Hits 358 378 +20 - Misses 496 522 +26 
FilesCoverage Δ
src/spatialdata_io/__init__.py100.00% <100.00%> (ø)
src/spatialdata_io/_constants/_constants.py100.00% <100.00%> (ø)
src/spatialdata_io/readers/experimental/iss.py53.33% <53.33%> (ø)
src/spatialdata_io/readers/merscope.py25.00% <8.33%> (-2.03%)⬇️

... and 1 file with indirect coverage changes

@LucaMarconato

Copy link
Copy Markdown
Member

Thank for the PR!

@giovp the PR enables the support for ISS data. ISS data doesn't come as a commercial format or as the output of a pipeline. I discussed with Tong about supporting readers for non-standard techs, and I think that even if this reader would not be guaranteed to work out-of-the-box like for the other techs, I can see it being helpful for the users as a starting point to build a customize reader for the data.

Wdyt, do you think it could be merged (maybe after some generalization via extra parameters) or should be keep the repository strict to documented techs and maybe ask to move this as a notebook or example code, like for the docs?

@giovp

Copy link
Copy Markdown
Member

Yeah looks good to me! I honestly don't have strong opinion, I guess an idea would be to add it to a separate module called something like "experimental" or so but maybe we don't need to do that yet, and just go with this for now?

@BioinfoTongLI

Copy link
Copy Markdown
ContributorAuthor

experimental does make more sense to me. And it also correctly refects my understanding of SpatialData :)

Comment threadsrc/spatialdata_io/readers/experimental/iss.py Outdated
Comment threadsrc/spatialdata_io/readers/experimental/iss.py Outdated
Comment threadsrc/spatialdata_io/readers/experimental/iss.py Outdated
@LucaMarconato

LucaMarconato commented Feb 9, 2024

Copy link
Copy Markdown
Member

Hi @BioinfoTongLI, getting back to this, sorry quite some time passed. I have added my review.

  • Do you have some public data that I could use to test this? In addition also non-public data would work if you could share it with me (please share to me via Zulip).

A few additional quick comments, after this we could merge. If you can share the data I can also quickly cover the following tasks.

  • Can you please remove change the __init__.py files so that we use from spatialdata_io.experimental import iss and not from spatialdata_io import iss.
  • Please update the changelog to reflect the new added function of this PR.
  • Please update api.md with a new section so the docs also show the experimental readers.

Thanks!

@melonora

Copy link
Copy Markdown
Collaborator

@LucaMarconato What is the status?

@LucaMarconato

Copy link
Copy Markdown
Member

Checking this today. @BioinfoTongLI is it ok if I rehost the data that you gave me?

The data has a T channel (in the screenshot I show the labels). We currently don't support T, so I need to remove it to be able to test the reader. I would upload the data for T=0.

Also, in the future it will be useful to parse the dims directly from the omero metadata when available. It's something that we want to do and when done this reader would benefit from it by become more general.

image

@LucaMarconato

Copy link
Copy Markdown
Member

@BioinfoTongLI there is a problem with the data you shared. These is the AnnData table:

Out[15]: celltype region
61793 PAX3+MyoProg region_labels_image
61147 PAX7+MyoProg region_labels_image
59104 TransMes region_labels_image
58640 Mes1 region_labels_image
62107 PAX7+MyoProg region_labels_image
61720 PAX7+MyoProg region_labels_image
61020 InterZone region_labels_image
59316 ProxMes region_labels_image

And these are the unique IDs from the labels object.

Out[6]: Index([0, 28222, 28462, 28574, 29455, 29524, 29816, 29852, 30020], dtype='uint32')

Therefore the table is not annotating the labels. I will merge the PR anyway, but please when you have time it would be convenient if you could point to/share some public data (or data that I can upload to our public S3 storage) with correct table <> labels matching, so that in the future we can keep testing the dataset.

@LucaMarconato

Copy link
Copy Markdown
Member

Tested and ready to merge, @BioinfoTongLI thanks for the PR! (my comment above is still valid, please check it if you have time).

@LucaMarconato
LucaMarconato merged commit 7427003 into scverse:mainMay 7, 2024
@BioinfoTongLI

Copy link
Copy Markdown
ContributorAuthor

Hi @LucaMarconato , sorry for being silent for a while. I've uploaded another similar dataset onto Zenodo. I've checked the label image and the h5ad is matching this time. Hope that's what you're expecting?
please lmk if there's any other issue.
Best,
Tong

@LucaMarconato

LucaMarconato commented Jun 24, 2024

Copy link
Copy Markdown
Member

Thanks for sharing the new data. I have tried the reader with the new data and noticed that some small fixes were required in the reader (already merged here #164). I think the reader works correctly.

I have used this code to read and visualize the data:

##fromspatialdata_io.experimentalimportissf='/Users/macbook/Downloads/10887810'sdata=iss(f, raw_relative_path='raw.ome.tif', labels_relative_path='label.ome.tif', h5ad_relative_path='iss.h5ad')
fromnapari_spatialdataimportInteractiveInteractive(sdata)

This is the plot that I get in napari (I am showing the instance_id column).
image

The black parts of the plot are the background, while the gray areas indicate pixels that have no corresponding annotation in the table (maybe cells that have been filtered out).

Precisely, we have that this code

fromspatialdataimportget_element_instanceslabels_ids=get_element_instances(sdata['region_labels_image'])
table_ids=sdata['table'].obs['instance_id']
assertset(table_ids).issubset(set(labels_ids))
print(set(labels_ids).difference(set(table_ids)))

gives this:

{0, 43026, 38421, 42526, 42530, 37925, 35385, 37955, 37444, 40004, 41030, 40538, 42586, 39002, 36444, 38493, 35427, 38503, 35953, 41074, 36994, 43650, 36997, 43655, 42641, 40084, 40087, 35996, 40608, 39601, 35520, 41670, 35528, 40145, 37588, 40162, 36583, 40679, 39665, 36084, 40700, 41725, 43276, 42777, 43807, 35623, 41267, 39223, 35641, 39737, 40250, 41790, 39236, 43851, 37708, 42835, 43867, 42334, 42846, 37728, 38755, 38253, 35694, 43375, 38264, 38784, 39811, 39317, 37782, 43415, 37271, 42389, 35738, 42906, 38814, 36261, 36265, 38313, 41901, 43454, 39881, 42443, 39894, 43480, 38875, 37343, 43489, 41960, 39402, 38380, 40941, 37362}

Do you expect some cells not to be annotated by the table? (In any case, the reader seems to work correctly).

@BioinfoTongLI

Copy link
Copy Markdown
ContributorAuthor

Do you expect some cells not to be annotated by the table? (In any case, the reader seems to work correctly).

Yes, those are the cells been discarded in the single-cell processing steps. I forgot to mention that!

Very nice! Thanks for checking!

lucas-diedrich pushed a commit to lucas-diedrich/spatialdata-io that referenced this pull request Nov 26, 2024
Added ISS support of Sanger data format
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@BioinfoTongLI@codecov-commenter@LucaMarconato@giovp@melonora
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Added ISS support of Sanger data format - #75

Merged
LucaMarconato merged 14 commits into
scverse:mainfrom
BioinfoTongLI:main
May 7, 2024
Merged

Added ISS support of Sanger data format#75
LucaMarconato merged 14 commits into
scverse:mainfrom
BioinfoTongLI:main

Conversation

@BioinfoTongLI

Copy link
Copy Markdown
Contributor

No description provided.

@codecov-commenter

codecov-commenter commented Aug 7, 2023

Copy link
Copy Markdown

Codecov Report

Merging #75 (3b3763b) into main (755d475) will increase coverage by 0.07%.
Report is 41 commits behind head on main.
The diff coverage is 36.84%.

Additional details and impacted files
@@ Coverage Diff @@## main #75 +/- ##
==========================================
+ Coverage 41.92% 42.00% +0.07% 
==========================================
Files 16 17 +1 Lines 854 900 +46 ==========================================
+ Hits 358 378 +20 - Misses 496 522 +26 
FilesCoverage Δ
src/spatialdata_io/__init__.py100.00% <100.00%> (ø)
src/spatialdata_io/_constants/_constants.py100.00% <100.00%> (ø)
src/spatialdata_io/readers/experimental/iss.py53.33% <53.33%> (ø)
src/spatialdata_io/readers/merscope.py25.00% <8.33%> (-2.03%)⬇️

... and 1 file with indirect coverage changes

@LucaMarconato

Copy link
Copy Markdown
Member

Thank for the PR!

@giovp the PR enables the support for ISS data. ISS data doesn't come as a commercial format or as the output of a pipeline. I discussed with Tong about supporting readers for non-standard techs, and I think that even if this reader would not be guaranteed to work out-of-the-box like for the other techs, I can see it being helpful for the users as a starting point to build a customize reader for the data.

Wdyt, do you think it could be merged (maybe after some generalization via extra parameters) or should be keep the repository strict to documented techs and maybe ask to move this as a notebook or example code, like for the docs?

@giovp

Copy link
Copy Markdown
Member

Yeah looks good to me! I honestly don't have strong opinion, I guess an idea would be to add it to a separate module called something like "experimental" or so but maybe we don't need to do that yet, and just go with this for now?

@BioinfoTongLI

Copy link
Copy Markdown
ContributorAuthor

experimental does make more sense to me. And it also correctly refects my understanding of SpatialData :)

Comment threadsrc/spatialdata_io/readers/experimental/iss.py Outdated
Comment threadsrc/spatialdata_io/readers/experimental/iss.py Outdated
Comment threadsrc/spatialdata_io/readers/experimental/iss.py Outdated
@LucaMarconato

LucaMarconato commented Feb 9, 2024

Copy link
Copy Markdown
Member

Hi @BioinfoTongLI, getting back to this, sorry quite some time passed. I have added my review.

  • Do you have some public data that I could use to test this? In addition also non-public data would work if you could share it with me (please share to me via Zulip).

A few additional quick comments, after this we could merge. If you can share the data I can also quickly cover the following tasks.

  • Can you please remove change the __init__.py files so that we use from spatialdata_io.experimental import iss and not from spatialdata_io import iss.
  • Please update the changelog to reflect the new added function of this PR.
  • Please update api.md with a new section so the docs also show the experimental readers.

Thanks!

@melonora

Copy link
Copy Markdown
Collaborator

@LucaMarconato What is the status?

@LucaMarconato

Copy link
Copy Markdown
Member

Checking this today. @BioinfoTongLI is it ok if I rehost the data that you gave me?

The data has a T channel (in the screenshot I show the labels). We currently don't support T, so I need to remove it to be able to test the reader. I would upload the data for T=0.

Also, in the future it will be useful to parse the dims directly from the omero metadata when available. It's something that we want to do and when done this reader would benefit from it by become more general.

image

@LucaMarconato

Copy link
Copy Markdown
Member

@BioinfoTongLI there is a problem with the data you shared. These is the AnnData table:

Out[15]: celltype region
61793 PAX3+MyoProg region_labels_image
61147 PAX7+MyoProg region_labels_image
59104 TransMes region_labels_image
58640 Mes1 region_labels_image
62107 PAX7+MyoProg region_labels_image
61720 PAX7+MyoProg region_labels_image
61020 InterZone region_labels_image
59316 ProxMes region_labels_image

And these are the unique IDs from the labels object.

Out[6]: Index([0, 28222, 28462, 28574, 29455, 29524, 29816, 29852, 30020], dtype='uint32')

Therefore the table is not annotating the labels. I will merge the PR anyway, but please when you have time it would be convenient if you could point to/share some public data (or data that I can upload to our public S3 storage) with correct table <> labels matching, so that in the future we can keep testing the dataset.

@LucaMarconato

Copy link
Copy Markdown
Member

Tested and ready to merge, @BioinfoTongLI thanks for the PR! (my comment above is still valid, please check it if you have time).

@LucaMarconato
LucaMarconato merged commit 7427003 into scverse:mainMay 7, 2024
@BioinfoTongLI

Copy link
Copy Markdown
ContributorAuthor

Hi @LucaMarconato , sorry for being silent for a while. I've uploaded another similar dataset onto Zenodo. I've checked the label image and the h5ad is matching this time. Hope that's what you're expecting?
please lmk if there's any other issue.
Best,
Tong

@LucaMarconato

LucaMarconato commented Jun 24, 2024

Copy link
Copy Markdown
Member

Thanks for sharing the new data. I have tried the reader with the new data and noticed that some small fixes were required in the reader (already merged here #164). I think the reader works correctly.

I have used this code to read and visualize the data:

##fromspatialdata_io.experimentalimportissf='/Users/macbook/Downloads/10887810'sdata=iss(f, raw_relative_path='raw.ome.tif', labels_relative_path='label.ome.tif', h5ad_relative_path='iss.h5ad')
fromnapari_spatialdataimportInteractiveInteractive(sdata)

This is the plot that I get in napari (I am showing the instance_id column).
image

The black parts of the plot are the background, while the gray areas indicate pixels that have no corresponding annotation in the table (maybe cells that have been filtered out).

Precisely, we have that this code

fromspatialdataimportget_element_instanceslabels_ids=get_element_instances(sdata['region_labels_image'])
table_ids=sdata['table'].obs['instance_id']
assertset(table_ids).issubset(set(labels_ids))
print(set(labels_ids).difference(set(table_ids)))

gives this:

{0, 43026, 38421, 42526, 42530, 37925, 35385, 37955, 37444, 40004, 41030, 40538, 42586, 39002, 36444, 38493, 35427, 38503, 35953, 41074, 36994, 43650, 36997, 43655, 42641, 40084, 40087, 35996, 40608, 39601, 35520, 41670, 35528, 40145, 37588, 40162, 36583, 40679, 39665, 36084, 40700, 41725, 43276, 42777, 43807, 35623, 41267, 39223, 35641, 39737, 40250, 41790, 39236, 43851, 37708, 42835, 43867, 42334, 42846, 37728, 38755, 38253, 35694, 43375, 38264, 38784, 39811, 39317, 37782, 43415, 37271, 42389, 35738, 42906, 38814, 36261, 36265, 38313, 41901, 43454, 39881, 42443, 39894, 43480, 38875, 37343, 43489, 41960, 39402, 38380, 40941, 37362}

Do you expect some cells not to be annotated by the table? (In any case, the reader seems to work correctly).

@BioinfoTongLI

Copy link
Copy Markdown
ContributorAuthor

Do you expect some cells not to be annotated by the table? (In any case, the reader seems to work correctly).

Yes, those are the cells been discarded in the single-cell processing steps. I forgot to mention that!

Very nice! Thanks for checking!

lucas-diedrich pushed a commit to lucas-diedrich/spatialdata-io that referenced this pull request Nov 26, 2024
Added ISS support of Sanger data format
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@BioinfoTongLI@codecov-commenter@LucaMarconato@giovp@melonora
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Added ISS support of Sanger data format - #75

Merged
LucaMarconato merged 14 commits into
scverse:mainfrom
BioinfoTongLI:main
May 7, 2024
Merged

Added ISS support of Sanger data format#75
LucaMarconato merged 14 commits into
scverse:mainfrom
BioinfoTongLI:main

Conversation

@BioinfoTongLI

Copy link
Copy Markdown
Contributor

No description provided.

@codecov-commenter

codecov-commenter commented Aug 7, 2023

Copy link
Copy Markdown

Codecov Report

Merging #75 (3b3763b) into main (755d475) will increase coverage by 0.07%.
Report is 41 commits behind head on main.
The diff coverage is 36.84%.

Additional details and impacted files
@@ Coverage Diff @@## main #75 +/- ##
==========================================
+ Coverage 41.92% 42.00% +0.07% 
==========================================
Files 16 17 +1 Lines 854 900 +46 ==========================================
+ Hits 358 378 +20 - Misses 496 522 +26 
FilesCoverage Δ
src/spatialdata_io/__init__.py100.00% <100.00%> (ø)
src/spatialdata_io/_constants/_constants.py100.00% <100.00%> (ø)
src/spatialdata_io/readers/experimental/iss.py53.33% <53.33%> (ø)
src/spatialdata_io/readers/merscope.py25.00% <8.33%> (-2.03%)⬇️

... and 1 file with indirect coverage changes

@LucaMarconato

Copy link
Copy Markdown
Member

Thank for the PR!

@giovp the PR enables the support for ISS data. ISS data doesn't come as a commercial format or as the output of a pipeline. I discussed with Tong about supporting readers for non-standard techs, and I think that even if this reader would not be guaranteed to work out-of-the-box like for the other techs, I can see it being helpful for the users as a starting point to build a customize reader for the data.

Wdyt, do you think it could be merged (maybe after some generalization via extra parameters) or should be keep the repository strict to documented techs and maybe ask to move this as a notebook or example code, like for the docs?

@giovp

Copy link
Copy Markdown
Member

Yeah looks good to me! I honestly don't have strong opinion, I guess an idea would be to add it to a separate module called something like "experimental" or so but maybe we don't need to do that yet, and just go with this for now?

@BioinfoTongLI

Copy link
Copy Markdown
ContributorAuthor

experimental does make more sense to me. And it also correctly refects my understanding of SpatialData :)

Comment threadsrc/spatialdata_io/readers/experimental/iss.py Outdated
Comment threadsrc/spatialdata_io/readers/experimental/iss.py Outdated
Comment threadsrc/spatialdata_io/readers/experimental/iss.py Outdated
@LucaMarconato

LucaMarconato commented Feb 9, 2024

Copy link
Copy Markdown
Member

Hi @BioinfoTongLI, getting back to this, sorry quite some time passed. I have added my review.

  • Do you have some public data that I could use to test this? In addition also non-public data would work if you could share it with me (please share to me via Zulip).

A few additional quick comments, after this we could merge. If you can share the data I can also quickly cover the following tasks.

  • Can you please remove change the __init__.py files so that we use from spatialdata_io.experimental import iss and not from spatialdata_io import iss.
  • Please update the changelog to reflect the new added function of this PR.
  • Please update api.md with a new section so the docs also show the experimental readers.

Thanks!

@melonora

Copy link
Copy Markdown
Collaborator

@LucaMarconato What is the status?

@LucaMarconato

Copy link
Copy Markdown
Member

Checking this today. @BioinfoTongLI is it ok if I rehost the data that you gave me?

The data has a T channel (in the screenshot I show the labels). We currently don't support T, so I need to remove it to be able to test the reader. I would upload the data for T=0.

Also, in the future it will be useful to parse the dims directly from the omero metadata when available. It's something that we want to do and when done this reader would benefit from it by become more general.

image

@LucaMarconato

Copy link
Copy Markdown
Member

@BioinfoTongLI there is a problem with the data you shared. These is the AnnData table:

Out[15]: celltype region
61793 PAX3+MyoProg region_labels_image
61147 PAX7+MyoProg region_labels_image
59104 TransMes region_labels_image
58640 Mes1 region_labels_image
62107 PAX7+MyoProg region_labels_image
61720 PAX7+MyoProg region_labels_image
61020 InterZone region_labels_image
59316 ProxMes region_labels_image

And these are the unique IDs from the labels object.

Out[6]: Index([0, 28222, 28462, 28574, 29455, 29524, 29816, 29852, 30020], dtype='uint32')

Therefore the table is not annotating the labels. I will merge the PR anyway, but please when you have time it would be convenient if you could point to/share some public data (or data that I can upload to our public S3 storage) with correct table <> labels matching, so that in the future we can keep testing the dataset.

@LucaMarconato

Copy link
Copy Markdown
Member

Tested and ready to merge, @BioinfoTongLI thanks for the PR! (my comment above is still valid, please check it if you have time).

@LucaMarconato
LucaMarconato merged commit 7427003 into scverse:mainMay 7, 2024
@BioinfoTongLI

Copy link
Copy Markdown
ContributorAuthor

Hi @LucaMarconato , sorry for being silent for a while. I've uploaded another similar dataset onto Zenodo. I've checked the label image and the h5ad is matching this time. Hope that's what you're expecting?
please lmk if there's any other issue.
Best,
Tong

@LucaMarconato

LucaMarconato commented Jun 24, 2024

Copy link
Copy Markdown
Member

Thanks for sharing the new data. I have tried the reader with the new data and noticed that some small fixes were required in the reader (already merged here #164). I think the reader works correctly.

I have used this code to read and visualize the data:

##fromspatialdata_io.experimentalimportissf='/Users/macbook/Downloads/10887810'sdata=iss(f, raw_relative_path='raw.ome.tif', labels_relative_path='label.ome.tif', h5ad_relative_path='iss.h5ad')
fromnapari_spatialdataimportInteractiveInteractive(sdata)

This is the plot that I get in napari (I am showing the instance_id column).
image

The black parts of the plot are the background, while the gray areas indicate pixels that have no corresponding annotation in the table (maybe cells that have been filtered out).

Precisely, we have that this code

fromspatialdataimportget_element_instanceslabels_ids=get_element_instances(sdata['region_labels_image'])
table_ids=sdata['table'].obs['instance_id']
assertset(table_ids).issubset(set(labels_ids))
print(set(labels_ids).difference(set(table_ids)))

gives this:

{0, 43026, 38421, 42526, 42530, 37925, 35385, 37955, 37444, 40004, 41030, 40538, 42586, 39002, 36444, 38493, 35427, 38503, 35953, 41074, 36994, 43650, 36997, 43655, 42641, 40084, 40087, 35996, 40608, 39601, 35520, 41670, 35528, 40145, 37588, 40162, 36583, 40679, 39665, 36084, 40700, 41725, 43276, 42777, 43807, 35623, 41267, 39223, 35641, 39737, 40250, 41790, 39236, 43851, 37708, 42835, 43867, 42334, 42846, 37728, 38755, 38253, 35694, 43375, 38264, 38784, 39811, 39317, 37782, 43415, 37271, 42389, 35738, 42906, 38814, 36261, 36265, 38313, 41901, 43454, 39881, 42443, 39894, 43480, 38875, 37343, 43489, 41960, 39402, 38380, 40941, 37362}

Do you expect some cells not to be annotated by the table? (In any case, the reader seems to work correctly).

@BioinfoTongLI

Copy link
Copy Markdown
ContributorAuthor

Do you expect some cells not to be annotated by the table? (In any case, the reader seems to work correctly).

Yes, those are the cells been discarded in the single-cell processing steps. I forgot to mention that!

Very nice! Thanks for checking!

lucas-diedrich pushed a commit to lucas-diedrich/spatialdata-io that referenced this pull request Nov 26, 2024
Added ISS support of Sanger data format
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@BioinfoTongLI@codecov-commenter@LucaMarconato@giovp@melonora
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Added ISS support of Sanger data format - #75

Merged
LucaMarconato merged 14 commits into
scverse:mainfrom
BioinfoTongLI:main
May 7, 2024
Merged

Added ISS support of Sanger data format#75
LucaMarconato merged 14 commits into
scverse:mainfrom
BioinfoTongLI:main

Conversation

@BioinfoTongLI

Copy link
Copy Markdown
Contributor

No description provided.

@codecov-commenter

codecov-commenter commented Aug 7, 2023

Copy link
Copy Markdown

Codecov Report

Merging #75 (3b3763b) into main (755d475) will increase coverage by 0.07%.
Report is 41 commits behind head on main.
The diff coverage is 36.84%.

Additional details and impacted files
@@ Coverage Diff @@## main #75 +/- ##
==========================================
+ Coverage 41.92% 42.00% +0.07% 
==========================================
Files 16 17 +1 Lines 854 900 +46 ==========================================
+ Hits 358 378 +20 - Misses 496 522 +26 
FilesCoverage Δ
src/spatialdata_io/__init__.py100.00% <100.00%> (ø)
src/spatialdata_io/_constants/_constants.py100.00% <100.00%> (ø)
src/spatialdata_io/readers/experimental/iss.py53.33% <53.33%> (ø)
src/spatialdata_io/readers/merscope.py25.00% <8.33%> (-2.03%)⬇️

... and 1 file with indirect coverage changes

@LucaMarconato

Copy link
Copy Markdown
Member

Thank for the PR!

@giovp the PR enables the support for ISS data. ISS data doesn't come as a commercial format or as the output of a pipeline. I discussed with Tong about supporting readers for non-standard techs, and I think that even if this reader would not be guaranteed to work out-of-the-box like for the other techs, I can see it being helpful for the users as a starting point to build a customize reader for the data.

Wdyt, do you think it could be merged (maybe after some generalization via extra parameters) or should be keep the repository strict to documented techs and maybe ask to move this as a notebook or example code, like for the docs?

@giovp

Copy link
Copy Markdown
Member

Yeah looks good to me! I honestly don't have strong opinion, I guess an idea would be to add it to a separate module called something like "experimental" or so but maybe we don't need to do that yet, and just go with this for now?

@BioinfoTongLI

Copy link
Copy Markdown
ContributorAuthor

experimental does make more sense to me. And it also correctly refects my understanding of SpatialData :)

Comment threadsrc/spatialdata_io/readers/experimental/iss.py Outdated
Comment threadsrc/spatialdata_io/readers/experimental/iss.py Outdated
Comment threadsrc/spatialdata_io/readers/experimental/iss.py Outdated
@LucaMarconato

LucaMarconato commented Feb 9, 2024

Copy link
Copy Markdown
Member

Hi @BioinfoTongLI, getting back to this, sorry quite some time passed. I have added my review.

  • Do you have some public data that I could use to test this? In addition also non-public data would work if you could share it with me (please share to me via Zulip).

A few additional quick comments, after this we could merge. If you can share the data I can also quickly cover the following tasks.

  • Can you please remove change the __init__.py files so that we use from spatialdata_io.experimental import iss and not from spatialdata_io import iss.
  • Please update the changelog to reflect the new added function of this PR.
  • Please update api.md with a new section so the docs also show the experimental readers.

Thanks!

@melonora

Copy link
Copy Markdown
Collaborator

@LucaMarconato What is the status?

@LucaMarconato

Copy link
Copy Markdown
Member

Checking this today. @BioinfoTongLI is it ok if I rehost the data that you gave me?

The data has a T channel (in the screenshot I show the labels). We currently don't support T, so I need to remove it to be able to test the reader. I would upload the data for T=0.

Also, in the future it will be useful to parse the dims directly from the omero metadata when available. It's something that we want to do and when done this reader would benefit from it by become more general.

image

@LucaMarconato

Copy link
Copy Markdown
Member

@BioinfoTongLI there is a problem with the data you shared. These is the AnnData table:

Out[15]: celltype region
61793 PAX3+MyoProg region_labels_image
61147 PAX7+MyoProg region_labels_image
59104 TransMes region_labels_image
58640 Mes1 region_labels_image
62107 PAX7+MyoProg region_labels_image
61720 PAX7+MyoProg region_labels_image
61020 InterZone region_labels_image
59316 ProxMes region_labels_image

And these are the unique IDs from the labels object.

Out[6]: Index([0, 28222, 28462, 28574, 29455, 29524, 29816, 29852, 30020], dtype='uint32')

Therefore the table is not annotating the labels. I will merge the PR anyway, but please when you have time it would be convenient if you could point to/share some public data (or data that I can upload to our public S3 storage) with correct table <> labels matching, so that in the future we can keep testing the dataset.

@LucaMarconato

Copy link
Copy Markdown
Member

Tested and ready to merge, @BioinfoTongLI thanks for the PR! (my comment above is still valid, please check it if you have time).

@LucaMarconato
LucaMarconato merged commit 7427003 into scverse:mainMay 7, 2024
@BioinfoTongLI

Copy link
Copy Markdown
ContributorAuthor

Hi @LucaMarconato , sorry for being silent for a while. I've uploaded another similar dataset onto Zenodo. I've checked the label image and the h5ad is matching this time. Hope that's what you're expecting?
please lmk if there's any other issue.
Best,
Tong

@LucaMarconato

LucaMarconato commented Jun 24, 2024

Copy link
Copy Markdown
Member

Thanks for sharing the new data. I have tried the reader with the new data and noticed that some small fixes were required in the reader (already merged here #164). I think the reader works correctly.

I have used this code to read and visualize the data:

##fromspatialdata_io.experimentalimportissf='/Users/macbook/Downloads/10887810'sdata=iss(f, raw_relative_path='raw.ome.tif', labels_relative_path='label.ome.tif', h5ad_relative_path='iss.h5ad')
fromnapari_spatialdataimportInteractiveInteractive(sdata)

This is the plot that I get in napari (I am showing the instance_id column).
image

The black parts of the plot are the background, while the gray areas indicate pixels that have no corresponding annotation in the table (maybe cells that have been filtered out).

Precisely, we have that this code

fromspatialdataimportget_element_instanceslabels_ids=get_element_instances(sdata['region_labels_image'])
table_ids=sdata['table'].obs['instance_id']
assertset(table_ids).issubset(set(labels_ids))
print(set(labels_ids).difference(set(table_ids)))

gives this:

{0, 43026, 38421, 42526, 42530, 37925, 35385, 37955, 37444, 40004, 41030, 40538, 42586, 39002, 36444, 38493, 35427, 38503, 35953, 41074, 36994, 43650, 36997, 43655, 42641, 40084, 40087, 35996, 40608, 39601, 35520, 41670, 35528, 40145, 37588, 40162, 36583, 40679, 39665, 36084, 40700, 41725, 43276, 42777, 43807, 35623, 41267, 39223, 35641, 39737, 40250, 41790, 39236, 43851, 37708, 42835, 43867, 42334, 42846, 37728, 38755, 38253, 35694, 43375, 38264, 38784, 39811, 39317, 37782, 43415, 37271, 42389, 35738, 42906, 38814, 36261, 36265, 38313, 41901, 43454, 39881, 42443, 39894, 43480, 38875, 37343, 43489, 41960, 39402, 38380, 40941, 37362}

Do you expect some cells not to be annotated by the table? (In any case, the reader seems to work correctly).

@BioinfoTongLI

Copy link
Copy Markdown
ContributorAuthor

Do you expect some cells not to be annotated by the table? (In any case, the reader seems to work correctly).

Yes, those are the cells been discarded in the single-cell processing steps. I forgot to mention that!

Very nice! Thanks for checking!

lucas-diedrich pushed a commit to lucas-diedrich/spatialdata-io that referenced this pull request Nov 26, 2024
Added ISS support of Sanger data format
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@BioinfoTongLI@codecov-commenter@LucaMarconato@giovp@melonora
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Added ISS support of Sanger data format - #75

Merged
LucaMarconato merged 14 commits into
scverse:mainfrom
BioinfoTongLI:main
May 7, 2024
Merged

Added ISS support of Sanger data format#75
LucaMarconato merged 14 commits into
scverse:mainfrom
BioinfoTongLI:main

Conversation

@BioinfoTongLI

Copy link
Copy Markdown
Contributor

No description provided.

@codecov-commenter

codecov-commenter commented Aug 7, 2023

Copy link
Copy Markdown

Codecov Report

Merging #75 (3b3763b) into main (755d475) will increase coverage by 0.07%.
Report is 41 commits behind head on main.
The diff coverage is 36.84%.

Additional details and impacted files
@@ Coverage Diff @@## main #75 +/- ##
==========================================
+ Coverage 41.92% 42.00% +0.07% 
==========================================
Files 16 17 +1 Lines 854 900 +46 ==========================================
+ Hits 358 378 +20 - Misses 496 522 +26 
FilesCoverage Δ
src/spatialdata_io/__init__.py100.00% <100.00%> (ø)
src/spatialdata_io/_constants/_constants.py100.00% <100.00%> (ø)
src/spatialdata_io/readers/experimental/iss.py53.33% <53.33%> (ø)
src/spatialdata_io/readers/merscope.py25.00% <8.33%> (-2.03%)⬇️

... and 1 file with indirect coverage changes

@LucaMarconato

Copy link
Copy Markdown
Member

Thank for the PR!

@giovp the PR enables the support for ISS data. ISS data doesn't come as a commercial format or as the output of a pipeline. I discussed with Tong about supporting readers for non-standard techs, and I think that even if this reader would not be guaranteed to work out-of-the-box like for the other techs, I can see it being helpful for the users as a starting point to build a customize reader for the data.

Wdyt, do you think it could be merged (maybe after some generalization via extra parameters) or should be keep the repository strict to documented techs and maybe ask to move this as a notebook or example code, like for the docs?

@giovp

Copy link
Copy Markdown
Member

Yeah looks good to me! I honestly don't have strong opinion, I guess an idea would be to add it to a separate module called something like "experimental" or so but maybe we don't need to do that yet, and just go with this for now?

@BioinfoTongLI

Copy link
Copy Markdown
ContributorAuthor

experimental does make more sense to me. And it also correctly refects my understanding of SpatialData :)

Comment threadsrc/spatialdata_io/readers/experimental/iss.py Outdated
Comment threadsrc/spatialdata_io/readers/experimental/iss.py Outdated
Comment threadsrc/spatialdata_io/readers/experimental/iss.py Outdated
@LucaMarconato

LucaMarconato commented Feb 9, 2024

Copy link
Copy Markdown
Member

Hi @BioinfoTongLI, getting back to this, sorry quite some time passed. I have added my review.

  • Do you have some public data that I could use to test this? In addition also non-public data would work if you could share it with me (please share to me via Zulip).

A few additional quick comments, after this we could merge. If you can share the data I can also quickly cover the following tasks.

  • Can you please remove change the __init__.py files so that we use from spatialdata_io.experimental import iss and not from spatialdata_io import iss.
  • Please update the changelog to reflect the new added function of this PR.
  • Please update api.md with a new section so the docs also show the experimental readers.

Thanks!

@melonora

Copy link
Copy Markdown
Collaborator

@LucaMarconato What is the status?

@LucaMarconato

Copy link
Copy Markdown
Member

Checking this today. @BioinfoTongLI is it ok if I rehost the data that you gave me?

The data has a T channel (in the screenshot I show the labels). We currently don't support T, so I need to remove it to be able to test the reader. I would upload the data for T=0.

Also, in the future it will be useful to parse the dims directly from the omero metadata when available. It's something that we want to do and when done this reader would benefit from it by become more general.

image

@LucaMarconato

Copy link
Copy Markdown
Member

@BioinfoTongLI there is a problem with the data you shared. These is the AnnData table:

Out[15]: celltype region
61793 PAX3+MyoProg region_labels_image
61147 PAX7+MyoProg region_labels_image
59104 TransMes region_labels_image
58640 Mes1 region_labels_image
62107 PAX7+MyoProg region_labels_image
61720 PAX7+MyoProg region_labels_image
61020 InterZone region_labels_image
59316 ProxMes region_labels_image

And these are the unique IDs from the labels object.

Out[6]: Index([0, 28222, 28462, 28574, 29455, 29524, 29816, 29852, 30020], dtype='uint32')

Therefore the table is not annotating the labels. I will merge the PR anyway, but please when you have time it would be convenient if you could point to/share some public data (or data that I can upload to our public S3 storage) with correct table <> labels matching, so that in the future we can keep testing the dataset.

@LucaMarconato

Copy link
Copy Markdown
Member

Tested and ready to merge, @BioinfoTongLI thanks for the PR! (my comment above is still valid, please check it if you have time).

@LucaMarconato
LucaMarconato merged commit 7427003 into scverse:mainMay 7, 2024
@BioinfoTongLI

Copy link
Copy Markdown
ContributorAuthor

Hi @LucaMarconato , sorry for being silent for a while. I've uploaded another similar dataset onto Zenodo. I've checked the label image and the h5ad is matching this time. Hope that's what you're expecting?
please lmk if there's any other issue.
Best,
Tong

@LucaMarconato

LucaMarconato commented Jun 24, 2024

Copy link
Copy Markdown
Member

Thanks for sharing the new data. I have tried the reader with the new data and noticed that some small fixes were required in the reader (already merged here #164). I think the reader works correctly.

I have used this code to read and visualize the data:

##fromspatialdata_io.experimentalimportissf='/Users/macbook/Downloads/10887810'sdata=iss(f, raw_relative_path='raw.ome.tif', labels_relative_path='label.ome.tif', h5ad_relative_path='iss.h5ad')
fromnapari_spatialdataimportInteractiveInteractive(sdata)

This is the plot that I get in napari (I am showing the instance_id column).
image

The black parts of the plot are the background, while the gray areas indicate pixels that have no corresponding annotation in the table (maybe cells that have been filtered out).

Precisely, we have that this code

fromspatialdataimportget_element_instanceslabels_ids=get_element_instances(sdata['region_labels_image'])
table_ids=sdata['table'].obs['instance_id']
assertset(table_ids).issubset(set(labels_ids))
print(set(labels_ids).difference(set(table_ids)))

gives this:

{0, 43026, 38421, 42526, 42530, 37925, 35385, 37955, 37444, 40004, 41030, 40538, 42586, 39002, 36444, 38493, 35427, 38503, 35953, 41074, 36994, 43650, 36997, 43655, 42641, 40084, 40087, 35996, 40608, 39601, 35520, 41670, 35528, 40145, 37588, 40162, 36583, 40679, 39665, 36084, 40700, 41725, 43276, 42777, 43807, 35623, 41267, 39223, 35641, 39737, 40250, 41790, 39236, 43851, 37708, 42835, 43867, 42334, 42846, 37728, 38755, 38253, 35694, 43375, 38264, 38784, 39811, 39317, 37782, 43415, 37271, 42389, 35738, 42906, 38814, 36261, 36265, 38313, 41901, 43454, 39881, 42443, 39894, 43480, 38875, 37343, 43489, 41960, 39402, 38380, 40941, 37362}

Do you expect some cells not to be annotated by the table? (In any case, the reader seems to work correctly).

@BioinfoTongLI

Copy link
Copy Markdown
ContributorAuthor

Do you expect some cells not to be annotated by the table? (In any case, the reader seems to work correctly).

Yes, those are the cells been discarded in the single-cell processing steps. I forgot to mention that!

Very nice! Thanks for checking!

lucas-diedrich pushed a commit to lucas-diedrich/spatialdata-io that referenced this pull request Nov 26, 2024
Added ISS support of Sanger data format
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@BioinfoTongLI@codecov-commenter@LucaMarconato@giovp@melonora
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Added ISS support of Sanger data format - #75

Merged
LucaMarconato merged 14 commits into
scverse:mainfrom
BioinfoTongLI:main
May 7, 2024
Merged

Added ISS support of Sanger data format#75
LucaMarconato merged 14 commits into
scverse:mainfrom
BioinfoTongLI:main

Conversation

@BioinfoTongLI

Copy link
Copy Markdown
Contributor

No description provided.

@codecov-commenter

codecov-commenter commented Aug 7, 2023

Copy link
Copy Markdown

Codecov Report

Merging #75 (3b3763b) into main (755d475) will increase coverage by 0.07%.
Report is 41 commits behind head on main.
The diff coverage is 36.84%.

Additional details and impacted files
@@ Coverage Diff @@## main #75 +/- ##
==========================================
+ Coverage 41.92% 42.00% +0.07% 
==========================================
Files 16 17 +1 Lines 854 900 +46 ==========================================
+ Hits 358 378 +20 - Misses 496 522 +26 
FilesCoverage Δ
src/spatialdata_io/__init__.py100.00% <100.00%> (ø)
src/spatialdata_io/_constants/_constants.py100.00% <100.00%> (ø)
src/spatialdata_io/readers/experimental/iss.py53.33% <53.33%> (ø)
src/spatialdata_io/readers/merscope.py25.00% <8.33%> (-2.03%)⬇️

... and 1 file with indirect coverage changes

@LucaMarconato

Copy link
Copy Markdown
Member

Thank for the PR!

@giovp the PR enables the support for ISS data. ISS data doesn't come as a commercial format or as the output of a pipeline. I discussed with Tong about supporting readers for non-standard techs, and I think that even if this reader would not be guaranteed to work out-of-the-box like for the other techs, I can see it being helpful for the users as a starting point to build a customize reader for the data.

Wdyt, do you think it could be merged (maybe after some generalization via extra parameters) or should be keep the repository strict to documented techs and maybe ask to move this as a notebook or example code, like for the docs?

@giovp

Copy link
Copy Markdown
Member

Yeah looks good to me! I honestly don't have strong opinion, I guess an idea would be to add it to a separate module called something like "experimental" or so but maybe we don't need to do that yet, and just go with this for now?

@BioinfoTongLI

Copy link
Copy Markdown
ContributorAuthor

experimental does make more sense to me. And it also correctly refects my understanding of SpatialData :)

Comment threadsrc/spatialdata_io/readers/experimental/iss.py Outdated
Comment threadsrc/spatialdata_io/readers/experimental/iss.py Outdated
Comment threadsrc/spatialdata_io/readers/experimental/iss.py Outdated
@LucaMarconato

LucaMarconato commented Feb 9, 2024

Copy link
Copy Markdown
Member

Hi @BioinfoTongLI, getting back to this, sorry quite some time passed. I have added my review.

  • Do you have some public data that I could use to test this? In addition also non-public data would work if you could share it with me (please share to me via Zulip).

A few additional quick comments, after this we could merge. If you can share the data I can also quickly cover the following tasks.

  • Can you please remove change the __init__.py files so that we use from spatialdata_io.experimental import iss and not from spatialdata_io import iss.
  • Please update the changelog to reflect the new added function of this PR.
  • Please update api.md with a new section so the docs also show the experimental readers.

Thanks!

@melonora

Copy link
Copy Markdown
Collaborator

@LucaMarconato What is the status?

@LucaMarconato

Copy link
Copy Markdown
Member

Checking this today. @BioinfoTongLI is it ok if I rehost the data that you gave me?

The data has a T channel (in the screenshot I show the labels). We currently don't support T, so I need to remove it to be able to test the reader. I would upload the data for T=0.

Also, in the future it will be useful to parse the dims directly from the omero metadata when available. It's something that we want to do and when done this reader would benefit from it by become more general.

image

@LucaMarconato

Copy link
Copy Markdown
Member

@BioinfoTongLI there is a problem with the data you shared. These is the AnnData table:

Out[15]: celltype region
61793 PAX3+MyoProg region_labels_image
61147 PAX7+MyoProg region_labels_image
59104 TransMes region_labels_image
58640 Mes1 region_labels_image
62107 PAX7+MyoProg region_labels_image
61720 PAX7+MyoProg region_labels_image
61020 InterZone region_labels_image
59316 ProxMes region_labels_image

And these are the unique IDs from the labels object.

Out[6]: Index([0, 28222, 28462, 28574, 29455, 29524, 29816, 29852, 30020], dtype='uint32')

Therefore the table is not annotating the labels. I will merge the PR anyway, but please when you have time it would be convenient if you could point to/share some public data (or data that I can upload to our public S3 storage) with correct table <> labels matching, so that in the future we can keep testing the dataset.

@LucaMarconato

Copy link
Copy Markdown
Member

Tested and ready to merge, @BioinfoTongLI thanks for the PR! (my comment above is still valid, please check it if you have time).

@LucaMarconato
LucaMarconato merged commit 7427003 into scverse:mainMay 7, 2024
@BioinfoTongLI

Copy link
Copy Markdown
ContributorAuthor

Hi @LucaMarconato , sorry for being silent for a while. I've uploaded another similar dataset onto Zenodo. I've checked the label image and the h5ad is matching this time. Hope that's what you're expecting?
please lmk if there's any other issue.
Best,
Tong

@LucaMarconato

LucaMarconato commented Jun 24, 2024

Copy link
Copy Markdown
Member

Thanks for sharing the new data. I have tried the reader with the new data and noticed that some small fixes were required in the reader (already merged here #164). I think the reader works correctly.

I have used this code to read and visualize the data:

##fromspatialdata_io.experimentalimportissf='/Users/macbook/Downloads/10887810'sdata=iss(f, raw_relative_path='raw.ome.tif', labels_relative_path='label.ome.tif', h5ad_relative_path='iss.h5ad')
fromnapari_spatialdataimportInteractiveInteractive(sdata)

This is the plot that I get in napari (I am showing the instance_id column).
image

The black parts of the plot are the background, while the gray areas indicate pixels that have no corresponding annotation in the table (maybe cells that have been filtered out).

Precisely, we have that this code

fromspatialdataimportget_element_instanceslabels_ids=get_element_instances(sdata['region_labels_image'])
table_ids=sdata['table'].obs['instance_id']
assertset(table_ids).issubset(set(labels_ids))
print(set(labels_ids).difference(set(table_ids)))

gives this:

{0, 43026, 38421, 42526, 42530, 37925, 35385, 37955, 37444, 40004, 41030, 40538, 42586, 39002, 36444, 38493, 35427, 38503, 35953, 41074, 36994, 43650, 36997, 43655, 42641, 40084, 40087, 35996, 40608, 39601, 35520, 41670, 35528, 40145, 37588, 40162, 36583, 40679, 39665, 36084, 40700, 41725, 43276, 42777, 43807, 35623, 41267, 39223, 35641, 39737, 40250, 41790, 39236, 43851, 37708, 42835, 43867, 42334, 42846, 37728, 38755, 38253, 35694, 43375, 38264, 38784, 39811, 39317, 37782, 43415, 37271, 42389, 35738, 42906, 38814, 36261, 36265, 38313, 41901, 43454, 39881, 42443, 39894, 43480, 38875, 37343, 43489, 41960, 39402, 38380, 40941, 37362}

Do you expect some cells not to be annotated by the table? (In any case, the reader seems to work correctly).

@BioinfoTongLI

Copy link
Copy Markdown
ContributorAuthor

Do you expect some cells not to be annotated by the table? (In any case, the reader seems to work correctly).

Yes, those are the cells been discarded in the single-cell processing steps. I forgot to mention that!

Very nice! Thanks for checking!

lucas-diedrich pushed a commit to lucas-diedrich/spatialdata-io that referenced this pull request Nov 26, 2024
Added ISS support of Sanger data format
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@BioinfoTongLI@codecov-commenter@LucaMarconato@giovp@melonora