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 = "*"
|
||||
altair = "*"
|
||||
beakerx = "*"
|
||||
dionysus = "*"
|
||||
ipyparallel = "*"
|
||||
dask = {extras = ["complete"]}
|
||||
graphviz = "*"
|
||||
|
@ -22,5 +21,11 @@ bokeh = "*"
|
|||
scikit-learn = "*"
|
||||
sklearn_tda = {git = "https://github.com/MathieuCarriere/sklearn_tda"}
|
||||
cython = "*"
|
||||
dionysus = {git = "https://github.com/mrzv/dionysus.git"}
|
||||
nltk = "*"
|
||||
pyclustering = "*"
|
||||
dill = "*"
|
||||
python-language-server = {extras = ["all"]}
|
||||
"network2tikz" = "*"
|
||||
|
||||
[dev-packages]
|
||||
|
|
613
Pipfile.lock
generated
613
Pipfile.lock
generated
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"_meta": {
|
||||
"hash": {
|
||||
"sha256": "05e3399522b22302218e7257393571823c8820f342c48adbf3bd490988ad16f4"
|
||||
"sha256": "09d52d6813195a12528ce0bdf157449a71b8491677818225cf22db63182017d1"
|
||||
},
|
||||
"pipfile-spec": 6,
|
||||
"requires": {},
|
||||
|
@ -16,11 +16,17 @@
|
|||
"default": {
|
||||
"altair": {
|
||||
"hashes": [
|
||||
"sha256:7926e2e1680457d70d52c5157468770f28b6ab6b126ba65fbd3824ebf6422e8b",
|
||||
"sha256:e8b222588dde98ec614e6808357fde7fa321118db44cc909df2bf30158d931c0"
|
||||
"sha256:6bdbc62a9b3fc22212e548a2a5f068c0dd378a9f5d99f1016346d7637894cfa9",
|
||||
"sha256:c158699026eb5a19f95c1ca742e2e82bc20c27013ef5785f10836283e2233f8a"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==2.1.0"
|
||||
"version": "==2.2.2"
|
||||
},
|
||||
"autopep8": {
|
||||
"hashes": [
|
||||
"sha256:655e3ee8b4545be6cfed18985f581ee9ecc74a232550ee46e9797b6fbf4f336d"
|
||||
],
|
||||
"version": "==1.4"
|
||||
},
|
||||
"backcall": {
|
||||
"hashes": [
|
||||
|
@ -31,17 +37,17 @@
|
|||
},
|
||||
"beakerx": {
|
||||
"hashes": [
|
||||
"sha256:2a319d54a80d585652a36b2e3ab130a9e848544048379b2d2b5c01884d5664b2"
|
||||
"sha256:e71f041a6b8bcbd7700921d28d11f166daa0c9ea17847d75f8572b7d4e6484cc"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==0.21.1"
|
||||
"version": "==1.1.0"
|
||||
},
|
||||
"bleach": {
|
||||
"hashes": [
|
||||
"sha256:b8fa79e91f96c2c2cd9fd1f9eda906efb1b88b483048978ba62fef680e962b34",
|
||||
"sha256:eb7386f632349d10d9ce9d4a838b134d4731571851149f9cc2c05a9a837a9a44"
|
||||
"sha256:0ee95f6167129859c5dce9b1ca291ebdb5d8cd7e382ca0e237dfd0dad63f63d8",
|
||||
"sha256:24754b9a7d530bf30ce7cbc805bc6cce785660b4a10ff3a43633728438c105ab"
|
||||
],
|
||||
"version": "==2.1.3"
|
||||
"version": "==2.1.4"
|
||||
},
|
||||
"bokeh": {
|
||||
"hashes": [
|
||||
|
@ -59,10 +65,10 @@
|
|||
},
|
||||
"cloudpickle": {
|
||||
"hashes": [
|
||||
"sha256:54858c7b7dc763ed894ff91059c1d0b017d593fe23850d3d8d75f47d98398197",
|
||||
"sha256:ac7acd0dcb1c52fa14873f801efe0c53e6457bcc5f01542cb445a6515d9a4b72"
|
||||
"sha256:6ea4b548f61a4f616b065182716318c7dced8c053517f35ac59cec22802daf3d",
|
||||
"sha256:ce26435f16a855dfbebb1f7f8d967884080b167ee6374d7ff0951aaf2455972b"
|
||||
],
|
||||
"version": "==0.5.3"
|
||||
"version": "==0.5.5"
|
||||
},
|
||||
"cycler": {
|
||||
"hashes": [
|
||||
|
@ -73,51 +79,45 @@
|
|||
},
|
||||
"cython": {
|
||||
"hashes": [
|
||||
"sha256:0344e9352b0915910e212c38403b63f902ce1cba75dde7a43a9112ff960eb2a5",
|
||||
"sha256:0a390c39e912fc5f82d5feae2d16ea061971407099e1efb0fecb255cb96fbeff",
|
||||
"sha256:0f2b2e09f94c498f555935e732b7321b5f62f00e7a789238f6c5ddd66987a54d",
|
||||
"sha256:15614592616b6dd5e919e158796350ebeba6cb6b5d2998cfff41b53f568c8355",
|
||||
"sha256:1aae6d6e9858888144cea147eb5e677830f45faaff3d305d77378c3cba55f526",
|
||||
"sha256:200583297f23e558744bc4688d8a2b2605ab6ad7d1494a9fd8c8094ad65ebf3c",
|
||||
"sha256:295facc211a6b55db9979455b856180f2839be22ab767ffdea55986bee83ca9f",
|
||||
"sha256:36c16bf39280fe857213d8da31c07a6179d3878c3dc2e435dce0974b9f8f0729",
|
||||
"sha256:3fef8dfa9cf86ab7814ca31369374ddd5b9524f54406aa83b53b5937965b8e88",
|
||||
"sha256:439d233d3214e3d69c033a9a93516758f2c8a03e83ea51ae14b6eed13687d224",
|
||||
"sha256:455ab39c6c0849a6c008fcdf2fae42475f18d0801a3be229e8f75367bbe3b325",
|
||||
"sha256:56821e3791209e6a11992e294afbf7e3dcda7d4fd54d06396dd521928d3d14fe",
|
||||
"sha256:62b594584889b33bbea7e71f9d7c5c6539091b341334ef7ca1ae7e30a9dd3e15",
|
||||
"sha256:6468345ee884a244d3b5250dad8696015ed8c6d24379b64767340379c1ff158a",
|
||||
"sha256:70f81a75fb25c1c3c61843e3a6fe771a76c4ebf4d154455a7eff0740ad47dff4",
|
||||
"sha256:8011090beb09251cb4ece1e14263e574b38eda696b788552b369ad343373d0e9",
|
||||
"sha256:80d6a0369333a162fc32a22637f5870f3e87fb038c7b58860bbe00b05b58aa62",
|
||||
"sha256:85b04e32af58a3c008c0ba8169017770aaa342a5972b748f81d043d66363e437",
|
||||
"sha256:951cbd5e479aaff70ea7aa09eb8c50e2c98c9bc08abc5a72e504c90ebd4564bb",
|
||||
"sha256:9c4db4cfc8ac219b50484a505e3327142db04d5e9954aaed00ab729ef4beb142",
|
||||
"sha256:9ed273d82116fa148c92901b9639030e087979d455982bd7bf727fb486c0bd17",
|
||||
"sha256:a1af59e6c9b4acc07c429d8495fc016a35e0a1270f28c57317352f512df7e214",
|
||||
"sha256:b894ff4daf8dfaf657bf2d5e7190a4de11b2400b1e0fb0902974d35c23a26dea",
|
||||
"sha256:bd6ce209cc00cac2a7e216d4145a6b323b30d1c7414e369fbd427bf07d966f2a",
|
||||
"sha256:c2659981150b4de04397dcfd4bff64e384d3ba25af60d1b22820fdf108298cb2",
|
||||
"sha256:c347d0a129c9742fefeaecf2455576c5ae73362aa01a27cea26fac237b7e2a87",
|
||||
"sha256:c981a750858f1727995acf861ab030b267d264ca6efda2f01104941187a3675f",
|
||||
"sha256:cc4152b19ec168391f7815d24b70c8911829ba281bd5fcd98cab9dc21abe62ff",
|
||||
"sha256:d0f5b1668e7f7f6fc9849f49a20c5db10562a0ab29cd66818894dfebbca7b304",
|
||||
"sha256:d7152006ed1a3adb8f978077b57d237ddafa188240af53cd72b5c79e4ed000e3",
|
||||
"sha256:e5f877472993474296125c22b84c334b550010815e513cccce73da854a132d64",
|
||||
"sha256:e7c2c87ff2f99ed4be1bb046d6eddfb388af627928037f9e0a420c05daaf14ed",
|
||||
"sha256:edd7d499685655031be5b4d33005096b6345f81eeb7ab9d2dd415db0c7bcf64e",
|
||||
"sha256:f99a777fda569a88deea863eac2722b5e88957c4d5f4413949740da791857ac9"
|
||||
"sha256:022592d419fc754509d0e0461eb2958dbaa45fb60d51c8a61778c58994edbe36",
|
||||
"sha256:07659f4c57582104d9486c071de512fbd7e087a3a630535298442cc0e20a3f5a",
|
||||
"sha256:13c73e2ffa93a615851e03fad97591954d143b5b62361b9adef81f46a31cd8ef",
|
||||
"sha256:13eab5a2835a84ff62db343035603044c908d2b3b6eec09d67fdf9970acf7ac9",
|
||||
"sha256:183b35a48f58862c4ec1e821f07bb7b1156c8c8559c85c32ae086f28947474eb",
|
||||
"sha256:2f526b0887128bf20ab2acc905a975f62b5a04ab2f63ecbe5a30fc28285d0e0c",
|
||||
"sha256:32de8637f5e6c5a76667bc7c8fc644bd9314dc19af36db8ce30a0b92ada0f642",
|
||||
"sha256:4172c183ef4fb2ace6a29cdf7fc9200c5a471a7f775ff691975b774bd9ed3ad2",
|
||||
"sha256:553956ec06ecbd731ef0c538eb28a5b46bedea7ab89b18237ff28b4b99d65eee",
|
||||
"sha256:660eeb6870687fd3eda91e00ba4e72220545c254c8c4d967fd0c910f4fbb8cbc",
|
||||
"sha256:693a8619ef066ece055ed065a15cf440f9d3ebd1bca60e87ea19144833756433",
|
||||
"sha256:759c799e9ef418f163b5412e295e14c0a48fe3b4dcba9ab8aab69e9f511cfefd",
|
||||
"sha256:827d3a91b7a7c31ce69e5974496fd9a8ba28eb498b988affb66d0d30de11d934",
|
||||
"sha256:87e57b5d730cfab225d95e7b23abbc0c6f77598bd66639e93c73ce8afbae6f38",
|
||||
"sha256:9400e5db8383346b0694a3e794d8bded18a27b21123516dcdf4b79d7ec28e98b",
|
||||
"sha256:9ec27681c5b1b457aacb1cbda5db04aa28b76da2af6e1e1fd15f233eafe6a0b0",
|
||||
"sha256:ae4784f040a3313c8bd00c8d04934b7ade63dc59692d8f00a5235be8ed72a445",
|
||||
"sha256:b2ba8310ebd3c0e0b884d5e95bbd99d467d6af922acd1e44fe4b819839b2150e",
|
||||
"sha256:b64575241f64f6ec005a4d4137339fb0ba5e156e826db2fdb5f458060d9979e0",
|
||||
"sha256:c78ad0df75a9fc03ab28ca1b950c893a208c451a18f76796c3e25817d6994001",
|
||||
"sha256:cdbb917e41220bd3812234dbe59d15391adbc2c5d91ae11a5273aab9e32ba7ec",
|
||||
"sha256:d2223a80c623e2a8e97953ab945dfaa9385750a494438dcb55562eb1ddd9565a",
|
||||
"sha256:e22f21cf92a9f8f007a280e3b3462c886d9068132a6c698dec10ad6125e3ca1e",
|
||||
"sha256:ea5c16c48e561f4a6f6b8c24807494b77a79e156b8133521c400f22ca712101b",
|
||||
"sha256:ee7a9614d51fe16e32ca5befe72e0808baff481791728449d0b17c8b0fe29eb9",
|
||||
"sha256:ef86de9299e4ab2ebb129fb84b886bf40b9aced9807c6d6d5f28b46fb905f82c",
|
||||
"sha256:f3e4860f5458a9875caa3de65e255720c0ed2ce71f0bcdab02497b32104f9db8",
|
||||
"sha256:fc6c20a8ac22202a779ad4c59756647be0826993d2151a03c015e76d2368ae5f"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==0.28.3"
|
||||
"version": "==0.28.5"
|
||||
},
|
||||
"dask": {
|
||||
"hashes": [
|
||||
"sha256:b50b435c51bf5ca30c2667d0d92649765b732a2e6bebe7e219e6dd3fe8d7ac4e",
|
||||
"sha256:b89dc77ef23c380005db9441c3c42010fef47034c687f8d93d0e2619efa060c9"
|
||||
"sha256:692924fbd5894afd1c71a73af974aa86bd4d07b0620e56af2d7d329900cf384a",
|
||||
"sha256:aae1f237870c01773bca5a75289f10166b84e13b9e966d8431e945f1f1febb99"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==0.18.1"
|
||||
"version": "==0.19.1"
|
||||
},
|
||||
"decorator": {
|
||||
"hashes": [
|
||||
|
@ -126,21 +126,22 @@
|
|||
],
|
||||
"version": "==4.3.0"
|
||||
},
|
||||
"dionysus": {
|
||||
"dill": {
|
||||
"hashes": [
|
||||
"sha256:3348014522b5166c51802c4e3e735685005ca098895debd000387c1f9de0987e",
|
||||
"sha256:757fbc7cdfe69e7b267255a8b36456e9447830d1838a23cd6cfaed7da77083da",
|
||||
"sha256:a5c8a18b6e9be0f8ae3eb12edff1c0b4cf931ae18479106f91fbc9b27e458155"
|
||||
"sha256:624dc244b94371bb2d6e7f40084228a2edfff02373fe20e018bef1ee92fdd5b3"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==2.0.5"
|
||||
"version": "==0.2.8.2"
|
||||
},
|
||||
"dionysus": {
|
||||
"git": "https://github.com/mrzv/dionysus.git"
|
||||
},
|
||||
"distributed": {
|
||||
"hashes": [
|
||||
"sha256:6dcd885ea3b92bdc5af4ebb82ef37c073e60c9cdd24bc97d270a1cfed970e86b",
|
||||
"sha256:73b992604118c1489f621586209a50c75d1df146e7eccbffbc790ac028a97ca4"
|
||||
"sha256:2ef5a9612bcd06fe1bfdb4ca741834a87ba199e3bfe615f21e490e172fbd1a3f",
|
||||
"sha256:9d4693442efe40e05e4304fe6d8174989c6eb4bad1afe70480c98263ef8e1cdb"
|
||||
],
|
||||
"version": "==1.22.0"
|
||||
"version": "==1.23.1"
|
||||
},
|
||||
"entrypoints": {
|
||||
"hashes": [
|
||||
|
@ -149,13 +150,19 @@
|
|||
],
|
||||
"version": "==0.2.3"
|
||||
},
|
||||
"future": {
|
||||
"hashes": [
|
||||
"sha256:e39ced1ab767b5936646cedba8bcce582398233d6a627067d4c6a454c90cfedb"
|
||||
],
|
||||
"version": "==0.16.0"
|
||||
},
|
||||
"graphviz": {
|
||||
"hashes": [
|
||||
"sha256:4958a19cbd8461757a08db308a4a15c3d586660417e1e364f0107d2fe481689f",
|
||||
"sha256:7caa53f0b0be42c5f2eaa3f3d71dcc863b15bacceb5d531c2ad7519e1980ff82"
|
||||
"sha256:310bacfb969f0ac7c872610500e017c3e82b24a8abd33d289e99af162de30cb8",
|
||||
"sha256:865afa6ab9775cf29db03abd8e571a164042c726c35a1b3c1e2b8c4c645e2993"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==0.8.4"
|
||||
"version": "==0.9"
|
||||
},
|
||||
"heapdict": {
|
||||
"hashes": [
|
||||
|
@ -172,11 +179,11 @@
|
|||
},
|
||||
"ipykernel": {
|
||||
"hashes": [
|
||||
"sha256:395f020610e33ffa0b0c9c0cd1a1d927d51ab9aa9f30a7ae36bb0c908a33e89c",
|
||||
"sha256:935941dba29d856eee34b8b5261d971bd5012547239ed73ddfff099143748c37",
|
||||
"sha256:c091449dd0fad7710ddd9c4a06e8b9e15277da306590bc07a3a1afa6b4453c8f"
|
||||
"sha256:00d88b7e628e4e893359119b894451611214bce09776a3bf8248fe42cb48ada6",
|
||||
"sha256:a706b975376efef98b70e10cd167ab9506cf08a689d689a3c7daf344c15040f6",
|
||||
"sha256:c5a498c70f7765c34f3397cf943b069057f5bef4e0218e4cfbb733e9f38fa5fa"
|
||||
],
|
||||
"version": "==4.8.2"
|
||||
"version": "==4.9.0"
|
||||
},
|
||||
"ipyparallel": {
|
||||
"hashes": [
|
||||
|
@ -188,10 +195,11 @@
|
|||
},
|
||||
"ipython": {
|
||||
"hashes": [
|
||||
"sha256:a0c96853549b246991046f32d19db7140f5b1a644cc31f0dc1edc86713b7676f",
|
||||
"sha256:eca537aa61592aca2fef4adea12af8e42f5c335004dfa80c78caf80e8b525e5c"
|
||||
"sha256:007dcd929c14631f83daff35df0147ea51d1af420da303fd078343878bd5fb62",
|
||||
"sha256:b0f2ef9eada4a68ef63ee10b6dde4f35c840035c50fd24265f8052c98947d5a4"
|
||||
],
|
||||
"version": "==6.4.0"
|
||||
"markers": "python_version >= '3.3'",
|
||||
"version": "==6.5.0"
|
||||
},
|
||||
"ipython-genutils": {
|
||||
"hashes": [
|
||||
|
@ -202,10 +210,10 @@
|
|||
},
|
||||
"ipywidgets": {
|
||||
"hashes": [
|
||||
"sha256:9985e91c300f7bb41ca97627ed8a8ce22750584cefd023ffbe4b0c18edb84605",
|
||||
"sha256:ab9869cda5af7ba449d8f707b29b7e97a7db97d6366805d6b733338f51096f54"
|
||||
"sha256:ba46e7228b951191c2288478a6f321c67013c0674aff074c8ad32a9723729e1d",
|
||||
"sha256:d2bea16c0f08df978f63b58c9e91ac4c4bcc0ba5f90ca9a34c310678597542c3"
|
||||
],
|
||||
"version": "==7.2.1"
|
||||
"version": "==7.4.1"
|
||||
},
|
||||
"jedi": {
|
||||
"hashes": [
|
||||
|
@ -260,18 +268,18 @@
|
|||
},
|
||||
"jupyterlab": {
|
||||
"hashes": [
|
||||
"sha256:6a1af69fe0c0890891b5bb4cb9914edca68ed59b00ed50cd2bc78e230c739b55",
|
||||
"sha256:88290656a2db2e38ef913a257ec283f3b5bd99144ed3d52899c9af7030077554"
|
||||
"sha256:86854ad08e10aac67d2092051caba7831600c75df8c8ded3e0ddf96861242048",
|
||||
"sha256:a85dcbf06febeaaaeace5a324e672e380738ac98c088792f675bef94420f23e2"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==0.32.1"
|
||||
"version": "==0.34.7"
|
||||
},
|
||||
"jupyterlab-launcher": {
|
||||
"hashes": [
|
||||
"sha256:c78646afa354856a7ba3d9583122b89603d24587126f4c49a04dd42f50c831ec",
|
||||
"sha256:d6308617fbdb3949c76356e8149c9835b65b01653fdefd983085c61d75f3c810"
|
||||
"sha256:bd91a0938d415fed3a9214aa918a66dd90ccff0c5b59c8a73134b1e6afd857c6",
|
||||
"sha256:f880eada0b8b1f524d5951dc6fcae0d13b169897fc8a247d75fb5beadd69c5f0"
|
||||
],
|
||||
"version": "==0.10.5"
|
||||
"version": "==0.13.1"
|
||||
},
|
||||
"kiwisolver": {
|
||||
"hashes": [
|
||||
|
@ -285,18 +293,23 @@
|
|||
"sha256:4329008a167fac233e398e8a600d1b91539dc33c5a3eadee84c0d4b04d4494fa",
|
||||
"sha256:45813e0873bbb679334a161b28cb9606d9665e70561fd6caa8863e279b5e464b",
|
||||
"sha256:53a5b27e6b5717bdc0125338a822605084054c80f382051fb945d2c0e6899a20",
|
||||
"sha256:574f24b9805cb1c72d02b9f7749aa0cc0b81aa82571be5201aa1453190390ae5",
|
||||
"sha256:66f82819ff47fa67a11540da96966fb9245504b7f496034f534b81cacf333861",
|
||||
"sha256:79e5fe3ccd5144ae80777e12973027bd2f4f5e3ae8eb286cabe787bed9780138",
|
||||
"sha256:83410258eb886f3456714eea4d4304db3a1fc8624623fc3f38a487ab36c0f653",
|
||||
"sha256:8b6a7b596ce1d2a6d93c3562f1178ebd3b7bb445b3b0dd33b09f9255e312a965",
|
||||
"sha256:9576cb63897fbfa69df60f994082c3f4b8e6adb49cccb60efb2a80a208e6f996",
|
||||
"sha256:95a25d9f3449046ecbe9065be8f8380c03c56081bc5d41fe0fb964aaa30b2195",
|
||||
"sha256:a424f048bebc4476620e77f3e4d1f282920cef9bc376ba16d0b8fe97eec87cde",
|
||||
"sha256:aaec1cfd94f4f3e9a25e144d5b0ed1eb8a9596ec36d7318a504d813412563a85",
|
||||
"sha256:acb673eecbae089ea3be3dcf75bfe45fc8d4dcdc951e27d8691887963cf421c7",
|
||||
"sha256:b15bc8d2c2848a4a7c04f76c9b3dc3561e95d4dabc6b4f24bfabe5fd81a0b14f",
|
||||
"sha256:b1c240d565e977d80c0083404c01e4d59c5772c977fae2c483f100567f50847b",
|
||||
"sha256:c595693de998461bcd49b8d20568c8870b3209b8ea323b2a7b0ea86d85864694",
|
||||
"sha256:ce3be5d520b4d2c3e5eeb4cd2ef62b9b9ab8ac6b6fedbaa0e39cdb6f50644278",
|
||||
"sha256:e0f910f84b35c36a3513b96d816e6442ae138862257ae18a0019d2fc67b041dc",
|
||||
"sha256:ea36e19ac0a483eea239320aef0bd40702404ff8c7e42179a2d9d36c5afcb55c",
|
||||
"sha256:efabbcd4f406b532206b8801058c8bab9e79645b9880329253ae3322b7b02cd5",
|
||||
"sha256:f923406e6b32c86309261b8195e24e18b6a8801df0cfc7814ac44017bfcb3939"
|
||||
],
|
||||
"version": "==1.0.1"
|
||||
|
@ -315,29 +328,38 @@
|
|||
},
|
||||
"matplotlib": {
|
||||
"hashes": [
|
||||
"sha256:07055eb872fa109bd88f599bdb52065704b2e22d475b67675f345d75d32038a0",
|
||||
"sha256:0f2f253d6d51f5ed52a819921f8a0a8e054ce0daefcfbc2557e1c433f14dc77d",
|
||||
"sha256:1ef9fd285334bd6b0495b6de9d56a39dc95081577f27bafabcf28e0d318bed31",
|
||||
"sha256:3eb17a4dc45e1ceefb899423e8152e10169fa281f960421c762fd8532186c323",
|
||||
"sha256:3fb2db66ef98246bafc04b4ef4e9b0e73c6369f38a29716844e939d197df816a",
|
||||
"sha256:3fd90b407d1ab0dae686a4200030ce305526ff20b85a443dc490d194114b2dfa",
|
||||
"sha256:45dac8589ef1721d7f2ab0f48f986694494dfcc5d13a3e43a5cb6c816276094e",
|
||||
"sha256:4bb10087e09629ba3f9b25b6c734fd3f99542f93d71c5b9c023f28cb377b43a9",
|
||||
"sha256:4dc7ef528aad21f22be85e95725234c5178c0f938e2228ca76640e5e84d8cde8",
|
||||
"sha256:4f6a516d5ef39128bb16af7457e73dde25c30625c4916d8fbd1cc7c14c55e691",
|
||||
"sha256:70f0e407fbe9e97f16597223269c849597047421af5eb8b60dbaca0382037e78",
|
||||
"sha256:7b3d03c876684618e2a2be6abeb8d3a033c3a1bb38a786f751199753ef6227e6",
|
||||
"sha256:8944d311ce37bee1ba0e41a9b58dcf330ffe0cf29d7654c3d07c572215da68ac",
|
||||
"sha256:8ff08eaa25c66383fe3b6c7eb288da3c22dcedc4b110a0b592b35f68d0e093b2",
|
||||
"sha256:9d12378d6a236aa38326e27f3a29427b63edce4ce325745785aec1a7535b1f85",
|
||||
"sha256:abfd3d9390eb4f2d82cbcaa3a5c2834c581329b64eccb7a071ed9d5df27424f7",
|
||||
"sha256:bc4d7481f0e8ec94cb1afc4a59905d6274b3b4c389aba7a2539e071766671735",
|
||||
"sha256:c78883145da9b5620aec523fa14ea814e07f2ba26a16b7f68ff7300604a911b3",
|
||||
"sha256:dc0ba2080fd0cfdd07b3458ee4324d35806733feb2b080838d7094731d3f73d9",
|
||||
"sha256:f26fba7fc68994ab2805d77e0695417f9377a00d36ba4248b5d0f1e5adb08d24"
|
||||
"sha256:0ba8e3ec1b0feddc6b068fe70dc38dcf2917e301ad8d2b3f848c14ad463a4157",
|
||||
"sha256:10a48e33e64dbd95f0776ba162f379c5cc55301c2d155506e79ce0c26b52f2ce",
|
||||
"sha256:1376535fe731adbba55ab9e48896de226b7e89dbb55390c5fbd8f7161b7ae3be",
|
||||
"sha256:16f0f8ba22df1e2c9f06c87088de45742322fde282a93b5c744c0f969cf7932e",
|
||||
"sha256:1c6c999f2212858021329537f8e0f98f3f29086ec3683511dd1ecec84409f51d",
|
||||
"sha256:2316dc177fc7b3d8848b49365498de0c385b4c9bba511edddd24c34fbe3d37a4",
|
||||
"sha256:3398bfb533482bf21974cecf28224dd23784ad4e4848be582903f7a2436ec12e",
|
||||
"sha256:3477cb1e1061b34210acc43d20050be8444478ff50b8adfac5fe2b45fc97df01",
|
||||
"sha256:3cc06333b8264428d02231804e2e726b902e9161dc16f573183dee6cb7ef621f",
|
||||
"sha256:4259ea7cb2c238355ee13275eddd261d869cefbdeb18a65f35459589d6d17def",
|
||||
"sha256:4addcf93234b6122f530f90f485fd3d00d158911fbc1ed24db3fa66cd49fe565",
|
||||
"sha256:50c0e24bcbce9c54346f4a2f4e97b0ed111f0413ac3fe9954061ae1c8aa7021f",
|
||||
"sha256:62ed7597d9e54db6e133420d779c642503c25eba390e1178d85dfb2ba0d05948",
|
||||
"sha256:69f6d51e41a17f6a5f70c56bb10b8ded9f299609204495a7fa2782a3a755ffc5",
|
||||
"sha256:6d232e49b74e3d2db22c63c25a9a0166d965e87e2b057f795487f1f244b61d9d",
|
||||
"sha256:7355bf757ecacd5f0ac9dd9523c8e1a1103faadf8d33c22664178e17533f8ce5",
|
||||
"sha256:886b1045c5105631f10c1cbc999f910e44d33af3e9c7efd68c2123efc06ab636",
|
||||
"sha256:9e1f353edd7fc7e5e9101abd5bc0201946f77a1b59e0da49095086c03db856ed",
|
||||
"sha256:b3a343dfcbe296dbe0f26c731beee72a792ff948407e6979524298ae7bc3234e",
|
||||
"sha256:d93675af09ca497a25f4f8d62f3313cf0f21e45427a87487049fe84898b99909",
|
||||
"sha256:e2409ef9d37804dfb566f39c962e6ed70f281ff516b8131b3e6b4e6442711ff1",
|
||||
"sha256:f8b653b0f89938ba72e92ab080c2f3aa24c1b72e2f61add22880cd1b9a6e3cdd"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==2.2.2"
|
||||
"version": "==2.2.3"
|
||||
},
|
||||
"mccabe": {
|
||||
"hashes": [
|
||||
"sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42",
|
||||
"sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"
|
||||
],
|
||||
"version": "==0.6.1"
|
||||
},
|
||||
"mistune": {
|
||||
"hashes": [
|
||||
|
@ -380,6 +402,14 @@
|
|||
],
|
||||
"version": "==4.4.0"
|
||||
},
|
||||
"network2tikz": {
|
||||
"hashes": [
|
||||
"sha256:93f5d902b0ad8f19d4cb5a89e97d42f0e2bf40b920737a81cb57faeca7c90815",
|
||||
"sha256:eb7ddf0f2e317e773b79d669f3c010db19b785cf17dc9383b571754d2b0b1fb7"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==0.1.6"
|
||||
},
|
||||
"networkx": {
|
||||
"hashes": [
|
||||
"sha256:64272ca418972b70a196cb15d9c85a5a6041f09a2f32e0d30c0255f25d458bb1"
|
||||
|
@ -387,46 +417,53 @@
|
|||
"index": "pypi",
|
||||
"version": "==2.1"
|
||||
},
|
||||
"nltk": {
|
||||
"hashes": [
|
||||
"sha256:fe0eda251be65843be86d7de9abfbf7161732256f742e623b21243ec47bdb718"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==3.3.0"
|
||||
},
|
||||
"notebook": {
|
||||
"hashes": [
|
||||
"sha256:95dc9afa0444d05a0b76d6d1f5133c34a92a95f4e248efef3f59ccd2c2616c7d",
|
||||
"sha256:fa915c231e64a30d19cc2c70ccab6444cbaa93e44e92b5f8233dd9147ad0e664"
|
||||
"sha256:66dd59e76e755584ae9450eb015c39f55d4bb1d8ec68f2c694d2b3cba7bf5c7e",
|
||||
"sha256:e2c8e931cc19db4f8c63e6a396efbc13a228b2cb5b2919df011b946f28239a08"
|
||||
],
|
||||
"version": "==5.5.0"
|
||||
"version": "==5.6.0"
|
||||
},
|
||||
"numpy": {
|
||||
"hashes": [
|
||||
"sha256:07379fe0b450f6fd6e5934a9bc015025bb4ce1c8fbed3ca8bef29328b1bc9570",
|
||||
"sha256:085afac75bbc97a096744fcfc97a4b321c5a87220286811e85089ae04885acdd",
|
||||
"sha256:2d6481c6bdab1c75affc0fc71eb1bd4b3ecef620d06f2f60c3f00521d54be04f",
|
||||
"sha256:2df854df882d322d5c23087a4959e145b953dfff2abe1774fec4f639ac2f3160",
|
||||
"sha256:381ad13c30cd1d0b2f3da8a0c1a4aa697487e8bb0e9e0cbeb7439776bcb645f8",
|
||||
"sha256:385f1ce46e08676505b692bfde918c1e0b350963a15ef52d77691c2cf0f5dbf6",
|
||||
"sha256:4130e5ae16c656b7de654dc5e595cfeb85d3a4b0bb0734d19c0dce6dc7ee0e07",
|
||||
"sha256:4d278c2261be6423c5e63d8f0ceb1b0c6db3ff83f2906f4b860db6ae99ca1bb5",
|
||||
"sha256:51c5dcb51cf88b34b7d04c15f600b07c6ccbb73a089a38af2ab83c02862318da",
|
||||
"sha256:589336ba5199c8061239cf446ee2f2f1fcc0c68e8531ee1382b6fc0c66b2d388",
|
||||
"sha256:5ae3564cb630e155a650f4f9c054589848e97836bebae5637240a0d8099f817b",
|
||||
"sha256:5edf1acc827ed139086af95ce4449b7b664f57a8c29eb755411a634be280d9f2",
|
||||
"sha256:6b82b81c6b3b70ed40bc6d0b71222ebfcd6b6c04a6e7945a936e514b9113d5a3",
|
||||
"sha256:6c57f973218b776195d0356e556ec932698f3a563e2f640cfca7020086383f50",
|
||||
"sha256:758d1091a501fd2d75034e55e7e98bfd1370dc089160845c242db1c760d944d9",
|
||||
"sha256:8622db292b766719810e0cb0f62ef6141e15fe32b04e4eb2959888319e59336b",
|
||||
"sha256:8b8dcfcd630f1981f0f1e3846fae883376762a0c1b472baa35b145b911683b7b",
|
||||
"sha256:91fdd510743ae4df862dbd51a4354519dd9fb8941347526cd9c2194b792b3da9",
|
||||
"sha256:97fa8f1dceffab782069b291e38c4c2227f255cdac5f1e3346666931df87373e",
|
||||
"sha256:9b705f18b26fb551366ab6347ba9941b62272bf71c6bbcadcd8af94d10535241",
|
||||
"sha256:9d69967673ab7b028c2df09cae05ba56bf4e39e3cb04ebe452b6035c3b49848e",
|
||||
"sha256:9e1f53afae865cc32459ad211493cf9e2a3651a7295b7a38654ef3d123808996",
|
||||
"sha256:a4a433b3a264dbc9aa9c7c241e87c0358a503ea6394f8737df1683c7c9a102ac",
|
||||
"sha256:baadc5f770917ada556afb7651a68176559f4dca5f4b2d0947cd15b9fb84fb51",
|
||||
"sha256:c725d11990a9243e6ceffe0ab25a07c46c1cc2c5dc55e305717b5afe856c9608",
|
||||
"sha256:d696a8c87315a83983fc59dd27efe034292b9e8ad667aeae51a68b4be14690d9",
|
||||
"sha256:e1864a4e9f93ddb2dc6b62ccc2ec1f8250ff4ac0d3d7a15c8985dd4e1fbd6418",
|
||||
"sha256:e1d18421a7e2ad4a655b76e65d549d4159f8874c18a417464c1d439ee7ccc7cd"
|
||||
"sha256:1c362ad12dd09a43b348bb28dd2295dd9cdf77f41f0f45965e04ba97f525b864",
|
||||
"sha256:2156a06bd407918df4ac0122df6497a9c137432118f585e5b17d543e593d1587",
|
||||
"sha256:24e4149c38489b51fc774b1e1faa9103e82f73344d7a00ba66f6845ab4769f3f",
|
||||
"sha256:340ec1697d9bb3a9c464028af7a54245298502e91178bddb4c37626d36e197b7",
|
||||
"sha256:35db8d419345caa4eeaa65cd63f34a15208acd87530a30f0bc25fc84f55c8c80",
|
||||
"sha256:361370e9b7f5e44c41eee29f2bb5cb3b755abb4b038bce6d6cbe08db7ff9cb74",
|
||||
"sha256:36e8dcd1813ca92ce7e4299120cee6c03adad33d89b54862c1b1a100443ac399",
|
||||
"sha256:378378973546ecc1dfaf9e24c160d683dd04df871ecd2dcc86ce658ca20f92c0",
|
||||
"sha256:419e6faee16097124ee627ed31572c7e80a1070efa25260b78097cca240e219a",
|
||||
"sha256:4287104c24e6a09b9b418761a1e7b1bbde65105f110690ca46a23600a3c606b8",
|
||||
"sha256:549f3e9778b148a47f4fb4682955ed88057eb627c9fe5467f33507c536deda9d",
|
||||
"sha256:5e359e9c531075220785603e5966eef20ccae9b3b6b8a06fdfb66c084361ce92",
|
||||
"sha256:5ee7f3dbbdba0da75dec7e94bd7a2b10fe57a83e1b38e678200a6ad8e7b14fdc",
|
||||
"sha256:62d55e96ec7b117d3d5e618c15efcf769e70a6effaee5842857b64fb4883887a",
|
||||
"sha256:719b6789acb2bc86ea9b33a701d7c43dc2fc56d95107fd3c5b0a8230164d4dfb",
|
||||
"sha256:7a70f2b60d48828cba94a54a8776b61a9c2657a803d47f5785f8062e3a9c7c55",
|
||||
"sha256:7b9e37f194f8bcdca8e9e6af92e2cbad79e360542effc2dd6b98d63955d8d8a3",
|
||||
"sha256:83b8fc18261b70f45bece2d392537c93dc81eb6c539a16c9ac994c47fc79f09a",
|
||||
"sha256:9473ad28375710ab18378e72b59422399b27e957e9339c413bf00793b4b12df0",
|
||||
"sha256:95b085b253080e5d09f7826f5e27dce067bae813a132023a77b739614a29de6e",
|
||||
"sha256:98b86c62c08c2e5dc98a9c856d4a95329d11b1c6058cb9b5191d5ea6891acd09",
|
||||
"sha256:a3bd01d6d3ed3d7c06d7f9979ba5d68281f15383fafd53b81aa44b9191047cf8",
|
||||
"sha256:c81a6afc1d2531a9ada50b58f8c36197f8418ef3d0611d4c1d7af93fdcda764f",
|
||||
"sha256:ce75ed495a746e3e78cfa22a77096b3bff2eda995616cb7a542047f233091268",
|
||||
"sha256:dae8618c0bcbfcf6cf91350f8abcdd84158323711566a8c5892b5c7f832af76f",
|
||||
"sha256:df0b02c6705c5d1c25cc35c7b5d6b6f9b3b30833f9d178843397ae55ecc2eebb",
|
||||
"sha256:e3660744cda0d94b90141cdd0db9308b958a372cfeee8d7188fdf5ad9108ea82",
|
||||
"sha256:f2362d0ca3e16c37782c1054d7972b8ad2729169567e3f0f4e5dd3cdf85f188e"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==1.14.5"
|
||||
"version": "==1.15.1"
|
||||
},
|
||||
"packaging": {
|
||||
"hashes": [
|
||||
|
@ -437,24 +474,29 @@
|
|||
},
|
||||
"pandas": {
|
||||
"hashes": [
|
||||
"sha256:211cfdb9f72f26d2ede21c751d27e08fed4434d47fb9bb82ebc8ff753888b8b6",
|
||||
"sha256:28fd087514616549a0e3259cd68ac88d7eaed6bd3062017a7f312e27941266bd",
|
||||
"sha256:2fb7c63138bd5ead296b18b2cb6abd3a394f7581e5ae052b02b27df8244b03ca",
|
||||
"sha256:372435456c349a8d39ff001967b161f6bd29d4c3de145a4cf9b366648defbb1f",
|
||||
"sha256:3790a3348ab0f416e58061d21693cb662fbb2f638001b94bf2b2199fedc1b1c2",
|
||||
"sha256:437a6e906a6717a9ed2627cf6e7895b63dfaa0172567cbd75a553f55cf78cc17",
|
||||
"sha256:50b52af2af2e15f4aeb2fe196da073a8c131fa02e433e105d95ce40016df5690",
|
||||
"sha256:720daad75b5d35dd1b446842210c4f3fd447464c9c0884972f3f12b213a9edd1",
|
||||
"sha256:b4fb71acbc2709b8f5993cb4b5445d8182864f11c39787e317aae39f21206270",
|
||||
"sha256:b704fd73022342cce612996de495a16954311e0c0cf077c1b83d5cf0b9656a60",
|
||||
"sha256:cbbecca0c7af6a2160b2d6ba30becc286824a98c61dcc6a41fada664f226424c",
|
||||
"sha256:d2a071de755cc8ee7784e1b4c7b9b643d951d35c8adea7d64fe7c57cff9c47a7",
|
||||
"sha256:d8154c5c68713a82461aba735832f0b4692be8a45a0a340a303bf90d6f80f36f",
|
||||
"sha256:e1b86f7c55467ce1f6c12715f2fd1817f4a909b5c8c39bd4b5d2415ef2b04bd8",
|
||||
"sha256:fcc63e8134516e93e16eb4ceac9afaa51f4adc5bf58efddae7cbc562f5b77dd0"
|
||||
"sha256:11975fad9edbdb55f1a560d96f91830e83e29bed6ad5ebf506abda09818eaf60",
|
||||
"sha256:12e13d127ca1b585dd6f6840d3fe3fa6e46c36a6afe2dbc5cb0b57032c902e31",
|
||||
"sha256:1c87fcb201e1e06f66e23a61a5fea9eeebfe7204a66d99df24600e3f05168051",
|
||||
"sha256:242e9900de758e137304ad4b5663c2eff0d798c2c3b891250bd0bd97144579da",
|
||||
"sha256:26c903d0ae1542890cb9abadb4adcb18f356b14c2df46e4ff657ae640e3ac9e7",
|
||||
"sha256:2e1e88f9d3e5f107b65b59cd29f141995597b035d17cc5537e58142038942e1a",
|
||||
"sha256:31b7a48b344c14691a8e92765d4023f88902ba3e96e2e4d0364d3453cdfd50db",
|
||||
"sha256:4fd07a932b4352f8a8973761ab4e84f965bf81cc750fb38e04f01088ab901cb8",
|
||||
"sha256:5b24ca47acf69222e82530e89111dd9d14f9b970ab2cd3a1c2c78f0c4fbba4f4",
|
||||
"sha256:647b3b916cc8f6aeba240c8171be3ab799c3c1b2ea179a3be0bd2712c4237553",
|
||||
"sha256:66b060946046ca27c0e03e9bec9bba3e0b918bafff84c425ca2cc2e157ce121e",
|
||||
"sha256:6efa9fa6e1434141df8872d0fa4226fc301b17aacf37429193f9d70b426ea28f",
|
||||
"sha256:be4715c9d8367e51dbe6bc6d05e205b1ae234f0dc5465931014aa1c4af44c1ba",
|
||||
"sha256:bea90da782d8e945fccfc958585210d23de374fa9294a9481ed2abcef637ebfc",
|
||||
"sha256:d318d77ab96f66a59e792a481e2701fba879e1a453aefeebdb17444fe204d1ed",
|
||||
"sha256:d785fc08d6f4207437e900ffead930a61e634c5e4f980ba6d3dc03c9581748c7",
|
||||
"sha256:de9559287c4fe8da56e8c3878d2374abc19d1ba2b807bfa7553e912a8e5ba87c",
|
||||
"sha256:f4f98b190bb918ac0bc0e3dd2ab74ff3573da9f43106f6dba6385406912ec00f",
|
||||
"sha256:f71f1a7e2d03758f6e957896ed696254e2bc83110ddbc6942018f1a232dd9dad",
|
||||
"sha256:fb944c8f0b0ab5c1f7846c686bc4cdf8cde7224655c12edcd59d5212cd57bec0"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==0.23.1"
|
||||
"version": "==0.23.4"
|
||||
},
|
||||
"pandocfilters": {
|
||||
"hashes": [
|
||||
|
@ -464,10 +506,10 @@
|
|||
},
|
||||
"parso": {
|
||||
"hashes": [
|
||||
"sha256:8105449d86d858e53ce3e0044ede9dd3a395b1c9716c696af8aa3787158ab806",
|
||||
"sha256:d250235e52e8f9fc5a80cc2a5f804c9fefd886b2e67a2b1099cf085f403f8e33"
|
||||
"sha256:35704a43a3c113cce4de228ddb39aab374b8004f4f2407d070b6a2ca784ce8a2",
|
||||
"sha256:895c63e93b94ac1e1690f5fdd40b65f07c8171e3e53cbd7793b5b96c0e0a7f24"
|
||||
],
|
||||
"version": "==0.3.0"
|
||||
"version": "==0.3.1"
|
||||
},
|
||||
"partd": {
|
||||
"hashes": [
|
||||
|
@ -491,6 +533,19 @@
|
|||
],
|
||||
"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": {
|
||||
"hashes": [
|
||||
"sha256:1df952620eccb399c53ebb359cc7d9a8d3a9538cb34c5a1344bdbeb29fbcc381",
|
||||
|
@ -501,19 +556,17 @@
|
|||
},
|
||||
"psutil": {
|
||||
"hashes": [
|
||||
"sha256:0ff2b16e9045d01edb1dd10d7fbcc184012e37f6cd38029e959f2be9c6223f50",
|
||||
"sha256:254adb6a27c888f141d2a6032ae231d8ed4fc5f7583b4c825e5f7d7c78d26d2e",
|
||||
"sha256:319e12f6bae4d4d988fbff3bed792953fa3b44c791f085b0a1a230f755671ef7",
|
||||
"sha256:529ae235896efb99a6f77653a7138273ab701ec9f0343a1f5030945108dee3c4",
|
||||
"sha256:686e5a35fe4c0acc25f3466c32e716f2d498aaae7b7edc03e2305b682226bcf6",
|
||||
"sha256:6d981b4d863b20c8ceed98b8ac3d1ca7f96d28707a80845d360fa69c8fc2c44b",
|
||||
"sha256:7789885a72aa3075d28d028236eb3f2b84d908f81d38ad41769a6ddc2fd81b7c",
|
||||
"sha256:7f4616bcb44a6afda930cfc40215e5e9fa7c6896e683b287c771c937712fbe2f",
|
||||
"sha256:7fdb3d02bfd68f508e6745021311a4a4dbfec53fca03721474e985f310e249ba",
|
||||
"sha256:a9b85b335b40a528a8e2a6b549592138de8429c6296e7361892958956e6a73cf",
|
||||
"sha256:dc85fad15ef98103ecc047a0d81b55bbf5fe1b03313b96e883acc2e2fa87ed5c"
|
||||
"sha256:0d8da7333549a998556c18eb2af3ce902c28d66ceb947505c008f91e9f988abd",
|
||||
"sha256:1914bacbd2fc2af8f795daa44b9d2e0649a147460cfd21b1a70a124472f66d40",
|
||||
"sha256:215d61a901e67b1a35e14c6aedef317f7fa7e6075a20c150fd11bd2c906d2c83",
|
||||
"sha256:51057c03aea251ad6667c2bba259bc7ed3210222d3a74152c84e3ab06e1da0ba",
|
||||
"sha256:5b6322b167a5ba0c5463b4d30dfd379cd4ce245a1162ebf8fc7ab5c5ffae4f3b",
|
||||
"sha256:a890c3e490493f21da2817ffc92822693bc0d6bcac9999caa04ffce8dd4e7132",
|
||||
"sha256:b34611280a2d0697f1c499e15e936d88109170194b390599c98bab8072a71f05",
|
||||
"sha256:cea2557ee6a9faa2c100947637ded68414e12b851633c4ce26e0311b2a2ed539",
|
||||
"sha256:d081707ef0081920533db30200a2d30d5c0ea9cf6afa7cf8881ae4516cc69c48"
|
||||
],
|
||||
"version": "==5.4.6"
|
||||
"version": "==5.4.7"
|
||||
},
|
||||
"ptyprocess": {
|
||||
"hashes": [
|
||||
|
@ -530,6 +583,36 @@
|
|||
],
|
||||
"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": {
|
||||
"hashes": [
|
||||
"sha256:78f3f434bcc5d6ee09020f92ba487f95ba50f1e3ef83ae96b9d5ffa1bab25c5d",
|
||||
|
@ -565,6 +648,19 @@
|
|||
"index": "pypi",
|
||||
"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": {
|
||||
"hashes": [
|
||||
"sha256:a061aa0a9e06881eb8b3b2b43f05b9439d6583c206d0a6c340ff72a7b6669053",
|
||||
|
@ -574,91 +670,96 @@
|
|||
},
|
||||
"pyyaml": {
|
||||
"hashes": [
|
||||
"sha256:0c507b7f74b3d2dd4d1322ec8a94794927305ab4cebbe89cc47fe5e81541e6e8",
|
||||
"sha256:16b20e970597e051997d90dc2cddc713a2876c47e3d92d59ee198700c5427736",
|
||||
"sha256:3262c96a1ca437e7e4763e2843746588a965426550f3797a79fca9c6199c431f",
|
||||
"sha256:326420cbb492172dec84b0f65c80942de6cedb5233c413dd824483989c000608",
|
||||
"sha256:4474f8ea030b5127225b8894d626bb66c01cda098d47a2b0d3429b6700af9fd8",
|
||||
"sha256:592766c6303207a20efc445587778322d7f73b161bd994f227adaa341ba212ab",
|
||||
"sha256:5ac82e411044fb129bae5cfbeb3ba626acb2af31a8d17d175004b70862a741a7",
|
||||
"sha256:5f84523c076ad14ff5e6c037fe1c89a7f73a3e04cf0377cb4d017014976433f3",
|
||||
"sha256:827dc04b8fa7d07c44de11fabbc888e627fa8293b695e0f99cb544fdfa1bf0d1",
|
||||
"sha256:b4c423ab23291d3945ac61346feeb9a0dc4184999ede5e7c43e1ffb975130ae6",
|
||||
"sha256:bc6bced57f826ca7cb5125a10b23fd0f2fff3b7c4701d64c439a300ce665fff8",
|
||||
"sha256:c01b880ec30b5a6e6aa67b09a2fe3fb30473008c85cd6a67359a1b15ed6d83a4",
|
||||
"sha256:ca233c64c6e40eaa6c66ef97058cdc80e8d0157a443655baa1b2966e812807ca",
|
||||
"sha256:e863072cdf4c72eebf179342c94e6989c67185842d9997960b3e69290b2fa269"
|
||||
"sha256:3d7da3009c0f3e783b2c873687652d83b1bbfd5c88e9813fb7e5b03c0dd3108b",
|
||||
"sha256:3ef3092145e9b70e3ddd2c7ad59bdd0252a94dfe3949721633e41344de00a6bf",
|
||||
"sha256:40c71b8e076d0550b2e6380bada1f1cd1017b882f7e16f09a65be98e017f211a",
|
||||
"sha256:558dd60b890ba8fd982e05941927a3911dc409a63dcb8b634feaa0cda69330d3",
|
||||
"sha256:a7c28b45d9f99102fa092bb213aa12e0aaf9a6a1f5e395d36166639c1f96c3a1",
|
||||
"sha256:aa7dd4a6a427aed7df6fb7f08a580d68d9b118d90310374716ae90b710280af1",
|
||||
"sha256:bc558586e6045763782014934bfaf39d48b8ae85a2713117d16c39864085c613",
|
||||
"sha256:d46d7982b62e0729ad0175a9bc7e10a566fc07b224d2c79fafb5e032727eaa04",
|
||||
"sha256:d5eef459e30b09f5a098b9cea68bebfeb268697f78d647bd255a085371ac7f3f",
|
||||
"sha256:e01d3203230e1786cd91ccfdc8f8454c8069c91bee3962ad93b87a4b2860f537",
|
||||
"sha256:e170a9e6fcfd19021dd29845af83bb79236068bf5fd4df3327c1be18182b2531"
|
||||
],
|
||||
"version": "==3.12"
|
||||
"version": "==3.13"
|
||||
},
|
||||
"pyzmq": {
|
||||
"hashes": [
|
||||
"sha256:0145ae59139b41f65e047a3a9ed11bbc36e37d5e96c64382fcdff911c4d8c3f0",
|
||||
"sha256:18de8a02768b1c0b3495ac635b24bd902fafc08befb70a6e68c4d343ccbd6cbd",
|
||||
"sha256:2fb4d745ffe0a65ebf8fd29df093bb5c0ac96a506cb05b9a7b7c94b2524ae7f6",
|
||||
"sha256:4193cc666591495ab7fe8d24fa8374a35f9775f16dc7c46e03615559e1fc1855",
|
||||
"sha256:445fed4d71ac48da258ba38f2e29c88c5091124212a4004a0a6a42e6586a7de1",
|
||||
"sha256:538dfdd9542cf9ff37cd958da03b58d56b53b90800159ea07adc51a8ec7ffcb8",
|
||||
"sha256:613ac1fc4591b1c6a0a52ce3ed17dbffd6a17e985df504e8b4cdb987f97285b1",
|
||||
"sha256:630fb21f7474eb9e409a1ad476bf1ec489a69eb021172d422f2485cc3a44cd79",
|
||||
"sha256:6c3632d2c17cf03ce728ffaa328d45bb053623b3a0aa9747adcde81778d5a4d5",
|
||||
"sha256:72a490db0e34c204764457a6853afde7c0d1aa01b6dbbbaea064636614b774c6",
|
||||
"sha256:767e1d0b1f7fff1950127abc08c5a5af2754987bc6480c6d641bed6971278a7a",
|
||||
"sha256:863ec1bfa52da6eaa5c4aa59143eeaeb4ef7a076862407a548ec645f25e6d6df",
|
||||
"sha256:a0ecf4c3eccd92f030a4e3e334b9da6fa3ee86be00249343c74e476d70567d0f",
|
||||
"sha256:ad5a8b19b6671b52d30ccfc3a0f4c600e49c4e2dcc88caf4106ed5958dec8d5e",
|
||||
"sha256:b31f2b50ad2920f21b904f5edf66bee324e42bb978df1407ecf381b210d4678e",
|
||||
"sha256:b328c538061757f627d32f7f8885c16f1d2f59f5374e057822f3c8e6cd94c41b",
|
||||
"sha256:b89268020a843d4c3cc04180577ec061fe96d35f267b0b672cb006e4d70560da",
|
||||
"sha256:ba0b43aebf856e5e249250d74c1232d6600b6859328920d12e2ba72a565ab1b1",
|
||||
"sha256:bdb12b485b3440b5193cd337d27cc126cdfc54ea9f38df237e1ead6216435cbe",
|
||||
"sha256:c30d27c9b35285597b8ef3019f97b9b98457b053f65dcc87a90dfdd4db09ca78",
|
||||
"sha256:d51eb3902d27d691483243707bfa67972167a70269bbbc172b74eeac4f780a1d",
|
||||
"sha256:e5578ae84bb94e97adadfcb00106a1cb161cb8017f89b01f6c3737f356257811",
|
||||
"sha256:f35b4cdeffff79357a9d929daa2a8620fb362b2cbeebdc5dd2cf9fcd27c44821",
|
||||
"sha256:fb983aec4bddee3680a0b7395f99e4595d70d81841370da736c5dc642bad4cd2"
|
||||
"sha256:25a0715c8f69cf72f67cfe5a68a3f3ed391c67c063d2257bec0fe7fc2c7f08f8",
|
||||
"sha256:2bab63759632c6b9e0d5bf19cc63c3b01df267d660e0abcf230cf0afaa966349",
|
||||
"sha256:30ab49d99b24bf0908ebe1cdfa421720bfab6f93174e4883075b7ff38cc555ba",
|
||||
"sha256:32c7ca9fc547a91e3c26fc6080b6982e46e79819e706eb414dd78f635a65d946",
|
||||
"sha256:41219ae72b3cc86d97557fe5b1ef5d1adc1057292ec597b50050874a970a39cf",
|
||||
"sha256:4b8c48a9a13cea8f1f16622f9bd46127108af14cd26150461e3eab71e0de3e46",
|
||||
"sha256:55724997b4a929c0d01b43c95051318e26ddbae23565018e138ae2dc60187e59",
|
||||
"sha256:65f0a4afae59d4fc0aad54a917ab599162613a761b760ba167d66cc646ac3786",
|
||||
"sha256:6f88591a8b246f5c285ee6ce5c1bf4f6bd8464b7f090b1333a446b6240a68d40",
|
||||
"sha256:75022a4c60dcd8765bb9ca32f6de75a0ec83b0d96e0309dc479f4c7b21f26cb7",
|
||||
"sha256:76ea493bfab18dcb090d825f3662b5612e2def73dffc196d51a5194b0294a81d",
|
||||
"sha256:7b60c045b80709e4e3c085bab9b691e71761b44c2b42dbb047b8b498e7bc16b3",
|
||||
"sha256:8e6af2f736734aef8ed6f278f9f552ec7f37b1a6b98e59b887484a840757f67d",
|
||||
"sha256:9ac2298e486524331e26390eac14e4627effd3f8e001d4266ed9d8f1d2d31cce",
|
||||
"sha256:9ba650f493a9bc1f24feca1d90fce0e5dd41088a252ac9840131dfbdbf3815ca",
|
||||
"sha256:a02a4a385e394e46012dc83d2e8fd6523f039bb52997c1c34a2e0dd49ed839c1",
|
||||
"sha256:a3ceee84114d9f5711fa0f4db9c652af0e4636c89eabc9b7f03a3882569dd1ed",
|
||||
"sha256:a72b82ac1910f2cf61a49139f4974f994984475f771b0faa730839607eeedddf",
|
||||
"sha256:ab136ac51027e7c484c53138a0fab4a8a51e80d05162eb7b1585583bcfdbad27",
|
||||
"sha256:c095b224300bcac61e6c445e27f9046981b1ac20d891b2f1714da89d34c637c8",
|
||||
"sha256:c5cc52d16c06dc2521340d69adda78a8e1031705924e103c0eb8fc8af861d810",
|
||||
"sha256:d612e9833a89e8177f8c1dc68d7b4ff98d3186cd331acd616b01bbdab67d3a7b",
|
||||
"sha256:e828376a23c66c6fe90dcea24b4b72cd774f555a6ee94081670872918df87a19",
|
||||
"sha256:e9767c7ab2eb552796440168d5c6e23a99ecaade08dda16266d43ad461730192",
|
||||
"sha256:ebf8b800d42d217e4710d1582b0c8bff20cdcb4faad7c7213e52644034300924"
|
||||
],
|
||||
"version": "==17.0.0"
|
||||
"version": "==17.1.2"
|
||||
},
|
||||
"qtconsole": {
|
||||
"hashes": [
|
||||
"sha256:b3d10314cbaad76c3157cf922eb410812cde472e8e7c6bd3d5a92d30145bcde1",
|
||||
"sha256:eff8c2faeda567a0bef5781f419a64e9977988db101652b312b9d74ec0a5109c"
|
||||
"sha256:298431d376d71a02eb1a04fe6e72dd4beb82b83423d58b17d532e0af838e62fa",
|
||||
"sha256:7870b19e6a6b0ab3acc09ee65463c0ca7568b3a01a6902d7c4e1ed2c4fc4e176"
|
||||
],
|
||||
"version": "==4.3.1"
|
||||
"version": "==4.4.1"
|
||||
},
|
||||
"rope": {
|
||||
"hashes": [
|
||||
"sha256:a108c445e1cd897fe19272ab7877d172e7faf3d4148c80e7d20faba42ea8f7b2"
|
||||
],
|
||||
"version": "==0.11.0"
|
||||
},
|
||||
"scikit-learn": {
|
||||
"hashes": [
|
||||
"sha256:13136c6e4f6b808569f7f59299d439b2cd718f85d72ea14b5b6077d44ebc7d17",
|
||||
"sha256:370919e3148253fd6552496c33a1e3d78290a336fc8d1b9349d9e9770fae6ec0",
|
||||
"sha256:3775cca4ce3f94508bb7c8a6b113044b78c16b0a30a5c169ddeb6b9fe57a8a72",
|
||||
"sha256:42f3c5bd893ed73bf47ccccf04dfb98fae743f397d688bb58c2238c0e6ec15d2",
|
||||
"sha256:56cfa19c31edf62e6414da0a337efee37a4af488b135640e67238786b9be6ab3",
|
||||
"sha256:5c9ff456d67ef9094e5ea272fff2be05d399a47fc30c6c8ed653b94bdf787bd1",
|
||||
"sha256:5ca0ad32ee04abe0d4ba02c8d89d501b4e5e0304bdf4d45c2e9875a735b323a0",
|
||||
"sha256:5db9e68a384ce80a17fc449d4d5d9b45025fe17cf468429599bf404eccb51049",
|
||||
"sha256:6e0899953611d0c47c0d49c5950082ab016b38811fced91cd2dcc889dd94f50a",
|
||||
"sha256:72c194c5092e921d6107a8de8a5adae58c35bbc54e030ba624b6f02fd823bb21",
|
||||
"sha256:871669cdb5b3481650fe3adff46eb97c455e30ecdc307eaf382ef90d4e2570ab",
|
||||
"sha256:873245b03361710f47c5410a050dc56ee8ae97b9f8dcc6e3a81521ca2b64ad10",
|
||||
"sha256:8b17fc29554c5c98d88142f895516a5bec2b6b61daa815e1193a64c868ad53d2",
|
||||
"sha256:95b155ef6bf829ddfba6026f100ba8e4218b7171ecab97b2163bc9e8d206848f",
|
||||
"sha256:a21cf8217e31a9e8e32c559246e05e6909981816152406945ae2e3e244dfcc1f",
|
||||
"sha256:a58746d4f389ea7df1d908dba8b52f709835f91c342f459a3ade5424330c69d1",
|
||||
"sha256:b2a10e2f9b73de10d8486f7a23549093436062b69139158802910a0f154aa53b",
|
||||
"sha256:ba3fd442ae1a46830789b3578867daaf2c8409dcca6bf192e30e85beeabbfc2f",
|
||||
"sha256:ce78bf4d10bd7e28807c36c6d2ab25a9934aaf80906ad987622a5e45627d91a2",
|
||||
"sha256:d384e6f9a055b7a43492f9d27779adb717eb5dcf78b0603b01d0f070a608d241",
|
||||
"sha256:d4da369614e55540c7e830ccdd17ab4fe5412ff8e803a4906d3ece393e2e3a63",
|
||||
"sha256:ddc1eb10138ae93c136cc4b5945d3977f302b5d693592a4731b2805a7d7f2a74",
|
||||
"sha256:e54a3dd1fe1f8124de90b93c48d120e6da2ea8df29b6895325df01ddc1bd8e26",
|
||||
"sha256:ee8c3b1898c728b6e5b5659c233f547700a1fea13ce876b6fe7d3434c70cc0e0",
|
||||
"sha256:f528c4b2bba652cf116f5cccf36f4db95a7f9cbfcd1ee549c4e8d0f8628783b5",
|
||||
"sha256:f9abae483f4d52acd6f660addb1b67e35dc5748655250af479de2ea6aefc6df0",
|
||||
"sha256:fdc39e89bd3466befb76dfc0c258d4ccad159df974954a87de3be5759172a067"
|
||||
"sha256:0a718b5ffbd5053fb3f9e1a2e20b7c4f256dd8035e246b907d3117d20bac0260",
|
||||
"sha256:1725540b754a9967778e9385e1ee2c8db50d5ab70ed835c9f5e36002ffabc169",
|
||||
"sha256:3e3ce307d7c5c5811658ba8686b24b571a8244eaafe707665ad601f400d5ce98",
|
||||
"sha256:42ad71502237c9fe300ecf157f5a394df717789a2dde541dd7034b539c70bdcc",
|
||||
"sha256:42cba716db197e0d1670e2fc13c4cc4a86d5c5358120ccfee6ec427b154e74ff",
|
||||
"sha256:47b4090b7686642e41176becb7c42ef3cc665d7ee0db5e7ea5d307ec9779327e",
|
||||
"sha256:51d99a08c8bf689cf60c9d8dca6e3d3e5f6d762def85ad735dcea11fb528a89b",
|
||||
"sha256:5f7577fbb2399a4712e96cf0e786638168940a876c33735a1b5d5a86ba4b1370",
|
||||
"sha256:66bfc2b6b15db1725d03ea657ec9184ff09dcbf1ecd834ef85f2edc2c9cbba97",
|
||||
"sha256:69a34d389d9ca4687ad00af4e11d53686771f484c37366f68617ef656bab16ab",
|
||||
"sha256:75297f3dd6685f01555f1bb75846995d45650af417280b69c81bf11b6987aed5",
|
||||
"sha256:9ebb38ab1d0ee143982aed561811903ac6c1abb512ae2b9019b3b65bde63ffb9",
|
||||
"sha256:a402c1484fe65df42d5dbc22a58e0695fe3afe2b0b229aee2a09c6d60ba8e5c2",
|
||||
"sha256:aad6b9aac1617bd7efa0450643888bbd3410679a94bc8680d9863825686ef369",
|
||||
"sha256:ad4db28d3dc16c01df75ed6efb72524537de3839a5d179fcf94094359fc72ec5",
|
||||
"sha256:b276739a5f863ccacb61999a3067d0895ee291c95502929b2ae56ea1f882e888",
|
||||
"sha256:b3dc88c4d2bcb26ffc5afe16d053ae28317d7d1de083651defcd5453a04f1563",
|
||||
"sha256:b3e4681253e95da5aa5c231889a32b084fd997962bf8beda6f796bf422f734b2",
|
||||
"sha256:c3d852d49d6c1710089d4513702099fa6f8e1aebfedf222319d80c47b0a195f8",
|
||||
"sha256:c6612e7e43988b8b5e1957150449493a55f9c059de641083df7a964f86f2d1e7",
|
||||
"sha256:c69e5c6051366a6ac9600d730276db939b1a205e42504ec0b8371f154b0058db",
|
||||
"sha256:ce121baa8e85ec27c3065281657dcd78adaab7dcb046c7fe96ad4e5a9dcb6610",
|
||||
"sha256:ed2a9a9bea6ec443b7effe5695c9c168b7bf9a67df6d880729760feda871b6a3",
|
||||
"sha256:efd842d70b87e3ef3429c3149840b9189d4441ca951ab0cec62c94a964e219d9",
|
||||
"sha256:f1428af5c381f6eef30ffbc7e047b7c713d4efa5d7bf5e57b62b3fc8d387044b",
|
||||
"sha256:f6c7bf8cd4de1640b760b47f4d28deb26dbbf9acbe0194cdff54a898e190d872",
|
||||
"sha256:f8329ac2160ad8bbbac6a507374685ceca3f24ca427fa9ee61a501280e1972d9",
|
||||
"sha256:fefba2a43b92f8393366093b60efbe984a72a2b41cce16b4002005e4104ef938"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==0.19.1"
|
||||
"version": "==0.19.2"
|
||||
},
|
||||
"scipy": {
|
||||
"hashes": [
|
||||
|
@ -717,12 +818,19 @@
|
|||
"sklearn-tda": {
|
||||
"git": "https://github.com/MathieuCarriere/sklearn_tda"
|
||||
},
|
||||
"snowballstemmer": {
|
||||
"hashes": [
|
||||
"sha256:919f26a68b2c17a7634da993d91339e288964f93c274f1343e3bbbe2096e1128",
|
||||
"sha256:9f3bcd3c401c3e862ec0ebe6d2c069ebc012ce142cce209c098ccb5b09136e89"
|
||||
],
|
||||
"version": "==1.2.1"
|
||||
},
|
||||
"sortedcontainers": {
|
||||
"hashes": [
|
||||
"sha256:607294c6e291a270948420f7ffa1fb3ed47384a4c08db6d1e9c92d08a6981982",
|
||||
"sha256:ef38b128302ee8f65d81e31c9d8fbf10d81df4d6d06c9c0b66f01d33747525bb"
|
||||
"sha256:220bb2e3e1886297fd7cdd6d164cb5cf237be1cfae1a3a3e526d149c52816682",
|
||||
"sha256:b74f2756fb5e23512572cc76f0fe0832fd86310f77dfee54335a35fb33f6b950"
|
||||
],
|
||||
"version": "==2.0.4"
|
||||
"version": "==2.0.5"
|
||||
},
|
||||
"tblib": {
|
||||
"hashes": [
|
||||
|
@ -753,13 +861,15 @@
|
|||
},
|
||||
"tornado": {
|
||||
"hashes": [
|
||||
"sha256:1b83d5c10550f2653380b4c77331d6f8850f287c4f67d7ce1e1c639d9222fbc7",
|
||||
"sha256:408d129e9d13d3c55aa73f8084aa97d5f90ed84132e38d6932e63a67d5bec563",
|
||||
"sha256:88ce0282cce70df9045e515f578c78f1ebc35dcabe1d70f800c3583ebda7f5f5",
|
||||
"sha256:ba9fbb249ac5390bff8a1d6aa4b844fd400701069bda7d2e380dfe2217895101",
|
||||
"sha256:c050089173c2e9272244bccfb6a8615fb9e53b79420a5551acfa76094ecc3111"
|
||||
"sha256:1c0816fc32b7d31b98781bd8ebc7a9726d7dce67407dc353a2e66e697e138448",
|
||||
"sha256:4f66a2172cb947387193ca4c2c3e19131f1c70fa8be470ddbbd9317fd0801582",
|
||||
"sha256:5327ba1a6c694e0149e7d9126426b3704b1d9d520852a3e4aa9fc8fe989e4046",
|
||||
"sha256:6a7e8657618268bb007646b9eae7661d0b57f13efc94faa33cd2588eae5912c9",
|
||||
"sha256:a9b14804783a1d77c0bd6c66f7a9b1196cbddfbdf8bceb64683c5ae60bd1ec6f",
|
||||
"sha256:c58757e37c4a3172949c99099d4d5106e4d7b63aa0617f9bb24bfbff712c7866",
|
||||
"sha256:d8984742ce86c0855cccecd5c6f54a9f7532c983947cff06f3a0e2115b47f85c"
|
||||
],
|
||||
"version": "==5.0.2"
|
||||
"version": "==5.1"
|
||||
},
|
||||
"traitlets": {
|
||||
"hashes": [
|
||||
|
@ -770,11 +880,11 @@
|
|||
},
|
||||
"typing": {
|
||||
"hashes": [
|
||||
"sha256:3a887b021a77b292e151afb75323dea88a7bc1b3dfa92176cff8e44c8b68bddf",
|
||||
"sha256:b2c689d54e1144bbcfd191b0832980a21c2dbcf7b5ff7a66248a60c90e951eb8",
|
||||
"sha256:d400a9344254803a2368533e4533a4200d21eb7b6b729c173bc38201a74db3f2"
|
||||
"sha256:4027c5f6127a6267a435201981ba156de91ad0d1d98e9ddc2aa173453453492d",
|
||||
"sha256:57dcf675a99b74d64dacf6fba08fb17cf7e3d5fdff53d4a30ea2a5e7e52543d4",
|
||||
"sha256:a4c8473ce11a65999c8f59cb093e70686b6c84c98df58c1dae9b3b196089858a"
|
||||
],
|
||||
"version": "==3.6.4"
|
||||
"version": "==3.6.6"
|
||||
},
|
||||
"wcwidth": {
|
||||
"hashes": [
|
||||
|
@ -792,10 +902,17 @@
|
|||
},
|
||||
"widgetsnbextension": {
|
||||
"hashes": [
|
||||
"sha256:40794a6a2f97c09a1e613c1c165f67d58a5995d14b283542da39134710791a36",
|
||||
"sha256:5417789ee6064ff515fd10be24870660af3561c02d3d48b26f6f44285d0f70cc"
|
||||
"sha256:8b3b32f522507744096609bc9a36cc0cc83fe8b61ba16f16eebb83d7d79e2686",
|
||||
"sha256:bd2a92a68cb783b33abb47a23e0d1d9638c0d250a0d17633c262172d76641dd8"
|
||||
],
|
||||
"version": "==3.2.1"
|
||||
"version": "==3.4.1"
|
||||
},
|
||||
"yapf": {
|
||||
"hashes": [
|
||||
"sha256:330632d2592e67571ef2c113fe6f5802e2fa5d657448755d5546eea00693dc31",
|
||||
"sha256:55ead4ff1cc1cba5ad7dcfca88fe3930c2ec912c1cfe4a152aa0e7572ff1b49f"
|
||||
],
|
||||
"version": "==0.23.0"
|
||||
},
|
||||
"zict": {
|
||||
"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):
|
||||
"""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 = []
|
||||
for p in dgm:
|
||||
if p.death != np.inf:
|
||||
|
@ -11,8 +18,19 @@ def diagram_array(dgm):
|
|||
|
||||
|
||||
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)
|
||||
dgm2 = diagram_array(dgm2)
|
||||
if dgm1.size == 0 or dgm2.size == 0:
|
||||
return 0
|
||||
# Add \pi_\delta(dgm1) to dgm2 and vice-versa
|
||||
proj1 = dgm1.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 igraph as ig
|
||||
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):
|
||||
"""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"])
|
||||
duration = res * (times.max() - times.min())
|
||||
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,
|
||||
time_lt=times.min() + duration*(i+1))
|
||||
windows.append(g.subgraph_edges(edges))
|
||||
|
@ -21,10 +26,14 @@ def sliding_windows(g, res=0.1, overlap=0):
|
|||
|
||||
|
||||
def max_simplicial_complex(g):
|
||||
"""Return the maximal simplicial complex of a network g.
|
||||
"""
|
||||
return d.Filtration(g.maximal_cliques())
|
||||
|
||||
|
||||
def find_transitions(a):
|
||||
"""Find the transition times in an array of presence times.
|
||||
"""
|
||||
res = []
|
||||
prev = False
|
||||
for i, cur in enumerate(a):
|
||||
|
@ -35,6 +44,14 @@ def find_transitions(a):
|
|||
|
||||
|
||||
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())
|
||||
filts = []
|
||||
for t in np.sort(np.unique(g.es["time"])):
|
||||
|
@ -46,27 +63,13 @@ def presence_times(g):
|
|||
return (max_simplicial_complex, presences)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Import the data
|
||||
g = ig.read("data/sociopatterns/infectious/infectious.graphml")
|
||||
print(g.summary())
|
||||
# Segment the network into sliding windows (resolution = 5%)
|
||||
wins = sliding_windows(g, 0.05)
|
||||
# Compute the presence times of maximal simplices for an example window
|
||||
print(wins[0].summary())
|
||||
(f, t) = presence_times(wins[0])
|
||||
for s in f:
|
||||
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))
|
||||
def zigzag_network(g):
|
||||
"""Compute zigzag persistence on a temporal network.
|
||||
|
||||
:param g: igraph Graph
|
||||
|
||||
:return: a list of persistence diagrams.
|
||||
"""
|
||||
(f, t) = presence_times(g)
|
||||
_, dgms, _ = d.zigzag_homology_persistence(f, t)
|
||||
return dgms
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue