py2ls 0.1.9.2__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.
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/PKG-INFO +1 -1
- py2ls-0.1.9.4/py2ls/.git/COMMIT_EDITMSG +1 -0
- py2ls-0.1.9.4/py2ls/.git/FETCH_HEAD +1 -0
- py2ls-0.1.9.4/py2ls/.git/index +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/logs/HEAD +1 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/logs/refs/heads/main +1 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/logs/refs/remotes/origin/HEAD +2 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/logs/refs/remotes/origin/main +1 -0
- py2ls-0.1.9.4/py2ls/.git/objects/12/c2808a1b3a4d0892a4154dfba1e2ae3770fa73 +0 -0
- py2ls-0.1.9.4/py2ls/.git/objects/1c/9314c5f69b9390068a2a8616875d974849d71f +0 -0
- py2ls-0.1.9.4/py2ls/.git/objects/2a/ae95d517d213b660bf4f65a4e0cfae7bb893eb +0 -0
- py2ls-0.1.9.4/py2ls/.git/objects/34/9e31b6a3634cea102ce5588b98c11cc1738605 +0 -0
- py2ls-0.1.9.4/py2ls/.git/objects/45/b1b6178bacbfc997811a998b5cc60c1ea7fac8 +0 -0
- py2ls-0.1.9.4/py2ls/.git/objects/57/63d0c52f5c9c69e89d514a1f96034947abe21a +0 -0
- py2ls-0.1.9.4/py2ls/.git/objects/59/380c4c26bdcd4d9b71ae3e2e35f05b3f26c5ab +0 -0
- py2ls-0.1.9.4/py2ls/.git/objects/66/6227eeeba24073e63811e89f1449f3d958f183 +0 -0
- py2ls-0.1.9.4/py2ls/.git/objects/66/c998778721d424bd0aae80602dabbffa93af2e +0 -0
- py2ls-0.1.9.4/py2ls/.git/objects/6d/c2cdf4a84e538e5d4777486aeff87e42f41799 +2 -0
- py2ls-0.1.9.4/py2ls/.git/objects/72/245a05b0966011cb381e6b32b0465000e969ab +0 -0
- py2ls-0.1.9.4/py2ls/.git/objects/72/e4179337639859678ddaecf38b16f33aaec8e1 +0 -0
- py2ls-0.1.9.4/py2ls/.git/objects/a1/906da89d1174f74867800c74c43af36253bd5e +0 -0
- py2ls-0.1.9.4/py2ls/.git/objects/d2/992df305f4b56a466a2f221aeb182ddd20f418 +0 -0
- py2ls-0.1.9.4/py2ls/.git/objects/dc/c2bdbafb3296e09d9ee4955cfa55d275825f94 +5 -0
- py2ls-0.1.9.4/py2ls/.git/objects/dc/cdbd4266765d840be2ae35ab1752a0fa312c16 +0 -0
- py2ls-0.1.9.4/py2ls/.git/objects/e2/f2f8f4c25e62a297fc55f36acc6b01cfbab76f +3 -0
- py2ls-0.1.9.4/py2ls/.git/objects/ea/3a18cc75e53792744ef754e05d3f4481768c13 +0 -0
- py2ls-0.1.9.4/py2ls/.git/objects/ec/40fd8bf8e4c342534a9fc020289e402ba6bc9d +0 -0
- py2ls-0.1.9.4/py2ls/.git/objects/f4/ba7f815b886797b73fede071d86e0c134d2bc7 +0 -0
- py2ls-0.1.9.4/py2ls/.git/objects/f6/44a8ff56fa035105fc517cbb1ac46c3d8e349a +0 -0
- py2ls-0.1.9.4/py2ls/.git/refs/heads/main +1 -0
- py2ls-0.1.9.4/py2ls/.git/refs/remotes/origin/main +1 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/netfinder.py +0 -8
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/plot.py +188 -45
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/stats.py +118 -97
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/pyproject.toml +1 -1
- py2ls-0.1.9.2/py2ls/.git/COMMIT_EDITMSG +0 -1
- py2ls-0.1.9.2/py2ls/.git/FETCH_HEAD +0 -1
- py2ls-0.1.9.2/py2ls/.git/index +0 -0
- py2ls-0.1.9.2/py2ls/.git/refs/heads/main +0 -1
- py2ls-0.1.9.2/py2ls/.git/refs/remotes/origin/main +0 -1
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/README.md +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.DS_Store +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/HEAD +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/config +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/description +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/hooks/applypatch-msg.sample +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/hooks/commit-msg.sample +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/hooks/fsmonitor-watchman.sample +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/hooks/post-update.sample +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/hooks/pre-applypatch.sample +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/hooks/pre-commit.sample +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/hooks/pre-merge-commit.sample +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/hooks/pre-push.sample +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/hooks/pre-rebase.sample +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/hooks/pre-receive.sample +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/hooks/prepare-commit-msg.sample +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/hooks/push-to-checkout.sample +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/hooks/update.sample +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/info/exclude +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/01/d5bd8065e6860c0bd23ff9fa57161806a099e1 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/09/08da26de58c114225ad81f484b80bf5d351b34 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/0b/409e1bc918277010f5679b402d1d1dda53e15c +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/14/449a0e6ba4ea2f1a73acf63ef91c9c6193f9ed +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/15/a8e468aacfcb440e090020f36d0b985d45da23 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/1a/b4585881a6a42889f01aa0cfe25fd5acfaf46f +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/1c/3f92adda34344bcbbbf9d409c79855ae2aaea8 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/1d/fe9d9633b24ea560354f4f93d39c6e5f163ea0 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/20/72c28e83f4347959d29f7b3a6c1fc3e4ee6b59 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/24/6b368b986f758630c46dc02b7fa512b53422f7 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/25/b796accd261b9135fd32a2c00785f68edf6c46 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/30/a2f8da47ee947811dc8d993f5a06a45de374f4 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/32/fd627b62fad7cf3b2f9e34ab9777126a0987ad +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/36/b4a1b7403abc6c360f8fe2cb656ab945254971 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/36/e56a361f526eafa59c5235a5c990bf288b5f9c +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/36/ef43e50009e59db11812c258846d9e38718173 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/39/7ead045fbbcfb17c62019eb18fe21ed05dbee5 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/3b/bd972aa7ad680858f8dfbd0f7fcd97756f0d6f +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/3c/bbe5f4173d165127b9ad96119f1ec24c306ffc +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/3f/d6561300938afbb3d11976cf9c8f29549280d9 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/41/dcf4b3bf0460946b2da93776cf9e836d62178f +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/43/dbd49b2ee367c5434dd545e3b5795434f2ef0b +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/48/a88fc5806305d0bb0755ee6801161b79696972 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/4f/7afb40dff2153d857fc85748c2eecb85125042 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/50/08ddfcf53c02e82d7eee2e57c38e5672ef89f6 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/53/e0deb1cb4c2c606bced6e7f9a66b0fda60980d +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/56/e4e8b2d5545e0256090f45aa8fc42c5fe067d0 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/57/bd1c0199483ab316235b094543b85edec6c35e +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/58/20a729045d4dc7e37ccaf8aa8eec126850afe2 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/5a/192565abf89c9d765af846ce6d53a92b1ce7ad +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/60/f273eb1c412d916fa3f11318a7da7a9911b52a +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/61/570cec8c061abe74121f27f5face6c69b98f99 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/62/4488173ed2c8936fa5cea3cf5dd3f26a30b86e +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/62/7c81b23b4e56e87b042b650b0103653cc9e34a +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/62/d90ccf8cbefdc2e4fd475e7c6f4f76e9fdf801 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/63/100154b27846e8010e55b6bf4b3d7762c14c5f +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/64/27a4edff08f93d98f511418423f09f2ab90bcd +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/68/6df3072c8b025fb18106ed2df505994ad062a9 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/69/13c452ca319f7cbf6a0836dc10a5bb033c84e4 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/6a/52e747a2b349b128d1490d9e896d2323818eb7 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/6b/7fde264d93a7a0986d394c46c7650d0ce2ab92 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/6c/cebb29b7f3f5b0c889f6dadbf9ff066554587d +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/6d/ee29dbdcc84edeeacede105110446f3ccac963 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/71/36b2074a2754be8b58127d82250e5b37e3c373 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/78/3d4167bc95c9d2175e0df03ef1c1c880ba75ab +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/79/7ae089b2212a937840e215276005ce76881307 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/7e/5956c806b5edc344d46dab599dec337891ba1f +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/81/8f26b7bf042269729020cf944fc362d66ba27e +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/84/59071b722a255b774a80b27746033f8141ab39 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/87/ef1fc3f7f1ddc4d0ab9b3e65381ce9f3388621 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/8b/84f56978e1de8f2ae82abce5f8b3e182d365cd +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/8e/55a7d2b96184030211f20c9b9af201eefcac82 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/91/c69ad88fe0ba94aa7859fb5f7edac5e6f1a3f7 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/94/74152b4b463d70ae5ad07f0c658be3e296026b +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/97/1aef09ea939f46b60b9646f8d524c78a9220f4 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/9d/0df52899fe95279059286d9c0ec42287edc168 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/a1/5389729850729fc7bd78a54f26fce77f30be12 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/a4/63fdd23e5efd713db8a71f316f3a1c7bd60916 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/a5/ec8f74642fbba27f7ea78c53b372ae0c7dedce +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/a7/3e13eafee65c5b8d73ad2d3ea46d0eee82f0d3 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/b0/56be4be89ba6b76949dd641df45bb7036050c8 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/b0/9cd7856d58590578ee1a4f3ad45d1310a97f87 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/b2/18e6a0f0f1c4df8cdefa9852058348abc713b7 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/b5/61831c7dce8ea51e7ee6b6fa35745f14d8242d +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/b7/2c9e75ab7d0afe594664650aa8f6c772f5ac64 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/bb/81ccc0513f18fc160b54a82861e9a80d23f4f6 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/bb/934eb33bc1a8b85630bf680caffd99560c1b8f +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/bf/67907e337021ebff434e02b19b30a741c144af +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/c1/20fc812b9ad311c34a3608512d6a9d976bb48e +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/c4/cba65f1163661999ee4b8ed23342b63bc1300c +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/c6/7f17e5707313600efcb85e9a3fedea35dba591 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/c6/f32aced880bd165a251cb52b26b0c1107e2141 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/cd/822b3574a88ebdd1ed82fd6983f37e626d52b4 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/cf/0c0d9c6fb09473aaeb7f7e2edbd770c3f2ef3d +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/d6/9ab1c4aadf279936dd778e8346ba60f74705b6 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/d8/4688b54c0040a30976b3a6540bc47adf7ce680 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/d9/005f2cc7fc4e65f14ed5518276007c08cf2fd0 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/d9/c2403fd166ce791b4e9d0c6792ed8342c71fcd +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/d9/dfa5aee51e92a541b707e8e7baea6f06deff98 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/db/141dbaa93594df2a8156182f361ee4db829359 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/db/ffa8ea7bda721d0cee7b9e4ce5b2ef927733ff +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/dd/87fb5f606fe380d81e6fe3a2c98f9f99e3e09b +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/df/e0770424b2a19faf507a501ebfc23be8f54e7b +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/e3/1356f90ea6dd0577b5e0b40b206319adcbf085 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/e3/5a4dafc50850cacac7bf76c56db2715cbda2c4 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/e9/391ffe371f1cc43b42ef09b705d9c767c2e14f +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/f1/e50757fddc28b445545dc7e2759b54cdd0f42e +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/f4/b64d3107b39e3ad6f540c6607004ea34e6c024 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/f7/c98ba5c2f903e603b1f5e63d49fbc8a43815cc +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/f9/045a08e96eb76848fc4d68e3e3e687cca39a2d +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/fa/147e6bb78a2e8db241d231295fd7f1ed061af8 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/objects/fc/292e793ecfd42240ac43be407023bd731fa9e7 +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.git/refs/remotes/origin/HEAD +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.gitattributes +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/.gitignore +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/LICENSE +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/README.md +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/__init__.py +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/brain_atlas.py +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/chat.py +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/correlators.py +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/data/.DS_Store +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/data/db2ls_sql_chtsht.json +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/data/docs_links.json +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/data/lang_code_iso639.json +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/data/styles/style1.json +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/data/styles/style2.json +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/data/styles/style3.json +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/data/styles/style4.json +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/data/styles/style5.json +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/data/styles/style6.json +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/db2ls.py +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/doc.py +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/export_requirements.py +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/freqanalysis.py +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/ips.py +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/setuptools-70.1.0-py3-none-any.whl +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/sleep_events_detectors.py +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/translator.py +0 -0
- {py2ls-0.1.9.2 → py2ls-0.1.9.4}/py2ls/wb_detector.py +0 -0
@@ -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,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 @@
|
|
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")
|
@@ -467,9 +467,12 @@ def catplot(data, *args, **kwargs):
|
|
467
467
|
# custom_order = ['s', 'bx', 'e']
|
468
468
|
# full_order = sort_catplot_layers(custom_order)
|
469
469
|
|
470
|
+
ax = kwargs.get("ax", None)
|
470
471
|
col = kwargs.get("col", None)
|
471
472
|
if not col:
|
472
|
-
|
473
|
+
if "ax" not in locals() or ax is None:
|
474
|
+
ax = plt.gca()
|
475
|
+
|
473
476
|
kw_figsets = kwargs.get("figsets", None)
|
474
477
|
# check the data type
|
475
478
|
if isinstance(data, pd.DataFrame):
|
@@ -478,6 +481,7 @@ def catplot(data, *args, **kwargs):
|
|
478
481
|
y = kwargs.get("y", None)
|
479
482
|
hue = kwargs.get("hue", None)
|
480
483
|
data = df2array(data=data, x=x, y=y, hue=hue)
|
484
|
+
y_max_loc = np.max(data, axis=0)
|
481
485
|
xticklabels = []
|
482
486
|
if hue is not None:
|
483
487
|
# for i in df[x].unique().tolist():
|
@@ -496,8 +500,9 @@ def catplot(data, *args, **kwargs):
|
|
496
500
|
# ! stats info
|
497
501
|
stats_param = kwargs.get("stats", False)
|
498
502
|
res = pd.DataFrame() # Initialize an empty DataFrame to store results
|
503
|
+
ihue = 1
|
499
504
|
for i in df[x].unique().tolist():
|
500
|
-
print(i)
|
505
|
+
print(i) # to indicate which 'x'
|
501
506
|
if hue and stats_param:
|
502
507
|
if isinstance(stats_param, dict):
|
503
508
|
if "factor" in stats_param.keys():
|
@@ -507,15 +512,17 @@ def catplot(data, *args, **kwargs):
|
|
507
512
|
data=df[df[x] == i], dv=y, factor=hue, **stats_param
|
508
513
|
)
|
509
514
|
elif bool(stats_param):
|
510
|
-
res_tmp = FuncMultiCmpt(
|
515
|
+
res_tmp = FuncMultiCmpt(
|
516
|
+
data=df[df[x] == i], dv=y, factor=hue
|
517
|
+
)
|
511
518
|
else:
|
512
519
|
res_tmp = "did not work properly"
|
513
520
|
display_output(res_tmp)
|
514
|
-
res_tmp = [{"x": i, **res_tmp}]
|
515
521
|
res = pd.concat(
|
516
|
-
[res, pd.DataFrame([res_tmp])], ignore_index=True
|
522
|
+
[res, pd.DataFrame([res_tmp])], ignore_index=True, axis=0
|
517
523
|
)
|
518
|
-
|
524
|
+
ihue += 1
|
525
|
+
|
519
526
|
else:
|
520
527
|
# ! stats info
|
521
528
|
stats_param = kwargs.get("stats", False)
|
@@ -529,9 +536,22 @@ def catplot(data, *args, **kwargs):
|
|
529
536
|
res = None
|
530
537
|
if x and stats_param:
|
531
538
|
if isinstance(stats_param, dict):
|
532
|
-
|
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
|
+
)
|
533
547
|
elif bool(stats_param):
|
534
|
-
|
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
|
+
)
|
535
555
|
else:
|
536
556
|
res = "did not work properly"
|
537
557
|
display_output(res)
|
@@ -556,11 +576,28 @@ def catplot(data, *args, **kwargs):
|
|
556
576
|
"xangle": xangle,
|
557
577
|
}
|
558
578
|
else:
|
559
|
-
|
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))
|
560
591
|
default_x_width = 0.5
|
561
|
-
|
562
|
-
|
563
|
-
|
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)
|
564
601
|
|
565
602
|
# full_order
|
566
603
|
opt = kwargs.get("opt", {})
|
@@ -580,15 +617,13 @@ def catplot(data, *args, **kwargs):
|
|
580
617
|
opt.update(style_load)
|
581
618
|
except:
|
582
619
|
print(f"cannot find the style'{style_name}'")
|
583
|
-
|
584
|
-
|
585
|
-
|
586
|
-
|
587
|
-
# if len(
|
588
|
-
#
|
589
|
-
|
590
|
-
# )
|
591
|
-
# opt["c"] = np.vstack([opt["c"], additional_colors[:, :3]])
|
620
|
+
|
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)
|
592
627
|
|
593
628
|
opt.setdefault("loc", {})
|
594
629
|
opt["loc"].setdefault("go", 0)
|
@@ -597,15 +632,12 @@ def catplot(data, *args, **kwargs):
|
|
597
632
|
# export setting
|
598
633
|
opt.setdefault("style", {})
|
599
634
|
opt["style"].setdefault("export", None)
|
600
|
-
print(opt["style"])
|
601
|
-
|
602
|
-
# opt.setdefault('layer', {})
|
603
635
|
opt.setdefault("layer", ["b", "bx", "e", "v", "s", "l"])
|
604
636
|
|
605
637
|
opt.setdefault("b", {})
|
606
638
|
opt["b"].setdefault("go", 1)
|
607
639
|
opt["b"].setdefault("loc", "c")
|
608
|
-
opt["b"].setdefault("FaceColor",
|
640
|
+
opt["b"].setdefault("FaceColor", color_custom)
|
609
641
|
opt["b"].setdefault("FaceAlpha", 1)
|
610
642
|
opt["b"].setdefault("EdgeColor", "k")
|
611
643
|
opt["b"].setdefault("EdgeAlpha", 1)
|
@@ -626,7 +658,7 @@ def catplot(data, *args, **kwargs):
|
|
626
658
|
opt["e"].setdefault("LineColor", "k")
|
627
659
|
opt["e"].setdefault("LineJoin", "round")
|
628
660
|
opt["e"].setdefault("MarkerSize", "auto")
|
629
|
-
opt["e"].setdefault("FaceColor",
|
661
|
+
opt["e"].setdefault("FaceColor", color_custom)
|
630
662
|
opt["e"].setdefault("MarkerEdgeColor", "none")
|
631
663
|
opt["e"].setdefault("Visible", True)
|
632
664
|
opt["e"].setdefault("Orientation", "vertical")
|
@@ -656,7 +688,7 @@ def catplot(data, *args, **kwargs):
|
|
656
688
|
opt.setdefault("bx", {})
|
657
689
|
opt["bx"].setdefault("go", 0)
|
658
690
|
opt["bx"].setdefault("loc", "r")
|
659
|
-
opt["bx"].setdefault("FaceColor",
|
691
|
+
opt["bx"].setdefault("FaceColor", color_custom)
|
660
692
|
opt["bx"].setdefault("EdgeColor", "k")
|
661
693
|
opt["bx"].setdefault("FaceAlpha", 0.85)
|
662
694
|
opt["bx"].setdefault("EdgeAlpha", 1)
|
@@ -700,7 +732,7 @@ def catplot(data, *args, **kwargs):
|
|
700
732
|
opt["v"].setdefault("x_width", 0.3)
|
701
733
|
opt["v"].setdefault("loc", "r")
|
702
734
|
opt["v"].setdefault("EdgeColor", "none")
|
703
|
-
opt["v"].setdefault("FaceColor",
|
735
|
+
opt["v"].setdefault("FaceColor", color_custom)
|
704
736
|
opt["v"].setdefault("FaceAlpha", 0.3)
|
705
737
|
opt["v"].setdefault("BandWidth", "scott")
|
706
738
|
opt["v"].setdefault("Function", "pdf")
|
@@ -723,17 +755,18 @@ def catplot(data, *args, **kwargs):
|
|
723
755
|
xloc = opt["loc"]["xloc"]
|
724
756
|
layers = sort_catplot_layers(opt["layer"])
|
725
757
|
|
726
|
-
|
727
|
-
if
|
728
|
-
|
729
|
-
|
730
|
-
|
731
|
-
|
732
|
-
|
733
|
-
|
734
|
-
|
735
|
-
|
736
|
-
|
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"
|
737
770
|
else:
|
738
771
|
legend_which = None
|
739
772
|
for layer in layers:
|
@@ -770,6 +803,63 @@ def catplot(data, *args, **kwargs):
|
|
770
803
|
show_legend = kwargs.get("show_legend", True)
|
771
804
|
if show_legend:
|
772
805
|
ax.legend()
|
806
|
+
# ! add asterisks in the plot
|
807
|
+
if stats_param:
|
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):
|
830
|
+
res_tmp = FuncMultiCmpt(
|
831
|
+
data=df[df[x] == i], dv=y, factor=hue
|
832
|
+
)
|
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
|
+
)
|
773
863
|
|
774
864
|
style_export = kwargs.get("style_export", None)
|
775
865
|
if style_export and (style_export != style_use):
|
@@ -806,6 +896,11 @@ def get_cmap():
|
|
806
896
|
|
807
897
|
|
808
898
|
def read_mplstyle(style_file):
|
899
|
+
"""
|
900
|
+
example usage:
|
901
|
+
style_file = "/ std-colors.mplstyle"
|
902
|
+
style_dict = read_mplstyle(style_file)
|
903
|
+
"""
|
809
904
|
# Load the style file
|
810
905
|
plt.style.use(style_file)
|
811
906
|
|
@@ -820,11 +915,6 @@ def read_mplstyle(style_file):
|
|
820
915
|
return style_dict
|
821
916
|
|
822
917
|
|
823
|
-
# #example usage:
|
824
|
-
# style_file = "/ std-colors.mplstyle"
|
825
|
-
# style_dict = read_mplstyle(style_file)
|
826
|
-
|
827
|
-
|
828
918
|
def figsets(*args, **kwargs):
|
829
919
|
"""
|
830
920
|
usage:
|
@@ -900,7 +990,6 @@ def figsets(*args, **kwargs):
|
|
900
990
|
def set_step_1(ax, key, value):
|
901
991
|
if ("fo" in key) and (("size" in key) or ("sz" in key)):
|
902
992
|
fontsize = value
|
903
|
-
print(fontsize)
|
904
993
|
plt.rcParams.update({"font.size": fontsize})
|
905
994
|
# style
|
906
995
|
if "st" in key.lower() or "th" in key.lower():
|
@@ -1146,6 +1235,10 @@ def figsets(*args, **kwargs):
|
|
1146
1235
|
if legend_kws:
|
1147
1236
|
# https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.legend.html
|
1148
1237
|
ax.legend(**legend_kws)
|
1238
|
+
else:
|
1239
|
+
legend = ax.get_legend()
|
1240
|
+
if legend is not None:
|
1241
|
+
legend.remove()
|
1149
1242
|
|
1150
1243
|
for arg in args:
|
1151
1244
|
if isinstance(arg, matplotlib.axes._axes.Axes):
|
@@ -1620,3 +1713,53 @@ def remove_colors_in_dict(
|
|
1620
1713
|
if "loc" in data:
|
1621
1714
|
del data["loc"]
|
1622
1715
|
return data
|
1716
|
+
|
1717
|
+
|
1718
|
+
def add_asterisks(ax, res, xticks_x_loc, xticklabels, **kwargs_funcstars):
|
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"]
|
1759
|
+
FuncStars(
|
1760
|
+
ax=ax,
|
1761
|
+
x1=1,
|
1762
|
+
x2=2,
|
1763
|
+
pval=pval_groups,
|
1764
|
+
**kwargs_funcstars,
|
1765
|
+
)
|