From 3bca2d0ee473e45022b51bcda9adab5c686f612a Mon Sep 17 00:00:00 2001 From: Felipe Delestro Matos <fima@pop-os.localdomain> Date: Wed, 14 Feb 2024 09:22:31 +0100 Subject: [PATCH] Initial setup for mkdocs --- docs/assets/qim3d-icon.svg | 147 +++++++++++++++++++++++++++++++++++++ docs/assets/qim3d-logo.png | Bin 0 -> 25680 bytes docs/assets/qim3d-logo.svg | 147 +++++++++++++++++++++++++++++++++++++ docs/gui.md | 3 + docs/index.md | 76 +++++++++++++++++++ docs/io.md | 3 + docs/models.md | 1 + docs/releases.md | 50 +++++++++++++ docs/stylesheets/extra.css | 44 +++++++++++ docs/utils.md | 4 + docs/version_history.md | 31 -------- docs/viz.md | 18 +++++ mkdocs.yml | 66 +++++++++++++++++ qim3d/io/load.py | 12 ++- qim3d/viz/img.py | 17 +++-- 15 files changed, 581 insertions(+), 38 deletions(-) create mode 100644 docs/assets/qim3d-icon.svg create mode 100644 docs/assets/qim3d-logo.png create mode 100644 docs/assets/qim3d-logo.svg create mode 100644 docs/gui.md create mode 100644 docs/index.md create mode 100644 docs/io.md create mode 100644 docs/models.md create mode 100644 docs/releases.md create mode 100644 docs/stylesheets/extra.css create mode 100644 docs/utils.md delete mode 100644 docs/version_history.md create mode 100644 docs/viz.md create mode 100644 mkdocs.yml diff --git a/docs/assets/qim3d-icon.svg b/docs/assets/qim3d-icon.svg new file mode 100644 index 00000000..91283061 --- /dev/null +++ b/docs/assets/qim3d-icon.svg @@ -0,0 +1,147 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="19.146276mm" + height="24.191832mm" + viewBox="0 0 19.146276 24.191832" + version="1.1" + id="svg1" + inkscape:version="1.3.2 (1:1.3.2+202311252150+091e20ef0f)" + sodipodi:docname="qim3d-icon.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview1" + pagecolor="#ffffff" + bordercolor="#000000" + borderopacity="0.25" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + inkscape:document-units="mm" + inkscape:zoom="1.1082211" + inkscape:cx="88.430007" + inkscape:cy="301.3839" + inkscape:window-width="1602" + inkscape:window-height="1323" + inkscape:window-x="3494" + inkscape:window-y="56" + inkscape:window-maximized="0" + inkscape:current-layer="layer1" /> + <defs + id="defs1" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-81.756255,-68.791666)"> + <g + id="g272" + inkscape:export-filename="qim3d-icon.png" + inkscape:export-xdpi="100" + inkscape:export-ydpi="100" + transform="matrix(1.8256787,0,0,1.8256787,332.94204,-551.43703)"> + <g + id="g256"> + <path + id="path142" + style="fill:#990000;fill-opacity:1;stroke-width:0.0215822" + d="m -137.34045,348.16376 c -0.0552,0.0985 -0.0858,0.21086 -0.0858,0.32763 l 0.16486,1.15083 0.64698,0.38838 4.11086,2.84603 0.15916,0.0956 v -1.80919 c -0.14888,-0.0894 -3.23936,-1.94478 -3.3879,-2.03398 z" + sodipodi:nodetypes="csccccccc" /> + <path + d="m -127.58807,347.91678 -1.3687,-0.82173 -1.69386,-1.01705 -1.34889,-0.80984 c -0.21237,-0.12747 -0.47767,-0.12747 -0.69004,0 l -1.34889,0.80984 c -0.006,0.003 -3.05691,1.83532 -3.06256,1.83878 -0.10159,0.061 -0.18336,0.14669 -0.23951,0.24676 l 1.60812,0.96547 c 0.14855,0.0892 3.23902,1.94467 3.38782,2.03403 0.14896,-0.0894 3.23935,-1.94484 3.38781,-2.03403 l 1.60821,-0.96547 c -0.0561,-0.10007 -0.13784,-0.18573 -0.23951,-0.24676 z m 0,0" + fill="#ffd500" + id="path143" + style="fill:#990000;fill-opacity:1;stroke-width:0.0215822" /> + <path + id="path144" + style="fill:#990000;fill-opacity:1;stroke-width:0.0215822" + d="m -127.34882,348.16376 -1.60817,0.96532 c -0.14863,0.0892 -3.2385,1.94462 -3.38739,2.03398 v 1.81281 l 3.55276,-2.1332 1.37019,-1.20043 0.1584,0.0852 v -1.2361 c -9e-5,-0.11677 -0.0305,-0.22916 -0.0858,-0.32763 z" + sodipodi:nodetypes="ccccccccsc" /> + <path + id="path145" + style="fill:#000000;fill-opacity:0.105752;stroke-width:0.0215822" + d="m -132.34429,345.17228 c -0.11942,0 -0.23891,0.0319 -0.34504,0.0957 l -1.34875,0.80982 c -0.006,0.003 -3.05699,1.83554 -3.06264,1.839 -0.10167,0.061 -0.18331,0.14647 -0.23946,0.24654 l 1.60802,0.96549 c 0.14855,0.0892 3.23907,1.94466 3.38787,2.03402 0.0451,-0.0271 0.36024,-0.2161 0.78151,-0.46902 -0.96234,-0.57775 -2.58386,-1.55139 -2.69042,-1.61538 l -2.9e-4,2.8e-4 -1.36743,-0.82085 c -0.1461,-0.0877 -0.14985,-0.30133 -0.004,-0.38977 8.5e-4,-4.3e-4 0.002,-9.8e-4 0.003,-0.002 0.006,-0.003 3.05699,-1.83525 3.06264,-1.83871 l 0.91256,-0.54771 -0.35268,-0.21173 c -0.10615,-0.0637 -0.22562,-0.0957 -0.34504,-0.0957 z m -4.99618,2.99159 c -0.0552,0.0985 -0.0858,0.21072 -0.0858,0.32749 l 0.16474,1.1509 0.64706,0.38835 v -1.43112 z m 5.80543,2.51351 c -0.43527,0.26127 -0.76313,0.45807 -0.80925,0.48572 v 1.81268 l 0.80925,-0.48572 z" /> + <path + id="path256" + style="stroke-width:0.0215822" + d="m -132.34128,345.01667 c -0.14811,1e-5 -0.29633,0.0396 -0.42839,0.11885 -0.1338,0.0804 -4.81521,2.89117 -4.81521,2.89117 v 1.26231 c 0,0.39504 -1e-5,0.54421 0.32349,0.73098 l 1.37046,0.82269 0.32349,0.1943 1.37046,0.82269 0.3235,0.1943 1.36994,0.82269 0.16226,0.0971 0.16175,-0.0971 1.36994,-0.82269 0.32401,-0.1943 1.36995,-0.82269 0.32401,-0.1943 1.36994,-0.82269 c 0.324,-0.18706 0.32401,-0.36266 0.32401,-0.75822 v -1.23513 c -0.31564,-0.18951 -2.10118,-1.26133 -2.3213,-1.39352 -0.0766,-0.046 -0.17618,-0.0213 -0.22221,0.0553 -0.046,0.0766 -0.0208,0.17617 0.0558,0.22221 l 0.31729,0.19068 -1.37924,0.82838 c -0.84912,-0.50979 -0.51479,-0.30906 -1.37976,-0.82838 0.94658,-0.5683 0.65194,-0.39167 1.37924,-0.82837 l 0.3514,0.21084 c 0.0766,0.0459 0.17609,0.0213 0.22221,-0.0553 0.046,-0.0766 0.0208,-0.17618 -0.0558,-0.22221 -0.94144,-0.56535 0.3704,0.22207 -1.78284,-1.07074 -0.1321,-0.0793 -0.28028,-0.11886 -0.4284,-0.11885 z m 0,0.32401 c 0.0905,0 0.18077,0.0239 0.26149,0.0723 l 1.11776,0.67128 c -0.64612,0.38788 -0.13035,0.0786 -1.37925,0.82838 l -1.37976,-0.82838 1.11776,-0.67128 c 0.0807,-0.0485 0.17151,-0.0723 0.262,-0.0723 z m -1.69395,0.93224 1.37924,0.82837 c -0.18876,0.11331 -1.19141,0.71557 -1.37924,0.82838 -0.19811,-0.11896 -1.2603,-0.75663 -1.37976,-0.82838 z m -1.69395,1.01699 1.37924,0.82838 c -1.15034,0.69071 -0.95241,0.57208 -1.37924,0.82837 l -1.36891,-0.82217 c 0.0256,-0.0237 0.0533,-0.0446 0.0832,-0.0625 0.006,-0.004 0.98963,-0.59433 1.28571,-0.77205 z m 3.3879,0 c 0.58845,0.35333 0.67682,0.40668 1.37925,0.82838 -0.19028,0.11423 -1.18931,0.71439 -1.37925,0.82837 l -1.37976,-0.82837 c 0.18876,-0.11331 1.19193,-0.71557 1.37976,-0.82838 z m 3.38739,0 1.28571,0.77205 c 0.03,0.018 0.0582,0.0388 0.0837,0.0625 l -1.36943,0.82217 c -0.42245,-0.25368 -0.21777,-0.131 -1.37924,-0.82837 z m -5.08134,1.017 1.37924,0.82837 -1.37924,0.82837 c -0.13328,-0.0801 -1.23981,-0.74432 -1.37976,-0.82837 z m 3.38791,0 1.37924,0.82837 -1.37924,0.82837 c -0.17746,-0.10647 -1.18831,-0.71338 -1.37976,-0.82837 0.19373,-0.11634 1.2012,-0.72122 1.37976,-0.82837 z m -6.60632,0.1018 1.36271,0.81804 v 1.23816 l -1.37046,-0.82269 v -1.14463 c 0,-0.0298 0.003,-0.0596 0.008,-0.0889 z m 9.82421,0 c 0.005,0.0292 0.008,0.0591 0.008,0.0889 v 1.14463 l -1.36994,0.82269 v -1.23816 z m -4.91185,0.91519 c 0.17747,0.10656 1.18771,0.71339 1.37925,0.82837 l -1.37925,0.82838 -1.37976,-0.82838 z m -3.22616,0.0971 c 1.05913,0.6359 0.91395,0.54853 1.37046,0.82269 v 1.23817 l -1.37046,-0.82269 z m 6.45181,0 v 1.23817 l -1.36995,0.82269 v -1.23817 z m -4.75785,1.01699 c 0.14028,0.0842 1.23783,0.74336 1.36994,0.82269 v 1.23817 l -1.36994,-0.82269 z m 3.06389,0 v 1.23817 l -1.36994,0.82269 v -1.23817 c 0.1418,-0.0851 1.15201,-0.69185 1.36994,-0.82269 z" + sodipodi:nodetypes="sscccccccccccccccccssccccccscssssccccscccccccccsccccccccccccccccccccccccccscccccccccccccccccccccccccccccccccc" /> + </g> + <g + id="g263" + transform="translate(0,-2.6458334)"> + <path + id="path257" + style="fill:#cd4d00;fill-opacity:1;stroke-width:0.0215822" + d="m -137.34045,348.16376 c -0.0552,0.0985 -0.0858,0.21086 -0.0858,0.32763 l 0.16486,1.15083 0.64698,0.38838 4.11086,2.84603 0.15916,0.0956 v -1.80919 c -0.14888,-0.0894 -3.23936,-1.94478 -3.3879,-2.03398 z" + sodipodi:nodetypes="csccccccc" /> + <path + d="m -127.58807,347.91678 -1.3687,-0.82173 -1.69386,-1.01705 -1.34889,-0.80984 c -0.21237,-0.12747 -0.47767,-0.12747 -0.69004,0 l -1.34889,0.80984 c -0.006,0.003 -3.05691,1.83532 -3.06256,1.83878 -0.10159,0.061 -0.18336,0.14669 -0.23951,0.24676 l 1.60812,0.96547 c 0.14855,0.0892 3.23902,1.94467 3.38782,2.03403 0.14896,-0.0894 3.23935,-1.94484 3.38781,-2.03403 l 1.60821,-0.96547 c -0.0561,-0.10007 -0.13784,-0.18573 -0.23951,-0.24676 z m 0,0" + fill="#ffd500" + id="path258" + style="fill:#cd4d00;fill-opacity:1;stroke-width:0.0215822" /> + <path + id="path259" + style="fill:#cd4d00;fill-opacity:1;stroke-width:0.0215822" + d="m -127.34882,348.16376 -1.60817,0.96532 c -0.14863,0.0892 -3.2385,1.94462 -3.38739,2.03398 v 1.81281 l 3.55276,-2.1332 1.52859,-0.91778 v -0.1974 -1.2361 c -9e-5,-0.11677 -0.0305,-0.22916 -0.0858,-0.32763 z" /> + <path + id="path260" + style="fill:#000000;fill-opacity:0.0909692;stroke-width:0.0215822" + d="m -132.34429,345.17242 c -0.11942,0 -0.23891,0.0319 -0.34504,0.0957 l -1.34875,0.80981 c -0.006,0.003 -3.05699,1.83526 -3.06264,1.83872 -0.10167,0.061 -0.18331,0.14675 -0.23946,0.24682 l 0.72575,0.4359 0.88227,0.52959 c 0.14855,0.0892 3.23907,1.94467 3.38787,2.03403 0.0451,-0.0271 0.36024,-0.21639 0.78151,-0.46931 -0.96234,-0.57775 -2.58386,-1.55111 -2.69042,-1.6151 h -2.9e-4 l -1.36743,-0.82085 c -0.1461,-0.0877 -0.14985,-0.30104 -0.004,-0.38948 8.5e-4,-4.3e-4 0.002,-9.9e-4 0.003,-0.002 0.006,-0.003 3.05699,-1.83525 3.06264,-1.83871 l 0.91256,-0.54799 -0.35268,-0.21144 c -0.10615,-0.0637 -0.22562,-0.0957 -0.34504,-0.0957 z m 0,5.99054 v 1.81295 l 0.80925,-0.48572 v -1.81295 c -0.43527,0.26127 -0.76313,0.45807 -0.80925,0.48572 z m -4.27014,-2.56362 -0.72604,-0.43562 c -0.0552,0.0985 -0.0858,0.21101 -0.0858,0.32778 l 0.16474,1.15061 0.64706,0.38835 z" /> + <path + id="path263" + style="stroke-width:0.0215822" + d="m -132.34128,345.01667 c -0.14811,1e-5 -0.29633,0.0396 -0.42839,0.11885 -0.1338,0.0804 -4.81521,2.89117 -4.81521,2.89117 v 1.7989 l 0.32349,0.19439 1.37046,0.82269 0.32349,0.1943 1.37046,0.82269 0.3235,0.1943 1.36994,0.82269 0.16226,0.0971 0.16175,-0.0971 1.36994,-0.82269 0.32401,-0.1943 1.36995,-0.82269 0.32401,-0.1943 1.36994,-0.82269 0.32401,-0.1943 c 0,-0.66404 0,-1.31454 0,-1.79905 -0.31564,-0.18951 -2.10118,-1.26133 -2.3213,-1.39352 -0.0766,-0.046 -0.17618,-0.0213 -0.22221,0.0553 -0.046,0.0766 -0.0208,0.17617 0.0558,0.22221 l 0.31729,0.19068 -1.37924,0.82838 c -0.84912,-0.50979 -0.51479,-0.30906 -1.37976,-0.82838 0.94658,-0.5683 0.65194,-0.39167 1.37924,-0.82837 l 0.3514,0.21084 c 0.0766,0.0459 0.17609,0.0213 0.22221,-0.0553 0.046,-0.0766 0.0208,-0.17618 -0.0558,-0.22221 -0.94144,-0.56535 0.3704,0.22207 -1.78284,-1.07074 -0.1321,-0.0793 -0.28028,-0.11886 -0.4284,-0.11885 z m 0,0.32401 c 0.0905,0 0.18077,0.0239 0.26149,0.0723 l 1.11776,0.67128 c -0.64612,0.38788 -0.13035,0.0786 -1.37925,0.82838 l -1.37976,-0.82838 1.11776,-0.67128 c 0.0807,-0.0485 0.17151,-0.0723 0.262,-0.0723 z m -1.69395,0.93224 1.37924,0.82837 c -0.18876,0.11331 -1.19141,0.71557 -1.37924,0.82838 -0.19811,-0.11896 -1.2603,-0.75663 -1.37976,-0.82838 z m -1.69395,1.01699 1.37924,0.82838 c -1.15034,0.69071 -0.95241,0.57208 -1.37924,0.82837 l -1.36891,-0.82217 c 0.0256,-0.0237 0.0533,-0.0446 0.0832,-0.0625 0.006,-0.004 0.98963,-0.59433 1.28571,-0.77205 z m 3.3879,0 c 0.58845,0.35333 0.67682,0.40668 1.37925,0.82838 -0.19028,0.11423 -1.18931,0.71439 -1.37925,0.82837 l -1.37976,-0.82837 c 0.18876,-0.11331 1.19193,-0.71557 1.37976,-0.82838 z m 3.38739,0 1.28571,0.77205 c 0.03,0.018 0.0582,0.0388 0.0837,0.0625 l -1.36943,0.82217 c -0.42245,-0.25368 -0.21777,-0.131 -1.37924,-0.82837 z m -5.08134,1.017 1.37924,0.82837 -1.37924,0.82837 c -0.13328,-0.0801 -1.23981,-0.74432 -1.37976,-0.82837 z m 3.38791,0 1.37924,0.82837 -1.37924,0.82837 c -0.17746,-0.10647 -1.18831,-0.71338 -1.37976,-0.82837 0.19373,-0.11634 1.2012,-0.72122 1.37976,-0.82837 z m -6.60632,0.1018 1.36271,0.81804 v 1.23816 l -1.37046,-0.82269 v -1.14463 c 0,-0.0298 0.003,-0.0596 0.008,-0.0889 z m 9.82421,0 c 0.005,0.0292 0.008,0.0591 0.008,0.0889 v 1.14463 l -1.36994,0.82269 v -1.23816 z m -4.91185,0.91519 c 0.17747,0.10656 1.18771,0.71339 1.37925,0.82837 l -1.37925,0.82838 -1.37976,-0.82838 z m -3.22616,0.0971 c 1.05913,0.6359 0.91395,0.54853 1.37046,0.82269 v 1.23817 l -1.37046,-0.82269 z m 6.45181,0 v 1.23817 l -1.36995,0.82269 v -1.23817 z m -4.75785,1.01699 c 0.14028,0.0842 1.23783,0.74336 1.36994,0.82269 v 1.23817 l -1.36994,-0.82269 z m 3.06389,0 v 1.23817 l -1.36994,0.82269 v -1.23817 c 0.1418,-0.0851 1.15201,-0.69185 1.36994,-0.82269 z" + sodipodi:nodetypes="sscccccccccccccccccssccccccscssssccccscccccccccsccccccccccccccccccccccccccscccccccccccccccccccccccccccccccccc" /> + </g> + <path + id="path264" + style="fill:#ff9900;fill-opacity:1;stroke-width:0.0215822" + d="m -137.34045,342.87209 c -0.0552,0.0985 -0.0858,0.21086 -0.0858,0.32763 l 0.16486,1.15083 0.64698,0.38838 4.11086,2.84603 0.15916,0.0956 v -1.80919 c -0.14888,-0.0894 -3.23936,-1.94478 -3.3879,-2.03398 z" + sodipodi:nodetypes="csccccccc" /> + <path + d="m -127.58807,342.62511 -1.3687,-0.82173 -1.69386,-1.01705 -1.34889,-0.80984 c -0.21237,-0.12747 -0.47767,-0.12747 -0.69004,0 l -1.34889,0.80984 c -0.006,0.003 -3.05691,1.83532 -3.06256,1.83878 -0.10159,0.061 -0.18336,0.14669 -0.23951,0.24676 l 1.60812,0.96547 c 0.14855,0.0892 3.23902,1.94467 3.38782,2.03403 0.14896,-0.0894 3.23935,-1.94484 3.38781,-2.03403 l 1.60821,-0.96547 c -0.0561,-0.10007 -0.13784,-0.18573 -0.23951,-0.24676 z m 0,0" + fill="#ffd500" + id="path265" + style="fill:#ff9900;fill-opacity:1;stroke-width:0.0215822" /> + <path + id="path266" + style="fill:#ff9900;fill-opacity:1;stroke-width:0.0215822" + d="m -127.34882,342.87209 -1.60817,0.96532 c -0.14863,0.0892 -3.2385,1.94462 -3.38739,2.03398 v 1.81281 l 3.55276,-2.1332 1.52859,-0.91778 v -0.1974 -1.2361 c -9e-5,-0.11677 -0.0305,-0.22916 -0.0858,-0.32763 z" /> + <g + id="g273" + style="fill:#ffffff;fill-opacity:0.194108" + transform="translate(0,-5.2916667)"> + <path + id="path267" + style="fill:#ffffff;fill-opacity:0.194108;stroke-width:0.0215822" + d="m -137.34045,348.16376 c -0.0552,0.0985 -0.0858,0.21086 -0.0858,0.32763 l 0.16486,1.15083 0.64698,0.38838 v -1.43123 z" + sodipodi:nodetypes="cscccc" /> + <path + d="m -134.25342,349.07868 -1.36736,-0.82097 c -0.1461,-0.0877 -0.14989,-0.30105 -0.004,-0.38949 8.5e-4,-4.3e-4 0.002,-0.001 0.003,-0.002 0.006,-0.003 3.05692,-1.83524 3.06257,-1.8387 l 0.91252,-0.5479 -0.35256,-0.21161 c -0.21229,-0.12747 -0.47768,-0.12747 -0.68996,0 l -1.34889,0.80984 c -0.006,0.003 -3.05691,1.83533 -3.06256,1.83879 -0.10167,0.061 -0.18336,0.14669 -0.23951,0.24676 l 1.60812,0.96546 c 0.14855,0.0892 3.23902,1.94468 3.38782,2.03404 0.0451,-0.0271 0.36015,-0.21624 0.78142,-0.46916 -0.96234,-0.57775 -2.5837,-1.55122 -2.69026,-1.61521 z m 0,0" + fill="#fbc700" + id="path268" + style="fill:#ffffff;fill-opacity:0.194108;stroke-width:0.0215822" /> + <path + id="path269" + style="fill:#ffffff;fill-opacity:0.194108;stroke-width:0.0215822" + d="m -131.53512,350.6773 c -0.43527,0.26127 -0.76314,0.45811 -0.80926,0.48576 v 1.81281 l 0.80926,-0.48576 z" /> + </g> + <path + id="path270" + style="stroke-width:0.0215822" + d="m -132.34128,339.725 c -0.14811,10e-6 -0.29633,0.0396 -0.42839,0.11885 -0.1338,0.0804 -4.41162,2.64893 -4.41162,2.64893 -0.25081,0.15057 -0.40359,0.42187 -0.40359,0.71314 v 1.328 l 0.32349,0.19439 1.37046,0.82269 0.32349,0.1943 1.37046,0.82269 0.3235,0.1943 1.36994,0.82269 0.16226,0.0971 0.16175,-0.0971 1.36994,-0.82269 0.32401,-0.1943 1.36995,-0.82269 0.32401,-0.1943 1.36994,-0.82269 0.32401,-0.1943 v -1.32809 c -8e-5,-0.29161 -0.15381,-0.56282 -0.40411,-0.71314 -0.31564,-0.18951 -1.69707,-1.01915 -1.91719,-1.15134 -0.0766,-0.046 -0.17618,-0.0213 -0.22221,0.0553 -0.046,0.0766 -0.0208,0.17617 0.0558,0.22221 l 0.31729,0.19068 -1.37924,0.82838 c -0.84912,-0.50979 -0.51479,-0.30906 -1.37976,-0.82838 0.94658,-0.5683 0.65194,-0.39167 1.37924,-0.82837 l 0.3514,0.21084 c 0.0766,0.0459 0.17609,0.0213 0.22221,-0.0553 0.046,-0.0766 0.0208,-0.17618 -0.0558,-0.22221 -0.94144,-0.56535 0.3704,0.22207 -1.78284,-1.07074 -0.1321,-0.0793 -0.28028,-0.11886 -0.4284,-0.11885 z m 0,0.32401 c 0.0905,0 0.18077,0.0239 0.26149,0.0723 l 1.11776,0.67128 c -0.64612,0.38788 -0.13035,0.0786 -1.37925,0.82838 l -1.37976,-0.82838 1.11776,-0.67128 c 0.0807,-0.0485 0.17151,-0.0723 0.262,-0.0723 z m -1.69395,0.93224 1.37924,0.82837 c -0.18876,0.11331 -1.19141,0.71557 -1.37924,0.82838 -0.19811,-0.11896 -1.2603,-0.75663 -1.37976,-0.82838 z m -1.69395,1.01699 1.37924,0.82838 c -1.15034,0.69071 -0.95241,0.57208 -1.37924,0.82837 l -1.36891,-0.82217 c 0.0256,-0.0237 0.0533,-0.0446 0.0832,-0.0625 0.006,-0.004 0.98963,-0.59433 1.28571,-0.77205 z m 3.3879,0 c 0.58845,0.35333 0.67682,0.40668 1.37925,0.82838 -0.19028,0.11423 -1.18931,0.71439 -1.37925,0.82837 l -1.37976,-0.82837 c 0.18876,-0.11331 1.19193,-0.71557 1.37976,-0.82838 z m 3.38739,0 1.28571,0.77205 c 0.03,0.018 0.0582,0.0388 0.0837,0.0625 l -1.36943,0.82217 c -0.42245,-0.25368 -0.21777,-0.131 -1.37924,-0.82837 z m -5.08134,1.017 1.37924,0.82837 -1.37924,0.82837 c -0.13328,-0.0801 -1.23981,-0.74432 -1.37976,-0.82837 z m 3.38791,0 1.37924,0.82837 -1.37924,0.82837 c -0.17746,-0.10647 -1.18831,-0.71338 -1.37976,-0.82837 0.19373,-0.11634 1.2012,-0.72122 1.37976,-0.82837 z m -6.60632,0.1018 1.36271,0.81804 v 1.23816 l -1.37046,-0.82269 v -1.14463 c 0,-0.0298 0.003,-0.0596 0.008,-0.0889 z m 9.82421,0 c 0.005,0.0292 0.008,0.0591 0.008,0.0889 v 1.14463 l -1.36994,0.82269 v -1.23816 z m -4.91185,0.91519 c 0.17747,0.10656 1.18771,0.71339 1.37925,0.82837 l -1.37925,0.82838 -1.37976,-0.82838 z m -3.22616,0.0971 c 1.05913,0.6359 0.91395,0.54853 1.37046,0.82269 v 1.23817 l -1.37046,-0.82269 z m 6.45181,0 v 1.23817 l -1.36995,0.82269 v -1.23817 z m -4.75785,1.01699 c 0.14028,0.0842 1.23783,0.74336 1.36994,0.82269 v 1.23817 l -1.36994,-0.82269 z m 3.06389,0 v 1.23817 l -1.36994,0.82269 v -1.23817 c 0.1418,-0.0851 1.15201,-0.69185 1.36994,-0.82269 z" + sodipodi:nodetypes="sscsccccccccccccccccsssccccccscssssccccscccccccccsccccccccccccccccccccccccccscccccccccccccccccccccccccccccccccc" /> + <path + id="path271" + style="stroke-width:0.0215822" + d="m -132.34128,339.725 c -0.14811,10e-6 -0.29633,0.0396 -0.42839,0.11885 -0.1338,0.0804 -4.41162,2.64893 -4.41162,2.64893 -0.25081,0.15057 -0.40359,0.42187 -0.40359,0.71314 v 1.328 l 0.32349,0.19439 1.37046,0.82269 0.32349,0.1943 1.37046,0.82269 0.3235,0.1943 1.36994,0.82269 0.16226,0.0971 0.16175,-0.0971 1.36994,-0.82269 0.32401,-0.1943 1.36995,-0.82269 0.32401,-0.1943 1.36994,-0.82269 0.32401,-0.1943 v -1.32809 c -8e-5,-0.29161 -0.15381,-0.56282 -0.40411,-0.71314 -0.31564,-0.18951 -1.69707,-1.01915 -1.91719,-1.15134 -0.18154,-0.10902 -0.34821,0.16824 -0.16641,0.27751 l 0.31729,0.19068 -1.37924,0.82838 c -0.84912,-0.50979 -0.51479,-0.30906 -1.37976,-0.82838 0.94658,-0.5683 0.65194,-0.39167 1.37924,-0.82837 l 1.06247,0.63769 c 0.18171,0.10889 0.34224,-0.17171 0.16052,-0.28091 -0.94144,-0.56535 -0.33478,-0.20138 -2.48802,-1.49419 -0.1321,-0.0793 -0.28028,-0.11886 -0.4284,-0.11885 z m 0,0.32401 c 0.0905,0 0.18077,0.0239 0.26149,0.0723 l 1.11776,0.67128 c -0.64612,0.38788 -0.13035,0.0786 -1.37925,0.82838 l -1.37976,-0.82838 1.11776,-0.67128 c 0.0807,-0.0485 0.17151,-0.0723 0.262,-0.0723 z m -1.69395,0.93224 1.37924,0.82837 c -0.18876,0.11331 -1.19141,0.71557 -1.37924,0.82838 -0.19811,-0.11896 -1.2603,-0.75663 -1.37976,-0.82838 z m -1.69395,1.01699 1.37924,0.82838 c -1.15034,0.69071 -0.95241,0.57208 -1.37924,0.82837 l -1.36891,-0.82217 c 0.0256,-0.0237 0.0533,-0.0446 0.0832,-0.0625 0.006,-0.004 0.98963,-0.59433 1.28571,-0.77205 z m 3.3879,0 c 0.58845,0.35333 0.67682,0.40668 1.37925,0.82838 -0.19028,0.11423 -1.18931,0.71439 -1.37925,0.82837 l -1.37976,-0.82837 c 0.18876,-0.11331 1.19193,-0.71557 1.37976,-0.82838 z m 3.38739,0 1.28571,0.77205 c 0.03,0.018 0.0582,0.0388 0.0837,0.0625 l -1.36943,0.82217 c -0.42245,-0.25368 -0.21777,-0.131 -1.37924,-0.82837 z m -5.08134,1.017 1.37924,0.82837 -1.37924,0.82837 c -0.13328,-0.0801 -1.23981,-0.74432 -1.37976,-0.82837 z m 3.38791,0 1.37924,0.82837 -1.37924,0.82837 c -0.17746,-0.10647 -1.18831,-0.71338 -1.37976,-0.82837 0.19373,-0.11634 1.2012,-0.72122 1.37976,-0.82837 z m -6.60632,0.1018 1.36271,0.81804 v 1.23816 l -1.37046,-0.82269 v -1.14463 c 0,-0.0298 0.003,-0.0596 0.008,-0.0889 z m 9.82421,0 c 0.005,0.0292 0.008,0.0591 0.008,0.0889 v 1.14463 l -1.36994,0.82269 v -1.23816 z m -4.91185,0.91519 c 0.17747,0.10656 1.18771,0.71339 1.37925,0.82837 l -1.37925,0.82838 -1.37976,-0.82838 z m -3.22616,0.0971 c 1.05913,0.6359 0.91395,0.54853 1.37046,0.82269 v 1.23817 l -1.37046,-0.82269 z m 6.45181,0 v 1.23817 l -1.36995,0.82269 v -1.23817 z m -4.75785,1.01699 c 0.14028,0.0842 1.23783,0.74336 1.36994,0.82269 v 1.23817 l -1.36994,-0.82269 z m 3.06389,0 v 1.23817 l -1.36994,0.82269 v -1.23817 c 0.1418,-0.0851 1.15201,-0.69185 1.36994,-0.82269 z" + sodipodi:nodetypes="sscsccccccccccccccccsscccccccssssccccscccccccccsccccccccccccccccccccccccccscccccccccccccccccccccccccccccccccc" /> + </g> + </g> +</svg> diff --git a/docs/assets/qim3d-logo.png b/docs/assets/qim3d-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..80b00c311634170415677f257d7cccac885e40c8 GIT binary patch literal 25680 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 CU51$e literal 0 HcmV?d00001 diff --git a/docs/assets/qim3d-logo.svg b/docs/assets/qim3d-logo.svg new file mode 100644 index 00000000..af7469da --- /dev/null +++ b/docs/assets/qim3d-logo.svg @@ -0,0 +1,147 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="60.670403mm" + height="22.869995mm" + viewBox="0 0 60.670401 22.869995" + version="1.1" + id="svg1" + inkscape:version="1.3.2 (1:1.3.2+202311252150+091e20ef0f)" + sodipodi:docname="qim3d-logo.svg" + inkscape:export-filename="qim3d-logo.png" + inkscape:export-xdpi="214.35162" + inkscape:export-ydpi="214.35162" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview1" + pagecolor="#ffffff" + bordercolor="#000000" + borderopacity="0.25" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#ffffff" + inkscape:document-units="mm" + inkscape:zoom="1.5672613" + inkscape:cx="132.71558" + inkscape:cy="97.622521" + inkscape:window-width="2216" + inkscape:window-height="1323" + inkscape:window-x="1868" + inkscape:window-y="56" + inkscape:window-maximized="0" + inkscape:current-layer="layer1" + showborder="true" /> + <defs + id="defs1" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-66.401506,-111.673)"> + <g + id="g1" + transform="matrix(0.94536024,0,0,0.94536024,4.0144902,6.1975108)"> + <path + id="path142" + style="fill:#990000;fill-opacity:1;stroke-width:0.0394022" + d="m 66.4391,126.9782 c -0.100778,0.17983 -0.156643,0.38496 -0.156643,0.59815 l 0.300981,2.10104 1.181178,0.70906 7.505109,5.19594 0.290575,0.17453 v -3.303 c -0.271807,-0.16321 -5.91403,-3.55054 -6.185217,-3.71339 z" + sodipodi:nodetypes="csccccccc" /> + <path + d="m 84.243812,126.52729 -2.498806,-1.50021 -3.092444,-1.85681 -2.46264,-1.4785 c -0.387719,-0.23272 -0.872072,-0.23272 -1.259791,0 l -2.46264,1.4785 c -0.01095,0.005 -5.580936,3.35071 -5.591251,3.35702 -0.18547,0.11137 -0.334756,0.26781 -0.437268,0.45051 l 2.93591,1.76264 c 0.271205,0.16285 5.91341,3.55034 6.185071,3.71348 0.271953,-0.16321 5.914013,-3.55065 6.185053,-3.71348 l 2.936075,-1.76264 c -0.102421,-0.1827 -0.251652,-0.33908 -0.437269,-0.45051 z m 0,0" + fill="#ffd500" + id="path143" + style="fill:#990000;fill-opacity:1;stroke-width:0.0394022" /> + <path + id="path144" + style="fill:#990000;fill-opacity:1;stroke-width:0.0394022" + d="m 84.680606,126.9782 -2.936002,1.76236 c -0.27135,0.16286 -5.91246,3.55026 -6.184286,3.7134 v 3.30961 l 6.486199,-3.89454 2.501526,-2.1916 0.289188,0.15555 v -2.25672 c -1.64e-4,-0.21319 -0.05568,-0.41838 -0.156643,-0.59815 z" + sodipodi:nodetypes="ccccccccsc" /> + <path + id="path145" + style="fill:#000000;fill-opacity:0.105752;stroke-width:0.0394022" + d="m 75.560483,121.51672 c -0.218023,0 -0.436173,0.0582 -0.629932,0.17472 l -2.462385,1.47847 c -0.01095,0.005 -5.581081,3.3511 -5.591396,3.35742 -0.185617,0.11137 -0.334665,0.26741 -0.437177,0.4501 l 2.935728,1.76268 c 0.271204,0.16285 5.913501,3.55032 6.185162,3.71347 0.08234,-0.0495 0.657682,-0.39453 1.426786,-0.85628 -1.756924,-1.05479 -4.717298,-2.83234 -4.911843,-2.94917 l -5.29e-4,5.1e-4 -2.496488,-1.49861 c -0.266732,-0.16011 -0.273578,-0.55013 -0.0073,-0.71159 0.0016,-7.9e-4 0.0037,-0.002 0.0055,-0.004 0.01095,-0.005 5.581082,-3.35058 5.591397,-3.3569 l 1.666041,-0.99994 -0.64388,-0.38655 c -0.193796,-0.1163 -0.41191,-0.17472 -0.629932,-0.17472 z m -9.12142,5.46168 c -0.100777,0.17983 -0.156643,0.38471 -0.156643,0.59789 l 0.300762,2.10118 1.181324,0.709 v -2.61277 z m 10.59885,4.58886 c -0.794663,0.477 -1.39323,0.83629 -1.47743,0.88677 v 3.30937 l 1.47743,-0.88677 z" /> + <path + id="path256" + style="fill:#1a1a1a;fill-opacity:1;stroke-width:0.0394022" + d="m 75.565978,121.23263 c -0.270401,1e-5 -0.541003,0.0723 -0.782103,0.21698 -0.244275,0.14678 -8.791026,5.27834 -8.791026,5.27834 v 2.30458 c 0,0.72121 -1.8e-5,0.99355 0.590589,1.33453 l 2.50202,1.50197 0.590588,0.35473 2.50202,1.50197 0.590607,0.35473 2.50107,1.50196 0.296235,0.17728 0.295304,-0.17728 2.50107,-1.50196 0.591538,-0.35473 2.501088,-1.50197 0.591539,-0.35473 2.50107,-1.50197 c 0.59152,-0.34151 0.591538,-0.6621 0.591538,-1.38426 v -2.25495 c -0.576257,-0.34599 -3.83608,-2.30279 -4.237948,-2.54412 -0.139847,-0.084 -0.321648,-0.0389 -0.405684,0.10096 -0.08398,0.13984 -0.03797,0.32163 0.101873,0.40568 l 0.579269,0.34812 -2.518049,1.51236 c -1.55022,-0.93072 -0.939841,-0.56425 -2.518998,-1.51236 1.728151,-1.03753 1.190233,-0.71506 2.518049,-1.51234 l 0.641544,0.38493 c 0.139847,0.0838 0.321483,0.0389 0.405684,-0.10096 0.08398,-0.13985 0.03797,-0.32165 -0.101873,-0.40569 -1.718767,-1.03214 0.676231,0.40543 -3.254893,-1.95482 -0.241172,-0.14478 -0.511701,-0.217 -0.782121,-0.21698 z m 0,0.59153 c 0.165224,0 0.330028,0.0436 0.477397,0.132 l 2.04067,1.22554 c -1.179607,0.70815 -0.237977,0.1435 -2.518067,1.51236 l -2.518998,-1.51236 2.04067,-1.22554 c 0.147332,-0.0885 0.313122,-0.132 0.478328,-0.132 z m -3.092608,1.70197 2.518049,1.51234 c -0.344615,0.20687 -2.175132,1.3064 -2.518049,1.51236 -0.361686,-0.21719 -2.300903,-1.38137 -2.518999,-1.51236 z m -3.092609,1.8567 2.518049,1.51236 c -2.100151,1.26101 -1.738794,1.04443 -2.518049,1.51233 l -2.49919,-1.50101 c 0.04674,-0.0433 0.09731,-0.0814 0.151897,-0.11411 0.01095,-0.007 1.806746,-1.08505 2.347293,-1.40951 z m 6.185217,0 c 1.074321,0.64507 1.235656,0.74247 2.518067,1.51236 -0.34739,0.20854 -2.171298,1.30424 -2.518067,1.51233 l -2.518998,-1.51233 c 0.344615,-0.20687 2.176081,-1.3064 2.518998,-1.51236 z m 6.184286,0 2.347293,1.40952 c 0.05477,0.0329 0.106255,0.0708 0.152809,0.1141 l -2.500139,1.50102 c -0.771258,-0.46314 -0.397578,-0.23916 -2.518049,-1.51234 z m -9.276894,1.85672 2.518049,1.51233 -2.518049,1.51234 c -0.243327,-0.14624 -2.263495,-1.35889 -2.518999,-1.51234 z m 6.185235,0 2.518049,1.51233 -2.518049,1.51234 c -0.323985,-0.19438 -2.169473,-1.3024 -2.518999,-1.51234 0.353689,-0.2124 2.193005,-1.31671 2.518999,-1.51233 z m -12.061018,0.18585 2.487871,1.49348 v 2.26048 l -2.50202,-1.50197 v -2.08972 c 0,-0.0544 0.0055,-0.10881 0.01461,-0.16231 z m 17.935851,0 c 0.0091,0.0533 0.01461,0.1079 0.01461,0.1623 v 2.08973 l -2.50107,1.50197 v -2.26048 z m -8.96746,1.67084 c 0.324003,0.19455 2.168377,1.30242 2.518067,1.51234 l -2.518067,1.51236 -2.518998,-1.51236 z m -5.889932,0.17728 c 1.933631,1.16095 1.668579,1.00144 2.50202,1.50196 v 2.26051 l -2.50202,-1.50197 z m 11.778932,0 v 2.2605 l -2.501088,1.50197 v -2.26051 z m -8.686305,1.85669 c 0.256106,0.15373 2.25988,1.35714 2.50107,1.50197 v 2.2605 l -2.50107,-1.50197 z m 5.593679,0 v 2.2605 l -2.50107,1.50197 v -2.2605 c 0.258881,-0.15536 2.1032,-1.26309 2.50107,-1.50197 z" + sodipodi:nodetypes="sscccccccccccccccccssccccccscssssccccscccccccccsccccccccccccccccccccccccccscccccccccccccccccccccccccccccccccc" /> + <path + id="path257" + style="fill:#cd4d00;fill-opacity:1;stroke-width:0.0394022" + d="m 66.4391,122.14776 c -0.100778,0.17983 -0.156643,0.38496 -0.156643,0.59815 l 0.300981,2.10104 1.181178,0.70906 7.505109,5.19594 0.290575,0.17453 v -3.303 c -0.271807,-0.16321 -5.91403,-3.55054 -6.185217,-3.71339 z" + sodipodi:nodetypes="csccccccc" /> + <path + d="m 84.243812,121.69685 -2.498806,-1.50021 -3.092444,-1.85681 -2.46264,-1.4785 c -0.387719,-0.23272 -0.872072,-0.23272 -1.259791,0 l -2.46264,1.4785 c -0.01095,0.005 -5.580936,3.35071 -5.591251,3.35702 -0.18547,0.11137 -0.334756,0.26781 -0.437268,0.45051 l 2.93591,1.76264 c 0.271205,0.16285 5.91341,3.55034 6.185071,3.71348 0.271953,-0.16321 5.914013,-3.55065 6.185053,-3.71348 l 2.936075,-1.76264 c -0.102421,-0.1827 -0.251652,-0.33908 -0.437269,-0.45051 z m 0,0" + fill="#ffd500" + id="path258" + style="fill:#cd4d00;fill-opacity:1;stroke-width:0.0394022" /> + <path + id="path259" + style="fill:#cd4d00;fill-opacity:1;stroke-width:0.0394022" + d="m 84.680606,122.14776 -2.936002,1.76236 c -0.27135,0.16286 -5.91246,3.55026 -6.184286,3.7134 v 3.30961 l 6.486199,-3.89454 2.790714,-1.67557 v -0.36039 -2.25672 c -1.64e-4,-0.21319 -0.05568,-0.41837 -0.156643,-0.59815 z" /> + <path + id="path260" + style="fill:#000000;fill-opacity:0.0909692;stroke-width:0.0394022" + d="m 75.560483,116.68654 c -0.218023,0 -0.436173,0.0582 -0.629932,0.17471 l -2.462385,1.47846 c -0.01095,0.005 -5.581081,3.35059 -5.591396,3.35691 -0.185617,0.11136 -0.334665,0.26792 -0.437177,0.45061 l 1.324986,0.79581 1.610742,0.96687 c 0.271204,0.16285 5.913501,3.55034 6.185162,3.71348 0.08234,-0.0495 0.657682,-0.39506 1.426786,-0.85681 -1.756924,-1.05478 -4.717298,-2.83183 -4.911843,-2.94865 h -5.29e-4 l -2.496488,-1.49861 c -0.266732,-0.16011 -0.273578,-0.5496 -0.0073,-0.71107 0.0016,-7.8e-4 0.0037,-0.002 0.0055,-0.004 0.01095,-0.005 5.581082,-3.35057 5.591397,-3.35689 l 1.666041,-1.00045 -0.64388,-0.38603 c -0.193796,-0.11629 -0.41191,-0.17471 -0.629932,-0.17471 z m 0,10.9368 v 3.30986 l 1.47743,-0.88677 v -3.30986 c -0.794663,0.47699 -1.39323,0.83629 -1.47743,0.88677 z m -7.795904,-4.68035 -1.325516,-0.7953 c -0.100777,0.17983 -0.156643,0.38523 -0.156643,0.59842 l 0.300762,2.10064 1.181324,0.70901 z" /> + <path + id="path263" + style="fill:#1a1a1a;fill-opacity:1;stroke-width:0.0394022" + d="m 75.565978,116.40219 c -0.270401,10e-6 -0.541003,0.0723 -0.782103,0.21698 -0.244275,0.14678 -8.791026,5.27834 -8.791026,5.27834 v 3.28422 l 0.590589,0.35489 2.50202,1.50197 0.590588,0.35473 2.50202,1.50197 0.590607,0.35473 2.50107,1.50196 0.296235,0.17728 0.295304,-0.17728 2.50107,-1.50196 0.591538,-0.35473 2.501088,-1.50197 0.591539,-0.35473 2.50107,-1.50197 0.591538,-0.35473 c 0,-1.21232 0,-2.39992 0,-3.28448 -0.576257,-0.34599 -3.83608,-2.30279 -4.237948,-2.54412 -0.139847,-0.084 -0.321648,-0.0389 -0.405684,0.10096 -0.08398,0.13984 -0.03797,0.32163 0.101873,0.40568 l 0.579269,0.34812 -2.518049,1.51236 c -1.55022,-0.93072 -0.939841,-0.56425 -2.518998,-1.51236 1.728151,-1.03753 1.190233,-0.71506 2.518049,-1.51234 l 0.641544,0.38493 c 0.139847,0.0838 0.321483,0.0389 0.405684,-0.10096 0.08398,-0.13985 0.03797,-0.32165 -0.101873,-0.40569 -1.718767,-1.03214 0.676231,0.40543 -3.254893,-1.95482 -0.241172,-0.14478 -0.511701,-0.217 -0.782121,-0.21698 z m 0,0.59153 c 0.165224,0 0.330028,0.0436 0.477397,0.132 l 2.04067,1.22554 c -1.179607,0.70815 -0.237977,0.1435 -2.518067,1.51236 l -2.518998,-1.51236 2.04067,-1.22554 c 0.147332,-0.0885 0.313122,-0.132 0.478328,-0.132 z m -3.092608,1.70197 2.518049,1.51234 c -0.344615,0.20687 -2.175132,1.3064 -2.518049,1.51236 -0.361686,-0.21719 -2.300903,-1.38137 -2.518999,-1.51236 z m -3.092609,1.8567 2.518049,1.51236 c -2.100151,1.26101 -1.738794,1.04443 -2.518049,1.51233 l -2.49919,-1.50101 c 0.04674,-0.0433 0.09731,-0.0814 0.151897,-0.11411 0.01095,-0.007 1.806746,-1.08505 2.347293,-1.40951 z m 6.185217,0 c 1.074321,0.64507 1.235656,0.74247 2.518067,1.51236 -0.34739,0.20854 -2.171298,1.30424 -2.518067,1.51233 l -2.518998,-1.51233 c 0.344615,-0.20687 2.176081,-1.3064 2.518998,-1.51236 z m 6.184286,0 2.347293,1.40952 c 0.05477,0.0329 0.106255,0.0708 0.152809,0.1141 l -2.500139,1.50102 c -0.771258,-0.46314 -0.397578,-0.23916 -2.518049,-1.51234 z m -9.276894,1.85672 2.518049,1.51233 -2.518049,1.51234 c -0.243327,-0.14624 -2.263495,-1.35889 -2.518999,-1.51234 z m 6.185235,0 2.518049,1.51233 -2.518049,1.51234 c -0.323985,-0.19438 -2.169473,-1.3024 -2.518999,-1.51234 0.353689,-0.2124 2.193005,-1.31671 2.518999,-1.51233 z m -12.061018,0.18585 2.487871,1.49348 v 2.26048 l -2.50202,-1.50197 v -2.08972 c 0,-0.0544 0.0055,-0.10881 0.01461,-0.16231 z m 17.935851,0 c 0.0091,0.0533 0.01461,0.1079 0.01461,0.1623 v 2.08973 l -2.50107,1.50197 v -2.26048 z m -8.96746,1.67084 c 0.324003,0.19455 2.168377,1.30242 2.518067,1.51234 l -2.518067,1.51236 -2.518998,-1.51236 z m -5.889932,0.17728 c 1.933631,1.16095 1.668579,1.00144 2.50202,1.50196 v 2.26051 l -2.50202,-1.50197 z m 11.778932,0 v 2.2605 l -2.501088,1.50197 v -2.26051 z m -8.686305,1.85669 c 0.256106,0.15373 2.25988,1.35714 2.50107,1.50197 v 2.2605 l -2.50107,-1.50197 z m 5.593679,0 v 2.2605 l -2.50107,1.50197 v -2.2605 c 0.258881,-0.15536 2.1032,-1.26309 2.50107,-1.50197 z" + sodipodi:nodetypes="sscccccccccccccccccssccccccscssssccccscccccccccsccccccccccccccccccccccccccscccccccccccccccccccccccccccccccccc" /> + <path + id="path264" + style="fill:#ff9900;fill-opacity:1;stroke-width:0.0394022" + d="m 66.4391,117.31731 c -0.100778,0.17983 -0.156643,0.38496 -0.156643,0.59815 l 0.300981,2.10104 1.181178,0.70906 7.505109,5.19594 0.290575,0.17453 v -3.303 c -0.271807,-0.16321 -5.91403,-3.55054 -6.185217,-3.71339 z" + sodipodi:nodetypes="csccccccc" /> + <path + d="m 84.243812,116.86641 -2.498806,-1.50022 -3.092444,-1.85681 -2.46264,-1.4785 c -0.387719,-0.23272 -0.872072,-0.23272 -1.259791,0 l -2.46264,1.4785 c -0.01095,0.005 -5.580936,3.35071 -5.591251,3.35703 -0.18547,0.11136 -0.334756,0.2678 -0.437268,0.4505 l 2.93591,1.76264 c 0.271205,0.16285 5.91341,3.55034 6.185071,3.71348 0.271953,-0.16321 5.914013,-3.55065 6.185053,-3.71348 l 2.936075,-1.76264 c -0.102421,-0.1827 -0.251652,-0.33908 -0.437269,-0.4505 z m 0,0" + fill="#ffd500" + id="path265" + style="fill:#ff9900;fill-opacity:1;stroke-width:0.0394022" /> + <path + id="path266" + style="fill:#ff9900;fill-opacity:1;stroke-width:0.0394022" + d="m 84.680606,117.31731 -2.936002,1.76237 c -0.27135,0.16285 -5.91246,3.55025 -6.184286,3.71339 v 3.30961 l 6.486199,-3.89454 2.790714,-1.67557 v -0.36039 -2.25672 c -1.64e-4,-0.21319 -0.05568,-0.41837 -0.156643,-0.59815 z" /> + <path + id="path267" + style="fill:#ffffff;fill-opacity:0.194108;stroke-width:0.0394022" + d="m 66.4391,117.31732 c -0.100778,0.17983 -0.156643,0.38496 -0.156643,0.59815 l 0.300981,2.10104 1.181178,0.70906 v -2.61297 z" + sodipodi:nodetypes="cscccc" /> + <path + d="m 72.075025,118.98767 -2.49636,-1.49883 c -0.266732,-0.16011 -0.273651,-0.54962 -0.0073,-0.71108 0.0016,-7.9e-4 0.0037,-0.002 0.0055,-0.004 0.01095,-0.005 5.580954,-3.35056 5.591269,-3.35688 l 1.665968,-1.00029 -0.643661,-0.38633 c -0.387573,-0.23272 -0.87209,-0.23272 -1.259645,0 l -2.46264,1.47851 c -0.01095,0.005 -5.580936,3.35072 -5.591251,3.35704 -0.185616,0.11137 -0.334756,0.26781 -0.437268,0.4505 l 2.93591,1.76262 c 0.271205,0.16285 5.91341,3.55036 6.185071,3.71351 0.08234,-0.0495 0.657518,-0.39479 1.426622,-0.85654 -1.756924,-1.05478 -4.717006,-2.83203 -4.91155,-2.94885 z m 0,0" + fill="#fbc700" + id="path268" + style="fill:#ffffff;fill-opacity:0.194108;stroke-width:0.0394022" /> + <path + id="path269" + style="fill:#ffffff;fill-opacity:0.194108;stroke-width:0.0394022" + d="m 77.037767,121.90624 c -0.794663,0.47699 -1.393248,0.83636 -1.477449,0.88684 v 3.30961 l 1.477449,-0.88684 z" /> + <path + id="path270" + style="stroke-width:0.0394022" + d="m 75.565978,111.57174 c -0.270401,10e-6 -0.541003,0.0723 -0.782103,0.21698 -0.244275,0.14678 -8.0542,4.83609 -8.0542,4.83609 -0.457899,0.2749 -0.736826,0.7702 -0.736826,1.30197 v 2.4245 l 0.590589,0.35489 2.50202,1.50197 0.590588,0.35473 2.50202,1.50197 0.590607,0.35473 2.50107,1.50196 0.296235,0.17728 0.295304,-0.17728 2.50107,-1.50196 0.591538,-0.35473 2.501088,-1.50197 0.591539,-0.35473 2.50107,-1.50197 0.591538,-0.35473 v -2.42466 c -1.46e-4,-0.53239 -0.280808,-1.02753 -0.737775,-1.30197 -0.576257,-0.34598 -3.098305,-1.86064 -3.500173,-2.10197 -0.139847,-0.084 -0.321648,-0.0389 -0.405684,0.10096 -0.08398,0.13984 -0.03797,0.32163 0.101873,0.40568 l 0.579269,0.34812 -2.518049,1.51236 c -1.55022,-0.93072 -0.939841,-0.56425 -2.518998,-1.51236 1.728151,-1.03753 1.190233,-0.71506 2.518049,-1.51234 l 0.641544,0.38493 c 0.139847,0.0838 0.321483,0.0389 0.405684,-0.10096 0.08398,-0.13985 0.03797,-0.32165 -0.101873,-0.40568 -1.718767,-1.03215 0.676231,0.40542 -3.254893,-1.95483 -0.241172,-0.14478 -0.511701,-0.217 -0.782121,-0.21698 z m 0,0.59153 c 0.165224,0 0.330028,0.0436 0.477397,0.132 l 2.04067,1.22554 c -1.179607,0.70815 -0.237977,0.1435 -2.518067,1.51236 l -2.518998,-1.51236 2.04067,-1.22554 c 0.147332,-0.0885 0.313122,-0.132 0.478328,-0.132 z m -3.092608,1.70198 2.518049,1.51233 c -0.344615,0.20687 -2.175132,1.3064 -2.518049,1.51236 -0.361686,-0.21718 -2.300903,-1.38136 -2.518999,-1.51236 z m -3.092609,1.85669 2.518049,1.51236 c -2.100151,1.26101 -1.738794,1.04443 -2.518049,1.51234 l -2.49919,-1.50102 c 0.04674,-0.0433 0.09731,-0.0814 0.151897,-0.11411 0.01095,-0.007 1.806746,-1.08505 2.347293,-1.40951 z m 6.185217,0 c 1.074321,0.64507 1.235656,0.74247 2.518067,1.51236 -0.34739,0.20855 -2.171298,1.30424 -2.518067,1.51234 L 73.04698,117.2343 c 0.344615,-0.20687 2.176081,-1.3064 2.518998,-1.51236 z m 6.184286,0 2.347293,1.40952 c 0.05477,0.0329 0.106255,0.0708 0.152809,0.1141 l -2.500139,1.50102 c -0.771258,-0.46314 -0.397578,-0.23916 -2.518049,-1.51234 z m -9.276894,1.85672 2.518049,1.51233 -2.518049,1.51234 c -0.243327,-0.14623 -2.263495,-1.35889 -2.518999,-1.51234 z m 6.185235,0 2.518049,1.51233 -2.518049,1.51234 c -0.323985,-0.19438 -2.169473,-1.3024 -2.518999,-1.51234 0.353689,-0.21239 2.193005,-1.31671 2.518999,-1.51233 z m -12.061018,0.18585 2.487871,1.49348 v 2.26048 l -2.50202,-1.50197 v -2.08972 c 0,-0.0544 0.0055,-0.10881 0.01461,-0.1623 z m 17.935851,0 c 0.0091,0.0533 0.01461,0.1079 0.01461,0.1623 v 2.08973 l -2.50107,1.50197 v -2.26048 z m -8.96746,1.67084 c 0.324003,0.19455 2.168377,1.30243 2.518067,1.51234 l -2.518067,1.51236 -2.518998,-1.51236 z m -5.889932,0.17728 c 1.933631,1.16095 1.668579,1.00144 2.50202,1.50197 v 2.2605 l -2.50202,-1.50197 z m 11.778932,0 v 2.2605 l -2.501088,1.50197 v -2.2605 z m -8.686305,1.85669 c 0.256106,0.15373 2.25988,1.35714 2.50107,1.50197 v 2.2605 l -2.50107,-1.50196 z m 5.593679,0 v 2.26051 l -2.50107,1.50196 v -2.2605 c 0.258881,-0.15536 2.1032,-1.26309 2.50107,-1.50197 z" + sodipodi:nodetypes="sscsccccccccccccccccsssccccccscssssccccscccccccccsccccccccccccccccccccccccccscccccccccccccccccccccccccccccccccc" /> + <path + id="path271" + style="fill:#1a1a1a;fill-opacity:1;stroke-width:0.0394022" + d="m 75.565978,111.57174 c -0.270401,10e-6 -0.541003,0.0723 -0.782103,0.21698 -0.244275,0.14678 -8.0542,4.83609 -8.0542,4.83609 -0.457899,0.2749 -0.736826,0.7702 -0.736826,1.30197 v 2.4245 l 0.590589,0.35489 2.50202,1.50197 0.590588,0.35473 2.50202,1.50197 0.590607,0.35473 2.50107,1.50196 0.296235,0.17728 0.295304,-0.17728 2.50107,-1.50196 0.591538,-0.35473 2.501088,-1.50197 0.591539,-0.35473 2.50107,-1.50197 0.591538,-0.35473 v -2.42466 c -1.46e-4,-0.53239 -0.280808,-1.02753 -0.737775,-1.30197 -0.576257,-0.34598 -3.098305,-1.86064 -3.500173,-2.10197 -0.331434,-0.19904 -0.635719,0.30715 -0.303811,0.50664 l 0.579269,0.34812 -2.518049,1.51236 c -1.55022,-0.93072 -0.939841,-0.56425 -2.518998,-1.51236 1.728151,-1.03753 1.190233,-0.71506 2.518049,-1.51234 l 1.939729,1.16422 c 0.331744,0.1988 0.62482,-0.31349 0.293058,-0.51285 -1.718767,-1.03215 -0.611201,-0.36766 -4.542325,-2.72791 -0.241172,-0.14478 -0.511701,-0.217 -0.782121,-0.21698 z m 0,0.59153 c 0.165224,0 0.330028,0.0436 0.477397,0.132 l 2.04067,1.22554 c -1.179607,0.70815 -0.237977,0.1435 -2.518067,1.51236 l -2.518998,-1.51236 2.04067,-1.22554 c 0.147332,-0.0885 0.313122,-0.132 0.478328,-0.132 z m -3.092608,1.70198 2.518049,1.51233 c -0.344615,0.20687 -2.175132,1.3064 -2.518049,1.51236 -0.361686,-0.21718 -2.300903,-1.38136 -2.518999,-1.51236 z m -3.092609,1.85669 2.518049,1.51236 c -2.100151,1.26101 -1.738794,1.04443 -2.518049,1.51234 l -2.49919,-1.50102 c 0.04674,-0.0433 0.09731,-0.0814 0.151897,-0.11411 0.01095,-0.007 1.806746,-1.08505 2.347293,-1.40951 z m 6.185217,0 c 1.074321,0.64507 1.235656,0.74247 2.518067,1.51236 -0.34739,0.20855 -2.171298,1.30424 -2.518067,1.51234 L 73.04698,117.2343 c 0.344615,-0.20687 2.176081,-1.3064 2.518998,-1.51236 z m 6.184286,0 2.347293,1.40952 c 0.05477,0.0329 0.106255,0.0708 0.152809,0.1141 l -2.500139,1.50102 c -0.771258,-0.46314 -0.397578,-0.23916 -2.518049,-1.51234 z m -9.276894,1.85672 2.518049,1.51233 -2.518049,1.51234 c -0.243327,-0.14623 -2.263495,-1.35889 -2.518999,-1.51234 z m 6.185235,0 2.518049,1.51233 -2.518049,1.51234 c -0.323985,-0.19438 -2.169473,-1.3024 -2.518999,-1.51234 0.353689,-0.21239 2.193005,-1.31671 2.518999,-1.51233 z m -12.061018,0.18585 2.487871,1.49348 v 2.26048 l -2.50202,-1.50197 v -2.08972 c 0,-0.0544 0.0055,-0.10881 0.01461,-0.1623 z m 17.935851,0 c 0.0091,0.0533 0.01461,0.1079 0.01461,0.1623 v 2.08973 l -2.50107,1.50197 v -2.26048 z m -8.96746,1.67084 c 0.324003,0.19455 2.168377,1.30243 2.518067,1.51234 l -2.518067,1.51236 -2.518998,-1.51236 z m -5.889932,0.17728 c 1.933631,1.16095 1.668579,1.00144 2.50202,1.50197 v 2.2605 l -2.50202,-1.50197 z m 11.778932,0 v 2.2605 l -2.501088,1.50197 v -2.2605 z m -8.686305,1.85669 c 0.256106,0.15373 2.25988,1.35714 2.50107,1.50197 v 2.2605 l -2.50107,-1.50196 z m 5.593679,0 v 2.26051 l -2.50107,1.50196 v -2.2605 c 0.258881,-0.15536 2.1032,-1.26309 2.50107,-1.50197 z" + sodipodi:nodetypes="sscsccccccccccccccccsscccccccssssccccscccccccccsccccccccccccccccccccccccccscccccccccccccccccccccccccccccccccc" /> + </g> + <text + xml:space="preserve" + style="font-size:18.082px;line-height:100%;font-family:Anton;-inkscape-font-specification:'Anton, Normal';text-align:end;letter-spacing:-0.914863px;text-anchor:end;fill:#1a1a1a;fill-opacity:1;stroke:none;stroke-width:1.04424;paint-order:fill markers stroke" + x="128.14023" + y="128.05229" + id="text1"><tspan + sodipodi:role="line" + id="tspan1" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.082px;font-family:'Roboto Condensed';-inkscape-font-specification:'Roboto Condensed, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#1a1a1a;fill-opacity:1;stroke:none;stroke-width:1.04424" + x="127.22536" + y="128.05229">qim3d</tspan></text> + </g> +</svg> diff --git a/docs/gui.md b/docs/gui.md new file mode 100644 index 00000000..40e99eca --- /dev/null +++ b/docs/gui.md @@ -0,0 +1,3 @@ +::: qim3d.gui.data_explorer +::: qim3d.gui.iso3d +::: qim3d.gui.local_thickness \ No newline at end of file diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 00000000..b2d702e3 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,76 @@ +# <img src="assets/qim3d-logo.png" width="300px"> + + +`qim3d` is a Python library for quantitative imaging analysis in 3D. It provides functionality for handling data, as well as tools for visualization and analysis. + + +## Installation + +Install the latest stable version by using pip: + +``` +pip install qim3d +``` + + +## Getting started + +Some basic funtionalites are descibred here. The full documentation is still under development. + +### Loading Data +To load image data from a file, use `qim.io.load()` + +```python +import qim3d + +# Load a file +vol = qim3d.io.load("path/to/file.tif") + +# Load a file as a virtual stack +vol = qim3d.io.load("path/to/file.tif", virtual_stack=True) +``` + +### Visualize data +You can easily check slices from your volume using `slice_viz` + +```python +import qim3d + +img = qim3d.examples.fly_150x256x256 + +# By default shows the middle slice +qim3d.viz.slice_viz(img) + +# Or we can specifly positions +qim3d.viz.slice_viz(img, position=[0,32,128]) + +# Parameters for size and colormap are also possible +qim3d.viz.slice_viz(img, img_width=6, img_height=6, cmap="inferno") + +``` + + +### GUI Components +The library also provides GUI components for interactive data analysis and exploration. +The `qim3d.gui` module contains various classes for visualization and analysis: + +```python +import qim3d + +app = qim3d.gui.iso3d.Interface() +app.launch() +``` + +GUIs can also be launched using the Qim3D CLI: +``` +$ qim3d gui --data-explorer +``` + +## Contributing +Contributions to `qim3d` are welcome! If you find a bug, have a feature request, or would like to contribute code, please open an issue or submit a pull request. + +You can find us at Gitlab: +https://lab.compute.dtu.dk/QIM/tools/qim3d + +## License +This project is licensed under the MIT License. \ No newline at end of file diff --git a/docs/io.md b/docs/io.md new file mode 100644 index 00000000..f72aa9b9 --- /dev/null +++ b/docs/io.md @@ -0,0 +1,3 @@ +::: qim3d.io.load +::: qim3d.io.save +::: qim3d.io.downloader \ No newline at end of file diff --git a/docs/models.md b/docs/models.md new file mode 100644 index 00000000..079b974a --- /dev/null +++ b/docs/models.md @@ -0,0 +1 @@ +::: qim3d.models.unet \ No newline at end of file diff --git a/docs/releases.md b/docs/releases.md new file mode 100644 index 00000000..5a72d14c --- /dev/null +++ b/docs/releases.md @@ -0,0 +1,50 @@ +# Release history +Here you can fin details about the version history of `qim3d` + +## v0.3.1 (February 1, 2024) + +- Save functionality for all file formats + +### Just for tests + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent non dolor non justo pharetra elementum porttitor at quam. Duis quam ligula, consequat vitae dolor non, facilisis tincidunt justo. Aliquam congue ex ac nibh tristique, et fringilla odio hendrerit. Cras sit amet dui mauris. Curabitur vitae nibh ut dui luctus cursus at id orci. Proin quam lacus, finibus in porttitor sed, ultrices vel ante. Phasellus ut rhoncus diam. Vestibulum vel ultricies orci, ut vehicula libero. Sed bibendum velit sed volutpat maximus. Maecenas non euismod ipsum. Donec eu tempor lorem. Donec lectus turpis, interdum eget commodo sed, euismod id sapien. Fusce malesuada tortor est. + + + +## v0.3.0 (January 23, 2024) + +- Introduction of qim3d CLI +- Data Explorer GUI + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent non dolor non justo pharetra elementum porttitor at quam. Duis quam ligula, consequat vitae dolor non, facilisis tincidunt justo. Aliquam congue ex ac nibh tristique, et fringilla odio hendrerit. Cras sit amet dui mauris. Curabitur vitae nibh ut dui luctus cursus at id orci. Proin quam lacus, finibus in porttitor sed, ultrices vel ante. Phasellus ut rhoncus diam. Vestibulum vel ultricies orci, ut vehicula libero. Sed bibendum velit sed volutpat maximus. Maecenas non euismod ipsum. Donec eu tempor lorem. Donec lectus turpis, interdum eget commodo sed, euismod id sapien. Fusce malesuada tortor est. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent non dolor non justo pharetra elementum porttitor at quam. Duis quam ligula, consequat vitae dolor non, facilisis tincidunt justo. Aliquam congue ex ac nibh tristique, et fringilla odio hendrerit. Cras sit amet dui mauris. Curabitur vitae nibh ut dui luctus cursus at id orci. Proin quam lacus, finibus in porttitor sed, ultrices vel ante. Phasellus ut rhoncus diam. Vestibulum vel ultricies orci, ut vehicula libero. Sed bibendum velit sed volutpat maximus. Maecenas non euismod ipsum. Donec eu tempor lorem. Donec lectus turpis, interdum eget commodo sed, euismod id sapien. Fusce malesuada tortor est. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent non dolor non justo pharetra elementum porttitor at quam. Duis quam ligula, consequat vitae dolor non, facilisis tincidunt justo. Aliquam congue ex ac nibh tristique, et fringilla odio hendrerit. Cras sit amet dui mauris. Curabitur vitae nibh ut dui luctus cursus at id orci. Proin quam lacus, finibus in porttitor sed, ultrices vel ante. Phasellus ut rhoncus diam. Vestibulum vel ultricies orci, ut vehicula libero. Sed bibendum velit sed volutpat maximus. Maecenas non euismod ipsum. Donec eu tempor lorem. Donec lectus turpis, interdum eget commodo sed, euismod id sapien. Fusce malesuada tortor est. + + +## v0.2.0 (Sept 18, 2023) + +Includes new develoments toward the usability of the library, as well as its integration with the QIM platform. + +- Refactored code for the graphical interfaces + - For the local thicknes GUI, now it is possible to pass and receive numpy arrays instead of using the upload functionality. +- Improved data loader + - Now the extensions `tif`, `h5` and `txm` are supported. +- Added `qim3d.viz.slice_viz` for easy slice visualization. +- U-net model creation + - Model availabe from `qim3d.models.UNet` + - Data augmentation class at `qim3d.utils.Augmentation` + - Notebook with full pipeline at `docs/notebooks/Unet.ipynb` +- Image examples accessible from `qim3d.examples` + + +## v0.1.3 (May 17, 2023) + +First stable release. + +- Simple Tiff data loader +- Graphical interfaces + - Local thickness + - 3D Isosurfaces + - Data exploration tool \ No newline at end of file diff --git a/docs/stylesheets/extra.css b/docs/stylesheets/extra.css new file mode 100644 index 00000000..4b12b898 --- /dev/null +++ b/docs/stylesheets/extra.css @@ -0,0 +1,44 @@ +.md-search__form{ + border-radius: 8px; +} + +.md-search__form:hover{ + background-color: #f0f0f0 !important; +} + +.md-search__inner{ + border-radius: 0px !important; +} + +.md-nav__item .md-nav__link--active, .md-nav__item .md-nav__link--active code { + color: orange} + +.md-typeset a { + color: orange; + word-break: break-word; +} + +.md-nav__link { + font-size: 1.0em; +} + +.md-nav:first-child { + font-size: 2.0em; +} + +code { + border-radius: 6px !important; +} + +.md-tabs__list li:last-child { + margin-left: auto; +} + + +.md-header__source { + text-align: right; +} + +.md-header__title { + margin-left: 0px !important; +} \ No newline at end of file diff --git a/docs/utils.md b/docs/utils.md new file mode 100644 index 00000000..a1b939ce --- /dev/null +++ b/docs/utils.md @@ -0,0 +1,4 @@ +::: qim3d.utils.system + options: + members: + - Memory \ No newline at end of file diff --git a/docs/version_history.md b/docs/version_history.md deleted file mode 100644 index 26318aa2..00000000 --- a/docs/version_history.md +++ /dev/null @@ -1,31 +0,0 @@ -# Release history -Here you can fin details about the version history of `qim3d` - - -## v0.2.0 (Sept 18, 2023) -```pip install qim3d==0.2.0``` - -Includes new develoments toward the usability of the library, as well as its integration with the QIM platform. - -- Refactored code for the graphical interfaces - - For the local thicknes GUI, now it is possible to pass and receive numpy arrays instead of using the upload functionality. -- Improved data loader - - Now the extensions `tif`, `h5` and `txm` are supported. -- Added `qim3d.viz.slice_viz` for easy slice visualization. -- U-net model creation - - Model availabe from `qim3d.models.UNet` - - Data augmentation class at `qim3d.utils.Augmentation` - - Notebook with full pipeline at `docs/notebooks/Unet.ipynb` -- Image examples accessible from `qim3d.examples` - - -## v0.1.3 (May 17, 2023) -```pip install qim3d==0.1.3``` - -First stable release. - -- Simple Tiff data loader -- Graphical interfaces - - Local thickness - - 3D Isosurfaces - - Data exploration tool \ No newline at end of file diff --git a/docs/viz.md b/docs/viz.md new file mode 100644 index 00000000..5a92ef56 --- /dev/null +++ b/docs/viz.md @@ -0,0 +1,18 @@ +# Data visualization +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent non dolor non justo pharetra elementum porttitor at quam. Duis quam ligula, consequat vitae dolor non, facilisis tincidunt justo. Aliquam congue ex ac nibh tristique, et fringilla odio hendrerit. Cras sit amet dui mauris. Curabitur vitae nibh ut dui luctus cursus at id orci. Proin quam lacus, finibus in porttitor sed, ultrices vel ante. Phasellus ut rhoncus diam. Vestibulum vel ultricies orci, ut vehicula libero. Sed bibendum velit sed volutpat maximus. Maecenas non euismod ipsum. Donec eu tempor lorem. Donec lectus turpis, interdum eget commodo sed, euismod id sapien. Fusce malesuada tortor est. + +Example: +```python +import qim3d +``` + + +::: qim3d.viz.img + options: + members: + - grid_overview + - grid_pred + - slice_viz + + + diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 00000000..ef07ca04 --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,66 @@ +site_name: qim3d documentation +site_url: https://platform.qim.dk/qim3d/ +site_author: Qim3d contributors +site_description: Documentation for the Qim3d python library +repo_url: https://lab.compute.dtu.dk/QIM/tools/qim3d +repo_name: Source code at Gitlab + + +nav: + - 📦 qim3d: index.md + - 📥 Input & Output: io.md + - 📊 Visualization: viz.md + - 🔧 Utils: utils.md + - 🖥️ GUIs: gui.md + - 🧠 ML Models: models.md + - 📋 Release history: releases.md + +theme: + language: en + name: material + nav_position: top + logo: assets/qim3d-icon.svg + favicon: assets/qim3d-icon.svg + features: + - navigation.tabs + # - navigation.expand + # - navigation.instant + - toc.integrate + - toc.follow + - search.suggest + # - content.tabs.link + # - content.code.annotation + - content.code.copy + + palette: + primary: white + accent: orange + + +extra_css: + - stylesheets/extra.css + +extra: + social: + - icon: fontawesome/brands/x-twitter + link: https://twitter.com/QIMCenter + +markdown_extensions: + - pymdownx.highlight: + anchor_linenums: true + - pymdownx.superfences + +plugins: + - tags + - search + - mkdocstrings: + handlers: + python: + options: + show_root_heading: true + show_source: true + show_root_full_path: true + show_object_full_path: true + show_symbol_type_heading: true + show_symbol_type_toc: true + separate_signature: true \ No newline at end of file diff --git a/qim3d/io/load.py b/qim3d/io/load.py index f6b11848..a761d328 100644 --- a/qim3d/io/load.py +++ b/qim3d/io/load.py @@ -1,4 +1,14 @@ -"""Provides functionality for loading data from various file formats.""" +""" +Provides functionality for loading data from various file formats. + + +Example: + ``` + import qim3d + data = qim3d.io.load("image.tif") + ``` + +""" import difflib import os diff --git a/qim3d/viz/img.py b/qim3d/viz/img.py index e3648f54..804cdd28 100644 --- a/qim3d/viz/img.py +++ b/qim3d/viz/img.py @@ -1,4 +1,6 @@ -""" Provides a collection of visualization functions.""" +""" +Provides a collection of visualization functions. +""" import matplotlib.pyplot as plt from matplotlib.colors import LinearSegmentedColormap from matplotlib import colormaps @@ -25,18 +27,21 @@ def grid_overview(data, num_images=7, cmap_im="gray", cmap_segm="viridis", alpha Raises: ValueError: If the data elements are not tuples. - Notes: - - If the image data is RGB, the color map is ignored and the user is informed. - - The number of displayed images is limited to the minimum between `num_images` - and the length of the data. - - The grid layout and dimensions vary based on the presence of a mask. Returns: fig (matplotlib.figure.Figure): The figure with an overview of the images and their labels. Example: + ```python data = [(image1, label1, mask1), (image2, label2, mask2)] grid_overview(data, num_images=5, cmap_im='viridis', cmap_segm='hot', alpha=0.8) + ``` + + Notes: + - If the image data is RGB, the color map is ignored and the user is informed. + - The number of displayed images is limited to the minimum between `num_images` + and the length of the data. + - The grid layout and dimensions vary based on the presence of a mask. """ # Check if data has a mask -- GitLab