scitex 2.8.1__py3-none-any.whl → 2.10.2__py3-none-any.whl

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.
Files changed (415) hide show
  1. scitex/__init__.py +15 -7
  2. scitex/__version__.py +1 -2
  3. scitex/_install_guide.py +250 -0
  4. scitex/_optional_deps.py +206 -39
  5. scitex/ai/_gen_ai/_Groq.py +2 -4
  6. scitex/ai/_gen_ai/_OpenAI.py +5 -2
  7. scitex/ai/_gen_ai/_Perplexity.py +20 -6
  8. scitex/audio/__init__.py +24 -15
  9. scitex/audio/_cross_process_lock.py +139 -0
  10. scitex/audio/_mcp_handlers.py +256 -0
  11. scitex/audio/_mcp_tool_schemas.py +203 -0
  12. scitex/audio/engines/elevenlabs_engine.py +5 -2
  13. scitex/audio/mcp_server.py +98 -457
  14. scitex/bridge/__init__.py +30 -19
  15. scitex/bridge/_figrecipe.py +245 -0
  16. scitex/bridge/_helpers.py +2 -1
  17. scitex/bridge/_plt_vis.py +23 -10
  18. scitex/bridge/_stats_plt.py +18 -5
  19. scitex/bridge/_stats_vis.py +16 -2
  20. scitex/browser/__init__.py +84 -44
  21. scitex/browser/automation/__init__.py +5 -1
  22. scitex/browser/core/BrowserMixin.py +17 -4
  23. scitex/browser/core/__init__.py +11 -2
  24. scitex/browser/remote/CaptchaHandler.py +1 -1
  25. scitex/browser/remote/ZenRowsAPIClient.py +1 -1
  26. scitex/capture/grid.py +487 -0
  27. scitex/capture/mcp_handlers.py +401 -0
  28. scitex/capture/mcp_tool_defs.py +192 -0
  29. scitex/capture/mcp_tools.py +241 -0
  30. scitex/capture/mcp_utils.py +30 -0
  31. scitex/cli/convert.py +421 -0
  32. scitex/cli/main.py +6 -4
  33. scitex/datetime/__init__.py +46 -0
  34. scitex/datetime/_linspace.py +100 -0
  35. scitex/datetime/_normalize_timestamp.py +306 -0
  36. scitex/db/_delete_duplicates.py +4 -4
  37. scitex/db/_sqlite3/_delete_duplicates.py +11 -2
  38. scitex/dev/plt/__init__.py +61 -62
  39. scitex/dev/plt/demo_plotters/__init__.py +0 -0
  40. scitex/dev/plt/demo_plotters/plot_mpl_axhline.py +28 -0
  41. scitex/dev/plt/demo_plotters/plot_mpl_axhspan.py +28 -0
  42. scitex/dev/plt/demo_plotters/plot_mpl_axvline.py +28 -0
  43. scitex/dev/plt/demo_plotters/plot_mpl_axvspan.py +28 -0
  44. scitex/dev/plt/demo_plotters/plot_mpl_bar.py +29 -0
  45. scitex/dev/plt/demo_plotters/plot_mpl_barh.py +29 -0
  46. scitex/dev/plt/demo_plotters/plot_mpl_boxplot.py +28 -0
  47. scitex/dev/plt/demo_plotters/plot_mpl_contour.py +31 -0
  48. scitex/dev/plt/demo_plotters/plot_mpl_contourf.py +31 -0
  49. scitex/dev/plt/demo_plotters/plot_mpl_errorbar.py +30 -0
  50. scitex/dev/plt/demo_plotters/plot_mpl_eventplot.py +28 -0
  51. scitex/dev/plt/demo_plotters/plot_mpl_fill.py +30 -0
  52. scitex/dev/plt/demo_plotters/plot_mpl_fill_between.py +31 -0
  53. scitex/dev/plt/demo_plotters/plot_mpl_hexbin.py +28 -0
  54. scitex/dev/plt/demo_plotters/plot_mpl_hist.py +28 -0
  55. scitex/dev/plt/demo_plotters/plot_mpl_hist2d.py +28 -0
  56. scitex/dev/plt/demo_plotters/plot_mpl_imshow.py +29 -0
  57. scitex/dev/plt/demo_plotters/plot_mpl_pcolormesh.py +31 -0
  58. scitex/dev/plt/demo_plotters/plot_mpl_pie.py +29 -0
  59. scitex/dev/plt/demo_plotters/plot_mpl_plot.py +29 -0
  60. scitex/dev/plt/demo_plotters/plot_mpl_quiver.py +31 -0
  61. scitex/dev/plt/demo_plotters/plot_mpl_scatter.py +28 -0
  62. scitex/dev/plt/demo_plotters/plot_mpl_stackplot.py +31 -0
  63. scitex/dev/plt/demo_plotters/plot_mpl_stem.py +29 -0
  64. scitex/dev/plt/demo_plotters/plot_mpl_step.py +29 -0
  65. scitex/dev/plt/demo_plotters/plot_mpl_violinplot.py +28 -0
  66. scitex/dev/plt/demo_plotters/plot_sns_barplot.py +29 -0
  67. scitex/dev/plt/demo_plotters/plot_sns_boxplot.py +29 -0
  68. scitex/dev/plt/demo_plotters/plot_sns_heatmap.py +28 -0
  69. scitex/dev/plt/demo_plotters/plot_sns_histplot.py +29 -0
  70. scitex/dev/plt/demo_plotters/plot_sns_kdeplot.py +29 -0
  71. scitex/dev/plt/demo_plotters/plot_sns_lineplot.py +31 -0
  72. scitex/dev/plt/demo_plotters/plot_sns_scatterplot.py +29 -0
  73. scitex/dev/plt/demo_plotters/plot_sns_stripplot.py +29 -0
  74. scitex/dev/plt/demo_plotters/plot_sns_swarmplot.py +29 -0
  75. scitex/dev/plt/demo_plotters/plot_sns_violinplot.py +29 -0
  76. scitex/dev/plt/demo_plotters/plot_stx_bar.py +29 -0
  77. scitex/dev/plt/demo_plotters/plot_stx_barh.py +29 -0
  78. scitex/dev/plt/demo_plotters/plot_stx_box.py +28 -0
  79. scitex/dev/plt/demo_plotters/plot_stx_boxplot.py +28 -0
  80. scitex/dev/plt/demo_plotters/plot_stx_conf_mat.py +28 -0
  81. scitex/dev/plt/demo_plotters/plot_stx_contour.py +31 -0
  82. scitex/dev/plt/demo_plotters/plot_stx_ecdf.py +28 -0
  83. scitex/dev/plt/demo_plotters/plot_stx_errorbar.py +30 -0
  84. scitex/dev/plt/demo_plotters/plot_stx_fill_between.py +31 -0
  85. scitex/dev/plt/demo_plotters/plot_stx_fillv.py +28 -0
  86. scitex/dev/plt/demo_plotters/plot_stx_heatmap.py +28 -0
  87. scitex/dev/plt/demo_plotters/plot_stx_image.py +28 -0
  88. scitex/dev/plt/demo_plotters/plot_stx_imshow.py +28 -0
  89. scitex/dev/plt/demo_plotters/plot_stx_joyplot.py +28 -0
  90. scitex/dev/plt/demo_plotters/plot_stx_kde.py +28 -0
  91. scitex/dev/plt/demo_plotters/plot_stx_line.py +28 -0
  92. scitex/dev/plt/demo_plotters/plot_stx_mean_ci.py +28 -0
  93. scitex/dev/plt/demo_plotters/plot_stx_mean_std.py +28 -0
  94. scitex/dev/plt/demo_plotters/plot_stx_median_iqr.py +28 -0
  95. scitex/dev/plt/demo_plotters/plot_stx_raster.py +28 -0
  96. scitex/dev/plt/demo_plotters/plot_stx_rectangle.py +28 -0
  97. scitex/dev/plt/demo_plotters/plot_stx_scatter.py +29 -0
  98. scitex/dev/plt/demo_plotters/plot_stx_shaded_line.py +29 -0
  99. scitex/dev/plt/demo_plotters/plot_stx_violin.py +28 -0
  100. scitex/dev/plt/demo_plotters/plot_stx_violinplot.py +28 -0
  101. scitex/dev/plt/mpl/get_dir_ax.py +46 -0
  102. scitex/dev/plt/mpl/get_signatures.py +176 -0
  103. scitex/dev/plt/mpl/get_signatures_details.py +522 -0
  104. scitex/dict/_pop_keys.py +1 -7
  105. scitex/dsp/__init__.py +15 -10
  106. scitex/dsp/add_noise.py +5 -2
  107. scitex/dsp/example.py +35 -22
  108. scitex/dsp/filt.py +8 -3
  109. scitex/dsp/reference.py +3 -2
  110. scitex/dsp/utils/__init__.py +2 -1
  111. scitex/dsp/utils/_differential_bandpass_filters.py +14 -4
  112. scitex/dt/__init__.py +39 -2
  113. scitex/errors.py +82 -521
  114. scitex/fig/__init__.py +4 -4
  115. scitex/fig/editor/edit/panel_loader.py +1 -1
  116. scitex/fig/io/_bundle.py +7 -7
  117. scitex/fts/README.md +262 -0
  118. scitex/fts/TODO.md +66 -0
  119. scitex/fts/__init__.py +90 -0
  120. scitex/fts/_bundle/README_IN_BUNDLE.md +102 -0
  121. scitex/fts/_bundle/_FTS.py +657 -0
  122. scitex/fts/_bundle/__init__.py +38 -0
  123. scitex/fts/_bundle/_children.py +216 -0
  124. scitex/fts/_bundle/_conversion/__init__.py +15 -0
  125. scitex/fts/_bundle/_conversion/_bundle2dict.py +44 -0
  126. scitex/fts/_bundle/_conversion/_dict2bundle.py +50 -0
  127. scitex/fts/_bundle/_dataclasses/_Axes.py +57 -0
  128. scitex/fts/_bundle/_dataclasses/_BBox.py +54 -0
  129. scitex/fts/_bundle/_dataclasses/_ColumnDef.py +72 -0
  130. scitex/fts/_bundle/_dataclasses/_DataFormat.py +40 -0
  131. scitex/fts/_bundle/_dataclasses/_DataInfo.py +135 -0
  132. scitex/fts/_bundle/_dataclasses/_DataSource.py +44 -0
  133. scitex/fts/_bundle/_dataclasses/_Node.py +319 -0
  134. scitex/fts/_bundle/_dataclasses/_NodeRefs.py +45 -0
  135. scitex/fts/_bundle/_dataclasses/_SizeMM.py +38 -0
  136. scitex/fts/_bundle/_dataclasses/__init__.py +35 -0
  137. scitex/fts/_bundle/_extractors/__init__.py +32 -0
  138. scitex/fts/_bundle/_extractors/_extract_bar.py +131 -0
  139. scitex/fts/_bundle/_extractors/_extract_line.py +71 -0
  140. scitex/fts/_bundle/_extractors/_extract_scatter.py +79 -0
  141. scitex/fts/_bundle/_loader.py +134 -0
  142. scitex/fts/_bundle/_mpl_helpers.py +389 -0
  143. scitex/fts/_bundle/_saver.py +269 -0
  144. scitex/fts/_bundle/_storage.py +200 -0
  145. scitex/fts/_bundle/_utils/__init__.py +55 -0
  146. scitex/fts/_bundle/_utils/_const.py +26 -0
  147. scitex/fts/_bundle/_utils/_errors.py +73 -0
  148. scitex/fts/_bundle/_utils/_generate.py +21 -0
  149. scitex/fts/_bundle/_utils/_types.py +76 -0
  150. scitex/fts/_bundle/_validation.py +434 -0
  151. scitex/fts/_bundle/_zipbundle.py +165 -0
  152. scitex/fts/_fig/__init__.py +22 -0
  153. scitex/fts/_fig/_backend/__init__.py +53 -0
  154. scitex/fts/_fig/_backend/_export.py +165 -0
  155. scitex/fts/_fig/_backend/_parser.py +188 -0
  156. scitex/fts/_fig/_backend/_render.py +538 -0
  157. scitex/fts/_fig/_composite.py +345 -0
  158. scitex/fts/_fig/_dataclasses/_ChannelEncoding.py +46 -0
  159. scitex/fts/_fig/_dataclasses/_Encoding.py +82 -0
  160. scitex/fts/_fig/_dataclasses/_Theme.py +441 -0
  161. scitex/fts/_fig/_dataclasses/_TraceEncoding.py +52 -0
  162. scitex/fts/_fig/_dataclasses/__init__.py +47 -0
  163. scitex/fts/_fig/_editor/__init__.py +14 -0
  164. scitex/fts/_fig/_editor/_cui/__init__.py +33 -0
  165. scitex/fts/_fig/_editor/_cui/_backend_detector.py +39 -0
  166. scitex/fts/_fig/_editor/_cui/_bundle_resolver.py +366 -0
  167. scitex/fts/_fig/_editor/_cui/_editor_launcher.py +175 -0
  168. scitex/fts/_fig/_editor/_cui/_manual_handler.py +52 -0
  169. scitex/fts/_fig/_editor/_cui/_panel_loader.py +246 -0
  170. scitex/fts/_fig/_editor/_cui/_path_resolver.py +66 -0
  171. scitex/fts/_fig/_editor/_defaults.py +300 -0
  172. scitex/fts/_fig/_editor/_gui/__init__.py +11 -0
  173. scitex/fts/_fig/_editor/_gui/_flask_editor/__init__.py +20 -0
  174. scitex/fts/_fig/_editor/_gui/_flask_editor/_bbox.py +1339 -0
  175. scitex/fts/_fig/_editor/_gui/_flask_editor/_core.py +1688 -0
  176. scitex/fts/_fig/_editor/_gui/_flask_editor/_plotter.py +664 -0
  177. scitex/fts/_fig/_editor/_gui/_flask_editor/_renderer.py +853 -0
  178. scitex/fts/_fig/_editor/_gui/_flask_editor/_utils.py +79 -0
  179. scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/base/reset.css +41 -0
  180. scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/base/typography.css +16 -0
  181. scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/base/variables.css +85 -0
  182. scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/components/buttons.css +217 -0
  183. scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/components/context-menu.css +93 -0
  184. scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/components/dropdown.css +57 -0
  185. scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/components/forms.css +112 -0
  186. scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/components/modal.css +59 -0
  187. scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/components/sections.css +212 -0
  188. scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/features/canvas.css +176 -0
  189. scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/features/element-inspector.css +190 -0
  190. scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/features/loading.css +59 -0
  191. scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/features/overlay.css +45 -0
  192. scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/features/panel-grid.css +95 -0
  193. scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/features/selection.css +101 -0
  194. scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/features/statistics.css +138 -0
  195. scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/index.css +31 -0
  196. scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/layout/container.css +7 -0
  197. scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/layout/controls.css +56 -0
  198. scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/layout/preview.css +78 -0
  199. scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/alignment/axis.js +314 -0
  200. scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/alignment/basic.js +107 -0
  201. scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/alignment/distribute.js +54 -0
  202. scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/canvas/canvas.js +172 -0
  203. scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/canvas/dragging.js +258 -0
  204. scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/canvas/resize.js +48 -0
  205. scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/canvas/selection.js +71 -0
  206. scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/core/api.js +288 -0
  207. scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/core/state.js +143 -0
  208. scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/core/utils.js +245 -0
  209. scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/dev/element-inspector.js +992 -0
  210. scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/editor/bbox.js +339 -0
  211. scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/editor/element-drag.js +286 -0
  212. scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/editor/overlay.js +371 -0
  213. scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/editor/preview.js +293 -0
  214. scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/main.js +426 -0
  215. scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/shortcuts/context-menu.js +152 -0
  216. scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/shortcuts/keyboard.js +265 -0
  217. scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/ui/controls.js +184 -0
  218. scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/ui/download.js +57 -0
  219. scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/ui/help.js +100 -0
  220. scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/ui/theme.js +34 -0
  221. scitex/fts/_fig/_editor/_gui/_flask_editor/templates/__init__.py +124 -0
  222. scitex/fts/_fig/_editor/_gui/_flask_editor/templates/_html.py +851 -0
  223. scitex/fts/_fig/_editor/_gui/_flask_editor/templates/_scripts.py +4932 -0
  224. scitex/fts/_fig/_editor/_gui/_flask_editor/templates/_styles.py +1657 -0
  225. scitex/fts/_fig/_editor/_gui/_flask_editor.py +36 -0
  226. scitex/fts/_fig/_models/_Annotations.py +115 -0
  227. scitex/fts/_fig/_models/_Axes.py +152 -0
  228. scitex/fts/_fig/_models/_Figure.py +138 -0
  229. scitex/fts/_fig/_models/_Guides.py +104 -0
  230. scitex/fts/_fig/_models/_Plot.py +123 -0
  231. scitex/fts/_fig/_models/_Styles.py +245 -0
  232. scitex/fts/_fig/_models/__init__.py +80 -0
  233. scitex/fts/_fig/_models/_plot_types/__init__.py +156 -0
  234. scitex/fts/_fig/_models/_plot_types/_bar.py +43 -0
  235. scitex/fts/_fig/_models/_plot_types/_box.py +38 -0
  236. scitex/fts/_fig/_models/_plot_types/_distribution.py +36 -0
  237. scitex/fts/_fig/_models/_plot_types/_errorbar.py +60 -0
  238. scitex/fts/_fig/_models/_plot_types/_histogram.py +30 -0
  239. scitex/fts/_fig/_models/_plot_types/_image.py +61 -0
  240. scitex/fts/_fig/_models/_plot_types/_line.py +57 -0
  241. scitex/fts/_fig/_models/_plot_types/_scatter.py +30 -0
  242. scitex/fts/_fig/_models/_plot_types/_seaborn.py +121 -0
  243. scitex/fts/_fig/_models/_plot_types/_violin.py +36 -0
  244. scitex/fts/_fig/_utils/__init__.py +129 -0
  245. scitex/fts/_fig/_utils/_auto_layout.py +127 -0
  246. scitex/fts/_fig/_utils/_calc_bounds.py +111 -0
  247. scitex/fts/_fig/_utils/_const_sizes.py +48 -0
  248. scitex/fts/_fig/_utils/_convert_coords.py +77 -0
  249. scitex/fts/_fig/_utils/_get_template.py +178 -0
  250. scitex/fts/_fig/_utils/_normalize.py +73 -0
  251. scitex/fts/_fig/_utils/_plot_layout.py +397 -0
  252. scitex/fts/_fig/_utils/_validate.py +197 -0
  253. scitex/fts/_kinds/__init__.py +45 -0
  254. scitex/fts/_kinds/_figure/__init__.py +19 -0
  255. scitex/fts/_kinds/_figure/_composite.py +345 -0
  256. scitex/fts/_kinds/_plot/__init__.py +25 -0
  257. scitex/fts/_kinds/_plot/_backend/__init__.py +53 -0
  258. scitex/fts/_kinds/_plot/_backend/_export.py +165 -0
  259. scitex/fts/_kinds/_plot/_backend/_parser.py +188 -0
  260. scitex/fts/_kinds/_plot/_backend/_render.py +538 -0
  261. scitex/fts/_kinds/_plot/_dataclasses/_ChannelEncoding.py +46 -0
  262. scitex/fts/_kinds/_plot/_dataclasses/_Encoding.py +82 -0
  263. scitex/fts/_kinds/_plot/_dataclasses/_Theme.py +441 -0
  264. scitex/fts/_kinds/_plot/_dataclasses/_TraceEncoding.py +52 -0
  265. scitex/fts/_kinds/_plot/_dataclasses/__init__.py +47 -0
  266. scitex/fts/_kinds/_plot/_models/_Annotations.py +115 -0
  267. scitex/fts/_kinds/_plot/_models/_Axes.py +152 -0
  268. scitex/fts/_kinds/_plot/_models/_Figure.py +138 -0
  269. scitex/fts/_kinds/_plot/_models/_Guides.py +104 -0
  270. scitex/fts/_kinds/_plot/_models/_Plot.py +123 -0
  271. scitex/fts/_kinds/_plot/_models/_Styles.py +245 -0
  272. scitex/fts/_kinds/_plot/_models/__init__.py +80 -0
  273. scitex/fts/_kinds/_plot/_models/_plot_types/__init__.py +156 -0
  274. scitex/fts/_kinds/_plot/_models/_plot_types/_bar.py +43 -0
  275. scitex/fts/_kinds/_plot/_models/_plot_types/_box.py +38 -0
  276. scitex/fts/_kinds/_plot/_models/_plot_types/_distribution.py +36 -0
  277. scitex/fts/_kinds/_plot/_models/_plot_types/_errorbar.py +60 -0
  278. scitex/fts/_kinds/_plot/_models/_plot_types/_histogram.py +30 -0
  279. scitex/fts/_kinds/_plot/_models/_plot_types/_image.py +61 -0
  280. scitex/fts/_kinds/_plot/_models/_plot_types/_line.py +57 -0
  281. scitex/fts/_kinds/_plot/_models/_plot_types/_scatter.py +30 -0
  282. scitex/fts/_kinds/_plot/_models/_plot_types/_seaborn.py +121 -0
  283. scitex/fts/_kinds/_plot/_models/_plot_types/_violin.py +36 -0
  284. scitex/fts/_kinds/_plot/_utils/__init__.py +129 -0
  285. scitex/fts/_kinds/_plot/_utils/_auto_layout.py +127 -0
  286. scitex/fts/_kinds/_plot/_utils/_calc_bounds.py +111 -0
  287. scitex/fts/_kinds/_plot/_utils/_const_sizes.py +48 -0
  288. scitex/fts/_kinds/_plot/_utils/_convert_coords.py +77 -0
  289. scitex/fts/_kinds/_plot/_utils/_get_template.py +178 -0
  290. scitex/fts/_kinds/_plot/_utils/_normalize.py +73 -0
  291. scitex/fts/_kinds/_plot/_utils/_plot_layout.py +397 -0
  292. scitex/fts/_kinds/_plot/_utils/_validate.py +197 -0
  293. scitex/fts/_kinds/_shape/__init__.py +141 -0
  294. scitex/fts/_kinds/_stats/__init__.py +56 -0
  295. scitex/fts/_kinds/_stats/_dataclasses/_Stats.py +423 -0
  296. scitex/fts/_kinds/_stats/_dataclasses/__init__.py +48 -0
  297. scitex/fts/_kinds/_table/__init__.py +72 -0
  298. scitex/fts/_kinds/_table/_latex/__init__.py +93 -0
  299. scitex/fts/_kinds/_table/_latex/_editor/__init__.py +11 -0
  300. scitex/fts/_kinds/_table/_latex/_editor/_app.py +725 -0
  301. scitex/fts/_kinds/_table/_latex/_export.py +279 -0
  302. scitex/fts/_kinds/_table/_latex/_figure_exporter.py +153 -0
  303. scitex/fts/_kinds/_table/_latex/_stats_formatter.py +274 -0
  304. scitex/fts/_kinds/_table/_latex/_table_exporter.py +362 -0
  305. scitex/fts/_kinds/_table/_latex/_utils.py +369 -0
  306. scitex/fts/_kinds/_table/_latex/_validator.py +445 -0
  307. scitex/fts/_kinds/_text/__init__.py +77 -0
  308. scitex/fts/_schemas/data_info.schema.json +75 -0
  309. scitex/fts/_schemas/encoding.schema.json +90 -0
  310. scitex/fts/_schemas/node.schema.json +145 -0
  311. scitex/fts/_schemas/render_manifest.schema.json +62 -0
  312. scitex/fts/_schemas/stats.schema.json +132 -0
  313. scitex/fts/_schemas/theme.schema.json +141 -0
  314. scitex/fts/_stats/__init__.py +48 -0
  315. scitex/fts/_stats/_dataclasses/_Stats.py +423 -0
  316. scitex/fts/_stats/_dataclasses/__init__.py +48 -0
  317. scitex/fts/_tables/__init__.py +65 -0
  318. scitex/fts/_tables/_latex/__init__.py +93 -0
  319. scitex/fts/_tables/_latex/_editor/__init__.py +11 -0
  320. scitex/fts/_tables/_latex/_editor/_app.py +725 -0
  321. scitex/fts/_tables/_latex/_export.py +279 -0
  322. scitex/fts/_tables/_latex/_figure_exporter.py +153 -0
  323. scitex/fts/_tables/_latex/_stats_formatter.py +274 -0
  324. scitex/fts/_tables/_latex/_table_exporter.py +362 -0
  325. scitex/fts/_tables/_latex/_utils.py +369 -0
  326. scitex/fts/_tables/_latex/_validator.py +445 -0
  327. scitex/gen/__init__.py +66 -25
  328. scitex/gen/misc.py +28 -0
  329. scitex/io/__init__.py +47 -32
  330. scitex/io/_load.py +87 -36
  331. scitex/io/_load_modules/__init__.py +10 -7
  332. scitex/io/_load_modules/_pandas.py +6 -1
  333. scitex/io/_save.py +299 -1556
  334. scitex/io/_save_modules/__init__.py +76 -19
  335. scitex/io/_save_modules/_figure_utils.py +90 -0
  336. scitex/io/_save_modules/_image_csv.py +497 -0
  337. scitex/io/_save_modules/_legends.py +91 -0
  338. scitex/io/_save_modules/_pltz_bundle.py +356 -0
  339. scitex/io/_save_modules/_pltz_stx.py +536 -0
  340. scitex/io/_save_modules/_stx_bundle.py +104 -0
  341. scitex/io/_save_modules/_symlink.py +96 -0
  342. scitex/io/_save_modules/_yaml.py +1 -1
  343. scitex/io/_save_modules/_zarr.py +64 -18
  344. scitex/io/bundle/README.md +212 -0
  345. scitex/io/bundle/__init__.py +110 -0
  346. scitex/io/{_bundle.py → bundle/_core.py} +168 -97
  347. scitex/io/bundle/_nested.py +713 -0
  348. scitex/io/bundle/_types.py +74 -0
  349. scitex/io/{_zip_bundle.py → bundle/_zip.py} +93 -45
  350. scitex/io/utils/h5_to_zarr.py +1 -1
  351. scitex/logging/__init__.py +108 -13
  352. scitex/logging/_errors.py +508 -0
  353. scitex/logging/_formatters.py +30 -6
  354. scitex/logging/_warnings.py +261 -0
  355. scitex/plt/__init__.py +4 -1
  356. scitex/plt/_figrecipe.py +236 -0
  357. scitex/plt/_subplots/_AxisWrapper.py +6 -0
  358. scitex/plt/_subplots/_AxisWrapperMixins/_UnitAwareMixin.py +112 -1
  359. scitex/plt/_subplots/_FigWrapper.py +15 -0
  360. scitex/plt/_subplots/_SubplotsWrapper.py +125 -489
  361. scitex/plt/_subplots/_export_as_csv.py +11 -0
  362. scitex/plt/_subplots/_export_as_csv_formatters/__init__.py +2 -0
  363. scitex/plt/_subplots/_export_as_csv_formatters/_format_pcolormesh.py +66 -0
  364. scitex/plt/_subplots/_export_as_csv_formatters/_format_stackplot.py +62 -0
  365. scitex/plt/_subplots/_export_as_csv_formatters/test_formatters.py +208 -0
  366. scitex/plt/_subplots/_fonts.py +71 -0
  367. scitex/plt/_subplots/_mm_layout.py +282 -0
  368. scitex/plt/gallery/__init__.py +99 -2
  369. scitex/plt/styles/_plot_postprocess.py +3 -1
  370. scitex/plt/utils/_configure_mpl.py +16 -19
  371. scitex/repro/_RandomStateManager.py +13 -8
  372. scitex/resource/__init__.py +19 -1
  373. scitex/resource/_utils/_get_env_info.py +13 -25
  374. scitex/schema/__init__.py +149 -160
  375. scitex/schema/_encoding.py +273 -0
  376. scitex/schema/_figure_elements.py +406 -0
  377. scitex/schema/_theme.py +360 -0
  378. scitex/schema/_validation.py +0 -98
  379. scitex/scholar/__init__.py +56 -14
  380. scitex/scholar/auth/ScholarAuthManager.py +1 -1
  381. scitex/scholar/auth/__init__.py +11 -2
  382. scitex/scholar/auth/providers/BaseAuthenticator.py +1 -1
  383. scitex/scholar/auth/providers/EZProxyAuthenticator.py +1 -1
  384. scitex/scholar/auth/providers/OpenAthensAuthenticator.py +1 -1
  385. scitex/scholar/auth/providers/ShibbolethAuthenticator.py +1 -1
  386. scitex/scholar/config/ScholarConfig.py +1 -1
  387. scitex/scholar/core/Scholar.py +1 -1
  388. scitex/session/_decorator.py +18 -16
  389. scitex/session/_lifecycle.py +9 -11
  390. scitex/session/template.py +9 -8
  391. scitex/sh/test_sh.py +72 -0
  392. scitex/sh/test_sh_simple.py +61 -0
  393. scitex/stats/__init__.py +221 -97
  394. scitex/stats/_schema.py +21 -22
  395. scitex/stats/descriptive/_circular.py +212 -351
  396. scitex/stats/descriptive/_describe.py +81 -132
  397. scitex/stats/descriptive/_nan.py +205 -433
  398. scitex/stats/descriptive/_real.py +127 -141
  399. scitex/str/_format_plot_text.py +5 -5
  400. scitex/str/_latex.py +26 -84
  401. scitex/str/_latex_fallback.py +53 -47
  402. scitex/web/_search_pubmed.py +5 -4
  403. scitex/writer/tests/test_diff_between.py +451 -0
  404. scitex/writer/tests/test_document_section.py +311 -0
  405. scitex/writer/tests/test_document_workflow.py +393 -0
  406. scitex/writer/tests/test_writer.py +361 -0
  407. scitex/writer/tests/test_writer_integration.py +303 -0
  408. {scitex-2.8.1.dist-info → scitex-2.10.2.dist-info}/METADATA +368 -183
  409. {scitex-2.8.1.dist-info → scitex-2.10.2.dist-info}/RECORD +412 -97
  410. scitex/scholar/docs/to_claude/guidelines/examples/mgmt/ARCHITECTURE_EXAMPLE.md +0 -905
  411. scitex/scholar/docs/to_claude/guidelines/examples/mgmt/BULLETIN_BOARD_EXAMPLE.md +0 -99
  412. scitex/scholar/docs/to_claude/guidelines/examples/mgmt/PROJECT_DESCRIPTION_EXAMPLE.md +0 -96
  413. {scitex-2.8.1.dist-info → scitex-2.10.2.dist-info}/WHEEL +0 -0
  414. {scitex-2.8.1.dist-info → scitex-2.10.2.dist-info}/entry_points.txt +0 -0
  415. {scitex-2.8.1.dist-info → scitex-2.10.2.dist-info}/licenses/LICENSE +0 -0
@@ -1,5 +1,4 @@
1
1
  #!/usr/bin/env python3
2
- # -*- coding: utf-8 -*-
3
2
  # File: /home/ywatanabe/proj/scitex-code/src/scitex/dev/plt/__init__.py
4
3
 
5
4
  """
@@ -36,31 +35,31 @@ Usage:
36
35
  # =============================================================================
37
36
  # stx_* API Layer - ArrayLike input (25 plotters)
38
37
  # =============================================================================
39
- from .plot_stx_line import plot_stx_line
40
- from .plot_stx_mean_std import plot_stx_mean_std
41
- from .plot_stx_mean_ci import plot_stx_mean_ci
42
- from .plot_stx_median_iqr import plot_stx_median_iqr
43
- from .plot_stx_shaded_line import plot_stx_shaded_line
44
- from .plot_stx_box import plot_stx_box
45
- from .plot_stx_violin import plot_stx_violin
46
- from .plot_stx_scatter import plot_stx_scatter
47
- from .plot_stx_bar import plot_stx_bar
48
- from .plot_stx_barh import plot_stx_barh
49
- from .plot_stx_errorbar import plot_stx_errorbar
50
- from .plot_stx_fill_between import plot_stx_fill_between
51
- from .plot_stx_kde import plot_stx_kde
52
- from .plot_stx_ecdf import plot_stx_ecdf
53
- from .plot_stx_heatmap import plot_stx_heatmap
54
- from .plot_stx_image import plot_stx_image
55
- from .plot_stx_imshow import plot_stx_imshow
56
- from .plot_stx_contour import plot_stx_contour
57
- from .plot_stx_raster import plot_stx_raster
58
- from .plot_stx_conf_mat import plot_stx_conf_mat
59
- from .plot_stx_joyplot import plot_stx_joyplot
60
- from .plot_stx_rectangle import plot_stx_rectangle
61
- from .plot_stx_fillv import plot_stx_fillv
62
- from .plot_stx_boxplot import plot_stx_boxplot
63
- from .plot_stx_violinplot import plot_stx_violinplot
38
+ from .demo_plotters.plot_stx_bar import plot_stx_bar
39
+ from .demo_plotters.plot_stx_barh import plot_stx_barh
40
+ from .demo_plotters.plot_stx_box import plot_stx_box
41
+ from .demo_plotters.plot_stx_boxplot import plot_stx_boxplot
42
+ from .demo_plotters.plot_stx_conf_mat import plot_stx_conf_mat
43
+ from .demo_plotters.plot_stx_contour import plot_stx_contour
44
+ from .demo_plotters.plot_stx_ecdf import plot_stx_ecdf
45
+ from .demo_plotters.plot_stx_errorbar import plot_stx_errorbar
46
+ from .demo_plotters.plot_stx_fill_between import plot_stx_fill_between
47
+ from .demo_plotters.plot_stx_fillv import plot_stx_fillv
48
+ from .demo_plotters.plot_stx_heatmap import plot_stx_heatmap
49
+ from .demo_plotters.plot_stx_image import plot_stx_image
50
+ from .demo_plotters.plot_stx_imshow import plot_stx_imshow
51
+ from .demo_plotters.plot_stx_joyplot import plot_stx_joyplot
52
+ from .demo_plotters.plot_stx_kde import plot_stx_kde
53
+ from .demo_plotters.plot_stx_line import plot_stx_line
54
+ from .demo_plotters.plot_stx_mean_ci import plot_stx_mean_ci
55
+ from .demo_plotters.plot_stx_mean_std import plot_stx_mean_std
56
+ from .demo_plotters.plot_stx_median_iqr import plot_stx_median_iqr
57
+ from .demo_plotters.plot_stx_raster import plot_stx_raster
58
+ from .demo_plotters.plot_stx_rectangle import plot_stx_rectangle
59
+ from .demo_plotters.plot_stx_scatter import plot_stx_scatter
60
+ from .demo_plotters.plot_stx_shaded_line import plot_stx_shaded_line
61
+ from .demo_plotters.plot_stx_violin import plot_stx_violin
62
+ from .demo_plotters.plot_stx_violinplot import plot_stx_violinplot
64
63
 
65
64
  PLOTTERS_STX = {
66
65
  "stx_line": plot_stx_line,
@@ -93,16 +92,16 @@ PLOTTERS_STX = {
93
92
  # =============================================================================
94
93
  # sns_* API Layer - DataFrame input (10 plotters)
95
94
  # =============================================================================
96
- from .plot_sns_boxplot import plot_sns_boxplot
97
- from .plot_sns_violinplot import plot_sns_violinplot
98
- from .plot_sns_barplot import plot_sns_barplot
99
- from .plot_sns_histplot import plot_sns_histplot
100
- from .plot_sns_kdeplot import plot_sns_kdeplot
101
- from .plot_sns_scatterplot import plot_sns_scatterplot
102
- from .plot_sns_lineplot import plot_sns_lineplot
103
- from .plot_sns_swarmplot import plot_sns_swarmplot
104
- from .plot_sns_stripplot import plot_sns_stripplot
105
- from .plot_sns_heatmap import plot_sns_heatmap
95
+ from .demo_plotters.plot_sns_barplot import plot_sns_barplot
96
+ from .demo_plotters.plot_sns_boxplot import plot_sns_boxplot
97
+ from .demo_plotters.plot_sns_heatmap import plot_sns_heatmap
98
+ from .demo_plotters.plot_sns_histplot import plot_sns_histplot
99
+ from .demo_plotters.plot_sns_kdeplot import plot_sns_kdeplot
100
+ from .demo_plotters.plot_sns_lineplot import plot_sns_lineplot
101
+ from .demo_plotters.plot_sns_scatterplot import plot_sns_scatterplot
102
+ from .demo_plotters.plot_sns_stripplot import plot_sns_stripplot
103
+ from .demo_plotters.plot_sns_swarmplot import plot_sns_swarmplot
104
+ from .demo_plotters.plot_sns_violinplot import plot_sns_violinplot
106
105
 
107
106
  PLOTTERS_SNS = {
108
107
  "sns_boxplot": plot_sns_boxplot,
@@ -120,32 +119,32 @@ PLOTTERS_SNS = {
120
119
  # =============================================================================
121
120
  # mpl_* API Layer - Matplotlib-style input (26 plotters)
122
121
  # =============================================================================
123
- from .plot_mpl_plot import plot_mpl_plot
124
- from .plot_mpl_scatter import plot_mpl_scatter
125
- from .plot_mpl_bar import plot_mpl_bar
126
- from .plot_mpl_barh import plot_mpl_barh
127
- from .plot_mpl_hist import plot_mpl_hist
128
- from .plot_mpl_hist2d import plot_mpl_hist2d
129
- from .plot_mpl_hexbin import plot_mpl_hexbin
130
- from .plot_mpl_boxplot import plot_mpl_boxplot
131
- from .plot_mpl_violinplot import plot_mpl_violinplot
132
- from .plot_mpl_errorbar import plot_mpl_errorbar
133
- from .plot_mpl_step import plot_mpl_step
134
- from .plot_mpl_stem import plot_mpl_stem
135
- from .plot_mpl_fill import plot_mpl_fill
136
- from .plot_mpl_fill_between import plot_mpl_fill_between
137
- from .plot_mpl_stackplot import plot_mpl_stackplot
138
- from .plot_mpl_contour import plot_mpl_contour
139
- from .plot_mpl_contourf import plot_mpl_contourf
140
- from .plot_mpl_imshow import plot_mpl_imshow
141
- from .plot_mpl_pcolormesh import plot_mpl_pcolormesh
142
- from .plot_mpl_pie import plot_mpl_pie
143
- from .plot_mpl_eventplot import plot_mpl_eventplot
144
- from .plot_mpl_quiver import plot_mpl_quiver
145
- from .plot_mpl_axhline import plot_mpl_axhline
146
- from .plot_mpl_axvline import plot_mpl_axvline
147
- from .plot_mpl_axhspan import plot_mpl_axhspan
148
- from .plot_mpl_axvspan import plot_mpl_axvspan
122
+ from .demo_plotters.plot_mpl_axhline import plot_mpl_axhline
123
+ from .demo_plotters.plot_mpl_axhspan import plot_mpl_axhspan
124
+ from .demo_plotters.plot_mpl_axvline import plot_mpl_axvline
125
+ from .demo_plotters.plot_mpl_axvspan import plot_mpl_axvspan
126
+ from .demo_plotters.plot_mpl_bar import plot_mpl_bar
127
+ from .demo_plotters.plot_mpl_barh import plot_mpl_barh
128
+ from .demo_plotters.plot_mpl_boxplot import plot_mpl_boxplot
129
+ from .demo_plotters.plot_mpl_contour import plot_mpl_contour
130
+ from .demo_plotters.plot_mpl_contourf import plot_mpl_contourf
131
+ from .demo_plotters.plot_mpl_errorbar import plot_mpl_errorbar
132
+ from .demo_plotters.plot_mpl_eventplot import plot_mpl_eventplot
133
+ from .demo_plotters.plot_mpl_fill import plot_mpl_fill
134
+ from .demo_plotters.plot_mpl_fill_between import plot_mpl_fill_between
135
+ from .demo_plotters.plot_mpl_hexbin import plot_mpl_hexbin
136
+ from .demo_plotters.plot_mpl_hist import plot_mpl_hist
137
+ from .demo_plotters.plot_mpl_hist2d import plot_mpl_hist2d
138
+ from .demo_plotters.plot_mpl_imshow import plot_mpl_imshow
139
+ from .demo_plotters.plot_mpl_pcolormesh import plot_mpl_pcolormesh
140
+ from .demo_plotters.plot_mpl_pie import plot_mpl_pie
141
+ from .demo_plotters.plot_mpl_plot import plot_mpl_plot
142
+ from .demo_plotters.plot_mpl_quiver import plot_mpl_quiver
143
+ from .demo_plotters.plot_mpl_scatter import plot_mpl_scatter
144
+ from .demo_plotters.plot_mpl_stackplot import plot_mpl_stackplot
145
+ from .demo_plotters.plot_mpl_stem import plot_mpl_stem
146
+ from .demo_plotters.plot_mpl_step import plot_mpl_step
147
+ from .demo_plotters.plot_mpl_violinplot import plot_mpl_violinplot
149
148
 
150
149
  PLOTTERS_MPL = {
151
150
  "mpl_plot": plot_mpl_plot,
File without changes
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # File: plot_mpl_axhline.py - mpl_axhline demo
4
+
5
+ """mpl_axhline: horizontal line."""
6
+
7
+ import numpy as np
8
+
9
+
10
+ def plot_mpl_axhline(plt, rng, ax=None):
11
+ """mpl_axhline - horizontal line.
12
+
13
+ Demonstrates: ax.mpl_axhline() - identical to ax.axhline()
14
+ """
15
+ if ax is None:
16
+ fig, ax = plt.subplots()
17
+ else:
18
+ fig = ax.get_figure() if hasattr(ax, "get_figure") else ax._fig_scitex
19
+
20
+ ax.plot(rng.uniform(0, 10, 20))
21
+ ax.mpl_axhline(y=5, color='r', linestyle='--', label='threshold')
22
+ ax.set_xyt("X", "Y", "mpl_axhline")
23
+ if hasattr(ax, 'legend') and ax.get_legend_handles_labels()[0]:
24
+ ax.legend()
25
+ return fig, ax
26
+
27
+
28
+ # EOF
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # File: plot_mpl_axhspan.py - mpl_axhspan demo
4
+
5
+ """mpl_axhspan: horizontal span."""
6
+
7
+ import numpy as np
8
+
9
+
10
+ def plot_mpl_axhspan(plt, rng, ax=None):
11
+ """mpl_axhspan - horizontal span.
12
+
13
+ Demonstrates: ax.mpl_axhspan() - identical to ax.axhspan()
14
+ """
15
+ if ax is None:
16
+ fig, ax = plt.subplots()
17
+ else:
18
+ fig = ax.get_figure() if hasattr(ax, "get_figure") else ax._fig_scitex
19
+
20
+ ax.plot(rng.uniform(0, 10, 20))
21
+ ax.mpl_axhspan(3, 7, alpha=0.3, color='yellow', label='range')
22
+ ax.set_xyt("X", "Y", "mpl_axhspan")
23
+ if hasattr(ax, 'legend') and ax.get_legend_handles_labels()[0]:
24
+ ax.legend()
25
+ return fig, ax
26
+
27
+
28
+ # EOF
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # File: plot_mpl_axvline.py - mpl_axvline demo
4
+
5
+ """mpl_axvline: vertical line."""
6
+
7
+ import numpy as np
8
+
9
+
10
+ def plot_mpl_axvline(plt, rng, ax=None):
11
+ """mpl_axvline - vertical line.
12
+
13
+ Demonstrates: ax.mpl_axvline() - identical to ax.axvline()
14
+ """
15
+ if ax is None:
16
+ fig, ax = plt.subplots()
17
+ else:
18
+ fig = ax.get_figure() if hasattr(ax, "get_figure") else ax._fig_scitex
19
+
20
+ ax.plot(rng.uniform(0, 10, 20))
21
+ ax.mpl_axvline(x=10, color='r', linestyle='--', label='event')
22
+ ax.set_xyt("X", "Y", "mpl_axvline")
23
+ if hasattr(ax, 'legend') and ax.get_legend_handles_labels()[0]:
24
+ ax.legend()
25
+ return fig, ax
26
+
27
+
28
+ # EOF
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # File: plot_mpl_axvspan.py - mpl_axvspan demo
4
+
5
+ """mpl_axvspan: vertical span."""
6
+
7
+ import numpy as np
8
+
9
+
10
+ def plot_mpl_axvspan(plt, rng, ax=None):
11
+ """mpl_axvspan - vertical span.
12
+
13
+ Demonstrates: ax.mpl_axvspan() - identical to ax.axvspan()
14
+ """
15
+ if ax is None:
16
+ fig, ax = plt.subplots()
17
+ else:
18
+ fig = ax.get_figure() if hasattr(ax, "get_figure") else ax._fig_scitex
19
+
20
+ ax.plot(rng.uniform(0, 10, 20))
21
+ ax.mpl_axvspan(5, 15, alpha=0.3, color='yellow', label='range')
22
+ ax.set_xyt("X", "Y", "mpl_axvspan")
23
+ if hasattr(ax, 'legend') and ax.get_legend_handles_labels()[0]:
24
+ ax.legend()
25
+ return fig, ax
26
+
27
+
28
+ # EOF
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # File: plot_mpl_bar.py - mpl_bar demo
4
+
5
+ """mpl_bar: bar plot."""
6
+
7
+ import numpy as np
8
+
9
+
10
+ def plot_mpl_bar(plt, rng, ax=None):
11
+ """mpl_bar - bar plot.
12
+
13
+ Demonstrates: ax.mpl_bar() - identical to ax.bar()
14
+ """
15
+ if ax is None:
16
+ fig, ax = plt.subplots()
17
+ else:
18
+ fig = ax.get_figure() if hasattr(ax, "get_figure") else ax._fig_scitex
19
+
20
+ x = [1, 2, 3, 4, 5]
21
+ height = rng.uniform(2, 8, 5)
22
+ ax.mpl_bar(x, height)
23
+ ax.set_xyt("X", "Y", "mpl_bar")
24
+ if hasattr(ax, 'legend') and ax.get_legend_handles_labels()[0]:
25
+ ax.legend()
26
+ return fig, ax
27
+
28
+
29
+ # EOF
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # File: plot_mpl_barh.py - mpl_barh demo
4
+
5
+ """mpl_barh: horizontal bar."""
6
+
7
+ import numpy as np
8
+
9
+
10
+ def plot_mpl_barh(plt, rng, ax=None):
11
+ """mpl_barh - horizontal bar.
12
+
13
+ Demonstrates: ax.mpl_barh() - identical to ax.barh()
14
+ """
15
+ if ax is None:
16
+ fig, ax = plt.subplots()
17
+ else:
18
+ fig = ax.get_figure() if hasattr(ax, "get_figure") else ax._fig_scitex
19
+
20
+ y = [1, 2, 3, 4, 5]
21
+ width = rng.uniform(2, 8, 5)
22
+ ax.mpl_barh(y, width)
23
+ ax.set_xyt("X", "Y", "mpl_barh")
24
+ if hasattr(ax, 'legend') and ax.get_legend_handles_labels()[0]:
25
+ ax.legend()
26
+ return fig, ax
27
+
28
+
29
+ # EOF
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # File: plot_mpl_boxplot.py - mpl_boxplot demo
4
+
5
+ """mpl_boxplot: box plot."""
6
+
7
+ import numpy as np
8
+
9
+
10
+ def plot_mpl_boxplot(plt, rng, ax=None):
11
+ """mpl_boxplot - box plot.
12
+
13
+ Demonstrates: ax.mpl_boxplot() - identical to ax.boxplot()
14
+ """
15
+ if ax is None:
16
+ fig, ax = plt.subplots()
17
+ else:
18
+ fig = ax.get_figure() if hasattr(ax, "get_figure") else ax._fig_scitex
19
+
20
+ data = [rng.normal(i, 1, 100) for i in range(4)]
21
+ ax.mpl_boxplot(data, tick_labels=['A', 'B', 'C', 'D'])
22
+ ax.set_xyt("X", "Y", "mpl_boxplot")
23
+ if hasattr(ax, 'legend') and ax.get_legend_handles_labels()[0]:
24
+ ax.legend()
25
+ return fig, ax
26
+
27
+
28
+ # EOF
@@ -0,0 +1,31 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # File: plot_mpl_contour.py - mpl_contour demo
4
+
5
+ """mpl_contour: contour plot."""
6
+
7
+ import numpy as np
8
+
9
+
10
+ def plot_mpl_contour(plt, rng, ax=None):
11
+ """mpl_contour - contour plot.
12
+
13
+ Demonstrates: ax.mpl_contour() - identical to ax.contour()
14
+ """
15
+ if ax is None:
16
+ fig, ax = plt.subplots()
17
+ else:
18
+ fig = ax.get_figure() if hasattr(ax, "get_figure") else ax._fig_scitex
19
+
20
+ x = np.linspace(-3, 3, 50)
21
+ y = np.linspace(-3, 3, 50)
22
+ X, Y = np.meshgrid(x, y)
23
+ Z = np.exp(-(X**2 + Y**2))
24
+ ax.mpl_contour(X, Y, Z, levels=10)
25
+ ax.set_xyt("X", "Y", "mpl_contour")
26
+ if hasattr(ax, 'legend') and ax.get_legend_handles_labels()[0]:
27
+ ax.legend()
28
+ return fig, ax
29
+
30
+
31
+ # EOF
@@ -0,0 +1,31 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # File: plot_mpl_contourf.py - mpl_contourf demo
4
+
5
+ """mpl_contourf: filled contour."""
6
+
7
+ import numpy as np
8
+
9
+
10
+ def plot_mpl_contourf(plt, rng, ax=None):
11
+ """mpl_contourf - filled contour.
12
+
13
+ Demonstrates: ax.mpl_contourf() - identical to ax.contourf()
14
+ """
15
+ if ax is None:
16
+ fig, ax = plt.subplots()
17
+ else:
18
+ fig = ax.get_figure() if hasattr(ax, "get_figure") else ax._fig_scitex
19
+
20
+ x = np.linspace(-3, 3, 50)
21
+ y = np.linspace(-3, 3, 50)
22
+ X, Y = np.meshgrid(x, y)
23
+ Z = np.exp(-(X**2 + Y**2))
24
+ ax.mpl_contourf(X, Y, Z, levels=10)
25
+ ax.set_xyt("X", "Y", "mpl_contourf")
26
+ if hasattr(ax, 'legend') and ax.get_legend_handles_labels()[0]:
27
+ ax.legend()
28
+ return fig, ax
29
+
30
+
31
+ # EOF
@@ -0,0 +1,30 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # File: plot_mpl_errorbar.py - mpl_errorbar demo
4
+
5
+ """mpl_errorbar: error bar."""
6
+
7
+ import numpy as np
8
+
9
+
10
+ def plot_mpl_errorbar(plt, rng, ax=None):
11
+ """mpl_errorbar - error bar.
12
+
13
+ Demonstrates: ax.mpl_errorbar() - identical to ax.errorbar()
14
+ """
15
+ if ax is None:
16
+ fig, ax = plt.subplots()
17
+ else:
18
+ fig = ax.get_figure() if hasattr(ax, "get_figure") else ax._fig_scitex
19
+
20
+ x = np.arange(1, 6)
21
+ y = rng.uniform(2, 8, 5)
22
+ yerr = rng.uniform(0.5, 1.5, 5)
23
+ ax.mpl_errorbar(x, y, yerr=yerr, fmt='o-', capsize=3)
24
+ ax.set_xyt("X", "Y", "mpl_errorbar")
25
+ if hasattr(ax, 'legend') and ax.get_legend_handles_labels()[0]:
26
+ ax.legend()
27
+ return fig, ax
28
+
29
+
30
+ # EOF
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # File: plot_mpl_eventplot.py - mpl_eventplot demo
4
+
5
+ """mpl_eventplot: event plot."""
6
+
7
+ import numpy as np
8
+
9
+
10
+ def plot_mpl_eventplot(plt, rng, ax=None):
11
+ """mpl_eventplot - event plot.
12
+
13
+ Demonstrates: ax.mpl_eventplot() - identical to ax.eventplot()
14
+ """
15
+ if ax is None:
16
+ fig, ax = plt.subplots()
17
+ else:
18
+ fig = ax.get_figure() if hasattr(ax, "get_figure") else ax._fig_scitex
19
+
20
+ positions = [rng.uniform(0, 10, rng.integers(5, 15)) for _ in range(5)]
21
+ ax.mpl_eventplot(positions, orientation='horizontal')
22
+ ax.set_xyt("X", "Y", "mpl_eventplot")
23
+ if hasattr(ax, 'legend') and ax.get_legend_handles_labels()[0]:
24
+ ax.legend()
25
+ return fig, ax
26
+
27
+
28
+ # EOF
@@ -0,0 +1,30 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # File: plot_mpl_fill.py - mpl_fill demo
4
+
5
+ """mpl_fill: filled polygon."""
6
+
7
+ import numpy as np
8
+
9
+
10
+ def plot_mpl_fill(plt, rng, ax=None):
11
+ """mpl_fill - filled polygon.
12
+
13
+ Demonstrates: ax.mpl_fill() - identical to ax.fill()
14
+ """
15
+ if ax is None:
16
+ fig, ax = plt.subplots()
17
+ else:
18
+ fig = ax.get_figure() if hasattr(ax, "get_figure") else ax._fig_scitex
19
+
20
+ theta = np.linspace(0, 2*np.pi, 100)
21
+ r = 1 + 0.3 * np.sin(5 * theta)
22
+ x, y = r * np.cos(theta), r * np.sin(theta)
23
+ ax.mpl_fill(x, y, alpha=0.5)
24
+ ax.set_xyt("X", "Y", "mpl_fill")
25
+ if hasattr(ax, 'legend') and ax.get_legend_handles_labels()[0]:
26
+ ax.legend()
27
+ return fig, ax
28
+
29
+
30
+ # EOF
@@ -0,0 +1,31 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # File: plot_mpl_fill_between.py - mpl_fill_between demo
4
+
5
+ """mpl_fill_between: fill between."""
6
+
7
+ import numpy as np
8
+
9
+
10
+ def plot_mpl_fill_between(plt, rng, ax=None):
11
+ """mpl_fill_between - fill between.
12
+
13
+ Demonstrates: ax.mpl_fill_between() - identical to ax.fill_between()
14
+ """
15
+ if ax is None:
16
+ fig, ax = plt.subplots()
17
+ else:
18
+ fig = ax.get_figure() if hasattr(ax, "get_figure") else ax._fig_scitex
19
+
20
+ x = np.linspace(0, 2*np.pi, 100)
21
+ y1, y2 = np.sin(x), np.sin(x) + 0.5
22
+ ax.mpl_fill_between(x, y1, y2, alpha=0.3)
23
+ ax.plot(x, y1)
24
+ ax.plot(x, y2)
25
+ ax.set_xyt("X", "Y", "mpl_fill_between")
26
+ if hasattr(ax, 'legend') and ax.get_legend_handles_labels()[0]:
27
+ ax.legend()
28
+ return fig, ax
29
+
30
+
31
+ # EOF
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # File: plot_mpl_hexbin.py - mpl_hexbin demo
4
+
5
+ """mpl_hexbin: hexbin plot."""
6
+
7
+ import numpy as np
8
+
9
+
10
+ def plot_mpl_hexbin(plt, rng, ax=None):
11
+ """mpl_hexbin - hexbin plot.
12
+
13
+ Demonstrates: ax.mpl_hexbin() - identical to ax.hexbin()
14
+ """
15
+ if ax is None:
16
+ fig, ax = plt.subplots()
17
+ else:
18
+ fig = ax.get_figure() if hasattr(ax, "get_figure") else ax._fig_scitex
19
+
20
+ x, y = rng.normal(0, 1, 1000), rng.normal(0, 1, 1000)
21
+ ax.mpl_hexbin(x, y, gridsize=15)
22
+ ax.set_xyt("X", "Y", "mpl_hexbin")
23
+ if hasattr(ax, 'legend') and ax.get_legend_handles_labels()[0]:
24
+ ax.legend()
25
+ return fig, ax
26
+
27
+
28
+ # EOF
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # File: plot_mpl_hist.py - mpl_hist demo
4
+
5
+ """mpl_hist: histogram."""
6
+
7
+ import numpy as np
8
+
9
+
10
+ def plot_mpl_hist(plt, rng, ax=None):
11
+ """mpl_hist - histogram.
12
+
13
+ Demonstrates: ax.mpl_hist() - identical to ax.hist()
14
+ """
15
+ if ax is None:
16
+ fig, ax = plt.subplots()
17
+ else:
18
+ fig = ax.get_figure() if hasattr(ax, "get_figure") else ax._fig_scitex
19
+
20
+ data = rng.standard_normal(1000)
21
+ ax.mpl_hist(data, bins=30, edgecolor='white', alpha=0.8)
22
+ ax.set_xyt("X", "Y", "mpl_hist")
23
+ if hasattr(ax, 'legend') and ax.get_legend_handles_labels()[0]:
24
+ ax.legend()
25
+ return fig, ax
26
+
27
+
28
+ # EOF
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # File: plot_mpl_hist2d.py - mpl_hist2d demo
4
+
5
+ """mpl_hist2d: 2D histogram."""
6
+
7
+ import numpy as np
8
+
9
+
10
+ def plot_mpl_hist2d(plt, rng, ax=None):
11
+ """mpl_hist2d - 2D histogram.
12
+
13
+ Demonstrates: ax.mpl_hist2d() - identical to ax.hist2d()
14
+ """
15
+ if ax is None:
16
+ fig, ax = plt.subplots()
17
+ else:
18
+ fig = ax.get_figure() if hasattr(ax, "get_figure") else ax._fig_scitex
19
+
20
+ x, y = rng.normal(0, 1, 1000), rng.normal(0, 1, 1000)
21
+ ax.mpl_hist2d(x, y, bins=20)
22
+ ax.set_xyt("X", "Y", "mpl_hist2d")
23
+ if hasattr(ax, 'legend') and ax.get_legend_handles_labels()[0]:
24
+ ax.legend()
25
+ return fig, ax
26
+
27
+
28
+ # EOF
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # File: plot_mpl_imshow.py - mpl_imshow demo
4
+
5
+ """mpl_imshow: image show."""
6
+
7
+ import numpy as np
8
+
9
+
10
+ def plot_mpl_imshow(plt, rng, ax=None):
11
+ """mpl_imshow - image show.
12
+
13
+ Demonstrates: ax.mpl_imshow() - identical to ax.imshow()
14
+ """
15
+ if ax is None:
16
+ fig, ax = plt.subplots()
17
+ else:
18
+ fig = ax.get_figure() if hasattr(ax, "get_figure") else ax._fig_scitex
19
+
20
+ data = rng.uniform(0, 1, (10, 10))
21
+ im = ax.mpl_imshow(data, cmap='viridis', aspect='auto')
22
+ fig.colorbar(im, ax=ax)
23
+ ax.set_xyt("X", "Y", "mpl_imshow")
24
+ if hasattr(ax, 'legend') and ax.get_legend_handles_labels()[0]:
25
+ ax.legend()
26
+ return fig, ax
27
+
28
+
29
+ # EOF