OSCR

Mapping human microglial morphological diversity via handcrafted and deep learning-derived image features.

Code ↔ Paper

The paper beside its authors' code: matches between them have not been computed for this paper yet.

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

C · 508 lines · 15 KB · LGPL-2.1

  1. #ifdef __cplusplus
  2. # error "A C++ compiler has been selected for C."
  3. #endif
  4. #if defined(__18CXX)
  5. # define ID_VOID_MAIN
  6. #endif
  7. /* Version number components: V=Version, R=Revision, P=Patch
  8. Version date components: YYYY=Year, MM=Month, DD=Day */
  9. #if defined(__INTEL_COMPILER) || defined(__ICC)
  10. # define COMPILER_ID "Intel"
  11. # if defined(_MSC_VER)
  12. # define SIMULATE_ID "MSVC"
  13. # endif
  14. /* __INTEL_COMPILER = VRP */
  15. # define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100)
  16. # define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10)
  17. # if defined(__INTEL_COMPILER_UPDATE)
  18. # define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE)
  19. # else
  20. # define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10)
  21. # endif
  22. # if defined(__INTEL_COMPILER_BUILD_DATE)
  23. /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */
  24. # define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE)
  25. # endif
  26. # if defined(_MSC_VER)
  27. /* _MSC_VER = VVRR */
  28. # define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
  29. # define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
  30. # endif
  31. #elif defined(__PATHCC__)
  32. # define COMPILER_ID "PathScale"
  33. # define COMPILER_VERSION_MAJOR DEC(__PATHCC__)
  34. # define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__)
  35. # if defined(__PATHCC_PATCHLEVEL__)
  36. # define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__)
  37. # endif
  38. #elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__)
  39. # define COMPILER_ID "Embarcadero"
  40. # define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF)
  41. # define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF)
  42. # define COMPILER_VERSION_PATCH HEX(__CODEGEARC_VERSION__ & 0xFFFF)
  43. #elif defined(__BORLANDC__)
  44. # define COMPILER_ID "Borland"
  45. /* __BORLANDC__ = 0xVRR */
  46. # define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8)
  47. # define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF)
  48. #elif defined(__WATCOMC__) && __WATCOMC__ < 1200
  49. # define COMPILER_ID "Watcom"
  50. /* __WATCOMC__ = VVRR */
  51. # define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100)
  52. # define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10)
  53. # if (__WATCOMC__ % 10) > 0
  54. # define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10)
  55. # endif
  56. #elif defined(__WATCOMC__)
  57. # define COMPILER_ID "OpenWatcom"
  58. /* __WATCOMC__ = VVRP + 1100 */
  59. # define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100)
  60. # define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10)
  61. # if (__WATCOMC__ % 10) > 0
  62. # define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10)
  63. # endif
  64. #elif defined(__SUNPRO_C)
  65. # define COMPILER_ID "SunPro"
  66. # if __SUNPRO_C >= 0x5100
  67. /* __SUNPRO_C = 0xVRRP */
  68. # define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12)
  69. # define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF)
  70. # define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF)
  71. # else
  72. /* __SUNPRO_CC = 0xVRP */
  73. # define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8)
  74. # define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF)
  75. # define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF)
  76. # endif
  77. #elif defined(__HP_cc)
  78. # define COMPILER_ID "HP"
  79. /* __HP_cc = VVRRPP */
  80. # define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000)
  81. # define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100)
  82. # define COMPILER_VERSION_PATCH DEC(__HP_cc % 100)
  83. #elif defined(__DECC)
  84. # define COMPILER_ID "Compaq"
  85. /* __DECC_VER = VVRRTPPPP */
  86. # define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000)
  87. # define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100)
  88. # define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000)
  89. #elif defined(__IBMC__) && defined(__COMPILER_VER__)
  90. # define COMPILER_ID "zOS"
  91. /* __IBMC__ = VRP */
  92. # define COMPILER_VERSION_MAJOR DEC(__IBMC__/100)
  93. # define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10)
  94. # define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10)
  95. #elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800
  96. # define COMPILER_ID "XL"
  97. /* __IBMC__ = VRP */
  98. # define COMPILER_VERSION_MAJOR DEC(__IBMC__/100)
  99. # define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10)
  100. # define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10)
  101. #elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800
  102. # define COMPILER_ID "VisualAge"
  103. /* __IBMC__ = VRP */
  104. # define COMPILER_VERSION_MAJOR DEC(__IBMC__/100)
  105. # define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10)
  106. # define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10)
  107. #elif defined(__PGI)
  108. # define COMPILER_ID "PGI"
  109. # define COMPILER_VERSION_MAJOR DEC(__PGIC__)
  110. # define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__)
  111. # if defined(__PGIC_PATCHLEVEL__)
  112. # define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__)
  113. # endif
  114. #elif defined(_CRAYC)
  115. # define COMPILER_ID "Cray"
  116. # define COMPILER_VERSION_MAJOR DEC(_RELEASE)
  117. # define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR)
  118. #elif defined(__TI_COMPILER_VERSION__)
  119. # define COMPILER_ID "TI"
  120. /* __TI_COMPILER_VERSION__ = VVVRRRPPP */
  121. # define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000)
  122. # define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000)
  123. # define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000)
  124. #elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version)
  125. # define COMPILER_ID "Fujitsu"
  126. #elif defined(__TINYC__)
  127. # define COMPILER_ID "TinyCC"
  128. #elif defined(__SCO_VERSION__)
  129. # define COMPILER_ID "SCO"
  130. #elif defined(__clang__) && defined(__apple_build_version__)
  131. # define COMPILER_ID "AppleClang"
  132. # if defined(_MSC_VER)
  133. # define SIMULATE_ID "MSVC"
  134. # endif
  135. # define COMPILER_VERSION_MAJOR DEC(__clang_major__)
  136. # define COMPILER_VERSION_MINOR DEC(__clang_minor__)
  137. # define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
  138. # if defined(_MSC_VER)
  139. /* _MSC_VER = VVRR */
  140. # define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
  141. # define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
  142. # endif
  143. # define COMPILER_VERSION_TWEAK DEC(__apple_build_version__)
  144. #elif defined(__clang__)
  145. # define COMPILER_ID "Clang"
  146. # if defined(_MSC_VER)
  147. # define SIMULATE_ID "MSVC"
  148. # endif
  149. # define COMPILER_VERSION_MAJOR DEC(__clang_major__)
  150. # define COMPILER_VERSION_MINOR DEC(__clang_minor__)
  151. # define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
  152. # if defined(_MSC_VER)
  153. /* _MSC_VER = VVRR */
  154. # define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
  155. # define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
  156. # endif
  157. #elif defined(__GNUC__)
  158. # define COMPILER_ID "GNU"
  159. # define COMPILER_VERSION_MAJOR DEC(__GNUC__)
  160. # define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__)
  161. # if defined(__GNUC_PATCHLEVEL__)
  162. # define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
  163. # endif
  164. #elif defined(_MSC_VER)
  165. # define COMPILER_ID "MSVC"
  166. /* _MSC_VER = VVRR */
  167. # define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100)
  168. # define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100)
  169. # if defined(_MSC_FULL_VER)
  170. # if _MSC_VER >= 1400
  171. /* _MSC_FULL_VER = VVRRPPPPP */
  172. # define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000)
  173. # else
  174. /* _MSC_FULL_VER = VVRRPPPP */
  175. # define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000)
  176. # endif
  177. # endif
  178. # if defined(_MSC_BUILD)
  179. # define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD)
  180. # endif
  181. #elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__)
  182. # define COMPILER_ID "ADSP"
  183. #if defined(__VISUALDSPVERSION__)
  184. /* __VISUALDSPVERSION__ = 0xVVRRPP00 */
  185. # define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24)
  186. # define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF)
  187. # define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF)
  188. #endif
  189. #elif defined(__IAR_SYSTEMS_ICC__ ) || defined(__IAR_SYSTEMS_ICC)
  190. # define COMPILER_ID "IAR"
  191. #elif defined(SDCC)
  192. # define COMPILER_ID "SDCC"
  193. /* SDCC = VRP */
  194. # define COMPILER_VERSION_MAJOR DEC(SDCC/100)
  195. # define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10)
  196. # define COMPILER_VERSION_PATCH DEC(SDCC % 10)
  197. #elif defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION)
  198. # define COMPILER_ID "MIPSpro"
  199. # if defined(_SGI_COMPILER_VERSION)
  200. /* _SGI_COMPILER_VERSION = VRP */
  201. # define COMPILER_VERSION_MAJOR DEC(_SGI_COMPILER_VERSION/100)
  202. # define COMPILER_VERSION_MINOR DEC(_SGI_COMPILER_VERSION/10 % 10)
  203. # define COMPILER_VERSION_PATCH DEC(_SGI_COMPILER_VERSION % 10)
  204. # else
  205. /* _COMPILER_VERSION = VRP */
  206. # define COMPILER_VERSION_MAJOR DEC(_COMPILER_VERSION/100)
  207. # define COMPILER_VERSION_MINOR DEC(_COMPILER_VERSION/10 % 10)
  208. # define COMPILER_VERSION_PATCH DEC(_COMPILER_VERSION % 10)
  209. # endif
  210. /* These compilers are either not known or too old to define an
  211. identification macro. Try to identify the platform and guess that
  212. it is the native compiler. */
  213. #elif defined(__sgi)
  214. # define COMPILER_ID "MIPSpro"
  215. #elif defined(__hpux) || defined(__hpua)
  216. # define COMPILER_ID "HP"
  217. #else /* unknown compiler */
  218. # define COMPILER_ID ""
  219. #endif
  220. /* Construct the string literal in pieces to prevent the source from
  221. getting matched. Store it in a pointer rather than an array
  222. because some compilers will just produce instructions to fill the
  223. array rather than assigning a pointer to a static array. */
  224. char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]";
  225. #ifdef SIMULATE_ID
  226. char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]";
  227. #endif
  228. #ifdef __QNXNTO__
  229. char const* qnxnto = "INFO" ":" "qnxnto[]";
  230. #endif
  231. #define STRINGIFY_HELPER(X) #X
  232. #define STRINGIFY(X) STRINGIFY_HELPER(X)
  233. /* Identify known platforms by name. */
  234. #if defined(__linux) || defined(__linux__) || defined(linux)
  235. # define PLATFORM_ID "Linux"
  236. #elif defined(__CYGWIN__)
  237. # define PLATFORM_ID "Cygwin"
  238. #elif defined(__MINGW32__)
  239. # define PLATFORM_ID "MinGW"
  240. #elif defined(__APPLE__)
  241. # define PLATFORM_ID "Darwin"
  242. #elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
  243. # define PLATFORM_ID "Windows"
  244. #elif defined(__FreeBSD__) || defined(__FreeBSD)
  245. # define PLATFORM_ID "FreeBSD"
  246. #elif defined(__NetBSD__) || defined(__NetBSD)
  247. # define PLATFORM_ID "NetBSD"
  248. #elif defined(__OpenBSD__) || defined(__OPENBSD)
  249. # define PLATFORM_ID "OpenBSD"
  250. #elif defined(__sun) || defined(sun)
  251. # define PLATFORM_ID "SunOS"
  252. #elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
  253. # define PLATFORM_ID "AIX"
  254. #elif defined(__sgi) || defined(__sgi__) || defined(_SGI)
  255. # define PLATFORM_ID "IRIX"
  256. #elif defined(__hpux) || defined(__hpux__)
  257. # define PLATFORM_ID "HP-UX"
  258. #elif defined(__HAIKU__)
  259. # define PLATFORM_ID "Haiku"
  260. #elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS)
  261. # define PLATFORM_ID "BeOS"
  262. #elif defined(__QNX__) || defined(__QNXNTO__)
  263. # define PLATFORM_ID "QNX"
  264. #elif defined(__tru64) || defined(_tru64) || defined(__TRU64__)
  265. # define PLATFORM_ID "Tru64"
  266. #elif defined(__riscos) || defined(__riscos__)
  267. # define PLATFORM_ID "RISCos"
  268. #elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__)
  269. # define PLATFORM_ID "SINIX"
  270. #elif defined(__UNIX_SV__)
  271. # define PLATFORM_ID "UNIX_SV"
  272. #elif defined(__bsdos__)
  273. # define PLATFORM_ID "BSDOS"
  274. #elif defined(_MPRAS) || defined(MPRAS)
  275. # define PLATFORM_ID "MP-RAS"
  276. #elif defined(__osf) || defined(__osf__)
  277. # define PLATFORM_ID "OSF1"
  278. #elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv)
  279. # define PLATFORM_ID "SCO_SV"
  280. #elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX)
  281. # define PLATFORM_ID "ULTRIX"
  282. #elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX)
  283. # define PLATFORM_ID "Xenix"
  284. #elif defined(__WATCOMC__)
  285. # if defined(__LINUX__)
  286. # define PLATFORM_ID "Linux"
  287. # elif defined(__DOS__)
  288. # define PLATFORM_ID "DOS"
  289. # elif defined(__OS2__)
  290. # define PLATFORM_ID "OS2"
  291. # elif defined(__WINDOWS__)
  292. # define PLATFORM_ID "Windows3x"
  293. # else /* unknown platform */
  294. # define PLATFORM_ID ""
  295. # endif
  296. #else /* unknown platform */
  297. # define PLATFORM_ID ""
  298. #endif
  299. /* For windows compilers MSVC and Intel we can determine
  300. the architecture of the compiler being used. This is because
  301. the compilers do not have flags that can change the architecture,
  302. but rather depend on which compiler is being used
  303. */
  304. #if defined(_WIN32) && defined(_MSC_VER)
  305. # if defined(_M_IA64)
  306. # define ARCHITECTURE_ID "IA64"
  307. # elif defined(_M_X64) || defined(_M_AMD64)
  308. # define ARCHITECTURE_ID "x64"
  309. # elif defined(_M_IX86)
  310. # define ARCHITECTURE_ID "X86"
  311. # elif defined(_M_ARM)
  312. # if _M_ARM == 4
  313. # define ARCHITECTURE_ID "ARMV4I"
  314. # elif _M_ARM == 5
  315. # define ARCHITECTURE_ID "ARMV5I"
  316. # else
  317. # define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM)
  318. # endif
  319. # elif defined(_M_MIPS)
  320. # define ARCHITECTURE_ID "MIPS"
  321. # elif defined(_M_SH)
  322. # define ARCHITECTURE_ID "SHx"
  323. # else /* unknown architecture */
  324. # define ARCHITECTURE_ID ""
  325. # endif
  326. #elif defined(__WATCOMC__)
  327. # if defined(_M_I86)
  328. # define ARCHITECTURE_ID "I86"
  329. # elif defined(_M_IX86)
  330. # define ARCHITECTURE_ID "X86"
  331. # else /* unknown architecture */
  332. # define ARCHITECTURE_ID ""
  333. # endif
  334. #else
  335. # define ARCHITECTURE_ID ""
  336. #endif
  337. /* Convert integer to decimal digit literals. */
  338. #define DEC(n) \
  339. ('0' + (((n) / 10000000)%10)), \
  340. ('0' + (((n) / 1000000)%10)), \
  341. ('0' + (((n) / 100000)%10)), \
  342. ('0' + (((n) / 10000)%10)), \
  343. ('0' + (((n) / 1000)%10)), \
  344. ('0' + (((n) / 100)%10)), \
  345. ('0' + (((n) / 10)%10)), \
  346. ('0' + ((n) % 10))
  347. /* Convert integer to hex digit literals. */
  348. #define HEX(n) \
  349. ('0' + ((n)>>28 & 0xF)), \
  350. ('0' + ((n)>>24 & 0xF)), \
  351. ('0' + ((n)>>20 & 0xF)), \
  352. ('0' + ((n)>>16 & 0xF)), \
  353. ('0' + ((n)>>12 & 0xF)), \
  354. ('0' + ((n)>>8 & 0xF)), \
  355. ('0' + ((n)>>4 & 0xF)), \
  356. ('0' + ((n) & 0xF))
  357. /* Construct a string literal encoding the version number components. */
  358. #ifdef COMPILER_VERSION_MAJOR
  359. char const info_version[] = {
  360. 'I', 'N', 'F', 'O', ':',
  361. 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[',
  362. COMPILER_VERSION_MAJOR,
  363. # ifdef COMPILER_VERSION_MINOR
  364. '.', COMPILER_VERSION_MINOR,
  365. # ifdef COMPILER_VERSION_PATCH
  366. '.', COMPILER_VERSION_PATCH,
  367. # ifdef COMPILER_VERSION_TWEAK
  368. '.', COMPILER_VERSION_TWEAK,
  369. # endif
  370. # endif
  371. # endif
  372. ']','\0'};
  373. #endif
  374. /* Construct a string literal encoding the version number components. */
  375. #ifdef SIMULATE_VERSION_MAJOR
  376. char const info_simulate_version[] = {
  377. 'I', 'N', 'F', 'O', ':',
  378. 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[',
  379. SIMULATE_VERSION_MAJOR,
  380. # ifdef SIMULATE_VERSION_MINOR
  381. '.', SIMULATE_VERSION_MINOR,
  382. # ifdef SIMULATE_VERSION_PATCH
  383. '.', SIMULATE_VERSION_PATCH,
  384. # ifdef SIMULATE_VERSION_TWEAK
  385. '.', SIMULATE_VERSION_TWEAK,
  386. # endif
  387. # endif
  388. # endif
  389. ']','\0'};
  390. #endif
  391. /* Construct the string literal in pieces to prevent the source from
  392. getting matched. Store it in a pointer rather than an array
  393. because some compilers will just produce instructions to fill the
  394. array rather than assigning a pointer to a static array. */
  395. char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]";
  396. char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]";
  397. /*--------------------------------------------------------------------------*/
  398. #ifdef ID_VOID_MAIN
  399. void main() {}
  400. #else
  401. int main(int argc, char* argv[])
  402. {
  403. int require = 0;
  404. require += info_compiler[argc];
  405. require += info_platform[argc];
  406. require += info_arch[argc];
  407. #ifdef COMPILER_VERSION_MAJOR
  408. require += info_version[argc];
  409. #endif
  410. #ifdef SIMULATE_ID
  411. require += info_simulate[argc];
  412. #endif
  413. #ifdef SIMULATE_VERSION_MAJOR
  414. require += info_simulate_version[argc];
  415. #endif
  416. (void)argv;
  417. return require;
  418. }
  419. #endif

CMakeCCompilerId.c at commit 3b8f2a6, under LGPL-2.1 · at the source

Overview

Authors: Kayhan Alvandipour1, Amélie Weiss1, Mona Mathews2, Brenda Besemer3, Michaela Segschneider2,3, Zahra Hanifehlou1, Christian Felski3, Michael Peitz2, Arnaud Ogier1, Peter Sommer1, Oliver Brüstle2,3, Johannes H. Wilbertz1
  1. Ksilink, Strasbourg, France
  2. LIFE & BRAIN GmbH, Cellomics Unit, Bonn, Germany
  3. Institute of Reconstructive Neurobiology, University of Bonn Medical Faculty & University Hospital Bonn, Bonn, Germany
Institutions: Life & Brain (Germany) (Germany); University of Bonn (Germany); University Hospital Bonn (Germany)
Journal: iScience, volume 29, issue 7, article 116575
Dates: received 7 October 2025; accepted 10 June 2026; published online 27 June 2026
Type: Research article · Language: English
License: CC BY-NC-ND
Identifiers: DOI 10.1016/j.isci.2026.116575 · PMID 42491669 · PMCID PMC13378380 · OpenAlex W4414283878
Open access: gold, a free copy (OpenAlex)
Status: code verified
Categories: human (organism), cellular / molecular (subfield)
Methods: Statistics, Smoothing, state filtering, decompositions, Machine learning, Preprocessing, Connectivity
Keywords: microglia heterogeneity, high-content imaging, phenotypic profiling, deep learning, Gaussian mixture model, GMM
Topic: Digital Imaging for Blood Diseases (Computer Vision and Pattern Recognition, Computer Science), according to OpenAlex
Funding: Federal Ministry for Economic Affairs and Energy (KK5450601SK2); LIFE; BRAIN; Bpifrance (DOS0193862/00)
Citations: not cited yet (Europe PMC); 52 references in the paper

Abstract

The abstract is not reproduced here: the paper's license (CC BY-NC-ND) does not allow it. Read it in the paper, at the publisher or on Europe PMC.

Repository

Its files are read in the Code ↔ Paper reader above.

Ksilink/PhenoLink

License: LGPL-2.1
State: the link answers, verified on 27 September 2026
Evidence: files inventoried
Commit: 3b8f2a62dbb2c2156f0f8f62db468ded906e8a07, 4 August 2026
Languages: C++ (97), C/C++ (88), Python (9), C (2)
Size: 397 files, 196 scripts
Software Heritage: not archived
Found in: the text, “PhenoLink feature extraction”
Holds: README, license file, documentation
Not found: CITATION.cff, environment file, tests, continuous integration
Tools: NumPy (2 files), pandas (1 file), scikit-image (1 file)
Availability: 1 check, the latest on 27 September 2026: the link answers
  • 27 September 2026: the link answers
198 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;
  • 196 scripts, each with its path and the digest of its content;
  • no match between paragraphs and code yet;
  • 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

Code and data availability statement

The paper has a code and data availability statement. Its license (CC BY-NC-ND) does not allow reproducing it here; in short, from what the harvester recognized in it:

Read it in the paper: doi.org/10.1016/j.isci.2026.116575.

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

  • Authors: added Mona Mathews (0000-0002-8617-2553); Zahra Hanifehlou (0000-0002-4414-3615); Arnaud Ogier (0000-0003-3656-9816); Oliver Brüstle (0000-0002-1277-0980); Johannes H. Wilbertz (0000-0002-0002-6847); removed Mona Mathews; Zahra Hanifehlou; Arnaud Ogier; Oliver Brüstle; Johannes H. Wilbertz

Version 1, 27 September 2026: the first record

Recorded: type, language, journal, volume, issue, pages, dates, 12 authors, 6 keywords, 4 funders, 52 references.

Cite

This paper

Alvandipour, K., Weiss, A., Mathews, M., Besemer, B., Segschneider, M., Hanifehlou, Z., Felski, C., Peitz, M., Ogier, A., Sommer, P., Brüstle, O., & Wilbertz, J. H. (2026). Mapping human microglial morphological diversity via handcrafted and deep learning-derived image features. iScience, 29(7), 116575. https://doi.org/10.1016/j.isci.2026.116575

BibTeX

@article{alvandipour2026mapping,
author = {Alvandipour, Kayhan and Weiss, Amélie and Mathews, Mona and Besemer, Brenda and Segschneider, Michaela and Hanifehlou, Zahra and Felski, Christian and Peitz, Michael and Ogier, Arnaud and Sommer, Peter and Brüstle, Oliver and Wilbertz, Johannes H.},
title = {{Mapping human microglial morphological diversity via handcrafted and deep learning-derived image features}},
journal = {iScience},
year = {2026},
month = jun,
volume = {29},
number = {7},
pages = {116575},
publisher = {Elsevier},
issn = {2589-0042},
doi = {10.1016/j.isci.2026.116575},
url = {https://doi.org/10.1016/j.isci.2026.116575},
pmid = {42491669},
pmcid = {PMC13378380}
}

RIS

TY - JOUR
AU - Alvandipour, Kayhan
AU - Weiss, Amélie
AU - Mathews, Mona
AU - Besemer, Brenda
AU - Segschneider, Michaela
AU - Hanifehlou, Zahra
AU - Felski, Christian
AU - Peitz, Michael
AU - Ogier, Arnaud
AU - Sommer, Peter
AU - Brüstle, Oliver
AU - Wilbertz, Johannes H.
TI - Mapping human microglial morphological diversity via handcrafted and deep learning-derived image features
T2 - iScience
J2 - iScience
PY - 2026
DA - 2026/06/27
VL - 29
IS - 7
SP - 116575
SN - 2589-0042
PB - Elsevier
DO - 10.1016/j.isci.2026.116575
UR - https://doi.org/10.1016/j.isci.2026.116575
LA - en
ER -

CSL-JSON

{
"id": "10.1016/j.isci.2026.116575",
"type": "article-journal",
"title": "Mapping human microglial morphological diversity via handcrafted and deep learning-derived image features",
"container-title": "iScience",
"author": [
{
"family": "Alvandipour",
"given": "Kayhan"
},
{
"family": "Weiss",
"given": "Amélie"
},
{
"family": "Mathews",
"given": "Mona"
},
{
"family": "Besemer",
"given": "Brenda"
},
{
"family": "Segschneider",
"given": "Michaela"
},
{
"family": "Hanifehlou",
"given": "Zahra"
},
{
"family": "Felski",
"given": "Christian"
},
{
"family": "Peitz",
"given": "Michael"
},
{
"family": "Ogier",
"given": "Arnaud"
},
{
"family": "Sommer",
"given": "Peter"
},
{
"family": "Brüstle",
"given": "Oliver"
},
{
"family": "Wilbertz",
"given": "Johannes H."
}
],
"container-title-short": "iScience",
"volume": "29",
"issue": "7",
"page": "116575",
"DOI": "10.1016/j.isci.2026.116575",
"PMID": "42491669",
"PMCID": "PMC13378380",
"ISSN": "2589-0042",
"publisher": "Elsevier",
"URL": "https://doi.org/10.1016/j.isci.2026.116575",
"language": "en",
"issued": {
"date-parts": [
[
2026,
6,
27
]
]
}
}

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.1002/glia.70163
A Cross-Disease Microglial Transcriptional Program Characterizes Neurodegeneration and Highlights SPP1 as a Biomarker.
Journal: Glia
In common: cellular / molecular, 5 references
[2] doi:10.1126/sciadv.adz1686
Persistent microglial activation following neonatal CMV infection mediates neurodegeneration.
Journal: Science advances
In common: 4 references
[3] doi:10.1007/s00429-026-03172-y [code]
Differential effects of acute, chronic, and social defeat stress on microglial morphology in the basolateral and central amygdala, and the medial and lateral habenula.
Journal: Brain structure & function
In common: cellular / molecular, 3 references
[4] 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: scikit-image, pandas, NumPy, cellular / molecular, 1 reference
[5] 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: scikit-image, pandas, NumPy, cellular / molecular, 1 reference
[6] doi:10.1038/s41598-026-61605-4 [code]
Learning precise segmentation of neurofibrillary tangles from rapid manual point annotations.
Journal: Scientific reports
In common: scikit-image, pandas, NumPy, 1 reference
[7] doi:10.7554/elife.107933 [code]
Modality-agnostic decoding of vision and language from fMRI.
Journal: eLife
In common: scikit-image, pandas, NumPy, 1 reference
[8] doi:10.1016/j.stemcr.2026.103053 [code]
Development and validation of a long-term co-maturation protocol for human stem cell-derived microglia and neuronal networks.
Journal: Stem cell reports
In common: cellular / molecular, 3 references
[9] doi:10.1177/0271678x261471282 [code]
Single-cell analysis of microglia and monocyte dynamics uncovers distinct TNF-driven neuroimmune signatures in humans after intracerebral hemorrhage.
Journal: Journal of cerebral blood flow and metabolism : official journal of the International Society of Cerebral Blood Flow and Metabolism
In common: cellular / molecular, 3 references
[10] doi:10.1186/s40478-026-02228-8
microRNA-132 attenuates inflammation in induced pluripotent stem cell-derived microglia from Alzheimer's disease patients.
Journal: Acta neuropathologica communications
In common: cellular / molecular, 3 references

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.