py2ls 0.1.9.3__tar.gz → 0.1.9.4__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 (179) hide show
  1. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/PKG-INFO +1 -1
  2. py2ls-0.1.9.4/py2ls/.git/COMMIT_EDITMSG +1 -0
  3. py2ls-0.1.9.4/py2ls/.git/FETCH_HEAD +1 -0
  4. py2ls-0.1.9.4/py2ls/.git/index +0 -0
  5. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/logs/HEAD +1 -0
  6. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/logs/refs/heads/main +1 -0
  7. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/logs/refs/remotes/origin/HEAD +2 -0
  8. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/logs/refs/remotes/origin/main +1 -0
  9. py2ls-0.1.9.4/py2ls/.git/objects/12/c2808a1b3a4d0892a4154dfba1e2ae3770fa73 +0 -0
  10. py2ls-0.1.9.4/py2ls/.git/objects/1c/9314c5f69b9390068a2a8616875d974849d71f +0 -0
  11. py2ls-0.1.9.4/py2ls/.git/objects/2a/ae95d517d213b660bf4f65a4e0cfae7bb893eb +0 -0
  12. py2ls-0.1.9.4/py2ls/.git/objects/34/9e31b6a3634cea102ce5588b98c11cc1738605 +0 -0
  13. py2ls-0.1.9.4/py2ls/.git/objects/45/b1b6178bacbfc997811a998b5cc60c1ea7fac8 +0 -0
  14. py2ls-0.1.9.4/py2ls/.git/objects/57/63d0c52f5c9c69e89d514a1f96034947abe21a +0 -0
  15. py2ls-0.1.9.4/py2ls/.git/objects/59/380c4c26bdcd4d9b71ae3e2e35f05b3f26c5ab +0 -0
  16. py2ls-0.1.9.4/py2ls/.git/objects/66/6227eeeba24073e63811e89f1449f3d958f183 +0 -0
  17. py2ls-0.1.9.4/py2ls/.git/objects/66/c998778721d424bd0aae80602dabbffa93af2e +0 -0
  18. py2ls-0.1.9.4/py2ls/.git/objects/6d/c2cdf4a84e538e5d4777486aeff87e42f41799 +2 -0
  19. py2ls-0.1.9.4/py2ls/.git/objects/72/245a05b0966011cb381e6b32b0465000e969ab +0 -0
  20. py2ls-0.1.9.4/py2ls/.git/objects/72/e4179337639859678ddaecf38b16f33aaec8e1 +0 -0
  21. py2ls-0.1.9.4/py2ls/.git/objects/a1/906da89d1174f74867800c74c43af36253bd5e +0 -0
  22. py2ls-0.1.9.4/py2ls/.git/objects/d2/992df305f4b56a466a2f221aeb182ddd20f418 +0 -0
  23. py2ls-0.1.9.4/py2ls/.git/objects/dc/c2bdbafb3296e09d9ee4955cfa55d275825f94 +5 -0
  24. py2ls-0.1.9.4/py2ls/.git/objects/dc/cdbd4266765d840be2ae35ab1752a0fa312c16 +0 -0
  25. py2ls-0.1.9.4/py2ls/.git/objects/e2/f2f8f4c25e62a297fc55f36acc6b01cfbab76f +3 -0
  26. py2ls-0.1.9.4/py2ls/.git/objects/ea/3a18cc75e53792744ef754e05d3f4481768c13 +0 -0
  27. py2ls-0.1.9.4/py2ls/.git/objects/ec/40fd8bf8e4c342534a9fc020289e402ba6bc9d +0 -0
  28. py2ls-0.1.9.4/py2ls/.git/objects/f4/ba7f815b886797b73fede071d86e0c134d2bc7 +0 -0
  29. py2ls-0.1.9.4/py2ls/.git/objects/f6/44a8ff56fa035105fc517cbb1ac46c3d8e349a +0 -0
  30. py2ls-0.1.9.4/py2ls/.git/refs/heads/main +1 -0
  31. py2ls-0.1.9.4/py2ls/.git/refs/remotes/origin/main +1 -0
  32. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/netfinder.py +0 -8
  33. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/plot.py +172 -96
  34. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/stats.py +67 -47
  35. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/pyproject.toml +1 -1
  36. py2ls-0.1.9.3/py2ls/.git/COMMIT_EDITMSG +0 -1
  37. py2ls-0.1.9.3/py2ls/.git/FETCH_HEAD +0 -1
  38. py2ls-0.1.9.3/py2ls/.git/index +0 -0
  39. py2ls-0.1.9.3/py2ls/.git/refs/heads/main +0 -1
  40. py2ls-0.1.9.3/py2ls/.git/refs/remotes/origin/main +0 -1
  41. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/README.md +0 -0
  42. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.DS_Store +0 -0
  43. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/HEAD +0 -0
  44. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/config +0 -0
  45. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/description +0 -0
  46. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/hooks/applypatch-msg.sample +0 -0
  47. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/hooks/commit-msg.sample +0 -0
  48. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/hooks/fsmonitor-watchman.sample +0 -0
  49. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/hooks/post-update.sample +0 -0
  50. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/hooks/pre-applypatch.sample +0 -0
  51. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/hooks/pre-commit.sample +0 -0
  52. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/hooks/pre-merge-commit.sample +0 -0
  53. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/hooks/pre-push.sample +0 -0
  54. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/hooks/pre-rebase.sample +0 -0
  55. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/hooks/pre-receive.sample +0 -0
  56. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/hooks/prepare-commit-msg.sample +0 -0
  57. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/hooks/push-to-checkout.sample +0 -0
  58. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/hooks/update.sample +0 -0
  59. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/info/exclude +0 -0
  60. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/01/d5bd8065e6860c0bd23ff9fa57161806a099e1 +0 -0
  61. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/09/08da26de58c114225ad81f484b80bf5d351b34 +0 -0
  62. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/0b/409e1bc918277010f5679b402d1d1dda53e15c +0 -0
  63. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/14/449a0e6ba4ea2f1a73acf63ef91c9c6193f9ed +0 -0
  64. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/15/a8e468aacfcb440e090020f36d0b985d45da23 +0 -0
  65. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/1a/b4585881a6a42889f01aa0cfe25fd5acfaf46f +0 -0
  66. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/1c/3f92adda34344bcbbbf9d409c79855ae2aaea8 +0 -0
  67. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/1d/fe9d9633b24ea560354f4f93d39c6e5f163ea0 +0 -0
  68. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/20/72c28e83f4347959d29f7b3a6c1fc3e4ee6b59 +0 -0
  69. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/24/6b368b986f758630c46dc02b7fa512b53422f7 +0 -0
  70. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/25/b796accd261b9135fd32a2c00785f68edf6c46 +0 -0
  71. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/30/a2f8da47ee947811dc8d993f5a06a45de374f4 +0 -0
  72. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/32/fd627b62fad7cf3b2f9e34ab9777126a0987ad +0 -0
  73. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/36/b4a1b7403abc6c360f8fe2cb656ab945254971 +0 -0
  74. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/36/e56a361f526eafa59c5235a5c990bf288b5f9c +0 -0
  75. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/36/ef43e50009e59db11812c258846d9e38718173 +0 -0
  76. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/39/7ead045fbbcfb17c62019eb18fe21ed05dbee5 +0 -0
  77. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/3b/bd972aa7ad680858f8dfbd0f7fcd97756f0d6f +0 -0
  78. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/3c/bbe5f4173d165127b9ad96119f1ec24c306ffc +0 -0
  79. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/3f/d6561300938afbb3d11976cf9c8f29549280d9 +0 -0
  80. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/41/dcf4b3bf0460946b2da93776cf9e836d62178f +0 -0
  81. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/43/dbd49b2ee367c5434dd545e3b5795434f2ef0b +0 -0
  82. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/48/a88fc5806305d0bb0755ee6801161b79696972 +0 -0
  83. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/4f/7afb40dff2153d857fc85748c2eecb85125042 +0 -0
  84. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/50/08ddfcf53c02e82d7eee2e57c38e5672ef89f6 +0 -0
  85. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/53/e0deb1cb4c2c606bced6e7f9a66b0fda60980d +0 -0
  86. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/56/e4e8b2d5545e0256090f45aa8fc42c5fe067d0 +0 -0
  87. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/57/bd1c0199483ab316235b094543b85edec6c35e +0 -0
  88. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/58/20a729045d4dc7e37ccaf8aa8eec126850afe2 +0 -0
  89. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/5a/192565abf89c9d765af846ce6d53a92b1ce7ad +0 -0
  90. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/60/f273eb1c412d916fa3f11318a7da7a9911b52a +0 -0
  91. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/61/570cec8c061abe74121f27f5face6c69b98f99 +0 -0
  92. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/62/4488173ed2c8936fa5cea3cf5dd3f26a30b86e +0 -0
  93. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/62/7c81b23b4e56e87b042b650b0103653cc9e34a +0 -0
  94. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/62/d90ccf8cbefdc2e4fd475e7c6f4f76e9fdf801 +0 -0
  95. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/63/100154b27846e8010e55b6bf4b3d7762c14c5f +0 -0
  96. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/64/27a4edff08f93d98f511418423f09f2ab90bcd +0 -0
  97. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/68/6df3072c8b025fb18106ed2df505994ad062a9 +0 -0
  98. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/69/13c452ca319f7cbf6a0836dc10a5bb033c84e4 +0 -0
  99. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/6a/52e747a2b349b128d1490d9e896d2323818eb7 +0 -0
  100. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/6b/7fde264d93a7a0986d394c46c7650d0ce2ab92 +0 -0
  101. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/6c/cebb29b7f3f5b0c889f6dadbf9ff066554587d +0 -0
  102. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/6d/ee29dbdcc84edeeacede105110446f3ccac963 +0 -0
  103. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/71/36b2074a2754be8b58127d82250e5b37e3c373 +0 -0
  104. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/78/3d4167bc95c9d2175e0df03ef1c1c880ba75ab +0 -0
  105. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/79/7ae089b2212a937840e215276005ce76881307 +0 -0
  106. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/7e/5956c806b5edc344d46dab599dec337891ba1f +0 -0
  107. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/81/8f26b7bf042269729020cf944fc362d66ba27e +0 -0
  108. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/84/59071b722a255b774a80b27746033f8141ab39 +0 -0
  109. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/87/ef1fc3f7f1ddc4d0ab9b3e65381ce9f3388621 +0 -0
  110. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/8b/84f56978e1de8f2ae82abce5f8b3e182d365cd +0 -0
  111. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/8e/55a7d2b96184030211f20c9b9af201eefcac82 +0 -0
  112. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/91/c69ad88fe0ba94aa7859fb5f7edac5e6f1a3f7 +0 -0
  113. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/94/74152b4b463d70ae5ad07f0c658be3e296026b +0 -0
  114. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/97/1aef09ea939f46b60b9646f8d524c78a9220f4 +0 -0
  115. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/9d/0df52899fe95279059286d9c0ec42287edc168 +0 -0
  116. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/a1/5389729850729fc7bd78a54f26fce77f30be12 +0 -0
  117. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/a4/63fdd23e5efd713db8a71f316f3a1c7bd60916 +0 -0
  118. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/a5/ec8f74642fbba27f7ea78c53b372ae0c7dedce +0 -0
  119. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/a7/3e13eafee65c5b8d73ad2d3ea46d0eee82f0d3 +0 -0
  120. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/b0/56be4be89ba6b76949dd641df45bb7036050c8 +0 -0
  121. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/b0/9cd7856d58590578ee1a4f3ad45d1310a97f87 +0 -0
  122. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/b2/18e6a0f0f1c4df8cdefa9852058348abc713b7 +0 -0
  123. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/b5/61831c7dce8ea51e7ee6b6fa35745f14d8242d +0 -0
  124. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/b7/2c9e75ab7d0afe594664650aa8f6c772f5ac64 +0 -0
  125. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/bb/81ccc0513f18fc160b54a82861e9a80d23f4f6 +0 -0
  126. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/bb/934eb33bc1a8b85630bf680caffd99560c1b8f +0 -0
  127. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/bf/67907e337021ebff434e02b19b30a741c144af +0 -0
  128. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/c1/20fc812b9ad311c34a3608512d6a9d976bb48e +0 -0
  129. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/c4/cba65f1163661999ee4b8ed23342b63bc1300c +0 -0
  130. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/c6/7f17e5707313600efcb85e9a3fedea35dba591 +0 -0
  131. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/c6/f32aced880bd165a251cb52b26b0c1107e2141 +0 -0
  132. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/cd/822b3574a88ebdd1ed82fd6983f37e626d52b4 +0 -0
  133. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/cf/0c0d9c6fb09473aaeb7f7e2edbd770c3f2ef3d +0 -0
  134. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/d6/9ab1c4aadf279936dd778e8346ba60f74705b6 +0 -0
  135. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/d8/4688b54c0040a30976b3a6540bc47adf7ce680 +0 -0
  136. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/d9/005f2cc7fc4e65f14ed5518276007c08cf2fd0 +0 -0
  137. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/d9/c2403fd166ce791b4e9d0c6792ed8342c71fcd +0 -0
  138. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/d9/dfa5aee51e92a541b707e8e7baea6f06deff98 +0 -0
  139. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/db/141dbaa93594df2a8156182f361ee4db829359 +0 -0
  140. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/db/ffa8ea7bda721d0cee7b9e4ce5b2ef927733ff +0 -0
  141. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/dd/87fb5f606fe380d81e6fe3a2c98f9f99e3e09b +0 -0
  142. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/df/e0770424b2a19faf507a501ebfc23be8f54e7b +0 -0
  143. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/e3/1356f90ea6dd0577b5e0b40b206319adcbf085 +0 -0
  144. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/e3/5a4dafc50850cacac7bf76c56db2715cbda2c4 +0 -0
  145. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/e9/391ffe371f1cc43b42ef09b705d9c767c2e14f +0 -0
  146. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/f1/e50757fddc28b445545dc7e2759b54cdd0f42e +0 -0
  147. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/f4/b64d3107b39e3ad6f540c6607004ea34e6c024 +0 -0
  148. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/f7/c98ba5c2f903e603b1f5e63d49fbc8a43815cc +0 -0
  149. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/f9/045a08e96eb76848fc4d68e3e3e687cca39a2d +0 -0
  150. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/fa/147e6bb78a2e8db241d231295fd7f1ed061af8 +0 -0
  151. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/fc/292e793ecfd42240ac43be407023bd731fa9e7 +0 -0
  152. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/refs/remotes/origin/HEAD +0 -0
  153. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.gitattributes +0 -0
  154. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.gitignore +0 -0
  155. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/LICENSE +0 -0
  156. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/README.md +0 -0
  157. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/__init__.py +0 -0
  158. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/brain_atlas.py +0 -0
  159. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/chat.py +0 -0
  160. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/correlators.py +0 -0
  161. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/data/.DS_Store +0 -0
  162. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/data/db2ls_sql_chtsht.json +0 -0
  163. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/data/docs_links.json +0 -0
  164. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/data/lang_code_iso639.json +0 -0
  165. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/data/styles/style1.json +0 -0
  166. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/data/styles/style2.json +0 -0
  167. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/data/styles/style3.json +0 -0
  168. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/data/styles/style4.json +0 -0
  169. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/data/styles/style5.json +0 -0
  170. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/data/styles/style6.json +0 -0
  171. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/db2ls.py +0 -0
  172. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/doc.py +0 -0
  173. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/export_requirements.py +0 -0
  174. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/freqanalysis.py +0 -0
  175. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/ips.py +0 -0
  176. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/setuptools-70.1.0-py3-none-any.whl +0 -0
  177. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/sleep_events_detectors.py +0 -0
  178. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/translator.py +0 -0
  179. {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/wb_detector.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: py2ls
3
- Version: 0.1.9.3
3
+ Version: 0.1.9.4
4
4
  Summary: py(thon)2(too)ls
5
5
  Author: Jianfeng
6
6
  Author-email: Jianfeng.Liu0413@gmail.com
@@ -0,0 +1 @@
1
+ update
@@ -0,0 +1 @@
1
+ 6dc2cdf4a84e538e5d4777486aeff87e42f41799 branch 'main' of https://github.com/Jianfengliu0413/py2ls
Binary file
@@ -18,3 +18,4 @@ d84688b54c0040a30976b3a6540bc47adf7ce680 32fd627b62fad7cf3b2f9e34ab9777126a0987a
18
18
  32fd627b62fad7cf3b2f9e34ab9777126a0987ad 1c3f92adda34344bcbbbf9d409c79855ae2aaea8 Jianfeng <Jianfeng.Liu0413@gmail.com> 1720709655 +0200 commit: Delete dbhandler.py
19
19
  1c3f92adda34344bcbbbf9d409c79855ae2aaea8 bf67907e337021ebff434e02b19b30a741c144af Jianfeng <Jianfeng.Liu0413@gmail.com> 1720948339 +0200 commit: update
20
20
  bf67907e337021ebff434e02b19b30a741c144af a15389729850729fc7bd78a54f26fce77f30be12 Jianfeng <Jianfeng.Liu0413@gmail.com> 1721137352 +0200 commit: update ips
21
+ a15389729850729fc7bd78a54f26fce77f30be12 6dc2cdf4a84e538e5d4777486aeff87e42f41799 Jianfeng <Jianfeng.Liu0413@gmail.com> 1723527985 +0200 commit: update
@@ -18,3 +18,4 @@ d84688b54c0040a30976b3a6540bc47adf7ce680 32fd627b62fad7cf3b2f9e34ab9777126a0987a
18
18
  32fd627b62fad7cf3b2f9e34ab9777126a0987ad 1c3f92adda34344bcbbbf9d409c79855ae2aaea8 Jianfeng <Jianfeng.Liu0413@gmail.com> 1720709655 +0200 commit: Delete dbhandler.py
19
19
  1c3f92adda34344bcbbbf9d409c79855ae2aaea8 bf67907e337021ebff434e02b19b30a741c144af Jianfeng <Jianfeng.Liu0413@gmail.com> 1720948339 +0200 commit: update
20
20
  bf67907e337021ebff434e02b19b30a741c144af a15389729850729fc7bd78a54f26fce77f30be12 Jianfeng <Jianfeng.Liu0413@gmail.com> 1721137352 +0200 commit: update ips
21
+ a15389729850729fc7bd78a54f26fce77f30be12 6dc2cdf4a84e538e5d4777486aeff87e42f41799 Jianfeng <Jianfeng.Liu0413@gmail.com> 1723527985 +0200 commit: update
@@ -135,3 +135,5 @@ a15389729850729fc7bd78a54f26fce77f30be12 a15389729850729fc7bd78a54f26fce77f30be1
135
135
  a15389729850729fc7bd78a54f26fce77f30be12 a15389729850729fc7bd78a54f26fce77f30be12 Jianfeng Liu <macjianfeng@JFLMBP.cin.medizin.uni-tuebingen.de> 1721322143 +0200 remote set-head
136
136
  a15389729850729fc7bd78a54f26fce77f30be12 a15389729850729fc7bd78a54f26fce77f30be12 Jianfeng Liu <macjianfeng@JFLMBP.cin.medizin.uni-tuebingen.de> 1721324108 +0200 remote set-head
137
137
  a15389729850729fc7bd78a54f26fce77f30be12 a15389729850729fc7bd78a54f26fce77f30be12 Jianfeng Liu <macjianfeng@JFLMBP.cin.medizin.uni-tuebingen.de> 1721326072 +0200 remote set-head
138
+ a15389729850729fc7bd78a54f26fce77f30be12 a15389729850729fc7bd78a54f26fce77f30be12 Jianfeng Liu <macjianfeng@jflmbp.speedport.ip> 1723527981 +0200 remote set-head
139
+ 6dc2cdf4a84e538e5d4777486aeff87e42f41799 6dc2cdf4a84e538e5d4777486aeff87e42f41799 Jianfeng Liu <macjianfeng@jflmbp.speedport.ip> 1723527990 +0200 remote set-head
@@ -17,3 +17,4 @@ d84688b54c0040a30976b3a6540bc47adf7ce680 32fd627b62fad7cf3b2f9e34ab9777126a0987a
17
17
  32fd627b62fad7cf3b2f9e34ab9777126a0987ad 1c3f92adda34344bcbbbf9d409c79855ae2aaea8 Jianfeng <Jianfeng.Liu0413@gmail.com> 1720709657 +0200 update by push
18
18
  1c3f92adda34344bcbbbf9d409c79855ae2aaea8 bf67907e337021ebff434e02b19b30a741c144af Jianfeng <Jianfeng.Liu0413@gmail.com> 1720948342 +0200 update by push
19
19
  bf67907e337021ebff434e02b19b30a741c144af a15389729850729fc7bd78a54f26fce77f30be12 Jianfeng <Jianfeng.Liu0413@gmail.com> 1721137354 +0200 update by push
20
+ a15389729850729fc7bd78a54f26fce77f30be12 6dc2cdf4a84e538e5d4777486aeff87e42f41799 Jianfeng <Jianfeng.Liu0413@gmail.com> 1723527989 +0200 update by push
@@ -0,0 +1,2 @@
1
+ x��M
2
+ � F��� AǟQ(���KLtL���`�_7�@7��x|ik�v /�`���*9(.��#�����K���h�fMb���.I;"B N�- 猁�-�Kb�b������Yi-�.����UOe�y,��gJ[�K�`��ʫ�İ�f���3u_ �FS
@@ -0,0 +1,5 @@
1
+ x�VQo�6 �s~ᢐ��Ρ�^�y����ð= ��pl:QkK�$7���������Ö�ؔD�#�}��;���dg���ݪ������e�0ڧ��������B�&��ժ������wqcJȣ���[we� Kՠگ�����z/��߭͋?hEw�[G)9�ھ�|S�F�-+m���/����K)4����
2
+ ��=*�J`Η���iA#[ZW5TZ=!����~��� �hPը*�.[�
3
+ +(4Jv�}�d�:N�K2�trB�9�J��J�����Y?���|#��d*=v@�B�w�@��'���Y82��x��̄�d�lE�ݼ����"i��z�ַ��Q
4
+ ���<"�������@��|±�?��.��R��m�.m�ax���l�M�QEC9��Sܐŧ"~��9E�iTe�!窷��S�':fJ�d^���?n����:f"L݂{4M��o��/^�!�2B
5
+ �?�짲m��0�{k��D��)�D԰��Ю���t�K��# �v�8g ��WA~�m��r�ڰ��1i�E���<nd����}���Ae��W�#�Iǩ�b
@@ -0,0 +1,3 @@
1
+ xe��
2
+ �0 D;�+�
3
+ �� ����Y����@���x�q7�q{�/)���J�2be��uT[����d������<0~��I{���L�#�.�Z�8��<V�y�������:k
@@ -0,0 +1 @@
1
+ 6dc2cdf4a84e538e5d4777486aeff87e42f41799
@@ -0,0 +1 @@
1
+ 6dc2cdf4a84e538e5d4777486aeff87e42f41799
@@ -126,10 +126,8 @@ def extract_text_from_content(
126
126
  search_kwargs["class"] = what
127
127
  if "attrs" in kwargs:
128
128
  result_set = content.find_all(where, **search_kwargs)
129
- print(f"attrs =>{search_kwargs}")
130
129
  else:
131
130
  result_set = content.find_all(where, attrs=dict(**search_kwargs))
132
- print(f"{search_kwargs}")
133
131
 
134
132
  if not result_set:
135
133
  print("Failed: check the 'attrs' setting: attrs={'id':'xample'}")
@@ -594,7 +592,6 @@ def downloader(
594
592
  kind[i] = "." + kind[i]
595
593
  file_links_all = []
596
594
  for kind_ in kind:
597
- print(kind_)
598
595
  if isinstance(contains, str):
599
596
  contains = [contains]
600
597
  if isinstance(url, str):
@@ -709,7 +706,6 @@ def find_img(url, driver="request", dir_save="images", rm_folder=False, verbose=
709
706
  if rm_folder:
710
707
  ips.rm_folder(dir_save)
711
708
  content_type, content = fetch_all(url, driver=driver)
712
- print(content_type)
713
709
  if "html" in content_type.lower():
714
710
  # Create the directory if it doesn't exist
715
711
  os.makedirs(dir_save, exist_ok=True)
@@ -913,7 +909,6 @@ def fetch(
913
909
  output="text",
914
910
  **kws,
915
911
  ):
916
- print(f"output is {output}")
917
912
  if "xt" in output.lower():
918
913
  for attempt in range(retry):
919
914
  if verbose and attempt == 0:
@@ -973,7 +968,6 @@ def fetch(
973
968
  try:
974
969
  content_type, content = fetch_all(url, parser="html.parser", driver=driver)
975
970
  search_kwargs = {**kws}
976
- print(search_kwargs)
977
971
  if "class_" in search_kwargs:
978
972
  search_kwargs["class"] = search_kwargs["class_"]
979
973
  del search_kwargs["class_"]
@@ -981,10 +975,8 @@ def fetch(
981
975
  search_kwargs["class"] = what
982
976
  if "attrs" in kws:
983
977
  result_set = content.find_all(where, **search_kwargs)
984
- print(f"attrs =>{search_kwargs}")
985
978
  else:
986
979
  result_set = content.find_all(where, attrs=dict(**search_kwargs))
987
- print(f"{search_kwargs}")
988
980
  return result_set
989
981
  except:
990
982
  print("got nothing")
@@ -468,11 +468,11 @@ def catplot(data, *args, **kwargs):
468
468
  # full_order = sort_catplot_layers(custom_order)
469
469
 
470
470
  ax = kwargs.get("ax", None)
471
- if "ax" not in locals() or ax is None:
472
- ax = plt.gca()
473
471
  col = kwargs.get("col", None)
474
472
  if not col:
475
- # figsets
473
+ if "ax" not in locals() or ax is None:
474
+ ax = plt.gca()
475
+
476
476
  kw_figsets = kwargs.get("figsets", None)
477
477
  # check the data type
478
478
  if isinstance(data, pd.DataFrame):
@@ -481,6 +481,7 @@ def catplot(data, *args, **kwargs):
481
481
  y = kwargs.get("y", None)
482
482
  hue = kwargs.get("hue", None)
483
483
  data = df2array(data=data, x=x, y=y, hue=hue)
484
+ y_max_loc = np.max(data, axis=0)
484
485
  xticklabels = []
485
486
  if hue is not None:
486
487
  # for i in df[x].unique().tolist():
@@ -511,21 +512,16 @@ def catplot(data, *args, **kwargs):
511
512
  data=df[df[x] == i], dv=y, factor=hue, **stats_param
512
513
  )
513
514
  elif bool(stats_param):
514
- res_tmp = FuncMultiCmpt(data=df, dv=y, factor=hue)
515
+ res_tmp = FuncMultiCmpt(
516
+ data=df[df[x] == i], dv=y, factor=hue
517
+ )
515
518
  else:
516
519
  res_tmp = "did not work properly"
517
520
  display_output(res_tmp)
518
- xloc_curr = hue_len * (ihue - 1)
519
- # add_asterisks(ax,res_tmp,xticks[xloc_curr:xloc_curr+hue_len],legend_hue)
520
- # res_tmp = [{"x": i, **res_tmp}]
521
- # print("here")
522
- # df_=pd.DataFrame([res_tmp])
523
- # display(df_['pval'][0].tolist()[0])
524
521
  res = pd.concat(
525
- [res, pd.DataFrame([res_tmp])], ignore_index=True
522
+ [res, pd.DataFrame([res_tmp])], ignore_index=True, axis=0
526
523
  )
527
524
  ihue += 1
528
- display_output(res)
529
525
 
530
526
  else:
531
527
  # ! stats info
@@ -540,9 +536,22 @@ def catplot(data, *args, **kwargs):
540
536
  res = None
541
537
  if x and stats_param:
542
538
  if isinstance(stats_param, dict):
543
- res = FuncMultiCmpt(data=df, dv=y, factor=x, **stats_param)
539
+ if len(xticklabels) > 2:
540
+ res = FuncMultiCmpt(data=df, dv=y, factor=x, **stats_param)
541
+ else:
542
+ res = FuncCmpt(
543
+ x1=df.loc[df[x] == xticklabels[0], y].tolist(),
544
+ x2=df.loc[df[x] == xticklabels[1], y].tolist(),
545
+ **stats_param,
546
+ )
544
547
  elif bool(stats_param):
545
- res = FuncMultiCmpt(data=df, dv=y, factor=x)
548
+ if len(xticklabels) > 2:
549
+ res = FuncMultiCmpt(data=df, dv=y, factor=x)
550
+ else:
551
+ res = FuncCmpt(
552
+ x1=df.loc[df[x] == xticklabels[0], y].tolist(),
553
+ x2=df.loc[df[x] == xticklabels[1], y].tolist(),
554
+ )
546
555
  else:
547
556
  res = "did not work properly"
548
557
  display_output(res)
@@ -567,11 +576,28 @@ def catplot(data, *args, **kwargs):
567
576
  "xangle": xangle,
568
577
  }
569
578
  else:
570
- xticks = np.arange(1, data.shape[1] + 1).tolist()
579
+ if isinstance(data, np.ndarray):
580
+ df = array2df(data)
581
+ x = "group"
582
+ y = "value"
583
+ xticklabels = []
584
+ stats_param = kwargs.get("stats", False)
585
+ for i in df[x].unique().tolist():
586
+ xticklabels.append(i)
587
+ xticks = np.arange(1, len(xticklabels) + 1).tolist()
588
+ xticks_x_loc = np.arange(1, len(xticklabels) + 1).tolist()
589
+ legend_hue = xticklabels
590
+ default_colors = get_color(len(xticklabels))
571
591
  default_x_width = 0.5
572
- default_colors = get_color(len(xticks))
573
- legend_hue = None
574
- xangle = 0
592
+ res = None
593
+ if x and stats_param:
594
+ if isinstance(stats_param, dict):
595
+ res = FuncMultiCmpt(data=df, dv=y, factor=x, **stats_param)
596
+ elif bool(stats_param):
597
+ res = FuncMultiCmpt(data=df, dv=y, factor=x)
598
+ else:
599
+ res = "did not work properly"
600
+ display_output(res)
575
601
 
576
602
  # full_order
577
603
  opt = kwargs.get("opt", {})
@@ -592,12 +618,12 @@ def catplot(data, *args, **kwargs):
592
618
  except:
593
619
  print(f"cannot find the style'{style_name}'")
594
620
 
595
- opt.setdefault("c", default_colors)
596
- # if len(opt["c"]) < data.shape[1]:
597
- # additional_colors = plt.cm.winter(
598
- # np.linspace(0, 1, data.shape[1] - len(opt["c"]))
599
- # )
600
- # opt["c"] = np.vstack([opt["c"], additional_colors[:, :3]])
621
+ color_custom = kwargs.get("c", default_colors)
622
+ if not isinstance(color_custom, list):
623
+ color_custom = list(color_custom)
624
+ # if len(color_custom) < data.shape[1]:
625
+ # color_custom.extend(get_color(data.shape[1]-len(color_custom),cmap='tab20'))
626
+ opt.setdefault("c", color_custom)
601
627
 
602
628
  opt.setdefault("loc", {})
603
629
  opt["loc"].setdefault("go", 0)
@@ -606,15 +632,12 @@ def catplot(data, *args, **kwargs):
606
632
  # export setting
607
633
  opt.setdefault("style", {})
608
634
  opt["style"].setdefault("export", None)
609
- print(opt["style"])
610
-
611
- # opt.setdefault('layer', {})
612
635
  opt.setdefault("layer", ["b", "bx", "e", "v", "s", "l"])
613
636
 
614
637
  opt.setdefault("b", {})
615
638
  opt["b"].setdefault("go", 1)
616
639
  opt["b"].setdefault("loc", "c")
617
- opt["b"].setdefault("FaceColor", opt["c"])
640
+ opt["b"].setdefault("FaceColor", color_custom)
618
641
  opt["b"].setdefault("FaceAlpha", 1)
619
642
  opt["b"].setdefault("EdgeColor", "k")
620
643
  opt["b"].setdefault("EdgeAlpha", 1)
@@ -635,7 +658,7 @@ def catplot(data, *args, **kwargs):
635
658
  opt["e"].setdefault("LineColor", "k")
636
659
  opt["e"].setdefault("LineJoin", "round")
637
660
  opt["e"].setdefault("MarkerSize", "auto")
638
- opt["e"].setdefault("FaceColor", opt["c"])
661
+ opt["e"].setdefault("FaceColor", color_custom)
639
662
  opt["e"].setdefault("MarkerEdgeColor", "none")
640
663
  opt["e"].setdefault("Visible", True)
641
664
  opt["e"].setdefault("Orientation", "vertical")
@@ -665,7 +688,7 @@ def catplot(data, *args, **kwargs):
665
688
  opt.setdefault("bx", {})
666
689
  opt["bx"].setdefault("go", 0)
667
690
  opt["bx"].setdefault("loc", "r")
668
- opt["bx"].setdefault("FaceColor", opt["c"])
691
+ opt["bx"].setdefault("FaceColor", color_custom)
669
692
  opt["bx"].setdefault("EdgeColor", "k")
670
693
  opt["bx"].setdefault("FaceAlpha", 0.85)
671
694
  opt["bx"].setdefault("EdgeAlpha", 1)
@@ -709,7 +732,7 @@ def catplot(data, *args, **kwargs):
709
732
  opt["v"].setdefault("x_width", 0.3)
710
733
  opt["v"].setdefault("loc", "r")
711
734
  opt["v"].setdefault("EdgeColor", "none")
712
- opt["v"].setdefault("FaceColor", opt["c"])
735
+ opt["v"].setdefault("FaceColor", color_custom)
713
736
  opt["v"].setdefault("FaceAlpha", 0.3)
714
737
  opt["v"].setdefault("BandWidth", "scott")
715
738
  opt["v"].setdefault("Function", "pdf")
@@ -732,17 +755,18 @@ def catplot(data, *args, **kwargs):
732
755
  xloc = opt["loc"]["xloc"]
733
756
  layers = sort_catplot_layers(opt["layer"])
734
757
 
735
- label_which = kwargs.get("label_which", "barplot")
736
- if "b" in label_which:
737
- legend_which = "b"
738
- elif "s" in label_which:
739
- legend_which = "s"
740
- elif "bx" in label_which:
741
- legend_which = "bx"
742
- elif "e" in label_which:
743
- legend_which = "e"
744
- elif "v" in label_which:
745
- legend_which = "v"
758
+ label = kwargs.get("label", "bar")
759
+ if label:
760
+ if "b" in label:
761
+ legend_which = "b"
762
+ elif "s" in label:
763
+ legend_which = "s"
764
+ elif "bx" in label:
765
+ legend_which = "bx"
766
+ elif "e" in label:
767
+ legend_which = "e"
768
+ elif "v" in label:
769
+ legend_which = "v"
746
770
  else:
747
771
  legend_which = None
748
772
  for layer in layers:
@@ -779,35 +803,64 @@ def catplot(data, *args, **kwargs):
779
803
  show_legend = kwargs.get("show_legend", True)
780
804
  if show_legend:
781
805
  ax.legend()
782
-
783
806
  # ! add asterisks in the plot
784
807
  if stats_param:
785
- if hue is None:
786
- display(res)
787
- add_asterisks(ax, res, xticks_x_loc, xticklabels)
788
- else: # hue is not None
789
- ihue = 1
790
- for i in df[x].unique().tolist():
791
- if hue and stats_param:
792
- if isinstance(stats_param, dict):
793
- if "factor" in stats_param.keys():
794
- res_tmp = FuncMultiCmpt(data=df, dv=y, **stats_param)
795
- else:
808
+ if len(xticklabels) >= 1:
809
+ if hue is None:
810
+ add_asterisks(
811
+ ax, res, xticks_x_loc, xticklabels, y_loc=np.max(data)
812
+ )
813
+ else: # hue is not None
814
+ ihue = 1
815
+ for i in df[x].unique().tolist():
816
+ if stats_param:
817
+ if isinstance(stats_param, dict):
818
+ if "factor" in stats_param.keys():
819
+ res_tmp = FuncMultiCmpt(
820
+ data=df, dv=y, **stats_param
821
+ )
822
+ else:
823
+ res_tmp = FuncMultiCmpt(
824
+ data=df[df[x] == i],
825
+ dv=y,
826
+ factor=hue,
827
+ **stats_param,
828
+ )
829
+ elif bool(stats_param):
796
830
  res_tmp = FuncMultiCmpt(
797
- data=df[df[x] == i], dv=y, factor=hue, **stats_param
831
+ data=df[df[x] == i], dv=y, factor=hue
798
832
  )
799
- elif bool(stats_param):
800
- res_tmp = FuncMultiCmpt(data=df, dv=y, factor=hue)
801
- else:
802
- res_tmp = "did not work properly"
803
- xloc_curr = hue_len * (ihue - 1)
804
- add_asterisks(
805
- ax,
806
- res_tmp,
807
- xticks[xloc_curr : xloc_curr + hue_len],
808
- legend_hue,
809
- )
810
- ihue += 1
833
+ else:
834
+ res_tmp = "did not work properly"
835
+ xloc_curr = hue_len * (ihue - 1)
836
+
837
+ add_asterisks(
838
+ ax,
839
+ res_tmp,
840
+ xticks[xloc_curr : xloc_curr + hue_len],
841
+ legend_hue,
842
+ y_loc=np.max(data),
843
+ )
844
+ ihue += 1
845
+ else: # 240814: still has some bugs
846
+ if isinstance(res, dict):
847
+ tab_res = pd.DataFrame(res[1], index=[0])
848
+ x1 = df.loc[df[x] == xticklabels[0], y].tolist()
849
+ x2 = df.loc[df[x] == xticklabels[1], y].tolist()
850
+ tab_res[f"{xticklabels[0]}(mean±sem)"] = [str_mean_sem(x1)]
851
+ tab_res[f"{xticklabels[1]}(mean±sem)"] = [str_mean_sem(x2)]
852
+ add_asterisks(
853
+ ax, res[1], xticks_x_loc, xticklabels, y_loc=np.max([x1, x2])
854
+ )
855
+ elif isinstance(res, pd.DataFrame):
856
+ display(res)
857
+ print("still has some bugs")
858
+ x1 = df.loc[df[x] == xticklabels[0], y].tolist()
859
+ x2 = df.loc[df[x] == xticklabels[1], y].tolist()
860
+ add_asterisks(
861
+ ax, res, xticks_x_loc, xticklabels, y_loc=np.max([x1, x2])
862
+ )
863
+
811
864
  style_export = kwargs.get("style_export", None)
812
865
  if style_export and (style_export != style_use):
813
866
  dir_curr_script = os.path.dirname(os.path.abspath(__file__))
@@ -843,6 +896,11 @@ def get_cmap():
843
896
 
844
897
 
845
898
  def read_mplstyle(style_file):
899
+ """
900
+ example usage:
901
+ style_file = "/ std-colors.mplstyle"
902
+ style_dict = read_mplstyle(style_file)
903
+ """
846
904
  # Load the style file
847
905
  plt.style.use(style_file)
848
906
 
@@ -857,11 +915,6 @@ def read_mplstyle(style_file):
857
915
  return style_dict
858
916
 
859
917
 
860
- # #example usage:
861
- # style_file = "/ std-colors.mplstyle"
862
- # style_dict = read_mplstyle(style_file)
863
-
864
-
865
918
  def figsets(*args, **kwargs):
866
919
  """
867
920
  usage:
@@ -937,7 +990,6 @@ def figsets(*args, **kwargs):
937
990
  def set_step_1(ax, key, value):
938
991
  if ("fo" in key) and (("size" in key) or ("sz" in key)):
939
992
  fontsize = value
940
- print(fontsize)
941
993
  plt.rcParams.update({"font.size": fontsize})
942
994
  # style
943
995
  if "st" in key.lower() or "th" in key.lower():
@@ -1183,6 +1235,10 @@ def figsets(*args, **kwargs):
1183
1235
  if legend_kws:
1184
1236
  # https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.legend.html
1185
1237
  ax.legend(**legend_kws)
1238
+ else:
1239
+ legend = ax.get_legend()
1240
+ if legend is not None:
1241
+ legend.remove()
1186
1242
 
1187
1243
  for arg in args:
1188
1244
  if isinstance(arg, matplotlib.axes._axes.Axes):
@@ -1660,30 +1716,50 @@ def remove_colors_in_dict(
1660
1716
 
1661
1717
 
1662
1718
  def add_asterisks(ax, res, xticks_x_loc, xticklabels, **kwargs_funcstars):
1663
- pval_groups = res["res_tab"]["PR(>F)"].tolist()[0]
1664
- # print(f"p=:{pval_groups}")
1665
- # print(f"xticks:{xticks}")
1666
- # print(f"xticks_x_loc:{xticks_x_loc}")
1667
- if pval_groups <= 0.05:
1668
- A_list = res["res_posthoc"]["A"].tolist()
1669
- B_list = res["res_posthoc"]["B"].tolist()
1670
- xticklabels_array = np.array(xticklabels)
1671
- yscal_ = 0.99
1672
- for A, B, P in zip(
1673
- res["res_posthoc"]["A"].tolist(),
1674
- res["res_posthoc"]["B"].tolist(),
1675
- res["res_posthoc"]["p-unc"].tolist(),
1676
- ):
1677
- index_A = np.where(xticklabels_array == A)[0][0]
1678
- index_B = np.where(xticklabels_array == B)[0][0]
1679
- print(index_A, A, index_B, B, P)
1719
+ if len(xticklabels) > 2:
1720
+ if isinstance(res, dict):
1721
+ pval_groups = res["res_tab"]["p-unc"].tolist()[0]
1722
+ else:
1723
+ pval_groups = res["res_tab"]["PR(>F)"].tolist()[0]
1724
+ if pval_groups <= 0.05:
1725
+ A_list = res["res_posthoc"]["A"].tolist()
1726
+ B_list = res["res_posthoc"]["B"].tolist()
1727
+ xticklabels_array = np.array(xticklabels)
1728
+ yscal_ = 0.99
1729
+ for A, B, P in zip(
1730
+ res["res_posthoc"]["A"].tolist(),
1731
+ res["res_posthoc"]["B"].tolist(),
1732
+ res["res_posthoc"]["p-unc"].tolist(),
1733
+ ):
1734
+ index_A = np.where(xticklabels_array == A)[0][0]
1735
+ index_B = np.where(xticklabels_array == B)[0][0]
1736
+ FuncStars(
1737
+ ax=ax,
1738
+ x1=xticks_x_loc[index_A],
1739
+ x2=xticks_x_loc[index_B],
1740
+ pval=P,
1741
+ yscale=yscal_,
1742
+ **kwargs_funcstars,
1743
+ )
1744
+ if P <= 0.05:
1745
+ yscal_ -= 0.075
1746
+ else:
1747
+ if isinstance(res, tuple):
1748
+ res = res[1]
1749
+ pval_groups = res["pval"]
1750
+ FuncStars(
1751
+ ax=ax,
1752
+ x1=1,
1753
+ x2=2,
1754
+ pval=pval_groups,
1755
+ **kwargs_funcstars,
1756
+ )
1757
+ else:
1758
+ pval_groups = res["pval"]
1680
1759
  FuncStars(
1681
1760
  ax=ax,
1682
- x1=xticks_x_loc[index_A],
1683
- x2=xticks_x_loc[index_B],
1684
- pval=P,
1685
- yscale=yscal_,
1761
+ x1=1,
1762
+ x2=2,
1763
+ pval=pval_groups,
1686
1764
  **kwargs_funcstars,
1687
1765
  )
1688
- if P <= 0.05:
1689
- yscal_ -= 0.1