py2ls 0.2.4__tar.gz → 0.2.4.2__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.2.4 → py2ls-0.2.4.2}/PKG-INFO +1 -1
- py2ls-0.2.4.2/py2ls/bio.py +272 -0
- py2ls-0.2.4.2/py2ls/data/usages_pd copy.json +1105 -0
- py2ls-0.2.4.2/py2ls/data/usages_pd.json +1417 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/fetch_update.py +45 -27
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/ips.py +368 -99
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/plot.py +143 -75
- {py2ls-0.2.4 → py2ls-0.2.4.2}/pyproject.toml +1 -1
- py2ls-0.2.4/py2ls/data/usages_pd.json +0 -56
- {py2ls-0.2.4 → py2ls-0.2.4.2}/README.md +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.DS_Store +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/COMMIT_EDITMSG +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/FETCH_HEAD +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/HEAD +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/config +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/description +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/hooks/applypatch-msg.sample +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/hooks/commit-msg.sample +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/hooks/fsmonitor-watchman.sample +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/hooks/post-update.sample +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/hooks/pre-applypatch.sample +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/hooks/pre-commit.sample +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/hooks/pre-merge-commit.sample +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/hooks/pre-push.sample +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/hooks/pre-rebase.sample +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/hooks/pre-receive.sample +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/hooks/prepare-commit-msg.sample +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/hooks/push-to-checkout.sample +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/hooks/update.sample +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/index +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/info/exclude +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/logs/HEAD +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/logs/refs/heads/main +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/logs/refs/remotes/origin/HEAD +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/logs/refs/remotes/origin/main +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/01/d5bd8065e6860c0bd23ff9fa57161806a099e1 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/09/08da26de58c114225ad81f484b80bf5d351b34 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/0b/409e1bc918277010f5679b402d1d1dda53e15c +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/12/c2808a1b3a4d0892a4154dfba1e2ae3770fa73 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/14/449a0e6ba4ea2f1a73acf63ef91c9c6193f9ed +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/15/a8e468aacfcb440e090020f36d0b985d45da23 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/1a/b4585881a6a42889f01aa0cfe25fd5acfaf46f +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/1c/3f92adda34344bcbbbf9d409c79855ae2aaea8 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/1c/9314c5f69b9390068a2a8616875d974849d71f +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/1d/fe9d9633b24ea560354f4f93d39c6e5f163ea0 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/20/72c28e83f4347959d29f7b3a6c1fc3e4ee6b59 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/24/6b368b986f758630c46dc02b7fa512b53422f7 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/25/b796accd261b9135fd32a2c00785f68edf6c46 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/27/aa6074f652bc6f7078f8647489d9ee8e24f0e2 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/28/c2969d785c1b892c2a96b3f00eba63a59811b3 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/2a/ae95d517d213b660bf4f65a4e0cfae7bb893eb +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/2a/fdf45791a26d42ccead35ace76a8f0b2a56561 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/30/a2f8da47ee947811dc8d993f5a06a45de374f4 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/32/fd627b62fad7cf3b2f9e34ab9777126a0987ad +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/34/9e31b6a3634cea102ce5588b98c11cc1738605 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/34/b6f3a2ee84f39bed4eee57f2c0e0afb994feb1 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/35/1a5f491ab97eee9d1ee699478d75a8bb5d3dc2 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/36/b4a1b7403abc6c360f8fe2cb656ab945254971 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/36/e56a361f526eafa59c5235a5c990bf288b5f9c +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/36/ef43e50009e59db11812c258846d9e38718173 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/39/7ead045fbbcfb17c62019eb18fe21ed05dbee5 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/39/b13be65125556784e44c7a1d9821703c7ab67e +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/3b/507acc7f23391644cc0b824b1e79fd2677a362 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/3b/bd972aa7ad680858f8dfbd0f7fcd97756f0d6f +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/3c/bbe5f4173d165127b9ad96119f1ec24c306ffc +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/3d/9d10d27724657a436c65a6254bfd213d4b3562 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/3f/d6561300938afbb3d11976cf9c8f29549280d9 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/41/dcf4b3bf0460946b2da93776cf9e836d62178f +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/43/dbd49b2ee367c5434dd545e3b5795434f2ef0b +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/45/b1b6178bacbfc997811a998b5cc60c1ea7fac8 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/47/6cbd5a7c5e35cddef2f8a38bdc4896d403b095 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/48/a88fc5806305d0bb0755ee6801161b79696972 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/4f/7afb40dff2153d857fc85748c2eecb85125042 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/50/08ddfcf53c02e82d7eee2e57c38e5672ef89f6 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/53/e0deb1cb4c2c606bced6e7f9a66b0fda60980d +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/56/e4e8b2d5545e0256090f45aa8fc42c5fe067d0 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/57/63d0c52f5c9c69e89d514a1f96034947abe21a +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/57/bd1c0199483ab316235b094543b85edec6c35e +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/58/20a729045d4dc7e37ccaf8aa8eec126850afe2 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/59/380c4c26bdcd4d9b71ae3e2e35f05b3f26c5ab +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/5a/192565abf89c9d765af846ce6d53a92b1ce7ad +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/60/f273eb1c412d916fa3f11318a7da7a9911b52a +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/61/570cec8c061abe74121f27f5face6c69b98f99 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/62/4488173ed2c8936fa5cea3cf5dd3f26a30b86e +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/62/7c81b23b4e56e87b042b650b0103653cc9e34a +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/62/d90ccf8cbefdc2e4fd475e7c6f4f76e9fdf801 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/63/100154b27846e8010e55b6bf4b3d7762c14c5f +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/64/27a4edff08f93d98f511418423f09f2ab90bcd +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/66/6227eeeba24073e63811e89f1449f3d958f183 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/66/c998778721d424bd0aae80602dabbffa93af2e +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/68/6df3072c8b025fb18106ed2df505994ad062a9 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/69/13c452ca319f7cbf6a0836dc10a5bb033c84e4 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/6a/52e747a2b349b128d1490d9e896d2323818eb7 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/6b/7fde264d93a7a0986d394c46c7650d0ce2ab92 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/6c/cebb29b7f3f5b0c889f6dadbf9ff066554587d +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/6d/c2cdf4a84e538e5d4777486aeff87e42f41799 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/6d/ee29dbdcc84edeeacede105110446f3ccac963 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/71/36b2074a2754be8b58127d82250e5b37e3c373 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/72/245a05b0966011cb381e6b32b0465000e969ab +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/72/e4179337639859678ddaecf38b16f33aaec8e1 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/78/063f4c863fc371ec0313303c0a81283b35d9b6 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/78/3d4167bc95c9d2175e0df03ef1c1c880ba75ab +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/79/7ae089b2212a937840e215276005ce76881307 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/7e/5956c806b5edc344d46dab599dec337891ba1f +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/81/8f26b7bf042269729020cf944fc362d66ba27e +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/82/70b319ce4046854fbe7dc41054b6c2d112dab2 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/84/59071b722a255b774a80b27746033f8141ab39 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/85/aee46f478e9afdb84d50a05242c53b04ed2e21 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/86/e288b46f8fe179907e4413f665aeb5053fddb1 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/87/ef1fc3f7f1ddc4d0ab9b3e65381ce9f3388621 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/8b/84f56978e1de8f2ae82abce5f8b3e182d365cd +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/8e/55a7d2b96184030211f20c9b9af201eefcac82 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/91/c69ad88fe0ba94aa7859fb5f7edac5e6f1a3f7 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/94/74152b4b463d70ae5ad07f0c658be3e296026b +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/94/f7dbe88e80c4205a901b71eb8f181974376bba +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/97/1aef09ea939f46b60b9646f8d524c78a9220f4 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/9b/ec5ee2236ee2d5532c36bfd132e23c58fdb69c +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/9d/0df52899fe95279059286d9c0ec42287edc168 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/a1/5389729850729fc7bd78a54f26fce77f30be12 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/a1/906da89d1174f74867800c74c43af36253bd5e +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/a4/63fdd23e5efd713db8a71f316f3a1c7bd60916 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/a5/ec8f74642fbba27f7ea78c53b372ae0c7dedce +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/a7/3e13eafee65c5b8d73ad2d3ea46d0eee82f0d3 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/b0/56be4be89ba6b76949dd641df45bb7036050c8 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/b0/9cd7856d58590578ee1a4f3ad45d1310a97f87 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/b2/18e6a0f0f1c4df8cdefa9852058348abc713b7 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/b3/4f7f271c6d6105e35a6556ffda71d03afe8c96 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/b3/69579064bde9de9a19d114fc33e4e48cc8c0e4 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/b5/61831c7dce8ea51e7ee6b6fa35745f14d8242d +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/b7/2c9e75ab7d0afe594664650aa8f6c772f5ac64 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/bb/81ccc0513f18fc160b54a82861e9a80d23f4f6 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/bb/934eb33bc1a8b85630bf680caffd99560c1b8f +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/bf/67907e337021ebff434e02b19b30a741c144af +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/bf/b54d65922ce1dfda1aaa014913a54e7172d0bc +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/c1/20fc812b9ad311c34a3608512d6a9d976bb48e +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/c1/397c6ed72c4e20ef6b9ab83163e9a6baba5b45 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/c4/cba65f1163661999ee4b8ed23342b63bc1300c +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/c6/7f17e5707313600efcb85e9a3fedea35dba591 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/c6/f32aced880bd165a251cb52b26b0c1107e2141 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/cc/45df1d317a2eb63ff1ff3a5f3b4a9f98fd92b5 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/cd/822b3574a88ebdd1ed82fd6983f37e626d52b4 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/cf/0c0d9c6fb09473aaeb7f7e2edbd770c3f2ef3d +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/d2/992df305f4b56a466a2f221aeb182ddd20f418 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/d6/39e8af592cd75a318d8affddd1bcc70c2095f2 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/d6/9ab1c4aadf279936dd778e8346ba60f74705b6 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/d8/4688b54c0040a30976b3a6540bc47adf7ce680 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/d9/005f2cc7fc4e65f14ed5518276007c08cf2fd0 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/d9/c2403fd166ce791b4e9d0c6792ed8342c71fcd +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/d9/dfa5aee51e92a541b707e8e7baea6f06deff98 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/db/141dbaa93594df2a8156182f361ee4db829359 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/db/3f2cd643292057936230b95cf7ec3046affe11 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/db/ffa8ea7bda721d0cee7b9e4ce5b2ef927733ff +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/dc/c2bdbafb3296e09d9ee4955cfa55d275825f94 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/dc/cdbd4266765d840be2ae35ab1752a0fa312c16 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/dd/87fb5f606fe380d81e6fe3a2c98f9f99e3e09b +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/de/214c626ac2dd2685bfaa0bc0fc20f528d014d7 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/df/e0770424b2a19faf507a501ebfc23be8f54e7b +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/e2/f2f8f4c25e62a297fc55f36acc6b01cfbab76f +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/e3/1356f90ea6dd0577b5e0b40b206319adcbf085 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/e3/5a4dafc50850cacac7bf76c56db2715cbda2c4 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/e4/6c715352db9fe3c887a635f1916df4ca1f4ff9 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/e5/0580a0bd1e1b3d29f834382b80fceb61d5cf0c +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/e9/391ffe371f1cc43b42ef09b705d9c767c2e14f +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/ea/3a18cc75e53792744ef754e05d3f4481768c13 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/ec/40fd8bf8e4c342534a9fc020289e402ba6bc9d +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/ec/d980279432b13f0374b90ca439a6329cdece0f +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/ee/cee64eacaff022dcdc509c0c2b1da492f21060 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/f1/e50757fddc28b445545dc7e2759b54cdd0f42e +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/f4/b64d3107b39e3ad6f540c6607004ea34e6c024 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/f4/ba7f815b886797b73fede071d86e0c134d2bc7 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/f5/61c3c1bf1c9ea9c9d1f556a7be2869f71f3bdf +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/f6/44a8ff56fa035105fc517cbb1ac46c3d8e349a +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/f7/c98ba5c2f903e603b1f5e63d49fbc8a43815cc +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/f9/045a08e96eb76848fc4d68e3e3e687cca39a2d +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/fa/147e6bb78a2e8db241d231295fd7f1ed061af8 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/objects/fc/292e793ecfd42240ac43be407023bd731fa9e7 +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/refs/heads/main +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/refs/remotes/origin/HEAD +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.git/refs/remotes/origin/main +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.gitattributes +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/.gitignore +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/LICENSE +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/README.md +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/__init__.py +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/batman.py +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/brain_atlas.py +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/chat.py +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/correlators.py +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/data/.DS_Store +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/data/db2ls_sql_chtsht.json +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/data/docs_links.json +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/data/email/email_html_template.html +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/data/lang_code_iso639.json +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/data/sns_info.json +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/data/styles/example/style1.pdf +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/data/styles/example/style2.pdf +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/data/styles/example/style3.pdf +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/data/styles/example/style4.pdf +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/data/styles/example/style5.pdf +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/data/styles/example/style6.pdf +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/data/styles/example/style7.pdf +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/data/styles/example/style8.pdf +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/data/styles/example/style9.pdf +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/data/styles/style1.json +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/data/styles/style10.json +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/data/styles/style11.json +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/data/styles/style12.json +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/data/styles/style2.json +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/data/styles/style3.json +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/data/styles/style4.json +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/data/styles/style5.json +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/data/styles/style6.json +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/data/styles/style7.json +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/data/styles/style8.json +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/data/styles/style9.json +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/data/usages_sns.json +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/db2ls.py +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/doc.py +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/export_requirements.py +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/freqanalysis.py +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/ich2ls.py +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/netfinder.py +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/ocr.py +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/setuptools-70.1.0-py3-none-any.whl +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/sleep_events_detectors.py +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/stats.py +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/translator.py +0 -0
- {py2ls-0.2.4 → py2ls-0.2.4.2}/py2ls/wb_detector.py +0 -0
@@ -0,0 +1,272 @@
|
|
1
|
+
import GEOparse
|
2
|
+
from typing import Union
|
3
|
+
import pandas as pd
|
4
|
+
import os
|
5
|
+
import logging
|
6
|
+
from . import ips
|
7
|
+
def load_geo(
|
8
|
+
datasets: Union[list, str] = ["GSE00000", "GSE00001"], dir_save: str = "./datasets", verbose=False
|
9
|
+
) -> dict:
|
10
|
+
"""
|
11
|
+
Check if GEO datasets are already in the directory, and download them if not.
|
12
|
+
|
13
|
+
Parameters:
|
14
|
+
datasets (list): List of GEO dataset IDs to download.
|
15
|
+
dir_save (str): Directory where datasets will be stored.
|
16
|
+
|
17
|
+
Returns:
|
18
|
+
dict: A dictionary containing the GEO objects for each dataset.
|
19
|
+
"""
|
20
|
+
use_str="""
|
21
|
+
get_meta(geo: dict, dataset: str = "GSE25097")
|
22
|
+
get_expression_data(geo: dict, dataset: str = "GSE25097")
|
23
|
+
get_probe(geo: dict, dataset: str = "GSE25097", platform_id: str = "GPL10687")
|
24
|
+
get_data(geo: dict, dataset: str = "GSE25097")
|
25
|
+
"""
|
26
|
+
print(f"you could do further: \n{use_str}")
|
27
|
+
if not verbose:
|
28
|
+
logging.getLogger("GEOparse").setLevel(logging.WARNING)
|
29
|
+
else:
|
30
|
+
logging.getLogger("GEOparse").setLevel(logging.DEBUG)
|
31
|
+
# Create the directory if it doesn't exist
|
32
|
+
if not os.path.exists(dir_save):
|
33
|
+
os.makedirs(dir_save)
|
34
|
+
print(f"Created directory: {dir_save}")
|
35
|
+
if isinstance(datasets, str):
|
36
|
+
datasets = [datasets]
|
37
|
+
geo_data = {}
|
38
|
+
for dataset in datasets:
|
39
|
+
# Check if the dataset file already exists in the directory
|
40
|
+
dataset_file = os.path.join(dir_save, f"{dataset}_family.soft.gz")
|
41
|
+
|
42
|
+
if not os.path.isfile(dataset_file):
|
43
|
+
print(f"\n\nDataset {dataset} not found locally. Downloading...")
|
44
|
+
geo = GEOparse.get_GEO(geo=dataset, destdir=dir_save)
|
45
|
+
else:
|
46
|
+
print(f"\n\nDataset {dataset} already exists locally. Loading...")
|
47
|
+
geo = GEOparse.get_GEO(filepath=dataset_file)
|
48
|
+
|
49
|
+
geo_data[dataset] = geo
|
50
|
+
|
51
|
+
return geo_data
|
52
|
+
|
53
|
+
|
54
|
+
def get_meta(geo: dict, dataset: str = "GSE25097",verbose=True) -> pd.DataFrame:
|
55
|
+
"""
|
56
|
+
df_meta = get_meta(geo, dataset="GSE25097")
|
57
|
+
Extracts metadata from a specific GEO dataset and returns it as a DataFrame.
|
58
|
+
The function dynamically extracts all available metadata fields from the given dataset.
|
59
|
+
|
60
|
+
Parameters:
|
61
|
+
geo (dict): A dictionary containing the GEO objects for different datasets.
|
62
|
+
dataset (str): The name of the dataset to extract metadata from (default is "GSE25097").
|
63
|
+
|
64
|
+
Returns:
|
65
|
+
pd.DataFrame: A DataFrame containing structured metadata from the specified GEO dataset.
|
66
|
+
"""
|
67
|
+
# Check if the dataset is available in the provided GEO dictionary
|
68
|
+
if dataset not in geo:
|
69
|
+
raise ValueError(f"Dataset '{dataset}' not found in the provided GEO data.")
|
70
|
+
|
71
|
+
# List to store metadata dictionaries
|
72
|
+
meta_list = []
|
73
|
+
|
74
|
+
# Extract the GEO object for the specified dataset
|
75
|
+
geo_obj = geo[dataset]
|
76
|
+
|
77
|
+
# Overall Study Metadata
|
78
|
+
study_meta = geo_obj.metadata
|
79
|
+
study_metadata = {key: study_meta[key] for key in study_meta.keys()}
|
80
|
+
|
81
|
+
# Platform Metadata
|
82
|
+
for platform_id, platform in geo_obj.gpls.items():
|
83
|
+
platform_metadata = {
|
84
|
+
key: platform.metadata[key] for key in platform.metadata.keys()
|
85
|
+
}
|
86
|
+
platform_metadata["platform_id"] = platform_id # Include platform ID
|
87
|
+
|
88
|
+
# Sample Metadata
|
89
|
+
for sample_id, sample in geo_obj.gsms.items():
|
90
|
+
sample_metadata = {
|
91
|
+
key: sample.metadata[key] for key in sample.metadata.keys()
|
92
|
+
}
|
93
|
+
sample_metadata["sample_id"] = sample_id # Include sample ID
|
94
|
+
# Combine all metadata into a single dictionary
|
95
|
+
combined_meta = {
|
96
|
+
"dataset": dataset,
|
97
|
+
**{
|
98
|
+
k: (
|
99
|
+
v[0]
|
100
|
+
if isinstance(v, list) and len(v) == 1
|
101
|
+
else ", ".join(map(str, v))
|
102
|
+
)
|
103
|
+
for k, v in study_metadata.items()
|
104
|
+
}, # Flatten study metadata
|
105
|
+
**platform_metadata, # Unpack platform metadata
|
106
|
+
**{
|
107
|
+
k: (
|
108
|
+
v[0]
|
109
|
+
if isinstance(v, list) and len(v) == 1
|
110
|
+
else "".join(map(str, v))
|
111
|
+
)
|
112
|
+
for k, v in sample_metadata.items()
|
113
|
+
}, # Flatten sample metadata
|
114
|
+
}
|
115
|
+
|
116
|
+
# Append the combined metadata to the list
|
117
|
+
meta_list.append(combined_meta)
|
118
|
+
|
119
|
+
# Convert the list of dictionaries to a DataFrame
|
120
|
+
meta_df = pd.DataFrame(meta_list)
|
121
|
+
if verbose:
|
122
|
+
print(
|
123
|
+
f"Meta info columns for dataset '{dataset}': \n{sorted(meta_df.columns.tolist())}"
|
124
|
+
)
|
125
|
+
return meta_df
|
126
|
+
|
127
|
+
def get_probe(geo: dict, dataset: str = "GSE25097", platform_id: str = None, verbose=True):
|
128
|
+
"""
|
129
|
+
df_probe = get_probe(geo, dataset="GSE25097", platform_id: str = "GPL10687")
|
130
|
+
"""
|
131
|
+
# try to find the platform_id from meta
|
132
|
+
if platform_id is None:
|
133
|
+
df_meta=get_meta(geo=geo, dataset=dataset,verbose=False)
|
134
|
+
platform_id=df_meta["platform_id"].unique().tolist()
|
135
|
+
platform_id = platform_id[0] if len(platform_id)==1 else platform_id
|
136
|
+
print(platform_id)
|
137
|
+
df_probe = geo[dataset].gpls[platform_id].table
|
138
|
+
if df_probe.empty:
|
139
|
+
print(f"above is meta info, failed to find the probe info. 看一下是不是在单独的文件中包含了probe信息")
|
140
|
+
return get_meta(geo, dataset, verbose=True)
|
141
|
+
if verbose:
|
142
|
+
print(f"columns in the probe table: \n{sorted(df_probe.columns.tolist())}")
|
143
|
+
return df_probe
|
144
|
+
|
145
|
+
|
146
|
+
def get_expression_data(geo: dict, dataset: str = "GSE25097") -> pd.DataFrame:
|
147
|
+
"""
|
148
|
+
df_expression = get_expression_data(geo,dataset="GSE25097")
|
149
|
+
只包含表达量数据,并没有考虑它的probe和其它的meta
|
150
|
+
|
151
|
+
Extracts expression values from GEO datasets and returns it as a DataFrame.
|
152
|
+
|
153
|
+
Parameters:
|
154
|
+
geo (dict): A dictionary containing GEO objects for each dataset.
|
155
|
+
|
156
|
+
Returns:
|
157
|
+
pd.DataFrame: A DataFrame containing expression data from the GEO datasets.
|
158
|
+
"""
|
159
|
+
expression_dataframes = []
|
160
|
+
try:
|
161
|
+
expression_values = geo[dataset].pivot_samples("VALUE")
|
162
|
+
except:
|
163
|
+
for sample_id, sample in geo[dataset].gsms.items():
|
164
|
+
if hasattr(sample, "table"):
|
165
|
+
expression_values = (
|
166
|
+
sample.table.T
|
167
|
+
) # Transpose for easier DataFrame creation
|
168
|
+
expression_values["dataset"] = dataset
|
169
|
+
expression_values["sample_id"] = sample_id
|
170
|
+
return expression_values
|
171
|
+
|
172
|
+
|
173
|
+
|
174
|
+
def get_data(geo: dict, dataset: str = "GSE25097",verbose=True):
|
175
|
+
# get probe info
|
176
|
+
df_probe = get_probe(geo,dataset=dataset,verbose=False)
|
177
|
+
# get expression values
|
178
|
+
df_expression = get_expression_data(geo, dataset=dataset )
|
179
|
+
print(
|
180
|
+
f"df_expression.shape: {df_expression.shape} \ndf_probe.shape: {df_probe.shape}"
|
181
|
+
)
|
182
|
+
if any([df_probe.empty, df_expression.empty]):
|
183
|
+
print(f"above is meta info, failed to find the probe info. 看一下是不是在单独的文件中包含了probe信息")
|
184
|
+
return get_meta(geo, dataset, verbose=True)
|
185
|
+
df_exp = pd.merge(
|
186
|
+
df_probe,
|
187
|
+
df_expression,
|
188
|
+
left_on=df_probe.columns.tolist()[0],
|
189
|
+
right_index=True,
|
190
|
+
how="outer",
|
191
|
+
)
|
192
|
+
|
193
|
+
# get meta info
|
194
|
+
df_meta=get_meta(geo, dataset=dataset,verbose=False)
|
195
|
+
col_rm=['channel_count','contact_web_link','contact_address', 'contact_city', 'contact_country', 'contact_department', 'contact_email', 'contact_institute', 'contact_laboratory', 'contact_name', 'contact_phone', 'contact_state', 'contact_zip/postal_code', 'contributor', 'manufacture_protocol', 'taxid','web_link']
|
196
|
+
# rm unrelavent columns
|
197
|
+
df_meta = df_meta.drop(columns=[col for col in col_rm if col in df_meta.columns])
|
198
|
+
# sorte columns
|
199
|
+
df_meta = df_meta.reindex(sorted(df_meta.columns),axis=1)
|
200
|
+
# find a proper column
|
201
|
+
col_sample_id = ips.strcmp("sample_id",df_meta.columns.tolist())[0]
|
202
|
+
df_meta.set_index(col_sample_id, inplace=True) # set gene symbol as index
|
203
|
+
|
204
|
+
col_gene_symbol = ips.strcmp("GeneSymbol",df_exp.columns.tolist())[0]
|
205
|
+
# select the 'GSM' columns
|
206
|
+
col_gsm = df_exp.columns[df_exp.columns.str.startswith("GSM")].tolist()
|
207
|
+
df_exp.set_index(col_gene_symbol, inplace=True)
|
208
|
+
df_exp=df_exp[col_gsm].T # transpose, so that could add meta info
|
209
|
+
|
210
|
+
df_merged=ips.df_merge(df_meta,df_exp)
|
211
|
+
if verbose:
|
212
|
+
print(f"\ndataset:'{dataset}' n_sample = {df_merged.shape[0]}, n_gene={df_exp.shape[1]}")
|
213
|
+
display(df_merged.sample(10))
|
214
|
+
return df_merged
|
215
|
+
|
216
|
+
def split_at_lower_upper(lst):
|
217
|
+
"""
|
218
|
+
将一串list,从全是lowercase,然后就是大写或者nan的地方分隔成两个list
|
219
|
+
"""
|
220
|
+
for i in range(len(lst) - 1):
|
221
|
+
if isinstance(lst[i], str) and lst[i].islower():
|
222
|
+
next_item = lst[i + 1]
|
223
|
+
if isinstance(next_item, str) and next_item.isupper():
|
224
|
+
# Found the split point: lowercase followed by uppercase
|
225
|
+
return lst[: i + 1], lst[i + 1 :]
|
226
|
+
elif pd.isna(next_item):
|
227
|
+
# NaN case after a lowercase string
|
228
|
+
return lst[: i + 1], lst[i + 1 :]
|
229
|
+
return lst, []
|
230
|
+
|
231
|
+
def get_condition(
|
232
|
+
data: pd.DataFrame,
|
233
|
+
column:str="characteristics_ch1",#在哪一行进行分类
|
234
|
+
column_new:str="condition",# 新col的命名
|
235
|
+
by:str="tissue: tumor liver",# 通过by来命名
|
236
|
+
by_not:str=": tumor", # 健康的选择条件
|
237
|
+
by_name:str="non-tumor", # 健康的命名
|
238
|
+
by_not_name:str="tumor", # 不健康的命名
|
239
|
+
inplace: bool = True, #replace the data
|
240
|
+
verbose:bool = True
|
241
|
+
):
|
242
|
+
"""
|
243
|
+
Add a new column to the DataFrame based on the presence of a specific substring in another column.
|
244
|
+
|
245
|
+
Parameters
|
246
|
+
----------
|
247
|
+
data : pd.DataFrame
|
248
|
+
The input DataFrame containing the data.
|
249
|
+
column : str, optional
|
250
|
+
The name of the column in which to search for the substring (default is 'characteristics_ch1').
|
251
|
+
column_new : str, optional
|
252
|
+
The name of the new column to be created (default is 'condition').
|
253
|
+
by : str, optional
|
254
|
+
The substring to search for in the specified column (default is 'heal').
|
255
|
+
|
256
|
+
"""
|
257
|
+
# first check the content in column
|
258
|
+
content=data[column].unique().tolist()
|
259
|
+
if verbose:
|
260
|
+
if len(content)>10:
|
261
|
+
display(content[:10])
|
262
|
+
else:
|
263
|
+
display(content)
|
264
|
+
# 优先by
|
265
|
+
if by:
|
266
|
+
data[column_new] = data[column].apply(lambda x: by_name if by in x else by_not_name)
|
267
|
+
elif by_not:
|
268
|
+
data[column_new] = data[column].apply(lambda x: by_not_name if not by_not in x else by_name)
|
269
|
+
if verbose:
|
270
|
+
display(data)
|
271
|
+
if not inplace:
|
272
|
+
return data
|