From d8f23d6feae9ae3465da53c7888e15a6c539067f Mon Sep 17 00:00:00 2001 From: Stef Smeets Date: Thu, 14 Nov 2024 14:51:29 +0100 Subject: [PATCH 1/3] Refactor radial_distribution_between_species() --- src/gemdat/plots/__init__.py | 2 - src/gemdat/plots/_shared.py | 44 ---------- src/gemdat/plots/matplotlib/__init__.py | 2 - .../plots/matplotlib/_radial_distribution.py | 7 +- .../_radial_distribution_between_species.py | 62 -------------- src/gemdat/plots/plotly/__init__.py | 2 - .../plots/plotly/_radial_distribution.py | 8 +- .../_radial_distribution_between_species.py | 66 --------------- src/gemdat/rdf.py | 76 +++++++++++++++++- .../radial_distribution_between_species.png | Bin 16753 -> 17910 bytes .../radial_distribution_between_species.png | Bin 37679 -> 37580 bytes tests/integration/plot_mpl_test.py | 9 ++- tests/integration/plot_plotly_test.py | 7 +- 13 files changed, 93 insertions(+), 192 deletions(-) delete mode 100644 src/gemdat/plots/matplotlib/_radial_distribution_between_species.py delete mode 100644 src/gemdat/plots/plotly/_radial_distribution_between_species.py diff --git a/src/gemdat/plots/__init__.py b/src/gemdat/plots/__init__.py index edb86f91..5374af03 100644 --- a/src/gemdat/plots/__init__.py +++ b/src/gemdat/plots/__init__.py @@ -21,7 +21,6 @@ msd_per_element, plot_3d, radial_distribution, - radial_distribution_between_species, rectilinear, shape, vibrational_amplitudes, @@ -45,7 +44,6 @@ 'msd_per_element', 'plot_3d', 'radial_distribution', - 'radial_distribution_between_species', 'rectilinear', 'shape', 'vibrational_amplitudes', diff --git a/src/gemdat/plots/_shared.py b/src/gemdat/plots/_shared.py index f97e02bb..ec3f427b 100644 --- a/src/gemdat/plots/_shared.py +++ b/src/gemdat/plots/_shared.py @@ -10,8 +10,6 @@ from scipy.stats import skewnorm if TYPE_CHECKING: - from typing import Collection - from gemdat.orientations import Orientations from gemdat.trajectory import Trajectory @@ -149,45 +147,3 @@ def _get_vibrational_amplitudes_hist( std = np.std(data, axis=0) return VibrationalAmplitudeHist(amplitudes=amplitudes, counts=mean, std=std) - - -def _get_radial_distribution_between_species( - *, - trajectory: Trajectory, - specie_1: str | Collection[str], - specie_2: str | Collection[str], - max_dist: float = 5.0, - resolution: float = 0.1, -) -> tuple[np.ndarray, np.ndarray]: - coords_1 = trajectory.filter(specie_1).coords - coords_2 = trajectory.filter(specie_2).coords - lattice = trajectory.get_lattice() - - if coords_2.ndim == 2: - num_time_steps = 1 - num_atoms, num_dimensions = coords_2.shape - else: - num_time_steps, num_atoms, num_dimensions = coords_2.shape - - particle_vol = num_atoms / lattice.volume - - all_dists = np.concatenate( - [ - lattice.get_all_distances(coords_1[t, :, :], coords_2[t, :, :]) - for t in range(num_time_steps) - ] - ) - distances = all_dists.flatten() - - bins = np.arange(0, max_dist + resolution, resolution) - rdf, _ = np.histogram(distances, bins=bins, density=False) - - def normalize(radius: np.ndarray) -> np.ndarray: - """Normalize bin to volume.""" - shell = (radius + resolution) ** 3 - radius**3 - return particle_vol * (4 / 3) * np.pi * shell - - norm = normalize(bins)[:-1] - rdf = rdf / norm - - return bins, rdf diff --git a/src/gemdat/plots/matplotlib/__init__.py b/src/gemdat/plots/matplotlib/__init__.py index f66e507d..d364361d 100644 --- a/src/gemdat/plots/matplotlib/__init__.py +++ b/src/gemdat/plots/matplotlib/__init__.py @@ -17,7 +17,6 @@ from ._jumps_vs_time import jumps_vs_time from ._msd_per_element import msd_per_element from ._radial_distribution import radial_distribution -from ._radial_distribution_between_species import radial_distribution_between_species from ._rectilinear import rectilinear from ._shape import shape from ._vibrational_amplitudes import vibrational_amplitudes @@ -37,7 +36,6 @@ 'jumps_vs_time', 'msd_per_element', 'radial_distribution', - 'radial_distribution_between_species', 'rectilinear', 'shape', 'vibrational_amplitudes', diff --git a/src/gemdat/plots/matplotlib/_radial_distribution.py b/src/gemdat/plots/matplotlib/_radial_distribution.py index b8a4c7c6..3f94479b 100644 --- a/src/gemdat/plots/matplotlib/_radial_distribution.py +++ b/src/gemdat/plots/matplotlib/_radial_distribution.py @@ -26,13 +26,14 @@ def radial_distribution(rdfs: Iterable[RDFData]) -> matplotlib.figure.Figure: fig, ax = plt.subplots() for rdf in rdfs: - ax.plot(rdf.x, rdf.y, label=rdf.symbol) + ax.plot(rdf.x, rdf.y, label=rdf.label) - states = ', '.join({rdf.state for rdf in rdfs}) + states = ', '.join({rdf.state for rdf in rdfs if rdf.state}) + state_suffix = f' ({states})' if states else '' ax.legend() ax.set( - title=f'Radial distribution function ({states})', + title=f'Radial distribution function{state_suffix}', xlabel='Distance (Å)', ylabel='Counts', ) diff --git a/src/gemdat/plots/matplotlib/_radial_distribution_between_species.py b/src/gemdat/plots/matplotlib/_radial_distribution_between_species.py deleted file mode 100644 index ea6b2203..00000000 --- a/src/gemdat/plots/matplotlib/_radial_distribution_between_species.py +++ /dev/null @@ -1,62 +0,0 @@ -from __future__ import annotations - -from typing import TYPE_CHECKING - -import matplotlib.pyplot as plt - -from .._shared import _get_radial_distribution_between_species - -if TYPE_CHECKING: - from typing import Collection - - import matplotlib.figure - - from gemdat import Trajectory - - -def radial_distribution_between_species( - *, - trajectory: Trajectory, - specie_1: str | Collection[str], - specie_2: str | Collection[str], - max_dist: float = 5.0, - resolution: float = 0.1, -) -> matplotlib.figure.Figure: - """Calculate RDFs from specie_1 to specie_2. - - Parameters - ---------- - trajectory: Trajectory - Input trajectory. - specie_1: str | list[str] - Name of specie or list of species - specie_2: str | list[str] - Name of specie or list of species - max_dist: float, optional - Max distance for rdf calculation - resolution: float, optional - Width of the bins - - Returns - ------- - fig : matplotlib.figure.Figure - Output figure - """ - bins, rdf = _get_radial_distribution_between_species( - trajectory=trajectory, - specie_1=specie_1, - specie_2=specie_2, - max_dist=max_dist, - resolution=resolution, - ) - - fig, ax = plt.subplots() - ax.plot(bins[:-1], rdf) - str1 = specie_1 if isinstance(specie_1, str) else ' / '.join(specie_1) - str2 = specie_1 if isinstance(specie_2, str) else ' / '.join(specie_2) - ax.set( - title=f'RDF between {str1} and {str2}', - xlabel='Radius (Å)', - ylabel='Nr. of atoms', - ) - return fig diff --git a/src/gemdat/plots/plotly/__init__.py b/src/gemdat/plots/plotly/__init__.py index afc852fd..91d38268 100644 --- a/src/gemdat/plots/plotly/__init__.py +++ b/src/gemdat/plots/plotly/__init__.py @@ -17,7 +17,6 @@ from ._msd_per_element import msd_per_element from ._plot3d import plot_3d from ._radial_distribution import radial_distribution -from ._radial_distribution_between_species import radial_distribution_between_species from ._rectilinear import rectilinear from ._shape import shape from ._vibrational_amplitudes import vibrational_amplitudes @@ -38,7 +37,6 @@ 'msd_per_element', 'plot_3d', 'radial_distribution', - 'radial_distribution_between_species', 'rectilinear', 'shape', 'vibrational_amplitudes', diff --git a/src/gemdat/plots/plotly/_radial_distribution.py b/src/gemdat/plots/plotly/_radial_distribution.py index 382ed269..e5b27438 100644 --- a/src/gemdat/plots/plotly/_radial_distribution.py +++ b/src/gemdat/plots/plotly/_radial_distribution.py @@ -28,15 +28,17 @@ def radial_distribution(rdfs: Iterable[RDFData]) -> go.Figure: go.Scatter( x=rdf.x, y=rdf.y, - name=rdf.symbol, + name=rdf.label, mode='lines', # line={'width': 0.25} ) ) - states = ', '.join({rdf.state for rdf in rdfs}) + states = ', '.join({rdf.state for rdf in rdfs if rdf.state}) + state_suffix = f' ({states})' if states else '' + fig.update_layout( - title=f'Radial distribution function ({states})', + title=f'Radial distribution function{state_suffix}', xaxis_title='Distance (Å)', yaxis_title='Counts', ) diff --git a/src/gemdat/plots/plotly/_radial_distribution_between_species.py b/src/gemdat/plots/plotly/_radial_distribution_between_species.py deleted file mode 100644 index f4f6816e..00000000 --- a/src/gemdat/plots/plotly/_radial_distribution_between_species.py +++ /dev/null @@ -1,66 +0,0 @@ -from __future__ import annotations - -from typing import TYPE_CHECKING - -import plotly.graph_objects as go - -from .._shared import _get_radial_distribution_between_species - -if TYPE_CHECKING: - from typing import Collection - - from gemdat import Trajectory - - -def radial_distribution_between_species( - trajectory: Trajectory, - specie_1: str | Collection[str], - specie_2: str | Collection[str], - max_dist: float = 5.0, - resolution: float = 0.1, -) -> go.Figure: - """Calculate RDFs from specie_1 to specie_2. - - Parameters - ---------- - trajectory: Trajectory - Input trajectory. - specie_1: str | list[str] - Name of specie or list of species - specie_2: str | list[str] - Name of specie or list of species - max_dist: float, optional - Max distance for rdf calculation - resolution: float, optional - Width of the bins - - Returns - ------- - fig : matplotlib.figure.Figure - Output figure - """ - bins, rdf = _get_radial_distribution_between_species( - trajectory=trajectory, - specie_1=specie_1, - specie_2=specie_2, - max_dist=max_dist, - resolution=resolution, - ) - - fig = go.Figure() - fig.add_trace( - go.Scatter( - x=bins, - y=rdf, - name='Radial distribution', - mode='lines', - ) - ) - str1 = specie_1 if isinstance(specie_1, str) else ' / '.join(specie_1) - str2 = specie_1 if isinstance(specie_2, str) else ' / '.join(specie_2) - fig.update_layout( - title=f'RDF between {str1} and {str2}', - xaxis_title='Radius (Å)', - yaxis_title='Nr. of atoms', - ) - return fig diff --git a/src/gemdat/rdf.py b/src/gemdat/rdf.py index 0dae7636..a65a1d15 100644 --- a/src/gemdat/rdf.py +++ b/src/gemdat/rdf.py @@ -10,8 +10,11 @@ from ._plot_backend import plot_backend if TYPE_CHECKING: + from typing import Collection + from pymatgen.core import Structure + from gemdat import Trajectory from gemdat.transitions import Transitions @@ -79,8 +82,8 @@ class RDFData: 1D array with x data (bins) y : np.ndarray 1D array with y data (counts) - symbol : str - Distance to species with this symbol + label : str + Distance to species with this symbol label state : str State that the floating species is in, e.g. the jump that it is making. @@ -88,7 +91,7 @@ class RDFData: x: np.ndarray y: np.ndarray - symbol: str + label: str state: str @plot_backend @@ -178,10 +181,75 @@ def radial_distribution( x=bins, # Drop last element with distance > max_dist y=values[:-1], - symbol=symbol, + label=symbol, state=state, ) ret.setdefault(state, RDFCollection()) ret[state].append(rdf_data) return ret + + +def radial_distribution_between_species( + *, + trajectory: Trajectory, + specie_1: str | Collection[str], + specie_2: str | Collection[str], + max_dist: float = 5.0, + resolution: float = 0.1, +) -> RDFData: + """Calculate RDFs from specie_1 to specie_2. + + Parameters + ---------- + trajectory: Trajectory + Input trajectory. + specie_1: str | list[str] + Name of specie or list of species + specie_2: str | list[str] + Name of specie or list of species + max_dist: float, optional + Max distance for rdf calculation + resolution: float, optional + Width of the bins + + Returns + ------- + rdf : RDFData + RDF data for the given species. + """ + coords_1 = trajectory.filter(specie_1).coords + coords_2 = trajectory.filter(specie_2).coords + lattice = trajectory.get_lattice() + + if coords_2.ndim == 2: + num_time_steps = 1 + num_atoms, num_dimensions = coords_2.shape + else: + num_time_steps, num_atoms, num_dimensions = coords_2.shape + + particle_vol = num_atoms / lattice.volume + + all_dists = np.concatenate( + [ + lattice.get_all_distances(coords_1[t, :, :], coords_2[t, :, :]) + for t in range(num_time_steps) + ] + ) + distances = all_dists.flatten() + + bins = np.arange(0, max_dist + resolution, resolution) + rdf, _ = np.histogram(distances, bins=bins, density=False) + + def normalize(radius: np.ndarray) -> np.ndarray: + """Normalize bin to volume.""" + shell = (radius + resolution) ** 3 - radius**3 + return particle_vol * (4 / 3) * np.pi * shell + + norm = normalize(bins)[:-1] + counts = rdf / norm + + str1 = specie_1 if isinstance(specie_1, str) else '/'.join(specie_1) + str2 = specie_1 if isinstance(specie_2, str) else '/'.join(specie_2) + + return RDFData(x=bins[:-1], y=counts, label=f'{str1}-{str2}', state='') diff --git a/tests/integration/baseline_images/plot_mpl_test/radial_distribution_between_species.png b/tests/integration/baseline_images/plot_mpl_test/radial_distribution_between_species.png index c177e655284212049bf33dd42129c46ff836cdc9..64e84e99d5ae3d3414811c82042a11d3f1d6c8cb 100644 GIT binary patch literal 17910 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 literal 16753 zcmeHvcR1E>{O`voRH9UhL|Gwx%Z!YY9kN5HWIX0mR`zHsWM?bSV~=ES4JldKn-Y5L zE&IH0-{0?d&UKx0opb&<|D8X&%E$e=@Av)Q45L+6x~hd?l zPIyNNK|#C!S|H$X-%{|jIzCAveQa5$NcYnIH?nGqveCj5k*Co;2`s>EKcngo7n1aXdZGtSAFR6 zr@WWq&jS3}sUo;E577iTJ*45>qeM-Z8e$b>KCI>1ZIfHsx$d3A*X3`V`0o5*#i*N? zclD4UP*Zb8(}fZK#$4I)*2J#AL~}gOF{roL!E}7&j3~Y-R!n2$OJIKa z0azk@Ypfxow-2It*(f^Y-^0XD`Y`~Nk!SudSwRgNg1tNP|6lrl%?Kr4 z!6=v6qVjzho*R@=$^G{s(%%tct5!K58Mb;FPwq=7v>^sE6QfLv$`50BRa`(O?-=t66qTRB@N}@a znGepKdL`i;dg_5J@7Y%=YWd~7|M9E7D&vI>wc)8Ba%J1@q`W$-FiPyrm0`+ZH$Pgr z=g-I7hrGCKr8ly&&B=Ui=*7t%n6TkpChq1aE4TXW6fb>d(9#UaCX)H`?f%Xrq10vS z!Ji_JSrN72MDO0B_gIYxGPBbob;0_co}Pt$puFKBA-9dxuzpT4eTj*)JX~WfcE)8& zVngSomcyO;?6j`<#~&s4-MSzo6cHV5FkSRkL7if46U_W=S&)*RUgTa{Cc;rZy|euM zjWhSLl5Q4Pr9{s&*(SzYD;1a0Ej4hP4{)s<O|3=vq$xr+i_DSm)R}s#sDi;C@aN6P-6qqX; zo_wyL|0aWIGP7IDEPt`mbnm?ddW`ZRdT+vJ-6Xa|oHXb`^x4)nEN-f=$7-ZNYc6HK zITcq}x@IB7yWS$Fr@IH6LGs6`(ZuEDwR){83t1>Ji{8*Zft64p(nd%3u!?iy`o+`V zYZ(?b1Z4cHe3$se#7acs$P`)3)!FW_aAU$R;n@6u7epzK7}1YB$~-)+%`#8RK=F`H zH(O8TMLLr@UVwWJybR|V_?hv?ULfXBu*Y3Xr;z=GD9g+nPwOJ;3*sjA(g_>{P{B#W zP(71`i?`37euHb)P(I(aJSk@g96boMS&ojWut=(Cs%lM5uEdc3o!oc@^C2x1j{URy%jl( zwIjs}BbRLVs$%!yN2F{aj_@2&8=`Pu4(-g1;^n=v=#CAGqBD*Jq|B1>@TAaLs;gU> z&|&>g(A!sjEJ^vo4R>#>v2T>xa&<;a=g6cuS&{&HOWOdaATC$qpu^Y?>c1M>|VgQ7Xw;lJqCpppFK63OU1Ecn!5> zT~KF*cdp4xJbBGebO5JV*UPI#wz$U0d~FuY8sh2Pk<6GXDj;U_@&_t8;=Yo73{!HtHO9ke~!ThVjv zCk2Km<`8Vo%A0EW(7URP)DmJzwihdg--melwK1Z%I4VZ0c*V;qkP_=aEPc`eDplqj zcIVCwU<4VG=56P;Ro}F;q}OIhC>VP4T^Y$kcS?uKR}P)Qep7n_SRpHdRv*gYac1cj zFSz|sNApm^Duu5S5&;b-XKRk}&v>n&YSZ=6sJRMO?CJ$1h_By;y6|f0ZJ=ETk>Wp+ z9X`;ttD5;1V6qsZNxq~>lg{eL$4BZ4;$*(S2=@Dqjn77YC_bH)@>ss}hyl9_M;vu? z)2a(f;qfSGfz1w}&8aPca+Au2@UkJ+!PPy!O2}u^xKK8QA4xCy+wz1Hn?u~wpdJTB z1g*l@duPa*E;pZ#jSftN8s5^#4B_M)@u zQnwyTIHZmZ?mlvJTd_U94;_#T8jqKf1kZ>LH$m#;?xLRl0_;u}{%!AFy@gKxSFcw( zFw6x6jxY2lPtR)D7KsZj@UHX{!F=Q44mTT{w4ab`X*EQEE>}RpUDH86p4M0TBwvmS z!dK@#@;L#ZQUArGL+ZOOw;~X&x$j6U5l?rv@t8#P2qJn4D=vAYwo!m?)_mXHcxKnH zwT?BmZg08hlVd*-oz@{o#QBh7Pv=l#ACaT%ID^}D62qFHkU7VA*yD`LRnDIWbsAPf zPjod;+w~ng;U~naGSL%;xPkP?P|`KVIV|KKqCj*_>FtLDx|r-=(7qBq4q>lc-irpk z?`vmxF}6)a312I@rB)~ojK&11lwk-y$X)l_Hzb&wwyvBQy$L!eB9^bVPL<-~1ot_1`Jc6<$C=TxTHd*Id3Y}YaG81i=p2GIp(RP1pWJ&pgq zIAvw!`lcp5W##7_q{`JnZFl#wJ9qAIDEAfFg*A_B!$q^wk6}!>K2gWOf|}?!Tk_N) z2gFh7%X^w$2$U&lYHCWX{SFiH{EPS6TJ9ax9q^aK{Fj6A$BrH)J!Uj%X(g&g#KszpJUX4&oJv%U zdh%WYqc-Fyx*AGIJDYAK20?W$GKt*M+q()X!2-8Mi+KD;nu%88i??r&bL^paJCjH9 zkiC^EfjyAF?&sK9V6<3PV2LEYoMa2YaN^Vwt}B z=f}f$G;F`*C&J4RNtc0@Z5lGh7cXAy&9@A8K1wD_ef9qEHI>jJ`-uAQyLQB$Rui3& zkTaQ6t{!FLo-S(Fdlwx*$;(Ulcm=}bbPmA<6yBUj6ORq=xjd^?JrX48G*ddBVcDEu z-B*--$IL8qV0LjWJS>c%o{5a@?BmB{?(Leuv~tTK@(9?S&_r5F(*?XHjj z@E4#MOigq$o7ch65;>JE6TMvGgC#dToiXZEfAV~V*75xE&@xVLRflRj*P|HyDPXww z);ezC_qR@63heat>-0TsB$Prrrs~{0S6ka-OpD#%ORMS0x6~MLY?k_uRcxFb-Ny1; z87sf0`nphEXQ=~Q-iJ#%!;*>Sa{s-f{t4%dzwhGplNXa0t zH0@ONfEO>?THeSllTs56wK*}$4>W%HHv0Kr!UN?X*8EB4_u1$hng|pdY`Is*l4|5o zsY^pc1M%5Z*s|$lAd`qnZuNFqPT2&nO~xKyg|E#~>q~j%0qccUr=2H0Q*&buz)}H& z_g5V%=AUqBB-}LPAFuM-5VmMI9>^+VVpbQVn{Uy0#h4Eh4q#9acfQ5Kjabc=#R3^F+AEjo`wGK%A2IA&cN>_?y%B}VjhXVo!JWS&!I`?5dK0R_beJg5IbnTn%BC9X ze;vuK?4(Y7(8-Hha!(I-bmy5l|Bz?ok&-foiz8zypRLNw$~q^t@RfZz$e-LdA`V=; z?EUuzuDLjDsH$?H1M_wEA0$cxgVbLCbGa>5qpNy*Irm|)E2&i;Zq&iLJ@@o_7c~|* zMyN3;WaNg(9lM7`+^E<-dpyy{r1{d~OYhBj#fb3mG_Q@7iJtsak)!0Y^l?YTDNVHYe01@5ET0nl`$!43cHGNE&a__G2-GBw6duYu0UFW>lDt9W_ts z=mF0^9rWki@~5MWjG3_i8&747S|y1pwb{~@GcYW!0pz=C1Bz~tZ-Lv{-ddk2pViUQ zdV501;;YXM*5F^i?w}Ym!9W`SMusok^t8N|O2xscEVE+^I)5u$VNX-6LzRKNynHAJ zxI3Gi(v;3RPA)EM(9bv7^qBu}IOGYTVZ@!yItZ*ahJpLyz^Zl3&56g(-AJN>?!*g5 z!JPTmk^Dxy=gferf*dWCocp`|r<()SrVb^z;9r zi33U)GM^g7THO3N8%OPK%b;!wxu-GK2Q9R^b zzHk5j2$YMx~%`#olmI>+1 z_9d5-6#`q8x#OXhEBh0sA^ihFM+fvlpKn0wp3%jga3CgGW@tc3=1A>EdU5peIo zrl3H${5#n&CRo8X;1a8&$F=6^qTlv_SyV~NLk0RrfyZxy6}CJGY_z$&3T2Pd(LWzZ zgm*m3#^o_FP$Sl4qdf2v4yq-?0%)e)fdI3La$?%lz3O>ji{DZ1_#}*i8}g(QgNJ^L zsfpgLGXv$Hv}v)EWZYD!mf3y&QmCmV?xG`yGHAQ>gDg($Dib#qxGT%ME3}}ZZMTMP zJ2E0vR8={Z*Vfhyi);#p)IA<6ZS`%5l|6V2% zi7`T!K@&DZZa*J0J}Fbjtgc`7TZB3)t#@;)riTd|W}@BORK2q`yWZ&Foy?b8p%waj zam@+5VaM775Hl1sEqXK<8nR7AKYgvSC{5K z(b)`Excy8&h%u$VYq=TEBrfUn&z5)(#HBzc=g2Zh?27FNgq{9eM{RWOIK2OI1R1zI zcW|vb;n8}jknxM{%b**duVc;SPV`(Do?V?C%Jugr2L(6OWX6PJ+9*;{9Z(z7{&%Z% zJVD#qIs-C{jw&yYLhBBdPfuvuAPOH_-$#~osGoks!;+RleyJ7&l$KU{HRW)xeN_fdWb+k zgVvuXiavy=(jpSBBUPFbB~p!UBeQ4W_y|V5xfD<`SW=S z-Qk4p?i*5I(!Et)<$Ad$ERYK&UG__vl};Rp5H{8d)iL1NTF)Gaz+|n!dw;L5Kf=sx zG`@B3-o1r2PsmjF%iCcsR_fB`XOpZUy}^e;eqZB9Q3%nlF+r-la|76=46_Q9*uKf2 z!uBG%ze;v)x)z1K#|{{DIaiDJ&9N0g(#fBzY99qM>*{$2Rq zud9W&J*{N{WJ$;DspIVWROaWA*GNo?A~wfM>bnj&M_Dwyep5W?J~=%7{Q2{k3+DA7 zSf(&~b>Km&x{Ln3->8fT1b&0(`=KgWNr2GKD=BHj$;oLAG1Gl@hCeY(f06=Uu<7}Y zHq-4-Elo{eO#cIRE-nS`ga>!5z+}1Ze}dk{OT2)Q1xlF=g}+k{@3W_gL!_`n)l`St z*0U~(C{1;l30F~>f^zT5Qz-Z5_w8@&p!E}iq#e2PN9a*MirPtx+-(#8`QV6nxr<1h zBXrnm)WCF4HmmswaeY~0Foz5x_R%@~4AeKELPbw#nU7^eQTi&}(;hz3I7C)*J!}Ji zDkm%J+V@C)ZJi?zQ?QSj{|3{6-WioE51~Zv=ep~c53U=sX^k`!u!8I)Srw&!Y*+`N z23gqwkU!#w=wSBcrDm+C9Rx8! z1N}o7be8)5Y=T-1+0=+`f3nK59#y@b+wG z2n78=y&Dt&)~hoED1TKOE~?>izekRbhKfcyybq-giACAJPzk5BdFi`@J5S)n?qdAu#)C|^(k1ob1u@yVxNg>#JletoF_ z&#QPEDs07SuI>gf>j(ow+wgu=8f5C{MmF&snocA;2JI@5tT zRMYQpO;(wzP#Cw{MPEU!=I+Wh+b zy!YMhhfUHOwkR`|7!B9XN~eeDeEn9Zcv-feLSNC?3#7AbX@{C1nJ`LEPhTIH^-fif zm%x4S-vhcLeVf78j$BH7pv3di#b|I-Gc8c4xX#=J508U*iAruNR?j3z6SXYkogD&QC8FVfm4^n+nvc}v-?kq zhlLT{z1zus&4iDOuTJ-IR}bZeh8~uJYTJF`8~3DV*3fJexN^wo(k3Z=4NIl)Rf|Cb zx>!w!%|G~qED}09o8vMlzEP$p$xih5%GIGut3mO~aS@zy)SboZiOg-oTB+|*H7x6{* z{L6n(-^-Iy9ShRc<3ieG#-FL8#tE)M8o3HyNcoF{@Tm91iEKSHspjUuDRD8o3+$!X zunu}}G@^z_Ia9ySm{m=yXBqb;jf6%PC zw+#)~AeYlC&rVBA(`*j>TXWI8{s`!PkMUk#YVGT6&ePVeM}J1e@Y?lpO?RIzbZ`JQ zs~{ASRYMg=%OsrkVf+H|Al&8B$6fY=+rktVtcRxtjI0Oa;FbnRLB3`B<-0kyokG2M zW%M95>soJqU96urRZ53`_Inu6T3v!S>rgQ%NY%vZ{c6)2asCUs?McCeWD{NMi~`5h zp6r8|I_j8;Q>r_f!`v$s8oBtBxm3_{c5L7TR%jzuz*MEwefr$8?;opl4Kx57N6X^; z$=gn)>GFX#(OCk65!dTz{$=oIX=t|(b0AF`>44!BF(pRkY5z?`!xJR6gMMM)=Ht*% z@E&!XR<4QGHDoYC=(K}=+EDvV^hLohPoUd9t--y66m^%BgMMwOq4Y1EBFglZK{O|5Eg zATk8?VKu4aI#4RifQZ=VmtWSdgIl%+)p=%%?r~)}OF%@ow@`I`lo8#d4BbNoJVHfj zdq%`S#MQk>%gB+y{(}h|7o2A8KY~KZav(D}0_|$XqnyjL8pD+IJ?LVOYYZ4*#&cBy zy>uGi`57i9A;?UD6cJ$Ah_sjk8l~16ta|Dckh-turdv?ii?!4d2Nx zqRYz@B5GfNjzfBNo;uFi3>}AB@5d>dpySF_Xr~IKM>o*ErZFV5^z&!eRhAZ+#o-XHwAs@hkqTJG9sto%Ems2szr&XHSw@|1=_FzGor z0oV4&VBhS*1`*H;8Zr@M%~9TK@+#_)Wv)@~OKIMAT{-u1OKqau8WX)GoM=6d9#z)V zZ1p8;#ic5zCRpdxol@l!L)@1)h}OAzZP@nZy%9q7w(k0BH8Ia@I%h9+B8wzp&;Dy) zH)kQ4kygi=SMS}eh9>59Rc=KWa+iN2E0*)tD~bfIdm2%qb&80(qUGs7bELn9n;Q z3wrUN_Cz9Ae`BHp`Iy+y>sMXX)xs7ph3`BPc1mk6b6y_T)l=y!Qf3y5nJdM$y)hNM zaVw{`mh1Q_kE}I`$t=0*nSs7X?Y%dBDoc+YQ~4eljg>vfi*^?GJmLgUjX1|^51i4I zQ;`k7*Ah5c)JLee#B&}X9lkByl}3hnR}9PADL=`-xc2ATweTl&QTEjXH_KhJcbwn8 zC8)PbgweIVvHaQb*W9~>$%dq-`;3m|Mt>7!KcdU!=BdX z++~jY53Gx*%z$ywU2`P!-fvF8W@-C0xRD zO22qc4>>4E$^5O!67pIz=i&NtZPXO+w>DdQj=thL87Ha9il0-5K`O$OQ7 z61lQvJx5QNakS2Qcg?-`Q<8%&W6<^Mx4hZf#!}}6N@}v$lexLiXqqIPC@h~8Al36V zrX>24FVYcC2sJSM)>fZa=+0`)t5X@Ni!IEMbWw7s=BGV*R%+oHZr17N;}iyYx6*+K zQG`oi2RkmicfL~h&YcFsCb7ZcG}Wt-8Zsj6Q3eJUv?B#Li+l~Ujoa>Oo)yvAug}Y^ zFY7OkM})B(JB8qWF4a)9KB0BdH$b=r#UzqP+fA=R-26fDo4MGt`cy0p zxVEN2w|(^7{5%xD(F5yzdaqk9I%l-!r}oG$cN%qgyzERRe15boHWa?Sz{p^&t=+iZ zbKQ(~SN%jANvW}cdxb1st1=-KwN{$Iz`bKp_S^A}+`m7Sj1CU*YgOC*cMADW6R6AOnx*RE_V3wWQW|{mJ^6K0ISJAOFYT-5{M(DN z2Xsq~cDA{!)DzA%CfK=@uaeBJn9mNbY$b;w_20LzAx4l=u*JgS3yh6Fa`SyJnCmIi zb)Oays{Ni)J@@?i`Q+Cj{v9y+@#9%$cU5Z#D;&}J&WGB}H6Gz(H zZIj5``qjAI{SqW{c{sZmoV0yptc|_x%5FEiJJzD;%deF3+W}VYuq>_oc@`% zv?8a=Y=}0CtjxM`Tm7rsg0fKdew4n^04hN^r^?Xq{Z+&A&KZ?quG(4)s`bZ=F=2jH zJ0=pdm&!A*5FiD4_Q21vo#F6Q&gUM1itE;G3NaVkVEHkSxyh^CYI~QYosA)wj=ShT zR)Se4{rvHt2Liiq_1VkwMdFr?~=%(w-7D7}l zM`A@`%)vk4Q|+`mFgB|-RE4&Jz)3&9u+XrK=0Ts=o*axQb2eL~j~QzeBQmJJ619B= zgGizJp0|$&bU)AlYt9VDh>Tsr2bo{G4-Q{fUwLPvy0yv+`hTfs&k6fDPCV?5LwlRJh}wL< z!Xu)~B>oEL-0raBO=|XuY`Ua9F=)I#BPsNeMtBdT4p;g3MPhFP0|0*6@J#oX+_CE& zbTY3KVl*zDmfC!0klT~|6t?_^w(RXK)H3Jv6KcP3fv|9&G+hj3dI;gYmisym*TR{%rJf+<_a zgW~)lR~*2}zYx6kg86}wMT%4Zy|L()j?d>7)Yz9VdW6!*$W*-%Ea~J)Gc%yf+659_*pXi8U zgRd+aLl1*;?6W^==SoI6sp|F+utLW(ThK2^~V(9ydOq5Dj56u>* z<*5IXI0`Mx{PL5S=#64^73GkzMxodfw*tQlMnwulc&{r5JkKj}zg?aNVk4hV{@ z+U}iF;I=(;^KT|BHMdmFHc}lZ>oI;_zC7!o{>ts|ZQQI$dFJJ_Yg=Py>!rOK33Fa4Q79GY-+%=vP?1~y zb($5}+FrGYH)WTMXS-tCbH_cy1n<|L8HF3(F0Q_3NPh+(cd}RSJS~%gP9`tUc}3|lx|+s8@327=B%=LR3eTokX+wZk zlGer>Ey*@OI56~Rm1k6D^*L8t*JpgFL1n0@AoG*YQfAxem4BQ{-Asrzz7tpuEUl9=}$t~{!y0VQI_v1nG#8)6?EaaWBvu_V)?8fv_N$&A7r1+;U(Z{c;#=R! z1Fko#<54ks>3~a`q~eQX7Gd9eELD>gRTI4|T;)T+Rkf)uexM>s&I)^pHj94(y_$pi z>)CNgu9J_HJLi`l7FM|Sa%rZ#wdGCg9!918jJ?L1zrTJD`w|?bez7*rr^+^3*zJA$ zdnm!kR*>k9gS8D+jrp|Tp8y(obujG7fsiK2=4*@|Jws!u~`!O^fX6CEhsdAb~w-EXfWeO+#g%*g~>s$U~GTW!2&1VqiIpmcRe`FZd zdWSyDrgDacK}G5AnBWvDY#olfJF^E$ILH_M$My@p#x2n@6P})W+i?iN4`r_c)%*6- z#Hk-+6)y%a-h6{e{NYam{Y@w{1==eUPf+zGAgh;P{6&7JVf5q@!O_`cdxvOe!wLsM~@ir<^Hh~;>w!k3K+0j+i;sFbP zi;a~|PgCDMByKn<-PJ+#Mu|MMW4pf`Vn=?-AfIsiQ-iYno4JwT)&g9sO>Xq7wb&sg zm?)jq*-H-Z2kuCYuEvHmH^!<_XS*9$^}n2CJJ10%4w=ANDq^GHwqB#DEPL)qTrs%SUG%n@cY=!p34>^gSlq5eY0#TJ% zud-M%TP=3F&`2zweY2nq;z`5I>d!Mm)SWZtg#MD?pY~~{q;62Pf z(PJg32|EqThV6m9MbPi)%;knpBw|5bx~-=T+xEgV2%CZ6dn>c%pfem^!U%6h# z%h3r>SSGMxTJ-!|ljwLVHz!bu)u^BcG`7bVpb1Ke-Qq-7ZaGYYRUlaLF>e`YrdIf) ze*!x7_G$DJ0>C*NFn#EHyqJ7Tth2>Oe#Yh>sZ`hG4 z79l`m^av>)*;j2^|Mk^aL&%_;V%eWF<$UDWBh*0+qIkyo! zd@w*AUFktQZ$@~$zcFa(=ciplQ2lY`&a6q>%%2y61UhMm&-w68j4T1fAby9Flgrk7 zjVSDzLZgnJNw(esmc%)70tv}b@(9t1eeYr%RQ}bWneDUjkvvZzb+w%5#ZN0Ca z*`eYMd;|u~Z1~`c=^w|jYsStUx`1@b^K+~VVu=xRNN`{J^9Dx909JsnzizM03}gl} zi%rBiHfaKmW76~H=e_8|wh{`j|HUV5aO3~ucU(2KFl1itHVejmes;)x?gJH!+$~&{ zu}e@{U;-<@UI<#RO!brj+-12#-xNMRIh9w=ft@-6l>~-Oo--^^D(=7kqDgA?CIVoF zacdNzUqg{Oyw9d9rvt!=blcJr5{581me^WqJIcz+y0BXQD}YZ2m=i3seIs-UP$QG= z+8Q0-1*@~pn|*n-xiz7E<3<{QMhwt=4iKf817df-(yPTw=+4j2yN^X%h9@MLjI0fL zE(Quz%w6#U(o|Gb_L+_TYiviWHWySOm9Ex@xud6aBHVCvb)zFgmrn{nuxP@@*t*Kc z%d2(!_RkMPQBhGg<4y7C%RZ%{)bppj|K5gqx;3yvWTqTCCCkA+n{qHU)Vp)%?O0>1 z{>XU>s)J|}c)HPj-xx<~%-G~4fReD9mO^{4ml&N?6=g(IM9*hK{86a^M zFngvE5fP*SzMOYUUI&3RXp^Qumg*4EJf3;aM_oM#@B!I=6jZ!|f*M0UJ6_qjj(v8; zko-mWR=7DH&)7SR5cWCk@I$=!I;m`Ddqda6B&QiZ$m-n!WVzwHTYd>%D+X$D;+naY zD=`a;i#A@_QXVUR3cF0&2+CoQn#^{VwUw8Y++g+D%<~5P?89P&qBShA(hRK2F{v#3 zqGaagR%+3lkgdq-r4uZ@o;CDHBl(CCJ_G&Zqr9z=??2rLCJLjNV z2|n9v)@><)CT^n|62IYN?&p!Etx<;mY?zS(^H%IU$r13EnC~HPCysWkJL@V z;I%b9HNk!Eo>7tQ4}=?1ixuS&5z$4!5)kqc7UQkDalrlvyDwS66v!IpouP0IE*yM# zxxUipkSVo7j52}PTt9|Yc(Fe@B`q=OY3H6$|eJ3kl}rdV(_VKfQww&+F0#ENSxcBo{$=Z znr;7SKL%|;t!%qQ*eDfXJtTm`=>YjeiqkHjGw$=Xj1h^6xsM(_vTnw8<-~K~z}`=9 z3}UiiPxeAEQKSW2aOl!>@z6w8ep4%F)XlfR1D5{UN{?0hc=w5PfC9GwOg7C7hF&l@ zZ+9K?N(Dt^xjAca^X55S11iG~XjD4?lXNN_u=4yjORgg*D1yS&o$|N_*ir<}%BfhW zmq=t}WaL)n<>5)cH?%QZo%`|QmC?~r)l4FkKgSRw zMhTfqN#}F!gfu{RDis504e&VG5BXn!dq@WD!GX4Pq-47S`=-}e0DgY(S~jaaSb&HE zH60@ZgSL%n6F_X+OZY*(NhA{Jb9*SKs_^ZPl*S&@g)p7SZ!dKmH#C(we;zRQnt)gG z2;4C7m=*zakQO+v+`Pd8I44Hh%RR8>#Dn;7<MjECa^dhvHxRFG*H_fxOGYu_6^#5Isg(#0UFJdG%M(I6pyjZu zVIo7x)?A~Usn@b@cIr{Gnh?|*uLRtgNxY6U5Q) zQIp6`&iA8V)br)G0~gwfs*J?c)JXvSbl_6sJBK$A6a$=HHM$Rioqv6GdSak_^@FH9 z8NXpc%R@TpG~^%w`l$`L-a=5YN(d#id;1XDf6tyh>q~7Kbc3Q^>rMdR>TtI&;{ac! z`jCoF`uH_Y9zH%*6xf%$OoxV7_h26uAepHikjH#kfCUBi0}`AZ9Kzy(abaP};2kpn zk4&30aH$^vgDBAR@$is_%UV7~K+pv*&U^OkbqK2fX|LoppIYTMm%E7=X(txDjl|5~W8{`dbO!2dCO+VZKqWcq&2 U=mz|!3K*s=uYNV>$}Ru@1_09wy#N3J diff --git a/tests/integration/baseline_images/plot_plotly_test/radial_distribution_between_species.png b/tests/integration/baseline_images/plot_plotly_test/radial_distribution_between_species.png index 6b4c698303156fbf284da7029a0c687e89381892..62cf7a5104f54dc7e7bff57995b463b9b7975d01 100644 GIT binary patch literal 37580 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�SK2BT-pcCv@!jsEZtl9hB|8 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 R?Q`JQ9eLH;rLv}v{ucptXm9`k literal 37679 zcmeFZXHb+|(*+8ml9NQqNDxGlL?vewkSs_Tk_eK6I73EZK(dH{fMk&<2uL14hNJ`$ z6v+bvlG6|eiFe~UzQ=Ps@Av(>RrgkXRZt}s?0KHvy}MVhUcJM0ZmN+IF%aS4;E-Nd zSJuP9IfcN%!QCP_3;t)~_R$0m4jayOWd#EmWI2tn=BDBPag*;_hh_*x+>L@eH@NQb zTv7?Spxpjmy7x+N1%>WYSD#FwBt(Upr;?! zt6}i?@c5$%w&Cj>YIOhVQgK5S4Ov*rq{=By`MG$) zg1`M<3JzT2c2ZJ22ktqxpI@1n4VM4>0REx=^)wISLmlD;6X6q_|9ruduz&qP_(Z;( zTOO_Tb!O(f<%rDQ*`J|Xo2Nv(;ef8>J z&%}mHB)InT0Z$(8;T^3YWNL9&*N3=Y9zzG_P5#R>5^_48qDI{@hun<$%L?j2$S&Vs ztfJ0#n<^8-y|m%s@vCWosqlXN`NRL2>h%BXrV4ULj{5F0K0od&jJy=jYvVJPa`7UA zEcP@Duc7Gr9BTlAVf<`U;_h+vW#aSwxeAS@9$5!UZ8{Ymy@X^H4P`Faqu|nw9J@=)atGX4PE%^pV%|$WC-N};A zV1-{|IL&=fO6a(O{?PSaqtADP z-M>yWo!GTfwc%6M2N52la&^s#r0bL@t_=U^;$)F*SYN$gs-s>AbO+fhFBA1l<9Cr@e^J=f&N{ z#gF#z?>6>tK3!=QbWK=-LXFz;Vpl?!1fERA8U@7e_;c43)mj@SAsvz9Ey90 zpPz%^?#)oTTB4pBmQajVCDb5&dC@d0bp8i4b>!(0!iOfcfsn+wu#m=vk%5-4EA{Jr za~9Lz3PgBdbNsN{L*iBOh!Blp>W>i2`3K7*VQ=s0=WOA@KP}{%)Ua!C`|Y=s+7AWT zTaSts=ugGzVXZe=1JS_?!RLaq*p^K0e$UwSK_3zq_4YcPHw)i0r%81!5sP4^}Ly_DiKp3+-6EoS@z-O?Izd zRT;tuoPPxOhj*0OW<#*wZw0@B9yfEo#zb68lk_HP<7@b~8cuD>Za}aWJzO!lUXIP# z$l)4$P3y1LNH|)y-Z$FvZSP_qwMDDt|mf5B3G{*(T+avS8Sm&E0RShFkS*vAk zI$Wn)tYrCCzSLh{m51aD5T?jBF7P9SW<0nA)ts;%d+YsNyu5-BHC5Q3dGY8F%h~yi zC+dM#hQgu&udrpeX~~*w?B>L9t`@u!hNe{P@dSQso#44}!-ktZj(r3-xvBQb48)!2UjGj(V`mAc+%3=t&xK2Tr(zQWj!3U<2hx{Sp0mwXJn3Y16^OImluxWrGDWekRgpde%9ApqQ1L%w;ZOxVhyxQ?pW> zezb{(h2N7k=4ey!hN1J!M?*wwwSBv##Mk@}Yv>BW!8(sLwsLF3-LZk0S#vdX>3E>c zhwdy%e{O;6)7L3bo>;X=Kfwnqgk^_QD}+f$n+W?HYdH4Hg2+(A8k@)1li~5|6t{%@ zG32;*D%+SMESCA0jZxI2kzlb(oDx#PL_aI z%pP;y4^+_6k&zwqgR@iPy@%<&+tvMsZqMbNq=5YcAt*z>N@Z#rFr2sPG$HkFDM= zZ4#M?=RfEx(=?)jl+DN&VvP>AY3;xl&eY&|Ojj@> zUhq&4I}!ZU&}3>Liy89??+kkt^x%!V#?-nY;WSAYl0tAdToRw0S*ss*E(D6+dI-{X z>N$4;G>snrtw=#=0R_s?;`nh=U9`L7hGI`d2}J~r-nvH6b12gNt|H8}$1|t?T)G<< zfh%&+dpr@3l8$xFg-;TDj&EY0oay>g3`EkXY$n@3BYddNKdGKZ;f16-nro47kz+?X zaz!AizV#MunfC32bMen2k*U--oRt1V+({QLi!l(`jh0V@YnC5D+J`zcZH6p6Ao;4~ zA15`TlD{y**BZ4xut3<$|d|Ud%`1DBjKE2a$6|sIO6mbXM#*1Su z=cv~{U5$x2Y>_)eY$N<%D~_VrAVMgU*T^oR&Uf?>>W?_vobC7pNlc|oIbh$ zy)j;K&=LC+`{O)5kEYpIFG74`9<-|?tFTyEDanjjx`E_7A{oydr!Z2al8s=iFiHGW z-5m^HU;MNaj_sY&{+hXz$-A17-)4%~-pDeY~-z>gW%9Lx5rj^TVU)-)o9 zh1Bn#v!~UIvGGo?o5J8PBR1pPH2evT6rJ0`siwH3-MMVx(D!^5LU!o6RpKDRxk(mT z9}@CG`?&!5DG%g+n*<}MwwiItTWn3O^4=E)w5i3+h&oq7cv(RC?&UQD%sM~WUg>~Fe%l)(= zGESQ=0H*ks>LR0G#j4$7a^r6w6G-*d?mv)|XBRk+9$37l+_V^f)H+BuXaT!vC8l{6*q2ykK?J==7M|8&)11quwW&H%V;uPw$*eG zKlInE%)W3Talf@(YI^K}jf|lC+*-M|)&l!Byi>E#&Zu)d+(9Mh$JToNML!#)b@9{k zZRm{g77g-Zs}wr7_GOgXE!gK=t!R)!8|EKSk8MsQj;1XoG`{7&qo;mYbM)H1H?4ZA zXidCEtux$a=uz{Ned5p|)hE;$o8&qiH)X1=D={RjQ$61G0WMDX69 zmmD5>JsBt)J3QbD;U?yJVpXqvG_^spd9rT8H`}Hl$ui`=3=I z{^n_+M>SW?Z8n$gn|jIc2Gn&;L(l*&iDpNi%f5UQMqxK50Q1lEMLdUfSuk1M+AQ#x z|6HbEZOR^X;kf^H%f~K`BUc+p>QbX6R|v1^*QIfOoT;{JWh?9j({VHq;TR3`DJ~iJ zt&xEcqbT!k-}tt(QQKa^SJX_>qtdC@C!EUd5&fu#v8Di`@}cm z>k`;+cJ8`=UJJhnF>^pzGq&wV8r2moT2GYh&hTn28mx*llr<WT3I?t{0tv}78 z*nesEXt*0I=YGa_Vj}Dbx7HIZy;ht0gV(cq#Q$*F!7I4aAy^ZE zvvW6pVH7gcao|QW`l^3|${)~D=rIm_Fw@$N=hvcs5ikt{BDTuE5)HuwIxx~pXTuc# zZ^8ew;ko~Fn?KIW|L0DMk%I68R_OvZBBl8YPp;(#zb#;5y7oZT=*FzB{JW|kr@_2t zl#(Bcdh!dyh5hY_bZH`53^&se*1o%XnUJ%{sSB|`|Z zD071va)v@IG!x?x@>+-nZp5zHlf{EbdB}G|4Q+T@PnVvklt~?Y%T-Ijjc}Et*?ABQ zR(zT&XhQ;hPadMuyOR<9x-goD2GpTQKK!RhzK&RAQBcMz1vO;6b>LeLrVu@^Mom=8 z`envb4>ohYFiIYskaHcKFb&p!rwt__Ds`E1*wBRyxNUI|!3W6~H?Hy`Hb@LrGclcg zFEO3#Ihae6c~Yn0MiTB~-+2%Yl6#bJxqEcz41WF!+hbS+?1BWrzt-&cf^| zn9E*-8>MG;5>P{~rhxANV3>pZVVRgk?hc zM5U(!>XdX~UQ|Z$;N3%WSao?20Xj*&;3e(yubhG##c+dfumrB$I51ybc+m&&?k#<> zJk$`m{H{6hk|GA@A0qkGz{>ysG9OilgaFI#rZyw5K0I#j)ti)Xb3E|&Ww-ATmEQKs z!E_D;|MQhZ6kv3MmFp`|@hf)-a-6%^^j;Z=RDWZEBNTg;o$ikQtRG?ze3aG^qs2KDD140@;g37Mc5 zWAMc;IyHbJb0A9!C-_3NM4ymvu()G#-PPv%avZ30=-@`HvLb~N@WFf!PH!Rb>62)( zn`z}bM`$70{S3HfGIIVC_w#R8&5B5QfziEx8l7X9sMI)t25E|k3!Ni$Jr;IFw>u^G zy>+oo8auvqJXx|6v-tTG&C>n$l(u*ZHzurIujoo}3BMzU(%#!}BqJTGa(qmS?rbyC z-faJRHM0?H#zk?wf%k{+&Vf>f?(10+GB&S8p*k-j>rPR8-yIWJ{vCo?!^y9qe1^%$ zqS^DGnBm|k?j~&N!e$oZoZu3;U2x=R&9s}e(Ke;D$*gSkhbm^@Pj3!|qE<)G9jf)d zLoVP^g+Ew4z7#RxOGkwAcFe}?Fv{RHTT&cKN!)N!LnqV|dSPGvIFK0=$ofDzAuA7@ ztL1q7DQ(khhqT<9SNFTzH(x1?Jr6cz6fn9+RGMNZ4+X);Wr`Xi7;fQ-G_9VI7cIg* zt5;kq`M4?*l*hP@96EX}AhrO|J9bdeakT%(gNvtnyf?>Is6I> zdnN#RZ;tkF9FQNXiVoADX?v62^O0{?jvDpc2j^4_oH`~t-mXL#9qm5&<}#ak3bo|w z=gq2FM$1)v`GP6==t4W!?=_N^L(hfCn9Fn)+%x@#pZie1B^CEi!8wwlA>S(z|90bC z?)4cq0eVG0q4wi-9mSSown1H3ZiHJ8;aaAuSUL3 z1xKTaC~kp%nv7Y6UV{t$r(DYZSJ$IenM18mUykg*SV>+JFAXQkjpTYXmw2|oSI5`R z<=&?lv+IgY)uMiTwb6zaBe1uA1i2cA)l-#++QhEiZkAH=qqh{yGU7bkteR_c6+Uoe z$`DkG+N%Y$g^acE8O1u@gbh0HlA52@Y&V_uWizi6g_V6)|5Cgm-nLz zt&Kw^B4~d?&L2u$e)r?!^PWjIBgJhL7X_rv*V(b0XS>SZ*i9(hXBIt^D(!$?nkaJUsf zGVh@IC0k}>Ao(CwixNCRIt25BQY=$v>NLznP*r8y8h?FVzK20!Oh2dy@rcF;`||CiJu2gjB+UDixnt?`Anv7q?O9UIHa?$<_(-UH$DT8KdbZv%h}y+NxWACI^4 zA|U7TFqbmBWDrDb4kQ345SUtBl7mC1Rf*SnpgQyELg@towrHABR&H&X{bBS4cuPJc zAx~TfMk7nWpri{EL*7)pRD$8g?Wair;AGeR*UUechY6@`Z{EM-Pm+bt{Va?JT;d)! z`ub}g1h*j`So)9ss`(W&f_)E*BAEPkJyR_S_VQ-h)^`$?)yXfs#A%})94*6waTf7( zMlhR-Wok&pqAEI}2>+k(YAy-W-iC*F7N3FuM-cls*8U1%21fw;JDW?r*gaGB3pXe@ zqInU*dilhm*Fn~HImy~5JM}jR89=x;fqxls<%2?%lYG%^9HA?+%Y}xOH0w^dBeqTK z7poY31i9&7pTgz)II(Lh z9w8Zdg8%$ z^-h4J6!={&H4Vwgf7Nvl1k##+c_~-qb>e6U!G*P+IO3(^VR3QSvh}eF_A!5>JAADU z@4vHx=nzPneI6Gs!Qg<}&cbw-fk5&1g5cmBN_d)?N!B{cKb5Vdm%0`c@Mqenae9B) zTM5$zp0fDgJtYhi+9KbifE%JHp8;8STYf)RZj}SC-DHM(85M6pBI)1~;zcLW?!Pz* z!J1shYYb##QcU>4 z*|Yu4OXNbZMPlNKfz~+&;S?-^qI-wcYrRm+XI0{XqO-a$-M$Gn7O>A-08ACQY>n^T^lQP3#nqsw^wITngstq|>!94cBkzP=m_3$f! z80WTH7G}||_>%{ z*FBwAre}ys#~P-MT!~68z6qu!A^D8R|GC-P)&Gf3FJx|N?xcv1H^($x7A=ehacOga>XOY z8C3^5H`c%C3{Zi<5>~NznHn;nJTnE3G6<9Z2$gkk=*l%>*2@o`5iah?@gszlR*Re+ z)E7Z{HqdLPqDoXs6tQRxjA{IDZ&E=ceygNhx6zEiwo5sX^EPt1w-pyJ?DUfhXFk=} zAEaA~8Ek_ReGy%J4Rrd%bZcRMILSX8&IO%z{4jW1&Lsbq*yHSo#u#yrsNleu+x8RO zkC#Nur36a=$?(5ng>j_RAwT|TRgsLL)vOd*)qzXaswexmCZ&J@W76Aez+W5emQ~IY zmC_mH#9l{7r>D*T#$_zfqRL7oCGQU@)_+yF(+KHtSnkLe+4ZQ5-XIUtsS<@7^`tfP zKqxaYJ}TmMHPop28m_JEf1c+1M6Qw~Ta485Jg2u7XvjNmiG*#--G1KmsaXaaqFb?7 z>8XbYz|WZ6{|tW8kiN_GLe`q{-}8dn>>}FcA}Ypl-uf(zc)LgcRi;V)1R0>>{exqY zM-Ql&IJ2Z7>phd;gAk~jehG+6#V%ap^r!d8$!aY3b|S)T3vBN=h!T|+B-C!y@F4CE zMDzU_n5KVaMYQuUE(gQyzH6gAZcu{Cblv*FTYe2%er>N+Dq!Eu}>#)I`+z zmieJXWKp6(P65yl8eZ3zr3HDJ{hzrRyjWNa$z&^Greg=}rAFS}gE`gnLYzT0l9@(W z*h|eU*~WX6wMa)3m8aq?M6Ugk3l1vi1P-l#vT+ONP&F{icau0y`^$Y+5VNWGBJNwa zWC)jDPz|SYK6wgejS< z@vTZ|yMB<7XaQ$x&O#wUg$Q$=qkIf7^UJ39!T=XId*^YyA= zQ&++q1sT^6Xpe+=qCoZfJAZbAfTzHb$*iac0MacC?`#9K(|SEO9NO*ZS?1RU6{x*{ z{ibxH2;%m-u{>1CDif;NCTM!3T*7p_uStW0n)eBL(@`Vd3M4(qc8#Qo(>dUt)++ax z@zg)4#JUipVnhVZkZ)wj`h6PL5NzxUEy}N}`A6CJE|tk4zbG8wCNUS$A!o!eN$$g5FOSPI(7_mPm{i9^_~EqR}ZJ5-nT+~DAHYx zG5!Q%1@7y@4rc%-y6X3S2%K5hYo(5VhkJg&=PaEtX#-{cKZjnIY z63!_G_Mi7@q&IYQ#~yeJV2>N!_TDLHr|mUGOkq**M^ID>58_a@S6+x-`S@e>xzWFs z-+3Cayrvn;(Fa}QO?*4+K3?JeNb4rIhHDCA>Am&RkZ8H5Ad;%vCx1>vI^N{xL2Ojk z%!U}TEs1zslQlk~(K~&rW@$$n=#WHC6d3JVX<^X3t?MsGJm*En+)Z7m1$~nE5TuTV ztsQ(#9nUD4sf-?~Oe=MKd~fuK@-3zM`8RQw;L$c0le1?kiYPMW_$GJ5<}-*<>h=l zG=fh$1B*lbY&%~f8Y-uj9H#gjA&`0~UVPq}Cmi^nrc_)#y|2c;Y@JOEeW`P$l(bs( zxgpgmD7ZQRJ$52lIZ;l6_H-N&!~vxl;BsyvuH^GGK$&8!;Tt*k#yf$g(-do`VMp4s zHhLtLYc(FqZ$DvoiWVVEkt|~Cwg76bzj&TJB^Y$I3Ns>#f7O*F$6J5x*3&a_mK5_6 zJUFAcds~mg5~ApStO%rD4Bh- zY@n$adh0C(G*zJr<0+Z)M+myK7AdDGr|K0zK%SiY3_)=28!eM=7AnCc4y~uhYsFU^ zMMCBre2y>fx>GSRN#Duxiez(npW=tD)`R7`23nlbf%!KF48QytaKe`Q8)}hDXAIY@ z^VU?H%%?#lH|L2-w#1XJk%WeTpbw#U2xvUrcXke!p3%Snax z_v{^piRe9y=smjSCmQmU3qglEe*KpHNWV&xV5ZAELtBgMLM)O7^*%ZIQ!vs|k>-dI z@5CU#0eLcX+GcumMqs7x(l7jVG4IUzk3W)&g z!3hYyzq(GjO0bLCUT=J3;dH5|-Suy-Rns#`TUw2A;wP7q=a@UXT0GS^j(7|>7!K9D z%J@X3l(yIy8DmS_O=|_{VRF=@y}2Yo$~i-pFVDK2&fbg z#(EODb|-W*3&97A>p(pEvCiKbSKj=HW{OX)mN-@Zw`9GTsS;}n$0Q%8dU!V#7QbSM zQ^~@pws$@IN)6G!++IH>xf7FZ%qY$BEJp84=w>p&`6m6@yn8I39 zdX+P{{{xB!OR$b!MqK^e%ye~4h0-VH*HITR|P2by)EWG6j^|3>>%Vs@D6Phk5h zWh^zWn9WUxXRd=I#)#Gjv0PLg@m$rBe4tsQ`?Fc|TZe2DaK^0op|NCaS`3-Kb1*Ty z7`D!@&a`*C??1uL3NbXuqoZ+{Q+>c>#}fM(kD@*-C+NXVx_<(&UJdkk98YjKQlvt4?*K)JEn(q`Hh^5e6*3^q$sJqUd^BT(&XQ-{ zyETK*k zz;nKGR6Bs@T@wBC07itTO{D)5o`Y>^BX*o>t9%vx=)HfuTv5?dz?(N1C43d4Fx>`+ z4WGXiR7S7{&YNgMc__9yo+w)=L;%EE^Opm&>tL0*J5%=MH&=pd1cK#|^?!6Vo=8FI zwHWna11Om&T2e4JB>Dxh)ItNfT6N;4e?MXUMQOmw$5IvPyHhcnW$;GrI3Jkb){;yq zwyS2-%iXfey{%RG5tQ)Tj|#EEya<#?3@2bo&Y93v|Hi^0&OzcEJ$4qq;Os2pLY&UE zYFz~s_9~NVcp^wGCLX9Q0LtC}<;oXRi*`d{B&bP@oo2 z2R(v0p&M@juJ3!g`3mIO7{1@!D*;ntd~bR)LA>)BSr)S8hy{OVn23?jXqd-HJVdQ? zPl{H|P>K<5%3#p{g)S0V6zipTMHd#YxUk_2;?Uol%%vgN7B2BdQ^%YQDt2kNrlzOg zr?tgr`QPed(kaqkudW$?F#uKb)0|b~lU70Li`akTcY682oJI~6VaUHb4iVIz*)J&4nm!TA1u*re*j-KJ^uG zw3;g8evbayg`j7=E%O85!!bKn`8+_gl@l~;MF&87^KS_od_J>WUo*%lCStK_RZb4= zm#Azfb@1&z8qbdivn=#~P`;8Uh{dGnN2;rWoEwsebp~u%)NhPgX$bWFW1O4mr+=o% zOH?zJgUrigwprJM**3ndL)&iOWtrOn8R|lT1R2~&aIMHT2Lp-zlmNQn|ES@-*%4@= zPj>R}m@S)7NB*`eW{R71*Nl(j;SPq6cuas6Wp>r-nf=L|WzCwif@tj#g%LJrqK$9;4EL4*8nypCW9bWPT>{~3KeWflU{J{ z#$=+-{XBO{=mZ;$e|dpGrwYuhCVur8lWGfHHw9|E{^5tur{1SC+YeuckVe2*H{*<7GtCJB5d*tiBXlg<{fWZLB`&;Kz_|EdW`KCsyc& z=!wVcY?hD%Z|DEbgV{#aPh& z>OHt|9(cy~r%Q0PsJ#jB+YNMkmp0oEf zP@u?ZrHt!8D$d+sm)7ZKLYvpTZ?4;>O)sQwJ#4E%I=<(J^^gLzck_ItN#!8vy6qx`GW5sBnRupF*ASD?^oIuPsz9$6G7j(!aW1*9#e zbx&r$WDj6s?V4$kXG+Oi>!O>ikc`Aat|o!C$-6_T$R&;g9=(&?dRLwfxXvmI>RHL`!Xk>EzME2ZKh}QkYJifTWX_XqFZ%QuZtL1b^DH%f0ze z&wHrP$7tv`wOAU_&^@J=k_JSB( zg2?{t{dGkcJ}K$s*7;1+IoL}rn|GYYfdtKLpImit61{ffJIVr1S|yKuwn~7hRzU3> zF!q+_VGv$dIR^DiR?>SB6rriJA1&`sBzlOfmjP*t+OF8=|DmXnm51u`GWxDz#mHN`+y7CW}ClLFM2ssjc4eNo zT-&NR04>I8oGce|FTidaY&IUdgLZ+}CJCTlNKwD%N^RwOZi5pSB!}1PDb=$#o z2f91CCQ|iqZ(iWv%mD3LqrKZWJ^9rXX|K~8)k~BS>AlUs*d<%0n++q-mInQ#Nm|5g zs62qQ-%cQ{Jr&B%VmXpzp+D2@p`Uufl{S?e7f4gYnC6A~!yfXc%!z!7b!>CaYNTh2 zub5iF^4ol6138y7uh-bWmnGi0eh^xNIWGTUP}PG9!5+vTbN)Lf9OJm@yz zsywzPD1<{n*KStuzRnwY`rfZX+AxXZyEb2$7^~-qb0Ex{?R3`(f5!|XAx1B{F~hz# zmXXH;8|&A6mMsjtv+z~70tn&6W1$Mucc)55T~+@VA=6+-O2JJnw4s)Pw)6nfagS*6 z*OEsUwmoLs?I8e4oZHwR)#FG=_4PbT`mxu%VAzvW!ukVhQ_ch~<|t8%^j+nOQ7bae z6Zv{M{n_sKX)wp8Fql{w$L>F(45pRHv#)occ{VMrL`x1|GCtx%JXPr%OG6f&ugSh& z2**xqJNwm+sD2Mq;xQdT@Z)8D8qWF9I*?~4?PN-+&WZ#P9DkljPY*^TZ$SSDNE-E1 zF{?wBe40*t6aa=?>Ou#hy z9JhtwrxrkO2ch+xwl!4C3h@OXzDGwcm32(;_0ltC3rRvIVwAqoJxn%wm-5S9u7Btd zcOV!_gu6+S9BCAU<~dQXGp$FY2Z^Kk!Mw@kG_f)NtKGdC#h8(*6&FK_!8+2WthM~} z^MeJrKS?qsNGfVtw+_Y*g@gG@yzv0?q)QQ2GO1}2XI$=KDzf9|0HJh3S}1KNh7P{E zI#fHV7#|84Zs*zKmx8zNPN%v$8~9xgc}kvAy>g)dd!|~HGvV3om73hr^PsMp2p!pt5GC3n^)np z)!s`3OQE>t4D8M+Ux5CJepYKG7RaG;Y&KK!b?S_#)PY*#SBHge!SK~$jO|CSJidIp zn;KQxRJjg{QY;-Yy5I&iM5X#%3uhd_*x{L?VgO@5{K}0u5jM^6H7X5suzFaSQ3dMB zVowH8YLhw3un(2g#`PIc^q*;}$6rvHpS`L2art&%ZJX!Gq-X?9CwWsNqCU{A$O;z`0soqRRKMc1B%fWC{HnR8dAVR4xAg%IgQMgKYkEQUo<{4tY6kK46 zdNunhgXV<+i5Xh!5^u$bE>LEI_Dcy1IM4F6XN{N^UeUOA_HaHzbsb^(RU5D2U)0V} z2)91-soDnbrFPO;-yLS($4L(9PMbeMvV6bJR| zlnxHls-a?LpgLGm{i!;zr-H0kmWQr{p)+ibFKliP*5=5<=2^#{h*7nIT2jBU%;zMj zc~GN<3X|xN_1`6kD`q9%Lrv+omr@##QjS&8J*G}yO3owAq3yGgj^OwFW`DHnPRbW& z+b2-^Ya2 zQ)dqbvyMS_kCh#y{8yNw%Zr$bM^1f4PC1#nx4-@{2z7J@k{Q)9-+l@4(T3$Q4<*kTaviW8Ue6 z9`MkSMNpqNy1=y(uk$07#1DS&MfKzr`QHd6Lun#B`uX?hlA;HDmPZWGr~JA*8m z$=|c;2Ne7!+5fq*Y1N;aW94qc>TXbAX@xgI8MrCC7Yo<5VZNizsyasoY>)7@@%-}3 zv&#TfrK%M`caq^g+f9w>=3P%a*J~gUR;88he(YNeIoVexxJ1?B3>@>(ujAovzS0l1 zR@g9-Z*~H3kIg#EEL!dSq-Ec`PfpwqE%ZnTbSa~LTrd^hV)eK*Eu7DBHcFC;E;hQ! zMX5{?`o5>N14RvCMXSZ7AQ{hy;??Dwq5ZuaZ~!P06epW{Wj0F;#Ll?Oqk%gFV(!mO zip{A}#zjNJfWY|ACtw>R1gG|GOU*?`z*sE$!(9E8;|Vj*>3cC5#H0`TQ4aZfFtr#j zOs^csScFr1nqbuzwc-IsZK^*seD4m{A+Tv3ShUZxr_%I9u1|IE-BU*=v@F+R8nI}i z?nAdT0O91-8)1=4@3J@mGU5W#Y_k)eoc&ul0Csia;fac;)MZ`$JYIbPCcrrbdWMANPbOOD%HaCpNeNyaW1L^yba7uIJxNqw>v z9KLGuK}bg2%fTsy=TJ>Y3?;m&MP9?5D2Cf$hDs- z0nVE6V-65JU3~+*XdBDeSGLA^;CayM%|RwfmhMx`dG>+xWeF-)Um#BW75|4|2YbX( z-h=Hc)nU4&51a@}-^sb<2aDKU-dd(rE__zDJ;h)IBZUQJ)1NviN?0BMRZ8;!H)4Qc z+oP>&kIELK`8lb~ZI8`q3_C*%BG#594MuN{ldncMV)_eOKm+ ze!VX9ub1jpCPgyNKwTmhF}Oqg4`SJF_?fV zWP7KfcxM73I?kg^#KnCHpbcDd9crb_lQOFX%otp)0sHdp8+5(7T(AsW7XT(68tcnV zXUd+QRLuwFw)nISSJi(H+zFUQxrt_NMt*}L2IW3vS%qHR(M4iF!|)ihMcFyFe!N9; z;=RBHz(@V%0ut0jHb-hjWB!PX+Uf022rJ$MOs|3KFhuI!=0~6UzS;S2o-AQ^ZPz9h z?&I~SM#f^9V9lcbvZnvI!bipyd(<&-14!98;JGfCM)0GQB@fRNoFi*wFHYnDxgiWzPVsU+` z(~(P*Lp&{du$E@EBBf?O24O$s z!t*M2<-u?tZR5W9?@mgC+@B*OJ|QMwr6OTvy32&6yO@w&9F>Rliuv1@PuPzux5*!Z zod7L^9}k}Q(S&3@BT)NA-6D^~YuIL?v!*lH?aC`jEP(K@TFmu;W9KZKx|1EJKOV4u zDWH);K7R+KFOvfWxZmEBy|t&6GQCm*MuK{oezxAw1sHA;EkCW-u-w^QpASVz%+Bw^ z%c|8rCIfE!7rn-%Td*c`N1OF?jBTr=ISw;JrfAZ$4+DZvxjAKO3!bz+B6S7Sf{>11 z8-Q}XD2x_Oqa+Q`AQ()5PamhZrXS*u>&|t?(cJs|GBNcbF5nH$QnNn-(S#$&R!5%( zSq}smy*6&-%eA)jve$y9J08ZYJOYXyCqxa1Ji#n42|@v@ijx?6B8q$uz|VYH;5gmj zt&;DQXv}cnOXpF=wlG$CpmB%;ij;q|cKw|Kpq#AGT`!}!AxrOT%AkB6^&D-vpYbOv z4Dy&u&mAc+f_6I>(7z`n3K$NgsmC(Ei|mzy1L$0vgE|^yLF|3KaB}aAPu1&-C*fKj z<{!eU;y~m|{fT5gTM;&qHfQ;no4D72Jo}SO8G9sMw#9B%u$P=MtWb{vOBWe^^zA16(3Pk?|88=_pV6@jRHv`%#XlV1?hmSh#lI0YaR7 zCH;`#0G-nz}Yp~*Pa{Y2-JrDze_EF9L zM~d{Kdq?6ye7aQoarh*JY_cr#BfO9A-|LZ$P5Mjp_~&fe$@t3OTKXS|N_UYdyZs~n zZHoDNyx?&tw05UV(oERLk|&nGgAw|l-G=}4aH>Ul{u+n41IKOxNo#Sr?hlDXGXLZ2 z%~c0fj25rUbZ4_DE=gPO`0*gF7vy_`4%FR&kQ2=$#vEn=Zdpq7+Y|eVZ~tC%-Gb5a zm#rU~FeY3I)j7beI3vtkLsexz=A%JRx|rMm-YfN4M9N?&h{0Mvl7~60>EHq02|bwd z_4N<1_P5i2fe+z1JF@$oj#13|@ z244do2&p7+^%I&8kcIW72FHncs@7660;1f}Qny5i6YTN;pVixP3Wsbi z(GO$AICF0(sYyz@_ba9*D%|O@E@}0IOYjbemXd@j^q=Yy54K+TwqJmTFX{*#p&HIt@dy&%UuLqm&=V>E5PxFyx_Z*b zAVOYxWCTEdM*#Vau`147>>f|*2J=mAJM5=V*g+$8&?!G@B`|~A)=tHE4zCSD?QiM- z4!2ZcZMBvDXHSpa-dbV~91aX4d45+}X=pDDe%@8;eS%2TU9Il%4h?j4esR0#D-44^ z5tQveXvpWY@6^^A7_{&BjYBg`qB+KV{{#YHx$3}me%XOZsyupZtO1Aq_#+L{=<PSZhcS~>zy)2{QYA}>9+pmd z`dY#pj~*WqmSge6UY79JqflL#;X?^FG5`cFC<~uHkJj3ycCBIzx+TcPil(9O(7Nvi z+RU$_gWsohb^9X#jo<>qs{{8=@F1@${TKoQpS*vm5%z)7BoR*i5NB#?+I{NVJtvd( zSAYUv9)EMF^QCa(F<&LP+-edXs8e>+?#FFAKI|p`6a70H!-t?mVr#Gd(UyaND@BgB z0=s&wME#n_?;a@vp-nmFL^UtED(4QKZuOAD29>586GS@VEbTfL6hh0S1}U&*$ay7b1Li6r^|Y45GW zqTIf)VF3Z9k&*_H5-Dj(K|rMi32Bg&&XE)e=}?qTrKG!tE(Iw8L1JL&X6S}*4|Pe z7S>9i&_gTf{2cIqWb3ws#|bf;q>j1xaXZNq{II=rv@dvUlxz`WtPR8lrijd*niPo8 zjFr%RYWKd?ot*#)he#_)I5my3~;=|58chTa9a$jNavE7iysymm!4)RQ0)XhGE zuu_S+-By8kk5r*gFP1U#yk`1lHQ+7+;_%r5gxI7doz+--OGdDfX0Pc2;iT(<+75|< z(%R+68FrCO@4^^5X37>!n-{MJ>Z_HQ%7-;X+&_bQp2YdT(;s2c=LnVUjC1$U;B|U+ zFLja*6Y#Za-3fA3rHR_c#I$%ao12Wy2R;H53_C|}LD<9;wLf+}6r4nO@G*G!*mL5d>nAQw0a= zwkLOf*1l#q@u+CbNA`kF9G8+I2*wqu@8CC#b0RRsii_wRWucCzD& zNoYhqHkE6^457}`HA{2IAfRD+5B1YX^;~nt6n53h))xr$sEn%&2Y-u2bBR_GycNH% zF!GH%u%qy5L~va(pdk9c%~Jdzo8ZQx3r!slB-s;l_1EyT{)zBLWID4M9|qfU+l-0; zARVW{_IM*2gF6N2LK*=*f_r z?u7R6yM%|tb)3Yo|5r*Rn^-#iX!zP>FaV`o8)`wOut37;(ByyeuTYY{#lVx{6;O>k z&u$lazDKb9JrmKn_3XS9B>qe%t|HASgagot8P}?c#i%JS;4V6;IGnM#`5Oz-r zP0$l#@w*U>#X#%)Ng@9-h*J~AjMJnN=fcPxM?!Q6(efar!+1`=}q7jY~^ z9TIV7Y&fX-v!u!Qh4;FK6y|}If7rWRtLR&V%`*}4ov86ukw$q#{}`_b~I=WSxx$I@^8pe{ldl(+p;yaEiT^27#NMgtuG zP>kKL*Y5E>>ybI!_wzSopuUVcjYhmlK)cK}2g=bN2Yqh8_uJ6`&c;8&?|Sop<}M%9 zH?y%s&}>Y7ChXGvLdrIp36A~$6BCUrAC%sXwr?p}N3+m06GbGHS3bdwJ5NVe%(W|! zep1IvAE}#%R)G|)2vI;H$14;OM?*eX0-@mvi{a72%2dGxZtJ0C&OTrJsp|Fh}9J475hdVqm^j(hO~tUy^%;`Xn{PNc~3D`7<- z!FQj7dak7nu&T^vHnHfVZ&|bl^ZO5X1-p|0js^9Y`3=CaNZZp#GJXJ4+5` z-j`K85)lQP50V~rYs!b0tYczhi#sW&N?b3;5ef)ve!fNRcv$>5=#Avc{Yh}s=l!{- z&@bTHFZ*CmU4vE9#tI6(lm|66ecwahQUFPrziO?2ak>BFD((k?{-DlOCx#w`B;AqX ze7qdAj8qsHe*_n&lVAn!)-1zXL0HhjH=0chGyjsb218-~ z@QbiM(RVjPHB&u2-|Q7~4fX7^ejO2>e7XJ7ubS^~lfzF?>27qABQR>>v1aOiyiTzAhM<_vg3aef8*k(L2z!KjU8i*+c&n`FMp&2(`?1Mg}g~L_Mb_)wCZizE2su z=igOtYk%G(!UApjNDHyXvYlE@Gza0zhev-e!=Fk@yWox@WUK7Xpgsjj6QAQ4tgqTy zQE?eW?z20d!h(F49uMIAd{l;@rIDWS6T_zVo5D0e>U8CIH7mn~lu-^@Afo=<@UjTa zR2|Iz0a?!c-N&k(i}oCef)=S#+5%W4ILQcAi0Xi|*I!(K)2FP^v>{t?OrQO( zWB#e#p+k8cbku*w)H^@+6ugR8~5fgeFZM!_+P6B(h1mV zKd1U<9RKSMPe@=qX1F-CbCNx)q&4*<<3f3sR}NB2Omc&&w-ty#o241Qp5jhL98J2W z^?~wxtU9|>U=9BJO1_x5@<-$T&FJi9wv-}2R2}zyGO8vTr<8Q69NHSapVp{M7fi`N zPeovS_inP0hU2>6-z)&E>VHqzLLp-Pu%$J$P+{CX0+Uk!8&yjP)eThM+&|5 z4<)xfy|@1Kw%vNDk0TjQqBwq{s2O}*2yKD$(n1f)LQg_qXjvp@q5muN+q2!qbQ=xc zcud>TmLPB8286qQS@2(b_mB-rDUc9*E>1+!^`h?}ZYnT2UN}ZBD2SWOsR|oZJ7*1# z?+HLAz+MBIT)R$JH~g_N((zIIB^~g|LES6j7^B3bJd&N#Zub-Vrsdl6;gjA#&Rb#( zFSahBZ=oD+hlp!`j?z6}m^THYBn`A7_i@3r|2*)+F9f$TlN*|k2Pnwu^)06QWyc{U z>WBudoHPQ>&U8j5uL*;69WDHL-tU~}V2+O1NAeS|!9rqi0L(~t7tGYiO9EH|ezAAi zh}O;i#e8&~8mp;k#;GkvG%}9nGsnjcY^1rSU8eNzE`?VXKAX~OyP*9jMO(5NN#~ru zh15S`kj14EwwYS}@lje!N4CG2G?mO5WG%d(EMfwmeTc@a zH zFRg)k(Aq$s>1hRGD*2ilx>7fFt^y&$6C$SSDF>9g+Uh7V-%;CkR$V~dv({gJv<<+a z@2*|y*Q=aZH$Uf(;3?lmC1R*J+$R4V)7wm4y(8+V$a9ThsJ~zGRlYabFrz5@O#Qb; z&kWJe?^MrVz>}=|m+b?Vp_oW#uTWLE!WDCe?J=JQ^;6aqC4u5|TO#M=BIQ#RPwjFQ zh}4P@V%PHVH5ghy1}P`E{cNnp&LiUeR3}zCZ?P`DMUuFl;ahN^??g}E#N@Jp(VAi_ zvNd0#+4xyrLSAz{P&fEj3)dMgD|Kmp?Dz;N!$pPaNEo<#XFKJJ( zcnTr*)-}29*(eJ{))jx+$Kafcy@)|%E^2`^JN4mfWOKTb)I*%s_3DB`J0CjY0CLyL zqvWof^NQvn{7PXn{;T$Ez%YP9pY19&jyl8IB8-M#G1HVPXOtwHJ(#g(<7Au{#9o>x z#~i5}dkI;qE|gst7Wo`URB^r1x`|LvznamR1_(#M8mw875<8(6+Ji;W;>~RJLiiNZ zl1DqFM?2pH-sB)$s6$3;x?2-pFtrMN>q*-A3<@=h*PVC;^&lFBg z3i7AD9Ht_RFKe`iDiEH62rhuAFN-lg3sv>wb&--}1=n@{*RG2I7)WEI*?BG>D4aO5>u4r?->(6~kW)lcB{yXwhiRcDdCSFHMaBJ|$q@`!gp^H$^W!<64X_g~hT z5SH@23UT@fZFj{@`P~>3;~0wLLIQzp=O?v(Uo(ok`@Sf^?KYDz>4baZ+}2z6q%IP~ zA}Q&cVvP{p5CuNUr<)uppf24QkW+rS^M7Ajuh>B0w$5>HmrXRw`uOLJcwub4&Ky+? znQ-SOClt||nkb>SJbAz)TbW5XR$46&KrQ@AaVtF85=_-7%He zfzLqp8{QT@-#{VmOrcZ})&6jD>T0}SZ|<}tfFajF@#d!WdJEe=!7`{QKx$`->iYx6 zHrj`d>PWUMe-2xR;_kJ@^W93HoB>_nZ1m;UQZBuTN*SB`xC8bBj%am-QKi3vwtSwZ z#nd;(7MOLKq!zyAa0RG(>|{6sG1uNFZQzasW(vV|>yHFN}kR z!}*%D(0sbD4Jp3rKTOtW++MpHgFWc^&DZkDQ12Wd)qlfY?j;;>JF6UN4f58fvNu!N z@Txi7KIC@>fl0m6vumu-J3B9VnW4gatCg}YY$A3M3O1v8CI_bx4gK4@rrBdq%KnT}hvn`@iWL8w>#TG`OCkdfq|*z0I)8srDgz8X$#C%YZbHBll)RUx}O358F7x*kwo zcIZrIPfNSCx52j#QAAf}(sdyVy!yBiaUZpm2&Ng>HEHDxNegX=cAX}f(WBPZw25mn zK5bvdqqW!R2PZ~(ajWFfitQ~Ma#rdi%G8ytl8NJb{Bw(0l~fnE!aMY$d7NGbg_3`x z$Y|Wy&r0#Jt>2ys*C9P}a{Un!uSUHz5LZRIP&^51YavI?{eCIry*mNXOt<&PTYcHd zL0{ug3u8E%{l<)&W(+&f6;*WQxHVfC>`*NpL)g2Ty@4L3k5mWOiLXE;=*wgUD<<>A zRBB4+6nm8VjP6LLmkW%_=8J;+fyoP22-X z`NX}^+t&qAibt4a-|q-I(jWGY70)yl^)opvRP@cTd%fL@*~{LV(iUxJsQiaRueYhsF2ucI9`H*%IB;Vlo#8dOMBwEQ8kQ3_wd<7UMWq5 zTP^u|6XqOXefx;OBNry>P)u%;^}I``>$lIG$+N(b>M~%XS!;lE=VL_Kxwh~7I_^}n z=kA!VzuV%sCq7g$Kiwm6a?fYA)F_PZTTA>FStEvm{CUK7X6YICt;i(Tr+QnLz&6Cq z2mAZUx_Pmk_4xgbvEjRA_G6q3%Jz1Te6fOud0KN{3fOXQ&OBv+<62a2AW{uIQx9~P zXQNdq2KN%ID6)7z6UsX_*BW-&;7}bhnkt>q^_N}tDORYY-wVfGd&=8d@??eEVT3Fa{o<~@vfq$}dDfu%1wlRJ!KbReQLo#^%TFZn7H zl5xkPd+&{Jfw=Zj{FW9lLje|wkV$ghtJoSRIK#N-WDT{N^k0*AP{OH%{q@k8jTVv{ zR6ZK$;jB)O?#JAA=@NtbcJ!3>QWNfC03OOA_M_)mw#r3vWV_N3@uX>R5@S5An{L-_ z8w^!^qz}1;ZRh^do=6^q$LU85G{@{ZB}m93RWp?7=Kk=cyiVP8`DnBMZ4vbepcXNA z%v_xdXx+OB%b;!K&W>>+o&l<;?92fKSg5p_-`X-mjocP7(HK_sI~w+F5*av^ z?Y7P&S&u(+qY;ViD(<`G*HNN-j92niyCdV%+G)N<@q9ku2?ULJ$54SotI0S*vJ3Af zGMMVlQ3oGX0=~Tf00IP>e;so+%+QW-%Im^S=-e^Ij?4=(b%Wyyi&?ji^+IpeL^4PC z3kY}CHTpKM=zHteTNxbgWAIzo)zg=ZNL8BRVxw=Z9CxGp4>x!@9$5hg;5QihD=cvp zhEG6;T3xplqS;pNy=^Df(^@uqUdc_QBj`EWNW{lJm`7N(^BCf}5mx6NA1mB@OkrRj z&AD(dOxEz6F6$T>H6}ZV{wH2Cc6Fnfk?FfFmr6qc<`cG+7&Jat@~5muxw&6bUS#n* zxpjwmyg;MW{fL0o>$l-wmy1czJWp^{(}14sw~;}QZ(y!~X$$fA<_v;~3q-4bUi%3A3xY zkA&Tg(B|?zNd~pPiynAw|9$jl+=Omoe{XF#u5UqqZW-vV+G>>3Z>%fm-XpQb+*&w% zN-LU$V47es@|lZxuB%x-T12Kj|Jeq9$V5ZTPDLSJ1TwQ;Z)Qt@Ux)KIsQxR))_c_K zK6{1B>+$8S*}Zk@E-7{&G=Op(j+;aXx~wnCaEN<%E5hr_#d{KW!3!_S`(NLP3CtFYZP1_(bzE@lwJ*A!kbqZ-8SDCZZsBcC~e#~-=vsYNGXqG zlrxt%tg4=5h4y$Rqdv?;U`VdHQU0$V8uJFB7(3f6E{juUyCwrCh&#`oFOXt0*$^Yr z_b?ePq$E|9ZC!coDZ~P83{S$SKX3Aj?W7CGa2CzJHeDM8q&QyG>?R>gNB;#5fDqD4 zh0ukt-cSK|CHk?cx0%tH3z2jPDC_8~Tw<`$0+J(liXF;*h&t-hwToW*FQk;dDk&^z zPy*7d`bIs;$nyN(1*yNbNV8Ss*yobR)${_dj>dteT!bUOSx1rN( z=4|TmBb&9Z_cg3|_RRUF;GOG{qpAXt%i`7&ZzM7%8gW+B)CwTATk1u92Y~(!uAddS z);Z6?1-C~-$9@W_jsx;t+7G&$DJd~e&T1jWK|W~xdS6IhkLazYJtFOVzd7=aG90L* zmAQePI!uc^H!cz|f5F|X@Kc-mpl*QNS}r#El2jWg0M{T|>NU>SgVD0d&rB{X=0C=L zw=xE1TB~yrkim$T!Pei5j9$jFy^Pf(Br>L-5B6c>#^C6Htcr&e>eiv&&%`Ww2Jl6` zNTE`bb0J64jRyZ%SsA?s*Ud5CFl_(=&g;f9KU3^i5m;9tl}6Nkis+h_SKHg!lE4iiyT#ai}Vb z8nuxCI(>b>)kHBzPu@ypdTf04GUYuV1a-GUFc4)MdYi%Y8rZF<|FvBcV0meDqhY+* zcb|U6#~1n}v$YLnn>2Q$qJ=GEy4wnUOS>xf`f3u@9h0q7Oya0=_XrU8o#7ymm|12poSj`ePUAf22>&Igpwi{ZNgswI`?W zZTcP@H(w7Vi~qg*YPBFA@X2FO;<{*lkT5_+B;Pj1r|9mTl?l+k*m}z1mE|uS0{$bj zAvB<`cHfI1VZFJJk2bwAO>o0)(vv2d4K13bz>6Y8GuCD4MkHs$JInpvC%ZS5Ay1;z z-U2H)^RGzRh7_jH9}9F)$`;mxg}^7qNX&o68L46*J>J*eYc4#HS^t5m+d2mIuTfqTA zCmijt&4D{yfYOiIw&Lo4DIv&3ylV4W>!Pi{1L-=a^$$*`sk9g%`pLO5_T&Qs7Ovc> z52ovvuI7=jk`q$jF>xsnr6^z1meT_b7OnB6!15`NCFB*NV zv{P2TLi4;VT{nE^$PAltPtayL#M?);|U{0Fh#c^pXO#ZG)XN>Sww zCL&+B2{5O(PDx$$DiE_?XTvc(v|e7P509mLww=Oj;z5H4itrj$WDY1x2Sky>v{c}k zgBbUBstb&mTBzM$H4E3tiuN_?;m|Bkn-IW1|L0RdGBKPSWbC#FsAVsJg*pga6e7~@ z)e^5+^u0leDpY&YA~lmvH5w>p-jd4U3k1y=_N_xyAhsbaZA5~|O~!!i>G79a14W!c zm#{JwUDNF7vDe0sX0xUzQyG#px1x5}f0(tzXYMfsZH5$ZO#UbF(T2UT>aS7k;UCnA z4}viovb>zM6)ONbYSk-ds6vu%P-=4c3veMTV{C$+I`+p)#!{q%hA4Ex$~W{NvI;c; z)WWzTW1qvY=Bf?4Q3g91SfQO!mRA8crfJm?Wb=Bn--twkyx@u8h2ZrsP`nM>b_2fv z4shB+*FdQ=56hCc>DyrTOFfbvWg+fL^A`baJ%e%NorZxsJzNS;M>avoOeTQkk>8ol zcQqm;M1k((f#K4xc!1%)XjfDNnA|-+ggi0>cwY`=MmJ}!Ad~CA{B35x{n<^N>)c{^ z(!rYM!@=0!2P2)ufZno*G4m}jRjCvZCVv4t7jUO8SM!BlYY;wA;3n2nNF|9OY_8p` z+&Qp`qI`18y)Tu6ERR)YRTI$kxy!;aR3X%0pMiX??Xw^XJMd)xk&6|jhdM4~v}ER! zCVRGnNvZ;CSZe_+q8=WXbWlfg^^=bocr<2U840<7@S|1973XJ;$q#`?OYNhYq!%l|GRR!lgx~|_=)f}HdA4$$o=&x8Ay@R^nA(%29fAp7gCe*=QpyM&4pdjsY5ym z!W~GkUpQM!75`BT5P?-08jHV>?X|p+?VSbAhTuP)4H1MJb2#OJQD#u-0#22D>QEO4 zF}n*NLZSi(3&ax0&@%(^h(V140J<&U-2Vfv+-zK48#OWd?#eVh{c`mOdzsbzy&sRs z?RK2x4ScLfctQ8@)U=peKrN&>3ktk;Jl21jlGEIU%}ZVCv6}lKu2@o=wIb$wuR!XN zeYQI;s(FRBCsHt>ney7i)V?&}ZOP1=qk&ll(o6U!>G-rAwdYBGpy70?^4WOc@(+r+ zjRxT~Mpp|2iqVxMNjPp=Pu0?64t;*EZAv1L@8rUn+KeZqaUZlk*II1>R)3;iZmE+6 zno~N-@;h^U)L1x|fVTNr%A_yz1zMh7CAzPSXOIbxxJ=CzGFgb{6q#j~GDIq07CP*> z6YIm-aL4}am0`quaGOQjI`oX64>*o{37i^$8{_|Y5jgL-`C_0X4V;$y{3nV@LJ>9H z?gkUh_JMXU(Dx5rPWy9Jc|_Fe0Tuo4KtD^gvS{{yD z=e4~Xj0D55^0$$L2Hp`e-3<$v%v^IP{0p3m`vuNH(hL;<$9|g(sKvoj4U{StFQQgN z&#-6q8%!mE2X0;5V7R*p;u=!$-Ph`iiC|We>OmXF3*TK z7sQ50AxoAVt2CN(dzt_6eC;ab{1Oe17r#2kzkCE9`&i#N)R^-KFZq?UzDKm3 z>B7EDn%ldQy(_jwegZe9kNiW>MK?Qey)R!ooy%-s8kT{2ZM3_5NsL)cOt{XpU!HJY zTevWBePg@s)-#7LXN<_ClRBo!he0*)%zi{ynwU(v#^@4&qyp%?h7R8fZ!%Ty(4dMumd4VO?|bwHiBnqKxu8$8}$vC5E+9 z%Cglk6aY>e#ksFFIK~7F?pDL20|tlmH#NFgal!Ived72?YI#*y(c((J*Gx19a>~Iv z0U%ShTE)%La`Qlw-0#M-vqGA8jP06l@PqY9Ahihe>8>~j(8d6{D>U`MB(Tkk@isRd zSfFCBzBz$%E<9d9{q~X#Pm(P3Au4tR3ipq>I5GBYLXPD~=<<>2LD}a_;z~tfG z{O86S8bmhIx*iHf$(7wTe9^TtqrSLSFyh{t$NQP$9mUV4z+%K(LZ>_xTg)lpfBO zxjSg`#yq;06;tY7!qAwf7lU{-xtvoAO7a*U8qCEj96Xz@6trKy{pdZ*D}1*ynay#49oD4h^q+{lP2$mihN8^-C63=^>37T^fCP#>6!4RU+!= zB_P{~4Skkm%-oaOpSxi+9cja&U2|E+o1aYEWxZ{o#a)i6wEFGk+g+0RnYJIE*OK)W z^|WY~+hDuh59=63H;xj!lk_$tEpI zW14PAfXmAH@rzQ?QDNuH4Jeo|Rkh!CackIZ?Fb#G?2E_Az=ve?3L*($*0pE%lPK^< z?*RcHi7Z!HgSkAoLzC4S3kcH-4S#&Xh0N#3URzf4D4`~mr}S$^-x7S90N=XYlUy4} zYU>fGk?ehKrE(Q)UIr7%NaUm}zT}?>n949qesF*R6+gQ2)R{W;iKEQr$abcht5&0D zNM?+a|8C}29U%Ui&OKWpvn}$ z;&;cm4Gx?nk@^l1j1-v&v@0Z- zDN$bgumif@=)_&qLC)$y<(e3A?@+E`?-)r(vN(RaRIid?Gv%c&1KyuDqT8SCyWvUM z;q`MB4Py3aC9%k>qgMjk>L~d)WPnB7+&%DOi50J`7`;79i^5HD{ER_sUlE(4X^tEY;{bkAu*k;Yy8<{0B6z`MX& zff9dzL)XZPdkrzd`w{RJ(N@DPO5Yo9h584A#Gn0yEYerF9zbY7k+4KpG@TU&H0o)J zZr4tJ%Lr-ImEM}E?G+nTN#;YnNmn7WEDQ;r&=;V|HI0x6U)4gDH{qea>~-W!8K7`N zdQK&5a;~0t+NI=ZAb|<-=L2L=!#lUK!Gzvx>z)2>Z6r_?!J4?M5PSINYxfu>;JCNE zNSQDC!qQ#*w2KGMvqkgQKVQ3Y3+X*>mJ0sWsQ1#<$d?1)LllWj#r}9rLK#e{Z*WQ* z@Fsp9)!=6$m_z4yuI)cxdj;C&QL3HX{
6fbzj1AcKze_2RiDhbq(e&@8A{hu~6 z3w%ft(^ro_Uh_%425@*1@sPJ*WPg1LDuDIHYdHVsYnK5JKp^`-D-k)qLBfO0nEco~ zj@*wX9hu!4`gL@<-Xh0M_YO=}<`&-U9P+&qB0k8cI~(C{@O5Dl>H9#kJy@IRFQ)5~ z1boi;!l(yd**UViamPeH;%q{%4Vfh@CNkr?v5YId6lBcQtr@tR;5svqHeql*;IwVN z5WjKJ$JTH#TFCry14buIqxo#(bwqMm!`_dgWEPdYNQU7SW#k=RF#%JcyiTo03Fe&P zG6nE)8t`cpqLajxI0p07X>>N3G_^0vBtOEANFhQ!2lV2!pK(V@YGrNk@cp zGFtXOpSlkbp~=%JCC^<5zyJO#IZ-{$g3AY+?PN%;r|MwgleUgWB4NlU(CiC7P2?!b z^&aZYDNGc4Xs-YSCtvSVO!g4S_kjy#9at~jzh9*@QtvK~5pjqG>X;=0c9v9f-K2Mx zPVU@b82GVPpWJZmt=a9?!;qN%B1Jx(D#%r>J0?(*M=eMr(znU8>0K&&b8zLGEzZ{5 zmmpV|l@CLQBHY(dwfIGcnC5$bEc|ib{n|=NA855rbuLj>PrB(_4$YG}gK;fE{pR5| zzCn+5b`PFnaX0)EVorWHk$a0XN)&)A;Wbf)ttz{-=S!-@2v&p7pwi3cgrnm~SFj+a zn0)|F-ljy^Uw(ew>ZuqxAqP=;f{Rq$(fEsR26 z7yH&s!5{4#_Tx8g9v}6< zk{TRyg*t#SU%Gme5&AkjQDXSaI7(Q_Ecx{HrNNB3YY~j|EGseWMv1A+0o^3r2wW42oN=dN4xvat>lwP|i zIqfTq?zId!e}WH@txV4@IYLejIbwNUTv}(>6NE!UVvLkC?#XHg%e`m0MkmV8a50Ub z1V7>EC{#lpSipx8S2o}b%mjq+lD8r>*hb+i#!tH7zBKt!Y_jUd4TUP(p5oux*QrO1s)4N88U8IFO41JC1pA;&7%~; z%!#y=3o@nQDhH|VY=iF2wQRoEqY8A+`4lbe4i1e(fXQ71fL?$eV92hWKzUjF ziOF*=%TAp^@AOXg=3|W=LXp!>;aJfnwBz!I++l0!{p?LhftT|RtHYF0Hr zv$76!eGqzH`91NAN@XNL$oBxHM1NXS+|mYq*Ug9n$caE@=xlIdP}HQ9tkQ_BK2gW} zq+`Ug_W4{o-|H04cCa%104>jUarbIr;N=I6hNxfGzH!+uQ3SH0Ny^KOYY`aLucni% ztX5`~Lkhx08`Pl)c#{Jox21%cd_p-6@aTiF$&C9JzgX_kR2eLX~l2W zAF&6k!q=#wwYRr%$Fra0U|(D74G1L}OObBjRfuNQ9j7@Y8MfOdY+(QKtuSEZ1_vy4 z547^E{5nLkRUJyCc%-2Z47ay1m^8jpZXvugJ$2_a)2T zCM_g4nzqI2fPY|K%fVL_TMDY(xD{=BeNzVMInV)2FQymu_vs!fp$QJ@0O$R!d2q?U zzgVCi7=QnQ{4C(k2;|kq2+027R)8~`=kGua>1KQfzKr2S9aQKKp8^GoGv(rl|LGUe z`4j<126ttBt{ZHhznu(a$RW<(zaZz256qvYE2nMv?=b;2_AawO#`u6P54bQbHSRAQ z|MbR)^~BKr{M``vFO=UWx)P8^@vpB`#1{GAzaZU%=fIX1t?R+4evc^}3eN-N$kkTiJp{{YmbxF7%k diff --git a/tests/integration/plot_mpl_test.py b/tests/integration/plot_mpl_test.py index 5eee168c..c965d544 100644 --- a/tests/integration/plot_mpl_test.py +++ b/tests/integration/plot_mpl_test.py @@ -77,10 +77,15 @@ def test_radial_distribution(vasp_rdf_data): @image_comparison2(baseline_images=['radial_distribution_between_species']) def test_radial_distribution_between_species(vasp_traj): + from gemdat.rdf import radial_distribution_between_species + traj = vasp_traj[-500:] - traj.plot_radial_distribution_between_species( - backend=BACKEND, specie_1='Li', specie_2=('S', 'CL') + rdf = radial_distribution_between_species( + trajectory=traj, + specie_1='Li', + specie_2=('S', 'CL'), ) + rdf.plot(backend=BACKEND) @image_comparison2(baseline_images=['shape']) diff --git a/tests/integration/plot_plotly_test.py b/tests/integration/plot_plotly_test.py index 64723b74..8102555e 100644 --- a/tests/integration/plot_plotly_test.py +++ b/tests/integration/plot_plotly_test.py @@ -75,12 +75,15 @@ def test_radial_distribution(vasp_rdf_data): def test_radial_distribution_between_species(vasp_traj): + from gemdat.rdf import radial_distribution_between_species + traj = vasp_traj[-500:] - fig = traj.plot_radial_distribution_between_species( - backend=BACKEND, + rdf = radial_distribution_between_species( + trajectory=traj, specie_1='Li', specie_2=('S', 'CL'), ) + fig = rdf.plot(backend=BACKEND) assert_figures_similar(fig, name='radial_distribution_between_species', rms=0.5) From 8b458b8accca80890439d292a880868df2120b6c Mon Sep 17 00:00:00 2001 From: Stef Smeets Date: Thu, 14 Nov 2024 14:57:18 +0100 Subject: [PATCH 2/3] Add shortcut to radial distribution on trajectory --- src/gemdat/trajectory.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/gemdat/trajectory.py b/src/gemdat/trajectory.py index 71ba5fdd..0192a60d 100644 --- a/src/gemdat/trajectory.py +++ b/src/gemdat/trajectory.py @@ -23,6 +23,7 @@ from pymatgen.core import Structure from .metrics import TrajectoryMetrics + from .rdf import RDFData from .transitions import Transitions from .volume import Volume @@ -733,6 +734,13 @@ def metrics(self) -> TrajectoryMetrics: return TrajectoryMetrics(trajectory=self) + def radial_distribution_between_species(self, *, module, **kwargs) -> RDFData: + """See [gemdat.rdf.radial_distribution_between_species][] for more + info.""" + from gemdat import rdf + + return rdf.radial_distribution_between_species(trajectory=self, **kwargs) + @plot_backend def plot_displacement_per_atom(self, *, module, **kwargs): """See [gemdat.plots.displacement_per_atom][] for more info.""" @@ -758,12 +766,6 @@ def plot_frequency_vs_occurence(self, *, module, **kwargs): """See [gemdat.plots.frequency_vs_occurence][] for more info.""" return module.frequency_vs_occurence(trajectory=self, **kwargs) - @plot_backend - def plot_radial_distribution_between_species(self, *, module, **kwargs): - """See [gemdat.plots.radial_distribution_between_species][] for more - info.""" - return module.radial_distribution_between_species(trajectory=self, **kwargs) - @plot_backend def plot_vibrational_amplitudes(self, *, module, **kwargs): """See [gemdat.plots.vibrational_amplitudes][] for more info.""" From 6b601406a42814727f4bb76c9351fd5362047fda Mon Sep 17 00:00:00 2001 From: Stef Smeets Date: Thu, 14 Nov 2024 15:22:48 +0100 Subject: [PATCH 3/3] Fix test fail --- tests/integration/rdf_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/integration/rdf_test.py b/tests/integration/rdf_test.py index 25a4d3fe..b160a819 100644 --- a/tests/integration/rdf_test.py +++ b/tests/integration/rdf_test.py @@ -13,6 +13,6 @@ def test_rdf(vasp_rdf_data): for state, rdfs in vasp_rdf_data.items(): assert state in expected_states for rdf in rdfs: - assert rdf.symbol in expected_symbols + assert rdf.label in expected_symbols assert len(rdf.x) == 51 assert len(rdf.y) == 51