Update notebooks and scripts
This commit is contained in:
parent
aedd94d4af
commit
69afa83517
41 changed files with 2896 additions and 469 deletions
7
Pipfile
7
Pipfile
|
@ -12,7 +12,6 @@ networkx = "*"
|
||||||
jupyterlab = "*"
|
jupyterlab = "*"
|
||||||
altair = "*"
|
altair = "*"
|
||||||
beakerx = "*"
|
beakerx = "*"
|
||||||
dionysus = "*"
|
|
||||||
ipyparallel = "*"
|
ipyparallel = "*"
|
||||||
dask = {extras = ["complete"]}
|
dask = {extras = ["complete"]}
|
||||||
graphviz = "*"
|
graphviz = "*"
|
||||||
|
@ -22,5 +21,11 @@ bokeh = "*"
|
||||||
scikit-learn = "*"
|
scikit-learn = "*"
|
||||||
sklearn_tda = {git = "https://github.com/MathieuCarriere/sklearn_tda"}
|
sklearn_tda = {git = "https://github.com/MathieuCarriere/sklearn_tda"}
|
||||||
cython = "*"
|
cython = "*"
|
||||||
|
dionysus = {git = "https://github.com/mrzv/dionysus.git"}
|
||||||
|
nltk = "*"
|
||||||
|
pyclustering = "*"
|
||||||
|
dill = "*"
|
||||||
|
python-language-server = {extras = ["all"]}
|
||||||
|
"network2tikz" = "*"
|
||||||
|
|
||||||
[dev-packages]
|
[dev-packages]
|
||||||
|
|
613
Pipfile.lock
generated
613
Pipfile.lock
generated
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"_meta": {
|
"_meta": {
|
||||||
"hash": {
|
"hash": {
|
||||||
"sha256": "05e3399522b22302218e7257393571823c8820f342c48adbf3bd490988ad16f4"
|
"sha256": "09d52d6813195a12528ce0bdf157449a71b8491677818225cf22db63182017d1"
|
||||||
},
|
},
|
||||||
"pipfile-spec": 6,
|
"pipfile-spec": 6,
|
||||||
"requires": {},
|
"requires": {},
|
||||||
|
@ -16,11 +16,17 @@
|
||||||
"default": {
|
"default": {
|
||||||
"altair": {
|
"altair": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:7926e2e1680457d70d52c5157468770f28b6ab6b126ba65fbd3824ebf6422e8b",
|
"sha256:6bdbc62a9b3fc22212e548a2a5f068c0dd378a9f5d99f1016346d7637894cfa9",
|
||||||
"sha256:e8b222588dde98ec614e6808357fde7fa321118db44cc909df2bf30158d931c0"
|
"sha256:c158699026eb5a19f95c1ca742e2e82bc20c27013ef5785f10836283e2233f8a"
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"version": "==2.1.0"
|
"version": "==2.2.2"
|
||||||
|
},
|
||||||
|
"autopep8": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:655e3ee8b4545be6cfed18985f581ee9ecc74a232550ee46e9797b6fbf4f336d"
|
||||||
|
],
|
||||||
|
"version": "==1.4"
|
||||||
},
|
},
|
||||||
"backcall": {
|
"backcall": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -31,17 +37,17 @@
|
||||||
},
|
},
|
||||||
"beakerx": {
|
"beakerx": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:2a319d54a80d585652a36b2e3ab130a9e848544048379b2d2b5c01884d5664b2"
|
"sha256:e71f041a6b8bcbd7700921d28d11f166daa0c9ea17847d75f8572b7d4e6484cc"
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"version": "==0.21.1"
|
"version": "==1.1.0"
|
||||||
},
|
},
|
||||||
"bleach": {
|
"bleach": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:b8fa79e91f96c2c2cd9fd1f9eda906efb1b88b483048978ba62fef680e962b34",
|
"sha256:0ee95f6167129859c5dce9b1ca291ebdb5d8cd7e382ca0e237dfd0dad63f63d8",
|
||||||
"sha256:eb7386f632349d10d9ce9d4a838b134d4731571851149f9cc2c05a9a837a9a44"
|
"sha256:24754b9a7d530bf30ce7cbc805bc6cce785660b4a10ff3a43633728438c105ab"
|
||||||
],
|
],
|
||||||
"version": "==2.1.3"
|
"version": "==2.1.4"
|
||||||
},
|
},
|
||||||
"bokeh": {
|
"bokeh": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -59,10 +65,10 @@
|
||||||
},
|
},
|
||||||
"cloudpickle": {
|
"cloudpickle": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:54858c7b7dc763ed894ff91059c1d0b017d593fe23850d3d8d75f47d98398197",
|
"sha256:6ea4b548f61a4f616b065182716318c7dced8c053517f35ac59cec22802daf3d",
|
||||||
"sha256:ac7acd0dcb1c52fa14873f801efe0c53e6457bcc5f01542cb445a6515d9a4b72"
|
"sha256:ce26435f16a855dfbebb1f7f8d967884080b167ee6374d7ff0951aaf2455972b"
|
||||||
],
|
],
|
||||||
"version": "==0.5.3"
|
"version": "==0.5.5"
|
||||||
},
|
},
|
||||||
"cycler": {
|
"cycler": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -73,51 +79,45 @@
|
||||||
},
|
},
|
||||||
"cython": {
|
"cython": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:0344e9352b0915910e212c38403b63f902ce1cba75dde7a43a9112ff960eb2a5",
|
"sha256:022592d419fc754509d0e0461eb2958dbaa45fb60d51c8a61778c58994edbe36",
|
||||||
"sha256:0a390c39e912fc5f82d5feae2d16ea061971407099e1efb0fecb255cb96fbeff",
|
"sha256:07659f4c57582104d9486c071de512fbd7e087a3a630535298442cc0e20a3f5a",
|
||||||
"sha256:0f2b2e09f94c498f555935e732b7321b5f62f00e7a789238f6c5ddd66987a54d",
|
"sha256:13c73e2ffa93a615851e03fad97591954d143b5b62361b9adef81f46a31cd8ef",
|
||||||
"sha256:15614592616b6dd5e919e158796350ebeba6cb6b5d2998cfff41b53f568c8355",
|
"sha256:13eab5a2835a84ff62db343035603044c908d2b3b6eec09d67fdf9970acf7ac9",
|
||||||
"sha256:1aae6d6e9858888144cea147eb5e677830f45faaff3d305d77378c3cba55f526",
|
"sha256:183b35a48f58862c4ec1e821f07bb7b1156c8c8559c85c32ae086f28947474eb",
|
||||||
"sha256:200583297f23e558744bc4688d8a2b2605ab6ad7d1494a9fd8c8094ad65ebf3c",
|
"sha256:2f526b0887128bf20ab2acc905a975f62b5a04ab2f63ecbe5a30fc28285d0e0c",
|
||||||
"sha256:295facc211a6b55db9979455b856180f2839be22ab767ffdea55986bee83ca9f",
|
"sha256:32de8637f5e6c5a76667bc7c8fc644bd9314dc19af36db8ce30a0b92ada0f642",
|
||||||
"sha256:36c16bf39280fe857213d8da31c07a6179d3878c3dc2e435dce0974b9f8f0729",
|
"sha256:4172c183ef4fb2ace6a29cdf7fc9200c5a471a7f775ff691975b774bd9ed3ad2",
|
||||||
"sha256:3fef8dfa9cf86ab7814ca31369374ddd5b9524f54406aa83b53b5937965b8e88",
|
"sha256:553956ec06ecbd731ef0c538eb28a5b46bedea7ab89b18237ff28b4b99d65eee",
|
||||||
"sha256:439d233d3214e3d69c033a9a93516758f2c8a03e83ea51ae14b6eed13687d224",
|
"sha256:660eeb6870687fd3eda91e00ba4e72220545c254c8c4d967fd0c910f4fbb8cbc",
|
||||||
"sha256:455ab39c6c0849a6c008fcdf2fae42475f18d0801a3be229e8f75367bbe3b325",
|
"sha256:693a8619ef066ece055ed065a15cf440f9d3ebd1bca60e87ea19144833756433",
|
||||||
"sha256:56821e3791209e6a11992e294afbf7e3dcda7d4fd54d06396dd521928d3d14fe",
|
"sha256:759c799e9ef418f163b5412e295e14c0a48fe3b4dcba9ab8aab69e9f511cfefd",
|
||||||
"sha256:62b594584889b33bbea7e71f9d7c5c6539091b341334ef7ca1ae7e30a9dd3e15",
|
"sha256:827d3a91b7a7c31ce69e5974496fd9a8ba28eb498b988affb66d0d30de11d934",
|
||||||
"sha256:6468345ee884a244d3b5250dad8696015ed8c6d24379b64767340379c1ff158a",
|
"sha256:87e57b5d730cfab225d95e7b23abbc0c6f77598bd66639e93c73ce8afbae6f38",
|
||||||
"sha256:70f81a75fb25c1c3c61843e3a6fe771a76c4ebf4d154455a7eff0740ad47dff4",
|
"sha256:9400e5db8383346b0694a3e794d8bded18a27b21123516dcdf4b79d7ec28e98b",
|
||||||
"sha256:8011090beb09251cb4ece1e14263e574b38eda696b788552b369ad343373d0e9",
|
"sha256:9ec27681c5b1b457aacb1cbda5db04aa28b76da2af6e1e1fd15f233eafe6a0b0",
|
||||||
"sha256:80d6a0369333a162fc32a22637f5870f3e87fb038c7b58860bbe00b05b58aa62",
|
"sha256:ae4784f040a3313c8bd00c8d04934b7ade63dc59692d8f00a5235be8ed72a445",
|
||||||
"sha256:85b04e32af58a3c008c0ba8169017770aaa342a5972b748f81d043d66363e437",
|
"sha256:b2ba8310ebd3c0e0b884d5e95bbd99d467d6af922acd1e44fe4b819839b2150e",
|
||||||
"sha256:951cbd5e479aaff70ea7aa09eb8c50e2c98c9bc08abc5a72e504c90ebd4564bb",
|
"sha256:b64575241f64f6ec005a4d4137339fb0ba5e156e826db2fdb5f458060d9979e0",
|
||||||
"sha256:9c4db4cfc8ac219b50484a505e3327142db04d5e9954aaed00ab729ef4beb142",
|
"sha256:c78ad0df75a9fc03ab28ca1b950c893a208c451a18f76796c3e25817d6994001",
|
||||||
"sha256:9ed273d82116fa148c92901b9639030e087979d455982bd7bf727fb486c0bd17",
|
"sha256:cdbb917e41220bd3812234dbe59d15391adbc2c5d91ae11a5273aab9e32ba7ec",
|
||||||
"sha256:a1af59e6c9b4acc07c429d8495fc016a35e0a1270f28c57317352f512df7e214",
|
"sha256:d2223a80c623e2a8e97953ab945dfaa9385750a494438dcb55562eb1ddd9565a",
|
||||||
"sha256:b894ff4daf8dfaf657bf2d5e7190a4de11b2400b1e0fb0902974d35c23a26dea",
|
"sha256:e22f21cf92a9f8f007a280e3b3462c886d9068132a6c698dec10ad6125e3ca1e",
|
||||||
"sha256:bd6ce209cc00cac2a7e216d4145a6b323b30d1c7414e369fbd427bf07d966f2a",
|
"sha256:ea5c16c48e561f4a6f6b8c24807494b77a79e156b8133521c400f22ca712101b",
|
||||||
"sha256:c2659981150b4de04397dcfd4bff64e384d3ba25af60d1b22820fdf108298cb2",
|
"sha256:ee7a9614d51fe16e32ca5befe72e0808baff481791728449d0b17c8b0fe29eb9",
|
||||||
"sha256:c347d0a129c9742fefeaecf2455576c5ae73362aa01a27cea26fac237b7e2a87",
|
"sha256:ef86de9299e4ab2ebb129fb84b886bf40b9aced9807c6d6d5f28b46fb905f82c",
|
||||||
"sha256:c981a750858f1727995acf861ab030b267d264ca6efda2f01104941187a3675f",
|
"sha256:f3e4860f5458a9875caa3de65e255720c0ed2ce71f0bcdab02497b32104f9db8",
|
||||||
"sha256:cc4152b19ec168391f7815d24b70c8911829ba281bd5fcd98cab9dc21abe62ff",
|
"sha256:fc6c20a8ac22202a779ad4c59756647be0826993d2151a03c015e76d2368ae5f"
|
||||||
"sha256:d0f5b1668e7f7f6fc9849f49a20c5db10562a0ab29cd66818894dfebbca7b304",
|
|
||||||
"sha256:d7152006ed1a3adb8f978077b57d237ddafa188240af53cd72b5c79e4ed000e3",
|
|
||||||
"sha256:e5f877472993474296125c22b84c334b550010815e513cccce73da854a132d64",
|
|
||||||
"sha256:e7c2c87ff2f99ed4be1bb046d6eddfb388af627928037f9e0a420c05daaf14ed",
|
|
||||||
"sha256:edd7d499685655031be5b4d33005096b6345f81eeb7ab9d2dd415db0c7bcf64e",
|
|
||||||
"sha256:f99a777fda569a88deea863eac2722b5e88957c4d5f4413949740da791857ac9"
|
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"version": "==0.28.3"
|
"version": "==0.28.5"
|
||||||
},
|
},
|
||||||
"dask": {
|
"dask": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:b50b435c51bf5ca30c2667d0d92649765b732a2e6bebe7e219e6dd3fe8d7ac4e",
|
"sha256:692924fbd5894afd1c71a73af974aa86bd4d07b0620e56af2d7d329900cf384a",
|
||||||
"sha256:b89dc77ef23c380005db9441c3c42010fef47034c687f8d93d0e2619efa060c9"
|
"sha256:aae1f237870c01773bca5a75289f10166b84e13b9e966d8431e945f1f1febb99"
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"version": "==0.18.1"
|
"version": "==0.19.1"
|
||||||
},
|
},
|
||||||
"decorator": {
|
"decorator": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -126,21 +126,22 @@
|
||||||
],
|
],
|
||||||
"version": "==4.3.0"
|
"version": "==4.3.0"
|
||||||
},
|
},
|
||||||
"dionysus": {
|
"dill": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:3348014522b5166c51802c4e3e735685005ca098895debd000387c1f9de0987e",
|
"sha256:624dc244b94371bb2d6e7f40084228a2edfff02373fe20e018bef1ee92fdd5b3"
|
||||||
"sha256:757fbc7cdfe69e7b267255a8b36456e9447830d1838a23cd6cfaed7da77083da",
|
|
||||||
"sha256:a5c8a18b6e9be0f8ae3eb12edff1c0b4cf931ae18479106f91fbc9b27e458155"
|
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"version": "==2.0.5"
|
"version": "==0.2.8.2"
|
||||||
|
},
|
||||||
|
"dionysus": {
|
||||||
|
"git": "https://github.com/mrzv/dionysus.git"
|
||||||
},
|
},
|
||||||
"distributed": {
|
"distributed": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:6dcd885ea3b92bdc5af4ebb82ef37c073e60c9cdd24bc97d270a1cfed970e86b",
|
"sha256:2ef5a9612bcd06fe1bfdb4ca741834a87ba199e3bfe615f21e490e172fbd1a3f",
|
||||||
"sha256:73b992604118c1489f621586209a50c75d1df146e7eccbffbc790ac028a97ca4"
|
"sha256:9d4693442efe40e05e4304fe6d8174989c6eb4bad1afe70480c98263ef8e1cdb"
|
||||||
],
|
],
|
||||||
"version": "==1.22.0"
|
"version": "==1.23.1"
|
||||||
},
|
},
|
||||||
"entrypoints": {
|
"entrypoints": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -149,13 +150,19 @@
|
||||||
],
|
],
|
||||||
"version": "==0.2.3"
|
"version": "==0.2.3"
|
||||||
},
|
},
|
||||||
|
"future": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:e39ced1ab767b5936646cedba8bcce582398233d6a627067d4c6a454c90cfedb"
|
||||||
|
],
|
||||||
|
"version": "==0.16.0"
|
||||||
|
},
|
||||||
"graphviz": {
|
"graphviz": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:4958a19cbd8461757a08db308a4a15c3d586660417e1e364f0107d2fe481689f",
|
"sha256:310bacfb969f0ac7c872610500e017c3e82b24a8abd33d289e99af162de30cb8",
|
||||||
"sha256:7caa53f0b0be42c5f2eaa3f3d71dcc863b15bacceb5d531c2ad7519e1980ff82"
|
"sha256:865afa6ab9775cf29db03abd8e571a164042c726c35a1b3c1e2b8c4c645e2993"
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"version": "==0.8.4"
|
"version": "==0.9"
|
||||||
},
|
},
|
||||||
"heapdict": {
|
"heapdict": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -172,11 +179,11 @@
|
||||||
},
|
},
|
||||||
"ipykernel": {
|
"ipykernel": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:395f020610e33ffa0b0c9c0cd1a1d927d51ab9aa9f30a7ae36bb0c908a33e89c",
|
"sha256:00d88b7e628e4e893359119b894451611214bce09776a3bf8248fe42cb48ada6",
|
||||||
"sha256:935941dba29d856eee34b8b5261d971bd5012547239ed73ddfff099143748c37",
|
"sha256:a706b975376efef98b70e10cd167ab9506cf08a689d689a3c7daf344c15040f6",
|
||||||
"sha256:c091449dd0fad7710ddd9c4a06e8b9e15277da306590bc07a3a1afa6b4453c8f"
|
"sha256:c5a498c70f7765c34f3397cf943b069057f5bef4e0218e4cfbb733e9f38fa5fa"
|
||||||
],
|
],
|
||||||
"version": "==4.8.2"
|
"version": "==4.9.0"
|
||||||
},
|
},
|
||||||
"ipyparallel": {
|
"ipyparallel": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -188,10 +195,11 @@
|
||||||
},
|
},
|
||||||
"ipython": {
|
"ipython": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:a0c96853549b246991046f32d19db7140f5b1a644cc31f0dc1edc86713b7676f",
|
"sha256:007dcd929c14631f83daff35df0147ea51d1af420da303fd078343878bd5fb62",
|
||||||
"sha256:eca537aa61592aca2fef4adea12af8e42f5c335004dfa80c78caf80e8b525e5c"
|
"sha256:b0f2ef9eada4a68ef63ee10b6dde4f35c840035c50fd24265f8052c98947d5a4"
|
||||||
],
|
],
|
||||||
"version": "==6.4.0"
|
"markers": "python_version >= '3.3'",
|
||||||
|
"version": "==6.5.0"
|
||||||
},
|
},
|
||||||
"ipython-genutils": {
|
"ipython-genutils": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -202,10 +210,10 @@
|
||||||
},
|
},
|
||||||
"ipywidgets": {
|
"ipywidgets": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:9985e91c300f7bb41ca97627ed8a8ce22750584cefd023ffbe4b0c18edb84605",
|
"sha256:ba46e7228b951191c2288478a6f321c67013c0674aff074c8ad32a9723729e1d",
|
||||||
"sha256:ab9869cda5af7ba449d8f707b29b7e97a7db97d6366805d6b733338f51096f54"
|
"sha256:d2bea16c0f08df978f63b58c9e91ac4c4bcc0ba5f90ca9a34c310678597542c3"
|
||||||
],
|
],
|
||||||
"version": "==7.2.1"
|
"version": "==7.4.1"
|
||||||
},
|
},
|
||||||
"jedi": {
|
"jedi": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -260,18 +268,18 @@
|
||||||
},
|
},
|
||||||
"jupyterlab": {
|
"jupyterlab": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:6a1af69fe0c0890891b5bb4cb9914edca68ed59b00ed50cd2bc78e230c739b55",
|
"sha256:86854ad08e10aac67d2092051caba7831600c75df8c8ded3e0ddf96861242048",
|
||||||
"sha256:88290656a2db2e38ef913a257ec283f3b5bd99144ed3d52899c9af7030077554"
|
"sha256:a85dcbf06febeaaaeace5a324e672e380738ac98c088792f675bef94420f23e2"
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"version": "==0.32.1"
|
"version": "==0.34.7"
|
||||||
},
|
},
|
||||||
"jupyterlab-launcher": {
|
"jupyterlab-launcher": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:c78646afa354856a7ba3d9583122b89603d24587126f4c49a04dd42f50c831ec",
|
"sha256:bd91a0938d415fed3a9214aa918a66dd90ccff0c5b59c8a73134b1e6afd857c6",
|
||||||
"sha256:d6308617fbdb3949c76356e8149c9835b65b01653fdefd983085c61d75f3c810"
|
"sha256:f880eada0b8b1f524d5951dc6fcae0d13b169897fc8a247d75fb5beadd69c5f0"
|
||||||
],
|
],
|
||||||
"version": "==0.10.5"
|
"version": "==0.13.1"
|
||||||
},
|
},
|
||||||
"kiwisolver": {
|
"kiwisolver": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -285,18 +293,23 @@
|
||||||
"sha256:4329008a167fac233e398e8a600d1b91539dc33c5a3eadee84c0d4b04d4494fa",
|
"sha256:4329008a167fac233e398e8a600d1b91539dc33c5a3eadee84c0d4b04d4494fa",
|
||||||
"sha256:45813e0873bbb679334a161b28cb9606d9665e70561fd6caa8863e279b5e464b",
|
"sha256:45813e0873bbb679334a161b28cb9606d9665e70561fd6caa8863e279b5e464b",
|
||||||
"sha256:53a5b27e6b5717bdc0125338a822605084054c80f382051fb945d2c0e6899a20",
|
"sha256:53a5b27e6b5717bdc0125338a822605084054c80f382051fb945d2c0e6899a20",
|
||||||
|
"sha256:574f24b9805cb1c72d02b9f7749aa0cc0b81aa82571be5201aa1453190390ae5",
|
||||||
"sha256:66f82819ff47fa67a11540da96966fb9245504b7f496034f534b81cacf333861",
|
"sha256:66f82819ff47fa67a11540da96966fb9245504b7f496034f534b81cacf333861",
|
||||||
"sha256:79e5fe3ccd5144ae80777e12973027bd2f4f5e3ae8eb286cabe787bed9780138",
|
"sha256:79e5fe3ccd5144ae80777e12973027bd2f4f5e3ae8eb286cabe787bed9780138",
|
||||||
|
"sha256:83410258eb886f3456714eea4d4304db3a1fc8624623fc3f38a487ab36c0f653",
|
||||||
"sha256:8b6a7b596ce1d2a6d93c3562f1178ebd3b7bb445b3b0dd33b09f9255e312a965",
|
"sha256:8b6a7b596ce1d2a6d93c3562f1178ebd3b7bb445b3b0dd33b09f9255e312a965",
|
||||||
"sha256:9576cb63897fbfa69df60f994082c3f4b8e6adb49cccb60efb2a80a208e6f996",
|
"sha256:9576cb63897fbfa69df60f994082c3f4b8e6adb49cccb60efb2a80a208e6f996",
|
||||||
"sha256:95a25d9f3449046ecbe9065be8f8380c03c56081bc5d41fe0fb964aaa30b2195",
|
"sha256:95a25d9f3449046ecbe9065be8f8380c03c56081bc5d41fe0fb964aaa30b2195",
|
||||||
|
"sha256:a424f048bebc4476620e77f3e4d1f282920cef9bc376ba16d0b8fe97eec87cde",
|
||||||
"sha256:aaec1cfd94f4f3e9a25e144d5b0ed1eb8a9596ec36d7318a504d813412563a85",
|
"sha256:aaec1cfd94f4f3e9a25e144d5b0ed1eb8a9596ec36d7318a504d813412563a85",
|
||||||
"sha256:acb673eecbae089ea3be3dcf75bfe45fc8d4dcdc951e27d8691887963cf421c7",
|
"sha256:acb673eecbae089ea3be3dcf75bfe45fc8d4dcdc951e27d8691887963cf421c7",
|
||||||
"sha256:b15bc8d2c2848a4a7c04f76c9b3dc3561e95d4dabc6b4f24bfabe5fd81a0b14f",
|
"sha256:b15bc8d2c2848a4a7c04f76c9b3dc3561e95d4dabc6b4f24bfabe5fd81a0b14f",
|
||||||
"sha256:b1c240d565e977d80c0083404c01e4d59c5772c977fae2c483f100567f50847b",
|
"sha256:b1c240d565e977d80c0083404c01e4d59c5772c977fae2c483f100567f50847b",
|
||||||
|
"sha256:c595693de998461bcd49b8d20568c8870b3209b8ea323b2a7b0ea86d85864694",
|
||||||
"sha256:ce3be5d520b4d2c3e5eeb4cd2ef62b9b9ab8ac6b6fedbaa0e39cdb6f50644278",
|
"sha256:ce3be5d520b4d2c3e5eeb4cd2ef62b9b9ab8ac6b6fedbaa0e39cdb6f50644278",
|
||||||
"sha256:e0f910f84b35c36a3513b96d816e6442ae138862257ae18a0019d2fc67b041dc",
|
"sha256:e0f910f84b35c36a3513b96d816e6442ae138862257ae18a0019d2fc67b041dc",
|
||||||
"sha256:ea36e19ac0a483eea239320aef0bd40702404ff8c7e42179a2d9d36c5afcb55c",
|
"sha256:ea36e19ac0a483eea239320aef0bd40702404ff8c7e42179a2d9d36c5afcb55c",
|
||||||
|
"sha256:efabbcd4f406b532206b8801058c8bab9e79645b9880329253ae3322b7b02cd5",
|
||||||
"sha256:f923406e6b32c86309261b8195e24e18b6a8801df0cfc7814ac44017bfcb3939"
|
"sha256:f923406e6b32c86309261b8195e24e18b6a8801df0cfc7814ac44017bfcb3939"
|
||||||
],
|
],
|
||||||
"version": "==1.0.1"
|
"version": "==1.0.1"
|
||||||
|
@ -315,29 +328,38 @@
|
||||||
},
|
},
|
||||||
"matplotlib": {
|
"matplotlib": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:07055eb872fa109bd88f599bdb52065704b2e22d475b67675f345d75d32038a0",
|
"sha256:0ba8e3ec1b0feddc6b068fe70dc38dcf2917e301ad8d2b3f848c14ad463a4157",
|
||||||
"sha256:0f2f253d6d51f5ed52a819921f8a0a8e054ce0daefcfbc2557e1c433f14dc77d",
|
"sha256:10a48e33e64dbd95f0776ba162f379c5cc55301c2d155506e79ce0c26b52f2ce",
|
||||||
"sha256:1ef9fd285334bd6b0495b6de9d56a39dc95081577f27bafabcf28e0d318bed31",
|
"sha256:1376535fe731adbba55ab9e48896de226b7e89dbb55390c5fbd8f7161b7ae3be",
|
||||||
"sha256:3eb17a4dc45e1ceefb899423e8152e10169fa281f960421c762fd8532186c323",
|
"sha256:16f0f8ba22df1e2c9f06c87088de45742322fde282a93b5c744c0f969cf7932e",
|
||||||
"sha256:3fb2db66ef98246bafc04b4ef4e9b0e73c6369f38a29716844e939d197df816a",
|
"sha256:1c6c999f2212858021329537f8e0f98f3f29086ec3683511dd1ecec84409f51d",
|
||||||
"sha256:3fd90b407d1ab0dae686a4200030ce305526ff20b85a443dc490d194114b2dfa",
|
"sha256:2316dc177fc7b3d8848b49365498de0c385b4c9bba511edddd24c34fbe3d37a4",
|
||||||
"sha256:45dac8589ef1721d7f2ab0f48f986694494dfcc5d13a3e43a5cb6c816276094e",
|
"sha256:3398bfb533482bf21974cecf28224dd23784ad4e4848be582903f7a2436ec12e",
|
||||||
"sha256:4bb10087e09629ba3f9b25b6c734fd3f99542f93d71c5b9c023f28cb377b43a9",
|
"sha256:3477cb1e1061b34210acc43d20050be8444478ff50b8adfac5fe2b45fc97df01",
|
||||||
"sha256:4dc7ef528aad21f22be85e95725234c5178c0f938e2228ca76640e5e84d8cde8",
|
"sha256:3cc06333b8264428d02231804e2e726b902e9161dc16f573183dee6cb7ef621f",
|
||||||
"sha256:4f6a516d5ef39128bb16af7457e73dde25c30625c4916d8fbd1cc7c14c55e691",
|
"sha256:4259ea7cb2c238355ee13275eddd261d869cefbdeb18a65f35459589d6d17def",
|
||||||
"sha256:70f0e407fbe9e97f16597223269c849597047421af5eb8b60dbaca0382037e78",
|
"sha256:4addcf93234b6122f530f90f485fd3d00d158911fbc1ed24db3fa66cd49fe565",
|
||||||
"sha256:7b3d03c876684618e2a2be6abeb8d3a033c3a1bb38a786f751199753ef6227e6",
|
"sha256:50c0e24bcbce9c54346f4a2f4e97b0ed111f0413ac3fe9954061ae1c8aa7021f",
|
||||||
"sha256:8944d311ce37bee1ba0e41a9b58dcf330ffe0cf29d7654c3d07c572215da68ac",
|
"sha256:62ed7597d9e54db6e133420d779c642503c25eba390e1178d85dfb2ba0d05948",
|
||||||
"sha256:8ff08eaa25c66383fe3b6c7eb288da3c22dcedc4b110a0b592b35f68d0e093b2",
|
"sha256:69f6d51e41a17f6a5f70c56bb10b8ded9f299609204495a7fa2782a3a755ffc5",
|
||||||
"sha256:9d12378d6a236aa38326e27f3a29427b63edce4ce325745785aec1a7535b1f85",
|
"sha256:6d232e49b74e3d2db22c63c25a9a0166d965e87e2b057f795487f1f244b61d9d",
|
||||||
"sha256:abfd3d9390eb4f2d82cbcaa3a5c2834c581329b64eccb7a071ed9d5df27424f7",
|
"sha256:7355bf757ecacd5f0ac9dd9523c8e1a1103faadf8d33c22664178e17533f8ce5",
|
||||||
"sha256:bc4d7481f0e8ec94cb1afc4a59905d6274b3b4c389aba7a2539e071766671735",
|
"sha256:886b1045c5105631f10c1cbc999f910e44d33af3e9c7efd68c2123efc06ab636",
|
||||||
"sha256:c78883145da9b5620aec523fa14ea814e07f2ba26a16b7f68ff7300604a911b3",
|
"sha256:9e1f353edd7fc7e5e9101abd5bc0201946f77a1b59e0da49095086c03db856ed",
|
||||||
"sha256:dc0ba2080fd0cfdd07b3458ee4324d35806733feb2b080838d7094731d3f73d9",
|
"sha256:b3a343dfcbe296dbe0f26c731beee72a792ff948407e6979524298ae7bc3234e",
|
||||||
"sha256:f26fba7fc68994ab2805d77e0695417f9377a00d36ba4248b5d0f1e5adb08d24"
|
"sha256:d93675af09ca497a25f4f8d62f3313cf0f21e45427a87487049fe84898b99909",
|
||||||
|
"sha256:e2409ef9d37804dfb566f39c962e6ed70f281ff516b8131b3e6b4e6442711ff1",
|
||||||
|
"sha256:f8b653b0f89938ba72e92ab080c2f3aa24c1b72e2f61add22880cd1b9a6e3cdd"
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"version": "==2.2.2"
|
"version": "==2.2.3"
|
||||||
|
},
|
||||||
|
"mccabe": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42",
|
||||||
|
"sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"
|
||||||
|
],
|
||||||
|
"version": "==0.6.1"
|
||||||
},
|
},
|
||||||
"mistune": {
|
"mistune": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -380,6 +402,14 @@
|
||||||
],
|
],
|
||||||
"version": "==4.4.0"
|
"version": "==4.4.0"
|
||||||
},
|
},
|
||||||
|
"network2tikz": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:93f5d902b0ad8f19d4cb5a89e97d42f0e2bf40b920737a81cb57faeca7c90815",
|
||||||
|
"sha256:eb7ddf0f2e317e773b79d669f3c010db19b785cf17dc9383b571754d2b0b1fb7"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==0.1.6"
|
||||||
|
},
|
||||||
"networkx": {
|
"networkx": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:64272ca418972b70a196cb15d9c85a5a6041f09a2f32e0d30c0255f25d458bb1"
|
"sha256:64272ca418972b70a196cb15d9c85a5a6041f09a2f32e0d30c0255f25d458bb1"
|
||||||
|
@ -387,46 +417,53 @@
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"version": "==2.1"
|
"version": "==2.1"
|
||||||
},
|
},
|
||||||
|
"nltk": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:fe0eda251be65843be86d7de9abfbf7161732256f742e623b21243ec47bdb718"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==3.3.0"
|
||||||
|
},
|
||||||
"notebook": {
|
"notebook": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:95dc9afa0444d05a0b76d6d1f5133c34a92a95f4e248efef3f59ccd2c2616c7d",
|
"sha256:66dd59e76e755584ae9450eb015c39f55d4bb1d8ec68f2c694d2b3cba7bf5c7e",
|
||||||
"sha256:fa915c231e64a30d19cc2c70ccab6444cbaa93e44e92b5f8233dd9147ad0e664"
|
"sha256:e2c8e931cc19db4f8c63e6a396efbc13a228b2cb5b2919df011b946f28239a08"
|
||||||
],
|
],
|
||||||
"version": "==5.5.0"
|
"version": "==5.6.0"
|
||||||
},
|
},
|
||||||
"numpy": {
|
"numpy": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:07379fe0b450f6fd6e5934a9bc015025bb4ce1c8fbed3ca8bef29328b1bc9570",
|
"sha256:1c362ad12dd09a43b348bb28dd2295dd9cdf77f41f0f45965e04ba97f525b864",
|
||||||
"sha256:085afac75bbc97a096744fcfc97a4b321c5a87220286811e85089ae04885acdd",
|
"sha256:2156a06bd407918df4ac0122df6497a9c137432118f585e5b17d543e593d1587",
|
||||||
"sha256:2d6481c6bdab1c75affc0fc71eb1bd4b3ecef620d06f2f60c3f00521d54be04f",
|
"sha256:24e4149c38489b51fc774b1e1faa9103e82f73344d7a00ba66f6845ab4769f3f",
|
||||||
"sha256:2df854df882d322d5c23087a4959e145b953dfff2abe1774fec4f639ac2f3160",
|
"sha256:340ec1697d9bb3a9c464028af7a54245298502e91178bddb4c37626d36e197b7",
|
||||||
"sha256:381ad13c30cd1d0b2f3da8a0c1a4aa697487e8bb0e9e0cbeb7439776bcb645f8",
|
"sha256:35db8d419345caa4eeaa65cd63f34a15208acd87530a30f0bc25fc84f55c8c80",
|
||||||
"sha256:385f1ce46e08676505b692bfde918c1e0b350963a15ef52d77691c2cf0f5dbf6",
|
"sha256:361370e9b7f5e44c41eee29f2bb5cb3b755abb4b038bce6d6cbe08db7ff9cb74",
|
||||||
"sha256:4130e5ae16c656b7de654dc5e595cfeb85d3a4b0bb0734d19c0dce6dc7ee0e07",
|
"sha256:36e8dcd1813ca92ce7e4299120cee6c03adad33d89b54862c1b1a100443ac399",
|
||||||
"sha256:4d278c2261be6423c5e63d8f0ceb1b0c6db3ff83f2906f4b860db6ae99ca1bb5",
|
"sha256:378378973546ecc1dfaf9e24c160d683dd04df871ecd2dcc86ce658ca20f92c0",
|
||||||
"sha256:51c5dcb51cf88b34b7d04c15f600b07c6ccbb73a089a38af2ab83c02862318da",
|
"sha256:419e6faee16097124ee627ed31572c7e80a1070efa25260b78097cca240e219a",
|
||||||
"sha256:589336ba5199c8061239cf446ee2f2f1fcc0c68e8531ee1382b6fc0c66b2d388",
|
"sha256:4287104c24e6a09b9b418761a1e7b1bbde65105f110690ca46a23600a3c606b8",
|
||||||
"sha256:5ae3564cb630e155a650f4f9c054589848e97836bebae5637240a0d8099f817b",
|
"sha256:549f3e9778b148a47f4fb4682955ed88057eb627c9fe5467f33507c536deda9d",
|
||||||
"sha256:5edf1acc827ed139086af95ce4449b7b664f57a8c29eb755411a634be280d9f2",
|
"sha256:5e359e9c531075220785603e5966eef20ccae9b3b6b8a06fdfb66c084361ce92",
|
||||||
"sha256:6b82b81c6b3b70ed40bc6d0b71222ebfcd6b6c04a6e7945a936e514b9113d5a3",
|
"sha256:5ee7f3dbbdba0da75dec7e94bd7a2b10fe57a83e1b38e678200a6ad8e7b14fdc",
|
||||||
"sha256:6c57f973218b776195d0356e556ec932698f3a563e2f640cfca7020086383f50",
|
"sha256:62d55e96ec7b117d3d5e618c15efcf769e70a6effaee5842857b64fb4883887a",
|
||||||
"sha256:758d1091a501fd2d75034e55e7e98bfd1370dc089160845c242db1c760d944d9",
|
"sha256:719b6789acb2bc86ea9b33a701d7c43dc2fc56d95107fd3c5b0a8230164d4dfb",
|
||||||
"sha256:8622db292b766719810e0cb0f62ef6141e15fe32b04e4eb2959888319e59336b",
|
"sha256:7a70f2b60d48828cba94a54a8776b61a9c2657a803d47f5785f8062e3a9c7c55",
|
||||||
"sha256:8b8dcfcd630f1981f0f1e3846fae883376762a0c1b472baa35b145b911683b7b",
|
"sha256:7b9e37f194f8bcdca8e9e6af92e2cbad79e360542effc2dd6b98d63955d8d8a3",
|
||||||
"sha256:91fdd510743ae4df862dbd51a4354519dd9fb8941347526cd9c2194b792b3da9",
|
"sha256:83b8fc18261b70f45bece2d392537c93dc81eb6c539a16c9ac994c47fc79f09a",
|
||||||
"sha256:97fa8f1dceffab782069b291e38c4c2227f255cdac5f1e3346666931df87373e",
|
"sha256:9473ad28375710ab18378e72b59422399b27e957e9339c413bf00793b4b12df0",
|
||||||
"sha256:9b705f18b26fb551366ab6347ba9941b62272bf71c6bbcadcd8af94d10535241",
|
"sha256:95b085b253080e5d09f7826f5e27dce067bae813a132023a77b739614a29de6e",
|
||||||
"sha256:9d69967673ab7b028c2df09cae05ba56bf4e39e3cb04ebe452b6035c3b49848e",
|
"sha256:98b86c62c08c2e5dc98a9c856d4a95329d11b1c6058cb9b5191d5ea6891acd09",
|
||||||
"sha256:9e1f53afae865cc32459ad211493cf9e2a3651a7295b7a38654ef3d123808996",
|
"sha256:a3bd01d6d3ed3d7c06d7f9979ba5d68281f15383fafd53b81aa44b9191047cf8",
|
||||||
"sha256:a4a433b3a264dbc9aa9c7c241e87c0358a503ea6394f8737df1683c7c9a102ac",
|
"sha256:c81a6afc1d2531a9ada50b58f8c36197f8418ef3d0611d4c1d7af93fdcda764f",
|
||||||
"sha256:baadc5f770917ada556afb7651a68176559f4dca5f4b2d0947cd15b9fb84fb51",
|
"sha256:ce75ed495a746e3e78cfa22a77096b3bff2eda995616cb7a542047f233091268",
|
||||||
"sha256:c725d11990a9243e6ceffe0ab25a07c46c1cc2c5dc55e305717b5afe856c9608",
|
"sha256:dae8618c0bcbfcf6cf91350f8abcdd84158323711566a8c5892b5c7f832af76f",
|
||||||
"sha256:d696a8c87315a83983fc59dd27efe034292b9e8ad667aeae51a68b4be14690d9",
|
"sha256:df0b02c6705c5d1c25cc35c7b5d6b6f9b3b30833f9d178843397ae55ecc2eebb",
|
||||||
"sha256:e1864a4e9f93ddb2dc6b62ccc2ec1f8250ff4ac0d3d7a15c8985dd4e1fbd6418",
|
"sha256:e3660744cda0d94b90141cdd0db9308b958a372cfeee8d7188fdf5ad9108ea82",
|
||||||
"sha256:e1d18421a7e2ad4a655b76e65d549d4159f8874c18a417464c1d439ee7ccc7cd"
|
"sha256:f2362d0ca3e16c37782c1054d7972b8ad2729169567e3f0f4e5dd3cdf85f188e"
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"version": "==1.14.5"
|
"version": "==1.15.1"
|
||||||
},
|
},
|
||||||
"packaging": {
|
"packaging": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -437,24 +474,29 @@
|
||||||
},
|
},
|
||||||
"pandas": {
|
"pandas": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:211cfdb9f72f26d2ede21c751d27e08fed4434d47fb9bb82ebc8ff753888b8b6",
|
"sha256:11975fad9edbdb55f1a560d96f91830e83e29bed6ad5ebf506abda09818eaf60",
|
||||||
"sha256:28fd087514616549a0e3259cd68ac88d7eaed6bd3062017a7f312e27941266bd",
|
"sha256:12e13d127ca1b585dd6f6840d3fe3fa6e46c36a6afe2dbc5cb0b57032c902e31",
|
||||||
"sha256:2fb7c63138bd5ead296b18b2cb6abd3a394f7581e5ae052b02b27df8244b03ca",
|
"sha256:1c87fcb201e1e06f66e23a61a5fea9eeebfe7204a66d99df24600e3f05168051",
|
||||||
"sha256:372435456c349a8d39ff001967b161f6bd29d4c3de145a4cf9b366648defbb1f",
|
"sha256:242e9900de758e137304ad4b5663c2eff0d798c2c3b891250bd0bd97144579da",
|
||||||
"sha256:3790a3348ab0f416e58061d21693cb662fbb2f638001b94bf2b2199fedc1b1c2",
|
"sha256:26c903d0ae1542890cb9abadb4adcb18f356b14c2df46e4ff657ae640e3ac9e7",
|
||||||
"sha256:437a6e906a6717a9ed2627cf6e7895b63dfaa0172567cbd75a553f55cf78cc17",
|
"sha256:2e1e88f9d3e5f107b65b59cd29f141995597b035d17cc5537e58142038942e1a",
|
||||||
"sha256:50b52af2af2e15f4aeb2fe196da073a8c131fa02e433e105d95ce40016df5690",
|
"sha256:31b7a48b344c14691a8e92765d4023f88902ba3e96e2e4d0364d3453cdfd50db",
|
||||||
"sha256:720daad75b5d35dd1b446842210c4f3fd447464c9c0884972f3f12b213a9edd1",
|
"sha256:4fd07a932b4352f8a8973761ab4e84f965bf81cc750fb38e04f01088ab901cb8",
|
||||||
"sha256:b4fb71acbc2709b8f5993cb4b5445d8182864f11c39787e317aae39f21206270",
|
"sha256:5b24ca47acf69222e82530e89111dd9d14f9b970ab2cd3a1c2c78f0c4fbba4f4",
|
||||||
"sha256:b704fd73022342cce612996de495a16954311e0c0cf077c1b83d5cf0b9656a60",
|
"sha256:647b3b916cc8f6aeba240c8171be3ab799c3c1b2ea179a3be0bd2712c4237553",
|
||||||
"sha256:cbbecca0c7af6a2160b2d6ba30becc286824a98c61dcc6a41fada664f226424c",
|
"sha256:66b060946046ca27c0e03e9bec9bba3e0b918bafff84c425ca2cc2e157ce121e",
|
||||||
"sha256:d2a071de755cc8ee7784e1b4c7b9b643d951d35c8adea7d64fe7c57cff9c47a7",
|
"sha256:6efa9fa6e1434141df8872d0fa4226fc301b17aacf37429193f9d70b426ea28f",
|
||||||
"sha256:d8154c5c68713a82461aba735832f0b4692be8a45a0a340a303bf90d6f80f36f",
|
"sha256:be4715c9d8367e51dbe6bc6d05e205b1ae234f0dc5465931014aa1c4af44c1ba",
|
||||||
"sha256:e1b86f7c55467ce1f6c12715f2fd1817f4a909b5c8c39bd4b5d2415ef2b04bd8",
|
"sha256:bea90da782d8e945fccfc958585210d23de374fa9294a9481ed2abcef637ebfc",
|
||||||
"sha256:fcc63e8134516e93e16eb4ceac9afaa51f4adc5bf58efddae7cbc562f5b77dd0"
|
"sha256:d318d77ab96f66a59e792a481e2701fba879e1a453aefeebdb17444fe204d1ed",
|
||||||
|
"sha256:d785fc08d6f4207437e900ffead930a61e634c5e4f980ba6d3dc03c9581748c7",
|
||||||
|
"sha256:de9559287c4fe8da56e8c3878d2374abc19d1ba2b807bfa7553e912a8e5ba87c",
|
||||||
|
"sha256:f4f98b190bb918ac0bc0e3dd2ab74ff3573da9f43106f6dba6385406912ec00f",
|
||||||
|
"sha256:f71f1a7e2d03758f6e957896ed696254e2bc83110ddbc6942018f1a232dd9dad",
|
||||||
|
"sha256:fb944c8f0b0ab5c1f7846c686bc4cdf8cde7224655c12edcd59d5212cd57bec0"
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"version": "==0.23.1"
|
"version": "==0.23.4"
|
||||||
},
|
},
|
||||||
"pandocfilters": {
|
"pandocfilters": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -464,10 +506,10 @@
|
||||||
},
|
},
|
||||||
"parso": {
|
"parso": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:8105449d86d858e53ce3e0044ede9dd3a395b1c9716c696af8aa3787158ab806",
|
"sha256:35704a43a3c113cce4de228ddb39aab374b8004f4f2407d070b6a2ca784ce8a2",
|
||||||
"sha256:d250235e52e8f9fc5a80cc2a5f804c9fefd886b2e67a2b1099cf085f403f8e33"
|
"sha256:895c63e93b94ac1e1690f5fdd40b65f07c8171e3e53cbd7793b5b96c0e0a7f24"
|
||||||
],
|
],
|
||||||
"version": "==0.3.0"
|
"version": "==0.3.1"
|
||||||
},
|
},
|
||||||
"partd": {
|
"partd": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -491,6 +533,19 @@
|
||||||
],
|
],
|
||||||
"version": "==0.7.4"
|
"version": "==0.7.4"
|
||||||
},
|
},
|
||||||
|
"pluggy": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:6e3836e39f4d36ae72840833db137f7b7d35105079aee6ec4a62d9f80d594dd1",
|
||||||
|
"sha256:95eb8364a4708392bae89035f45341871286a333f749c3141c20573d2b3876e1"
|
||||||
|
],
|
||||||
|
"version": "==0.7.1"
|
||||||
|
},
|
||||||
|
"prometheus-client": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:17bc24c09431644f7c65d7bce9f4237252308070b6395d6d8e87767afe867e24"
|
||||||
|
],
|
||||||
|
"version": "==0.3.1"
|
||||||
|
},
|
||||||
"prompt-toolkit": {
|
"prompt-toolkit": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:1df952620eccb399c53ebb359cc7d9a8d3a9538cb34c5a1344bdbeb29fbcc381",
|
"sha256:1df952620eccb399c53ebb359cc7d9a8d3a9538cb34c5a1344bdbeb29fbcc381",
|
||||||
|
@ -501,19 +556,17 @@
|
||||||
},
|
},
|
||||||
"psutil": {
|
"psutil": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:0ff2b16e9045d01edb1dd10d7fbcc184012e37f6cd38029e959f2be9c6223f50",
|
"sha256:0d8da7333549a998556c18eb2af3ce902c28d66ceb947505c008f91e9f988abd",
|
||||||
"sha256:254adb6a27c888f141d2a6032ae231d8ed4fc5f7583b4c825e5f7d7c78d26d2e",
|
"sha256:1914bacbd2fc2af8f795daa44b9d2e0649a147460cfd21b1a70a124472f66d40",
|
||||||
"sha256:319e12f6bae4d4d988fbff3bed792953fa3b44c791f085b0a1a230f755671ef7",
|
"sha256:215d61a901e67b1a35e14c6aedef317f7fa7e6075a20c150fd11bd2c906d2c83",
|
||||||
"sha256:529ae235896efb99a6f77653a7138273ab701ec9f0343a1f5030945108dee3c4",
|
"sha256:51057c03aea251ad6667c2bba259bc7ed3210222d3a74152c84e3ab06e1da0ba",
|
||||||
"sha256:686e5a35fe4c0acc25f3466c32e716f2d498aaae7b7edc03e2305b682226bcf6",
|
"sha256:5b6322b167a5ba0c5463b4d30dfd379cd4ce245a1162ebf8fc7ab5c5ffae4f3b",
|
||||||
"sha256:6d981b4d863b20c8ceed98b8ac3d1ca7f96d28707a80845d360fa69c8fc2c44b",
|
"sha256:a890c3e490493f21da2817ffc92822693bc0d6bcac9999caa04ffce8dd4e7132",
|
||||||
"sha256:7789885a72aa3075d28d028236eb3f2b84d908f81d38ad41769a6ddc2fd81b7c",
|
"sha256:b34611280a2d0697f1c499e15e936d88109170194b390599c98bab8072a71f05",
|
||||||
"sha256:7f4616bcb44a6afda930cfc40215e5e9fa7c6896e683b287c771c937712fbe2f",
|
"sha256:cea2557ee6a9faa2c100947637ded68414e12b851633c4ce26e0311b2a2ed539",
|
||||||
"sha256:7fdb3d02bfd68f508e6745021311a4a4dbfec53fca03721474e985f310e249ba",
|
"sha256:d081707ef0081920533db30200a2d30d5c0ea9cf6afa7cf8881ae4516cc69c48"
|
||||||
"sha256:a9b85b335b40a528a8e2a6b549592138de8429c6296e7361892958956e6a73cf",
|
|
||||||
"sha256:dc85fad15ef98103ecc047a0d81b55bbf5fe1b03313b96e883acc2e2fa87ed5c"
|
|
||||||
],
|
],
|
||||||
"version": "==5.4.6"
|
"version": "==5.4.7"
|
||||||
},
|
},
|
||||||
"ptyprocess": {
|
"ptyprocess": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -530,6 +583,36 @@
|
||||||
],
|
],
|
||||||
"version": "==0.10.7"
|
"version": "==0.10.7"
|
||||||
},
|
},
|
||||||
|
"pyclustering": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:7bdd805cf3ef92650a4dddfad4e5e02132f4856b65c4bd3332e35908f475558e"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==0.8.1"
|
||||||
|
},
|
||||||
|
"pycodestyle": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:74abc4e221d393ea5ce1f129ea6903209940c1ecd29e002e8c6933c2b21026e0",
|
||||||
|
"sha256:cbc619d09254895b0d12c2c691e237b2e91e9b2ecf5e84c26b35400f93dcfb83",
|
||||||
|
"sha256:cbfca99bd594a10f674d0cd97a3d802a1fdef635d4361e1a2658de47ed261e3a"
|
||||||
|
],
|
||||||
|
"version": "==2.4.0"
|
||||||
|
},
|
||||||
|
"pydocstyle": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:08a870edc94508264ed90510db466c6357c7192e0e866561d740624a8fc7d90c",
|
||||||
|
"sha256:4d5bcde961107873bae621f3d580c3e35a426d3687ffc6f8fb356f6628da5a97",
|
||||||
|
"sha256:af9fcccb303899b83bec82dc9a1d56c60fc369973223a5e80c3dfa9bdf984405"
|
||||||
|
],
|
||||||
|
"version": "==2.1.1"
|
||||||
|
},
|
||||||
|
"pyflakes": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:9a7662ec724d0120012f6e29d6248ae3727d821bba522a0e6b356eff19126a49",
|
||||||
|
"sha256:f661252913bc1dbe7fcfcbf0af0db3f42ab65aabd1a6ca68fe5d466bace94dae"
|
||||||
|
],
|
||||||
|
"version": "==2.0.0"
|
||||||
|
},
|
||||||
"pygments": {
|
"pygments": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:78f3f434bcc5d6ee09020f92ba487f95ba50f1e3ef83ae96b9d5ffa1bab25c5d",
|
"sha256:78f3f434bcc5d6ee09020f92ba487f95ba50f1e3ef83ae96b9d5ffa1bab25c5d",
|
||||||
|
@ -565,6 +648,19 @@
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"version": "==0.7.1.post6"
|
"version": "==0.7.1.post6"
|
||||||
},
|
},
|
||||||
|
"python-jsonrpc-server": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:ebebaa68b732c9d0aa024ffba2c3baca8b5704530f81d5a894a1ab6981b492c7"
|
||||||
|
],
|
||||||
|
"version": "==0.0.1"
|
||||||
|
},
|
||||||
|
"python-language-server": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:c832ae97245291e8a785eacc8ce05b755c6d04469cca987a3e19dcf98ad3e04b"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==0.21.0"
|
||||||
|
},
|
||||||
"pytz": {
|
"pytz": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:a061aa0a9e06881eb8b3b2b43f05b9439d6583c206d0a6c340ff72a7b6669053",
|
"sha256:a061aa0a9e06881eb8b3b2b43f05b9439d6583c206d0a6c340ff72a7b6669053",
|
||||||
|
@ -574,91 +670,96 @@
|
||||||
},
|
},
|
||||||
"pyyaml": {
|
"pyyaml": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:0c507b7f74b3d2dd4d1322ec8a94794927305ab4cebbe89cc47fe5e81541e6e8",
|
"sha256:3d7da3009c0f3e783b2c873687652d83b1bbfd5c88e9813fb7e5b03c0dd3108b",
|
||||||
"sha256:16b20e970597e051997d90dc2cddc713a2876c47e3d92d59ee198700c5427736",
|
"sha256:3ef3092145e9b70e3ddd2c7ad59bdd0252a94dfe3949721633e41344de00a6bf",
|
||||||
"sha256:3262c96a1ca437e7e4763e2843746588a965426550f3797a79fca9c6199c431f",
|
"sha256:40c71b8e076d0550b2e6380bada1f1cd1017b882f7e16f09a65be98e017f211a",
|
||||||
"sha256:326420cbb492172dec84b0f65c80942de6cedb5233c413dd824483989c000608",
|
"sha256:558dd60b890ba8fd982e05941927a3911dc409a63dcb8b634feaa0cda69330d3",
|
||||||
"sha256:4474f8ea030b5127225b8894d626bb66c01cda098d47a2b0d3429b6700af9fd8",
|
"sha256:a7c28b45d9f99102fa092bb213aa12e0aaf9a6a1f5e395d36166639c1f96c3a1",
|
||||||
"sha256:592766c6303207a20efc445587778322d7f73b161bd994f227adaa341ba212ab",
|
"sha256:aa7dd4a6a427aed7df6fb7f08a580d68d9b118d90310374716ae90b710280af1",
|
||||||
"sha256:5ac82e411044fb129bae5cfbeb3ba626acb2af31a8d17d175004b70862a741a7",
|
"sha256:bc558586e6045763782014934bfaf39d48b8ae85a2713117d16c39864085c613",
|
||||||
"sha256:5f84523c076ad14ff5e6c037fe1c89a7f73a3e04cf0377cb4d017014976433f3",
|
"sha256:d46d7982b62e0729ad0175a9bc7e10a566fc07b224d2c79fafb5e032727eaa04",
|
||||||
"sha256:827dc04b8fa7d07c44de11fabbc888e627fa8293b695e0f99cb544fdfa1bf0d1",
|
"sha256:d5eef459e30b09f5a098b9cea68bebfeb268697f78d647bd255a085371ac7f3f",
|
||||||
"sha256:b4c423ab23291d3945ac61346feeb9a0dc4184999ede5e7c43e1ffb975130ae6",
|
"sha256:e01d3203230e1786cd91ccfdc8f8454c8069c91bee3962ad93b87a4b2860f537",
|
||||||
"sha256:bc6bced57f826ca7cb5125a10b23fd0f2fff3b7c4701d64c439a300ce665fff8",
|
"sha256:e170a9e6fcfd19021dd29845af83bb79236068bf5fd4df3327c1be18182b2531"
|
||||||
"sha256:c01b880ec30b5a6e6aa67b09a2fe3fb30473008c85cd6a67359a1b15ed6d83a4",
|
|
||||||
"sha256:ca233c64c6e40eaa6c66ef97058cdc80e8d0157a443655baa1b2966e812807ca",
|
|
||||||
"sha256:e863072cdf4c72eebf179342c94e6989c67185842d9997960b3e69290b2fa269"
|
|
||||||
],
|
],
|
||||||
"version": "==3.12"
|
"version": "==3.13"
|
||||||
},
|
},
|
||||||
"pyzmq": {
|
"pyzmq": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:0145ae59139b41f65e047a3a9ed11bbc36e37d5e96c64382fcdff911c4d8c3f0",
|
"sha256:25a0715c8f69cf72f67cfe5a68a3f3ed391c67c063d2257bec0fe7fc2c7f08f8",
|
||||||
"sha256:18de8a02768b1c0b3495ac635b24bd902fafc08befb70a6e68c4d343ccbd6cbd",
|
"sha256:2bab63759632c6b9e0d5bf19cc63c3b01df267d660e0abcf230cf0afaa966349",
|
||||||
"sha256:2fb4d745ffe0a65ebf8fd29df093bb5c0ac96a506cb05b9a7b7c94b2524ae7f6",
|
"sha256:30ab49d99b24bf0908ebe1cdfa421720bfab6f93174e4883075b7ff38cc555ba",
|
||||||
"sha256:4193cc666591495ab7fe8d24fa8374a35f9775f16dc7c46e03615559e1fc1855",
|
"sha256:32c7ca9fc547a91e3c26fc6080b6982e46e79819e706eb414dd78f635a65d946",
|
||||||
"sha256:445fed4d71ac48da258ba38f2e29c88c5091124212a4004a0a6a42e6586a7de1",
|
"sha256:41219ae72b3cc86d97557fe5b1ef5d1adc1057292ec597b50050874a970a39cf",
|
||||||
"sha256:538dfdd9542cf9ff37cd958da03b58d56b53b90800159ea07adc51a8ec7ffcb8",
|
"sha256:4b8c48a9a13cea8f1f16622f9bd46127108af14cd26150461e3eab71e0de3e46",
|
||||||
"sha256:613ac1fc4591b1c6a0a52ce3ed17dbffd6a17e985df504e8b4cdb987f97285b1",
|
"sha256:55724997b4a929c0d01b43c95051318e26ddbae23565018e138ae2dc60187e59",
|
||||||
"sha256:630fb21f7474eb9e409a1ad476bf1ec489a69eb021172d422f2485cc3a44cd79",
|
"sha256:65f0a4afae59d4fc0aad54a917ab599162613a761b760ba167d66cc646ac3786",
|
||||||
"sha256:6c3632d2c17cf03ce728ffaa328d45bb053623b3a0aa9747adcde81778d5a4d5",
|
"sha256:6f88591a8b246f5c285ee6ce5c1bf4f6bd8464b7f090b1333a446b6240a68d40",
|
||||||
"sha256:72a490db0e34c204764457a6853afde7c0d1aa01b6dbbbaea064636614b774c6",
|
"sha256:75022a4c60dcd8765bb9ca32f6de75a0ec83b0d96e0309dc479f4c7b21f26cb7",
|
||||||
"sha256:767e1d0b1f7fff1950127abc08c5a5af2754987bc6480c6d641bed6971278a7a",
|
"sha256:76ea493bfab18dcb090d825f3662b5612e2def73dffc196d51a5194b0294a81d",
|
||||||
"sha256:863ec1bfa52da6eaa5c4aa59143eeaeb4ef7a076862407a548ec645f25e6d6df",
|
"sha256:7b60c045b80709e4e3c085bab9b691e71761b44c2b42dbb047b8b498e7bc16b3",
|
||||||
"sha256:a0ecf4c3eccd92f030a4e3e334b9da6fa3ee86be00249343c74e476d70567d0f",
|
"sha256:8e6af2f736734aef8ed6f278f9f552ec7f37b1a6b98e59b887484a840757f67d",
|
||||||
"sha256:ad5a8b19b6671b52d30ccfc3a0f4c600e49c4e2dcc88caf4106ed5958dec8d5e",
|
"sha256:9ac2298e486524331e26390eac14e4627effd3f8e001d4266ed9d8f1d2d31cce",
|
||||||
"sha256:b31f2b50ad2920f21b904f5edf66bee324e42bb978df1407ecf381b210d4678e",
|
"sha256:9ba650f493a9bc1f24feca1d90fce0e5dd41088a252ac9840131dfbdbf3815ca",
|
||||||
"sha256:b328c538061757f627d32f7f8885c16f1d2f59f5374e057822f3c8e6cd94c41b",
|
"sha256:a02a4a385e394e46012dc83d2e8fd6523f039bb52997c1c34a2e0dd49ed839c1",
|
||||||
"sha256:b89268020a843d4c3cc04180577ec061fe96d35f267b0b672cb006e4d70560da",
|
"sha256:a3ceee84114d9f5711fa0f4db9c652af0e4636c89eabc9b7f03a3882569dd1ed",
|
||||||
"sha256:ba0b43aebf856e5e249250d74c1232d6600b6859328920d12e2ba72a565ab1b1",
|
"sha256:a72b82ac1910f2cf61a49139f4974f994984475f771b0faa730839607eeedddf",
|
||||||
"sha256:bdb12b485b3440b5193cd337d27cc126cdfc54ea9f38df237e1ead6216435cbe",
|
"sha256:ab136ac51027e7c484c53138a0fab4a8a51e80d05162eb7b1585583bcfdbad27",
|
||||||
"sha256:c30d27c9b35285597b8ef3019f97b9b98457b053f65dcc87a90dfdd4db09ca78",
|
"sha256:c095b224300bcac61e6c445e27f9046981b1ac20d891b2f1714da89d34c637c8",
|
||||||
"sha256:d51eb3902d27d691483243707bfa67972167a70269bbbc172b74eeac4f780a1d",
|
"sha256:c5cc52d16c06dc2521340d69adda78a8e1031705924e103c0eb8fc8af861d810",
|
||||||
"sha256:e5578ae84bb94e97adadfcb00106a1cb161cb8017f89b01f6c3737f356257811",
|
"sha256:d612e9833a89e8177f8c1dc68d7b4ff98d3186cd331acd616b01bbdab67d3a7b",
|
||||||
"sha256:f35b4cdeffff79357a9d929daa2a8620fb362b2cbeebdc5dd2cf9fcd27c44821",
|
"sha256:e828376a23c66c6fe90dcea24b4b72cd774f555a6ee94081670872918df87a19",
|
||||||
"sha256:fb983aec4bddee3680a0b7395f99e4595d70d81841370da736c5dc642bad4cd2"
|
"sha256:e9767c7ab2eb552796440168d5c6e23a99ecaade08dda16266d43ad461730192",
|
||||||
|
"sha256:ebf8b800d42d217e4710d1582b0c8bff20cdcb4faad7c7213e52644034300924"
|
||||||
],
|
],
|
||||||
"version": "==17.0.0"
|
"version": "==17.1.2"
|
||||||
},
|
},
|
||||||
"qtconsole": {
|
"qtconsole": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:b3d10314cbaad76c3157cf922eb410812cde472e8e7c6bd3d5a92d30145bcde1",
|
"sha256:298431d376d71a02eb1a04fe6e72dd4beb82b83423d58b17d532e0af838e62fa",
|
||||||
"sha256:eff8c2faeda567a0bef5781f419a64e9977988db101652b312b9d74ec0a5109c"
|
"sha256:7870b19e6a6b0ab3acc09ee65463c0ca7568b3a01a6902d7c4e1ed2c4fc4e176"
|
||||||
],
|
],
|
||||||
"version": "==4.3.1"
|
"version": "==4.4.1"
|
||||||
|
},
|
||||||
|
"rope": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:a108c445e1cd897fe19272ab7877d172e7faf3d4148c80e7d20faba42ea8f7b2"
|
||||||
|
],
|
||||||
|
"version": "==0.11.0"
|
||||||
},
|
},
|
||||||
"scikit-learn": {
|
"scikit-learn": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:13136c6e4f6b808569f7f59299d439b2cd718f85d72ea14b5b6077d44ebc7d17",
|
"sha256:0a718b5ffbd5053fb3f9e1a2e20b7c4f256dd8035e246b907d3117d20bac0260",
|
||||||
"sha256:370919e3148253fd6552496c33a1e3d78290a336fc8d1b9349d9e9770fae6ec0",
|
"sha256:1725540b754a9967778e9385e1ee2c8db50d5ab70ed835c9f5e36002ffabc169",
|
||||||
"sha256:3775cca4ce3f94508bb7c8a6b113044b78c16b0a30a5c169ddeb6b9fe57a8a72",
|
"sha256:3e3ce307d7c5c5811658ba8686b24b571a8244eaafe707665ad601f400d5ce98",
|
||||||
"sha256:42f3c5bd893ed73bf47ccccf04dfb98fae743f397d688bb58c2238c0e6ec15d2",
|
"sha256:42ad71502237c9fe300ecf157f5a394df717789a2dde541dd7034b539c70bdcc",
|
||||||
"sha256:56cfa19c31edf62e6414da0a337efee37a4af488b135640e67238786b9be6ab3",
|
"sha256:42cba716db197e0d1670e2fc13c4cc4a86d5c5358120ccfee6ec427b154e74ff",
|
||||||
"sha256:5c9ff456d67ef9094e5ea272fff2be05d399a47fc30c6c8ed653b94bdf787bd1",
|
"sha256:47b4090b7686642e41176becb7c42ef3cc665d7ee0db5e7ea5d307ec9779327e",
|
||||||
"sha256:5ca0ad32ee04abe0d4ba02c8d89d501b4e5e0304bdf4d45c2e9875a735b323a0",
|
"sha256:51d99a08c8bf689cf60c9d8dca6e3d3e5f6d762def85ad735dcea11fb528a89b",
|
||||||
"sha256:5db9e68a384ce80a17fc449d4d5d9b45025fe17cf468429599bf404eccb51049",
|
"sha256:5f7577fbb2399a4712e96cf0e786638168940a876c33735a1b5d5a86ba4b1370",
|
||||||
"sha256:6e0899953611d0c47c0d49c5950082ab016b38811fced91cd2dcc889dd94f50a",
|
"sha256:66bfc2b6b15db1725d03ea657ec9184ff09dcbf1ecd834ef85f2edc2c9cbba97",
|
||||||
"sha256:72c194c5092e921d6107a8de8a5adae58c35bbc54e030ba624b6f02fd823bb21",
|
"sha256:69a34d389d9ca4687ad00af4e11d53686771f484c37366f68617ef656bab16ab",
|
||||||
"sha256:871669cdb5b3481650fe3adff46eb97c455e30ecdc307eaf382ef90d4e2570ab",
|
"sha256:75297f3dd6685f01555f1bb75846995d45650af417280b69c81bf11b6987aed5",
|
||||||
"sha256:873245b03361710f47c5410a050dc56ee8ae97b9f8dcc6e3a81521ca2b64ad10",
|
"sha256:9ebb38ab1d0ee143982aed561811903ac6c1abb512ae2b9019b3b65bde63ffb9",
|
||||||
"sha256:8b17fc29554c5c98d88142f895516a5bec2b6b61daa815e1193a64c868ad53d2",
|
"sha256:a402c1484fe65df42d5dbc22a58e0695fe3afe2b0b229aee2a09c6d60ba8e5c2",
|
||||||
"sha256:95b155ef6bf829ddfba6026f100ba8e4218b7171ecab97b2163bc9e8d206848f",
|
"sha256:aad6b9aac1617bd7efa0450643888bbd3410679a94bc8680d9863825686ef369",
|
||||||
"sha256:a21cf8217e31a9e8e32c559246e05e6909981816152406945ae2e3e244dfcc1f",
|
"sha256:ad4db28d3dc16c01df75ed6efb72524537de3839a5d179fcf94094359fc72ec5",
|
||||||
"sha256:a58746d4f389ea7df1d908dba8b52f709835f91c342f459a3ade5424330c69d1",
|
"sha256:b276739a5f863ccacb61999a3067d0895ee291c95502929b2ae56ea1f882e888",
|
||||||
"sha256:b2a10e2f9b73de10d8486f7a23549093436062b69139158802910a0f154aa53b",
|
"sha256:b3dc88c4d2bcb26ffc5afe16d053ae28317d7d1de083651defcd5453a04f1563",
|
||||||
"sha256:ba3fd442ae1a46830789b3578867daaf2c8409dcca6bf192e30e85beeabbfc2f",
|
"sha256:b3e4681253e95da5aa5c231889a32b084fd997962bf8beda6f796bf422f734b2",
|
||||||
"sha256:ce78bf4d10bd7e28807c36c6d2ab25a9934aaf80906ad987622a5e45627d91a2",
|
"sha256:c3d852d49d6c1710089d4513702099fa6f8e1aebfedf222319d80c47b0a195f8",
|
||||||
"sha256:d384e6f9a055b7a43492f9d27779adb717eb5dcf78b0603b01d0f070a608d241",
|
"sha256:c6612e7e43988b8b5e1957150449493a55f9c059de641083df7a964f86f2d1e7",
|
||||||
"sha256:d4da369614e55540c7e830ccdd17ab4fe5412ff8e803a4906d3ece393e2e3a63",
|
"sha256:c69e5c6051366a6ac9600d730276db939b1a205e42504ec0b8371f154b0058db",
|
||||||
"sha256:ddc1eb10138ae93c136cc4b5945d3977f302b5d693592a4731b2805a7d7f2a74",
|
"sha256:ce121baa8e85ec27c3065281657dcd78adaab7dcb046c7fe96ad4e5a9dcb6610",
|
||||||
"sha256:e54a3dd1fe1f8124de90b93c48d120e6da2ea8df29b6895325df01ddc1bd8e26",
|
"sha256:ed2a9a9bea6ec443b7effe5695c9c168b7bf9a67df6d880729760feda871b6a3",
|
||||||
"sha256:ee8c3b1898c728b6e5b5659c233f547700a1fea13ce876b6fe7d3434c70cc0e0",
|
"sha256:efd842d70b87e3ef3429c3149840b9189d4441ca951ab0cec62c94a964e219d9",
|
||||||
"sha256:f528c4b2bba652cf116f5cccf36f4db95a7f9cbfcd1ee549c4e8d0f8628783b5",
|
"sha256:f1428af5c381f6eef30ffbc7e047b7c713d4efa5d7bf5e57b62b3fc8d387044b",
|
||||||
"sha256:f9abae483f4d52acd6f660addb1b67e35dc5748655250af479de2ea6aefc6df0",
|
"sha256:f6c7bf8cd4de1640b760b47f4d28deb26dbbf9acbe0194cdff54a898e190d872",
|
||||||
"sha256:fdc39e89bd3466befb76dfc0c258d4ccad159df974954a87de3be5759172a067"
|
"sha256:f8329ac2160ad8bbbac6a507374685ceca3f24ca427fa9ee61a501280e1972d9",
|
||||||
|
"sha256:fefba2a43b92f8393366093b60efbe984a72a2b41cce16b4002005e4104ef938"
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"version": "==0.19.1"
|
"version": "==0.19.2"
|
||||||
},
|
},
|
||||||
"scipy": {
|
"scipy": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -717,12 +818,19 @@
|
||||||
"sklearn-tda": {
|
"sklearn-tda": {
|
||||||
"git": "https://github.com/MathieuCarriere/sklearn_tda"
|
"git": "https://github.com/MathieuCarriere/sklearn_tda"
|
||||||
},
|
},
|
||||||
|
"snowballstemmer": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:919f26a68b2c17a7634da993d91339e288964f93c274f1343e3bbbe2096e1128",
|
||||||
|
"sha256:9f3bcd3c401c3e862ec0ebe6d2c069ebc012ce142cce209c098ccb5b09136e89"
|
||||||
|
],
|
||||||
|
"version": "==1.2.1"
|
||||||
|
},
|
||||||
"sortedcontainers": {
|
"sortedcontainers": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:607294c6e291a270948420f7ffa1fb3ed47384a4c08db6d1e9c92d08a6981982",
|
"sha256:220bb2e3e1886297fd7cdd6d164cb5cf237be1cfae1a3a3e526d149c52816682",
|
||||||
"sha256:ef38b128302ee8f65d81e31c9d8fbf10d81df4d6d06c9c0b66f01d33747525bb"
|
"sha256:b74f2756fb5e23512572cc76f0fe0832fd86310f77dfee54335a35fb33f6b950"
|
||||||
],
|
],
|
||||||
"version": "==2.0.4"
|
"version": "==2.0.5"
|
||||||
},
|
},
|
||||||
"tblib": {
|
"tblib": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -753,13 +861,15 @@
|
||||||
},
|
},
|
||||||
"tornado": {
|
"tornado": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:1b83d5c10550f2653380b4c77331d6f8850f287c4f67d7ce1e1c639d9222fbc7",
|
"sha256:1c0816fc32b7d31b98781bd8ebc7a9726d7dce67407dc353a2e66e697e138448",
|
||||||
"sha256:408d129e9d13d3c55aa73f8084aa97d5f90ed84132e38d6932e63a67d5bec563",
|
"sha256:4f66a2172cb947387193ca4c2c3e19131f1c70fa8be470ddbbd9317fd0801582",
|
||||||
"sha256:88ce0282cce70df9045e515f578c78f1ebc35dcabe1d70f800c3583ebda7f5f5",
|
"sha256:5327ba1a6c694e0149e7d9126426b3704b1d9d520852a3e4aa9fc8fe989e4046",
|
||||||
"sha256:ba9fbb249ac5390bff8a1d6aa4b844fd400701069bda7d2e380dfe2217895101",
|
"sha256:6a7e8657618268bb007646b9eae7661d0b57f13efc94faa33cd2588eae5912c9",
|
||||||
"sha256:c050089173c2e9272244bccfb6a8615fb9e53b79420a5551acfa76094ecc3111"
|
"sha256:a9b14804783a1d77c0bd6c66f7a9b1196cbddfbdf8bceb64683c5ae60bd1ec6f",
|
||||||
|
"sha256:c58757e37c4a3172949c99099d4d5106e4d7b63aa0617f9bb24bfbff712c7866",
|
||||||
|
"sha256:d8984742ce86c0855cccecd5c6f54a9f7532c983947cff06f3a0e2115b47f85c"
|
||||||
],
|
],
|
||||||
"version": "==5.0.2"
|
"version": "==5.1"
|
||||||
},
|
},
|
||||||
"traitlets": {
|
"traitlets": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -770,11 +880,11 @@
|
||||||
},
|
},
|
||||||
"typing": {
|
"typing": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:3a887b021a77b292e151afb75323dea88a7bc1b3dfa92176cff8e44c8b68bddf",
|
"sha256:4027c5f6127a6267a435201981ba156de91ad0d1d98e9ddc2aa173453453492d",
|
||||||
"sha256:b2c689d54e1144bbcfd191b0832980a21c2dbcf7b5ff7a66248a60c90e951eb8",
|
"sha256:57dcf675a99b74d64dacf6fba08fb17cf7e3d5fdff53d4a30ea2a5e7e52543d4",
|
||||||
"sha256:d400a9344254803a2368533e4533a4200d21eb7b6b729c173bc38201a74db3f2"
|
"sha256:a4c8473ce11a65999c8f59cb093e70686b6c84c98df58c1dae9b3b196089858a"
|
||||||
],
|
],
|
||||||
"version": "==3.6.4"
|
"version": "==3.6.6"
|
||||||
},
|
},
|
||||||
"wcwidth": {
|
"wcwidth": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -792,10 +902,17 @@
|
||||||
},
|
},
|
||||||
"widgetsnbextension": {
|
"widgetsnbextension": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:40794a6a2f97c09a1e613c1c165f67d58a5995d14b283542da39134710791a36",
|
"sha256:8b3b32f522507744096609bc9a36cc0cc83fe8b61ba16f16eebb83d7d79e2686",
|
||||||
"sha256:5417789ee6064ff515fd10be24870660af3561c02d3d48b26f6f44285d0f70cc"
|
"sha256:bd2a92a68cb783b33abb47a23e0d1d9638c0d250a0d17633c262172d76641dd8"
|
||||||
],
|
],
|
||||||
"version": "==3.2.1"
|
"version": "==3.4.1"
|
||||||
|
},
|
||||||
|
"yapf": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:330632d2592e67571ef2c113fe6f5802e2fa5d657448755d5546eea00693dc31",
|
||||||
|
"sha256:55ead4ff1cc1cba5ad7dcfca88fe3930c2ec912c1cfe4a152aa0e7572ff1b49f"
|
||||||
|
],
|
||||||
|
"version": "==0.23.0"
|
||||||
},
|
},
|
||||||
"zict": {
|
"zict": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
|
657
clustering.ipynb
Normal file
657
clustering.ipynb
Normal file
File diff suppressed because one or more lines are too long
119
clustering.py
Normal file
119
clustering.py
Normal file
|
@ -0,0 +1,119 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import numpy as np
|
||||||
|
|
||||||
|
from sklearn.cluster import AgglomerativeClustering
|
||||||
|
from sklearn.svm import OneClassSVM
|
||||||
|
|
||||||
|
import dill
|
||||||
|
|
||||||
|
import matplotlib
|
||||||
|
matplotlib.use("PDF")
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
plt.style.use("fivethirtyeight")
|
||||||
|
plt.rcParams["figure.figsize"] = (10, 6)
|
||||||
|
|
||||||
|
|
||||||
|
N_CLUSTERS = 10
|
||||||
|
|
||||||
|
GENERATIVE = True
|
||||||
|
SOCIOPATTERNS = True
|
||||||
|
|
||||||
|
if __name__=="__main__":
|
||||||
|
if GENERATIVE:
|
||||||
|
print("==== Generative model ====")
|
||||||
|
zz_dgms = dill.load(open("generative/zz_dgms.dill", "rb"))
|
||||||
|
wrcf_dgms = dill.load(open("generative/wrcf_dgms.dill", "rb"))
|
||||||
|
zz_gram1 = dill.load(open("generative/zz_gram1.dill", "rb"))
|
||||||
|
wrcf_gram1 = dill.load(open("generative/wrcf_gram1.dill", "rb"))
|
||||||
|
zz_distmat = dill.load(open("generative/zz_distmat.dill", "rb"))
|
||||||
|
wrcf_distmat = dill.load(open("generative/wrcf_distmat.dill", "rb"))
|
||||||
|
|
||||||
|
print("Zigzag + kernel")
|
||||||
|
clf = AgglomerativeClustering(
|
||||||
|
n_clusters=N_CLUSTERS, affinity='precomputed', linkage='average')
|
||||||
|
clf.fit(zz_gram1)
|
||||||
|
fig, ax = plt.subplots()
|
||||||
|
ax.step(range(len(clf.labels_)), clf.labels_, where='post')
|
||||||
|
ax.set_xlabel("Subnetwork")
|
||||||
|
ax.set_ylabel("Cluster")
|
||||||
|
fig.savefig("fig/gen_zz_k.pdf", transparent=True,
|
||||||
|
pad_inches=0.3, bbox_inches="tight")
|
||||||
|
|
||||||
|
print("WRCF + kernel")
|
||||||
|
clf = AgglomerativeClustering(
|
||||||
|
n_clusters=N_CLUSTERS, affinity='precomputed', linkage='average')
|
||||||
|
clf.fit(wrcf_gram1)
|
||||||
|
fig, ax = plt.subplots()
|
||||||
|
ax.step(range(len(clf.labels_)), clf.labels_, where='post')
|
||||||
|
ax.set_xlabel("Subnetwork")
|
||||||
|
ax.set_ylabel("Cluster")
|
||||||
|
fig.savefig("fig/gen_wrcf_k.pdf", transparent=True,
|
||||||
|
pad_inches=0.3, bbox_inches="tight")
|
||||||
|
|
||||||
|
print("Zigzag + bottleneck")
|
||||||
|
clf = AgglomerativeClustering(
|
||||||
|
n_clusters=N_CLUSTERS, affinity='precomputed', linkage='average')
|
||||||
|
clf.fit(zz_distmat)
|
||||||
|
fig, ax = plt.subplots()
|
||||||
|
ax.step(range(len(clf.labels_)), clf.labels_, where='post')
|
||||||
|
ax.set_xlabel("Subnetwork")
|
||||||
|
ax.set_ylabel("Cluster")
|
||||||
|
fig.savefig("fig/gen_zz_b.pdf", transparent=True,
|
||||||
|
pad_inches=0.3, bbox_inches="tight")
|
||||||
|
|
||||||
|
print("WRCF + bottleneck")
|
||||||
|
clf = AgglomerativeClustering(
|
||||||
|
n_clusters=N_CLUSTERS, affinity='precomputed', linkage='average')
|
||||||
|
clf.fit(wrcf_distmat)
|
||||||
|
fig, ax = plt.subplots()
|
||||||
|
ax.step(range(len(clf.labels_)), clf.labels_, where='post')
|
||||||
|
ax.set_xlabel("Subnetwork")
|
||||||
|
ax.set_ylabel("Cluster")
|
||||||
|
fig.savefig("fig/gen_wrcf_b.pdf", transparent=True,
|
||||||
|
pad_inches=0.3, bbox_inches="tight")
|
||||||
|
|
||||||
|
if SOCIOPATTERNS:
|
||||||
|
print("==== SocioPatterns dataset ====")
|
||||||
|
zz_dgms = dill.load(open("sociopatterns/zz_dgms.dill", "rb"))
|
||||||
|
wrcf_dgms = dill.load(open("sociopatterns/wrcf_dgms.dill", "rb"))
|
||||||
|
zz_gram1 = dill.load(open("sociopatterns/zz_gram1.dill", "rb"))
|
||||||
|
wrcf_gram1 = dill.load(open("sociopatterns/wrcf_gram1.dill", "rb"))
|
||||||
|
zz_distmat = dill.load(open("sociopatterns/zz_distmat.dill", "rb"))
|
||||||
|
wrcf_distmat = dill.load(open("sociopatterns/wrcf_distmat.dill", "rb"))
|
||||||
|
|
||||||
|
print("Zigzag + kernel")
|
||||||
|
clf = AgglomerativeClustering(n_clusters=N_CLUSTERS, affinity='precomputed', linkage='average')
|
||||||
|
clf.fit(zz_gram1)
|
||||||
|
fig, ax = plt.subplots()
|
||||||
|
ax.step(range(len(clf.labels_)), clf.labels_, where='post')
|
||||||
|
ax.set_xlabel("Subnetwork")
|
||||||
|
ax.set_ylabel("Cluster")
|
||||||
|
fig.savefig("fig/sp_zz_k.pdf", transparent=True, pad_inches=0.3, bbox_inches="tight")
|
||||||
|
|
||||||
|
print("WRCF + kernel")
|
||||||
|
clf = AgglomerativeClustering(n_clusters=N_CLUSTERS, affinity='precomputed', linkage='average')
|
||||||
|
clf.fit(wrcf_gram1)
|
||||||
|
fig, ax = plt.subplots()
|
||||||
|
ax.step(range(len(clf.labels_)), clf.labels_, where='post')
|
||||||
|
ax.set_xlabel("Subnetwork")
|
||||||
|
ax.set_ylabel("Cluster")
|
||||||
|
fig.savefig("fig/sp_wrcf_k.pdf", transparent=True, pad_inches=0.3, bbox_inches="tight")
|
||||||
|
|
||||||
|
print("Zigzag + bottleneck")
|
||||||
|
clf = AgglomerativeClustering(n_clusters=N_CLUSTERS, affinity='precomputed', linkage='average')
|
||||||
|
clf.fit(zz_distmat)
|
||||||
|
fig, ax = plt.subplots()
|
||||||
|
ax.step(range(len(clf.labels_)), clf.labels_, where='post')
|
||||||
|
ax.set_xlabel("Subnetwork")
|
||||||
|
ax.set_ylabel("Cluster")
|
||||||
|
fig.savefig("fig/sp_zz_b.pdf", transparent=True, pad_inches=0.3, bbox_inches="tight")
|
||||||
|
|
||||||
|
print("WRCF + bottleneck")
|
||||||
|
clf = AgglomerativeClustering(n_clusters=N_CLUSTERS, affinity='precomputed', linkage='average')
|
||||||
|
clf.fit(wrcf_distmat)
|
||||||
|
fig, ax = plt.subplots()
|
||||||
|
ax.step(range(len(clf.labels_)), clf.labels_, where='post')
|
||||||
|
ax.set_xlabel("Subnetwork")
|
||||||
|
ax.set_ylabel("Cluster")
|
||||||
|
fig.savefig("fig/sp_wrcf_b.pdf", transparent=True, pad_inches=0.3, bbox_inches="tight")
|
BIN
dills/wrcf_dgms.dill
Normal file
BIN
dills/wrcf_dgms.dill
Normal file
Binary file not shown.
BIN
dills/wrcf_distmat.dill
Normal file
BIN
dills/wrcf_distmat.dill
Normal file
Binary file not shown.
BIN
dills/wrcf_gram1.dill
Normal file
BIN
dills/wrcf_gram1.dill
Normal file
Binary file not shown.
BIN
dills/zz_dgms.dill
Normal file
BIN
dills/zz_dgms.dill
Normal file
Binary file not shown.
BIN
dills/zz_distmat.dill
Normal file
BIN
dills/zz_distmat.dill
Normal file
Binary file not shown.
BIN
dills/zz_gram1.dill
Normal file
BIN
dills/zz_gram1.dill
Normal file
Binary file not shown.
BIN
fig/diagram.pdf
Normal file
BIN
fig/diagram.pdf
Normal file
Binary file not shown.
BIN
fig/gen_wrcf_b.pdf
Normal file
BIN
fig/gen_wrcf_b.pdf
Normal file
Binary file not shown.
BIN
fig/gen_wrcf_k.pdf
Normal file
BIN
fig/gen_wrcf_k.pdf
Normal file
Binary file not shown.
BIN
fig/gen_zz_b.pdf
Normal file
BIN
fig/gen_zz_b.pdf
Normal file
Binary file not shown.
BIN
fig/gen_zz_k.pdf
Normal file
BIN
fig/gen_zz_k.pdf
Normal file
Binary file not shown.
BIN
fig/sp_wrcf_b.pdf
Normal file
BIN
fig/sp_wrcf_b.pdf
Normal file
Binary file not shown.
BIN
fig/sp_wrcf_k.pdf
Normal file
BIN
fig/sp_wrcf_k.pdf
Normal file
Binary file not shown.
BIN
fig/sp_zz_b.pdf
Normal file
BIN
fig/sp_zz_b.pdf
Normal file
Binary file not shown.
BIN
fig/sp_zz_k.pdf
Normal file
BIN
fig/sp_zz_k.pdf
Normal file
Binary file not shown.
686
generative.ipynb
Normal file
686
generative.ipynb
Normal file
File diff suppressed because one or more lines are too long
128
generative.py
Normal file
128
generative.py
Normal file
|
@ -0,0 +1,128 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import numpy as np
|
||||||
|
import igraph as ig
|
||||||
|
import dionysus as d
|
||||||
|
|
||||||
|
import multiprocessing
|
||||||
|
# from dask.distributed import Client
|
||||||
|
|
||||||
|
from zigzag import sliding_windows, zigzag_network
|
||||||
|
from wrcf import wrcf_diagram
|
||||||
|
from sliced_wasserstein import diagram_array, SW_approx
|
||||||
|
|
||||||
|
import dill
|
||||||
|
|
||||||
|
|
||||||
|
def random_edge_presences(T, f):
|
||||||
|
"""Generate random times sampled over a periodic distribution.
|
||||||
|
|
||||||
|
:param T: time range
|
||||||
|
:param f: frequency
|
||||||
|
|
||||||
|
:return: an array of times.
|
||||||
|
"""
|
||||||
|
density = np.sin(f * np.arange(T)) + 1
|
||||||
|
density /= np.sum(density)
|
||||||
|
samplesize = np.random.randint(T//2)
|
||||||
|
times = np.random.choice(np.arange(T), size=samplesize, replace=False, p=density)
|
||||||
|
times = np.sort(times)
|
||||||
|
return times
|
||||||
|
|
||||||
|
|
||||||
|
def remove_inf(dgm):
|
||||||
|
"""Remove infinite points in a persistence diagram.
|
||||||
|
|
||||||
|
:param dgm: Diagram
|
||||||
|
|
||||||
|
:return: the same diagram without the infinite points.
|
||||||
|
"""
|
||||||
|
res = d.Diagram()
|
||||||
|
for p in dgm:
|
||||||
|
if p.death != np.inf:
|
||||||
|
res.append(p)
|
||||||
|
return res
|
||||||
|
|
||||||
|
|
||||||
|
## Global parameters
|
||||||
|
NODES = 40
|
||||||
|
EDGE_PROB = 0.9
|
||||||
|
TIME_RANGE = 200
|
||||||
|
FREQ = 15/TIME_RANGE
|
||||||
|
N_WINDOWS = 20
|
||||||
|
|
||||||
|
## Computations
|
||||||
|
ZIGZAG_PERS = True
|
||||||
|
WRCF_PERS = True
|
||||||
|
SW_KERNEL = True
|
||||||
|
BOTTLENECK_DIST = True
|
||||||
|
|
||||||
|
|
||||||
|
if __name__=="__main__":
|
||||||
|
print("Generating random temporal network...", end="", flush=True)
|
||||||
|
basegraph = ig.Graph.Erdos_Renyi(NODES, EDGE_PROB)
|
||||||
|
g = ig.Graph()
|
||||||
|
g.add_vertices(len(basegraph.vs))
|
||||||
|
for e in basegraph.es:
|
||||||
|
times = random_edge_presences(TIME_RANGE, FREQ)
|
||||||
|
for t in times:
|
||||||
|
g.add_edge(e.source, e.target, time=t)
|
||||||
|
print("done.")
|
||||||
|
|
||||||
|
print("Temporal partitioning...", end="", flush=True)
|
||||||
|
wins = sliding_windows(g, 1/N_WINDOWS)
|
||||||
|
print("done.")
|
||||||
|
|
||||||
|
pool = multiprocessing.Pool(processes=multiprocessing.cpu_count())
|
||||||
|
|
||||||
|
if ZIGZAG_PERS:
|
||||||
|
print("Zigzag persistence...", end="", flush=True)
|
||||||
|
zz_dgms = pool.map(zigzag_network, wins)
|
||||||
|
dill.dump(zz_dgms, open("generative/zz_dgms.dill", "wb"))
|
||||||
|
print("done, saved.")
|
||||||
|
|
||||||
|
if WRCF_PERS:
|
||||||
|
print("WRCF...", end="", flush=True)
|
||||||
|
## Collapse each subnetwork into a static graph: the weight is the
|
||||||
|
## number of appearances of each edge
|
||||||
|
for w in wins:
|
||||||
|
w.es["time"] = np.repeat(1, len(w.es["time"]))
|
||||||
|
w.simplify(combine_edges="sum")
|
||||||
|
w.es["weight"] = w.es["time"]
|
||||||
|
del w.es["time"]
|
||||||
|
wrcf_dgms = pool.map(wrcf_diagram, wins)
|
||||||
|
dill.dump(wrcf_dgms, open("generative/wrcf_dgms.dill", "wb"))
|
||||||
|
print("done.")
|
||||||
|
|
||||||
|
pool.terminate()
|
||||||
|
|
||||||
|
if ZIGZAG_PERS and SW_KERNEL:
|
||||||
|
print("Sliced Wasserstein Kernel (zigzag)...", end="", flush=True)
|
||||||
|
zz_dgms1 = [dgm[1] for dgm in zz_dgms if len(dgm) > 1]
|
||||||
|
zz_gram1 = np.array([[SW_approx(zz_dgms1[i], zz_dgms1[j], 10)
|
||||||
|
for i in range(len(zz_dgms1))] for j in range(len(zz_dgms1))])
|
||||||
|
dill.dump(zz_gram1, open("generative/zz_gram1.dill", "wb"))
|
||||||
|
print("done, saved.")
|
||||||
|
if WRCF_PERS and SW_KERNEL:
|
||||||
|
print("Sliced Wasserstein Kernel (WRCF)...", end="", flush=True)
|
||||||
|
wrcf_dgms1 = [dgm[1] for dgm in wrcf_dgms if len(dgm) > 1]
|
||||||
|
wrcf_gram1 = np.array([[SW_approx(wrcf_dgms1[i], wrcf_dgms1[j], 10)
|
||||||
|
for i in range(len(wrcf_dgms1))] for j in range(len(wrcf_dgms1))])
|
||||||
|
dill.dump(wrcf_gram1, open("generative/wrcf_gram1.dill", "wb"))
|
||||||
|
print("done, saved.")
|
||||||
|
|
||||||
|
if ZIGZAG_PERS and BOTTLENECK_DIST:
|
||||||
|
print("Bottleneck distance (zigzag)...", end="", flush=True)
|
||||||
|
zz_dgms1 = list(map(remove_inf, zz_dgms1))
|
||||||
|
zz_distmat = np.array([[d.bottleneck_distance(zz_dgms1[i], zz_dgms1[j])
|
||||||
|
for i in range(len(zz_dgms1))] for j in range(len(zz_dgms1))])
|
||||||
|
dill.dump(zz_distmat, open("generative/zz_distmat.dill", "wb"))
|
||||||
|
print("done, saved.")
|
||||||
|
if WRCF_PERS and BOTTLENECK_DIST:
|
||||||
|
print("Bottleneck distance (WRCF)...", end="", flush=True)
|
||||||
|
wrcf_dgms1 = list(map(remove_inf, wrcf_dgms1))
|
||||||
|
wrcf_distmat = np.array([[d.bottleneck_distance(wrcf_dgms1[i], wrcf_dgms1[j])
|
||||||
|
for i in range(len(wrcf_dgms1))] for j in range(len(wrcf_dgms1))])
|
||||||
|
dill.dump(wrcf_distmat, open("generative/wrcf_distmat.dill", "wb"))
|
||||||
|
print("done, saved.")
|
||||||
|
|
BIN
generative/wrcf_dgms.dill
Normal file
BIN
generative/wrcf_dgms.dill
Normal file
Binary file not shown.
BIN
generative/wrcf_distmat.dill
Normal file
BIN
generative/wrcf_distmat.dill
Normal file
Binary file not shown.
BIN
generative/wrcf_gram1.dill
Normal file
BIN
generative/wrcf_gram1.dill
Normal file
Binary file not shown.
BIN
generative/zz_dgms.dill
Normal file
BIN
generative/zz_dgms.dill
Normal file
Binary file not shown.
BIN
generative/zz_distmat.dill
Normal file
BIN
generative/zz_distmat.dill
Normal file
Binary file not shown.
BIN
generative/zz_gram1.dill
Normal file
BIN
generative/zz_gram1.dill
Normal file
Binary file not shown.
|
@ -3,6 +3,13 @@ import dionysus as d
|
||||||
|
|
||||||
|
|
||||||
def diagram_array(dgm):
|
def diagram_array(dgm):
|
||||||
|
"""Convert a Dionysus diagram to a Numpy array.
|
||||||
|
|
||||||
|
:param dgm: Dionysus Diagram
|
||||||
|
|
||||||
|
:return: a Numpy array of tuples representing the points in the
|
||||||
|
diagram.
|
||||||
|
"""
|
||||||
res = []
|
res = []
|
||||||
for p in dgm:
|
for p in dgm:
|
||||||
if p.death != np.inf:
|
if p.death != np.inf:
|
||||||
|
@ -11,8 +18,19 @@ def diagram_array(dgm):
|
||||||
|
|
||||||
|
|
||||||
def SW_approx(dgm1, dgm2, M):
|
def SW_approx(dgm1, dgm2, M):
|
||||||
|
"""Approximate computation of the Sliced Wasserstein kernel.
|
||||||
|
|
||||||
|
:param dgm1: first Diagram
|
||||||
|
:param dgm2: second Diagram
|
||||||
|
:param M int: number of directions
|
||||||
|
|
||||||
|
:return: The approximate value of the Sliced Wasserstein kernel of
|
||||||
|
dgm1 and dgm2, sampled over M dimensions.
|
||||||
|
"""
|
||||||
dgm1 = diagram_array(dgm1)
|
dgm1 = diagram_array(dgm1)
|
||||||
dgm2 = diagram_array(dgm2)
|
dgm2 = diagram_array(dgm2)
|
||||||
|
if dgm1.size == 0 or dgm2.size == 0:
|
||||||
|
return 0
|
||||||
# Add \pi_\delta(dgm1) to dgm2 and vice-versa
|
# Add \pi_\delta(dgm1) to dgm2 and vice-versa
|
||||||
proj1 = dgm1.dot([1, 1])/np.sqrt(2)
|
proj1 = dgm1.dot([1, 1])/np.sqrt(2)
|
||||||
proj2 = dgm2.dot([1, 1])/np.sqrt(2)
|
proj2 = dgm2.dot([1, 1])/np.sqrt(2)
|
||||||
|
|
302
socialevolution.ipynb
Normal file
302
socialevolution.ipynb
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
106
sociopatterns.py
Normal file
106
sociopatterns.py
Normal file
|
@ -0,0 +1,106 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import numpy as np
|
||||||
|
import igraph as ig
|
||||||
|
import dionysus as d
|
||||||
|
|
||||||
|
import multiprocessing
|
||||||
|
# from dask.distributed import Client
|
||||||
|
|
||||||
|
from zigzag import sliding_windows, zigzag_network
|
||||||
|
from wrcf import wrcf_diagram
|
||||||
|
from sliced_wasserstein import diagram_array, SW_approx
|
||||||
|
|
||||||
|
import dill
|
||||||
|
|
||||||
|
|
||||||
|
def remove_inf(dgm):
|
||||||
|
"""Remove infinite points in a persistence diagram.
|
||||||
|
|
||||||
|
:param dgm: Diagram
|
||||||
|
|
||||||
|
:return: the same diagram without the infinite points.
|
||||||
|
"""
|
||||||
|
res = d.Diagram()
|
||||||
|
for p in dgm:
|
||||||
|
if p.death != np.inf:
|
||||||
|
res.append(p)
|
||||||
|
return res
|
||||||
|
|
||||||
|
|
||||||
|
## Global parameters
|
||||||
|
N_WINDOWS = 40
|
||||||
|
|
||||||
|
## Computations
|
||||||
|
ZIGZAG_PERS = True
|
||||||
|
WRCF_PERS = True
|
||||||
|
SW_KERNEL = True
|
||||||
|
BOTTLENECK_DIST = True
|
||||||
|
|
||||||
|
|
||||||
|
if __name__=="__main__":
|
||||||
|
print("Loading SocioPatterns dataset...", end="", flush=True)
|
||||||
|
g = ig.read("data/sociopatterns/infectious/infectious.graphml")
|
||||||
|
del g.es["id"]
|
||||||
|
# print(g.summary())
|
||||||
|
print("done.")
|
||||||
|
|
||||||
|
print("Temporal partitioning...", end="", flush=True)
|
||||||
|
wins = sliding_windows(g, 1/N_WINDOWS)
|
||||||
|
print("done.")
|
||||||
|
|
||||||
|
pool = multiprocessing.Pool(processes=multiprocessing.cpu_count())
|
||||||
|
|
||||||
|
if ZIGZAG_PERS:
|
||||||
|
print("Zigzag persistence...", end="", flush=True)
|
||||||
|
zz_dgms = pool.map(zigzag_network, wins)
|
||||||
|
dill.dump(zz_dgms, open("sociopatterns/zz_dgms.dill", "wb"))
|
||||||
|
print("done, saved.")
|
||||||
|
|
||||||
|
if WRCF_PERS:
|
||||||
|
print("WRCF...", end="", flush=True)
|
||||||
|
## Collapse each subnetwork into a static graph: the weight is the
|
||||||
|
## number of appearances of each edge
|
||||||
|
for w in wins:
|
||||||
|
w.es["time"] = np.repeat(1, len(w.es["time"]))
|
||||||
|
w.simplify(combine_edges="sum")
|
||||||
|
w.es["weight"] = w.es["time"]
|
||||||
|
del w.es["time"]
|
||||||
|
wrcf_dgms = pool.map(wrcf_diagram, wins)
|
||||||
|
dill.dump(wrcf_dgms, open("sociopatterns/wrcf_dgms.dill", "wb"))
|
||||||
|
print("done.")
|
||||||
|
|
||||||
|
pool.terminate()
|
||||||
|
|
||||||
|
if ZIGZAG_PERS and SW_KERNEL:
|
||||||
|
print("Sliced Wasserstein Kernel (zigzag)...", end="", flush=True)
|
||||||
|
zz_dgms1 = [dgm[1] for dgm in zz_dgms if len(dgm) > 1]
|
||||||
|
zz_gram1 = np.array([[SW_approx(zz_dgms1[i], zz_dgms1[j], 10)
|
||||||
|
for i in range(len(zz_dgms1))] for j in range(len(zz_dgms1))])
|
||||||
|
dill.dump(zz_gram1, open("sociopatterns/zz_gram1.dill", "wb"))
|
||||||
|
print("done, saved.")
|
||||||
|
if WRCF_PERS and SW_KERNEL:
|
||||||
|
print("Sliced Wasserstein Kernel (WRCF)...", end="", flush=True)
|
||||||
|
wrcf_dgms1 = [dgm[1] for dgm in wrcf_dgms if len(dgm) > 1]
|
||||||
|
wrcf_gram1 = np.array([[SW_approx(wrcf_dgms1[i], wrcf_dgms1[j], 10)
|
||||||
|
for i in range(len(wrcf_dgms1))] for j in range(len(wrcf_dgms1))])
|
||||||
|
dill.dump(wrcf_gram1, open("sociopatterns/wrcf_gram1.dill", "wb"))
|
||||||
|
print("done, saved.")
|
||||||
|
|
||||||
|
if ZIGZAG_PERS and BOTTLENECK_DIST:
|
||||||
|
print("Bottleneck distance (zigzag)...", end="", flush=True)
|
||||||
|
zz_dgms1 = list(map(remove_inf, zz_dgms1))
|
||||||
|
zz_distmat = np.array([[d.bottleneck_distance(zz_dgms1[i], zz_dgms1[j])
|
||||||
|
for i in range(len(zz_dgms1))] for j in range(len(zz_dgms1))])
|
||||||
|
dill.dump(zz_distmat, open("sociopatterns/zz_distmat.dill", "wb"))
|
||||||
|
print("done, saved.")
|
||||||
|
if WRCF_PERS and BOTTLENECK_DIST:
|
||||||
|
print("Bottleneck distance (WRCF)...", end="", flush=True)
|
||||||
|
wrcf_dgms1 = list(map(remove_inf, wrcf_dgms1))
|
||||||
|
wrcf_distmat = np.array([[d.bottleneck_distance(wrcf_dgms1[i], wrcf_dgms1[j])
|
||||||
|
for i in range(len(wrcf_dgms1))] for j in range(len(wrcf_dgms1))])
|
||||||
|
dill.dump(wrcf_distmat, open("sociopatterns/wrcf_distmat.dill", "wb"))
|
||||||
|
print("done, saved.")
|
||||||
|
|
||||||
|
|
||||||
|
|
BIN
sociopatterns/wrcf_dgms.dill
Normal file
BIN
sociopatterns/wrcf_dgms.dill
Normal file
Binary file not shown.
BIN
sociopatterns/wrcf_distmat.dill
Normal file
BIN
sociopatterns/wrcf_distmat.dill
Normal file
Binary file not shown.
BIN
sociopatterns/wrcf_gram1.dill
Normal file
BIN
sociopatterns/wrcf_gram1.dill
Normal file
Binary file not shown.
BIN
sociopatterns/zz_dgms.dill
Normal file
BIN
sociopatterns/zz_dgms.dill
Normal file
Binary file not shown.
BIN
sociopatterns/zz_distmat.dill
Normal file
BIN
sociopatterns/zz_distmat.dill
Normal file
Binary file not shown.
BIN
sociopatterns/zz_gram1.dill
Normal file
BIN
sociopatterns/zz_gram1.dill
Normal file
Binary file not shown.
BIN
sp_wrcf_k.pdf
Normal file
BIN
sp_wrcf_k.pdf
Normal file
Binary file not shown.
18
spplot.py
Normal file
18
spplot.py
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import numpy as np
|
||||||
|
import igraph as ig
|
||||||
|
|
||||||
|
import matplotlib
|
||||||
|
matplotlib.use("PDF")
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
plt.style.use("fivethirtyeight")
|
||||||
|
plt.rcParams["figure.figsize"] = (10, 6)
|
||||||
|
|
||||||
|
if __name__=="__main__":
|
||||||
|
g = ig.read("data/sociopatterns/infectious/infectious.graphml")
|
||||||
|
g.simplify()
|
||||||
|
layout = g.layout_grid_fruchterman_reingold()
|
||||||
|
# layout = g.lgl()
|
||||||
|
ig.plot(g, layout=layout)
|
||||||
|
|
44
wrcf.py
Normal file
44
wrcf.py
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import numpy as np
|
||||||
|
import igraph as ig
|
||||||
|
import dionysus as d
|
||||||
|
|
||||||
|
|
||||||
|
def wrcf(G, weight="weight"):
|
||||||
|
"""Compute the weight-rank clique filtration (WRCF) of a graph.
|
||||||
|
|
||||||
|
:param G: igraph Graph
|
||||||
|
:param weight: name of the weight attribute
|
||||||
|
|
||||||
|
:return: a Dionysus filtration.
|
||||||
|
"""
|
||||||
|
# Define filtration step 0 as the set of all nodes
|
||||||
|
filt = d.Filtration()
|
||||||
|
for v in G.vs:
|
||||||
|
filt.append(d.Simplex([v.index], 0))
|
||||||
|
# Rank all edge weights
|
||||||
|
distinct_weights = np.unique(G.es[weight])[::-1]
|
||||||
|
for t, w in enumerate(distinct_weights):
|
||||||
|
# At filtration step t, threshold the graph at weight[t]
|
||||||
|
subg = G.subgraph_edges(G.es(lambda e: e[weight] >= w))
|
||||||
|
# Find all maximal cliques and define them to be simplices
|
||||||
|
for clique in subg.maximal_cliques():
|
||||||
|
for s in d.closure([d.Simplex(clique)], len(clique)):
|
||||||
|
filt.append(d.Simplex(s, t+1))
|
||||||
|
filt.sort()
|
||||||
|
return(filt)
|
||||||
|
|
||||||
|
|
||||||
|
def wrcf_diagram(graph, weight="weight"):
|
||||||
|
"""Compute persistence diagrams of a graph using WRCF.
|
||||||
|
|
||||||
|
:param graph: igraph Graph
|
||||||
|
:param weight: name of the weight attribute
|
||||||
|
|
||||||
|
:return: a list of persistence diagrams.
|
||||||
|
"""
|
||||||
|
filt = wrcf(graph, weight=weight)
|
||||||
|
pers = d.homology_persistence(filt)
|
||||||
|
dgms = d.init_diagrams(pers, filt)
|
||||||
|
return dgms
|
65
zigzag.py
65
zigzag.py
|
@ -1,19 +1,24 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import igraph as ig
|
import igraph as ig
|
||||||
import dionysus as d
|
import dionysus as d
|
||||||
|
|
||||||
import pickle
|
|
||||||
import matplotlib.pyplot as plt
|
|
||||||
|
|
||||||
plt.style.use("fivethirtyeight")
|
|
||||||
plt.rcParams["figure.figsize"] = 10, 6
|
|
||||||
|
|
||||||
|
|
||||||
def sliding_windows(g, res=0.1, overlap=0):
|
def sliding_windows(g, res=0.1, overlap=0):
|
||||||
|
"""Compute subnetworks of a temporal network based on temporal
|
||||||
|
partitioning of the time range.
|
||||||
|
|
||||||
|
:param g: igraph Graph
|
||||||
|
:param res: resolution
|
||||||
|
:param overlap: overlap
|
||||||
|
|
||||||
|
:return: a list of temporal networks.
|
||||||
|
"""
|
||||||
times = np.array(g.es["time"])
|
times = np.array(g.es["time"])
|
||||||
duration = res * (times.max() - times.min())
|
duration = res * (times.max() - times.min())
|
||||||
windows = []
|
windows = []
|
||||||
for i in range(int(1/res)-1):
|
for i in range(int(1/res)):
|
||||||
edges = g.es.select(time_gt=times.min() + duration*i,
|
edges = g.es.select(time_gt=times.min() + duration*i,
|
||||||
time_lt=times.min() + duration*(i+1))
|
time_lt=times.min() + duration*(i+1))
|
||||||
windows.append(g.subgraph_edges(edges))
|
windows.append(g.subgraph_edges(edges))
|
||||||
|
@ -21,10 +26,14 @@ def sliding_windows(g, res=0.1, overlap=0):
|
||||||
|
|
||||||
|
|
||||||
def max_simplicial_complex(g):
|
def max_simplicial_complex(g):
|
||||||
|
"""Return the maximal simplicial complex of a network g.
|
||||||
|
"""
|
||||||
return d.Filtration(g.maximal_cliques())
|
return d.Filtration(g.maximal_cliques())
|
||||||
|
|
||||||
|
|
||||||
def find_transitions(a):
|
def find_transitions(a):
|
||||||
|
"""Find the transition times in an array of presence times.
|
||||||
|
"""
|
||||||
res = []
|
res = []
|
||||||
prev = False
|
prev = False
|
||||||
for i, cur in enumerate(a):
|
for i, cur in enumerate(a):
|
||||||
|
@ -35,6 +44,14 @@ def find_transitions(a):
|
||||||
|
|
||||||
|
|
||||||
def presence_times(g):
|
def presence_times(g):
|
||||||
|
"""Compute the data required to compute zigzag persistence:
|
||||||
|
simplicial complex and transition times.
|
||||||
|
|
||||||
|
:param g: igraph Graph
|
||||||
|
|
||||||
|
:return: a tuple with the maximum simplicial complex and the
|
||||||
|
transition times of each simplex.
|
||||||
|
"""
|
||||||
max_simplicial_complex = d.Filtration(g.cliques())
|
max_simplicial_complex = d.Filtration(g.cliques())
|
||||||
filts = []
|
filts = []
|
||||||
for t in np.sort(np.unique(g.es["time"])):
|
for t in np.sort(np.unique(g.es["time"])):
|
||||||
|
@ -46,27 +63,13 @@ def presence_times(g):
|
||||||
return (max_simplicial_complex, presences)
|
return (max_simplicial_complex, presences)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
def zigzag_network(g):
|
||||||
# Import the data
|
"""Compute zigzag persistence on a temporal network.
|
||||||
g = ig.read("data/sociopatterns/infectious/infectious.graphml")
|
|
||||||
print(g.summary())
|
:param g: igraph Graph
|
||||||
# Segment the network into sliding windows (resolution = 5%)
|
|
||||||
wins = sliding_windows(g, 0.05)
|
:return: a list of persistence diagrams.
|
||||||
# Compute the presence times of maximal simplices for an example window
|
"""
|
||||||
print(wins[0].summary())
|
(f, t) = presence_times(g)
|
||||||
(f, t) = presence_times(wins[0])
|
_, dgms, _ = d.zigzag_homology_persistence(f, t)
|
||||||
for s in f:
|
return dgms
|
||||||
print(s)
|
|
||||||
print(t)
|
|
||||||
# Compute the zigzag homology on the window
|
|
||||||
print("Computing zigzag persistence...")
|
|
||||||
zz, dgms, cells = d.zigzag_homology_persistence(f, t)
|
|
||||||
for i, dgm in enumerate(dgms):
|
|
||||||
print("Dimension: {}".format(i))
|
|
||||||
for p in dgm:
|
|
||||||
print(p)
|
|
||||||
# pickle.dump(dgms, open("diagrams.p", "wb"))
|
|
||||||
# Plot the persistence diagrams
|
|
||||||
# for i, dgm in enumerate(dgms):
|
|
||||||
# d.plot.plot_diagram(dgm, show=False)
|
|
||||||
# plt.savefig("dgm_{}.png".format(i))
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue