py2ls 0.1.6.2__tar.gz → 0.1.6.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/PKG-INFO +1 -1
  2. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/ips.py +0 -344
  3. py2ls-0.1.6.3/py2ls/plot.py +1109 -0
  4. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/pyproject.toml +1 -1
  5. py2ls-0.1.6.2/py2ls/plot/catplot.py +0 -437
  6. py2ls-0.1.6.2/py2ls/plot/figsets.py +0 -372
  7. py2ls-0.1.6.2/py2ls/plot/get_color.py +0 -68
  8. py2ls-0.1.6.2/py2ls/plot/stdshade.py +0 -227
  9. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/README.md +0 -0
  10. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.DS_Store +0 -0
  11. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/COMMIT_EDITMSG +0 -0
  12. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/FETCH_HEAD +0 -0
  13. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/HEAD +0 -0
  14. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/config +0 -0
  15. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/description +0 -0
  16. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/hooks/applypatch-msg.sample +0 -0
  17. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/hooks/commit-msg.sample +0 -0
  18. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/hooks/fsmonitor-watchman.sample +0 -0
  19. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/hooks/post-update.sample +0 -0
  20. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/hooks/pre-applypatch.sample +0 -0
  21. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/hooks/pre-commit.sample +0 -0
  22. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/hooks/pre-merge-commit.sample +0 -0
  23. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/hooks/pre-push.sample +0 -0
  24. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/hooks/pre-rebase.sample +0 -0
  25. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/hooks/pre-receive.sample +0 -0
  26. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/hooks/prepare-commit-msg.sample +0 -0
  27. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/hooks/push-to-checkout.sample +0 -0
  28. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/hooks/update.sample +0 -0
  29. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/index +0 -0
  30. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/info/exclude +0 -0
  31. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/logs/HEAD +0 -0
  32. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/logs/refs/heads/main +0 -0
  33. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/logs/refs/remotes/origin/HEAD +0 -0
  34. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/logs/refs/remotes/origin/main +0 -0
  35. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/01/d5bd8065e6860c0bd23ff9fa57161806a099e1 +0 -0
  36. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/09/08da26de58c114225ad81f484b80bf5d351b34 +0 -0
  37. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/0b/409e1bc918277010f5679b402d1d1dda53e15c +0 -0
  38. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/14/449a0e6ba4ea2f1a73acf63ef91c9c6193f9ed +0 -0
  39. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/15/a8e468aacfcb440e090020f36d0b985d45da23 +0 -0
  40. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/1a/b4585881a6a42889f01aa0cfe25fd5acfaf46f +0 -0
  41. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/1c/3f92adda34344bcbbbf9d409c79855ae2aaea8 +0 -0
  42. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/1d/fe9d9633b24ea560354f4f93d39c6e5f163ea0 +0 -0
  43. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/20/72c28e83f4347959d29f7b3a6c1fc3e4ee6b59 +0 -0
  44. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/24/6b368b986f758630c46dc02b7fa512b53422f7 +0 -0
  45. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/25/b796accd261b9135fd32a2c00785f68edf6c46 +0 -0
  46. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/30/a2f8da47ee947811dc8d993f5a06a45de374f4 +0 -0
  47. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/32/fd627b62fad7cf3b2f9e34ab9777126a0987ad +0 -0
  48. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/36/b4a1b7403abc6c360f8fe2cb656ab945254971 +0 -0
  49. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/36/e56a361f526eafa59c5235a5c990bf288b5f9c +0 -0
  50. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/36/ef43e50009e59db11812c258846d9e38718173 +0 -0
  51. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/39/7ead045fbbcfb17c62019eb18fe21ed05dbee5 +0 -0
  52. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/3b/bd972aa7ad680858f8dfbd0f7fcd97756f0d6f +0 -0
  53. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/3c/bbe5f4173d165127b9ad96119f1ec24c306ffc +0 -0
  54. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/3f/d6561300938afbb3d11976cf9c8f29549280d9 +0 -0
  55. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/41/dcf4b3bf0460946b2da93776cf9e836d62178f +0 -0
  56. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/43/dbd49b2ee367c5434dd545e3b5795434f2ef0b +0 -0
  57. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/48/a88fc5806305d0bb0755ee6801161b79696972 +0 -0
  58. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/4f/7afb40dff2153d857fc85748c2eecb85125042 +0 -0
  59. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/50/08ddfcf53c02e82d7eee2e57c38e5672ef89f6 +0 -0
  60. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/53/e0deb1cb4c2c606bced6e7f9a66b0fda60980d +0 -0
  61. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/56/e4e8b2d5545e0256090f45aa8fc42c5fe067d0 +0 -0
  62. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/57/bd1c0199483ab316235b094543b85edec6c35e +0 -0
  63. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/58/20a729045d4dc7e37ccaf8aa8eec126850afe2 +0 -0
  64. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/5a/192565abf89c9d765af846ce6d53a92b1ce7ad +0 -0
  65. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/60/f273eb1c412d916fa3f11318a7da7a9911b52a +0 -0
  66. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/61/570cec8c061abe74121f27f5face6c69b98f99 +0 -0
  67. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/62/4488173ed2c8936fa5cea3cf5dd3f26a30b86e +0 -0
  68. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/62/7c81b23b4e56e87b042b650b0103653cc9e34a +0 -0
  69. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/62/d90ccf8cbefdc2e4fd475e7c6f4f76e9fdf801 +0 -0
  70. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/63/100154b27846e8010e55b6bf4b3d7762c14c5f +0 -0
  71. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/64/27a4edff08f93d98f511418423f09f2ab90bcd +0 -0
  72. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/68/6df3072c8b025fb18106ed2df505994ad062a9 +0 -0
  73. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/69/13c452ca319f7cbf6a0836dc10a5bb033c84e4 +0 -0
  74. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/6a/52e747a2b349b128d1490d9e896d2323818eb7 +0 -0
  75. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/6b/7fde264d93a7a0986d394c46c7650d0ce2ab92 +0 -0
  76. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/6c/cebb29b7f3f5b0c889f6dadbf9ff066554587d +0 -0
  77. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/6d/ee29dbdcc84edeeacede105110446f3ccac963 +0 -0
  78. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/71/36b2074a2754be8b58127d82250e5b37e3c373 +0 -0
  79. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/78/3d4167bc95c9d2175e0df03ef1c1c880ba75ab +0 -0
  80. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/79/7ae089b2212a937840e215276005ce76881307 +0 -0
  81. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/7e/5956c806b5edc344d46dab599dec337891ba1f +0 -0
  82. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/81/8f26b7bf042269729020cf944fc362d66ba27e +0 -0
  83. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/84/59071b722a255b774a80b27746033f8141ab39 +0 -0
  84. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/87/ef1fc3f7f1ddc4d0ab9b3e65381ce9f3388621 +0 -0
  85. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/8b/84f56978e1de8f2ae82abce5f8b3e182d365cd +0 -0
  86. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/8e/55a7d2b96184030211f20c9b9af201eefcac82 +0 -0
  87. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/91/c69ad88fe0ba94aa7859fb5f7edac5e6f1a3f7 +0 -0
  88. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/94/74152b4b463d70ae5ad07f0c658be3e296026b +0 -0
  89. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/97/1aef09ea939f46b60b9646f8d524c78a9220f4 +0 -0
  90. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/9d/0df52899fe95279059286d9c0ec42287edc168 +0 -0
  91. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/a1/5389729850729fc7bd78a54f26fce77f30be12 +0 -0
  92. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/a4/63fdd23e5efd713db8a71f316f3a1c7bd60916 +0 -0
  93. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/a5/ec8f74642fbba27f7ea78c53b372ae0c7dedce +0 -0
  94. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/a7/3e13eafee65c5b8d73ad2d3ea46d0eee82f0d3 +0 -0
  95. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/b0/56be4be89ba6b76949dd641df45bb7036050c8 +0 -0
  96. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/b0/9cd7856d58590578ee1a4f3ad45d1310a97f87 +0 -0
  97. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/b2/18e6a0f0f1c4df8cdefa9852058348abc713b7 +0 -0
  98. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/b5/61831c7dce8ea51e7ee6b6fa35745f14d8242d +0 -0
  99. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/b7/2c9e75ab7d0afe594664650aa8f6c772f5ac64 +0 -0
  100. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/bb/81ccc0513f18fc160b54a82861e9a80d23f4f6 +0 -0
  101. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/bb/934eb33bc1a8b85630bf680caffd99560c1b8f +0 -0
  102. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/bf/67907e337021ebff434e02b19b30a741c144af +0 -0
  103. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/c1/20fc812b9ad311c34a3608512d6a9d976bb48e +0 -0
  104. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/c4/cba65f1163661999ee4b8ed23342b63bc1300c +0 -0
  105. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/c6/7f17e5707313600efcb85e9a3fedea35dba591 +0 -0
  106. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/c6/f32aced880bd165a251cb52b26b0c1107e2141 +0 -0
  107. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/cd/822b3574a88ebdd1ed82fd6983f37e626d52b4 +0 -0
  108. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/cf/0c0d9c6fb09473aaeb7f7e2edbd770c3f2ef3d +0 -0
  109. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/d6/9ab1c4aadf279936dd778e8346ba60f74705b6 +0 -0
  110. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/d8/4688b54c0040a30976b3a6540bc47adf7ce680 +0 -0
  111. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/d9/005f2cc7fc4e65f14ed5518276007c08cf2fd0 +0 -0
  112. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/d9/c2403fd166ce791b4e9d0c6792ed8342c71fcd +0 -0
  113. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/d9/dfa5aee51e92a541b707e8e7baea6f06deff98 +0 -0
  114. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/db/141dbaa93594df2a8156182f361ee4db829359 +0 -0
  115. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/db/ffa8ea7bda721d0cee7b9e4ce5b2ef927733ff +0 -0
  116. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/dd/87fb5f606fe380d81e6fe3a2c98f9f99e3e09b +0 -0
  117. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/df/e0770424b2a19faf507a501ebfc23be8f54e7b +0 -0
  118. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/e3/1356f90ea6dd0577b5e0b40b206319adcbf085 +0 -0
  119. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/e3/5a4dafc50850cacac7bf76c56db2715cbda2c4 +0 -0
  120. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/e9/391ffe371f1cc43b42ef09b705d9c767c2e14f +0 -0
  121. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/f1/e50757fddc28b445545dc7e2759b54cdd0f42e +0 -0
  122. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/f4/b64d3107b39e3ad6f540c6607004ea34e6c024 +0 -0
  123. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/f7/c98ba5c2f903e603b1f5e63d49fbc8a43815cc +0 -0
  124. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/f9/045a08e96eb76848fc4d68e3e3e687cca39a2d +0 -0
  125. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/fa/147e6bb78a2e8db241d231295fd7f1ed061af8 +0 -0
  126. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/objects/fc/292e793ecfd42240ac43be407023bd731fa9e7 +0 -0
  127. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/refs/heads/main +0 -0
  128. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/refs/remotes/origin/HEAD +0 -0
  129. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.git/refs/remotes/origin/main +0 -0
  130. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.gitattributes +0 -0
  131. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/.gitignore +0 -0
  132. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/LICENSE +0 -0
  133. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/README.md +0 -0
  134. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/__init__.py +0 -0
  135. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/brain_atlas.py +0 -0
  136. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/chat.py +0 -0
  137. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/correlators.py +0 -0
  138. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/data/.DS_Store +0 -0
  139. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/data/db2ls_sql_chtsht.json +0 -0
  140. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/data/docs_links.json +0 -0
  141. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/data/lang_code_iso639.json +0 -0
  142. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/db2ls.py +0 -0
  143. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/doc.py +0 -0
  144. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/freqanalysis.py +0 -0
  145. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/netfinder.py +0 -0
  146. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/setuptools-70.1.0-py3-none-any.whl +0 -0
  147. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/sleep_events_detectors.py +0 -0
  148. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/stats.py +0 -0
  149. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/translator.py +0 -0
  150. {py2ls-0.1.6.2 → py2ls-0.1.6.3}/py2ls/wb_detector.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: py2ls
3
- Version: 0.1.6.2
3
+ Version: 0.1.6.3
4
4
  Summary: py(thon)2(too)ls
5
5
  Author: Jianfeng
6
6
  Author-email: Jianfeng.Liu0413@gmail.com
@@ -2012,350 +2012,6 @@ def imgsets(
2012
2012
  # show_axis=True,
2013
2013
  # )
2014
2014
 
2015
- def figsets(*args,**kwargs):
2016
- """
2017
- usage:
2018
- figsets(ax=axs[1],
2019
- ylim=[0, 10],
2020
- spine=2,
2021
- xticklabel=['wake','sleep'],
2022
- yticksdddd=np.arange(0,316,60),
2023
- labels_loc=['right','top'],
2024
- ticks=dict(
2025
- ax='x',
2026
- which='minor',
2027
- direction='out',
2028
- width=2,
2029
- length=2,
2030
- c_tick='m',
2031
- pad=5,
2032
- label_size=11),
2033
- grid=dict(which='minor',
2034
- ax='x',
2035
- alpha=.4,
2036
- c='b',
2037
- ls='-.',
2038
- lw=0.75,
2039
- ),
2040
- supertitleddddd=f'sleep druations\n(min)',
2041
- c_spine='r',
2042
- minor_ticks='xy',
2043
- style='paper',
2044
- box=['right','bottom'],
2045
- xrot=-45,
2046
- yangle=20,
2047
- font_sz = 2,
2048
- legend=dict(labels=['group_a','group_b'],
2049
- loc='upper left',
2050
- edgecolor='k',
2051
- facecolor='r',
2052
- title='title',
2053
- fancybox=1,
2054
- shadow=1,
2055
- ncols=4,
2056
- bbox_to_anchor=[-0.5,0.7],
2057
- alignment='left')
2058
- )
2059
- """
2060
- fig = plt.gcf()
2061
- fontsize = 11
2062
- fontname = "Arial"
2063
- sns_themes = ["white", "whitegrid", "dark", "darkgrid", "ticks"]
2064
- sns_contexts = ["notebook", "talk", "poster"] # now available "paper"
2065
- scienceplots_styles = ["science","nature",
2066
- "scatter","ieee","no-latex","std-colors","high-vis","bright","dark_background","science",
2067
- "high-vis","vibrant","muted","retro","grid","high-contrast","light","cjk-tc-font","cjk-kr-font",
2068
- ]
2069
- def set_step_1(ax,key, value):
2070
- if ("fo" in key) and (("size" in key) or ("sz" in key)):
2071
- fontsize=value
2072
- plt.rcParams.update({"font.size": value})
2073
- # style
2074
- if "st" in key.lower() or "th" in key.lower():
2075
- if isinstance(value, str):
2076
- if (value in plt.style.available) or (value in scienceplots_styles):
2077
- plt.style.use(value)
2078
- elif value in sns_themes:
2079
- sns.set_style(value)
2080
- elif value in sns_contexts:
2081
- sns.set_context(value)
2082
- else:
2083
- print(
2084
- f"\nWarning\n'{value}' is not a plt.style,select on below:\n{plt.style.available+sns_themes+sns_contexts+scienceplots_styles}"
2085
- )
2086
- if isinstance(value, list):
2087
- for i in value:
2088
- if (i in plt.style.available) or (i in scienceplots_styles):
2089
- plt.style.use(i)
2090
- elif i in sns_themes:
2091
- sns.set_style(i)
2092
- elif i in sns_contexts:
2093
- sns.set_context(i)
2094
- else:
2095
- print(
2096
- f"\nWarning\n'{i}' is not a plt.style,select on below:\n{plt.style.available+sns_themes+sns_contexts+scienceplots_styles}"
2097
- )
2098
- if "la" in key.lower():
2099
- if "loc" in key.lower() or "po" in key.lower():
2100
- for i in value:
2101
- if "l" in i.lower() and not 'g' in i.lower():
2102
- ax.yaxis.set_label_position("left")
2103
- if "r" in i.lower() and not 'o' in i.lower():
2104
- ax.yaxis.set_label_position("right")
2105
- if "t" in i.lower() and not 'l' in i.lower():
2106
- ax.xaxis.set_label_position("top")
2107
- if "b" in i.lower()and not 'o' in i.lower():
2108
- ax.xaxis.set_label_position("bottom")
2109
- if ("x" in key.lower()) and (
2110
- "tic" not in key.lower() and "tk" not in key.lower()
2111
- ):
2112
- ax.set_xlabel(value, fontname=fontname)
2113
- if ("y" in key.lower()) and (
2114
- "tic" not in key.lower() and "tk" not in key.lower()
2115
- ):
2116
- ax.set_ylabel(value, fontname=fontname)
2117
- if ("z" in key.lower()) and (
2118
- "tic" not in key.lower() and "tk" not in key.lower()
2119
- ):
2120
- ax.set_zlabel(value, fontname=fontname)
2121
- if key=='xlabel' and isinstance(value,dict):
2122
- ax.set_xlabel(**value)
2123
- if key=='ylabel' and isinstance(value,dict):
2124
- ax.set_ylabel(**value)
2125
- # tick location
2126
- if "tic" in key.lower() or "tk" in key.lower():
2127
- if ("loc" in key.lower()) or ("po" in key.lower()):
2128
- if isinstance(value,str):
2129
- value=[value]
2130
- if isinstance(value, list):
2131
- loc = []
2132
- for i in value:
2133
- if ("l" in i.lower()) and ("a" not in i.lower()):
2134
- ax.yaxis.set_ticks_position("left")
2135
- if "r" in i.lower():
2136
- ax.yaxis.set_ticks_position("right")
2137
- if "t" in i.lower():
2138
- ax.xaxis.set_ticks_position("top")
2139
- if "b" in i.lower():
2140
- ax.xaxis.set_ticks_position("bottom")
2141
- if i.lower() in ["a", "both", "all", "al", ":"]:
2142
- ax.xaxis.set_ticks_position("both")
2143
- ax.yaxis.set_ticks_position("both")
2144
- if i.lower() in ["xnone",'xoff',"none"]:
2145
- ax.xaxis.set_ticks_position("none")
2146
- if i.lower() in ["ynone",'yoff','none']:
2147
- ax.yaxis.set_ticks_position("none")
2148
- # ticks / labels
2149
- elif "x" in key.lower():
2150
- if value is None:
2151
- value=[]
2152
- if "la" not in key.lower():
2153
- ax.set_xticks(value)
2154
- if "la" in key.lower():
2155
- ax.set_xticklabels(value)
2156
- elif "y" in key.lower():
2157
- if value is None:
2158
- value=[]
2159
- if "la" not in key.lower():
2160
- ax.set_yticks(value)
2161
- if "la" in key.lower():
2162
- ax.set_yticklabels(value)
2163
- elif "z" in key.lower():
2164
- if value is None:
2165
- value=[]
2166
- if "la" not in key.lower():
2167
- ax.set_zticks(value)
2168
- if "la" in key.lower():
2169
- ax.set_zticklabels(value)
2170
- # rotation
2171
- if "angle" in key.lower() or ("rot" in key.lower()):
2172
- if "x" in key.lower():
2173
- if value in [0,90,180,270]:
2174
- ax.tick_params(axis="x", rotation=value)
2175
- for tick in ax.get_xticklabels():
2176
- tick.set_horizontalalignment('center')
2177
- elif value >0:
2178
- ax.tick_params(axis="x", rotation=value)
2179
- for tick in ax.get_xticklabels():
2180
- tick.set_horizontalalignment('right')
2181
- elif value <0:
2182
- ax.tick_params(axis='x', rotation=value)
2183
- for tick in ax.get_xticklabels():
2184
- tick.set_horizontalalignment('left')
2185
- if "y" in key.lower():
2186
- ax.tick_params(axis="y", rotation=value)
2187
- for tick in ax.get_yticklabels():
2188
- tick.set_horizontalalignment('right')
2189
-
2190
- if "bo" in key in key: # box setting, and ("p" in key or "l" in key):
2191
- if isinstance(value, (str, list)):
2192
- locations = []
2193
- for i in value:
2194
- if "l" in i.lower() and not 't' in i.lower():
2195
- locations.append("left")
2196
- if "r" in i.lower()and not 'o' in i.lower(): # right
2197
- locations.append("right")
2198
- if "t" in i.lower() and not 'r' in i.lower(): #top
2199
- locations.append("top")
2200
- if "b" in i.lower() and not 't' in i.lower():
2201
- locations.append("bottom")
2202
- if i.lower() in ["a", "both", "all", "al", ":"]:
2203
- [
2204
- locations.append(x)
2205
- for x in ["left", "right", "top", "bottom"]
2206
- ]
2207
- for i in value:
2208
- if i.lower() in "none":
2209
- locations = []
2210
- # check spines
2211
- for loc, spi in ax.spines.items():
2212
- if loc in locations:
2213
- spi.set_position(("outward", 0))
2214
- else:
2215
- spi.set_color("none") # no spine
2216
- if 'tick' in key.lower(): # tick ticks tick_para ={}
2217
- if isinstance(value, dict):
2218
- for k, val in value.items():
2219
- if "wh" in k.lower():
2220
- ax.tick_params(
2221
- which=val
2222
- ) # {'major', 'minor', 'both'}, default: 'major'
2223
- elif "dir" in k.lower():
2224
- ax.tick_params(direction=val) # {'in', 'out', 'inout'}
2225
- elif "len" in k.lower():# length
2226
- ax.tick_params(length=val)
2227
- elif ("wid" in k.lower()) or ("wd" in k.lower()): # width
2228
- ax.tick_params(width=val)
2229
- elif "ax" in k.lower(): # ax
2230
- ax.tick_params(axis=val) # {'x', 'y', 'both'}, default: 'both'
2231
- elif ("c" in k.lower()) and ("ect" not in k.lower()):
2232
- ax.tick_params(colors=val) # Tick color.
2233
- elif "pad" in k.lower() or 'space' in k.lower():
2234
- ax.tick_params(
2235
- pad=val
2236
- ) # float, distance in points between tick and label
2237
- elif (
2238
- ("lab" in k.lower() or 'text' in k.lower())
2239
- and ("s" in k.lower())
2240
- and ("z" in k.lower())
2241
- ): # label_size
2242
- ax.tick_params(
2243
- labelsize=val
2244
- ) # float, distance in points between tick and label
2245
-
2246
- if "mi" in key.lower() and "tic" in key.lower():# minor_ticks
2247
- if "x" in value.lower() or "x" in key.lower():
2248
- ax.xaxis.set_minor_locator(tck.AutoMinorLocator()) # ax.minorticks_on()
2249
- if "y" in value.lower() or "y" in key.lower():
2250
- ax.yaxis.set_minor_locator(
2251
- tck.AutoMinorLocator()
2252
- ) # ax.minorticks_off()
2253
- if value.lower() in ["both", ":", "all", "a", "b", "on"]:
2254
- ax.minorticks_on()
2255
- if key == "colormap" or key == "cmap":
2256
- plt.set_cmap(value)
2257
- def set_step_2(ax,key, value):
2258
- if key == "figsize":
2259
- pass
2260
- if "xlim" in key.lower():
2261
- ax.set_xlim(value)
2262
- if "ylim" in key.lower():
2263
- ax.set_ylim(value)
2264
- if "zlim" in key.lower():
2265
- ax.set_zlim(value)
2266
- if "sc" in key.lower(): #scale
2267
- if "x" in key.lower():
2268
- ax.set_xscale(value)
2269
- if "y" in key.lower():
2270
- ax.set_yscale(value)
2271
- if "z" in key.lower():
2272
- ax.set_zscale(value)
2273
- if key == "grid":
2274
- if isinstance(value, dict):
2275
- for k, val in value.items():
2276
- if "wh" in k.lower(): # which
2277
- ax.grid(
2278
- which=val
2279
- ) # {'major', 'minor', 'both'}, default: 'major'
2280
- elif "ax" in k.lower(): # ax
2281
- ax.grid(axis=val) # {'x', 'y', 'both'}, default: 'both'
2282
- elif ("c" in k.lower()) and ("ect" not in k.lower()): # c: color
2283
- ax.grid(color=val) # Tick color.
2284
- elif "l" in k.lower() and ("s" in k.lower()):# ls:line stype
2285
- ax.grid(linestyle=val)
2286
- elif "l" in k.lower() and ("w" in k.lower()): # lw: line width
2287
- ax.grid(linewidth=val)
2288
- elif "al" in k.lower():# alpha:
2289
- ax.grid(alpha=val)
2290
- else:
2291
- if value == "on" or value is True:
2292
- ax.grid(visible=True)
2293
- elif value == "off" or value is False:
2294
- ax.grid(visible=False)
2295
- if "tit" in key.lower():
2296
- if "sup" in key.lower():
2297
- plt.suptitle(value)
2298
- else:
2299
- ax.set_title(value)
2300
- if key.lower() in ["spine", "adjust", "ad", "sp", "spi", "adj","spines"]:
2301
- if isinstance(value, bool) or (value in ["go", "do", "ja", "yes"]):
2302
- if value:
2303
- adjust_spines(ax) # dafault distance=2
2304
- if isinstance(value, (float, int)):
2305
- adjust_spines(ax=ax, distance=value)
2306
- if "c" in key.lower() and ("sp" in key.lower() or "ax" in key.lower()):# spine color
2307
- for loc, spi in ax.spines.items():
2308
- spi.set_color(value)
2309
- if 'leg' in key.lower(): # legend
2310
- legend_kws = kwargs.get('legend', None)
2311
- if legend_kws:
2312
- # https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.legend.html
2313
- ax.legend(**legend_kws)
2314
-
2315
- for arg in args:
2316
- if isinstance(arg,matplotlib.axes._axes.Axes):
2317
- ax=arg
2318
- args=args[1:]
2319
- ax = kwargs.get('ax',plt.gca())
2320
- if 'ax' not in locals() or ax is None:
2321
- ax=plt.gca()
2322
- for key, value in kwargs.items():
2323
- set_step_1(ax, key, value)
2324
- set_step_2(ax, key, value)
2325
- for arg in args:
2326
- if isinstance(arg, dict):
2327
- for k, val in arg.items():
2328
- set_step_1(ax,k, val)
2329
- for k, val in arg.items():
2330
- set_step_2(ax,k, val)
2331
- else:
2332
- Nargin = len(args) // 2
2333
- ax.labelFontSizeMultiplier = 1
2334
- ax.titleFontSizeMultiplier = 1
2335
- ax.set_facecolor("w")
2336
-
2337
- for ip in range(Nargin):
2338
- key = args[ip * 2].lower()
2339
- value = args[ip * 2 + 1]
2340
- set_step_1(ax,key, value)
2341
- for ip in range(Nargin):
2342
- key = args[ip * 2].lower()
2343
- value = args[ip * 2 + 1]
2344
- set_step_2(ax,key, value)
2345
- colors = [
2346
- "#474747",
2347
- "#FF2C00",
2348
- "#0C5DA5",
2349
- "#845B97",
2350
- "#58BBCC",
2351
- "#FF9500",
2352
- "#D57DBE",
2353
- ]
2354
- matplotlib.rcParams["axes.prop_cycle"] = cycler(color=colors)
2355
- if len(fig.get_axes()) > 1:
2356
- plt.tight_layout()
2357
- plt.gcf().align_labels()
2358
-
2359
2015
 
2360
2016
  def thumbnail(dir_img_list,figsize=(10,10),dpi=100, dir_save=None, kind='.png'):
2361
2017
  """