OSCR

Cell-MICS: Detecting Immune Cells With Label-Free Two-Photon Autofluorescence and Deep Learning.

Code ↔ Paper

9 matches between paragraphs of the paper and lines of its authors' code, computed by the harvester (lexical-v1). Click a colored paragraph or line to see its counterpart.

The 9 matches
  1. [1] § Materials and Methods › Training ↔ cell-MICS/code/binary_experiment/main_binary_w_pertubation.py, lines 197–237 · score 0.70 · vertical flip, horizontal flip, fold cross validation, Gaussian, filter, loader
  2. [2] § Materials and Methods › Model Perturbation Experiments ↔ cell-MICS/code/binary_experiment/main_binary.py, lines 236–305 · score 0.58 · requires_grad, trainable parameters, blocks, optimization, layer, model
  3. [3] § Materials and Methods › Training ↔ cell-MICS/code/multi_class_experiment/main_multiclass_UMAP.py, lines 147–165 · score 0.58 · vertical flip, horizontal flip, multi class, Gaussian, filter, patch
  4. [4] § Materials and Methods › Model Perturbation Experiments ↔ cell-MICS/code/binary_experiment/main_binary_w_pertubation.py, lines 282–322 · score 0.57 · requires_grad, trainable parameters, blocks, optimization, layer, model
  5. [5] § Materials and Methods › Model Architecture ↔ cell-MICS/code/multi_class_experiment/main_multiclass_UMAP.py, lines 237–306 · score 0.55 · architecture, squeezenet1, squeezed, Block, layers, model
  6. [6] § Conclusion and Outlook ↔ cell-MICS/code/multi_class_experiment/main_multiclass_UMAP.py, lines 237–306 · score 0.53 · dendritic cells, CD4, CD8, macrophages, efficient, multi class
  7. [7] § Materials and Methods › Data Set › Cell Mixture ↔ cell-MICS/code/multi_class_experiment/main_multiclass.py, lines 230–292 · score 0.52 · fold CV loop, cross validation, stratifiedgroupkfold, precision, recall, patches
  8. [8] § Materials and Methods › Training ↔ cell-MICS/code/shared/trainer.py, lines 101–161 · score 0.52 · stochastic weight, SWA, scheduler, optimizer, loss, metrics
  9. [9] § Materials and Methods › Deep Contrastive Embedding of Two‐Photon Autofluorescence for Different Immune Cells ↔ cell-MICS/code/binary_experiment/main_binary_UMAP.py, lines 213–270 · score 0.52 · trained model, UMAP, embeddings, layer, cell, validation

Paper

Loaded from Europe PMC by your browser, not stored by OSCR: doi.org · Europe PMC

The paper is loaded when this pane is shown.

The authors' code

Python · 317 lines · 12 KB · MIT · 3 matches

  1. import sys
  2. import os
  3. sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'shared'))
  4. from customDataSet import ClassificationDataSet
  5. import torch
  6. import transformations
  7. import numpy as np
  8. import pathlib
  9. from sklearn.model_selection import StratifiedGroupKFold
  10. from datetime import date
  11. import torchvision as T
  12. import torch.nn as nn
  13. import pandas as pd
  14. import time
  15. import support as sup
  16. import support_UMAP as sup_UMAP
  17. from config_multiclass import get_config
  18. # start the timer
  19. st = time.time()
  20. print(torch.__version__)
  21. # =============================================================================
  22. # control parameters
  23. # =============================================================================
  24. config, unparsed = get_config()
  25. num_classes = 6
  26. patch_size = 64
  27. root = pathlib.Path.cwd()
  28. data_folder = config.dir_data
  29. print(config)
  30. # =============================================================================
  31. # set up GPU as argument
  32. # =============================================================================
  33. use_gpu_num = config.use_gpu_num
  34. os.environ['CUDA_VISIBLE_DEVICES']=use_gpu_num
  35. assert os.environ['CUDA_VISIBLE_DEVICES']==use_gpu_num
  36. device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
  37. num_of_gpus = torch.cuda.device_count()
  38. print('number of available cuda devices: ' +str(num_of_gpus))
  39. print('currently selected device: ' +str(device))
  40. # =============================================================================
  41. # load input and labels paired images and split to train and validation
  42. # =============================================================================
  43. def get_filenames_of_path(path: pathlib.Path, ext: str = '*'):
  44. """Returns an alphabetically sorted list of files in a directory/path. Uses pathlib."""
  45. filenames = [file for file in path.glob(ext) if file.is_file()]
  46. filenames = sorted(filenames,key=lambda i: os.path.splitext(os.path.basename(i))[0])
  47. return filenames
  48. inputs = get_filenames_of_path(data_folder)
  49. transforms_init = transformations.ComposeSingle([
  50. transformations.FunctionWrapperSingle(transformations.gaussian_input,filter_size=config.filter_size)
  51. ])
  52. data_set_init = ClassificationDataSet(inputs=inputs,transform=transforms_init,num_classes=num_classes)
  53. batch = data_set_init[0]
  54. x, y, file_ID, _ = batch
  55. nChannels_inp = x.shape[0]
  56. print(str(len(inputs))+' files in '+str(data_folder))
  57. # =============================================================================
  58. # prepare folder for saving and documentation
  59. # =============================================================================
  60. today = date.today()
  61. save_folder = root/today.strftime("%d-%m-%Y")
  62. # parent folder with date
  63. if not os.path.exists(save_folder):
  64. os.makedirs(save_folder)
  65. # folder for experiment
  66. folder_name = input('Please provide a folder name for this experiment:')
  67. folder_name = 'PatchClassification_Input_AF_Dodt_UMAP_of_features_'+folder_name
  68. save_folder = root/today.strftime("%d-%m-%Y")/folder_name
  69. if not os.path.exists(save_folder):
  70. os.makedirs(save_folder)
  71. # folder that contains previously saved models
  72. load_folder = os.path.join(os.path.dirname(__file__), '..', '..', 'results', 'multiclass_experiment')
  73. inputs = get_filenames_of_path(data_folder)
  74. # =============================================================================
  75. # get mean and std of all data
  76. # =============================================================================
  77. # get mean and std of all train data
  78. transforms_init = transformations.ComposeSingle([
  79. transformations.FunctionWrapperSingle(transformations.gaussian_input,filter_size=config.filter_size)
  80. ])
  81. data_set_init = ClassificationDataSet(inputs=inputs,transform=transforms_init,num_classes=num_classes)
  82. dataloader_init = torch.utils.data.DataLoader(dataset=data_set_init,
  83. batch_size=1,
  84. shuffle=False)
  85. print(str(len(inputs))+' files in '+str(data_folder))
  86. print(str(len(dataloader_init))+' entries in Dataloader')
  87. min_all_inputs,max_all_inputs = sup.min_max_input(data_set_init)
  88. mean_all_inputs,std_all_inputs = sup.mean_std_input(data_set_init)
  89. print(mean_all_inputs,std_all_inputs)
  90. # =============================================================================
  91. # plot histogram of all labels
  92. # =============================================================================
  93. all_labels,all_labels_counts = sup.plot_label_dist(dataloader_init,save_folder)
  94. # =============================================================================
  95. # show example data
  96. # =============================================================================
  97. all_groups = []
  98. for i, (x,label, file_ID, original_image) in enumerate(data_set_init):
  99. all_groups.append(original_image)
  100. all_groups_numbers = pd.factorize(all_groups)[0]
  101. batch = data_set_init[0]
  102. x, y, _, _ = batch
  103. nChannels_inp = x.shape[0]
  104. # =============================================================================
  105. # define transformations
  106. # =============================================================================
  107. # The x,y should have a shape of [B, C, H, W], batch channel height width
  108. transforms_train = transformations.ComposeSingle([
  109. transformations.FunctionWrapperSingle(transformations.HorizontalFlip_input,prob_flipped=config.prob_flipped),
  110. transformations.FunctionWrapperSingle(transformations.VerticalFlip_input,prob_flipped=config.prob_flipped),
  111. transformations.FunctionWrapperSingle(transformations.Rotate_input,prob_rot=config.prob_rot),
  112. transformations.FunctionWrapperSingle(transformations.gaussian_input,filter_size=config.filter_size),
  113. transformations.FunctionWrapperSingle(transformations.normalize_input_global_min_max,min_global=min_all_inputs,max_global=mean_all_inputs)
  114. ])
  115. transforms_val = transformations.ComposeSingle([
  116. transformations.FunctionWrapperSingle(transformations.gaussian_input,filter_size=config.filter_size),
  117. transformations.FunctionWrapperSingle(transformations.normalize_input_global_min_max,min_global=min_all_inputs,max_global=mean_all_inputs)
  118. ])
  119. print('RUNNING PATCH CLASSIFICATION')
  120. print('total data size = '+str(len(data_set_init)))
  121. print('total all_labels size = '+str(len(all_labels)))
  122. # =============================================================================
  123. # define k-fold CV
  124. # =============================================================================
  125. k=config.num_folds
  126. splits=StratifiedGroupKFold(n_splits=k,shuffle=config.shuffle,random_state=config.random_seed)
  127. sup.plot_cv_indices(splits,np.arange(len(dataloader_init)),all_labels,all_groups_numbers,k,save_folder)
  128. print('RUNNING '+str(k)+'-fold cross validation')
  129. training_performance_k_fold = []
  130. validation_performance_k_fold = []
  131. training_loss_k_fold = []
  132. validation_loss_k_fold = []
  133. f1_score_k_fold = []
  134. precision_score_k_fold = []
  135. recall_score_k_fold = []
  136. mcc_score_k_fold = []
  137. binary_labels_train_k_fold = []
  138. scores_pred_train_k_fold = []
  139. binary_labels_val_k_fold = []
  140. scores_pred_val_k_fold = []
  141. LR_k_fold = []
  142. all_features_val_k_fold = []
  143. # k-fold CV loop
  144. for fold, (train_idx,val_idx) in enumerate(splits.split(np.arange(len(dataloader_init)),all_labels,all_groups_numbers)):
  145. print('Fold {}: '.format(fold + 1))
  146. # sample input names based on indices for this k-fold split
  147. inputs_train = [inputs[x] for x in train_idx]
  148. inputs_val = [inputs[x] for x in val_idx]
  149. # =============================================================================
  150. # data loaders with transformations for each case of channels
  151. # =============================================================================
  152. loader_train = ClassificationDataSet(inputs=inputs_train,
  153. transform=transforms_train,
  154. patch_size = patch_size,
  155. num_classes=num_classes)
  156. loader_val = ClassificationDataSet(inputs=inputs_val,
  157. transform=transforms_val,
  158. patch_size = patch_size,
  159. num_classes=num_classes)
  160. train_dataloader = torch.utils.data.DataLoader(dataset=loader_train,
  161. batch_size=config.batch_size,
  162. shuffle=True,
  163. num_workers=config.num_workers,
  164. prefetch_factor=config.prefetch_factor)
  165. val_dataloader = torch.utils.data.DataLoader(dataset=loader_val,
  166. batch_size=config.batch_size,
  167. shuffle=True,
  168. num_workers=config.num_workers,
  169. prefetch_factor=config.prefetch_factor )
  170. # check of each label is in the validation set for this fold
  171. y_val = [all_labels[x] for x in val_idx]
  172. print(np.unique(y_val))
  173. if not (len(np.unique(y_val)) == num_classes):
  174. print("missing classes in fold "+str(fold)+"! ")
  175. # =============================================================================
  176. # define model architecture
  177. # =============================================================================
  178. model_classification = T.models.squeezenet1_0(weights=T.models.SqueezeNet1_0_Weights.DEFAULT) # SqueezeNet is designed to be a small and efficient model
  179. # create new conv layer with info about original 1st conv layer, only with different input channels
  180. first_conv_layer1 = model_classification.features[0]
  181. new_conv_layer1 = nn.Conv2d(in_channels = nChannels_inp,
  182. out_channels = first_conv_layer1.out_channels,
  183. kernel_size = first_conv_layer1.kernel_size,
  184. stride = first_conv_layer1.stride,
  185. padding = first_conv_layer1.padding)
  186. # Replace the original layer in the model
  187. model_classification.features[0] = new_conv_layer1
  188. # add dense layer to final layer for multiclass output
  189. final_block = model_classification.classifier
  190. new_final_block = nn.Sequential(
  191. final_block[0],
  192. nn.Conv2d(final_block[1].in_channels, num_classes, kernel_size=(1, 1), stride=(1, 1)), # replace 2Dconv layer with different number of outputs
  193. nn.Sigmoid(), # replace relu with sigmoid
  194. final_block[3],
  195. )
  196. # exhange final block in model
  197. model_classification.classifier = new_final_block
  198. # =============================================================================
  199. # load previous trained model state
  200. # =============================================================================
  201. model_classification.load_state_dict(
  202. torch.load(str(load_folder)+"/Trained_Classification_Model_fold"+str(fold),weights_only=True)
  203. )
  204. # send model to available device:
  205. model_classification.to(device)
  206. model_classification.float()
  207. # =============================================================================
  208. # create UMAP from single fold
  209. # =============================================================================
  210. # Extract features from this fold's validation set
  211. features, labels = sup_UMAP.extract_features_before_classifier(
  212. model_classification, val_dataloader, config, device=device
  213. )
  214. # visualize per fold embedding
  215. embeddings = sup_UMAP.visualize_umap(
  216. features,
  217. labels,
  218. save_path=save_folder,
  219. class_names=['CD4+ T cells', 'CD8+ T cells','B cells', 'Neutrophils', 'Dendritic cells', 'Macrophages'],
  220. filename='umap_visualization_fold'+str(fold)+'.png'
  221. )
  222. all_features_val_k_fold.append(features)
  223. binary_labels_val_k_fold.append(labels)
  224. print("____________")
  225. print("end of CV loop")
  226. print("____________")
  227. # Combine all folds
  228. combined_features = np.concatenate(all_features_val_k_fold, axis=0)
  229. combined_labels = np.concatenate(binary_labels_val_k_fold, axis=0)
  230. print(f"\\nTotal samples across all folds: {combined_features.shape[0]}")
  231. # Visualize combined
  232. embeddings = sup_UMAP.visualize_umap(
  233. combined_features,
  234. combined_labels,
  235. save_path=save_folder,
  236. class_names=['CD4+ T cells', 'CD8+ T cells','B cells', 'Neutrophils', 'Dendritic cells', 'Macrophages'],
  237. filename='umap_visualization_all_folds.png'
  238. )
  239. print('DONE')

main_multiclass_UMAP.py at commit 18f7c45, under MIT · at the source

Overview

Authors: Lucas Kreiss1,2,3, Amey Chaware1, Maryam Roohian4, Sarah Lemire3,5, Oana‐Maria Thoma3,5, Birgitta Carlé2, Maximilian Waldner3,5, Sebastian Schürmann2, Oliver Friedrich2, Roarke Horstmeyer1
  1. Department of Biomedical Engineering, Duke University, Durham, North Carolina, USA
  2. Department Chemical and Biological Engineering, Friedrich‐Alexander University (FAU), Erlangen, Bavaria, Germany
  3. Department Medicine I, University Hospital Erlangen, Erlangen, Bavaria, Germany
  4. Department of Pathology, Duke University, Durham, North Carolina, USA
  5. German Center for Immunotherapy, University Hospital Erlangen, Erlangen, Bavaria, Germany
Journal: Journal of biophotonics, volume 19, issue 4, article e70260
Dates: received 11 September 2025; accepted 24 February 2026; published online 2 April 2026; in print April 2026
Type: Research article · Language: English
License: CC BY-NC
Identifiers: DOI 10.1002/jbio.70260 · PMID 41923530 · PMCID PMC13044570 · OpenAlex W4415311885
Open access: hybrid, a free copy (OpenAlex)
Status: code verified
Categories: histology / microscopy (modality), optical imaging (calcium, voltage, 2-photon) (modality), human (organism), cellular / molecular (subfield)
Methods: Connectivity, Smoothing, state filtering, decompositions, Machine learning, Statistics, fMRI & imaging
Keywords: autofluorescence, biophotonics, cellular metabolism, deep learning, label‐free, multiphoton imaging
MeSH: Deep Learning*, Image Processing, Computer-Assisted*, Microscopy, Fluorescence, Multiphoton*, Optical Imaging*, Photons*, Animals, Convolutional Neural Networks, Humans (* major topic)
Topic: Immune Response and Inflammation (Immunology, Immunology and Microbiology), according to OpenAlex
Funding: HORIZON EUROPE 2022 Marie Sklowska-Curie Action (101103200); Deutsche Forschungsgemeinschaft
Citations: not cited yet (Europe PMC); 60 references in the paper

Abstract

Multiphoton imaging has been widely used for deep‐tissue imaging. Although its label‐free, metabolic contrast is ideal for investigating inflammation, the label‐free two‐photon induced autofluorescence is often regarded as less specific compared to conventional antibody markers. In this work, we investigate the potential for multiphoton imaging with computational specificity (MICS) by training a convolutional neural network on images of different immune cells. A low‐complexity squeezeNet architecture was able to achieve reliable immune cell classification results (0.89 ROC‐AUC, 0.95 PR‐AUC for binary classification between T cells and neutrophils; 0.689 F1 score, 0.697 precision, 0.748 recall for multi‐class classification between six isolated cell types). Perturbation tests confirmed that the model was not confused by the extracellular environment and that 2P‐AF from NADH and FAD is equally important for the classification. In the future, deep learning could provide computational specificity for specific immune cells in unstained tissues, with great potential for label‐free in vivo endomicroscopy.

Reproduced under the paper's license (CC BY-NC), from the paper cited above.

Repository

Its files are read in the Code ↔ Paper reader above, with 9 matches between paragraphs and lines of code.

lucaskreiss/multiphoton_imaging_with_computational_specificity

License: MIT
State: the link answers, verified on 28 September 2026
Evidence: files inventoried
Commit: 18f7c4531222c21fd5934531c976cb021c3f8754, 28 March 2026
Languages: Python (14)
Size: 63 files, 14 scripts
Software Heritage: not archived
Found in: “Data Availability Statement”
Holds: README, license file, environment (cell-MICS/environment_full.yml)
Not found: CITATION.cff, tests, continuous integration, documentation
Tools: NumPy (11 files), PyTorch (10 files), pandas (6 files), scikit-learn (6 files), Matplotlib (3 files), SciPy (1 file), seaborn (1 file), tifffile (1 file), UMAP (1 file)
Availability: 1 check, the latest on 28 September 2026: the link answers
  • 28 September 2026: the link answers
16 files

The paper's code and data availability statement is in the Data section.

Tracing map

Proposed by the machine: these links were found in the paper and verified at the source, without human review. The map will receive a Zenodo DOI once one of the paper's authors has validated it with their ORCID.

What the map holds:

  • 1 repository of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
  • 14 scripts, each with its path and the digest of its content;
  • 9 matches between paragraphs of the paper and lines of the code (method lexical-v1);
  • neither the text of the paper nor the code itself.

Its JSON (tracing-map.json) is deposited on Zenodo with its DOI once the map is validated.

Data

Datasets cited

Data Availability Statement

The dataset used in this study is publicly available on Zenodo under a CC BY 4.0 license at https://doi.org/10.5281/zenodo.15657646. All code used for data preprocessing, model training, inference, and analysis for the binary and multiclass classification experiments is publicly available on GitHub at https://github.com/LucasKreiss/Multiphoton_Imaging_with_Computational_Specificity/tree/main/cell‐MICS (https://github.com/LucasKreiss/Multiphoton_Imaging_with_Computational_Specificity/tree/main/cell-MICS) under an MIT license.

Reproduced under the paper's license (CC BY-NC), from the paper cited above.

Versions

The history of this record: each version stored by the harvester or made by a correction of its authors or of the maintainers of its code, and what changed in its facts. The texts of the paper (its abstract, its availability statements) are not part of it; versions that changed only those are not listed.

Version 2, 28 September 2026

  • Publisher: n/a → Wiley

Version 1, 28 September 2026: the first record

Recorded: type, language, journal, volume, issue, pages, dates, 10 authors, 6 keywords, 8 MeSH terms, 2 funders, 46 references.

Cite

This paper

Kreiss, L., Chaware, A., Roohian, M., Lemire, S., Thoma, O., Carlé, B., Waldner, M., Schürmann, S., Friedrich, O., & Horstmeyer, R. (2026). Cell-MICS: Detecting Immune Cells With Label-Free Two-Photon Autofluorescence and Deep Learning. Journal of biophotonics, 19(4), e70260. https://doi.org/10.1002/jbio.70260

BibTeX

@article{kreiss2026cell,
author = {Kreiss, Lucas and Chaware, Amey and Roohian, Maryam and Lemire, Sarah and Thoma, Oana‐Maria and Carlé, Birgitta and Waldner, Maximilian and Schürmann, Sebastian and Friedrich, Oliver and Horstmeyer, Roarke},
title = {{Cell-MICS: Detecting Immune Cells With Label-Free Two-Photon Autofluorescence and Deep Learning}},
journal = {Journal of biophotonics},
year = {2026},
month = apr,
volume = {19},
number = {4},
pages = {e70260},
publisher = {Wiley},
issn = {1864-063X},
doi = {10.1002/jbio.70260},
url = {https://doi.org/10.1002/jbio.70260},
pmid = {41923530},
pmcid = {PMC13044570}
}

RIS

TY - JOUR
AU - Kreiss, Lucas
AU - Chaware, Amey
AU - Roohian, Maryam
AU - Lemire, Sarah
AU - Thoma, Oana‐Maria
AU - Carlé, Birgitta
AU - Waldner, Maximilian
AU - Schürmann, Sebastian
AU - Friedrich, Oliver
AU - Horstmeyer, Roarke
TI - Cell-MICS: Detecting Immune Cells With Label-Free Two-Photon Autofluorescence and Deep Learning
T2 - Journal of biophotonics
J2 - J Biophotonics
PY - 2026
DA - 2026/04/01
VL - 19
IS - 4
SP - e70260
SN - 1864-063X
PB - Wiley
DO - 10.1002/jbio.70260
UR - https://doi.org/10.1002/jbio.70260
LA - en
ER -

CSL-JSON

{
"id": "10.1002/jbio.70260",
"type": "article-journal",
"title": "Cell-MICS: Detecting Immune Cells With Label-Free Two-Photon Autofluorescence and Deep Learning",
"container-title": "Journal of biophotonics",
"author": [
{
"family": "Kreiss",
"given": "Lucas"
},
{
"family": "Chaware",
"given": "Amey"
},
{
"family": "Roohian",
"given": "Maryam"
},
{
"family": "Lemire",
"given": "Sarah"
},
{
"family": "Thoma",
"given": "Oana‐Maria"
},
{
"family": "Carlé",
"given": "Birgitta"
},
{
"family": "Waldner",
"given": "Maximilian"
},
{
"family": "Schürmann",
"given": "Sebastian"
},
{
"family": "Friedrich",
"given": "Oliver"
},
{
"family": "Horstmeyer",
"given": "Roarke"
}
],
"container-title-short": "J Biophotonics",
"volume": "19",
"issue": "4",
"page": "e70260",
"DOI": "10.1002/jbio.70260",
"PMID": "41923530",
"PMCID": "PMC13044570",
"ISSN": "1864-063X",
"publisher": "Wiley",
"URL": "https://doi.org/10.1002/jbio.70260",
"language": "en",
"issued": {
"date-parts": [
[
2026,
4,
1
]
]
}
}

The tracing map gets a citation of its own once an author has validated it and it has a DOI.

Similar papers

The papers with a page that share the most with this one: the tools found in their code, their categories, datasets, cited references and authors, the rarest counting most.

[1] doi:10.1016/j.isci.2026.117010 [code]
Deep learning-assisted mapping of dendritic spines using sequential 2D two-photon calcium imaging.
Journal: iScience
In common: tifffile, PyTorch, seaborn, 5 other tools, optical imaging (calcium, voltage, 2-photon), histology / microscopy, cellular / molecular
[2] doi:10.1016/j.crmeth.2026.101476 [code]
Unsupervised deep learning enables blur-free resolution enhancement in two-photon microscopy.
Journal: Cell reports methods
In common: tifffile, PyTorch, pandas, 3 other tools, optical imaging (calcium, voltage, 2-photon), histology / microscopy, cellular / molecular, 1 reference
[3] doi:10.3389/fnsys.2026.1822122 [code]
Convergence-divergence circuits for multimodal integration of innate and learned opponent valences.
Journal: Frontiers in systems neuroscience
In common: tifffile, UMAP, PyTorch, 6 other tools
[4] doi:10.1038/s41467-026-72710-3 [code]
A modular multi-color fluorescence microscope for simultaneous tracking of cellular activity and behavior.
Journal: Nature communications
In common: tifffile, UMAP, scikit-learn, 4 other tools, optical imaging (calcium, voltage, 2-photon), histology / microscopy
[5] doi:10.1038/s41593-026-02267-3 [code]
Spatial proteomic analysis in human Alzheimer's disease brains enables identification of microenvironment-dependent microglial cell states.
Journal: Nature neuroscience
In common: tifffile, UMAP, seaborn, 5 other tools, cellular / molecular
[6] doi:10.1016/j.xcrm.2026.102766 [code]
A longitudinal single-cell and spatial multiomic atlas of pediatric high-grade glioma.
Journal: Cell reports. Medicine
In common: tifffile, UMAP, seaborn, 5 other tools, cellular / molecular
[7] doi:10.1038/s41467-026-74823-1 [code]
Cerebellar activity is triggered by reach endpoint during learning of a complex locomotor task.
Journal: Nature communications
In common: tifffile, UMAP, seaborn, 5 other tools, cellular / molecular
[8] doi:10.7554/elife.93664 [code]
Drug-induced changes in connectivity to midbrain dopamine cells revealed by rabies monosynaptic tracing.
Journal: eLife
In common: tifffile, UMAP, seaborn, 5 other tools, cellular / molecular
[9] doi:10.1016/j.isci.2026.116206 [code]
Gut distension evokes rapid neural dynamics in vagal and hindbrain populations of larval zebrafish.
Journal: iScience
In common: tifffile, PyTorch, seaborn, 5 other tools, optical imaging (calcium, voltage, 2-photon)
[10] doi:10.7554/elife.110277 [code]
Functional imaging of nine distinct neuronal populations under a miniscope in freely behaving animals.
Journal: eLife
In common: tifffile, seaborn, scikit-learn, 4 other tools, optical imaging (calcium, voltage, 2-photon), histology / microscopy

Contribute

The authors of this paper can claim it, correct its record and validate its tracing map, and the maintainers of its code (its owner, or a public member of its organization) correct what it says of their repository; anyone signed in can ask for its removal. Every request goes to OSCR's own machine, which answers it; your account page follows them.

Sign in with ORCID to claim this paper as one of its authors, correct its record or validate its tracing map: when the paper's metadata lists your ORCID iD, you are recognized at once. Maintainers of its code: sign in with GitHub, then claim the repository on your account page.

Request its removal

To ask OSCR to remove this record, the copies of its authors' scripts or its tracing map, use the removal request page: signed in, you say who you are, what to remove and why, then review and confirm the request. Published rules decide every request (how).

Discussion, reproductions, activity

Discussion: questions and error reports about this paper and its code, from signed-in readers and its authors. It opens with sign-in.

Reproductions: reports from readers who ran the authors' code: what they reproduced, with which environment, commit and data. It opens with sign-in.

Activity: what happens around this paper: new versions of its record, its map's validation, discussions and reproductions. It opens with sign-in.