diff --git a/Pipfile b/Pipfile index 80141836..567b8974 100644 --- a/Pipfile +++ b/Pipfile @@ -6,7 +6,7 @@ name = "pypi" [packages] affine = "==2.3.0" numpy = "==1.22.0" -pydantic = "==1.9.0" +pydantic = "==2.4.2" python-dotenv = "==0.19.2" requests = "==2.27.1" scipy = "==1.7.3" diff --git a/Pipfile.lock b/Pipfile.lock index 4d880f73..5990ab1f 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "34b11e3f01fe2bbc75a5d9c500e3a20a6e07fb300186698b9b8a64c2da20e660" + "sha256": "173c9dd806cde686f53d8da71d5ebe54009d37bfa0d70e7c7279b31f33fa78ba" }, "pipfile-spec": 6, "requires": { @@ -26,103 +26,104 @@ }, "aiobotocore": { "hashes": [ - "sha256:00fd7f43cc0484d8ed274fd0be492aa16a7fea679dbea96a602bb722ca4c2d22" + "sha256:00fd7f43cc0484d8ed274fd0be492aa16a7fea679dbea96a602bb722ca4c2d22", + "sha256:132a7ccae3bbd35d44dce84a0f4bd77cdac8653f676575afba10ce4879605836" ], "markers": "python_version >= '3.6'", "version": "==2.1.2" }, "aiohttp": { "hashes": [ - "sha256:03543dcf98a6619254b409be2d22b51f21ec66272be4ebda7b04e6412e4b2e14", - "sha256:03baa76b730e4e15a45f81dfe29a8d910314143414e528737f8589ec60cf7391", - "sha256:0a63f03189a6fa7c900226e3ef5ba4d3bd047e18f445e69adbd65af433add5a2", - "sha256:10c8cefcff98fd9168cdd86c4da8b84baaa90bf2da2269c6161984e6737bf23e", - "sha256:147ae376f14b55f4f3c2b118b95be50a369b89b38a971e80a17c3fd623f280c9", - "sha256:176a64b24c0935869d5bbc4c96e82f89f643bcdf08ec947701b9dbb3c956b7dd", - "sha256:17b79c2963db82086229012cff93ea55196ed31f6493bb1ccd2c62f1724324e4", - "sha256:1a45865451439eb320784918617ba54b7a377e3501fb70402ab84d38c2cd891b", - "sha256:1b3ea7edd2d24538959c1c1abf97c744d879d4e541d38305f9bd7d9b10c9ec41", - "sha256:22f6eab15b6db242499a16de87939a342f5a950ad0abaf1532038e2ce7d31567", - "sha256:3032dcb1c35bc330134a5b8a5d4f68c1a87252dfc6e1262c65a7e30e62298275", - "sha256:33587f26dcee66efb2fff3c177547bd0449ab7edf1b73a7f5dea1e38609a0c54", - "sha256:34ce9f93a4a68d1272d26030655dd1b58ff727b3ed2a33d80ec433561b03d67a", - "sha256:3a80464982d41b1fbfe3154e440ba4904b71c1a53e9cd584098cd41efdb188ef", - "sha256:3b90467ebc3d9fa5b0f9b6489dfb2c304a1db7b9946fa92aa76a831b9d587e99", - "sha256:3d89efa095ca7d442a6d0cbc755f9e08190ba40069b235c9886a8763b03785da", - "sha256:3d8ef1a630519a26d6760bc695842579cb09e373c5f227a21b67dc3eb16cfea4", - "sha256:3f43255086fe25e36fd5ed8f2ee47477408a73ef00e804cb2b5cba4bf2ac7f5e", - "sha256:40653609b3bf50611356e6b6554e3a331f6879fa7116f3959b20e3528783e699", - "sha256:41a86a69bb63bb2fc3dc9ad5ea9f10f1c9c8e282b471931be0268ddd09430b04", - "sha256:493f5bc2f8307286b7799c6d899d388bbaa7dfa6c4caf4f97ef7521b9cb13719", - "sha256:4a6cadebe132e90cefa77e45f2d2f1a4b2ce5c6b1bfc1656c1ddafcfe4ba8131", - "sha256:4c745b109057e7e5f1848c689ee4fb3a016c8d4d92da52b312f8a509f83aa05e", - "sha256:4d347a172f866cd1d93126d9b239fcbe682acb39b48ee0873c73c933dd23bd0f", - "sha256:4dac314662f4e2aa5009977b652d9b8db7121b46c38f2073bfeed9f4049732cd", - "sha256:4ddaae3f3d32fc2cb4c53fab020b69a05c8ab1f02e0e59665c6f7a0d3a5be54f", - "sha256:5393fb786a9e23e4799fec788e7e735de18052f83682ce2dfcabaf1c00c2c08e", - "sha256:59f029a5f6e2d679296db7bee982bb3d20c088e52a2977e3175faf31d6fb75d1", - "sha256:5a7bdf9e57126dc345b683c3632e8ba317c31d2a41acd5800c10640387d193ed", - "sha256:5b3f2e06a512e94722886c0827bee9807c86a9f698fac6b3aee841fab49bbfb4", - "sha256:5ce45967538fb747370308d3145aa68a074bdecb4f3a300869590f725ced69c1", - "sha256:5e14f25765a578a0a634d5f0cd1e2c3f53964553a00347998dfdf96b8137f777", - "sha256:618c901dd3aad4ace71dfa0f5e82e88b46ef57e3239fc7027773cb6d4ed53531", - "sha256:652b1bff4f15f6287550b4670546a2947f2a4575b6c6dff7760eafb22eacbf0b", - "sha256:6c08e8ed6fa3d477e501ec9db169bfac8140e830aa372d77e4a43084d8dd91ab", - "sha256:6ddb2a2026c3f6a68c3998a6c47ab6795e4127315d2e35a09997da21865757f8", - "sha256:6e601588f2b502c93c30cd5a45bfc665faaf37bbe835b7cfd461753068232074", - "sha256:6e74dd54f7239fcffe07913ff8b964e28b712f09846e20de78676ce2a3dc0bfc", - "sha256:7235604476a76ef249bd64cb8274ed24ccf6995c4a8b51a237005ee7a57e8643", - "sha256:7ab43061a0c81198d88f39aaf90dae9a7744620978f7ef3e3708339b8ed2ef01", - "sha256:7c7837fe8037e96b6dd5cfcf47263c1620a9d332a87ec06a6ca4564e56bd0f36", - "sha256:80575ba9377c5171407a06d0196b2310b679dc752d02a1fcaa2bc20b235dbf24", - "sha256:80a37fe8f7c1e6ce8f2d9c411676e4bc633a8462844e38f46156d07a7d401654", - "sha256:8189c56eb0ddbb95bfadb8f60ea1b22fcfa659396ea36f6adcc521213cd7b44d", - "sha256:854f422ac44af92bfe172d8e73229c270dc09b96535e8a548f99c84f82dde241", - "sha256:880e15bb6dad90549b43f796b391cfffd7af373f4646784795e20d92606b7a51", - "sha256:8b631e26df63e52f7cce0cce6507b7a7f1bc9b0c501fcde69742130b32e8782f", - "sha256:8c29c77cc57e40f84acef9bfb904373a4e89a4e8b74e71aa8075c021ec9078c2", - "sha256:91f6d540163f90bbaef9387e65f18f73ffd7c79f5225ac3d3f61df7b0d01ad15", - "sha256:92c0cea74a2a81c4c76b62ea1cac163ecb20fb3ba3a75c909b9fa71b4ad493cf", - "sha256:9bcb89336efa095ea21b30f9e686763f2be4478f1b0a616969551982c4ee4c3b", - "sha256:a1f4689c9a1462f3df0a1f7e797791cd6b124ddbee2b570d34e7f38ade0e2c71", - "sha256:a3fec6a4cb5551721cdd70473eb009d90935b4063acc5f40905d40ecfea23e05", - "sha256:a5d794d1ae64e7753e405ba58e08fcfa73e3fad93ef9b7e31112ef3c9a0efb52", - "sha256:a86d42d7cba1cec432d47ab13b6637bee393a10f664c425ea7b305d1301ca1a3", - "sha256:adfbc22e87365a6e564c804c58fc44ff7727deea782d175c33602737b7feadb6", - "sha256:aeb29c84bb53a84b1a81c6c09d24cf33bb8432cc5c39979021cc0f98c1292a1a", - "sha256:aede4df4eeb926c8fa70de46c340a1bc2c6079e1c40ccf7b0eae1313ffd33519", - "sha256:b744c33b6f14ca26b7544e8d8aadff6b765a80ad6164fb1a430bbadd593dfb1a", - "sha256:b7a00a9ed8d6e725b55ef98b1b35c88013245f35f68b1b12c5cd4100dddac333", - "sha256:bb96fa6b56bb536c42d6a4a87dfca570ff8e52de2d63cabebfd6fb67049c34b6", - "sha256:bbcf1a76cf6f6dacf2c7f4d2ebd411438c275faa1dc0c68e46eb84eebd05dd7d", - "sha256:bca5f24726e2919de94f047739d0a4fc01372801a3672708260546aa2601bf57", - "sha256:bf2e1a9162c1e441bf805a1fd166e249d574ca04e03b34f97e2928769e91ab5c", - "sha256:c4eb3b82ca349cf6fadcdc7abcc8b3a50ab74a62e9113ab7a8ebc268aad35bb9", - "sha256:c6cc15d58053c76eacac5fa9152d7d84b8d67b3fde92709195cb984cfb3475ea", - "sha256:c6cd05ea06daca6ad6a4ca3ba7fe7dc5b5de063ff4daec6170ec0f9979f6c332", - "sha256:c844fd628851c0bc309f3c801b3a3d58ce430b2ce5b359cd918a5a76d0b20cb5", - "sha256:c9cb1565a7ad52e096a6988e2ee0397f72fe056dadf75d17fa6b5aebaea05622", - "sha256:cab9401de3ea52b4b4c6971db5fb5c999bd4260898af972bf23de1c6b5dd9d71", - "sha256:cd468460eefef601ece4428d3cf4562459157c0f6523db89365202c31b6daebb", - "sha256:d1e6a862b76f34395a985b3cd39a0d949ca80a70b6ebdea37d3ab39ceea6698a", - "sha256:d1f9282c5f2b5e241034a009779e7b2a1aa045f667ff521e7948ea9b56e0c5ff", - "sha256:d265f09a75a79a788237d7f9054f929ced2e69eb0bb79de3798c468d8a90f945", - "sha256:db3fc6120bce9f446d13b1b834ea5b15341ca9ff3f335e4a951a6ead31105480", - "sha256:dbf3a08a06b3f433013c143ebd72c15cac33d2914b8ea4bea7ac2c23578815d6", - "sha256:de04b491d0e5007ee1b63a309956eaed959a49f5bb4e84b26c8f5d49de140fa9", - "sha256:e4b09863aae0dc965c3ef36500d891a3ff495a2ea9ae9171e4519963c12ceefd", - "sha256:e595432ac259af2d4630008bf638873d69346372d38255774c0e286951e8b79f", - "sha256:e75b89ac3bd27d2d043b234aa7b734c38ba1b0e43f07787130a0ecac1e12228a", - "sha256:ea9eb976ffdd79d0e893869cfe179a8f60f152d42cb64622fca418cd9b18dc2a", - "sha256:eafb3e874816ebe2a92f5e155f17260034c8c341dad1df25672fb710627c6949", - "sha256:ee3c36df21b5714d49fc4580247947aa64bcbe2939d1b77b4c8dcb8f6c9faecc", - "sha256:f352b62b45dff37b55ddd7b9c0c8672c4dd2eb9c0f9c11d395075a84e2c40f75", - "sha256:fabb87dd8850ef0f7fe2b366d44b77d7e6fa2ea87861ab3844da99291e81e60f", - "sha256:fe11310ae1e4cd560035598c3f29d86cef39a83d244c7466f95c27ae04850f10", - "sha256:fe7ba4a51f33ab275515f66b0a236bcde4fb5561498fe8f898d4e549b2e4509f" + "sha256:002f23e6ea8d3dd8d149e569fd580c999232b5fbc601c48d55398fbc2e582e8c", + "sha256:01770d8c04bd8db568abb636c1fdd4f7140b284b8b3e0b4584f070180c1e5c62", + "sha256:0912ed87fee967940aacc5306d3aa8ba3a459fcd12add0b407081fbefc931e53", + "sha256:0cccd1de239afa866e4ce5c789b3032442f19c261c7d8a01183fd956b1935349", + "sha256:0fa375b3d34e71ccccf172cab401cd94a72de7a8cc01847a7b3386204093bb47", + "sha256:13da35c9ceb847732bf5c6c5781dcf4780e14392e5d3b3c689f6d22f8e15ae31", + "sha256:14cd52ccf40006c7a6cd34a0f8663734e5363fd981807173faf3a017e202fec9", + "sha256:16d330b3b9db87c3883e565340d292638a878236418b23cc8b9b11a054aaa887", + "sha256:1bed815f3dc3d915c5c1e556c397c8667826fbc1b935d95b0ad680787896a358", + "sha256:1d84166673694841d8953f0a8d0c90e1087739d24632fe86b1a08819168b4566", + "sha256:1f13f60d78224f0dace220d8ab4ef1dbc37115eeeab8c06804fec11bec2bbd07", + "sha256:229852e147f44da0241954fc6cb910ba074e597f06789c867cb7fb0621e0ba7a", + "sha256:253bf92b744b3170eb4c4ca2fa58f9c4b87aeb1df42f71d4e78815e6e8b73c9e", + "sha256:255ba9d6d5ff1a382bb9a578cd563605aa69bec845680e21c44afc2670607a95", + "sha256:2817b2f66ca82ee699acd90e05c95e79bbf1dc986abb62b61ec8aaf851e81c93", + "sha256:2b8d4e166e600dcfbff51919c7a3789ff6ca8b3ecce16e1d9c96d95dd569eb4c", + "sha256:2d5b785c792802e7b275c420d84f3397668e9d49ab1cb52bd916b3b3ffcf09ad", + "sha256:3161ce82ab85acd267c8f4b14aa226047a6bee1e4e6adb74b798bd42c6ae1f80", + "sha256:33164093be11fcef3ce2571a0dccd9041c9a93fa3bde86569d7b03120d276c6f", + "sha256:39a312d0e991690ccc1a61f1e9e42daa519dcc34ad03eb6f826d94c1190190dd", + "sha256:3b2ab182fc28e7a81f6c70bfbd829045d9480063f5ab06f6e601a3eddbbd49a0", + "sha256:3c68330a59506254b556b99a91857428cab98b2f84061260a67865f7f52899f5", + "sha256:3f0e27e5b733803333bb2371249f41cf42bae8884863e8e8965ec69bebe53132", + "sha256:3f5c7ce535a1d2429a634310e308fb7d718905487257060e5d4598e29dc17f0b", + "sha256:3fd194939b1f764d6bb05490987bfe104287bbf51b8d862261ccf66f48fb4096", + "sha256:41bdc2ba359032e36c0e9de5a3bd00d6fb7ea558a6ce6b70acedf0da86458321", + "sha256:41d55fc043954cddbbd82503d9cc3f4814a40bcef30b3569bc7b5e34130718c1", + "sha256:42c89579f82e49db436b69c938ab3e1559e5a4409eb8639eb4143989bc390f2f", + "sha256:45ad816b2c8e3b60b510f30dbd37fe74fd4a772248a52bb021f6fd65dff809b6", + "sha256:4ac39027011414dbd3d87f7edb31680e1f430834c8cef029f11c66dad0670aa5", + "sha256:4d4cbe4ffa9d05f46a28252efc5941e0462792930caa370a6efaf491f412bc66", + "sha256:4fcf3eabd3fd1a5e6092d1242295fa37d0354b2eb2077e6eb670accad78e40e1", + "sha256:5d791245a894be071d5ab04bbb4850534261a7d4fd363b094a7b9963e8cdbd31", + "sha256:6c43ecfef7deaf0617cee936836518e7424ee12cb709883f2c9a1adda63cc460", + "sha256:6c5f938d199a6fdbdc10bbb9447496561c3a9a565b43be564648d81e1102ac22", + "sha256:6e2f9cc8e5328f829f6e1fb74a0a3a939b14e67e80832975e01929e320386b34", + "sha256:713103a8bdde61d13490adf47171a1039fd880113981e55401a0f7b42c37d071", + "sha256:71783b0b6455ac8f34b5ec99d83e686892c50498d5d00b8e56d47f41b38fbe04", + "sha256:76b36b3124f0223903609944a3c8bf28a599b2cc0ce0be60b45211c8e9be97f8", + "sha256:7bc88fc494b1f0311d67f29fee6fd636606f4697e8cc793a2d912ac5b19aa38d", + "sha256:7ee912f7e78287516df155f69da575a0ba33b02dd7c1d6614dbc9463f43066e3", + "sha256:86f20cee0f0a317c76573b627b954c412ea766d6ada1a9fcf1b805763ae7feeb", + "sha256:89341b2c19fb5eac30c341133ae2cc3544d40d9b1892749cdd25892bbc6ac951", + "sha256:8a9b5a0606faca4f6cc0d338359d6fa137104c337f489cd135bb7fbdbccb1e39", + "sha256:8d399dade330c53b4106160f75f55407e9ae7505263ea86f2ccca6bfcbdb4921", + "sha256:8e31e9db1bee8b4f407b77fd2507337a0a80665ad7b6c749d08df595d88f1cf5", + "sha256:90c72ebb7cb3a08a7f40061079817133f502a160561d0675b0a6adf231382c92", + "sha256:918810ef188f84152af6b938254911055a72e0f935b5fbc4c1a4ed0b0584aed1", + "sha256:93c15c8e48e5e7b89d5cb4613479d144fda8344e2d886cf694fd36db4cc86865", + "sha256:96603a562b546632441926cd1293cfcb5b69f0b4159e6077f7c7dbdfb686af4d", + "sha256:99c5ac4ad492b4a19fc132306cd57075c28446ec2ed970973bbf036bcda1bcc6", + "sha256:9c19b26acdd08dd239e0d3669a3dddafd600902e37881f13fbd8a53943079dbc", + "sha256:9de50a199b7710fa2904be5a4a9b51af587ab24c8e540a7243ab737b45844543", + "sha256:9e2ee0ac5a1f5c7dd3197de309adfb99ac4617ff02b0603fd1e65b07dc772e4b", + "sha256:a2ece4af1f3c967a4390c284797ab595a9f1bc1130ef8b01828915a05a6ae684", + "sha256:a3628b6c7b880b181a3ae0a0683698513874df63783fd89de99b7b7539e3e8a8", + "sha256:ad1407db8f2f49329729564f71685557157bfa42b48f4b93e53721a16eb813ed", + "sha256:b04691bc6601ef47c88f0255043df6f570ada1a9ebef99c34bd0b72866c217ae", + "sha256:b0cf2a4501bff9330a8a5248b4ce951851e415bdcce9dc158e76cfd55e15085c", + "sha256:b2fe42e523be344124c6c8ef32a011444e869dc5f883c591ed87f84339de5976", + "sha256:b30e963f9e0d52c28f284d554a9469af073030030cef8693106d918b2ca92f54", + "sha256:bb54c54510e47a8c7c8e63454a6acc817519337b2b78606c4e840871a3e15349", + "sha256:bd111d7fc5591ddf377a408ed9067045259ff2770f37e2d94e6478d0f3fc0c17", + "sha256:bdf70bfe5a1414ba9afb9d49f0c912dc524cf60141102f3a11143ba3d291870f", + "sha256:ca80e1b90a05a4f476547f904992ae81eda5c2c85c66ee4195bb8f9c5fb47f28", + "sha256:caf486ac1e689dda3502567eb89ffe02876546599bbf915ec94b1fa424eeffd4", + "sha256:ccc360e87341ad47c777f5723f68adbb52b37ab450c8bc3ca9ca1f3e849e5fe2", + "sha256:d25036d161c4fe2225d1abff2bd52c34ed0b1099f02c208cd34d8c05729882f0", + "sha256:d52d5dc7c6682b720280f9d9db41d36ebe4791622c842e258c9206232251ab2b", + "sha256:d67f8baed00870aa390ea2590798766256f31dc5ed3ecc737debb6e97e2ede78", + "sha256:d76e8b13161a202d14c9584590c4df4d068c9567c99506497bdd67eaedf36403", + "sha256:d95fc1bf33a9a81469aa760617b5971331cdd74370d1214f0b3109272c0e1e3c", + "sha256:de6a1c9f6803b90e20869e6b99c2c18cef5cc691363954c93cb9adeb26d9f3ae", + "sha256:e1d8cb0b56b3587c5c01de3bf2f600f186da7e7b5f7353d1bf26a8ddca57f965", + "sha256:e2a988a0c673c2e12084f5e6ba3392d76c75ddb8ebc6c7e9ead68248101cd446", + "sha256:e3f1e3f1a1751bb62b4a1b7f4e435afcdade6c17a4fd9b9d43607cebd242924a", + "sha256:e6a00ffcc173e765e200ceefb06399ba09c06db97f401f920513a10c803604ca", + "sha256:e827d48cf802de06d9c935088c2924e3c7e7533377d66b6f31ed175c1620e05e", + "sha256:ebf3fd9f141700b510d4b190094db0ce37ac6361a6806c153c161dc6c041ccda", + "sha256:ec00c3305788e04bf6d29d42e504560e159ccaf0be30c09203b468a6c1ccd3b2", + "sha256:ec4fd86658c6a8964d75426517dc01cbf840bbf32d055ce64a9e63a40fd7b771", + "sha256:efd2fcf7e7b9d7ab16e6b7d54205beded0a9c8566cb30f09c1abe42b4e22bdcb", + "sha256:f0f03211fd14a6a0aed2997d4b1c013d49fb7b50eeb9ffdf5e51f23cfe2c77fa", + "sha256:f628dbf3c91e12f4d6c8b3f092069567d8eb17814aebba3d7d60c149391aee3a", + "sha256:f8ef51e459eb2ad8e7a66c1d6440c808485840ad55ecc3cafefadea47d1b1ba2", + "sha256:fc37e9aef10a696a5a4474802930079ccfc14d9f9c10b4662169671ff034b7df", + "sha256:fdee8405931b0615220e5ddf8cd7edd8592c606a8e4ca2a00704883c396e4479" ], "markers": "python_version >= '3.6'", - "version": "==3.8.4" + "version": "==3.8.6" }, "aioitertools": { "hashes": [ @@ -140,6 +141,14 @@ "markers": "python_version >= '3.7'", "version": "==1.3.1" }, + "annotated-types": { + "hashes": [ + "sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43", + "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d" + ], + "markers": "python_version >= '3.8'", + "version": "==0.6.0" + }, "asciitree": { "hashes": [ "sha256:4aa4b9b649f85e3fcb343363d97564aa1fb62e249677f2e18a96765145cc0f6e" @@ -148,19 +157,19 @@ }, "async-timeout": { "hashes": [ - "sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15", - "sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c" + "sha256:4640d96be84d82d02ed59ea2b7105a0f7b33abe8703703cd0ab0bf87c427522f", + "sha256:7405140ff1230c310e51dc27b3145b9092d659ce68ff733fb0cefe3ee42be028" ], - "markers": "python_version >= '3.6'", - "version": "==4.0.2" + "markers": "python_version >= '3.7'", + "version": "==4.0.3" }, "attrs": { "hashes": [ - "sha256:29e95c7f6778868dbd49170f98f8818f78f3dc5e0e37c0b1f474e3561b240836", - "sha256:c9227bfc2f01993c03f68db37d1d15c9690188323c067c641f1a35ca58185f99" + "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04", + "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015" ], - "markers": "python_version >= '3.6'", - "version": "==22.2.0" + "markers": "python_version >= '3.7'", + "version": "==23.1.0" }, "botocore": { "hashes": [ @@ -172,11 +181,11 @@ }, "certifi": { "hashes": [ - "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3", - "sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18" + "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082", + "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9" ], "markers": "python_version >= '3.6'", - "version": "==2022.12.7" + "version": "==2023.7.22" }, "charset-normalizer": { "hashes": [ @@ -262,101 +271,80 @@ "index": "pypi", "version": "==4.41.0" }, - "entrypoints": { - "hashes": [ - "sha256:b706eddaa9218a19ebcd67b56818f05bb27589b1ca9e8d797b74affad4ccacd4", - "sha256:f174b5ff827504fd3cd97cc3f8649f3693f51538c7e4bdf3ef002c8429d42f9f" - ], - "markers": "python_version >= '3.6'", - "version": "==0.4" - }, "fasteners": { "hashes": [ - "sha256:1d4caf5f8db57b0e4107d94fd5a1d02510a450dced6ca77d1839064c1bacf20c", - "sha256:cb7c13ef91e0c7e4fe4af38ecaf6b904ec3f5ce0dda06d34924b6b74b869d953" + "sha256:758819cb5d94cdedf4e836988b74de396ceacb8e2794d21f82d131fd9ee77237", + "sha256:b4f37c3ac52d8a445af3a66bce57b33b5e90b97c696b7b984f530cf8f0ded09c" ], "markers": "python_version >= '3.6'", - "version": "==0.18" + "version": "==0.19" }, "frozenlist": { "hashes": [ - "sha256:008a054b75d77c995ea26629ab3a0c0d7281341f2fa7e1e85fa6153ae29ae99c", - "sha256:02c9ac843e3390826a265e331105efeab489ffaf4dd86384595ee8ce6d35ae7f", - "sha256:034a5c08d36649591be1cbb10e09da9f531034acfe29275fc5454a3b101ce41a", - "sha256:05cdb16d09a0832eedf770cb7bd1fe57d8cf4eaf5aced29c4e41e3f20b30a784", - "sha256:0693c609e9742c66ba4870bcee1ad5ff35462d5ffec18710b4ac89337ff16e27", - "sha256:0771aed7f596c7d73444c847a1c16288937ef988dc04fb9f7be4b2aa91db609d", - "sha256:0af2e7c87d35b38732e810befb9d797a99279cbb85374d42ea61c1e9d23094b3", - "sha256:14143ae966a6229350021384870458e4777d1eae4c28d1a7aa47f24d030e6678", - "sha256:180c00c66bde6146a860cbb81b54ee0df350d2daf13ca85b275123bbf85de18a", - "sha256:1841e200fdafc3d51f974d9d377c079a0694a8f06de2e67b48150328d66d5483", - "sha256:23d16d9f477bb55b6154654e0e74557040575d9d19fe78a161bd33d7d76808e8", - "sha256:2b07ae0c1edaa0a36339ec6cce700f51b14a3fc6545fdd32930d2c83917332cf", - "sha256:2c926450857408e42f0bbc295e84395722ce74bae69a3b2aa2a65fe22cb14b99", - "sha256:2e24900aa13212e75e5b366cb9065e78bbf3893d4baab6052d1aca10d46d944c", - "sha256:303e04d422e9b911a09ad499b0368dc551e8c3cd15293c99160c7f1f07b59a48", - "sha256:352bd4c8c72d508778cf05ab491f6ef36149f4d0cb3c56b1b4302852255d05d5", - "sha256:3843f84a6c465a36559161e6c59dce2f2ac10943040c2fd021cfb70d58c4ad56", - "sha256:394c9c242113bfb4b9aa36e2b80a05ffa163a30691c7b5a29eba82e937895d5e", - "sha256:3bbdf44855ed8f0fbcd102ef05ec3012d6a4fd7c7562403f76ce6a52aeffb2b1", - "sha256:40de71985e9042ca00b7953c4f41eabc3dc514a2d1ff534027f091bc74416401", - "sha256:41fe21dc74ad3a779c3d73a2786bdf622ea81234bdd4faf90b8b03cad0c2c0b4", - "sha256:47df36a9fe24054b950bbc2db630d508cca3aa27ed0566c0baf661225e52c18e", - "sha256:4ea42116ceb6bb16dbb7d526e242cb6747b08b7710d9782aa3d6732bd8d27649", - "sha256:58bcc55721e8a90b88332d6cd441261ebb22342e238296bb330968952fbb3a6a", - "sha256:5c11e43016b9024240212d2a65043b70ed8dfd3b52678a1271972702d990ac6d", - "sha256:5cf820485f1b4c91e0417ea0afd41ce5cf5965011b3c22c400f6d144296ccbc0", - "sha256:5d8860749e813a6f65bad8285a0520607c9500caa23fea6ee407e63debcdbef6", - "sha256:6327eb8e419f7d9c38f333cde41b9ae348bec26d840927332f17e887a8dcb70d", - "sha256:65a5e4d3aa679610ac6e3569e865425b23b372277f89b5ef06cf2cdaf1ebf22b", - "sha256:66080ec69883597e4d026f2f71a231a1ee9887835902dbe6b6467d5a89216cf6", - "sha256:783263a4eaad7c49983fe4b2e7b53fa9770c136c270d2d4bbb6d2192bf4d9caf", - "sha256:7f44e24fa70f6fbc74aeec3e971f60a14dde85da364aa87f15d1be94ae75aeef", - "sha256:7fdfc24dcfce5b48109867c13b4cb15e4660e7bd7661741a391f821f23dfdca7", - "sha256:810860bb4bdce7557bc0febb84bbd88198b9dbc2022d8eebe5b3590b2ad6c842", - "sha256:841ea19b43d438a80b4de62ac6ab21cfe6827bb8a9dc62b896acc88eaf9cecba", - "sha256:84610c1502b2461255b4c9b7d5e9c48052601a8957cd0aea6ec7a7a1e1fb9420", - "sha256:899c5e1928eec13fd6f6d8dc51be23f0d09c5281e40d9cf4273d188d9feeaf9b", - "sha256:8bae29d60768bfa8fb92244b74502b18fae55a80eac13c88eb0b496d4268fd2d", - "sha256:8df3de3a9ab8325f94f646609a66cbeeede263910c5c0de0101079ad541af332", - "sha256:8fa3c6e3305aa1146b59a09b32b2e04074945ffcfb2f0931836d103a2c38f936", - "sha256:924620eef691990dfb56dc4709f280f40baee568c794b5c1885800c3ecc69816", - "sha256:9309869032abb23d196cb4e4db574232abe8b8be1339026f489eeb34a4acfd91", - "sha256:9545a33965d0d377b0bc823dcabf26980e77f1b6a7caa368a365a9497fb09420", - "sha256:9ac5995f2b408017b0be26d4a1d7c61bce106ff3d9e3324374d66b5964325448", - "sha256:9bbbcedd75acdfecf2159663b87f1bb5cfc80e7cd99f7ddd9d66eb98b14a8411", - "sha256:a4ae8135b11652b08a8baf07631d3ebfe65a4c87909dbef5fa0cdde440444ee4", - "sha256:a6394d7dadd3cfe3f4b3b186e54d5d8504d44f2d58dcc89d693698e8b7132b32", - "sha256:a97b4fe50b5890d36300820abd305694cb865ddb7885049587a5678215782a6b", - "sha256:ae4dc05c465a08a866b7a1baf360747078b362e6a6dbeb0c57f234db0ef88ae0", - "sha256:b1c63e8d377d039ac769cd0926558bb7068a1f7abb0f003e3717ee003ad85530", - "sha256:b1e2c1185858d7e10ff045c496bbf90ae752c28b365fef2c09cf0fa309291669", - "sha256:b4395e2f8d83fbe0c627b2b696acce67868793d7d9750e90e39592b3626691b7", - "sha256:b756072364347cb6aa5b60f9bc18e94b2f79632de3b0190253ad770c5df17db1", - "sha256:ba64dc2b3b7b158c6660d49cdb1d872d1d0bf4e42043ad8d5006099479a194e5", - "sha256:bed331fe18f58d844d39ceb398b77d6ac0b010d571cba8267c2e7165806b00ce", - "sha256:c188512b43542b1e91cadc3c6c915a82a5eb95929134faf7fd109f14f9892ce4", - "sha256:c21b9aa40e08e4f63a2f92ff3748e6b6c84d717d033c7b3438dd3123ee18f70e", - "sha256:ca713d4af15bae6e5d79b15c10c8522859a9a89d3b361a50b817c98c2fb402a2", - "sha256:cd4210baef299717db0a600d7a3cac81d46ef0e007f88c9335db79f8979c0d3d", - "sha256:cfe33efc9cb900a4c46f91a5ceba26d6df370ffddd9ca386eb1d4f0ad97b9ea9", - "sha256:d5cd3ab21acbdb414bb6c31958d7b06b85eeb40f66463c264a9b343a4e238642", - "sha256:dfbac4c2dfcc082fcf8d942d1e49b6aa0766c19d3358bd86e2000bf0fa4a9cf0", - "sha256:e235688f42b36be2b6b06fc37ac2126a73b75fb8d6bc66dd632aa35286238703", - "sha256:eb82dbba47a8318e75f679690190c10a5e1f447fbf9df41cbc4c3afd726d88cb", - "sha256:ebb86518203e12e96af765ee89034a1dbb0c3c65052d1b0c19bbbd6af8a145e1", - "sha256:ee78feb9d293c323b59a6f2dd441b63339a30edf35abcb51187d2fc26e696d13", - "sha256:eedab4c310c0299961ac285591acd53dc6723a1ebd90a57207c71f6e0c2153ab", - "sha256:efa568b885bca461f7c7b9e032655c0c143d305bf01c30caf6db2854a4532b38", - "sha256:efce6ae830831ab6a22b9b4091d411698145cb9b8fc869e1397ccf4b4b6455cb", - "sha256:f163d2fd041c630fed01bc48d28c3ed4a3b003c00acd396900e11ee5316b56bb", - "sha256:f20380df709d91525e4bee04746ba612a4df0972c1b8f8e1e8af997e678c7b81", - "sha256:f30f1928162e189091cf4d9da2eac617bfe78ef907a761614ff577ef4edfb3c8", - "sha256:f470c92737afa7d4c3aacc001e335062d582053d4dbe73cda126f2d7031068dd", - "sha256:ff8bf625fe85e119553b5383ba0fb6aa3d0ec2ae980295aaefa552374926b3f4" + "sha256:007df07a6e3eb3e33e9a1fe6a9db7af152bbd8a185f9aaa6ece10a3529e3e1c6", + "sha256:008eb8b31b3ea6896da16c38c1b136cb9fec9e249e77f6211d479db79a4eaf01", + "sha256:09163bdf0b2907454042edb19f887c6d33806adc71fbd54afc14908bfdc22251", + "sha256:0c7c1b47859ee2cac3846fde1c1dc0f15da6cec5a0e5c72d101e0f83dcb67ff9", + "sha256:0e5c8764c7829343d919cc2dfc587a8db01c4f70a4ebbc49abde5d4b158b007b", + "sha256:10ff5faaa22786315ef57097a279b833ecab1a0bfb07d604c9cbb1c4cdc2ed87", + "sha256:17ae5cd0f333f94f2e03aaf140bb762c64783935cc764ff9c82dff626089bebf", + "sha256:19488c57c12d4e8095a922f328df3f179c820c212940a498623ed39160bc3c2f", + "sha256:1a0848b52815006ea6596c395f87449f693dc419061cc21e970f139d466dc0a0", + "sha256:1e78fb68cf9c1a6aa4a9a12e960a5c9dfbdb89b3695197aa7064705662515de2", + "sha256:261b9f5d17cac914531331ff1b1d452125bf5daa05faf73b71d935485b0c510b", + "sha256:2b8bcf994563466db019fab287ff390fffbfdb4f905fc77bc1c1d604b1c689cc", + "sha256:38461d02d66de17455072c9ba981d35f1d2a73024bee7790ac2f9e361ef1cd0c", + "sha256:490132667476f6781b4c9458298b0c1cddf237488abd228b0b3650e5ecba7467", + "sha256:491e014f5c43656da08958808588cc6c016847b4360e327a62cb308c791bd2d9", + "sha256:515e1abc578dd3b275d6a5114030b1330ba044ffba03f94091842852f806f1c1", + "sha256:556de4430ce324c836789fa4560ca62d1591d2538b8ceb0b4f68fb7b2384a27a", + "sha256:5833593c25ac59ede40ed4de6d67eb42928cca97f26feea219f21d0ed0959b79", + "sha256:6221d84d463fb110bdd7619b69cb43878a11d51cbb9394ae3105d082d5199167", + "sha256:6918d49b1f90821e93069682c06ffde41829c346c66b721e65a5c62b4bab0300", + "sha256:6c38721585f285203e4b4132a352eb3daa19121a035f3182e08e437cface44bf", + "sha256:71932b597f9895f011f47f17d6428252fc728ba2ae6024e13c3398a087c2cdea", + "sha256:7211ef110a9194b6042449431e08c4d80c0481e5891e58d429df5899690511c2", + "sha256:764226ceef3125e53ea2cb275000e309c0aa5464d43bd72abd661e27fffc26ab", + "sha256:7645a8e814a3ee34a89c4a372011dcd817964ce8cb273c8ed6119d706e9613e3", + "sha256:76d4711f6f6d08551a7e9ef28c722f4a50dd0fc204c56b4bcd95c6cc05ce6fbb", + "sha256:7f4f399d28478d1f604c2ff9119907af9726aed73680e5ed1ca634d377abb087", + "sha256:88f7bc0fcca81f985f78dd0fa68d2c75abf8272b1f5c323ea4a01a4d7a614efc", + "sha256:8d0edd6b1c7fb94922bf569c9b092ee187a83f03fb1a63076e7774b60f9481a8", + "sha256:901289d524fdd571be1c7be054f48b1f88ce8dddcbdf1ec698b27d4b8b9e5d62", + "sha256:93ea75c050c5bb3d98016b4ba2497851eadf0ac154d88a67d7a6816206f6fa7f", + "sha256:981b9ab5a0a3178ff413bca62526bb784249421c24ad7381e39d67981be2c326", + "sha256:9ac08e601308e41eb533f232dbf6b7e4cea762f9f84f6357136eed926c15d12c", + "sha256:a02eb8ab2b8f200179b5f62b59757685ae9987996ae549ccf30f983f40602431", + "sha256:a0c6da9aee33ff0b1a451e867da0c1f47408112b3391dd43133838339e410963", + "sha256:a6c8097e01886188e5be3e6b14e94ab365f384736aa1fca6a0b9e35bd4a30bc7", + "sha256:aa384489fefeb62321b238e64c07ef48398fe80f9e1e6afeff22e140e0850eef", + "sha256:ad2a9eb6d9839ae241701d0918f54c51365a51407fd80f6b8289e2dfca977cc3", + "sha256:b206646d176a007466358aa21d85cd8600a415c67c9bd15403336c331a10d956", + "sha256:b826d97e4276750beca7c8f0f1a4938892697a6bcd8ec8217b3312dad6982781", + "sha256:b89ac9768b82205936771f8d2eb3ce88503b1556324c9f903e7156669f521472", + "sha256:bd7bd3b3830247580de99c99ea2a01416dfc3c34471ca1298bccabf86d0ff4dc", + "sha256:bdf1847068c362f16b353163391210269e4f0569a3c166bc6a9f74ccbfc7e839", + "sha256:c11b0746f5d946fecf750428a95f3e9ebe792c1ee3b1e96eeba145dc631a9672", + "sha256:c5374b80521d3d3f2ec5572e05adc94601985cc526fb276d0c8574a6d749f1b3", + "sha256:ca265542ca427bf97aed183c1676e2a9c66942e822b14dc6e5f42e038f92a503", + "sha256:ce31ae3e19f3c902de379cf1323d90c649425b86de7bbdf82871b8a2a0615f3d", + "sha256:ceb6ec0a10c65540421e20ebd29083c50e6d1143278746a4ef6bcf6153171eb8", + "sha256:d081f13b095d74b67d550de04df1c756831f3b83dc9881c38985834387487f1b", + "sha256:d5655a942f5f5d2c9ed93d72148226d75369b4f6952680211972a33e59b1dfdc", + "sha256:d5a32087d720c608f42caed0ef36d2b3ea61a9d09ee59a5142d6070da9041b8f", + "sha256:d6484756b12f40003c6128bfcc3fa9f0d49a687e171186c2d85ec82e3758c559", + "sha256:dd65632acaf0d47608190a71bfe46b209719bf2beb59507db08ccdbe712f969b", + "sha256:de343e75f40e972bae1ef6090267f8260c1446a1695e77096db6cfa25e759a95", + "sha256:e29cda763f752553fa14c68fb2195150bfab22b352572cb36c43c47bedba70eb", + "sha256:e41f3de4df3e80de75845d3e743b3f1c4c8613c3997a912dbf0229fc61a8b963", + "sha256:e66d2a64d44d50d2543405fb183a21f76b3b5fd16f130f5c99187c3fb4e64919", + "sha256:e74b0506fa5aa5598ac6a975a12aa8928cbb58e1f5ac8360792ef15de1aa848f", + "sha256:f0ed05f5079c708fe74bf9027e95125334b6978bf07fd5ab923e9e55e5fbb9d3", + "sha256:f61e2dc5ad442c52b4887f1fdc112f97caeff4d9e6ebe78879364ac59f1663e1", + "sha256:fec520865f42e5c7f050c2a79038897b1c7d1595e907a9e08e3353293ffc948e" ], - "markers": "python_version >= '3.7'", - "version": "==1.3.3" + "markers": "python_version >= '3.8'", + "version": "==1.4.0" }, "fsspec": { "hashes": [ @@ -376,11 +364,11 @@ }, "importlib-metadata": { "hashes": [ - "sha256:43ce9281e097583d758c2c708c4376371261a02c34682491a8e98352365aad20", - "sha256:ff80f3b5394912eb1b108fcfd444dc78b7f1f3e16b16188054bd01cb9cb86f09" + "sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb", + "sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743" ], "markers": "python_version < '3.9'", - "version": "==6.1.0" + "version": "==6.8.0" }, "jmespath": { "hashes": [ @@ -536,26 +524,31 @@ "sha256:fcdf84ba3ed8124eb7234adfbb8792f311991cbf8aed1cad4b1b1a7ee08380c1" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==0.56.4" }, "numcodecs": { "hashes": [ - "sha256:0c240858bf29e0ff254b1db60430e8b2658b8c8328b684f80033289d94807a7c", - "sha256:0fabc7dfdf64a9555bf8a34911e05b415793c67a1377207dc79cd96342291fa1", - "sha256:11596b71267417425ea8afb407477a67d684f434c8b07b1dd59c25a97d5c3ccb", - "sha256:32697785b786bb0039d3feeaabdc10f25eda6c149700cde954653aaa47637832", - "sha256:694dc2e80b1f169b7deb14bdd0a04b20e5f17ef32cb0f81b71ab690406ec6bd9", - "sha256:6c058b321de84a1729299b0eae4d652b2e48ea1ca7f9df0da65cb13470e635eb", - "sha256:7dae3f5678f247336c84e7315a0c59a4fec7c33eb7db72d78ff5c776479a812e", - "sha256:8c2f36b21162c6ebccc05d3fe896f86b91dcf8709946809f730cc23a37f8234d", - "sha256:bd05cdb853c7bcfde2efc809a9df2c5e205b96f70405b810e5788b45d0d81f73", - "sha256:bf3925eeb37aed0e6c04d7fb9614133a3c8426dc77f8bda54c99c601a44b3bd3", - "sha256:c0bc116752be45b4f9dca4315e5a2b4185e3b46f68c997dbb84aef334ceb5a1d", - "sha256:c27dfca402f69fbfa01c46fb572086e77f38121192160cc8ed1177dc30702c52", - "sha256:ee5bda16e9d26a7a39fc20b6c1cec23b4debc314df5cfae3ed505149c2eeafc4" + "sha256:01f5457c0c81a556812240a2318c6022ca5c6f66fe2a51f619bdf8b0c855b5f2", + "sha256:0c1f679b148bfdc9341686814485d03ad652ea551a90debadbbf9da3fb4cc003", + "sha256:182458355f5cad297575f9a16e804fe345c22c7a1b796ee9a0a8bce5a9f66c60", + "sha256:1fe66c7a2b016e772a60dc8d68479958ae8c9ce306bcc318ee3d2ca883930e94", + "sha256:3a265db9177bd4a19939651b68722b72044bc92bb0b646e2a0d55835c0acb9d5", + "sha256:3b5a0be940093d81eb49b0adba62615d3b973174d8167dbd63cc6d392e157bf6", + "sha256:488ba767d956f8dbf794c4c30df1983a385f048a4f1bc670dd0761b8fe7fd7a3", + "sha256:6388e5f4e94d18a7165fbd1c9d3637673b74157cff8bc644005f9e2a4c717d6e", + "sha256:68b3a18a93a96cba0a1d367ae76c02a74f29f93790e1c8b0423eacc4ce5d421a", + "sha256:98c2cedb3d6dd1238b033657da0b710689a9600813bfece28fd7c158328c0d4d", + "sha256:98dbc61366e2974a1bdc28e08ed790c74d39c9cb40ce3f487ae6e6a76da843dd", + "sha256:aa78ffc79a94aa78234821639c253219d8a26455f020c760ad1b331144363849", + "sha256:bd746cd6e7af4925bd2d3e902b5027147d71590cdc8e9e2ad999014fc2405c3b", + "sha256:e03960dd507e00bc102ff4ca2f14fa40b0cfc2ba7279752d31558d0787431a53", + "sha256:e9fc2f2abcb09c301c8e1db16e4d5dc9faf93be8c46d88ac3974e023f0a3533b", + "sha256:eae479f65b75af0e75a20049bf83beff154c4662a233695b4f7848d5eee0ef2d", + "sha256:f16787a674d1badd55f827b01bbc62b3ef2adecbed59a7db7139a328f0744e4a" ], "markers": "python_version >= '3.8'", - "version": "==0.11.0" + "version": "==0.12.0" }, "numpy": { "hashes": [ @@ -583,6 +576,7 @@ "sha256:f71d57cc8645f14816ae249407d309be250ad8de93ef61d9709b45a0ddf4050c" ], "index": "pypi", + "markers": "python_version >= '3.8'", "version": "==1.22.0" }, "pillow": { @@ -666,48 +660,129 @@ "sha256:fb5c1ad6bad98c57482236a21bf985ab0ef42bd51f7ad4e4538e89a997624e12" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==9.4.0" }, "pydantic": { "hashes": [ - "sha256:085ca1de245782e9b46cefcf99deecc67d418737a1fd3f6a4f511344b613a5b3", - "sha256:086254884d10d3ba16da0588604ffdc5aab3f7f09557b998373e885c690dd398", - "sha256:0b6037175234850ffd094ca77bf60fb54b08b5b22bc85865331dd3bda7a02fa1", - "sha256:0fe476769acaa7fcddd17cadd172b156b53546ec3614a4d880e5d29ea5fbce65", - "sha256:1d5278bd9f0eee04a44c712982343103bba63507480bfd2fc2790fa70cd64cf4", - "sha256:2cc6a4cb8a118ffec2ca5fcb47afbacb4f16d0ab8b7350ddea5e8ef7bcc53a16", - "sha256:2ee7e3209db1e468341ef41fe263eb655f67f5c5a76c924044314e139a1103a2", - "sha256:3011b975c973819883842c5ab925a4e4298dffccf7782c55ec3580ed17dc464c", - "sha256:3c3b035103bd4e2e4a28da9da7ef2fa47b00ee4a9cf4f1a735214c1bcd05e0f6", - "sha256:4c68c3bc88dbda2a6805e9a142ce84782d3930f8fdd9655430d8576315ad97ce", - "sha256:574936363cd4b9eed8acdd6b80d0143162f2eb654d96cb3a8ee91d3e64bf4cf9", - "sha256:5a79330f8571faf71bf93667d3ee054609816f10a259a109a0738dac983b23c3", - "sha256:5e48ef4a8b8c066c4a31409d91d7ca372a774d0212da2787c0d32f8045b1e034", - "sha256:6c5b77947b9e85a54848343928b597b4f74fc364b70926b3c4441ff52620640c", - "sha256:742645059757a56ecd886faf4ed2441b9c0cd406079c2b4bee51bcc3fbcd510a", - "sha256:7bdfdadb5994b44bd5579cfa7c9b0e1b0e540c952d56f627eb227851cda9db77", - "sha256:815ddebb2792efd4bba5488bc8fde09c29e8ca3227d27cf1c6990fc830fd292b", - "sha256:8b5ac0f1c83d31b324e57a273da59197c83d1bb18171e512908fe5dc7278a1d6", - "sha256:96f240bce182ca7fe045c76bcebfa0b0534a1bf402ed05914a6f1dadff91877f", - "sha256:a733965f1a2b4090a5238d40d983dcd78f3ecea221c7af1497b845a9709c1721", - "sha256:ab624700dc145aa809e6f3ec93fb8e7d0f99d9023b713f6a953637429b437d37", - "sha256:b2571db88c636d862b35090ccf92bf24004393f85c8870a37f42d9f23d13e032", - "sha256:bbbc94d0c94dd80b3340fc4f04fd4d701f4b038ebad72c39693c794fd3bc2d9d", - "sha256:c0727bda6e38144d464daec31dff936a82917f431d9c39c39c60a26567eae3ed", - "sha256:c556695b699f648c58373b542534308922c46a1cda06ea47bc9ca45ef5b39ae6", - "sha256:c86229333cabaaa8c51cf971496f10318c4734cf7b641f08af0a6fbf17ca3054", - "sha256:c8d7da6f1c1049eefb718d43d99ad73100c958a5367d30b9321b092771e96c25", - "sha256:c8e9dcf1ac499679aceedac7e7ca6d8641f0193c591a2d090282aaf8e9445a46", - "sha256:cb23bcc093697cdea2708baae4f9ba0e972960a835af22560f6ae4e7e47d33f5", - "sha256:d1e4c28f30e767fd07f2ddc6f74f41f034d1dd6bc526cd59e63a82fe8bb9ef4c", - "sha256:d9c9bdb3af48e242838f9f6e6127de9be7063aad17b32215ccc36a09c5cf1070", - "sha256:dee5ef83a76ac31ab0c78c10bd7d5437bfdb6358c95b91f1ba7ff7b76f9996a1", - "sha256:e0896200b6a40197405af18828da49f067c2fa1f821491bc8f5bde241ef3f7d7", - "sha256:f5a64b64ddf4c99fe201ac2724daada8595ada0d102ab96d019c1555c2d6441d", - "sha256:f947352c3434e8b937e3aa8f96f47bdfe6d92779e44bb3f41e4c213ba6a32145" + "sha256:94f336138093a5d7f426aac732dcfe7ab4eb4da243c88f891d65deb4a2556ee7", + "sha256:bc3ddf669d234f4220e6e1c4d96b061abe0998185a8d7855c0126782b7abc8c1" ], "index": "pypi", - "version": "==1.9.0" + "markers": "python_version >= '3.7'", + "version": "==2.4.2" + }, + "pydantic-core": { + "hashes": [ + "sha256:042462d8d6ba707fd3ce9649e7bf268633a41018d6a998fb5fbacb7e928a183e", + "sha256:0523aeb76e03f753b58be33b26540880bac5aa54422e4462404c432230543f33", + "sha256:05560ab976012bf40f25d5225a58bfa649bb897b87192a36c6fef1ab132540d7", + "sha256:0675ba5d22de54d07bccde38997e780044dcfa9a71aac9fd7d4d7a1d2e3e65f7", + "sha256:073d4a470b195d2b2245d0343569aac7e979d3a0dcce6c7d2af6d8a920ad0bea", + "sha256:07ec6d7d929ae9c68f716195ce15e745b3e8fa122fc67698ac6498d802ed0fa4", + "sha256:0880e239827b4b5b3e2ce05e6b766a7414e5f5aedc4523be6b68cfbc7f61c5d0", + "sha256:0c27f38dc4fbf07b358b2bc90edf35e82d1703e22ff2efa4af4ad5de1b3833e7", + "sha256:0d8a8adef23d86d8eceed3e32e9cca8879c7481c183f84ed1a8edc7df073af94", + "sha256:0e2a35baa428181cb2270a15864ec6286822d3576f2ed0f4cd7f0c1708472aff", + "sha256:0f8682dbdd2f67f8e1edddcbffcc29f60a6182b4901c367fc8c1c40d30bb0a82", + "sha256:0fa467fd300a6f046bdb248d40cd015b21b7576c168a6bb20aa22e595c8ffcdd", + "sha256:128552af70a64660f21cb0eb4876cbdadf1a1f9d5de820fed6421fa8de07c893", + "sha256:1396e81b83516b9d5c9e26a924fa69164156c148c717131f54f586485ac3c15e", + "sha256:149b8a07712f45b332faee1a2258d8ef1fb4a36f88c0c17cb687f205c5dc6e7d", + "sha256:14ac492c686defc8e6133e3a2d9eaf5261b3df26b8ae97450c1647286750b901", + "sha256:14cfbb00959259e15d684505263d5a21732b31248a5dd4941f73a3be233865b9", + "sha256:14e09ff0b8fe6e46b93d36a878f6e4a3a98ba5303c76bb8e716f4878a3bee92c", + "sha256:154ea7c52e32dce13065dbb20a4a6f0cc012b4f667ac90d648d36b12007fa9f7", + "sha256:15d6bca84ffc966cc9976b09a18cf9543ed4d4ecbd97e7086f9ce9327ea48891", + "sha256:1d40f55222b233e98e3921df7811c27567f0e1a4411b93d4c5c0f4ce131bc42f", + "sha256:25bd966103890ccfa028841a8f30cebcf5875eeac8c4bde4fe221364c92f0c9a", + "sha256:2cf5bb4dd67f20f3bbc1209ef572a259027c49e5ff694fa56bed62959b41e1f9", + "sha256:2e0e2959ef5d5b8dc9ef21e1a305a21a36e254e6a34432d00c72a92fdc5ecda5", + "sha256:320f14bd4542a04ab23747ff2c8a778bde727158b606e2661349557f0770711e", + "sha256:3625578b6010c65964d177626fde80cf60d7f2e297d56b925cb5cdeda6e9925a", + "sha256:39215d809470f4c8d1881758575b2abfb80174a9e8daf8f33b1d4379357e417c", + "sha256:3f0ac9fb8608dbc6eaf17956bf623c9119b4db7dbb511650910a82e261e6600f", + "sha256:417243bf599ba1f1fef2bb8c543ceb918676954734e2dcb82bf162ae9d7bd514", + "sha256:420a692b547736a8d8703c39ea935ab5d8f0d2573f8f123b0a294e49a73f214b", + "sha256:443fed67d33aa85357464f297e3d26e570267d1af6fef1c21ca50921d2976302", + "sha256:48525933fea744a3e7464c19bfede85df4aba79ce90c60b94d8b6e1eddd67096", + "sha256:485a91abe3a07c3a8d1e082ba29254eea3e2bb13cbbd4351ea4e5a21912cc9b0", + "sha256:4a5be350f922430997f240d25f8219f93b0c81e15f7b30b868b2fddfc2d05f27", + "sha256:4d966c47f9dd73c2d32a809d2be529112d509321c5310ebf54076812e6ecd884", + "sha256:524ff0ca3baea164d6d93a32c58ac79eca9f6cf713586fdc0adb66a8cdeab96a", + "sha256:53df009d1e1ba40f696f8995683e067e3967101d4bb4ea6f667931b7d4a01357", + "sha256:5994985da903d0b8a08e4935c46ed8daf5be1cf217489e673910951dc533d430", + "sha256:5cabb9710f09d5d2e9e2748c3e3e20d991a4c5f96ed8f1132518f54ab2967221", + "sha256:5fdb39f67c779b183b0c853cd6b45f7db84b84e0571b3ef1c89cdb1dfc367325", + "sha256:600d04a7b342363058b9190d4e929a8e2e715c5682a70cc37d5ded1e0dd370b4", + "sha256:631cb7415225954fdcc2a024119101946793e5923f6c4d73a5914d27eb3d3a05", + "sha256:63974d168b6233b4ed6a0046296803cb13c56637a7b8106564ab575926572a55", + "sha256:64322bfa13e44c6c30c518729ef08fda6026b96d5c0be724b3c4ae4da939f875", + "sha256:655f8f4c8d6a5963c9a0687793da37b9b681d9ad06f29438a3b2326d4e6b7970", + "sha256:6835451b57c1b467b95ffb03a38bb75b52fb4dc2762bb1d9dbed8de31ea7d0fc", + "sha256:6db2eb9654a85ada248afa5a6db5ff1cf0f7b16043a6b070adc4a5be68c716d6", + "sha256:7c4d1894fe112b0864c1fa75dffa045720a194b227bed12f4be7f6045b25209f", + "sha256:7eb037106f5c6b3b0b864ad226b0b7ab58157124161d48e4b30c4a43fef8bc4b", + "sha256:8282bab177a9a3081fd3d0a0175a07a1e2bfb7fcbbd949519ea0980f8a07144d", + "sha256:82f55187a5bebae7d81d35b1e9aaea5e169d44819789837cdd4720d768c55d15", + "sha256:8572cadbf4cfa95fb4187775b5ade2eaa93511f07947b38f4cd67cf10783b118", + "sha256:8cdbbd92154db2fec4ec973d45c565e767ddc20aa6dbaf50142676484cbff8ee", + "sha256:8f6e6aed5818c264412ac0598b581a002a9f050cb2637a84979859e70197aa9e", + "sha256:92f675fefa977625105708492850bcbc1182bfc3e997f8eecb866d1927c98ae6", + "sha256:962ed72424bf1f72334e2f1e61b68f16c0e596f024ca7ac5daf229f7c26e4208", + "sha256:9badf8d45171d92387410b04639d73811b785b5161ecadabf056ea14d62d4ede", + "sha256:9c120c9ce3b163b985a3b966bb701114beb1da4b0468b9b236fc754783d85aa3", + "sha256:9f6f3e2598604956480f6c8aa24a3384dbf6509fe995d97f6ca6103bb8c2534e", + "sha256:a1254357f7e4c82e77c348dabf2d55f1d14d19d91ff025004775e70a6ef40ada", + "sha256:a1392e0638af203cee360495fd2cfdd6054711f2db5175b6e9c3c461b76f5175", + "sha256:a1c311fd06ab3b10805abb72109f01a134019739bd3286b8ae1bc2fc4e50c07a", + "sha256:a5cb87bdc2e5f620693148b5f8f842d293cae46c5f15a1b1bf7ceeed324a740c", + "sha256:a7a7902bf75779bc12ccfc508bfb7a4c47063f748ea3de87135d433a4cca7a2f", + "sha256:aad7bd686363d1ce4ee930ad39f14e1673248373f4a9d74d2b9554f06199fb58", + "sha256:aafdb89fdeb5fe165043896817eccd6434aee124d5ee9b354f92cd574ba5e78f", + "sha256:ae8a8843b11dc0b03b57b52793e391f0122e740de3df1474814c700d2622950a", + "sha256:b00bc4619f60c853556b35f83731bd817f989cba3e97dc792bb8c97941b8053a", + "sha256:b1f22a9ab44de5f082216270552aa54259db20189e68fc12484873d926426921", + "sha256:b3c01c2fb081fced3bbb3da78510693dc7121bb893a1f0f5f4b48013201f362e", + "sha256:b3dcd587b69bbf54fc04ca157c2323b8911033e827fffaecf0cafa5a892a0904", + "sha256:b4a6db486ac8e99ae696e09efc8b2b9fea67b63c8f88ba7a1a16c24a057a0776", + "sha256:bec7dd208a4182e99c5b6c501ce0b1f49de2802448d4056091f8e630b28e9a52", + "sha256:c0877239307b7e69d025b73774e88e86ce82f6ba6adf98f41069d5b0b78bd1bf", + "sha256:caa48fc31fc7243e50188197b5f0c4228956f97b954f76da157aae7f67269ae8", + "sha256:cfe1090245c078720d250d19cb05d67e21a9cd7c257698ef139bc41cf6c27b4f", + "sha256:d43002441932f9a9ea5d6f9efaa2e21458221a3a4b417a14027a1d530201ef1b", + "sha256:d64728ee14e667ba27c66314b7d880b8eeb050e58ffc5fec3b7a109f8cddbd63", + "sha256:d6495008733c7521a89422d7a68efa0a0122c99a5861f06020ef5b1f51f9ba7c", + "sha256:d8f1ebca515a03e5654f88411420fea6380fc841d1bea08effb28184e3d4899f", + "sha256:d99277877daf2efe074eae6338453a4ed54a2d93fb4678ddfe1209a0c93a2468", + "sha256:da01bec0a26befab4898ed83b362993c844b9a607a86add78604186297eb047e", + "sha256:db9a28c063c7c00844ae42a80203eb6d2d6bbb97070cfa00194dff40e6f545ab", + "sha256:dda81e5ec82485155a19d9624cfcca9be88a405e2857354e5b089c2a982144b2", + "sha256:e357571bb0efd65fd55f18db0a2fb0ed89d0bb1d41d906b138f088933ae618bb", + "sha256:e544246b859f17373bed915182ab841b80849ed9cf23f1f07b73b7c58baee5fb", + "sha256:e562617a45b5a9da5be4abe72b971d4f00bf8555eb29bb91ec2ef2be348cd132", + "sha256:e570ffeb2170e116a5b17e83f19911020ac79d19c96f320cbfa1fa96b470185b", + "sha256:e6f31a17acede6a8cd1ae2d123ce04d8cca74056c9d456075f4f6f85de055607", + "sha256:e9121b4009339b0f751955baf4543a0bfd6bc3f8188f8056b1a25a2d45099934", + "sha256:ebedb45b9feb7258fac0a268a3f6bec0a2ea4d9558f3d6f813f02ff3a6dc6698", + "sha256:ecaac27da855b8d73f92123e5f03612b04c5632fd0a476e469dfc47cd37d6b2e", + "sha256:ecdbde46235f3d560b18be0cb706c8e8ad1b965e5c13bbba7450c86064e96561", + "sha256:ed550ed05540c03f0e69e6d74ad58d026de61b9eaebebbaaf8873e585cbb18de", + "sha256:eeb3d3d6b399ffe55f9a04e09e635554012f1980696d6b0aca3e6cf42a17a03b", + "sha256:ef337945bbd76cce390d1b2496ccf9f90b1c1242a3a7bc242ca4a9fc5993427a", + "sha256:f1365e032a477c1430cfe0cf2856679529a2331426f8081172c4a74186f1d595", + "sha256:f23b55eb5464468f9e0e9a9935ce3ed2a870608d5f534025cd5536bca25b1402", + "sha256:f2e9072d71c1f6cfc79a36d4484c82823c560e6f5599c43c1ca6b5cdbd54f881", + "sha256:f323306d0556351735b54acbf82904fe30a27b6a7147153cbe6e19aaaa2aa429", + "sha256:f36a3489d9e28fe4b67be9992a23029c3cec0babc3bd9afb39f49844a8c721c5", + "sha256:f64f82cc3443149292b32387086d02a6c7fb39b8781563e0ca7b8d7d9cf72bd7", + "sha256:f6defd966ca3b187ec6c366604e9296f585021d922e666b99c47e78738b5666c", + "sha256:f7c2b8eb9fc872e68b46eeaf835e86bccc3a58ba57d0eedc109cbb14177be531", + "sha256:fa7db7558607afeccb33c0e4bf1c9a9a835e26599e76af6fe2fcea45904083a6", + "sha256:fcb83175cc4936a5425dde3356f079ae03c0802bbdf8ff82c035f8a54b333521" + ], + "markers": "python_version >= '3.7'", + "version": "==2.10.1" }, "python-dateutil": { "hashes": [ @@ -723,6 +798,7 @@ "sha256:a5de49a31e953b45ff2d2fd434bbc2670e8db5273606c1e737cc6b93eff3655f" ], "index": "pypi", + "markers": "python_version >= '3.5'", "version": "==0.19.2" }, "requests": { @@ -731,6 +807,7 @@ "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d" ], "index": "pypi", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", "version": "==2.27.1" }, "s3fs": { @@ -739,6 +816,7 @@ "sha256:6bafc1f6b4e935ea59512c0f38d5cb9c299dbbfe738e40c3d1de8f67b4ee1fd4" ], "index": "pypi", + "markers": "python_version >= '3.6'", "version": "==2022.1.0" }, "scipy": { @@ -774,15 +852,16 @@ "sha256:f99d206db1f1ae735a8192ab93bd6028f3a42f6fa08467d37a14eb96c9dd34a3" ], "index": "pypi", + "markers": "python_version < '3.11' and python_version >= '3.7'", "version": "==1.7.3" }, "setuptools": { "hashes": [ - "sha256:2ee892cd5f29f3373097f5a814697e397cf3ce313616df0af11231e2ad118077", - "sha256:b78aaa36f6b90a074c1fa651168723acbf45d14cb1196b6f02c0fd07f17623b2" + "sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87", + "sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a" ], - "markers": "python_version >= '3.7'", - "version": "==67.6.0" + "markers": "python_version >= '3.8'", + "version": "==68.2.2" }, "six": { "hashes": [ @@ -794,19 +873,19 @@ }, "typing-extensions": { "hashes": [ - "sha256:5cb5f4a79139d699607b3ef622a1dedafa84e115ab0024e0d9c044a9479ca7cb", - "sha256:fb33085c39dd998ac16d1431ebc293a8b3eedd00fd4a32de0ff79002c19511b4" + "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0", + "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef" ], - "markers": "python_version >= '3.7'", - "version": "==4.5.0" + "markers": "python_version >= '3.8'", + "version": "==4.8.0" }, "urllib3": { "hashes": [ - "sha256:8a388717b9476f934a21484e8c8e61875ab60644d29b9b39e11e4b9dc1c6b305", - "sha256:aa751d169e23c7479ce47a0cb0da579e3ede798f994f5816a74e4f4500dcea42" + "sha256:24d6a242c28d29af46c3fae832c36db3bbebcc533dd1bb549172cd739c82df21", + "sha256:94a757d178c9be92ef5539b8840d48dc9cf1b2709c9d6b588232a055c524458b" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", - "version": "==1.26.15" + "version": "==1.26.17" }, "wrapt": { "hashes": [ @@ -891,83 +970,83 @@ }, "yarl": { "hashes": [ - "sha256:009a028127e0a1755c38b03244c0bea9d5565630db9c4cf9572496e947137a87", - "sha256:0414fd91ce0b763d4eadb4456795b307a71524dbacd015c657bb2a39db2eab89", - "sha256:0978f29222e649c351b173da2b9b4665ad1feb8d1daa9d971eb90df08702668a", - "sha256:0ef8fb25e52663a1c85d608f6dd72e19bd390e2ecaf29c17fb08f730226e3a08", - "sha256:10b08293cda921157f1e7c2790999d903b3fd28cd5c208cf8826b3b508026996", - "sha256:1684a9bd9077e922300ecd48003ddae7a7474e0412bea38d4631443a91d61077", - "sha256:1b372aad2b5f81db66ee7ec085cbad72c4da660d994e8e590c997e9b01e44901", - "sha256:1e21fb44e1eff06dd6ef971d4bdc611807d6bd3691223d9c01a18cec3677939e", - "sha256:2305517e332a862ef75be8fad3606ea10108662bc6fe08509d5ca99503ac2aee", - "sha256:24ad1d10c9db1953291f56b5fe76203977f1ed05f82d09ec97acb623a7976574", - "sha256:272b4f1599f1b621bf2aabe4e5b54f39a933971f4e7c9aa311d6d7dc06965165", - "sha256:2a1fca9588f360036242f379bfea2b8b44cae2721859b1c56d033adfd5893634", - "sha256:2b4fa2606adf392051d990c3b3877d768771adc3faf2e117b9de7eb977741229", - "sha256:3150078118f62371375e1e69b13b48288e44f6691c1069340081c3fd12c94d5b", - "sha256:326dd1d3caf910cd26a26ccbfb84c03b608ba32499b5d6eeb09252c920bcbe4f", - "sha256:34c09b43bd538bf6c4b891ecce94b6fa4f1f10663a8d4ca589a079a5018f6ed7", - "sha256:388a45dc77198b2460eac0aca1efd6a7c09e976ee768b0d5109173e521a19daf", - "sha256:3adeef150d528ded2a8e734ebf9ae2e658f4c49bf413f5f157a470e17a4a2e89", - "sha256:3edac5d74bb3209c418805bda77f973117836e1de7c000e9755e572c1f7850d0", - "sha256:3f6b4aca43b602ba0f1459de647af954769919c4714706be36af670a5f44c9c1", - "sha256:3fc056e35fa6fba63248d93ff6e672c096f95f7836938241ebc8260e062832fe", - "sha256:418857f837347e8aaef682679f41e36c24250097f9e2f315d39bae3a99a34cbf", - "sha256:42430ff511571940d51e75cf42f1e4dbdded477e71c1b7a17f4da76c1da8ea76", - "sha256:44ceac0450e648de86da8e42674f9b7077d763ea80c8ceb9d1c3e41f0f0a9951", - "sha256:47d49ac96156f0928f002e2424299b2c91d9db73e08c4cd6742923a086f1c863", - "sha256:48dd18adcf98ea9cd721a25313aef49d70d413a999d7d89df44f469edfb38a06", - "sha256:49d43402c6e3013ad0978602bf6bf5328535c48d192304b91b97a3c6790b1562", - "sha256:4d04acba75c72e6eb90745447d69f84e6c9056390f7a9724605ca9c56b4afcc6", - "sha256:57a7c87927a468e5a1dc60c17caf9597161d66457a34273ab1760219953f7f4c", - "sha256:58a3c13d1c3005dbbac5c9f0d3210b60220a65a999b1833aa46bd6677c69b08e", - "sha256:5df5e3d04101c1e5c3b1d69710b0574171cc02fddc4b23d1b2813e75f35a30b1", - "sha256:63243b21c6e28ec2375f932a10ce7eda65139b5b854c0f6b82ed945ba526bff3", - "sha256:64dd68a92cab699a233641f5929a40f02a4ede8c009068ca8aa1fe87b8c20ae3", - "sha256:6604711362f2dbf7160df21c416f81fac0de6dbcf0b5445a2ef25478ecc4c778", - "sha256:6c4fcfa71e2c6a3cb568cf81aadc12768b9995323186a10827beccf5fa23d4f8", - "sha256:6d88056a04860a98341a0cf53e950e3ac9f4e51d1b6f61a53b0609df342cc8b2", - "sha256:705227dccbe96ab02c7cb2c43e1228e2826e7ead880bb19ec94ef279e9555b5b", - "sha256:728be34f70a190566d20aa13dc1f01dc44b6aa74580e10a3fb159691bc76909d", - "sha256:74dece2bfc60f0f70907c34b857ee98f2c6dd0f75185db133770cd67300d505f", - "sha256:75c16b2a900b3536dfc7014905a128a2bea8fb01f9ee26d2d7d8db0a08e7cb2c", - "sha256:77e913b846a6b9c5f767b14dc1e759e5aff05502fe73079f6f4176359d832581", - "sha256:7a66c506ec67eb3159eea5096acd05f5e788ceec7b96087d30c7d2865a243918", - "sha256:8c46d3d89902c393a1d1e243ac847e0442d0196bbd81aecc94fcebbc2fd5857c", - "sha256:93202666046d9edadfe9f2e7bf5e0782ea0d497b6d63da322e541665d65a044e", - "sha256:97209cc91189b48e7cfe777237c04af8e7cc51eb369004e061809bcdf4e55220", - "sha256:a48f4f7fea9a51098b02209d90297ac324241bf37ff6be6d2b0149ab2bd51b37", - "sha256:a783cd344113cb88c5ff7ca32f1f16532a6f2142185147822187913eb989f739", - "sha256:ae0eec05ab49e91a78700761777f284c2df119376e391db42c38ab46fd662b77", - "sha256:ae4d7ff1049f36accde9e1ef7301912a751e5bae0a9d142459646114c70ecba6", - "sha256:b05df9ea7496df11b710081bd90ecc3a3db6adb4fee36f6a411e7bc91a18aa42", - "sha256:baf211dcad448a87a0d9047dc8282d7de59473ade7d7fdf22150b1d23859f946", - "sha256:bb81f753c815f6b8e2ddd2eef3c855cf7da193b82396ac013c661aaa6cc6b0a5", - "sha256:bcd7bb1e5c45274af9a1dd7494d3c52b2be5e6bd8d7e49c612705fd45420b12d", - "sha256:bf071f797aec5b96abfc735ab97da9fd8f8768b43ce2abd85356a3127909d146", - "sha256:c15163b6125db87c8f53c98baa5e785782078fbd2dbeaa04c6141935eb6dab7a", - "sha256:cb6d48d80a41f68de41212f3dfd1a9d9898d7841c8f7ce6696cf2fd9cb57ef83", - "sha256:ceff9722e0df2e0a9e8a79c610842004fa54e5b309fe6d218e47cd52f791d7ef", - "sha256:cfa2bbca929aa742b5084fd4663dd4b87c191c844326fcb21c3afd2d11497f80", - "sha256:d617c241c8c3ad5c4e78a08429fa49e4b04bedfc507b34b4d8dceb83b4af3588", - "sha256:d881d152ae0007809c2c02e22aa534e702f12071e6b285e90945aa3c376463c5", - "sha256:da65c3f263729e47351261351b8679c6429151ef9649bba08ef2528ff2c423b2", - "sha256:de986979bbd87272fe557e0a8fcb66fd40ae2ddfe28a8b1ce4eae22681728fef", - "sha256:df60a94d332158b444301c7f569659c926168e4d4aad2cfbf4bce0e8fb8be826", - "sha256:dfef7350ee369197106805e193d420b75467b6cceac646ea5ed3049fcc950a05", - "sha256:e59399dda559688461762800d7fb34d9e8a6a7444fd76ec33220a926c8be1516", - "sha256:e6f3515aafe0209dd17fb9bdd3b4e892963370b3de781f53e1746a521fb39fc0", - "sha256:e7fd20d6576c10306dea2d6a5765f46f0ac5d6f53436217913e952d19237efc4", - "sha256:ebb78745273e51b9832ef90c0898501006670d6e059f2cdb0e999494eb1450c2", - "sha256:efff27bd8cbe1f9bd127e7894942ccc20c857aa8b5a0327874f30201e5ce83d0", - "sha256:f37db05c6051eff17bc832914fe46869f8849de5b92dc4a3466cd63095d23dfd", - "sha256:f8ca8ad414c85bbc50f49c0a106f951613dfa5f948ab69c10ce9b128d368baf8", - "sha256:fb742dcdd5eec9f26b61224c23baea46c9055cf16f62475e11b9b15dfd5c117b", - "sha256:fc77086ce244453e074e445104f0ecb27530d6fd3a46698e33f6c38951d5a0f1", - "sha256:ff205b58dc2929191f68162633d5e10e8044398d7a45265f90a0f1d51f85f72c" + "sha256:04ab9d4b9f587c06d801c2abfe9317b77cdf996c65a90d5e84ecc45010823571", + "sha256:066c163aec9d3d073dc9ffe5dd3ad05069bcb03fcaab8d221290ba99f9f69ee3", + "sha256:13414591ff516e04fcdee8dc051c13fd3db13b673c7a4cb1350e6b2ad9639ad3", + "sha256:149ddea5abf329752ea5051b61bd6c1d979e13fbf122d3a1f9f0c8be6cb6f63c", + "sha256:159d81f22d7a43e6eabc36d7194cb53f2f15f498dbbfa8edc8a3239350f59fe7", + "sha256:1b1bba902cba32cdec51fca038fd53f8beee88b77efc373968d1ed021024cc04", + "sha256:22a94666751778629f1ec4280b08eb11815783c63f52092a5953faf73be24191", + "sha256:2a96c19c52ff442a808c105901d0bdfd2e28575b3d5f82e2f5fd67e20dc5f4ea", + "sha256:2b0738fb871812722a0ac2154be1f049c6223b9f6f22eec352996b69775b36d4", + "sha256:2c315df3293cd521033533d242d15eab26583360b58f7ee5d9565f15fee1bef4", + "sha256:32f1d071b3f362c80f1a7d322bfd7b2d11e33d2adf395cc1dd4df36c9c243095", + "sha256:3458a24e4ea3fd8930e934c129b676c27452e4ebda80fbe47b56d8c6c7a63a9e", + "sha256:38a3928ae37558bc1b559f67410df446d1fbfa87318b124bf5032c31e3447b74", + "sha256:3da8a678ca8b96c8606bbb8bfacd99a12ad5dd288bc6f7979baddd62f71c63ef", + "sha256:494053246b119b041960ddcd20fd76224149cfea8ed8777b687358727911dd33", + "sha256:50f33040f3836e912ed16d212f6cc1efb3231a8a60526a407aeb66c1c1956dde", + "sha256:52a25809fcbecfc63ac9ba0c0fb586f90837f5425edfd1ec9f3372b119585e45", + "sha256:53338749febd28935d55b41bf0bcc79d634881195a39f6b2f767870b72514caf", + "sha256:5415d5a4b080dc9612b1b63cba008db84e908b95848369aa1da3686ae27b6d2b", + "sha256:5610f80cf43b6202e2c33ba3ec2ee0a2884f8f423c8f4f62906731d876ef4fac", + "sha256:566185e8ebc0898b11f8026447eacd02e46226716229cea8db37496c8cdd26e0", + "sha256:56ff08ab5df8429901ebdc5d15941b59f6253393cb5da07b4170beefcf1b2528", + "sha256:59723a029760079b7d991a401386390c4be5bfec1e7dd83e25a6a0881859e716", + "sha256:5fcd436ea16fee7d4207c045b1e340020e58a2597301cfbcfdbe5abd2356c2fb", + "sha256:61016e7d582bc46a5378ffdd02cd0314fb8ba52f40f9cf4d9a5e7dbef88dee18", + "sha256:63c48f6cef34e6319a74c727376e95626f84ea091f92c0250a98e53e62c77c72", + "sha256:646d663eb2232d7909e6601f1a9107e66f9791f290a1b3dc7057818fe44fc2b6", + "sha256:662e6016409828ee910f5d9602a2729a8a57d74b163c89a837de3fea050c7582", + "sha256:674ca19cbee4a82c9f54e0d1eee28116e63bc6fd1e96c43031d11cbab8b2afd5", + "sha256:6a5883464143ab3ae9ba68daae8e7c5c95b969462bbe42e2464d60e7e2698368", + "sha256:6e7221580dc1db478464cfeef9b03b95c5852cc22894e418562997df0d074ccc", + "sha256:75df5ef94c3fdc393c6b19d80e6ef1ecc9ae2f4263c09cacb178d871c02a5ba9", + "sha256:783185c75c12a017cc345015ea359cc801c3b29a2966c2655cd12b233bf5a2be", + "sha256:822b30a0f22e588b32d3120f6d41e4ed021806418b4c9f0bc3048b8c8cb3f92a", + "sha256:8288d7cd28f8119b07dd49b7230d6b4562f9b61ee9a4ab02221060d21136be80", + "sha256:82aa6264b36c50acfb2424ad5ca537a2060ab6de158a5bd2a72a032cc75b9eb8", + "sha256:832b7e711027c114d79dffb92576acd1bd2decc467dec60e1cac96912602d0e6", + "sha256:838162460b3a08987546e881a2bfa573960bb559dfa739e7800ceeec92e64417", + "sha256:83fcc480d7549ccebe9415d96d9263e2d4226798c37ebd18c930fce43dfb9574", + "sha256:84e0b1599334b1e1478db01b756e55937d4614f8654311eb26012091be109d59", + "sha256:891c0e3ec5ec881541f6c5113d8df0315ce5440e244a716b95f2525b7b9f3608", + "sha256:8c2ad583743d16ddbdf6bb14b5cd76bf43b0d0006e918809d5d4ddf7bde8dd82", + "sha256:8c56986609b057b4839968ba901944af91b8e92f1725d1a2d77cbac6972b9ed1", + "sha256:8ea48e0a2f931064469bdabca50c2f578b565fc446f302a79ba6cc0ee7f384d3", + "sha256:8ec53a0ea2a80c5cd1ab397925f94bff59222aa3cf9c6da938ce05c9ec20428d", + "sha256:95d2ecefbcf4e744ea952d073c6922e72ee650ffc79028eb1e320e732898d7e8", + "sha256:9b3152f2f5677b997ae6c804b73da05a39daa6a9e85a512e0e6823d81cdad7cc", + "sha256:9bf345c3a4f5ba7f766430f97f9cc1320786f19584acc7086491f45524a551ac", + "sha256:a60347f234c2212a9f0361955007fcf4033a75bf600a33c88a0a8e91af77c0e8", + "sha256:a74dcbfe780e62f4b5a062714576f16c2f3493a0394e555ab141bf0d746bb955", + "sha256:a83503934c6273806aed765035716216cc9ab4e0364f7f066227e1aaea90b8d0", + "sha256:ac9bb4c5ce3975aeac288cfcb5061ce60e0d14d92209e780c93954076c7c4367", + "sha256:aff634b15beff8902d1f918012fc2a42e0dbae6f469fce134c8a0dc51ca423bb", + "sha256:b03917871bf859a81ccb180c9a2e6c1e04d2f6a51d953e6a5cdd70c93d4e5a2a", + "sha256:b124e2a6d223b65ba8768d5706d103280914d61f5cae3afbc50fc3dfcc016623", + "sha256:b25322201585c69abc7b0e89e72790469f7dad90d26754717f3310bfe30331c2", + "sha256:b7232f8dfbd225d57340e441d8caf8652a6acd06b389ea2d3222b8bc89cbfca6", + "sha256:b8cc1863402472f16c600e3e93d542b7e7542a540f95c30afd472e8e549fc3f7", + "sha256:b9a4e67ad7b646cd6f0938c7ebfd60e481b7410f574c560e455e938d2da8e0f4", + "sha256:be6b3fdec5c62f2a67cb3f8c6dbf56bbf3f61c0f046f84645cd1ca73532ea051", + "sha256:bf74d08542c3a9ea97bb8f343d4fcbd4d8f91bba5ec9d5d7f792dbe727f88938", + "sha256:c027a6e96ef77d401d8d5a5c8d6bc478e8042f1e448272e8d9752cb0aff8b5c8", + "sha256:c0c77533b5ed4bcc38e943178ccae29b9bcf48ffd1063f5821192f23a1bd27b9", + "sha256:c1012fa63eb6c032f3ce5d2171c267992ae0c00b9e164efe4d73db818465fac3", + "sha256:c3a53ba34a636a256d767c086ceb111358876e1fb6b50dfc4d3f4951d40133d5", + "sha256:d4e2c6d555e77b37288eaf45b8f60f0737c9efa3452c6c44626a5455aeb250b9", + "sha256:de119f56f3c5f0e2fb4dee508531a32b069a5f2c6e827b272d1e0ff5ac040333", + "sha256:e65610c5792870d45d7b68c677681376fcf9cc1c289f23e8e8b39c1485384185", + "sha256:e9fdc7ac0d42bc3ea78818557fab03af6181e076a2944f43c38684b4b6bed8e3", + "sha256:ee4afac41415d52d53a9833ebae7e32b344be72835bbb589018c9e938045a560", + "sha256:f364d3480bffd3aa566e886587eaca7c8c04d74f6e8933f3f2c996b7f09bee1b", + "sha256:f3b078dbe227f79be488ffcfc7a9edb3409d018e0952cf13f15fd6512847f3f7", + "sha256:f4e2d08f07a3d7d3e12549052eb5ad3eab1c349c53ac51c209a0e5991bbada78", + "sha256:f7a3d8146575e08c29ed1cd287068e6d02f1c7bdff8970db96683b9591b86ee7" ], "markers": "python_version >= '3.7'", - "version": "==1.8.2" + "version": "==1.9.2" }, "zarr": { "hashes": [ @@ -975,80 +1054,79 @@ "sha256:76932665c2146ebdf15f6dba254f9e0030552fbfcf9322dea822bff96fbce693" ], "index": "pypi", + "markers": "python_version >= '3.7' and python_version < '4'", "version": "==2.10.3" }, "zipp": { "hashes": [ - "sha256:112929ad649da941c23de50f356a2b5570c954b65150642bccdd66bf194d224b", - "sha256:48904fc76a60e542af151aded95726c1a5c34ed43ab4134b597665c86d7ad556" + "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31", + "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0" ], - "markers": "python_version >= '3.7'", - "version": "==3.15.0" + "markers": "python_version >= '3.8'", + "version": "==3.17.0" } }, "develop": { "black": { "hashes": [ - "sha256:064101748afa12ad2291c2b91c960be28b817c0c7eaa35bec09cc63aa56493c5", - "sha256:0945e13506be58bf7db93ee5853243eb368ace1c08a24c65ce108986eac65915", - "sha256:11c410f71b876f961d1de77b9699ad19f939094c3a677323f43d7a29855fe326", - "sha256:1c7b8d606e728a41ea1ccbd7264677e494e87cf630e399262ced92d4a8dac940", - "sha256:1d06691f1eb8de91cd1b322f21e3bfc9efe0c7ca1f0e1eb1db44ea367dff656b", - "sha256:3238f2aacf827d18d26db07524e44741233ae09a584273aa059066d644ca7b30", - "sha256:32daa9783106c28815d05b724238e30718f34155653d4d6e125dc7daec8e260c", - "sha256:35d1381d7a22cc5b2be2f72c7dfdae4072a3336060635718cc7e1ede24221d6c", - "sha256:3a150542a204124ed00683f0db1f5cf1c2aaaa9cc3495b7a3b5976fb136090ab", - "sha256:48f9d345675bb7fbc3dd85821b12487e1b9a75242028adad0333ce36ed2a6d27", - "sha256:50cb33cac881766a5cd9913e10ff75b1e8eb71babf4c7104f2e9c52da1fb7de2", - "sha256:562bd3a70495facf56814293149e51aa1be9931567474993c7942ff7d3533961", - "sha256:67de8d0c209eb5b330cce2469503de11bca4085880d62f1628bd9972cc3366b9", - "sha256:6b39abdfb402002b8a7d030ccc85cf5afff64ee90fa4c5aebc531e3ad0175ddb", - "sha256:6f3c333ea1dd6771b2d3777482429864f8e258899f6ff05826c3a4fcc5ce3f70", - "sha256:714290490c18fb0126baa0fca0a54ee795f7502b44177e1ce7624ba1c00f2331", - "sha256:7c3eb7cea23904399866c55826b31c1f55bbcd3890ce22ff70466b907b6775c2", - "sha256:92c543f6854c28a3c7f39f4d9b7694f9a6eb9d3c5e2ece488c327b6e7ea9b266", - "sha256:a6f6886c9869d4daae2d1715ce34a19bbc4b95006d20ed785ca00fa03cba312d", - "sha256:a8a968125d0a6a404842fa1bf0b349a568634f856aa08ffaff40ae0dfa52e7c6", - "sha256:c7ab5790333c448903c4b721b59c0d80b11fe5e9803d8703e84dcb8da56fec1b", - "sha256:e114420bf26b90d4b9daa597351337762b63039752bdf72bf361364c1aa05925", - "sha256:e198cf27888ad6f4ff331ca1c48ffc038848ea9f031a3b40ba36aced7e22f2c8", - "sha256:ec751418022185b0c1bb7d7736e6933d40bbb14c14a0abcf9123d1b159f98dd4", - "sha256:f0bd2f4a58d6666500542b26354978218a9babcdc972722f4bf90779524515f3" + "sha256:031e8c69f3d3b09e1aa471a926a1eeb0b9071f80b17689a655f7885ac9325a6f", + "sha256:13a2e4a93bb8ca74a749b6974925c27219bb3df4d42fc45e948a5d9feb5122b7", + "sha256:13ef033794029b85dfea8032c9d3b92b42b526f1ff4bf13b2182ce4e917f5100", + "sha256:14f04c990259576acd093871e7e9b14918eb28f1866f91968ff5524293f9c573", + "sha256:24b6b3ff5c6d9ea08a8888f6977eae858e1f340d7260cf56d70a49823236b62d", + "sha256:403397c033adbc45c2bd41747da1f7fc7eaa44efbee256b53842470d4ac5a70f", + "sha256:50254ebfa56aa46a9fdd5d651f9637485068a1adf42270148cd101cdf56e0ad9", + "sha256:538efb451cd50f43aba394e9ec7ad55a37598faae3348d723b59ea8e91616300", + "sha256:638619a559280de0c2aa4d76f504891c9860bb8fa214267358f0a20f27c12948", + "sha256:6a3b50e4b93f43b34a9d3ef00d9b6728b4a722c997c99ab09102fd5efdb88325", + "sha256:6ccd59584cc834b6d127628713e4b6b968e5f79572da66284532525a042549f9", + "sha256:75a2dc41b183d4872d3a500d2b9c9016e67ed95738a3624f4751a0cb4818fe71", + "sha256:7d30ec46de88091e4316b17ae58bbbfc12b2de05e069030f6b747dfc649ad186", + "sha256:8431445bf62d2a914b541da7ab3e2b4f3bc052d2ccbf157ebad18ea126efb91f", + "sha256:8fc1ddcf83f996247505db6b715294eba56ea9372e107fd54963c7553f2b6dfe", + "sha256:a732b82747235e0542c03bf352c126052c0fbc458d8a239a94701175b17d4855", + "sha256:adc3e4442eef57f99b5590b245a328aad19c99552e0bdc7f0b04db6656debd80", + "sha256:c46767e8df1b7beefb0899c4a95fb43058fa8500b6db144f4ff3ca38eb2f6393", + "sha256:c619f063c2d68f19b2d7270f4cf3192cb81c9ec5bc5ba02df91471d0b88c4c5c", + "sha256:cf3a4d00e4cdb6734b64bf23cd4341421e8953615cba6b3670453737a72ec204", + "sha256:cf99f3de8b3273a8317681d8194ea222f10e0133a24a7548c73ce44ea1679377", + "sha256:d6bc09188020c9ac2555a498949401ab35bb6bf76d4e0f8ee251694664df6301" ], "index": "pypi", - "version": "==23.3.0" + "markers": "python_version >= '3.8'", + "version": "==23.9.1" }, "cachetools": { "hashes": [ - "sha256:13dfddc7b8df938c21a940dfa6557ce6e94a2f1cdfa58eb90c805721d58f2c14", - "sha256:429e1a1e845c008ea6c85aa35d4b98b65d6a9763eeef3e37e92728a12d1de9d4" + "sha256:95ef631eeaea14ba2e36f06437f36463aac3a096799e876ee55e5cdccb102590", + "sha256:dce83f2d9b4e1f732a8cd44af8e8fab2dbe46201467fc98b3ef8f269092bf62b" ], - "markers": "python_version ~= '3.7'", - "version": "==5.3.0" + "markers": "python_version >= '3.7'", + "version": "==5.3.1" }, "cfgv": { "hashes": [ - "sha256:c6a0883f3917a037485059700b9e75da2464e6c27051014ad85ba6aaa5884426", - "sha256:f5a830efb9ce7a445376bb66ec94c638a9787422f96264c98edc6bdeed8ab736" + "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9", + "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560" ], - "markers": "python_full_version >= '3.6.1'", - "version": "==3.3.1" + "markers": "python_version >= '3.8'", + "version": "==3.4.0" }, "chardet": { "hashes": [ - "sha256:0d62712b956bc154f85fb0a266e2a3c5913c2967e00348701b32411d6def31e5", - "sha256:362777fb014af596ad31334fde1e8c327dfdb076e1960d1694662d46a6917ab9" + "sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7", + "sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970" ], "markers": "python_version >= '3.7'", - "version": "==5.1.0" + "version": "==5.2.0" }, "click": { "hashes": [ - "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e", - "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48" + "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28", + "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de" ], "markers": "python_version >= '3.7'", - "version": "==8.1.3" + "version": "==8.1.7" }, "colorama": { "hashes": [ @@ -1060,34 +1138,35 @@ }, "distlib": { "hashes": [ - "sha256:14bad2d9b04d3a36127ac97f30b12a19268f211063d8f8ee4f47108896e11b46", - "sha256:f35c4b692542ca110de7ef0bea44d73981caeb34ca0b9b6b2e6d7790dda8f80e" + "sha256:2e24928bc811348f0feb63014e97aaae3037f2cf48712d51ae61df7fd6075057", + "sha256:9dafe54b34a028eafd95039d5e5d4851a13734540f1331060d31c9916e7147a8" ], - "version": "==0.3.6" + "version": "==0.3.7" }, "filelock": { "hashes": [ - "sha256:3618c0da67adcc0506b015fd11ef7faf1b493f0b40d87728e19986b536890c37", - "sha256:f08a52314748335c6460fc8fe40cd5638b85001225db78c2aa01c8c0db83b318" + "sha256:08c21d87ded6e2b9da6728c3dff51baf1dcecf973b768ef35bcbc3447edb9ad4", + "sha256:2e6f249f1f3654291606e046b09f1fd5eac39b360664c27f5aad072012f8bcbd" ], - "markers": "python_version >= '3.7'", - "version": "==3.11.0" + "markers": "python_version >= '3.8'", + "version": "==3.12.4" }, "flake8": { "hashes": [ - "sha256:3833794e27ff64ea4e9cf5d410082a8b97ff1a06c16aa3d2027339cd0f1195c7", - "sha256:c61007e76655af75e6785a931f452915b371dc48f56efd765247c8fe68f2b181" + "sha256:d5b3857f07c030bdb5bf41c7f53799571d75c4491748a3adcd47de929e34cd23", + "sha256:ffdfce58ea94c6580c77888a86506937f9a1a227dfcd15f245d694ae20a6b6e5" ], "index": "pypi", - "version": "==6.0.0" + "markers": "python_full_version >= '3.8.1'", + "version": "==6.1.0" }, "identify": { "hashes": [ - "sha256:f0faad595a4687053669c112004178149f6c326db71ee999ae4636685753ad2f", - "sha256:f7a93d6cf98e29bd07663c60728e7a4057615068d7a639d132dc883b2d54d31e" + "sha256:afe67f26ae29bab007ec21b03d4114f41316ab9dd15aa8736a167481e108da54", + "sha256:f302a4256a15c849b91cfcdcec052a8ce914634b2f77ae87dad29cd749f2d88d" ], - "markers": "python_version >= '3.7'", - "version": "==2.5.22" + "markers": "python_version >= '3.8'", + "version": "==2.5.30" }, "isort": { "hashes": [ @@ -1095,6 +1174,7 @@ "sha256:f84c2818376e66cf843d497486ea8fed8700b340f308f076c6fb1229dff318b6" ], "index": "pypi", + "markers": "python_full_version >= '3.8.0'", "version": "==5.12.0" }, "mccabe": { @@ -1107,35 +1187,37 @@ }, "mypy": { "hashes": [ - "sha256:023fe9e618182ca6317ae89833ba422c411469156b690fde6a315ad10695a521", - "sha256:031fc69c9a7e12bcc5660b74122ed84b3f1c505e762cc4296884096c6d8ee140", - "sha256:2de7babe398cb7a85ac7f1fd5c42f396c215ab3eff731b4d761d68d0f6a80f48", - "sha256:2e93a8a553e0394b26c4ca683923b85a69f7ccdc0139e6acd1354cc884fe0128", - "sha256:390bc685ec209ada4e9d35068ac6988c60160b2b703072d2850457b62499e336", - "sha256:3a2d219775a120581a0ae8ca392b31f238d452729adbcb6892fa89688cb8306a", - "sha256:3efde4af6f2d3ccf58ae825495dbb8d74abd6d176ee686ce2ab19bd025273f41", - "sha256:4a99fe1768925e4a139aace8f3fb66db3576ee1c30b9c0f70f744ead7e329c9f", - "sha256:4b41412df69ec06ab141808d12e0bf2823717b1c363bd77b4c0820feaa37249e", - "sha256:4c8d8c6b80aa4a1689f2a179d31d86ae1367ea4a12855cc13aa3ba24bb36b2d8", - "sha256:4d19f1a239d59f10fdc31263d48b7937c585810288376671eaf75380b074f238", - "sha256:4e4a682b3f2489d218751981639cffc4e281d548f9d517addfd5a2917ac78119", - "sha256:695c45cea7e8abb6f088a34a6034b1d273122e5530aeebb9c09626cea6dca4cb", - "sha256:701189408b460a2ff42b984e6bd45c3f41f0ac9f5f58b8873bbedc511900086d", - "sha256:70894c5345bea98321a2fe84df35f43ee7bb0feec117a71420c60459fc3e1eed", - "sha256:8293a216e902ac12779eb7a08f2bc39ec6c878d7c6025aa59464e0c4c16f7eb9", - "sha256:8d26b513225ffd3eacece727f4387bdce6469192ef029ca9dd469940158bc89e", - "sha256:a197ad3a774f8e74f21e428f0de7f60ad26a8d23437b69638aac2764d1e06a6a", - "sha256:bea55fc25b96c53affab852ad94bf111a3083bc1d8b0c76a61dd101d8a388cf5", - "sha256:c9a084bce1061e55cdc0493a2ad890375af359c766b8ac311ac8120d3a472950", - "sha256:d0e9464a0af6715852267bf29c9553e4555b61f5904a4fc538547a4d67617937", - "sha256:d8e9187bfcd5ffedbe87403195e1fc340189a68463903c39e2b63307c9fa0394", - "sha256:eaeaa0888b7f3ccb7bcd40b50497ca30923dba14f385bde4af78fac713d6d6f6", - "sha256:f46af8d162f3d470d8ffc997aaf7a269996d205f9d746124a179d3abe05ac602", - "sha256:f70a40410d774ae23fcb4afbbeca652905a04de7948eaf0b1789c8d1426b72d1", - "sha256:fe91be1c51c90e2afe6827601ca14353bbf3953f343c2129fa1e247d55fd95ba" + "sha256:091f53ff88cb093dcc33c29eee522c087a438df65eb92acd371161c1f4380ff0", + "sha256:1a69db3018b87b3e6e9dd28970f983ea6c933800c9edf8c503c3135b3274d5ad", + "sha256:24f3de8b9e7021cd794ad9dfbf2e9fe3f069ff5e28cb57af6f873ffec1cb0425", + "sha256:31eba8a7a71f0071f55227a8057468b8d2eb5bf578c8502c7f01abaec8141b2f", + "sha256:3c8835a07b8442da900db47ccfda76c92c69c3a575872a5b764332c4bacb5a0a", + "sha256:3df87094028e52766b0a59a3e46481bb98b27986ed6ded6a6cc35ecc75bb9182", + "sha256:49499cf1e464f533fc45be54d20a6351a312f96ae7892d8e9f1708140e27ce41", + "sha256:4c192445899c69f07874dabda7e931b0cc811ea055bf82c1ababf358b9b2a72c", + "sha256:4f3d27537abde1be6d5f2c96c29a454da333a2a271ae7d5bc7110e6d4b7beb3f", + "sha256:7469545380dddce5719e3656b80bdfbb217cfe8dbb1438532d6abc754b828fed", + "sha256:7807a2a61e636af9ca247ba8494031fb060a0a744b9fee7de3a54bed8a753323", + "sha256:856bad61ebc7d21dbc019b719e98303dc6256cec6dcc9ebb0b214b81d6901bd8", + "sha256:89513ddfda06b5c8ebd64f026d20a61ef264e89125dc82633f3c34eeb50e7d60", + "sha256:8e0db37ac4ebb2fee7702767dfc1b773c7365731c22787cb99f507285014fcaf", + "sha256:971104bcb180e4fed0d7bd85504c9036346ab44b7416c75dd93b5c8c6bb7e28f", + "sha256:9e1589ca150a51d9d00bb839bfeca2f7a04f32cd62fad87a847bc0818e15d7dc", + "sha256:9f8464ed410ada641c29f5de3e6716cbdd4f460b31cf755b2af52f2d5ea79ead", + "sha256:ab98b8f6fdf669711f3abe83a745f67f50e3cbaea3998b90e8608d2b459fd566", + "sha256:b19006055dde8a5425baa5f3b57a19fa79df621606540493e5e893500148c72f", + "sha256:c69051274762cccd13498b568ed2430f8d22baa4b179911ad0c1577d336ed849", + "sha256:d2dad072e01764823d4b2f06bc7365bb1d4b6c2f38c4d42fade3c8d45b0b4b67", + "sha256:dccd850a2e3863891871c9e16c54c742dba5470f5120ffed8152956e9e0a5e13", + "sha256:e28d7b221898c401494f3b77db3bac78a03ad0a0fff29a950317d87885c655d2", + "sha256:e4b7a99275a61aa22256bab5839c35fe8a6887781862471df82afb4b445daae6", + "sha256:eb7ff4007865833c470a601498ba30462b7374342580e2346bf7884557e40531", + "sha256:f8598307150b5722854f035d2e70a1ad9cc3c72d392c34fffd8c66d888c90f17", + "sha256:fea451a3125bf0bfe716e5d7ad4b92033c471e4b5b3e154c67525539d14dc15a" ], "index": "pypi", - "version": "==1.2.0" + "markers": "python_version >= '3.8'", + "version": "==1.6.0" }, "mypy-extensions": { "hashes": [ @@ -1147,129 +1229,140 @@ }, "nodeenv": { "hashes": [ - "sha256:27083a7b96a25f2f5e1d8cb4b6317ee8aeda3bdd121394e5ac54e498028a042e", - "sha256:e0e7f7dfb85fc5394c6fe1e8fa98131a2473e04311a45afb6508f7cf1836fa2b" + "sha256:d51e0c37e64fbf47d017feac3145cdbb58836d7eee8c6f6d3b6880c5456227d2", + "sha256:df865724bb3c3adc86b3876fa209771517b0cfe596beff01a92700e0e8be4cec" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6'", - "version": "==1.7.0" + "version": "==1.8.0" }, "packaging": { "hashes": [ - "sha256:714ac14496c3e68c99c29b00845f7a2b85f3bb6f1078fd9f72fd20f0570002b2", - "sha256:b6ad297f8907de0fa2fe1ccbd26fdaf387f5f47c7275fedf8cce89f99446cf97" + "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5", + "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7" ], "markers": "python_version >= '3.7'", - "version": "==23.0" + "version": "==23.2" }, "pathspec": { "hashes": [ - "sha256:2798de800fa92780e33acca925945e9a19a133b715067cf165b8866c15a31687", - "sha256:d8af70af76652554bd134c22b3e8a1cc46ed7d91edcdd721ef1a0c51a84a5293" + "sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20", + "sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3" ], "markers": "python_version >= '3.7'", - "version": "==0.11.1" + "version": "==0.11.2" }, "platformdirs": { "hashes": [ - "sha256:d5b638ca397f25f979350ff789db335903d7ea010ab28903f57b27e1b16c2b08", - "sha256:ebe11c0d7a805086e99506aa331612429a72ca7cd52a1f0d277dc4adc20cb10e" + "sha256:cf8ee52a3afdb965072dcc652433e0c7e3e40cf5ea1477cd4b3b1d2eb75495b3", + "sha256:e9d171d00af68be50e9202731309c4e658fd8bc76f55c11c7dd760d023bda68e" ], "markers": "python_version >= '3.7'", - "version": "==3.2.0" + "version": "==3.11.0" }, "pluggy": { "hashes": [ - "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159", - "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3" + "sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12", + "sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7" ], - "markers": "python_version >= '3.6'", - "version": "==1.0.0" + "markers": "python_version >= '3.8'", + "version": "==1.3.0" }, "pre-commit": { "hashes": [ - "sha256:0b4210aea813fe81144e87c5a291f09ea66f199f367fa1df41b55e1d26e1e2b4", - "sha256:5b808fcbda4afbccf6d6633a56663fed35b6c2bc08096fd3d47ce197ac351d9d" + "sha256:5804465c675b659b0862f07907f96295d490822a450c4c40e747d0b1c6ebcb32", + "sha256:841dc9aef25daba9a0238cd27984041fa0467b4199fc4852e27950664919f660" ], "index": "pypi", - "version": "==3.2.2" + "markers": "python_version >= '3.8'", + "version": "==3.5.0" }, "pycodestyle": { "hashes": [ - "sha256:347187bdb476329d98f695c213d7295a846d1152ff4fe9bacb8a9590b8ee7053", - "sha256:8a4eaf0d0495c7395bdab3589ac2db602797d76207242c17d470186815706610" + "sha256:41ba0e7afc9752dfb53ced5489e89f8186be00e599e712660695b7a75ff2663f", + "sha256:44fe31000b2d866f2e41841b18528a505fbd7fef9017b04eff4e2648a0fadc67" ], - "markers": "python_version >= '3.6'", - "version": "==2.10.0" + "markers": "python_version >= '3.8'", + "version": "==2.11.1" }, "pyflakes": { "hashes": [ - "sha256:ec55bf7fe21fff7f1ad2f7da62363d749e2a470500eab1b555334b67aa1ef8cf", - "sha256:ec8b276a6b60bd80defed25add7e439881c19e64850afd9b346283d4165fd0fd" + "sha256:4132f6d49cb4dae6819e5379898f2b8cce3c5f23994194c24b77d5da2e36f774", + "sha256:a0aae034c444db0071aa077972ba4768d40c830d9539fd45bf4cd3f8f6992efc" ], - "markers": "python_version >= '3.6'", - "version": "==3.0.1" + "markers": "python_version >= '3.8'", + "version": "==3.1.0" }, "pyproject-api": { "hashes": [ - "sha256:435f46547a9ff22cf4208ee274fca3e2869aeb062a4834adfc99a4dd64af3cf9", - "sha256:4698a3777c2e0f6b624f8a4599131e2a25376d90fe8d146d7ac74c67c6f97c43" + "sha256:1817dc018adc0d1ff9ca1ed8c60e1623d5aaca40814b953af14a9cf9a5cae538", + "sha256:4c0116d60476b0786c88692cf4e325a9814965e2469c5998b830bba16b183675" ], - "markers": "python_version >= '3.7'", - "version": "==1.5.1" + "markers": "python_version >= '3.8'", + "version": "==1.6.1" }, "pyyaml": { "hashes": [ - "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf", - "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293", - "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b", - "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57", - "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b", - "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4", - "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07", - "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba", - "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9", - "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287", - "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513", - "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0", - "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782", - "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0", - "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92", - "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f", - "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2", - "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc", - "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1", - "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c", - "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86", - "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4", - "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c", - "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34", - "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b", - "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d", - "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c", - "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb", - "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7", - "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737", - "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3", - "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d", - "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358", - "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53", - "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78", - "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803", - "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a", - "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f", - "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174", - "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5" + "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5", + "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc", + "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df", + "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741", + "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206", + "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27", + "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595", + "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62", + "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98", + "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696", + "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290", + "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9", + "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d", + "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6", + "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867", + "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47", + "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486", + "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6", + "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3", + "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007", + "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938", + "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0", + "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c", + "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735", + "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d", + "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28", + "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4", + "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba", + "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8", + "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5", + "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd", + "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3", + "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0", + "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515", + "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c", + "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c", + "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924", + "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34", + "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43", + "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859", + "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673", + "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54", + "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a", + "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b", + "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab", + "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa", + "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c", + "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585", + "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d", + "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f" ], "markers": "python_version >= '3.6'", - "version": "==6.0" + "version": "==6.0.1" }, "setuptools": { "hashes": [ - "sha256:257de92a9d50a60b8e22abfcbb771571fde0dbf3ec234463212027a4eeecbe9a", - "sha256:e728ca814a823bf7bf60162daf9db95b93d532948c4c0bea762ce62f60189078" + "sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87", + "sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a" ], - "markers": "python_version >= '3.7'", - "version": "==67.6.1" + "markers": "python_version >= '3.8'", + "version": "==68.2.2" }, "tomli": { "hashes": [ @@ -1281,27 +1374,28 @@ }, "tox": { "hashes": [ - "sha256:6fa4dbd933d0e335b5392c81e9cd467630119b3669705dbad47814a93b6c9586", - "sha256:cd88e41aef9c71f0ba02b6d7939f102760b192b63458fbe04dbbaed82f7bf5f5" + "sha256:5039f68276461fae6a9452a3b2c7295798f00a0e92edcd9a3b78ba1a73577951", + "sha256:599af5e5bb0cad0148ac1558a0b66f8fff219ef88363483b8d92a81e4246f28f" ], "index": "pypi", - "version": "==4.4.11" + "markers": "python_version >= '3.8'", + "version": "==4.11.3" }, "typing-extensions": { "hashes": [ - "sha256:5cb5f4a79139d699607b3ef622a1dedafa84e115ab0024e0d9c044a9479ca7cb", - "sha256:fb33085c39dd998ac16d1431ebc293a8b3eedd00fd4a32de0ff79002c19511b4" + "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0", + "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef" ], - "markers": "python_version >= '3.7'", - "version": "==4.5.0" + "markers": "python_version >= '3.8'", + "version": "==4.8.0" }, "virtualenv": { "hashes": [ - "sha256:31712f8f2a17bd06234fa97fdf19609e789dd4e3e4bf108c3da71d710651adbc", - "sha256:f50e3e60f990a0757c9b68333c9fdaa72d7188caa417f96af9e52407831a3b68" + "sha256:b80039f280f4919c77b30f1c23294ae357c4c8701042086e3fc005963e4e537b", + "sha256:e8361967f6da6fbdf1426483bfe9fca8287c242ac0bc30429905721cefbff752" ], "markers": "python_version >= '3.7'", - "version": "==20.21.0" + "version": "==20.24.5" } } } diff --git a/notebooks/vulnerability_onboarding/Wind/Table_A2_Impact_Function_Slope.csv b/notebooks/vulnerability_onboarding/Wind/Table_A2_Impact_Function_Slope.csv new file mode 100644 index 00000000..c6ff7ec6 --- /dev/null +++ b/notebooks/vulnerability_onboarding/Wind/Table_A2_Impact_Function_Slope.csv @@ -0,0 +1,12 @@ +region,nb_countries,nb_events,vhalf_a,vhalf_b,vhalf_c,rmsf_a,rmsf_b,rmsf_c,tdr_a,tdr_b,tdr_c +NA1,21,73,74.7,59.6,66.3,11.8,9.8,10.3,0.68,1.44,1 +NA2,2,43,74.7,86,89.2,9.5,8.7,8.7,2.11,1.16,1 +NI,6,31,74.7,58.7,70.8,7.8,6,7.2,0.85,2.03,1 +OC,11,48,74.7,49.7,64.1,22.5,14.7,17.7,0.6,2.31,1 +SI,2,19,74.7,46.8,52.4,20.1,8.6,9.1,0.2,1.8,1 +WP1,4,43,74.7,56.7,66.4,15.2,11.3,12.6,0.62,2.05,1 +WP2,1,83,74.7,84.7,188.4,38.2,36.7,104.9,25.89,16.44,1 +WP3,1,69,74.7,80.2,112.8,15.2,14.8,20.5,5.32,3.83,1 +WP4,5,64,74.7,135.6,190.5,73.8,35.9,43.8,35.56,3.35,1 +Combined,53,473,74.7,–,–,22.2,16.8,24.4,4.69,2.15,1 +Global calibration,53,473,74.7,73.4,110.1,22.2,22.2,33.1,4.69,4.84,1 \ No newline at end of file diff --git a/notebooks/vulnerability_onboarding/Wind/Table_S2_V_half_individual_fitting_per_event.csv b/notebooks/vulnerability_onboarding/Wind/Table_S2_V_half_individual_fitting_per_event.csv new file mode 100644 index 00000000..36399467 --- /dev/null +++ b/notebooks/vulnerability_onboarding/Wind/Table_S2_V_half_individual_fitting_per_event.csv @@ -0,0 +1,474 @@ +EM_ID,ibtracsID,v_half_fitted [m/s],country,country_id,region,year,Reported_Damage [USD],reference_year,Normalized_Reported_Damage [USD],Simulated_Damage [USD],log_ratio,unique_ID +1980-0036,1980081S12170,39.2,FJI,242,OC,1980,2256000,2014,8410828.037,8395962.204,-0.001769027,1980-0036FJI +1980-0080,1980214N11330,106.8,USA,840,NA2,1980,860000000,2014,5264166323,5256769039,-0.001406203,1980-0080USA +1980-0099,1980296N05165,58.4,PHL,608,WP2,1980,102300000,2014,897149786.7,897162024.7,1.36E-05,1980-0099PHL +1980-0133,1980126N08150,70.1,PHL,608,WP2,1980,289000,2014,2534470.072,2539189.469,0.001860353,1980-0133PHL +1981-0083,1981256N10150,37.6,PHL,608,WP2,1981,6700000,2014,53489704.34,53126575,-0.006811919,1981-0083PHL +1981-0101,1981319N07163,86.5,PHL,608,WP2,1981,35000000,2014,279423828.6,279356846.9,-0.000239743,1981-0101PHL +1981-0110,1981351S12060,25.8,MDG,450,SI,1981,250000000,2014,742274546.2,139581097.2,-1.671073409,1981-0110MDG +1981-0111,1981353S09172,147.1,NCL,540,OC,1981,200000,2014,551603.3058,552274.4408,0.001215959,1981-0111NCL +1981-0112,1981355N07149,106.6,PHL,608,WP2,1981,26000000,2014,207571987,207434161.8,-0.000664208,1981-0112PHL +1981-0134,1981176N08150,37.1,PHL,608,WP2,1981,7609000,2014,60746740.34,60552182.26,-0.003207914,1981-0134PHL +1981-0138,1981317N14153,325.7,PHL,608,WP2,1981,167000,2014,1333250.839,4690972.593,1.258019737,1981-0138PHL +1982-0034,1982058S10185,78.8,TON,776,OC,1982,21200000,2014,151622251.2,151685209.3,0.000415144,1982-0034TON +1982-0090,1982202N11165,169.7,JPN,392,WP4,1982,137000000,2014,585717153.3,585156603.8,-0.000957489,1982-0090JPN +1982-0093,1982227N09140,136.2,PHL,608,WP2,1982,6500000,2014,49805902.91,49825948.18,0.000402387,1982-0093PHL +1982-0105,1982262N12270,82.7,MEX,484,NA1,1982,82400000,2014,586753507.8,587911847.3,0.001972204,1982-0105MEX +1982-0120,1982309N11064,53,IND,356,NI,1982,625420000,2014,6353835704,6333077626,-0.003272363,1982-0120IND +1982-0124,1982324N10193,25.8,USA,840,NA2,1982,230000000,2014,1204787041,139213192.7,-2.158051582,1982-0124USA +1982-0174,1982190N09148,53,PHL,608,WP2,1982,4500000,2014,34481009.7,34508564.46,0.000798809,1982-0174PHL +1982-0176,1982325N08176,325.7,PHL,608,WP2,1982,5000,2014,38312.233,109565.7082,1.0507552,1982-0176PHL +1982-0255,1982095S11138,25.8,AUS,36,OC,1982,6864000,2014,51906694.26,24595091.36,-0.746900881,1982-0255AUS +1982-0313,1982150N13087,40.7,IND,356,NI,1982,120000000,2014,1219117208,1213968600,-0.00423217,1982-0313IND +1983-0047,1983054S15179,59.9,FJI,242,OC,1983,50000000,2014,199598757.6,200079843.9,0.002407367,1983-0047FJI +1983-0057,1983082S11180,25.8,FJI,242,OC,1983,851000,2014,3397170.854,3043079.372,-0.110073029,1983-0057FJI +1983-0071,1983097S10224,80.2,PYF,258,OC,1983,21000000,2014,54194671.27,54184495.54,-0.00018778,1983-0071PYF +1983-0110,1983228N27270,113.5,USA,840,NA2,1983,3000000000,2014,14448395154,14460245256,0.000819831,1983-0110USA +1983-0121,1983239N10183,247.1,HKG,344,WP4,1983,12544000,2014,122247467.4,122276578.6,0.000238105,1983-0121HKG +1983-0129,1983274N18089,33.8,IND,356,NI,1983,510000000,2014,4764703292,4789699613,0.005232431,1983-0129IND +1983-0157,1983339S10065,34.9,MDG,450,SI,1983,25000000,2014,75988123.11,76350597.6,0.004758805,1983-0157MDG +1984-0034,1984094S10080,25.8,MDG,450,SI,1984,250000000,2014,907770830.7,395535661.3,-0.830751007,1984-0034MDG +1984-0105,1984302N00149,54.4,PHL,608,WP2,1984,96600000,2014,875268514.8,874308890,-0.001096979,1984-0105PHL +1984-0110,1984314N09088,153.5,IND,356,NI,1984,35000000,2014,336397308.3,336760286.3,0.001078434,1984-0110IND +1985-0044,1985070S17175,99.3,FJI,242,OC,1985,3000000,2014,11785953.11,11773200.93,-0.001082567,1985-0044FJI +1985-0063,1985143N16088,73.8,BGD,50,NI,1985,50000000,2014,388010978.9,387689559.2,-0.000828721,1985-0063BGD +1985-0104,1985240N20286,91.5,USA,840,NA2,1985,1100000000,2014,4434115752,4434804314,0.000155275,1985-0104USA +1985-0111,1985260N13336,165,USA,840,NA2,1985,900000000,2014,3627912888,3625496587,-0.000666253,1985-0111USA +1985-0118,1985268N03161,37.7,KOR,410,WP4,1985,14000000,2014,197048615.5,198029017.5,0.004963096,1985-0118KOR +1985-0126,1985299N25270,72.9,USA,840,NA2,1985,1500000000,2014,6046521480,6044937215,-0.000262047,1985-0126USA +1985-0190,1985162N05154,31.9,PHL,608,WP2,1985,20000000,2014,185189963.4,183141092.2,-0.011125276,1985-0190PHL +1986-0029,1986027S13145,45.1,AUS,36,OC,1986,70000000,2014,563514152.7,565444119.6,0.003419026,1986-0029AUS +1986-0042,1986067S11080,53.3,MDG,450,SI,1986,150000000,2014,491370641.1,493215306.8,0.003747094,1986-0042MDG +1986-0065,1986135S07160,37.5,SLB,90,OC,1986,20000000,2014,111253691.9,110450052.8,-0.007249698,1986-0065SLB +1986-0081,1986179N11175,48.1,CHN,156,WP3,1986,380000000,2014,13244203233,13188900322,-0.004184374,1986-0081CHN +1986-0115,1986252N06153,290.1,TWN,158,WP4,1986,80000000,2014,542490477.3,542431362.6,-0.000108975,1986-0115TWN +1986-0143,1986356S07183,25.8,FJI,242,OC,1986,20000000,2014,69498014.25,13482626.58,-1.639896243,1986-0143FJI +1986-0152,1986276N07177,34.1,PHL,608,WP2,1986,36000000,2014,343006780.4,344811815.2,0.00524859,1986-0152PHL +1986-0153,1986343N05176,272.6,PHL,608,WP2,1986,4000000,2014,38111864.49,38099421.55,-0.000326538,1986-0153PHL +1987-0057,1987035S12160,48.9,VUT,548,OC,1987,25000000,2014,155722786.8,155650596.3,-0.000463691,1987-0057VUT +1987-0130,1987188N10151,99.5,KOR,410,WP4,1987,325000000,2014,3138801397,3134047295,-0.001515772,1987-0130KOR +1987-0159,1987245N15133,40.7,CHN,156,WP3,1987,120000000,2014,4608092264,4627134752,0.004123887,1987-0159CHN +1987-0164,1987263N10309,59.4,BMU,60,NA1,1987,50000000,2014,214952184.2,214688521.6,-0.001227363,1987-0164BMU +1987-0212,1987320N03171,170,PHL,608,WP2,1987,56000000,2014,480080890.5,479688254.9,-0.000818188,1987-0212PHL +1987-0239,1987219N08155,105.5,PHL,608,WP2,1987,5600000,2014,48008089.05,47999808.52,-0.000172497,1987-0239PHL +1987-0240,1987343N05154,82,PHL,608,WP2,1987,8500000,2014,72869420.88,72908124.38,0.000530994,1987-0240PHL +1988-0312,1988193N09149,35.6,PHL,608,WP2,1988,11516000,2014,86504877.06,86385597.87,-0.001379824,1988-0312PHL +1988-0430,1988253N12306,168.4,MEX,484,NA1,1988,76000000,2014,550112928,550213379.9,0.000182586,1988-0430MEX +1988-0481,1988285N09318,36.5,NIC,558,NA1,1988,400000000,2014,1806289799,1817479172,0.006175564,1988-0481NIC +1988-0506,1988308N09140,42.9,PHL,608,WP2,1988,149060000,2014,1119695812,1120889297,0.001065333,1988-0506PHL +1988-0557,1988306N15130,31.9,PHL,608,WP2,1988,940000,2014,7061009.416,7131612.632,0.009949366,1988-0557PHL +1989-0115,1989254N13340,49.3,ATG,28,NA1,1989,80000000,2014,232560060.9,233463359.6,0.003876629,1989-0115ATG +1989-0115,1989254N13340,40.7,DMA,212,NA1,1989,20000000,2014,56557045.94,56990741.94,0.007639041,1989-0115DMA +1989-0115,1989254N13340,48.1,KNA,659,NA1,1989,46000000,2014,219073474.2,218799713.4,-0.001250411,1989-0115KNA +1989-0115,1989254N13340,25.8,MSR,500,NA1,1989,240000000,2014,240000000,54629110.58,-1.480072022,1989-0115MSR +1989-0115,1989254N13340,116.4,USA,840,NA2,1989,7000000000,2014,21678841358,21687159989,0.000383648,1989-0115USA +1989-0115,1989254N13340,159.9,VIR,850,NA1,1989,21800000,2014,58754072.56,58790887.87,0.000626404,1989-0115VIR +1989-0120,1989190N20160,81,PHL,608,WP2,1989,61000000,2014,407741184.1,407187405.7,-0.001359085,1989-0120PHL +1989-0125,1989279N07151,249.3,PHL,608,WP2,1989,59200000,2014,395709477,395579902.7,-0.000327502,1989-0125PHL +1989-0126,1989286N14137,87.6,PHL,608,WP2,1989,35400000,2014,236623572.4,236735425.6,0.000472593,1989-0126PHL +1989-0132,1989314N10152,298.7,PHL,608,WP2,1989,325000,2014,2172391.554,2172693.594,0.000139026,1989-0132PHL +1989-0265,1989201N11145,50.1,KOR,410,WP4,1989,176500000,2014,1022890325,1028251601,0.005227613,1989-0265KOR +1989-0398,1989089S11158,71.5,AUS,36,OC,1989,94300000,2014,461534104.7,461070798.7,-0.001004343,1989-0398AUS +1990-0019,1990124N09088,74.1,IND,356,NI,1990,580000000,2014,3684645392,3694898103,0.002778686,1990-0019IND +1990-0037,1990166N06141,41.6,CHN,156,WP3,1990,16000000,2014,464775602.6,466700655,0.004133342,1990-0037CHN +1990-0038,1990171N11148,106.6,CHN,156,WP3,1990,28000000,2014,813357304.5,812769447.7,-0.000723015,1990-0038CHN +1990-0121,1990327S07175,130.3,FJI,242,OC,1990,10000000,2014,33532784.13,33571889.31,0.001165498,1990-0121FJI +1990-0390,1990202N13130,57,CHN,156,WP3,1990,83000000,2014,2411023438,2403268533,-0.003221621,1990-0390CHN +1990-0393,1990216N13281,59.6,MEX,484,NA1,1990,90700000,2014,456380159.7,457720406.3,0.002932385,1990-0393MEX +1990-0402,1990235N10152,85,CHN,156,WP3,1990,688000000,2014,19985350911,20029007455,0.002182045,1990-0402CHN +1990-0405,1990245N16149,103.6,CHN,156,WP3,1990,154000000,2014,4473465175,4474420771,0.000213591,1990-0405CHN +1990-0407,1990251N06171,178.1,JPN,392,WP4,1990,4000000000,2014,6193036523,6196291658,0.000525474,1990-0407JPN +1990-0422,1990350S11165,43.2,AUS,36,OC,1990,155600000,2014,733330742.5,736672274.3,0.0045463,1990-0422AUS +1991-0120,1991113N10091,65.3,BGD,50,NI,1991,1780000000,2014,9940604678,9948189982,0.000762772,1991-0120BGD +1991-0218,1991228N26286,91,USA,840,NA2,1991,1500000000,2014,4256954560,4261266006,0.001012288,1991-0218USA +1991-0364,1991338S08181,42.6,WSM,882,OC,1991,278000000,2014,1782167001,1782019359,-8.28E-05,1991-0364WSM +1991-0382,1991289N06156,54.8,PHL,608,WP2,1991,90000000,2014,563936202.8,562823931.5,-0.001974283,1991-0382PHL +1991-0526,1991200N05157,66.3,JPN,392,WP4,1991,81500000,2014,110285260.8,110330966.9,0.00041435,1991-0526JPN +1991-0539,1991256N13171,131,JPN,392,WP4,1991,10000000000,2014,13531933846,13532696955,5.64E-05,1991-0539JPN +1991-0710,1991220N10133,34.1,THA,764,WP1,1991,8323000,2014,34512098.63,34986428.57,0.013650284,1991-0710THA +1992-0061,1992174N13126,172.1,VNM,704,WP1,1992,400000,2014,7548589.73,7552262.137,0.000486384,1992-0061VNM +1992-0066,1992230N11325,95.4,USA,840,NA2,1992,26500000000,2014,71005515347,71121951504,0.001638475,1992-0066USA +1992-0143,1992289N08135,46.2,VNM,704,WP1,1992,18000000,2014,339686537.9,340038182.3,0.001034667,1992-0143VNM +1992-0162,1992338S04173,260.2,FJI,242,OC,1992,1600000,2014,4683021.159,4685294.259,0.000485274,1992-0162FJI +1992-0271,1992249N12229,25.8,USA,840,NA2,1992,5000000000,2014,13397267047,139213200.5,-4.566799439,1992-0271USA +1992-0342,1992233N16254,44.8,MEX,484,NA1,1992,3000000,2014,10859450.34,10821712.85,-0.003481135,1992-0342MEX +1992-0357,1992237N14144,42.4,TWN,158,WP4,1992,35000000,2014,83218785.15,83608159.72,0.004668014,1992-0357TWN +1992-0463,1992194N07140,95.7,HKG,344,WP4,1992,219700000,2014,614100138.3,614469716.1,0.000601639,1992-0463HKG +1993-0016,1993131S04158,41.5,PNG,598,OC,1993,1500000,2014,6953406.58,6945308.68,-0.001165273,1993-0016PNG +1993-0024,1993083S12181,120.7,VUT,548,OC,1993,6000000,2014,25998065.23,26020847.91,0.000875938,1993-0024VUT +1993-0077,1993271N14134,53.6,PHL,608,WP2,1993,188000000,2014,984067975.5,980564341.4,-0.003566711,1993-0077PHL +1993-0079,1993246N16129,33,JPN,392,WP4,1993,1300000000,2014,1415656470,1419557298,0.002751701,1993-0079JPN +1993-0085,1993331N07108,88.3,IND,356,NI,1993,100000000,2014,730095393.3,729136239.4,-0.001314602,1993-0085IND +1993-0088,1993322N09137,44.8,PHL,608,WP2,1993,2000000,2014,10468808.25,10463170.82,-0.000538643,1993-0088PHL +1993-0088,1993322N09137,81,VNM,704,WP1,1993,15000000,2014,211901951.8,212217305.1,0.001487098,1993-0088VNM +1993-0199,1993224N07153,64.4,CHN,156,WP3,1993,433920000,2014,10227548827,10229454530,0.000186313,1993-0199CHN +1993-0228,1993353N05159,169.8,PHL,608,WP2,1993,17000000,2014,88984870.12,89019101.11,0.000384609,1993-0228PHL +1993-0464,1993253N06150,65.7,CHN,156,WP3,1993,263670000,2014,6214734972,6193264638,-0.003460728,1993-0464CHN +1993-0466,1993298N11154,36.4,CHN,156,WP3,1993,15890000,2014,374529293.1,378991865.8,0.011844724,1993-0466CHN +1993-0473,1993211N07161,240.6,JPN,392,WP4,1993,450000000,2014,490034931.9,490304476.1,0.0005499,1993-0473JPN +1994-0009,1994007S16056,47,MDG,450,SI,1994,10000000,2014,35852773.5,36011276.82,0.004411206,1994-0009MDG +1994-0044,1994117N07096,49.6,BGD,50,NI,1994,125000000,2014,639962654.8,641125319.8,0.001815122,1994-0044BGD +1994-0071,1994197N14115,39,PHL,608,WP2,1994,37600000,2014,166973054.6,167152538,0.001074347,1994-0071PHL +1994-0138,1994153N19113,161,CHN,156,WP3,1994,700000,2014,13002551.31,13003207.86,5.05E-05,1994-0138CHN +1994-0163,1994186N09139,133.9,CHN,156,WP3,1994,96300000,2014,1788779559,1788690280,-4.99E-05,1994-0163CHN +1994-0185,1994211N12152,244.7,TWN,158,WP4,1994,232000000,2014,479958040.5,479778510,-0.000374125,1994-0185TWN +1994-0198,1994224N20152,88.2,CHN,156,WP3,1994,1150000000,2014,21361334294,21319044816,-0.001981683,1994-0198CHN +1994-0198,1994224N20152,208.4,JPN,392,WP4,1994,6000000,2014,5930761.695,5934549.688,0.000638499,1994-0198JPN +1994-0352,1994302N11086,82.5,IND,356,NI,1994,19100000,2014,119004702,119187618.6,0.001535874,1994-0352IND +1994-0519,1994287N14156,259.2,PHL,608,WP2,1994,67400000,2014,299308082,299123832.2,-0.000615775,1994-0519PHL +1994-0594,1994345N06165,83.2,PHL,608,WP2,1994,26813000,2014,119070439.2,118906801,-0.001375242,1994-0594PHL +1995-0183,1995229N12144,70,KOR,410,WP4,1995,425000000,2014,1078553430,1077763418,-0.000732742,1995-0183KOR +1995-0188,1995236N10134,287.4,CHN,156,WP3,1995,87000000,2014,1241534250,1241256622,-0.000223641,1995-0188CHN +1995-0192,1995240N11337,42.7,ATG,28,NA1,1995,350000000,2014,773370483.3,771570241.2,-0.002330501,1995-0192ATG +1995-0192,1995240N11337,160.3,CAN,124,NA2,1995,100000000,2014,297876572.4,298136149.1,0.000871044,1995-0192CAN +1995-0192,1995240N11337,31.6,MSR,500,NA1,1995,20000000,2014,20000000,19952696.78,-0.002367962,1995-0192MSR +1995-0207,1995256N15253,36.5,MEX,484,NA1,1995,800000000,2014,2920653641,2926031587,0.001839657,1995-0207MEX +1995-0256,1995281N14278,28.9,MEX,484,NA1,1995,1500000000,2014,5476225576,5430128348,-0.00845333,1995-0256MEX +1995-0271,1995293N05177,325.7,PHL,608,WP2,1995,244000000,2014,936840738.5,1835824659,0.672735767,1995-0271PHL +1995-0274,1995294N05163,76.2,VNM,704,WP1,1995,21200000,2014,190369759.5,190451480.4,0.000429182,1995-0274VNM +1995-0275,1995310N09096,99.2,IND,356,NI,1995,46300000,2014,262049202.8,261827908.5,-0.000844833,1995-0275IND +1995-0393,1995193N06156,219.9,KOR,410,WP4,1995,140000000,2014,355288188.6,355117111.7,-0.000481632,1995-0393KOR +1995-0404,1995212N22287,66,BHS,44,NA1,1995,400000,2014,1278191.893,1280623.407,0.0019005,1995-0404BHS +1995-0404,1995212N22287,148.4,USA,840,NA2,1995,700000000,2014,1600355804,1601774396,0.000886031,1995-0404USA +1996-0052,1996001S08075,41.3,MOZ,508,SI,1996,14500000,2014,69792056.75,69531437.3,-0.003741218,1996-0052MOZ +1996-0110,1996202N17115,70.5,VNM,704,WP1,1996,362000000,2014,2733698258,2738388826,0.001714362,1996-0110VNM +1996-0168,1996203N12152,170.4,CHN,156,WP3,1996,72000000,2014,873787160.8,873155109.9,-0.000723608,1996-0168CHN +1996-0168,1996203N12152,262.2,TWN,158,WP4,1996,1100000000,2014,1993824461,1994825292,0.000501839,1996-0168TWN +1996-0201,1996248N15319,220.7,CAN,124,NA2,1996,100000,2014,286258.6963,286432.7091,0.000607702,1996-0201CAN +1996-0201,1996248N15319,60.8,PRI,630,NA1,1996,500000000,2014,1129729966,1126838603,-0.002562621,1996-0201PRI +1996-0227,1996260N19107,56.5,VNM,704,WP1,1996,11000000,2014,83068179.11,83458244.78,0.004684739,1996-0227VNM +1996-0256,1996306N15097,79.8,IND,356,NI,1996,1500300000,2014,7786525250,7792066042,0.000711334,1996-0256IND +1996-0282,1996356N08110,52.7,MYS,458,WP1,1996,52000000,2014,174301945.6,173673801.6,-0.003610279,1996-0282MYS +1996-0318,1996095S09133,46.7,AUS,36,OC,1996,46700000,2014,170904206.6,171420114,0.003014146,1996-0318AUS +1996-0325,1996187N10326,152.9,VGB,92,NA1,1996,2000000,2014,2000000,2002311.64,0.001155153,1996-0325VGB +1996-0371,1996201N07137,320.7,TWN,158,WP4,1996,200000000,2014,362513538.4,362428033.8,-0.000235894,1996-0371TWN +1997-0013,1997018S11059,33.9,MDG,450,SI,1997,50000000,2014,150510277.2,150241893.5,-0.00178475,1997-0013MDG +1997-0039,1997061S08171,119.8,FJI,242,OC,1997,27000000,2014,57809242.36,57890816.16,0.001410091,1997-0039FJI +1997-0168,1997210N15120,105.6,CHN,156,WP3,1997,579700000,2014,6319265945,6307948843,-0.001792494,1997-0168CHN +1997-0180,1997217N06168,30.6,JPN,392,WP4,1997,100000000,2014,109868789.5,111620909,0.015821558,1997-0180JPN +1997-0243,1997279N12263,66.7,MEX,484,NA1,1997,447800000,2014,1176350687,1176239750,-9.43E-05,1997-0243MEX +1997-0267,1997298N06140,77.2,KHM,116,WP1,1997,10000,2014,48505.97055,48568.14687,0.001281007,1997-0267KHM +1997-0267,1997298N06140,60.1,THA,764,WP1,1997,5000000,2014,13561680.42,13576851.17,0.001118023,1997-0267THA +1997-0267,1997298N06140,34.2,VNM,704,WP1,1997,470000000,2014,3260213213,3244977455,-0.004684193,1997-0267VNM +1997-0292,1997333N06194,135,GUM,316,OC,1997,200000000,2014,327208271.8,327242287,0.00010395,1997-0292GUM +1997-0358,1997261N13114,163.8,VNM,704,WP1,1997,5000000,2014,34683119.29,34661012.7,-0.000637591,1997-0358VNM +1998-0183,1998152N11075,66.1,IND,356,NI,1998,469000000,2014,2269722074,2272414630,0.00118559,1998-0183IND +1998-0297,1998259N17118,253.5,JPN,392,WP4,1998,3000000000,2014,3608482427,3607032520,-0.000401886,1998-0297JPN +1998-0311,1998281N11151,325.7,JPN,392,WP4,1998,335500000,2014,403548618.1,484163602.1,0.182125899,1998-0311JPN +1998-0374,1998315N09116,35.3,VNM,704,WP1,1998,93200000,2014,637799612.8,631449353.4,-0.010006409,1998-0374VNM +1998-0434,1998342N06141,66.3,VNM,704,WP1,1998,15000000,2014,102650152.3,102751784.9,0.000989597,1998-0434VNM +1999-0051,1999040S15147,64.6,AUS,36,OC,1999,300000000,2014,1131545100,1133239313,0.001496137,1999-0051AUS +1999-0177,1999135N12073,39.4,IND,356,NI,1999,20000000,2014,88885643.29,88908892.65,0.000261531,1999-0177IND +1999-0298,1999231N20266,127.1,USA,840,NA2,1999,70000000,2014,126960980,127028871.6,0.000534601,1999-0298USA +1999-0301,1999241N12133,46.1,CHN,156,WP3,1999,277900000,2014,2662759128,2670524860,0.002912178,1999-0301CHN +1999-0326,1999260N20130,160.7,JPN,392,WP4,1999,5000000000,2014,5316012420,5316956886,0.000177649,1999-0326JPN +1999-0327,1999251N15314,44.8,BHS,44,NA1,1999,450000000,2014,641705937.2,644161991,0.003820076,1999-0327BHS +1999-0327,1999251N15314,84.5,USA,840,NA2,1999,7000000000,2014,12696097995,12675805856,-0.001599576,1999-0327USA +1999-0392,1999275N16135,130.6,CHN,156,WP3,1999,241600000,2014,2314942804,2315198049,0.000110254,1999-0392CHN +1999-0401,1999288N15093,75.1,IND,356,NI,1999,470000000,2014,2088812617,2089705857,0.000427539,1999-0401IND +1999-0425,1999298N12099,82,IND,356,NI,1999,2500000000,2014,11110705411,11095873337,-0.001335827,1999-0425IND +1999-0435,1999286N16278,232.4,USA,840,NA2,1999,100000000,2014,181372828.5,181473486.7,0.000554826,1999-0435USA +1999-0619,1999236N22292,58.6,USA,840,NA2,1999,62500000,2014,113358017.8,113439034,0.000714438,1999-0619USA +1999-0625,1999230N12129,325.7,CHN,156,WP3,1999,18000000,2014,172470904.3,271662597.9,0.454332296,1999-0625CHN +2000-0097,2000056S17152,58.6,AUS,36,OC,2000,90000000,2014,317674987.2,317152965,-0.00164461,2000-0097AUS +2000-0107,2000032S11116,128.8,MDG,450,SI,2000,9000000,2014,24773011.21,24779586.39,0.000265382,2000-0107MDG +2000-0107,2000032S11116,95.7,MOZ,508,SI,2000,1000000,2014,3381086.779,3377433.308,-0.001081145,2000-0107MOZ +2000-0533,2000230N08139,325.7,CHN,156,WP3,2000,69443000,2014,600923967.1,602737067.3,0.003012645,2000-0533CHN +2000-0582,2000248N17117,45.6,VNM,704,WP1,2000,21000000,2014,125440545.4,125979702.1,0.004288895,2000-0582VNM +2000-0601,2000245N14157,319.4,KOR,410,WP4,2000,71000000,2014,178416664.1,178430679.8,7.86E-05,2000-0601KOR +2000-0706,2000299N08139,325.7,PHL,608,WP2,2000,17000000,2014,59708228.94,109753702.6,0.608768939,2000-0706PHL +2000-0706,2000299N08139,113.3,TWN,158,WP4,2000,150000000,2014,240119400,240329121.2,0.000873023,2000-0706TWN +2000-0715,2000305N06136,325.7,PHL,608,WP2,2000,31000000,2014,108879711.6,305722179.5,1.03243307,2000-0715PHL +2001-0293,2001170N11138,176.5,TWN,158,WP4,2001,5000000,2014,8829496.508,8836227.942,0.00076209,2001-0293TWN +2001-0319,2001181N08141,30.6,PHL,608,WP2,2001,68565000,2014,255861625.3,255364774,-0.001943763,2001-0319PHL +2001-0405,2001206N14134,76.5,CHN,156,WP3,2001,40000000,2014,313047801,312341037.7,-0.002260237,2001-0405CHN +2001-0405,2001206N14134,280.3,TWN,158,WP4,2001,240000000,2014,423815832.4,423746134.4,-0.000164467,2001-0405TWN +2001-0436,2001220N17118,33.6,VNM,704,WP1,2001,3200000,2014,18230113.7,18402804.93,0.009428269,2001-0436VNM +2001-0454,2001225N18146,36.4,JPN,392,WP4,2001,800000000,2014,901659328.8,894181173.4,-0.008328355,2001-0454JPN +2001-0522,2001248N23125,158.9,TWN,158,WP4,2001,800000000,2014,1412719441,1414013028,0.000915253,2001-0522TWN +2001-0553,2001278N12302,33.9,BLZ,84,NA1,2001,250000000,2014,485443358.1,487784713.7,0.004811534,2001-0553BLZ +2001-0624,2001309N10130,59,VNM,704,WP1,2001,55000000,2014,313330079.3,313747726,0.001332041,2001-0624VNM +2001-0671,2001303N13276,42.4,BHS,44,NA1,2001,300000000,2014,395198026.4,396338899.1,0.002882679,2001-0671BHS +2001-0711,2001363S10185,25.8,TON,776,OC,2001,51300000,2014,125645747.8,61874934.24,-0.708351264,2001-0711TON +2002-0004,2001364S19036,31.1,MDG,450,SI,2001,181000,2014,439343.7929,445737.8301,0.01444872,2002-0004MDG +2002-0669,2002295N11261,83.5,MEX,484,NA1,2002,200000000,2014,340513691.7,340009362.8,-0.001482181,2002-0669MEX +2002-0724,2002265N10315,94.9,USA,840,NA2,2002,2000000000,2014,3192297819,3187821874,-0.001403091,2002-0724USA +2003-0024,2003011S09182,25.8,FJI,242,OC,2003,30000000,2014,58076952.28,51280394.8,-0.124460383,2003-0024FJI +2003-0135,2003061S21148,149.3,NCL,540,OC,2003,40000000,2014,40000000,39967857.79,-0.000803878,2003-0135NCL +2003-0258,2003144N16119,40.7,PHL,608,WP2,2003,4000000,2014,13566469.09,13653992.95,0.006430762,2003-0258PHL +2003-0346,2003196N04150,132.7,CHN,156,WP3,2003,100000000,2014,631358675.5,631561257.7,0.000320816,2003-0346CHN +2003-0346,2003196N04150,116.9,PHL,608,WP2,2003,26468000,2014,89769325.95,89688671.83,-0.000898864,2003-0346PHL +2003-0443,2003240N20139,263.5,CHN,156,WP3,2003,241000000,2014,1521574408,1521111541,-0.000304249,2003-0443CHN +2003-0448,2003240N15329,109.6,BMU,60,NA1,2003,300000000,2014,399403562.6,399828430.3,0.00106319,2003-0448BMU +2003-0459,2003247N10153,100.4,JPN,392,WP4,2003,50000000,2014,54552255.91,54509967.04,-0.0007755,2003-0459JPN +2003-0459,2003247N10153,120.4,KOR,410,WP4,2003,4500000000,2014,9332563202,9339286292,0.000720131,2003-0459KOR +2003-0468,2003249N14329,92.8,USA,840,NA2,2003,3370000000,2014,5129874055,5119547369,-0.002015078,2003-0468USA +2003-0474,2003262N17254,57.8,MEX,484,NA1,2003,100000000,2014,180241122.2,179863368.4,-0.002098024,2003-0474MEX +2003-0487,2003268N28298,100.4,CAN,124,NA2,2003,110000000,2014,221788181.9,221623043,-0.000744857,2003-0487CAN +2003-0594,2003316N11141,53.1,CHN,156,WP3,2003,196938000,2014,1243385148,1243934556,0.000441767,2003-0594CHN +2003-0605,2003345N05092,72.9,IND,356,NI,2003,28000000,2014,93953651.91,93927917.74,-0.00027394,2003-0605IND +2003-0782,2003179N20271,94.1,USA,840,NA2,2003,50000000,2014,76110891.03,75976612.4,-0.001765808,2003-0782USA +2004-0103,2004061S12072,25.8,MDG,450,SI,2004,250000000,2014,611461783.3,349891343,-0.558229799,2004-0103MDG +2004-0153,2004098S15173,34.6,FJI,242,OC,2004,4000000,2014,6575111.983,6477235.422,-0.014997823,2004-0153FJI +2004-0218,2004134N07132,150.2,PHL,608,WP2,2004,1000000,2014,3114596.181,3112259.337,-0.00075057,2004-0218PHL +2004-0235,2004136N15090,44.3,MMR,104,NI,2004,688000,2014,4260951.721,4238654.264,-0.005246716,2004-0235MMR +2004-0309,2004174N14146,25.8,PHL,608,WP2,2004,19667000,2014,61254763.09,13802716.32,-1.490176204,2004-0309PHL +2004-0415,2004223N11301,104.1,CUB,192,NA1,2004,1000000000,2014,2111247808,2114143610,0.001370667,2004-0415CUB +2004-0415,2004223N11301,38.4,JAM,388,NA1,2004,300000000,2014,409384949.8,407910850.2,-0.003607265,2004-0415JAM +2004-0415,2004223N11301,112,USA,840,NA2,2004,16000000000,2014,22839070991,22861215281,0.00096911,2004-0415USA +2004-0428,2004227N15141,25.8,JPN,392,WP4,2004,500000000,2014,503661847.5,177221668.9,-1.04450379,2004-0428JPN +2004-0428,2004227N15141,134,KOR,410,WP4,2004,1000000,2014,1845168.832,1847692.412,0.001366735,2004-0428KOR +2004-0445,2004230N09172,153.1,GUM,316,OC,2004,1000000,2014,1435830.957,1437478.07,0.001146492,2004-0445GUM +2004-0448,2004241N32282,72.2,USA,840,NA2,2004,62500000,2014,89215121.06,89339480.31,0.001392955,2004-0448USA +2004-0455,2004238N11325,40.8,BHS,44,NA1,2004,1000000000,2014,1210044074,1218435858,0.006911168,2004-0455BHS +2004-0455,2004238N11325,82.9,USA,840,NA2,2004,11000000000,2014,15701861306,15696443197,-0.000345121,2004-0455USA +2004-0462,2004247N10332,75.4,TTO,780,NA1,2004,1000000,2014,2048171.488,2049992.563,0.000888727,2004-0462TTO +2004-0580,2004319N10134,142.4,PHL,608,WP2,2004,6000000,2014,18687577.08,18669893.72,-0.000946711,2004-0580PHL +2004-0580,2004319N10134,34.9,VNM,704,WP1,2004,23000000,2014,94274912.3,94402049.38,0.00134767,2004-0580VNM +2005-0351,2005186N12299,81,CUB,192,NA1,2005,1400000000,2014,2647941893,2645035134,-0.001098346,2005-0351CUB +2005-0351,2005186N12299,97.5,JAM,388,NA1,2005,30000000,2014,37089462.6,37061160.28,-0.000763374,2005-0351JAM +2005-0351,2005186N12299,113.8,USA,840,NA2,2005,2230000000,2014,2984138801,2988710313,0.001530765,2005-0351USA +2005-0381,2005192N22155,265.7,TWN,158,WP4,2005,100000000,2014,141174388.7,141183485.9,6.44E-05,2005-0381TWN +2005-0382,2005192N11318,72.1,MEX,484,NA1,2005,400000000,2014,599247676.6,600546073.2,0.002164367,2005-0382MEX +2005-0467,2005236N23285,53,USA,840,NA2,2005,1.25E+11,2014,1.67E+11,1.67E+11,0.001099496,2005-0467USA +2005-0492,2005237N14148,33.7,CHN,156,WP3,2005,1900000000,2014,8712512761,8710256578,-0.000258992,2005-0492CHN +2005-0492,2005237N14148,291.6,TWN,158,WP4,2005,38000000,2014,53646267.7,53654485.48,0.000153173,2005-0492TWN +2005-0497,2005241N15155,180.7,JPN,392,WP4,2005,1000000000,2014,1019977855,1019949598,-2.77E-05,2005-0497JPN +2005-0510,2005248N08142,100.4,CHN,156,WP3,2005,1750000000,2014,8024682806,8036888245,0.001519832,2005-0510CHN +2005-0536,2005257N15120,42.6,VNM,704,WP1,2005,20000000,2014,64617086.41,64668886.84,0.000801331,2005-0536VNM +2005-0540,2005262N13127,48.9,CHN,156,WP3,2005,1040000000,2014,4768954354,4766559108,-0.000502384,2005-0540CHN +2005-0540,2005262N13127,35.3,VNM,704,WP1,2005,219250000,2014,708364809.8,714572541.1,0.00872529,2005-0540VNM +2005-0547,2005261N21290,59.5,USA,840,NA2,2005,16000000000,2014,21410861355,21364784783,-0.002154338,2005-0547USA +2005-0565,2005268N19146,171.4,CHN,156,WP3,2005,150000000,2014,687829954.8,688297480.7,0.000679481,2005-0565CHN +2005-0565,2005268N19146,325.7,TWN,158,WP4,2005,100000000,2014,141174388.7,446897893.5,1.152334217,2005-0565TWN +2005-0585,2005289N18282,40.3,MEX,484,NA1,2005,5000000000,2014,7490595958,7496293488,0.000760335,2005-0585MEX +2005-0585,2005289N18282,121.1,USA,840,NA2,2005,14300000000,2014,19135957336,19107419455,-0.001492435,2005-0585USA +2005-0611,2005301N13117,69.6,VNM,704,WP1,2005,11000000,2014,35539397.53,35639054.33,0.002800198,2005-0611VNM +2006-0043,2006006S11129,58.3,AUS,36,OC,2006,2354000,2014,4625625.837,4645427.663,0.00427176,2006-0043AUS +2006-0139,2006074S13158,50.5,AUS,36,OC,2006,1180000000,2014,2318707938,2328083679,0.004035367,2006-0139AUS +2006-0251,2006128N09138,96.9,CHN,156,WP3,2006,475000000,2014,1809189080,1810321031,0.000625472,2006-0251CHN +2006-0251,2006128N09138,208.5,PHL,608,WP2,2006,3328000,2014,7749707.397,7751266.496,0.000201161,2006-0251PHL +2006-0388,2006198N08152,39.8,CHN,156,WP3,2006,367000000,2014,1397836616,1388499752,-0.006701918,2006-0388CHN +2006-0410,2006209N13130,39.1,CHN,156,WP3,2006,900000000,2014,3427937205,3442895603,0.00435418,2006-0410CHN +2006-0437,2006216N07151,84.3,CHN,156,WP3,2006,2510000000,2014,9560135983,9551856301,-0.000866438,2006-0437CHN +2006-0466,2006237N13298,117,USA,840,NA2,2006,32860000,2014,41553786.12,41579194.68,0.000611275,2006-0466USA +2006-0504,2006252N13139,152,JPN,392,WP4,2006,2500000000,2014,2676605774,2678884715,0.000851067,2006-0504JPN +2006-0505,2006257N16259,320.3,MEX,484,NA1,2006,2700000,2014,3638886.137,3637726.519,-0.000318725,2006-0505MEX +2006-0517,2006268N12129,325.7,PHL,608,WP2,2006,113000000,2014,263136098.5,971316188.2,1.305980664,2006-0517PHL +2006-0517,2006268N12129,70.6,VNM,704,WP1,2006,624000000,2014,1750622103,1751243470,0.000354878,2006-0517VNM +2006-0600,2006298N12143,214.7,PHL,608,WP2,2006,9077000,2014,21137047.49,21130719.11,-0.000299443,2006-0600PHL +2006-0648,2006329N06150,199.7,PHL,608,WP2,2006,66400000,2014,154621565.9,154647768.3,0.000169447,2006-0648PHL +2006-0648,2006329N06150,78,VNM,704,WP1,2006,456000000,2014,1279300767,1278681154,-0.000484455,2006-0648VNM +2007-0095,2007066S12066,25.8,MDG,450,SI,2007,240000000,2014,348858871.4,125216890.9,-1.0246201,2007-0095MDG +2007-0164,2007151N14072,33.9,OMN,512,NI,2007,3900000000,2014,7513292712,7505906625,-0.000983553,2007-0164OMN +2007-0262,2007188N04148,325.7,JPN,392,WP4,2007,60000000,2014,64453546.68,256696088.4,1.381948092,2007-0262JPN +2007-0360,2007225N12331,122.2,BLZ,84,NA1,2007,14847000,2014,19476548.08,19485983.55,0.000484336,2007-0360BLZ +2007-0360,2007225N12331,47,DMA,212,NA1,2007,20000000,2014,24849111.57,24808275.31,-0.001644721,2007-0360DMA +2007-0360,2007225N12331,141.6,JAM,388,NA1,2007,300000000,2014,323956910.3,324363348.3,0.001253819,2007-0360JAM +2007-0360,2007225N12331,63.3,LCA,662,NA1,2007,40000000,2014,47496877.29,47537233.54,0.0008493,2007-0360LCA +2007-0360,2007225N12331,121.2,MEX,484,NA1,2007,600000000,2014,749255406.1,748407649.8,-0.001132106,2007-0360MEX +2007-0380,2007223N19136,52.6,CHN,156,WP3,2007,890555000,2014,2627998249,2633866360,0.002230431,2007-0380CHN +2007-0439,2007244N12303,79.5,HND,340,NA1,2007,6579000,2014,10588404.38,10570882.76,-0.001656164,2007-0439HND +2007-0457,2007257N16134,100.4,CHN,156,WP3,2007,638000000,2014,1882716826,1880610808,-0.001119232,2007-0457CHN +2007-0463,2007272N17125,35.8,VNM,704,WP1,2007,191000000,2014,459411646.6,458341782.1,-0.002331487,2007-0463VNM +2007-0470,2007254N18140,186.8,KOR,410,WP4,2007,70000000,2014,87997870.47,88050777.92,0.000601055,2007-0470KOR +2007-0479,2007240N17153,268,JPN,392,WP4,2007,1000000000,2014,1074225778,1074609445,0.000357093,2007-0479JPN +2007-0552,2007274N18131,32.4,CHN,156,WP3,2007,1077788000,2014,3180516618,3220120624,0.012375178,2007-0552CHN +2007-0556,2007314N10093,78.6,BGD,50,NI,2007,2300000000,2014,4994688046,4984479477,-0.002045977,2007-0556BGD +2007-0560,2007306N18133,168.8,PHL,608,WP2,2007,2971000,2014,5660826.737,5662083.054,0.000221907,2007-0560PHL +2007-0576,2007324N10140,83,PHL,608,WP2,2007,5000000,2014,9526803.663,9537264.891,0.001097481,2007-0576PHL +2007-0578,2007323N09128,76.1,PHL,608,WP2,2007,1000000,2014,1905360.733,1907024.547,0.000872847,2007-0578PHL +2007-0591,2007058S12135,25.8,AUS,36,OC,2007,100000000,2014,171950641.6,46970609.91,-1.297685383,2007-0591AUS +2007-0655,2007337S12186,59.1,FJI,242,OC,2007,652000,2014,858485.7575,859280.4569,0.000925271,2007-0655FJI +2008-0051,2008026S12179,74.7,FJI,242,OC,2008,30000000,2014,38176381.62,38122406.29,-0.001414841,2008-0051FJI +2008-0070,2008037S10055,39,MDG,450,SI,2008,60000000,2014,68034718.12,67971419.61,-0.000930818,2008-0070MDG +2008-0111,2008062S10064,73.7,MOZ,508,SI,2008,20000000,2014,29510844.15,29531686.48,0.000706011,2008-0111MOZ +2008-0155,2008104N08128,104,CHN,156,WP3,2008,49000000,2014,111703612.9,111831024.7,0.001139974,2008-0155CHN +2008-0155,2008104N08128,30.4,PHL,608,WP2,2008,16000000,2014,26139377.16,26438538.32,0.01137985,2008-0155PHL +2008-0184,2008117N11090,43.7,MMR,104,NI,2008,4000000000,2014,8216064485,8247757415,0.003850014,2008-0184MMR +2008-0197,2008135N12116,91,PHL,608,WP2,2008,99174000,2014,162021661.9,162262628.3,0.001486143,2008-0197PHL +2008-0249,2008169N08135,86.3,CHN,156,WP3,2008,175000000,2014,398941474.7,399337415.4,0.000991986,2008-0249CHN +2008-0249,2008169N08135,186.9,PHL,608,WP2,2008,284694000,2014,465107740.1,465172164.6,0.000138506,2008-0249PHL +2008-0292,2008206N22133,97.7,CHN,156,WP3,2008,73000000,2014,166415586.6,166555055.4,0.000837724,2008-0292CHN +2008-0304,2008203N18276,82.1,MEX,484,NA1,2008,75000000,2014,88822764.83,88951468.92,0.00144795,2008-0304MEX +2008-0304,2008203N18276,91.8,USA,840,NA2,2008,1200000000,2014,1428540902,1428581212,2.82E-05,2008-0304USA +2008-0338,2008229N18293,62.4,USA,840,NA2,2008,180000000,2014,214281135.2,214393281.6,0.000523224,2008-0338USA +2008-0352,2008238N13293,45.3,CUB,192,NA1,2008,2072000000,2014,2748386795,2735471659,-0.004710245,2008-0352CUB +2008-0352,2008238N13293,95.2,JAM,388,NA1,2008,66198000,2014,67028878.91,67033295.53,6.59E-05,2008-0352JAM +2008-0352,2008238N13293,75.2,USA,840,NA2,2008,7000000000,2014,8333155259,8311297726,-0.002626406,2008-0352USA +2008-0369,2008229N13147,83.3,CHN,156,WP3,2008,58000000,2014,132220603.1,132190363,-0.000228736,2008-0369CHN +2008-0369,2008229N13147,325.7,HKG,344,WP4,2008,380000,2014,505083.5374,918937.0251,0.598493758,2008-0369HKG +2008-0369,2008229N13147,40.9,PHL,608,WP2,2008,33870000,2014,55333794.03,54962062.88,-0.006740644,2008-0369PHL +2008-0378,2008241N19303,211.8,USA,840,NA2,2008,160000000,2014,190472120.2,190624644.9,0.000800451,2008-0378USA +2008-0384,2008245N17323,81.6,CUB,192,NA1,2008,1500000000,2014,1989662255,1988880448,-0.000393012,2008-0384CUB +2008-0384,2008245N17323,33.5,TCA,796,NA1,2008,500000000,2014,500000000,500063361,0.000126714,2008-0384TCA +2008-0384,2008245N17323,80.6,USA,840,NA2,2008,30000000000,2014,35713522539,35674564454,-0.001091445,2008-0384USA +2008-0426,2008262N16142,144.7,CHN,156,WP3,2008,824000000,2014,1878444430,1876942978,-0.000799626,2008-0426CHN +2008-0426,2008262N16142,25.8,PHL,608,WP2,2008,7420000,2014,12122136.16,5780902.116,-0.74047347,2008-0426PHL +2008-0437,2008272N15113,58.2,VNM,704,WP1,2008,6500000,2014,12209487.86,12248048.24,0.003153254,2008-0437VNM +2008-0441,2008268N12140,325.7,TWN,158,WP4,2008,90000000,2014,114489207.2,297519658.6,0.954999744,2008-0441TWN +2008-0552,2008320N08122,111.2,VNM,704,WP1,2008,1000000,2014,1878382.747,1876049.31,-0.001243031,2008-0552VNM +2009-0137,2009093S12062,48.7,MDG,450,SI,2009,5000000,2014,6241556.912,6276216.074,0.005537606,2009-0137MDG +2009-0165,2009123N10111,147.5,PHL,608,WP2,2009,30342000,2014,51295833,51293642.52,-4.27E-05,2009-0165PHL +2009-0321,2009215N20133,53.2,TWN,158,WP4,2009,250000000,2014,338247183.2,338441840.9,0.000575324,2009-0321TWN +2009-0384,2009239N12270,61.1,MEX,484,NA1,2009,40000000,2014,58422121.35,58579297.05,0.002686733,2009-0384MEX +2009-0399,2009254N14130,82.1,CHN,156,WP3,2009,295001000,2014,605154271.7,606293567.7,0.001880884,2009-0399CHN +2009-0414,2009268N14128,32.8,PHL,608,WP2,2009,237489000,2014,401496146.7,395915626.6,-0.013996812,2009-0414PHL +2009-0414,2009268N14128,48.9,VNM,704,WP1,2009,785000000,2014,1378777736,1372999963,-0.004199308,2009-0414VNM +2009-0422,2009270N10148,41.3,CHN,156,WP3,2009,35000000,2014,71797721.06,71181089.02,-0.008625556,2009-0422CHN +2009-0422,2009270N10148,39.4,PHL,608,WP2,2009,585379000,2014,989634942.4,984393842.4,-0.005310067,2009-0422PHL +2009-0422,2009270N10148,151.9,VNM,704,WP1,2009,200000,2014,351280.9518,351352.4226,0.000203437,2009-0422VNM +2009-0423,2009272N07164,142.6,JPN,392,WP4,2009,1000000000,2014,927176205.2,926315897.9,-0.00092831,2009-0423JPN +2009-0478,2009299N12153,325.7,PHL,608,WP2,2009,15194000,2014,25686800.03,43613859.99,0.529397747,2009-0478PHL +2009-0478,2009299N12153,45.4,VNM,704,WP1,2009,280000000,2014,491793332.5,489595236.2,-0.004479571,2009-0478VNM +2009-0554,2009346S10172,76.9,FJI,242,OC,2009,13300000,2014,20772286.48,20735822.7,-0.001756948,2009-0554FJI +2009-0609,2009313N11072,44.4,IND,356,NI,2009,300000000,2014,455879199.2,456382862.4,0.001104207,2009-0609IND +2010-0106,2010069S12188,25.8,FJI,242,OC,2010,39427000,2014,56286310.68,13492148.22,-1.428343453,2010-0106FJI +2010-0210,2010151N14065,39.6,OMN,512,NI,2010,1000000000,2014,1382561646,1385900125,0.002411794,2010-0210OMN +2010-0260,2010176N16278,46.5,MEX,484,NA1,2010,2000000000,2014,2485464847,2478270330,-0.002898834,2010-0260MEX +2010-0308,2010191N12138,325.7,CHN,156,WP3,2010,500000,2014,859123.4391,2692108.347,1.142167325,2010-0308CHN +2010-0308,2010191N12138,325.7,PHL,608,WP2,2010,8675000,2014,12369162.52,31196159.09,0.9250885,2010-0308PHL +2010-0308,2010191N12138,165,VNM,704,WP1,2010,500000,2014,803078.7658,803262.4956,0.000228756,2010-0308VNM +2010-0432,2010233N17119,39,VNM,704,WP1,2010,44000000,2014,70670931.39,70678446.19,0.000106329,2010-0432VNM +2010-0468,2010236N12341,41.5,ATG,28,NA1,2010,12600000,2014,13945942.61,14028748.46,0.005920072,2010-0468ATG +2010-0484,2010256N17137,91.9,CHN,156,WP3,2010,298285000,2014,512527270.1,513249853.4,0.001408851,2010-0484CHN +2010-0484,2010256N17137,303,TWN,158,WP4,2010,63100000,2014,75033445.7,75060353.7,0.000358549,2010-0484TWN +2010-0494,2010257N16282,62.4,MEX,484,NA1,2010,3900000000,2014,4846656451,4857140116,0.002160736,2010-0494MEX +2010-0543,2010285N13145,54,CHN,156,WP3,2010,420000000,2014,721663688.8,724623069.9,0.004092391,2010-0543CHN +2010-0543,2010285N13145,91.8,PHL,608,WP2,2010,275745000,2014,393168267.4,392849298.5,-0.000811608,2010-0543PHL +2010-0543,2010285N13145,44.7,TWN,158,WP4,2010,10000000,2014,11891195.83,11938433.23,0.003964599,2010-0543TWN +2010-0554,2010293N17093,53.7,MMR,104,NI,2010,57000000,2014,75300204.74,75386609.11,0.001146807,2010-0554MMR +2010-0571,2010302N09306,122.1,LCA,662,NA1,2010,500000,2014,548667.5019,549287.125,0.001128686,2010-0571LCA +2010-0571,2010302N09306,45.1,VCT,670,NA1,2010,25000000,2014,26706058.15,26769270.95,0.002364187,2010-0571VCT +2011-0070,2011028S13180,34.4,AUS,36,OC,2011,2500000000,2014,2626722487,2625314349,-0.000536226,2011-0070AUS +2011-0091,2011020S13182,129.2,TON,776,OC,2011,3000000,2014,3148217.183,3150478.22,0.000717938,2011-0091TON +2011-0272,2011205N12130,55,PHL,608,WP2,2011,63258000,2014,80315874.36,80536440.16,0.002742465,2011-0272PHL +2011-0328,2011233N15301,53.5,BHS,44,NA1,2011,40000000,2014,43522583.4,43398979.16,-0.002844043,2011-0328BHS +2011-0328,2011233N15301,44.8,DOM,214,NA1,2011,30000000,2014,34283168.75,34047442.12,-0.006899618,2011-0328DOM +2011-0328,2011233N15301,46.2,PRI,630,NA1,2011,500000000,2014,510433804.3,513965889.6,0.00689594,2011-0328PRI +2011-0328,2011233N15301,157.5,USA,840,NA2,2011,7300000000,2014,8229569135,8230835742,0.000153897,2011-0328USA +2011-0341,2011233N12129,55,PHL,608,WP2,2011,34452000,2014,43742174.96,43822836.01,0.001842313,2011-0341PHL +2011-0378,2011270N18139,325.7,PHL,608,WP2,2011,2655000,2014,3370935.635,4948189.699,0.38383145,2011-0378PHL +2011-0379,2011266N13139,72.5,CHN,156,WP3,2011,219000000,2014,303152614.2,303944727.8,0.002609512,2011-0379CHN +2011-0379,2011266N13139,67.4,PHL,608,WP2,2011,344173000,2014,436981179.1,436500548,-0.001100495,2011-0379PHL +2011-0385,2011279N10257,85.2,MEX,484,NA1,2011,27700000,2014,30846033.58,30773744.47,-0.002346297,2011-0385MEX +2011-0456,2011245N27269,39.9,USA,840,NA2,2011,750000000,2014,845503678.2,851364151.3,0.006907428,2011-0456USA +2011-0519,2011346N03156,54.3,PHL,608,WP2,2011,38082000,2014,48351024.81,48256972.54,-0.001947091,2011-0519PHL +2011-0566,2011360N09088,93.6,IND,356,NI,2011,375625000,2014,420146061.5,420291427.8,0.00034593,2011-0566IND +2012-0043,2012039S14075,90.3,MDG,450,SI,2012,100000000,2014,107598319.7,107520211.8,-0.000726185,2012-0043MDG +2012-0259,2012201N15129,160.1,CHN,156,WP3,2012,329000000,2014,402859805.3,402882496,5.63E-05,2012-0259CHN +2012-0260,2012209N11131,306.2,TWN,158,WP4,2012,27000000,2014,28883557.6,28892236.54,0.000300435,2012-0260TWN +2012-0276,2012215N12313,60.3,MEX,484,NA1,2012,300000000,2014,328342750.7,328480450.5,0.00041929,2012-0276MEX +2012-0282,2012215N23146,55,CHN,156,WP3,2012,1500000000,2014,1836746833,1830219334,-0.003560167,2012-0282CHN +2012-0294,2012225N16133,136.9,CHN,156,WP3,2012,262000000,2014,320818446.7,320777868.8,-0.00012649,2012-0294CHN +2012-0294,2012225N16133,33.5,PHL,608,WP2,2012,3000000,2014,3413756.742,3418483.017,0.001383522,2012-0294PHL +2012-0294,2012225N16133,61.3,VNM,704,WP1,2012,6800000,2014,8125989.117,8149995.198,0.00294988,2012-0294VNM +2012-0313,2012234N16315,75.7,USA,840,NA2,2012,2000000000,2014,2163578370,2161055349,-0.001166814,2012-0313USA +2012-0401,2012166N09269,46.1,MEX,484,NA1,2012,555000000,2014,607434088.9,610325397.7,0.00474858,2012-0401MEX +2012-0406,2012296N06135,51.5,CHN,156,WP3,2012,197000000,2014,241226084,241139506.5,-0.00035897,2012-0406CHN +2012-0406,2012296N06135,112.3,PHL,608,WP2,2012,1339000,2014,1523673.426,1521994.525,-0.001102485,2012-0406PHL +2012-0406,2012296N06135,100.4,VNM,704,WP1,2012,336000000,2014,401519462.3,400817204.3,-0.001750533,2012-0406VNM +2012-0410,2012296N14283,162.2,JAM,388,NA1,2012,16542000,2014,15483975.86,15480905.55,-0.000198309,2012-0410JAM +2012-0410,2012296N14283,94.3,USA,840,NA2,2012,50000000000,2014,54089459244,53991359585,-0.001815302,2012-0410USA +2012-0414,2012232N13141,255.1,JPN,392,WP4,2012,86000000,2014,67245080.24,67227907.25,-0.000255412,2012-0414JPN +2012-0414,2012232N13141,31.2,KOR,410,WP4,2012,450000000,2014,519378870.9,517916090.4,-0.002820377,2012-0414KOR +2012-0498,2012346S14180,244,FJI,242,OC,2012,8400000,2014,9481515.123,9479088.612,-0.000255953,2012-0498FJI +2012-0498,2012346S14180,83,WSM,882,OC,2012,133000000,2014,133663025.6,133838355.8,0.001310873,2012-0498WSM +2012-0500,2012331N03157,85.6,PHL,608,WP2,2012,898352000,2014,1022251732,1020502716,-0.00171241,2012-0500PHL +2012-0588,2012254N09135,325.7,JPN,392,WP4,2012,31000000,2014,24239505.67,42923630.54,0.571438735,2012-0588JPN +2012-0588,2012254N09135,198.7,KOR,410,WP4,2012,349000000,2014,402807168.8,403100611.2,0.000728228,2012-0588KOR +2013-0032,2013046S20042,44,MDG,450,SI,2013,25000000,2014,25169373.46,25243534.94,0.002942164,2013-0032MDG +2013-0249,2013187N20156,67.9,CHN,156,WP3,2013,460000000,2014,501902623.4,502723049.4,0.001633297,2013-0249CHN +2013-0258,2013178N09133,95.3,CHN,156,WP3,2013,177000000,2014,193123400.7,192852737.9,-0.001402485,2013-0258CHN +2013-0258,2013178N09133,263.2,PHL,608,WP2,2013,1000000,2014,1046897.37,1046966.916,6.64E-05,2013-0258PHL +2013-0272,2013220N12137,73.3,CHN,156,WP3,2013,2120000000,2014,2313116438,2310410970,-0.001170305,2013-0272CHN +2013-0272,2013220N12137,129.6,PHL,608,WP2,2013,32431000,2014,33951928.59,33991276.65,0.001158264,2013-0272PHL +2013-0306,2013228N23124,108.7,CHN,156,WP3,2013,376000000,2014,410250840,409855850.5,-0.000963264,2013-0306CHN +2013-0306,2013228N23124,36.1,TWN,158,WP4,2013,12000000,2014,12443691.25,12287826.89,-0.012604679,2013-0306TWN +2013-0341,2013210N13123,93.8,CHN,156,WP3,2013,20000000,2014,21821853.19,21795648.16,-0.001201584,2013-0341CHN +2013-0341,2013210N13123,70.9,VNM,704,WP1,2013,1000000,2014,1087504.092,1085162.161,-0.002155814,2013-0341VNM +2013-0401,2013281N12098,89,IND,356,NI,2013,633471000,2014,695703513,696115605.6,0.000592164,2013-0401IND +2013-0419,2013269N15118,43,VNM,704,WP1,2013,663230000,2014,721265338.8,723859353.8,0.003590026,2013-0419VNM +2013-0429,2013272N10135,41.9,CHN,156,WP3,2013,6700000000,2014,7310320819,7266229953,-0.006049579,2013-0429CHN +2013-0430,2013282N14132,148.9,PHL,608,WP2,2013,96723000,2014,101259054.3,101188259.5,-0.00069939,2013-0430PHL +2013-0430,2013282N14132,117.1,VNM,704,WP1,2013,76000000,2014,82650310.98,82572342.38,-0.0009438,2013-0430VNM +2013-0433,2013306N07162,50.9,PHL,608,WP2,2013,10000000000,2014,10468973696,10506773245,0.003604123,2013-0433PHL +2013-0433,2013306N07162,45.5,VNM,704,WP1,2013,734000000,2014,798228003.4,798138198.4,-0.000112512,2013-0433VNM +2013-0437,2013301N13142,141.4,PHL,608,WP2,2013,4729000,2014,4950777.661,4956830.361,0.001221829,2013-0437PHL +2014-0001,2014004S17183,39.4,TON,776,OC,2014,31000000,2014,31000000,30964281.91,-0.001152861,2014-0001TON +2014-0096,2014068S16169,31.3,VUT,548,OC,2014,2000000,2014,2000000,2008990.461,0.004485157,2014-0096VUT +2014-0227,2014190N08154,130.9,CHN,156,WP3,2014,4232973000,2014,4232973000,4228685985,-0.00101328,2014-0227CHN +2014-0227,2014190N08154,248.5,PHL,608,WP2,2014,820576000,2014,820576000,820579917.5,4.77E-06,2014-0227PHL +2014-0227,2014190N08154,40.8,VNM,704,WP1,2014,6200000,2014,6200000,6228610.472,0.004603978,2014-0227VNM +2014-0236,2014184N08147,35.4,JPN,392,WP4,2014,156000000,2014,156000000,156761680.5,0.004870686,2014-0236JPN +2014-0240,2014197N10137,49.9,CHN,156,WP3,2014,500000000,2014,500000000,498637013.1,-0.002729696,2014-0240CHN +2014-0240,2014197N10137,325.7,TWN,158,WP4,2014,20000000,2014,20000000,84602726.23,1.442234217,2014-0240TWN +2014-0310,2014212N11242,37,USA,840,NA2,2014,66000000,2014,66000000,66401401.65,0.006063423,2014-0310USA +2014-0316,2014209N12152,300.1,JPN,392,WP4,2014,200000000,2014,200000000,200068150.7,0.000340696,2014-0316JPN +2014-0333,2014253N13260,66.1,MEX,484,NA1,2014,2500000000,2014,2500000000,2501601560,0.000640419,2014-0333MEX +2014-0390,2014254N10142,79.2,CHN,156,WP3,2014,2900000000,2014,2900000000,2892991825,-0.002419537,2014-0390CHN +2014-0390,2014254N10142,99.7,PHL,608,WP2,2014,19183000,2014,19183000,19172694.48,-0.000537366,2014-0390PHL +2014-0390,2014254N10142,101.3,VNM,704,WP1,2014,4500000,2014,4500000,4496723.336,-0.000728413,2014-0390VNM +2014-0392,2014279N11096,67.7,IND,356,NI,2014,7000000000,2014,7000000000,6989678402,-0.001475602,2014-0392IND +2014-0396,2014275N06166,255.2,JPN,392,WP4,2014,100000000,2014,100000000,100017513.4,0.000175118,2014-0396JPN +2014-0479,2014334N02156,85.4,PHL,608,WP2,2014,113878000,2014,113878000,113992423.7,0.001004287,2014-0479PHL +2014-0497,2014362N07130,57,PHL,608,WP2,2014,17688000,2014,17688000,17619650.11,-0.003871681,2014-0497PHL +2015-0017,2015012N09146,107.6,PHL,608,WP2,2015,1000000,2014,972027.6618,973519.9527,0.001534058,2015-0017PHL +2015-0053,2015045S12145,25.8,AUS,36,OC,2015,78000000,2014,84702479.43,2995180.152,-3.342140494,2015-0053AUS +2015-0079,2015047S15152,102.2,AUS,36,OC,2015,546000000,2014,592917356,592586612.4,-0.00055798,2015-0079AUS +2015-0093,2015066S08170,47.5,VUT,548,OC,2015,449400000,2014,496316510.4,497403875.7,0.002188474,2015-0093VUT +2015-0105,2015085N06162,45.7,FSM,583,OC,2015,11000000,2014,11098409.57,11055456.77,-0.003877684,2015-0105FSM +2015-0176,2015122N07144,228.3,JPN,392,WP4,2015,23200000,2014,25604132.8,25609493.6,0.000209351,2015-0176JPN +2015-0176,2015122N07144,193.8,PHL,608,WP2,2015,348000,2014,338265.6263,338117.5537,-0.000437837,2015-0176PHL +2015-0244,2015180N09160,37.4,CHN,156,WP3,2015,940000000,2014,890531131.4,891327043.9,0.000893351,2015-0244CHN +2015-0278,2015183N13130,169.9,CHN,156,WP3,2015,213000000,2014,201790564.9,201653318.2,-0.000680376,2015-0278CHN +2015-0278,2015183N13130,50.2,PHL,608,WP2,2015,2218000,2014,2155957.354,2153497.386,-0.001141661,2015-0278PHL +2015-0339,2015211N13162,61.1,CHN,156,WP3,2015,1282690000,2014,1215186571,1216891387,0.001401942,2015-0339CHN +2015-0458,2015263N14148,120.2,CHN,156,WP3,2015,661000000,2014,626213912.6,626317002.2,0.00016461,2015-0458CHN +2015-0462,2015285N14151,107,PHL,608,WP2,2015,210985000,2014,205083256.2,204978171.4,-0.000512532,2015-0462PHL +2015-0470,2015293N13266,100,MEX,484,NA1,2015,823000000,2014,924242990.8,923900657.4,-0.000370462,2015-0470MEX +2015-0473,2015242N12343,73.3,CPV,132,NA1,2015,1100000,2014,1281242.483,1282841.967,0.001247607,2015-0473CPV +2015-0479,2015270N27291,25.8,BHS,44,NA1,2015,90000000,2014,83627197.41,1129342.51,-4.304733181,2015-0479BHS +2015-0484,2015301N11065,67.3,YEM,887,NI,2015,200000000,2014,189625777.2,189687123.7,0.000323461,2015-0484YEM +2015-0490,2015273N12130,126.8,CHN,156,WP3,2015,4200000000,2014,3978968885,3980510860,0.000387456,2015-0490CHN +2015-0490,2015273N12130,46.9,PHL,608,WP2,2015,1300000,2014,1263635.96,1268652.402,0.003961988,2015-0490PHL +2015-0543,2015344N07145,189.3,PHL,608,WP2,2015,135217000,2014,131434664.3,131332251,-0.000779499,2015-0543PHL +2016-0041,2016041S14170,65.2,FJI,242,OC,2016,600000000,2014,575865848.2,575863677.2,-3.77E-06,2016-0041FJI +2016-0175,2016138N10081,44.8,BGD,50,NI,2016,600000000,2014,468492129.6,469418303.5,0.001974974,2016-0175BGD +2016-0268,2016207N17116,118.2,VNM,704,WP1,2016,191000000,2014,173254832,172984694.3,-0.00156041,2016-0268VNM +2016-0319,2016248N15255,102.2,MEX,484,NA1,2016,50000000,2014,60984824.31,60888078.84,-0.001587646,2016-0319MEX +2016-0322,2016242N24279,84.6,USA,840,NA2,2016,600000000,2014,561979044.5,561035932.5,-0.001679608,2016-0322USA +2016-0342,2016253N13144,145.2,CHN,156,WP3,2016,2300000000,2014,2154362604,2152625313,-0.000806731,2016-0342CHN +2016-0342,2016253N13144,25.8,PHL,608,WP2,2016,4913000,2014,4585811.217,269488.5479,-2.834196402,2016-0342PHL +2016-0350,2016266N11144,73.3,CHN,156,WP3,2016,830000000,2014,777443896.3,776944854,-0.000642107,2016-0350CHN +2016-0350,2016266N11144,314.9,TWN,158,WP4,2016,110000000,2014,109825691.6,109814310.5,-0.000103634,2016-0350TWN +2016-0361,2016269N15165,109,KOR,410,WP4,2016,126000000,2014,125690947.1,125667384.4,-0.000187483,2016-0361KOR +2016-0485,2016341N08092,116.9,IND,356,NI,2016,1000000000,2014,890280689.2,888918839.2,-0.001530857,2016-0485IND +2016-0503,2016355N07146,192.8,PHL,608,WP2,2016,103661000,2014,96757536.45,96759817.38,2.36E-05,2016-0503PHL +2017-0051,2017043S19040,42.6,MOZ,508,SI,2017,17000000,2014,22801692.01,22709916.84,-0.00403305,2017-0051MOZ +2017-0075,2017061S11061,63.7,MDG,450,SI,2017,20000000,2014,18562954.38,18597400.42,0.001853914,2017-0075MDG +2017-0105,2017081S13152,31.1,AUS,36,OC,2017,2700000000,2014,2988753820,3008926312,0.00672679,2017-0105AUS +2017-0281,2017195N16114,53.8,CHN,156,WP3,2017,3600000,2014,3083629.94,3082466.557,-0.000377348,2017-0281CHN +2017-0281,2017195N16114,30.3,VNM,704,WP1,2017,71000000,2014,59078283.51,58458649.26,-0.01054375,2017-0281VNM +2017-0334,2017219N16279,146.1,MEX,484,NA1,2017,2000000,2014,2284434.574,2285643.247,0.000528951,2017-0334MEX +2017-0352,2017232N19130,147.2,CHN,156,WP3,2017,3500000000,2014,2997973553,2996468738,-0.00050207,2017-0352CHN +2017-0352,2017232N19130,151.2,HKG,344,WP4,2017,755500000,2014,644890817.2,644839735.2,-7.92E-05,2017-0352HKG +2017-0352,2017232N19130,131.8,MAC,446,WP4,2017,1420000000,2014,1560609286,1560092036,-0.000331496,2017-0352MAC +2017-0362,2017228N14314,28.7,USA,840,NA2,2017,95000000000,2014,85426343701,85468133336,0.000489069,2017-0362USA +2017-0381,2017242N16333,60.9,ATG,28,NA1,2017,250000000,2014,211176356.8,211075260.6,-0.000478843,2017-0381ATG +2017-0381,2017242N16333,25.8,BHS,44,NA1,2017,2000000,2014,1801876.321,611837.893,-1.080116435,2017-0381BHS +2017-0381,2017242N16333,33.7,CUB,192,NA1,2017,13200000000,2014,10992753818,10904237007,-0.008084882,2017-0381CUB +2017-0381,2017242N16333,105.5,KNA,659,NA1,2017,20000000,2014,18484889.46,18486650.71,9.53E-05,2017-0381KNA +2017-0381,2017242N16333,48.7,TCA,796,NA1,2017,500000000,2014,500000000,500378956.6,0.000757626,2017-0381TCA +2017-0381,2017242N16333,84.4,USA,840,NA2,2017,57000000000,2014,51255806221,51206754325,-0.00095746,2017-0381USA +2017-0381,2017242N16333,25.8,VGB,92,NA1,2017,3000000000,2014,3000000000,623619994.9,-1.570826367,2017-0381VGB +2017-0383,2017260N12310,25.8,DMA,212,NA1,2017,1456000000,2014,1534596212,895118589.3,-0.53906636,2017-0383DMA +2017-0383,2017260N12310,45.1,DOM,214,NA1,2017,63000000,2014,54813712.03,54934660.22,0.002204101,2017-0383DOM +2017-0383,2017260N12310,59.3,PRI,630,NA1,2017,68000000000,2014,67009049565,67027181962,0.00027056,2017-0383PRI +2017-0406,2017253N14130,48.6,VNM,704,WP1,2017,484000000,2014,402730834.1,401345556.4,-0.00344564,2017-0406VNM +2017-0410,2017277N11279,90.2,USA,840,NA2,2017,250000000,2014,224806167.6,224976913.1,0.000759235,2017-0410USA +2017-0422,2017304N11127,58.9,VNM,704,WP1,2017,1000000000,2014,832088500.2,835046981.4,0.003549183,2017-0422VNM +2017-0432,2017288N09138,270,JPN,392,WP4,2017,1000000000,2014,995484463.5,995126307.3,-0.000359846,2017-0432JPN +2017-0468,2017252N14147,325.7,JPN,392,WP4,2017,500000000,2014,497742231.7,622698955.4,0.223980848,2017-0468JPN +2017-0485,2017236N15129,285.9,CHN,156,WP3,2017,56000000,2014,47967576.85,47983654.85,0.000335128,2017-0485CHN +2017-0508,2017333N06082,44.1,LKA,144,NI,2017,346000000,2014,314311010.2,316529153.6,0.007032376,2017-0508LKA \ No newline at end of file diff --git a/notebooks/vulnerability_onboarding/Wind/onboard.ipynb b/notebooks/vulnerability_onboarding/Wind/onboard.ipynb new file mode 100644 index 00000000..82a7d285 --- /dev/null +++ b/notebooks/vulnerability_onboarding/Wind/onboard.ipynb @@ -0,0 +1,266 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Regional tropical cyclone impact functions\n", + "\n", + "### CITATION\n", + "Eberenz S, Lüthi S, Bresch DN. Regional tropical cyclone impact functions for globally consistent risk assessments. Natural Hazards and Earth System Sciences. 2021 Jan 29;21(1):393-415.\n", + "\n", + "### LINK\n", + "https://nhess.copernicus.org/articles/21/393/2021/\n", + "\n", + "### NOTES\n", + "The data is used to provide a 'generic asset' vulnerability distribution. The fitted results are copied into Table_A2_Impact_Function_Slope.csv. \n", + "(a) the global default impact function (uncalibrated), (b) calibrated by optimizing RMSF, and (c) calibrated by optimizing TDR. The regions NA1 to WP4 are defined in Table A1. The row “combined” summarizes results for all regions combined based on the regionalized calibration; the row “global calibration” is based on one unified global calibration based on all matched TC 473 events. RMSF: root-mean-squared fraction; TDR: total damage ratio.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['NA1' 'NA2' 'NI' 'OC' 'SI' 'WP1' 'WP2' 'WP3' 'WP4' 'Combined'\n", + " 'Global calibration']\n", + "['59.6' '86' '58.7' '49.7' '46.8' '56.7' '84.7' '80.2' '135.6' '–' '73.4']\n" + ] + } + ], + "source": [ + "import json\n", + "import numpy as np\n", + "import pandas as pd\n", + "\n", + "df = pd.read_csv('Table_A2_Impact_Function_Slope.csv')\n", + "region = df[\"region\"].to_numpy()\n", + "vhalf = df[\"vhalf_b\"].to_numpy()\n", + "\n", + "\n", + "print(region)\n", + "print(vhalf)\n", + "#df = pd.read_csv('Table_S2_V_half_individual_fitting_per_event.csv')\n", + "#vhalf = df.where(df.region == \"WP2\").vhalf_fitted\n", + "#region = df[\"region\"].to_numpy()\n", + "#vhalf = df[\"vhalf_fitted\"].to_numpy()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(array([170., 103., 61., 36., 34., 10., 8., 15., 8., 28.]),\n", + " array([ 25.8 , 55.79, 85.78, 115.77, 145.76, 175.75, 205.74, 235.73,\n", + " 265.72, 295.71, 325.7 ]),\n", + " )" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "v_half = df[\"v_half_fitted [m/s]\"] #df[df.region == \"WP2\"][\"v_half_fitted [m/s]\"]\n", + "\n", + "import matplotlib.pyplot as plot\n", + "plot.hist(v_half)" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "103.40930232558141\n", + "[ 45.1 130.6]\n" + ] + } + ], + "source": [ + "print(v_half.mean())\n", + "import numpy as np\n", + "print(np.quantile(v_half, [0.25, 0.75]))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "def vul(v, v_half):\n", + " v_thresh = 25.7\n", + " #v_half = 135.6 # wp4 74.7 135.6 190.5\n", + " vn = np.where(v > v_thresh, v - v_thresh, 0) / (v_half - v_thresh)\n", + " f = vn**3 / (1 + vn**3)\n", + " return f\n", + "\n", + "v = np.arange(0, 90, 10)\n", + "fig, ax = plt.subplots() \n", + "#for item in v_half.to_numpy():\n", + "# ax.plot(v, vul(v, item))\n", + "ax.plot(v, vul(v, 74.7))\n", + "ax.plot(v, vul(v, 190.5))\n", + "ax.plot(v, vul(v, 135.6))\n", + "#ax.plot(v, vul(v, 100))\n", + "#ax.plot(v, vul(v, 220))" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(array([175., 51., 28., 19., 13., 17., 19., 17., 37., 97.]),\n", + " array([0.00149235, 0.10134311, 0.20119387, 0.30104464, 0.4008954 ,\n", + " 0.50074616, 0.60059692, 0.70044769, 0.80029845, 0.90014921,\n", + " 0.99999998]),\n", + " )" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.hist([vul(60, item) for item in v_half.to_numpy()])" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 39.2\n", + "1 106.8\n", + "2 58.4\n", + "3 70.1\n", + "4 37.6\n", + " ... \n", + "468 58.9\n", + "469 270.0\n", + "470 325.7\n", + "471 285.9\n", + "472 44.1\n", + "Name: v_half_fitted [m/s], Length: 473, dtype: float64" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "v_half" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "physrisk-og59E7IU", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.13" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/setup.cfg b/setup.cfg index 8e01c761..45bdad45 100644 --- a/setup.cfg +++ b/setup.cfg @@ -24,7 +24,7 @@ install_requires = numba==0.56.4 numpy==1.22.0 pillow==9.4.0 - pydantic==1.9.0 + pydantic==2.4.2 python-dotenv==0.19.2 requests==2.27.1 scipy==1.7.3 diff --git a/src/physrisk/api/v1/common.py b/src/physrisk/api/v1/common.py index ff3f4ed2..c31574cc 100644 --- a/src/physrisk/api/v1/common.py +++ b/src/physrisk/api/v1/common.py @@ -33,8 +33,8 @@ class Asset(BaseModel): asset_class: str = Field( description="name of asset class; corresponds to physrisk class names, e.g. PowerGeneratingAsset" ) - type: Optional[str] = Field(description="Type of the asset //") - location: Optional[str] + type: Optional[str] = Field(None, description="Type of the asset //") + location: Optional[str] = None latitude: float = Field(description="Latitude in degrees") longitude: float = Field(description="Longitude in degrees") diff --git a/src/physrisk/api/v1/exposure_req_resp.py b/src/physrisk/api/v1/exposure_req_resp.py index ac549e71..29d7d037 100644 --- a/src/physrisk/api/v1/exposure_req_resp.py +++ b/src/physrisk/api/v1/exposure_req_resp.py @@ -10,7 +10,9 @@ class AssetExposureRequest(BaseModel): """Impact calculation request.""" assets: Assets - calc_settings: CalcSettings = Field(default_factory=CalcSettings, description="Interpolation method.") + calc_settings: CalcSettings = Field( + default_factory=CalcSettings, description="Interpolation method." # type:ignore + ) scenario: str = Field("rcp8p5", description="Name of scenario ('rcp8p5')") year: int = Field( 2050, diff --git a/src/physrisk/api/v1/hazard_data.py b/src/physrisk/api/v1/hazard_data.py index cd2e7210..4f2ba548 100644 --- a/src/physrisk/api/v1/hazard_data.py +++ b/src/physrisk/api/v1/hazard_data.py @@ -59,7 +59,7 @@ class Scenario(BaseModel): id: str years: List[int] - periods: Optional[List[Period]] + # periods: Optional[List[Period]] def expanded(item: str, key: str, param: str): @@ -89,7 +89,7 @@ class HazardResource(BaseModel): description: str = Field( description="Brief description in mark down of the indicator and model that generated the indicator." ) - map: Optional[MapInfo] = Field(description="Optional information used for display of the indicator in a map.") + map: Optional[MapInfo] = Field(None, description="Optional information used for display of the indicator in a map.") scenarios: List[Scenario] = Field(description="Climate change scenarios for which the indicator is available.") units: str = Field(description="Units of the hazard indicator.") @@ -112,13 +112,13 @@ def expand_resource( resource: HazardResource, keys: List[str], params: Dict[str, List[str]] ) -> Iterable[HazardResource]: if len(keys) == 0: - yield resource.copy(deep=True, update={"params": {}}) + yield resource.model_copy(deep=True, update={"params": {}}) else: keys = keys.copy() key = keys.pop() for item in expand_resource(resource, keys, params): for param in params[key]: - yield item.copy( + yield item.model_copy( deep=True, update={ "indicator_id": expand(item.indicator_id, key, param), @@ -128,7 +128,7 @@ def expand_resource( "map": None if item.map is None else ( - item.map.copy( + item.map.model_copy( deep=True, update={"path": expand(item.map.path if item.map.path is not None else "", key, param)}, ) @@ -148,9 +148,9 @@ class InventorySource(Flag): class HazardAvailabilityRequest(BaseModel): - types: Optional[List[str]] # e.g. ["RiverineInundation"] + types: Optional[List[str]] = [] # e.g. ["RiverineInundation"] sources: Optional[List[str]] = Field( - description="Sources of inventory, can be 'embedded', 'hazard' or 'hazard_test'." + None, description="Sources of inventory, can be 'embedded', 'hazard' or 'hazard_test'." ) @@ -171,11 +171,11 @@ class HazardDataRequestItem(BaseModel): longitudes: List[float] latitudes: List[float] request_item_id: str - hazard_type: Optional[str] # e.g. RiverineInundation - event_type: Optional[str] # e.g. RiverineInundation; deprecated: use hazard_type + hazard_type: Optional[str] = None # e.g. RiverineInundation + event_type: Optional[str] = None # e.g. RiverineInundation; deprecated: use hazard_type indicator_id: str - indicator_model_gcm: Optional[str] - path: Optional[str] + indicator_model_gcm: Optional[str] = "" + path: Optional[str] = None scenario: str # e.g. rcp8p5 year: int @@ -188,7 +188,7 @@ class HazardDataRequest(BaseHazardRequest): class HazardDataResponseItem(BaseModel): intensity_curve_set: List[IntensityCurve] request_item_id: str - event_type: str + event_type: Optional[str] model: str scenario: str year: int diff --git a/src/physrisk/api/v1/impact_req_resp.py b/src/physrisk/api/v1/impact_req_resp.py index 957420e6..592444ab 100644 --- a/src/physrisk/api/v1/impact_req_resp.py +++ b/src/physrisk/api/v1/impact_req_resp.py @@ -1,5 +1,5 @@ from enum import Enum -from typing import List, Optional +from typing import Dict, List, Optional from pydantic import BaseModel, Field @@ -14,7 +14,9 @@ class AssetImpactRequest(BaseModel): """Impact calculation request.""" assets: Assets - calc_settings: CalcSettings = Field(default_factory=CalcSettings, description="Interpolation method.") + calc_settings: CalcSettings = Field( + default_factory=CalcSettings, description="Interpolation method." # type:ignore + ) include_asset_level: bool = Field(True, description="If true, include asset-level impacts.") include_measures: bool = Field(True, description="If true, include measures.") include_calc_details: bool = Field(True, description="If true, include impact calculation details.") @@ -25,32 +27,73 @@ class AssetImpactRequest(BaseModel): ) -# region Response +class Category(int, Enum): + NODATA = 0 + LOW = 1 + MEDIUM = 2 + HIGH = 3 + REDFLAG = 4 + + +class RiskMeasureDefinition(BaseModel): + measure_id: str = Field(None, description="Identifier for the risk measure.") + label: str = Field( + " List[HazardResource]: if not self._fs.exists(self._full_path(path)): return [] json_str = self.read_json(path) - models = parse_obj_as(HazardModels, json.loads(json_str)).resources + models = TypeAdapter(HazardModels).validate_python(json.loads(json_str)).resources return models def read_description_markdown(self, paths: List[str]) -> Dict[str, str]: @@ -73,7 +73,7 @@ def append(self, path: str, hazard_models: Iterable[HazardResource]): for model in hazard_models: combined[model.key()] = model models = HazardModels(resources=list(combined.values())) - json_str = json.dumps(models.dict()) + json_str = json.dumps(models.model_dump()) with self._fs.open(self._full_path(path), "w") as f: f.write(json_str) diff --git a/src/physrisk/hazard_models/core_hazards.py b/src/physrisk/hazard_models/core_hazards.py index 72697b90..d398bbcc 100644 --- a/src/physrisk/hazard_models/core_hazards.py +++ b/src/physrisk/hazard_models/core_hazards.py @@ -17,11 +17,14 @@ def first(self): def match(self, hint: HazardDataHint): return next(r for r in self.resources if r.path == hint.path) - def with_model_gcm(self, gcm): + def with_group_id(self, group_id: str): + return ResourceSubset(r for r in self.resources if r.group_id == group_id) + + def with_model_gcm(self, gcm: str): return ResourceSubset(r for r in self.resources if r.indicator_model_gcm == gcm) - def with_model_id(self, gcm): - return ResourceSubset(r for r in self.resources if r.indicator_model_id == gcm) + def with_model_id(self, model_id: str): + return ResourceSubset(r for r in self.resources if r.indicator_model_id == model_id) class ResourceSelector(Protocol): @@ -58,7 +61,7 @@ def source_paths(self) -> Dict[type, SourcePath]: ) return source_paths - def _add_selector(self, hazard_type: type, indicator_id: str, selector: ResourceSelector): + def add_selector(self, hazard_type: type, indicator_id: str, selector: ResourceSelector): self._selectors[ResourceSelectorKey(hazard_type, indicator_id)] = selector def _get_resource_source_path(self, hazard_type: str): @@ -90,10 +93,10 @@ class CoreInventorySourcePaths(InventorySourcePaths): def __init__(self, inventory: Inventory): super().__init__(inventory) for indicator_id in ["mean_work_loss/low", "mean_work_loss/medium", "mean_work_loss/high"]: - self._add_selector(ChronicHeat, indicator_id, self._select_chronic_heat) - self._add_selector(ChronicHeat, "mean/degree/days/above/32c", self._select_chronic_heat) - self._add_selector(RiverineInundation, "flood_depth", self._select_riverine_inundation) - self._add_selector(CoastalInundation, "flood_depth", self._select_coastal_inundation) + self.add_selector(ChronicHeat, indicator_id, self._select_chronic_heat) + self.add_selector(ChronicHeat, "mean/degree/days/above/32c", self._select_chronic_heat) + self.add_selector(RiverineInundation, "flood_depth", self._select_riverine_inundation) + self.add_selector(CoastalInundation, "flood_depth", self._select_coastal_inundation) def resources_with(self, *, hazard_type: type, indicator_id: str): return ResourceSubset(self._inventory.resources_by_type_id[(hazard_type.__name__, indicator_id)]) @@ -146,5 +149,9 @@ def cmip6_scenario_to_rcp(scenario: str): return scenario +def get_default_source_path_provider(inventory: Inventory = EmbeddedInventory()): + return CoreInventorySourcePaths(inventory) + + def get_default_source_paths(inventory: Inventory = EmbeddedInventory()): return CoreInventorySourcePaths(inventory).source_paths() diff --git a/src/physrisk/kernel/calculation.py b/src/physrisk/kernel/calculation.py index 4fa679c8..46789da5 100644 --- a/src/physrisk/kernel/calculation.py +++ b/src/physrisk/kernel/calculation.py @@ -29,7 +29,10 @@ def get_default_vulnerability_models() -> Dict[type, Sequence[VulnerabilityModel """Get default exposure/vulnerability models for different asset types.""" return { PowerGeneratingAsset: [pgam.InundationModel()], - RealEstateAsset: [RealEstateCoastalInundationModel(), RealEstateRiverineInundationModel()], + RealEstateAsset: [ + RealEstateCoastalInundationModel(), + RealEstateRiverineInundationModel(), + ], IndustrialActivity: [ChronicHeatGZNModel()], ThermalPowerGeneratingAsset: [ ThermalPowerGenerationCoastalInundationModel(), diff --git a/src/physrisk/kernel/hazards.py b/src/physrisk/kernel/hazards.py index 2bdb350b..e5799663 100644 --- a/src/physrisk/kernel/hazards.py +++ b/src/physrisk/kernel/hazards.py @@ -1,3 +1,4 @@ +import inspect import sys from enum import Enum from typing import cast @@ -34,6 +35,11 @@ class ChronicHeat(Hazard): pass +class ChronicWind(Hazard): + kind = HazardKind.chronic + pass + + class CombinedInundation(Hazard): kind = HazardKind.chronic pass @@ -69,5 +75,11 @@ class Wind(Hazard): pass +def all_hazards(): + return [ + obj for _, obj in inspect.getmembers(sys.modules[__name__]) if inspect.isclass(obj) and issubclass(obj, Hazard) + ] + + def hazard_class(name: str): return getattr(sys.modules[__name__], name) diff --git a/src/physrisk/kernel/risk.py b/src/physrisk/kernel/risk.py index 27e1ef78..30ca1ef3 100644 --- a/src/physrisk/kernel/risk.py +++ b/src/physrisk/kernel/risk.py @@ -1,8 +1,10 @@ -from typing import Dict, List, NamedTuple, Optional, Protocol, Sequence, Tuple +from dataclasses import dataclass +from typing import Dict, List, NamedTuple, Optional, Protocol, Sequence, Set, Tuple, Type, Union -from physrisk.api.v1.impact_req_resp import RiskMeasureResult +from physrisk.api.v1.impact_req_resp import Category, ScoreBasedRiskMeasureDefinition from physrisk.kernel.assets import Asset from physrisk.kernel.hazard_model import HazardModel +from physrisk.kernel.hazards import Hazard, all_hazards from physrisk.kernel.impact import AssetImpactResult, calculate_impacts from physrisk.kernel.impact_distrib import ImpactDistrib from physrisk.kernel.vulnerability_model import VulnerabilityModelBase @@ -63,11 +65,21 @@ class MeasureKey(NamedTuple): hazard_type: type +@dataclass +class Measure: + score: Category + measure_0: float + definition: ScoreBasedRiskMeasureDefinition # reference to single instance of ScoreBasedRiskMeasureDefinition + + class RiskMeasureCalculator(Protocol): - def calc_measure(self, hazard_type: type, base_impact: ImpactDistrib, impact: ImpactDistrib) -> RiskMeasureResult: + def calc_measure(self, hazard_type: type, base_impact: ImpactDistrib, impact: ImpactDistrib) -> Measure: + ... + + def get_definition(self, hazard_type: type) -> ScoreBasedRiskMeasureDefinition: ... - def supported_hazards(self) -> List[type]: + def supported_hazards(self) -> Set[type]: ... @@ -78,6 +90,14 @@ def __init__( vulnerability_models: Dict[type, Sequence[VulnerabilityModelBase]], measure_calculators: Dict[type, RiskMeasureCalculator], ): + """Risk model that calculates risk measures at the asset level for a sequence + of assets. + + Args: + hazard_model (HazardModel): The hazard model. + vulnerability_models (Dict[type, Sequence[VulnerabilityModelBase]]): Vulnerability models for asset types. + measure_calculators (Dict[type, RiskMeasureCalculator]): Risk measure calculators for asset types. + """ super().__init__(hazard_model, vulnerability_models) self._measure_calculators = measure_calculators @@ -85,9 +105,44 @@ def calculate_impacts(self, assets: Sequence[Asset], prosp_scens: Sequence[str], impacts = self._calculate_all_impacts(assets, prosp_scens, years) return impacts + def populate_measure_definitions( + self, assets: Sequence[Asset] + ) -> Tuple[Dict[Type[Hazard], List[str]], Dict[ScoreBasedRiskMeasureDefinition, str]]: + hazards = all_hazards() + # the identifiers of the score-based risk measures used for each asset, for each hazard type + measure_ids_for_hazard: Dict[Type[Hazard], List[str]] = {} + # one + calcs_by_asset = [self._measure_calculators.get(type(asset), None) for asset in assets] + used_calcs = {c for c in calcs_by_asset if c is not None} + # get all measures + measure_id_lookup = { + cal: f"measure_{i}" + for (i, cal) in enumerate( + set( + item + for item in ( + cal.get_definition(hazard_type=hazard_type) for hazard_type in hazards for cal in used_calcs + ) + if item is not None + ) + ) + } + + def get_measure_id(measure_calc: Union[RiskMeasureCalculator, None], hazard_type: type): + if measure_calc is None: + return "na" + measure = measure_calc.get_definition(hazard_type=hazard_type) + return measure_id_lookup[measure] if measure is not None else "na" + + for hazard_type in hazards: + measure_ids = [get_measure_id(calc, hazard_type) for calc in calcs_by_asset] + measure_ids_for_hazard[hazard_type] = measure_ids + return measure_ids_for_hazard, measure_id_lookup + def calculate_risk_measures(self, assets: Sequence[Asset], prosp_scens: Sequence[str], years: Sequence[int]): impacts = self._calculate_all_impacts(assets, prosp_scens, years) - measures: Dict[MeasureKey, RiskMeasureResult] = {} + measures: Dict[MeasureKey, Measure] = {} + for asset in assets: if type(asset) not in self._measure_calculators: continue @@ -102,5 +157,5 @@ def calculate_risk_measures(self, assets: Sequence[Asset], prosp_scens: Sequence impact = scenario_impacts[key].impact risk_ind = measure_calc.calc_measure(hazard_type, base_impact, impact) measures[MeasureKey(asset, prosp_scen, year, hazard_type)] = risk_ind - # if the fractional loss is material and materially increases + return impacts, measures diff --git a/src/physrisk/kernel/vulnerability_model.py b/src/physrisk/kernel/vulnerability_model.py index e7a768d2..e458c642 100644 --- a/src/physrisk/kernel/vulnerability_model.py +++ b/src/physrisk/kernel/vulnerability_model.py @@ -1,7 +1,7 @@ import importlib.resources import json from abc import ABC, abstractmethod -from typing import Iterable, List, Optional, Protocol, Tuple, Union +from typing import Iterable, List, Optional, Protocol, Sequence, Tuple, Union import numpy as np from scipy import stats @@ -171,6 +171,7 @@ def get_distributions( self.hazard_type, intensity_bin_edges, self.impact_bin_edges, + # np.eye(8, 11) self.get_impact_curve(intensity_bin_centres, asset).to_prob_matrix(self.impact_bin_edges), ) @@ -226,29 +227,41 @@ def beta_distrib(mean, std, scaling_factor): class DeterministicVulnerabilityModel(VulnerabilityModelAcuteBase): - """A vulnerability model that requires only specification of a damage/disruption curve. - This simple model contains no uncertainty around damage/disruption.""" - + def __init__( self, *, - event_type: type, - intensities, - impacts, - indicator_id="", + hazard_type: type, + damage_curve_intensities: Sequence[float], + damage_curve_impacts: Sequence[float], + indicator_id: str, buffer_zone: Optional[HazardDataBufferZone] = None, ): - self.event_type = event_type - self.intensities = intensities - self.impacts = impacts - self.indicator_id = indicator_id + """A vulnerability model that requires only specification of a damage/disruption curve. + This simple model contains no uncertainty around damage/disruption. The damage curve is passed via the + constructor. The edges of the (hazard) intensity bins are determined by the granularity of + the hazard data itself. The impact bin edges are inferred from the intensity bin edges, by + looking up the impact corresponding to the hazard indicator intensity from the damage curve. + + Args: + event_type (type): _description_ + damage_curve_intensities (Sequence[float]): Intensities + (i.e. hazard indicator values) of the damage/disruption (aka impact) curve. + damage_curve_impacts (Sequence[float]): Fractional damage to asset/disruption + to operation resulting from a hazard of the corresponding intensity. + indicator_id (str): ID of the hazard indicator to which this applies. Defaults to "". + buffer_zone (Optional[HazardDataBufferZone]): Delimitation of the area for the hazard data. + """ + super().__init__(indicator_id=indicator_id, hazard_type=hazard_type) + self.damage_curve_intensities = damage_curve_intensities + self.damage_curve_impacts = damage_curve_impacts self.buffer_zone = buffer_zone def get_data_requests( self, asset: Asset, *, scenario: str, year: int ) -> Union[HazardDataRequest, Iterable[HazardDataRequest]]: return HazardDataRequest( - self.event_type, + self.hazard_type, asset.longitude, asset.latitude, scenario=scenario, @@ -266,10 +279,14 @@ def get_distributions( intensity_curve = ExceedanceCurve(1.0 / event_data.return_periods, event_data.intensities) intensity_bin_edges, probs = intensity_curve.get_probability_bins() - impact_bins_edges = np.interp(intensity_bin_edges, self.intensities, self.impacts) + # look up the impact bin edges + impact_bins_edges = np.interp(intensity_bin_edges, self.damage_curve_intensities, self.damage_curve_impacts) + # the vulnerability distribution probabilities are an identity matrix: + # we assume that if the intensity falls within a certain bin then the impacts *will* fall within the + # bin where the edges are obtained by applying the damage curve to the intensity bin edges. vul = VulnerabilityDistrib( - type(self.event_type), intensity_bin_edges, impact_bins_edges, np.eye(len(impact_bins_edges) - 1) + type(self.hazard_type), intensity_bin_edges, impact_bins_edges, np.eye(len(impact_bins_edges) - 1) ) - event = HazardEventDistrib(type(self.event_type), intensity_bin_edges, probs) + event = HazardEventDistrib(type(self.hazard_type), intensity_bin_edges, probs) return vul, event diff --git a/src/physrisk/requests.py b/src/physrisk/requests.py index 2717202a..2a560aa1 100644 --- a/src/physrisk/requests.py +++ b/src/physrisk/requests.py @@ -2,7 +2,7 @@ import json from importlib import import_module from pathlib import PosixPath -from typing import Any, Dict, List, Optional, cast +from typing import Any, Dict, List, Optional, Sequence, Type, cast import numpy as np @@ -16,7 +16,8 @@ from physrisk.data.zarr_reader import ZarrReader from physrisk.hazard_models.core_hazards import get_default_source_paths from physrisk.kernel.exposure import JupterExposureMeasure, calculate_exposures -from physrisk.kernel.risk import AssetLevelRiskModel, BatchId, MeasureKey +from physrisk.kernel.hazards import all_hazards +from physrisk.kernel.risk import AssetLevelRiskModel, BatchId, Measure, MeasureKey from .api.v1.hazard_data import ( HazardAvailabilityRequest, @@ -35,7 +36,12 @@ AssetImpactResponse, AssetLevelImpact, Assets, - AssetSingleHazardImpact, + AssetSingleImpact, + RiskMeasureKey, + RiskMeasures, + RiskMeasuresForAssets, + ScoreBasedRiskMeasureDefinition, + ScoreBasedRiskMeasureSetDefinition, ) from .data.image_creator import ImageCreator from .data.inventory import EmbeddedInventory, Inventory @@ -66,16 +72,18 @@ def __init__( def get(self, *, request_id, request_dict): if request_id == "get_hazard_data": request = HazardDataRequest(**request_dict) - return json.dumps(_get_hazard_data(request, hazard_model=self.hazard_model).dict()) # , allow_nan=False) + return json.dumps( + _get_hazard_data(request, hazard_model=self.hazard_model).model_dump() + ) # , allow_nan=False) elif request_id == "get_hazard_data_availability": request = HazardAvailabilityRequest(**request_dict) - return json.dumps(_get_hazard_data_availability(request, self.inventory, self.colormaps).dict()) + return json.dumps(_get_hazard_data_availability(request, self.inventory, self.colormaps).model_dump()) elif request_id == "get_hazard_data_description": request = HazardDescriptionRequest(**request_dict) return json.dumps(_get_hazard_data_description(request).dict()) elif request_id == "get_asset_exposure": request = AssetExposureRequest(**request_dict) - return json.dumps(_get_asset_exposures(request, self.hazard_model).dict(exclude_none=True)) + return json.dumps(_get_asset_exposures(request, self.hazard_model).model_dump(exclude_none=True)) elif request_id == "get_asset_impact": request = AssetImpactRequest(**request_dict) return dumps(_get_asset_impacts(request, self.hazard_model).dict()) @@ -205,9 +213,9 @@ def _get_hazard_data(request: HazardDataRequest, hazard_model: HazardModel): intensity_curves = [ IntensityCurve(intensities=list(resp.intensities), return_periods=list(resp.return_periods)) if isinstance(resp, hmHazardEventDataResponse) - else IntensityCurve(intensities=[resp.parameter], return_periods=[]) + else IntensityCurve(intensities=[float(resp.parameter)], return_periods=[]) if isinstance(resp, HazardParameterDataResponse) - else None + else IntensityCurve(intensities=[], return_periods=[]) for resp in resps ] response.items.append( @@ -271,18 +279,17 @@ def _get_asset_impacts(request: AssetImpactRequest, hazard_model: HazardModel): years = [request.year] if request.include_measures: batch_impacts, measures = risk_model.calculate_risk_measures(assets, scenarios, years) + measure_ids_for_asset, definitions = risk_model.populate_measure_definitions(assets) + risk_measures = _create_risk_measures(measures, measure_ids_for_asset, definitions, assets, scenarios, years) else: batch_impacts = risk_model.calculate_impacts(assets, scenarios, years) - measures = None + risk_measures = None - # results = calculate_impacts( - # assets, hazard_model, vulnerability_models, scenario=request.scenario, year=request.year - # ) results = batch_impacts[BatchId(scenarios[0], years[0])] # note that this does rely on ordering of dictionary (post 3.6) - impacts: Dict[Asset, List[AssetSingleHazardImpact]] = {} - for (asset, hazard_type), v in results.items(): + impacts: Dict[Asset, List[AssetSingleImpact]] = {} + for (asset, _), v in results.items(): # calculation details if v.event is not None and v.vulnerability is not None: hazard_exceedance = v.event.to_exceedance_curve() @@ -302,11 +309,9 @@ def _get_asset_impacts(request: AssetImpactRequest, hazard_model: HazardModel): ) impact_exceedance = v.impact.to_exceedance_curve() - measure_key = MeasureKey(asset, scenarios[0], years[0], v.impact.hazard_type) - hazard_impacts = AssetSingleHazardImpact( + hazard_impacts = AssetSingleImpact( hazard_type=v.impact.hazard_type.__name__, impact_type=v.impact.impact_type.name, - risk_measure=None if measures is None or measure_key not in measures else measures[measure_key], impact_exceedance=ExceedanceCurve( values=impact_exceedance.values, exceed_probabilities=impact_exceedance.probs ), @@ -320,7 +325,64 @@ def _get_asset_impacts(request: AssetImpactRequest, hazard_model: HazardModel): asset_impacts = [AssetLevelImpact(asset_id="", impacts=a) for a in impacts.values()] - return AssetImpactResponse(asset_impacts=asset_impacts) + return AssetImpactResponse(asset_impacts=asset_impacts, risk_measures=risk_measures) + + +def _create_risk_measures( + measures: Dict[MeasureKey, Measure], + measure_ids_for_asset: Dict[Type[Hazard], List[str]], + definitions: Dict[ScoreBasedRiskMeasureDefinition, str], + assets: List[Asset], + scenarios: Sequence[str], + years: Sequence[int], +) -> RiskMeasures: + """Prepare RiskMeasures object for (JSON) output from measure results. + + Args: + measures (Dict[MeasureKey, Measure]): The score-based risk measures. + measure_ids_for_asset (Dict[Type[Hazard], List[str]]): IDs of the score-based risk measures + for each asset. + definitions (Dict[ScoreBasedRiskMeasureDefinition, str]): Map of the score-based risk measures + definitions to ID. + assets (List[Asset]): Assets. + scenarios (Sequence[str]): Scenario IDs. + years (Sequence[int]): Years. + + Returns: + RiskMeasures: Output for writing to JSON. + """ + hazard_types = all_hazards() + measure_set_id = "measure_set_1" + measures_for_assets: List[RiskMeasuresForAssets] = [] + for hazard_type in hazard_types: + for scenario_id in scenarios: + for year in years: + # we calculate and tag results for each scenario, year and hazard + score_key = RiskMeasureKey( + hazard_type=hazard_type.__name__, scenario_id=scenario_id, year=str(year), measure_id=measure_set_id + ) + scores = [-1] * len(assets) + measures_0 = [float("nan")] * len(assets) + for i, asset in enumerate(assets): + # look up result using the MeasureKey: + measure_key = MeasureKey(asset=asset, prosp_scen=scenario_id, year=year, hazard_type=hazard_type) + measure = measures.get(measure_key, None) + if measure is not None: + scores[i] = measure.score + measures_0[i] = measure.measure_0 + measures_for_assets.append( + RiskMeasuresForAssets(key=score_key, scores=scores, measures_0=measures_0, measures_1=None) + ) + score_based_measure_set_defn = ScoreBasedRiskMeasureSetDefinition( + measure_set_id=measure_set_id, + asset_measure_ids_for_hazard={k.__name__: v for k, v in measure_ids_for_asset.items()}, + score_definitions={v: k for (k, v) in definitions.items()}, + ) + return RiskMeasures( + measures_for_assets=measures_for_assets, + score_based_measure_set_defn=score_based_measure_set_defn, + measures_definitions=None, + ) def _get_example_portfolios() -> List[Assets]: diff --git a/src/physrisk/risk_models/risk_models.py b/src/physrisk/risk_models/risk_models.py index ee56da87..f66b511c 100644 --- a/src/physrisk/risk_models/risk_models.py +++ b/src/physrisk/risk_models/risk_models.py @@ -1,9 +1,9 @@ -from typing import List +from typing import Set -from physrisk.api.v1.impact_req_resp import Category, Indicator, RiskMeasureResult -from physrisk.kernel.hazards import CoastalInundation, Hazard, HazardKind, RiverineInundation +from physrisk.api.v1.impact_req_resp import Category, RiskScoreValue, ScoreBasedRiskMeasureDefinition +from physrisk.kernel.hazards import CoastalInundation, RiverineInundation, Wind from physrisk.kernel.impact_distrib import ImpactDistrib -from physrisk.kernel.risk import RiskMeasureCalculator +from physrisk.kernel.risk import Measure, RiskMeasureCalculator class RealEstateToyRiskMeasures(RiskMeasureCalculator): @@ -11,41 +11,75 @@ class RealEstateToyRiskMeasures(RiskMeasureCalculator): def __init__(self): self.model_summary = {"*Toy* model for real estate risk assessment."} - self._category_defns = { - Category.NODATA: "No information.", - Category.LOW: "Marginal impact on real estate valuation very unlikely under RCP 8.5.", - Category.MEDIUM: "Material marginal impact on real estate valuation unlikely under RCP 8.5.", - Category.HIGH: "Material marginal impact on real estate valuation possible under RCP 8.5.", - Category.REDFLAG: "Material marginal impact on real estate valuation likely under RCP 8.5 " - "with possible impact on availability of insurance.", + self.return_period = 100.0 # criteria based on 1 in 100-year flood or cyclone events + self.measure_thresholds = { + Category.REDFLAG: 0.3, + Category.HIGH: 0.1, + Category.MEDIUM: 0.05, } + definition = ScoreBasedRiskMeasureDefinition( + hazard_types=[RiverineInundation.__name__, CoastalInundation.__name__], + values=[ + RiskScoreValue( + value=Category.REDFLAG, + label="Material marginal impact on valuation very likely.", + description=self._description(Category.REDFLAG), + ), + RiskScoreValue( + value=Category.HIGH, + label="Material marginal impact on valuation likely.", + description=self._description(Category.HIGH), + ), + RiskScoreValue( + value=Category.MEDIUM, + label="Marginal impact on valuation possible.", + description=self._description(Category.MEDIUM), + ), + RiskScoreValue( + value=Category.LOW, + label="Marginal impact on valuation very unlikely.", + description=self._description(Category.LOW), + ), + RiskScoreValue(value=Category.NODATA, label="No data.", description="No data."), + ], + child_measure_ids=["annual_loss_{return_period:0.0f}year"], + ) + self.measure_definitions = [definition] + self._definition_lookup = {RiverineInundation: definition, CoastalInundation: definition} - def calc_measure(self, hazard_type: type, base_impact: ImpactDistrib, impact: ImpactDistrib) -> RiskMeasureResult: - if Hazard.kind(base_impact.hazard_type) == HazardKind.acute: - return_period = 100.0 # criterion based on 1 in 100-year flood events - histo_loss = base_impact.to_exceedance_curve().get_value(1.0 / return_period) - future_loss = impact.to_exceedance_curve().get_value(1.0 / return_period) - loss_increase = future_loss - histo_loss - - if loss_increase > 0.3: - category = Category.REDFLAG - elif loss_increase > 0.1: - category = Category.HIGH - elif loss_increase > 0.05: - category = Category.MEDIUM - else: - category = Category.LOW - - summary = ( - f"Projected 1-in-{return_period:0.0f} year annual loss " - f"increases by {loss_increase*100:0.0f}% of asset value over historical baseline. " + def _description(self, category: Category): + return ( + ( + f"Projected 1-in-{self.return_period:0.0f} year annual loss " + f"increases by less than {self.measure_thresholds[Category.MEDIUM]*100:0.0f}% of asset value " + f"over historical baseline." ) - cat_defn = self._category_defns[category] - indicator = Indicator(value=loss_increase, label=f"{loss_increase * 100:0.0f}%") + if category == Category.LOW + else ( + f"Projected 1-in-{self.return_period:0.0f} year annual loss " + f"increases by at least {self.measure_thresholds[category]*100:0.0f}% of asset value over " + f"historical baseline." + ) + ) + + def calc_measure(self, hazard_type: type, base_impact: ImpactDistrib, impact: ImpactDistrib) -> Measure: + return_period = 100.0 # criterion based on 1 in 100-year flood events + histo_loss = base_impact.to_exceedance_curve().get_value(1.0 / return_period) + future_loss = impact.to_exceedance_curve().get_value(1.0 / return_period) + loss_increase = future_loss - histo_loss - return RiskMeasureResult(category=category, cat_defn=cat_defn, indicators=[indicator], summary=summary) + if loss_increase > self.measure_thresholds[Category.REDFLAG]: + score = Category.REDFLAG + elif loss_increase > self.measure_thresholds[Category.HIGH]: + score = Category.HIGH + elif loss_increase > self.measure_thresholds[Category.MEDIUM]: + score = Category.MEDIUM else: - raise NotImplementedError() + score = Category.LOW + return Measure(score=score, measure_0=loss_increase, definition=self.get_definition(hazard_type)) + + def get_definition(self, hazard_type: type): + return self._definition_lookup.get(hazard_type, None) - def supported_hazards(self) -> List[type]: - return [RiverineInundation, CoastalInundation] + def supported_hazards(self) -> Set[type]: + return set([RiverineInundation, CoastalInundation, Wind]) diff --git a/src/physrisk/vulnerability_models/real_estate_models.py b/src/physrisk/vulnerability_models/real_estate_models.py index e0f9b3bb..8e1f5b9c 100644 --- a/src/physrisk/vulnerability_models/real_estate_models.py +++ b/src/physrisk/vulnerability_models/real_estate_models.py @@ -9,8 +9,13 @@ from physrisk.kernel.vulnerability_matrix_provider import VulnMatrixProvider from physrisk.kernel.vulnerability_model import VulnerabilityModel -from ..kernel.hazards import CoastalInundation, RiverineInundation -from ..kernel.vulnerability_model import applies_to_events, checked_beta_distrib, get_vulnerability_curves_from_resource +from ..kernel.hazards import CoastalInundation, RiverineInundation, Wind +from ..kernel.vulnerability_model import ( + DeterministicVulnerabilityModel, + applies_to_events, + checked_beta_distrib, + get_vulnerability_curves_from_resource, +) class RealEstateInundationModel(VulnerabilityModel): @@ -123,3 +128,37 @@ def __init__( resource=resource, impact_bin_edges=impact_bin_edges, ) + + +class GenericTropicalCycloneModel(DeterministicVulnerabilityModel): + def __init__(self): + """A very simple generic tropical cyclone vulnerability model.""" + v_half = 74.7 # m/s + intensities = np.arange(0, 100, 10) + impacts = self.wind_damage(intensities, v_half) + super().__init__( + hazard_type=Wind, + damage_curve_intensities=intensities, + damage_curve_impacts=impacts, + indicator_id="max_speed", + ) + + def wind_damage(self, v: np.ndarray, v_half: float): + """Calculates damage based on functional form of + Emanuel K. Global warming effects on US hurricane damage. Weather, Climate, and Society. 2011 Oct 1;3(4):261-8. + Using a threshold speed of 25.7 m/s. + A review of the origin of parameters is available in + Eberenz S, Lüthi S, Bresch DN. Regional tropical cyclone impact functions for + globally consistent risk assessments. + Natural Hazards and Earth System Sciences. 2021 Jan 29;21(1):393-415. + which also provides suggested region-specific variations. + Args: + v (np.ndarray[float]): Wind speeds at which to calculate the fractional damage. + v_half (float): The 'v_half' function parameter. + + Returns: + np.ndarray[float]: Fractional damage. + """ + v_thresh = 25.7 # m/s + vn = np.where(v > v_thresh, v - v_thresh, 0) / (v_half - v_thresh) + return vn**3 / (1 + vn**3) diff --git a/src/test/api/test_data_requests.py b/src/test/api/test_data_requests.py index 7aee8fab..56a7b906 100644 --- a/src/test/api/test_data_requests.py +++ b/src/test/api/test_data_requests.py @@ -1,4 +1,3 @@ -import json import unittest from test.api.container import TestContainer from test.base_test import TestWithCredentials @@ -131,6 +130,13 @@ def test_zarr_reading_live(self): container = Container() requester = container.requester() + import json + from zipfile import ZipFile + + with ZipFile("src/test/api/test_lat_lons.json.zip") as z: + with z.open("test_lat_lons.json") as f: + data = json.loads(f.read()) + request1 = { "items": [ { @@ -145,6 +151,20 @@ def test_zarr_reading_live(self): ], } + request1 = { + "items": [ + { + "request_item_id": "test_inundation", + "event_type": "ChronicHeat", + "longitudes": data["longitudes"], + "latitudes": data["latitudes"], + "year": 2030, + "scenario": "ssp585", + "indicator_id": "mean_work_loss/high", + } + ], + } + response_floor = requester.get(request_id="get_hazard_data", request_dict=request1) request1["interpolation"] = "linear" # type: ignore response_linear = requester.get(request_id="get_hazard_data", request_dict=request1) diff --git a/src/test/api/test_impact_requests.py b/src/test/api/test_impact_requests.py index 49489243..6f0024d9 100644 --- a/src/test/api/test_impact_requests.py +++ b/src/test/api/test_impact_requests.py @@ -96,4 +96,6 @@ def test_example_portfolios(self): container = Container() requester = container.requester() response = requester.get(request_id="get_asset_impact", request_dict=request_dict) + with open("out.json", "w") as f: + f.write(response) assert response is not None diff --git a/src/test/api/test_lat_lons.json.zip b/src/test/api/test_lat_lons.json.zip new file mode 100644 index 00000000..a8529d3d Binary files /dev/null and b/src/test/api/test_lat_lons.json.zip differ diff --git a/src/test/kernel/test_exposure.py b/src/test/kernel/test_exposure.py index 49facf16..98dbdec3 100644 --- a/src/test/kernel/test_exposure.py +++ b/src/test/kernel/test_exposure.py @@ -36,7 +36,7 @@ def test_jupiter_exposure_service(self): ] ) request = AssetExposureRequest(assets=assets_api, scenario="ssp585", year=2050) - response = requester.get(request_id="get_asset_exposure", request_dict=request.dict()) + response = requester.get(request_id="get_asset_exposure", request_dict=request.model_dump()) result = AssetExposureResponse(**json.loads(response)).items[0] expected = dict((k.__name__, v) for (k, v) in expected.items()) for key in result.exposures.keys(): diff --git a/src/test/kernel/test_live_services.py b/src/test/kernel/test_live_services.py new file mode 100644 index 00000000..f4adab07 --- /dev/null +++ b/src/test/kernel/test_live_services.py @@ -0,0 +1,21 @@ +import pytest +import requests + +# url = "https://physrisk-api2-sandbox.apps.odh-cl1.apps.os-climate.org" +url = "http://127.0.0.1:5000" + + +@pytest.mark.skip("only as example") +def test_live_exposure(): + request = { + "assets": { + "items": [ + {"asset_class": "Asset", "type": None, "location": None, "latitude": 34.556, "longitude": 69.4787} + ] + }, + "calc_settings": {"hazard_interp": "floor"}, + "scenario": "ssp585", + "year": 2050, + } + result = requests.post(url + "/api/get_asset_exposure", json=request) + print(result.json()) diff --git a/src/test/models/test_wind_models.py b/src/test/models/test_wind_models.py new file mode 100644 index 00000000..4909331a --- /dev/null +++ b/src/test/models/test_wind_models.py @@ -0,0 +1,93 @@ +import test.data.hazard_model_store as hms + +import numpy as np + +from physrisk.data.pregenerated_hazard_model import ZarrHazardModel +from physrisk.hazard_models.core_hazards import ResourceSubset, get_default_source_path_provider +from physrisk.kernel.assets import RealEstateAsset +from physrisk.kernel.hazards import Wind +from physrisk.kernel.impact import calculate_impacts +from physrisk.vulnerability_models.real_estate_models import GenericTropicalCycloneModel + + +def test_wind_real_estate_model(): + scenario = "rcp8p5" + year = 2080 + # mock some IRIS data for the calculation: + store, root = hms.zarr_memory_store() + return_periods = [ + 10.0, + 20.0, + 30.0, + 40.0, + 50.0, + 60.0, + 70.0, + 80.0, + 90.0, + 100.0, + 200.0, + 300.0, + 400.0, + 500.0, + 600.0, + 700.0, + 800.0, + 900.0, + 1000.0, + ] + intensity = np.array( + [ + 37.279999, + 44.756248, + 48.712502, + 51.685001, + 53.520000, + 55.230000, + 56.302502, + 57.336250, + 58.452499, + 59.283749, + 63.312500, + 65.482498, + 66.352501, + 67.220001, + 67.767502, + 68.117500, + 68.372498, + 69.127502, + 70.897499, + ] + ) + shape, transform = hms.shape_transform_21600_43200(return_periods=return_periods) + path = f"wind/iris/v1/max_speed_{scenario}_{year}".format(scenario=scenario, year=year) + hms.add_curves( + root, hms.TestData.longitudes, hms.TestData.latitudes, path, shape, intensity, return_periods, transform + ) + + provider = get_default_source_path_provider() + + def select_iris_osc(candidates: ResourceSubset, scenario: str, year: int, hint=None): + return candidates.with_group_id("iris_osc").first() + + # specify use of IRIS (OSC contribution) + provider.add_selector(Wind, "max_speed", select_iris_osc) + + hazard_model = ZarrHazardModel(source_paths=provider.source_paths(), store=store) + assets = [ + RealEstateAsset(lat, lon, location="Asia", type="Buildings/Industrial") + for lon, lat in zip(hms.TestData.longitudes[0:1], hms.TestData.latitudes[0:1]) + ] + vulnerability_models = {RealEstateAsset: [GenericTropicalCycloneModel()]} + results = calculate_impacts(assets, hazard_model, vulnerability_models, scenario=scenario, year=year) + # check calculation + cum_probs = 1.0 / np.array(return_periods) + probs = cum_probs[:-1] - cum_probs[1:] + model = GenericTropicalCycloneModel() + edges = np.interp(intensity, model.damage_curve_intensities, model.damage_curve_impacts) + centres = (edges[1:] + edges[:-1]) / 2 + mean_check = np.sum(probs * centres) + + impact_distrib = results[(assets[0], Wind)].impact + mean_impact = impact_distrib.mean_impact() + np.testing.assert_allclose(mean_impact, mean_check) diff --git a/src/test/risk_models/test_risk_models.py b/src/test/risk_models/test_risk_models.py index 75068321..be3e1ad5 100644 --- a/src/test/risk_models/test_risk_models.py +++ b/src/test/risk_models/test_risk_models.py @@ -5,18 +5,18 @@ import numpy as np +from physrisk.api.v1.impact_req_resp import RiskMeasureKey from physrisk.data.pregenerated_hazard_model import ZarrHazardModel from physrisk.hazard_models.core_hazards import get_default_source_paths from physrisk.kernel.assets import RealEstateAsset from physrisk.kernel.calculation import get_default_vulnerability_models from physrisk.kernel.hazards import CoastalInundation, RiverineInundation from physrisk.kernel.risk import AssetLevelRiskModel, MeasureKey +from physrisk.requests import _create_risk_measures from physrisk.risk_models.risk_models import RealEstateToyRiskMeasures class TestRiskModels(unittest.TestCase): - """Tests RealEstateInundationModel.""" - def test_risk_indicator_model(self): source_paths = get_default_source_paths() scenarios = ["rcp8p5"] @@ -50,8 +50,33 @@ def sp_coastal(scenario, year): for lon, lat in zip(TestData.longitudes[0:1], TestData.latitudes[0:1]) ] + assets = [ + RealEstateAsset(TestData.latitudes[0], TestData.longitudes[0], location="Asia", type="Buildings/Industrial") + for i in range(2) + ] + model = AssetLevelRiskModel( hazard_model, get_default_vulnerability_models(), {RealEstateAsset: RealEstateToyRiskMeasures()} ) - impacts, measures = model.calculate_risk_measures(assets, prosp_scens=scenarios, years=years) - print(measures[MeasureKey(assets[0], scenarios[0], years[0], RiverineInundation)]) + measure_ids_for_asset, definitions = model.populate_measure_definitions(assets) + _, measures = model.calculate_risk_measures(assets, prosp_scens=scenarios, years=years) + + # how to get a score using the MeasureKey + measure = measures[MeasureKey(assets[0], scenarios[0], years[0], RiverineInundation)] + score = measure.score + measure_0 = measure.measure_0 + + # packing up the risk measures, e.g. for JSON transmission: + risk_measures = _create_risk_measures(measures, measure_ids_for_asset, definitions, assets, scenarios, years) + # we still have a key, but no asset: + key = RiskMeasureKey( + hazard_type="RiverineInundation", + scenario_id=scenarios[0], + year=str(years[0]), + measure_id=risk_measures.score_based_measure_set_defn.measure_set_id, + ) + item = next(m for m in risk_measures.measures_for_assets if m.key == key) + score2 = item.scores[0] + measure_0_2 = item.measures_0[0] + assert score == score2 + assert measure_0 == measure_0_2