From 31f36038aa0a3bec1374c5570c94e8221facd77c Mon Sep 17 00:00:00 2001 From: rettigl Date: Mon, 18 Nov 2024 02:38:57 +0000 Subject: [PATCH 01/14] Update dependencies --- poetry.lock | 122 ++++++++++++++++++++++++++-------------------------- 1 file changed, 62 insertions(+), 60 deletions(-) diff --git a/poetry.lock b/poetry.lock index f63c7c04..8cfdb2c5 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.4 and should not be changed by hand. [[package]] name = "aiofiles" @@ -1062,59 +1062,61 @@ typing = ["typing-extensions (>=4.12.2)"] [[package]] name = "fonttools" -version = "4.54.1" +version = "4.55.0" description = "Tools to manipulate font files" optional = false python-versions = ">=3.8" files = [ - {file = "fonttools-4.54.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7ed7ee041ff7b34cc62f07545e55e1468808691dddfd315d51dd82a6b37ddef2"}, - {file = "fonttools-4.54.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:41bb0b250c8132b2fcac148e2e9198e62ff06f3cc472065dff839327945c5882"}, - {file = "fonttools-4.54.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7965af9b67dd546e52afcf2e38641b5be956d68c425bef2158e95af11d229f10"}, - {file = "fonttools-4.54.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:278913a168f90d53378c20c23b80f4e599dca62fbffae4cc620c8eed476b723e"}, - {file = "fonttools-4.54.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0e88e3018ac809b9662615072dcd6b84dca4c2d991c6d66e1970a112503bba7e"}, - {file = "fonttools-4.54.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:4aa4817f0031206e637d1e685251ac61be64d1adef111060df84fdcbc6ab6c44"}, - {file = "fonttools-4.54.1-cp310-cp310-win32.whl", hash = "sha256:7e3b7d44e18c085fd8c16dcc6f1ad6c61b71ff463636fcb13df7b1b818bd0c02"}, - {file = "fonttools-4.54.1-cp310-cp310-win_amd64.whl", hash = "sha256:dd9cc95b8d6e27d01e1e1f1fae8559ef3c02c76317da650a19047f249acd519d"}, - {file = "fonttools-4.54.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5419771b64248484299fa77689d4f3aeed643ea6630b2ea750eeab219588ba20"}, - {file = "fonttools-4.54.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:301540e89cf4ce89d462eb23a89464fef50915255ece765d10eee8b2bf9d75b2"}, - {file = "fonttools-4.54.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76ae5091547e74e7efecc3cbf8e75200bc92daaeb88e5433c5e3e95ea8ce5aa7"}, - {file = "fonttools-4.54.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82834962b3d7c5ca98cb56001c33cf20eb110ecf442725dc5fdf36d16ed1ab07"}, - {file = "fonttools-4.54.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d26732ae002cc3d2ecab04897bb02ae3f11f06dd7575d1df46acd2f7c012a8d8"}, - {file = "fonttools-4.54.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:58974b4987b2a71ee08ade1e7f47f410c367cdfc5a94fabd599c88165f56213a"}, - {file = "fonttools-4.54.1-cp311-cp311-win32.whl", hash = "sha256:ab774fa225238986218a463f3fe151e04d8c25d7de09df7f0f5fce27b1243dbc"}, - {file = "fonttools-4.54.1-cp311-cp311-win_amd64.whl", hash = "sha256:07e005dc454eee1cc60105d6a29593459a06321c21897f769a281ff2d08939f6"}, - {file = "fonttools-4.54.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:54471032f7cb5fca694b5f1a0aaeba4af6e10ae989df408e0216f7fd6cdc405d"}, - {file = "fonttools-4.54.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8fa92cb248e573daab8d032919623cc309c005086d743afb014c836636166f08"}, - {file = "fonttools-4.54.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a911591200114969befa7f2cb74ac148bce5a91df5645443371aba6d222e263"}, - {file = "fonttools-4.54.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93d458c8a6a354dc8b48fc78d66d2a8a90b941f7fec30e94c7ad9982b1fa6bab"}, - {file = "fonttools-4.54.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5eb2474a7c5be8a5331146758debb2669bf5635c021aee00fd7c353558fc659d"}, - {file = "fonttools-4.54.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c9c563351ddc230725c4bdf7d9e1e92cbe6ae8553942bd1fb2b2ff0884e8b714"}, - {file = "fonttools-4.54.1-cp312-cp312-win32.whl", hash = "sha256:fdb062893fd6d47b527d39346e0c5578b7957dcea6d6a3b6794569370013d9ac"}, - {file = "fonttools-4.54.1-cp312-cp312-win_amd64.whl", hash = "sha256:e4564cf40cebcb53f3dc825e85910bf54835e8a8b6880d59e5159f0f325e637e"}, - {file = "fonttools-4.54.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6e37561751b017cf5c40fce0d90fd9e8274716de327ec4ffb0df957160be3bff"}, - {file = "fonttools-4.54.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:357cacb988a18aace66e5e55fe1247f2ee706e01debc4b1a20d77400354cddeb"}, - {file = "fonttools-4.54.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8e953cc0bddc2beaf3a3c3b5dd9ab7554677da72dfaf46951e193c9653e515a"}, - {file = "fonttools-4.54.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:58d29b9a294573d8319f16f2f79e42428ba9b6480442fa1836e4eb89c4d9d61c"}, - {file = "fonttools-4.54.1-cp313-cp313-win32.whl", hash = "sha256:9ef1b167e22709b46bf8168368b7b5d3efeaaa746c6d39661c1b4405b6352e58"}, - {file = "fonttools-4.54.1-cp313-cp313-win_amd64.whl", hash = "sha256:262705b1663f18c04250bd1242b0515d3bbae177bee7752be67c979b7d47f43d"}, - {file = "fonttools-4.54.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ed2f80ca07025551636c555dec2b755dd005e2ea8fbeb99fc5cdff319b70b23b"}, - {file = "fonttools-4.54.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9dc080e5a1c3b2656caff2ac2633d009b3a9ff7b5e93d0452f40cd76d3da3b3c"}, - {file = "fonttools-4.54.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d152d1be65652fc65e695e5619e0aa0982295a95a9b29b52b85775243c06556"}, - {file = "fonttools-4.54.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8583e563df41fdecef31b793b4dd3af8a9caa03397be648945ad32717a92885b"}, - {file = "fonttools-4.54.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:0d1d353ef198c422515a3e974a1e8d5b304cd54a4c2eebcae708e37cd9eeffb1"}, - {file = "fonttools-4.54.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:fda582236fee135d4daeca056c8c88ec5f6f6d88a004a79b84a02547c8f57386"}, - {file = "fonttools-4.54.1-cp38-cp38-win32.whl", hash = "sha256:e7d82b9e56716ed32574ee106cabca80992e6bbdcf25a88d97d21f73a0aae664"}, - {file = "fonttools-4.54.1-cp38-cp38-win_amd64.whl", hash = "sha256:ada215fd079e23e060157aab12eba0d66704316547f334eee9ff26f8c0d7b8ab"}, - {file = "fonttools-4.54.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f5b8a096e649768c2f4233f947cf9737f8dbf8728b90e2771e2497c6e3d21d13"}, - {file = "fonttools-4.54.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4e10d2e0a12e18f4e2dd031e1bf7c3d7017be5c8dbe524d07706179f355c5dac"}, - {file = "fonttools-4.54.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:31c32d7d4b0958600eac75eaf524b7b7cb68d3a8c196635252b7a2c30d80e986"}, - {file = "fonttools-4.54.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c39287f5c8f4a0c5a55daf9eaf9ccd223ea59eed3f6d467133cc727d7b943a55"}, - {file = "fonttools-4.54.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:a7a310c6e0471602fe3bf8efaf193d396ea561486aeaa7adc1f132e02d30c4b9"}, - {file = "fonttools-4.54.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:d3b659d1029946f4ff9b6183984578041b520ce0f8fb7078bb37ec7445806b33"}, - {file = "fonttools-4.54.1-cp39-cp39-win32.whl", hash = "sha256:e96bc94c8cda58f577277d4a71f51c8e2129b8b36fd05adece6320dd3d57de8a"}, - {file = "fonttools-4.54.1-cp39-cp39-win_amd64.whl", hash = "sha256:e8a4b261c1ef91e7188a30571be6ad98d1c6d9fa2427244c545e2fa0a2494dd7"}, - {file = "fonttools-4.54.1-py3-none-any.whl", hash = "sha256:37cddd62d83dc4f72f7c3f3c2bcf2697e89a30efb152079896544a93907733bd"}, - {file = "fonttools-4.54.1.tar.gz", hash = "sha256:957f669d4922f92c171ba01bef7f29410668db09f6c02111e22b2bce446f3285"}, + {file = "fonttools-4.55.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:51c029d4c0608a21a3d3d169dfc3fb776fde38f00b35ca11fdab63ba10a16f61"}, + {file = "fonttools-4.55.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bca35b4e411362feab28e576ea10f11268b1aeed883b9f22ed05675b1e06ac69"}, + {file = "fonttools-4.55.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9ce4ba6981e10f7e0ccff6348e9775ce25ffadbee70c9fd1a3737e3e9f5fa74f"}, + {file = "fonttools-4.55.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31d00f9852a6051dac23294a4cf2df80ced85d1d173a61ba90a3d8f5abc63c60"}, + {file = "fonttools-4.55.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e198e494ca6e11f254bac37a680473a311a88cd40e58f9cc4dc4911dfb686ec6"}, + {file = "fonttools-4.55.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7208856f61770895e79732e1dcbe49d77bd5783adf73ae35f87fcc267df9db81"}, + {file = "fonttools-4.55.0-cp310-cp310-win32.whl", hash = "sha256:e7e6a352ff9e46e8ef8a3b1fe2c4478f8a553e1b5a479f2e899f9dc5f2055880"}, + {file = "fonttools-4.55.0-cp310-cp310-win_amd64.whl", hash = "sha256:636caaeefe586d7c84b5ee0734c1a5ab2dae619dc21c5cf336f304ddb8f6001b"}, + {file = "fonttools-4.55.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:fa34aa175c91477485c44ddfbb51827d470011e558dfd5c7309eb31bef19ec51"}, + {file = "fonttools-4.55.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:37dbb3fdc2ef7302d3199fb12468481cbebaee849e4b04bc55b77c24e3c49189"}, + {file = "fonttools-4.55.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5263d8e7ef3c0ae87fbce7f3ec2f546dc898d44a337e95695af2cd5ea21a967"}, + {file = "fonttools-4.55.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f307f6b5bf9e86891213b293e538d292cd1677e06d9faaa4bf9c086ad5f132f6"}, + {file = "fonttools-4.55.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:f0a4b52238e7b54f998d6a56b46a2c56b59c74d4f8a6747fb9d4042190f37cd3"}, + {file = "fonttools-4.55.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3e569711464f777a5d4ef522e781dc33f8095ab5efd7548958b36079a9f2f88c"}, + {file = "fonttools-4.55.0-cp311-cp311-win32.whl", hash = "sha256:2b3ab90ec0f7b76c983950ac601b58949f47aca14c3f21eed858b38d7ec42b05"}, + {file = "fonttools-4.55.0-cp311-cp311-win_amd64.whl", hash = "sha256:aa046f6a63bb2ad521004b2769095d4c9480c02c1efa7d7796b37826508980b6"}, + {file = "fonttools-4.55.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:838d2d8870f84fc785528a692e724f2379d5abd3fc9dad4d32f91cf99b41e4a7"}, + {file = "fonttools-4.55.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f46b863d74bab7bb0d395f3b68d3f52a03444964e67ce5c43ce43a75efce9246"}, + {file = "fonttools-4.55.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33b52a9cfe4e658e21b1f669f7309b4067910321757fec53802ca8f6eae96a5a"}, + {file = "fonttools-4.55.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:732a9a63d6ea4a81b1b25a1f2e5e143761b40c2e1b79bb2b68e4893f45139a40"}, + {file = "fonttools-4.55.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7dd91ac3fcb4c491bb4763b820bcab6c41c784111c24172616f02f4bc227c17d"}, + {file = "fonttools-4.55.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1f0e115281a32ff532118aa851ef497a1b7cda617f4621c1cdf81ace3e36fb0c"}, + {file = "fonttools-4.55.0-cp312-cp312-win32.whl", hash = "sha256:6c99b5205844f48a05cb58d4a8110a44d3038c67ed1d79eb733c4953c628b0f6"}, + {file = "fonttools-4.55.0-cp312-cp312-win_amd64.whl", hash = "sha256:f8c8c76037d05652510ae45be1cd8fb5dd2fd9afec92a25374ac82255993d57c"}, + {file = "fonttools-4.55.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8118dc571921dc9e4b288d9cb423ceaf886d195a2e5329cc427df82bba872cd9"}, + {file = "fonttools-4.55.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:01124f2ca6c29fad4132d930da69158d3f49b2350e4a779e1efbe0e82bd63f6c"}, + {file = "fonttools-4.55.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81ffd58d2691f11f7c8438796e9f21c374828805d33e83ff4b76e4635633674c"}, + {file = "fonttools-4.55.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5435e5f1eb893c35c2bc2b9cd3c9596b0fcb0a59e7a14121562986dd4c47b8dd"}, + {file = "fonttools-4.55.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d12081729280c39d001edd0f4f06d696014c26e6e9a0a55488fabc37c28945e4"}, + {file = "fonttools-4.55.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a7ad1f1b98ab6cb927ab924a38a8649f1ffd7525c75fe5b594f5dab17af70e18"}, + {file = "fonttools-4.55.0-cp313-cp313-win32.whl", hash = "sha256:abe62987c37630dca69a104266277216de1023cf570c1643bb3a19a9509e7a1b"}, + {file = "fonttools-4.55.0-cp313-cp313-win_amd64.whl", hash = "sha256:2863555ba90b573e4201feaf87a7e71ca3b97c05aa4d63548a4b69ea16c9e998"}, + {file = "fonttools-4.55.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:00f7cf55ad58a57ba421b6a40945b85ac7cc73094fb4949c41171d3619a3a47e"}, + {file = "fonttools-4.55.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f27526042efd6f67bfb0cc2f1610fa20364396f8b1fc5edb9f45bb815fb090b2"}, + {file = "fonttools-4.55.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8e67974326af6a8879dc2a4ec63ab2910a1c1a9680ccd63e4a690950fceddbe"}, + {file = "fonttools-4.55.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61dc0a13451143c5e987dec5254d9d428f3c2789a549a7cf4f815b63b310c1cc"}, + {file = "fonttools-4.55.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:b2e526b325a903868c62155a6a7e24df53f6ce4c5c3160214d8fe1be2c41b478"}, + {file = "fonttools-4.55.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:b7ef9068a1297714e6fefe5932c33b058aa1d45a2b8be32a4c6dee602ae22b5c"}, + {file = "fonttools-4.55.0-cp38-cp38-win32.whl", hash = "sha256:55718e8071be35dff098976bc249fc243b58efa263768c611be17fe55975d40a"}, + {file = "fonttools-4.55.0-cp38-cp38-win_amd64.whl", hash = "sha256:553bd4f8cc327f310c20158e345e8174c8eed49937fb047a8bda51daf2c353c8"}, + {file = "fonttools-4.55.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3f901cef813f7c318b77d1c5c14cf7403bae5cb977cede023e22ba4316f0a8f6"}, + {file = "fonttools-4.55.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8c9679fc0dd7e8a5351d321d8d29a498255e69387590a86b596a45659a39eb0d"}, + {file = "fonttools-4.55.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd2820a8b632f3307ebb0bf57948511c2208e34a4939cf978333bc0a3f11f838"}, + {file = "fonttools-4.55.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23bbbb49bec613a32ed1b43df0f2b172313cee690c2509f1af8fdedcf0a17438"}, + {file = "fonttools-4.55.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:a656652e1f5d55b9728937a7e7d509b73d23109cddd4e89ee4f49bde03b736c6"}, + {file = "fonttools-4.55.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:f50a1f455902208486fbca47ce33054208a4e437b38da49d6721ce2fef732fcf"}, + {file = "fonttools-4.55.0-cp39-cp39-win32.whl", hash = "sha256:161d1ac54c73d82a3cded44202d0218ab007fde8cf194a23d3dd83f7177a2f03"}, + {file = "fonttools-4.55.0-cp39-cp39-win_amd64.whl", hash = "sha256:ca7fd6987c68414fece41c96836e945e1f320cda56fc96ffdc16e54a44ec57a2"}, + {file = "fonttools-4.55.0-py3-none-any.whl", hash = "sha256:12db5888cd4dd3fcc9f0ee60c6edd3c7e1fd44b7dd0f31381ea03df68f8a153f"}, + {file = "fonttools-4.55.0.tar.gz", hash = "sha256:7636acc6ab733572d5e7eec922b254ead611f1cdad17be3f0be7418e8bfaca71"}, ] [package.extras] @@ -1578,17 +1580,17 @@ files = [ [[package]] name = "json5" -version = "0.9.27" +version = "0.9.28" description = "A Python implementation of the JSON5 data format." optional = true python-versions = ">=3.8.0" files = [ - {file = "json5-0.9.27-py3-none-any.whl", hash = "sha256:17b43d78d3a6daeca4d7030e9bf22092dba29b1282cc2d0cfa56f6febee8dc93"}, - {file = "json5-0.9.27.tar.gz", hash = "sha256:5a19de4a6ca24ba664dc7d50307eb73ba9a16dea5d6bde85677ae85d3ed2d8e0"}, + {file = "json5-0.9.28-py3-none-any.whl", hash = "sha256:29c56f1accdd8bc2e037321237662034a7e07921e2b7223281a5ce2c46f0c4df"}, + {file = "json5-0.9.28.tar.gz", hash = "sha256:1f82f36e615bc5b42f1bbd49dbc94b12563c56408c6ffa06414ea310890e9a6e"}, ] [package.extras] -dev = ["build (==1.2.1)", "coverage (==7.5.3)", "mypy (==1.10.0)", "pip (==24.1)", "pylint (==3.2.3)", "ruff (==0.5.1)", "twine (==5.1.1)", "uv (==0.2.13)"] +dev = ["build (==1.2.2.post1)", "coverage (==7.5.3)", "mypy (==1.13.0)", "pip (==24.3.1)", "pylint (==3.2.3)", "ruff (==0.7.3)", "twine (==5.1.1)", "uv (==0.5.1)"] [[package]] name = "jsonpointer" @@ -4488,13 +4490,13 @@ testing = ["covdefaults (>=2.3)", "coverage (>=7.4.2)", "diff-cover (>=8.0.3)", [[package]] name = "sphinx-rtd-theme" -version = "3.0.1" +version = "3.0.2" description = "Read the Docs theme for Sphinx" optional = false python-versions = ">=3.8" files = [ - {file = "sphinx_rtd_theme-3.0.1-py2.py3-none-any.whl", hash = "sha256:921c0ece75e90633ee876bd7b148cfaad136b481907ad154ac3669b6fc957916"}, - {file = "sphinx_rtd_theme-3.0.1.tar.gz", hash = "sha256:a4c5745d1b06dfcb80b7704fe532eb765b44065a8fad9851e4258c8804140703"}, + {file = "sphinx_rtd_theme-3.0.2-py2.py3-none-any.whl", hash = "sha256:422ccc750c3a3a311de4ae327e82affdaf59eb695ba4936538552f3b00f4ee13"}, + {file = "sphinx_rtd_theme-3.0.2.tar.gz", hash = "sha256:b7457bc25dda723b20b086a670b9953c859eab60a2a03ee8eb2bb23e176e5f85"}, ] [package.dependencies] @@ -4719,13 +4721,13 @@ test = ["pytest", "ruff"] [[package]] name = "tomli" -version = "2.0.2" +version = "2.1.0" description = "A lil' TOML parser" optional = false python-versions = ">=3.8" files = [ - {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, - {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, + {file = "tomli-2.1.0-py3-none-any.whl", hash = "sha256:a5c57c3d1c56f5ccdf89f6523458f60ef716e210fc47c4cfb188c5ba473e0391"}, + {file = "tomli-2.1.0.tar.gz", hash = "sha256:3f646cae2aec94e17d04973e4249548320197cfabdf130015d023de4b74d8ab8"}, ] [[package]] From 5d5b8b7c152ac28c37467e77c65d5a6923277ec1 Mon Sep 17 00:00:00 2001 From: rettigl Date: Mon, 18 Nov 2024 22:18:38 +0100 Subject: [PATCH 02/14] limit matplotlib for pip installs --- poetry.lock | 4 ++-- pyproject.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/poetry.lock b/poetry.lock index 8cfdb2c5..b4702b0b 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.4 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. [[package]] name = "aiofiles" @@ -5164,4 +5164,4 @@ notebook = ["ipykernel", "jupyter", "jupyterlab", "jupyterlab-h5web"] [metadata] lock-version = "2.0" python-versions = ">=3.8, <3.11.9" -content-hash = "3ef2b60e9439e3df820760ce342bbff380d8cf8f0f5a682918b458838347f935" +content-hash = "0d13ddd5890b57ff407cbe802ac1d4e5f642a01f66789ee2b204c976e5a145ec" diff --git a/pyproject.toml b/pyproject.toml index 7273d0a1..ab166e70 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -22,7 +22,7 @@ h5py = ">=3.6.0" ipympl = ">=0.9.1" ipywidgets = "^7.7.1" lmfit = ">=1.0.3" -matplotlib = ">=3.5.1" +matplotlib = ">=3.5.1, <3.9.0" natsort = ">=8.1.0" numba = ">=0.55.1" numpy = ">=1.18, <2.0" From 42c8d18b75c8a5475bfb30bdb8129ece71c582ad Mon Sep 17 00:00:00 2001 From: "bump[bot]" Date: Mon, 18 Nov 2024 21:30:15 +0000 Subject: [PATCH 03/14] bump version to 0.3.2 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index ab166e70..3d33fa97 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,7 +3,7 @@ name = "sed-processor" packages = [ {include = "sed"} ] -version = "0.3.1" +version = "0.3.2" description = "Single Event Data Frame Processor: Backend to handle photoelectron resolved datastreams" authors = ["OpenCOMPES team "] readme = "README.md" From 643a6152121a7db132bb0a564cb723d93159f9a2 Mon Sep 17 00:00:00 2001 From: Dmytro Kutnyakhov Date: Mon, 12 Aug 2024 15:04:51 +0200 Subject: [PATCH 04/14] Two new tutorials for HEXTOF at FLASH as an example of trXPS and trXPD using new dataset from Zenodo Added one more notebook for HEXTOF - energy calibration using SB Removed some copy/not needed files Cleaned up all not required files clear notebook output clean up tutorials add reference energy calibration, and allow using processor function with preview remove unnecessary stuff add energy comparison remove kernel specs further clean up spell fixes remove outdated config file --- .cspell/custom-dictionary.txt | 5 + sed/core/processor.py | 17 +- sed/dataset/datasets.json | 8 + ...hextof_workflow_trXPS_bam_correction.ipynb | 545 +++++++++++++++++ ...ow_trXPS_energy_calibration_using_SB.ipynb | 479 +++++++++++++++ tutorial/9_hextof_workflow_trXPD.ipynb | 555 ++++++++++++++++++ 6 files changed, 1601 insertions(+), 8 deletions(-) create mode 100644 tutorial/10_hextof_workflow_trXPS_bam_correction.ipynb create mode 100644 tutorial/11_hextof_workflow_trXPS_energy_calibration_using_SB.ipynb create mode 100644 tutorial/9_hextof_workflow_trXPD.ipynb diff --git a/.cspell/custom-dictionary.txt b/.cspell/custom-dictionary.txt index aaab614b..f634cba4 100644 --- a/.cspell/custom-dictionary.txt +++ b/.cspell/custom-dictionary.txt @@ -172,6 +172,7 @@ levelname linalg linekwds linesegkwds +linestyles linewidth linspace literalinclude @@ -325,6 +326,7 @@ scandir scatt scatterkwds scicat +scipy SDIAG sdir segs @@ -341,6 +343,7 @@ stepsize subdir subdirs subfolders +suptitle symscores targcenter termorder @@ -367,6 +370,7 @@ TZCYXS tzoffset ubid UDLD +ufunc unbinned uncategorised undoc @@ -375,6 +379,7 @@ varnames venv verts viewcode +vlines vmax voxels VTOF diff --git a/sed/core/processor.py b/sed/core/processor.py index 882c5370..016ad19e 100644 --- a/sed/core/processor.py +++ b/sed/core/processor.py @@ -1343,14 +1343,15 @@ def calibrate_energy_axis( **kwds, ) if verbose: - print("Quality of Calibration:") - self.ec.view( - traces=self.ec.traces_normed, - xaxis=self.ec.calibration["axis"], - align=True, - energy_scale=energy_scale, - backend="bokeh", - ) + if self.ec.traces_normed is not None: + print("Quality of Calibration:") + self.ec.view( + traces=self.ec.traces_normed, + xaxis=self.ec.calibration["axis"], + align=True, + energy_scale=energy_scale, + backend="bokeh", + ) print("E/TOF relationship:") self.ec.view( traces=self.ec.calibration["axis"][None, :], diff --git a/sed/dataset/datasets.json b/sed/dataset/datasets.json index 914213a5..749a3098 100644 --- a/sed/dataset/datasets.json +++ b/sed/dataset/datasets.json @@ -14,6 +14,14 @@ ], "rearrange_files": true }, + "W110": { + "url": "https://zenodo.org/records/12609441/files/single_event_data.zip", + "subdirs": [ + "analysis_data", + "calibration_data" + ], + "rearrange_files": true + }, "TaS2": { "url": "https://zenodo.org/records/10160182/files/TaS2.zip", "subdirs": [ diff --git a/tutorial/10_hextof_workflow_trXPS_bam_correction.ipynb b/tutorial/10_hextof_workflow_trXPS_bam_correction.ipynb new file mode 100644 index 00000000..01c9a40b --- /dev/null +++ b/tutorial/10_hextof_workflow_trXPS_bam_correction.ipynb @@ -0,0 +1,545 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "9192f0aa", + "metadata": {}, + "source": [ + "# Tutorial for trXPS for the HEXTOF instrument at FLASH: t$_0$, cross-correlation and BAM correction" + ] + }, + { + "cell_type": "markdown", + "id": "1e583d01", + "metadata": {}, + "source": [ + "## Preparation" + ] + }, + { + "cell_type": "markdown", + "id": "303d7dfb", + "metadata": {}, + "source": [ + "### Import necessary libraries" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e73f4a19", + "metadata": {}, + "outputs": [], + "source": [ + "%load_ext autoreload\n", + "%autoreload 2\n", + "\n", + "from pathlib import Path\n", + "import os\n", + "\n", + "from sed import SedProcessor\n", + "from sed.dataset import dataset\n", + "import numpy as np\n", + "\n", + "%matplotlib widget\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# For peak fitting\n", + "from lmfit.models import GaussianModel" + ] + }, + { + "cell_type": "markdown", + "id": "07076e2f", + "metadata": {}, + "source": [ + "## Get data paths\n", + "\n", + "If it is your beamtime, you can read the raw data and write to the processed directory. For the public data, you can not write to the processed directory.\n", + "\n", + "The paths are such that if you are on Maxwell, it uses those. Otherwise, data is downloaded in the current directory from Zenodo:\n", + "https://zenodo.org/records/12609441" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f9713ebb", + "metadata": {}, + "outputs": [], + "source": [ + "beamtime_dir = \"/asap3/flash/gpfs/pg2/2023/data/11019101\" # on Maxwell\n", + "if os.path.exists(beamtime_dir) and os.access(beamtime_dir, os.R_OK):\n", + " path = beamtime_dir + \"/raw/hdf/offline/fl1user3\"\n", + " buffer_path = beamtime_dir + \"/processed/tutorial/\"\n", + "else:\n", + " # data_path can be defined and used to store the data in a specific location\n", + " dataset.get(\"W110\") # Put in Path to a storage of at least 10 Byte free space.\n", + " path = dataset.dir\n", + " buffer_path = path + \"/processed/\"" + ] + }, + { + "cell_type": "markdown", + "id": "5cf71d69", + "metadata": {}, + "source": [ + "### Config setup\n", + "Here, we get the path to the config file and set up the relevant directories. This can also be done directly in the config file." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "195d7ff5", + "metadata": {}, + "outputs": [], + "source": [ + "# pick the default configuration file for hextof@FLASH\n", + "config_file = Path('../sed/config/flash_example_config.yaml')\n", + "assert config_file.exists()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "18c3db1b", + "metadata": {}, + "outputs": [], + "source": [ + "# here we setup a dictionary that will be used to override the path configuration\n", + "config_override = {\n", + " \"core\": {\n", + " \"beamtime_id\": 11019101,\n", + " \"paths\": {\n", + " \"data_raw_dir\": path,\n", + " \"data_parquet_dir\": buffer_path\n", + " },\n", + " },\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3145b03c", + "metadata": {}, + "outputs": [], + "source": [ + "energy_cal = {\n", + " \"energy\": {\n", + " \"calibration\": {\n", + " \"E0\": -53.96145014592986,\n", + " \"creation_date\": 1732056868.029444,\n", + " \"d\": 0.8096677233434938,\n", + " \"energy_scale\": \"kinetic\",\n", + " \"t0\": 4.0148196718030886e-07,\n", + " },\n", + " \"offsets\":{\n", + " \"constant\": -77.5,\n", + " \"creation_date\": 1732056874.060922,\n", + " \"monochromatorPhotonEnergy\": {\n", + " \"preserve_mean\": True,\n", + " \"weight\": -1,\n", + " },\n", + " \"sampleBias\": {\n", + " \"preserve_mean\": False,\n", + " \"weight\": 1,\n", + " },\n", + " \"tofVoltage\": {\n", + " \"preserve_mean\": True,\n", + " \"weight\": -1,\n", + " },\n", + " },\n", + " },\n", + "}" + ] + }, + { + "cell_type": "markdown", + "id": "29a56a9e", + "metadata": {}, + "source": [ + "### We use the stored energy calibration parameters and load trXPS data set to define:\n", + "* t0 position with respect to delay stage values;\n", + "* correct accordingly delay stage offset\n", + "* fit cross-correlation \n", + "* apply BAM correction and see its effect on cross-correlation" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "678d23c4", + "metadata": {}, + "outputs": [], + "source": [ + "run_number = 44498\n", + "sp_44498 = SedProcessor(runs=[run_number], config=config_override, folder_config=energy_cal, system_config=config_file, verbose=True)\n", + "\n", + "sp_44498.add_jitter()\n", + "sp_44498.align_dld_sectors()\n", + "sp_44498.append_energy_axis()\n", + "sp_44498.add_energy_offset()" + ] + }, + { + "cell_type": "markdown", + "id": "ba9bb7f7", + "metadata": {}, + "source": [ + "Check which channels are included in the dataframe" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c17be152", + "metadata": {}, + "outputs": [], + "source": [ + "sp_44498.dataframe.head()" + ] + }, + { + "cell_type": "markdown", + "id": "1349568e", + "metadata": {}, + "source": [ + "First, we take a look at our sideband measurement before any corrections.\n", + "The sidebands on the W4f core levels can be used as a measure of the pump and probe cross-correlation,\n", + "and hence our temporal resolution.\n", + "We plot the data delay stage position vs Energy data, normalized by acquisition time." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3df8530e", + "metadata": {}, + "outputs": [], + "source": [ + "axes = ['energy', 'delayStage']\n", + "ranges = [[-37.5,-27.5], [1446.75,1449.15]]\n", + "bins = [200,40]\n", + "res = sp_44498.compute(bins=bins, axes=axes, ranges=ranges, normalize_to_acquisition_time=\"delayStage\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "59764b73", + "metadata": {}, + "outputs": [], + "source": [ + "fig,ax = plt.subplots(1,2,figsize=(8,3), layout='constrained')\n", + "res.plot(robust=True, ax=ax[0], cmap='terrain')\n", + "fig.suptitle(f\"Run {run_number}: W 4f, side bands\")\n", + "ax[0].set_title('raw')\n", + "bg = res.sel(delayStage=slice(1448.7,1449.1)).mean('delayStage')\n", + "(res.sel(delayStage=slice(1446.8,1449.3))-bg).plot(robust=True, ax=ax[1])\n", + "ax[1].set_title('difference')" + ] + }, + { + "cell_type": "markdown", + "id": "43191608", + "metadata": {}, + "source": [ + "Now we make fit to determine precise t$_0$ position and cross-correlation using lmfit fit models" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4de472b3", + "metadata": {}, + "outputs": [], + "source": [ + "Gauss_mod = GaussianModel()\n", + "\n", + "#first order sideband:\n", + "x1=res['delayStage']\n", + "y1=res.sel(energy=slice(-30.5,-29.5)).sum('energy')\n", + "y1=y1-np.mean(y1.sel(delayStage=slice(1448.7,1449.1)))\n", + "\n", + "pars1 = Gauss_mod.make_params(amplitude=0.1, center=1447.8, sigma=0.02)\n", + "out1 = Gauss_mod.fit(y1, pars1, x=x1)\n", + "\n", + "#second order sideband\n", + "x2=res['delayStage']\n", + "y2=res.sel(energy=slice(-29.5,-28.5)).sum('energy')\n", + "y2=y2-np.mean(y2.sel(delayStage=slice(1448.7,1449.1)))\n", + "\n", + "pars2 = Gauss_mod.make_params(amplitude=0.1, center=1447.8, sigma=0.02)\n", + "out2 = Gauss_mod.fit(y2, pars2, x=x2)\n", + "\n", + "plt.figure()\n", + "plt.plot(x1,y1,'rx', label='$1^{st}$ order sideband')\n", + "plt.plot(x1,out1.best_fit,'r', label=\"FWHM = {:.3f} ps\".format(out1.values['fwhm']))\n", + "plt.legend(loc=\"best\")\n", + "plt.title('run44498, W4f, sidebands comparison')\n", + "plt.plot(x2,y2,'bx', label='$2^{nd}$ order sideband')\n", + "plt.plot(x2,out2.best_fit,'b', label=\"FWHM = {:.3f} ps\".format(out2.values['fwhm']))\n", + "plt.legend(loc=\"best\")\n", + "plt.xlabel(\"delayStage [ps]\")\n", + "plt.ylabel(\"Intensity [cts/s]\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "f6a20bf2", + "metadata": {}, + "source": [ + "As we see the sidebands are quite broad and one of the possible reasons for this could be long or short-term drifts (jitter) of the FEL arrival time with respect to e.g. optical laser or differences in the intra-bunch arrival time. To check and correct for this we can look at beam arrival monitor (BAM). The BAM gives a pulse-resolved measure of the FEL arrival time with respect to a master clock." + ] + }, + { + "cell_type": "markdown", + "id": "2742bb17", + "metadata": {}, + "source": [ + "### Check BAM versus pulse and train IDs" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8feb38c7", + "metadata": {}, + "outputs": [], + "source": [ + "axes = ['trainId', 'pulseId', 'bam']\n", + "ranges = [[1628022640,1628046700], [0,500], [-6400,100]]\n", + "bins = [250, 100, 1000]\n", + "res_bam = sp_44498.compute(bins=bins, axes=axes, ranges=ranges)" + ] + }, + { + "cell_type": "markdown", + "id": "de89978e", + "metadata": {}, + "source": [ + "As we can see, jitter between FEL and pump laser is quite significant withing a pulse train as well as over the whole measurement period." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8203d22d", + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "fig,ax = plt.subplots(1,2,figsize=(8,3), layout='constrained')\n", + "res_bam.sel(bam=slice(-6400,-5100)).sum('trainId').plot(ax=ax[0],robust=True, cmap='terrain')\n", + "res_bam.sel(bam=slice(-6400,-5100)).sum('pulseId').plot(ax=ax[1],robust=True, cmap='terrain')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "b0c70ad0", + "metadata": {}, + "source": [ + "To correct the SASE jitter, using information from the bam column and to calibrate the pump-probe delay axis, we need to shift the delay stage values to centre the pump-probe-time overlap time zero." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "90b702e4", + "metadata": {}, + "outputs": [], + "source": [ + "sp_44498.add_delay_offset(\n", + " constant=-1448, # this is time zero position determined from side band fit\n", + " flip_delay_axis=True, # invert the direction of the delay axis\n", + " columns=['bam'], # use the bam to offset the values\n", + " weights=[-0.001], # bam is in fs, delay in ps\n", + " preserve_mean=True # preserve the mean of the delay axis to keep t0 position\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "9f83b41e", + "metadata": {}, + "source": [ + "### bin in the corrected delay axis" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "89a72e3a", + "metadata": {}, + "outputs": [], + "source": [ + "axes = ['energy', 'delayStage']\n", + "ranges = [[-37.5,-27.5], [-1.5,1.5]]\n", + "bins = [200,60]\n", + "res_corr = sp_44498.compute(bins=bins, axes=axes, ranges=ranges, normalize_to_acquisition_time=\"delayStage\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8443ddcb", + "metadata": {}, + "outputs": [], + "source": [ + "fig,ax = plt.subplots(1,2,figsize=(8,3), layout='constrained')\n", + "fig.suptitle(f\"Run {run_number}: W 4f, side bands\")\n", + "res_corr.plot(robust=True, ax=ax[0], cmap='terrain')\n", + "ax[0].set_title('raw')\n", + "bg = res_corr.sel(delayStage=slice(-1.3,-1.0)).mean('delayStage')\n", + "(res_corr-bg).plot(robust=True, ax=ax[1])\n", + "ax[1].set_title('difference')" + ] + }, + { + "cell_type": "markdown", + "id": "202404c8", + "metadata": {}, + "source": [ + "We clearly see an effect of BAM corrections - side bands are visible much nicer and width became smaller." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3141cc76", + "metadata": {}, + "outputs": [], + "source": [ + "sp_44498.save_delay_offsets()" + ] + }, + { + "cell_type": "markdown", + "id": "67deb9f9", + "metadata": {}, + "source": [ + "Now we can repeat fit procedure to determine true cross-correlation value." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3257d2bb", + "metadata": {}, + "outputs": [], + "source": [ + "Gauss_mod = GaussianModel()\n", + "\n", + "#first order sideband:\n", + "x5=res_corr['delayStage'].sel(delayStage=slice(-1.6,1.5))\n", + "y5=res_corr.sel(energy=slice(-30.4,-29.5),delayStage=slice(-1.6,1.5)).sum('energy')\n", + "y5=y5-np.mean(y5.sel(delayStage=slice(-1.4,-1.0)))\n", + "\n", + "pars5 = Gauss_mod.make_params(amplitude=0.1, center=0.0, sigma=0.02)\n", + "out5 = Gauss_mod.fit(y5, pars5, x=x5)\n", + "\n", + "print(out5.fit_report())\n", + "\n", + "#second order sideband\n", + "x6=res_corr['delayStage'].sel(delayStage=slice(-1.6,1.5))\n", + "y6=res_corr.sel(energy=slice(-29.5,-27.5),delayStage=slice(-1.6,1.5)).sum('energy')\n", + "y6=y6-np.mean(y6.sel(delayStage=slice(-1.4,-1.0)))\n", + "\n", + "pars6 = Gauss_mod.make_params(amplitude=0.1, center=0.0, sigma=0.02)\n", + "out6 = Gauss_mod.fit(y6, pars6, x=x6)\n", + "\n", + "print(out6.fit_report())\n", + "\n", + "#comparison plot\n", + "plt.figure()\n", + "plt.plot(x5,y5,'rx', label='$1^{st}$ order sideband')\n", + "plt.plot(x5,out5.best_fit,'r', label=\"FWHM = {:.3f} ps\".format(out5.values['fwhm']))\n", + "plt.legend(loc=\"best\")\n", + "plt.title('run44498, W4f, sidebands comparison')\n", + "plt.plot(x6,y6,'bx', label='$2^{nd}$ order sideband')\n", + "plt.plot(x6,out6.best_fit,'b', label=\"FWHM = {:.3f} ps\".format(out6.values['fwhm']))\n", + "plt.legend(loc=\"best\")\n", + "plt.xlabel(\"pump probe delay [ps]\")\n", + "plt.ylabel(\"Intensity [cts/s]\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "8da4db1f", + "metadata": {}, + "source": [ + "### We can visualize a BAM correction effect using comparison plots" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5c0ce10c", + "metadata": {}, + "outputs": [], + "source": [ + "fig,ax=plt.subplots(2,2,figsize=(9,7),layout=\"constrained\")\n", + "\n", + "plt.axes(ax[0,0])\n", + "res.plot(cmap='terrain', robust=True)\n", + "plt.title(\"W4f, no bam correction\")\n", + "\n", + "plt.axes(ax[0,1])\n", + "plt.plot(x1,y1,'rx',label='integrated intensity 1. order')\n", + "plt.plot(x1,out1.best_fit,'r',label='1. order fit, FWHM = {:.3f} ps'.format(out1.values['fwhm']))\n", + "plt.plot(x2,y2,'bx',label='integrated intensity 2. order')\n", + "plt.plot(x2,out2.best_fit,'b',label='2. order fit, FWHM = {:.3f} ps'.format(out2.values['fwhm']))\n", + "plt.legend(loc=1) \n", + "plt.title(\"Sidebands without bam correction\")\n", + "\n", + "plt.axes(ax[1,0])\n", + "res_corr.sel(delayStage=slice(-1.6,1.5)).plot(robust=True,cmap='terrain')\n", + "plt.title(\"W4f, with bam correction\")\n", + "\n", + "plt.axes(ax[1,1])\n", + "plt.plot(x5,y5,'rx',label='integrated intensity 1. order')\n", + "plt.plot(x5,out5.best_fit,'r',label='1. order fit, FWHM = {:.3f} ps'.format(out5.values['fwhm']))\n", + "plt.plot(x6,y6,'bx',label='integrated intensity 2. order')\n", + "plt.plot(x6,out6.best_fit,'b',label='2. order fit, FWHM = {:.3f} ps'.format(out6.values['fwhm']))\n", + "plt.legend(loc=1)\n", + "plt.title(\"Sidebands with bam correction\")\n", + "\n", + "fig.suptitle(f'Run {run_number}: Effect of BAM correction',fontsize='22')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "16fba27b", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "python3", + "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.9.19" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/tutorial/11_hextof_workflow_trXPS_energy_calibration_using_SB.ipynb b/tutorial/11_hextof_workflow_trXPS_energy_calibration_using_SB.ipynb new file mode 100644 index 00000000..78168601 --- /dev/null +++ b/tutorial/11_hextof_workflow_trXPS_energy_calibration_using_SB.ipynb @@ -0,0 +1,479 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "d33dec83-015b-4b86-9a84-81d10453fe25", + "metadata": {}, + "outputs": [], + "source": [ + "%load_ext autoreload\n", + "%autoreload 2\n", + "\n", + "from pathlib import Path\n", + "import os\n", + "\n", + "from sed import SedProcessor\n", + "from sed.dataset import dataset\n", + "import numpy as np\n", + "\n", + "%matplotlib widget\n", + "import matplotlib.pyplot as plt\n", + "\n", + "### for automatic peak finding\n", + "from scipy.signal import find_peaks" + ] + }, + { + "cell_type": "markdown", + "id": "2c147a5f-d84d-448a-9685-056035e464ed", + "metadata": {}, + "source": [ + "## Get data paths\n", + "\n", + "If it is your beamtime, you can read the raw data and write to the processed directory. For the public data, you can not write to the processed directory.\n", + "\n", + "The paths are such that if you are on Maxwell, it uses those. Otherwise, data is downloaded in the current directory from Zenodo:\n", + "https://zenodo.org/records/12609441" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7435190c-02b4-4e4a-82ca-3a8569751eb8", + "metadata": {}, + "outputs": [], + "source": [ + "beamtime_dir = \"/asap3/flash/gpfs/pg2/2023/data/11019101\" # on Maxwell\n", + "if os.path.exists(beamtime_dir) and os.access(beamtime_dir, os.R_OK):\n", + " path = beamtime_dir + \"/raw/hdf/offline/fl1user3\"\n", + " buffer_path = beamtime_dir + \"/processed/tutorial/\"\n", + "else:\n", + " # data_path can be defined and used to store the data in a specific location\n", + " dataset.get(\"W110\") # Put in Path to a storage of at least 10 GByte free space.\n", + " path = dataset.dir\n", + " buffer_path = path + \"/processed/\"" + ] + }, + { + "cell_type": "markdown", + "id": "92b884c6-416c-43dc-9ea4-59aeb04cd045", + "metadata": {}, + "source": [ + "## Config setup\n", + "\n", + "Here, we get the path to the config file and set up the relevant directories. This can also be done directly in the config file." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3cfe124d-4758-47be-afb2-d9d735575c0a", + "metadata": {}, + "outputs": [], + "source": [ + "# pick the default configuration file for hextof@FLASH\n", + "config_file = Path('../sed/config/flash_example_config.yaml')\n", + "assert config_file.exists()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "25135c58-41ae-467d-97fa-b726075e687d", + "metadata": {}, + "outputs": [], + "source": [ + "# here we setup a dictionary that will be used to override the path configuration\n", + "config_override = {\n", + " \"core\": {\n", + " \"beamtime_id\": 11019101,\n", + " \"paths\": {\n", + " \"data_raw_dir\": path,\n", + " \"data_parquet_dir\": buffer_path\n", + " },\n", + " },\n", + "}" + ] + }, + { + "cell_type": "markdown", + "id": "a47990f8", + "metadata": {}, + "source": [ + "## For reference, we determine the energy calibration from a bias series first" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "df0520c7", + "metadata": {}, + "outputs": [], + "source": [ + "sp_44455 = SedProcessor(runs=[44455], config=config_override, system_config=config_file)\n", + "sp_44455.add_jitter()\n", + "sp_44455.align_dld_sectors()" + ] + }, + { + "cell_type": "markdown", + "id": "3728fdd2", + "metadata": {}, + "source": [ + "### find calibration parameters\n", + "We now will fit the tof-energy relation. This is done by finding the maxima of a peak in the tof spectrum, and then fitting the square root relation to obtain the calibration parameters." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c7156708", + "metadata": {}, + "outputs": [], + "source": [ + "axes = ['sampleBias','dldTimeSteps']\n", + "bins = [4, 250]\n", + "ranges = [[77.5,81.5], [4050,4500]]\n", + "res = sp_44455.compute(bins=bins, axes=axes, ranges=ranges)\n", + "sp_44455.load_bias_series(binned_data=res)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e30cfea9", + "metadata": {}, + "outputs": [], + "source": [ + "ranges=(4120, 4200)\n", + "ref_id=0\n", + "sp_44455.find_bias_peaks(ranges=ranges, ref_id=ref_id, apply=True)" + ] + }, + { + "cell_type": "markdown", + "id": "d3e4f30d", + "metadata": {}, + "source": [ + "We offset the reference energy by the different in bias voltages between this run and run 44498" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bfe5f039", + "metadata": {}, + "outputs": [], + "source": [ + "sp_44455.calibrate_energy_axis(\n", + " ref_id=0,\n", + " ref_energy=-34.9,\n", + " method=\"lmfit\",\n", + " energy_scale='kinetic',\n", + " d={'value':1.0,'min': .7, 'max':1.0, 'vary':True},\n", + " t0={'value':5e-7, 'min': 1e-7, 'max': 1e-6, 'vary':True},\n", + " E0={'value': 0., 'min': -200, 'max': 100, 'vary': True},\n", + " verbose=True,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "11e375bd", + "metadata": {}, + "source": [ + "Now that we have the calibration parameters, we can generate the energy axis for each spectrum" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "626093ec", + "metadata": {}, + "outputs": [], + "source": [ + "sp_44455.save_energy_calibration(\"reference_calib.yaml\")" + ] + }, + { + "cell_type": "markdown", + "id": "98266c62-ab48-4746-96c8-2d47cf92c0e9", + "metadata": {}, + "source": [ + "### Now we can use those parameters and load our trXPS data using additional config file" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2153366b-f27e-43cc-bd27-af005e7ea5d6", + "metadata": {}, + "outputs": [], + "source": [ + "run_number = 44498\n", + "sp_44498 = SedProcessor(runs=[run_number], config=config_override, folder_config=\"reference_calib.yaml\", system_config=config_file, verbose=True)\n", + "sp_44498.add_jitter()\n", + "sp_44498.append_energy_axis()" + ] + }, + { + "cell_type": "markdown", + "id": "ca21d0dd", + "metadata": {}, + "source": [ + "And bin an energy spectrum for reference" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "217395ee", + "metadata": {}, + "outputs": [], + "source": [ + "axes = ['energy']\n", + "ranges = [[-37.5,-27.5]]\n", + "bins = [200]\n", + "res_ref = sp_44498.compute(bins=bins, axes=axes, ranges=ranges)\n", + "\n", + "plt.figure()\n", + "res_ref.plot()" + ] + }, + { + "cell_type": "markdown", + "id": "6c2c8918-322b-4429-8ee9-cc8d032c82d3", + "metadata": {}, + "source": [ + "## Visualize trXPS data bin in the dldTimeSteps and the corrected delay axis to prepare for energy calibration using SB\n", + "We now prepare for an alternative energy calibration based on the side-bands of the time-dependent dataset. This is e.g. helpful if no bias series has been obtained." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1260af8e", + "metadata": {}, + "outputs": [], + "source": [ + "run_number = 44498\n", + "sp_44498 = SedProcessor(runs=[run_number], config=config_override, system_config=config_file, verbose=True)\n", + "sp_44498.add_jitter()" + ] + }, + { + "cell_type": "markdown", + "id": "b0c90a6f", + "metadata": {}, + "source": [ + "### We correct delay stage, t0 position and BAM (see previous tutorial)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ed13e712", + "metadata": {}, + "outputs": [], + "source": [ + "sp_44498.add_delay_offset(\n", + " constant=-1448, # this is time zero position determined from side band fit\n", + " flip_delay_axis=True, # invert the direction of the delay axis\n", + " columns=['bam'], # use the bam to offset the values\n", + " weights=[-0.001], # bam is in fs, delay in ps\n", + " preserve_mean=True # preserve the mean of the delay axis to keep t0 position\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "10c45742-f7f4-4c80-bdcf-fc04a5158b77", + "metadata": {}, + "outputs": [], + "source": [ + "axes = ['dldTimeSteps', 'delayStage']\n", + "ranges = [[3900,4200], [-1.5,1.5]]\n", + "bins = [100,60]\n", + "res_corr = sp_44498.compute(bins=bins, axes=axes, ranges=ranges, normalize_to_acquisition_time=\"delayStage\")\n", + "\n", + "fig,ax = plt.subplots(1,2,figsize=(8,3), layout='constrained')\n", + "fig.suptitle(f\"Run {run_number}: W 4f, side bands\")\n", + "res_corr.plot(robust=True, ax=ax[0], cmap='terrain')\n", + "ax[0].set_title('raw')\n", + "bg = res_corr.sel(delayStage=slice(-1.3,-1.0)).mean('delayStage')\n", + "(res_corr-bg).plot(robust=True, ax=ax[1])\n", + "ax[1].set_title('difference')" + ] + }, + { + "cell_type": "markdown", + "id": "423a4936-38e6-4432-bbee-b52bd655fe03", + "metadata": {}, + "source": [ + "### Automatically extract number and position of peaks in the ROI around t0" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "310b0737-4d28-4b76-a725-7d84a16355f7", + "metadata": {}, + "outputs": [], + "source": [ + "# binned data\n", + "roi = slice(3980, 4160)\n", + "delay = slice(-0.5,0.5)\n", + "data = res_corr.sel(dldTimeSteps = roi, delayStage=delay).sum('delayStage')\n", + "distance = 7\n", + "peaks, _ = find_peaks(data, height=None, distance=distance)\n", + "\n", + "p1SB = data[peaks]['dldTimeSteps'][0]\n", + "W4f5 = data[peaks]['dldTimeSteps'][1]\n", + "m1SB = data[peaks]['dldTimeSteps'][2]\n", + "W4f7 = data[peaks]['dldTimeSteps'][3]\n", + "mm1SB = data[peaks]['dldTimeSteps'][4]\n", + "plt.figure()\n", + "data.plot()\n", + "plt.scatter(data[peaks]['dldTimeSteps'], data[peaks], c='r')#, \"x\")\n", + "plt.vlines([p1SB-7,p1SB+7], 0, 150, color='violet', linestyles='dashed', label='$1^{st}$ order SB')\n", + "plt.vlines([W4f5-7,W4f5+7], 0, 150, color='b', linestyles='dashed', label='W 4f 7/2')\n", + "plt.vlines([m1SB-7,m1SB+7], 0, 150, color='g', linestyles='dashed', label='$-1^{st}$ order SB')\n", + "plt.vlines([W4f7-7,W4f7+7], 0, 150, color='r', linestyles='dashed', label='W 4f 5/2')\n", + "plt.vlines([mm1SB-7,mm1SB+7], 0, 150, color='orange', linestyles='dashed', label='$2nd -1^{st}$ order SB')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "f2bee3d0-0ad9-4ed7-8356-16333cf48774", + "metadata": {}, + "source": [ + "### find calibration parameters\n", + "We now will fit the tof-energy relation. This is done using the maxima of a peak in the ToF spectrum and the known kinetic energy of those peaks (kinetic energy of e.g. W4f peaks (-31.4 and -33.6 eV) and their SB of different orders accounting energy of pump beam of 1030 nm = 1.2 eV. The calibration parameters are obtained by fitting the square root relation." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "10752d1f-53c1-4871-b2fd-65a0101aba9a", + "metadata": {}, + "outputs": [], + "source": [ + "### Kinetic energy of w4f peaks and their SB\n", + "ref_energy = -31.4\n", + "ref_id = 1\n", + "sp_44498.ec.biases = -1*np.array([-30.2,-31.4,-32.6,-33.6,-34.8])\n", + "sp_44498.ec.peaks = np.expand_dims(data[peaks]['dldTimeSteps'].data,1)\n", + "sp_44498.ec.tof = data.dldTimeSteps.data\n", + "\n", + "params=sp_44498.calibrate_energy_axis(\n", + " ref_id=ref_id,\n", + " ref_energy=ref_energy,\n", + " method=\"lmfit\",\n", + " d={'value':1.0,'min': .8, 'max':1.0, 'vary':True},\n", + " t0={'value':5e-7, 'min': 1e-7, 'max': 1e-6, 'vary':True},\n", + " E0={'value': -100., 'min': -200, 'max': 15, 'vary': True},\n", + " labels=\"\",\n", + " verbose=True)" + ] + }, + { + "cell_type": "markdown", + "id": "4052d629-1178-4248-a945-d60a6ff34bf3", + "metadata": {}, + "source": [ + "## Append energy axis into a data frame, bin and visualize data in the calibrated energy and corrected delay axis " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d37a8e16-d91c-4b93-be79-4d4f5ddd2dd0", + "metadata": {}, + "outputs": [], + "source": [ + "sp_44498.append_energy_axis()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4b78aab7-7a04-46f8-9e68-05f595758b7c", + "metadata": {}, + "outputs": [], + "source": [ + "axes = ['energy', 'delayStage']\n", + "ranges = [[-37.5,-27.5], [-1.5,1.5]]\n", + "bins = [200,60]\n", + "res_corr = sp_44498.compute(bins=bins, axes=axes, ranges=ranges, normalize_to_acquisition_time=\"delayStage\")\n", + "\n", + "fig,ax = plt.subplots(1,2,figsize=(8,3), layout='constrained')\n", + "fig.suptitle(f\"Run {run_number}: W 4f, side bands\")\n", + "res_corr.plot(robust=True, ax=ax[0], cmap='terrain')\n", + "ax[0].set_title('raw')\n", + "bg = res_corr.sel(delayStage=slice(-1.3,-1.0)).mean('delayStage')\n", + "(res_corr-bg).plot(robust=True, ax=ax[1])\n", + "ax[1].set_title('difference')" + ] + }, + { + "cell_type": "markdown", + "id": "a66fac5e", + "metadata": {}, + "source": [ + "## Compare spectra to reference\n", + "While this calibration methods gives a reasonable approximation to the energy axis, there are some deviations to the bias method, so it should be used with care" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d83d0eb6-34f2-4eec-a568-3a1767d8e705", + "metadata": {}, + "outputs": [], + "source": [ + "axes = ['energy']\n", + "ranges = [[-37.5,-27.5]]\n", + "bins = [200]\n", + "res_1D = sp_44498.compute(bins=bins, axes=axes, ranges=ranges)\n", + "\n", + "plt.figure()\n", + "(res_ref/res_ref.max()).plot(label=\"bias series calibration\")\n", + "(res_1D/res_1D.max()).plot(label=\"side band calibration\")\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a26d270d", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "python3", + "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.9.19" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/tutorial/9_hextof_workflow_trXPD.ipynb b/tutorial/9_hextof_workflow_trXPD.ipynb new file mode 100644 index 00000000..a2db6b50 --- /dev/null +++ b/tutorial/9_hextof_workflow_trXPD.ipynb @@ -0,0 +1,555 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "733ed22f", + "metadata": {}, + "source": [ + "# Tutorial for trXPD for the HEXTOF instrument at FLASH with background normalization" + ] + }, + { + "cell_type": "markdown", + "id": "d7eaa93d", + "metadata": {}, + "source": [ + "## Preparation" + ] + }, + { + "cell_type": "markdown", + "id": "fc871acf", + "metadata": {}, + "source": [ + "### Import necessary libraries" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "368cf206", + "metadata": {}, + "outputs": [], + "source": [ + "%load_ext autoreload\n", + "%autoreload 2\n", + "\n", + "from pathlib import Path\n", + "import os\n", + "\n", + "from sed import SedProcessor\n", + "from sed.dataset import dataset\n", + "import xarray as xr\n", + "\n", + "%matplotlib widget\n", + "import matplotlib.pyplot as plt\n", + "from scipy.ndimage import gaussian_filter" + ] + }, + { + "cell_type": "markdown", + "id": "d3ed214a", + "metadata": {}, + "source": [ + "## Get data paths\n", + "\n", + "If it is your beamtime, you can access both read the raw data and write to processed directory. For the public data, you can not write to processed directory.\n", + "\n", + "The paths are such that if you are on Maxwell, it uses those. Otherwise data is downloaded in current directory from Zenodo:\n", + "https://zenodo.org/records/12609441" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "195737a6", + "metadata": {}, + "outputs": [], + "source": [ + "beamtime_dir = \"/asap3/flash/gpfs/pg2/2023/data/11019101\" # on Maxwell\n", + "if os.path.exists(beamtime_dir) and os.access(beamtime_dir, os.R_OK):\n", + " path = beamtime_dir + \"/raw/hdf/offline/fl1user3\"\n", + " buffer_path = beamtime_dir + \"/processed/tutorial/\"\n", + "else:\n", + " # data_path can be defined and used to store the data in a specific location\n", + " dataset.get(\"W110\") # Put in Path to a storage of at least 10 GByte free space.\n", + " path = dataset.dir\n", + " buffer_path = path + \"/processed/\"" + ] + }, + { + "cell_type": "markdown", + "id": "30effaac", + "metadata": {}, + "source": [ + "## Config setup\n", + "\n", + "Here we get the path to the config file and setup the relevant directories. This can also be done directly in the config file." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2ca5745a", + "metadata": {}, + "outputs": [], + "source": [ + "# pick the default configuration file for hextof@FLASH\n", + "config_file = Path('../sed/config/flash_example_config.yaml')\n", + "assert config_file.exists()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "347d338c", + "metadata": {}, + "outputs": [], + "source": [ + "# here we setup a dictionary that will be used to override the path configuration\n", + "config_override = {\n", + " \"core\": {\n", + " \"beamtime_id\": 11019101,\n", + " \"paths\": {\n", + " \"data_raw_dir\": path,\n", + " \"data_parquet_dir\": buffer_path\n", + " },\n", + " },\n", + "}" + ] + }, + { + "cell_type": "markdown", + "id": "ee483947", + "metadata": {}, + "source": [ + "## Prepare Energy Calibration\n", + "Instead of making completely new energy calibration we can take existing values from the calibration made in the previous tutorial. This allows us to calibrate the conversion between the digital values of the dld and the energy." + ] + }, + { + "cell_type": "markdown", + "id": "7417ab20", + "metadata": {}, + "source": [ + " For this we need to add all those parameters as a dictionary and use them during creation of the processor object." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cdcbd374", + "metadata": {}, + "outputs": [], + "source": [ + "en_cal_config = {\n", + " 'energy': {\n", + " 'calibration': {\n", + " 'E0': -54.971004271795664,\n", + " 'creation_date': 1718801358.232129,\n", + " 'd': 0.8096677238144319,\n", + " 'energy_scale': 'kinetic',\n", + " 't0': 4.0148196706891397e-07,\n", + " 'calib_type': 'fit',\n", + " 'fit_function': '(a0/(x0-a1))**2 + a2',\n", + " 'coefficients': ([ 8.09667724e-01, 4.01481967e-07, -5.49710043e+01]),\n", + " 'axis': 0},\n", + " 'tof': None,\n", + " 'offsets': {\n", + " 'constant': -76.5,\n", + " 'creation_date': 1718801360.817963,\n", + " 'monochromatorPhotonEnergy': {'preserve_mean': True,'reduction': None,'weight': -1},\n", + " 'sampleBias': {'preserve_mean': False, 'reduction': None, 'weight': 1},\n", + " 'tofVoltage': {'preserve_mean': True, 'reduction': None, 'weight': -1}}}}" + ] + }, + { + "cell_type": "markdown", + "id": "f070b3bb", + "metadata": {}, + "source": [ + "### Read data\n", + "Now we can use those parameters and load our trXPD data using additional config file" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "39b316d8", + "metadata": {}, + "outputs": [], + "source": [ + "run_number = 44498\n", + "sp_44498 = SedProcessor(runs=[run_number], folder_config=en_cal_config, config=config_override, system_config=config_file, verbose=True)\n", + "sp_44498.add_jitter()" + ] + }, + { + "cell_type": "markdown", + "id": "a2afd119", + "metadata": {}, + "source": [ + "We can inspect dataframe right after data readout" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "167aaf25", + "metadata": {}, + "outputs": [], + "source": [ + "sp_44498.dataframe.head()" + ] + }, + { + "cell_type": "markdown", + "id": "d56f2f83", + "metadata": {}, + "source": [ + "Now we will do energy calibration, add energy offset, jittering and dld sectors alignment" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c1d12db4", + "metadata": {}, + "outputs": [], + "source": [ + "sp_44498.align_dld_sectors()\n", + "sp_44498.append_energy_axis()\n", + "sp_44498.add_energy_offset()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c7addaa4", + "metadata": {}, + "outputs": [], + "source": [ + "sp_44498.attributes.metadata['energy_calibration']" + ] + }, + { + "cell_type": "markdown", + "id": "c97643f5", + "metadata": {}, + "source": [ + "We can do the SASE jitter correction, using information from the bam column and do calibration of the pump-probe delay axis, we need to shift the delay stage values to center the pump-probe-time overlap time zero." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "514e9956", + "metadata": {}, + "outputs": [], + "source": [ + "sp_44498.add_delay_offset(\n", + " constant=-1448, # this is time zero position determined from side band fit\n", + " flip_delay_axis=True, # invert the direction of the delay axis\n", + " columns=['bam'], # use the bam to offset the values\n", + " weights=[-0.001], # bam is in fs, delay in ps\n", + " preserve_mean=True # preserve the mean of the delay axis to keep t0 position\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "6551542d", + "metadata": {}, + "source": [ + "### bin in the calibrated energy and corrected delay axis\n", + "Visualize trXPS data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "88055c6d", + "metadata": {}, + "outputs": [], + "source": [ + "axes = ['energy', 'delayStage']\n", + "ranges = [[-37.5,-27.5], [-1.5,1.5]]\n", + "bins = [200,60]\n", + "res_corr = sp_44498.compute(bins=bins, axes=axes, ranges=ranges, normalize_to_acquisition_time=\"delayStage\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b02865c8", + "metadata": {}, + "outputs": [], + "source": [ + "fig,ax = plt.subplots(1,2,figsize=(8,3), layout='constrained')\n", + "fig.suptitle(f\"Run {run_number}: W 4f, side bands\")\n", + "res_corr.plot(robust=True, ax=ax[0], cmap='terrain')\n", + "ax[0].set_title('raw')\n", + "bg = res_corr.sel(delayStage=slice(-1.3,-1.0)).mean('delayStage')\n", + "(res_corr-bg).plot(robust=True, ax=ax[1])\n", + "ax[1].set_title('difference')" + ] + }, + { + "cell_type": "markdown", + "id": "43e84eff", + "metadata": {}, + "source": [ + "### XPD from W4f core level\n", + "\n", + "Now we can bin not only in energy but also in both momentum directions to get XPD patterns of different core level line of tungsten." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b768cfc7", + "metadata": {}, + "outputs": [], + "source": [ + "axes = ['energy', 'dldPosX', 'dldPosY']\n", + "ranges = [[-38,-28], [420,900], [420,900]]\n", + "bins = [100,240,240]\n", + "res_kx_ky = sp_44498.compute(bins=bins, axes=axes, ranges=ranges)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "73aed405", + "metadata": {}, + "outputs": [], + "source": [ + "## EDC and integration region for XPD\n", + "plt.figure()\n", + "res_kx_ky.mean(('dldPosX', 'dldPosY')).plot()\n", + "plt.vlines([-30.3,-29.9], 0, 2.4, color='r', linestyles='dashed')\n", + "plt.vlines([-31.4,-31.2], 0, 2.4, color='orange', linestyles='dashed')\n", + "plt.vlines([-33.6,-33.4], 0, 2.4, color='g', linestyles='dashed')\n", + "plt.vlines([-37.0,-36.0], 0, 2.4, color='b', linestyles='dashed')\n", + "plt.title('EDC and integration regions for XPD')\n", + "plt.show()\n", + "\n", + "## XPD plots\n", + "fig,ax = plt.subplots(2,2,figsize=(9,7), layout='constrained')\n", + "res_kx_ky.sel(energy=slice(-30.3,-29.9)).mean('energy').plot(robust=True, ax=ax[0,0], cmap='terrain')\n", + "ax[0,0].set_title(\"XPD of $1^{st}$ order sidebands\")\n", + "res_kx_ky.sel(energy=slice(-31.4,-31.2)).mean('energy').plot(robust=True, ax=ax[0,1], cmap='terrain')\n", + "ax[0,1].set_title(\"XPD of W4f 7/2 peak\")\n", + "res_kx_ky.sel(energy=slice(-33.6,-33.4)).mean('energy').plot(robust=True, ax=ax[1,0], cmap='terrain')\n", + "ax[1,0].set_title(\"XPD of W4f 5/2 peak\")\n", + "res_kx_ky.sel(energy=slice(-37.0,-36.0)).mean('energy').plot(robust=True, ax=ax[1,1], cmap='terrain')\n", + "ax[1,1].set_title(\"XPD of W5p 3/2 peak\")" + ] + }, + { + "cell_type": "markdown", + "id": "c30cdbd0", + "metadata": {}, + "source": [ + "As we can see there is some structure visible, but it looks very similar to each other.\n", + "We probably have to do some normalization to remove the detector structure/artefacts.\n", + "The best option is to divide by a flat-field image. The flat-field image can be obtained from a sample that shows no structure under identical measurement conditions.\n", + "Unfortunately, we don't have such a flat-field image.\n", + "\n", + "In this case, we can make a flat-field image from the actual dataset using several different approaches.\n", + "\n", + "As a first option, we can integrate in energy over the whole region and use this image as a background.\n", + "Additionally, we introduce the Gaussian Blur for comparison." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2e4a7faf", + "metadata": {}, + "outputs": [], + "source": [ + "## Background image\n", + "bgd = res_kx_ky.mean(('energy'))\n", + "\n", + "## Apply Gaussian Blur to background image\n", + "bgd_blur = xr.apply_ufunc(gaussian_filter, bgd, 15)\n", + "\n", + "fig,ax = plt.subplots(1,2,figsize=(9,4), layout='constrained')\n", + "bgd.plot(robust=True, cmap='terrain', ax=ax[0])\n", + "ax[0].set_title('Background image')\n", + "bgd_blur.plot(cmap='terrain', ax=ax[1])\n", + "ax[1].set_title('Gaussian Blur of background image')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6fa01c0a", + "metadata": {}, + "outputs": [], + "source": [ + "## XPD normalized by background image\n", + "fig,ax = plt.subplots(2,2,figsize=(9,7), layout='constrained')\n", + "(res_kx_ky/bgd).sel(energy=slice(-30.3,-29.9)).mean('energy').plot(robust=True, ax=ax[0,0], cmap='terrain')\n", + "(res_kx_ky/bgd).sel(energy=slice(-31.4,-31.2)).mean('energy').plot(robust=True, ax=ax[0,1], cmap='terrain')\n", + "(res_kx_ky/bgd).sel(energy=slice(-33.6,-33.4)).mean('energy').plot(robust=True, ax=ax[1,0], cmap='terrain')\n", + "(res_kx_ky/bgd).sel(energy=slice(-37.0,-36.0)).mean('energy').plot(robust=True, ax=ax[1,1], cmap='terrain')\n", + "fig.suptitle(f'Run {run_number}: XPD patterns after background normalization',fontsize='18')\n", + "\n", + "## XPD normalized by Gaussian-blurred background image\n", + "fig,ax = plt.subplots(2,2,figsize=(9,7), layout='constrained')\n", + "(res_kx_ky/bgd_blur).sel(energy=slice(-30.3,-29.9)).mean('energy').plot(robust=True, ax=ax[0,0], cmap='terrain')\n", + "(res_kx_ky/bgd_blur).sel(energy=slice(-31.4,-31.2)).mean('energy').plot(robust=True, ax=ax[0,1], cmap='terrain')\n", + "(res_kx_ky/bgd_blur).sel(energy=slice(-33.6,-33.4)).mean('energy').plot(robust=True, ax=ax[1,0], cmap='terrain')\n", + "(res_kx_ky/bgd_blur).sel(energy=slice(-37.0,-36.0)).mean('energy').plot(robust=True, ax=ax[1,1], cmap='terrain')\n", + "fig.suptitle(f'Run {run_number}: XPD patterns after Gaussian-blurred background normalization',fontsize='18')\n", + "\n", + "## XPD normalized by Gaussian-blurred background image and blurred to improve contrast\n", + "fig,ax = plt.subplots(2,2,figsize=(9,7), layout='constrained')\n", + "(xr.apply_ufunc(gaussian_filter, res_kx_ky/bgd_blur, 1)).sel(energy=slice(-30.3,-29.9)).mean('energy').plot(robust=True, ax=ax[0,0], cmap='terrain')\n", + "(xr.apply_ufunc(gaussian_filter, res_kx_ky/bgd_blur, 1)).sel(energy=slice(-31.4,-31.2)).mean('energy').plot(robust=True, ax=ax[0,1], cmap='terrain')\n", + "(xr.apply_ufunc(gaussian_filter, res_kx_ky/bgd_blur, 1)).sel(energy=slice(-33.6,-33.4)).mean('energy').plot(robust=True, ax=ax[1,0], cmap='terrain')\n", + "(xr.apply_ufunc(gaussian_filter, res_kx_ky/bgd_blur, 1)).sel(energy=slice(-37.0,-36.0)).mean('energy').plot(robust=True, ax=ax[1,1], cmap='terrain')\n", + "fig.suptitle(f'Run {run_number}: resulting Gaussian-blurred XPD patterns',fontsize='18')" + ] + }, + { + "cell_type": "markdown", + "id": "6f415a21", + "metadata": {}, + "source": [ + "Sometimes, after this division, you may not be happy with intensity distribution. Thus, other option for background correction is to duplicate the XPD pattern, apply large Gaussian blurring that eliminates the fine structures in the XPD pattern. Then divide the XPD pattern by its blurred version. This process sometimes enhances the visibility of the fine structures a lot." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5e5607ea", + "metadata": {}, + "outputs": [], + "source": [ + "## XPD normalized by Gaussian-blurred background image\n", + "\n", + "### Define integration regions for XPD\n", + "SB = res_kx_ky.sel(energy=slice(-30.3,-29.9)).mean('energy')\n", + "W_4f_7 = res_kx_ky.sel(energy=slice(-31.4,-31.2)).mean('energy')\n", + "W_4f_5 = res_kx_ky.sel(energy=slice(-33.6,-33.4)).mean('energy')\n", + "W_5p = res_kx_ky.sel(energy=slice(-37.0,-36.0)).mean('energy')\n", + "\n", + "### Make corresponding Gaussian Blur background\n", + "SB_blur = xr.apply_ufunc(gaussian_filter, SB, 15)\n", + "W_4f_7_blur = xr.apply_ufunc(gaussian_filter, W_4f_7, 15)\n", + "W_4f_5_blur = xr.apply_ufunc(gaussian_filter, W_4f_5, 15)\n", + "W_5p_blur = xr.apply_ufunc(gaussian_filter, W_5p, 15)\n", + "\n", + "### Visualize results\n", + "fig,ax = plt.subplots(2,2,figsize=(9,7), layout='constrained')\n", + "(SB/SB_blur).plot(robust=True, ax=ax[0,0], cmap='terrain')\n", + "(W_4f_7/W_4f_7_blur).plot(robust=True, ax=ax[0,1], cmap='terrain')\n", + "(W_4f_5/W_4f_5_blur).plot(robust=True, ax=ax[1,0], cmap='terrain')\n", + "(W_5p/W_5p_blur).plot(robust=True, ax=ax[1,1], cmap='terrain')\n", + "fig.suptitle(f'Run {run_number}: XPD patterns after Gaussian Blur normalization',fontsize='18')\n", + "\n", + "### Apply Gaussian Blur to resulted images to improve contrast\n", + "SB_norm = xr.apply_ufunc(gaussian_filter, SB/SB_blur, 1)\n", + "W_4f_7_norm = xr.apply_ufunc(gaussian_filter, W_4f_7/W_4f_7_blur, 1)\n", + "W_4f_5_norm = xr.apply_ufunc(gaussian_filter, W_4f_5/W_4f_5_blur, 1)\n", + "W_5p_norm = xr.apply_ufunc(gaussian_filter, W_5p/W_5p_blur, 1)\n", + "\n", + "### Visualize results\n", + "fig,ax = plt.subplots(2,2,figsize=(9,7), layout='constrained')\n", + "SB_norm.plot(robust=True, ax=ax[0,0], cmap='terrain')\n", + "W_4f_7_norm.plot(robust=True, ax=ax[0,1], cmap='terrain')\n", + "W_4f_5_norm.plot(robust=True, ax=ax[1,0], cmap='terrain')\n", + "W_5p_norm.plot(robust=True, ax=ax[1,1], cmap='terrain')\n", + "fig.suptitle(f'Run {run_number}: XPD patterns after Gauss Blur normalization',fontsize='18') " + ] + }, + { + "cell_type": "markdown", + "id": "94d41b4f", + "metadata": {}, + "source": [ + "Third option for background normalization is to use the simultaneously acquired pre-core level region.\n", + "As an example for W4f 7/2 peak, we define a region on the high energy side of it and integrate in energy to use as a background" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6c8513b5", + "metadata": {}, + "outputs": [], + "source": [ + "### Define peak and background region on the high energy side of the peak\n", + "W_4f_7 = res_kx_ky.sel(energy=slice(-31.4,-31.2)).mean('energy')\n", + "W_4f_7_bgd = res_kx_ky.sel(energy=slice(-32.0,-31.8)).mean('energy')\n", + "\n", + "### Make normalization by background, add Gaussian Blur to the resulting image\n", + "W_4f_7_nrm1 = W_4f_7/(W_4f_7_bgd+W_4f_7_bgd.max()*0.00001)\n", + "W_4f_7_nrm1_blur = xr.apply_ufunc(gaussian_filter, W_4f_7_nrm1, 1)\n", + "\n", + "### Add Gaussian Blur to the background image, normalize by it and add Gaussian Blur to the resulting image\n", + "W_4f_7_bgd_blur = xr.apply_ufunc(gaussian_filter, W_4f_7_bgd, 15)\n", + "W_4f_7_nrm2 = W_4f_7/W_4f_7_bgd_blur\n", + "W_4f_7_nrm2_blur = xr.apply_ufunc(gaussian_filter, W_4f_7_nrm2, 1)\n", + "\n", + "### Visualize all steps\n", + "fig,ax = plt.subplots(4,2,figsize=(9,10), layout='constrained')\n", + "W_4f_7.plot(robust=True, ax=ax[0,0], cmap='terrain')\n", + "W_4f_7_bgd.plot(robust=True, ax=ax[0,1], cmap='terrain')\n", + "W_4f_7_nrm1.plot(robust=True, ax=ax[1,0], cmap='terrain')\n", + "W_4f_7_nrm1_blur.plot(robust=True, ax=ax[1,1], cmap='terrain')\n", + "W_4f_7_bgd_blur.plot(robust=True, ax=ax[2,0], cmap='terrain')\n", + "W_4f_7_nrm2.plot(robust=True, ax=ax[2,1], cmap='terrain')\n", + "W_4f_7_nrm2_blur.plot(robust=True, ax=ax[3,0], cmap='terrain')\n", + "fig.suptitle(f'Run {run_number}: XPD patterns of W4f7/2 with pre-core level normalization',fontsize='18') " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "807883fd", + "metadata": {}, + "outputs": [], + "source": [ + "fig,ax = plt.subplots(1,3,figsize=(9,3), layout='constrained')\n", + "(xr.apply_ufunc(gaussian_filter, res_kx_ky/bgd_blur, 1)).sel(energy=slice(-31.4,-31.2)).mean('energy').plot(robust=True, ax=ax[0], cmap='terrain')\n", + "W_4f_7_norm.plot(robust=True, ax=ax[1], cmap='terrain')\n", + "W_4f_7_nrm2_blur.plot(robust=True, ax=ax[2], cmap='terrain')\n", + "fig.suptitle(f'Run {run_number}: comparison of different normalizations\\nof XPD pattern for W4f 7/2 peak with Gaussian Blur',fontsize='18')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7654516c", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "python3", + "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.9.19" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From fbbf1292dcbb1c49e31325e4d8b28e5f2502559e Mon Sep 17 00:00:00 2001 From: rettigl Date: Wed, 20 Nov 2024 21:52:37 +0100 Subject: [PATCH 05/14] fix headings --- ...hextof_workflow_trXPS_bam_correction.ipynb | 22 +++++++-- ...ow_trXPS_energy_calibration_using_SB.ipynb | 48 +++++++++++++++---- tutorial/9_hextof_workflow_trXPD.ipynb | 10 ++-- 3 files changed, 64 insertions(+), 16 deletions(-) diff --git a/tutorial/10_hextof_workflow_trXPS_bam_correction.ipynb b/tutorial/10_hextof_workflow_trXPS_bam_correction.ipynb index 01c9a40b..06184cfd 100644 --- a/tutorial/10_hextof_workflow_trXPS_bam_correction.ipynb +++ b/tutorial/10_hextof_workflow_trXPS_bam_correction.ipynb @@ -53,7 +53,7 @@ "id": "07076e2f", "metadata": {}, "source": [ - "## Get data paths\n", + "### Get data paths\n", "\n", "If it is your beamtime, you can read the raw data and write to the processed directory. For the public data, you can not write to the processed directory.\n", "\n", @@ -201,6 +201,14 @@ "sp_44498.dataframe.head()" ] }, + { + "cell_type": "markdown", + "id": "db246a19", + "metadata": {}, + "source": [ + "## Data w/o BAM correction" + ] + }, { "cell_type": "markdown", "id": "1349568e", @@ -300,7 +308,7 @@ "id": "2742bb17", "metadata": {}, "source": [ - "### Check BAM versus pulse and train IDs" + "## Check BAM versus pulse and train IDs" ] }, { @@ -338,6 +346,14 @@ "plt.show()" ] }, + { + "cell_type": "markdown", + "id": "babbc574", + "metadata": {}, + "source": [ + "## Apply BAM correction" + ] + }, { "cell_type": "markdown", "id": "b0c70ad0", @@ -473,7 +489,7 @@ "id": "8da4db1f", "metadata": {}, "source": [ - "### We can visualize a BAM correction effect using comparison plots" + "## Comparison of the BAM correction effect" ] }, { diff --git a/tutorial/11_hextof_workflow_trXPS_energy_calibration_using_SB.ipynb b/tutorial/11_hextof_workflow_trXPS_energy_calibration_using_SB.ipynb index 78168601..1c1e5b8f 100644 --- a/tutorial/11_hextof_workflow_trXPS_energy_calibration_using_SB.ipynb +++ b/tutorial/11_hextof_workflow_trXPS_energy_calibration_using_SB.ipynb @@ -1,9 +1,33 @@ { "cells": [ + { + "cell_type": "markdown", + "id": "916b6dc6", + "metadata": {}, + "source": [ + "# Tutorial for trXPS for energy calibration using core level side-bands" + ] + }, + { + "cell_type": "markdown", + "id": "61c9f989", + "metadata": {}, + "source": [ + "## Preparation" + ] + }, + { + "cell_type": "markdown", + "id": "aacad72f", + "metadata": {}, + "source": [ + "### Import necessary libraries" + ] + }, { "cell_type": "code", "execution_count": null, - "id": "d33dec83-015b-4b86-9a84-81d10453fe25", + "id": "5e6dcd73", "metadata": {}, "outputs": [], "source": [ @@ -29,7 +53,7 @@ "id": "2c147a5f-d84d-448a-9685-056035e464ed", "metadata": {}, "source": [ - "## Get data paths\n", + "### Get data paths\n", "\n", "If it is your beamtime, you can read the raw data and write to the processed directory. For the public data, you can not write to the processed directory.\n", "\n", @@ -60,7 +84,7 @@ "id": "92b884c6-416c-43dc-9ea4-59aeb04cd045", "metadata": {}, "source": [ - "## Config setup\n", + "### Config setup\n", "\n", "Here, we get the path to the config file and set up the relevant directories. This can also be done directly in the config file." ] @@ -101,7 +125,7 @@ "id": "a47990f8", "metadata": {}, "source": [ - "## For reference, we determine the energy calibration from a bias series first" + "## Reference calibration from a bias series" ] }, { @@ -201,7 +225,7 @@ "id": "98266c62-ab48-4746-96c8-2d47cf92c0e9", "metadata": {}, "source": [ - "### Now we can use those parameters and load our trXPS data using additional config file" + "### Now we can use those parameters and load our trXPS data using the additional config file" ] }, { @@ -241,12 +265,20 @@ "res_ref.plot()" ] }, + { + "cell_type": "markdown", + "id": "0d735518", + "metadata": {}, + "source": [ + "## Energy calibration using side-band peaks" + ] + }, { "cell_type": "markdown", "id": "6c2c8918-322b-4429-8ee9-cc8d032c82d3", "metadata": {}, "source": [ - "## Visualize trXPS data bin in the dldTimeSteps and the corrected delay axis to prepare for energy calibration using SB\n", + "### Visualize trXPS data bin in the dldTimeSteps and the corrected delay axis to prepare for energy calibration using SB\n", "We now prepare for an alternative energy calibration based on the side-bands of the time-dependent dataset. This is e.g. helpful if no bias series has been obtained." ] }, @@ -385,7 +417,7 @@ "id": "4052d629-1178-4248-a945-d60a6ff34bf3", "metadata": {}, "source": [ - "## Append energy axis into a data frame, bin and visualize data in the calibrated energy and corrected delay axis " + "### Append energy axis into a data frame, bin and visualize data in the calibrated energy and corrected delay axis " ] }, { @@ -424,7 +456,7 @@ "id": "a66fac5e", "metadata": {}, "source": [ - "## Compare spectra to reference\n", + "## Compare to reference\n", "While this calibration methods gives a reasonable approximation to the energy axis, there are some deviations to the bias method, so it should be used with care" ] }, diff --git a/tutorial/9_hextof_workflow_trXPD.ipynb b/tutorial/9_hextof_workflow_trXPD.ipynb index a2db6b50..90f3ef63 100644 --- a/tutorial/9_hextof_workflow_trXPD.ipynb +++ b/tutorial/9_hextof_workflow_trXPD.ipynb @@ -51,7 +51,7 @@ "id": "d3ed214a", "metadata": {}, "source": [ - "## Get data paths\n", + "### Get data paths\n", "\n", "If it is your beamtime, you can access both read the raw data and write to processed directory. For the public data, you can not write to processed directory.\n", "\n", @@ -82,7 +82,7 @@ "id": "30effaac", "metadata": {}, "source": [ - "## Config setup\n", + "### Config setup\n", "\n", "Here we get the path to the config file and setup the relevant directories. This can also be done directly in the config file." ] @@ -123,7 +123,7 @@ "id": "ee483947", "metadata": {}, "source": [ - "## Prepare Energy Calibration\n", + "### Prepare Energy Calibration\n", "Instead of making completely new energy calibration we can take existing values from the calibration made in the previous tutorial. This allows us to calibrate the conversion between the digital values of the dld and the energy." ] }, @@ -168,7 +168,7 @@ "id": "f070b3bb", "metadata": {}, "source": [ - "### Read data\n", + "## Read data\n", "Now we can use those parameters and load our trXPD data using additional config file" ] }, @@ -299,7 +299,7 @@ "id": "43e84eff", "metadata": {}, "source": [ - "### XPD from W4f core level\n", + "## XPD from W4f core level\n", "\n", "Now we can bin not only in energy but also in both momentum directions to get XPD patterns of different core level line of tungsten." ] From 4556c839de44e0dbd2b2e20a3e5fba8b360ccfa0 Mon Sep 17 00:00:00 2001 From: rettigl Date: Thu, 21 Nov 2024 14:07:07 +0100 Subject: [PATCH 06/14] add review suggestions --- ...11_hextof_workflow_trXPS_energy_calibration_using_SB.ipynb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tutorial/11_hextof_workflow_trXPS_energy_calibration_using_SB.ipynb b/tutorial/11_hextof_workflow_trXPS_energy_calibration_using_SB.ipynb index 1c1e5b8f..3c89547c 100644 --- a/tutorial/11_hextof_workflow_trXPS_energy_calibration_using_SB.ipynb +++ b/tutorial/11_hextof_workflow_trXPS_energy_calibration_using_SB.ipynb @@ -399,9 +399,9 @@ "ref_id = 1\n", "sp_44498.ec.biases = -1*np.array([-30.2,-31.4,-32.6,-33.6,-34.8])\n", "sp_44498.ec.peaks = np.expand_dims(data[peaks]['dldTimeSteps'].data,1)\n", - "sp_44498.ec.tof = data.dldTimeSteps.data\n", + "sp_44498.ec.tof = res_corr.dldTimeSteps.data\n", "\n", - "params=sp_44498.calibrate_energy_axis(\n", + "sp_44498.calibrate_energy_axis(\n", " ref_id=ref_id,\n", " ref_energy=ref_energy,\n", " method=\"lmfit\",\n", From 4d4000b4ee9507d86762fcbfd11a3e68163d2e98 Mon Sep 17 00:00:00 2001 From: rettigl Date: Thu, 21 Nov 2024 14:17:53 +0100 Subject: [PATCH 07/14] integrate into docs --- docs/scripts/build_flash_parquets.py | 22 +++++++++++++++++++ docs/scripts/download_data.py | 1 + docs/user_guide/advanced_topics.md | 2 ++ docs/workflows/index.md | 3 ++- ...hextof_workflow_trXPS_bam_correction.ipynb | 2 +- 5 files changed, 28 insertions(+), 2 deletions(-) diff --git a/docs/scripts/build_flash_parquets.py b/docs/scripts/build_flash_parquets.py index d3e45c26..8a679969 100644 --- a/docs/scripts/build_flash_parquets.py +++ b/docs/scripts/build_flash_parquets.py @@ -27,3 +27,25 @@ system_config=config_file, collect_metadata=False, ) + +dataset.get("W110", root_dir="./tutorial") +data_path = dataset.dir + + +config_override = { + "core": { + "paths": { + "data_raw_dir": data_path, + "data_parquet_dir": data_path + "/processed/", + }, + }, +} + +runs = ["44498", "44455"] +for run in runs: + sp = SedProcessor( + runs=run, + config=config_override, + system_config=config_file, + collect_metadata=False, + ) diff --git a/docs/scripts/download_data.py b/docs/scripts/download_data.py index cf1e042e..1bbd2e5b 100644 --- a/docs/scripts/download_data.py +++ b/docs/scripts/download_data.py @@ -6,3 +6,4 @@ dataset.get("Gd_W110", remove_zip=True, root_dir=root_dir) dataset.get("TaS2", remove_zip=True, root_dir=root_dir) dataset.get("Au_Mica", remove_zip=True, root_dir=root_dir) +dataset.get("W110", remove_zip=True, root_dir=root_dir) diff --git a/docs/user_guide/advanced_topics.md b/docs/user_guide/advanced_topics.md index ebd773c8..d35c19ce 100644 --- a/docs/user_guide/advanced_topics.md +++ b/docs/user_guide/advanced_topics.md @@ -3,4 +3,6 @@ ../tutorial/6_binning_with_time-stamped_data ../tutorial/7_correcting_orthorhombic_symmetry ../tutorial/8_jittering_tutorial +../tutorial/10_hextof_workflow_trXPS_bam_correction +../tutorial/11_hextof_workflow_trXPS_energy_calibration_using_SB ``` diff --git a/docs/workflows/index.md b/docs/workflows/index.md index 5acb9c04..a1219085 100644 --- a/docs/workflows/index.md +++ b/docs/workflows/index.md @@ -8,5 +8,6 @@ myst: ```{toctree} ../tutorial/4_hextof_workflow -../tutorial/5_sxp_workflow.ipynb +../tutorial/5_sxp_workflow +../tutorial/9_hextof_workflow_trXPD ``` diff --git a/tutorial/10_hextof_workflow_trXPS_bam_correction.ipynb b/tutorial/10_hextof_workflow_trXPS_bam_correction.ipynb index 06184cfd..1b7e0d54 100644 --- a/tutorial/10_hextof_workflow_trXPS_bam_correction.ipynb +++ b/tutorial/10_hextof_workflow_trXPS_bam_correction.ipynb @@ -5,7 +5,7 @@ "id": "9192f0aa", "metadata": {}, "source": [ - "# Tutorial for trXPS for the HEXTOF instrument at FLASH: t$_0$, cross-correlation and BAM correction" + "# Tutorial for trXPS for the HEXTOF instrument at FLASH: t0, cross-correlation and BAM correction" ] }, { From 92142795065660933b95fc5bee1948aa3db39fbb Mon Sep 17 00:00:00 2001 From: "bump[bot]" Date: Thu, 21 Nov 2024 15:14:50 +0000 Subject: [PATCH 08/14] bump version to 0.3.3a0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 3d33fa97..25b4caec 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,7 +3,7 @@ name = "sed-processor" packages = [ {include = "sed"} ] -version = "0.3.2" +version = "0.3.3a0" description = "Single Event Data Frame Processor: Backend to handle photoelectron resolved datastreams" authors = ["OpenCOMPES team "] readme = "README.md" From a8d7b367ad10a5692660facf869b6737ea8224fa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 22 Nov 2024 22:13:38 +0000 Subject: [PATCH 09/14] Bump tornado from 6.4.1 to 6.4.2 Bumps [tornado](https://github.com/tornadoweb/tornado) from 6.4.1 to 6.4.2. - [Changelog](https://github.com/tornadoweb/tornado/blob/v6.4.2/docs/releases.rst) - [Commits](https://github.com/tornadoweb/tornado/compare/v6.4.1...v6.4.2) --- updated-dependencies: - dependency-name: tornado dependency-type: indirect ... Signed-off-by: dependabot[bot] --- poetry.lock | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/poetry.lock b/poetry.lock index b4702b0b..89ce511e 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2939,12 +2939,12 @@ files = [ [package.dependencies] numpy = [ - {version = ">=1.23.5", markers = "python_version >= \"3.11\""}, - {version = ">=1.21.2", markers = "platform_system != \"Darwin\" and python_version >= \"3.10\" and python_version < \"3.11\""}, + {version = ">=1.21.0", markers = "python_version <= \"3.9\" and platform_system == \"Darwin\" and platform_machine == \"arm64\" and python_version >= \"3.8\""}, {version = ">=1.19.3", markers = "platform_system == \"Linux\" and platform_machine == \"aarch64\" and python_version >= \"3.8\" and python_version < \"3.10\" or python_version > \"3.9\" and python_version < \"3.10\" or python_version >= \"3.9\" and platform_system != \"Darwin\" and python_version < \"3.10\" or python_version >= \"3.9\" and platform_machine != \"arm64\" and python_version < \"3.10\""}, {version = ">=1.17.3", markers = "(platform_system != \"Darwin\" and platform_system != \"Linux\") and python_version >= \"3.8\" and python_version < \"3.9\" or platform_system != \"Darwin\" and python_version >= \"3.8\" and python_version < \"3.9\" and platform_machine != \"aarch64\" or platform_machine != \"arm64\" and python_version >= \"3.8\" and python_version < \"3.9\" and platform_system != \"Linux\" or (platform_machine != \"arm64\" and platform_machine != \"aarch64\") and python_version >= \"3.8\" and python_version < \"3.9\""}, - {version = ">=1.21.0", markers = "python_version <= \"3.9\" and platform_system == \"Darwin\" and platform_machine == \"arm64\" and python_version >= \"3.8\""}, + {version = ">=1.23.5", markers = "python_version >= \"3.11\""}, {version = ">=1.21.4", markers = "python_version >= \"3.10\" and platform_system == \"Darwin\" and python_version < \"3.11\""}, + {version = ">=1.21.2", markers = "platform_system != \"Darwin\" and python_version >= \"3.10\" and python_version < \"3.11\""}, ] [[package]] @@ -3061,9 +3061,9 @@ files = [ [package.dependencies] numpy = [ + {version = ">=1.20.3", markers = "python_version < \"3.10\""}, {version = ">=1.23.2", markers = "python_version >= \"3.11\""}, {version = ">=1.21.0", markers = "python_version >= \"3.10\" and python_version < \"3.11\""}, - {version = ">=1.20.3", markers = "python_version < \"3.10\""}, ] python-dateutil = ">=2.8.2" pytz = ">=2020.1" @@ -4754,22 +4754,22 @@ files = [ [[package]] name = "tornado" -version = "6.4.1" +version = "6.4.2" description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." optional = false python-versions = ">=3.8" files = [ - {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:163b0aafc8e23d8cdc3c9dfb24c5368af84a81e3364745ccb4427669bf84aec8"}, - {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6d5ce3437e18a2b66fbadb183c1d3364fb03f2be71299e7d10dbeeb69f4b2a14"}, - {file = "tornado-6.4.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2e20b9113cd7293f164dc46fffb13535266e713cdb87bd2d15ddb336e96cfc4"}, - {file = "tornado-6.4.1-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ae50a504a740365267b2a8d1a90c9fbc86b780a39170feca9bcc1787ff80842"}, - {file = "tornado-6.4.1-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:613bf4ddf5c7a95509218b149b555621497a6cc0d46ac341b30bd9ec19eac7f3"}, - {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:25486eb223babe3eed4b8aecbac33b37e3dd6d776bc730ca14e1bf93888b979f"}, - {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:454db8a7ecfcf2ff6042dde58404164d969b6f5d58b926da15e6b23817950fc4"}, - {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a02a08cc7a9314b006f653ce40483b9b3c12cda222d6a46d4ac63bb6c9057698"}, - {file = "tornado-6.4.1-cp38-abi3-win32.whl", hash = "sha256:d9a566c40b89757c9aa8e6f032bcdb8ca8795d7c1a9762910c722b1635c9de4d"}, - {file = "tornado-6.4.1-cp38-abi3-win_amd64.whl", hash = "sha256:b24b8982ed444378d7f21d563f4180a2de31ced9d8d84443907a0a64da2072e7"}, - {file = "tornado-6.4.1.tar.gz", hash = "sha256:92d3ab53183d8c50f8204a51e6f91d18a15d5ef261e84d452800d4ff6fc504e9"}, + {file = "tornado-6.4.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e828cce1123e9e44ae2a50a9de3055497ab1d0aeb440c5ac23064d9e44880da1"}, + {file = "tornado-6.4.2-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:072ce12ada169c5b00b7d92a99ba089447ccc993ea2143c9ede887e0937aa803"}, + {file = "tornado-6.4.2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a017d239bd1bb0919f72af256a970624241f070496635784d9bf0db640d3fec"}, + {file = "tornado-6.4.2-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c36e62ce8f63409301537222faffcef7dfc5284f27eec227389f2ad11b09d946"}, + {file = "tornado-6.4.2-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bca9eb02196e789c9cb5c3c7c0f04fb447dc2adffd95265b2c7223a8a615ccbf"}, + {file = "tornado-6.4.2-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:304463bd0772442ff4d0f5149c6f1c2135a1fae045adf070821c6cdc76980634"}, + {file = "tornado-6.4.2-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:c82c46813ba483a385ab2a99caeaedf92585a1f90defb5693351fa7e4ea0bf73"}, + {file = "tornado-6.4.2-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:932d195ca9015956fa502c6b56af9eb06106140d844a335590c1ec7f5277d10c"}, + {file = "tornado-6.4.2-cp38-abi3-win32.whl", hash = "sha256:2876cef82e6c5978fde1e0d5b1f919d756968d5b4282418f3146b79b58556482"}, + {file = "tornado-6.4.2-cp38-abi3-win_amd64.whl", hash = "sha256:908b71bf3ff37d81073356a5fadcc660eb10c1476ee6e2725588626ce7e5ca38"}, + {file = "tornado-6.4.2.tar.gz", hash = "sha256:92bad5b4746e9879fd7bf1eb21dce4e3fc5128d71601f80005afa39237ad620b"}, ] [[package]] From 184e4915e478e317d214064eb750e2a7b216d109 Mon Sep 17 00:00:00 2001 From: rettigl Date: Tue, 19 Nov 2024 15:30:52 +0100 Subject: [PATCH 10/14] catch OSError for incomplete files --- sed/loader/mpes/loader.py | 69 +++++++++++++++++++++++---------------- 1 file changed, 41 insertions(+), 28 deletions(-) diff --git a/sed/loader/mpes/loader.py b/sed/loader/mpes/loader.py index 342158b1..20d8e2d1 100644 --- a/sed/loader/mpes/loader.py +++ b/sed/loader/mpes/loader.py @@ -88,20 +88,27 @@ def hdf5_to_dataframe( ) # Delay-read all files - arrays = [ - da.from_delayed( - dask.delayed(hdf5_to_array)( - h5file=h5py.File(f), - group_names=group_names, - time_stamps=time_stamps, - ms_markers_group=ms_markers_group, - first_event_time_stamp_key=first_event_time_stamp_key, - ), - dtype=test_array.dtype, - shape=(test_array.shape[0], np.nan), - ) - for f in files - ] + arrays = [] + for f in files: + try: + arrays.append( + da.from_delayed( + dask.delayed(hdf5_to_array)( + h5file=h5py.File(f), + group_names=group_names, + time_stamps=time_stamps, + ms_markers_group=ms_markers_group, + first_event_time_stamp_key=first_event_time_stamp_key, + ), + dtype=test_array.dtype, + shape=(test_array.shape[0], np.nan), + ), + ) + except OSError as exc: + if "Unable to synchronously open file" in str(exc): + print(f"Unable to open file {f}: {str(exc)}") + pass + array_stack = da.concatenate(arrays, axis=1).T return ddf.from_dask_array(array_stack, columns=column_names) @@ -169,20 +176,26 @@ def hdf5_to_timed_dataframe( ) # Delay-read all files - arrays = [ - da.from_delayed( - dask.delayed(hdf5_to_timed_array)( - h5file=h5py.File(f), - group_names=group_names, - time_stamps=time_stamps, - ms_markers_group=ms_markers_group, - first_event_time_stamp_key=first_event_time_stamp_key, - ), - dtype=test_array.dtype, - shape=(test_array.shape[0], np.nan), - ) - for f in files - ] + arrays = [] + for f in files: + try: + arrays.append( + da.from_delayed( + dask.delayed(hdf5_to_timed_array)( + h5file=h5py.File(f), + group_names=group_names, + time_stamps=time_stamps, + ms_markers_group=ms_markers_group, + first_event_time_stamp_key=first_event_time_stamp_key, + ), + dtype=test_array.dtype, + shape=(test_array.shape[0], np.nan), + ), + ) + except OSError as exc: + if "Unable to synchronously open file" in str(exc): + pass + array_stack = da.concatenate(arrays, axis=1).T return ddf.from_dask_array(array_stack, columns=column_names) From 21860f9ad9d2e98e8fbc55937347bf2557f07af9 Mon Sep 17 00:00:00 2001 From: rettigl Date: Tue, 19 Nov 2024 16:58:07 +0100 Subject: [PATCH 11/14] fix get_count_rate and get_elapsed_time --- sed/loader/mpes/loader.py | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/sed/loader/mpes/loader.py b/sed/loader/mpes/loader.py index 20d8e2d1..61270c8a 100644 --- a/sed/loader/mpes/loader.py +++ b/sed/loader/mpes/loader.py @@ -927,13 +927,18 @@ def get_count_rate( count_rate_list = [] accumulated_time = 0 for fid in fids: - count_rate_, secs_ = get_count_rate( - h5py.File(self.files[fid]), - ms_markers_group=ms_markers_group, - ) - secs_list.append((accumulated_time + secs_).T) - count_rate_list.append(count_rate_.T) - accumulated_time += secs_[-1] + try: + count_rate_, secs_ = get_count_rate( + h5py.File(self.files[fid]), + ms_markers_group=ms_markers_group, + ) + secs_list.append((accumulated_time + secs_).T) + count_rate_list.append(count_rate_.T) + accumulated_time += secs_[-1] + except OSError as exc: + if "Unable to synchronously open file" in str(exc): + print(f"Unable to open file {fid}: {str(exc)}") + pass count_rate = np.concatenate(count_rate_list) secs = np.concatenate(secs_list) @@ -967,10 +972,15 @@ def get_elapsed_time(self, fids: Sequence[int] = None, **kwds) -> float: secs = 0.0 for fid in fids: - secs += get_elapsed_time( - h5py.File(self.files[fid]), - ms_markers_group=ms_markers_group, - ) + try: + secs += get_elapsed_time( + h5py.File(self.files[fid]), + ms_markers_group=ms_markers_group, + ) + except OSError as exc: + if "Unable to synchronously open file" in str(exc): + print(f"Unable to open file {fid}: {str(exc)}") + pass return secs From d8ec600c27374865839fc40f3d1da20bfceaeee2 Mon Sep 17 00:00:00 2001 From: rettigl Date: Thu, 28 Nov 2024 22:27:03 +0100 Subject: [PATCH 12/14] update notebook and pynxtools --- poetry.lock | 311 +++++++++++++++++++++++++++++-------------------- pyproject.toml | 7 +- 2 files changed, 189 insertions(+), 129 deletions(-) diff --git a/poetry.lock b/poetry.lock index 89ce511e..5ad14eaf 100644 --- a/poetry.lock +++ b/poetry.lock @@ -882,37 +882,37 @@ test = ["pandas[test]", "pre-commit", "pytest", "pytest-rerunfailures", "pytest- [[package]] name = "debugpy" -version = "1.8.8" +version = "1.8.9" description = "An implementation of the Debug Adapter Protocol for Python" optional = false python-versions = ">=3.8" files = [ - {file = "debugpy-1.8.8-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:e59b1607c51b71545cb3496876544f7186a7a27c00b436a62f285603cc68d1c6"}, - {file = "debugpy-1.8.8-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6531d952b565b7cb2fbd1ef5df3d333cf160b44f37547a4e7cf73666aca5d8d"}, - {file = "debugpy-1.8.8-cp310-cp310-win32.whl", hash = "sha256:b01f4a5e5c5fb1d34f4ccba99a20ed01eabc45a4684f4948b5db17a319dfb23f"}, - {file = "debugpy-1.8.8-cp310-cp310-win_amd64.whl", hash = "sha256:535f4fb1c024ddca5913bb0eb17880c8f24ba28aa2c225059db145ee557035e9"}, - {file = "debugpy-1.8.8-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:c399023146e40ae373753a58d1be0a98bf6397fadc737b97ad612886b53df318"}, - {file = "debugpy-1.8.8-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:09cc7b162586ea2171eea055985da2702b0723f6f907a423c9b2da5996ad67ba"}, - {file = "debugpy-1.8.8-cp311-cp311-win32.whl", hash = "sha256:eea8821d998ebeb02f0625dd0d76839ddde8cbf8152ebbe289dd7acf2cdc6b98"}, - {file = "debugpy-1.8.8-cp311-cp311-win_amd64.whl", hash = "sha256:d4483836da2a533f4b1454dffc9f668096ac0433de855f0c22cdce8c9f7e10c4"}, - {file = "debugpy-1.8.8-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:0cc94186340be87b9ac5a707184ec8f36547fb66636d1029ff4f1cc020e53996"}, - {file = "debugpy-1.8.8-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64674e95916e53c2e9540a056e5f489e0ad4872645399d778f7c598eacb7b7f9"}, - {file = "debugpy-1.8.8-cp312-cp312-win32.whl", hash = "sha256:5c6e885dbf12015aed73770f29dec7023cb310d0dc2ba8bfbeb5c8e43f80edc9"}, - {file = "debugpy-1.8.8-cp312-cp312-win_amd64.whl", hash = "sha256:19ffbd84e757a6ca0113574d1bf5a2298b3947320a3e9d7d8dc3377f02d9f864"}, - {file = "debugpy-1.8.8-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:705cd123a773d184860ed8dae99becd879dfec361098edbefb5fc0d3683eb804"}, - {file = "debugpy-1.8.8-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:890fd16803f50aa9cb1a9b9b25b5ec321656dd6b78157c74283de241993d086f"}, - {file = "debugpy-1.8.8-cp313-cp313-win32.whl", hash = "sha256:90244598214bbe704aa47556ec591d2f9869ff9e042e301a2859c57106649add"}, - {file = "debugpy-1.8.8-cp313-cp313-win_amd64.whl", hash = "sha256:4b93e4832fd4a759a0c465c967214ed0c8a6e8914bced63a28ddb0dd8c5f078b"}, - {file = "debugpy-1.8.8-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:143ef07940aeb8e7316de48f5ed9447644da5203726fca378f3a6952a50a9eae"}, - {file = "debugpy-1.8.8-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f95651bdcbfd3b27a408869a53fbefcc2bcae13b694daee5f1365b1b83a00113"}, - {file = "debugpy-1.8.8-cp38-cp38-win32.whl", hash = "sha256:26b461123a030e82602a750fb24d7801776aa81cd78404e54ab60e8b5fecdad5"}, - {file = "debugpy-1.8.8-cp38-cp38-win_amd64.whl", hash = "sha256:f3cbf1833e644a3100eadb6120f25be8a532035e8245584c4f7532937edc652a"}, - {file = "debugpy-1.8.8-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:53709d4ec586b525724819dc6af1a7703502f7e06f34ded7157f7b1f963bb854"}, - {file = "debugpy-1.8.8-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a9c013077a3a0000e83d97cf9cc9328d2b0bbb31f56b0e99ea3662d29d7a6a2"}, - {file = "debugpy-1.8.8-cp39-cp39-win32.whl", hash = "sha256:ffe94dd5e9a6739a75f0b85316dc185560db3e97afa6b215628d1b6a17561cb2"}, - {file = "debugpy-1.8.8-cp39-cp39-win_amd64.whl", hash = "sha256:5c0e5a38c7f9b481bf31277d2f74d2109292179081f11108e668195ef926c0f9"}, - {file = "debugpy-1.8.8-py2.py3-none-any.whl", hash = "sha256:ec684553aba5b4066d4de510859922419febc710df7bba04fe9e7ef3de15d34f"}, - {file = "debugpy-1.8.8.zip", hash = "sha256:e6355385db85cbd666be703a96ab7351bc9e6c61d694893206f8001e22aee091"}, + {file = "debugpy-1.8.9-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:cfe1e6c6ad7178265f74981edf1154ffce97b69005212fbc90ca22ddfe3d017e"}, + {file = "debugpy-1.8.9-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ada7fb65102a4d2c9ab62e8908e9e9f12aed9d76ef44880367bc9308ebe49a0f"}, + {file = "debugpy-1.8.9-cp310-cp310-win32.whl", hash = "sha256:c36856343cbaa448171cba62a721531e10e7ffb0abff838004701454149bc037"}, + {file = "debugpy-1.8.9-cp310-cp310-win_amd64.whl", hash = "sha256:17c5e0297678442511cf00a745c9709e928ea4ca263d764e90d233208889a19e"}, + {file = "debugpy-1.8.9-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:b74a49753e21e33e7cf030883a92fa607bddc4ede1aa4145172debc637780040"}, + {file = "debugpy-1.8.9-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62d22dacdb0e296966d7d74a7141aaab4bec123fa43d1a35ddcb39bf9fd29d70"}, + {file = "debugpy-1.8.9-cp311-cp311-win32.whl", hash = "sha256:8138efff315cd09b8dcd14226a21afda4ca582284bf4215126d87342bba1cc66"}, + {file = "debugpy-1.8.9-cp311-cp311-win_amd64.whl", hash = "sha256:ff54ef77ad9f5c425398efb150239f6fe8e20c53ae2f68367eba7ece1e96226d"}, + {file = "debugpy-1.8.9-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:957363d9a7a6612a37458d9a15e72d03a635047f946e5fceee74b50d52a9c8e2"}, + {file = "debugpy-1.8.9-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e565fc54b680292b418bb809f1386f17081d1346dca9a871bf69a8ac4071afe"}, + {file = "debugpy-1.8.9-cp312-cp312-win32.whl", hash = "sha256:3e59842d6c4569c65ceb3751075ff8d7e6a6ada209ceca6308c9bde932bcef11"}, + {file = "debugpy-1.8.9-cp312-cp312-win_amd64.whl", hash = "sha256:66eeae42f3137eb428ea3a86d4a55f28da9bd5a4a3d369ba95ecc3a92c1bba53"}, + {file = "debugpy-1.8.9-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:957ecffff80d47cafa9b6545de9e016ae8c9547c98a538ee96ab5947115fb3dd"}, + {file = "debugpy-1.8.9-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1efbb3ff61487e2c16b3e033bc8595aea578222c08aaf3c4bf0f93fadbd662ee"}, + {file = "debugpy-1.8.9-cp313-cp313-win32.whl", hash = "sha256:7c4d65d03bee875bcb211c76c1d8f10f600c305dbd734beaed4077e902606fee"}, + {file = "debugpy-1.8.9-cp313-cp313-win_amd64.whl", hash = "sha256:e46b420dc1bea64e5bbedd678148be512442bc589b0111bd799367cde051e71a"}, + {file = "debugpy-1.8.9-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:472a3994999fe6c0756945ffa359e9e7e2d690fb55d251639d07208dbc37caea"}, + {file = "debugpy-1.8.9-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:365e556a4772d7d0d151d7eb0e77ec4db03bcd95f26b67b15742b88cacff88e9"}, + {file = "debugpy-1.8.9-cp38-cp38-win32.whl", hash = "sha256:54a7e6d3014c408eb37b0b06021366ee985f1539e12fe49ca2ee0d392d9ceca5"}, + {file = "debugpy-1.8.9-cp38-cp38-win_amd64.whl", hash = "sha256:8e99c0b1cc7bf86d83fb95d5ccdc4ad0586d4432d489d1f54e4055bcc795f693"}, + {file = "debugpy-1.8.9-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:7e8b079323a56f719977fde9d8115590cb5e7a1cba2fcee0986ef8817116e7c1"}, + {file = "debugpy-1.8.9-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6953b335b804a41f16a192fa2e7851bdcfd92173cbb2f9f777bb934f49baab65"}, + {file = "debugpy-1.8.9-cp39-cp39-win32.whl", hash = "sha256:7e646e62d4602bb8956db88b1e72fe63172148c1e25c041e03b103a25f36673c"}, + {file = "debugpy-1.8.9-cp39-cp39-win_amd64.whl", hash = "sha256:3d9755e77a2d680ce3d2c5394a444cf42be4a592caaf246dbfbdd100ffcf7ae5"}, + {file = "debugpy-1.8.9-py2.py3-none-any.whl", hash = "sha256:cc37a6c9987ad743d9c3a14fa1b1a14b7e4e6041f9dd0c8abf8895fe7a97b899"}, + {file = "debugpy-1.8.9.zip", hash = "sha256:1339e14c7d980407248f09824d1b25ff5c5616651689f1e0f0e51bdead3ea13e"}, ] [[package]] @@ -974,6 +974,17 @@ files = [ {file = "docutils-0.20.1.tar.gz", hash = "sha256:f08a4e276c3a1583a86dce3e34aba3fe04d02bba2dd51ed16106244e8a923e3b"}, ] +[[package]] +name = "entrypoints" +version = "0.4" +description = "Discover and load entry points from installed packages." +optional = false +python-versions = ">=3.6" +files = [ + {file = "entrypoints-0.4-py3-none-any.whl", hash = "sha256:f174b5ff827504fd3cd97cc3f8649f3693f51538c7e4bdf3ef002c8429d42f9f"}, + {file = "entrypoints-0.4.tar.gz", hash = "sha256:b706eddaa9218a19ebcd67b56818f05bb27589b1ca9e8d797b74affad4ccacd4"}, +] + [[package]] name = "exceptiongroup" version = "1.2.2" @@ -1032,13 +1043,13 @@ numpy = "*" [[package]] name = "fastjsonschema" -version = "2.20.0" +version = "2.21.0" description = "Fastest Python implementation of JSON schema" optional = false python-versions = "*" files = [ - {file = "fastjsonschema-2.20.0-py3-none-any.whl", hash = "sha256:5875f0b0fa7a0043a91e93a9b8f793bcbbba9691e7fd83dca95c28ba26d21f0a"}, - {file = "fastjsonschema-2.20.0.tar.gz", hash = "sha256:3d48fc5300ee96f5d116f10fe6f28d938e6008f59a6a025c2649475b87f76a23"}, + {file = "fastjsonschema-2.21.0-py3-none-any.whl", hash = "sha256:5b23b8e7c9c6adc0ecb91c03a0768cb48cd154d9159378a69c8318532e0b5cbf"}, + {file = "fastjsonschema-2.21.0.tar.gz", hash = "sha256:a02026bbbedc83729da3bfff215564b71902757f33f60089f1abae193daa4771"}, ] [package.extras] @@ -1580,13 +1591,13 @@ files = [ [[package]] name = "json5" -version = "0.9.28" +version = "0.10.0" description = "A Python implementation of the JSON5 data format." optional = true python-versions = ">=3.8.0" files = [ - {file = "json5-0.9.28-py3-none-any.whl", hash = "sha256:29c56f1accdd8bc2e037321237662034a7e07921e2b7223281a5ce2c46f0c4df"}, - {file = "json5-0.9.28.tar.gz", hash = "sha256:1f82f36e615bc5b42f1bbd49dbc94b12563c56408c6ffa06414ea310890e9a6e"}, + {file = "json5-0.10.0-py3-none-any.whl", hash = "sha256:19b23410220a7271e8377f81ba8aacba2fdd56947fbb137ee5977cbe1f5e8dfa"}, + {file = "json5-0.10.0.tar.gz", hash = "sha256:e66941c8f0a02026943c52c2eb34ebeb2a6f819a0be05920a6f5243cd30fd559"}, ] [package.extras] @@ -1670,26 +1681,27 @@ notebook = "*" [[package]] name = "jupyter-client" -version = "8.6.3" +version = "7.4.9" description = "Jupyter protocol implementation and client libraries" optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f"}, - {file = "jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419"}, + {file = "jupyter_client-7.4.9-py3-none-any.whl", hash = "sha256:214668aaea208195f4c13d28eb272ba79f945fc0cf3f11c7092c20b2ca1980e7"}, + {file = "jupyter_client-7.4.9.tar.gz", hash = "sha256:52be28e04171f07aed8f20e1616a5a552ab9fee9cbbe6c1896ae170c3880d392"}, ] [package.dependencies] -importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""} -jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +entrypoints = "*" +jupyter-core = ">=4.9.2" +nest-asyncio = ">=1.5.4" python-dateutil = ">=2.8.2" pyzmq = ">=23.0" tornado = ">=6.2" -traitlets = ">=5.3" +traitlets = "*" [package.extras] -docs = ["ipykernel", "myst-parser", "pydata-sphinx-theme", "sphinx (>=4)", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] -test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pytest (<8.2.0)", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"] +doc = ["ipykernel", "myst-parser", "sphinx (>=1.3.6)", "sphinx-rtd-theme", "sphinxcontrib-github-alt"] +test = ["codecov", "coverage", "ipykernel (>=6.12)", "ipython", "mypy", "pre-commit", "pytest", "pytest-asyncio (>=0.18)", "pytest-cov", "pytest-timeout"] [[package]] name = "jupyter-console" @@ -2800,13 +2812,13 @@ files = [ [[package]] name = "notebook" -version = "6.5.4" +version = "6.5.7" description = "A web-based notebook environment for interactive computing" optional = false python-versions = ">=3.7" files = [ - {file = "notebook-6.5.4-py3-none-any.whl", hash = "sha256:dd17e78aefe64c768737b32bf171c1c766666a21cc79a44d37a1700771cab56f"}, - {file = "notebook-6.5.4.tar.gz", hash = "sha256:517209568bd47261e2def27a140e97d49070602eea0d226a696f42a7f16c9a4e"}, + {file = "notebook-6.5.7-py3-none-any.whl", hash = "sha256:a6afa9a4ff4d149a0771ff8b8c881a7a73b3835f9add0606696d6e9d98ac1cd0"}, + {file = "notebook-6.5.7.tar.gz", hash = "sha256:04eb9011dfac634fbd4442adaf0a8c27cd26beef831fe1d19faf930c327768e4"}, ] [package.dependencies] @@ -2814,7 +2826,7 @@ argon2-cffi = "*" ipykernel = "*" ipython-genutils = "*" jinja2 = "*" -jupyter-client = ">=5.3.4" +jupyter-client = ">=5.3.4,<8" jupyter-core = ">=4.6.1" nbclassic = ">=0.4.7" nbconvert = ">=5" @@ -2939,79 +2951,96 @@ files = [ [package.dependencies] numpy = [ - {version = ">=1.21.0", markers = "python_version <= \"3.9\" and platform_system == \"Darwin\" and platform_machine == \"arm64\" and python_version >= \"3.8\""}, + {version = ">=1.23.5", markers = "python_version >= \"3.11\""}, + {version = ">=1.21.2", markers = "platform_system != \"Darwin\" and python_version >= \"3.10\" and python_version < \"3.11\""}, {version = ">=1.19.3", markers = "platform_system == \"Linux\" and platform_machine == \"aarch64\" and python_version >= \"3.8\" and python_version < \"3.10\" or python_version > \"3.9\" and python_version < \"3.10\" or python_version >= \"3.9\" and platform_system != \"Darwin\" and python_version < \"3.10\" or python_version >= \"3.9\" and platform_machine != \"arm64\" and python_version < \"3.10\""}, {version = ">=1.17.3", markers = "(platform_system != \"Darwin\" and platform_system != \"Linux\") and python_version >= \"3.8\" and python_version < \"3.9\" or platform_system != \"Darwin\" and python_version >= \"3.8\" and python_version < \"3.9\" and platform_machine != \"aarch64\" or platform_machine != \"arm64\" and python_version >= \"3.8\" and python_version < \"3.9\" and platform_system != \"Linux\" or (platform_machine != \"arm64\" and platform_machine != \"aarch64\") and python_version >= \"3.8\" and python_version < \"3.9\""}, - {version = ">=1.23.5", markers = "python_version >= \"3.11\""}, + {version = ">=1.21.0", markers = "python_version <= \"3.9\" and platform_system == \"Darwin\" and platform_machine == \"arm64\" and python_version >= \"3.8\""}, {version = ">=1.21.4", markers = "python_version >= \"3.10\" and platform_system == \"Darwin\" and python_version < \"3.11\""}, - {version = ">=1.21.2", markers = "platform_system != \"Darwin\" and python_version >= \"3.10\" and python_version < \"3.11\""}, ] [[package]] name = "orjson" -version = "3.10.11" +version = "3.10.12" description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" optional = false python-versions = ">=3.8" files = [ - {file = "orjson-3.10.11-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:6dade64687f2bd7c090281652fe18f1151292d567a9302b34c2dbb92a3872f1f"}, - {file = "orjson-3.10.11-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82f07c550a6ccd2b9290849b22316a609023ed851a87ea888c0456485a7d196a"}, - {file = "orjson-3.10.11-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bd9a187742d3ead9df2e49240234d728c67c356516cf4db018833a86f20ec18c"}, - {file = "orjson-3.10.11-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:77b0fed6f209d76c1c39f032a70df2d7acf24b1812ca3e6078fd04e8972685a3"}, - {file = "orjson-3.10.11-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:63fc9d5fe1d4e8868f6aae547a7b8ba0a2e592929245fff61d633f4caccdcdd6"}, - {file = "orjson-3.10.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65cd3e3bb4fbb4eddc3c1e8dce10dc0b73e808fcb875f9fab40c81903dd9323e"}, - {file = "orjson-3.10.11-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:6f67c570602300c4befbda12d153113b8974a3340fdcf3d6de095ede86c06d92"}, - {file = "orjson-3.10.11-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1f39728c7f7d766f1f5a769ce4d54b5aaa4c3f92d5b84817053cc9995b977acc"}, - {file = "orjson-3.10.11-cp310-none-win32.whl", hash = "sha256:1789d9db7968d805f3d94aae2c25d04014aae3a2fa65b1443117cd462c6da647"}, - {file = "orjson-3.10.11-cp310-none-win_amd64.whl", hash = "sha256:5576b1e5a53a5ba8f8df81872bb0878a112b3ebb1d392155f00f54dd86c83ff6"}, - {file = "orjson-3.10.11-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:1444f9cb7c14055d595de1036f74ecd6ce15f04a715e73f33bb6326c9cef01b6"}, - {file = "orjson-3.10.11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cdec57fe3b4bdebcc08a946db3365630332dbe575125ff3d80a3272ebd0ddafe"}, - {file = "orjson-3.10.11-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4eed32f33a0ea6ef36ccc1d37f8d17f28a1d6e8eefae5928f76aff8f1df85e67"}, - {file = "orjson-3.10.11-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80df27dd8697242b904f4ea54820e2d98d3f51f91e97e358fc13359721233e4b"}, - {file = "orjson-3.10.11-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:705f03cee0cb797256d54de6695ef219e5bc8c8120b6654dd460848d57a9af3d"}, - {file = "orjson-3.10.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03246774131701de8e7059b2e382597da43144a9a7400f178b2a32feafc54bd5"}, - {file = "orjson-3.10.11-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8b5759063a6c940a69c728ea70d7c33583991c6982915a839c8da5f957e0103a"}, - {file = "orjson-3.10.11-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:677f23e32491520eebb19c99bb34675daf5410c449c13416f7f0d93e2cf5f981"}, - {file = "orjson-3.10.11-cp311-none-win32.whl", hash = "sha256:a11225d7b30468dcb099498296ffac36b4673a8398ca30fdaec1e6c20df6aa55"}, - {file = "orjson-3.10.11-cp311-none-win_amd64.whl", hash = "sha256:df8c677df2f9f385fcc85ab859704045fa88d4668bc9991a527c86e710392bec"}, - {file = "orjson-3.10.11-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:360a4e2c0943da7c21505e47cf6bd725588962ff1d739b99b14e2f7f3545ba51"}, - {file = "orjson-3.10.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:496e2cb45de21c369079ef2d662670a4892c81573bcc143c4205cae98282ba97"}, - {file = "orjson-3.10.11-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7dfa8db55c9792d53c5952900c6a919cfa377b4f4534c7a786484a6a4a350c19"}, - {file = "orjson-3.10.11-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:51f3382415747e0dbda9dade6f1e1a01a9d37f630d8c9049a8ed0e385b7a90c0"}, - {file = "orjson-3.10.11-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f35a1b9f50a219f470e0e497ca30b285c9f34948d3c8160d5ad3a755d9299433"}, - {file = "orjson-3.10.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2f3b7c5803138e67028dde33450e054c87e0703afbe730c105f1fcd873496d5"}, - {file = "orjson-3.10.11-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f91d9eb554310472bd09f5347950b24442600594c2edc1421403d7610a0998fd"}, - {file = "orjson-3.10.11-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dfbb2d460a855c9744bbc8e36f9c3a997c4b27d842f3d5559ed54326e6911f9b"}, - {file = "orjson-3.10.11-cp312-none-win32.whl", hash = "sha256:d4a62c49c506d4d73f59514986cadebb7e8d186ad510c518f439176cf8d5359d"}, - {file = "orjson-3.10.11-cp312-none-win_amd64.whl", hash = "sha256:f1eec3421a558ff7a9b010a6c7effcfa0ade65327a71bb9b02a1c3b77a247284"}, - {file = "orjson-3.10.11-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:c46294faa4e4d0eb73ab68f1a794d2cbf7bab33b1dda2ac2959ffb7c61591899"}, - {file = "orjson-3.10.11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52e5834d7d6e58a36846e059d00559cb9ed20410664f3ad156cd2cc239a11230"}, - {file = "orjson-3.10.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2fc947e5350fdce548bfc94f434e8760d5cafa97fb9c495d2fef6757aa02ec0"}, - {file = "orjson-3.10.11-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0efabbf839388a1dab5b72b5d3baedbd6039ac83f3b55736eb9934ea5494d258"}, - {file = "orjson-3.10.11-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a3f29634260708c200c4fe148e42b4aae97d7b9fee417fbdd74f8cfc265f15b0"}, - {file = "orjson-3.10.11-cp313-none-win32.whl", hash = "sha256:1a1222ffcee8a09476bbdd5d4f6f33d06d0d6642df2a3d78b7a195ca880d669b"}, - {file = "orjson-3.10.11-cp313-none-win_amd64.whl", hash = "sha256:bc274ac261cc69260913b2d1610760e55d3c0801bb3457ba7b9004420b6b4270"}, - {file = "orjson-3.10.11-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:19b3763e8bbf8ad797df6b6b5e0fc7c843ec2e2fc0621398534e0c6400098f87"}, - {file = "orjson-3.10.11-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1be83a13312e5e58d633580c5eb8d0495ae61f180da2722f20562974188af205"}, - {file = "orjson-3.10.11-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:afacfd1ab81f46dedd7f6001b6d4e8de23396e4884cd3c3436bd05defb1a6446"}, - {file = "orjson-3.10.11-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cb4d0bea56bba596723d73f074c420aec3b2e5d7d30698bc56e6048066bd560c"}, - {file = "orjson-3.10.11-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96ed1de70fcb15d5fed529a656df29f768187628727ee2788344e8a51e1c1350"}, - {file = "orjson-3.10.11-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4bfb30c891b530f3f80e801e3ad82ef150b964e5c38e1fb8482441c69c35c61c"}, - {file = "orjson-3.10.11-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d496c74fc2b61341e3cefda7eec21b7854c5f672ee350bc55d9a4997a8a95204"}, - {file = "orjson-3.10.11-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:655a493bac606655db9a47fe94d3d84fc7f3ad766d894197c94ccf0c5408e7d3"}, - {file = "orjson-3.10.11-cp38-none-win32.whl", hash = "sha256:b9546b278c9fb5d45380f4809e11b4dd9844ca7aaf1134024503e134ed226161"}, - {file = "orjson-3.10.11-cp38-none-win_amd64.whl", hash = "sha256:b592597fe551d518f42c5a2eb07422eb475aa8cfdc8c51e6da7054b836b26782"}, - {file = "orjson-3.10.11-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:c95f2ecafe709b4e5c733b5e2768ac569bed308623c85806c395d9cca00e08af"}, - {file = "orjson-3.10.11-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:80c00d4acded0c51c98754fe8218cb49cb854f0f7eb39ea4641b7f71732d2cb7"}, - {file = "orjson-3.10.11-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:461311b693d3d0a060439aa669c74f3603264d4e7a08faa68c47ae5a863f352d"}, - {file = "orjson-3.10.11-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:52ca832f17d86a78cbab86cdc25f8c13756ebe182b6fc1a97d534051c18a08de"}, - {file = "orjson-3.10.11-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4c57ea78a753812f528178aa2f1c57da633754c91d2124cb28991dab4c79a54"}, - {file = "orjson-3.10.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b7fcfc6f7ca046383fb954ba528587e0f9336828b568282b27579c49f8e16aad"}, - {file = "orjson-3.10.11-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:86b9dd983857970c29e4c71bb3e95ff085c07d3e83e7c46ebe959bac07ebd80b"}, - {file = "orjson-3.10.11-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:4d83f87582d223e54efb2242a79547611ba4ebae3af8bae1e80fa9a0af83bb7f"}, - {file = "orjson-3.10.11-cp39-none-win32.whl", hash = "sha256:9fd0ad1c129bc9beb1154c2655f177620b5beaf9a11e0d10bac63ef3fce96950"}, - {file = "orjson-3.10.11-cp39-none-win_amd64.whl", hash = "sha256:10f416b2a017c8bd17f325fb9dee1fb5cdd7a54e814284896b7c3f2763faa017"}, - {file = "orjson-3.10.11.tar.gz", hash = "sha256:e35b6d730de6384d5b2dab5fd23f0d76fae8bbc8c353c2f78210aa5fa4beb3ef"}, + {file = "orjson-3.10.12-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:ece01a7ec71d9940cc654c482907a6b65df27251255097629d0dea781f255c6d"}, + {file = "orjson-3.10.12-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c34ec9aebc04f11f4b978dd6caf697a2df2dd9b47d35aa4cc606cabcb9df69d7"}, + {file = "orjson-3.10.12-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fd6ec8658da3480939c79b9e9e27e0db31dffcd4ba69c334e98c9976ac29140e"}, + {file = "orjson-3.10.12-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f17e6baf4cf01534c9de8a16c0c611f3d94925d1701bf5f4aff17003677d8ced"}, + {file = "orjson-3.10.12-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6402ebb74a14ef96f94a868569f5dccf70d791de49feb73180eb3c6fda2ade56"}, + {file = "orjson-3.10.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0000758ae7c7853e0a4a6063f534c61656ebff644391e1f81698c1b2d2fc8cd2"}, + {file = "orjson-3.10.12-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:888442dcee99fd1e5bd37a4abb94930915ca6af4db50e23e746cdf4d1e63db13"}, + {file = "orjson-3.10.12-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c1f7a3ce79246aa0e92f5458d86c54f257fb5dfdc14a192651ba7ec2c00f8a05"}, + {file = "orjson-3.10.12-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:802a3935f45605c66fb4a586488a38af63cb37aaad1c1d94c982c40dcc452e85"}, + {file = "orjson-3.10.12-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:1da1ef0113a2be19bb6c557fb0ec2d79c92ebd2fed4cfb1b26bab93f021fb885"}, + {file = "orjson-3.10.12-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7a3273e99f367f137d5b3fecb5e9f45bcdbfac2a8b2f32fbc72129bbd48789c2"}, + {file = "orjson-3.10.12-cp310-none-win32.whl", hash = "sha256:475661bf249fd7907d9b0a2a2421b4e684355a77ceef85b8352439a9163418c3"}, + {file = "orjson-3.10.12-cp310-none-win_amd64.whl", hash = "sha256:87251dc1fb2b9e5ab91ce65d8f4caf21910d99ba8fb24b49fd0c118b2362d509"}, + {file = "orjson-3.10.12-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:a734c62efa42e7df94926d70fe7d37621c783dea9f707a98cdea796964d4cf74"}, + {file = "orjson-3.10.12-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:750f8b27259d3409eda8350c2919a58b0cfcd2054ddc1bd317a643afc646ef23"}, + {file = "orjson-3.10.12-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb52c22bfffe2857e7aa13b4622afd0dd9d16ea7cc65fd2bf318d3223b1b6252"}, + {file = "orjson-3.10.12-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:440d9a337ac8c199ff8251e100c62e9488924c92852362cd27af0e67308c16ef"}, + {file = "orjson-3.10.12-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9e15c06491c69997dfa067369baab3bf094ecb74be9912bdc4339972323f252"}, + {file = "orjson-3.10.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:362d204ad4b0b8724cf370d0cd917bb2dc913c394030da748a3bb632445ce7c4"}, + {file = "orjson-3.10.12-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2b57cbb4031153db37b41622eac67329c7810e5f480fda4cfd30542186f006ae"}, + {file = "orjson-3.10.12-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:165c89b53ef03ce0d7c59ca5c82fa65fe13ddf52eeb22e859e58c237d4e33b9b"}, + {file = "orjson-3.10.12-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:5dee91b8dfd54557c1a1596eb90bcd47dbcd26b0baaed919e6861f076583e9da"}, + {file = "orjson-3.10.12-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:77a4e1cfb72de6f905bdff061172adfb3caf7a4578ebf481d8f0530879476c07"}, + {file = "orjson-3.10.12-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:038d42c7bc0606443459b8fe2d1f121db474c49067d8d14c6a075bbea8bf14dd"}, + {file = "orjson-3.10.12-cp311-none-win32.whl", hash = "sha256:03b553c02ab39bed249bedd4abe37b2118324d1674e639b33fab3d1dafdf4d79"}, + {file = "orjson-3.10.12-cp311-none-win_amd64.whl", hash = "sha256:8b8713b9e46a45b2af6b96f559bfb13b1e02006f4242c156cbadef27800a55a8"}, + {file = "orjson-3.10.12-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:53206d72eb656ca5ac7d3a7141e83c5bbd3ac30d5eccfe019409177a57634b0d"}, + {file = "orjson-3.10.12-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac8010afc2150d417ebda810e8df08dd3f544e0dd2acab5370cfa6bcc0662f8f"}, + {file = "orjson-3.10.12-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed459b46012ae950dd2e17150e838ab08215421487371fa79d0eced8d1461d70"}, + {file = "orjson-3.10.12-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8dcb9673f108a93c1b52bfc51b0af422c2d08d4fc710ce9c839faad25020bb69"}, + {file = "orjson-3.10.12-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:22a51ae77680c5c4652ebc63a83d5255ac7d65582891d9424b566fb3b5375ee9"}, + {file = "orjson-3.10.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:910fdf2ac0637b9a77d1aad65f803bac414f0b06f720073438a7bd8906298192"}, + {file = "orjson-3.10.12-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:24ce85f7100160936bc2116c09d1a8492639418633119a2224114f67f63a4559"}, + {file = "orjson-3.10.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8a76ba5fc8dd9c913640292df27bff80a685bed3a3c990d59aa6ce24c352f8fc"}, + {file = "orjson-3.10.12-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:ff70ef093895fd53f4055ca75f93f047e088d1430888ca1229393a7c0521100f"}, + {file = "orjson-3.10.12-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f4244b7018b5753ecd10a6d324ec1f347da130c953a9c88432c7fbc8875d13be"}, + {file = "orjson-3.10.12-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:16135ccca03445f37921fa4b585cff9a58aa8d81ebcb27622e69bfadd220b32c"}, + {file = "orjson-3.10.12-cp312-none-win32.whl", hash = "sha256:2d879c81172d583e34153d524fcba5d4adafbab8349a7b9f16ae511c2cee8708"}, + {file = "orjson-3.10.12-cp312-none-win_amd64.whl", hash = "sha256:fc23f691fa0f5c140576b8c365bc942d577d861a9ee1142e4db468e4e17094fb"}, + {file = "orjson-3.10.12-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:47962841b2a8aa9a258b377f5188db31ba49af47d4003a32f55d6f8b19006543"}, + {file = "orjson-3.10.12-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6334730e2532e77b6054e87ca84f3072bee308a45a452ea0bffbbbc40a67e296"}, + {file = "orjson-3.10.12-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:accfe93f42713c899fdac2747e8d0d5c659592df2792888c6c5f829472e4f85e"}, + {file = "orjson-3.10.12-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a7974c490c014c48810d1dede6c754c3cc46598da758c25ca3b4001ac45b703f"}, + {file = "orjson-3.10.12-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:3f250ce7727b0b2682f834a3facff88e310f52f07a5dcfd852d99637d386e79e"}, + {file = "orjson-3.10.12-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:f31422ff9486ae484f10ffc51b5ab2a60359e92d0716fcce1b3593d7bb8a9af6"}, + {file = "orjson-3.10.12-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5f29c5d282bb2d577c2a6bbde88d8fdcc4919c593f806aac50133f01b733846e"}, + {file = "orjson-3.10.12-cp313-none-win32.whl", hash = "sha256:f45653775f38f63dc0e6cd4f14323984c3149c05d6007b58cb154dd080ddc0dc"}, + {file = "orjson-3.10.12-cp313-none-win_amd64.whl", hash = "sha256:229994d0c376d5bdc91d92b3c9e6be2f1fbabd4cc1b59daae1443a46ee5e9825"}, + {file = "orjson-3.10.12-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:7d69af5b54617a5fac5c8e5ed0859eb798e2ce8913262eb522590239db6c6763"}, + {file = "orjson-3.10.12-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ed119ea7d2953365724a7059231a44830eb6bbb0cfead33fcbc562f5fd8f935"}, + {file = "orjson-3.10.12-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9c5fc1238ef197e7cad5c91415f524aaa51e004be5a9b35a1b8a84ade196f73f"}, + {file = "orjson-3.10.12-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:43509843990439b05f848539d6f6198d4ac86ff01dd024b2f9a795c0daeeab60"}, + {file = "orjson-3.10.12-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f72e27a62041cfb37a3de512247ece9f240a561e6c8662276beaf4d53d406db4"}, + {file = "orjson-3.10.12-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a904f9572092bb6742ab7c16c623f0cdccbad9eeb2d14d4aa06284867bddd31"}, + {file = "orjson-3.10.12-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:855c0833999ed5dc62f64552db26f9be767434917d8348d77bacaab84f787d7b"}, + {file = "orjson-3.10.12-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:897830244e2320f6184699f598df7fb9db9f5087d6f3f03666ae89d607e4f8ed"}, + {file = "orjson-3.10.12-cp38-cp38-musllinux_1_2_armv7l.whl", hash = "sha256:0b32652eaa4a7539f6f04abc6243619c56f8530c53bf9b023e1269df5f7816dd"}, + {file = "orjson-3.10.12-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:36b4aa31e0f6a1aeeb6f8377769ca5d125db000f05c20e54163aef1d3fe8e833"}, + {file = "orjson-3.10.12-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:5535163054d6cbf2796f93e4f0dbc800f61914c0e3c4ed8499cf6ece22b4a3da"}, + {file = "orjson-3.10.12-cp38-none-win32.whl", hash = "sha256:90a5551f6f5a5fa07010bf3d0b4ca2de21adafbbc0af6cb700b63cd767266cb9"}, + {file = "orjson-3.10.12-cp38-none-win_amd64.whl", hash = "sha256:703a2fb35a06cdd45adf5d733cf613cbc0cb3ae57643472b16bc22d325b5fb6c"}, + {file = "orjson-3.10.12-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:f29de3ef71a42a5822765def1febfb36e0859d33abf5c2ad240acad5c6a1b78d"}, + {file = "orjson-3.10.12-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:de365a42acc65d74953f05e4772c974dad6c51cfc13c3240899f534d611be967"}, + {file = "orjson-3.10.12-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:91a5a0158648a67ff0004cb0df5df7dcc55bfc9ca154d9c01597a23ad54c8d0c"}, + {file = "orjson-3.10.12-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c47ce6b8d90fe9646a25b6fb52284a14ff215c9595914af63a5933a49972ce36"}, + {file = "orjson-3.10.12-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0eee4c2c5bfb5c1b47a5db80d2ac7aaa7e938956ae88089f098aff2c0f35d5d8"}, + {file = "orjson-3.10.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:35d3081bbe8b86587eb5c98a73b97f13d8f9fea685cf91a579beddacc0d10566"}, + {file = "orjson-3.10.12-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:73c23a6e90383884068bc2dba83d5222c9fcc3b99a0ed2411d38150734236755"}, + {file = "orjson-3.10.12-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5472be7dc3269b4b52acba1433dac239215366f89dc1d8d0e64029abac4e714e"}, + {file = "orjson-3.10.12-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:7319cda750fca96ae5973efb31b17d97a5c5225ae0bc79bf5bf84df9e1ec2ab6"}, + {file = "orjson-3.10.12-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:74d5ca5a255bf20b8def6a2b96b1e18ad37b4a122d59b154c458ee9494377f80"}, + {file = "orjson-3.10.12-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ff31d22ecc5fb85ef62c7d4afe8301d10c558d00dd24274d4bbe464380d3cd69"}, + {file = "orjson-3.10.12-cp39-none-win32.whl", hash = "sha256:c22c3ea6fba91d84fcb4cda30e64aff548fcf0c44c876e681f47d61d24b12e6b"}, + {file = "orjson-3.10.12-cp39-none-win_amd64.whl", hash = "sha256:be604f60d45ace6b0b33dd990a66b4526f1a7a186ac411c942674625456ca548"}, + {file = "orjson-3.10.12.tar.gz", hash = "sha256:0a78bbda3aea0f9f079057ee1ee8a1ecf790d4f1af88dd67493c6b8ee52506ff"}, ] [[package]] @@ -3061,9 +3090,9 @@ files = [ [package.dependencies] numpy = [ - {version = ">=1.20.3", markers = "python_version < \"3.10\""}, {version = ">=1.23.2", markers = "python_version >= \"3.11\""}, {version = ">=1.21.0", markers = "python_version >= \"3.10\" and python_version < \"3.11\""}, + {version = ">=1.20.3", markers = "python_version < \"3.10\""}, ] python-dateutil = ">=2.8.2" pytz = ">=2020.1" @@ -3593,13 +3622,13 @@ windows-terminal = ["colorama (>=0.4.6)"] [[package]] name = "pynxtools" -version = "0.7.4" +version = "0.8.2" description = "Extend NeXus for experiments and characterization in Materials Science and Materials Engineering and serve as a NOMAD parser implementation for NeXus." optional = false python-versions = ">=3.8" files = [ - {file = "pynxtools-0.7.4-py3-none-any.whl", hash = "sha256:16a6a52ea8feb5847696bc6e474e31099840ae2fbcd1297bc5c37e756b7e6a62"}, - {file = "pynxtools-0.7.4.tar.gz", hash = "sha256:3e75a60cd92f0fea6eb9d456c135d62cf0f30cbdc54d73e71023d1db42920094"}, + {file = "pynxtools-0.8.2-py3-none-any.whl", hash = "sha256:b722d5a511ef0a3e6a8541b494256934a765de07458b967ecce1f16fd98e046e"}, + {file = "pynxtools-0.8.2.tar.gz", hash = "sha256:6b9e07877fdc00322cf97eee8a85715e4755f15c6ab0caf42f788fec2febdbfa"}, ] [package.dependencies] @@ -3619,7 +3648,7 @@ xarray = ">=0.20.2" [package.extras] apm = ["pynxtools-apm"] convert = ["pynxtools[apm,ellips,em,mpes,raman,stm,xps,xrd]"] -dev = ["mypy", "pre-commit", "pytest", "pytest-cov", "pytest-timeout", "ruff (==0.5.5)", "structlog", "types-pytz", "types-pyyaml", "types-requests", "uv"] +dev = ["mypy", "pre-commit", "pytest", "pytest-cov", "pytest-timeout", "ruff (>=0.6)", "structlog", "types-pytz", "types-pyyaml", "types-requests", "uv"] docs = ["markdown-include", "mkdocs", "mkdocs-click", "mkdocs-macros-plugin", "mkdocs-material", "mkdocs-material-extensions"] ellips = ["pynxtools-ellips"] em = ["pynxtools-em"] @@ -4721,13 +4750,43 @@ test = ["pytest", "ruff"] [[package]] name = "tomli" -version = "2.1.0" +version = "2.2.1" description = "A lil' TOML parser" optional = false python-versions = ">=3.8" files = [ - {file = "tomli-2.1.0-py3-none-any.whl", hash = "sha256:a5c57c3d1c56f5ccdf89f6523458f60ef716e210fc47c4cfb188c5ba473e0391"}, - {file = "tomli-2.1.0.tar.gz", hash = "sha256:3f646cae2aec94e17d04973e4249548320197cfabdf130015d023de4b74d8ab8"}, + {file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"}, + {file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8"}, + {file = "tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff"}, + {file = "tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b"}, + {file = "tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea"}, + {file = "tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e"}, + {file = "tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98"}, + {file = "tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4"}, + {file = "tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7"}, + {file = "tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744"}, + {file = "tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec"}, + {file = "tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69"}, + {file = "tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc"}, + {file = "tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff"}, ] [[package]] @@ -4774,20 +4833,20 @@ files = [ [[package]] name = "tqdm" -version = "4.67.0" +version = "4.67.1" description = "Fast, Extensible Progress Meter" optional = false python-versions = ">=3.7" files = [ - {file = "tqdm-4.67.0-py3-none-any.whl", hash = "sha256:0cd8af9d56911acab92182e88d763100d4788bdf421d251616040cc4d44863be"}, - {file = "tqdm-4.67.0.tar.gz", hash = "sha256:fe5a6f95e6fe0b9755e9469b77b9c3cf850048224ecaa8293d7d2d31f97d869a"}, + {file = "tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2"}, + {file = "tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2"}, ] [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} [package.extras] -dev = ["pytest (>=6)", "pytest-cov", "pytest-timeout", "pytest-xdist"] +dev = ["nbval", "pytest (>=6)", "pytest-asyncio (>=0.24)", "pytest-cov", "pytest-timeout"] discord = ["requests"] notebook = ["ipywidgets (>=6)"] slack = ["slack-sdk"] @@ -4916,13 +4975,13 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "virtualenv" -version = "20.27.1" +version = "20.28.0" description = "Virtual Python Environment builder" optional = false python-versions = ">=3.8" files = [ - {file = "virtualenv-20.27.1-py3-none-any.whl", hash = "sha256:f11f1b8a29525562925f745563bfd48b189450f61fb34c4f9cc79dd5aa32a1f4"}, - {file = "virtualenv-20.27.1.tar.gz", hash = "sha256:142c6be10212543b32c6c45d3d3893dff89112cc588b7d0879ae5a1ec03a47ba"}, + {file = "virtualenv-20.28.0-py3-none-any.whl", hash = "sha256:23eae1b4516ecd610481eda647f3a7c09aea295055337331bb4e6892ecce47b0"}, + {file = "virtualenv-20.28.0.tar.gz", hash = "sha256:2c9c3262bb8e7b87ea801d715fae4495e6032450c71d2309be9550e7364049aa"}, ] [package.dependencies] @@ -5158,10 +5217,10 @@ test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", type = ["pytest-mypy"] [extras] -all = [] -notebook = ["ipykernel", "jupyter", "jupyterlab", "jupyterlab-h5web"] +all = ["notebook"] +notebook = ["ipykernel", "jupyter", "jupyterlab", "jupyterlab-h5web", "notebook"] [metadata] lock-version = "2.0" python-versions = ">=3.8, <3.11.9" -content-hash = "0d13ddd5890b57ff407cbe802ac1d4e5f642a01f66789ee2b204c976e5a145ec" +content-hash = "27d6e6f23cf9ee48de7c3af0f71b4865fd4bfc4b1030b625b8ae048f5889abe4" diff --git a/pyproject.toml b/pyproject.toml index 25b4caec..04b4907a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,8 +28,8 @@ numba = ">=0.55.1" numpy = ">=1.18, <2.0" pandas = ">=1.4.1" psutil = ">=5.9.0" -pynxtools-mpes = "^0.2.0" -pynxtools = "^0.7.0" +pynxtools-mpes = ">=0.2.0" +pynxtools = ">=0.8.0" pyyaml = ">=6.0.0" scipy = ">=1.8.0" symmetrize = ">=0.5.5" @@ -42,11 +42,12 @@ pyarrow = ">=14.0.1, <17.0" jupyter = {version = ">=1.0.0", optional = true} ipykernel = {version = ">=6.9.1", optional = true} jupyterlab = {version = "^3.4.0", optional = true} +notebook = {version = ">=6.5.7, <7.0.0", optional = true} jupyterlab-h5web = {version = "^8.0.0", extras = ["full"]} [tool.poetry.extras] -notebook = ["jupyter", "ipykernel", "jupyterlab", "jupyterlab-h5web"] +notebook = ["jupyter", "ipykernel", "jupyterlab", "notebook", "jupyterlab-h5web"] all = ["notebook"] [tool.poetry.group.dev.dependencies] From 9e54ae8d39e358f4003d16e921ec1c0eda2ca25c Mon Sep 17 00:00:00 2001 From: rettigl Date: Thu, 28 Nov 2024 22:27:42 +0100 Subject: [PATCH 13/14] update warning message --- sed/loader/mpes/loader.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sed/loader/mpes/loader.py b/sed/loader/mpes/loader.py index 61270c8a..c57a2c5c 100644 --- a/sed/loader/mpes/loader.py +++ b/sed/loader/mpes/loader.py @@ -106,7 +106,7 @@ def hdf5_to_dataframe( ) except OSError as exc: if "Unable to synchronously open file" in str(exc): - print(f"Unable to open file {f}: {str(exc)}") + print(f"Unable to open file {f}: {str(exc)}. Most likely the file is incomplete.") pass array_stack = da.concatenate(arrays, axis=1).T From d1886917d30cde6384894781d8b96b2fa06611b7 Mon Sep 17 00:00:00 2001 From: "bump[bot]" Date: Thu, 28 Nov 2024 21:41:57 +0000 Subject: [PATCH 14/14] bump version to 0.3.3a1 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 04b4907a..5d0de4f5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,7 +3,7 @@ name = "sed-processor" packages = [ {include = "sed"} ] -version = "0.3.3a0" +version = "0.3.3a1" description = "Single Event Data Frame Processor: Backend to handle photoelectron resolved datastreams" authors = ["OpenCOMPES team "] readme = "README.md"