diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000000000000000000000000000000000000..4fc0799f11c16a308d7f205b5624e4a2bbac69af --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,9 @@ +{ + "python-envs.pythonProjects": [ + { + "path": "pdf-creator.py", + "envManager": "ms-python.python:venv", + "packageManager": "ms-python.python:pip" + } + ] +} \ No newline at end of file diff --git a/8qubit_circular_results/loss_cobyla.png b/8qubit_circular_results/loss_cobyla.png new file mode 100644 index 0000000000000000000000000000000000000000..1f64271c7ea212fe6ed57f3e101644b3298b37d3 Binary files /dev/null and b/8qubit_circular_results/loss_cobyla.png differ diff --git a/Phase 1/plots/CGAN_Trial_10_Histogram.png b/Phase 1/plots/CGAN_Trial_10_Histogram.png new file mode 100644 index 0000000000000000000000000000000000000000..86ad9b435b281df2df595f08ee98307e4376ea8d Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_10_Histogram.png differ diff --git a/Phase 1/plots/CGAN_Trial_10_ROC.png b/Phase 1/plots/CGAN_Trial_10_ROC.png new file mode 100644 index 0000000000000000000000000000000000000000..d498de4bbbd2df253f52777d38c04830b1f052b1 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_10_ROC.png differ diff --git a/Phase 1/plots/CGAN_Trial_11_ROC.png b/Phase 1/plots/CGAN_Trial_11_ROC.png new file mode 100644 index 0000000000000000000000000000000000000000..6e49d6cab3a9dfd737a8403817f7964a0d2c02f7 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_11_ROC.png differ diff --git a/Phase 1/plots/CGAN_Trial_12_ROC.png b/Phase 1/plots/CGAN_Trial_12_ROC.png new file mode 100644 index 0000000000000000000000000000000000000000..fe39df863a0cd1dc318f78353d8a2ff477a3070b Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_12_ROC.png differ diff --git a/Phase 1/plots/CGAN_Trial_12_TrainingProgress.png b/Phase 1/plots/CGAN_Trial_12_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..021cf18f18ca0c02c1743c06e76d2ad3edbd263a Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_12_TrainingProgress.png differ diff --git a/Phase 1/plots/CGAN_Trial_13_Histogram.png b/Phase 1/plots/CGAN_Trial_13_Histogram.png new file mode 100644 index 0000000000000000000000000000000000000000..78ddc8504f128f31357e7798f670199dab49ac81 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_13_Histogram.png differ diff --git a/Phase 1/plots/CGAN_Trial_13_ROC.png b/Phase 1/plots/CGAN_Trial_13_ROC.png new file mode 100644 index 0000000000000000000000000000000000000000..0a25265d3e5553745a16e39623104f9521e0c964 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_13_ROC.png differ diff --git a/Phase 1/plots/CGAN_Trial_13_TrainingProgress.png b/Phase 1/plots/CGAN_Trial_13_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..31c620c5292bb07460baa229cfc04fb87c72e88f Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_13_TrainingProgress.png differ diff --git a/Phase 1/plots/CGAN_Trial_14_Histogram.png b/Phase 1/plots/CGAN_Trial_14_Histogram.png new file mode 100644 index 0000000000000000000000000000000000000000..aa4820555eef7f8aab335e119190ab4c74dbce69 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_14_Histogram.png differ diff --git a/Phase 1/plots/CGAN_Trial_16_TrainingProgress.png b/Phase 1/plots/CGAN_Trial_16_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..f61588308d214b19c1879037df24011c327b9ad3 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_16_TrainingProgress.png differ diff --git a/Phase 1/plots/CGAN_Trial_17_Histogram.png b/Phase 1/plots/CGAN_Trial_17_Histogram.png new file mode 100644 index 0000000000000000000000000000000000000000..a8ae43df9359af61f29e00cd8270acbeefd4e960 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_17_Histogram.png differ diff --git a/Phase 1/plots/CGAN_Trial_17_ROC.png b/Phase 1/plots/CGAN_Trial_17_ROC.png new file mode 100644 index 0000000000000000000000000000000000000000..8a3ebf8a738a2637964720a99ba1ee2d86019b16 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_17_ROC.png differ diff --git a/Phase 1/plots/CGAN_Trial_17_TrainingProgress.png b/Phase 1/plots/CGAN_Trial_17_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..5db55bc727d8cec3bb188758b15299b811c5b4da Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_17_TrainingProgress.png differ diff --git a/Phase 1/plots/CGAN_Trial_18_ROC.png b/Phase 1/plots/CGAN_Trial_18_ROC.png new file mode 100644 index 0000000000000000000000000000000000000000..130e85e4604f14f9e5c9341406c12b959efc4e5e Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_18_ROC.png differ diff --git a/Phase 1/plots/CGAN_Trial_18_TrainingProgress.png b/Phase 1/plots/CGAN_Trial_18_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..73bbfe29bc32909b47fd7e54354a80a3fed807e1 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_18_TrainingProgress.png differ diff --git a/Phase 1/plots/CGAN_Trial_19_Histogram.png b/Phase 1/plots/CGAN_Trial_19_Histogram.png new file mode 100644 index 0000000000000000000000000000000000000000..170312d2372dc53744dc94a6e74ee7d4f55c8036 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_19_Histogram.png differ diff --git a/Phase 1/plots/CGAN_Trial_19_ROC.png b/Phase 1/plots/CGAN_Trial_19_ROC.png new file mode 100644 index 0000000000000000000000000000000000000000..c39bac1a601fdccc90cdc3f41d063c73aeeb8cef Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_19_ROC.png differ diff --git a/Phase 1/plots/CGAN_Trial_19_TrainingProgress.png b/Phase 1/plots/CGAN_Trial_19_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..617c12b29275d3251005b1c1f8c3631e1f58b43d Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_19_TrainingProgress.png differ diff --git a/Phase 1/plots/CGAN_Trial_1_Histogram.png b/Phase 1/plots/CGAN_Trial_1_Histogram.png new file mode 100644 index 0000000000000000000000000000000000000000..1648701ccbf06291fbebf18444622d36352d625b Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_1_Histogram.png differ diff --git a/Phase 1/plots/CGAN_Trial_1_ROC.png b/Phase 1/plots/CGAN_Trial_1_ROC.png new file mode 100644 index 0000000000000000000000000000000000000000..fbc9570029c1054da9d56003f63ca46a07567358 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_1_ROC.png differ diff --git a/Phase 1/plots/CGAN_Trial_1_TrainingProgress.png b/Phase 1/plots/CGAN_Trial_1_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..2812f852d072d72fd8cab0dd475ac0445639e4bc Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_1_TrainingProgress.png differ diff --git a/Phase 1/plots/CGAN_Trial_20_Histogram.png b/Phase 1/plots/CGAN_Trial_20_Histogram.png new file mode 100644 index 0000000000000000000000000000000000000000..0740b4f1de502c2a8e43b738bc13d31e666d214b Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_20_Histogram.png differ diff --git a/Phase 1/plots/CGAN_Trial_20_TrainingProgress.png b/Phase 1/plots/CGAN_Trial_20_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..75dc3cd21a9faac268d5d48521f1cf0fc085e51e Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_20_TrainingProgress.png differ diff --git a/Phase 1/plots/CGAN_Trial_21_ROC.png b/Phase 1/plots/CGAN_Trial_21_ROC.png new file mode 100644 index 0000000000000000000000000000000000000000..a29c9339dfdf5c96889827a36fdc47fe9be76d23 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_21_ROC.png differ diff --git a/Phase 1/plots/CGAN_Trial_21_TrainingProgress.png b/Phase 1/plots/CGAN_Trial_21_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..37a2c75e02c531dff1b32a9e75a2b93e8b57bb84 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_21_TrainingProgress.png differ diff --git a/Phase 1/plots/CGAN_Trial_23_Histogram.png b/Phase 1/plots/CGAN_Trial_23_Histogram.png new file mode 100644 index 0000000000000000000000000000000000000000..a74e97c2f78d9365b17f327fdf3fc8b683f4f314 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_23_Histogram.png differ diff --git a/Phase 1/plots/CGAN_Trial_24_Histogram.png b/Phase 1/plots/CGAN_Trial_24_Histogram.png new file mode 100644 index 0000000000000000000000000000000000000000..edeb45cdf4ab8f05192fdd9b4eec9cbb01b5ac04 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_24_Histogram.png differ diff --git a/Phase 1/plots/CGAN_Trial_24_ROC.png b/Phase 1/plots/CGAN_Trial_24_ROC.png new file mode 100644 index 0000000000000000000000000000000000000000..1002f15598dc71c9d3b5df3b8e77f0010b3c68ab Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_24_ROC.png differ diff --git a/Phase 1/plots/CGAN_Trial_24_TrainingProgress.png b/Phase 1/plots/CGAN_Trial_24_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..05c1e0bd0f3e9cb03bd26141968eff3ca4635283 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_24_TrainingProgress.png differ diff --git a/Phase 1/plots/CGAN_Trial_25_ROC.png b/Phase 1/plots/CGAN_Trial_25_ROC.png new file mode 100644 index 0000000000000000000000000000000000000000..728aca5031a67d38614e88436633e089643f05e0 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_25_ROC.png differ diff --git a/Phase 1/plots/CGAN_Trial_25_TrainingProgress.png b/Phase 1/plots/CGAN_Trial_25_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..d7e99182d27936cc4e4d54d2f9fda5752d62834f Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_25_TrainingProgress.png differ diff --git a/Phase 1/plots/CGAN_Trial_26_ROC.png b/Phase 1/plots/CGAN_Trial_26_ROC.png new file mode 100644 index 0000000000000000000000000000000000000000..28177abcc1b81e4d6cbd8cf3de7881a453b9fb4e Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_26_ROC.png differ diff --git a/Phase 1/plots/CGAN_Trial_27_Histogram.png b/Phase 1/plots/CGAN_Trial_27_Histogram.png new file mode 100644 index 0000000000000000000000000000000000000000..f0b4453fa80fad3bccba89127b21c2df4344f11f Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_27_Histogram.png differ diff --git a/Phase 1/plots/CGAN_Trial_27_ROC.png b/Phase 1/plots/CGAN_Trial_27_ROC.png new file mode 100644 index 0000000000000000000000000000000000000000..3033a0c08f120ead8b6ca42f96f62d1f0b39f708 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_27_ROC.png differ diff --git a/Phase 1/plots/CGAN_Trial_28_ROC.png b/Phase 1/plots/CGAN_Trial_28_ROC.png new file mode 100644 index 0000000000000000000000000000000000000000..efff282758dd4a19f0e9e1f4dd9c1197f2902533 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_28_ROC.png differ diff --git a/Phase 1/plots/CGAN_Trial_29_Histogram.png b/Phase 1/plots/CGAN_Trial_29_Histogram.png new file mode 100644 index 0000000000000000000000000000000000000000..87c5eb787ead247cc8b31c82ebb7f36f1c029878 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_29_Histogram.png differ diff --git a/Phase 1/plots/CGAN_Trial_2_Histogram.png b/Phase 1/plots/CGAN_Trial_2_Histogram.png new file mode 100644 index 0000000000000000000000000000000000000000..875b5e02f7b97024064bea08064b4188ebe03748 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_2_Histogram.png differ diff --git a/Phase 1/plots/CGAN_Trial_2_ROC.png b/Phase 1/plots/CGAN_Trial_2_ROC.png new file mode 100644 index 0000000000000000000000000000000000000000..db373ee481c533224eef92abd2c8c83098ab2eae Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_2_ROC.png differ diff --git a/Phase 1/plots/CGAN_Trial_2_TrainingProgress.png b/Phase 1/plots/CGAN_Trial_2_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..d8174f31e57345a4913873aa6806c060dd0b689b Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_2_TrainingProgress.png differ diff --git a/Phase 1/plots/CGAN_Trial_30_Histogram.png b/Phase 1/plots/CGAN_Trial_30_Histogram.png new file mode 100644 index 0000000000000000000000000000000000000000..666a7b14ae19485bc887be58bbdc1f3487d4edea Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_30_Histogram.png differ diff --git a/Phase 1/plots/CGAN_Trial_32_TrainingProgress.png b/Phase 1/plots/CGAN_Trial_32_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..5704b3a54b09c51f435625b51c47feb6c83b5833 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_32_TrainingProgress.png differ diff --git a/Phase 1/plots/CGAN_Trial_33_Histogram.png b/Phase 1/plots/CGAN_Trial_33_Histogram.png new file mode 100644 index 0000000000000000000000000000000000000000..88ba939d3cdb4d028be9aae4c1d646f4c3d2e209 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_33_Histogram.png differ diff --git a/Phase 1/plots/CGAN_Trial_33_TrainingProgress.png b/Phase 1/plots/CGAN_Trial_33_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..19783bc92e3fa790785d40a4becefd543de119fd Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_33_TrainingProgress.png differ diff --git a/Phase 1/plots/CGAN_Trial_34_Histogram.png b/Phase 1/plots/CGAN_Trial_34_Histogram.png new file mode 100644 index 0000000000000000000000000000000000000000..a44580db5973132678af996ca6f400fa03f021ff Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_34_Histogram.png differ diff --git a/Phase 1/plots/CGAN_Trial_34_ROC.png b/Phase 1/plots/CGAN_Trial_34_ROC.png new file mode 100644 index 0000000000000000000000000000000000000000..57d183ce5ca57c19800f0e003fd0e2b198b54ae3 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_34_ROC.png differ diff --git a/Phase 1/plots/CGAN_Trial_35_ROC.png b/Phase 1/plots/CGAN_Trial_35_ROC.png new file mode 100644 index 0000000000000000000000000000000000000000..d5600ac01ea82aeed5f75bc2926e964b80007367 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_35_ROC.png differ diff --git a/Phase 1/plots/CGAN_Trial_36_ROC.png b/Phase 1/plots/CGAN_Trial_36_ROC.png new file mode 100644 index 0000000000000000000000000000000000000000..99012f2586a1899e96edae7fcb88a02bc3c9cf03 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_36_ROC.png differ diff --git a/Phase 1/plots/CGAN_Trial_36_TrainingProgress.png b/Phase 1/plots/CGAN_Trial_36_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..c443862acb24bdad52e2365790e56064485924bb Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_36_TrainingProgress.png differ diff --git a/Phase 1/plots/CGAN_Trial_37_Histogram.png b/Phase 1/plots/CGAN_Trial_37_Histogram.png new file mode 100644 index 0000000000000000000000000000000000000000..0460a51eed4b7f6c30f53cf8bc534751a8addc6d Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_37_Histogram.png differ diff --git a/Phase 1/plots/CGAN_Trial_37_ROC.png b/Phase 1/plots/CGAN_Trial_37_ROC.png new file mode 100644 index 0000000000000000000000000000000000000000..352245a5848c7896ebba0256e561727b528e2167 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_37_ROC.png differ diff --git a/Phase 1/plots/CGAN_Trial_37_TrainingProgress.png b/Phase 1/plots/CGAN_Trial_37_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..10e546b4c29ebac291666437d5d3f7936145dcc9 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_37_TrainingProgress.png differ diff --git a/Phase 1/plots/CGAN_Trial_38_ROC.png b/Phase 1/plots/CGAN_Trial_38_ROC.png new file mode 100644 index 0000000000000000000000000000000000000000..c2178da7ce407f7d0290750bd921224549284ad8 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_38_ROC.png differ diff --git a/Phase 1/plots/CGAN_Trial_38_TrainingProgress.png b/Phase 1/plots/CGAN_Trial_38_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..9ce47394c101423ba55b954bb3e118da8a1229f1 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_38_TrainingProgress.png differ diff --git a/Phase 1/plots/CGAN_Trial_39_Histogram.png b/Phase 1/plots/CGAN_Trial_39_Histogram.png new file mode 100644 index 0000000000000000000000000000000000000000..0620b986bab561bb2dce4aefa6aa925a6434a0ec Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_39_Histogram.png differ diff --git a/Phase 1/plots/CGAN_Trial_39_TrainingProgress.png b/Phase 1/plots/CGAN_Trial_39_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..647fea7301ce99cbf761c20f6b9900536b256cf9 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_39_TrainingProgress.png differ diff --git a/Phase 1/plots/CGAN_Trial_3_ROC.png b/Phase 1/plots/CGAN_Trial_3_ROC.png new file mode 100644 index 0000000000000000000000000000000000000000..714bf48965ae424e9ffd442714b961797d423047 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_3_ROC.png differ diff --git a/Phase 1/plots/CGAN_Trial_3_TrainingProgress.png b/Phase 1/plots/CGAN_Trial_3_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..9c2aff9b69c984b885a480b00d7cb344475aa905 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_3_TrainingProgress.png differ diff --git a/Phase 1/plots/CGAN_Trial_40_Histogram.png b/Phase 1/plots/CGAN_Trial_40_Histogram.png new file mode 100644 index 0000000000000000000000000000000000000000..8fe3ac4c49be34f1cb7939929150aa8524212094 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_40_Histogram.png differ diff --git a/Phase 1/plots/CGAN_Trial_40_TrainingProgress.png b/Phase 1/plots/CGAN_Trial_40_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..decc05d77b5b2f6594e20006949e447e7967ed3f Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_40_TrainingProgress.png differ diff --git a/Phase 1/plots/CGAN_Trial_41_TrainingProgress.png b/Phase 1/plots/CGAN_Trial_41_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..bf8f5a59896aae673de5257c0c61d7e2acc0380c Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_41_TrainingProgress.png differ diff --git a/Phase 1/plots/CGAN_Trial_42_TrainingProgress.png b/Phase 1/plots/CGAN_Trial_42_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..aedfd7c3506d85f9347e56c4f15292f3c5372cb6 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_42_TrainingProgress.png differ diff --git a/Phase 1/plots/CGAN_Trial_43_Histogram.png b/Phase 1/plots/CGAN_Trial_43_Histogram.png new file mode 100644 index 0000000000000000000000000000000000000000..f348d7412db6d51490833c033446d6e43eece4de Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_43_Histogram.png differ diff --git a/Phase 1/plots/CGAN_Trial_43_ROC.png b/Phase 1/plots/CGAN_Trial_43_ROC.png new file mode 100644 index 0000000000000000000000000000000000000000..3b8e69391df998b31a1b7e279fe42414f71db37b Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_43_ROC.png differ diff --git a/Phase 1/plots/CGAN_Trial_44_Histogram.png b/Phase 1/plots/CGAN_Trial_44_Histogram.png new file mode 100644 index 0000000000000000000000000000000000000000..0d04fa97d3dec63db90335f7640126c1509e287b Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_44_Histogram.png differ diff --git a/Phase 1/plots/CGAN_Trial_44_ROC.png b/Phase 1/plots/CGAN_Trial_44_ROC.png new file mode 100644 index 0000000000000000000000000000000000000000..7f6c1ee87d9bf5658d69e173d47eca2d0455e5dd Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_44_ROC.png differ diff --git a/Phase 1/plots/CGAN_Trial_44_TrainingProgress.png b/Phase 1/plots/CGAN_Trial_44_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..1d6ae7815369df17adfdc7822d1dae9e32a0dd0f Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_44_TrainingProgress.png differ diff --git a/Phase 1/plots/CGAN_Trial_45_ROC.png b/Phase 1/plots/CGAN_Trial_45_ROC.png new file mode 100644 index 0000000000000000000000000000000000000000..e34776a73961f714212803753ba41e2c713ddce1 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_45_ROC.png differ diff --git a/Phase 1/plots/CGAN_Trial_45_TrainingProgress.png b/Phase 1/plots/CGAN_Trial_45_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..500fb436b906d5eaa7b2ac69817481c6df3bbbbe Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_45_TrainingProgress.png differ diff --git a/Phase 1/plots/CGAN_Trial_46_ROC.png b/Phase 1/plots/CGAN_Trial_46_ROC.png new file mode 100644 index 0000000000000000000000000000000000000000..4e4a7476f40736ae9c268bc72f5ea043c16830b0 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_46_ROC.png differ diff --git a/Phase 1/plots/CGAN_Trial_47_Histogram.png b/Phase 1/plots/CGAN_Trial_47_Histogram.png new file mode 100644 index 0000000000000000000000000000000000000000..741f7ecf4a4893408d9099fd4d236f5a6d352d26 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_47_Histogram.png differ diff --git a/Phase 1/plots/CGAN_Trial_47_ROC.png b/Phase 1/plots/CGAN_Trial_47_ROC.png new file mode 100644 index 0000000000000000000000000000000000000000..339e15f673e47bebd49cf80ee827d99b2931f6f8 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_47_ROC.png differ diff --git a/Phase 1/plots/CGAN_Trial_47_TrainingProgress.png b/Phase 1/plots/CGAN_Trial_47_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..44d649a689a39a4f3aedb898722fbf8d713844c8 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_47_TrainingProgress.png differ diff --git a/Phase 1/plots/CGAN_Trial_48_Histogram.png b/Phase 1/plots/CGAN_Trial_48_Histogram.png new file mode 100644 index 0000000000000000000000000000000000000000..2db537cc08b54266d09df9aea21c701791af86c3 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_48_Histogram.png differ diff --git a/Phase 1/plots/CGAN_Trial_49_Histogram.png b/Phase 1/plots/CGAN_Trial_49_Histogram.png new file mode 100644 index 0000000000000000000000000000000000000000..93b7225c9e57c63583992bea45dfad66c5ae84ae Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_49_Histogram.png differ diff --git a/Phase 1/plots/CGAN_Trial_4_TrainingProgress.png b/Phase 1/plots/CGAN_Trial_4_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..6b9de8cdfc42a4b813596e634158c3116aabf1e8 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_4_TrainingProgress.png differ diff --git a/Phase 1/plots/CGAN_Trial_50_Histogram.png b/Phase 1/plots/CGAN_Trial_50_Histogram.png new file mode 100644 index 0000000000000000000000000000000000000000..6fb9558b8e6cbaff2348e0d11e05950bc3d725de Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_50_Histogram.png differ diff --git a/Phase 1/plots/CGAN_Trial_5_Histogram.png b/Phase 1/plots/CGAN_Trial_5_Histogram.png new file mode 100644 index 0000000000000000000000000000000000000000..9389561e2b7c88a3034e9439d38ae892799ea805 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_5_Histogram.png differ diff --git a/Phase 1/plots/CGAN_Trial_6_Histogram.png b/Phase 1/plots/CGAN_Trial_6_Histogram.png new file mode 100644 index 0000000000000000000000000000000000000000..bb04b110051eb04e9f272a5b8bf8acb6ce165ee0 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_6_Histogram.png differ diff --git a/Phase 1/plots/CGAN_Trial_6_ROC.png b/Phase 1/plots/CGAN_Trial_6_ROC.png new file mode 100644 index 0000000000000000000000000000000000000000..63a1e8cc377517b97f70f65315303dcd45077bb3 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_6_ROC.png differ diff --git a/Phase 1/plots/CGAN_Trial_6_TrainingProgress.png b/Phase 1/plots/CGAN_Trial_6_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..beeadb493432684adf10ed01dfc6117b612c260a Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_6_TrainingProgress.png differ diff --git a/Phase 1/plots/CGAN_Trial_7_TrainingProgress.png b/Phase 1/plots/CGAN_Trial_7_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..d542f5608c5ed47e6e6c108b9cd92247423243ae Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_7_TrainingProgress.png differ diff --git a/Phase 1/plots/CGAN_Trial_8_Histogram.png b/Phase 1/plots/CGAN_Trial_8_Histogram.png new file mode 100644 index 0000000000000000000000000000000000000000..26d602971eb4b59e8c7848665cb1af6d104e71bd Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_8_Histogram.png differ diff --git a/Phase 1/plots/CGAN_Trial_8_ROC.png b/Phase 1/plots/CGAN_Trial_8_ROC.png new file mode 100644 index 0000000000000000000000000000000000000000..9ab81025459788001ea09d6ca096d3df2e2058bb Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_8_ROC.png differ diff --git a/Phase 1/plots/CGAN_Trial_8_TrainingProgress.png b/Phase 1/plots/CGAN_Trial_8_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..9cd4a263cda29399265e88127302589c61b1a04d Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_8_TrainingProgress.png differ diff --git a/Phase 1/plots/CGAN_Trial_9_Histogram.png b/Phase 1/plots/CGAN_Trial_9_Histogram.png new file mode 100644 index 0000000000000000000000000000000000000000..b98dbaef950c56bd088f43e8f540b109ae6adc00 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_9_Histogram.png differ diff --git a/Phase 1/plots/CGAN_Trial_9_ROC.png b/Phase 1/plots/CGAN_Trial_9_ROC.png new file mode 100644 index 0000000000000000000000000000000000000000..57b194b15fe1556578f97076342d99404cebb922 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_9_ROC.png differ diff --git a/Phase 1/plots/CGAN_Trial_9_TrainingProgress.png b/Phase 1/plots/CGAN_Trial_9_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..cf02c69acb14f3991a00c34b45413c111be538d1 Binary files /dev/null and b/Phase 1/plots/CGAN_Trial_9_TrainingProgress.png differ diff --git a/Phase 1/plots/QGAN_Trial_10_TrainingProgress.png b/Phase 1/plots/QGAN_Trial_10_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..16be8c5c2411b95b7ff20d4c00f83b123dab89bb Binary files /dev/null and b/Phase 1/plots/QGAN_Trial_10_TrainingProgress.png differ diff --git a/Phase 1/plots/QGAN_Trial_11_TrainingProgress.png b/Phase 1/plots/QGAN_Trial_11_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..5d9b52d5cf5a55678a2b969423dcc4970bc1b37d Binary files /dev/null and b/Phase 1/plots/QGAN_Trial_11_TrainingProgress.png differ diff --git a/Phase 1/plots/QGAN_Trial_14_TrainingProgress.png b/Phase 1/plots/QGAN_Trial_14_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..c7198d799e7cff3e651e472cd5e597f822af84f3 Binary files /dev/null and b/Phase 1/plots/QGAN_Trial_14_TrainingProgress.png differ diff --git a/Phase 1/plots/QGAN_Trial_15_TrainingProgress.png b/Phase 1/plots/QGAN_Trial_15_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..ccdaf0451708e3a012e9a7d7758aeac1f0d13b1e Binary files /dev/null and b/Phase 1/plots/QGAN_Trial_15_TrainingProgress.png differ diff --git a/Phase 1/plots/QGAN_Trial_1_TrainingProgress.png b/Phase 1/plots/QGAN_Trial_1_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..447805858a4ad12268a1db7e8a60de1103d3bf7f Binary files /dev/null and b/Phase 1/plots/QGAN_Trial_1_TrainingProgress.png differ diff --git a/Phase 1/plots/QGAN_Trial_22_TrainingProgress.png b/Phase 1/plots/QGAN_Trial_22_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..02dd2106911c4701b9f9d1844033618956dd9bbc Binary files /dev/null and b/Phase 1/plots/QGAN_Trial_22_TrainingProgress.png differ diff --git a/Phase 1/plots/QGAN_Trial_26_TrainingProgress.png b/Phase 1/plots/QGAN_Trial_26_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..e7f179d3faaa525111c610ab81988a83777badd7 Binary files /dev/null and b/Phase 1/plots/QGAN_Trial_26_TrainingProgress.png differ diff --git a/Phase 1/plots/QGAN_Trial_27_TrainingProgress.png b/Phase 1/plots/QGAN_Trial_27_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..4cbf8e2882ccc44bd0ddc3348e147c41b8972df6 Binary files /dev/null and b/Phase 1/plots/QGAN_Trial_27_TrainingProgress.png differ diff --git a/Phase 1/plots/QGAN_Trial_28_TrainingProgress.png b/Phase 1/plots/QGAN_Trial_28_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..b7f55273fe22e09c216cdff6e26145952693d707 Binary files /dev/null and b/Phase 1/plots/QGAN_Trial_28_TrainingProgress.png differ diff --git a/Phase 1/plots/QGAN_Trial_29_TrainingProgress.png b/Phase 1/plots/QGAN_Trial_29_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..9a47465fe47fa5c7e918ecb6049ea94b3c18c3e2 Binary files /dev/null and b/Phase 1/plots/QGAN_Trial_29_TrainingProgress.png differ diff --git a/Phase 1/plots/QGAN_Trial_2_TrainingProgress.png b/Phase 1/plots/QGAN_Trial_2_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..5ab3c62b66f14734f5a880185d74ad4e0972358b Binary files /dev/null and b/Phase 1/plots/QGAN_Trial_2_TrainingProgress.png differ diff --git a/Phase 1/plots/QGAN_Trial_30_TrainingProgress.png b/Phase 1/plots/QGAN_Trial_30_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..a1245ee080d9171c9bcdf1e5680543640935af06 Binary files /dev/null and b/Phase 1/plots/QGAN_Trial_30_TrainingProgress.png differ diff --git a/Phase 1/plots/QGAN_Trial_31_TrainingProgress.png b/Phase 1/plots/QGAN_Trial_31_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..16973dc82e2c815adb570752b89a4c130f127ed9 Binary files /dev/null and b/Phase 1/plots/QGAN_Trial_31_TrainingProgress.png differ diff --git a/Phase 1/plots/QGAN_Trial_33_TrainingProgress.png b/Phase 1/plots/QGAN_Trial_33_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..fcc5d7bb6e17357350dcdabe5184b7f3d01f4834 Binary files /dev/null and b/Phase 1/plots/QGAN_Trial_33_TrainingProgress.png differ diff --git a/Phase 1/plots/QGAN_Trial_35_TrainingProgress.png b/Phase 1/plots/QGAN_Trial_35_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..5b40a51d9ff533b392be2117cc1cebb32c8a69b4 Binary files /dev/null and b/Phase 1/plots/QGAN_Trial_35_TrainingProgress.png differ diff --git a/Phase 1/plots/QGAN_Trial_40_TrainingProgress.png b/Phase 1/plots/QGAN_Trial_40_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..008503a34eb00556f1f1ad0a3e78b8d330e5596e Binary files /dev/null and b/Phase 1/plots/QGAN_Trial_40_TrainingProgress.png differ diff --git a/Phase 1/plots/QGAN_Trial_42_TrainingProgress.png b/Phase 1/plots/QGAN_Trial_42_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..31257c354ba7063f24c8d8a13987608f366c1e0b Binary files /dev/null and b/Phase 1/plots/QGAN_Trial_42_TrainingProgress.png differ diff --git a/Phase 1/plots/QGAN_Trial_43_TrainingProgress.png b/Phase 1/plots/QGAN_Trial_43_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..76017836c639e5659670d47c5925b35ac8efca5a Binary files /dev/null and b/Phase 1/plots/QGAN_Trial_43_TrainingProgress.png differ diff --git a/Phase 1/plots/QGAN_Trial_45_TrainingProgress.png b/Phase 1/plots/QGAN_Trial_45_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..efbbc7508b0a561706df8d9ab9fd152b808ea25f Binary files /dev/null and b/Phase 1/plots/QGAN_Trial_45_TrainingProgress.png differ diff --git a/Phase 1/plots/QGAN_Trial_48_TrainingProgress.png b/Phase 1/plots/QGAN_Trial_48_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..7034b4d26436eaf082b613e4849cd95bab64daa6 Binary files /dev/null and b/Phase 1/plots/QGAN_Trial_48_TrainingProgress.png differ diff --git a/Phase 1/plots/QGAN_Trial_4_TrainingProgress.png b/Phase 1/plots/QGAN_Trial_4_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..56826641c361844c50ac2fb09ad14b68a11134b3 Binary files /dev/null and b/Phase 1/plots/QGAN_Trial_4_TrainingProgress.png differ diff --git a/Phase 1/plots/QGAN_Trial_500_Histogram.png b/Phase 1/plots/QGAN_Trial_500_Histogram.png new file mode 100644 index 0000000000000000000000000000000000000000..8897aed6b93233c1c56639eb328820edf96536d8 Binary files /dev/null and b/Phase 1/plots/QGAN_Trial_500_Histogram.png differ diff --git a/Phase 1/plots/QGAN_Trial_50_TrainingProgress.png b/Phase 1/plots/QGAN_Trial_50_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..36553c3bd297a3cc701f61a230615fa0d326c08f Binary files /dev/null and b/Phase 1/plots/QGAN_Trial_50_TrainingProgress.png differ diff --git a/Phase 1/plots/QGAN_Trial_5_TrainingProgress.png b/Phase 1/plots/QGAN_Trial_5_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..b314a26cd293d2729b1952733ca7273e9bbf833d Binary files /dev/null and b/Phase 1/plots/QGAN_Trial_5_TrainingProgress.png differ diff --git a/Phase 1/plots/QGAN_Trial_7_TrainingProgress.png b/Phase 1/plots/QGAN_Trial_7_TrainingProgress.png new file mode 100644 index 0000000000000000000000000000000000000000..11fb2a5b4e5aaa2772bccf04be2aa265ac2b0f28 Binary files /dev/null and b/Phase 1/plots/QGAN_Trial_7_TrainingProgress.png differ diff --git a/data/Demo of disruption prediction in HL-2A.ipynb b/data/Demo of disruption prediction in HL-2A.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..bee52796e6c0deb215ccda1b2a9bbeae5b89c8a5 --- /dev/null +++ b/data/Demo of disruption prediction in HL-2A.ipynb @@ -0,0 +1,800 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "e7c108fc", + "metadata": {}, + "source": [ + "## Introduction\n", + "In this challenge, you can get data from about 1000 shots in HL-2A tokamak, which serves as part of the training set of competation. This notebook presents the procedure to estabilish a simple disruption predictor in HL-2A using LightGBM algorithm,during which you can get a basic view into this dataset." + ] + }, + { + "cell_type": "markdown", + "id": "2d7dcf50", + "metadata": {}, + "source": [ + "## Data structure\n", + "Tokamak works in a pulsed mode. For HL-2A, plasma is generated, maintained and elapsed in a time scale of about 3 seconds, which is called a shot. Each shot is identified with a unique number. In the provided dataset, data for each shot is organized into a hdf5 file with the name of shot ID, as list here." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "c00378f4", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['35956.hdf5', '35957.hdf5', '35958.hdf5', '35959.hdf5', '35960.hdf5']\n" + ] + } + ], + "source": [ + "import os\n", + "\n", + "dataset_path = './JDDB_repo_2A_5k'\n", + "file_list = os.listdir(dataset_path)\n", + "print(file_list[:5])" + ] + }, + { + "cell_type": "markdown", + "id": "992beedc", + "metadata": {}, + "source": [ + "These files can be handled with ordinary hdf5 tools, like site-package named 'h5py' or software named 'HDF5Viewer'. Here we recommend to handle the data with the provided JDDB package, which is based on h5py.Here is an example to open a shot and plot the experimental signals." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "c2a4a86a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'CCO-LFB:LFBBV', 'CCO-LFB:LFDH', 'CCO-LFB:LFBBOH', 'DS-EMD-MP:MPOL-17', 'DS-SXR-SXA:SX12', 'DS-EMD-MP:NPOL-06', 'DS-EMD-MP:MPOL-05', 'DS-EMD-MP:NPOL-09', 'DS-BM-AB:BOLD12', 'DS-EMD-MP:MPOL-10', 'DS-FIR:FIR-SPH2A', 'DS-SXR-SXA:SX07', 'DS-EMD-MP:NPOL-10', 'CCO-DF:GASFBOUT', 'DS-EMD-MP:MPOL-03', 'DS-SXR-SXA:SX06', 'DS-FIR:FIR-SPH3A', 'DS-SXR-SXA:SX04', 'DS-EMD-MP:MPOL-01', 'DS-EMD-MP:MPOL-12', 'DS-SXR-SXA:SX10', 'CCO-DF:DENSITY1', 'DS-SXR-SXA:SX05', 'DS-SXR-SXA:SX20', 'DS-BM-AB:BOLD11', 'DS-EMD-ROG:VL-FILTER', 'DS-BM-AB:BOLD03', 'DS-SXR-SXA:SX01', 'DS-BM-AB:BOLD14', 'DS-EMD-MP:MPOL-13', 'DS-SXR-SXA:SX15', 'CCO-LFB:LFBBT', 'CCO-LFB:LFBIRF', 'DS-SXR-SXA:SX14', 'CCO-LFB:LFBMP2', 'DS-BM-AB:BOLD08', 'DS-EMD-MP:MPOL-06', 'DS-BM-AB:BOLD15', 'DS-EMD-MP:MPOL-08', 'DS-BM-AB:BOLD01', 'DS-EMD-MP:NPOL-05', 'DS-EMD-MP:MPOL-15', 'DS-BM-AB:BOLD10', 'DS-BM-AB:BOLD09', 'DS-BM-AB:BOLD02', 'DS-EMD-MP:NPOL-03', 'DS-EMD-MP:MPOL-18', 'DS-BM-AB:BOLD06', 'DS-SXR-SXA:SX19', 'DS-SXR-SXA:SX02', 'DS-EMD-MP:MPOL-04', 'DS-SXR-SXA:SX18', 'CCO-LFB:LFBMP1', 'DS-BM-AB:BOLD13', 'DS-EMD-MP:MPOL-02', 'DS-BM-AB:BOLD16', 'DS-EMD-MP:NPOL-04', 'CCO-LFB:LFDV', 'DS-SXR-SXA:SX08', 'DS-SXR-SXA:SX03', 'DS-EMD-MP:MPOL-16', 'DS-TMP:PUFFCTRL', 'CCO-LFB:LFEX-IP', 'DS-SXR-SXA:SX09', 'DS-EMD-MP:MPOL-09', 'DS-FIR:FIR-SPH4A', 'DS-SXR-SXA:SX11', 'DS-BM-AB:BOLD05', 'DS-EMD-MP:MPOL-14', 'DS-FIR:FIR-SPH1A', 'DS-SXR-SXA:SX17', 'DS-SXR-SXA:SX13', 'DS-EMD-MP:MPOL-07', 'DS-BM-AB:BOLD04', 'DS-EMD-MP:NPOL-01', 'DS-EMD-MP:NPOL-07', 'DS-EMD-MP:MPOL-11', 'DS-SXR-SXA:SX16', 'DS-EMD-MP:NPOL-02', 'DS-BM-AB:BOLD07'}\n" + ] + }, + { + "data": { + "text/plain": [ + "Text(0.5, 0, 'Time(s)')" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "from jddb.file_repo import FileRepo\n", + "from jddb.processor import Shot\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# load file repo\n", + "file_repo = FileRepo(r\"./JDDB_repo_2A_5k\")\n", + "\n", + "# select a shot id in the file repo, see which signals are given in this shot\n", + "shot_list = file_repo.get_all_shots()\n", + "shot_id = shot_list[169]\n", + "example_shot = Shot(shot_id, file_repo)\n", + "print(example_shot.tags)\n", + "\n", + "# plot some basic plasma parameters\n", + "# CCO-LFB:LFEX-IP | plasma current(kA)\n", + "# CCO-LFB:LFBBT | current in toroidal magnetic field coild(kA), can be conveted into field intensity by timing 0.0622T/kA\n", + "# CCO-LFB:LFDH | horizontal displacement of plasma (i.e.)\n", + "# CCO-LFB:LFDV | vertical displacement of plasma (i.e.)\n", + "# CO-DF:DENSITY1 | plasma density(10e19/m^3)\n", + "# DS-EMD-MP:MPOL-04 | magnetic perturbation measured by Mirnov porbe\n", + "plot_tags = [\"CCO-LFB:LFEX-IP\", \"CCO-LFB:LFBBT\", \"CCO-LFB:LFDH\", \"CCO-LFB:LFDV\", \"CCO-DF:DENSITY1\", \"DS-EMD-MP:MPOL-04\"]\n", + "f, axs = plt.subplots(nrows=6, ncols=1, sharex=True)\n", + "axs = np.reshape(axs, -1)\n", + "for i, tag in enumerate(plot_tags):\n", + " if example_shot.labels[tag] == 1:\n", + " data = example_shot.get_signal(tag)\n", + " axs[i].plot(data.time, data.data)\n", + "axs[i].set_xlabel('Time(s)')\n" + ] + }, + { + "cell_type": "markdown", + "id": "9da1cf77", + "metadata": {}, + "source": [ + "## Model development\n", + "To establish the disruption predictor by LightGBM algorithm, 5 steps are needed.\n", + "1. Data cleaning\n", + "2. Feature extraction\n", + "3. Data labeling\n", + "4. Training\n", + "5. Evaluation" + ] + }, + { + "cell_type": "markdown", + "id": "1807d3e7", + "metadata": {}, + "source": [ + "## Data cleaning\n", + "The daignostic systems of Tokamak are not always working well. Sometimes part of the signals in a shot file can be wrong or lacked.Therefore a data cleaning procedure is needed before the development of machine learning model.\n", + "A preliminary data cleaning has already been implemented in the provided HL-2A data. You can use the method 'read_labels' to get a dict, where we stored a boolean number for each channel representing if the data is valid. The data cleaning is relaized by simply setting some rules about the mean, std, max and min value for a certain channel during a shot to classify if the data is valid.You can also try to implement a more detailed data cleaning." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "9e4318d1", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'CCO-DF:DENSITY1': 1,\n", + " 'CCO-DF:GASFBOUT': 1,\n", + " 'CCO-LFB:LFBBOH': 1,\n", + " 'CCO-LFB:LFBBT': 1,\n", + " 'CCO-LFB:LFBBV': 1,\n", + " 'CCO-LFB:LFBIRF': 1,\n", + " 'CCO-LFB:LFBMP1': 1,\n", + " 'CCO-LFB:LFBMP2': 1,\n", + " 'CCO-LFB:LFDH': 1,\n", + " 'CCO-LFB:LFDV': 1,\n", + " 'CCO-LFB:LFEX-IP': 1,\n", + " 'DS-BM-AB:BOLD01': 1,\n", + " 'DS-BM-AB:BOLD02': 1,\n", + " 'DS-BM-AB:BOLD03': 1,\n", + " 'DS-BM-AB:BOLD04': 1,\n", + " 'DS-BM-AB:BOLD05': 1,\n", + " 'DS-BM-AB:BOLD06': 1,\n", + " 'DS-BM-AB:BOLD07': 1,\n", + " 'DS-BM-AB:BOLD08': 1,\n", + " 'DS-BM-AB:BOLD09': 1,\n", + " 'DS-BM-AB:BOLD10': 1,\n", + " 'DS-BM-AB:BOLD11': 1,\n", + " 'DS-BM-AB:BOLD12': 1,\n", + " 'DS-BM-AB:BOLD13': 1,\n", + " 'DS-BM-AB:BOLD14': 1,\n", + " 'DS-BM-AB:BOLD15': 1,\n", + " 'DS-BM-AB:BOLD16': 0,\n", + " 'DS-EMD-MP:MPOL-01': 1,\n", + " 'DS-EMD-MP:MPOL-02': 0,\n", + " 'DS-EMD-MP:MPOL-03': 1,\n", + " 'DS-EMD-MP:MPOL-04': 1,\n", + " 'DS-EMD-MP:MPOL-05': 1,\n", + " 'DS-EMD-MP:MPOL-06': 1,\n", + " 'DS-EMD-MP:MPOL-07': 1,\n", + " 'DS-EMD-MP:MPOL-08': 1,\n", + " 'DS-EMD-MP:MPOL-09': 1,\n", + " 'DS-EMD-MP:MPOL-10': 1,\n", + " 'DS-EMD-MP:MPOL-11': 1,\n", + " 'DS-EMD-MP:MPOL-12': 1,\n", + " 'DS-EMD-MP:MPOL-13': 1,\n", + " 'DS-EMD-MP:MPOL-14': 1,\n", + " 'DS-EMD-MP:MPOL-15': 1,\n", + " 'DS-EMD-MP:MPOL-16': 1,\n", + " 'DS-EMD-MP:MPOL-17': 1,\n", + " 'DS-EMD-MP:MPOL-18': 1,\n", + " 'DS-EMD-MP:NPOL-01': 1,\n", + " 'DS-EMD-MP:NPOL-02': 1,\n", + " 'DS-EMD-MP:NPOL-03': 1,\n", + " 'DS-EMD-MP:NPOL-04': 1,\n", + " 'DS-EMD-MP:NPOL-05': 1,\n", + " 'DS-EMD-MP:NPOL-06': 1,\n", + " 'DS-EMD-MP:NPOL-07': 1,\n", + " 'DS-EMD-MP:NPOL-08': 0,\n", + " 'DS-EMD-MP:NPOL-09': 1,\n", + " 'DS-EMD-MP:NPOL-10': 1,\n", + " 'DS-EMD-ROG:VL-FILTER': 1,\n", + " 'DS-FIR:FIR-SPH1A': 1,\n", + " 'DS-FIR:FIR-SPH2A': 1,\n", + " 'DS-FIR:FIR-SPH3A': 1,\n", + " 'DS-FIR:FIR-SPH4A': 1,\n", + " 'DS-SXR-SXA:SX01': 0,\n", + " 'DS-SXR-SXA:SX02': 1,\n", + " 'DS-SXR-SXA:SX03': 1,\n", + " 'DS-SXR-SXA:SX04': 0,\n", + " 'DS-SXR-SXA:SX05': 1,\n", + " 'DS-SXR-SXA:SX06': 1,\n", + " 'DS-SXR-SXA:SX07': 0,\n", + " 'DS-SXR-SXA:SX08': 0,\n", + " 'DS-SXR-SXA:SX09': 1,\n", + " 'DS-SXR-SXA:SX10': 1,\n", + " 'DS-SXR-SXA:SX11': 1,\n", + " 'DS-SXR-SXA:SX12': 1,\n", + " 'DS-SXR-SXA:SX13': 1,\n", + " 'DS-SXR-SXA:SX14': 1,\n", + " 'DS-SXR-SXA:SX15': 0,\n", + " 'DS-SXR-SXA:SX16': 1,\n", + " 'DS-SXR-SXA:SX17': 1,\n", + " 'DS-SXR-SXA:SX18': 0,\n", + " 'DS-SXR-SXA:SX19': 1,\n", + " 'DS-SXR-SXA:SX20': 0,\n", + " 'DS-TMP:PUFFCTRL': 1,\n", + " 'DownTime': 1.951,\n", + " 'IsDisrupt': 0,\n", + " 'StartTime': 0}" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "file_repo.read_labels(shot_id)" + ] + }, + { + "cell_type": "markdown", + "id": "9ce86262", + "metadata": {}, + "source": [ + "Here we can plot a data health figure to learn about the validness of the whole dataset" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "4e54b900", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# set a tag list to check health\n", + "tags = [\"CCO-LFB:LFEX-IP\", \"CCO-LFB:LFBBT\", \"CCO-LFB:LFDH\", \"CCO-LFB:LFDV\", \"CCO-DF:DENSITY1\", \"CCO-LFB:LFBIRF\",\n", + " \"CCO-LFB:LFBBOH\", \"CCO-LFB:LFBBV\", \"CCO-LFB:LFBMP1\", \"CCO-LFB:LFBMP2\", \"CCO-DF:GASFBOUT\", \"DS-TMP:PUFFCTRL\",\n", + " \"DS-EMD-ROG:VL-FILTER\"]\n", + "tags += [\"DS-BM-AB:BOLD%02d\" % channel_id for channel_id in range(1, 17)]\n", + "tags += [\"DS-SXR-SXA:SX%02d\" % channel_id for channel_id in range(1, 21)]\n", + "tags += [\"DS-EMD-MP:MPOL-%02d\" % channel_id for channel_id in range(1, 19)]\n", + "tags += [\"DS-EMD-MP:NPOL-%02d\" % channel_id for channel_id in range(1, 11)]\n", + "tags += [\"DS-FIR:FIR-SPH%1dA\" % channel_id for channel_id in range(1, 5)]\n", + "\n", + "# collect the validity flag of each tag for each shot in to an aray\n", + "valid_array = np.zeros([len(tags), len(shot_list)])\n", + "for i, shot_id in enumerate(shot_list):\n", + " shot_tags = file_repo.get_tag_list(shot_id)\n", + " shot_labels = file_repo.read_labels(shot_id)\n", + " for j, tag in enumerate(tags):\n", + " if tag in shot_labels:\n", + " valid_array[j, i] = shot_labels[tag]\n", + "\n", + "# plot the data health figure\n", + "font = {'family': 'Microsoft YaHei',\n", + " 'size': '9'}\n", + "plt.rc('font', **font)\n", + "f = plt.figure(figsize=[20, 12])\n", + "ax = f.add_subplot(111)\n", + "for i, tag in enumerate(tags):\n", + " for j, shot_id in enumerate(shot_list):\n", + " if valid_array[i, j] == 1:\n", + " rect = plt.Rectangle((j-0.5, len(tags)-i-1.5), 1, 1)\n", + " ax.add_patch(rect)\n", + "ax.set_xlabel(\"Shot ID\")\n", + "ax.set_xlim([0, len(shot_list)])\n", + "ax.set_xticks(np.arange(0, len(shot_list), 50))\n", + "ax.set_xticklabels(np.array(shot_list)[np.arange(0, len(shot_list), 50)])\n", + "ax.set_ylim([-1, len(tags)])\n", + "ax.set_yticks(np.arange(len(tags)))\n", + "ax.set_yticklabels(tags[::-1])\n", + "for i in range(-1, len(tags)):\n", + " ax.plot(ax.get_xlim(), [i, i], color='gray', linewidth=7, alpha=(np.mod(i, 2)+1)*0.1)\n" + ] + }, + { + "cell_type": "markdown", + "id": "7eade39c", + "metadata": {}, + "source": [ + "According the data health figure, we can select some 'healthy' channels to serve as the input of disruption predictor." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "e03d57ad", + "metadata": {}, + "outputs": [], + "source": [ + "# Two pairs of Mirnov Probes, one poloidal symmetrical pair and one toroidal symmetrical pair\n", + "Mir = [\"DS-EMD-MP:MPOL-04\", \"DS-EMD-MP:MPOL-13\", \"DS-EMD-MP:NPOL-04\", \"DS-EMD-MP:NPOL-09\"]\n", + "# One channel for core region and one channel for edge region\n", + "sxr = [\"DS-SXR-SXA:SX05\", \"DS-SXR-SXA:SX10\"]\n", + "# Basic plasma and tokamak parameters\n", + "basic = [\"CCO-LFB:LFEX-IP\", \"CCO-LFB:LFBBT\", \"CCO-LFB:LFDH\", \"CCO-LFB:LFDV\", \"CCO-LFB:LFBIRF\", \"CCO-LFB:LFBBOH\", \n", + " \"CCO-LFB:LFBBV\", \"CCO-LFB:LFBMP1\", \"CCO-LFB:LFBMP2\", \"CCO-DF:GASFBOUT\", \"DS-TMP:PUFFCTRL\", \"DS-EMD-ROG:VL-FILTER\"]\n", + "# Density array\n", + "density = [\"DS-FIR:FIR-SPH%1dA\" % channel_id for channel_id in range(1, 5)]\n", + "# Bolometer array, only core channels selected according to the data completeness\n", + "AXUV = [\"DS-BM-AB:BOLD09\", \"DS-BM-AB:BOLD10\", \"DS-BM-AB:BOLD11\"]" + ] + }, + { + "cell_type": "markdown", + "id": "07b247a4", + "metadata": {}, + "source": [ + "## Feature extraction and data labeling\n", + "Feature engineering is well-known method to promote the performance of machine learning algorithms. This can also be finished with JDDB package. Here we have 4 preprocessing steps.\n", + "1. FFT processing for max frequency and amplitude of mirnov signals. Disruption is closely related to some physical instabilities, which will be more obviously in the frequency domain.\n", + "2. Remove redundant tags and keep tags for model training\n", + "3. Trim signals into same length, since the raw data in hdf5 file might have different start times.\n", + "4. Add disruption labels for each time point as a signal called alarm_tag. A label named 'DownTime' is stored in the raw hdf5 file, which represents the end of flattop phase during a non-disruptive shot and the time of disruption during a disruptive shot. We need to generate the label for each time slice according to this information.\n", + "New dataset will be stored in the path of 'processed_file_repo',and is ready to serve as a training set for disruption prediction." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "aeff9bc3", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "FFT DS-EMD-MP:MPOL-04 finished\n", + "FFT DS-EMD-MP:MPOL-13 finished\n", + "FFT DS-EMD-MP:NPOL-04 finished\n", + "FFT DS-EMD-MP:NPOL-09 finished\n", + "Remove redundant tags, finished\n", + "Trim signals into same length, finished\n", + "Add disruption labels, finished\n" + ] + } + ], + "source": [ + "from jddb.processor import ShotSet\n", + "from jddb.processor.basic_processors import TrimProcessor\n", + "from basic_processor import SliceProcessor, FFTProcessor, find_tags, AlarmTag\n", + "\n", + "source_file_repo = FileRepo(r\"./JDDB_repo_2A_5k\")\n", + "processed_file_repo = FileRepo(r\"./JDDB_repo_2A_processed\")\n", + "# create a valid shot set with a file, the valid shots should contain target tags and enough flattop time.\n", + "source_shotset = ShotSet(source_file_repo)\n", + "shot_list = source_shotset.shot_list\n", + "# Define the target tags which contain signals for process\n", + "targ_tags = basic + density + Mir + AXUV + sxr\n", + "valid_shots = [] # Initialize an empty list to store valid shots\n", + "for shot in shot_list:\n", + " all_tags = list(source_shotset.get_shot(shot).tags)\n", + " last_time = list(source_file_repo.read_labels(shot, ['DownTime']).values())\n", + " # Check if all target tags are present in the shot's tags and last_time of shot is greater than 0.2s\n", + " if all(tag in all_tags for tag in targ_tags) & (last_time[0] > 0.2):\n", + " valid_shots.append(shot)\n", + "\n", + "processed_shotset = ShotSet(source_file_repo, valid_shots) # Create a new ShotSet object using the valid shots\n", + "# 1. FFT processing for max frequency and amplitude of mirnov signals\n", + "for tag_index in range(len(Mir)):\n", + " # %%\n", + " # slicing\n", + " processed_shotset = processed_shotset.process(\n", + " processor=SliceProcessor(window_length=50, overlap=0.9),\n", + " input_tags=[Mir[tag_index]],\n", + " output_tags=[\"sliced_MA_{}\".format(tag_index)],\n", + " save_repo=processed_file_repo,\n", + " processes=4)\n", + " # %%\n", + " # fft MA\n", + " processed_shotset = processed_shotset.process(\n", + " processor=FFTProcessor(),\n", + " input_tags=[\"sliced_MA_{}\".format(tag_index)],\n", + " output_tags=[[\"fft_amp_{}\".format(tag_index), \"fft_fre_{}\".format(tag_index)]],\n", + " save_repo=processed_file_repo,\n", + " processes=4)\n", + " print('FFT %s finished' % Mir[tag_index])\n", + "\n", + "# 2. remove redundant tags and keep tags for model training\n", + "shot_list = processed_shotset.shot_list\n", + "all_tags = list(processed_shotset.get_shot(shot_list[0]).tags)\n", + "fft_tag = find_tags('fft_', all_tags)\n", + "fir_tag = find_tags('resampled_fir_', all_tags)\n", + "keep_tags = basic + fir_tag + fft_tag +sxr + AXUV\n", + "processed_shotset = processed_shotset.remove_signal(tags=keep_tags, keep=True,\n", + " save_repo=processed_file_repo)\n", + "print('Remove redundant tags, finished')\n", + "\n", + "# 3. trim signals into same length\n", + "all_tags = list(processed_shotset.get_shot(shot_list[0]).tags)\n", + "processed_shotset = processed_shotset.process(\n", + " TrimProcessor(),\n", + " input_tags=[all_tags],\n", + " output_tags=[all_tags],\n", + " save_repo=processed_file_repo,\n", + " processes=4)\n", + "print('Trim signals into same length, finished')\n", + "\n", + "# 4. add disruption labels for each time point as a signal called alarm_tag\n", + "processed_shotset = processed_shotset.process(\n", + " processor=AlarmTag(lead_time=0.1, disruption_label=\"IsDisrupt\", downtime_label=\"DownTime\"),\n", + " input_tags=[\"CCO-LFB:LFEX-IP\"],\n", + " output_tags=[\"alarm_tag\"],\n", + " save_repo=processed_file_repo,\n", + " processes=4)\n", + "print('Add disruption labels, finished')\n" + ] + }, + { + "cell_type": "markdown", + "id": "087981b9", + "metadata": {}, + "source": [ + "## Model training\n", + "This procedure is almost same as the in notebook of J-TEXT. We generate the feature matrix and labels with the processed dataset,split them into train and validation dataset and train a lightGBM model using python site-package." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "95f94422", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "790\n", + "Starting training...\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "D:\\Software\\Anaconda\\lib\\site-packages\\lightgbm\\engine.py:181: UserWarning: 'early_stopping_rounds' argument is deprecated and will be removed in a future release of LightGBM. Pass 'early_stopping()' callback via 'callbacks' argument instead.\n", + " _log_warning(\"'early_stopping_rounds' argument is deprecated and will be removed in a future release of LightGBM. \"\n", + "D:\\Software\\Anaconda\\lib\\site-packages\\lightgbm\\engine.py:260: UserWarning: 'evals_result' argument is deprecated and will be removed in a future release of LightGBM. Pass 'record_evaluation()' callback via 'callbacks' argument instead.\n", + " _log_warning(\"'evals_result' argument is deprecated and will be removed in a future release of LightGBM. \"\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[LightGBM] [Info] Number of positive: 21055, number of negative: 1059033\n", + "[LightGBM] [Warning] Auto-choosing row-wise multi-threading, the overhead of testing was 0.024602 seconds.\n", + "You can set `force_row_wise=true` to remove the overhead.\n", + "And if memory is not enough, you can set `force_col_wise=true`.\n", + "[LightGBM] [Info] Total Bins 5375\n", + "[LightGBM] [Info] Number of data points in the train set: 1080088, number of used features: 25\n", + "[LightGBM] [Info] [binary:BoostFromScore]: pavg=0.019494 -> initscore=-3.917973\n", + "[LightGBM] [Info] Start training from score -3.917973\n", + "[1]\ttraining's auc: 0.873945\tvalid_1's auc: 0.850146\n", + "Training until validation scores don't improve for 30 rounds\n", + "[2]\ttraining's auc: 0.89163\tvalid_1's auc: 0.861864\n", + "[3]\ttraining's auc: 0.907425\tvalid_1's auc: 0.873648\n", + "[4]\ttraining's auc: 0.917975\tvalid_1's auc: 0.879024\n", + "[5]\ttraining's auc: 0.925354\tvalid_1's auc: 0.885985\n", + "[6]\ttraining's auc: 0.929873\tvalid_1's auc: 0.887732\n", + "[7]\ttraining's auc: 0.93471\tvalid_1's auc: 0.890758\n", + "[8]\ttraining's auc: 0.939334\tvalid_1's auc: 0.894438\n", + "[9]\ttraining's auc: 0.943099\tvalid_1's auc: 0.896407\n", + "[10]\ttraining's auc: 0.947086\tvalid_1's auc: 0.898798\n", + "[11]\ttraining's auc: 0.949774\tvalid_1's auc: 0.901497\n", + "[12]\ttraining's auc: 0.951762\tvalid_1's auc: 0.903913\n", + "[13]\ttraining's auc: 0.953597\tvalid_1's auc: 0.906384\n", + "[14]\ttraining's auc: 0.956247\tvalid_1's auc: 0.909407\n", + "[15]\ttraining's auc: 0.958212\tvalid_1's auc: 0.908955\n", + "[16]\ttraining's auc: 0.959638\tvalid_1's auc: 0.909624\n", + "[17]\ttraining's auc: 0.96138\tvalid_1's auc: 0.91039\n", + "[18]\ttraining's auc: 0.963195\tvalid_1's auc: 0.91133\n", + "[19]\ttraining's auc: 0.96453\tvalid_1's auc: 0.91217\n", + "[20]\ttraining's auc: 0.966041\tvalid_1's auc: 0.9122\n", + "[21]\ttraining's auc: 0.967378\tvalid_1's auc: 0.911951\n", + "[22]\ttraining's auc: 0.968679\tvalid_1's auc: 0.912304\n", + "[23]\ttraining's auc: 0.96973\tvalid_1's auc: 0.913094\n", + "[24]\ttraining's auc: 0.970734\tvalid_1's auc: 0.913121\n", + "[25]\ttraining's auc: 0.971889\tvalid_1's auc: 0.913184\n", + "[26]\ttraining's auc: 0.9727\tvalid_1's auc: 0.913081\n", + "[27]\ttraining's auc: 0.973561\tvalid_1's auc: 0.912726\n", + "[28]\ttraining's auc: 0.974188\tvalid_1's auc: 0.912997\n", + "[29]\ttraining's auc: 0.974766\tvalid_1's auc: 0.914071\n", + "[30]\ttraining's auc: 0.975518\tvalid_1's auc: 0.913907\n", + "[31]\ttraining's auc: 0.976291\tvalid_1's auc: 0.914528\n", + "[32]\ttraining's auc: 0.97703\tvalid_1's auc: 0.915528\n", + "[33]\ttraining's auc: 0.977691\tvalid_1's auc: 0.915918\n", + "[34]\ttraining's auc: 0.978573\tvalid_1's auc: 0.916351\n", + "[35]\ttraining's auc: 0.979361\tvalid_1's auc: 0.916425\n", + "[36]\ttraining's auc: 0.980001\tvalid_1's auc: 0.917069\n", + "[37]\ttraining's auc: 0.980522\tvalid_1's auc: 0.917871\n", + "[38]\ttraining's auc: 0.980833\tvalid_1's auc: 0.917854\n", + "[39]\ttraining's auc: 0.98151\tvalid_1's auc: 0.917668\n", + "[40]\ttraining's auc: 0.982041\tvalid_1's auc: 0.917218\n", + "[41]\ttraining's auc: 0.982482\tvalid_1's auc: 0.917524\n", + "[42]\ttraining's auc: 0.982827\tvalid_1's auc: 0.917734\n", + "[43]\ttraining's auc: 0.983227\tvalid_1's auc: 0.917918\n", + "[44]\ttraining's auc: 0.983545\tvalid_1's auc: 0.917961\n", + "[45]\ttraining's auc: 0.983986\tvalid_1's auc: 0.918371\n", + "[46]\ttraining's auc: 0.984316\tvalid_1's auc: 0.918944\n", + "[47]\ttraining's auc: 0.984691\tvalid_1's auc: 0.91958\n", + "[48]\ttraining's auc: 0.985014\tvalid_1's auc: 0.920487\n", + "[49]\ttraining's auc: 0.985404\tvalid_1's auc: 0.919805\n", + "[50]\ttraining's auc: 0.985654\tvalid_1's auc: 0.920241\n", + "[51]\ttraining's auc: 0.986028\tvalid_1's auc: 0.920352\n", + "[52]\ttraining's auc: 0.986348\tvalid_1's auc: 0.920527\n", + "[53]\ttraining's auc: 0.986681\tvalid_1's auc: 0.920779\n", + "[54]\ttraining's auc: 0.98691\tvalid_1's auc: 0.921034\n", + "[55]\ttraining's auc: 0.987284\tvalid_1's auc: 0.921348\n", + "[56]\ttraining's auc: 0.987474\tvalid_1's auc: 0.921509\n", + "[57]\ttraining's auc: 0.987993\tvalid_1's auc: 0.92077\n", + "[58]\ttraining's auc: 0.988278\tvalid_1's auc: 0.919403\n", + "[59]\ttraining's auc: 0.98858\tvalid_1's auc: 0.918665\n", + "[60]\ttraining's auc: 0.988864\tvalid_1's auc: 0.918063\n", + "[61]\ttraining's auc: 0.989139\tvalid_1's auc: 0.91776\n", + "[62]\ttraining's auc: 0.989291\tvalid_1's auc: 0.918116\n", + "[63]\ttraining's auc: 0.989506\tvalid_1's auc: 0.918673\n", + "[64]\ttraining's auc: 0.989714\tvalid_1's auc: 0.91867\n", + "[65]\ttraining's auc: 0.990028\tvalid_1's auc: 0.918442\n", + "[66]\ttraining's auc: 0.990325\tvalid_1's auc: 0.918534\n", + "[67]\ttraining's auc: 0.990503\tvalid_1's auc: 0.918222\n", + "[68]\ttraining's auc: 0.990723\tvalid_1's auc: 0.917489\n", + "[69]\ttraining's auc: 0.990853\tvalid_1's auc: 0.917757\n", + "[70]\ttraining's auc: 0.991079\tvalid_1's auc: 0.918283\n", + "[71]\ttraining's auc: 0.991315\tvalid_1's auc: 0.919114\n", + "[72]\ttraining's auc: 0.991451\tvalid_1's auc: 0.918607\n", + "[73]\ttraining's auc: 0.991587\tvalid_1's auc: 0.91882\n", + "[74]\ttraining's auc: 0.991793\tvalid_1's auc: 0.919303\n", + "[75]\ttraining's auc: 0.99197\tvalid_1's auc: 0.919092\n", + "[76]\ttraining's auc: 0.992177\tvalid_1's auc: 0.918924\n", + "[77]\ttraining's auc: 0.992333\tvalid_1's auc: 0.919278\n", + "[78]\ttraining's auc: 0.992481\tvalid_1's auc: 0.919571\n", + "[79]\ttraining's auc: 0.992593\tvalid_1's auc: 0.919866\n", + "[80]\ttraining's auc: 0.992765\tvalid_1's auc: 0.920075\n", + "[81]\ttraining's auc: 0.992952\tvalid_1's auc: 0.919863\n", + "[82]\ttraining's auc: 0.993109\tvalid_1's auc: 0.919881\n", + "[83]\ttraining's auc: 0.993249\tvalid_1's auc: 0.920192\n", + "[84]\ttraining's auc: 0.993365\tvalid_1's auc: 0.919728\n", + "[85]\ttraining's auc: 0.993481\tvalid_1's auc: 0.919356\n", + "[86]\ttraining's auc: 0.993628\tvalid_1's auc: 0.918837\n", + "Early stopping, best iteration is:\n", + "[56]\ttraining's auc: 0.987474\tvalid_1's auc: 0.921509\n" + ] + } + ], + "source": [ + "import seaborn as sns\n", + "import numpy as np\n", + "import lightgbm as lgb\n", + "import pandas as pd\n", + "import os\n", + "from sklearn.model_selection import train_test_split\n", + "from jddb.performance import Result\n", + "from jddb.performance import Report\n", + "from jddb.file_repo import FileRepo\n", + "\n", + "\n", + "# %% define function to build model specific data\n", + "def matrix_build(shot_list, file_repo, tags):\n", + " \"\"\"\n", + " get x and y from file_repo by shots and tags\n", + " Args:\n", + " shot_list: shots for data matrix\n", + " file_repo:\n", + " tags: tags from file_repo\n", + "\n", + " Returns: matrix of x and y\n", + "\n", + " \"\"\"\n", + " x_set = np.empty([0, len(tags) - 1])\n", + " y_set = np.empty([0])\n", + " for shot in shot_list:\n", + " shot = int(shot)\n", + " x_data = file_repo.read_data(shot, tags)\n", + " y_data = file_repo.read_data(shot, ['alarm_tag'])\n", + " x_data.pop('alarm_tag', None)\n", + " res = np.array(list(x_data.values())).T\n", + " res_y = np.array(list(y_data.values())).T.flatten()\n", + " x_set = np.append(x_set, res, axis=0)\n", + " y_set = np.append(y_set, res_y, axis=0)\n", + " return x_set, y_set\n", + "\n", + "\n", + "# init FileRepo\n", + "test_file_repo = FileRepo(r\"./JDDB_repo_2A_processed\")\n", + "test_shot_list = test_file_repo.get_all_shots()\n", + "print(len(test_shot_list))\n", + "tag_list = test_file_repo.get_tag_list(test_shot_list[0])\n", + "# disruption tag for dataset split\n", + "is_disrupt = []\n", + "for shot in test_shot_list:\n", + " dis_label = test_file_repo.read_labels(shot, ['IsDisrupt'])\n", + " is_disrupt.append(dis_label['IsDisrupt'])\n", + "\n", + "# train test split on shot not sample according to whether shots are disruption\n", + "# set test_size=0.5 to get 50% shots as test set\n", + "train_shots, test_shots, _, _ = \\\n", + " train_test_split(test_shot_list, is_disrupt, test_size=0.2,\n", + " random_state=1, shuffle=True, stratify=is_disrupt)\n", + "\n", + "# create x and y matrix for ML models\n", + "X_train, y_train = matrix_build(train_shots, test_file_repo, tag_list)\n", + "X_test, y_test = matrix_build(test_shots, test_file_repo, tag_list)\n", + "lgb_train = lgb.Dataset(X_train, y_train) # create dataset for LightGBM\n", + "lgb_val = lgb.Dataset(X_test, y_test) # create dataset for LightGBM\n", + "\n", + "# use LightGBM to train a model.\n", + "# hyper-parameters\n", + "params = {\n", + " 'boosting_type': 'gbdt',\n", + " 'objective': 'binary',\n", + " 'metric': {'auc'},\n", + "\n", + " 'is_unbalance': True\n", + "\n", + "}\n", + "evals_result = {} # to record eval results for plotting\n", + "print('Starting training...')\n", + "# train\n", + "gbm = lgb.train(params,\n", + " lgb_train,\n", + " num_boost_round=300,\n", + " valid_sets={lgb_train, lgb_val},\n", + " evals_result=evals_result,\n", + " early_stopping_rounds=30)\n" + ] + }, + { + "cell_type": "markdown", + "id": "1bbf9f66", + "metadata": {}, + "source": [ + "## Model evaluation\n", + "The evaluation will be implemented from 3 aspects.\n", + "1. Confusion Matrix\n", + "2. Prediction advance time distribution\n", + "3. Reiceiver-Operator Characteristic Curve" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "60ad508d", + "metadata": {}, + "outputs": [], + "source": [ + "# get disruption prediction result on shot using the output of the model on one shot\n", + "def get_shot_result(y_pred, threshold_sample):\n", + " \"\"\"\n", + " get shot result by a threshold and compare to start time\n", + " Args:\n", + " y_pred: sample result from model\n", + " threshold_sample: disruptive predict level\n", + "\n", + " Returns:\n", + " shot predict result:The prediction result for the shot\n", + "\n", + " \"\"\"\n", + " binary_result = 1 * (y_pred >= threshold_sample)\n", + " for k in range(len(binary_result) - 2):\n", + " if np.sum(binary_result[k:k + 3]) == 3:\n", + " predicted_dis = 1\n", + " break\n", + " else:\n", + " predicted_dis = 0\n", + " return predicted_dis\n", + "\n", + "# generate predictions for each shot\n", + "shot_nos = test_shots # shot list\n", + "shots_pred_disruption = [] # shot predict result\n", + "shots_true_disruption = [ ] # shot true disruption label\n", + "shots_pred_disruption_time = [] # shot predict time\n", + "for shot in test_shots:\n", + " true_disruption = 0 if test_file_repo.read_labels(shot)[\"IsDisrupt\"] == False else 1\n", + " shots_true_disruption.append(true_disruption)\n", + "\n", + " X, _ = matrix_build([shot], test_file_repo, tag_list)\n", + " # get sample result from LightGBM\n", + " y_pred = gbm.predict(X, num_iteration=gbm.best_iteration)\n", + "\n", + " # using the sample reulst to predict disruption on shot\n", + " predicted_disruption = get_shot_result(y_pred, .9) # get shot result by a threshold\n", + " shots_pred_disruption.append(predicted_disruption)\n", + "\n", + "# add predictions for each shot to the result dataframe\n", + "pred_result = pd.DataFrame({'Shot': shot_nos,\n", + " 'shot_pred': shots_pred_disruption})\n", + "pred_result.to_csv(r'.\\_temp_test\\test_result.csv')" + ] + }, + { + "cell_type": "markdown", + "id": "834c22e7", + "metadata": {}, + "source": [ + "## Evaluate the result using confusion matrix" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "60c8ba64", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "from sklearn.metrics import confusion_matrix\n", + "# %% plot some of the result: confusion matrix\n", + "matrix = confusion_matrix(shots_true_disruption, shots_pred_disruption)\n", + "sns.heatmap(matrix, annot=True, cmap=\"Blues\", fmt='.0f')\n", + "plt.xlabel(\"Predicted labels\")\n", + "plt.ylabel(\"True labels\")\n", + "plt.title(\"Confusion Matrix\")\n", + "# plt.savefig(os.path.join('..//_temp_test//', 'Confusion Matrix.png'), dpi=300)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0e106e1d", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/data/J-TEXT data/figures/Mirnov.png b/data/J-TEXT data/figures/Mirnov.png new file mode 100644 index 0000000000000000000000000000000000000000..ffd4b6c738a98b2879a901df8b0f2f1a803d9777 Binary files /dev/null and b/data/J-TEXT data/figures/Mirnov.png differ diff --git a/data/J-TEXT data/figures/SXR.png b/data/J-TEXT data/figures/SXR.png new file mode 100644 index 0000000000000000000000000000000000000000..31b37f5d12ec332861f955f981651fe7e422c8de Binary files /dev/null and b/data/J-TEXT data/figures/SXR.png differ diff --git a/data/J-TEXT data/processed_data_1k_5k_final/1058000/1058046.hdf5 b/data/J-TEXT data/processed_data_1k_5k_final/1058000/1058046.hdf5 new file mode 100644 index 0000000000000000000000000000000000000000..cd013909b19e1438fa1aef8064b514487845957c Binary files /dev/null and b/data/J-TEXT data/processed_data_1k_5k_final/1058000/1058046.hdf5 differ diff --git a/data/J-TEXT data/processed_data_1k_5k_final/1058000/1058083.hdf5 b/data/J-TEXT data/processed_data_1k_5k_final/1058000/1058083.hdf5 new file mode 100644 index 0000000000000000000000000000000000000000..18b9e0525146ebbb409fa840de08c73f90cd480b Binary files /dev/null and b/data/J-TEXT data/processed_data_1k_5k_final/1058000/1058083.hdf5 differ diff --git a/data/J-TEXT data/readme.md b/data/J-TEXT data/readme.md new file mode 100644 index 0000000000000000000000000000000000000000..6b6eba5f4aad6624a711cb3516ccc904749660f4 --- /dev/null +++ b/data/J-TEXT data/readme.md @@ -0,0 +1,80 @@ +# An introduction to tags and meta of data from J-TEXT + +## Tags + +What is a tag? + +Tag is a name that you use to refer a signal in a HDF5 shot file. + +Each tag corresponds to a channel of raw or processed diagnostic data, typically presented in the form of a time series. + +Below is descriptions of tag names and its meaning. + +### Raw diagnostic data + +- AXUV_CA/CB/CE/CF (16): The AXUV stands for "Absolute eXtended Ultra Violet", which is measurement for radiation emission from the plasma in J-TEXT. The letter postfix is the name of an AXUV array. Each array has many channels represented with the trailing number. Each channel is a measuring chord, since each array is a pinhole camera. Detailed description of the AXUV array is presented in Figure 1: + +![Figure 1](./figures/AXUV.png) +Figure 1 The geometry of the AXUV array in J-TEXT. + +- MA_POL/TOR1 (12 poloidal / 2 toroidal): Mirnov probes installed poloidally/toroidally to monitor magnetic fluctuations within the plasma in J-TEXT. The poloidal/toroidal Mirnov probes (MA_POL/TOR1) measure magnetic perturbation around the poloidal/toroidal section of plasma with a spatial resolution of 15/22.5 degrees. Detailed description of the Mirnov array is presented in Figure 2: + +![Figure 2](./figures/Mirnov.png) +Figure 2 The geometry of the Mirnov array in J-TEXT. + +- SXR array (38): The Soft X-Ray radiation measurement system in J-TEXT. It is similar as AXUV. It's also an pin hole camera. Detailed description of the SXR array is presented in Figure 3: + +![Figure 3](./figures/SXR.png) +Figure 3 The geometry of the SXR array in J-TEXT. + +- polaris_den_v01: The line integral density of the high field side +- polaris_den_v09: The line integral density of the center chord +- polaris_den_v17: The line integral density of the low field side +- ne0: The line averaged density of the center chrod +- Ihfp: The current of horizontal field. +- Iohp: The current of the ohmic field. +- Ivfp: The current of the vertical field. +- bt: The toroidal magnetic field. +- dx: The horizontal displacement. +- dy: The vertical displacement. +- ip: The plasma current. +- vl: The loop voltage. +- vs_c3_aa018: The C3 radiation. +- exsad1/4/7/10 (_J-TEXT only_): The locked mode detector placed at toroidal position of 67.5/157.5/247.5/337.5 degrees. + +### Extracted features + +- P_in: P*in (\_J-TEXT only*), The total input power. +- P_rad: P*rad (\_J-TEXT only*), The total radiated power. +- ip_error: The difference between plasma current and programmed plasma current. +- n=1 amplitude: The amplitude of the locked mode. +- qa_proxy: The edge safety factor. +- radiation_proxy: $\frac{P*{rad}}{P\_{in}}$. +- rotating_mode_proxy: The standard deviation of the rotating-mode-proxy magnetic field. +- ne_nG: A fraction that measures how close the plasma is approaching the Greenwald density limit. + +## Meta + +Meta represents the metadata to describe a discharge. If you are using JDDB lib, than you can get meta from the shot file. The meta is stored in the a groud in the HDF5 file called "meta". + +Those are key-value pairs that contains useful information about the shot. + +Below are important meta for disurption prediction. Note that data from different machine may have many other meta, you can just ignore them and focus on the following 3: + +- IsDisrupt: Whether the discharge is disruptive or not. `1` or `True` stands for disruptive. +- DownTime: The time of disruption for a disruptive discharge, while the end of the plasma current flat-top time for a non-disruptive discharge. +- StartTime: The starting time of the flattop phase of the plasma current. + +## Attribute + +Each dataset has attributes which describe the data. By default, "StartTime" and "SampleRate" are provided to help build a time axis of the signal. To access the attributes, use jddb.file_repo.read_attributes() method. + +## Other very useful material + +- the baseline demo code for disruption prediction + https://github.com/jtext-103/itu_dode_demo + this repo contains a step by step demo of how to process the data and than build and evaluate a disruption prediction model. + +- the JDDB library repo + this is the JDDB repo. You may need to install it to run the demo or acess the data conviniently. + https://github.com/jtext-103/jddb diff --git a/data/SampleSubmission.csv b/data/SampleSubmission.csv new file mode 100644 index 0000000000000000000000000000000000000000..f71097fb3fa11a6a64c5ec7abf7d793e00645814 --- /dev/null +++ b/data/SampleSubmission.csv @@ -0,0 +1,414 @@ +Shot_list,Is_disrupt +ID_1120214004,0 +ID_1120214013,0 +ID_1120216004,0 +ID_1120222021,0 +ID_1120223024,0 +ID_1120501010,0 +ID_1120501028,0 +ID_1120502023,0 +ID_1120503014,0 +ID_1120503020,0 +ID_1120503030,0 +ID_1120510029,0 +ID_1120514014,0 +ID_1120517009,0 +ID_1120518026,0 +ID_1120523006,0 +ID_1120523015,0 +ID_1120523024,0 +ID_1120523026,0 +ID_1120531002,0 +ID_1120531020,0 +ID_1120601006,0 +ID_1120601012,0 +ID_1120601026,0 +ID_1120601030,0 +ID_1120605010,0 +ID_1120605024,0 +ID_1120606010,0 +ID_1120606015,0 +ID_1120607002,0 +ID_1120608018,0 +ID_1120608020,0 +ID_1120613024,0 +ID_1120614005,0 +ID_1120626014,0 +ID_1120705014,0 +ID_1120706010,0 +ID_1120706019,0 +ID_1120710029,0 +ID_1120711008,0 +ID_1120713003,0 +ID_1120717002,0 +ID_1120718012,0 +ID_1120719006,0 +ID_1120719024,0 +ID_1120719025,0 +ID_1120720001,0 +ID_1120726009,0 +ID_1120731024,0 +ID_1120807007,0 +ID_1120807021,0 +ID_1120807028,0 +ID_1120809008,0 +ID_1120809010,0 +ID_1120809026,0 +ID_1120809031,0 +ID_1120814010,0 +ID_1120815003,0 +ID_1120815008,0 +ID_1120815017,0 +ID_1120815022,0 +ID_1120815029,0 +ID_1120816009,0 +ID_1120816013,0 +ID_1120821004,0 +ID_1120821013,0 +ID_1120821022,0 +ID_1120822020,0 +ID_1120824020,0 +ID_1120824022,0 +ID_1120828019,0 +ID_1120829006,0 +ID_1120829013,0 +ID_1120830026,0 +ID_1120831001,0 +ID_1120831014,0 +ID_1120904028,0 +ID_1120905003,0 +ID_1120905006,0 +ID_1120906015,0 +ID_1120906021,0 +ID_1120907037,0 +ID_1120911016,0 +ID_1120911021,0 +ID_1120912003,0 +ID_1120912024,0 +ID_1120913023,0 +ID_1120914012,0 +ID_1120914014,0 +ID_1120914016,0 +ID_1120914023,0 +ID_1120917010,0 +ID_1120917011,0 +ID_1120927027,0 +ID_1120927034,0 +ID_1121001004,0 +ID_1121001009,0 +ID_1121001013,0 +ID_1121002007,0 +ID_1121002031,0 +ID_1140130027,0 +ID_1140204018,0 +ID_1140205008,0 +ID_1140205014,0 +ID_1140205021,0 +ID_1140205029,0 +ID_1140206006,0 +ID_1140212005,0 +ID_1140212021,0 +ID_1140213017,0 +ID_1140213019,0 +ID_1140214003,0 +ID_1140224008,0 +ID_1140224020,0 +ID_1140224027,0 +ID_1140225022,0 +ID_1140226020,0 +ID_1140226021,0 +ID_1140227032,0 +ID_1140228004,0 +ID_1140228006,0 +ID_1140402020,0 +ID_1140403033,0 +ID_1140410002,0 +ID_1140411011,0 +ID_1140415019,0 +ID_1140509026,0 +ID_1140513002,0 +ID_1140513020,0 +ID_1140515022,0 +ID_1140515024,0 +ID_1140520006,0 +ID_1140522015,0 +ID_1140523016,0 +ID_1140523027,0 +ID_1140605009,0 +ID_1140605011,0 +ID_1140605029,0 +ID_1140606008,0 +ID_1140606018,0 +ID_1140611007,0 +ID_1140612017,0 +ID_1140617007,0 +ID_1140618018,0 +ID_1140618019,0 +ID_1140618024,0 +ID_1140619023,0 +ID_1140625017,0 +ID_1140625021,0 +ID_1140701013,0 +ID_1140701021,0 +ID_1140701028,0 +ID_1140702012,0 +ID_1140702029,0 +ID_1140714031,0 +ID_1140715010,0 +ID_1140722023,0 +ID_1140722026,0 +ID_1140722027,0 +ID_1140723013,0 +ID_1140724003,0 +ID_1140724005,0 +ID_1140724018,0 +ID_1140725017,0 +ID_1140729011,0 +ID_1140730032,0 +ID_1140731003,0 +ID_1140731014,0 +ID_1140801017,0 +ID_1140805006,0 +ID_1140805015,0 +ID_1140806006,0 +ID_1140807013,0 +ID_1140807018,0 +ID_1140808001,0 +ID_1140808021,0 +ID_1140815014,0 +ID_1140819006,0 +ID_1140819012,0 +ID_1140820003,0 +ID_1140820015,0 +ID_1140820028,0 +ID_1140821003,0 +ID_1140821009,0 +ID_1140821023,0 +ID_1140826010,0 +ID_1140827012,0 +ID_1140827013,0 +ID_1150501012,0 +ID_1150501020,0 +ID_1150505008,0 +ID_1150505013,0 +ID_1150505029,0 +ID_1150506008,0 +ID_1150507001,0 +ID_1150507010,0 +ID_1150507019,0 +ID_1150507020,0 +ID_1150508003,0 +ID_1150508004,0 +ID_1150514002,0 +ID_1150514013,0 +ID_1150521018,0 +ID_1150522006,0 +ID_1150522017,0 +ID_1150522023,0 +ID_1150527021,0 +ID_1150528005,0 +ID_1150528009,0 +ID_1150529003,0 +ID_1150529009,0 +ID_1150529022,0 +ID_1150529023,0 +ID_1150604010,0 +ID_1150604019,0 +ID_1150610030,0 +ID_1150611021,0 +ID_1150612020,0 +ID_1150612022,0 +ID_1150616016,0 +ID_1150617014,0 +ID_1150618006,0 +ID_1150618031,0 +ID_1150623001,0 +ID_1150623020,0 +ID_1150623025,0 +ID_1150623031,0 +ID_1150626019,0 +ID_1150630013,0 +ID_1150630018,0 +ID_1150708031,0 +ID_1150714012,0 +ID_1150714030,0 +ID_1150715001,0 +ID_1150716014,0 +ID_1150716016,0 +ID_1150716024,0 +ID_1150717001,0 +ID_1150721013,0 +ID_1150721023,0 +ID_1150722027,0 +ID_1150723020,0 +ID_1150724032,0 +ID_1150728001,0 +ID_1150728002,0 +ID_1150728004,0 +ID_1150728008,0 +ID_1150728025,0 +ID_1150729006,0 +ID_1150729009,0 +ID_1150730007,0 +ID_1150730019,0 +ID_1150731016,0 +ID_1150804002,0 +ID_1150804026,0 +ID_1150806003,0 +ID_1150811006,0 +ID_1150811017,0 +ID_1150812007,0 +ID_1150812029,0 +ID_1150813008,0 +ID_1150813016,0 +ID_1150814029,0 +ID_1150818018,0 +ID_1150819020,0 +ID_1150820019,0 +ID_1150820027,0 +ID_1150825012,0 +ID_1150826016,0 +ID_1150827006,0 +ID_1150827017,0 +ID_1150901022,0 +ID_1150903017,0 +ID_1150904014,0 +ID_1150904028,0 +ID_1150911017,0 +ID_1150916010,0 +ID_1150916023,0 +ID_1150916026,0 +ID_1150917008,0 +ID_1150917014,0 +ID_1150917016,0 +ID_1150922015,0 +ID_1150922030,0 +ID_1150923007,0 +ID_1150925002,0 +ID_1150925019,0 +ID_1150928003,0 +ID_1150928013,0 +ID_1150928031,0 +ID_1150929004,0 +ID_1150929016,0 +ID_1151001005,0 +ID_1151001019,0 +ID_1151001020,0 +ID_1160330014,0 +ID_1160401014,0 +ID_1160405003,0 +ID_1160406011,0 +ID_1160406025,0 +ID_1160406027,0 +ID_1160412004,0 +ID_1160412011,0 +ID_1160412020,0 +ID_1160412026,0 +ID_1160413013,0 +ID_1160413033,0 +ID_1160413035,0 +ID_1160415014,0 +ID_1160415019,0 +ID_1160420009,0 +ID_1160421014,0 +ID_1160421027,0 +ID_1160422001,0 +ID_1160426004,0 +ID_1160426005,0 +ID_1160427001,0 +ID_1160427003,0 +ID_1160429015,0 +ID_1160429019,0 +ID_1160429026,0 +ID_1160503016,0 +ID_1160503019,0 +ID_1160503020,0 +ID_1160505009,0 +ID_1160505010,0 +ID_1160506003,0 +ID_1160506004,0 +ID_1160506009,0 +ID_1160511007,0 +ID_1160512010,0 +ID_1160513007,0 +ID_1160518015,0 +ID_1160518023,0 +ID_1160525007,0 +ID_1160525009,0 +ID_1160525029,0 +ID_1160607006,0 +ID_1160607013,0 +ID_1160607015,0 +ID_1160607023,0 +ID_1160608003,0 +ID_1160609010,0 +ID_1160615022,0 +ID_1160615026,0 +ID_1160616002,0 +ID_1160616012,0 +ID_1160616018,0 +ID_1160617016,0 +ID_1160621018,0 +ID_1160628002,0 +ID_1160628010,0 +ID_1160628013,0 +ID_1160628018,0 +ID_1160628024,0 +ID_1160629002,0 +ID_1160629004,0 +ID_1160629016,0 +ID_1160630009,0 +ID_1160630016,0 +ID_1160630026,0 +ID_1160701020,0 +ID_1160701029,0 +ID_1160706021,0 +ID_1160706022,0 +ID_1160708014,0 +ID_1160715005,0 +ID_1160718008,0 +ID_1160720005,0 +ID_1160721002,0 +ID_1160725009,0 +ID_1160725013,0 +ID_1160725026,0 +ID_1160728002,0 +ID_1160728006,0 +ID_1160728016,0 +ID_1160803026,0 +ID_1160804029,0 +ID_1160805005,0 +ID_1160805009,0 +ID_1160805010,0 +ID_1160810002,0 +ID_1160816008,0 +ID_1160818028,0 +ID_1160823003,0 +ID_1160830010,0 +ID_1160830011,0 +ID_1160831007,0 +ID_1160831024,0 +ID_1160831026,0 +ID_1160901001,0 +ID_1160901014,0 +ID_1160902016,0 +ID_1160907006,0 +ID_1160907013,0 +ID_1160909017,0 +ID_1160913011,0 +ID_1160913012,0 +ID_1160915010,0 +ID_1160916001,0 +ID_1160916009,0 +ID_1160919001,0 +ID_1160920009,0 +ID_1160920017,0 +ID_1160923021,0 +ID_1160926025,0 +ID_1160927012,0 +ID_1160927014,0 +ID_1160927016,0 +ID_1160928018,0 +ID_1160929014,0 +ID_1160929021,0 +ID_1160930012,0 diff --git a/data/basic_data_handling.py b/data/basic_data_handling.py new file mode 100644 index 0000000000000000000000000000000000000000..66225960666a9fc6187028308e0dcb63294dae86 --- /dev/null +++ b/data/basic_data_handling.py @@ -0,0 +1,44 @@ +from jddb.file_repo import FileRepo +from jddb.processor import Shot +import numpy as np +import matplotlib.pyplot as plt + +file_repo = FileRepo(r"E://ITU_Dataset//JDDB_repo_2A_5k//") +shot_list = file_repo.get_all_shots() +shot = shot_list[20] +print(file_repo.read_labels(shot)) + +# plot ip and some diagnostics. +# read one signal with tag +channel_name = "DS-EMD-MP:MPOL-01" +signals = file_repo.read_data(shot, [channel_name]) +data = signals[channel_name] + +# read start time and sampling rate to generate x-axis +attribute_list = ["StartTime", "SampleRate"] +attributes = file_repo.read_attributes(shot, channel_name, attribute_list) +start = attributes["StartTime"] +sr = attributes["SampleRate"] +stop = start + len(data) / sr +time_axis = np.linspace(start, stop, num=len(data), endpoint=True) +# +# plt.figure() +# plt.plot(time_axis, data) +# plt.show() + +# %% +# an alternative way to read a shot using processing package +# create a shot object +example_shot = Shot(shot, file_repo) +# plot some plasma parameters in one figure +plot_tags = ["CCO-LFB:LFEX-IP", "CCO-LFB:LFBBT", "CCO-LFB:LFDH", "CCO-LFB:LFDV", "CCO-DF:DENSITY1", "CCO-LFB:LFBIRF", + "CCO-LFB:LFBBOH", "CCO-LFB:LFBBV", "CCO-LFB:LFBMP1", "CCO-LFB:LFBMP2", "CCO-DF:GASFBOUT", "DS-TMP:PUFFCTRL", + "DS-EMD-ROG:VL-FILTER", "DS-BM-AB:BOLD03", "DS-BM-AB:BOLD09", "DS-SXR-SXA:SX03", "DS-SXR-SXA:SX09", + "DS-EMD-MP:MPOL-04", "DS-EMD-MP:MPOL-13", "DS-EMD-MP:NPOL-04", "DS-EMD-MP:NPOL-09"] +plot_tags = ["DS-EMD-MP:MPOL-04", "DS-EMD-MP:MPOL-13", "DS-EMD-MP:NPOL-04", "DS-EMD-MP:NPOL-09", "RotatingModeProxy"] +f, axs = plt.subplots(nrows=5, ncols=5, sharex=True) +axs = np.reshape(axs, -1) +for i, tag in enumerate(plot_tags): + if example_shot.labels[tag] == 1: + data = example_shot.get_signal(tag) + axs[i].plot(data.time, data.data) diff --git a/data/basic_processor.py b/data/basic_processor.py new file mode 100644 index 0000000000000000000000000000000000000000..9da48697c1445b1f984a42f8fb333cb542dbc38e --- /dev/null +++ b/data/basic_processor.py @@ -0,0 +1,209 @@ +import math +from jddb.file_repo import FileRepo +from jddb.processor import Signal, Shot, ShotSet, BaseProcessor +from typing import Optional, List +from scipy.fftpack import fft +from copy import deepcopy +from scipy.interpolate import interp1d +import pandas as pd +import numpy as np +from scipy import signal as sig +from copy import deepcopy + + +class SliceProcessor(BaseProcessor): + """ + input the point number of the window and overlap rate of the given window , + then the sample rate is recalculated, return a signal of time window sequence + """ + + def __init__(self, window_length: int, overlap: float): + super().__init__() + assert (0 <= overlap <= 1), "Overlap is not between 0 and 1." + self.params.update({"WindowLength": window_length, + "Overlap": overlap}) + + def transform(self, signal: Signal) -> Signal: + window_length = self.params["WindowLength"] + overlap = self.params["Overlap"] + new_signal = deepcopy(signal) + raw_sample_rate = new_signal.attributes["SampleRate"] + step = round(window_length * (1 - overlap)) + + down_time = new_signal.time[-1] + + down_time = round(down_time, 3) + + idx = len(signal.data) + window = list() + while (idx - window_length) >= 0: + window.append(new_signal.data[idx - window_length:idx]) + idx -= step + window.reverse() + new_signal.attributes['SampleRate'] = raw_sample_rate * len(window) / (len(new_signal.data) - window_length + 1) + new_signal.data = np.array(window) + new_start_time = down_time - len(window) / new_signal.attributes['SampleRate'] + new_signal.attributes['StartTime'] = round(new_start_time, 3) + new_signal.attributes['OriginalSampleRate'] = raw_sample_rate + return new_signal + + +class FFTProcessor(BaseProcessor): + """ + processing signal by Fast Fourier Transform , return the maximum amplitude and the corresponding frequency + """ + + def __init__(self): + super().__init__() + + self.amp_signal = None + self.signal_rate = None + self.fre_signal = None + + def transform(self, signal: Signal): + + self.amp_signal = deepcopy(signal) + self.signal_rate = signal.attributes['OriginalSampleRate'] + self.fre_signal = deepcopy(signal) + self.fft() + self.amp_max() + + return self.amp_signal, self.fre_signal + + def fft(self): + if self.amp_signal.data.ndim == 1: + N = len(self.amp_signal.data) + fft_y = fft(self.amp_signal.data) + abs_y = np.abs(fft_y) + normed_abs_y = abs_y / (N / 2) + self.amp_signal.data = normed_abs_y[:int(N / 2)] + elif self.amp_signal.data.ndim == 2: + N = self.amp_signal.data.shape[1] + R = self.amp_signal.data.shape[0] + raw_cover = np.empty(shape=[0, int(N / 2)], dtype=float) + for i in range(R): + fft_y = fft(self.amp_signal.data[i]) + abs_y = np.abs(fft_y) + normed_abs_y = abs_y / (N / 2) + raw_cover = np.append(raw_cover, [normed_abs_y[:int(N / 2)]], axis=0) + self.amp_signal.data = raw_cover + + def amp_max(self): + fs = self.signal_rate + raw = self.amp_signal.data + amp_cover = np.empty(shape=0, dtype=float) + fre_cover = np.empty(shape=0, dtype=float) + N = (raw.shape[1]) * 2 + f = (np.linspace(start=0, stop=N - 1, num=N) / N) * fs + f = f[:int(N / 2)] + for j in range(raw.shape[0]): + list_max = (raw[j, :]).tolist() + raw_max = max(list_max) + max_index = list_max.index(max(list_max)) + f_rawmax = f[max_index] + amp_cover = np.append(amp_cover, raw_max) + fre_cover = np.append(fre_cover, f_rawmax) + self.amp_signal.data = amp_cover + self.fre_signal.data = fre_cover + + +class Mean(BaseProcessor): + """ + Given a set of input signals, average each instant + """ + + def __init__(self): + super().__init__() + + def transform(self, *signal: Signal) -> Signal: + new_signal = Signal(np.row_stack([sign.data for sign in signal.__iter__()]).T, signal.__getitem__(0).attributes) + new_signal.data = np.mean(np.array(new_signal.data, dtype=np.float32), axis=1) + return new_signal + + +class Concatenate(BaseProcessor): + """ + calculate the mean and standard deviation of the given signal + """ + + def __init__(self): + super().__init__() + + def transform(self, *signal: Signal) -> Signal: + new_signal = Signal(np.concatenate([sign.data for sign in signal.__iter__()], axis=0), + signal.__getitem__(0).attributes) + + return new_signal + + +class AlarmTag(BaseProcessor): + """ + Give arbitrary signals, extract downtime, timeline, + and generate actual warning time labels + + """ + + def __init__(self, lead_time, disruption_label: str, downtime_label: str): + super().__init__() + self.lead_time = lead_time + self._disruption_label = disruption_label + self._downtime_label = downtime_label + + def transform(self, signal: Signal): + copy_signal = deepcopy(signal) + fs = copy_signal.attributes['SampleRate'] + start_time = copy_signal.attributes['StartTime'] + + if self.params[self._disruption_label] == 1: + undisrupt_number = int(fs * (self.params[self._downtime_label] - self.lead_time - start_time)) + else: + undisrupt_number = len(copy_signal.data) + if undisrupt_number < len(copy_signal.data): + # new_data = np.zeros(shape=undisrupt_number, dtype=int) + new_data = np.zeros(shape=1, dtype=int) + for i in range(len(copy_signal.data) - 1): + if i <= undisrupt_number - 1: + new_data = np.append(new_data, np.array(0)) + else: + new_data = np.append(new_data, np.array(1)) + else: + new_data = np.zeros(shape=len(copy_signal.data), dtype=int) + + new_signal = Signal(data=new_data, attributes=dict()) + new_signal.attributes['SampleRate'] = fs + new_signal.attributes['StartTime'] = start_time + + return new_signal + + +class RadiatedFraction(BaseProcessor): + """ + Given the radiated power signal and input power + signal to calculate the radiated fraction. + + """ + def __init__(self, ): + super().__init__() + + def transform(self, radiated_power_signal: Signal, input_power_signal: Signal) -> Signal: + """ + + :param radiated_power_signal: + :param input_power_signal: + :return: + """ + resampled_attributes = deepcopy(input_power_signal.attributes) + new_data = radiated_power_signal.data / input_power_signal.data + + return Signal(data=new_data, attributes=resampled_attributes) + + +def find_tags(prefix, all_tags): + """ + find tags that start with the prefix + param: + prefix: The first few strings of the tags users need to look for + all_tags: a list of all the tags that needed to be filtered + :return: matching tags as a list[sting] + """ + return list(filter(lambda tag: tag.encode("utf-8").decode("utf-8", "ignore")[0:len(prefix)] == prefix, all_tags)) diff --git a/data/cmod/CMod_evaluate_20_10_2023/1140000000/1140224020.hdf5 b/data/cmod/CMod_evaluate_20_10_2023/1140000000/1140224020.hdf5 new file mode 100644 index 0000000000000000000000000000000000000000..4cc7e6ec6b9b0f86e1880ff3b726bd25741cd20e Binary files /dev/null and b/data/cmod/CMod_evaluate_20_10_2023/1140000000/1140224020.hdf5 differ diff --git a/ensemble_results/ensemble_sweep.png b/ensemble_results/ensemble_sweep.png new file mode 100644 index 0000000000000000000000000000000000000000..eb50ff5f69e0cc582a7199a73a646a07dd5b8f33 Binary files /dev/null and b/ensemble_results/ensemble_sweep.png differ