diff --git a/Pipfile b/Pipfile index 6fc10bd..c60ed2c 100644 --- a/Pipfile +++ b/Pipfile @@ -19,5 +19,8 @@ graphviz = "*" python-igraph = "*" scipy = "*" bokeh = "*" +scikit-learn = "*" +sklearn_tda = {git = "https://github.com/MathieuCarriere/sklearn_tda"} +cython = "*" [dev-packages] diff --git a/Pipfile.lock b/Pipfile.lock index f65d082..e940d6d 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "db70af1fe6d663b960a39387d2e93074278d096aa9b52d0d489b3d44a52066e1" + "sha256": "05e3399522b22302218e7257393571823c8820f342c48adbf3bd490988ad16f4" }, "pipfile-spec": 6, "requires": {}, @@ -31,10 +31,10 @@ }, "beakerx": { "hashes": [ - "sha256:882f4154bb53f7376e58d768ad6ab78eca728dc1a40f36e7e65a0bc466ee2fe3" + "sha256:2a319d54a80d585652a36b2e3ab130a9e848544048379b2d2b5c01884d5664b2" ], "index": "pypi", - "version": "==0.19.0" + "version": "==0.21.1" }, "bleach": { "hashes": [ @@ -45,10 +45,10 @@ }, "bokeh": { "hashes": [ - "sha256:de14151c7ef768f858f46168546c1d492cb04ab3c58bc118329a78ebf35b4688" + "sha256:d0cf59774d7c74b7173b82ce36bde35b8fe9da0f960364ba3c4df0d1fbd874d6" ], "index": "pypi", - "version": "==0.12.16" + "version": "==0.13.0" }, "click": { "hashes": [ @@ -71,13 +71,53 @@ ], "version": "==0.10.0" }, - "dask": { + "cython": { "hashes": [ - "sha256:037d845a1ee1673cfd8719504f7533454579d1d0823970e523b4478e430cbc6e", - "sha256:ebaa0f144b43a00e7b9b3b9cb557e8ebada5fcbb982cdaba1802cd8c4c5720f0" + "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" ], "index": "pypi", - "version": "==0.18.0" + "version": "==0.28.3" + }, + "dask": { + "hashes": [ + "sha256:b50b435c51bf5ca30c2667d0d92649765b732a2e6bebe7e219e6dd3fe8d7ac4e", + "sha256:b89dc77ef23c380005db9441c3c42010fef47034c687f8d93d0e2619efa060c9" + ], + "index": "pypi", + "version": "==0.18.1" }, "decorator": { "hashes": [ @@ -111,11 +151,11 @@ }, "graphviz": { "hashes": [ - "sha256:c61de040e5354c088d2785ea447dd8c26fc572dcc389e4e23e2b46947808d43e", - "sha256:e1e839596d5ada2b7b5a80e8dffef343cd9f242e95c2387f765755795430ef3c" + "sha256:4958a19cbd8461757a08db308a4a15c3d586660417e1e364f0107d2fe481689f", + "sha256:7caa53f0b0be42c5f2eaa3f3d71dcc863b15bacceb5d531c2ad7519e1980ff82" ], "index": "pypi", - "version": "==0.8.3" + "version": "==0.8.4" }, "heapdict": { "hashes": [ @@ -140,11 +180,11 @@ }, "ipyparallel": { "hashes": [ - "sha256:2a57cd0a94325e02397c706a04b076de9f130fa187366941ec7cb8c2d94053a9", - "sha256:9afb0001d6fa2eca9340e9daab5da021db05211987868f47ab5b305d701cb12d" + "sha256:02b225966d5c20f12b1fba0b6b10aa5d352a6b492e075f137ff0ff6e95b9358e", + "sha256:d2d2aae10fb4e87168653c56d8c991081fa77d964c795b24bc2bcdb5115ad03e" ], "index": "pypi", - "version": "==6.2.1" + "version": "==6.2.2" }, "ipython": { "hashes": [ @@ -169,10 +209,10 @@ }, "jedi": { "hashes": [ - "sha256:1972f694c6bc66a2fac8718299e2ab73011d653a6d8059790c3476d2353b99ad", - "sha256:5861f6dc0c16e024cbb0044999f9cf8013b292c05f287df06d3d991a87a4eb89" + "sha256:b409ed0f6913a701ed474a614a3bb46e6953639033e31f769ca7581da5bd1ec1", + "sha256:c254b135fb39ad76e78d4d8f92765ebc9bf92cbc76f49e97ade1d5f5121e1f6f" ], - "version": "==0.12.0" + "version": "==0.12.1" }, "jinja2": { "hashes": [ @@ -278,6 +318,7 @@ "sha256:07055eb872fa109bd88f599bdb52065704b2e22d475b67675f345d75d32038a0", "sha256:0f2f253d6d51f5ed52a819921f8a0a8e054ce0daefcfbc2557e1c433f14dc77d", "sha256:1ef9fd285334bd6b0495b6de9d56a39dc95081577f27bafabcf28e0d318bed31", + "sha256:3eb17a4dc45e1ceefb899423e8152e10169fa281f960421c762fd8532186c323", "sha256:3fb2db66ef98246bafc04b4ef4e9b0e73c6369f38a29716844e939d197df816a", "sha256:3fd90b407d1ab0dae686a4200030ce305526ff20b85a443dc490d194114b2dfa", "sha256:45dac8589ef1721d7f2ab0f48f986694494dfcc5d13a3e43a5cb6c816276094e", @@ -291,6 +332,7 @@ "sha256:9d12378d6a236aa38326e27f3a29427b63edce4ce325745785aec1a7535b1f85", "sha256:abfd3d9390eb4f2d82cbcaa3a5c2834c581329b64eccb7a071ed9d5df27424f7", "sha256:bc4d7481f0e8ec94cb1afc4a59905d6274b3b4c389aba7a2539e071766671735", + "sha256:c78883145da9b5620aec523fa14ea814e07f2ba26a16b7f68ff7300604a911b3", "sha256:dc0ba2080fd0cfdd07b3458ee4324d35806733feb2b080838d7094731d3f73d9", "sha256:f26fba7fc68994ab2805d77e0695417f9377a00d36ba4248b5d0f1e5adb08d24" ], @@ -360,23 +402,28 @@ "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:e1864a4e9f93ddb2dc6b62ccc2ec1f8250ff4ac0d3d7a15c8985dd4e1fbd6418", + "sha256:e1d18421a7e2ad4a655b76e65d549d4159f8874c18a417464c1d439ee7ccc7cd" ], "index": "pypi", "version": "==1.14.5" @@ -417,10 +464,10 @@ }, "parso": { "hashes": [ - "sha256:cdef26e8adc10d589f3ec4eb444bd0a29f3f1eb6d72a4292ab8afcb9d68976a6", - "sha256:f0604a40b96e062b0fd99cf134cc2d5cdf66939d0902f8267d938b0d5b26707f" + "sha256:8105449d86d858e53ce3e0044ede9dd3a395b1c9716c696af8aa3787158ab806", + "sha256:d250235e52e8f9fc5a80cc2a5f804c9fefd886b2e67a2b1099cf085f403f8e33" ], - "version": "==0.2.1" + "version": "==0.3.0" }, "partd": { "hashes": [ @@ -459,8 +506,10 @@ "sha256:319e12f6bae4d4d988fbff3bed792953fa3b44c791f085b0a1a230f755671ef7", "sha256:529ae235896efb99a6f77653a7138273ab701ec9f0343a1f5030945108dee3c4", "sha256:686e5a35fe4c0acc25f3466c32e716f2d498aaae7b7edc03e2305b682226bcf6", + "sha256:6d981b4d863b20c8ceed98b8ac3d1ca7f96d28707a80845d360fa69c8fc2c44b", "sha256:7789885a72aa3075d28d028236eb3f2b84d908f81d38ad41769a6ddc2fd81b7c", "sha256:7f4616bcb44a6afda930cfc40215e5e9fa7c6896e683b287c771c937712fbe2f", + "sha256:7fdb3d02bfd68f508e6745021311a4a4dbfec53fca03721474e985f310e249ba", "sha256:a9b85b335b40a528a8e2a6b549592138de8429c6296e7361892958956e6a73cf", "sha256:dc85fad15ef98103ecc047a0d81b55bbf5fe1b03313b96e883acc2e2fa87ed5c" ], @@ -468,11 +517,11 @@ }, "ptyprocess": { "hashes": [ - "sha256:e64193f0047ad603b71f202332ab5527c5e52aa7c8b609704fc28c0dc20c4365", - "sha256:e8c43b5eee76b2083a9badde89fd1bbce6c8942d1045146e100b7b5e014f4f1a" + "sha256:923f299cc5ad920c68f2bc0bc98b75b9f838b93b599941a6b63ddbc2476394c0", + "sha256:d7cc528d76e76342423ca640335bd3633420dc1366f258cb31d05e865ef5ca1f" ], "markers": "os_name != 'nt'", - "version": "==0.5.2" + "version": "==0.6.0" }, "py4j": { "hashes": [ @@ -518,10 +567,10 @@ }, "pytz": { "hashes": [ - "sha256:65ae0c8101309c45772196b21b74c46b2e5d11b6275c45d251b150d5da334555", - "sha256:c06425302f2cf668f1bba7a0a03f3c1d34d4ebeef2c72003da308b3947c7f749" + "sha256:a061aa0a9e06881eb8b3b2b43f05b9439d6583c206d0a6c340ff72a7b6669053", + "sha256:ffb9ef1de172603304d9d2819af6f5ece76f2e85ec10692a524dd876e72bf277" ], - "version": "==2018.4" + "version": "==2018.5" }, "pyyaml": { "hashes": [ @@ -553,6 +602,7 @@ "sha256:613ac1fc4591b1c6a0a52ce3ed17dbffd6a17e985df504e8b4cdb987f97285b1", "sha256:630fb21f7474eb9e409a1ad476bf1ec489a69eb021172d422f2485cc3a44cd79", "sha256:6c3632d2c17cf03ce728ffaa328d45bb053623b3a0aa9747adcde81778d5a4d5", + "sha256:72a490db0e34c204764457a6853afde7c0d1aa01b6dbbbaea064636614b774c6", "sha256:767e1d0b1f7fff1950127abc08c5a5af2754987bc6480c6d641bed6971278a7a", "sha256:863ec1bfa52da6eaa5c4aa59143eeaeb4ef7a076862407a548ec645f25e6d6df", "sha256:a0ecf4c3eccd92f030a4e3e334b9da6fa3ee86be00249343c74e476d70567d0f", @@ -577,6 +627,39 @@ ], "version": "==4.3.1" }, + "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" + ], + "index": "pypi", + "version": "==0.19.1" + }, "scipy": { "hashes": [ "sha256:0611ee97296265af4a21164a5323f8c1b4e8e15c582d3dfa7610825900136bb7", @@ -589,19 +672,24 @@ "sha256:3b243c77a822cd034dad53058d7c2abf80062aa6f4a32e9799c95d6391558631", "sha256:404a00314e85eca9d46b80929571b938e97a143b4f2ddc2b2b3c91a4c4ead9c5", "sha256:423b3ff76957d29d1cce1bc0d62ebaf9a3fdfaf62344e3fdec14619bb7b5ad3a", + "sha256:42d9149a2fff7affdd352d157fa5717033767857c11bd55aa4a519a44343dfef", + "sha256:625f25a6b7d795e8830cb70439453c9f163e6870e710ec99eba5722775b318f3", "sha256:698c6409da58686f2df3d6f815491fd5b4c2de6817a45379517c92366eea208f", "sha256:729f8f8363d32cebcb946de278324ab43d28096f36593be6281ca1ee86ce6559", "sha256:8190770146a4c8ed5d330d5b5ad1c76251c63349d25c96b3094875b930c44692", "sha256:878352408424dffaa695ffedf2f9f92844e116686923ed9aa8626fc30d32cfd1", + "sha256:8b984f0821577d889f3c7ca8445564175fb4ac7c7f9659b7c60bef95b2b70e76", "sha256:8f841bbc21d3dad2111a94c490fb0a591b8612ffea86b8e5571746ae76a3deac", "sha256:c22b27371b3866c92796e5d7907e914f0e58a36d3222c5d436ddd3f0e354227a", "sha256:d0cdd5658b49a722783b8b4f61a6f1f9c75042d0e29a30ccb6cacc9b25f6d9e2", + "sha256:d40dc7f494b06dcee0d303e51a00451b2da6119acbeaccf8369f2d29e28917ac", "sha256:d8491d4784aceb1f100ddb8e31239c54e4afab8d607928a9f7ef2469ec35ae01", "sha256:dfc5080c38dde3f43d8fbb9c0539a7839683475226cf83e4b24363b227dfe552", "sha256:e24e22c8d98d3c704bb3410bce9b69e122a8de487ad3dbfe9985d154e5c03a40", "sha256:e7a01e53163818d56eabddcafdc2090e9daba178aad05516b20c6591c4811020", "sha256:ee677635393414930541a096fc8e61634304bb0153e4e02b75685b11eba14cae", - "sha256:f0521af1b722265d824d6ad055acfe9bd3341765735c44b5a4d0069e189a0f40" + "sha256:f0521af1b722265d824d6ad055acfe9bd3341765735c44b5a4d0069e189a0f40", + "sha256:f25c281f12c0da726c6ed00535ca5d1622ec755c30a3f8eafef26cf43fede694" ], "index": "pypi", "version": "==1.1.0" @@ -626,6 +714,9 @@ ], "version": "==1.11.0" }, + "sklearn-tda": { + "git": "https://github.com/MathieuCarriere/sklearn_tda" + }, "sortedcontainers": { "hashes": [ "sha256:607294c6e291a270948420f7ffa1fb3ed47384a4c08db6d1e9c92d08a6981982", diff --git a/sliced_wasserstein.py b/sliced_wasserstein.py index b6278ff..53cbd26 100644 --- a/sliced_wasserstein.py +++ b/sliced_wasserstein.py @@ -33,4 +33,4 @@ def SW_approx(dgm1, dgm2, M): # l1-distance between the projections SW = SW + s * np.sum(np.abs(V1 - V2)) theta = theta + s - return SW / M + return 1/np.pi * SW