mergechannels 0.1.2__tar.gz → 0.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of mergechannels might be problematic. Click here for more details.

Files changed (368) hide show
  1. {mergechannels-0.1.2 → mergechannels-0.3.0}/Cargo.lock +9 -2
  2. {mergechannels-0.1.2 → mergechannels-0.3.0}/Cargo.toml +2 -1
  3. {mergechannels-0.1.2 → mergechannels-0.3.0}/PKG-INFO +52 -22
  4. {mergechannels-0.1.2 → mergechannels-0.3.0}/README.md +48 -21
  5. mergechannels-0.3.0/assets/christ_luts/LICENSE +21 -0
  6. mergechannels-0.3.0/assets/converted/Circus Cherry.txt +256 -0
  7. mergechannels-0.3.0/assets/converted/Circus Cyan.txt +256 -0
  8. mergechannels-0.3.0/assets/converted/Circus Green.txt +256 -0
  9. mergechannels-0.3.0/assets/converted/Circus Ink Black.txt +256 -0
  10. mergechannels-0.3.0/assets/converted/Circus Ink Cherry.txt +256 -0
  11. mergechannels-0.3.0/assets/converted/Circus Ink Cyan.txt +256 -0
  12. mergechannels-0.3.0/assets/converted/Circus Ink Green.txt +256 -0
  13. mergechannels-0.3.0/assets/converted/Circus Ink Mint.txt +256 -0
  14. mergechannels-0.3.0/assets/converted/Circus Ink Purple.txt +256 -0
  15. mergechannels-0.3.0/assets/converted/Circus Ink Yellow.txt +256 -0
  16. mergechannels-0.3.0/assets/converted/Circus Mint.txt +256 -0
  17. mergechannels-0.3.0/assets/converted/Circus Purple.txt +256 -0
  18. mergechannels-0.3.0/assets/converted/Circus Yellow.txt +256 -0
  19. mergechannels-0.3.0/assets/converted/Duo Cherry.txt +256 -0
  20. mergechannels-0.3.0/assets/converted/Duo Cyan.txt +256 -0
  21. mergechannels-0.3.0/assets/converted/Duo Green.txt +256 -0
  22. mergechannels-0.3.0/assets/converted/Duo Intense Cherry.txt +256 -0
  23. mergechannels-0.3.0/assets/converted/Duo Intense Cyan.txt +256 -0
  24. mergechannels-0.3.0/assets/converted/Duo Intense Green.txt +256 -0
  25. mergechannels-0.3.0/assets/converted/Duo Intense Mint.txt +256 -0
  26. mergechannels-0.3.0/assets/converted/Duo Intense Purple.txt +256 -0
  27. mergechannels-0.3.0/assets/converted/Duo Intense Yellow.txt +256 -0
  28. mergechannels-0.3.0/assets/converted/Duo Mint.txt +256 -0
  29. mergechannels-0.3.0/assets/converted/Duo Purple.txt +256 -0
  30. mergechannels-0.3.0/assets/converted/Duo Yellow.txt +256 -0
  31. mergechannels-0.3.0/assets/converted/Grays g=0.25 inverted.txt +256 -0
  32. mergechannels-0.3.0/assets/converted/Grays g=0.25.txt +256 -0
  33. mergechannels-0.3.0/assets/converted/Grays g=0.50 inverted.txt +256 -0
  34. mergechannels-0.3.0/assets/converted/Grays g=0.50.txt +256 -0
  35. mergechannels-0.3.0/assets/converted/Grays g=0.75 inverted.txt +256 -0
  36. mergechannels-0.3.0/assets/converted/Grays g=0.75.txt +256 -0
  37. mergechannels-0.3.0/assets/converted/Grays g=1.00 inverted.txt +256 -0
  38. mergechannels-0.3.0/assets/converted/Grays g=1.25 inverted.txt +256 -0
  39. mergechannels-0.3.0/assets/converted/Grays g=1.25.txt +256 -0
  40. mergechannels-0.3.0/assets/converted/Grays g=1.50 inverted.txt +256 -0
  41. mergechannels-0.3.0/assets/converted/Grays g=1.50.txt +256 -0
  42. mergechannels-0.3.0/assets/converted/Grays g=1.75 inverted.txt +256 -0
  43. mergechannels-0.3.0/assets/converted/Grays g=1.75.txt +256 -0
  44. mergechannels-0.3.0/assets/converted/Grays g=2.00 inverted.txt +256 -0
  45. mergechannels-0.3.0/assets/converted/Grays g=2.00.txt +256 -0
  46. mergechannels-0.3.0/assets/converted/Green Hot.txt +256 -0
  47. mergechannels-0.3.0/assets/converted/Ink Black.txt +256 -0
  48. mergechannels-0.3.0/assets/converted/Ink Cherry.txt +256 -0
  49. mergechannels-0.3.0/assets/converted/Ink Cyan.txt +256 -0
  50. mergechannels-0.3.0/assets/converted/Ink Green.txt +256 -0
  51. mergechannels-0.3.0/assets/converted/Ink Mint.txt +256 -0
  52. mergechannels-0.3.0/assets/converted/Ink Purple.txt +256 -0
  53. mergechannels-0.3.0/assets/converted/Ink Wash Black.txt +256 -0
  54. mergechannels-0.3.0/assets/converted/Ink Wash Cherry.txt +256 -0
  55. mergechannels-0.3.0/assets/converted/Ink Wash Cyan.txt +256 -0
  56. mergechannels-0.3.0/assets/converted/Ink Wash Green.txt +256 -0
  57. mergechannels-0.3.0/assets/converted/Ink Wash Mint.txt +256 -0
  58. mergechannels-0.3.0/assets/converted/Ink Wash Purple.txt +256 -0
  59. mergechannels-0.3.0/assets/converted/Ink Wash Yellow.txt +256 -0
  60. mergechannels-0.3.0/assets/converted/Ink Yellow.txt +256 -0
  61. mergechannels-0.3.0/assets/converted/Parabolic RGB.txt +256 -0
  62. mergechannels-0.3.0/assets/converted/Phase Bold Green-Magenta.txt +256 -0
  63. mergechannels-0.3.0/assets/converted/Phase Bold Ink Green-Magenta.txt +256 -0
  64. mergechannels-0.3.0/assets/converted/Phase Bold Ink Mint-Cherry.txt +256 -0
  65. mergechannels-0.3.0/assets/converted/Phase Bold Ink Yellow-Cyan.txt +256 -0
  66. mergechannels-0.3.0/assets/converted/Phase Bold Mint-Cherry.txt +256 -0
  67. mergechannels-0.3.0/assets/converted/Phase Bold Yellow-Cyan.txt +256 -0
  68. mergechannels-0.3.0/assets/converted/Phase Green-Magenta.txt +256 -0
  69. mergechannels-0.3.0/assets/converted/Phase Ink Green-Magenta.txt +256 -0
  70. mergechannels-0.3.0/assets/converted/Phase Ink Mint-Cherry.txt +256 -0
  71. mergechannels-0.3.0/assets/converted/Phase Ink Yellow-Cyan.txt +256 -0
  72. mergechannels-0.3.0/assets/converted/Phase Mint-Cherry.txt +256 -0
  73. mergechannels-0.3.0/assets/converted/Phase Yellow-Cyan.txt +256 -0
  74. mergechannels-0.3.0/assets/converted/Pop blue inverted.txt +256 -0
  75. mergechannels-0.3.0/assets/converted/Pop blue.txt +256 -0
  76. mergechannels-0.3.0/assets/converted/Pop cherry inverted.txt +256 -0
  77. mergechannels-0.3.0/assets/converted/Pop cherry.txt +256 -0
  78. mergechannels-0.3.0/assets/converted/Pop cyan inverted.txt +256 -0
  79. mergechannels-0.3.0/assets/converted/Pop cyan.txt +256 -0
  80. mergechannels-0.3.0/assets/converted/Pop green inverted.txt +256 -0
  81. mergechannels-0.3.0/assets/converted/Pop green.txt +256 -0
  82. mergechannels-0.3.0/assets/converted/Pop lavender inverted.txt +256 -0
  83. mergechannels-0.3.0/assets/converted/Pop magenta inverted.txt +256 -0
  84. mergechannels-0.3.0/assets/converted/Pop magenta.txt +256 -0
  85. mergechannels-0.3.0/assets/converted/Pop mint inverted.txt +256 -0
  86. mergechannels-0.3.0/assets/converted/Pop mint.txt +256 -0
  87. mergechannels-0.3.0/assets/converted/Pop purple inverted.txt +256 -0
  88. mergechannels-0.3.0/assets/converted/Pop purple.txt +256 -0
  89. mergechannels-0.3.0/assets/converted/Pop red inverted.txt +256 -0
  90. mergechannels-0.3.0/assets/converted/Pop red.txt +256 -0
  91. mergechannels-0.3.0/assets/converted/Pop yellow inverted.txt +256 -0
  92. mergechannels-0.3.0/assets/converted/Pop yellow.txt +256 -0
  93. mergechannels-0.3.0/assets/converted/Quartetto MYGB Blue.txt +256 -0
  94. mergechannels-0.3.0/assets/converted/Quartetto MYGB Green.txt +256 -0
  95. mergechannels-0.3.0/assets/converted/Quartetto MYGB Magenta.txt +256 -0
  96. mergechannels-0.3.0/assets/converted/Quartetto MYGB Yellow.txt +256 -0
  97. mergechannels-0.3.0/assets/converted/Quartetto RYGB Blue.txt +256 -0
  98. mergechannels-0.3.0/assets/converted/Quartetto RYGB Green.txt +256 -0
  99. mergechannels-0.3.0/assets/converted/Quartetto RYGB Red.txt +256 -0
  100. mergechannels-0.3.0/assets/converted/Quartetto RYGB Yellow.txt +256 -0
  101. mergechannels-0.3.0/assets/converted/Spectrum Parabolic Ramp.txt +256 -0
  102. mergechannels-0.3.0/assets/jdm_luts/Circus Cherry.lut +0 -0
  103. mergechannels-0.3.0/assets/jdm_luts/Circus Cyan.lut +0 -0
  104. mergechannels-0.3.0/assets/jdm_luts/Circus Green.lut +0 -0
  105. mergechannels-0.3.0/assets/jdm_luts/Circus Ink Black.lut +0 -0
  106. mergechannels-0.3.0/assets/jdm_luts/Circus Ink Cherry.lut +0 -0
  107. mergechannels-0.3.0/assets/jdm_luts/Circus Ink Cyan.lut +0 -0
  108. mergechannels-0.3.0/assets/jdm_luts/Circus Ink Green.lut +0 -0
  109. mergechannels-0.3.0/assets/jdm_luts/Circus Ink Mint.lut +0 -0
  110. mergechannels-0.3.0/assets/jdm_luts/Circus Ink Purple.lut +0 -0
  111. mergechannels-0.3.0/assets/jdm_luts/Circus Ink Yellow.lut +0 -0
  112. mergechannels-0.3.0/assets/jdm_luts/Circus Mint.lut +0 -0
  113. mergechannels-0.3.0/assets/jdm_luts/Circus Purple.lut +0 -0
  114. mergechannels-0.3.0/assets/jdm_luts/Circus Yellow.lut +0 -0
  115. mergechannels-0.3.0/assets/jdm_luts/Duo Cherry.lut +0 -0
  116. mergechannels-0.3.0/assets/jdm_luts/Duo Cyan.lut +0 -0
  117. mergechannels-0.3.0/assets/jdm_luts/Duo Green.lut +0 -0
  118. mergechannels-0.3.0/assets/jdm_luts/Duo Intense Cherry.lut +0 -0
  119. mergechannels-0.3.0/assets/jdm_luts/Duo Intense Cyan.lut +0 -0
  120. mergechannels-0.3.0/assets/jdm_luts/Duo Intense Green.lut +0 -0
  121. mergechannels-0.3.0/assets/jdm_luts/Duo Intense Mint.lut +0 -0
  122. mergechannels-0.3.0/assets/jdm_luts/Duo Intense Purple.lut +0 -0
  123. mergechannels-0.3.0/assets/jdm_luts/Duo Intense Yellow.lut +0 -0
  124. mergechannels-0.3.0/assets/jdm_luts/Duo Mint.lut +0 -0
  125. mergechannels-0.3.0/assets/jdm_luts/Duo Purple.lut +0 -0
  126. mergechannels-0.3.0/assets/jdm_luts/Duo Yellow.lut +0 -0
  127. mergechannels-0.3.0/assets/jdm_luts/Grays g=0.25 inverted.lut +0 -0
  128. mergechannels-0.3.0/assets/jdm_luts/Grays g=0.25.lut +0 -0
  129. mergechannels-0.3.0/assets/jdm_luts/Grays g=0.50 inverted.lut +0 -0
  130. mergechannels-0.3.0/assets/jdm_luts/Grays g=0.50.lut +0 -0
  131. mergechannels-0.3.0/assets/jdm_luts/Grays g=0.75 inverted.lut +0 -0
  132. mergechannels-0.3.0/assets/jdm_luts/Grays g=0.75.lut +0 -0
  133. mergechannels-0.3.0/assets/jdm_luts/Grays g=1.00 inverted.lut +0 -0
  134. mergechannels-0.3.0/assets/jdm_luts/Grays g=1.25 inverted.lut +0 -0
  135. mergechannels-0.3.0/assets/jdm_luts/Grays g=1.25.lut +0 -0
  136. mergechannels-0.3.0/assets/jdm_luts/Grays g=1.50 inverted.lut +0 -0
  137. mergechannels-0.3.0/assets/jdm_luts/Grays g=1.50.lut +0 -0
  138. mergechannels-0.3.0/assets/jdm_luts/Grays g=1.75 inverted.lut +0 -0
  139. mergechannels-0.3.0/assets/jdm_luts/Grays g=1.75.lut +0 -0
  140. mergechannels-0.3.0/assets/jdm_luts/Grays g=2.00 inverted.lut +0 -0
  141. mergechannels-0.3.0/assets/jdm_luts/Grays g=2.00.lut +0 -0
  142. mergechannels-0.3.0/assets/jdm_luts/Ink Black.lut +0 -0
  143. mergechannels-0.3.0/assets/jdm_luts/Ink Cherry.lut +0 -0
  144. mergechannels-0.3.0/assets/jdm_luts/Ink Cyan.lut +0 -0
  145. mergechannels-0.3.0/assets/jdm_luts/Ink Green.lut +0 -0
  146. mergechannels-0.3.0/assets/jdm_luts/Ink Mint.lut +0 -0
  147. mergechannels-0.3.0/assets/jdm_luts/Ink Purple.lut +0 -0
  148. mergechannels-0.3.0/assets/jdm_luts/Ink Wash Black.lut +0 -0
  149. mergechannels-0.3.0/assets/jdm_luts/Ink Wash Cherry.lut +0 -0
  150. mergechannels-0.3.0/assets/jdm_luts/Ink Wash Cyan.lut +0 -0
  151. mergechannels-0.3.0/assets/jdm_luts/Ink Wash Green.lut +0 -0
  152. mergechannels-0.3.0/assets/jdm_luts/Ink Wash Mint.lut +0 -0
  153. mergechannels-0.3.0/assets/jdm_luts/Ink Wash Purple.lut +0 -0
  154. mergechannels-0.3.0/assets/jdm_luts/Ink Wash Yellow.lut +0 -0
  155. mergechannels-0.3.0/assets/jdm_luts/Ink Yellow.lut +0 -0
  156. mergechannels-0.3.0/assets/jdm_luts/Parabolic RGB.lut +256 -0
  157. mergechannels-0.3.0/assets/jdm_luts/Phase Bold Green-Magenta.lut +0 -0
  158. mergechannels-0.3.0/assets/jdm_luts/Phase Bold Ink Green-Magenta.lut +0 -0
  159. mergechannels-0.3.0/assets/jdm_luts/Phase Bold Ink Mint-Cherry.lut +0 -0
  160. mergechannels-0.3.0/assets/jdm_luts/Phase Bold Ink Yellow-Cyan.lut +0 -0
  161. mergechannels-0.3.0/assets/jdm_luts/Phase Bold Mint-Cherry.lut +0 -0
  162. mergechannels-0.3.0/assets/jdm_luts/Phase Bold Yellow-Cyan.lut +0 -0
  163. mergechannels-0.3.0/assets/jdm_luts/Phase Green-Magenta.lut +0 -0
  164. mergechannels-0.3.0/assets/jdm_luts/Phase Ink Green-Magenta.lut +0 -0
  165. mergechannels-0.3.0/assets/jdm_luts/Phase Ink Mint-Cherry.lut +0 -0
  166. mergechannels-0.3.0/assets/jdm_luts/Phase Ink Yellow-Cyan.lut +0 -0
  167. mergechannels-0.3.0/assets/jdm_luts/Phase Mint-Cherry.lut +0 -0
  168. mergechannels-0.3.0/assets/jdm_luts/Phase Yellow-Cyan.lut +0 -0
  169. mergechannels-0.3.0/assets/jdm_luts/Pop blue inverted.lut +0 -0
  170. mergechannels-0.3.0/assets/jdm_luts/Pop blue.lut +0 -0
  171. mergechannels-0.3.0/assets/jdm_luts/Pop cherry inverted.lut +0 -0
  172. mergechannels-0.3.0/assets/jdm_luts/Pop cherry.lut +0 -0
  173. mergechannels-0.3.0/assets/jdm_luts/Pop cyan inverted.lut +0 -0
  174. mergechannels-0.3.0/assets/jdm_luts/Pop cyan.lut +0 -0
  175. mergechannels-0.3.0/assets/jdm_luts/Pop green inverted.lut +0 -0
  176. mergechannels-0.3.0/assets/jdm_luts/Pop green.lut +0 -0
  177. mergechannels-0.3.0/assets/jdm_luts/Pop lavender inverted.lut +0 -0
  178. mergechannels-0.3.0/assets/jdm_luts/Pop magenta inverted.lut +0 -0
  179. mergechannels-0.3.0/assets/jdm_luts/Pop magenta.lut +0 -0
  180. mergechannels-0.3.0/assets/jdm_luts/Pop mint inverted.lut +0 -0
  181. mergechannels-0.3.0/assets/jdm_luts/Pop mint.lut +0 -0
  182. mergechannels-0.3.0/assets/jdm_luts/Pop purple inverted.lut +0 -0
  183. mergechannels-0.3.0/assets/jdm_luts/Pop purple.lut +0 -0
  184. mergechannels-0.3.0/assets/jdm_luts/Pop red inverted.lut +0 -0
  185. mergechannels-0.3.0/assets/jdm_luts/Pop red.lut +0 -0
  186. mergechannels-0.3.0/assets/jdm_luts/Pop yellow inverted.lut +0 -0
  187. mergechannels-0.3.0/assets/jdm_luts/Pop yellow.lut +0 -0
  188. mergechannels-0.3.0/assets/jdm_luts/Quartetto MYGB Blue.lut +0 -0
  189. mergechannels-0.3.0/assets/jdm_luts/Quartetto MYGB Green.lut +0 -0
  190. mergechannels-0.3.0/assets/jdm_luts/Quartetto MYGB Magenta.lut +0 -0
  191. mergechannels-0.3.0/assets/jdm_luts/Quartetto MYGB Yellow.lut +0 -0
  192. mergechannels-0.3.0/assets/jdm_luts/Quartetto RYGB Blue.lut +0 -0
  193. mergechannels-0.3.0/assets/jdm_luts/Quartetto RYGB Green.lut +0 -0
  194. mergechannels-0.3.0/assets/jdm_luts/Quartetto RYGB Red.lut +0 -0
  195. mergechannels-0.3.0/assets/jdm_luts/Quartetto RYGB Yellow.lut +0 -0
  196. {mergechannels-0.1.2 → mergechannels-0.3.0}/pyproject.toml +7 -0
  197. {mergechannels-0.1.2 → mergechannels-0.3.0}/pytests/test_colorize.py +50 -10
  198. {mergechannels-0.1.2 → mergechannels-0.3.0}/python/mergechannels/__init__.py +5 -5
  199. mergechannels-0.3.0/python/mergechannels/__init__.pyi +30 -0
  200. {mergechannels-0.1.2 → mergechannels-0.3.0}/python/mergechannels/_internal.py +25 -7
  201. mergechannels-0.3.0/python/mergechannels/_luts.py +177 -0
  202. {mergechannels-0.1.2 → mergechannels-0.3.0}/src/blend.rs +43 -8
  203. mergechannels-0.3.0/src/cmaps.rs +45343 -0
  204. mergechannels-0.3.0/src/colorize.rs +397 -0
  205. mergechannels-0.3.0/src/interface.rs +239 -0
  206. mergechannels-0.3.0/src/lib.rs +15 -0
  207. {mergechannels-0.1.2 → mergechannels-0.3.0}/uv.lock +217 -2
  208. mergechannels-0.1.2/python/mergechannels/__init__.pyi +0 -27
  209. mergechannels-0.1.2/python/mergechannels/_luts.py +0 -81
  210. mergechannels-0.1.2/src/cmaps.rs +0 -20191
  211. mergechannels-0.1.2/src/colorize.rs +0 -64
  212. mergechannels-0.1.2/src/interface.rs +0 -36
  213. mergechannels-0.1.2/src/lib.rs +0 -15
  214. {mergechannels-0.1.2 → mergechannels-0.3.0}/.gitattributes +0 -0
  215. {mergechannels-0.1.2 → mergechannels-0.3.0}/.github/workflows/CI.yml +0 -0
  216. {mergechannels-0.1.2 → mergechannels-0.3.0}/.gitignore +0 -0
  217. {mergechannels-0.1.2 → mergechannels-0.3.0}/.pre-commit-config.yaml +0 -0
  218. {mergechannels-0.1.2 → mergechannels-0.3.0}/LICENSE +0 -0
  219. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/builtin_luts/16_colors.lut +0 -0
  220. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/builtin_luts/5_ramps.lut +0 -0
  221. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/builtin_luts/6_shades.lut +0 -0
  222. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/builtin_luts/Cyan Hot.lut +0 -0
  223. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/builtin_luts/Green Fire Blue.lut +0 -0
  224. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/builtin_luts/HiLo.lut +0 -0
  225. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/builtin_luts/ICA.lut +0 -0
  226. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/builtin_luts/ICA2.lut +0 -0
  227. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/builtin_luts/ICA3.lut +0 -0
  228. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/builtin_luts/Magenta Hot.lut +0 -0
  229. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/builtin_luts/Orange Hot.lut +0 -0
  230. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/builtin_luts/Rainbow RGB.lut +0 -0
  231. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/builtin_luts/Red Hot.lut +0 -0
  232. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/builtin_luts/Thermal.lut +0 -0
  233. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/builtin_luts/Yellow Hot.lut +0 -0
  234. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/builtin_luts/blue_orange_icb.lut +0 -0
  235. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/builtin_luts/brgbcmyw.lut +0 -0
  236. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/builtin_luts/cool.lut +0 -0
  237. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/builtin_luts/edges.lut +0 -0
  238. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/builtin_luts/gem.lut +0 -0
  239. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/builtin_luts/glasbey.lut +0 -0
  240. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/builtin_luts/glasbey_inverted.lut +0 -0
  241. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/builtin_luts/glasbey_on_dark.lut +0 -0
  242. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/builtin_luts/glow.lut +0 -0
  243. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/builtin_luts/mpl-inferno.lut +0 -0
  244. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/builtin_luts/mpl-magma.lut +0 -0
  245. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/builtin_luts/mpl-plasma.lut +0 -0
  246. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/builtin_luts/mpl-viridis.lut +0 -0
  247. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/builtin_luts/phase.lut +0 -0
  248. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/builtin_luts/physics.lut +0 -0
  249. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/builtin_luts/royal.lut +0 -0
  250. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/builtin_luts/sepia.lut +0 -0
  251. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/builtin_luts/smart.lut +0 -0
  252. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/builtin_luts/thal.lut +0 -0
  253. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/builtin_luts/thallium.lut +0 -0
  254. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/builtin_luts/unionjack.lut +0 -0
  255. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/christ_luts/3color-BMR.lut +0 -0
  256. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/christ_luts/3color-CGY.lut +0 -0
  257. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/christ_luts/3color-RMB.lut +0 -0
  258. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/christ_luts/3color-YGC.lut +0 -0
  259. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/christ_luts/BOP blue.lut +0 -0
  260. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/christ_luts/BOP orange.lut +0 -0
  261. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/christ_luts/BOP purple.lut +0 -0
  262. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/christ_luts/I Blue.lut +0 -0
  263. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/christ_luts/I Bordeaux.lut +0 -0
  264. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/christ_luts/I Cyan.lut +0 -0
  265. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/christ_luts/I Forest.lut +0 -0
  266. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/christ_luts/I Green.lut +0 -0
  267. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/christ_luts/I Magenta.lut +0 -0
  268. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/christ_luts/I Purple.lut +0 -0
  269. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/christ_luts/I Red.lut +0 -0
  270. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/christ_luts/I Yellow.lut +0 -0
  271. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/christ_luts/NOTICE +0 -0
  272. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/christ_luts/OPF fresh.lut +0 -0
  273. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/christ_luts/OPF orange.lut +0 -0
  274. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/christ_luts/OPF purple.lut +0 -0
  275. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/christ_luts/Turbo.lut +0 -0
  276. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/16_colors.txt +0 -0
  277. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/3-3-2 RGB.txt +0 -0
  278. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/3color-BMR.txt +0 -0
  279. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/3color-CGY.txt +0 -0
  280. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/3color-RMB.txt +0 -0
  281. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/3color-YGC.txt +0 -0
  282. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/5_ramps.txt +0 -0
  283. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/6_shades.txt +0 -0
  284. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/BOP blue.txt +0 -0
  285. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/BOP orange.txt +0 -0
  286. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/BOP purple.txt +0 -0
  287. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/Blue.txt +0 -0
  288. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/Cyan Hot.txt +0 -0
  289. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/Cyan.txt +0 -0
  290. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/Fire.txt +0 -0
  291. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/Grays.txt +0 -0
  292. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/Green Fire Blue.txt +0 -0
  293. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/Green.txt +0 -0
  294. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/HiLo.txt +0 -0
  295. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/I Blue.txt +0 -0
  296. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/I Bordeaux.txt +0 -0
  297. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/I Cyan.txt +0 -0
  298. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/I Forest.txt +0 -0
  299. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/I Green.txt +0 -0
  300. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/I Magenta.txt +0 -0
  301. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/I Purple.txt +0 -0
  302. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/I Red.txt +0 -0
  303. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/I Yellow.txt +0 -0
  304. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/ICA.txt +0 -0
  305. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/ICA2.txt +0 -0
  306. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/ICA3.txt +0 -0
  307. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/Ice.txt +0 -0
  308. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/Magenta Hot.txt +0 -0
  309. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/Magenta.txt +0 -0
  310. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/OIMB1.txt +0 -0
  311. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/OIMB2.txt +0 -0
  312. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/OIMB3.txt +0 -0
  313. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/OPF fresh.txt +0 -0
  314. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/OPF orange.txt +0 -0
  315. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/OPF purple.txt +0 -0
  316. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/Orange Hot.txt +0 -0
  317. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/Rainbow RGB.txt +0 -0
  318. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/Red Hot.txt +0 -0
  319. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/Red%Green.txt +0 -0
  320. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/Red.txt +0 -0
  321. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/Spectrum.txt +0 -0
  322. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/Thermal.txt +0 -0
  323. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/Turbo.txt +0 -0
  324. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/Yellow Hot.txt +0 -0
  325. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/Yellow.txt +0 -0
  326. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/betterBlue.txt +0 -0
  327. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/betterCyan.txt +0 -0
  328. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/betterGreen.txt +0 -0
  329. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/betterOrange.txt +0 -0
  330. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/betterRed.txt +0 -0
  331. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/betterYellow.txt +0 -0
  332. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/blue_orange_icb.txt +0 -0
  333. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/brgbcmyw.txt +0 -0
  334. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/cool.txt +0 -0
  335. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/edges.txt +0 -0
  336. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/gem.txt +0 -0
  337. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/glasbey.txt +0 -0
  338. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/glasbey_inverted.txt +0 -0
  339. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/glasbey_on_dark.txt +0 -0
  340. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/glow.txt +0 -0
  341. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/mpl-inferno.txt +0 -0
  342. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/mpl-magma.txt +0 -0
  343. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/mpl-plasma.txt +0 -0
  344. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/mpl-viridis.txt +0 -0
  345. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/phase.txt +0 -0
  346. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/physics.txt +0 -0
  347. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/royal.txt +0 -0
  348. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/sepia.txt +0 -0
  349. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/smart.txt +0 -0
  350. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/thal.txt +0 -0
  351. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/thallium.txt +0 -0
  352. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/converted/unionjack.txt +0 -0
  353. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/zac_luts/OIMB1.lut +0 -0
  354. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/zac_luts/OIMB2.lut +0 -0
  355. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/zac_luts/OIMB3.lut +0 -0
  356. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/zac_luts/betterBlue.lut +0 -0
  357. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/zac_luts/betterCyan.lut +0 -0
  358. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/zac_luts/betterGreen.lut +0 -0
  359. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/zac_luts/betterOrange.lut +0 -0
  360. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/zac_luts/betterRed.lut +0 -0
  361. {mergechannels-0.1.2 → mergechannels-0.3.0}/assets/zac_luts/betterYellow.lut +0 -0
  362. {mergechannels-0.1.2 → mergechannels-0.3.0}/python/mergechannels/_blending.py +0 -0
  363. {mergechannels-0.1.2 → mergechannels-0.3.0}/python/mergechannels/py.typed +0 -0
  364. {mergechannels-0.1.2 → mergechannels-0.3.0}/ruff.toml +0 -0
  365. {mergechannels-0.1.2 → mergechannels-0.3.0}/scripts/convert_luts_to_txt.ijm +0 -0
  366. {mergechannels-0.1.2 → mergechannels-0.3.0}/scripts/populate_luts.py +0 -0
  367. {mergechannels-0.1.2 → mergechannels-0.3.0}/src/normalize.rs +0 -0
  368. {mergechannels-0.1.2 → mergechannels-0.3.0}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  # This file is automatically @generated by Cargo.
2
2
  # It is not intended for manual editing.
3
- version = 3
3
+ version = 4
4
4
 
5
5
  [[package]]
6
6
  name = "autocfg"
@@ -59,12 +59,13 @@ dependencies = [
59
59
 
60
60
  [[package]]
61
61
  name = "mergechannels"
62
- version = "0.1.2"
62
+ version = "0.3.0"
63
63
  dependencies = [
64
64
  "lazy_static",
65
65
  "ndarray",
66
66
  "numpy",
67
67
  "pyo3",
68
+ "smallvec",
68
69
  ]
69
70
 
70
71
  [[package]]
@@ -239,6 +240,12 @@ version = "2.1.1"
239
240
  source = "registry+https://github.com/rust-lang/crates.io-index"
240
241
  checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d"
241
242
 
243
+ [[package]]
244
+ name = "smallvec"
245
+ version = "1.15.0"
246
+ source = "registry+https://github.com/rust-lang/crates.io-index"
247
+ checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9"
248
+
242
249
  [[package]]
243
250
  name = "syn"
244
251
  version = "2.0.98"
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "mergechannels"
3
- version = "0.1.2"
3
+ version = "0.3.0"
4
4
  edition = "2021"
5
5
 
6
6
  # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
@@ -13,3 +13,4 @@ lazy_static = "1.5.0"
13
13
  ndarray = "0.16.1"
14
14
  numpy = "0.24.0"
15
15
  pyo3 = "0.24.1"
16
+ smallvec = "1.15.0"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mergechannels
3
- Version: 0.1.2
3
+ Version: 0.3.0
4
4
  Classifier: Programming Language :: Rust
5
5
  Classifier: Programming Language :: Python :: Implementation :: CPython
6
6
  Classifier: Programming Language :: Python :: Implementation :: PyPy
@@ -12,7 +12,10 @@ Classifier: Programming Language :: Python :: 3.11
12
12
  Classifier: Programming Language :: Python :: 3.12
13
13
  Classifier: Programming Language :: Python :: 3.13
14
14
  Requires-Dist: numpy>1.25.0
15
+ Provides-Extra: nvim
15
16
  License-File: LICENSE
17
+ Summary: Apply and merge colormaps
18
+ Author-email: Zac Swider <zac.swider@gmail.com>
16
19
  License: MIT
17
20
  Requires-Python: >=3.9, <=3.13
18
21
  Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
@@ -60,8 +63,7 @@ plt.show()
60
63
  print(colorized.shape, colorized.dtype)
61
64
  >> (512, 512, 3) uint8
62
65
  ```
63
- ![colorize a single image](https://raw.githubusercontent.com/zacswider/README_Images/main/camera_red-green.png
64
- )
66
+ ![colorize a single image](https://raw.githubusercontent.com/zacswider/README_Images/main/camera_red-green.png)
65
67
 
66
68
 
67
69
  ### apply a different colormap to each channel
@@ -71,38 +73,66 @@ import matplotlib.pyplot as plt
71
73
  import mergechannels as mc
72
74
 
73
75
  cells, nuclei = data.cells3d().max(axis=0)
74
- cells = to_uint8(cells) # normalize your own arrays, mergechannels doesn't currently handle this
75
- nuclei = to_uint8(nuclei) # normalize your own arrays, mergechannels doesn't currently handle this
76
+ assert cells.dtype == 'uint16' and nuclei.dtype == 'uint16'
77
+ fig, axes = plt.subplots(1, 2, figsize=(3, 6), dpi=300)
78
+ for ax in axes.ravel(): ax.axis('off')
79
+ (a, b) = axes.ravel()
80
+ a.imshow(mc.merge([cells, nuclei],['Orange Hot', 'Cyan Hot']))
81
+ b.imshow(mc.merge([cells, nuclei],['I Blue', 'I Forest'], blending='min'))
82
+ fig.tight_layout()
83
+ plt.show()
84
+ ```
85
+ ![max and min multicolor blending](https://raw.githubusercontent.com/zacswider/README_Images/main/overlay_normal_and_inverted.png)
76
86
 
77
- fig, axes = plt.subplots(2, 2, figsize=(6, 6), dpi=150)
87
+ ### apply a colormap to a whole stack
88
+ ```python
89
+ from skimage import data
90
+ from matplotlib import pyplot as plt
91
+ import mergechannels as mc
92
+
93
+ volume = data.cells3d()
94
+ cells = volume[:, 0]
95
+ nuclei = volume[:, 1]
96
+ merged = mc.merge([cells, nuclei],['Orange Hot', 'Cyan Hot'])
97
+ plt.imshow(merged[24]); plt.show()
98
+ ```
99
+ ![colorize a whole stack of images](https://raw.githubusercontent.com/zacswider/README_Images/main/merged_stacks.png)
100
+
101
+ ### adjust the saturation limits when applying colormaps
102
+ ``` python
103
+ from skimage import data
104
+ import matplotlib.pyplot as plt
105
+ import mergechannels as mc
106
+
107
+ cells, nuclei = data.cells3d().max(axis=0)
108
+ channels = [cells, nuclei]
109
+ colormaps = ['I Blue', 'I Forest']
110
+ fig, axes = plt.subplots(1, 2, figsize=(3, 6), dpi=300)
78
111
  for ax in axes.ravel(): ax.axis('off')
79
- (a, b, c, d) = axes.ravel()
80
- a.imshow(cells, cmap='gray')
81
- b.imshow(nuclei, cmap='gray')
82
- c.imshow(
83
- mc.merge(
84
- [cells, nuclei],
85
- ['Orange Hot', 'Cyan Hot'], # maximum blending is the default
86
- ),
87
- )
88
- d.imshow(
112
+ (a, b) = axes.ravel()
113
+ a.imshow(mc.merge(channels, colormaps, blending='min'))
114
+ b.imshow(
89
115
  mc.merge(
90
- [cells, nuclei],
91
- ['I Blue', 'I Forest'],
92
- blending='min', # use minimum blending with inverted colormaps
116
+ channels,
117
+ colormaps,
118
+ blending='min',
119
+ saturation_limits=(
120
+ 0.01, # bottom 1% of pixels set to black point
121
+ 0.97, # top 3% of pixels set to white point
122
+ ),
93
123
  ),
94
124
  )
95
125
  fig.tight_layout()
96
126
  plt.show()
97
127
  ```
98
- ![max and min multicolor blending](https://raw.githubusercontent.com/zacswider/README_Images/main/cells_multicolor.png)
128
+ ![adjust saturation limits](https://raw.githubusercontent.com/zacswider/README_Images/main/adjust_sat_lims.png)
99
129
 
100
130
 
101
131
  ## Roadmap
102
- mergechannels is currently incredibly simple. It can apply one or more colormaps to one or more 2D 8-bit images and that's it.
132
+ mergechannels is currently incredibly simple. It can apply one or more colormaps to one or more 2D and 3D 8-bit or 16-bit images and that's it.
103
133
  - Add support for any numerical dtype
104
- - Add support for 3D images
105
134
  - Add option to return any colormap as a matplotlib colormap
135
+ - Add option to pass external colormaps to mergechannels
106
136
  - Add support for directly passing matplotlib colormaps instead of colormap names
107
137
  - Parallelize colormap application on large images (if it's helpful)
108
138
  - Add option to overlay binary or instance masks onto colorized images
@@ -41,8 +41,7 @@ plt.show()
41
41
  print(colorized.shape, colorized.dtype)
42
42
  >> (512, 512, 3) uint8
43
43
  ```
44
- ![colorize a single image](https://raw.githubusercontent.com/zacswider/README_Images/main/camera_red-green.png
45
- )
44
+ ![colorize a single image](https://raw.githubusercontent.com/zacswider/README_Images/main/camera_red-green.png)
46
45
 
47
46
 
48
47
  ### apply a different colormap to each channel
@@ -52,38 +51,66 @@ import matplotlib.pyplot as plt
52
51
  import mergechannels as mc
53
52
 
54
53
  cells, nuclei = data.cells3d().max(axis=0)
55
- cells = to_uint8(cells) # normalize your own arrays, mergechannels doesn't currently handle this
56
- nuclei = to_uint8(nuclei) # normalize your own arrays, mergechannels doesn't currently handle this
54
+ assert cells.dtype == 'uint16' and nuclei.dtype == 'uint16'
55
+ fig, axes = plt.subplots(1, 2, figsize=(3, 6), dpi=300)
56
+ for ax in axes.ravel(): ax.axis('off')
57
+ (a, b) = axes.ravel()
58
+ a.imshow(mc.merge([cells, nuclei],['Orange Hot', 'Cyan Hot']))
59
+ b.imshow(mc.merge([cells, nuclei],['I Blue', 'I Forest'], blending='min'))
60
+ fig.tight_layout()
61
+ plt.show()
62
+ ```
63
+ ![max and min multicolor blending](https://raw.githubusercontent.com/zacswider/README_Images/main/overlay_normal_and_inverted.png)
57
64
 
58
- fig, axes = plt.subplots(2, 2, figsize=(6, 6), dpi=150)
65
+ ### apply a colormap to a whole stack
66
+ ```python
67
+ from skimage import data
68
+ from matplotlib import pyplot as plt
69
+ import mergechannels as mc
70
+
71
+ volume = data.cells3d()
72
+ cells = volume[:, 0]
73
+ nuclei = volume[:, 1]
74
+ merged = mc.merge([cells, nuclei],['Orange Hot', 'Cyan Hot'])
75
+ plt.imshow(merged[24]); plt.show()
76
+ ```
77
+ ![colorize a whole stack of images](https://raw.githubusercontent.com/zacswider/README_Images/main/merged_stacks.png)
78
+
79
+ ### adjust the saturation limits when applying colormaps
80
+ ``` python
81
+ from skimage import data
82
+ import matplotlib.pyplot as plt
83
+ import mergechannels as mc
84
+
85
+ cells, nuclei = data.cells3d().max(axis=0)
86
+ channels = [cells, nuclei]
87
+ colormaps = ['I Blue', 'I Forest']
88
+ fig, axes = plt.subplots(1, 2, figsize=(3, 6), dpi=300)
59
89
  for ax in axes.ravel(): ax.axis('off')
60
- (a, b, c, d) = axes.ravel()
61
- a.imshow(cells, cmap='gray')
62
- b.imshow(nuclei, cmap='gray')
63
- c.imshow(
64
- mc.merge(
65
- [cells, nuclei],
66
- ['Orange Hot', 'Cyan Hot'], # maximum blending is the default
67
- ),
68
- )
69
- d.imshow(
90
+ (a, b) = axes.ravel()
91
+ a.imshow(mc.merge(channels, colormaps, blending='min'))
92
+ b.imshow(
70
93
  mc.merge(
71
- [cells, nuclei],
72
- ['I Blue', 'I Forest'],
73
- blending='min', # use minimum blending with inverted colormaps
94
+ channels,
95
+ colormaps,
96
+ blending='min',
97
+ saturation_limits=(
98
+ 0.01, # bottom 1% of pixels set to black point
99
+ 0.97, # top 3% of pixels set to white point
100
+ ),
74
101
  ),
75
102
  )
76
103
  fig.tight_layout()
77
104
  plt.show()
78
105
  ```
79
- ![max and min multicolor blending](https://raw.githubusercontent.com/zacswider/README_Images/main/cells_multicolor.png)
106
+ ![adjust saturation limits](https://raw.githubusercontent.com/zacswider/README_Images/main/adjust_sat_lims.png)
80
107
 
81
108
 
82
109
  ## Roadmap
83
- mergechannels is currently incredibly simple. It can apply one or more colormaps to one or more 2D 8-bit images and that's it.
110
+ mergechannels is currently incredibly simple. It can apply one or more colormaps to one or more 2D and 3D 8-bit or 16-bit images and that's it.
84
111
  - Add support for any numerical dtype
85
- - Add support for 3D images
86
112
  - Add option to return any colormap as a matplotlib colormap
113
+ - Add option to pass external colormaps to mergechannels
87
114
  - Add support for directly passing matplotlib colormaps instead of colormap names
88
115
  - Parallelize colormap application on large images (if it's helpful)
89
116
  - Add option to overlay binary or instance masks onto colorized images
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2020 Christophe Leterrier
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,256 @@
1
+ 0 0 0
2
+ 3 0 0
3
+ 5 1 0
4
+ 8 1 0
5
+ 10 1 0
6
+ 13 2 1
7
+ 15 2 1
8
+ 17 2 1
9
+ 20 3 2
10
+ 22 3 2
11
+ 24 3 2
12
+ 26 4 3
13
+ 28 4 3
14
+ 30 5 4
15
+ 33 5 5
16
+ 35 5 5
17
+ 37 6 6
18
+ 39 6 6
19
+ 41 6 7
20
+ 43 7 8
21
+ 44 7 8
22
+ 46 8 9
23
+ 48 8 10
24
+ 50 8 10
25
+ 52 9 11
26
+ 54 9 12
27
+ 56 10 13
28
+ 57 10 14
29
+ 59 11 14
30
+ 61 11 15
31
+ 63 11 16
32
+ 64 12 17
33
+ 66 12 18
34
+ 68 13 19
35
+ 69 13 20
36
+ 71 14 20
37
+ 73 14 21
38
+ 74 15 22
39
+ 76 15 23
40
+ 77 16 24
41
+ 79 16 25
42
+ 80 17 26
43
+ 82 17 27
44
+ 84 17 28
45
+ 85 18 29
46
+ 87 18 30
47
+ 88 19 31
48
+ 90 19 32
49
+ 91 20 33
50
+ 92 20 34
51
+ 94 21 35
52
+ 95 22 36
53
+ 97 22 37
54
+ 98 23 38
55
+ 100 23 39
56
+ 101 24 40
57
+ 102 24 41
58
+ 104 25 43
59
+ 105 25 44
60
+ 106 26 45
61
+ 108 26 46
62
+ 109 27 47
63
+ 110 27 48
64
+ 112 28 49
65
+ 113 29 50
66
+ 114 29 51
67
+ 116 30 53
68
+ 117 30 54
69
+ 118 31 55
70
+ 120 32 56
71
+ 121 32 57
72
+ 122 33 58
73
+ 123 33 59
74
+ 124 34 61
75
+ 126 35 62
76
+ 127 35 63
77
+ 128 36 64
78
+ 129 36 65
79
+ 131 37 66
80
+ 132 38 68
81
+ 133 38 69
82
+ 134 39 70
83
+ 135 40 71
84
+ 136 40 72
85
+ 137 41 74
86
+ 139 42 75
87
+ 140 42 76
88
+ 141 43 77
89
+ 142 44 78
90
+ 143 44 80
91
+ 144 45 81
92
+ 145 46 82
93
+ 146 46 83
94
+ 147 47 84
95
+ 149 48 86
96
+ 150 48 87
97
+ 151 49 88
98
+ 152 50 89
99
+ 153 51 91
100
+ 154 51 92
101
+ 155 52 93
102
+ 156 53 94
103
+ 157 54 96
104
+ 158 54 97
105
+ 159 55 98
106
+ 160 56 99
107
+ 161 57 101
108
+ 162 57 102
109
+ 163 58 103
110
+ 164 59 104
111
+ 165 60 106
112
+ 166 60 107
113
+ 167 61 108
114
+ 168 62 109
115
+ 169 63 111
116
+ 170 64 112
117
+ 171 64 113
118
+ 171 65 114
119
+ 172 66 116
120
+ 173 67 117
121
+ 174 68 118
122
+ 175 69 119
123
+ 176 69 121
124
+ 177 70 122
125
+ 178 71 123
126
+ 179 72 124
127
+ 180 73 126
128
+ 180 74 127
129
+ 181 75 128
130
+ 182 75 129
131
+ 183 76 131
132
+ 184 77 132
133
+ 185 78 133
134
+ 186 79 134
135
+ 186 80 136
136
+ 187 81 137
137
+ 188 82 138
138
+ 189 83 139
139
+ 190 84 141
140
+ 191 84 142
141
+ 191 85 143
142
+ 192 86 144
143
+ 193 87 146
144
+ 194 88 147
145
+ 195 89 148
146
+ 195 90 149
147
+ 196 91 151
148
+ 197 92 152
149
+ 198 93 153
150
+ 198 94 154
151
+ 199 95 156
152
+ 200 96 157
153
+ 201 97 158
154
+ 201 98 159
155
+ 202 99 161
156
+ 203 100 162
157
+ 204 101 163
158
+ 204 102 164
159
+ 205 103 166
160
+ 206 104 167
161
+ 207 105 168
162
+ 207 106 169
163
+ 208 108 171
164
+ 209 109 172
165
+ 209 110 173
166
+ 210 111 174
167
+ 211 112 175
168
+ 211 113 177
169
+ 212 114 178
170
+ 213 115 179
171
+ 213 116 180
172
+ 214 118 181
173
+ 215 119 183
174
+ 215 120 184
175
+ 216 121 185
176
+ 217 122 186
177
+ 217 123 187
178
+ 218 124 189
179
+ 219 126 190
180
+ 219 127 191
181
+ 220 128 192
182
+ 220 129 193
183
+ 221 131 194
184
+ 222 132 196
185
+ 222 133 197
186
+ 223 134 198
187
+ 223 135 199
188
+ 224 137 200
189
+ 225 138 201
190
+ 225 139 202
191
+ 226 141 204
192
+ 226 142 205
193
+ 227 143 206
194
+ 228 145 207
195
+ 228 146 208
196
+ 229 147 209
197
+ 229 149 210
198
+ 230 150 211
199
+ 230 151 212
200
+ 231 153 214
201
+ 231 154 215
202
+ 232 155 216
203
+ 232 157 217
204
+ 233 158 218
205
+ 233 160 219
206
+ 234 161 220
207
+ 235 163 221
208
+ 235 164 222
209
+ 236 165 223
210
+ 236 167 224
211
+ 237 168 225
212
+ 237 170 226
213
+ 238 171 227
214
+ 238 173 228
215
+ 238 175 229
216
+ 239 176 230
217
+ 239 178 231
218
+ 240 179 232
219
+ 240 181 233
220
+ 241 182 234
221
+ 241 184 235
222
+ 242 186 235
223
+ 242 187 236
224
+ 243 189 237
225
+ 243 191 238
226
+ 244 192 239
227
+ 244 194 240
228
+ 244 196 241
229
+ 245 198 241
230
+ 245 199 242
231
+ 246 201 243
232
+ 246 203 244
233
+ 247 205 245
234
+ 247 207 245
235
+ 247 209 246
236
+ 248 211 247
237
+ 248 212 247
238
+ 249 214 248
239
+ 249 216 249
240
+ 249 218 249
241
+ 250 220 250
242
+ 250 222 250
243
+ 250 225 251
244
+ 251 227 252
245
+ 251 229 252
246
+ 252 231 253
247
+ 252 233 253
248
+ 252 235 253
249
+ 253 238 254
250
+ 253 240 254
251
+ 253 242 254
252
+ 254 245 255
253
+ 254 247 255
254
+ 254 250 255
255
+ 255 252 255
256
+ 255 255 255