Update notebooks and scripts

This commit is contained in:
Dimitri Lozeve 2018-09-10 10:30:45 +01:00
parent aedd94d4af
commit 69afa83517
41 changed files with 2896 additions and 469 deletions

View file

@ -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
View file

@ -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

File diff suppressed because one or more lines are too long

119
clustering.py Normal file
View 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

Binary file not shown.

BIN
dills/wrcf_distmat.dill Normal file

Binary file not shown.

BIN
dills/wrcf_gram1.dill Normal file

Binary file not shown.

BIN
dills/zz_dgms.dill Normal file

Binary file not shown.

BIN
dills/zz_distmat.dill Normal file

Binary file not shown.

BIN
dills/zz_gram1.dill Normal file

Binary file not shown.

BIN
fig/diagram.pdf Normal file

Binary file not shown.

BIN
fig/gen_wrcf_b.pdf Normal file

Binary file not shown.

BIN
fig/gen_wrcf_k.pdf Normal file

Binary file not shown.

BIN
fig/gen_zz_b.pdf Normal file

Binary file not shown.

BIN
fig/gen_zz_k.pdf Normal file

Binary file not shown.

BIN
fig/sp_wrcf_b.pdf Normal file

Binary file not shown.

BIN
fig/sp_wrcf_k.pdf Normal file

Binary file not shown.

BIN
fig/sp_zz_b.pdf Normal file

Binary file not shown.

BIN
fig/sp_zz_k.pdf Normal file

Binary file not shown.

686
generative.ipynb Normal file

File diff suppressed because one or more lines are too long

128
generative.py Normal file
View 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

Binary file not shown.

Binary file not shown.

BIN
generative/wrcf_gram1.dill Normal file

Binary file not shown.

BIN
generative/zz_dgms.dill Normal file

Binary file not shown.

BIN
generative/zz_distmat.dill Normal file

Binary file not shown.

BIN
generative/zz_gram1.dill Normal file

Binary file not shown.

View file

@ -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

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
View 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.")

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
sociopatterns/zz_dgms.dill Normal file

Binary file not shown.

Binary file not shown.

BIN
sociopatterns/zz_gram1.dill Normal file

Binary file not shown.

BIN
sp_wrcf_k.pdf Normal file

Binary file not shown.

18
spplot.py Normal file
View 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
View 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

View file

@ -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))