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.
- {py2ls-0.1.9.3 → 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.3 → py2ls-0.1.9.4}/py2ls/.git/logs/HEAD +1 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/logs/refs/heads/main +1 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/logs/refs/remotes/origin/HEAD +2 -0
- {py2ls-0.1.9.3 → 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.3 → py2ls-0.1.9.4}/py2ls/netfinder.py +0 -8
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/plot.py +172 -96
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/stats.py +67 -47
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/pyproject.toml +1 -1
- py2ls-0.1.9.3/py2ls/.git/COMMIT_EDITMSG +0 -1
- py2ls-0.1.9.3/py2ls/.git/FETCH_HEAD +0 -1
- py2ls-0.1.9.3/py2ls/.git/index +0 -0
- py2ls-0.1.9.3/py2ls/.git/refs/heads/main +0 -1
- py2ls-0.1.9.3/py2ls/.git/refs/remotes/origin/main +0 -1
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/README.md +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.DS_Store +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/HEAD +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/config +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/description +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/hooks/applypatch-msg.sample +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/hooks/commit-msg.sample +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/hooks/fsmonitor-watchman.sample +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/hooks/post-update.sample +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/hooks/pre-applypatch.sample +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/hooks/pre-commit.sample +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/hooks/pre-merge-commit.sample +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/hooks/pre-push.sample +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/hooks/pre-rebase.sample +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/hooks/pre-receive.sample +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/hooks/prepare-commit-msg.sample +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/hooks/push-to-checkout.sample +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/hooks/update.sample +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/info/exclude +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/01/d5bd8065e6860c0bd23ff9fa57161806a099e1 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/09/08da26de58c114225ad81f484b80bf5d351b34 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/0b/409e1bc918277010f5679b402d1d1dda53e15c +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/14/449a0e6ba4ea2f1a73acf63ef91c9c6193f9ed +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/15/a8e468aacfcb440e090020f36d0b985d45da23 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/1a/b4585881a6a42889f01aa0cfe25fd5acfaf46f +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/1c/3f92adda34344bcbbbf9d409c79855ae2aaea8 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/1d/fe9d9633b24ea560354f4f93d39c6e5f163ea0 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/20/72c28e83f4347959d29f7b3a6c1fc3e4ee6b59 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/24/6b368b986f758630c46dc02b7fa512b53422f7 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/25/b796accd261b9135fd32a2c00785f68edf6c46 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/30/a2f8da47ee947811dc8d993f5a06a45de374f4 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/32/fd627b62fad7cf3b2f9e34ab9777126a0987ad +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/36/b4a1b7403abc6c360f8fe2cb656ab945254971 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/36/e56a361f526eafa59c5235a5c990bf288b5f9c +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/36/ef43e50009e59db11812c258846d9e38718173 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/39/7ead045fbbcfb17c62019eb18fe21ed05dbee5 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/3b/bd972aa7ad680858f8dfbd0f7fcd97756f0d6f +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/3c/bbe5f4173d165127b9ad96119f1ec24c306ffc +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/3f/d6561300938afbb3d11976cf9c8f29549280d9 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/41/dcf4b3bf0460946b2da93776cf9e836d62178f +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/43/dbd49b2ee367c5434dd545e3b5795434f2ef0b +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/48/a88fc5806305d0bb0755ee6801161b79696972 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/4f/7afb40dff2153d857fc85748c2eecb85125042 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/50/08ddfcf53c02e82d7eee2e57c38e5672ef89f6 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/53/e0deb1cb4c2c606bced6e7f9a66b0fda60980d +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/56/e4e8b2d5545e0256090f45aa8fc42c5fe067d0 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/57/bd1c0199483ab316235b094543b85edec6c35e +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/58/20a729045d4dc7e37ccaf8aa8eec126850afe2 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/5a/192565abf89c9d765af846ce6d53a92b1ce7ad +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/60/f273eb1c412d916fa3f11318a7da7a9911b52a +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/61/570cec8c061abe74121f27f5face6c69b98f99 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/62/4488173ed2c8936fa5cea3cf5dd3f26a30b86e +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/62/7c81b23b4e56e87b042b650b0103653cc9e34a +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/62/d90ccf8cbefdc2e4fd475e7c6f4f76e9fdf801 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/63/100154b27846e8010e55b6bf4b3d7762c14c5f +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/64/27a4edff08f93d98f511418423f09f2ab90bcd +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/68/6df3072c8b025fb18106ed2df505994ad062a9 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/69/13c452ca319f7cbf6a0836dc10a5bb033c84e4 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/6a/52e747a2b349b128d1490d9e896d2323818eb7 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/6b/7fde264d93a7a0986d394c46c7650d0ce2ab92 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/6c/cebb29b7f3f5b0c889f6dadbf9ff066554587d +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/6d/ee29dbdcc84edeeacede105110446f3ccac963 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/71/36b2074a2754be8b58127d82250e5b37e3c373 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/78/3d4167bc95c9d2175e0df03ef1c1c880ba75ab +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/79/7ae089b2212a937840e215276005ce76881307 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/7e/5956c806b5edc344d46dab599dec337891ba1f +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/81/8f26b7bf042269729020cf944fc362d66ba27e +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/84/59071b722a255b774a80b27746033f8141ab39 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/87/ef1fc3f7f1ddc4d0ab9b3e65381ce9f3388621 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/8b/84f56978e1de8f2ae82abce5f8b3e182d365cd +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/8e/55a7d2b96184030211f20c9b9af201eefcac82 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/91/c69ad88fe0ba94aa7859fb5f7edac5e6f1a3f7 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/94/74152b4b463d70ae5ad07f0c658be3e296026b +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/97/1aef09ea939f46b60b9646f8d524c78a9220f4 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/9d/0df52899fe95279059286d9c0ec42287edc168 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/a1/5389729850729fc7bd78a54f26fce77f30be12 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/a4/63fdd23e5efd713db8a71f316f3a1c7bd60916 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/a5/ec8f74642fbba27f7ea78c53b372ae0c7dedce +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/a7/3e13eafee65c5b8d73ad2d3ea46d0eee82f0d3 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/b0/56be4be89ba6b76949dd641df45bb7036050c8 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/b0/9cd7856d58590578ee1a4f3ad45d1310a97f87 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/b2/18e6a0f0f1c4df8cdefa9852058348abc713b7 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/b5/61831c7dce8ea51e7ee6b6fa35745f14d8242d +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/b7/2c9e75ab7d0afe594664650aa8f6c772f5ac64 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/bb/81ccc0513f18fc160b54a82861e9a80d23f4f6 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/bb/934eb33bc1a8b85630bf680caffd99560c1b8f +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/bf/67907e337021ebff434e02b19b30a741c144af +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/c1/20fc812b9ad311c34a3608512d6a9d976bb48e +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/c4/cba65f1163661999ee4b8ed23342b63bc1300c +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/c6/7f17e5707313600efcb85e9a3fedea35dba591 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/c6/f32aced880bd165a251cb52b26b0c1107e2141 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/cd/822b3574a88ebdd1ed82fd6983f37e626d52b4 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/cf/0c0d9c6fb09473aaeb7f7e2edbd770c3f2ef3d +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/d6/9ab1c4aadf279936dd778e8346ba60f74705b6 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/d8/4688b54c0040a30976b3a6540bc47adf7ce680 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/d9/005f2cc7fc4e65f14ed5518276007c08cf2fd0 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/d9/c2403fd166ce791b4e9d0c6792ed8342c71fcd +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/d9/dfa5aee51e92a541b707e8e7baea6f06deff98 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/db/141dbaa93594df2a8156182f361ee4db829359 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/db/ffa8ea7bda721d0cee7b9e4ce5b2ef927733ff +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/dd/87fb5f606fe380d81e6fe3a2c98f9f99e3e09b +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/df/e0770424b2a19faf507a501ebfc23be8f54e7b +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/e3/1356f90ea6dd0577b5e0b40b206319adcbf085 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/e3/5a4dafc50850cacac7bf76c56db2715cbda2c4 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/e9/391ffe371f1cc43b42ef09b705d9c767c2e14f +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/f1/e50757fddc28b445545dc7e2759b54cdd0f42e +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/f4/b64d3107b39e3ad6f540c6607004ea34e6c024 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/f7/c98ba5c2f903e603b1f5e63d49fbc8a43815cc +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/f9/045a08e96eb76848fc4d68e3e3e687cca39a2d +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/fa/147e6bb78a2e8db241d231295fd7f1ed061af8 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/objects/fc/292e793ecfd42240ac43be407023bd731fa9e7 +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.git/refs/remotes/origin/HEAD +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.gitattributes +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/.gitignore +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/LICENSE +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/README.md +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/__init__.py +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/brain_atlas.py +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/chat.py +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/correlators.py +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/data/.DS_Store +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/data/db2ls_sql_chtsht.json +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/data/docs_links.json +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/data/lang_code_iso639.json +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/data/styles/style1.json +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/data/styles/style2.json +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/data/styles/style3.json +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/data/styles/style4.json +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/data/styles/style5.json +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/data/styles/style6.json +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/db2ls.py +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/doc.py +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/export_requirements.py +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/freqanalysis.py +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/ips.py +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/setuptools-70.1.0-py3-none-any.whl +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/sleep_events_detectors.py +0 -0
- {py2ls-0.1.9.3 → py2ls-0.1.9.4}/py2ls/translator.py +0 -0
- {py2ls-0.1.9.3 → 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")
|
@@ -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
|
-
|
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(
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
573
|
-
|
574
|
-
|
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
|
-
|
596
|
-
|
597
|
-
|
598
|
-
#
|
599
|
-
# )
|
600
|
-
|
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",
|
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",
|
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",
|
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",
|
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
|
-
|
736
|
-
if
|
737
|
-
|
738
|
-
|
739
|
-
|
740
|
-
|
741
|
-
|
742
|
-
|
743
|
-
|
744
|
-
|
745
|
-
|
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
|
786
|
-
|
787
|
-
|
788
|
-
|
789
|
-
|
790
|
-
|
791
|
-
|
792
|
-
|
793
|
-
|
794
|
-
|
795
|
-
|
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
|
831
|
+
data=df[df[x] == i], dv=y, factor=hue
|
798
832
|
)
|
799
|
-
|
800
|
-
|
801
|
-
|
802
|
-
|
803
|
-
|
804
|
-
|
805
|
-
|
806
|
-
|
807
|
-
|
808
|
-
|
809
|
-
|
810
|
-
|
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
|
-
|
1664
|
-
|
1665
|
-
|
1666
|
-
|
1667
|
-
|
1668
|
-
|
1669
|
-
|
1670
|
-
|
1671
|
-
|
1672
|
-
|
1673
|
-
|
1674
|
-
|
1675
|
-
|
1676
|
-
|
1677
|
-
|
1678
|
-
|
1679
|
-
|
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=
|
1683
|
-
x2=
|
1684
|
-
pval=
|
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
|