From 726b66aca1ba56a690264501e75272258211dbad Mon Sep 17 00:00:00 2001 From: David Stansby Date: Wed, 23 Aug 2023 14:27:14 +0100 Subject: [PATCH 1/7] Explcitly check dimensions in slice tests --- src/napari_matplotlib/tests/conftest.py | 4 +++- src/napari_matplotlib/tests/test_slice.py | 8 ++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/napari_matplotlib/tests/conftest.py b/src/napari_matplotlib/tests/conftest.py index 6b2a813f..4d07c706 100644 --- a/src/napari_matplotlib/tests/conftest.py +++ b/src/napari_matplotlib/tests/conftest.py @@ -1,7 +1,9 @@ import os from pathlib import Path +from typing import Any, Dict, Tuple import numpy as np +import numpy.typing as npt import pytest from skimage import data @@ -18,7 +20,7 @@ def image_data(request): @pytest.fixture -def astronaut_data(): +def astronaut_data() -> Tuple[npt.NDArray[Any], Dict[Any, Any]]: return data.astronaut(), {"rgb": True} diff --git a/src/napari_matplotlib/tests/test_slice.py b/src/napari_matplotlib/tests/test_slice.py index 412e71c3..fa25c3d4 100644 --- a/src/napari_matplotlib/tests/test_slice.py +++ b/src/napari_matplotlib/tests/test_slice.py @@ -9,7 +9,11 @@ def test_slice_3D(make_napari_viewer, brain_data): viewer = make_napari_viewer() viewer.theme = "light" + + data = brain_data[0] + assert data.ndim == 3 viewer.add_image(brain_data[0], **brain_data[1]) + axis = viewer.dims.last_used slice_no = brain_data[0].shape[0] - 1 viewer.dims.set_current_step(axis, slice_no) @@ -23,7 +27,11 @@ def test_slice_3D(make_napari_viewer, brain_data): def test_slice_2D(make_napari_viewer, astronaut_data): viewer = make_napari_viewer() viewer.theme = "light" + + data = astronaut_data[0] + assert data.ndim == 2 viewer.add_image(astronaut_data[0], **astronaut_data[1]) + fig = SliceWidget(viewer).figure # Need to return a copy, as original figure is too eagerley garbage # collected by the widget From 8ac1cd2c68118123017135622f54bc443ea032b8 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Wed, 23 Aug 2023 14:47:42 +0100 Subject: [PATCH 2/7] Fix data dimensions --- src/napari_matplotlib/tests/test_slice.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/napari_matplotlib/tests/test_slice.py b/src/napari_matplotlib/tests/test_slice.py index fa25c3d4..0111e185 100644 --- a/src/napari_matplotlib/tests/test_slice.py +++ b/src/napari_matplotlib/tests/test_slice.py @@ -11,11 +11,11 @@ def test_slice_3D(make_napari_viewer, brain_data): viewer.theme = "light" data = brain_data[0] - assert data.ndim == 3 - viewer.add_image(brain_data[0], **brain_data[1]) + assert data.ndim == 3, data.shape + viewer.add_image(data, **brain_data[1]) axis = viewer.dims.last_used - slice_no = brain_data[0].shape[0] - 1 + slice_no = data.shape[0] - 1 viewer.dims.set_current_step(axis, slice_no) fig = SliceWidget(viewer).figure # Need to return a copy, as original figure is too eagerley garbage @@ -28,9 +28,10 @@ def test_slice_2D(make_napari_viewer, astronaut_data): viewer = make_napari_viewer() viewer.theme = "light" - data = astronaut_data[0] - assert data.ndim == 2 - viewer.add_image(astronaut_data[0], **astronaut_data[1]) + # Take first RGB channel + data = astronaut_data[0][:, :, 0] + assert data.ndim == 2, data.shape + viewer.add_image(data, **astronaut_data[1]) fig = SliceWidget(viewer).figure # Need to return a copy, as original figure is too eagerley garbage From 2b026ec08cc2bf9bfa5acfb4305d816316bef1bd Mon Sep 17 00:00:00 2001 From: David Stansby Date: Wed, 23 Aug 2023 14:50:26 +0100 Subject: [PATCH 3/7] Update 3D slice test image --- .../tests/baseline/test_slice_3D.png | Bin 14698 -> 14356 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/src/napari_matplotlib/tests/baseline/test_slice_3D.png b/src/napari_matplotlib/tests/baseline/test_slice_3D.png index 43c8c3b6c0b276f89860ef1b630fafdd219070b9..c30211dab12d3c276a1427990fc86c01b2dff46a 100644 GIT binary patch literal 14356 zcmeHuXINC(vi1fB8Ak;X$x%>55fGImaTG*H0TCrgQd&SH*%F!z>Wq?ML`5VDDk@1b zlG@O8gJhAMw3{TUZBjR>xwUc5jOX5S?mgd+?>_hYp8LaRnB8lyU2CnXx2oQ%6?WQC zf6GroKOqRR<-~E_GYG;afgr5rKW>0054~?(h5x8|>Y00*xI1{_E?%=o3@&x5%D=4`BIY8e1nxn!V>)~LSWaHK279I$~brJo? z@=QC^2|-k@pV0mJtWVNZzpu~T;i|7R+v7h@Y$|Yio+jfaBjOzMDV%lNKI-#g)0P(` zw`qTRV7_~M$$8hDl5<(b=d%`y+=}(s`_5Z!jW%WHb>jWmQty5NJL`#&)uTLhLxQ!N zXHS(hkCvBhrf)uotMt7S;5+U3bYEQEB~}DU`=PvO;Rgf>X*wDL!tIjMfxqu?OCW@o z7vI@+y}X#Cxdl1Q!osR!eD~hHnldcqyuT1qgk^oq4wVY${cm43hRS0|SFTe`*!&5m%s$q$G2p z6kpSi8x$Q}oyK8ClX1~Tf#W7o&1!CaWyFaiesg2o%aeshks@jbHgJiF)W<8tIJG^k z5q7WS9$Xnwq4*Cj+k~yfAT2^a{HU}0D}xe4+HqTC+q>IbF_|fTdza``ac*v5WtUJI zg+xN-Qm0mWU_!Fb7w=Ve?b*)8!Ra!inulllMG792URszER;Xs!#r4AGk-xsu(xdNgKgmErbW32 zWGHG$N|xiOVuNc;dSXA`eXzQbEG21I8@of%{{3B_FHhp_Xyh8-#vSS~aIdT^CCQ^H ztf!~P=j$7eSw9V=Co{Yw1wp>}FMY|Bl0=1Z_wIdkTTEzpc({=$?mwAdHuGMV0!JJA z7FO^;h6xUc7iApcUXVH{LE=?)ha~jK<9Ib#*Z@X(NvY z58pGhYj~iTe{J}^fV#KKsfUO5pt}Y_q1#dR26-mhfzloeKuTJa4 zK2u9e;rjb>5j&3FIuso^VL2EM+x$Qs=N2iTm|nNqtV)UWnQPUb^<&EBmPy`MuoY7o z@WI4Ie3X)OtC%YJYx2$z#FJHgS`^A z#)tP9BG%=eP7A7u+BUj`e3Dr2WJv&KL&$;wI>8o4QTb{H**xD)kHWaMMVRbtyL`TI znM+uCAD_IHz}m{FwlE2`IiJtJ(ZEi2YLP-%*zD@=>`f@)SQw%-_Xx zsz*r-juO7WPkxpW9S(+3+U+5NC2(Vxr%Fl2`l7t(Iy0O*bEBxct}S#slA=@w1WYmw zqxP6QB`kw>Jy3DC=?h+4#r9!IHPj$_#hKMSB<)L9E3?1X=|+mY zGD-?uP|IHy^S^s72-#kD&&);;zOKJA>8KsyoL8m1VY9$il8DDCt7~<;@~PF!%CD$` zj!E48tzKUEImv58 zFn^U(ozSW;E}F1(s?V!4Ip1%7oH4AB7nAHg@JeX}oJWyI7|YBPg`gcHjfwoFYtz9( zwrcj>1@_ptByBMaF)}Pd;nm|I9(Dxj!4o1{QUe#dyMpJ&h>Xxs0oAJ)CQAo7$TX68 z#Q6C59fPe1GN!tX?Ggyynp0p|NOSA2AU!omB*W&M2(&{G9a5Ztg!)vGNkghOzHZ`` zdr#3Gn+Mw3l9KnUR=u4ZI1t2BCXD4;gQ9rEu9JKuuIjZ_pZRt($~`kCH-8{?t!8Gp zUP?0E0b_7t_eL1JIZWZ*aw{e}tn_|0Z)v}ub02Q7C^WPS4uDLEGYn503{)fTEG{n2 z_nserHfbtoZ$Cf*F?$M6J=Id~aETlUT+-Fk!wwwTKbnz*B_?3sZrn}G%BvQt@~20C zes`Nx+-b$b&3*Lt^j(HyN3M-%{MuN7G_|1j!W?s%#F9Z*c>mZb(V;oPIZAzx^Prjq zy{WzjXV_6iNz`<7Ye-Np?eHOS91&-+We zn&?~ON}9fXOt@q@rLm*T;oU6;u@lc{Eh`(bpdqIfGxMn-fkuu{AgYa~2wRu$bkDmY zK!w@o#<~kt4?gafQBWwIPClz|y?ic9Y6QQvHG>j(MX%MkGdZVlAvw;A+IMYr#Ws|H zEcOnjgn_3}Bt{DI1TN1-EzXYC6gjn#L)f??pPR(U_QbIj+0V~&Cp4(z-@iZauZ*-P z?%YtDcKv30<;nQ6sSeAG^76x|-^onzJ|D0`*}Z*=%o9?QTg^;f`)Mm8lR|jdg{_S( zBa^iE(9R+~_irK3^I~Mk3699v$8e^c*BsME^iknMbEW*^OdZ)T&z$kTAuU#aZNlu{ zg=V^a!YOH!Yz|9XYtaZk`Ou3M)Gv~|()yQ~bg63QeCYgyROL%?B-vOhdtaHGZkN^ap3H9rJA0rFkbd>ueEx+uCuuju zZO)JTvffQXSVG7rH^*{Jc6GbB69hM${zb(!vdKPNJS?HG!q*0IEar0uswp^f#fQj5lk>XwhUAb*B_jA6j*ZjTY-7L~zm5Sf@!GZL9#Km+6Y1ym#yA`KERj^1f`9y1m zW3!|IcbeCaTam+YFk7RcKz3ekwB9EE?eo6dY}uX143A@t?dq)>dky!R(^YhT@C}sMBZT*s^zCgXI^) zKeU8H>!s}q`Jpq#Or>utuHVZM4PZBL1qCMsEeT@DCwAZS`fUK&_7M?d-F){q|(^>3pp2YJdy z*ssTsyX*v@iRENrjYVfV3@@_6g1*4RKL>QJ*!!rg2_Rj{fKS%}sQ&Ze|8zc~^o(@W zLKHWGARz9C9XiN1*!1Hd(s2-5LKK}J#PdWY{r3Y}wu%l9ql-N8oy@QK_Wg^m|CjUs zcMmu_RQ{P9As@axop^tiYru=Hsd%|1?W{C=OAmT7QjQ@atF0NBwbo@7!TL)FXc_hL z5%enemki|aA@qc51tlO34gXzAUrEp(Vo1!pTU!*JK0N-odqc~^^%?S+vAcFWwD^KM*?bB&TbadP;FFWDJoxD3N2WNjt(-Cpy}@o z>iB*^HqGQ&Ud-5s;bdEM^D}E$4q%9L&z?OC-N+Mt+(Qd-y@8%sk&MoZtSn52?V1pV zQ&j@ehs1>>+cH`=NUa%7_%eFD)po&}B;(c)V09^T3?9QI+u4XUdV*Mec z$$=R8MbU%UAdT_z@>0A;uu*iOYohVPPqAOxGW8)yrL-I+xy@H|L=I?2YttT&wHA&l z8*!!;qo$kq?@hO)oZWf&{XIooQFki$QH|NilSF#m?CPs_&y#(@27_X$+8!nW!SM%?5)tSVp5Adh{hF_cU50O?|*2?Y-n1O2ki^Cbm?gVKugf|Ty>vk=krn+uhSSvj4AV=lJlSeBk? z=1F_JZu*Kk_bZuxAKTk&I;)rNF}~i`7I94RbJpr0;no=j8f?%^{mbRQKBexivPJ7aT_mT3rGf>7i1Vht{V_ zH4neP7QkMDZ#9 z)4U!d4PmA6Rif%sl^zsEfqlKCq+P|-(s00QwqsOrQmW4xG^w~8_k)ZQuy2kg=aimz zZ@f9*-kyK?^Nn;ZBM5Xh>YoY?4b|>n&XlIm2mIad#>bO5=)HN*;*iVE-`2Ld7IJvO zwfWCnq|~*!Ou&Z-u1WfJAIS8{pKptW#~CqoH;Wv4_Hp(HnLX==v^h33R3Y$7eLj#d zgd*)VHRepbJ|&RqZ<`d%WXJZ=NPj8BwGGGh^z;Ho4rUS@wLE^=Gs@N?je0_TvJ!yF zI%$D6^+%oHZ0S3RC>U>vADCQ_ID|h#O*rH+u$Tpl2|@mc>nRaq8%Yr8Uyt03D+Y? zPR}dwi@`9<8`oE&Eb){8FqJ5%64~Uf>k3XD` zW0s?i{42&Cb9^8OAAqE z{8d7wgWi_F6IozENFr#q#e2v;fPh|q!8qes%`@W+q2S=Lu6$G&#?WrVXy@El(z%cY z?@Ex+dA<>p)5wO(cHmNNtg7c^m(R$T%#7Sz`5XuwUOYzXE)6WQBQA+KHf(oXZ%^Su z4HA`WfPPCi%d=^8O9cj^@9M0av5n2Zr2xBj!m}3-&oWN2{IYY8j^x0`*jw=<>><(r z$orG6gMP<_tjwmm>p~baH`XdeTlmh(JrZ|wv|yeL^KTiq%=qlk zifK7enhuyv{PK|&g$^|j6fx-$)VDeu=WGY(PU*iR<+8DaxW>|rG67j2jgPjRZy*m={EySIJ@b|vFwGjT*;s}~m_dvMlg`TWQ z>mBvg$?+^Z;48x*z&4+!24`yQ3hCH|9n&#*H>RCK&9Iq|ZD_iJ8eKXNa1hPb&opwRwXfS}6Jk+(e5-L;pE-*V7+_}l_YLfa?aKUXN^{Zpepc?eluu=5o%`J`_z}E=wW+S9NQ4^ z#buP}&__q5rmN^x%au!42sDzuOV{b8SFA<$z-|LooTIs^=OF>H05)WW7DFd2j@oVo z`rlb((7aIbit_~7c5TTFEi){^hbEhwAlfg#JGkxW?Yk<1)XreLIjZ*a+BOcEYN_Z@ z)sY8JG5oe7ia0kyy@LL!L_T9{(bfvOdTC>-xT2#WVNa&++@!_QB5Tn(V7z+{N{AnH zI2Ds{&_P)+3;gl#QVZe0t63C{?tug;Ve(C8YS7^(ZEBw!^9?Y85u3D@yQMJ`ke0N* zWk*wqjN7R3&n*w?i{PvX_%+eiQmQ(J-p500jXAc@T1fHoY3C+RBwRKsmCDl`GFd*6 zi>;&M2VGX;JFWR47{R`A)D~8sR(&kPgIqS+JFxn~!g6`Q{2hr`&d+fdGS;^ZZ|zpv z?~U!ccw0qyEp=@%H8hmaiyXc=gTuvlv{$Kge8u|u&Mvbd2Cnl_KeG6M$%nYcb>6z3 zmB+L=KZ{)EFDYV&_~~_r8XIfuZMkF??3N!97gR-W%9(#tT`?g^%&eTbmlwCaJ#~c@ zDLDmc|D%hE?IVslSDan(tReTo{rJ`vv)3=kBA21q7>lxsy~kkKj?Vh8JvZ19Il!Em zPn%(C;qQNb1NroNn$HD+^y?C^abHO1*9}I@py;NM?6u@jp^opq2j zdoZ%U-icjbl}x0i4x6TR0_MAtB1rwaP>$!md5m(CrbP)Q*&*&EmN-uytT~>oBGA9p8*xcer z&i_|m`156So8F?rLfr`Y4cNNBL_KTch6)Su_R#b6x2U*x|FO6yEMG!MR|NjK*5m`< zzD@||>cLrPxK^`gRWqv;kqZ;3oXUeY+P~VOYl$m!`UJI&Fx%DfTjo%6$u_UnKns=i=yRE)La-tnOYFY+pfNk zr$DSN|9KASNog#-0Lq9go>)<-xXG!d%6XXaNg6{EQ{QE{*x*RUl@5yOi?6nxY1oox zuzoC^WM>_SPcX}(B{9X$oln)oLzJ7*<@WL6?Q66?0cCPFYz4DT@9ZFKQ1qP{Dw``1uUVRJr`=Ns z-UB7T=OY{~BVFhr)lUpg5~IY$H4K^{b&n;Uh)q*{&uL!$kPTV<*VjCJhLg4Us!$3 zVb}8d=lp=088mOKT_<`LC)9R^?0s0iS=aC|cfu*%z$%m)gd%Zl=B+|eFVz3dpyNJn754H%&7&ICSs~WP zB^?k))yDs0)&E!Q=uea1gu)@N1CUX-!n+B;!9NDoe}xjzy5;``9{)!o{bwlD{mrbu ziSvh9{~c0{0|pv`ibw>r{*Z2+2*bIxu&_Q2XL0@uV9;igA5fpz}%QgTS{@qZNMwJ1ykqJQ! zM}UR(bO;#z9~ij)_bYe@#lY?VaVUa<$^NiGW!nJSZ)NU1fwZ|cBT}L}6JmfVVYJaB z$-C!Eew(2>%4fSqqn~&Hg}f=bQo?Mrwm5|p6Z82UE@D{rJ}DX3$DJ84(uSS#>a5AF z;8Xy9qUY`{IdfE*pkxb$=U*93zYRt~j-wnciX{-%Qx(gg*+j+yPJUne3exi!h7W8M zh4BnmkB`rc8;Q3#MTOpZckkk>S~x!*$9j2U9ixjFl5?k|d1TG9Lm^8t04j6p#=2~L z9JO;_xCp)Ocu}6{2M-{~>tSDCBk+)&HkRAXtb%;e-W6%1lq4WIdoOqTpv%0 zuV&PYwO8P*JX>pwr`6@wcQj4TO~kyy+cki;DHTOTVsj8PLO}I$i>dh4g``(#dG*ky zdtv8zGG1KyP}0bk76r%ok24~a4^_jvc6|IuFsoj9f|jLLhTh9!;;p@%TG_<*`>m-m z332KA%_(|`J9R8Epber1z^*v#-rQkkMoRx}Q}~ib7#NBf|KQ?6sog-OFI1ye_8*IO zVHQ*($rir8gr^4F321H@0I<*w{SJi=jp0W*)ef2FS%`9JTn&!vg^2a&t^^Ss%X2nj z&^6#M&IUe6Kw{Hc^?pf7=z%cRSm?@jDBZL*t*}=^#|kiAErn2Gpo7qDHl@1*mnbI|0;)AlCU)`~T8-nBtppz?Qs4$NLD{ z{P86IGyAtke@^iq?eL#j47!>>Wl@famao3UsuQtTvhj2XXfR-^y?u^4Kg5}+tU^s8 zT|w;MO#M$OVVKPgeq;u@&*6mC$L13yGDukB)KNa0+Dql!m-F)29 z8kZgDXy31%XSWuRdQb3MOTJ`mD$Hews~kn;5IJ2cvMmRzIQsXC18Q23x_VVCwood2Ia_s z>blv~fK)$S&jBw|56-ls%Hs;-RrTl56+4+LAuc^-ifF6bAY-ZXVZXB9+A1Zab(w$m z%Vo^5=q_0Z9a`4gF*=Izb7UN|;_}6bri^0Gjz6Ya@B1LLk3xkw#z0sFilFZy=y7ny z`F*M3r+hRq>K+&7?&#jgAO|Jenh&M%$8-sI_n2hhr~@_0 zTM(q>kt=pn$6bszpL_M91KAb7_D)pM=j*4B($F93sUcSmdV!<~Snc72j>uES@<#^C zuo$agNMWxpi^KVwlD_tPN3N>Oxy1*X=O`<)O$L=y51sQM3)EL;G8acv zV^Y^v9BDH**juyA@*eEJcqA!^n9y42*nGwyp7k7HpKIxW(5&qPafRxyN1(bbJ(@Kr zcfLp_XsJz>vItfE@bGX|#;2Qw213i>kv^5F>UC)wRn~X|fr*2r zrQOiVH`nEqnf$P?lQxiF9p18$h-2l#qY2Q+~`&jv)VjTRfT)t*&)zv*sLPH)c)cew145lMZLRrKnE8c znC?s-YAFQZs`RA73?TBbOM;GsrSW-euWKn$n@Rg+1>RrpVxw10_c&ATTL$sy2M$T0 zeCLDtPCOB(P`Mwv0qw|y7iR*mxcq#wQ&Td%px{9DOnaWP;6!`Y;-)+1^b%@mY2UVH z?X`eNac!+zT!V7=^UTF?16ci}nFJ%~d$Q)Qm_Do_DMA%BKG~`DR&lWP`?Tdc8wU|> z^lQ}@3(E@{uBSaw2v&>MTFT%yzCqC{j2dZ9O;sEEbn^gyb;@0sr0miatL8R-w?Qy7 zwIqkjNSKCSTgE3G<| zIK4MuORW@_wg@yyV4?d`CE9DELr!bubH=*A@33@toiJ%3p3Sr5hm@m{*qLL=?=hmm z3!Sl-=Emm-HXRGTJTnALmZQd8%h4xE((Gs-FbmrTm-(O=t(oH@0ku15)%2=7tP7f4 zd5#$xbS<ubu=+h>GIN<`i>iNe-BMfU*1X;fbRAKqWbdb^GHd69Z`|3g%eG&w5V` zXhjMsy{N<69n;+`dic<-se+UH{HBVDiX?wh+lONJPYal|JEZ{GjD1+A)I`*e<@irBpQ- zS|#kB8QA^u;!zQ`=X;}*&ho}-dtR~%T8v2tqOLA5+kg39-6gx>Z~)4|YVOZI)KdkW z)z>lAnDh9cz!m7}j8?G;)(pZePbq>PQMA`Q)}^YpWxzzBaG&^K$7cQ$$_a;>>Vso-JNRR@T`Mf1OS0ZRhO;2k>ubdr1vi;Yv6a z*bsEhyU%MhnMTL2Y37!Xk3W0nGin*`<&H;7-~-SYs5<mAmLJ8;IEi!sfwi+ zS!Cb`qC-RFt;-1)Z;OkiF0YJAr5_@#Dsvo%Zg9`3^W83$1vAO{QA$d^OWTWBGLA)s zL!m*5$!y8TU{)9#p|vPUq|?g7zzSOvlQGg?JbgZ4h5m>*_#5XVY;x(Lso0Y#>C-JjN9_F91^RkSJSmB)y3v;}>^ z5%wK`C`i$7ep-~@+7k;EM*UwYRR?Q}7hb83sNYJ)iSa={Q*>S2Zqk$ZRhf>wyy(1u z#go6+UHau3s^*&o_V0&o=>eC@i!PrkGB1oh@a_t_-Bsjdg4Sp^Z1$mhT7DS3ZC@{J zL~5;8%EruK@%vEHm7yTcwqbK9udJ!AbexkP9%odywA8{x7YaY~fNyjYDV(0F2XLcA z*fIjLA(N8FuY^N7a+=~AO^6{t?iYo-vN+tN4{7W?Q9T9r3hy;|X{P$TDJnqht zs@xwOM49rmf`)2gV+#vG)KaW*{Yt38zB#F&^r{)!ZS6k4{f#N_x%K9TE#Xroz4A8i z&yR+N^4s|2*Bz#oEQ{rXZJ8HcHjZ0v4F3FE=-2s2QYgUzS08wL=X-Op;77%kl$6#9 z8>n}0i?{K%m@KH5H*mvM;;bw!m#su*MNQtBJ};i=xHnWbID!a*%xKkHlit^+T7snz zA1F^X=hFw43DBI>QomIAfU0${kWR6pKsa?Idt;2 zmb8QRs^to=fFp>8G?PQ*>IKRJFL!YWamng~Ow)!$6$OCM2)m)$AunttPD9SZpA3qfbK~g@ia0e4x)e!ZMEySaHY07Rro*$5s!-S`ONpzM(~?_A&`--D z=JSa!<$4J@`dg1c8{<81jOK#*zCeE`U0t{zqU1-P7Tq08=Apseg__0DWMSxt;Dt=B+4JI{s)r^91#jh@)&FiF`Ql|2ii7Oa_jT9O65E?)T(59$XW$jhOyGuCcV3 zS2=iTe0{xY;HEuO%cZBQI-s6*KYKNtR~8ha{fXS0y13>r=xd}^)wTe@C@I5<}W2sl8r}Ngd1(Pm}~IM z6XOUNTix#Kr#BEQzn9G;w41FS0t|iiY^+C#Q)?_um0mfU5xmAU zV4i}wb7kSaOnIUSv%&+Vm?G8&+_tO zpmSeQ+Tid3Lsc4q7*BDz(BE4PcZqg07a9(#xu?!|QKH1v2h{JwRy|a5Mz;!W&NQMk z_t^Lji|1cye}Qhz+1?~YDY7QSX zt_li7dq6K%Ol~u?_VR+85XB20k;@#gCSU(Q5-9XGR@rcADG|M~(UGzZnfet9AGN)c znGVq83YbBe-*xi5uQF1!8}jVfc>LNb72ESXQ@8!`2^#&kO_aeb(;7$(q`|2Adra8U zM6Yi6A%rh0CnxHpe6`F5P7#6Bs!xUMD>KbC=hj~RaxX_y3F+C$0z^Uo+=MOZEzANp zT>R!H+hrkWFJ*kp)D~@n8yP-u8N$-v4=G|}g()qdB+wTyYk-~1ClNW;X5kJD1iePl z+)~E~T)~W+=7kOhvQ1k<7G6U!1kMj-4A$?b{gB;g!h&tc26YKlo`@1m7t{Xoax?&iE1^P$#Oey^; zhDmpwQ~Bw#SN!aNcYKF?IeCF}qDpHf=qO)E%F&H>-x?OC2XDy(9~!vZJ}9`B4qne4 zYCL#7_j>*Tle~s%r_i{uZBGWyFde$EeeW^V)-yfUoNO_%OOz^G%O*dD2AOzb?ChGK zyw~?hu4D1d^PZ%e}hZlXp}|C=~BEa(JPra#KW0VWpkz z#1-YTX;WfIeUxBbifSl7zvbwMhc2zEtTmB`&ZZa_If*;<7kh0i)IF9T9HMTK$iu9a zY;|0&7iKCbbFFC_(cM;f1f*#eQr$6jfjCS+SHLJ^zM26`sx=PxP&|i8ehr z-T5Mv@vvHT5aZzkN={=9vEnYn)f0V1&TiA4B5HUZ?zX3zp;J>+DVtQfWSa-xhtJ>& zbGFv;vz1T8j0=TV2YrdsbHxP9))ZB7pXCYZjrl68o;({DVmV2Ty0uBb2X0uEjVlm? z2g`lyT+wWsV%d`AaCNY_Wp&U*N2b28 zX~`)bzxlTlpVBns7pj?D=HKp=it9>?Hsg>Q@^hWZt>ba|a4cOVTGVv7t8&YIdA3h# z(2Ed0(f`_2*tjsOwJzRs&>PnDtZw=JtkvR3eQS~Pkk?d3`f$BqQrIpgf$Eu_{M3{b z{&H$8_C$zY`7tYF?2OoCPTAu5DssWqHjaVS8nFOzCdSx+&2<~m3i9v;M@PphN0`=5 zfd8bvsk?3}-g~K0N@BVz$9b_oaBC?^Lcw>n0lo3nQ(KfFsvloQr2)b(w{hul5STo-+#RWd(VbPn+&7>geoLD{>mJ+#oLm8|U6H zqiz!MhWWNNclL6oxQ;h5GP=Co&RRWNG{mE{wSXt|yEZ$zQ3Vsd_-paJyuP!q^iw7H z?(+E93mX+2)ypMAPU-rjq7d!`ncAoS z!ieSUojt)pL3WAW0{lpTp%Iq|`Nj7Feb1ghe?Ht}mlXah{mxpn6V=UW4qe#`!=Ykx zpYyjTzhdIUW=)b5{o}$qsPjo~#+$Q!g^muVRuhPRg4rcg&nLQa%rEQd)y{vZN>#`6 zfax714S1T%Q)cqRMGu%4Ihm@cfPlsIgy`t#IvgE6NB9fV($gnnFJzg#K3OsUo7f2H z+_n~5Fj9}_PoD}XQrDX6=1Pe?yIDoAOMkpXL|Pq%pByOlR8c8g8+)AFtVlUk@}jWt zv|f%GH>kH=m4W{rZl8(Yb8mckXBqedR&c=V4l6Ff=+!mdvdz^#m*rMUkL&SnpU&mFPj@1Ov1*Ky zM5rK;6XV|RQdgtOYRX*He^Z0Yt>q`00gg8%5Psds6Qt!y&-&V71@q^F;G7rV|R($R9WShp?B>hDd8Tt{iz%`Bj zn;*jrmN%B})vJWDyIwT$nXI#_yp(!gMhP?HIC9Hf#RseDKPZPB7}{xFfB(oru7+sDzz&9pC@tAz zC*5OnqcQPGjfLFTS%K2VA!&Cm58tT@B-qJl-U~)DR=%YOA5W6L;Wz*^ZGy zW9Q&((^3$*sM^p@Gd#mCiCaoLiP7CXHb&e^Eo1z9WzJWYH6hP3GaXLp>FTl|d{I$} z_gkzNIU$4@{W5$o3rz5Ig!JNjwHyYe8=v1uFSndUU={=xGXZK*FR)9wZ+X@^P|mg~ zo}EeHLeQbJcdA2JgoeS49Lu)Wr_l>b&la>9`GjB(3@mZi`wB%$JSKas%N)QfIQA8K zt&K)oHN=Q#Xz#-nzR1fvndraT6C>%Mmt~kQaQygj%l2oNXsV*CZ^{CGO+-NzJ1;D* ze20OTCzMqzqPMpf5DFjUnKJTQP3U2M%Z?8Z(;gqf96NUj#_t!5zi~!Gn;xh4;{r!y zl=jvYVe>5`zZD_#V0|<1BW3|>&f>Eg=3#*T03$1%Q}?wFV3| ziaUM>PkJP4-S-HaK5W!X67^?_iVLf zb-GhsIN(r6CucV+ConyjJG#DBxj&e0aa>7>$+O=@ohyL+r8V6%$)L>Z zl00adOZ7eV+NY>#W9+AHTzud;#VkRrkOOVBd>?tp z+Sxxh-<%$K6#Y5P2>se#46nxomuyR9vRwxM`U&@4Mp1kTIcdych%JuHZJ*5 zZKkL)^a1WP5j3fIwKu5o@!_(UycqW-4yB>K%UI-X30T>0+jo3BAvCKIRK{-Z|DP}Z zpV<$V*G>i%e%}2a(;^EHlORmBn*aRvlA(-DQ=F`1iTkwP2bpaJ-=njOX5(|NShF?p z`m((>)2^BP86rU9V7b*oimD4`wy5U*k-*@bfZ030G&3cSeD^)ZY;K8@Uw?l%*QM$X z`7MJ}1i+afKfjjjB>g4*=wNjoZ|Tk)bKY`alIWxg-FZzMro3>(j6N^pnvROfGI6M~ zm5lq9J_Q_P>ucBXWxE|M@4n5-W9M4u@rGc^T)7m)@C6eP z@}3ji)pCF~9>DuBUjC$L@%%e-eS&8#1gV_0&71Rg2`QnXqCF#+(S3{#H~ew!xB-fb zZZpXIC~zTWzrPPDSddD#-WX|;vr?wgxqQe-e{?ef6FEZ@bjSO6nS8>X9Dfnp!KM6e z$D#p#{^8iHqXDQ=0aZm)^o?+!yy z9pXZ$J)-!zY;E`OsvI$7adAX|gSFv6r=tE0UsK1iw{)x7!X_IU+u+2(9tQwE^|PZwh!{U5N#Yb!iRqO(-%L!x87RuMT&V?89Q*Dmm3XK$6-GLzC`Y$ z+ZKstkc9`f!I(+-au>YNle2#saD@{6Wnhbhy~$>TU*qZMaBko4$9)I$d^!YE!nXZ< z7o++eY@L!ib95v1d()tUU}+D9VBmXJbbXzxirLYu*?3)hgSAoStG zhm>D%kdOGgJ&4}DA3OTgcIVHK;>d4xTZ!Awbc4qI9Ot^t-o@RW(Z&Xy&x; z21QN@v--++FY2?lX0*vwB1PBEr$;7s>Cz>}I^MuDaZ7aeEJ$Bc4e5S?fY6mXe^+`V z=x~a5lH%3oUCA|HUq%0I?;!8iJjE7*_kT6tv{_^2KG2>Cd)wwj7FXNmtEcpgjXAB< zc=sP(?W=^yAq$Iz_|A~(2x z-b19{)^hJZwu1lGO#WxUe}gCO9jXr=mM>*)H3K98mi_~hR_KQJfRaW78ol(#J$MM( zcl01YT(Y7v|KM5K-LEg0@xzkK(dU1Hv`e|EoYBID2b3TS_JTaw3UX9b zJ*cK=%O2B`n_d2;ks(vKnRx_40`DNLU?oo zGx{4s!yk9Nf2#S|vbR92=8`%$cUyL)qO5zK&h7~Vq(O&sg>9STSWw+5RJ1}G)tw$o zIY-D2`Tx341%Wdp7s3W7lzdia*oE}7!W+~mgF-^8zXzr3%-ocw?$HRMO@B6{F} zB{_29P1qS3Ll26a_cp>rG``8ahfDf|8RY#FLpgz|3t&kQi`>~e?fTa)+%!Q<`5bb= zaXtBVHSs;J9N|zbs*P#gSq<5QSnm>S;ueK>|I&Cf{$VDRPRduWv6(})0)n8~KCy9n zo(=C@X@soH2OGbPQ2Ig+3i6u&bth-I5|kS+nVIoW zJtlrvP54gP0h}Zscd(tZT6nM07NMLNJ|s`R(hhpbDA;XK)`-!$?;Lax|(BA&p`yPq%9g!7mFV=KycHVHPXKts&4-Yfz zkYpR0xzCEuh5#VKoA{! zl!UUZ=NuO*s~pD5%C4_YGUW*S9+``kkq|9kwi5TR4P%qMM*XFU303xKQigHMovw}G z?wcQ9sN>;e66E3KRV2luij&{c2J;j$a7hJ^qCmT0SuEXNe0Sw*vi;;)bJUXYWbZ47$6+E+qaSNZ;JnKl;N`Yx%4VNFHN}xM`HWgV zt&Cmi8kMKNIWWE@SK=|tVO1MJ^Y?lBk7{xP{R2^hL3FJTc6D}UhnEl{fa zjSDkGdk-PFHN?}AJm8;H!Tfz71P5P*O~RM|PYyT|b#7lIL``E5H3b9kAXoeU&s)^* zi_FUl45!CR)nMb{Q;_GDFw%fs|0!g)&0uQ__&{a?UPiWQt)=H`)6TE)t#@9(9>F)4>4Pm{>KD1nlD)Z~m(D27Hx@$lkD5Av_+2_8Ns-W|H(wci}S zWpw~W-E-)-Up*$qmGIJ=%Rxm$5fg3W3Aq#^p8RGf|DcbMWlQp-cy5eYA1ZQ!iFDB3 z@gM$ZzIHxp!Pxor5!CVdkeMB#K;klbunQ|V!b076Zm6@Ale<2oe`-46A(m{VvEk8! z8hE5qyu-;YCF+tABV%w8o!fV#)P7SVV+tA@9W7O^gtc^Q4F&DT1%j==bXe>?F<(yf zS9;-%73`Ahy#?5DWgKGC_f-*1xZ)k(VIEqL*T01}NVg<7dWMyIxtj;GdV7QN@;n3R zFgXEbZ1G}c<28x|pQL1=Ii0dA=(PMu?=2e&3w8>{2)988Od%#%jGVUda(ufDHwFuP z-#}A`|M}-DyANVB8~{i=?T~3eG$9XR#@AIL)20;w{^GGnhux201=^(V-FH+=@?kCV zNYX!^`I+`s$!madJolS$UhHO=y&_u2_~o~C+}6kSHQ`h833yPOg#{({zr*mv4jPAR&9s3Q;z&mgIZtMpzmPKn2nHlX*J?ziXczByA5d-WZ*k7a|n(hXg4tyhR z@a0RbWRA!Gd4pmnE-3os^d>w>+ zhlK4xqC$4^4^c0hIU!*oLLbRUd56RW+x#nW&l$f2i>95N&ZmRIUEm#-&{;TEZqI}$ z!3ulRgjPTww@_#pC+O1l=A&38m(s?U*<5G@8RYx8)7s-alA3Ubi9G@pX{a`Zhto}_hpD^v}8uxrKx30!*-;8Cc%W|Uw>)Xo2*Mam97~FQ`5&a^`>?sRwPq?Gd@S4T%j?o~o+_OIIK4V_2qtD!TPcg- zYV!JCsp>`OT0^7kp;wak67-=x2U$i9hr$JQwL+jU_**k`^23+gcjH#={|hAY-u|<@ zJ7iAR`wNbZ`$w>O8lZm3#9(S&cH^Gphp<1m)n|D(Z$>fgc%1p%vggwgRsY0l5d&x* zUp=X(qr-%kU;No^wpUUujO|kUIe;0OVjZA1&fVd33VN>jc=+?#eZfD`@2r`U%(Pm~ zGF+I-%mJQ+Igdj80495art(l)e78%m`Zj|+8)?AT8My`2g{Ke$mHlR{qEQSdvcg4Y z^zey@0Zo0xl?61Phn;Y z`h8ps|K6H^Y6@l1en>Anl4hU1U;$qx2IJD#yPv&y1=hNV4DK>7KvWaxa|JTAe`72E zky(SC$gW-c0c#vK7En%vs!p#_S0JXWh~}QUow~)bzb^-)flgvxGY*jKn@u|?qm{>y zaefG3Hv_EuHpu*rKC-pHHsAk9q<@109|jS!e_N^O%4^W$e})yE^uU180<={CY(HH5 zy6sR!XHNc#7Enq!s_gw5koF9q!M1kiw~Ja6SR^mqwu{&|H4Xb(3U0xsQgQ6yELV6pAeMpl`JGtF1LL)>Kb=7}qW=!tLrHy9eQ!1a%_S#w- zhx8{{{N_kSu216>xkD_FeLRWO8sqX&1PBXy!6W6tyjJsGQ-RL?Id!*kAHn$utiYw~DI}7E@N&Gvmp1G*%ISP=SvZ`mE)T zokC!*YsKrr@GG31b*Xs8PZO(5+J4&S1a`ID8s4skddgY4+Y|99wrp(ET@(9p3{s|WT z&F(1!c&#u4=p#77L1a2y1$#*Ql)QKo)4O)i4-+0sRp*yV!)fV-QWGJE(x8)KZY|zMwHAMP$E8*c$(B~tqp=F+>Qbs z+WWM(HiK-303v?{MH$I?_IM|768ZU4d_F$1R1|hp0V9T{;m579HNg3<(KZpu-?22Pelv$oWsq^ebrU( znR%x@vr`66O^P#htH$qV3`^d=GGW+X*Jpv-SY)jX+RG_b{aiN_TDrl4i9tnr6)cR5 z>4`o@%Tpbh#rbqF;VW*Zx3Vh_7;1szbHJIhCKkXB-Q#nPmKdf?Y0Cn~f?*+V9}dIE zdgf97+4 z+E`l~Pr~zVe5NdXx__iK->w-#N&&jYVFte5aoa(EPvHOymooCZ-MK)b ziO&fr0%9w9&a;xKS&3wF`SRuJR&`$PXwv}IWnfFTZo&atjy04LDtw9I!1t+pX;C$N zc08Wx;ln76m8-c-ji#jObj?txEIq5QV*pOpT%xyjs`&KadO3M`_rm;HhPrpZ?Y623 z2~;5}`qPR4yT!_m0uO0$q9TH{n)cd(7~>oWoT5?k7Y1ki5sgRHaUGe6{fZc-(hgHS z;sG0EHIn91vDkT>N#JGyd4Pbg1BN5x*}Hqg!Py>FTnMIy5C@mbrJy1-m;AU)B; zD2zv;q_rD3rJMnk%W2WWAB05lh@CkaZO-WY!cPbl1Rqsy`Sg1cq%;&v7Ym^ATug}I zMb&F7u%}SFM8g=b$|A^$MJePow57!p!=YBL9b+*vOLOGDA+rc$=TZ?UHum2bGPZ39 zDxF(DS4IRfCvd##`js{gRm`t7s~Z{`UWmJF_*^@j+kUP@UBzwk(-Fm$No^^P>7M+_ z-S-Vhoy2s{0hVSZs^5ipX>qlPekr{iL+;A;Q8B{Ck|GCm+K#OD*jcMc5B8;wW&8il zs-oQ66&Pp$6)32G^DDj8$44Rym6a4zzjd9YFbBo8dg;k03@R$SA}9@_MrB?uV=<}t z4;#Sqb7bp-{>IpHn^vQVU+ZtB>+=N%0@vG;PS$bxUmnY?3n;CkY<6|%+YM4HNH(XP z`nyl8PE&}@T&~NPV!gE$9GYV8I-?xR@gFU1Y4ih-t8F@*BXt8=|_V{&)m z;^G?aHY-TEcE;MB3QP0vCoW3zRr+o$AetL60W&PJ5IGen2x13CjF^F(GM25l{l$fj zr<#{^blR-_fI%%DxYgzYMy%GHNcDL;LAnroV4#!~1bwfp2W?L<(-OB}I{FT6ww^!HmZd|D{fRm^3;ZR*nHS{10i7A;6 z?8OII8K`C&Ut~-ww3zA64c}ss;D;Ih2+>Z5$qe=-!BH#J`BC(sGgG>EP=t0Ck5*kO zKhiCJ(h#cwOXS#m!_Fwa{)Qe1e3PHjO4peS_{}S}K8kzaw28m5QC+-|_i&+-W5o@bgm&O_wV7)rdoJt<0((%L?QoGIqks4s2@?flZXw(4( zjt|LVb}LpZ&Xzy-bwa!qbHd^bmv?(>Yms)6mrak5OLIf4%VZjF=%j=#P?#xoQys*t zl{Zf+8R&ObyEZEtPhE|=)j^ei8il9)nhTA#?h{`*oTX)wSush!GNf{ACC8;rb0{<<#IqvJfK&(#Np&kk>fhSVs`l-b zzOVE1T}5Fbg;*)Z&yRYQM8&yca&u-*M9?QLQYjZ7SO^5@(E(Go>vro8+YDGBYzd zJIgd8DjE8e4mwsH;iVX)Drv`EX0N)lH`LfEma&pDK-kO5X+$cV?9h*{k#a5*2Sx;w z&eIFQ-`Dx7-z!*Ugaepame9iQViK$cKQ+8i7r^QM%6)I&w1x|q$-yi{cLjR#<1pue z^(KSpY*WvbWA`2TjEOg1hB!g%quG_8cK>p zfSDbpz0uW?3#6*zg<5CS&g5`%Eh}=CGoqMqEzP$5EtrV_IbGOjPPyKFLO?XVb>-%2 zD3pGsfc?mNP|T?~VRf1q7(D?^;#*P|MER` z%cZgBNKb#!ie=V}IU%0tHyo@cmS2A5?Ja|fjaO>ZesI4-O;uI3pOR@V83qoam|EeB zI6UIErPCqy1J6N!xw}>ZmQ#6E1)_ovM@Z+Po!^V(LoFwS#pdgu3fLqByiK`?v)Znm zgW^Mq!1I4vZ-DqYi|-G&!m-`a&p%HAod|7Vkex`50m8eu)jD8G?<-)bDiH47<&6l0 zKH$P+v!AU#Z=&9CN%N*Bsv*^eadRT;x5*I>g?kxW6P+)NO%`)CIOja!noeDv=xb@w z(iy_S7AdKHUTXq%$hf>m?#X%WFbXx_`pOcxqn{0=c){Tp51pZV53PfPr3dOBn`MZvg^MVt--4LI zr=MH(7A8?Q0xf}My-+)yQwJoD6z8D;mu?Fx53d4ogH6`WK9!;fw>HE#$9SvnAJIsG zsa-Y}1gnokn;cNc8x*?JIoYnG2nCU>pUY;)E6Fx{*iS-@l@|03Y7T|NH7C*IvYrvC zc-iBkr5hoL-=B)l$jl5)8g$q152X6%0{t5;6z|&fT70dVNr!4;Uy<;_7u~?<8(Oy& zHY=0XgUc!qP|z+-jnoU)8tSBMyHyMK9nulbqGwVafNgk3al*2LHST{H;h}PpE z3xf+~kY!@H`%o=Y|rZn1%!FhVm2B?>jAtgLLi-S^7I z7h69uVac=76Un#Xj#)k-U8!7XaC44e+1M+&&?n(eg58PyYd;xuk1I+#~R6CRh#}pL6Hx@b#aO8-Y55CK%OBR8`Hm+=AB_}X^x0tljaY5~fN>Nh| z=Nw~J&%w1QbeT*;doS+v8_0#@UciN(3ct+)Ht8EzOx#CxU1sg5=2@os0u_`2V!?7d zECV@a<0^r7^XMa(C26hURcoqUbGPS^KjAR%roH^~B=E|-A1>-c!=l}o! From bc496fcb528239466379b0ffea2f067760c89247 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Wed, 23 Aug 2023 14:50:52 +0100 Subject: [PATCH 4/7] Fix adding 2D slice data --- src/napari_matplotlib/tests/test_slice.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/napari_matplotlib/tests/test_slice.py b/src/napari_matplotlib/tests/test_slice.py index 0111e185..32eb9ad4 100644 --- a/src/napari_matplotlib/tests/test_slice.py +++ b/src/napari_matplotlib/tests/test_slice.py @@ -31,7 +31,7 @@ def test_slice_2D(make_napari_viewer, astronaut_data): # Take first RGB channel data = astronaut_data[0][:, :, 0] assert data.ndim == 2, data.shape - viewer.add_image(data, **astronaut_data[1]) + viewer.add_image(data) fig = SliceWidget(viewer).figure # Need to return a copy, as original figure is too eagerley garbage From ed278ec3471dff3845a465c9329a9cfb669f8d79 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Wed, 23 Aug 2023 14:59:59 +0100 Subject: [PATCH 5/7] Fix slicing 2D images --- src/napari_matplotlib/slice.py | 37 +++++++++++++----- .../tests/baseline/test_slice_2D.png | Bin 21061 -> 33587 bytes 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/src/napari_matplotlib/slice.py b/src/napari_matplotlib/slice.py index e3aa80b2..f0d01f3f 100644 --- a/src/napari_matplotlib/slice.py +++ b/src/napari_matplotlib/slice.py @@ -1,4 +1,4 @@ -from typing import Any, Dict, Optional, Tuple +from typing import Any, Dict, List, Optional, Tuple import matplotlib.ticker as mticker import napari @@ -12,7 +12,6 @@ __all__ = ["SliceWidget"] _dims_sel = ["x", "y"] -_dims = ["x", "y", "z"] class SliceWidget(SingleAxesWidget): @@ -37,7 +36,7 @@ def __init__( self.dim_selector = QComboBox() button_layout.addWidget(QLabel("Slice axis:")) button_layout.addWidget(self.dim_selector) - self.dim_selector.addItems(_dims) + self.dim_selector.addItems(["x", "y", "z"]) self.slice_selectors = {} for d in _dims_sel: @@ -61,7 +60,7 @@ def _layer(self) -> napari.layers.Layer: return self.layers[0] @property - def current_dim(self) -> str: + def current_dim_name(self) -> str: """ Currently selected slice dimension. """ @@ -74,12 +73,27 @@ def current_dim_index(self) -> int: """ # Note the reversed list because in napari the z-axis is the first # numpy axis - return _dims[::-1].index(self.current_dim) + return self._dim_names[::-1].index(self.current_dim_name) + + @property + def _dim_names(self) -> List[str]: + """ + List of dimension names. This is a property as it varies depending on the + dimensionality of the currently selected data. + """ + if self._layer.data.ndim == 2: + return ["x", "y"] + elif self._layer.data.ndim == 3: + return ["x", "y", "z"] + else: + raise RuntimeError("Don't know how to handle ndim != 2 or 3") @property def _selector_values(self) -> Dict[str, int]: """ Values of the slice selectors. + + Mapping from dimension name to value. """ return {d: self.slice_selectors[d].value() for d in _dims_sel} @@ -87,19 +101,22 @@ def _get_xy(self) -> Tuple[npt.NDArray[Any], npt.NDArray[Any]]: """ Get data for plotting. """ - x = np.arange(self._layer.data.shape[self.current_dim_index]) + dim_index = self.current_dim_index + if self._layer.data.ndim == 2: + dim_index -= 1 + x = np.arange(self._layer.data.shape[dim_index]) vals = self._selector_values vals.update({"z": self.current_z}) slices = [] - for d in _dims: - if d == self.current_dim: + for dim_name in self._dim_names: + if dim_name == self.current_dim_name: # Select all data along this axis slices.append(slice(None)) else: # Select specific index - val = vals[d] + val = vals[dim_name] slices.append(slice(val, val + 1)) # Reverse since z is the first axis in napari @@ -115,7 +132,7 @@ def draw(self) -> None: x, y = self._get_xy() self.axes.plot(x, y) - self.axes.set_xlabel(self.current_dim) + self.axes.set_xlabel(self.current_dim_name) self.axes.set_title(self._layer.name) # Make sure all ticks lie on integer values self.axes.xaxis.set_major_locator( diff --git a/src/napari_matplotlib/tests/baseline/test_slice_2D.png b/src/napari_matplotlib/tests/baseline/test_slice_2D.png index 639f25b84b2bfc224f3344d75995265fa56aa79e..ee3ce3b69a960ddfb07c347ef92c8c5f351d2472 100644 GIT binary patch literal 33587 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 Date: Wed, 23 Aug 2023 15:00:59 +0100 Subject: [PATCH 6/7] Add changelog --- docs/changelog.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/changelog.rst b/docs/changelog.rst index 103cd80e..f7425bfe 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -1,5 +1,11 @@ Changelog ========= +1.0.3 +----- +Bug fixes +~~~~~~~~~ +- Fixed creating 1D slices of 2D images. + 1.0.2 ----- Bug fixes From 08ee5d097caa97e09805fe5faae1eb8b29e9042b Mon Sep 17 00:00:00 2001 From: David Stansby Date: Wed, 23 Aug 2023 15:05:22 +0100 Subject: [PATCH 7/7] Remove conftest typing --- src/napari_matplotlib/tests/conftest.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/napari_matplotlib/tests/conftest.py b/src/napari_matplotlib/tests/conftest.py index 4d07c706..6b2a813f 100644 --- a/src/napari_matplotlib/tests/conftest.py +++ b/src/napari_matplotlib/tests/conftest.py @@ -1,9 +1,7 @@ import os from pathlib import Path -from typing import Any, Dict, Tuple import numpy as np -import numpy.typing as npt import pytest from skimage import data @@ -20,7 +18,7 @@ def image_data(request): @pytest.fixture -def astronaut_data() -> Tuple[npt.NDArray[Any], Dict[Any, Any]]: +def astronaut_data(): return data.astronaut(), {"rgb": True}