From e6b2fabb1818917fa14945a3c02af2f7417f0b65 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 26 Aug 2025 04:40:43 +0000 Subject: [PATCH 1/5] Initial plan From 62c4848a5b21d537328b029df75627a97220f42e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 26 Aug 2025 04:50:36 +0000 Subject: [PATCH 2/5] Initial exploration: repository structure and build process validation Co-authored-by: njzjz <9496702+njzjz@users.noreply.github.com> --- tests/.coverage | Bin 69632 -> 69632 bytes tests/data_bar.h5 | Bin 0 -> 6328 bytes tests/data_bar/box.raw | 3 +++ tests/data_bar/coord.raw | 3 +++ tests/data_bar/energy.raw | 3 +++ tests/data_bar/force.raw | 3 +++ tests/data_bar/set.000/box.npy | Bin 0 -> 344 bytes tests/data_bar/set.000/coord.npy | Bin 0 -> 560 bytes tests/data_bar/set.000/energy.npy | Bin 0 -> 152 bytes tests/data_bar/set.000/force.npy | Bin 0 -> 560 bytes tests/data_bar/set.000/virial.npy | Bin 0 -> 344 bytes tests/data_bar/type.raw | 6 ++++++ tests/data_bar/type_map.raw | 2 ++ tests/data_bar/virial.raw | 3 +++ tests/data_foo.h5 | Bin 0 -> 6328 bytes tests/data_foo/box.raw | 3 +++ tests/data_foo/coord.raw | 3 +++ tests/data_foo/energy.raw | 3 +++ tests/data_foo/force.raw | 3 +++ tests/data_foo/set.000/box.npy | Bin 0 -> 344 bytes tests/data_foo/set.000/coord.npy | Bin 0 -> 560 bytes tests/data_foo/set.000/energy.npy | Bin 0 -> 152 bytes tests/data_foo/set.000/force.npy | Bin 0 -> 560 bytes tests/data_foo/set.000/virial.npy | Bin 0 -> 344 bytes tests/data_foo/type.raw | 6 ++++++ tests/data_foo/type_map.raw | 2 ++ tests/data_foo/virial.raw | 3 +++ tests/data_foo_mixed/6/set.000/box.npy | Bin 0 -> 344 bytes tests/data_foo_mixed/6/set.000/coord.npy | Bin 0 -> 560 bytes tests/data_foo_mixed/6/set.000/energy.npy | Bin 0 -> 152 bytes tests/data_foo_mixed/6/set.000/force.npy | Bin 0 -> 560 bytes .../6/set.000/real_atom_types.npy | Bin 0 -> 272 bytes tests/data_foo_mixed/6/set.000/virial.npy | Bin 0 -> 344 bytes tests/data_foo_mixed/6/type.raw | 6 ++++++ tests/data_foo_mixed/6/type_map.raw | 2 ++ 35 files changed, 54 insertions(+) create mode 100644 tests/data_bar.h5 create mode 100644 tests/data_bar/box.raw create mode 100644 tests/data_bar/coord.raw create mode 100644 tests/data_bar/energy.raw create mode 100644 tests/data_bar/force.raw create mode 100644 tests/data_bar/set.000/box.npy create mode 100644 tests/data_bar/set.000/coord.npy create mode 100644 tests/data_bar/set.000/energy.npy create mode 100644 tests/data_bar/set.000/force.npy create mode 100644 tests/data_bar/set.000/virial.npy create mode 100644 tests/data_bar/type.raw create mode 100644 tests/data_bar/type_map.raw create mode 100644 tests/data_bar/virial.raw create mode 100644 tests/data_foo.h5 create mode 100644 tests/data_foo/box.raw create mode 100644 tests/data_foo/coord.raw create mode 100644 tests/data_foo/energy.raw create mode 100644 tests/data_foo/force.raw create mode 100644 tests/data_foo/set.000/box.npy create mode 100644 tests/data_foo/set.000/coord.npy create mode 100644 tests/data_foo/set.000/energy.npy create mode 100644 tests/data_foo/set.000/force.npy create mode 100644 tests/data_foo/set.000/virial.npy create mode 100644 tests/data_foo/type.raw create mode 100644 tests/data_foo/type_map.raw create mode 100644 tests/data_foo/virial.raw create mode 100644 tests/data_foo_mixed/6/set.000/box.npy create mode 100644 tests/data_foo_mixed/6/set.000/coord.npy create mode 100644 tests/data_foo_mixed/6/set.000/energy.npy create mode 100644 tests/data_foo_mixed/6/set.000/force.npy create mode 100644 tests/data_foo_mixed/6/set.000/real_atom_types.npy create mode 100644 tests/data_foo_mixed/6/set.000/virial.npy create mode 100644 tests/data_foo_mixed/6/type.raw create mode 100644 tests/data_foo_mixed/6/type_map.raw diff --git a/tests/.coverage b/tests/.coverage index dd0aa252ce6412048c022809ba90d1f61e725b32..c27b2163a61b5fb877fc68012278f35488515d02 100644 GIT binary patch literal 69632 zcmeHQ3v?V;dA_r=yR)yES=q8=S+X^jpOPi5-dep^w&jQXwiQ3*$7*(WB(JS~cptXx zkYtsZIwZ6}X@G=M!YL3c&MA~vAhg8cd2nb;+HeSzo|-@*I4Os;3CBPJ?KgAh{`bH4yZ`;~Yi9SrzMb)$B8{gq2{|XVB0pjn6p|!_kQe?-;9oyD zII-&&fQ;e%cBfv{c=jE4nEUU^$&pDVmyx4NM*ZYB?H?K(8Inc@H|`vg)G%qiM}niFK^l}Y zsdG|V$w=ezNkxh$WAUh*izg?f+(|``ozE&U+|fZ8bagmlBaz2v;dl(Ba>@iGk

u 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 literal 69632 zcmeI52~-@%nSiUihqhYHhY-4e$S>O1 zn`b-8#�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 Qwr(AoJVG7Jq=7OA04@-9oPU~))# z=`4OlT+%^go%_Qokx%xa-(m&-^b0uzult}U{*l`uXopp&rgcH{lCn2+!~SO>q@ zb1aX~K^`c&Lr%hBk;Vn}Pb%N+AFnB3(HeD5PPzqUjlliQO1IU?6%9$J*)ef~S2fF81UDlow;ZOF{DjaT3 z=@xQGh|CP)`o-`!c6m^A0Vgu~-io8EUl_-=opZb=7EHj{&?ChOg}N#YKtZwvZy$DOgieP_nJ4M6uS z{4BNG1?ZkL8q=bqfbQANrD?yijLG4%%?|5qpnLKbGwxv(`eZLEd-AD$i;%Ws9`QSvCSNQmE8=rlr}cXs$3Jn0c%G*&ySu*G+m|@jp8g}@ ma6awo^Q_h1?PH|1j{S^ga`+(T5%6b*xC8$dCg-s2=j;KSDbmCM literal 0 HcmV?d00001 diff --git a/tests/data_bar/set.000/energy.npy b/tests/data_bar/set.000/energy.npy new file mode 100644 index 0000000000000000000000000000000000000000..3f89d9890c7e987646ea90389e5f00dd190b8020 GIT binary patch literal 152 zcmbR27wQ`j$;eQ~P_3SlTAW;@Zl$1ZlV+i=qoAIaUsO_*m=~X4l#&V(cT3DEP6dh= wXCxM+0{I%oItqrGItsN4WCJdf6}&s|C)pfW&V08$u)yYkbF6|yQMt_l0CC(U)&Kwi literal 0 HcmV?d00001 diff --git a/tests/data_bar/set.000/force.npy b/tests/data_bar/set.000/force.npy new file mode 100644 index 0000000000000000000000000000000000000000..d5aff2cd19e8bd3e79c75e562324ea0b36073f3a GIT binary patch literal 560 zcmbR27wQ`j$;eQ~P_3SlTAW;@Zl$1ZlV+i=qoAIaUsO_*m=~X4l#&V(cT3DEP6dh= zXCxM+0{I%oItqpsnmP)#3giN=S)1*i&d@ouzrM5L^`GcR`yVMMd8u5yW^bob^FBY| z@qRZR>mJYgOZ!(8yJ{*%+}ht{z9g`5@}2!Lt8L%3GTpVGS5uX9y5X(8V`KTJmm441 zH!rGW=>D_Mp7B@h|7WgW_P?9LckRFB2YX|~*p936hxc!*C@AN-rKjHhTshswY?ah0d9(;Uz&A!9K zclV66Rr`H9b}q@<{bK(tr{|_+oe%BX#crPa9(-`WX}qfZ?(T>CH`jq&cx`{fM;@tP z>gVj&-g{V<5%J7^kIK2O6`h;xugQILVvK%jpBmaSyGQHb{u}d;Jonr1z+NghROlxA zS$pSoS2in5xom&r?8+2|6^r%@K8$DSoq2hGvdf|io8B$AH}F};<)*rHKl79}saBQi z`>&oe*t(Q&mwnI&k)oyZF7BUhCNqt#ZqNQbHgmPTIQQ;%ox8KW<^B2nFPeT$vy9!h Of0yu^{pWm7?gs$YD+EaZ literal 0 HcmV?d00001 diff --git a/tests/data_bar/set.000/virial.npy b/tests/data_bar/set.000/virial.npy new file mode 100644 index 0000000000000000000000000000000000000000..c8ee9903a71b8443ca10a4bb5d341cc2996b4460 GIT binary patch literal 344 zcmbR27wQ`j$;eQ~P_3SlTAW;@Zl$1ZlV+i=qoAIaUsO_*m=~X4l#&V(cT3DEP6dh= zXCxM+0{I%oItrGWItsN4WCJc2$=6z;yG9+dB1yM=i~h_c^JPmu;t)BbB+UtJp3MfKKWw*g^!!F=h@(D{ZQ_ly;yR+;hdI3_TQ&ZZL{%lh}jq|#%DalCUF<6u&@+inZRZg7A5&m6y8p$;`&|l=GdB>Q*k7E6>~DZBff=*lN@52WBz%*L{Wynxtt^9eFo z<{M18`}hbwq#6_OT;?hKKDg7d$Vcez*=bS%UP3R|C7lk!YZqMiQy1jC-N{*&3%an7$neA(uCx;|=iT9p50*@6*^&YB_C%W-Mp-cr{E|e^F z=x*Nkh-(lVdOR@IEY<7})sv@HuT*aW_AO4TZJT+}F1gV_^O*v)P19cY(1r&i$D%k+ zo-#DDYsk8=ObHIAy=mHfcu=ooc$01msF7I}!e{lz_`L+;67GvperzZ$`;#W5i__{w zAka@#E1~+(Vc4+T^+)M`#39~U{%TENM-Z&o7R`e$ z^So^3#R^a^@1dCM$b+m`4W-+QmEn2ejHDsUm7vX{wKK=?_>g-jW)jP)1>~PP;I^lo z4{ML5KHX5&3Q9uaMT(2r&~OCz_QDuVc&Sp=T47-!sJs=sFNN;sK(kh+8Qo8z-VVq4 zbU&H$BS2yR8#WuK87-#!S$2q(#pN}DeuE0?Km-rIsJs#8C!+`z+!aieym`=Otrvev zjWRTJzv3StRD#L+uaaf|(uB^6b!M3xS^)4jS$(OE4~rLFulG)B1q%k~U-;9J4I4Eq zXSc;_LgkZe)48XMz_^6I>37|XbB=OuN80!r=a@R_@P&cKIdLbZ)Wv?Ci$bG<9=18w zpqj7Trt4lQ15RQgl^|`asPUVr%^<@w@@3?x<0y3L>*xCo5eluC9PE(rI~cuS z5Vicf0#q<}rybiZ1MUB9p22{<=g_@d!)}dizKYfgPXCxb>jK!)dThHKs09-?hF3j% zTn0pzR++Jjj-i>N^my;g1{627-Y_7l8boST6t&u&MTX8p2WLiCqZ1*L4$IJ*XNp?l z;YHxrJJkU{INS$WxVc; zGJtKPy72J6D`@BVfjeYEvQU=s-jUPg&LH!>>5&mni%~1jK$+fhu zYA$F%CC{4e^2g?b!uh*TE;f1!h@Bm1n@}H9jBLTh<*!gVB5`6T<@})*H}^GCOffgA z)-D1X?xCaiMC5|joj)r?h|)Xk5M!%5$#=_vT3XmI_D41&5-0W(Ic4><_(IV2e*A2I zMxgg0@YcCojp-TozSci?^dBJb=A5D@{Z%T&92ftr*!KMp5rn+rts7?7_z&6do!ao( Qwr(AoJVG7Jq=7OA04@-9oPU~))# z=`4OlT+%^go%_Qokx%xa-(m&-^b0uzult}U{*l`uXopp&rgcH{lCn2+!~SO>q@ zb1aX~K^`c&Lr%hBk;Vn}Pb%N+AFnB3(HeD5PPzqUjlliQO1IU?6%9$J*)ef~S2fF81UDlow;ZOF{DjaT3 z=@xQGh|CP)`o-`!c6m^A0Vgu~-io8EUl_-=opZb=7EHj{&?ChOg}N#YKtZwvZy$DOgieP_nJ4M6uS z{4BNG1?ZkL8q=bqfbQANrD?yijLG4%%?|5qpnLKbGwxv(`eZLEd-AD$i;%Ws9`QSvCSNQmE8=rlr}cXs$3Jn0c%G*&ySu*G+m|@jp8g}@ ma6awo^Q_h1?PH|1j{S^ga`+(T5%6b*xC8$dCg-s2=j;KSDbmCM literal 0 HcmV?d00001 diff --git a/tests/data_foo/set.000/energy.npy b/tests/data_foo/set.000/energy.npy new file mode 100644 index 0000000000000000000000000000000000000000..3f89d9890c7e987646ea90389e5f00dd190b8020 GIT binary patch literal 152 zcmbR27wQ`j$;eQ~P_3SlTAW;@Zl$1ZlV+i=qoAIaUsO_*m=~X4l#&V(cT3DEP6dh= wXCxM+0{I%oItqrGItsN4WCJdf6}&s|C)pfW&V08$u)yYkbF6|yQMt_l0CC(U)&Kwi literal 0 HcmV?d00001 diff --git a/tests/data_foo/set.000/force.npy b/tests/data_foo/set.000/force.npy new file mode 100644 index 0000000000000000000000000000000000000000..d5aff2cd19e8bd3e79c75e562324ea0b36073f3a GIT binary patch literal 560 zcmbR27wQ`j$;eQ~P_3SlTAW;@Zl$1ZlV+i=qoAIaUsO_*m=~X4l#&V(cT3DEP6dh= zXCxM+0{I%oItqpsnmP)#3giN=S)1*i&d@ouzrM5L^`GcR`yVMMd8u5yW^bob^FBY| z@qRZR>mJYgOZ!(8yJ{*%+}ht{z9g`5@}2!Lt8L%3GTpVGS5uX9y5X(8V`KTJmm441 zH!rGW=>D_Mp7B@h|7WgW_P?9LckRFB2YX|~*p936hxc!*C@AN-rKjHhTshswY?ah0d9(;Uz&A!9K zclV66Rr`H9b}q@<{bK(tr{|_+oe%BX#crPa9(-`WX}qfZ?(T>CH`jq&cx`{fM;@tP z>gVj&-g{V<5%J7^kIK2O6`h;xugQILVvK%jpBmaSyGQHb{u}d;Jonr1z+NghROlxA zS$pSoS2in5xom&r?8+2|6^r%@K8$DSoq2hGvdf|io8B$AH}F};<)*rHKl79}saBQi z`>&oe*t(Q&mwnI&k)oyZF7BUhCNqt#ZqNQbHgmPTIQQ;%ox8KW<^B2nFPeT$vy9!h Of0yu^{pWm7?gs$YD+EaZ literal 0 HcmV?d00001 diff --git a/tests/data_foo/set.000/virial.npy b/tests/data_foo/set.000/virial.npy new file mode 100644 index 0000000000000000000000000000000000000000..c8ee9903a71b8443ca10a4bb5d341cc2996b4460 GIT binary patch literal 344 zcmbR27wQ`j$;eQ~P_3SlTAW;@Zl$1ZlV+i=qoAIaUsO_*m=~X4l#&V(cT3DEP6dh= zXCxM+0{I%oItrGWItsN4WCJc2$=6z;yG9+dB1yM=i~h_c^JPmu;t)BbB+UtJp3MfKKWw*g^!!F=h@(D{ZQ_ly;yR+;hdI3_TQ&ZZL{%lh}j%T&92ftr*!KMp5rn+rts7?7_z&6do!ao( Qwr(AoJVG7Jq=7OA04@-9oPU~))# z=`4OlT+%^go%_Qokx%xa-(m&-^b0uzult}U{*l`uXopp&rgcH{lCn2+!~SO>q@ zb1aX~K^`c&Lr%hBk;Vn}Pb%N+AFnB3(HeD5PPzqUjlliQO1IU?6%9$J*)ef~S2fF81UDlow;ZOF{DjaT3 z=@xQGh|CP)`o-`!c6m^A0Vgu~-io8EUl_-=opZb=7EHj{&?ChOg}N#YKtZwvZy$DOgieP_nJ4M6uS z{4BNG1?ZkL8q=bqfbQANrD?yijLG4%%?|5qpnLKbGwxv(`eZLEd-AD$i;%Ws9`QSvCSNQmE8=rlr}cXs$3Jn0c%G*&ySu*G+m|@jp8g}@ ma6awo^Q_h1?PH|1j{S^ga`+(T5%6b*xC8$dCg-s2=j;KSDbmCM literal 0 HcmV?d00001 diff --git a/tests/data_foo_mixed/6/set.000/energy.npy b/tests/data_foo_mixed/6/set.000/energy.npy new file mode 100644 index 0000000000000000000000000000000000000000..3f89d9890c7e987646ea90389e5f00dd190b8020 GIT binary patch literal 152 zcmbR27wQ`j$;eQ~P_3SlTAW;@Zl$1ZlV+i=qoAIaUsO_*m=~X4l#&V(cT3DEP6dh= wXCxM+0{I%oItqrGItsN4WCJdf6}&s|C)pfW&V08$u)yYkbF6|yQMt_l0CC(U)&Kwi literal 0 HcmV?d00001 diff --git a/tests/data_foo_mixed/6/set.000/force.npy b/tests/data_foo_mixed/6/set.000/force.npy new file mode 100644 index 0000000000000000000000000000000000000000..d5aff2cd19e8bd3e79c75e562324ea0b36073f3a GIT binary patch literal 560 zcmbR27wQ`j$;eQ~P_3SlTAW;@Zl$1ZlV+i=qoAIaUsO_*m=~X4l#&V(cT3DEP6dh= zXCxM+0{I%oItqpsnmP)#3giN=S)1*i&d@ouzrM5L^`GcR`yVMMd8u5yW^bob^FBY| z@qRZR>mJYgOZ!(8yJ{*%+}ht{z9g`5@}2!Lt8L%3GTpVGS5uX9y5X(8V`KTJmm441 zH!rGW=>D_Mp7B@h|7WgW_P?9LckRFB2YX|~*p936hxc!*C@AN-rKjHhTshswY?ah0d9(;Uz&A!9K zclV66Rr`H9b}q@<{bK(tr{|_+oe%BX#crPa9(-`WX}qfZ?(T>CH`jq&cx`{fM;@tP z>gVj&-g{V<5%J7^kIK2O6`h;xugQILVvK%jpBmaSyGQHb{u}d;Jonr1z+NghROlxA zS$pSoS2in5xom&r?8+2|6^r%@K8$DSoq2hGvdf|io8B$AH}F};<)*rHKl79}saBQi z`>&oe*t(Q&mwnI&k)oyZF7BUhCNqt#ZqNQbHgmPTIQQ;%ox8KW<^B2nFPeT$vy9!h Of0yu^{pWm7?gs$YD+EaZ literal 0 HcmV?d00001 diff --git a/tests/data_foo_mixed/6/set.000/real_atom_types.npy b/tests/data_foo_mixed/6/set.000/real_atom_types.npy new file mode 100644 index 0000000000000000000000000000000000000000..3d294dba755bb2214747ea5723ddcfbfb4ed6f66 GIT binary patch literal 272 zcmbR27wQ`j$;eQ~P_3SlTAW;@Zl$1ZlWC!@qoAIaUsO_*m=~X4l#&V(cT3DEP6dh= oXCxM+0{I%oItpf*ItsN4WCJb+G{6Yuk literal 0 HcmV?d00001 diff --git a/tests/data_foo_mixed/6/set.000/virial.npy b/tests/data_foo_mixed/6/set.000/virial.npy new file mode 100644 index 0000000000000000000000000000000000000000..c8ee9903a71b8443ca10a4bb5d341cc2996b4460 GIT binary patch literal 344 zcmbR27wQ`j$;eQ~P_3SlTAW;@Zl$1ZlV+i=qoAIaUsO_*m=~X4l#&V(cT3DEP6dh= zXCxM+0{I%oItrGWItsN4WCJc2$=6z;yG9+dB1yM=i~h_c^JPmu;t)BbB+UtJp3MfKKWw*g^!!F=h@(D{ZQ_ly;yR+;hdI3_TQ&ZZL{%lh}j Date: Tue, 26 Aug 2025 04:54:50 +0000 Subject: [PATCH 3/5] Create comprehensive .github/copilot-instructions.md with validated commands Co-authored-by: njzjz <9496702+njzjz@users.noreply.github.com> --- .github/copilot-instructions.md | 136 ++++++++++++++++++ .gitignore | 5 + tests/.coverage | Bin 69632 -> 0 bytes tests/data_bar.h5 | Bin 6328 -> 0 bytes tests/data_bar/box.raw | 3 - tests/data_bar/coord.raw | 3 - tests/data_bar/energy.raw | 3 - tests/data_bar/force.raw | 3 - tests/data_bar/set.000/box.npy | Bin 344 -> 0 bytes tests/data_bar/set.000/coord.npy | Bin 560 -> 0 bytes tests/data_bar/set.000/energy.npy | Bin 152 -> 0 bytes tests/data_bar/set.000/force.npy | Bin 560 -> 0 bytes tests/data_bar/set.000/virial.npy | Bin 344 -> 0 bytes tests/data_bar/type.raw | 6 - tests/data_bar/type_map.raw | 2 - tests/data_bar/virial.raw | 3 - tests/data_foo.h5 | Bin 6328 -> 0 bytes tests/data_foo/box.raw | 3 - tests/data_foo/coord.raw | 3 - tests/data_foo/energy.raw | 3 - tests/data_foo/force.raw | 3 - tests/data_foo/set.000/box.npy | Bin 344 -> 0 bytes tests/data_foo/set.000/coord.npy | Bin 560 -> 0 bytes tests/data_foo/set.000/energy.npy | Bin 152 -> 0 bytes tests/data_foo/set.000/force.npy | Bin 560 -> 0 bytes tests/data_foo/set.000/virial.npy | Bin 344 -> 0 bytes tests/data_foo/type.raw | 6 - tests/data_foo/type_map.raw | 2 - tests/data_foo/virial.raw | 3 - tests/data_foo_mixed/6/set.000/box.npy | Bin 344 -> 0 bytes tests/data_foo_mixed/6/set.000/coord.npy | Bin 560 -> 0 bytes tests/data_foo_mixed/6/set.000/energy.npy | Bin 152 -> 0 bytes tests/data_foo_mixed/6/set.000/force.npy | Bin 560 -> 0 bytes .../6/set.000/real_atom_types.npy | Bin 272 -> 0 bytes tests/data_foo_mixed/6/set.000/virial.npy | Bin 344 -> 0 bytes tests/data_foo_mixed/6/type.raw | 6 - tests/data_foo_mixed/6/type_map.raw | 2 - 37 files changed, 141 insertions(+), 54 deletions(-) create mode 100644 .github/copilot-instructions.md delete mode 100644 tests/.coverage delete mode 100644 tests/data_bar.h5 delete mode 100644 tests/data_bar/box.raw delete mode 100644 tests/data_bar/coord.raw delete mode 100644 tests/data_bar/energy.raw delete mode 100644 tests/data_bar/force.raw delete mode 100644 tests/data_bar/set.000/box.npy delete mode 100644 tests/data_bar/set.000/coord.npy delete mode 100644 tests/data_bar/set.000/energy.npy delete mode 100644 tests/data_bar/set.000/force.npy delete mode 100644 tests/data_bar/set.000/virial.npy delete mode 100644 tests/data_bar/type.raw delete mode 100644 tests/data_bar/type_map.raw delete mode 100644 tests/data_bar/virial.raw delete mode 100644 tests/data_foo.h5 delete mode 100644 tests/data_foo/box.raw delete mode 100644 tests/data_foo/coord.raw delete mode 100644 tests/data_foo/energy.raw delete mode 100644 tests/data_foo/force.raw delete mode 100644 tests/data_foo/set.000/box.npy delete mode 100644 tests/data_foo/set.000/coord.npy delete mode 100644 tests/data_foo/set.000/energy.npy delete mode 100644 tests/data_foo/set.000/force.npy delete mode 100644 tests/data_foo/set.000/virial.npy delete mode 100644 tests/data_foo/type.raw delete mode 100644 tests/data_foo/type_map.raw delete mode 100644 tests/data_foo/virial.raw delete mode 100644 tests/data_foo_mixed/6/set.000/box.npy delete mode 100644 tests/data_foo_mixed/6/set.000/coord.npy delete mode 100644 tests/data_foo_mixed/6/set.000/energy.npy delete mode 100644 tests/data_foo_mixed/6/set.000/force.npy delete mode 100644 tests/data_foo_mixed/6/set.000/real_atom_types.npy delete mode 100644 tests/data_foo_mixed/6/set.000/virial.npy delete mode 100644 tests/data_foo_mixed/6/type.raw delete mode 100644 tests/data_foo_mixed/6/type_map.raw diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md new file mode 100644 index 000000000..24b26ec63 --- /dev/null +++ b/.github/copilot-instructions.md @@ -0,0 +1,136 @@ +# dpdata - Atomistic Data Format Manipulation + +dpdata is a Python package for manipulating atomistic data from computational science software. It supports format conversion between various atomistic simulation packages including VASP, DeePMD-kit, LAMMPS, GROMACS, Gaussian, ABACUS, and many others. + +Always reference these instructions first and fallback to search or bash commands only when you encounter unexpected information that does not match the info here. + +## Working Effectively + +- **Bootstrap and install the repository:** + - `cd /home/runner/work/dpdata/dpdata` (or wherever the repo is cloned) + - `pip install -e .` -- installs dpdata in development mode with core dependencies (numpy, scipy, h5py, monty, wcmatch) + - Test installation: `dpdata --version` -- should show version like "dpdata v0.1.dev2+..." + +- **Run tests:** + - `cd tests && python -m unittest discover` -- runs all 1826 tests in ~10 seconds. NEVER CANCEL. + - `cd tests && python -m unittest test_.py` -- run specific test modules (individual modules take ~0.5 seconds) + - `cd tests && coverage run --source=../dpdata -m unittest discover && coverage report` -- run tests with coverage + +- **Linting and formatting:** + - Install ruff: `pip install ruff` + - `ruff check dpdata/` -- lint the main package (takes ~1 second) + - `ruff format dpdata/` -- format code according to project style + - `ruff check --fix dpdata/` -- auto-fix linting issues where possible + +- **Pre-commit hooks:** + - Install: `pip install pre-commit` + - `pre-commit run --all-files` -- run all hooks on all files + - Hooks include: ruff linting/formatting, trailing whitespace, end-of-file-fixer, yaml/json/toml checks + +## Validation + +- **Always test CLI functionality after making changes:** + - `dpdata --help` -- ensure CLI still works + - `dpdata --version` -- verify version is correct + - Test a basic conversion if sample data is available + +- **Always run linting before committing:** + - `ruff check dpdata/` -- ensure no new linting errors + - `ruff format dpdata/` -- ensure code is properly formatted + +- **Run relevant tests for your changes:** + - For format-specific changes: `cd tests && python -m unittest test_*.py` + - For core system changes: `cd tests && python -m unittest test_system*.py test_multisystems.py` + - For CLI changes: `cd tests && python -m unittest test_cli.py` (if exists) + +## Build and Documentation + +- **Documentation:** + - `cd docs && make help` -- see all available build targets + - `cd docs && make html` -- build HTML documentation (requires additional dependencies) + - Documentation source is in `docs/` directory using Sphinx + - **NOTE:** Full docs build requires additional dependencies like `deepmodeling-sphinx` that may not be readily available + +- **Package building:** + - Uses setuptools with pyproject.toml configuration + - `pip install build && python -m build` -- create source and wheel distributions + - Version is managed by setuptools_scm from git tags + +## Common Tasks + +The following are outputs from frequently run commands. Reference them instead of re-running to save time. + +### Repository structure +``` +/home/runner/work/dpdata/dpdata/ +├── dpdata/ # Main package code +│ ├── __init__.py +│ ├── cli.py # Command-line interface +│ ├── system.py # Core System classes +│ ├── format.py # Format registry +│ ├── abacus/ # ABACUS format support +│ ├── amber/ # AMBER format support +│ ├── deepmd/ # DeePMD format support +│ ├── vasp/ # VASP format support +│ ├── xyz/ # XYZ format support +│ └── ... # Other format modules +├── tests/ # Test suite (91 test files) +├── docs/ # Sphinx documentation +├── plugin_example/ # Example plugin +├── pyproject.toml # Project configuration +└── README.md +``` + +### Key dependencies +- Core: numpy>=1.14.3, scipy, h5py, monty, wcmatch +- Optional: ase (ASE integration), parmed (AMBER), pymatgen (Materials Project), rdkit (molecular analysis) +- Testing: unittest (built-in), coverage +- Linting: ruff +- Docs: sphinx with various extensions + +### Test timing expectations +- Full test suite: ~10 seconds (1826 tests). NEVER CANCEL. +- Individual test modules: ~0.5 seconds +- Linting with ruff: ~1 second +- Documentation build: ~30 seconds + +### Common workflows +1. **Adding a new format:** + - Create module in `dpdata//` + - Implement format classes inheriting from appropriate base classes + - Add tests in `tests/test_*.py` + - Register format in the plugin system + +2. **Fixing bugs:** + - Write test that reproduces the bug first + - Make minimal fix to pass the test + - Run full test suite to ensure no regressions + - Run linting to ensure code style compliance + +3. **CLI changes:** + - Modify `dpdata/cli.py` + - Test with `dpdata --help` and specific commands + - Add/update tests if needed + +## Troubleshooting + +- **Installation timeouts:** Network timeouts during `pip install` are common. If this occurs, try: + - Individual package installation: `pip install numpy scipy h5py monty wcmatch` + - Use `--timeout` option: `pip install --timeout 300 -e .` + - Verify existing installation works: `dpdata --version` should work even if reinstall fails + +- **Optional dependency errors:** Many tests will skip or fail if optional dependencies (ase, parmed, pymatgen, rdkit) are not installed. This is expected. Core functionality will work with just the basic dependencies. + +- **Documentation build failures:** The docs build requires specific dependencies like `deepmodeling-sphinx` that may not be readily available. Use `make help` to see available targets, but expect build failures without full doc dependencies. + +- **Test artifacts:** The test suite generates temporary files (`tests/data_*`, `tests/tmp.*`, `tests/.coverage`). These are excluded by `.gitignore` and should not be committed. + +- **Import errors:** If you see import errors for specific modules, check if the corresponding optional dependency is installed. For example, ASE functionality requires `pip install ase`. + +## Critical Notes + +- **NEVER CANCEL** test runs or builds - they complete quickly (10 seconds for tests, 30 seconds for docs) +- Always run `ruff check` and `ruff format` before committing +- Test artifacts in `tests/` directory are excluded by `.gitignore` - don't commit them +- Optional dependencies are required for some formats but core functionality works without them +- The CLI tool `dpdata` is the main user interface for format conversion \ No newline at end of file diff --git a/.gitignore b/.gitignore index 565544d98..7fd274719 100644 --- a/.gitignore +++ b/.gitignore @@ -29,3 +29,8 @@ docs/minimizers.csv docs/api/ docs/formats/ .DS_Store +# Test artifacts +tests/data_*.h5 +tests/data_*/ +tests/tmp.* +tests/.coverage diff --git a/tests/.coverage b/tests/.coverage deleted file mode 100644 index c27b2163a61b5fb877fc68012278f35488515d02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69632 zcmeHQ3v?V;dA_r=yR)yES=q8=S+X^jpOPi5-dep^w&jQXwiQ3*$7*(WB(JS~cptXx zkYtsZIwZ6}X@G=M!YL3c&MA~vAhg8cd2nb;+HeSzo|-@*I4Os;3CBPJ?KgAh{`bH4yZ`;~Yi9SrzMb)$B8{gq2{|XVB0pjn6p|!_kQe?-;9oyD zII-&&fQ;e%cBfv{c=jE4nEUU^$&pDVmyx4NM*ZYB?H?K(8Inc@H|`vg)G%qiM}niFK^l}Y zsdG|V$w=ezNkxh$WAUh*izg?f+(|``ozE&U+|fZ8bagmlBaz2v;dl(Ba>@iGk

u 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 diff --git a/tests/data_bar.h5 b/tests/data_bar.h5 deleted file mode 100644 index ef884362740e4482b42b025d55ea0b9b2649709a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6328 zcmeHL3sj6*9RFsq|#%DalCUF<6u&@+inZRZg7A5&m6y8p$;`&|l=GdB>Q*k7E6>~DZBff=*lN@52WBz%*L{Wynxtt^9eFo z<{M18`}hbwq#6_OT;?hKKDg7d$Vcez*=bS%UP3R|C7lk!YZqMiQy1jC-N{*&3%an7$neA(uCx;|=iT9p50*@6*^&YB_C%W-Mp-cr{E|e^F z=x*Nkh-(lVdOR@IEY<7})sv@HuT*aW_AO4TZJT+}F1gV_^O*v)P19cY(1r&i$D%k+ zo-#DDYsk8=ObHIAy=mHfcu=ooc$01msF7I}!e{lz_`L+;67GvperzZ$`;#W5i__{w zAka@#E1~+(Vc4+T^+)M`#39~U{%TENM-Z&o7R`e$ z^So^3#R^a^@1dCM$b+m`4W-+QmEn2ejHDsUm7vX{wKK=?_>g-jW)jP)1>~PP;I^lo z4{ML5KHX5&3Q9uaMT(2r&~OCz_QDuVc&Sp=T47-!sJs=sFNN;sK(kh+8Qo8z-VVq4 zbU&H$BS2yR8#WuK87-#!S$2q(#pN}DeuE0?Km-rIsJs#8C!+`z+!aieym`=Otrvev zjWRTJzv3StRD#L+uaaf|(uB^6b!M3xS^)4jS$(OE4~rLFulG)B1q%k~U-;9J4I4Eq zXSc;_LgkZe)48XMz_^6I>37|XbB=OuN80!r=a@R_@P&cKIdLbZ)Wv?Ci$bG<9=18w zpqj7Trt4lQ15RQgl^|`asPUVr%^<@w@@3?x<0y3L>*xCo5eluC9PE(rI~cuS z5Vicf0#q<}rybiZ1MUB9p22{<=g_@d!)}dizKYfgPXCxb>jK!)dThHKs09-?hF3j% zTn0pzR++Jjj-i>N^my;g1{627-Y_7l8boST6t&u&MTX8p2WLiCqZ1*L4$IJ*XNp?l z;YHxrJJkU{INS$WxVc; zGJtKPy72J6D`@BVfjeYEvQU=s-jUPg&LH!>>5&mni%~1jK$+fhu zYA$F%CC{4e^2g?b!uh*TE;f1!h@Bm1n@}H9jBLTh<*!gVB5`6T<@})*H}^GCOffgA z)-D1X?xCaiMC5|joj)r?h|)Xk5M!%5$#=_vT3XmI_D41&5-0W(Ic4><_(IV2e*A2I zMxgg0@YcCojp-TozSci?^dBJb=A5D@{Z%T&92ftr*!KMp5rn+rts7?7_z&6do!ao( Qwr(AoJVG7Jq=7OA04@-9oPU~))# z=`4OlT+%^go%_Qokx%xa-(m&-^b0uzult}U{*l`uXopp&rgcH{lCn2+!~SO>q@ zb1aX~K^`c&Lr%hBk;Vn}Pb%N+AFnB3(HeD5PPzqUjlliQO1IU?6%9$J*)ef~S2fF81UDlow;ZOF{DjaT3 z=@xQGh|CP)`o-`!c6m^A0Vgu~-io8EUl_-=opZb=7EHj{&?ChOg}N#YKtZwvZy$DOgieP_nJ4M6uS z{4BNG1?ZkL8q=bqfbQANrD?yijLG4%%?|5qpnLKbGwxv(`eZLEd-AD$i;%Ws9`QSvCSNQmE8=rlr}cXs$3Jn0c%G*&ySu*G+m|@jp8g}@ ma6awo^Q_h1?PH|1j{S^ga`+(T5%6b*xC8$dCg-s2=j;KSDbmCM diff --git a/tests/data_bar/set.000/energy.npy b/tests/data_bar/set.000/energy.npy deleted file mode 100644 index 3f89d9890c7e987646ea90389e5f00dd190b8020..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 152 zcmbR27wQ`j$;eQ~P_3SlTAW;@Zl$1ZlV+i=qoAIaUsO_*m=~X4l#&V(cT3DEP6dh= wXCxM+0{I%oItqrGItsN4WCJdf6}&s|C)pfW&V08$u)yYkbF6|yQMt_l0CC(U)&Kwi diff --git a/tests/data_bar/set.000/force.npy b/tests/data_bar/set.000/force.npy deleted file mode 100644 index d5aff2cd19e8bd3e79c75e562324ea0b36073f3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 560 zcmbR27wQ`j$;eQ~P_3SlTAW;@Zl$1ZlV+i=qoAIaUsO_*m=~X4l#&V(cT3DEP6dh= zXCxM+0{I%oItqpsnmP)#3giN=S)1*i&d@ouzrM5L^`GcR`yVMMd8u5yW^bob^FBY| z@qRZR>mJYgOZ!(8yJ{*%+}ht{z9g`5@}2!Lt8L%3GTpVGS5uX9y5X(8V`KTJmm441 zH!rGW=>D_Mp7B@h|7WgW_P?9LckRFB2YX|~*p936hxc!*C@AN-rKjHhTshswY?ah0d9(;Uz&A!9K zclV66Rr`H9b}q@<{bK(tr{|_+oe%BX#crPa9(-`WX}qfZ?(T>CH`jq&cx`{fM;@tP z>gVj&-g{V<5%J7^kIK2O6`h;xugQILVvK%jpBmaSyGQHb{u}d;Jonr1z+NghROlxA zS$pSoS2in5xom&r?8+2|6^r%@K8$DSoq2hGvdf|io8B$AH}F};<)*rHKl79}saBQi z`>&oe*t(Q&mwnI&k)oyZF7BUhCNqt#ZqNQbHgmPTIQQ;%ox8KW<^B2nFPeT$vy9!h Of0yu^{pWm7?gs$YD+EaZ diff --git a/tests/data_bar/set.000/virial.npy b/tests/data_bar/set.000/virial.npy deleted file mode 100644 index c8ee9903a71b8443ca10a4bb5d341cc2996b4460..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 344 zcmbR27wQ`j$;eQ~P_3SlTAW;@Zl$1ZlV+i=qoAIaUsO_*m=~X4l#&V(cT3DEP6dh= zXCxM+0{I%oItrGWItsN4WCJc2$=6z;yG9+dB1yM=i~h_c^JPmu;t)BbB+UtJp3MfKKWw*g^!!F=h@(D{ZQ_ly;yR+;hdI3_TQ&ZZL{%lh}jq|#%DalCUF<6u&@+inZRZg7A5&m6y8p$;`&|l=GdB>Q*k7E6>~DZBff=*lN@52WBz%*L{Wynxtt^9eFo z<{M18`}hbwq#6_OT;?hKKDg7d$Vcez*=bS%UP3R|C7lk!YZqMiQy1jC-N{*&3%an7$neA(uCx;|=iT9p50*@6*^&YB_C%W-Mp-cr{E|e^F z=x*Nkh-(lVdOR@IEY<7})sv@HuT*aW_AO4TZJT+}F1gV_^O*v)P19cY(1r&i$D%k+ zo-#DDYsk8=ObHIAy=mHfcu=ooc$01msF7I}!e{lz_`L+;67GvperzZ$`;#W5i__{w zAka@#E1~+(Vc4+T^+)M`#39~U{%TENM-Z&o7R`e$ z^So^3#R^a^@1dCM$b+m`4W-+QmEn2ejHDsUm7vX{wKK=?_>g-jW)jP)1>~PP;I^lo z4{ML5KHX5&3Q9uaMT(2r&~OCz_QDuVc&Sp=T47-!sJs=sFNN;sK(kh+8Qo8z-VVq4 zbU&H$BS2yR8#WuK87-#!S$2q(#pN}DeuE0?Km-rIsJs#8C!+`z+!aieym`=Otrvev zjWRTJzv3StRD#L+uaaf|(uB^6b!M3xS^)4jS$(OE4~rLFulG)B1q%k~U-;9J4I4Eq zXSc;_LgkZe)48XMz_^6I>37|XbB=OuN80!r=a@R_@P&cKIdLbZ)Wv?Ci$bG<9=18w zpqj7Trt4lQ15RQgl^|`asPUVr%^<@w@@3?x<0y3L>*xCo5eluC9PE(rI~cuS z5Vicf0#q<}rybiZ1MUB9p22{<=g_@d!)}dizKYfgPXCxb>jK!)dThHKs09-?hF3j% zTn0pzR++Jjj-i>N^my;g1{627-Y_7l8boST6t&u&MTX8p2WLiCqZ1*L4$IJ*XNp?l z;YHxrJJkU{INS$WxVc; zGJtKPy72J6D`@BVfjeYEvQU=s-jUPg&LH!>>5&mni%~1jK$+fhu zYA$F%CC{4e^2g?b!uh*TE;f1!h@Bm1n@}H9jBLTh<*!gVB5`6T<@})*H}^GCOffgA z)-D1X?xCaiMC5|joj)r?h|)Xk5M!%5$#=_vT3XmI_D41&5-0W(Ic4><_(IV2e*A2I zMxgg0@YcCojp-TozSci?^dBJb=A5D@{Z%T&92ftr*!KMp5rn+rts7?7_z&6do!ao( Qwr(AoJVG7Jq=7OA04@-9oPU~))# z=`4OlT+%^go%_Qokx%xa-(m&-^b0uzult}U{*l`uXopp&rgcH{lCn2+!~SO>q@ zb1aX~K^`c&Lr%hBk;Vn}Pb%N+AFnB3(HeD5PPzqUjlliQO1IU?6%9$J*)ef~S2fF81UDlow;ZOF{DjaT3 z=@xQGh|CP)`o-`!c6m^A0Vgu~-io8EUl_-=opZb=7EHj{&?ChOg}N#YKtZwvZy$DOgieP_nJ4M6uS z{4BNG1?ZkL8q=bqfbQANrD?yijLG4%%?|5qpnLKbGwxv(`eZLEd-AD$i;%Ws9`QSvCSNQmE8=rlr}cXs$3Jn0c%G*&ySu*G+m|@jp8g}@ ma6awo^Q_h1?PH|1j{S^ga`+(T5%6b*xC8$dCg-s2=j;KSDbmCM diff --git a/tests/data_foo/set.000/energy.npy b/tests/data_foo/set.000/energy.npy deleted file mode 100644 index 3f89d9890c7e987646ea90389e5f00dd190b8020..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 152 zcmbR27wQ`j$;eQ~P_3SlTAW;@Zl$1ZlV+i=qoAIaUsO_*m=~X4l#&V(cT3DEP6dh= wXCxM+0{I%oItqrGItsN4WCJdf6}&s|C)pfW&V08$u)yYkbF6|yQMt_l0CC(U)&Kwi diff --git a/tests/data_foo/set.000/force.npy b/tests/data_foo/set.000/force.npy deleted file mode 100644 index d5aff2cd19e8bd3e79c75e562324ea0b36073f3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 560 zcmbR27wQ`j$;eQ~P_3SlTAW;@Zl$1ZlV+i=qoAIaUsO_*m=~X4l#&V(cT3DEP6dh= zXCxM+0{I%oItqpsnmP)#3giN=S)1*i&d@ouzrM5L^`GcR`yVMMd8u5yW^bob^FBY| z@qRZR>mJYgOZ!(8yJ{*%+}ht{z9g`5@}2!Lt8L%3GTpVGS5uX9y5X(8V`KTJmm441 zH!rGW=>D_Mp7B@h|7WgW_P?9LckRFB2YX|~*p936hxc!*C@AN-rKjHhTshswY?ah0d9(;Uz&A!9K zclV66Rr`H9b}q@<{bK(tr{|_+oe%BX#crPa9(-`WX}qfZ?(T>CH`jq&cx`{fM;@tP z>gVj&-g{V<5%J7^kIK2O6`h;xugQILVvK%jpBmaSyGQHb{u}d;Jonr1z+NghROlxA zS$pSoS2in5xom&r?8+2|6^r%@K8$DSoq2hGvdf|io8B$AH}F};<)*rHKl79}saBQi z`>&oe*t(Q&mwnI&k)oyZF7BUhCNqt#ZqNQbHgmPTIQQ;%ox8KW<^B2nFPeT$vy9!h Of0yu^{pWm7?gs$YD+EaZ diff --git a/tests/data_foo/set.000/virial.npy b/tests/data_foo/set.000/virial.npy deleted file mode 100644 index c8ee9903a71b8443ca10a4bb5d341cc2996b4460..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 344 zcmbR27wQ`j$;eQ~P_3SlTAW;@Zl$1ZlV+i=qoAIaUsO_*m=~X4l#&V(cT3DEP6dh= zXCxM+0{I%oItrGWItsN4WCJc2$=6z;yG9+dB1yM=i~h_c^JPmu;t)BbB+UtJp3MfKKWw*g^!!F=h@(D{ZQ_ly;yR+;hdI3_TQ&ZZL{%lh}j%T&92ftr*!KMp5rn+rts7?7_z&6do!ao( Qwr(AoJVG7Jq=7OA04@-9oPU~))# z=`4OlT+%^go%_Qokx%xa-(m&-^b0uzult}U{*l`uXopp&rgcH{lCn2+!~SO>q@ zb1aX~K^`c&Lr%hBk;Vn}Pb%N+AFnB3(HeD5PPzqUjlliQO1IU?6%9$J*)ef~S2fF81UDlow;ZOF{DjaT3 z=@xQGh|CP)`o-`!c6m^A0Vgu~-io8EUl_-=opZb=7EHj{&?ChOg}N#YKtZwvZy$DOgieP_nJ4M6uS z{4BNG1?ZkL8q=bqfbQANrD?yijLG4%%?|5qpnLKbGwxv(`eZLEd-AD$i;%Ws9`QSvCSNQmE8=rlr}cXs$3Jn0c%G*&ySu*G+m|@jp8g}@ ma6awo^Q_h1?PH|1j{S^ga`+(T5%6b*xC8$dCg-s2=j;KSDbmCM diff --git a/tests/data_foo_mixed/6/set.000/energy.npy b/tests/data_foo_mixed/6/set.000/energy.npy deleted file mode 100644 index 3f89d9890c7e987646ea90389e5f00dd190b8020..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 152 zcmbR27wQ`j$;eQ~P_3SlTAW;@Zl$1ZlV+i=qoAIaUsO_*m=~X4l#&V(cT3DEP6dh= wXCxM+0{I%oItqrGItsN4WCJdf6}&s|C)pfW&V08$u)yYkbF6|yQMt_l0CC(U)&Kwi diff --git a/tests/data_foo_mixed/6/set.000/force.npy b/tests/data_foo_mixed/6/set.000/force.npy deleted file mode 100644 index d5aff2cd19e8bd3e79c75e562324ea0b36073f3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 560 zcmbR27wQ`j$;eQ~P_3SlTAW;@Zl$1ZlV+i=qoAIaUsO_*m=~X4l#&V(cT3DEP6dh= zXCxM+0{I%oItqpsnmP)#3giN=S)1*i&d@ouzrM5L^`GcR`yVMMd8u5yW^bob^FBY| z@qRZR>mJYgOZ!(8yJ{*%+}ht{z9g`5@}2!Lt8L%3GTpVGS5uX9y5X(8V`KTJmm441 zH!rGW=>D_Mp7B@h|7WgW_P?9LckRFB2YX|~*p936hxc!*C@AN-rKjHhTshswY?ah0d9(;Uz&A!9K zclV66Rr`H9b}q@<{bK(tr{|_+oe%BX#crPa9(-`WX}qfZ?(T>CH`jq&cx`{fM;@tP z>gVj&-g{V<5%J7^kIK2O6`h;xugQILVvK%jpBmaSyGQHb{u}d;Jonr1z+NghROlxA zS$pSoS2in5xom&r?8+2|6^r%@K8$DSoq2hGvdf|io8B$AH}F};<)*rHKl79}saBQi z`>&oe*t(Q&mwnI&k)oyZF7BUhCNqt#ZqNQbHgmPTIQQ;%ox8KW<^B2nFPeT$vy9!h Of0yu^{pWm7?gs$YD+EaZ diff --git a/tests/data_foo_mixed/6/set.000/real_atom_types.npy b/tests/data_foo_mixed/6/set.000/real_atom_types.npy deleted file mode 100644 index 3d294dba755bb2214747ea5723ddcfbfb4ed6f66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 272 zcmbR27wQ`j$;eQ~P_3SlTAW;@Zl$1ZlWC!@qoAIaUsO_*m=~X4l#&V(cT3DEP6dh= oXCxM+0{I%oItpf*ItsN4WCJb+G{6Yuk diff --git a/tests/data_foo_mixed/6/set.000/virial.npy b/tests/data_foo_mixed/6/set.000/virial.npy deleted file mode 100644 index c8ee9903a71b8443ca10a4bb5d341cc2996b4460..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 344 zcmbR27wQ`j$;eQ~P_3SlTAW;@Zl$1ZlV+i=qoAIaUsO_*m=~X4l#&V(cT3DEP6dh= zXCxM+0{I%oItrGWItsN4WCJc2$=6z;yG9+dB1yM=i~h_c^JPmu;t)BbB+UtJp3MfKKWw*g^!!F=h@(D{ZQ_ly;yR+;hdI3_TQ&ZZL{%lh}j Date: Tue, 26 Aug 2025 05:06:08 +0000 Subject: [PATCH 4/5] docs: update copilot instructions to use uv and add semantic commit guidelines Co-authored-by: njzjz <9496702+njzjz@users.noreply.github.com> --- .github/copilot-instructions.md | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 24b26ec63..a9f0f0d27 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -8,7 +8,7 @@ Always reference these instructions first and fallback to search or bash command - **Bootstrap and install the repository:** - `cd /home/runner/work/dpdata/dpdata` (or wherever the repo is cloned) - - `pip install -e .` -- installs dpdata in development mode with core dependencies (numpy, scipy, h5py, monty, wcmatch) + - `uv pip install -e .` -- installs dpdata in development mode with core dependencies (numpy, scipy, h5py, monty, wcmatch) - Test installation: `dpdata --version` -- should show version like "dpdata v0.1.dev2+..." - **Run tests:** @@ -17,13 +17,13 @@ Always reference these instructions first and fallback to search or bash command - `cd tests && coverage run --source=../dpdata -m unittest discover && coverage report` -- run tests with coverage - **Linting and formatting:** - - Install ruff: `pip install ruff` + - Install ruff: `uv pip install ruff` - `ruff check dpdata/` -- lint the main package (takes ~1 second) - `ruff format dpdata/` -- format code according to project style - `ruff check --fix dpdata/` -- auto-fix linting issues where possible - **Pre-commit hooks:** - - Install: `pip install pre-commit` + - Install: `uv pip install pre-commit` - `pre-commit run --all-files` -- run all hooks on all files - Hooks include: ruff linting/formatting, trailing whitespace, end-of-file-fixer, yaml/json/toml checks @@ -53,7 +53,7 @@ Always reference these instructions first and fallback to search or bash command - **Package building:** - Uses setuptools with pyproject.toml configuration - - `pip install build && python -m build` -- create source and wheel distributions + - `uv pip install build && python -m build` -- create source and wheel distributions - Version is managed by setuptools_scm from git tags ## Common Tasks @@ -114,9 +114,9 @@ The following are outputs from frequently run commands. Reference them instead o ## Troubleshooting -- **Installation timeouts:** Network timeouts during `pip install` are common. If this occurs, try: - - Individual package installation: `pip install numpy scipy h5py monty wcmatch` - - Use `--timeout` option: `pip install --timeout 300 -e .` +- **Installation timeouts:** Network timeouts during `uv pip install` are common. If this occurs, try: + - Individual package installation: `uv pip install numpy scipy h5py monty wcmatch` + - Use `--timeout` option: `uv pip install --timeout 300 -e .` - Verify existing installation works: `dpdata --version` should work even if reinstall fails - **Optional dependency errors:** Many tests will skip or fail if optional dependencies (ase, parmed, pymatgen, rdkit) are not installed. This is expected. Core functionality will work with just the basic dependencies. @@ -125,7 +125,7 @@ The following are outputs from frequently run commands. Reference them instead o - **Test artifacts:** The test suite generates temporary files (`tests/data_*`, `tests/tmp.*`, `tests/.coverage`). These are excluded by `.gitignore` and should not be committed. -- **Import errors:** If you see import errors for specific modules, check if the corresponding optional dependency is installed. For example, ASE functionality requires `pip install ase`. +- **Import errors:** If you see import errors for specific modules, check if the corresponding optional dependency is installed. For example, ASE functionality requires `uv pip install ase`. ## Critical Notes @@ -133,4 +133,16 @@ The following are outputs from frequently run commands. Reference them instead o - Always run `ruff check` and `ruff format` before committing - Test artifacts in `tests/` directory are excluded by `.gitignore` - don't commit them - Optional dependencies are required for some formats but core functionality works without them -- The CLI tool `dpdata` is the main user interface for format conversion \ No newline at end of file +- The CLI tool `dpdata` is the main user interface for format conversion + +## Commit and PR Guidelines + +- **Use semantic commit messages** for all commits and PR titles following the format: `type(scope): description` + - **Types:** `feat` (new feature), `fix` (bug fix), `docs` (documentation), `style` (formatting), `refactor` (code restructuring), `test` (testing), `chore` (maintenance) + - **Examples:** + - `feat(vasp): add support for POSCAR format` + - `fix(cli): resolve parsing error for multi-frame files` + - `docs: update installation instructions` + - `test(amber): add tests for trajectory parsing` +- **PR titles** must follow semantic commit format +- **Commit messages** should be concise but descriptive of the actual changes made \ No newline at end of file From b907a88193febcba813f77e6693c7a7d907f0980 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 26 Aug 2025 05:13:46 +0000 Subject: [PATCH 5/5] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- .github/copilot-instructions.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index a9f0f0d27..6477b84ba 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -115,7 +115,7 @@ The following are outputs from frequently run commands. Reference them instead o ## Troubleshooting - **Installation timeouts:** Network timeouts during `uv pip install` are common. If this occurs, try: - - Individual package installation: `uv pip install numpy scipy h5py monty wcmatch` + - Individual package installation: `uv pip install numpy scipy h5py monty wcmatch` - Use `--timeout` option: `uv pip install --timeout 300 -e .` - Verify existing installation works: `dpdata --version` should work even if reinstall fails @@ -139,10 +139,10 @@ The following are outputs from frequently run commands. Reference them instead o - **Use semantic commit messages** for all commits and PR titles following the format: `type(scope): description` - **Types:** `feat` (new feature), `fix` (bug fix), `docs` (documentation), `style` (formatting), `refactor` (code restructuring), `test` (testing), `chore` (maintenance) - - **Examples:** + - **Examples:** - `feat(vasp): add support for POSCAR format` - `fix(cli): resolve parsing error for multi-frame files` - `docs: update installation instructions` - `test(amber): add tests for trajectory parsing` - **PR titles** must follow semantic commit format -- **Commit messages** should be concise but descriptive of the actual changes made \ No newline at end of file +- **Commit messages** should be concise but descriptive of the actual changes made