From 88b3cc9799d03aa109f9ab30bd7ecc048470b946 Mon Sep 17 00:00:00 2001 From: Manuel Schlund <32543114+schlunma@users.noreply.github.com> Date: Wed, 6 Sep 2023 15:06:50 +0200 Subject: [PATCH 1/8] Allow custom variable grouping in `monitor/multi_datasets.py` (#3343) --- .../diag_scripts/monitor/multi_datasets.py | 57 ++++++++++++------- 1 file changed, 36 insertions(+), 21 deletions(-) diff --git a/esmvaltool/diag_scripts/monitor/multi_datasets.py b/esmvaltool/diag_scripts/monitor/multi_datasets.py index 6ac399652b..c6bda52e81 100644 --- a/esmvaltool/diag_scripts/monitor/multi_datasets.py +++ b/esmvaltool/diag_scripts/monitor/multi_datasets.py @@ -60,6 +60,9 @@ figure_kwargs: dict, optional Optional keyword arguments for :func:`matplotlib.pyplot.figure`. By default, uses ``constrained_layout: true``. +group_variables_by: str, optional (default: 'short_name') + Facet which is used to create variable groups. For each variable group, an + individual plot is created. plots: dict, optional Plot types plotted by this diagnostic (see list above). Dictionary keys must be ``timeseries``, ``annual_cycle``, ``map``, ``zonal_mean_profile`` @@ -401,12 +404,15 @@ def __init__(self, config): self.cfg = deepcopy(self.cfg) self.cfg.setdefault('facet_used_for_labels', 'dataset') self.cfg.setdefault('figure_kwargs', {'constrained_layout': True}) + self.cfg.setdefault('group_variables_by', 'short_name') self.cfg.setdefault('savefig_kwargs', { 'bbox_inches': 'tight', 'dpi': 300, 'orientation': 'landscape', }) self.cfg.setdefault('seaborn_settings', {'style': 'ticks'}) + logger.info("Using facet '%s' to group variables", + self.cfg['group_variables_by']) logger.info("Using facet '%s' to create labels", self.cfg['facet_used_for_labels']) @@ -414,7 +420,7 @@ def __init__(self, config): self.input_data = self._load_and_preprocess_data() self.grouped_input_data = group_metadata( self.input_data, - 'short_name', + self.cfg['group_variables_by'], sort=self.cfg['facet_used_for_labels'], ) @@ -1170,21 +1176,21 @@ def _get_multi_dataset_facets(datasets): multi_dataset_facets[key] = f'ambiguous_{key}' return multi_dataset_facets - @staticmethod - def _get_reference_dataset(datasets, short_name): + def _get_reference_dataset(self, datasets): """Extract reference dataset.""" + variable = datasets[0][self.cfg['group_variables_by']] ref_datasets = [d for d in datasets if d.get('reference_for_monitor_diags', False)] if len(ref_datasets) > 1: raise ValueError( f"Expected at most 1 reference dataset (with " f"'reference_for_monitor_diags: true' for variable " - f"'{short_name}', got {len(ref_datasets):d}") + f"'{variable}', got {len(ref_datasets):d}") if ref_datasets: return ref_datasets[0] return None - def create_timeseries_plot(self, datasets, short_name): + def create_timeseries_plot(self, datasets): """Create time series plot.""" plot_type = 'timeseries' if plot_type not in self.plots: @@ -1227,7 +1233,10 @@ def create_timeseries_plot(self, datasets, short_name): multi_dataset_facets = self._get_multi_dataset_facets(datasets) axes.set_title(multi_dataset_facets['long_name']) axes.set_xlabel('Time') - axes.set_ylabel(f"{short_name} [{multi_dataset_facets['units']}]") + axes.set_ylabel( + f"{multi_dataset_facets[self.cfg['group_variables_by']]} " + f"[{multi_dataset_facets['units']}]" + ) gridline_kwargs = self._get_gridline_kwargs(plot_type) if gridline_kwargs is not False: axes.grid(**gridline_kwargs) @@ -1267,7 +1276,7 @@ def create_timeseries_plot(self, datasets, short_name): provenance_logger.log(plot_path, provenance_record) provenance_logger.log(netcdf_path, provenance_record) - def create_annual_cycle_plot(self, datasets, short_name): + def create_annual_cycle_plot(self, datasets): """Create annual cycle plot.""" plot_type = 'annual_cycle' if plot_type not in self.plots: @@ -1298,7 +1307,10 @@ def create_annual_cycle_plot(self, datasets, short_name): multi_dataset_facets = self._get_multi_dataset_facets(datasets) axes.set_title(multi_dataset_facets['long_name']) axes.set_xlabel('Month') - axes.set_ylabel(f"{short_name} [{multi_dataset_facets['units']}]") + axes.set_ylabel( + f"{multi_dataset_facets[self.cfg['group_variables_by']]} " + f"[{multi_dataset_facets['units']}]" + ) axes.set_xticks(range(1, 13), [str(m) for m in range(1, 13)]) gridline_kwargs = self._get_gridline_kwargs(plot_type) if gridline_kwargs is not False: @@ -1339,7 +1351,7 @@ def create_annual_cycle_plot(self, datasets, short_name): provenance_logger.log(plot_path, provenance_record) provenance_logger.log(netcdf_path, provenance_record) - def create_map_plot(self, datasets, short_name): + def create_map_plot(self, datasets): """Create map plot.""" plot_type = 'map' if plot_type not in self.plots: @@ -1349,7 +1361,7 @@ def create_map_plot(self, datasets, short_name): raise ValueError(f"No input data to plot '{plot_type}' given") # Get reference dataset if possible - ref_dataset = self._get_reference_dataset(datasets, short_name) + ref_dataset = self._get_reference_dataset(datasets) if ref_dataset is None: logger.info("Plotting %s without reference dataset", plot_type) else: @@ -1415,7 +1427,7 @@ def create_map_plot(self, datasets, short_name): for netcdf_path in netcdf_paths: provenance_logger.log(netcdf_path, provenance_record) - def create_zonal_mean_profile_plot(self, datasets, short_name): + def create_zonal_mean_profile_plot(self, datasets): """Create zonal mean profile plot.""" plot_type = 'zonal_mean_profile' if plot_type not in self.plots: @@ -1425,7 +1437,7 @@ def create_zonal_mean_profile_plot(self, datasets, short_name): raise ValueError(f"No input data to plot '{plot_type}' given") # Get reference dataset if possible - ref_dataset = self._get_reference_dataset(datasets, short_name) + ref_dataset = self._get_reference_dataset(datasets) if ref_dataset is None: logger.info("Plotting %s without reference dataset", plot_type) else: @@ -1493,7 +1505,7 @@ def create_zonal_mean_profile_plot(self, datasets, short_name): for netcdf_path in netcdf_paths: provenance_logger.log(netcdf_path, provenance_record) - def create_1d_profile_plot(self, datasets, short_name): + def create_1d_profile_plot(self, datasets): """Create 1D profile plot.""" plot_type = '1d_profile' if plot_type not in self.plots: @@ -1525,7 +1537,10 @@ def create_1d_profile_plot(self, datasets, short_name): # Default plot appearance axes.set_title(multi_dataset_facets['long_name']) - axes.set_xlabel(f"{short_name} [{multi_dataset_facets['units']}]") + axes.set_xlabel( + f"{multi_dataset_facets[self.cfg['group_variables_by']]} " + f"[{multi_dataset_facets['units']}]" + ) z_coord = cube.coord(axis='Z') axes.set_ylabel(f'{z_coord.long_name} [{z_coord.units}]') @@ -1597,13 +1612,13 @@ def create_1d_profile_plot(self, datasets, short_name): def compute(self): """Plot preprocessed data.""" - for (short_name, datasets) in self.grouped_input_data.items(): - logger.info("Processing variable %s", short_name) - self.create_timeseries_plot(datasets, short_name) - self.create_annual_cycle_plot(datasets, short_name) - self.create_map_plot(datasets, short_name) - self.create_zonal_mean_profile_plot(datasets, short_name) - self.create_1d_profile_plot(datasets, short_name) + for (var_key, datasets) in self.grouped_input_data.items(): + logger.info("Processing variable %s", var_key) + self.create_timeseries_plot(datasets) + self.create_annual_cycle_plot(datasets) + self.create_map_plot(datasets) + self.create_zonal_mean_profile_plot(datasets) + self.create_1d_profile_plot(datasets) def main(): From eb9ed85d39509c0d51557b4a68288240ed9124db Mon Sep 17 00:00:00 2001 From: ellensarauer <143390753+ellensarauer@users.noreply.github.com> Date: Wed, 6 Sep 2023 16:52:49 +0200 Subject: [PATCH 2/8] Extended monitor diagnostic with plot type variable vs. latitude (#3340) Co-authored-by: Ellen Sarauer Co-authored-by: Ellen Sarauer Co-authored-by: Ellen Sarauer Co-authored-by: Manuel Schlund <32543114+schlunma@users.noreply.github.com> Co-authored-by: Manuel Schlund --- .zenodo.json | 4 + CITATION.cff | 4 + .../monitor/variable_vs_lat_with_ref.png | Bin 0 -> 166402 bytes doc/sphinx/source/recipes/recipe_monitor.rst | 7 ++ esmvaltool/config-references.yml | 5 + .../diag_scripts/monitor/multi_datasets.py | 118 +++++++++++++++++- .../monitor/recipe_monitor_with_refs.yml | 24 +++- 7 files changed, 159 insertions(+), 3 deletions(-) create mode 100644 doc/sphinx/source/recipes/figures/monitor/variable_vs_lat_with_ref.png diff --git a/.zenodo.json b/.zenodo.json index 083fa51356..aca2f05a12 100644 --- a/.zenodo.json +++ b/.zenodo.json @@ -263,6 +263,10 @@ "affiliation": "CICERO, Norway", "name": "Sandstad, Marit" }, + { + "affiliation": "DLR, Germany", + "name": "Sarauer, Ellen" + }, { "affiliation": "MetOffice, UK", "name": "Sellar, Alistair" diff --git a/CITATION.cff b/CITATION.cff index 49226a7fda..ffda318cdb 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -300,6 +300,10 @@ authors: family-names: Weigel given-names: Katja orcid: "https://orcid.org/0000-0001-6133-7801" + - + affiliation: "DLR, Germany" + family-names: Sarauer + given-names: Ellen - affiliation: "University of Reading, UK" family-names: Roberts diff --git a/doc/sphinx/source/recipes/figures/monitor/variable_vs_lat_with_ref.png b/doc/sphinx/source/recipes/figures/monitor/variable_vs_lat_with_ref.png new file mode 100644 index 0000000000000000000000000000000000000000..31cb81135d62d0a9c2715ae242429a0dccf052ee GIT binary patch literal 166402 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

a=6mfQ3+oqg<7k39kvi11lRM{#HUmX)&-L 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¥Rs=k3J!2UvC+V@MJu%o9 zMH3rl!cWx=0l8{(Qvuwq%bOYU>+W3b=83a$OQnU9gQRM7XB(|jDYLak2U(g?nf z{#+(ZOJ2#zrN}fiGb7L-3R#=!!5b=(O)&~AREnB9S>JrEtAeK(=r3NQbYUy)Sw@UV zK|n0}sPZpF{00?W#U(MW(n^Ih!7lEa91qDHHFy3T>jGR{0eKp1j%S|D4p*da>&kT39KO$vxk;lhp`Vb68@k&k=7u_t^Nq`8)6|CF(ZZH*=X8dTH~U-)BT%i zEB9h!Nw(zVs#SOr@V|6WC%P85i)eULOfnO^!XSuuK7!$3j1A}7osv9X2`2lWdebVChsSrCb@C z=xHGV7FNistJgjCGkY^TpQ?^*)M1%W-mvA|wjDm6(C*gaohZGAb^NvVJ7&RX^v6&Ra1G|6#4z)W{~VV9GMvq_d{kaJ{K zcTgc!XDhAdb1)@!*}|uG?2Y#!>Bqw;s&`TFjNd^EWX1u>4sSs$NjWgwhLd@oCZ?j1#G}^W`)(9(GPj7IDF`brDr<)G_aFI;^pu)^s#R5 z^baINtI>{8Kl2^OjV#DzN*_isxvZdd!%72}#}S8?5k!mN`{*HQ0ehQt;$X$z13nV8 z>#H7;o&j&9Ot1%ya4Hw06})D99pw<)7X>6**kKYn$t?q!z<}y?K++42MoNsOP>tO#>3P>$`W zvv08#y>1t=aQFPN6{7P11sf|X*&o!3S)1ZyUD~si-h6K57cJY4S5swKK5_$LO*wnv>Ei2QAzx)DC&5CPSqo@5P4q+ zBI`6)*_Wr7WPqrEi`0DijRj+uYt!?a#~XE8j3yV4*e?V!ohI@t%-ugjIh|eGK%^UC z@U@ZW&Q5DuU`tN-!uhMKsglj)ZnHor3?$sdc0_Hw_bR!ei4H2YiR_fHg24Yc@51*7 z{|3F?jR3OW(3J4#wr*6!$$^6!Dkwjg#e&Y^H$FSgYl8@byDCzs?lhOAq zK5%xO+iz1a^S4!;&nO`Rrwr72>p#w^e?5V>gbSFg;DUu=d}tK0bmUC(4aCTUa`Sq4 zs)D1w<03}7^NnN0z+BbI%|zqQZe5X$-TY4S>_{WKa>6vnM1uE@={Nqqt~cw{@sf9y z?mkt#H;s>u5hN*%@!*iA$nN2`(RTb_V=eY)&C0`;{U@Ok*zy-YSa}r~*003y2Aah; zf6ZcTSO0uwS$5x#o7KjYz4&Ddm85KQBsVuT#d~5u%gy##b>C;3(uWI5hT_hd`s*5a zV|DI0O-CQwlUzF=krDDvHYc$6dYmm?jr(Wo@1@^&Mm5_$y{7K3%%>QUxZB$5&5D~^ z+*Wh-LeOX?iX;@R4;Sy#7EP6)*z5Z55_r|RN#EaKFx-9UC`;dk9lfc!l*9P=tzG9M zJ=7Sftq}L$b(_kP_BT=Xfy*5p=C`^ivD91r*~BL$$YfSH+dB)*g-37o>^QbrI=pGk zB@kC2^f^ZLptMt`9^u-#ZDy+ciu4$WMn; z8h8I)RchIcvAl8(Ydkb2Th!F3UHAQA@7TM#b5K2!W53i`Fn2C7F5fTT*%{otvT62p z)ZqeoJL0z46Z0Cn<3$l-+Uv9;D`~T5IS={6L7P=T8vjT?X{f?fB7T^aU&|zfi)z() z%0HVzwYFBF-~Ybr*^KIl!?h&Uheu)Qqvd`J7d*KXs9hcs=Ogv-dWsu)H zQH&i6eHpqsefvn@rm-WMB$Twz?L_D#DOwm?CAz)ymn=3V{>&C{Ok+xymDIn>DFX2o z=||h=cl*$4zwOv=|E7qe5Xqw>)ys%XGq@Wk`bzw6Wq$k4(KiQ&pn+MWjAjgRZ-&cb z)YE^_tJf2QBU#6j0rMqn3RelS_+mE6MHdjscXydR;3+#_(vWV{`Y_^JyM%pmtZu+S z=}BlBK0PpKTyV%i_ub5XV#ptuuN-!JVI`R1>yF;XU1UY`NJ@VnJLdHBK^L+^{kHr& zYVnM+sx4Ft6Qr4rbJmak8Q#ih#}b@l_MWktY{XRY)@|dlqM~Oq!qn6!Syg0vtxJ++ z|Gr(u0jd08=S@FJE}4VPpT*C=7{8MdXsEq>OnV>p4OrQj#uF02c< zwav*BpXZ@;lza5wBd(<1m^o(-T4>3gKs?Fdy`}t(z5VVB$GOpoqLp0kX9PlLPO?w* z!V)^B2Hzc!8@^zkyz;!*oB2vRha)2`OwYuDc)1iOTZU=&eBc{mmGHl{8##4XKjg_9 zK4-5K8{0`;)+TWu$w!OXzl{3h!dQrshZQi&Y#2?ymQvNHS2>rK{d@pB@g|om1+x97 zy4#aJ^WL*QA95?x)*p?^H=Zjzz0j%~eWPHXF`ch3uXz&h;x!(k5@0t@bgEDB+sBmf z)BYbew`B}siX4=c!@-Amzr;1);NBb)H8)-|esUVCxqdenxk1cDx85};6aR?yB~Y^4 zz9BG~M-TiGoBKiu@#@s_2Tg;gBq7F++ zHO!?iP7x0o`7lXUR0+ER9}jK7Q^(y5d-eJwmAr5N>Q~x{Tba={7;_7yERv&^137Lp zQ(@`ecWje+&o41vS@sZU`R?5oAWJdDC>-%j}cGf~;KSOYwa({!j#jg-7CZI}%KPl(YJ25W8|29l~=B;h-9xcYG4>~(Y_m&&&P8q}&IHn5+J^z5EJZAV1xpxImo0~1WIgH+PtAg7y-x z6GIP|Ut>SkwjZT>63^H+;xBmj0xvYb1{(*K89#8hYg}zT`(&+twC-#*S&7Mg;1J5q zE%t*vl%};ixFLEcn{E|L@|bOwl=p^zt$p&k^&r9UZ_V^DLPKo~|6mfFC$$co(L@Z1 zgQJ+|(@kF;`j>KRJU4z0)?KifJ>k*E7yA3tt*rV+wt8{E5ox#Meh#rE17Tqwenv_#nA0eLeWO_piGB(jxW2;pO4?7KC^A?GF z8Hhy=6t5@w<-M`+=pz`qjDHjLV z*ur^aXd&W2~MHgRe71hda zaO=AGV1(|&^~Gwz^?t^#P$#pOH-qK6#)s=ox<|G*#eMWuFLph~D_+*r!?ih{%4Xjy zMlVLeO@L_pH>U{sR_%JF)?f^N`ok4lI`M3JWuRfieYDhD)A5P?$Ov0jbx^f;$%!tl zc9apf%{|W4&wiGa*#~it^z~4q!BUGyw-n$nlkP;QY7>9E8KdeC`r6WYM=CdkMrA_Q zoSnb)q}omJX|Mm=uf@sKpn|V>+4jiv^TQQ){+yS6HUU4NJ>Ni}hN#msG+MU^zw6i$ z5Rx9R)!LrWmUS)N%-*WiJ!_jLu0&mgpndMcW<<{?8=SJct3tT@g;W4bgh*>lWcLs* z$niAI%u%=sr#q64o`kB}VT~@oer%7e8$!gytd!ong%q;(^XrV* zX{wE@3gV4HV^`S4A`)b#g1GJUu-lp0ZBO(SBK{v!R~b|V7i~e5?!2^w zbV|1f(jlTqcS|E(N~ffNNH@~mAT14obR(Tt>eBCAzV~LHquUZpD0I#z;oN8b3}QKdUlO%IiD>)soFIV&Xks9N%L< z&vOi$;-$#F>YB)L>@(AH-&w!ybU&=LZmInDT25>%p~f@NY&ekJ89B8FWh~}IXur=j z?ZVktmf*+xw#eSrVmz<$1FpQ&vh(|q-#LX>H&5KHy9<)q6+c8tukp19bL`&~31;M6HGp+Lj-(X?^N(G#y^5vS*Ul?WGw1={@n7k*R}lO zZr3Eda*vY=xiq+4Rc$ouk6gpCKU(2;L43b^L+US7;)un6{q^{>XYB*Yubd@faCA)- zyV9y0EdQMxwF1gt276jepG>~i;$@nZ|@tPe>7eY@xl<);FG1vd9^gdwU z1;Yd{o-<_1^qo-7Pr9QCkgn5f&Uhh$F_N7Y#dVJ`Ry4Wkc>Q7aeVe z)zk47^Z;NKV#f%3e~-_6af4-KvW0XYxUB7X5361dhFP8u~Znq~$%C;W+_^ zt6GElVpLmlAq-}>d!pXl$djdc4V}ZGNJ!5V*fQE0^_#hVwHIB^a`Bz%MHc!bub_V# z@fq%Uj>w9riyVZf8%OXcIr4}_a1qQL8VssjMaqutX&jrBdIes>-aLa*e_p&ALtplk z{Rh3kyZg2|{lJV{TRMf}ZapvmXHEk|V|}3_k36ggU$<}g{n!MKpwAC`y3Rb8f?0SE zwVp*=ybD=wt-``ia{9dGk5&X*jT;}U@S#wve@^-l_J^Ioh$ljoQczbMWHibO5uH(K zjAy|!g!CLu(&6{(xRSf}qfD2rE^KFGT|O?}WGf>x~!Z!8ZX!@^OZg{AkQ> z5+T1x-%DBdrShw~pbaefViHl`l7g#6RJGrNo#EfMOA^|C!+0S6*faI=X8%%|shHU9A6iYahk&FBo?E;VF}1YwlJL8K zPieD%J_JV3+9u^AR$_wee7z^iBH>I~xfLaN(Jd`l!`K_~@jQK}U8-f280_H9)0o{H zKh|{{=jwq?wLJH3xoZd~bxD`8mp&c(5aV>=T!EQ3SvFcju@tP%c?)s*E)lrAhwT(h zN#`Y2sCQxBrz(k)HdAz~lE}{_KJ-0(7{24-f~j^3+n&W=jrC6Jt~fQ@FkhOc%y*vg zxRw{yq)x5cNC`4_Sj+O^K(k%v2CQy<31P6PR7X1#CyNT~aYhE?5mJMbL+cFuMFDKe z5O1c^IqBwngB&-79}IqE*4__OE%`7vu>AQY!Gk3Gp|Lo8JhfdOGV!XHj!h?PLp_v* z!@k>If6kww*$L5NZrfC}BJ!1G_G_237Mf&1S~c#wxqkt_#K`6fg4-3TNu#@qeZO>@ zMZchq_g=a-dq|a%{eu#(2FKHA93L%sTnQ?GnSi_Xz6&GjV-iP`%-ctBYh<=FGuWKz zvKlA3mRK==o|Kg}OVnM$^wxv?1IQ%bxEOXYL(^+Zr1pGj4k6y?rAtX8L%lO6H5v6Ht+4eEBG6IQ^R9Ke`6_IPe1CuqU|)e$+=1@OkRH zwblYH7%y&K&{+5K#nh~MlxA(igV^nw1}`rwNmfCmQm52(bb!X7{gHH*LQbs1y^BdK z;RmAL+vmpx0&ZDVBV|tJdM5q9WCqekpL!lf#b9pPvmTU|zvw|xT|3=t56*d7u7m!2 zsh8|+`4x%E{YBD&@DtnN)GrCmcjzBPR6ns=6|-LyN;-yCkT%zd1AuO-M26aLiPxLo zJ&9KC<>Onj?0i?gJb687>y1vrg=?yec$P9h&&fCq=`)xY>jgE3Oz$N)!n^)B-O>>&Nz!}te? z@T`pkDnEVcWg!!NrvdCAf(J-lmhxNkU>g#3nQc)7)C98hYZd~LAz#3k9%I3?2QAiN z=(HR|Uyow96TO^MX%Jf@Fw9c;y^ANbfqvS)SK6vnqbnJuA@Xv;z)-7T`x4wvj@d(qI%TtM`~!H09e%y)^3b>5pJR=2H zA5g57dtWZB@m1S)h(}EWm4t`6n8p#4b+w7kdx&uy9-nQPaf|21AdSFbNN8v`Y=RKb zHicU9CAG*`!%f6-GP(%p&#Ktg)85I#zwFxCD{Jt$MZHhJ3dfr|l}U9>IrKgs#cHDU zK9xV~UsXLfb?%xfEW3d-lYS8CezM|6%2?Az2bGgvRrj>n?=**)mV65*U*9{ z8{Wg1U*z^f>$+)8(Nt|B>7@z2TN<8~jibrN)FUG{hR#3_f-5%`+3a+izdto^&OXon zqN14I^kK)wN%yj+wu2ogh@RF*xo;JB3F^Krp4n{U0Vh}_c-N<{6MV&fk1?YUOmL!W zcf>&828*dCjRaNpiFz^7b}F#HmpI8#Zk@x9>o3lYx|ZtZvA&SvhZro0B6{j=lT3we z>sI&XuUI-#iqC(11G%^M!VAuoF}lm;{mO%Z>AZ`2+I*{Oxp2a_%in_3UVYh;;YfVg zx6^scWf3VeIrPD3S0H!LqhSEZW@mIY6m!^lj#$eDwK7l7*P0*Q-L8Sn3Q+Iu{SG+& z@cF)$YB?LdgQo1R{zy6`<>U-+b$ZDjX0{@yM)`&C&+5TDSwo(^STTBRlaOAM z{R;PP=}-~vnvmQHy7M@%*XNt|LC`B(>aIi~%HWv_FE~H$@b^xc)m`U;{BkM zr;{M^Mf4k?>Yp*Z+R~BjkUBhdwdOlp-UGd;bHV^hM(0(*Zy1A_j-e?YSdsEbA}#gR ze^G&G^%y87lvk-h;Oy4_h*FbyjD6%GE*r7;T5AipH$NKQv%NciI^I7P-1BpK^2#ea zYnQ7Rd${wk>uag;_w%o7Uk0lUxp)4^#W#hqU8_}Zy7agM*80?H{{9{btUJuGCvL}t z*zv7oQ(e(MRm-&G!%x)X#iaXfa=caVS}(-1-<(28WiuicHQZ>?gpl_v*l1|X9e|8z zyd7>zUtgmK96`Ywq5bc=rBMG8JJ*4PwlA;cMS))xMF``fON%X?$9iAj zaiZk<+mS+(@BuRD$})d?J*t?Sx8Kd-mwv7)ROQK>of@*6wO(kr^9<0$?qG8&yfr5s zs)fI`JMrpQs7{*?n3H*`=5K|-xiH;cjH=yr#5;VA(6R7MVjFZI1Q)KJs%K}~_fHmW z%@lDE>=_Qt>Hv!Wn?PiT^Uu1)t$g?l(WVcFMlb(Hl<0tINPQo7?c;TYywN`58P)LR z_mwi-dp1KQQuMvCFD~3#m9@C+*wI|BJtd#HNIhIbP!VKs!n&MsMtXmJu1ve~R`VbL z(diK!FAP#?g#o7UWt2bdh1ENrzja@<{bYw)zGrfWpqY%UA+6E!fu)a_4`o8aHP}KSn+;w^dH9jL%A~;hJ+lwza3tPJda1dr%}4wNFnP zi%y5xHo}Z#eF3PfNFtU{X$ zR#Gs6Gg+hGE>KasQvUcUA<^F_rdrlPsan!2AwKlVNXz7V#sv5_ojZoZp(%XjT^9CU zSa2=;p(tNYbM50m_!rG2zorD6NNn=_GC$t^#$bNc!Gq|Cd%G64F-%bLaVaJSRD0C= zuvDXaDU-~YdsP$pR~Sc2`Vw1~9M=XX{UC8=euVM@H&pqPcn5d7gR2LHu+dSY#S3oU z;Xj|)qzrsfiOO&BH;yC_-|xh_mghw%Nbh%2XW!!(yy%80W{#t{iJy$G3BR3Yt=%{z znQR4IKfKOYzy3%ksB!%o!$dZGZ$#%;W_q#X7P>omaS-?5m^=Widt;s;iH(iz6ZaA; zkAC_y#D65cT=2)*q3c-}bOEW_5t@J)8ohh7zh(b+YOc~rhsO6N$;I7dg9dgpz?f@G zXVI0A$Q*e|sa&XaqMdX?1BS~PW{`s8;R6Edid(oUri@DC%SF?<{;iXBpa`2>Cf4bU z$b^tXf7!-!7y9K2hvCKU5-Tb8#jXjL%PJy}ozc*-W=`59eChNYFL_GUJ+RhFgl zTJG7u==WU*XKvQYTF6TVK7=6{AE0Ar>$pUA)-KWX@}aGN?GkQI5PwczJ-Gu?H!8W1 zNG{G(T)eY)qVQ#Xt-RI(DJHrGRouo zy8p4vWvmy=fJLxBfnA<_f32~2qT_;e@5iwHDORp+2S-l#95u2(VE#e~LEGY5wVgB` znRfMu!PAYA_MeGDdVgqZmN`u#Ug{ijORXE3z)@~>XWuZ1e$pa#VA6rKxlANio81L7 z*a~i#FSD3wHyCo<+?^BA**6j*F5D=!SGwqe{s&9NXg`h_2{&u(E-iHAnLIvRSFiep z1O?L7@%cUbPZKxg4xn_=@~MfAUV8ug@_rrMb=f;KN0i4>N)pn_dfBkc-LK_8kBHnv z0IfOvkHnLGdE`hlmym)M#Zg1`FKN1F#bVUHb1CPY?UH~HE1v4DrLZww^U`^E=*x`$ z%r3b6I}8=Dt*dUeU zzf#o>;g7WR^0x+`v5BU#WmdBUK-C&AZ7@*?i7Wz^R}!4Y%H@~cAm$do7;tcD)}a*j zcC(08cD;-;aEV7%fie&mi7u=$w( zsI338S%`X8Ua^o#&A@EUfuST8mA4(8$~)d#k7a-+j|aaqcAEaB$I5P_=k5)+@D;|$ zLFudW$XMLzQ7=F0jG*2)|3P2~r03`E6jzJqjP$x^7?3rTkJgmV;7shiLGkyNnvHZe zhMu`1%=Oc63?$)F_mnnvvHZ;m^aq^b$*>gbT@bI> zFZz=Rsz?6TrW3AN%3qjZD#mk5Xml`UF{Xw60~^-5Uwz~DdqYOm=J9CBbKm%8XNk1o zyfX`uLKbv#t9f`a=x%!{d9&>2G-fJs5m*f{jBCeYct+{yC82LU?8$2oHK_gzsw+$j zIKS3Bq!V#jq|4`h(A#|-S;=$~=3iOy;rn{K@Y`u6phe|hqcciR`eb)1yYH73HQcQk z2`(pnCep!xR&NQcetcIg++QReN3R*8BHb>ME^`wXk{L~q@#$K8FeXf{?Tne8-Rtq@ zB%b8RzZ-8~Qb0p(8~d;#j>gdNXtUdBy%%~ub)r7GUizBM$Nvg4D5eqR6!enrj135d zmO?e}AQQo_=#1C0u}ilu24RN7YDP*qu@&wknb=!$(g!(zthq$R$fgZMG5zlPm0B)m zp247hX18vIfH@BR=JeZ{pti2th>No}u}#hq=e6c4x8WB^txWFuSI=F-%1D7 zij^OmTEX80vd!GQm$r)^CsRnPlrOpTiU_r*3&IzK*_4b zB=hMr7uup=l67osp!>65$t)LH>1rtk48RV>h$JcsT?R)PL6Xe2Zv2HM&MPFGHogCb z8EFQW>vq3tSMpyr>soEcQN{H|4l{U50$dk>; zC`ql^`pFCy4z7Hm#hB$^0D)I$QfrMy{e=qy|;#k3Nkch*n{qx_??6p@B5A$+yz zXT6%xf@^cbj!8t@rLD6|=qi@=Z@ZiSA; zS8wm&$_FY{%89^Q95;8Trfm*EGtPTt9zJy1*{xRxO#+1Lpg!iGJ65OHzeM*=Q2+PS zNM*{ek#}fDl-kjuk7Uay)=(5>*0c8dI!rCEkIs8R*?*;+TEt89?zz7; zB+Krax0BU!Xu`XYXr>}RPbf^F45JX#in?NePg~wCK@CzLuNn=oq41aFwCMF+e2%jSfE2 zY1_M`i$RKY{uykUFIUeFs94=${4^eugk#+)}CzSK`?(Vuwl0x%(# zvVYN`)?fhHJFHvyex8`we@NV`gv{>iGbpVqilsO(XyKRG9EF&a8b zs&t($0_j2Wb^9#=OuL)C1^~j20a#Vl>)x zQFX&6G}N=Kf}7;U?=ab!8T9EKgOXQ}YvBTjZ#%`%B-5uBMKo`0zbGM?uAoK4VSX|dzAB% zwWO>Lakn2_uK8m1uobY=t|;U|bsVQa53*FZW}r{g->_*ryENaJ9gE0!Y00C&Q`4cf zk%3d)2CEJS%aMuVW}x}Bdswjoo{Rl<>R*Qvm%ERz%`huLF9W9PC%7FaRG8kl^JR}_ z{s){I^yO;}TTW~Z1;VGpDEv96%k7^E6c!ZpOt7W?Ca{XM*r|EY)g6%daZ&+5ahnRMVMYld&Ilom@IoqaTI1=TrR6ryhW zF_HxvGXc+qzHb(OQLi3F$#nkqkUH+h$){n+KG0Z1sNgHdlyJAkTDsij(xu8kCq1Y1 z=qnyKeQ!CK1{bxZDa}HaKMT?6Ku#!@!)B#=4jStZB}!pu$xTW7XPH;U@6|5*t7F7e zdakq0*@Ai}T|el@;%L-6l3jJu#N^f)EYM|-(a7VMCG(;B-K>6GJra7d^to1}pBRM*}X$7E>qTxA@@iCxV+-;Nx8H@T7OZqO4 zCA_V%>NeAY*_;#2pV}-j+6~%1x8w#BHrOY_Lgkd8Z)^7Zg7Er+XaGk!YgY76CUOZb z$igpJc7GhztN}2gIRBGXlPx#*+lfEJGc~F=eiy);@a5Oj-K^jO+4V*gbCaQ%2IsQD zn2OOfhMUOSzxuE=cI#ZQ?*RS3*sTZ<2tOP0Rq~;bp(*^&f$cc#d){S4lB7l+^X7<8$k;-8mtO zTTotJHC1A`sO+ZF;X;Dd<#x})TDuiI8j)xs@~%G$Xr}*tYWYMnL6t*-UN+L4=7ZJF z{MKjT2ls&73Lfoi&}P3Fw;ZXd@Y-4RNakb6)61B3D?yjI8}w|svJ%&(NPlWEBeFqN z{Ia^!Pvjxrh|2$FN)JC5`R?fA8O5amB8^GGZa^|=ZOHyb7SPw2{El#rMN;Nlrh%R6 zYVnTuR4t5hsQ^eHwawkt9oIdxTrLSPGi2Ibp&BwYU>oTHyv6-oJ4*oj%om!BT(2gaT6X0u?EZe`M`J+NMns2nYwzC@`k{=E z`OiSVU!(J?$-`~_kFLon*ft`fZ6eaW8{QyC!LWAx_c4IWb+!AgrV^z+tE@C3(>GFX z_su&kP=8cItxmn)Q}e0D7;UY`k?``R`$9Zj6k{~H1-+`&%VNI(Ml;CimVG?vb{ODA zCg`l<#O?iiHKED%lOxi0LFZA(Aoh)8?wjJmY49j2Akoj`%%g#Ookq4?J7MEj~aoohs zjHIpD(A0n92ZUMX77qEJojW@$7E;oaDH?REaYZ}smq{dWNM|{km6_9X=6>85<$k!> zTKK^US)!lHW_etpMzAO7%TCTLdO|1@ZfBnXCKDlx1q2(tTtrvgrk}{IBy%OkjPz_? z;??Z;_JH!n1ClwVBD%4ob1;4~@z2gJ$Pg<%(Fyt*$i$h@&4N z5PGb?-cq+5^$9%y!Lv;6C=RJN~1nWTz)^v8t(}Q03^o zmPH@+eY1MyGdG(+G!hl1gVQUph9*B!skcV0-(t?$YYu$$^vhHDSkV72`MR(VX4O1R zq|3DT_SboI!mUDmVKFIqj-F!_6M6)~C-2REup_waX&1iD6A|wvhWh}mt%Tf)QI+G& z6Y0yPBz*e?588-?+>Wuv`#+=|J1!m6D8mQH1HR(l`j!2QhZpJ%C7N=EuYq+0KT$jq zh&eBRf4uX`ojB;BzN{lVpTY*qNVKH8SVex*%_;` zKxM^K6W}3t0cjoe=61^&Scum=j_#)|E-OUDSWKsQn20t@87QklDgbLxdkUNh09*7( zmXjwjhPN}6FTRUJ4vMdy^zez7EmFqEQm~3EBOug9akSk2!6V|q&;vA42nA4h z#%Lvf{XT4xDw!cxpYsVDznc zj!Cx=$D{?UsFAS^pL$>)9sU|Zv`+Us$8mH`Er!00P-*f#+&H4gM}}ewb?3#pnK?Oo z&td^)BYD$;A#Y;gIb75+IudUmAvpJ1eyv6X&TYvKD=2v_iIQAUPwpL>EqGxN2~kAO z8ygNgJ>Hj<)m>ZPRkJH13((Ig$^yGK2>!P`l5H3RTuadaXio_3aWBz|6SV^Pvgexg zn5R~}OV61sulyeQaG*{nea|Fr{Ah|1kKak-#W_36hi)GGBaO&DnG`6HiT=If$`)q= zBGK%LMW#%VnA@SbYwuIqH>7^F@CeeA#YL@6LWSY;v8t&b0cPy{`M8N55n~qlOQ@${ zt4aX8R9{89rvAjYJ(9$u3iG>jPY?EYt`|d=Dmag(jaWW*g#ifP$e@w4HCZ9{_wcu8&6>6aiXzO zq#LSQIiMgx~@ zSh)5^66&D=KQiep?V~DcyfY>3s6fXgHo`u7(qUOw!#+vq=n)8T?%pi$n-C1#D8Msf zR3b9xRKB2H2s_?=6EqP3{wB63w~sQ(g1Ptpqz93Aev!qTP}r6F$ES(Xu|$#YaD3#? zZk*jPgMctykocm2sJ*1=UYbvQKG)kirJLf32Pj`(9E<1>9*qa}(O%}?O9AEo(N)!P zyZEr|lH&%!%(SjxARTuoDnd*mAG(TE0vCTT7*{1R6tuXbCd3K^ov;VQ&z&&mB=!5J zsA2Ap#s*Pw@7mVa5XG>1qaoZn<7e4RW>?#$rmWt!A1qzhqrQf`9bw`vSz=C)AT{SU zoXphx3YLfNdPSlk87io|YyEIwv`fzsZQH8d2zmW>3X(hInUP2*^7?#<`l(lH_yyz| zOR|0b9up`Jh>O?2cMmg;aA(6uP#RI_b~))O1scv#EIpc|i8;DSfXjvh@6>wxAkGgE z$<&s+AFRs|fHR`xk+S$gic$uH#hzJKMJ%W5@v`fk@vnj#z#xx*s3nRnTnc+13i65L z{@b(xEtm3J#vhd@hCy8XE^p)3{J{Dg^pa3C^n&bL{UI*Oo@2!E&Wh=+K7*wttmyX( zv;J*=658>IsKu~gE#Vi*$dS^&UD|`D@Mo5X|Ea!R&%57X?nR*wTK~M)E19!;WGH=F zdOWn#xu-4P%Ou6EVaG0g7go2m0L-7$(0)`E(!TCcfohqE{tKG zqXFR*Tnw#m7sekt^=yF~L3bzG5vvTKRD&x}xt7iMV~|HYI9KFfYh7=kwQ1oJ27y|b zu(MJEBmUh-O`LdV-of1;x3lqsD!GGSBK*Xl-Vd1XN{R*ZbN{;-c&T}^G|fHiD?lOs zvFQZNmgp)GIxsyhZX)7%{XgEJp_4TqmkhgQ!>FHAi@b||C-jQNVp5EMpS=SbhiqhH zsPI?@zJD#&nm&pckAN7}#Mg_i#LUZ~Z(|_GTU^@>F8@4cZKW#p-MfE%yCH$d)NW}$ znEE;JnM8n$1?u*aN)k!*y$A|$av13r$HL|Ar`)|{V?JSpZZY&|b*t(@l^sp!GxR75 z#oEV*)83@Ow4MB4u;_4nvyiCsJlRMId;g~Lf~3DHa?Zs*+jUXLc8P@FReX)(o}1p*P?i4r_IbLG8xHz>@~Y4DSGvnJ z61>{}AFo5FTWUzNQ?F+uoz$K9pUyem@ydteIZWBNc#rf zjxw{|*qPj11u0uYYH+jSr?pvAZzcjWuCI#z{R(Q6PP{F=+v8O`EU#c_!k> zpZ>`mbj_Wweys9yz+c*Z{% zB8beQ@Knw8_i|s^;cFT$0HENaR2eHGCiG@-q@-tAb4W`s?v%00bY>FV3qyfPor0zC zoe-VNB%d&JbuOnf8KCMZMIJbz32k!(QbYsYtFA8_p_n{tpfe*pMB@6< z?2*);EzV5GizIN?eAk}cL#=pmgfQ%|a6-VErJ|6Iq z2sM7BMb|Ss7cs*ISHcb8xUvV++{^SFE*u4(e!vRf4R&onnMcHx;UOkGp~g2o_Z#N}>QC%_Tp-vn~K`3w@X0z zlm4oiAZ_;1hi0*h`ce0#yIn4o_k6`)K}$qNN5&l3{_+ zBb~h7(o^QO3KA|}P*qPg3JvoVOC(XMUH8AzCoC3(y06TlVA`ue^u=1yA2=y~IDzp| zr#`@h&LV9JZ~u8{%c7Uo33TJ*ZH9KDTt6K|w~g^+Zl4ePcaibwb{l)+J3ZDKM=K8A zIwzU}Hr6o5&2qc*ic^FE>^W%-Y}hs)c)F0y{AhR6Frijsee@V6v&+oV&8@zo_Z{M} zuX8KFI#KX&w`r6U&1Nt_<}R=(*0}j)f^pu)xot=;kLbk?ADUQMo1e44^o|UVIZaO@DnJc!pidy0b(L9`%M>qA?Nu} zvIJ7`lV>PE)hSqB2m*~I0QMhd8zuiZK0(GCznlqHCD5Oi`)S$L$Vqj35rI@__1c#i ztRxZ+h9`G)E9{_&u^3)1EJ%?yl|n(*Gc--Xs2&u6sSX=NF&F|gAUf>@kAeIJ@_L20 zZ{x84)i8$ai*kbdYXZF3D;q7I%*sFv6CfdVUf&yhYz6cTwNP2iRT@5*~dMW1ZvBf(R(;P zHsM_7i{}eJza?22T$;9%foZ~LXb)UPPCW(3R*4F;R9-ZRcMLd3fAy0{Ku9G-B^||C z@YD?O$gO&-E(cCx4XzBRMD^RlNuNyZQuc)FaR=jsYKY0xzRFUsb*k^d^zme>2KeY`vcIvSL6?r^YbS?> z7T9g^e5Fp-Ix0dgW61j5hrX9NY8LbacxNi0o+=DJeyX&XmMy*6SntrfdKaBA8TA6 zYexDt3*`DSxUp34yvAMeR0+dy}f zQ=qb!ZoTAOeuKN80QAv^wq_<%A;styKsM&C-INkp)GryZy2U_4I908n@sdkr@cwUdn>>wR+HkvY~|S4@_o2Rn<< zacC%1fl@`thb%Afqd~_LGylGj_KBw9cvmTQ0gVo$4j>c<`>%)J#xU$0-# z0d9O@Di}WRBCQFU1_2=AzK*33R0MhpFHi+qT`}1hp#Ae}{}@^--!wYR$HP+Dfxo56 zSeH5}{4e=E&Q&NZbKhWoySrR};rAx<30DM_UxNji!8vXAr)sPWh8FSH24SH`wOe%} zt(xrx(otYqzbD^A>NK5IJtWWmm@$aESUyB({R%}41sIw(>lAs2 zsQ=mzvv#HPZ@vgl5zwG|BZ}xY8;MDOoB)!9Tzri%=>JjS)^9#n{`K!0sVH=uc)=&n z$s$@+ApOM>^v9>I!n&q2`!0KX!d}cUq*(9uqb!UF^ns6)T z2qbbF4MAK?eFt8G!rKNk0o@YO4<~uiC!W$?6YI~;H0!SuxQOle40l>+SS)~nGtG!n z{0VZ9P#-XtIe2evOao^=7zYw}tgnTf4mg=Mg;>3Eaq&Jq*+mIH3ZHPd0hGXU*hq5r z`lAaEa1Wa&ysKwgA|N;FjF(9HQj>cOza^%jAiC)O;7YV*vT-?h`%3+L^?q3B_RRw- zjQI-;bCKWPrQqB)c3N4=KO$C9eE$r7$d*9U1H%b%dk22#9JinKy#pRUQ?1^12@!<6 zE}ZFMYV=~Qa=SOc704WyD|wnqPPlHN^6L8jz7^lM!IU?m3Kf8O7_-M0PePwK#(;AHY5NfKB~@>>S_T*#VO7&oz~#}VdfL^X)+wAuC`kQ3>T zj=iUOGjV11Z9@m$KMllz@?JRU38IHr!1dnJo}xQ1Ju0f2`jUF{+{mW$Sem{^J0Kki zIJ5KqSOa};;6PbI(}!?_Z-6noY5oh+#*E)f?|)easaPb+q?vYrk4`?@JXHhPfH|^} z6=U4VaBx;ab|w-A`UpT<+@xL{A>l%oT zQ6yRZoJJ;N2=2F#-OA_Bd!b?)2>csX#aU03U8CTw?FA?> z=urV#A5ebO{J)YF*aR8=CsXe;9glXM%NAX&@{LJy%|lS&{VSsSj^FoQs{`XKj8eHX z8Qx)L*A?@$vkQoswY%-h3Z^Kq09XnU|Io|s2;lm&TAx3EfiHnxynKUrb7*e?`5q}O>aeJ3N!Yee z&0N;C$BK~|ge#L>A#1>w*f-R~WRYM*% z0j1E333S6fogZt0`=_FmuN4Bm!LM}B!Ujy&K}gcXP$%Y+4HS{cT-hYH=0N+9u20A79=P}ZkKFqML95)2E0m{b~2>ZYq#_3!_= zTpU{H#hey?SY9eqlPPuqXnD^T5GivbAHX4VnR*C~S5LwC5b3PsvR}{Cqn;UmtF?MF z;6||xxRNzC5@`z-UKDSszhXM{Hs%vwbbmxu?&&5?UY-ZGHBcsR&BY-sp-b7O<&cy&q8PS&$71xUHU2W4t z@PW#>v-%7-if<-WXYODfY(McNyE_F1Rhn0zlLmCp{Qc{>Vx- z0#Fj8dg$tvUs@Yq>+crA{BweUCJBJgpUUGim@}-|iUsi9WYji-B6+6u6} z*_#+;ttV#rata*CQ<|aJjvE^rGYyV(OJJjD%fA6u_l>XbkHP;K4X5xGmXz!to`M3w zfLd|^1moO$+efzewZ;T(q@Ji5g3d2IyeBalbVf^oZ(B|yJm8*A;I=!sTIlfCzS-@u zb+?e>W7!ka8|hj6u zS$_Qaly(66%{q?{wQ`h`}3ZTg+(Ec4M@mR z02hl3lV1ITWgfPAN5G7tfaH?hZzZ`13>4+hw`&`Wr(Wm^a)Sj?eiZOxVA8zX(kLaf z%i6XTqfCJg7yazx=6nj_G~!PmU407zc^E68w-QJeN3(7<3edlE4MtE14{yV=7w`mm z1(}UXfwuGG$#gp+Ad8?`^cw-+OPcfTcaQPtJLm5X4F3d9vhCa1ST(I!|M5@f*ma47 zLqR6_B*Vy&?bdxq@W*}kEbaLEtE@SEC@XMK6b^cUFF z4tw7da$S$S&PZ_Ka2W@mQ!rkjnQTU`)NPa%)|zZ(IT_gu{GtaH1pkMtY{9qZxc;oG z(m`8z>Gld0xL5qkqeA8po(}$Oi+9}@u|naWM&_lCdc5FiW&UEC9^7I&tD4Z1R?M&W z*AZNBI1ZYv+=~fXLA%a6FrOVS?dEiX9YL#)L8{~uVr5&W2Hn;UPiJm_N~>aE`J@US~ zTe*n$FUNq@i!j|B;nNfEPcNl&Q??xl;DGiH8qv7u*=cz97g0_T^QaCUAjPJP)D4x$ zm?DK#DgD>o_v%UzDnP--6bm!WWBkin0AO_bkoZ%XZe8~eNf%6|*1b9R3&Cs(g4tPa{y|4mDSA1fee8#iZSr^0fawguWtu32kM zMCEg;#->?;AQgiB%EpGRv$HcMHum!~#l)4?i={4;XffngeZLVh&Ndh=eE+)gJu=9J z>rB4@QOv^(>b1n4YXdl)Ra{Ani?8(^xi~HDo6*d>Shxci{9%S9WUI_K=ba$au|(35 z0*a6Ce8mJG7GiQZV9dK^kKfz&jimIHwF|t(fKrdq_s4IEFiftJeM6IL3KjPRc$<&s z-`8aWCzU(gn%Us78v5{arm^kh7!9T{NA5h6NYr*l@Say0J%AdWVMC|&X=$&B!T0wv zXWVeLGf1<|Tj=gzQoG?=cNmD2wbS|$eNeOc;ft7~! z8~Sap78LqzCgGmO%tMfF4&p&w*zdBR4gTH9g;zed&G^iW*I<+1AjS%$B0Jl(@Ur=1 z4%2d3$hEnCP25AOyQ$*XDv);K&oUYe`7f;G{$cGM?K?bO8Gm1&lUt<)O)tucJMJo$ zIeDf}y9+huXm~;vuM8p2=j_syS{0fG;pEe3IoBTW45pd)7S6Ulj*v$wmPY~qtyTlSG2&N;BxC}Jkz0w8(~!Y$;6DaN zeBsi^rJF+%vHW!A(TW{MM=9tz`tytTKLEpmH`xL9{0?%$|2Et4XgWOOV8mlQk?zCO z<{rkcrF8ks>8Ex$^?e}{Hx?*gGJd>oVf1pKplb4^s39ZH3M<^2(5Ax`dwT3tLS`h=xBE`Z53YFz!KkI0bt0JrD10NldCHjolpt#w`iz5iSFE#YD~s7)O!rxcP9Lv|uJuyH z#Xs0_YF^@r@QwExMCnytTW+s7qU~_{WdkU?uP|N3_^{-HjDU=koZSY^_|~ zD|}VMxDxrekgdX2C1=480)D-Wr(qy9ngzyFP`x5^5`TYFvU`$!E3S#{n+N%l;)wNe zb)cYT9$4V@VNXfsPX>vOb~12-mlwI8nA43m;Hn+b%9C}oH;|8o8dQBV7Y;{kvd?Hf z5_%IBH^5N)8yvTzX6WHFB?k5457;3Me4uK`6niT!s1mj%_5BS`K;2PFT91R5cjt_M zkth~;8sO_Ec{QwwE^mR`3kFgImFG!9tF1>O_=yic)#b^6KIt>r?!YH$+V25WygotF zY^~OWro${TsM@{IJ4@H@fkG;lM#DiA8_%g8X<#yojMa9KKCaOx21>$Tg0}V7PIo3s z%U;RKx=8_cMY&$aqWUg*uQ93;;wr=z*00IRjr0`T&6G;1}WCN2Br3Ri&d6tbyWI1qwn-6uA`wPzo|6hup@p(WG)+mcL+@?-+`K%O|2`Ab2@q^+5Qj?dwGkmTJ=O7K7RrT2wznB;VmBdis?@&!{gCr*J2O zIQs%1BdYfMfqnCy*e+gL*yX{02}neN)@`J+r)yCJ>c-G3bjNxYgo@;kaAUgM7lQkG zP!>`Kc+Qx!O_AF-Oo(JWg@?WIK&5;QCICM-)j2Q3jM0!$2?;lq@faGZnAFq-WuS-F zW>m|GG7it!qw=D&Lz}F7G@w?Nz>?ad4#UR*ga#nyd_FL3>`cLNZ0prVfuC(P#HY<; z95l&7=l*>Ge#TqSi>-_OKU`gPRMkt@1`$vY5T#SVpi4j+kq+rj=`QI;0clWL+JkWD z?o_%%nnMT(NO#va2hsPgZ`R`e<^7$BJ$rUM``JRRdU{%b(TNWfFczXC03i2#Ys6dJ z1)wb&>pfXnPemNeJ%K0R!D@RiuNjJFfYKR|OV5MQf#Ac$f&Vhr2)7i78X@->G~iVi zD!GSGNr}D5JqERbYW0_r35kh=KPdV6#&MOEm7CVcB2dY&V4v>?xzx`%X|LTioWNS9 z*+C)@>MBa}Ak8Xpe$)OAm`d}3xBWC7&QFD`R$qIg2DwpQl0IJ5Ip-1g^mpC&AJ|mG z)U~(DjnDmcM^fj6hSFFY6&8<9A(7wj8rl=s1g~G3n_Or*5CC2!4_2&!up1lea|jC{ zakBf=wNb#wo{@F2Yg8o_K|Ax1#goP`J-@lJAGBTYH<_8h$T$rGb}Ya@>Wg35UKR*@ zk~Lx-@?qOs`(3o?bXbe!s%3t`Nk3@qIQTlJB=Yc(jIq5#uz32T(d_p|Ut!X*X@N!w zR^6eMLC~|Z7(C5v?Ci<)c!Y#Og^ia)b8~Zuu;r8G)OKKJ+%G!lTlUA-`59^f;eQEJ zd$*l`^`I@`sTQhDkB`q*_0vkkL`=531}}QUL_{GpKY>{RKh=H%&T_0#B)ZAE_J;mjs&iX&tI;SIT+ zU2X7ym->h14YAjtQcZ?u`|z|PWB|QQ3=~fbd#2=G5x7vb7%)?@VbZg0AtR8`I6@ly zq4q(64I%l}?nTd1TyE7mZE!D7_I!SB2izQIMG$u*P0yu!pmQYp6j8(T+YygL*E>9@ zEATj(jun+i%FcM1fsVv)x2V9bZDRhCPsA+LUM{DcdESVxpFx9Y3sSyn0nGa zcSu+9^Ri)rs+q+uFn`(=C^L;nl*1mW`xP6rA8+dlLy05aKrJ2xdlrv7<{{%7ia7{H z0+RP2|KDV*pg-$3O`CehzVen9Vcvsb#p!4uI;fqj4&_ik3L7PJxr!;*JarfC!YF3$ zWSf(R@U;w9pX=F~CU`v0JBt%i)%~$lUvsM9XLEs1;%nT*{^rNT!!F-Q>3BX?lC`53 zDb9`ew2=$St%cqno*&g1lJZwZv}V=`BIHaSYz^r|eHdq^qoYp)#K8xK4coV?emreb ziXWoQ{N!Vi2iuNo^B?zwAeV}M5Gq{ML#3qj0kbx14aRku4|)b7BzSlq;&i>L$9j~> z_&us<>sNphC>#s%Ma4?7w`vK*9$0Z3jdO4wp;2-nX;ND~<^qvt!hs94ZX$WDCtkK} zCR%7u!?D)AhTRWh!L{VWy~2Fp$aG2iwLvn44ZYXBLAbfinZiBBgkQ>woL+25v2XwCAoQW096k>% z5fPEf&Hlz@zMi%);+?(JD-y4(%6y~OPao>ItvtC$%t3E@2Kun(3!0s1D=Yg0`@O8D zU~KKn7-|Cple|sF(2CpCEa91%KPo*DL!KE`+THEO{v6USC_dh6^6`bsGkMdMAh_au z_)l?)>_>NFb67seiM>MVgCJSWtO53|;4!bDEJ7(be~GvTA6_qkpU88RFPY!pfo$+c z?-G=gXXbD6`9dw|Vc7Xr+G&^kwX;4E8w4ZWzhsDKCp4yfe~eEAWd{T>^sgtJ*ZaBn`N*@;s<(sr88+7 zuyTR142_Tk@azbPSwHP?o+na?rmGX%xz4ba3o1iEC6)DH#2aa8RD>4ccoutUv`mbU zm%XcDrhS^T1@-pR*~djjltha^Lvg!^2z*m#*;3$2ivxgReT;rT9*-!q9<++CQ`4V# z=N;4Y9Tbk=lUgI4mIC8TAwJbWn!U($N(sI z-@I>AJeQU5w4YzL~C3a2sMz_cq6Vy_oZjl>ko<zX z6e#r^X=^}7h!*eJv}eE9n(G!%zX$!8!PJJIcwJ`!O3wJ2iVfOrVOEu2va?r`)*|>0 z3Gf)T#$T(03}p&56Q>~-MXx71fpDN6WT=Akk(<=M_6E{WMIqIIzJ6dFV4McJ!1=pC z8C)7*BmAiCw3v9o4`^@iGl)68B#%Kj8%*AqZ02~&@xWxpCnHAZ9*=t1`N9a`TtQE5 zJg5i02Q~*%6FrKbX8-v^wG;;5|35Pa5 zwdaPpYSE+N=wa?V$})Hb^|q!j3_(=__whcTUrbEQT&$+GptAA^*VtC=7XOqJ%xXFs zfDXsFaF&Iz{D8~-TL+*g*dN&L{6a*W4!QOWPM?B^_k+R{TsTUGD5_k_!at&x;9~1^ zZGzGvx4!JbX)6IUbEn@gQ>6Ly9%f=k5TwM;7XM+24XEXO9y1pAu#&a)z2?fYvYc)J z(KsfsX~N2?stfSBn3=6`joH*6s7!%Z{Lfs<*~urPiN;R`Mh-A7`?TtF@0M;7}Lw>NPHqSNgrZd@v{>UbAx)SbyB-)0hULA@5A2$^5o=@X-y3B-(Cm z;PGC~=ya6iy)_08576(qxX&T{ z9T!Lp+bFdjy|yYwe^4^WvVDE4a`V$eKYqOD*{nhmiy-4$J~fKd{vbx~S>_%I5(|%@ zuQaX2iQ-RDt@+E^*VEl^@;8(S2fwKP`X~Y$q#_@WvqICaru)Bhdj!vWemG{^ zuRV}}qr`~n*hy!rekLL9C@FvhV<#oTScYD&UEbC#ACN_z z-=B};y`9g#%Y#S?F=h~Igr&S^F$3WZ5cAhIA>}5_3n~6HMZWj+c|*3} zx}?Rc6aOw^jJ#dh9yK@h5kUXz1IgpPI^R>Pw4UY~bKoZZ@#DvKW#dJ@qJ=T&BOfWn zcvsjBd}%Jf(5En4l;AnCEuMzFIu<&en5xOEgPk&u@p<^Pn`x3Y)pJR@6D2i~<6; zAm@r(@yUK5sj@ZMCDy4IhbMs?plrlVWA5R9)lcyvBG5;eX!i(ckn(Ole z|3QugsqQ&ANcCxFNJx(>HN8cPrY@NZ*Ym%O6xnU+^!(UXlEm0We4`tT@8B4HJZaMV zMV^0W6xcxbwku{Jz9oPmlQ4o(Whn3}U!Z_fAv`dvQqN-Z{?4x`+4;_Asq33;0A$-X zBzMa z%VX8y@^cLHE!AULsilyjq&(Ob21tSICiTbG-53a&!{2%W_;nN_no30VECI(=Myc7$UJ$$fn7GBXhkY%&q>m6 z9S4Cx#0lTOD-{nCHF>$8XMwvAr*VkzacAU^a-CDHKt~^duYBOSMFsyKpl09v4L}oV z>0Br0jIe@)^h4Pnoq?9Ue@1z0Ec?R`$4YvZfej?h`%pxL{>DZu05oJ*q@q*+v_2rN z-~ia^T-NCPSQIskUmlJ}YN7>n(}jZSzrP>J76JN{Z&|eU*l3CG<4-X-t<@DXehGbU zJSp}kx9dE4nmu*W2NVP_9kf9JA8)2d0eJI!9b|CJoiu?VF#dD_!k2*GoivECs(YStp#v`NO(Ni zMj@1mdCM1*AK_a!`SKSKNL4Wx7S6eb&b*faxj&khdtVx7DEKij5b$Mi`WOD54JF!B z#ob400kYU_kaC82J??u5MLhNJ`tF}cr6Mn|4;ZhraB{ARt3R_D9=6>YjD>-i_eOzY z(>MUJi@(0NwfnzSC1dlQxxJ*?9CiL;CeRa!jsQYuM7ow-*~VZtg4ac;$T2_6Oc9uo z)9%;vHIl$_)|Qu#;i=m3$_7KSc;VsdppiH~ZR1Chud1|s}tZ)gKv zQD~4S-_}-BiW}37QG8ry&9TaC<$A9u8&)(k22$AKwAJqTW9D!NW+1DZgBeDa@g@ddt5LuL5a<^@>Z|s(TQyk z*U@@vL>$}CixIIA5GAJB zGXUvWsIjn2qXtQoAqYI$ANGR~naRuyXdj-d0(7R}cR1bwIZQ#*THElJ!yJpYhWpkh zNx+5+H+z0Ol2C{nefC#?(7tYi!gTx?>QEy>NoF}!yTg6}E_AV~-lf0-vUq*9(1^r} zj{_E8_5@s-yMNiP0RT3@vZ1X5m?QrT>W`1}F$e7nR6}*mCoo>}pDlw3&>QfZxbT+* z^BQ+X?QtmTlGBo3+N+&}r9Jk$CEORcX&hAP6{+9T*7)D22=baU;h;JKsWD}PvdgJu zGjDerCcvo%4-}(u{`poC8uSa|w`dNClttl$BbrwueQ0lL^k_!;KVAJ^1oR*1ua{?O z7%0IfI_|%$uK6CM%HO9*1tQ5l2Jq6l_f7J7%;emZm;g;DQ%Kj%s7K%Z(1*ZL;!4*0p4vs(V&$-#+A)D|!Ty_!xh}azi zP;(|2`IRyMpETlFve?@oJn{;6Eat*TNrHu+ZIS zU$DWc77pT|*9&`ey)Ykp+Ma;X53MipKM$-pj&0GrgRSAWEy+r*?brOhYQpA2A}tgi zO}F%V9=o#4)-{eCsPcD;iRAN*X9GdJeSOhv!}WK7g4QsGns5SQg~Eyu*xPpDcxES4 z4=4yO-HcU6fG+WCGsJC!zh|OD4t?wa-64$)wWwYKnhp=;e_x;6t*$N0ceM~Xg0(J> z-vHuJPuGi}3L9*dzpWpI9AE097OaGJnSaM4TunCVyl*{u9fZMEEn-V}Y|E zmCscq*=JwiTIa=k)(27NTnZSu(lC~Ze!=(3PaAA^7MA}-kTc{A|N{TZth zfClFKeI~Cy+)O+D>?hEXgM}v;F5U-&*NZc|*4p2WwK1!@TKCL)1Wmh1LG{#I6@BQ~ zzr997juZ_UM;1VMY&T&XT6|~XLzBwbjY@i-1f*&C&)OE~%?$V*G?vi@TNlGPmDK1$ zdlLu9-I6O5*RCUv@O|=!Q@aEvz4h1k$bN#V7rBsRaif&t+VOv_gUrVt%}rpkgE;4y z&wdLe|B^NK)<^;O4T9}l%dkxTpP(O*DV$)4u@;7>mbYF{rk!3kJF1UI-@%U@R@mwQv5ErN);6q+t@Vp?O{C_XfHb_a|3_!yQ+6k_B1~b%%fzuNmfSdsg%_rwN z+Kvg}+}^tu&HG-J58>b@H51rdIFFD)h$cazKoB5CxRIr-BbKKa!l2MQ*iJsg8Ug-1 z4$g1iehyR#=JgwUt4aOs?d=eg!FWX;)j*&nKe_OwV-ATr7mWOqBl)b51Up<%xzH4^ zywEl>x^e6kvI#1uFHcsya7(Bt&B?EI+oR|uA&VZpf%Xgsm-^iVymcO0>t}5C(gN{e zHEWNkvTqmR$1Mk z;Yd;j;2g7G4a6*5-s@JY7t#up0g%VE=#KwRYe@LDCg{Cg!)!cKWfztv;w)53e059> z%p-IGG2yRxf4-)bA%@tfO7J|x$kC-9Fxbft{ltMQ72n4aq&iXmZZPzuLZs3~T08d3 z?T7cCX==|_G=f6ZR5T~>%2{2jx|$yOugv6=hQ1X1<;`pPT{I7L#@5*4`6?FnGXI`l zpc}106N2#TMoE^2@e(BL_juDx-gV?Lj`@YaJO0xij=E(156MpT8Avn(AIgydmezs@u$txkqt^ zTA`=ieE|1=|CtE;(;s4+C*cr}Imb@ZcNBUr14g?9)O|}}%xHOI37wtNfTs?i$US)0L)!_%E3EPIM>%fZ*etJnL^-Mi(KX4bFT6kmO1 zD^6q;FsjInkv}LN|DwS=VDCDR1>d*T*Psy3E^Y?hw3VSIV6B_E)g^D_07MaOi_$pY zQkv`wH+EOcJ|r>yv@pBhCT*rps*yXf*)}>g)HL3LeK!#8h2wwDV5aT<82MmnEKOTs z(fX_C%<7Q?tg#A4xrf-uf9SetK$oM{N^jaw32t~V7(f&UN;YlXFPh-~1ZiKy-*skH z2FE+l0IEWNmZ)E?tb!q%+JF#AZ8YnZld!PK_4X$#G#+?=oW|6n2T$AYCJ6WzV4G@M zW5IqJN=h_4cmDTVfo{1r8V*t#_00TAy5VMR>G=iTW#LdrkT~D99u9CN&VhHs0xhIU zD1pC5s!`a`=`Z9zPsk3h&IWwis{c-N7BImG4zI7_EW~L#QE7k&usqCNN?zUq%L&-f z2-k12OcrdP-!N5-ASCH6a+$Gaz-Tv@9Hu&6yK&g-6;p6GZieS8(8KDQZ!0tszdH~1 z$P+43Im@&Vh0#7D84-ATZA@heO({bMqAPU>h9)5Z5~mk1HkG3Lv~Gr}FF5)*9QS`F z)hU`py2up7onqx))A4;zF7QGp*;^^guz(T@IBkn330#{FQvl9rM8igAJa$hSHaCNS z(NZ414nCD9p|ATS--G)NIuqTDtU~6N$5d{82f;ht^zQfflJTakBd~NW8RdYHwz_b= zRww&dGXD$laOOteLf&uK}s=`r0EiM^YVUn3tXACP*#=a%M*t01Nsv zAPu6CY=N5lRN#gpIgEf1>z@bL)S#?9@*kq8W z1N-KCy>ENwTxA%WyMV!fhT-8-=(UNie!x=7YROdqNJwr=)AB0nWZrNWI<1$5Pc8ex`*_*gNoJyzDyT#YqTK8HTJ z8=v%feC20q??*mOf)c@Jb1BCbWh6{hCfmJA{roo_^e zEu*cWo6T@EFiZ{F0M(Rn{C%1L87WBULyQ4ZBZ4jZo2}^+P!R_YTK<{Ouq5dBLE%2# zr1tAqH|S~P?6xr}`YaqLXj!K8e>Stct*}h}gIJ1(xC{7+hk8T1F|@$X`SS$_OxX=H zwhc{&P!PiW0{~klxnH@6;?qe563Kse2MtBy$D_-Vv$PNyyf*d+%w@lYhGTJZlL)a7 zRN!}Skjs3m5vjvVkN)kX@&G}Pwubi^{3Zi9_HTTXwI7pzFP`vMX;34$latz9$d0yv z*BSQXDAjLvLkYy$R>Q8PuoQr*2Hu+H0v!`5c07(=Tjmwg>|3{>+%*0xuZ1!H8Ul0u zxn+~UwTN*M0fkUaQrxWLdGe1&>aBSI`+fZ=_T^|_#p=_WkCuNdJ7vso1RaX&_;;|1 zlCb`L;cIwDo*A`lN(O;5$>jUCxdhltiurVT$+@34`3cf|`j6`!IB7CG;=B+q%gaQBV6M`LA~uMK3nGX!*VUNs z;Vprn9z@)3hZrB(CK)&8c20}d#AX0zQ1AmrprM>X=5JAD3Ge!scK zPz_V5L>#kh-rhBcDvi8Vg8J`jIBLC3!cY`@vS4uLg5xrevz2?Yt6U{RuF3+Iw{ktJ zW+G?rySj>D%*MoAAk=x#atxDGHX z$(^j&C*i*q-hh{2$&)WSSEPA$U$qE^VFK&!ZU=t}y+PtD3T}6Ck{(g*mxupCc#u9q z(5@5snh^Plp8~z5Kck+^d8SMbWzAk@cL8ozS$O@6Jo)2pFD0+bTj$|V^>{tjJ^p~& zvxA>r2Q1)JB{u_y2r!BgAlUv$gy(c|w{mB9u|cN_^9&JTJ_5K(@|4@CsRZ;!LI8UE z6gUnKit0hw9JCpn4{Y%P@YKH}`GuP;2}-6g0s=?%2fa!QpKbn$HPM5(!dKVWAV^9e zP)iX0Od4kfq6$w4K?E?!94b0|HY)ja&z*j4?-K}rAVjM87ncUP$j1^UvLZ+i_)BDk zLuMb?ztyPSaWB_i4HSVSCh)E)#%mmDj|M<@k zIaVV>)=2$)1RuN!zkX5!+^u}|0~_Elmn%>~$o|Z%3G{#nj<~#iT;Eh>$V|1fs{0D? zvRL+$!g+oW-zYo<{mK8zhW`V=Aqt99`Yv5-Ett{jiksX$d&{$?j|()ivE{MgR3h@^ zKkeDl&o2NiIa`R$M>g@QT|fb=h*VPuBE5(bb0)KS{~l1t0E@H7RVmehp}0$<5vxbZ z!9)t?#E`~M;Q^0d{i_-hLWQZwfn^TAsqHMm;- zeouB~@j1=Kdt`NN&caNNhKF*M=K6dy*4vNLme#Il+YUg(tj1#sagF48zU0N-ez{7uM;+bL&D184rImUNz&jr%eE3D^GMce*=( zCLgo(H^828n}W`(H$(o7$Opn580^_x3Y{24;^8~x@K3==g>fX+FhJGE6Tk^}u!}!O%Lj3h zZHcD4&*5e*w+Gt0r5__L8N%5KZ^mlzj|a^=(9}M`m2Y&oTh$#&0j94Xf+na74FZKi zoAQf7&xMDtsWXSAhHXyn^qv4K7#Ig2i*lN_3?4QQqRF%|{hooUG*CGCcYHS(u&^6B zi2FX`4dG-wu?0DQ1VYf}hj+J2<$QS$Y1`#u^{J%rG(4~b(fQ`(LJS(Iq!YY&{FMsy zZ+sc~{>(@hxXdR5pcLY};Q+Fu_uu(aDzyJ>brxdP@GF)Uq7hw@MMN+pJf1yW0F?H` zfK&e~kc;8oYq^*!!+^@y&Xaf9Y2pAn_a|&9iUamE^cKP*`Pu|<{`#8%nGrGx5$=Ik z>4q@yyzyE7lOurkTYoc2l=-%@n*&&89iLxcTjtKeJFpb2NA7&{Ree4!8CXL2Wa*Op zu%i%JxE5^+6jpxw=xv zj^Hk5x5J&z$r_b0%_JRorzAL~BN^aXt=M4l?QbXiAzXi*E#dpL9>Bh(_&b3X*Cr^z zlhm>qniZ=cl27_f_Qf58D6!rDWy$1i45fQs9v@5jvE)BqFz@=+r;*&c6bNlL* zK^pK&xd^(!$|sG z@lovjT%%1}#8n9yAWm(X+eM*Pq*S;LIq*p@9QNZF)O5H!);X{j=dKSXLSa36HeEGTWej369jk4XFT$)!^S+)+LcHdjrNEiy5 z0Z3rHtPqE+uyNWQN2y9qZtlGddg%Cu@Zm=n0G$W{mg|7I>t!T$G~8ty7V0P=f9<;F z$Kt6)3&2h}NrQwSa1J^*qrvSirBvmACW-L$GY~d0?VG(VyRo9eB0ECE_RHg4N4BcI zxH%5++vfmbL9ww3i;5)!xR~|RXD*(Agn;N5slapA0n1?ui#PWGn|br^@5P|BC_uE? zBuaQ1&Nu}jYXX^)nNu{qo&@$>7+QmSxKdO8b{pk?9`*x67Wln4y*TmHoO`ZLI$C+$=|M_H+$2W^yMvw2|x;*ABFf{XXN#eAlDQ{f43d9 zm&M8ZJOt|J?Q`ST?Y^9bct5h6paM31=@>iF-GzW>ZvX>vH0W6Ya{2(~68f~ZR*?(T zr58UrVypO-!u6RHuoh%}w7u($|8P8- z5yan@0dl1U4%L}XzJ=|dmZ=3aRO9zsvgmn$8Y0rhX9XByN5&}Hiz!UpBAaW1+ zo%j>>Mw^wLvg%15h|NmkH8?LpgAC)K;H9(j2o;Icwz#_tyPGlf2D z*Rb3AF_^RT_bmm9B{6_n@Ls$ah|g=P0s?g2Ebx8V)cPm^a0z;`ph%NrhtJONV{cu~ zJ~>{%g6d72f9dE6d?y3jv3sYJ8u|>7mS!k#^!o<(MF7~ANwFHUUej$jYR%9Z)O|)w!=Dr&g zT8jyl<|?}0m$$I&CDj)VCvoi)Ktjdz6W!Z5yLB|{?ft@7OxQdMR5C2)?jPFQ1E4IIGq&?GZ zIIIUsoI^?7mL|+fr^C*p*gJT1!axxSoW|tb5(o*r@fNSw5zcSNRVT<}cw7OKh1}~{ z&l&nsn4(2K9t-XgF3AvPm@|Te|MpgY%<`*#k|8X7S^g_}P|JQZR^2I~j308>Z?B8J z_1igRAa9C~MqC?^K%5@CPTxIvYVrgT0X&;72CWqEeupkspk>-I?Cfm&TS@W9N%y3L zK)>;X#6W64_QiZ$oj7)lswmN{Sh3P;;Xp2w#cMljRo_Vm^=PR7lg$SJM6we%g9=EJ z=J{e$`LLWFCFJ%3(VowVsfO{p>uVTZY(A(vI~Yt`5*)^dD{mZ#M<3pJ#QOa<-W{Pw zYrQ$YD7slM4`+0gMuV4M5p&{$H1y4w6f|I?n#)Or+go-M8!uY}WWR4c5D2-418UE8 zr`X8Mg7kuq0FA0%-t5CE2&cRa94I0mXwFpxfL08l)u-8Gv1fa)pA}m*?rQz6Eg?c|@wHnEx}>DPfrwTK)>y3Y%L(*V~aZ5y0P zV0~o6v?8Qd^}#1rxc&I*BOF0fWZa8(&E8Y(d;}@!qX;G5*WmRSx(%{~Y0H3itemavkZhQDJ=xMahZU+}eDptWx?@M)>OQ>&rEoKJpN@EDAz+*~@`biX; zw#WhoO;%oxX9EM^*KYsh2Ggqi?>z5GRifjRn7wPZA6*D2_r8=~JRoCIrbci-B_fG` zGc@CSIhm^UYy14iL4Z+_v4wagb3`Ayi3Z03#O3`}fF%@}_|{G2yM z$#*p;8pAa~P@}AsW!;b$M~}zPieO@Hk8vxD@BfPyuT;pPIqM-_hR4qP=DnpP9Av9A zl@mUu!&7!nh^|G3A>OL*mJ=thH}w&6%tv6_{h?W$3;`LTH~(J5m!%wN;7JA)4#NL>onz{hPD z6og@rn#$e4xU))mFVu_CV1lus3{a=}TE>Bgc@-mSO zE^}ItB*)n<6_wQy-g_v%)`{bq(+?rZ6(?TGkcMNULe)J4B1*JD1Ual<8#>UE_ap(! zuiV47yOO|6OgEij$teO`J)=Z}l^Lo_C^sUVLlF9uoz%OsM~@}EA7mAxA@4&(y zsd(3D)K;Nm4UL<`-?&QUR^Bez(=`26a@0pB}32wLKG~jCWRrr zbvAu3!vufzle3qq*O!sG69j=MW33_COS~wtW#pTqQayQL0gd0Y$*cL4FRk9_o!x9R zv$C&~`;5)z0VE(ZnWnVU)z!*fza~@Qs1&b||50LCWxAbPI#?WkZ0!bqr^?cH5;Sg+ zk-lVAVC%eKIP@0O$~t*mbEkM69plfBq`y9x|0=GQ z?6!1U@;#WeA3wn_3JEA1+I~LI$MNiDMJ}(7w{v4=7kMY7!{gfcl{d*7R|nQtx@O8+ z=xm-u{Dvv0rp{JRIyKtxWWrKT)Ge-fmv%^eKKQ(1LpYWj9Gs?=;91|+67R=mCAdeH zxRzX4VfGqV*QIYA589|bHEpnmcynS-OsF}(X&Ke_fZKc8XI_6gVT_B%HN%K)nnx{+2%Ifc2Cs* zkYK6UwLzmnHN7V@;+~kT?7B zMp5|X5rzLDmn={Wu{4jypSu!Z5DC=PpE?AO*zb+fvCzQGU?r@HOIKBjYZcGdHtG81 zJS?-s-Xg40p$#7N0LG7fP&hPFb@2g%xJ<7ZC16>j%v6wqD69Q#1*c9djNm>bE&RfQ z&r8y+fy~pSJUCd2H01>$hTG3cL~~Mnm9^@d34T+(rQrmc&-T;WkHmGU?PM!y9O(3L z5qm3L7O)4Cc_zQ-!HWL=^D_fFj17Hg&lz)MYRl<&i0&b$r=WPG6M5G#Y5x^ujd3$` z54B=P4fCaE(~l{HpGc#5O1SH@^FT@~zq2M>n6rCX3kH$7E;}17aq6%LMgqkrRnN_l zJ;Hl45jk=KX*?0k2I-v_b!kAU=2+<_#AQb#_tTsVL6s6x7m9i5jiWA|acbRcdl&57EkueSgh*AOoE-X*b;AA z=E9bO+*t!zHx=gqq_%K97jb%ie-)Y-qbWCEW+mfQoZ{h~FM4Q^P2A?FDlWI7(tCRq zX(kZGhg-$vx2*c}a4uf_Nekip!&@hYos1V{hiOB5(~}}=;S%)|Hn;!m_{($?G)&d? zDju8{D|(-)^m8pO=oklzBT|)?wsgBxMwa@l38r%Wji-5Dd72j~&;M`?aM&A?I#|o3 zBI`%WvcQ2LriK4e44|326Zz6%RW}F8DC+Enty_ag)EhodM;~xvF#DSWekt@YdO&Q) z+gpAPiRsfl<(M{0N!?xD490{ER*PaW`#?;rVJdI(EaLW~kEzwGyIRIFpHfn4Wg_Zp zMY9Q!$$F8pq~O1a8H0;YZF5E&u>5{9l|s?BN^{||T0oo0vutqXr09*n#oFmRG<0Jw z{F~o}lBc)o4pKq0T4z&YGbFlcVN2H9nP0IkpIBIb5VL0{xL0Fq%Tw=iWLq9lc&W3U zAP})KY7+Z95%)|H<{YOVTb_gJebIEBJF9Zfns~w*H_usa6MQj(}wb<8-nV zr_6-b+qLZcH^0h;cWGxeGC%nYcle8L%tmnd`j1b}CRx;GsqOZr6KqPdv;0bNsYCK@ z=1%hT)U+e({+jFtqlMhI^st3$gc)JDX)D)<*WUe>*tZD>$Vm6XB5thtObOfKQXHq1 z{ZWibmK2OSuKlkO(AM#rJS+2|3AO%!A1y3qiDYc>ivR1>1|46DZ>!~S^j@v$QohhI zea&fHpc6^QKyp9RP~DbuR*S~!jt7EG8h9=pzdl}wN5i^Y+14^W`obFDQxIlSZg#o5 z(AD91nPIRxUO)r{LTcg09(ZYB!c2h6K2O^kUaN=_)oR9*SguBco}zflMBZs^Uq@?X zMM|tJt~g;VJwJoPv&;pWDNrfxz0R|_qlF*~f2SQEo0Kk8etAMuHYOg| zMq4^jwteJ4DnsWqX}qtV&#ouz9@lnb4)_d7h#ygyb1Vw5`U|T}Fxt05CDpf+x`Ih< z>eYyW;gG2_{+eluD^Jv2j9jL300Sr%Pg=9OrTgJj`+?|jj7p_hqL*T!wj-aBRTmJI-RIl3~*Zxb@#|p&dj=|+5Stt zXcgONaIe?_ER{>9ztRjZlW=T5sR_p0b+*6$3T}<0#FvV;mnJpV-9EmhjE0bf#6^tH6H46Ug|@<9 z*0w;xlL8&Xx3qWTr=@>+RkulxjLbPZbfX3kxZMT!U|8FFUo~p73x?Gmx+fYUD3Uwf z@Smo4-&25Fcv@frHsA3i?uT*P_UjWW=)Vao|R?}yDHwQ+H~8&pFaNep!ehyYlA;p zP@ahYdbu5N`FSlxl2Y2z(k;-S7}loVNTrS*w_)ez^`n|}q|qWtlk2bW(C&p;<>L(* z)2124(ZX=oVPD}^^OS&hRBxx0M2fBGvRb`c{~c{sdO=a4gN>;0<(0kEqu-nOacigT z_}8{w`#Xo&P0?hQGj2o#(;l=#YX!4DyMX1U(D--^1dY35BWf;f77~p`l zUcPg)WZNDbk^*DZ3n{bN#{8t$0$f%my_}iR{{7usm7~EVZvOANF|!6QbXAd$6CI~p zr`gM7(d&0RpKb^wXs3J85F($>$JN9Cg70Dtq^0z-XPMYLnmv4C@H%JGhZt@e;v3m$ ztutFQtKdv7$<}^5E@j(o3i8B=&ldE2)9ANe%I}=hXzA-H~@Mv(TtXP+@ zck?>`Chm{?d8!ZlW^d&9zyrK}iQn;H`V|d&s-il(`zw5MSgrxN0L2v^DK3{~TG`i8ws`9{uPS6DOZQmQ)}&8>=`s$~13^;$HlHKBu8a`Qsi+0_Q1N`R+e{^>GY*t`<3k zJC5K!4m=7$aR^a-6>_Jw{R1^WhY|}mqK<1VaTvb8DZ=(GP4(=di&yl6y|@D<7BLt0 zdm#rsb&j<5yH;OZqeZCPKa6q9{+rM_Br*47_%nCIG2f!K`qS*w9GkiC0x@hysc4ok z#ZS#o>C!~RB9;u93D~|mqhqX0zfuPi@r1GDPrX%2bcW^(hvhiPcm>7g@qK+_ffdt! z>s;C#n;3HZ^h>Y}k%CT|HQ7UY0dzWN2rE#JKar8oIJy%yTnM8F_?J~qhU0sUhq_ZO z70gB7HSfKqePx67K^{|Ee^kSm1G^s$sPRui zg&%dL>&D*RyIW=|JR1uSIqafKm07!&c){K(tyMs?s=k64#}ZyNFcx~uVTAXd1uxA} zTn3-#%8`=ILjx7j#;g+jX&AZ3>0Fz5;L0Lk(NdjufU`NR2veMeBL?8y)T0VN17Wbpdlq9>YsrXzILl3Ub~bHJmp4~tFL zI9mq&dEBAY+PI0YyZY!4m&{ra_qs`~H5>!=xwI<*6otaZrGu@XWY08DdXbQiv5jO0^Sg&r#i9mE}!31C2fw7{InUJ zs83j1*XdPOQpmyJi7Yo$&B28JTD6r7|4|yE)zz8^6xvX3s?}({>d~GfZ5AT@5(y%o zRd%fYLVsntWuN3Vz%=WkCQ!it(_w0@-BA^`G)D%y6#p4=FK%f%tA2~V%6fBUY;?Z+ zDL8!du#1<&qFB;?NI4;~AW})$?ICa>Js`}aq&BK)90BbeZ;oeYdVqNa*Shcc65`r- z(Ig!n9|+5z3frBw^ouF(DQT!2(YaVpeWp$9UE25JS;e}Z7Tgr!*JGnATfP$j4JYj% z%9DM;Lu&sf!kF9p4KbGCUr#y90>xKQaKnwR$ckxkOT7@jb9TFz+`V7&m}Nx*oO6C} z%bZQoUzP}0QZq@XQY%${e8MV&G8DwBZ<{7Uswt9VkSku>01Wac(B(DT63=(1a*_qR zXmyn(&{oTjy-xbNX2UkXf%qnrSN*vQRz5mc{Zj_X5Ut=`)IO+OTDD&s`kpek+3PhW z68pvO4DZC>02D^j_cwC30bXe4v#KXNs&t+w?X(hnzlV}6pNP=%SID-uA5Nq)Cm01; zKLxjYajY!=d_m^i4DB9`jXnqA2t*=KgYE9%XK1)tDGgnvT7cqPhsW%yD-$AJT?`7w zn?VAlZ$qL#D}GJ#I0_yy=rgBE|Kz@efe63SAEy`uq>M7)QC6-oy>s7x){Us|W_?cT ztM});F_bsQ`mG(r6W{ZsW~9j=MIS9o8s!};JuwULOpdK*&6QLD_UggMGAmctaS}4R z#;S_l2n%P3IO&*5=11|`xNPwMQog#t#a=Dkyvrg3EsBk$;VD!DYQ3wYm`TB85sz*! zdfrh+r#L|v#mulVw#Gr&z3_5mjtjn{NR}0>MmDFNb6oa@Nw+2)3UPGd22t#W9ru!Q zI!`WeR3aAt+9X*5_fXPb)nKTA$N+68=Ti%n97%M0Wfj}`)F^>CykA*)%>9hUbTs=C zeWQ6e>ZJv8d(;V86!O2dnh~X;9o}L*BkAE#H;*U%XtXeC_`TuM0y`!qU z+Al!VD2a_EiYN-ijvyG3Cf$Ytiu5X=AX24B@1Rj5h$w zb@m~mnctdOvu3R+f6UxJzAt$1eee68@;v+5d!KWJC~+AVw9n15u(C5RS1HH^Cv}`w z-sfL@ES{G2Z|*-NmIEV4Kyb$of+;?C^3)nSz+Dr+DSo7~Y}R#T##BKcD<1%to1|K3xns z%)4l_qszE)qo||lP3^7j3d+(h#jam3FDQE*Q#F0*P>>lZlGbrrERCfHgIKEh%YE%% zJSK-VHZl@aDe#9~r)JS%l+qJ>uF7@)^|+nSWC;;82{!>lOUhbhq3*9ON&je zl#Wv#k2Z~vVlPz=NIyH!U=Kihy+-%rpDFb{!XvfaEqang6oc_yt{XRvUU&UAww$XT zAK|^?Qt)}BVa+FYbp@}4j+FhtDl-XdC&{mRa-BGrf~x++9QBdlbJXioUbpQ_ zDp5IVVC(5BOB2OxljrI&q$oY^=-s6=&shM&9df_33bVk>eeuetXr&>uM=i3-LF^4-UJuvazj&zQQu&8MB0!t6gm8{G16lQhfEBDaw69A3F#*fliM@;Nhj>*DpT?ni}}YzrM}w|ny$ z+6_A^&{sy>RlK!2CxYX5F0Q5hwM}`=SfE4T#{M<6&g-dox(wA0d8?rI8!$7PEn9z1 zfo;wrq0_R!G3&D@qx$<*b&M+Cia>zfhTQ(QxR<_+2An)9>N2#HzWoDD-eH!*dH-B% zGCi|xdv96C_SHuXHhqbKYQ!v%qIR&zgBO(6{GMG84~fYv5oSk06s9$1EH&n@({Y;BtLb$yt zpQS+CHOkjg{kXrSoD#mQ<~6Ez!j$E&$4G4;BlWH*EAvZ_15vRh;g@~*9CtTf=hR&o zol^g}nx3ih>qtXw0%as8)_9E&P9B~Gx}FE(X1_k)%J|W=-Ux8a)qV50%A@bkkt>Q2 za;1InrtYqX8wa>#Dj%eW3#%o4G(B<0ydiRHt2oW-M}yVL?B|kGc^s21tjH%o2U4zk z^pNK(HcC~>z}4`#mO9gh@jEV^&iQs|kkhdb&_5}@-t}dvpcg2{GF?QB3E|_aDUWx@7d;!LxSR-Da*Rg zY8PxuuEiJ)h18_pOz}xt{Ww*m23k^tt9avAulXKhbZ^=Ko5b1J1AWP1rET|e19D!j zj+=bFzc6m(3Q*anFtt95d-eYF>}#POanDELUHXOL`?ofwc+e;YNnXl+wtw|mMI6qc zRRUgnd$UaX*LhK}Z_3y3_Mg{V^sa&wKw~+@vl>A7CR`)~Wovls(6y58M9sZQY^ zTAMe@&Ny#6D262aB(-{Mpd9`1xZ-_N`RZ5NCvb*0mE^VL2Cu0_)#8SUr&ZkGS^U&( z6D}5f2K1<;$zw99XXoaS0z9^3m0$g$v#lGNVxjOxa^DP%F{{p756PyTN0&(MSfAF< zBBnAiAVf>+!)M5U?JTwLr3IZGtKST8jC@Sxyu@-E98SYPo>k+!t5dSgT{O(EEqKIa z9IrjdRZlFt)`aO1cp}(a@z!eGq>3CtKk*KMJP$i&qtRfHXS(v$s*fXzSN$2g5{(rP zu_ToDzg|3eX4@Cz<2C}TEE3g(})pZZD8+`r8~5o503 zF!xsc6SGPE&60fXjhm*v%K81c``>Z*?5yIA5wToum^k85B`TecVK%7CEi4t5r+OvfRay-GUWGcU}4{mZKpgB8}jfFIiC`Sgi6j^;UXPjKuLKJ zEUu4u)ors_y8l+f#iamOihGyy1U(luJ7~?8+GtPOCy^$JwP=gxJe+gmPGd2O5#!?d zuROa-9GwaclNRN##LJmj`k%VQo_+46;625Leh-JD$)eoOt!04?Y?5*QcWd^2&z{cj zkkC#161!i;jE-(yL9}<8f|Hj~@jYC{X{j)c@9mb!2T`Oq(J+n~NW5{r7B1xm? z0+{)j_@wRAZXBvJlDZ>Zphg|2#6hvKtIP5$+1SUeRG?O-Q1L{qSS9&_4Zi|K?dOCz z_!H!mPxz}p|VB%VsZSffCr&`wm%S#^9J|RoaOo6WO{u*-!*h4G$fQF znENpGB!}eZ#Ud7{*uaS~BklVntYbsYtA)PbyUja!R!2K-QMC4<7GqG4Tt$ys#Oquw zmO_cxFt}n~3oYBEdsdD|GepS7T$nV}poFYyxKtuq$Wyxc#j%BaUd}Z5b>GLytHMkMxNijfexzRF{nE`(s&g7i+?R5k`QjQj3Ujcw&id3Lw!C@;#$9#t z8_;nK^T6Rw%4U^hz_74B-R!yf-Bb4iyO!pJ-#+M+)%5&))+IyW#^Zv)!+E_sIG(e0 znRV^(>h*7%>Wk@`_X_N3^#9_sSwd<#-t@(+#CKT1$+11eWkZRdZ-=FZ+4W|PyFJ^M zl|uY#DCu^eUP^P^7qzi(E(zG@Fgc*^@U_XYi%vzY-wr&#nox9TR;t_7f8dh)`n$Tp zYm(1$B`BY{BMr&0Yq@TB8Su6C)&~w(%+)PQkU_kW$!HG_CA#fCy0lTZV$A7o&khFdiA@vI&vLE6JOmwU zi3_S@@=UE(=yVhfJ@vNi?>g=M{E^yKQpawrR_Rpb8Avnqf8J>b>6Q(W8m`s2{z?4l z@jou$-av7fnXNWL-(l4B2q&D`XquFG5h9RzA3O6+WK$lG<=$9D^I z8>`%K;T{sNco!Jen8GjLU{h%1LHoOIMd6vozBhY^w$p#Ex64wvtZVh*rIZFk@|^s?S821Q+8pqykNiW8J0wSR()ggT+lT#Ht5q;n zyAv5I&2tPN{H7PTLfPsYkkgL~j+CSJ=pvn%@USi3Cga@}iSpM%Y}Yw#jC@U2d*I(V zc@>;_|AXn;YF)j-Dru$HLAF-9Awq$Ekyb@Yg=c@79B*h}r(>!6crwj( zlYG#l#Qv7V2U+QE3eLjI%HLIO2$U1JQQx1zwjtQmLI4@i)AWXTe_1}5>PA||h z+IH~n`zKFe$8WYBJ#d+AzPFrnH$X!vq`G8n*p2NAlR8Vwk4}txKa+>Bsp|gq!Ovrg z3FBR9{>*#(H#f=j@NAk;JMV7ZM|1{&f zz1`Sp&(5m~!9lZUo6BNf%et1lEO6wg(X<%|rgBp$Qm*D>FZn!M$>GnDw8`5~I@oJ` z-{i7u4dALiJ?%uDdRd}=)zOFl{pFM7mw6y&@ac%KGF^DR01HaeZR08mgmH!MAZK@$XjHcgPn@UV((Mj$5{G_5P5B{zX zkPlgJ2M+xHa$Zr`zW@1u*PC7qb-x7Pkdcu|(f+uDLC9Wdc6N5-&p%5g-}qFWV`r6W z*ic#5_q{);M9?gg&6QyildwbSb-r_l7jJ8m`EavxRrsZ<4AV|%RQ!Ql$ zNjY`(7vYzK;{A=ll1(S7%DR~Gj4^?LS9;lA?s=|UxPo=*MFmA0->1-=6Q{ z>gFb^uOH2ASRXvyYIoUgdYH}Fsy%b}Fm!otMD*RmMZbR)~LhGdu3Pko!7}kaqwR%)f&%%e6TTO12NR11HF1*K95!nec(MP-!^_=2Z7w+8V%65b zkgi*CdjI)HvC?g@szn>Onv(wFm6l{EAn8PzTo)d@=~(6rw8bRBmDeL?A%xLseIn?;^?8FM<0ueCk7JoYWaA6 zeA;CF-CkSGp3*?eqC-!`a%?AW={;14Q#o?zP#60%9<3ifd@$-UkH+x95qmb*V`am_!}%WiczH!aHtPJk#@(exKTdkH zvz5t~wYi1=!^lnkA)~Y|l^ef(*3mJy#q`33zg0Ws1{IZ*B9oFhcDbk8%`W0ltg2Y$ zWPPrCtZBw=!-@O&O!#KLmI*rqt~F8V{LgBG|JwQ^RlXVYhiyZ!M(mG2^5abROvdnX z|7b(&ZD_*~42|LXva&L~O&gMv`076&;61Z9>jmm$qsin3L&n{ketfmLfDw0m^=fd- zz0Wu%z{tHbQbS7Wag)ugxDUHpb&8&>M#P$G35A%{%GSeZZ|{Z@r%IQs{Qr&TUvai) zefe@dsI;s``SMTe*JA)s7BXJHE+=>V_3U2T#uUA*h4GIDf|BPjFta8qC0GmDcDNng z;a1eMj-EBSp@eJQ%&-43$p5#YMQZFF9HcN7S$4RYnVGfFM`-3bJ5!-)HCzM_95{=k zK~fpN=WQyH&LZ+?hK8{%W7vkinS9*!J2Q`|lTOBUW2%9UmHkAobo#rf`eS?d77PXa zXq=Zn7F_-MDE}vRj;T^1HC(ENMLS?(`hjFT}07(8=c&$z!5b?rmkz zr<))DcuYIFL0{kA&x~GUQ_D&bb+8(& zf0=4f*I0;f*_qh<<357JF_-p-in_~S+6`%X2rp$|v+(FaMHQ9k`%I4Y?6t4Nwy8PJ zb}^QHCp)RAqA`XTkHdx6`G|i|^ZcVd6`y$8VliFrJ0NCSU{R<3Ky94mn7>h$n2U>x z`p54K4i#0v%U{*X9_~3Q6MEhw%`HwnM+J|P*j*YJBWO3p%+IfiiCv`=xRZ*=i(RE9lsnrcu)`R+?9yn)tgwv7?WlkqYyWNmilPe z?WFSKS#t|^S4>J_GLi!`1Fc$Z*e3_t^76XNf)eWMm5youxH?r$=&x#*@BZ~yFAi9& zFi6M=7jl@BYe+FAWVd#09m0YOzpEQMBxaBPJo|<~}?jIMkcR9^zADxm?eNBLiEA`QdHS~`>J%102 zh-fOrrL_~4?7e<7vHkqN6D3RnlWqNz=K><6|GsxwexaPVuTtVzT<68_*LQw*Oi)k_ z*=~AHKs2H3`@d6B@y7k1fD>K?HmXq_kc<3n&$J+k9>S{SP z+rBXGjv%L{Og~P&jyn&Xt2X`b%xC8TaR~|U7cbP0v?gkuN1NF=I40NWP(`=*^h6A| zQ0Doz1WW5yzIyO&;Z4(xBa5kwtMn@ zp0TS%r?e>SV&w47)(fVKrA+I(Dvy=JXXAZ{nf{> z?uh+J8KyjHVmO22FNFkkwV311b0G+>sf?jOw<@o%x~MwT#i>RB{MPs8K?=Z#G&Bp9J5=jAAkQCy{hn<$e$gexeRK1i&+!C_`TIL0HjgLu}zgY*DKrA-QB-5KT;R! zA=Ll5gv#2#M!yEqH9B~*hVfm5&Yz)%aNPQrJM`<)Nh$1OHeUHNBs1(k^(J+Db{ zf-Dt%%863mGY<1p7MU7I4H84kSor_x`SG{IqTv;~)iynW5n@jdMFC54_+Avhc(MBS z`c0(qqh7swl|6*>a%2Ab>nDYSBB8%;-~I|M8RN9P)L#?hqp7J$rcZXZz)*9htQ+02 z+BbJM4aMKZ^8DVc0j!E`5{2lc6YKTEyqh=?9vXp43M{!*SvS2}+-QPn^e5!AFdJ zo;-O;kklqR_Ui|k@?9_@Ek;^f>h!2ge#_gkR%G3u=m%{b9ZHK6ZlJiV?3nP@En8|b zdtMBT^ENwEFX@yApUPUCYRVBRBg4IcwhDOih2xx_nn}TW%OSL8b%KU4j?|OH^p3$o zN98)o&BFj-^qj7KU6=2G`vCqxymnBLv6d1w3UOS-y| zz#9>$k>!{iCZ6CF-s6-JN1Sq)1$-MiHPl2ASjK2q?-~!w@9Vy|+epgZKD+K+TcXze zl@3+iF=|D9@(h@)aY@)XZGt%Az3M?lTIS9CAn1VQ;1A4}XNbtR%)`V=IrfjBs+5bdm( zYTTw?6>+()w<6S_`S9Mor_8!bD#Co!qpPc{$7d)bxiJIr*v;hHwbl!?y4yjpk^|f* zN(d-ic2kD;XP*g(px%$N78TrvCV6ScS;=FEMj>;gIU zJTW2|?MDm7pJR&0B;-b8^cHOLT|4>;=v4SmsiO+Z!t~nw>df3{>VJq$|MvE zzQL;q1k0IAfqXT3!ohoW8MTV1m0rl^;#Ycg)*|TlQ@vZTHt)J5M?mwBVkP_ z2w5vIcw%beSl&WNM~5bjHg*1P)ZXy`s15Ag4s#RqY(pf>HVtdLym@mv=W8iHsvceD zScMp*S+FrpX>oHCeVw5Xsj4@CXVd*>reg!=l?M+Vc)L<5s#$nHeCOxj;LoA$+A@YP zpNbsd(M4Sy=C@=wLJBesJ>@wZvs}%6FjzV!W3#5)4mQqPU*6MCA`{2VO$`~)@mpjX zwVPk%@YSzb#_>dn{G}g1R+R?w8*m+>8i}51*o83ok)0AN>Y$~iWzlNW(@@A_>e*O8sBIY_s>;;*4#Uw@|t7)M$3TH-O}p#6LAXT}N)Ab4e%ALLtoIv83AY z7GAZVHf)GSUbRe=_37VmH34C_GI|XtIkP^O$F4CWAg8}kI{AIUW<90en)a4!CRGdD zQcDG=ub@7v&TuNU<3cj5O1s%4;JLfJ{OFa8^5J@2PJK*iq2di9H;E-nG`53|2P8u^7}$MdY&Di-M)S1k8M<3rYPEn8j_3HyZd!?f`lBdCn^nU zE-c-vk`@)kdh%hMx^6gik(&Nb_<+hUoSf_6MqJCyShMA9VHaH)Z|7#8qR9H5_fPiY z;M5p-b&)fGO4qISFfa^-UUZ&I=;-nIa9t)rJ?9F2sCB^ami<9W_|;eD(OaXF9hw-1mJF}s;azwef8)hE?h9N32=459G@C#OF%tD z@un;PbqK|4<*o2ImDF2y*`OszE&_8^Tw1CC+6LRbY-eJ^P1|Os+*%{WG}M${Hk^U| zCX5#CTH@9CDQud!n8rY}b5$YI6bnYu3F&Rx+S-k2H~q=9n3yo9rKLS0AaDiSfAu$K zCWFUhzEjZtz{_RBOH9Opx`aC13aYkvuv*x6hna&z2GL&DpZjJreR_vZM1!HFK`b)( zO~lTH=Vg)sk67Y|cOr3Pwilgmpc?&Yr9W&2+;$^AZX;L|_jgio1i5w1x(&Mh)lu{U z)~_YB6tkb~jjD7kF$iQRV+8k%f;<(}DoZ&htWj(#9mFYYHY@k}#FknjyUyx_N@3i zN2b6I^avoe)56$&wZYq)*iGj5Iz70b_L8xS)tCG4N|bXVGIm1-P}v{7^v++MGeVe;}F0K3!D*PxA?H=7%<2k(s>_PcQD zQcZKF*<{6eCOvdV7Gk0{x1!U0vuscxty>!k|KgI8>#Dl~xJlu0M4_pM!G?L$s36Nv zROLUDiRQR4qvD}jwR;qNO9XrN=;@nnxjD6FYuyWQ{wNnVc*5|F79C<3>fD1ZA;zk~!1SFtG13H{(ST3)q)>UJ3liMG682n({VZP=ddfpby@ZPxe*2>g6^_YNw z0R1Mr{^S$9ycvy&F7JxUSfm=UsTXZwP zp-Vw%V^hyolJH?qwcB(vWSy)(PL`CnV8MQ-|0 zo(wh@YDTGx7awleLN7Ovw@r$U#ZmI7pMJ{VdKBu2YS*YOfSR5^rY72Hp_9qmRUK!f z3UA-Bqq|Zmkk6v>@89-UC+l1$&mt`?O#~iG%QR0<&lIB;K8M*ZA8&<<#vHqJqwFzJ zz?dKdTK9Vux^iVN1i1|B{{&!FLlx`#_ur2JN|KV3ahbiC?V^Mo`hDBBp}Ba~bV&kt za8#pwmw!d;!l3!YV~+BjY#O;&^z`&B6B~2447om~(Z1P|B~L2drlu;YNV4?+CkN(M z&D2d@%qy9;Tn8@8L8UE>0`;GpywDsZu%e{la$K+mTsT8;M2q7!RC8HFX-yM=8*-U) zxuJ(mTG-Bh73GvX4{@m+lYoh$gdlpOG@!4tshm8%+p*k8vogWD&!5h_6@~zVgUgd4 zm~l9xb88Fs@d<*iQKj%wd?igcnG8NS`~u~~ zz@R4SI)YL=j~}}DJQy?UG6XGiYa#S18o0kU&Obh9O2uKi#cD2Zd0v>(F^$YJ(HrW~ zkAl^5e=oPtaf92xWvRn*e8U0> zOc5_^#eJ^adVqTl$C-xWJZ(WX-Mbu?7pM6;AD$R|$7{1rX#f7VLl{p?7Xx^u&)nM_ zW%^qT;KJNQ)#V!Sf|MCj1>>d_8m6mxq6}g>lq?bt9B-GPreUncB-Ee2>UBVHs$NUK zB`Z}zi%_$CIJeOtg(vtxVNsF6aC0U-CYhQ5<_YO}3A1&RcPT-;9|?V&*}Qg-KfhJ{ zNC zh>VHP633aO&wzkiGEbUy_s)!UO3vH%Td@oAn`RZie_viEylhCf8+Slx%yFe{hc1@m zTBK0zi>C}%MoNcPN6WJU4!t+zZW4T)dbMC}&P<1!w-EJZA+PoMC#?5_rTFc4a?VyzgEy~gS5Cmw^@@vg41r#$UCCC@)AF!JW?L3sf_KDz2;LS{F;AgXyr zCLUmKQZOM8X{8HH0sE_VsXLuIb;?^4LJb%Dy}$r)n-ut?%&@Gpy z(({f83bwF2&JU%NvMrS{?@-B&WOeJ$>q$L@lDBJY_G`}oDj{<_i*>>AfP)GupWiV& znmajXzfRJs&2c`CQ0x>XR9vmrom=p0HV#W$8Tbg%o^02Y92_PbWP5~-q{={4tmzXb>csh5RuhGB?9;MOmaNw0YL3}0 zEzBA%b8O(e4sEZBTtxFe4O1<|nZPMig}*I}qSl+}XsvTUrJ(Q(7v>|i5W8cIyke&P ziI6nxL}cFS&eK>3-UOUYBj2ZWCg%&w9=HbW=jw`N3OePS)AiA306SF5Dl0479R1@D zkz}1R1!yG$M?H>fy^ADbY$7eILUqG}h{Fl(;_Zd+-Zd6RXC2C(ZP>ME&tR>R$Qc<^ zi=w~({@H!!@sQGP;aRELC`k;9;3+sdMD};|x-}t73<%I5dQFLXFsdCZ6K zDE{NuXI@@%ELUZJ64CMs3QE{*oSj(75kjYC{$y!nd8zF1$xPdpb(7}`%YLyEa@sSw z>F1weC}#V){S`pH9%>a!n%`BA?#Mya*I$>Q5!fR;X2yE(;5n2m7B8r!m}X{Y(RRnk~QV=1t`Q?Zhd5HM9r^e|KLx3loR96QPh&@|CIW{!6-;;-kLzegisCaSzApF zC|C<#=!)YNNL#3t5LguTRmV=0wv?3uJX5rUg@plPGq`q?OC42u9V}DQqMd1AFwt9K zIjw+sT&S~GiXS>c@a=n+>y{2+Huu{q56haaV;pvMcej`sF*|dE!*}~{zg$re6FqnC$i982eSLkq648uV0zFa2DS_3HJ^|7C zL-9j|(3nGgIn;qNnh0jy$+V{=yNWGns_AGqy+h}tqOr2kE63idO$=XW*Igi?A1G)r zw^OVVM6Edh#QdSCJh_Du&za^oeV@DyLQp}}=*w$rhPp{S^czuAdi zR~MBOBeu?TKmfKJV^_=SCHf`L@(aamJ?R$QG&QZT6BMab7+PRh03Q!dA!ZL9Z_5FQ zjljX)@$OB=d1|CH?7eE1_Xs;?%RDS&3n;ykd1#NryUe+HRiyB+p<2{Ty_Gvf&Lo?B zK26aAZ~%;`Ki@DawWFPl45r^AjWwDjJ2nWIyg>>Zn!5k&)uBs%at%7Y{Nagqtk+^!_sVzWg;S0ADUiXN$I&qQj$+V0FY8gKL(IcZwtjL zY(N(=k=ZRO9kuV0r_Y0<|G3guY6CtU!|(0M~?1zq~J zxA$fj+z8pVJPY2KwQz2FL_<4BI#jfQfo{i+enMJ}1;i*O#G7wX*t1RdZ<2~W1@hOi z??9=F+&i<7JRK2{!BXR^V|EAV?|6&h1kDIddTq_ zwx5z;QP1HCI_17;4Y3Bbn99j*uls{On+PUI8EI~W#6qf+#!WkT$!j+>G=TI=AJkm4 zX3dp5x__1mFWXZ(-`=M&=&KCl>ZfQGZH-f-)UtEKD&*0%f%5=CtjL^D@!2Ueg>)LR zglfzcD|P`Xr+^J4)7=tX*GTHXvf~)0JrP4W#Nt>Bqk^JJL6I*QLvfm8Xn-tH2bX)% z9sQ3mI_bF$F={>|w)>Mzv`%r%P1W2y<#JvICery%2oxPAHsOBnKYUnG_d`PVQD!h; z^sAR~lzSro64*>m`vwODt$Cn+7}@}rCNAOx=9{9v+WA|NTDve{JA zCT8r3vu2W&oxPU9s`({htY(n1W9;2FL|ztkr?2wY{8*fNAs>(B zHFus|JEa%}eo|`r zs7lHO4}tN&)sBLG8OfbDN{!i+VE{_acC>&x6=9!#S`2at+zCH=!x^EKjESTk zL4|Yp>4z^Bv&8fUn&v#lQ!WGvgX$tIE&?%JiQiQ2+xygwJu9;EEwjj(afHrZ&>iK# z+UlKMiE#=s-6g)EM6ghZsTpoYqA^Gj7y+n1a;HGbG2rRbP(rcvEz)9@4yi4Kmu5oM z7NTR~qZMNosa~XAEx0Y7*ceYHpva>3>&&EzZB)VPzUb=}?!Mkf!?Ev){|1se314Fn zpBetH6Y6aL3%lVc^K~3Yk6t8~MD=A5NGDZ?T63tidjxF`^c{j&&kQR4^XJddFchv` zdx^kKtQw0@-yn>h3rhqf#IP3diLb!C)~kFaW+^ec+g)^3fPn6R26_eFhwVy+l!pD- zT{Tr~N*%BoqBGl@E7j8IbIE4LI7!3qVwk%wKG;Iy1gu120?@rMsj%r&DHAgM+g z)W!Fgza&*6?Vdfc=pO`DU4(g+Eb}Nw$d%&8ZA!pyv)%smoVt&jGS}vEAi0W5Y)^wx z4^gBFWk2oi-7%O&H|t-Yg6ZZ37=Ep~w97$4bM1F%u5 zKvSG*y7ppc0VmB;&^eSekVKV`_%b(C z=qkr4fJ84DUjNLfCF|r-NlFI@?n*Lki5vp%S{C~frxLD|XyYVEdNZnIq8ytnIZ;;4 za+vDyO1dgm{g!u67oJX`pc5t$01Wb-*RW47LMJ93rs&w%lCIq8W-|{W{P@hTnJk3( zXz_`w&f2~?kl#wdW~sXDloe)uA8L9N6<(@-%D;}&xXQ{mTotGZNo#@lQGdTVvTZnT zc}ZNAxuzENB@un@_eipxtrJD&nC$j99zS%5K3jHEMXG77vQ8gLON%IG!&DUuq~|`& zEK8f*_wO$_VDJk!r&Ovq!C_t9e&YQCdL%hTV$T~(Op#ZktkafRhDd_ z_p19EU^n~5Jg2;mi;}I*5kI?EwY=AhxP)mjzyuTYtAm46=&qHs@|OrkEaA z4ZapN6a1`Dv*IqDdT+%^AXbG~rOzf|S^WX_%x?QQ+sXa~!7kBm$Ba@7wperSz#W0W zeg-2!98jLY^l*!%ga&^VjB8sM_~c~6FGkgj7aT^EKi%fEoI}c3Hl^1hNWfd0)^FIL zkHVO=BP|n?#(<4WRSkI<1XcaTxyi;%vj|j%(L*?c=_Q2XenhG9_u?Bx9De=%_YiW+ z63>oSfUye0l;^wI6eW9@_>Bo$(!%IVl}+?&+l~i^Q*0;oL4qp-^u|_*O zK=jZ@`+^jCjOCkvoxlJ7`-)cv8u3j?S8@sp;Y5Uol!8uuj_D6<%8VO_#(MYu{TQSe zeUvr{vg@pD6Hs0=}J%BZOLp}(%Ds?ef;pe=)+j)HAl-EJMn{{3fA z2UQ{{d;9nt#w`(V%|NZYc800SEW+hP(DFhNJ2#|LQmEHz>1b;cUkGa7U`C>*Meg8f z|7IfN{0R`CnhC@3y8()dQG0^;sa9VrYv5M@prXnT1;qOCr+_PH%kQuM|4lT-|3M>^ zVk*8YSHXEt^?LsFm^y>DS0@tNm-=-d=EL z4q$W=HD4dZ%OsUJLhk$OyoiDtdlA0X35%6&H`?L({J*ygRXPS4RWc{Z-&fjRs^yN z#JOS*htxsS2+6>~N5+&P?iP@H;BxwDFrxqZ>o4&!VszmwJwqe-3bbW*qh*`@S9c;c zW}5Y6$vw2}2IE`{=^y?Tje*1~pCPqDU{-X+aL2-kC`mK&>{4Xkhm{AZ7J+Fx7d~wj z_c4@JjkGT@o#IrDGS5LB@oq4z#g`|+ANIm5{P+L@+a(gxVLF&q`NT>{A3u<@@p(&g zkiuP2uAW?2ZXzZhWRGgS6+d+Uql&t33#9|L;)s|@m{q-*Fu7IWWT---!dBrShz^te zH4;$nlZLaumX5DHRhnT#$CEv+_FpeSwY0f@l-zLSM&p0)oIW*7!e@?ey@+RuX5mJN zT;iTkL?`~)cKN-brM*EnQf@7x9}zFaD#7ML+9*@$dF<^S#?xwj2AD)6u87QM=jc(< zf9I+QLp>Oe*)r5NdJ$=3XFsx)0(nVMOFFFMJ9sdxaVjG17ZUPY;kSta znzBqhmOFDARmd&76&G*hR=aX}|NY~=TrYa6*Q%XE zaTGPaAcia}4P7*B29Ih%D8WwD;|3@*yc>zpkT~S3#&kaUg+V@+_dNsR5XP!X@iA-) ztpV3mY?_+Ip01g;ZHn!LN{-J|AE(+o*ueH%xp;BamAWZ6ie9U z;jz?URfvroA8Ln{jF`W8noaK5P7e=_3G`Qzak(PSod#;}#muOM-pKm&gIv@Q*@>DE z=L<7{R4KSRzS|FI`)yqJ~Ce#S&_X{HlJ zfL`i3T`?AB=5iv!AdINvCM#hg?f*kIqXTS59q>`)-A#0SY^Nn;K=-TLbkV8->l6LH zsQa>*ScUM?7>(Mk4+mkWJe4XT*VEHO%pjGtidSBe8H{db{1_I0PE=GMi!r*2$W6y* z^|KI)4U#K##7e*s3kZk=-!dEX-1>3>fiqaaZ1?63EvOW|JIVyUUX1&9pI4o4A!Cn9 zo?{Nsche$|QFA1*Xz^PPj$T!Wbcdzr)MbIOzYzEIn|lyP3F1HRT7mb=|9P-&5=uN} za-`PtpoDoLt)ebKYiensq7i}|)Vz!ZYhe4V&-Zp$!(=uIhS^8W(w9W0@vlTaAjI#J zOaicg(;5q5@r%XbI0gGVN!#W}5%wA{DK@aYM2o~%6rlRJ|RV*-;o?WP9BP4S~!c5$3Vrz;|yBFI_%yD~!#Q`*zKBkl_kJ;C%^ z+ARTL_4^sbC(gGics>*j#qC7E8Gy8;{;#x4MgVb_VseXv%Ig~1wr$(wbl$QW>MJRz zG)=QJt_aH*FY!f;b{FAI6!Ts`i+Zycgo6waTTyo&oOTwVK^i~J!x?3OH4B3yTS+U0 z&TLs3iS1G#2Z-kZzZDG#i(n9$R)!LA63fRLhi;N)5QIQS{IPv0ZBfR~l0cxCt4D-~ zTXQH_9x>3}7Satf@im|Gg$_}NFZsPf>cp`i)^B0om>?yGD-E#uGS1uDPDiKM*9@v9 ztk8{a0CO}Q0m^)^{rvZu&+lh+vT$tA6O2pENwG;9n|3R=uVtJe2pVw}e@C)1v#Lm{oC9tBj3ZpM8KqLg3s0?>12)ry2o1+21{51G~A1J za$Nsg^x@9WwF@KJUmtg;V^Z1j}397C}K6>UO@)eo$lzNE8%`89BFbXK4 zhaie1mVeX!!``3XDag0K3hMNF^6 z8$gy5-S;JkO?UIR@Ee^1_dT(&5}Q9tqGrY-{Zy7?#}X=U<&VA~RJAKH562}!2fJ4~wi#8#h)$qDL5*Z|h0~xFB|STc{5X zK08T+i(;t~{+}wJEVdO~7=1f8Oc@d2J9M`E`F}6%f=d%FmJyjQx@LEc z33ivY3{%2NuBJ|4ovi9ycGrI(_^1bk9zWs#2@Y_|AlVlLw!heKqfqG^iVOB6rh62E z(c6vTpMrrb9@Ian5lz93MHOyX=)1Q2a8Mb+LyUsSu(p%!a`$ia^!io-pdDax^eIxNSjI^Vg@%TL12U#lB`dhY>I^iY z7O;;TYr*P6P<#!AAoJfP4NcZ#T>y$FV>*99JIlCd=A=7JY*!ZMpw+hR+^K67@Z`zo z@tt5tP3@L|E+|@xZb2_PJ_rDrsUAuDt|^j5I6gg$@RhWfii^AA`rYHaWHG@|GZ-;ZwumyhhJEqM$|V`xyp`JLD@E6&B60} z9qVF%E3tL~#Cz0sJFu^lK=+hM(bp7~?k7+(z;b>Z%1Jmz8RVdJ5*-{07{R|)LMW!m z0wE&qi$$kc8D9c(w;WwP4PaJF#Af1*SOm>~n1F#U<2M_K4R3kBhk%S;LjS{un_;Jy zzbrT@=iZjmf~-$~0pU16Qbk~CLa%~QWGh&ZP>|)bd@B=n%X4hQK>C8J-v{S=?yXkd~$<=gme=L99n$FKa_wBa06( z=Z<&~VWrU^L0&|}xuc_F&yKU;6D~o^tnQi(K>aHLYss+>`l-)~Fno!~Mf}1Q6&1j^ z$phPV?;bEe)?qLOb zYGi!j$&)9xi<5O0UEYd-_z?m)?{5+rN*|uG{;CKMg0ErZMZAqdg?#elNpTonN!mrG zB;Kj6%+HKYPELenA<`SR&_n|}Z}`UF1$&~NQrUJ`QVztUn!xen6?!ixUm=v`jJ?}! zdG4YjNr;5@#{2qo$BrJABW?yEECDns>$!kZz$kb21_7+zrJyjdEHFl9p?aUeIl{4z ze>iOMb_>IAd~Mv(`$^O#ooBy7?yf=fsoKYl!wJ|fL1vug)Hni`Z}#$CqP zHp3RyTsZUPI)yM0Y?0J0N>BDw+b$8?8YZyw+I8!&papBLh_;9#L3&`eDMc^zvd}D9 z32oN5O#R3lCEDA2TVgCEO-gk+`_W-j7AtFZ>6zgPBZHi`8s-Gzf*=GF*q1vj(_@z| zTquWvYJuueP9?rk4GY4nVX2M-6QqwugmmXaND?2Ph}*Z)a+_Yf4WE5s*@ zayNpkLI;9{9To-fEo@Tx_8vK0st%hqOrSz#MYg_1ft~Bp^FL34DhdT&)1T#;4FWgP zA7EBmfzOeiz|uKBLpnGz$+d|(*fj6J|NG9Jk+_xy0aKG84f>(%)B-xP<}9icxeSi2 z&{KCd=%FMdGEdR1+h+SkA4aCgtsFd1{a1kkU0&u&iAK)}^%TigA2lo3cqu5EK*Kd5 z=QfdbnPX#Pxsr*eSdJX2fXmtfPeSQiME&vqh`&_aLi z+zwg@X1gdt3(*hU*qa&A?u+3tY@|Gv5MzwXrEp6h@63#*Lk%DeybYXAS6=*j>08=-%B&HX>Q V3kU7r&5~{sJ12QI{`A$`{|mfv7JL8z literal 0 HcmV?d00001 diff --git a/doc/sphinx/source/recipes/recipe_monitor.rst b/doc/sphinx/source/recipes/recipe_monitor.rst index 0358ec36a7..fa3899cde6 100644 --- a/doc/sphinx/source/recipes/recipe_monitor.rst +++ b/doc/sphinx/source/recipes/recipe_monitor.rst @@ -210,3 +210,10 @@ Zonal mean profile of ta including a reference dataset. :width: 14cm 1D profile of ta including a reference dataset. + +.. _fig_variable_vs_lat_with_ref: +.. figure:: /recipes/figures/monitor/variable_vs_lat_with_ref.png + :align: center + :width: 14cm + +1D profile of pr over latitude. diff --git a/esmvaltool/config-references.yml b/esmvaltool/config-references.yml index baaaa44c96..a36e6d7d38 100644 --- a/esmvaltool/config-references.yml +++ b/esmvaltool/config-references.yml @@ -446,6 +446,11 @@ authors: name: Sandstad, Marit institute: Cicero, Norway orcid: + sarauer_ellen: + name: Sarauer, Ellen + institute: DLR, Germany + orcid: + github: ellensarauer serva_federico: name: Serva, Federico institute: CNR, Italy diff --git a/esmvaltool/diag_scripts/monitor/multi_datasets.py b/esmvaltool/diag_scripts/monitor/multi_datasets.py index c6bda52e81..6fcedd9470 100644 --- a/esmvaltool/diag_scripts/monitor/multi_datasets.py +++ b/esmvaltool/diag_scripts/monitor/multi_datasets.py @@ -32,6 +32,10 @@ can use the preprocessors :func:`esmvalcore.preprocessor.regrid` and :func:`esmvalcore.preprocessor.extract_levels` for this). Input data needs to be 2D with dimensions `latitude`, `height`/`air_pressure`. + - Variable vs. latitude plot (plot type ``variable_vs_lat``): + for each variable separately, all datasets are plotted in one + single figure. Input data needs to be 1D with single + dimension `latitude`. .. warning:: @@ -355,6 +359,35 @@ show_y_minor_ticklabels: bool, optional (default: False) Show tick labels for the minor ticks on the Y axis. +Configuration options for plot type ``variable_vs_lat`` +------------------------------------------------------- +gridline_kwargs: dict, optional + Optional keyword arguments for grid lines. By default, ``color: lightgrey, + alpha: 0.5`` are used. Use ``gridline_kwargs: false`` to not show grid + lines. +legend_kwargs: dict, optional + Optional keyword arguments for :func:`matplotlib.pyplot.legend`. Use + ``legend_kwargs: false`` to not show legends. +plot_kwargs: dict, optional + Optional keyword arguments for :func:`iris.plot.plot`. Dictionary keys are + elements identified by ``facet_used_for_labels`` or ``default``, e.g., + ``CMIP6`` if ``facet_used_for_labels: project`` or ``historical`` if + ``facet_used_for_labels: exp``. Dictionary values are dictionaries used as + keyword arguments for :func:`iris.plot.plot`. String arguments can include + facets in curly brackets which will be derived from the corresponding + dataset, e.g., ``{project}``, ``{short_name}``, ``{exp}``. Examples: + ``default: {linestyle: '-', label: '{project}'}, CMIP6: {color: red, + linestyle: '--'}, OBS: {color: black}``. +pyplot_kwargs: dict, optional + Optional calls to functions of :mod:`matplotlib.pyplot`. Dictionary keys + are functions of :mod:`matplotlib.pyplot`. Dictionary values are used as + single argument for these functions. String arguments can include facets in + curly brackets which will be derived from the datasets plotted in the + corresponding plot, e.g., ``{short_name}``, ``{exp}``. Facets like + ``{project}`` that vary between the different datasets will be transformed + to something like ``ambiguous_project``. Examples: ``title: 'Awesome Plot + of {long_name}'``, ``xlabel: '{short_name}'``, ``xlim: [0, 5]``. + .. hint:: Extra arguments given to the recipe are ignored, so it is safe to use yaml @@ -442,7 +475,8 @@ def __init__(self, config): 'annual_cycle', 'map', 'zonal_mean_profile', - '1d_profile' + '1d_profile', + 'variable_vs_lat', ] for (plot_type, plot_options) in self.plots.items(): if plot_type not in self.supported_plot_types: @@ -535,6 +569,11 @@ def __init__(self, config): self.plots[plot_type].setdefault( 'show_y_minor_ticklabels', False ) + if plot_type == 'variable_vs_lat': + self.plots[plot_type].setdefault('gridline_kwargs', {}) + self.plots[plot_type].setdefault('legend_kwargs', {}) + self.plots[plot_type].setdefault('plot_kwargs', {}) + self.plots[plot_type].setdefault('pyplot_kwargs', {}) # Check that facet_used_for_labels is present for every dataset for dataset in self.input_data: @@ -763,7 +802,8 @@ def _get_plot_kwargs(self, plot_type, dataset, bias=False): plot_kwargs[key] = val # Default settings for different plot types - if plot_type in ('timeseries', 'annual_cycle', '1d_profile'): + if plot_type in ('timeseries', 'annual_cycle', '1d_profile', + 'variable_vs_lat'): plot_kwargs.setdefault('label', label) return deepcopy(plot_kwargs) @@ -1137,6 +1177,7 @@ def _check_cube_dimensions(cube, plot_type): 'timeseries': (['time'],), '1d_profile': (['air_pressure'], ['altitude']), + 'variable_vs_lat': (['latitude'],), } if plot_type not in expected_dimensions_dict: @@ -1190,6 +1231,78 @@ def _get_reference_dataset(self, datasets): return ref_datasets[0] return None + def create_variable_vs_lat_plot(self, datasets): + """Create Variable as a function of latitude.""" + plot_type = 'variable_vs_lat' + if plot_type not in self.plots: + return + if not datasets: + raise ValueError(f"No input data to plot '{plot_type}' given") + logger.info("Plotting %s", plot_type) + fig = plt.figure(**self.cfg['figure_kwargs']) + axes = fig.add_subplot() + + # Plot all datasets in one single figure + ancestors = [] + cubes = {} + for dataset in datasets: + ancestors.append(dataset['filename']) + cube = dataset['cube'] + cubes[self._get_label(dataset)] = cube + self._check_cube_dimensions(cube, plot_type) + + # Plot data + plot_kwargs = self._get_plot_kwargs(plot_type, dataset) + plot_kwargs['axes'] = axes + iris.plot.plot(cube, **plot_kwargs) + + # Default plot appearance + multi_dataset_facets = self._get_multi_dataset_facets(datasets) + axes.set_title(multi_dataset_facets['long_name']) + axes.set_xlabel('latitude [°N]') + axes.set_ylabel( + f"{multi_dataset_facets[self.cfg['group_variables_by']]} " + f"[{multi_dataset_facets['units']}]" + ) + gridline_kwargs = self._get_gridline_kwargs(plot_type) + if gridline_kwargs is not False: + axes.grid(**gridline_kwargs) + + # Legend + legend_kwargs = self.plots[plot_type]['legend_kwargs'] + if legend_kwargs is not False: + axes.legend(**legend_kwargs) + + # Customize plot appearance + self._process_pyplot_kwargs(plot_type, multi_dataset_facets) + + # Save plot + plot_path = self.get_plot_path(plot_type, multi_dataset_facets) + fig.savefig(plot_path, **self.cfg['savefig_kwargs']) + logger.info("Wrote %s", plot_path) + plt.close() + + # Save netCDF file + netcdf_path = get_diagnostic_filename(Path(plot_path).stem, self.cfg) + var_attrs = { + n: datasets[0][n] for n in ('short_name', 'long_name', 'units') + } + io.save_1d_data(cubes, netcdf_path, 'latitude', var_attrs) + + # Provenance tracking + caption = (f"{multi_dataset_facets['long_name']} vs. latitude for " + f"various datasets.") + provenance_record = { + 'ancestors': ancestors, + 'authors': ['sarauer_ellen'], + 'caption': caption, + 'plot_types': ['line'], + 'long_names': [var_attrs['long_name']], + } + with ProvenanceLogger(self.cfg) as provenance_logger: + provenance_logger.log(plot_path, provenance_record) + provenance_logger.log(netcdf_path, provenance_record) + def create_timeseries_plot(self, datasets): """Create time series plot.""" plot_type = 'timeseries' @@ -1619,6 +1732,7 @@ def compute(self): self.create_map_plot(datasets) self.create_zonal_mean_profile_plot(datasets) self.create_1d_profile_plot(datasets) + self.create_variable_vs_lat_plot(datasets) def main(): diff --git a/esmvaltool/recipes/monitor/recipe_monitor_with_refs.yml b/esmvaltool/recipes/monitor/recipe_monitor_with_refs.yml index 0d1415979a..b75d84df3e 100644 --- a/esmvaltool/recipes/monitor/recipe_monitor_with_refs.yml +++ b/esmvaltool/recipes/monitor/recipe_monitor_with_refs.yml @@ -17,7 +17,6 @@ datasets: - {project: CMIP6, dataset: EC-Earth3, exp: historical, ensemble: r1i1p1f1, grid: gr, plot_label: 'EC-Earth3 historical'} - {project: CMIP6, dataset: CanESM5, exp: historical, ensemble: r1i1p1f1, grid: gn, plot_label: 'Reference (CanESM5 historical)', reference_for_monitor_diags: true} - preprocessors: timeseries_regular: @@ -67,6 +66,16 @@ preprocessors: scheme: linear coordinate: air_pressure + var_vs_lat: + climate_statistics: + operator: mean + regrid: + target_grid: 2x2 + scheme: + reference: esmf_regrid.schemes:ESMFAreaWeighted + zonal_statistics: + operator: mean + diagnostics: @@ -168,3 +177,16 @@ diagnostics: color: C0 CanESM5: color: black + + plot_variable_vs_latitude: + description: Creates a single-panel variable plot over latitude. + variables: + pr: + preprocessor: var_vs_lat + mip: Amon + timerange: '20000101/20030101' + scripts: + plot: + script: monitor/multi_datasets.py + plots: + variable_vs_lat: From f9c7e4afdd5038a2273d85f5896882caecd7c4f6 Mon Sep 17 00:00:00 2001 From: Paulinebonnet111 <123577048+Paulinebonnet111@users.noreply.github.com> Date: Wed, 6 Sep 2023 17:15:24 +0200 Subject: [PATCH 3/8] Add Pauline Bonnet to citation (#3347) Co-authored-by: Lukas --- .zenodo.json | 5 +++++ CITATION.cff | 5 +++++ esmvaltool/config-references.yml | 5 +++++ 3 files changed, 15 insertions(+) diff --git a/.zenodo.json b/.zenodo.json index aca2f05a12..348d2aa80f 100644 --- a/.zenodo.json +++ b/.zenodo.json @@ -86,6 +86,11 @@ "name": "Bock, Lisa", "orcid": "0000-0001-7058-5938" }, + { + "affiliation": "DLR, Germany", + "name": "Bonnet, Pauline", + "orcid": "0000-0003-3780-0784" + }, { "affiliation": "BSC, Spain", "name": "Caron, Louis-Philippe", diff --git a/CITATION.cff b/CITATION.cff index ffda318cdb..64378d61ce 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -358,6 +358,11 @@ authors: family-names: Beucher given-names: Romain orcid: "https://orcid.org/0000-0003-3891-5444" + - + affiliation: "DLR, Germany" + family-names: Bonnet + given-names: Pauline + orcid: "https://orcid.org/0000-0003-3780-0784" cff-version: 1.2.0 date-released: 2023-07-06 diff --git a/esmvaltool/config-references.yml b/esmvaltool/config-references.yml index a36e6d7d38..fe28d612b5 100644 --- a/esmvaltool/config-references.yml +++ b/esmvaltool/config-references.yml @@ -124,6 +124,11 @@ authors: name: Bojovic, Dragana institute: BSC, Spain orcid: https://orcid.org/0000-0001-7354-1885 + bonnet_pauline: + name: Bonnet, Pauline + institute: DLR, Germany + orcid: https://orcid.org/0000-0003-3780-0784 + github: Paulinebonnet111 brunner_lukas: name: Brunner, Lukas institute: ETH Zurich, Switzerland From 41acdb3120a858e2b4b29a27127da796c93e9780 Mon Sep 17 00:00:00 2001 From: cubeme Date: Thu, 7 Sep 2023 12:22:43 +0200 Subject: [PATCH 4/8] Add Hovmoeller Z vs. time plot to monitoring diagnostic (for Changelog v2.10: authors: @cubeme and @helgehr) (#3345) Co-authored-by: Helge Heuer Co-authored-by: helgehr <38046421+helgehr@users.noreply.github.com> Co-authored-by: Manuel Schlund <32543114+schlunma@users.noreply.github.com> Co-authored-by: Manuel Schlund --- .zenodo.json | 9 + CITATION.cff | 9 + .../monitor/hovmoeller_z_vs_time_with_ref.png | Bin 0 -> 89153 bytes doc/sphinx/source/recipes/recipe_monitor.rst | 9 +- esmvaltool/config-references.yml | 10 + .../diag_scripts/monitor/multi_datasets.py | 430 +++++++++++++++++- .../monitor/recipe_monitor_with_refs.yml | 57 ++- 7 files changed, 497 insertions(+), 27 deletions(-) create mode 100755 doc/sphinx/source/recipes/figures/monitor/hovmoeller_z_vs_time_with_ref.png diff --git a/.zenodo.json b/.zenodo.json index 348d2aa80f..df129dfcd1 100644 --- a/.zenodo.json +++ b/.zenodo.json @@ -181,6 +181,11 @@ "name": "Hassler, Birgit", "orcid": "0000-0003-2724-709X" }, + { + "affiliation": "DLR, Germany", + "name": "Heuer, Helge", + "orcid": "0000-0003-2411-7150" + }, { "affiliation": "BSC, Spain", "name": "Hunter, Alasdair", @@ -199,6 +204,10 @@ "affiliation": "MPI for Biogeochemistry, Germany", "name": "Koirala, Sujan" }, + { + "affiliation": "DLR, Germany", + "name": "Kuehbacher, Birgit" + }, { "affiliation": "BSC, Spain", "name": "Lledó, Llorenç" diff --git a/CITATION.cff b/CITATION.cff index 64378d61ce..b9c77159f8 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -181,6 +181,11 @@ authors: family-names: Hassler given-names: Birgit orcid: "https://orcid.org/0000-0003-2724-709X" + - + affiliation: "DLR, Germany" + family-names: Heuer + given-names: Helge + orcid: "https://orcid.org/0000-0003-2411-7150" - affiliation: "BSC, Spain" family-names: Hunter @@ -199,6 +204,10 @@ authors: affiliation: "MPI for Biogeochemistry, Germany" family-names: Koirala given-names: Sujan + - + affiliation: "DLR, Germany" + family-names: Kuehbacher + given-names: Birgit - affiliation: "BSC, Spain" family-names: Lledó diff --git a/doc/sphinx/source/recipes/figures/monitor/hovmoeller_z_vs_time_with_ref.png b/doc/sphinx/source/recipes/figures/monitor/hovmoeller_z_vs_time_with_ref.png new file mode 100755 index 0000000000000000000000000000000000000000..734913c60b9c28abbca5c43c154a57daa0e8b6eb GIT binary patch literal 89153 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

`K z@oZ@I0ZPR_6G+S`Ytp{CCY6^?igWb9PZRwG4vzJHU!Wv*Q;AFDB#FZ5|Iq*0xvoy3 zSFVIprg-{S16mRx^tsRXAZQ=LNg@tL*Bexho-dOa{IhotK|42n+&FvZPf<8X0{32M zkba>iJg$>rLri2A=Eu(ICtkES&A>~DnP#llqIO!f{_VG+QCIbY%Bg&kf0aA~iDP=fXe9;Cm~P#Sm8?fY+Kn-7GL3T~o4d z(5JxDl>ZKOn(ec)&Uz1r;??;HL;=+>s(V@A8JM$pl}Q+#RHWx+IzEpdBYpKBB;+>{c_i) z!wcKK=!`mNgc|X3^1Ke(!s+^_E{8K}wxV;~KS9h@Mer5u_4q$V^e0V6eO$q z%+NUJ{OwNdniON7i01C##=!dQeSqPP+ETy|^iTNjG@!#D3+AX(8i(CZZuhb@Hf-wY zoq+9@cmO^N4EI8IPdnwh#~mM(_w*xjhQ}mm$^&@@?>o8qvczCNw|S zdmI))GI5aaGx7n7R6s}LF~AtuaSJF&t7K9j98>g0!DX5yZJ&6$^kf-}w6cH12OPTQ zxV}7SNW7h?4oJQc!j#+|mm;3glm}qzlhe(w#_MXn31`^W{tNW&(Zc?Kzb0~>)Vdgs zO&y+!&g`bcj$G8U!o|>P4N347QuGxYH3ie>OZ0a>rGVFLFIETu4GtZ#31+cr;gyCGg(4c7bTz#&L- zQWgQ8K^7K<9#o4O%H|aT+GmZL8)$Xf@JpQr1e5EwkGX+S5Yi;@*KFj4hGPcym*GoN zxOHxTS1BhR-yi%*IE<=+r*Qddidd{W^SAtcB#?*v9PY1hKaH|> zt-%k2Q%}Hx=CUc_<91OAW~?QU5TLg=W8ZcCo72Ce&Q$YR6c@Upsfo`nD`1TnYXJ}= zCfdJ>dKi^&{B`rpq@A-fQW?u03O*g7O4}8p50^))OIXaD(Vh2WV;U^*Tn$Z{=akD& z!>#(?fW5Yoe?wn#GQr3U$dL`gcJVR7MkC*bhZ*c=aCrqUJd^Bt5Cl2@OMT@VV8ZV zwhDnL0&mUn{E-Ya$bB&;`iF~N3)%kr(SC5)vJvC@*htgNiO7!7zKfEsAT$L%07Ybm z-hEpA5V-hN{o5(x0x2@>p$x1)P{{wx0EknynAKPPgoSDo@k`*+FBao|G=hJ@?hkq+ zg22T|XvDr4&kYc1!gW+^`l)tJEY_TcnGoinck&v_^t<)JMV!S<-=NVTo7#qiaX?F^ z+Om~a!>|w`EmhTwM~*FaR@yL+mGJxtOfo3WG#xv4lZ`q*7)JQTwvW1UEOTB-iL5Ih5l2<+jk?NwW5e03s&buz0cc4`PqapHTFV_(>W0!UGUG-@7ZXrM9aR1FHFR2 zpy^(f(-YXO)9ydH9FKZYjCnCaeDo6w3?%SUW*{6IyK|q&>fq%Z@X4bwTx0F*`4JWj zZDRTM=<+=IcO%Rf`IPi-F43}cUC|av{qBb`**hHxh9U_!*Pws`!<(T1+H$-_rtVIO zt9N^t%K5>&@+onc57~eTxT?7OsgB!{+mx~o@py#TNk8c!l~cwmGv z;NQdjFC;GMQnIe`ynv|5FVjJ)3u<_pF(0PdZ_^20q-m$P!e`s8F@I$yMpH9Q0?yl~pSBoePHt7vZm$d$*1mZz zS<8zTi+m+i)T8~ZJM#kk0zKcdf8>%rKh?3y_sUG1=EEzPReHFZgyFixGYI8cUNpug zVJ+u;Bx4^4f#V%VMDEGvg|?T`c!FyBuf{;Gkis2Nx@K!cg-4R~%@%hZ5q>59ufvt6 zW3`09>-%^d=Yfocdb_PuP zzl^7XR@POnKV5RF6K=?oI((joK9RVXw}ITahVlihTJ zCp_Oz3LA~Wbhak7BjuEMJ%@@E)etHt5iwtEs`|c?GJ!}F!L*5#O51wc+(wpS#Cn2P zu1Yoin#)`Eq1t`pQ{PoWq%BB;KtXqARqp*|L%XB%XIuUs#8$;pXQbynPg09&ub9DW zR;$^&RCJmQGi_}wN4$N>A6wK1=?=bzAfc3!ksS!?l>G=JPWQvqj%}Z!@|O_MSFiVY ziBDB^)`E@9c-nUIDKu%o1Uw(7BYI4G-bFh80H9q}D>;Cchn+AIAd|FHsOOn({=kH$aWWk!7SqE?S(6Jp$dS4VTroNL-5 zC%oUBW8!1ePfXS6iv4}r_m;W4mTxu9b&^R>@AV)liA+Y{^O#r8mLCebZ=QZCj4f$D z38OZyfr_Vpi|7_tl2#_CT z*1Zqw=YFOO3X+Lb%Cf<^wDA-Q7HjM(8&o$y&put0)T1`eED*<9h~n*2MV)Rd7+KGP zXAHI5{bFoHc)ZM*Cw`vJ6Jvn)2*j@1af3}whU7>?t)oP)X`}RBKE7*Xzi*-Dv+UiA z08B-TyPC6T2U0&p7j-PCAQ%u9y*=EkIi#Y9{(0{}B)11)-fK+8`bWguF6oz*TX(JL z31SKla#3#e%p)0Geg1%hrv+2-2(Ar$$F_8i>mOqzB;@>R32dn6qF!fH-+h2xxWy+N z-ndV|6OwrME(jfK=5cw8XR)wvYz`CVvrl!ag(x6`ESR68lB{IDhvFZ#tRY&8RQxvQ zW$s0$A5b68HKb8|)`WInkUsVIf}2(_2dbRgx72U86GO^J1zWnTH9*S`QZy;DPN$?I zW}-5?KlExFg${@#iO$7ioYvQpf{JRvlt81hJ)C7aSy|`B>L;hY=pLy#J?QW6sCH`I zOjZm=R~*5%oPN=7&4z(cuwN$iWDeNowB7d)cRUAWQ8;y@gM@Q@PB@8rp=bOhw|`a# zYe4|=jg6;DVHSs(=e2ZxuPL6D62Efx>p^BM6^<^BL&8}YgFkW{hk{}+fD~yZ`Cwci z<%qjOHDfHF)__m+`xi9!Ec7G(`CHCl!77yl8#x2k^Ed6i2^vw#z3CJH%<_M))q7vHk46Om=G{l^GsG!NW2V`HBH&=z7e{*<{5R{!bQ^_TvVm-HTEI^C{XvGoy2 z3i+<{wrb6H7F-?OZ)!UQ9x?As8Lq%NzvNf-!WZ_X9D>9EdzIUzLyDX zk%q~BExIUK|47>ukpMG1*L+hgBHmXas%rgnW5?;-b_tCF;w4N0%)WV|_Ixp6^>NNoX0e zmPw9_qAr{ZcUAeU7V4231a(PPQ98@vT)f zVb+6BcA^Eb6FtYUl!t2_*KaKeL4!%JDQu}B(eJ{Y+DZ*)Ntxb#=EA@VAsW!JzCLB# zg*@S{koFDs2oX&TtdyDx>b1=RrxqR;_#p)ZUMAvIYvxaDE>qt}!Lhqv3g{&89g)&f z_Q|$*GjXYX<(SnyJzyT?rU>R~w0jfByGRN4&s~a5^30#oxXz?CNZY+3+mr6`k73&f^ypMKm4qhrf{*U8Q4|d3Je)cVU1+JwelWFCaC5)~}FbJz_ z-LYd$5UNMX-)GrEpjih(zkmInLLRdn|KuV*o>ddXROT%tOA9~OdjDGPvjC)l=DkAB zS9*>Xt#-ex6+(^eg)py{0eEf{w70-*Fu9yWv1N5|PG zX#)2i#v#Nm0Y@&#M9EC+@8FBhSxgsX5peVn^Y#(>Aiy zo7p#?H#$3RzDTEff$h#}tICoeimF!(R&8AgMeU`stwV0KBG34Bm)U7c<-=}&r?l>c zbO?Jt1v8$-m&bQxCwex!eJ&pnZkdP#vvqK?2P!$IG@+{n2E3$|^L4Y`=w=G46G~Y@ zVG@^8eEM=?{8{F-JYf88^L%69bEx5BtG_ze8>3wY*q842f8@^gc&zWcjyiKvb?(WK z+(i}wr=6n#Iw#SCc6aR*)<6(PNh`$L-LrYEsp|b&JPPHYu4Ds~Tk_1IRN!@zcoX!E zSq4(`4vb9HHF240o-?7gDuf*G--*602z~<$LPoHKF71DrP}q~A`HjCO|ANHA*&)~W zsW_rPFC`Z=eGJ*5)lL+st_`E+x2^JY)UjW+{lvM{Hkgs{CfdO#Nvb{MI0!qUDW9X| zTqmAvphcfi45ckNJuK2y{bwr$KVHRC(KU2w>5gs0Gan31N&|bV8ntC-z+I-A7;VWW z{f1kg=D2eLoL^U;t)(!Y z`fC#X$b&W1J$-S6+Z)vN`o`K(qVHCMv|&c)8I&D+1iM|Ss`TK)H5l^K9Pj zd1}TJ|6sJ1+3cDprvAZR3Gq1P=s9e9wQ)RCXF?rlB;rk|( zt-EPxtUsejskeGmBrSj8=HWP^<;NplM8rfpNIImw zC+qs}CS*eR1QMm^&i7W%&5oawoT=~?)c6Z)^bGm<8>NxWPb5|o<|`&=%IxEpb8q6n z!68;v)6}N}jCNhE5T8(kgugnUxE8cS_0m%AWMe5DTV1M;UbrL6|0~=~^!`W4q%ty8 z&G~vo0^hw2RYIypjJZ4hF)r+t5H9peclIMB_&4+YL17K+w_KghjGV^}>`9)t($dIa z_5>Yu+b;uR7jbBpQC`XCo2oy4e`~c$8cz0#BMm_&&r0iHv};gkGLwYIdSJmvNIYEz$8Is z=vx20F3own4UtqJY7i#)*9`~A|Hm{*%%$WCNltkO@o7Pz)9@Pti$$BzpV2MWMBzlq zR*_aAVd(Z4J>oE*!_;k`Ki*Vex0y}W*{w-Y6JuW2SVl+ zU38Xsh7*H=MAGgrYBdoNdYW0FJqQ-8gSQl2;z(g>KO=sml(F9D2WCQ{g2;v;HD1CkN!J(iH(@s%VI)7{NFcS zQa!fT5Uus6l8s3lNqs%V6-xUk$_dQ<8RY3yAZ#l#iHo(5<;!7GD*V99kswg%(HnTBOa3SKJ(1X68 zoXeBRs~9E!VB_!_o9lA)*{%a|-R)OtHy(iGoxkq9U{lh{c)ugNHy8I&Q$ahfCbrA3 z3cg<)D^&2km=|5TF9B0XI><>gM9mC?e`=x-O*|r`L4+##eQCTYD7rh^?ehifRZgP1 zfcvq#8JS5k=N`C`+KijDSsL82#OS4MJcNKjFsg?H_wb0zyrzQH!un%_GE9-GSup)Q zaG|}Iwxa*5S8HLjm%kvDIIY@>nma@@)wvWsI>@iWH7_KGClHIweTmX}+7ZGiYNbz` zyn3v!spU=TCHT!$K72%~MTYgU!2MCai2+=j?~Ou1ovF0!=cUe{wB9p26Lc{5+}6L! zKw@#Q5E(%4#@X~u*sPlyRPs%E^50VQYN(iS7kd{Xf{j^umOta^Y=-7Win~js6%vq| zviM2V>Al~3&uKO<>lPup>-ANxzubSh{70Pkin>)u!6<=+2Q(vl2TQ`H)+cuT^w;0W zpGeTBm)iw1`DfB?3$`_zf&n)1$)4{uK`CEuj|%yl*Q)wrwIX}H0d&*sEC{H~&GtC9 z8e)&<9V|+kSOOKl(=LAFO(nbRyXCc4ofAWws#l`r{ zm}bDeO+T3n3Eag*jA>DwqaQts>oQ*d$X~@~9orTyp(@5!cp^7+hb6mDfTlb-Vqc1ZJQqG*8mp?6y z>t*zEY?h1Qry|6+{xnJ+)#Tq$X&5L+xvLYQmdA>)21Avk^nRhc8#TZQGVum&KPL% zdR@{fJkCpQI5kV1%^;bS0>Upu#6b@>Lzd&sP2**N9=!gnampjqJ?t*)$gRmc8j*(x z_Dj3)Z_i_tD;mg#Xwwram`V(SFO~P)*xCCuNv(C|CWEY=KP$RthiLSrjkwL`YLY(@ zhknphg?q4Wk(AEZkea;F=8coPDORf>S(E2ya@`A#3zDJ&-=_K6(U&sP5Z}Bkg?ipV zH@|l%$F2Hf3^Vq^4nnc0RKMg>2D#0l=3C~&JeCD>Nn z_4(CM3Q-ld{grML8V-nf)5j_bcwZBn4tCAN7o%u9IHp+k(#DTIM)R7MS5icNhFcb8 zeW1c6X;fr+s`~x@l87+3`20-!vI4aT*WEdr-QdR~UVTZDrrsy>>$388*FSQ+#f{eB z+7RJa-UGUrObumJut-$ue}$dW$HzsD7Ab)bo!sME}!tc?YWLgcDFH@GDOh zZrKDIPW@aZ3pO_!H}wV@@ya_9;$ia@fZXgq405(I>Jt7Ye1IcaRl%zk zEVEa*l)|LtN9E?qTE?mPhWj-QAz;attH{k-HVzpn>ri1vzS0aVe|kAhKP$c5KlGbZ z(kAdKy6RQL8*y8cw~S$NVEAq#meA*=EB=t1cm~b@qAxIfDROzOgKt95A--@_?`}*Z2eeiLjH@WeTxu#uh7UD zOiUj`-06P?!}?crF(%Uo!PNOjwZA4SBK>Yn}vhqbt^gd`k)hE+8Dc;-wfAI9V1@Vl$o7JY*GH6_@!LGyqaxHT z!5QyyWOUFfL4EzkzSrANF#2o75x8cogqrRhK`huCRP=Ixxt05Mh(aBUrSD{_%|OLwm^{(@M|z`LJa%!O7!p5 zNmA5LR``H&_AC8HNDDBqlOy`(RJ!DJ>52CCpNAreZ%WBlvym)!EESc3V(g0webLA}@G8E@DfOpZJVrWT>M7qz%j%rICh+sAqwNf^Sk7nMWtI< zW@mgDw3{6o*Cb;Ayt--5PoX9OBkYvbSpBd3aPBK;E}}MEtwMWete?O3fel#T`WLQc zelk{CVTEzWtbpy|MCtgGSpNAau}d^V|MQucDR1XTl8>fIEMQ~TZzRDkrl91~%f-&E z*uPr7>`D!nc9X5Rqhy4to2{0fzWGE^X7P-Iyn-fl-qS>UVYzk;A!$veVPD)x20<%u zmkWxoetV-x2gI&mj52BZB(NxQSRA&QeD8>&>gbQ8+(s{P;c4z6v!37I@G$vtzkRNh zuCK%>`t?y#%x1p7VVoNfM zn4wBJd3Fj?a>#8bazj8E+QSsJ;y7YS<8kHg^?&~qBWT2~n(Yco40UR!ee%MSfW0n8 z_dH_dxN#4`y|O}wnls8H*@&0#2^QqMbv_ked|XW`OlQ6Gsy;oW(f>kY`X=U_)PE`J zP9*Z_!2nTc%aax=R46;%lulZ-lGrv)xkfZ*2o{WZy+r0?8waWZUbumkdP83swxit6 z+y*53pz0?QVYVE)xr{v5a>Gwe;&w{wQ8HRCW8m~(j4yU- zOr#MpzTjYyB`KD+MDt$mLE=e&s<#?dC8A5d*Jf?5n;#25S3qFE;FjWg?HF=d{^8T# zP(f9;zxPX~x;*x#zSez^m}RLqJjf_Q)TE&}dCIHa8=K5lNRg$s30VRi%e{a{g~@*s zITOnP{+$)l*<*e&6u|E)-PNbT4h`aKC2 z>DL}l^+|4$qut&bXbF1*-{dP;`pD!>UPLs~7gUY8nx!^Cvr?VV1s}t<1Z(cLQ;YPF zpLwoIzRiB86HN*)U6`RPbo?&g4MVeDp=Gg1IpH_z)uQO;5&g6hd{rw8Ud;LP+-4y5 zk|&-Y8nt6mb!R*`W>H?59yS#b;Slt@8<3{py%DJlz6B;Isx)a&*(n8DF2j)LX*O`U zOfHxrZeKx&z;6ypGk1(u_);?eXZ7qvB?OPd3x$!t3Vsi!4uNrR=Jp$x2d2TvsgM5> zVfhb>n}Bd7JdX89CGqIHkFYse6Fu?(OH4st+{cy|*X~OgP-DMapItmCc&V9K89PMT zM7dpn$KA3B*HXqn_?JLspkx?y5?W1`eh~#Wbw1x$gX)39l1PVAx~yyaH6{E&u%=@f zwldGo=^gb!G5gwXPY0QRj*jMl0O3h^=#noHw~{)Nt-Ccf*cSx8iTp2XxUh0F>~+)y zI{i!ALJy9YVwO|urT@_{23(R4G%aj_LX=5jADf#!P;V`8aSV?Z_IvCeq16B6~ z#G7MCgdh4X$f`pUqWTYZ{#^bIPymgmh&DBZqdex|Suw#ayQ%1Hktr$h=mB3wpys3D zw{`EeBi0x$Rg7=cG>|7Y1_f?^qQ2lR`~yEZN8Fsd*xw|T9jk8@Z_UoSUEP!=WKOqN zw*&)u5?D5#oXbGFaWTRo6c4*l`|H9o6D&dk@fzKIu!}egZ>@-T1d&rpx+V>(xIWEb z*HUb)FnPmSJ0|wf%=NR!mx2i%UfG?or(935Z|+#Q0E|B7Vr^#|@e{a>n_>Nm+BW6yYYoP*np3n5pzy zTSTolcV{nY|E9&$rND?@2>VaPMk56o8Xxaa|97-SJb6bCOgQY>%kW;bBd2FngGyzR zBKjnZ5=eYkDTBMbL@c82Z)#c4R&$0P{3zIl z>M%K?>{CZv6V%TgOt>>*680;NRzW*bZ;WGtLD*=JF1WprR>%CO|iZ416n*oI7$<{02!!JSuJ914`=eoA37vhptJTnKHFQiZ>;^k0RF}-Zhvuj6=)NIb>~x9>oZv;g z;-QV0PO66W@sRl z{S`l{J;Q@P)-fFvk#UKMltIT5zVl)6Lgg@~wL8aw>;n1tA+YmhN}G1GHKoe1%Gy*D zC0(>}JQ;u469%bK1yKj5rNfS(!-p7#IWey`W20`FVoa zI0PxbE7dw>lkVw4_d`c*gy>wYm(|9t{?1~PDxsulk49!0WH@XWkcSH!}{0f0&$&KRP&r0oP$IZOs6ckd8IeB z7*DiCU9?d(ne2(w39(RO{Z*KHQ@6~;s+#&92>1C&%ti1Bkv?0HI0AIuwau{YgD-EP zhx>NgfWrYq6|xnR7mcawe#*Gj;~(T9)wX~QZ^Rm<4Giy>p?+77-Vr!DGqdgf=^Y3h zKP%w45WY_ya<$NX%7_8-R>!IThh{iwp!+St$aEn0!)hzw=; zu^R&DvNp33yR&c9yxL9^Zzy-KDYs6Ed(-~{KD(Z*z=!KLL8px2u&&DfFjIJ!i5fkyOzL;BjD_nluQ^AYV=Kt z`1%f^Mw!usI~6DVU)@(eclf@);53&4ez}oUF~NHGU7a``2Ulnt6L{|R;rXn82JF8- ze;^H^ycs_SRgS3ax^W$cCrP9SQt|~&_ak7z6d%Me3hVFOiefq}mI()J#$}MWdko)A zrY#$Q#DKP7b)gOxY4sM=$v}c52tb-8hnZT9kKTn9<$Pa zCKWFJbZ^AGoP@}H#+n5t@Lq3(kO~8hdn34rSqqsWa_|K!1f7M)-|NkLuDDuwfYrhAnRQ~#*asrvwyf%$+7!jFk_<4EhmA!aA-(k?^``C$#0lI z#Lwc@6|aKND7e_&ILK*%xryAZ2za{8>b)>pwzhNxaNI8r8)sQm2S0%_1y3AozphUC zs!?DNt~}WNQ)gs0KCJc4HCFl-S4GClp4W-gJhID{C?PCt)}2@xEdc#0*s#>OKrBq(3FAK;iXFMHMTPLN`+nf&XS_y zTQi2)FD^*oz5uN0%H(5Gh*3seWcc6-OttmV_WY>b6%n74OtG=f-(X0?iHyfHrt)IbO!hmU*Z~Ulq&qH zAhc$2nNS9Am=?h3dTRcjQWG1czgb|(DG?!I&70rPSJW$eh?*=DeEd7~j@mWNgj>lV$G{E-eb+aC)Vk zBIYWFeWRsBun<|!uj(E*23b0--ls+K9lMKtwFj_KyDolf=Emz$+)k z-Tr8LyqP#MhL#7ceesag#p-MyPQAmGY=qtE;x5ob(ELqfL?J3-bFRGfJr~q;`u6Ab zqKQ1!NlnBQ0fc|^44X70o?F}pF+286EZ4}r+YOqinhVS?KU`6~P39evf%OyzTPa#N ztmbC^{Bzju{{Yr$2)&4l323TAkp_ZjZhH2Dc_qaSmT6+&|1;El{o}-LZ5TVs>4;!y z?)+eTL*H;nLS*%qM&RG=A;&j=e;fCW-?*KTW*26pofrsgtFv}jYAqNL){HDKlxuqd zbdDt}vA>_s28l`1#G-eyQLJso+)U;(HKU?`THaT+em?-X5M{*ud~(s0;y-Xx*>8p^ zJpnbDLrIoLLab9G1NRSfG3;VQn$$0Veu8we)n4pP`Vc%p5b&oKM+)sC$W&IL*dUFF z50dlx7U!!PI*`68xV_hu1wj<0vaTXJFBU!>Cg!}7MIuFwE@ELl)(jT1Iv)HQ;j3uU zili`GnTCozi*c-8IX;C#TKi3TvObpA?F@+@(DTBa9%zRB$8ZbMg+#|NGzy-%5n3u| zPeV0q52`bLjq$|KKnPIw|>OSImUtSmNRA^-0YMm>7#$6$D!Ny7v|&wqWB;`mk62kbQ^d zFDKGRh(T&!cLT|}R2BRA@2Y-A3im~uW-h@py1fN$g3I+J<=@}u?!qf~oWcQjU}#%L z3Bj=0CaRYyXdmvrteP!tZW|(Jen=v0E(B!e~y-g7~koD~m)bW_h zZUY$JT<7}KO8*@zgK-EPhhv@h=V~=B&$iyUaXvO(71b2tB&;gF=Ze>XWu3057h1Y0cL|k z7_LMxKq-(yD>ogJBUx3yAJ?40udc>vcjruq7~OAIKU@Y~6@HE7ZRa`HwOZ5G_I^D? zXFv@44AF^ofe|y?_q;waP{fR|a;}Wt)c(?;ab7Yk6{z_Bxc-QTA#f?|KaNMgJh%VUH`ddY z%4%yzgR3%{L_FH*t_*fox^=3U;FU3rymn2U96Ef3?Ug< zZG;a0cUE-|k%U7f^9vs(ur%e=-9QL95m=Xr`Ew9LVP{7k-#(I;sV1O;r0$v8o?^_4 zGUfj@J&UKGx3G@P3Pn#Y@;h^DWu0@MH8MaJWc3_|#N(LyYyh7;>DwctZcR})MHUVO z^-;e@ke(lb5jEKoiMn%Jd~4=9<_cnxsNb88n$^kJ3wBkLJui=T_+=lA+lHEgyVqjO zf28q=ZmA7LTScm4-x;ZI{|x#?t{GEt!O#0<=#nKr1Mw{~B0^=o>-JD_lUR&e%+JdO zC?`)YR{{h110VbdegBRKyOY5;vmZsUP;{p2QO~XdvmP00;@4+!wj|@GnZUneW1a9w zBcypan^Jx1*m-@(;kdV__0t0n$?%k9ONH-#2dl zRI5t)5E}mxfbV+ZsOS0EtHf6~ zI|VkSv)?oQP6u~26YhQscgxE}QRTfQe0Z1`ACzDMl#C9Ke(-XTjs~xfv}RA{lMEDZ zj%~Pp11v@+|OYtC)v zL#Js_N7Gu0frIno#c=*I*zCE7qBR3g*OfV;_)*8-Gm(GQep{S31VBopduRC>l{yfP zns3|V%=cx&BLO_d1VF#~(Z{Ze0A%M8JMVbsyEN=sBv@k{YZ%RE)PY|-?g}%tQSni$*=3xGcWAKf4k$IlmZLnev|klG#TEI`HF0qs|PtHy(c`fbjPJ1irwG)ztq! z;(vcp0z{l6B8VPSls}CG=4TxHBcO*s{zOG8y|>pA>8b(-o|^HD>wtc1`mX@^(Sw|Q z<5N@2Q1H?NXLCRP(e7g-=Y0npjvKHakz){ee}2we$0hRCA2_lJr%};euDRh*sp+}K zxTg9par~IrlI5@Agi{-9^&-H?zd+R4KAa?^o&mU$hz}_HfQV!6qg%Z*`Np&YNO~`} zzM;$cybff*sxtr&3$3t2rs&XrIf*eLTcu}=M^S!2IKQeq9C#Kf{!w|Q(oE<)$eP-M zNhH$qxaA)ElepJ5Sy^aadQrk)XX8&*`!hhVJ~}J%JI&(EF#YjfJ-5eQCO*O#sJ(+i z%P}9P1$JOS6{o*Pjin1J9?j>^5ussT0e0i%LqI;{;krHQ{%C4=o0)mF{)vY}(uGBI z4T8TIMhlz5VepcO)ye_%fDYtK6u32=R}->~mE{ckR2LA)-ec&v9NzaeP83gwH2;AP zOZ6pu0GK4^C3JsG2I)$E@~Ph)e|(b(I8Dqc%p1K2LZCCsU%~YOEW}?Qxhg=d%e_a4 zJe6Q@LBWA_ZZ3Bmo2=4U_G<&-*Z9P48@zz37T^T?*m8XkzhA`>my=o~o;*>RM~m*L z>VEJcM_XC-yCAbmL&iz|dZ8CHGM>Gi`Iii+jP8%bQ0+9_F#4d}!7g}1aM#woYn0GY zC7p4=^?&3-^MU3x1C{TN0i~e)ZHi~G@9E%EZPcfT9hVwgKu`@-wcC|r)!o8G6@^FC zNRcW7(lrkHxC~Ep^xL5IafBI0JomSaWY;X-$+JG_1qwqh4s$Z*A}RhviE4SwV`eH6 zVttdu!k?hx(0TszjD5mBE=**qge5-S=M=aci&f=afXl1dn)dz}xE6T)70$+m;oE06 z|78O0mBDP^!_Q*g1XR2d&GtBU_0K}WmOTY`-otG>1A%Yu?HxASqGbKKD+N;!3#Flx z>m+c*%v#@BQ8>{ET~kj*mM-@{6jPDq4g)I zj=J^3z<1Z!i(aAvbLp|O(BOuv`DxdsmAY95PZ#=V3Q{1f72jJ z9vs(4O$gsn{PP}_CCcRVNJRv^@Pn!W8ees=9vJ}(U1<_>-t#`=Ld9jG7&i&^HeEo1 z^N%m_?H6W=mQ}y>{Ud_MrBC_)N{*&xKZ%xy&`69TM*xFyevbR2OahT*0t3lwsm_WPeuK=#)4%& zwXnhowOr+%t8t?DeG<@-Q5^&OqVS?zEt9F#pR;Gs3(jdmUkp2<@#7?tg#~<~6rcO^ z*>mgnQe{5JOA{MAKp11?3-oEojBwY<|CM&F;ZSE`+$Glx=CNxT%ebT|qmUGm%Z#Rk zS#7!B#x@>z;t|F)?lG3+K@>`Z=)%<6l05FBp*6YH=5EBZhH@E6wbH)-(Wm{eU-o>Q z=Rf~BXU_Y+=Xc(7-ro=P=&)$1Roz^n=UtbJsWqcwb2A?&{QVe8=mBS85XH4IFAr#7 zw`xAC))9}Xi^u;VrjFSYHT5{c_k3Wi;USB)Ka7W*sw)JD9Q(47 zUS+79=~qxzyNzXBS`CoScI#}B^Ye^|b;-qX7#e0cDP9KSDG>&xE2|SuCyQwT7+Fi%RIg!Rj1dwlTMV3on(R zMA(GRW~&-kRr=w(Sw+4HG;r8x{@{DIYW{A=;G$EzC2tj6mmszNz1*4zqp2=Sh_3^H zUJ2D--WiAkMJodA3(?jI`LZVh5;{EyDCcmDQR_(#?(Io06P%r$v#!XBM0o?;$wRUY z7!TP>hN-lnVn3*Fzv`GtgxRo%eb^E20YjRA>fM}dJ#@-? z5JUuSHi0Vl0WaU0D=lV#eUw>4)oA1y;7@P~I5iivQWCC_VrHI0xm z4$^pE$wd3qm*^S~YfYOI4G^;i6{lXjm%#fYq8_N@DhqquBnV?rj6nCUwHbp$<~PcC zs$x=HQBzi?60Tk|GAXw!LV^_ujNN(#AT!a0`2b>jI;y7UD1vJ*E|3zBq)MVZ_A-<= zs}79@>eNbgsGsk=Na>PYp8)gA*CM9xvM344ahNtA0M?JWr;Gm;e^x0_r7aX(hv1od( zGIv<+ZbX%~xtNQ;lj}XTb?W{bsH=nr8xnK=uGK0Uv{`f?uC(5W;+fh<;V)(GvK!gZsX3k z*h$`?zNvt3^%4-2r)@5mv%uBZdXFSn)Z?a;`KOKhy{Hm$F&urV7=AWj6|-$9mth$4 zO8@AnnjZyR))5z6H(^rE5+ieFXP+A|`1au?Vf6#~Ho#uvwEv^TSI6fED%Qu*WByoH2Y1O@ahkb;sNlY6 z)a0rLl=9e(3wlR=(+s)1kBGSQY5=#CFK;?6ax~!V!tfn)#}0R0S0CD~^yA=PzCsXM z-s#pD9h61vs?!Xed76ooeA+WgH3;jE?lbl=qQaq{XSBpMDL3b=t)GC64+koto+0$p zsLL?qmhB-IiKA?%S{Oq(1@hW#!AWtvl|xB;Pq8!(gpyk)uE$Q^=`JnJ$t;9{l+(XW z0f{b;;&$_%c$w$)k+OiEZ?nTYo_}ir(L#>xkik_#1%h@X{@bL40*n6=kbp-bVb8p+ zSFU7fx_Ba>oXuumjMT+QdG;my>2{YK*PvC>Vfz%_D{dpi(JL^4OIb)fv5i(y@vvNJ z6K|A#13~!b)>H+{*I`Yo-SJj2Z{1>%>e^-=-uKh5`_)WBA*hB=F*Y2_O6iNWkH<-B zVU;o8A%f=^O2XT-SbHKstwwy59X-0>o9&@>6-^M+LfZB1IfMRdn*$I0w#oiqoBj8T aW&YZ-B96^ZHc@LSBGBxPk!{%oO3FVV1`_fB literal 0 HcmV?d00001 diff --git a/doc/sphinx/source/recipes/recipe_monitor.rst b/doc/sphinx/source/recipes/recipe_monitor.rst index fa3899cde6..87ac9d0b17 100644 --- a/doc/sphinx/source/recipes/recipe_monitor.rst +++ b/doc/sphinx/source/recipes/recipe_monitor.rst @@ -216,4 +216,11 @@ Zonal mean profile of ta including a reference dataset. :align: center :width: 14cm -1D profile of pr over latitude. +Zonal mean pr including a reference dataset. + +.. _fig_hovmoeller_z_vs_time_with_ref: +.. figure:: /recipes/figures/monitor/hovmoeller_z_vs_time_with_ref.png + :align: center + :width: 14cm + +Hovmoeller plot (pressure vs time) of ta including a reference dataset. diff --git a/esmvaltool/config-references.yml b/esmvaltool/config-references.yml index fe28d612b5..8ad8bc1a50 100644 --- a/esmvaltool/config-references.yml +++ b/esmvaltool/config-references.yml @@ -257,6 +257,11 @@ authors: name: Hempelmann, Nils institute: IPSL, France orcid: + heuer_helge: + name: Heuer, Helge + institute: DLR, Germany + email: helge.heuer@dlr.de + orcid: https://orcid.org/0000-0003-2411-7150 hogan_emma: name: Hogan, Emma institute: MetOffice, UK @@ -297,6 +302,11 @@ authors: name: Krasting, John institute: NOAA, USA orcid: https://orcid.org/0000-0002-4650-9844 + kuehbacher_birgit: + name: Kuehbacher, Birgit + institute: DLR, Germany + email: birgit.kuehbacher@dlr.de + orcid: lejeune_quentin: name: Lejeune, Quentin institute: Climate Analytics, Germany diff --git a/esmvaltool/diag_scripts/monitor/multi_datasets.py b/esmvaltool/diag_scripts/monitor/multi_datasets.py index 6fcedd9470..2f4bce5176 100644 --- a/esmvaltool/diag_scripts/monitor/multi_datasets.py +++ b/esmvaltool/diag_scripts/monitor/multi_datasets.py @@ -31,11 +31,7 @@ datasets need to be given on the same horizontal and vertical grid (you can use the preprocessors :func:`esmvalcore.preprocessor.regrid` and :func:`esmvalcore.preprocessor.extract_levels` for this). Input data - needs to be 2D with dimensions `latitude`, `height`/`air_pressure`. - - Variable vs. latitude plot (plot type ``variable_vs_lat``): - for each variable separately, all datasets are plotted in one - single figure. Input data needs to be 1D with single - dimension `latitude`. + needs to be 2D with dimensions `latitude`, `altitude`/`air_pressure`. .. warning:: @@ -46,7 +42,19 @@ - 1D profiles (plot type ``1d_profile``): for each variable separately, all datasets are plotted in one single figure. Input data needs to be 1D with - single dimension `height` / `air_pressure` + single dimension `altitude` / `air_pressure` + - Variable vs. latitude plot (plot type ``variable_vs_lat``): + for each variable separately, all datasets are plotted in one + single figure. Input data needs to be 1D with single + dimension `latitude`. + - Hovmoeller Z vs. time (plot type ``hovmoeller_z_vs_time``): for each + variable and dataset, an individual profile is plotted. If a reference + dataset is defined, also include this dataset and a bias plot into the + figure. Note that if a reference dataset is defined, all input datasets + need to be given on the same temporal and vertical grid (you can use + the preprocessors :func:`esmvalcore.preprocessor.regrid_time` and + :func:`esmvalcore.preprocessor.extract_levels` for this). Input data + needs to be 2D with dimensions `time`, `altitude`/`air_pressure`. Author ------ @@ -69,8 +77,8 @@ individual plot is created. plots: dict, optional Plot types plotted by this diagnostic (see list above). Dictionary keys - must be ``timeseries``, ``annual_cycle``, ``map``, ``zonal_mean_profile`` - or ``1d_profile``. + must be ``timeseries``, ``annual_cycle``, ``map``, ``zonal_mean_profile``, + ``1d_profile``, ``variable_vs_lat``, or ``hovmoeller_z_vs_time``. Dictionary values are dictionaries used as options for the corresponding plot. The allowed options for the different plot types are given below. plot_filename: str, optional @@ -126,6 +134,10 @@ ``{project}`` that vary between the different datasets will be transformed to something like ``ambiguous_project``. Examples: ``title: 'Awesome Plot of {long_name}'``, ``xlabel: '{short_name}'``, ``xlim: [0, 5]``. +time_format: str, optional (default: None) + :func:`~datetime.datetime.strftime` format string that is used to format + the time axis using :class:`matplotlib.dates.DateFormatter`. If ``None``, + use the default formatting imposed by the iris plotting function. Configuration options for plot type ``annual_cycle`` ---------------------------------------------------- @@ -277,7 +289,7 @@ plot_func: str, optional (default: 'contourf') Plot function used to plot the profiles. Must be a function of :mod:`iris.plot` that supports plotting of 2D cubes with coordinates - latitude and height/air_pressure. + latitude and altitude/air_pressure. plot_kwargs: dict, optional Optional keyword arguments for the plot function defined by ``plot_func``. Dictionary keys are elements identified by ``facet_used_for_labels`` or @@ -388,6 +400,88 @@ to something like ``ambiguous_project``. Examples: ``title: 'Awesome Plot of {long_name}'``, ``xlabel: '{short_name}'``, ``xlim: [0, 5]``. +Configuration options for plot type ``hovmoeller_z_vs_time`` +------------------------------------------------------------ +cbar_label: str, optional (default: '{short_name} [{units}]') + Colorbar label. Can include facets in curly brackets which will be derived + from the corresponding dataset, e.g., ``{project}``, ``{short_name}``, + ``{exp}``. +cbar_label_bias: str, optional (default: 'Δ{short_name} [{units}]') + Colorbar label for plotting biases. Can include facets in curly brackets + which will be derived from the corresponding dataset, e.g., ``{project}``, + ``{short_name}``, ``{exp}``. This option has no effect if no reference + dataset is given. +cbar_kwargs: dict, optional + Optional keyword arguments for :func:`matplotlib.pyplot.colorbar`. By + default, uses ``orientation: vertical``. +cbar_kwargs_bias: dict, optional + Optional keyword arguments for :func:`matplotlib.pyplot.colorbar` for + plotting biases. These keyword arguments update (and potentially overwrite) + the ``cbar_kwargs`` for the bias plot. This option has no effect if no + reference dataset is given. +common_cbar: bool, optional (default: False) + Use a common colorbar for the top panels (i.e., plots of the dataset and + the corresponding reference dataset) when using a reference dataset. If + neither ``vmin`` and ``vmix`` nor ``levels`` is given in ``plot_kwargs``, + the colorbar bounds are inferred from the dataset in the top left panel, + which might lead to an inappropriate colorbar for the reference dataset + (top right panel). Thus, the use of the ``plot_kwargs`` ``vmin`` and + ``vmax`` or ``levels`` is highly recommend when using this ``common_cbar: + true``. This option has no effect if no reference dataset is given. +fontsize: int, optional (default: 10) + Fontsize used for ticks, labels and titles. For the latter, use the given + fontsize plus 2. Does not affect suptitles. +log_y: bool, optional (default: True) + Use logarithmic Y-axis. +plot_func: str, optional (default: 'contourf') + Plot function used to plot the profiles. Must be a function of + :mod:`iris.plot` that supports plotting of 2D cubes with coordinates + latitude and altitude/air_pressure. +plot_kwargs: dict, optional + Optional keyword arguments for the plot function defined by ``plot_func``. + Dictionary keys are elements identified by ``facet_used_for_labels`` or + ``default``, e.g., ``CMIP6`` if ``facet_used_for_labels: project`` or + ``historical`` if ``facet_used_for_labels: exp``. Dictionary values are + dictionaries used as keyword arguments for the plot function defined by + ``plot_func``. String arguments can include facets in curly brackets which + will be derived from the corresponding dataset, e.g., ``{project}``, + ``{short_name}``, ``{exp}``. Examples: ``default: {levels: 2}, CMIP6: + {vmin: 200, vmax: 250}``. +plot_kwargs_bias: dict, optional + Optional keyword arguments for the plot function defined by ``plot_func`` + for plotting biases. These keyword arguments update (and potentially + overwrite) the ``plot_kwargs`` for the bias plot. This option has no effect + if no reference dataset is given. See option ``plot_kwargs`` for more + details. By default, uses ``cmap: bwr``. +pyplot_kwargs: dict, optional + Optional calls to functions of :mod:`matplotlib.pyplot`. Dictionary keys + are functions of :mod:`matplotlib.pyplot`. Dictionary values are used as + single argument for these functions. String arguments can include facets in + curly brackets which will be derived from the corresponding dataset, e.g., + ``{project}``, ``{short_name}``, ``{exp}``. Examples: ``title: 'Awesome + Plot of {long_name}'``, ``xlabel: '{short_name}'``, ``xlim: [0, 5]``. +rasterize: bool, optional (default: True) + If ``True``, use `rasterization + `_ for + profile plots to produce smaller files. This is only relevant for vector + graphics (e.g., ``output_file_type=pdf,svg,ps``). +show_stats: bool, optional (default: True) + Show basic statistics on the plots. +show_y_minor_ticklabels: bool, optional (default: False) + Show tick labels for the minor ticks on the Y axis. +x_pos_stats_avg: float, optional (default: 0.01) + Text x-position of average (shown on the left) in Axes coordinates. Can be + adjusted to avoid overlap with the figure. Only relevant if ``show_stats: + true``. +x_pos_stats_bias: float, optional (default: 0.7) + Text x-position of bias statistics (shown on the right) in Axes + coordinates. Can be adjusted to avoid overlap with the figure. Only + relevant if ``show_stats: true``. +time_format: str, optional (default: None) + :func:`~datetime.datetime.strftime` format string that is used to format + the time axis using :class:`matplotlib.dates.DateFormatter`. If ``None``, + use the default formatting imposed by the iris plotting function. + .. hint:: Extra arguments given to the recipe are ignored, so it is safe to use yaml @@ -403,6 +497,7 @@ import cartopy.crs as ccrs import iris import matplotlib as mpl +import matplotlib.dates as mdates import matplotlib.pyplot as plt import numpy as np import seaborn as sns @@ -476,7 +571,8 @@ def __init__(self, config): 'map', 'zonal_mean_profile', '1d_profile', - 'variable_vs_lat', + 'hovmoeller_z_vs_time', + 'variable_vs_lat' ] for (plot_type, plot_options) in self.plots.items(): if plot_type not in self.supported_plot_types: @@ -493,6 +589,7 @@ def __init__(self, config): self.plots[plot_type].setdefault('legend_kwargs', {}) self.plots[plot_type].setdefault('plot_kwargs', {}) self.plots[plot_type].setdefault('pyplot_kwargs', {}) + self.plots[plot_type].setdefault('time_format', None) if plot_type == 'annual_cycle': self.plots[plot_type].setdefault('gridline_kwargs', {}) @@ -575,6 +672,31 @@ def __init__(self, config): self.plots[plot_type].setdefault('plot_kwargs', {}) self.plots[plot_type].setdefault('pyplot_kwargs', {}) + if plot_type == 'hovmoeller_z_vs_time': + self.plots[plot_type].setdefault('cbar_label', + '{short_name} [{units}]') + self.plots[plot_type].setdefault('cbar_label_bias', + 'Δ{short_name} [{units}]') + self.plots[plot_type].setdefault('cbar_kwargs', + {'orientation': 'vertical'}) + self.plots[plot_type].setdefault('cbar_kwargs_bias', {}) + self.plots[plot_type].setdefault('common_cbar', False) + self.plots[plot_type].setdefault('fontsize', 10) + self.plots[plot_type].setdefault('log_y', True) + self.plots[plot_type].setdefault('plot_func', 'contourf') + self.plots[plot_type].setdefault('plot_kwargs', {}) + self.plots[plot_type].setdefault('plot_kwargs_bias', {}) + self.plots[plot_type]['plot_kwargs_bias'].setdefault( + 'cmap', 'bwr') + self.plots[plot_type].setdefault('pyplot_kwargs', {}) + self.plots[plot_type].setdefault('rasterize', True) + self.plots[plot_type].setdefault('show_stats', True) + self.plots[plot_type].setdefault('show_y_minor_ticklabels', + False) + self.plots[plot_type].setdefault('time_format', None) + self.plots[plot_type].setdefault('x_pos_stats_avg', 0.01) + self.plots[plot_type].setdefault('x_pos_stats_bias', 0.7) + # Check that facet_used_for_labels is present for every dataset for dataset in self.input_data: if self.cfg['facet_used_for_labels'] not in dataset: @@ -632,10 +754,10 @@ def _add_stats(self, plot_type, axes, dim_coords, dataset, # Different options for the different plots types fontsize = 6.0 y_pos = 0.95 - if plot_type == 'map': - x_pos_bias = self.plots[plot_type]['x_pos_stats_bias'] - x_pos = self.plots[plot_type]['x_pos_stats_avg'] - elif plot_type in ['zonal_mean_profile']: + if all([ + 'x_pos_stats_avg' in self.plots[plot_type], + 'x_pos_stats_bias' in self.plots[plot_type], + ]): x_pos_bias = self.plots[plot_type]['x_pos_stats_bias'] x_pos = self.plots[plot_type]['x_pos_stats_avg'] else: @@ -868,6 +990,7 @@ def _plot_map_with_ref(self, plot_func, dataset, ref_dataset): axes_data.gridlines(**gridline_kwargs) axes_data.set_title(self._get_label(dataset), pad=3.0) self._add_stats(plot_type, axes_data, dim_coords_dat, dataset) + self._process_pyplot_kwargs(plot_type, dataset) # Plot reference dataset (top right) # Note: make sure to use the same vmin and vmax than the top left @@ -884,6 +1007,7 @@ def _plot_map_with_ref(self, plot_func, dataset, ref_dataset): axes_ref.gridlines(**gridline_kwargs) axes_ref.set_title(self._get_label(ref_dataset), pad=3.0) self._add_stats(plot_type, axes_ref, dim_coords_ref, ref_dataset) + self._process_pyplot_kwargs(plot_type, ref_dataset) # Add colorbar(s) self._add_colorbar(plot_type, plot_data, plot_ref, axes_data, @@ -1027,6 +1151,7 @@ def _plot_zonal_mean_profile_with_ref(self, plot_func, dataset, else: axes_data.get_yaxis().set_minor_formatter(NullFormatter()) self._add_stats(plot_type, axes_data, dim_coords_dat, dataset) + self._process_pyplot_kwargs(plot_type, dataset) # Plot reference dataset (top right) # Note: make sure to use the same vmin and vmax than the top left @@ -1041,6 +1166,7 @@ def _plot_zonal_mean_profile_with_ref(self, plot_func, dataset, axes_ref.set_title(self._get_label(ref_dataset), pad=3.0) plt.setp(axes_ref.get_yticklabels(), visible=False) self._add_stats(plot_type, axes_ref, dim_coords_ref, ref_dataset) + self._process_pyplot_kwargs(plot_type, ref_dataset) # Add colorbar(s) self._add_colorbar(plot_type, plot_data, plot_ref, axes_data, @@ -1151,6 +1277,196 @@ def _plot_zonal_mean_profile_without_ref(self, plot_func, dataset): return (plot_path, {netcdf_path: cube}) + def _plot_hovmoeller_z_vs_time_without_ref(self, plot_func, dataset): + """Plot Hovmoeller Z vs. time for single dataset without reference.""" + plot_type = 'hovmoeller_z_vs_time' + logger.info( + "Plotting Hovmoeller Z vs. time without reference dataset" + " for '%s'", self._get_label(dataset)) + + # Make sure that the data has the correct dimensions + cube = dataset['cube'] + dim_coords_dat = self._check_cube_dimensions(cube, plot_type) + + time_coord = cube.coord(axis='T') + + # Create plot with desired settings + with mpl.rc_context(self._get_custom_mpl_rc_params(plot_type)): + fig = plt.figure(**self.cfg['figure_kwargs']) + axes = fig.add_subplot() + plot_kwargs = self._get_plot_kwargs(plot_type, dataset) + plot_kwargs['axes'] = axes + plot_hovmoeller = plot_func(cube, **plot_kwargs) + + # Print statistics if desired + self._add_stats(plot_type, axes, dim_coords_dat, dataset) + + # Setup colorbar + fontsize = self.plots[plot_type]['fontsize'] + colorbar = fig.colorbar(plot_hovmoeller, + ax=axes, + **self._get_cbar_kwargs(plot_type)) + colorbar.set_label(self._get_cbar_label(plot_type, dataset), + fontsize=fontsize) + colorbar.ax.tick_params(labelsize=fontsize) + + # Customize plot + axes.set_title(self._get_label(dataset)) + fig.suptitle(f"{dataset['long_name']} ({dataset['start_year']}-" + f"{dataset['end_year']})") + z_coord = cube.coord(axis='Z') + axes.set_ylabel(f'{z_coord.long_name} [{z_coord.units}]') + if self.plots[plot_type]['log_y']: + axes.set_yscale('log') + axes.get_yaxis().set_major_formatter( + FormatStrFormatter('%.1f')) + if self.plots[plot_type]['show_y_minor_ticklabels']: + axes.get_yaxis().set_minor_formatter( + FormatStrFormatter('%.1f')) + else: + axes.get_yaxis().set_minor_formatter(NullFormatter()) + if self.plots[plot_type]['time_format'] is not None: + axes.get_xaxis().set_major_formatter( + mdates.DateFormatter(self.plots[plot_type]['time_format'])) + axes.set_xlabel(f'{time_coord.long_name}') + self._process_pyplot_kwargs(plot_type, dataset) + + # Rasterization + if self.plots[plot_type]['rasterize']: + self._set_rasterized([axes]) + + # File paths + plot_path = self.get_plot_path(plot_type, dataset) + netcdf_path = get_diagnostic_filename(Path(plot_path).stem, self.cfg) + + return (plot_path, {netcdf_path: cube}) + + def _plot_hovmoeller_z_vs_time_with_ref(self, plot_func, dataset, + ref_dataset): + """Plot Hovmoeller Z vs. time for single dataset with reference.""" + plot_type = 'hovmoeller_z_vs_time' + logger.info( + "Plotting Hovmoeller z vs. time with reference dataset" + " '%s' for '%s'", self._get_label(ref_dataset), + self._get_label(dataset)) + + # Make sure that the data has the correct dimensions + cube = dataset['cube'] + ref_cube = ref_dataset['cube'] + dim_coords_dat = self._check_cube_dimensions(cube, plot_type) + dim_coords_ref = self._check_cube_dimensions(ref_cube, plot_type) + + time_coord = cube.coord(axis='T') + + # Create single figure with multiple axes + with mpl.rc_context(self._get_custom_mpl_rc_params(plot_type)): + fig = plt.figure(**self.cfg['figure_kwargs']) + gridspec = GridSpec(5, + 4, + figure=fig, + height_ratios=[1.0, 1.0, 0.4, 1.0, 1.0]) + + # Options used for all subplots + plot_kwargs = self._get_plot_kwargs(plot_type, dataset) + fontsize = self.plots[plot_type]['fontsize'] + + # Plot dataset (top left) + axes_data = fig.add_subplot(gridspec[0:2, 0:2]) + plot_kwargs['axes'] = axes_data + plot_data = plot_func(cube, **plot_kwargs) + axes_data.set_title(self._get_label(dataset), pad=3.0) + z_coord = cube.coord(axis='Z') + axes_data.set_ylabel(f'{z_coord.long_name} [{z_coord.units}]') + if self.plots[plot_type]['log_y']: + axes_data.set_yscale('log') + axes_data.get_yaxis().set_major_formatter( + FormatStrFormatter('%.1f')) + if self.plots[plot_type]['show_y_minor_ticklabels']: + axes_data.get_yaxis().set_minor_formatter( + FormatStrFormatter('%.1f')) + else: + axes_data.get_yaxis().set_minor_formatter(NullFormatter()) + if self.plots[plot_type]['time_format'] is not None: + axes_data.get_xaxis().set_major_formatter( + mdates.DateFormatter(self.plots[plot_type]['time_format'])) + self._add_stats(plot_type, axes_data, dim_coords_dat, dataset) + self._process_pyplot_kwargs(plot_type, dataset) + + # Plot reference dataset (top right) + # Note: make sure to use the same vmin and vmax than the top left + # plot if a common colorbar is desired + axes_ref = fig.add_subplot(gridspec[0:2, 2:4], + sharex=axes_data, + sharey=axes_data) + plot_kwargs['axes'] = axes_ref + if self.plots[plot_type]['common_cbar']: + plot_kwargs.setdefault('vmin', plot_data.get_clim()[0]) + plot_kwargs.setdefault('vmax', plot_data.get_clim()[1]) + plot_ref = plot_func(ref_cube, **plot_kwargs) + axes_ref.set_title(self._get_label(ref_dataset), pad=3.0) + plt.setp(axes_ref.get_yticklabels(), visible=False) + if self.plots[plot_type]['time_format'] is not None: + axes_ref.get_xaxis().set_major_formatter( + mdates.DateFormatter(self.plots[plot_type]['time_format'])) + self._add_stats(plot_type, axes_ref, dim_coords_ref, ref_dataset) + self._process_pyplot_kwargs(plot_type, ref_dataset) + + # Add colorbar(s) + self._add_colorbar(plot_type, plot_data, plot_ref, axes_data, + axes_ref, dataset, ref_dataset) + + # Plot bias (bottom center) + bias_cube = cube - ref_cube + axes_bias = fig.add_subplot(gridspec[3:5, 1:3], + sharex=axes_data, + sharey=axes_data) + plot_kwargs_bias = self._get_plot_kwargs(plot_type, + dataset, + bias=True) + plot_kwargs_bias['axes'] = axes_bias + plot_bias = plot_func(bias_cube, **plot_kwargs_bias) + axes_bias.set_title( + f"{self._get_label(dataset)} - {self._get_label(ref_dataset)}", + pad=3.0, + ) + axes_bias.set_xlabel(time_coord.long_name) + axes_bias.set_ylabel(f'{z_coord.long_name} [{z_coord.units}]') + if self.plots[plot_type]['time_format'] is not None: + axes_bias.get_xaxis().set_major_formatter( + mdates.DateFormatter(self.plots[plot_type]['time_format'])) + cbar_kwargs_bias = self._get_cbar_kwargs(plot_type, bias=True) + cbar_bias = fig.colorbar(plot_bias, + ax=axes_bias, + **cbar_kwargs_bias) + cbar_bias.set_label( + self._get_cbar_label(plot_type, dataset, bias=True), + fontsize=fontsize, + ) + cbar_bias.ax.tick_params(labelsize=fontsize) + self._add_stats(plot_type, axes_bias, dim_coords_dat, dataset, + ref_dataset) + + # Customize plot + fig.suptitle(f"{dataset['long_name']} ({dataset['start_year']}-" + f"{dataset['end_year']})") + self._process_pyplot_kwargs(plot_type, dataset) + + # Rasterization + if self.plots[plot_type]['rasterize']: + self._set_rasterized([axes_data, axes_ref, axes_bias]) + + # File paths + plot_path = self.get_plot_path(plot_type, dataset) + netcdf_path = (get_diagnostic_filename( + Path(plot_path).stem + "_{pos}", self.cfg)) + netcdf_paths = { + netcdf_path.format(pos='top_left'): cube, + netcdf_path.format(pos='top_right'): ref_cube, + netcdf_path.format(pos='bottom'): bias_cube, + } + + return (plot_path, netcdf_paths) + def _process_pyplot_kwargs(self, plot_type, dataset): """Process functions for :mod:`matplotlib.pyplot`.""" pyplot_kwargs = self.plots[plot_type]['pyplot_kwargs'] @@ -1177,8 +1493,9 @@ def _check_cube_dimensions(cube, plot_type): 'timeseries': (['time'],), '1d_profile': (['air_pressure'], ['altitude']), - 'variable_vs_lat': (['latitude'],), - + 'hovmoeller_z_vs_time': (['time', 'air_pressure'], + ['time', 'altitude']), + 'variable_vs_lat': (['latitude'],) } if plot_type not in expected_dimensions_dict: raise NotImplementedError(f"plot_type '{plot_type}' not supported") @@ -1346,6 +1663,10 @@ def create_timeseries_plot(self, datasets): multi_dataset_facets = self._get_multi_dataset_facets(datasets) axes.set_title(multi_dataset_facets['long_name']) axes.set_xlabel('Time') + # apply time formatting + if self.plots[plot_type]['time_format'] is not None: + axes.get_xaxis().set_major_formatter( + mdates.DateFormatter(self.plots[plot_type]['time_format'])) axes.set_ylabel( f"{multi_dataset_facets[self.cfg['group_variables_by']]} " f"[{multi_dataset_facets['units']}]" @@ -1723,6 +2044,82 @@ def create_1d_profile_plot(self, datasets): provenance_logger.log(plot_path, provenance_record) provenance_logger.log(netcdf_path, provenance_record) + def create_hovmoeller_z_vs_time_plot(self, datasets): + """Create Hovmoeller Z vs. time plot.""" + plot_type = 'hovmoeller_z_vs_time' + if plot_type not in self.plots: + return + + if not datasets: + raise ValueError(f"No input data to plot '{plot_type}' given") + + # Get reference dataset if possible + ref_dataset = self._get_reference_dataset(datasets) + if ref_dataset is None: + logger.info("Plotting %s without reference dataset", plot_type) + else: + logger.info("Plotting %s with reference dataset '%s'", plot_type, + self._get_label(ref_dataset)) + + # Get plot function + plot_func = self._get_plot_func(plot_type) + + # Create a single plot for each dataset (incl. reference dataset if + # given) + for dataset in datasets: + if dataset == ref_dataset: + continue + ancestors = [dataset['filename']] + if ref_dataset is None: + (plot_path, + netcdf_paths) = (self._plot_hovmoeller_z_vs_time_without_ref( + plot_func, dataset)) + caption = ( + f"Hovmoeller Z vs. time plot of {dataset['long_name']} " + f"of dataset " + f"{dataset['dataset']} (project {dataset['project']}) " + f"from {dataset['start_year']} to {dataset['end_year']}.") + else: + (plot_path, + netcdf_paths) = (self._plot_hovmoeller_z_vs_time_with_ref( + plot_func, dataset, ref_dataset)) + caption = ( + f"Hovmoeller Z vs. time plot of {dataset['long_name']} " + f"of dataset " + f"{dataset['dataset']} (project {dataset['project']}) " + f"including bias relative to {ref_dataset['dataset']} " + f"(project {ref_dataset['project']}) from " + f"{dataset['start_year']} to {dataset['end_year']}.") + ancestors.append(ref_dataset['filename']) + + # If statistics are shown add a brief description to the caption + if self.plots[plot_type]['show_stats']: + caption += ( + " The number in the top left corner corresponds to the " + "spatiotemporal mean.") + + # Save plot + plt.savefig(plot_path, **self.cfg['savefig_kwargs']) + logger.info("Wrote %s", plot_path) + plt.close() + + # Save netCDFs + for (netcdf_path, cube) in netcdf_paths.items(): + io.iris_save(cube, netcdf_path) + + # Provenance tracking + provenance_record = { + 'ancestors': ancestors, + 'authors': ['kuehbacher_birgit', 'heuer_helge'], + 'caption': caption, + 'plot_types': ['vert'], + 'long_names': [dataset['long_name']], + } + with ProvenanceLogger(self.cfg) as provenance_logger: + provenance_logger.log(plot_path, provenance_record) + for netcdf_path in netcdf_paths: + provenance_logger.log(netcdf_path, provenance_record) + def compute(self): """Plot preprocessed data.""" for (var_key, datasets) in self.grouped_input_data.items(): @@ -1733,6 +2130,7 @@ def compute(self): self.create_zonal_mean_profile_plot(datasets) self.create_1d_profile_plot(datasets) self.create_variable_vs_lat_plot(datasets) + self.create_hovmoeller_z_vs_time_plot(datasets) def main(): diff --git a/esmvaltool/recipes/monitor/recipe_monitor_with_refs.yml b/esmvaltool/recipes/monitor/recipe_monitor_with_refs.yml index b75d84df3e..3db01e6a4a 100644 --- a/esmvaltool/recipes/monitor/recipe_monitor_with_refs.yml +++ b/esmvaltool/recipes/monitor/recipe_monitor_with_refs.yml @@ -8,14 +8,17 @@ documentation: authors: - schlund_manuel - winterstein_franziska + - sarauer_ellen + - kuehbacher_birgit + - heuer_helge maintainer: - schlund_manuel datasets: # Note: plot_label currently only used by diagnostic plot_multiple_annual_cycles - - {project: CMIP6, dataset: EC-Earth3, exp: historical, ensemble: r1i1p1f1, grid: gr, plot_label: 'EC-Earth3 historical'} - - {project: CMIP6, dataset: CanESM5, exp: historical, ensemble: r1i1p1f1, grid: gn, plot_label: 'Reference (CanESM5 historical)', reference_for_monitor_diags: true} + - {project: CMIP6, dataset: MPI-ESM1-2-HR, exp: historical, ensemble: r1i1p1f1, grid: gn, plot_label: 'MPI-ESM1-2-HR historical'} + - {project: CMIP6, dataset: MPI-ESM1-2-LR, exp: historical, ensemble: r1i1p1f1, grid: gn, plot_label: 'Reference (MPI-ESM1-2-LR historical)', reference_for_monitor_diags: true} preprocessors: @@ -71,10 +74,23 @@ preprocessors: operator: mean regrid: target_grid: 2x2 - scheme: - reference: esmf_regrid.schemes:ESMFAreaWeighted + scheme: linear zonal_statistics: operator: mean + convert_units: + units: mm day-1 + + global_mean_extract_levels: + custom_order: true + extract_levels: + levels: {cmor_table: CMIP6, coordinate: alt16} + scheme: linear + coordinate: altitude + regrid: + target_grid: 2x2 + scheme: linear + area_statistics: + operator: mean diagnostics: @@ -96,9 +112,9 @@ diagnostics: annual_mean_kwargs: linestyle: '--' plot_kwargs: - EC-Earth3: # = dataset since 'facet_used_for_labels' is 'dataset' by default + MPI-ESM1-2-HR: # = dataset since 'facet_used_for_labels' is 'dataset' by default color: C0 - CanESM5: + MPI-ESM1-2-LR: color: black plot_multiple_annual_cycles: @@ -117,9 +133,9 @@ diagnostics: legend_kwargs: loc: upper right plot_kwargs: - 'EC-Earth3 historical': # = plot_label since 'facet_used_for_labels: plot_label' + 'MPI-ESM1-2-HR historical': # = plot_label since 'facet_used_for_labels: plot_label' color: C0 - 'Reference (CanESM5 historical)': + 'Reference (MPI-ESM1-2-LR historical)': color: black pyplot_kwargs: title: Near-Surface Air Temperature on Northern Hemisphere @@ -173,9 +189,9 @@ diagnostics: plots: 1d_profile: plot_kwargs: - EC-Earth3: # = dataset since 'facet_used_for_labels' is 'dataset' by default + MPI-ESM1-2-HR: # = dataset since 'facet_used_for_labels' is 'dataset' by default color: C0 - CanESM5: + MPI-ESM1-2-LR: color: black plot_variable_vs_latitude: @@ -187,6 +203,27 @@ diagnostics: timerange: '20000101/20030101' scripts: plot: + <<: *plot_multi_dataset_default script: monitor/multi_datasets.py plots: variable_vs_lat: + + plot_hovmoeller_z_vs_time: + description: Plot Hovmoeller Z vs. time including reference datasets. + variables: + ta: + preprocessor: global_mean_extract_levels + mip: Amon + timerange: '2000/2004' + scripts: + plot: + <<: *plot_multi_dataset_default + script: monitor/multi_datasets.py + plots: + hovmoeller_z_vs_time: + plot_func: contourf + common_cbar: true + time_format: '%Y' + log_y: false + pyplot_kwargs: + ylim: [0, 20000] From a8071476ee34cb3a75276754473db35d39806eda Mon Sep 17 00:00:00 2001 From: Lukas Date: Thu, 7 Sep 2023 17:38:11 +0200 Subject: [PATCH 5/8] Adding Hovmoeller time vs latlon plots to monitoring recipes (for Changelog v2.10: authors: @lukruh and @jeremykraftdlr) (#3341) Co-authored-by: Jeremy Kraft Co-authored-by: helgehr <38046421+helgehr@users.noreply.github.com> Co-authored-by: Manuel Schlund --- .zenodo.json | 9 + CITATION.cff | 9 + .../hovmoeller_time_vs_lat_with_ref.png | Bin 0 -> 108200 bytes doc/sphinx/source/recipes/recipe_monitor.rst | 9 +- esmvaltool/config-references.yml | 5 + .../diag_scripts/monitor/multi_datasets.py | 547 ++++++++++++++---- .../monitor/recipe_monitor_with_refs.yml | 34 +- 7 files changed, 510 insertions(+), 103 deletions(-) create mode 100644 doc/sphinx/source/recipes/figures/monitor/hovmoeller_time_vs_lat_with_ref.png diff --git a/.zenodo.json b/.zenodo.json index df129dfcd1..43d9d2638a 100644 --- a/.zenodo.json +++ b/.zenodo.json @@ -356,6 +356,15 @@ "affiliation": "DLR, Germany", "name": "Kazeroni, Rémi", "orcid": "0000-0001-7205-9528" + }, + { + "affiliation": "DLR, Germany", + "name": "Kraft, Jeremy" + }, + { + "affiliation": "University of Bremen, Germany", + "name": "Ruhe, Lukas", + "orcid": "0000-0001-6349-9118" } ], "description": "ESMValTool: A community diagnostic and performance metrics tool for routine evaluation of Earth system models in CMIP.", diff --git a/CITATION.cff b/CITATION.cff index b9c77159f8..b6f6d45f77 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -367,6 +367,15 @@ authors: family-names: Beucher given-names: Romain orcid: "https://orcid.org/0000-0003-3891-5444" + - + affiliation: "DLR, Germany" + family-names: Kraft + given-names: Jeremy + - + affiliation: "University of Bremen, Germany" + family-names: Ruhe + given-names: Lukas + orcid: "https://orcid.org/0000-0001-6349-9118" - affiliation: "DLR, Germany" family-names: Bonnet diff --git a/doc/sphinx/source/recipes/figures/monitor/hovmoeller_time_vs_lat_with_ref.png b/doc/sphinx/source/recipes/figures/monitor/hovmoeller_time_vs_lat_with_ref.png new file mode 100644 index 0000000000000000000000000000000000000000..4abd6df04f7ee2c6717924e2050e8f5c7d56f590 GIT binary patch literal 108200 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Ξ$!)nX>c-N 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%0D0&3!Mm4Xm2vqMM5M{5mu<$2V?& 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 K$_pjSu>S>;%4bpl literal 0 HcmV?d00001 diff --git a/doc/sphinx/source/recipes/recipe_monitor.rst b/doc/sphinx/source/recipes/recipe_monitor.rst index 87ac9d0b17..9bdfd5d40b 100644 --- a/doc/sphinx/source/recipes/recipe_monitor.rst +++ b/doc/sphinx/source/recipes/recipe_monitor.rst @@ -223,4 +223,11 @@ Zonal mean pr including a reference dataset. :align: center :width: 14cm -Hovmoeller plot (pressure vs time) of ta including a reference dataset. +Hovmoeller plot (pressure vs. time) of ta including a reference dataset. + +.. _fig_hovmoeller_time_vs_lat_with_ref: +.. figure:: /recipes/figures/monitor/hovmoeller_time_vs_lat_with_ref.png + :align: center + :width: 14cm + +Hovmoeller plot (time vs. latitude) of tas including a reference dataset diff --git a/esmvaltool/config-references.yml b/esmvaltool/config-references.yml index 8ad8bc1a50..cea1a0561b 100644 --- a/esmvaltool/config-references.yml +++ b/esmvaltool/config-references.yml @@ -298,6 +298,11 @@ authors: name: Koirala, Sujan institute: MPI-BGC, Germany orcid: https://orcid.org/0000-0001-5681-1986 + kraft_jeremy: + name: Kraft, Jeremy + institute: DLR, Germany + orcid: + github: jeremykraftdlr krasting_john: name: Krasting, John institute: NOAA, USA diff --git a/esmvaltool/diag_scripts/monitor/multi_datasets.py b/esmvaltool/diag_scripts/monitor/multi_datasets.py index 2f4bce5176..4299e2538c 100644 --- a/esmvaltool/diag_scripts/monitor/multi_datasets.py +++ b/esmvaltool/diag_scripts/monitor/multi_datasets.py @@ -48,13 +48,22 @@ single figure. Input data needs to be 1D with single dimension `latitude`. - Hovmoeller Z vs. time (plot type ``hovmoeller_z_vs_time``): for each - variable and dataset, an individual profile is plotted. If a reference + variable and dataset, an individual figure is plotted. If a reference dataset is defined, also include this dataset and a bias plot into the figure. Note that if a reference dataset is defined, all input datasets need to be given on the same temporal and vertical grid (you can use the preprocessors :func:`esmvalcore.preprocessor.regrid_time` and :func:`esmvalcore.preprocessor.extract_levels` for this). Input data needs to be 2D with dimensions `time`, `altitude`/`air_pressure`. + - Hovmoeller time vs. latitude or longitude (plot type + ``hovmoeller_time_vs_lat_or_lon``): for each variable and dataset, an + individual figure is plotted. If a reference dataset is defined, also + include this dataset and a bias plot into the figure. Note that if a + reference dataset is defined, all input datasets need to be given on the + same temporal and horizontal grid (you can use the preprocessors + :func:`esmvalcore.preprocessor.regrid_time` and + :func:`esmvalcore.preprocessor.regrid` for this). Input data + needs to be 2D with dimensions `time`, `latitude`/`longitude`. Author ------ @@ -78,9 +87,10 @@ plots: dict, optional Plot types plotted by this diagnostic (see list above). Dictionary keys must be ``timeseries``, ``annual_cycle``, ``map``, ``zonal_mean_profile``, - ``1d_profile``, ``variable_vs_lat``, or ``hovmoeller_z_vs_time``. - Dictionary values are dictionaries used as options for the corresponding - plot. The allowed options for the different plot types are given below. + ``1d_profile``, ``variable_vs_lat``, ``hovmoeller_z_vs_time``, + ``hovmoeller_time_vs_lat_or_lon``. Dictionary values are dictionaries used + as options for the corresponding plot. The allowed options for the + different plot types are given below. plot_filename: str, optional Filename pattern for the plots. Defaults to ``{plot_type}_{real_name}_{dataset}_{mip}_{exp}_{ensemble}``. @@ -482,6 +492,78 @@ the time axis using :class:`matplotlib.dates.DateFormatter`. If ``None``, use the default formatting imposed by the iris plotting function. +Configuration options for plot type ``hovmoeller_time_vs_lat_or_lon`` +--------------------------------------------------------------------- +cbar_label: str, optional (default: '{short_name} [{units}]') + Colorbar label. Can include facets in curly brackets which will be derived + from the corresponding dataset, e.g., ``{project}``, ``{short_name}``, + ``{exp}``. +cbar_label_bias: str, optional (default: 'Δ{short_name} [{units}]') + Colorbar label for plotting biases. Can include facets in curly brackets + which will be derived from the corresponding dataset, e.g., ``{project}``, + ``{short_name}``, ``{exp}``. This option has no effect if no reference + dataset is given. +cbar_kwargs: dict, optional + Optional keyword arguments for :func:`matplotlib.pyplot.colorbar`. By + default, uses ``orientation: vertical``. +cbar_kwargs_bias: dict, optional + Optional keyword arguments for :func:`matplotlib.pyplot.colorbar` for + plotting biases. These keyword arguments update (and potentially overwrite) + the ``cbar_kwargs`` for the bias plot. This option has no effect if no + reference dataset is given. +common_cbar: bool, optional (default: False) + Use a common colorbar for the top panels (i.e., plots of the dataset and + the corresponding reference dataset) when using a reference dataset. If + neither ``vmin`` and ``vmix`` nor ``levels`` is given in ``plot_kwargs``, + the colorbar bounds are inferred from the dataset in the top left panel, + which might lead to an inappropriate colorbar for the reference dataset + (top right panel). Thus, the use of the ``plot_kwargs`` ``vmin`` and + ``vmax`` or ``levels`` is highly recommend when using this ``common_cbar: + true``. This option has no effect if no reference dataset is given. +fontsize: int, optional (default: 10) + Fontsize used for ticks, labels and titles. For the latter, use the given + fontsize plus 2. Does not affect suptitles. +plot_func: str, optional (default: 'contourf') + Plot function used to plot the profiles. Must be a function of + :mod:`iris.plot` that supports plotting of 2D cubes with coordinates + latitude and height/air_pressure. +plot_kwargs: dict, optional + Optional keyword arguments for the plot function defined by ``plot_func``. + Dictionary keys are elements identified by ``facet_used_for_labels`` or + ``default``, e.g., ``CMIP6`` if ``facet_used_for_labels: project`` or + ``historical`` if ``facet_used_for_labels: exp``. Dictionary values are + dictionaries used as keyword arguments for the plot function defined by + ``plot_func``. String arguments can include facets in curly brackets which + will be derived from the corresponding dataset, e.g., ``{project}``, + ``{short_name}``, ``{exp}``. Examples: ``default: {levels: 2}, CMIP6: + {vmin: 200, vmax: 250}``. +plot_kwargs_bias: dict, optional + Optional keyword arguments for the plot function defined by ``plot_func`` + for plotting biases. These keyword arguments update (and potentially + overwrite) the ``plot_kwargs`` for the bias plot. This option has no effect + if no reference dataset is given. See option ``plot_kwargs`` for more + details. By default, uses ``cmap: bwr``. +pyplot_kwargs: dict, optional + Optional calls to functions of :mod:`matplotlib.pyplot`. Dictionary keys + are functions of :mod:`matplotlib.pyplot`. Dictionary values are used as + single argument for these functions. String arguments can include facets in + curly brackets which will be derived from the corresponding dataset, e.g., + ``{project}``, ``{short_name}``, ``{exp}``. Examples: ``title: 'Awesome + Plot of {long_name}'``, ``xlabel: '{short_name}'``, ``xlim: [0, 5]``. +rasterize: bool, optional (default: False) + If ``True``, use `rasterization + `_ for + profile plots to produce smaller files. This is only relevant for vector + graphics (e.g., ``output_file_type=pdf,svg,ps``). +show_y_minor_ticks: bool, optional (default: True) + Show minor ticks for time on the Y axis. +show_x_minor_ticks: bool, optional (default: True) + Show minor ticks for latitude or longitude on the X axis. +time_format: str, optional (default: None) + :func:`~datetime.datetime.strftime` format string that is used to format + the time axis using :class:`matplotlib.dates.DateFormatter`. If ``None``, + use the default formatting imposed by the iris plotting function. + .. hint:: Extra arguments given to the recipe are ignored, so it is safe to use yaml @@ -505,7 +587,12 @@ from iris.coord_categorisation import add_year from iris.coords import AuxCoord from matplotlib.gridspec import GridSpec -from matplotlib.ticker import FormatStrFormatter, LogLocator, NullFormatter +from matplotlib.ticker import ( + AutoMinorLocator, + FormatStrFormatter, + LogLocator, + NullFormatter, +) from sklearn.metrics import r2_score import esmvaltool.diag_scripts.shared.iris_helpers as ih @@ -528,7 +615,7 @@ def __init__(self, config): """Initialize class member.""" super().__init__(config) - # Get default stettings + # Get default settings self.cfg = deepcopy(self.cfg) self.cfg.setdefault('facet_used_for_labels', 'dataset') self.cfg.setdefault('figure_kwargs', {'constrained_layout': True}) @@ -571,8 +658,9 @@ def __init__(self, config): 'map', 'zonal_mean_profile', '1d_profile', + 'variable_vs_lat', 'hovmoeller_z_vs_time', - 'variable_vs_lat' + 'hovmoeller_time_vs_lat_or_lon', ] for (plot_type, plot_options) in self.plots.items(): if plot_type not in self.supported_plot_types: @@ -591,13 +679,13 @@ def __init__(self, config): self.plots[plot_type].setdefault('pyplot_kwargs', {}) self.plots[plot_type].setdefault('time_format', None) - if plot_type == 'annual_cycle': + elif plot_type == 'annual_cycle': self.plots[plot_type].setdefault('gridline_kwargs', {}) self.plots[plot_type].setdefault('legend_kwargs', {}) self.plots[plot_type].setdefault('plot_kwargs', {}) self.plots[plot_type].setdefault('pyplot_kwargs', {}) - if plot_type == 'map': + elif plot_type == 'map': self.plots[plot_type].setdefault( 'cbar_label', '{short_name} [{units}]') self.plots[plot_type].setdefault( @@ -628,7 +716,7 @@ def __init__(self, config): self.plots[plot_type].setdefault('x_pos_stats_avg', 0.0) self.plots[plot_type].setdefault('x_pos_stats_bias', 0.92) - if plot_type == 'zonal_mean_profile': + elif plot_type == 'zonal_mean_profile': self.plots[plot_type].setdefault( 'cbar_label', '{short_name} [{units}]') self.plots[plot_type].setdefault( @@ -655,7 +743,7 @@ def __init__(self, config): self.plots[plot_type].setdefault('x_pos_stats_avg', 0.01) self.plots[plot_type].setdefault('x_pos_stats_bias', 0.7) - if plot_type == '1d_profile': + elif plot_type == '1d_profile': self.plots[plot_type].setdefault('aspect_ratio', 1.5) self.plots[plot_type].setdefault('gridline_kwargs', {}) self.plots[plot_type].setdefault('legend_kwargs', {}) @@ -666,13 +754,13 @@ def __init__(self, config): self.plots[plot_type].setdefault( 'show_y_minor_ticklabels', False ) - if plot_type == 'variable_vs_lat': + elif plot_type == 'variable_vs_lat': self.plots[plot_type].setdefault('gridline_kwargs', {}) self.plots[plot_type].setdefault('legend_kwargs', {}) self.plots[plot_type].setdefault('plot_kwargs', {}) self.plots[plot_type].setdefault('pyplot_kwargs', {}) - if plot_type == 'hovmoeller_z_vs_time': + elif plot_type == 'hovmoeller_z_vs_time': self.plots[plot_type].setdefault('cbar_label', '{short_name} [{units}]') self.plots[plot_type].setdefault('cbar_label_bias', @@ -697,6 +785,33 @@ def __init__(self, config): self.plots[plot_type].setdefault('x_pos_stats_avg', 0.01) self.plots[plot_type].setdefault('x_pos_stats_bias', 0.7) + elif plot_type == 'hovmoeller_time_vs_lat_or_lon': + self.plots[plot_type].setdefault( + 'cbar_label', '{short_name} [{units}]') + self.plots[plot_type].setdefault( + 'cbar_label_bias', 'Δ{short_name} [{units}]') + self.plots[plot_type].setdefault( + 'cbar_kwargs', {'orientation': 'vertical'} + ) + self.plots[plot_type].setdefault('cbar_kwargs_bias', {}) + self.plots[plot_type].setdefault('common_cbar', False) + self.plots[plot_type].setdefault('fontsize', 10) + self.plots[plot_type].setdefault('plot_func', 'contourf') + self.plots[plot_type].setdefault('plot_kwargs', {}) + self.plots[plot_type].setdefault('plot_kwargs_bias', {}) + self.plots[plot_type]['plot_kwargs_bias'].setdefault( + 'cmap', 'bwr' + ) + self.plots[plot_type].setdefault('pyplot_kwargs', {}) + self.plots[plot_type].setdefault('rasterize', False) + self.plots[plot_type].setdefault( + 'show_y_minor_ticks', True + ) + self.plots[plot_type].setdefault( + 'show_x_minor_ticks', True + ) + self.plots[plot_type].setdefault('time_format', None) + # Check that facet_used_for_labels is present for every dataset for dataset in self.input_data: if self.cfg['facet_used_for_labels'] not in dataset: @@ -1288,8 +1403,6 @@ def _plot_hovmoeller_z_vs_time_without_ref(self, plot_func, dataset): cube = dataset['cube'] dim_coords_dat = self._check_cube_dimensions(cube, plot_type) - time_coord = cube.coord(axis='T') - # Create plot with desired settings with mpl.rc_context(self._get_custom_mpl_rc_params(plot_type)): fig = plt.figure(**self.cfg['figure_kwargs']) @@ -1328,7 +1441,7 @@ def _plot_hovmoeller_z_vs_time_without_ref(self, plot_func, dataset): if self.plots[plot_type]['time_format'] is not None: axes.get_xaxis().set_major_formatter( mdates.DateFormatter(self.plots[plot_type]['time_format'])) - axes.set_xlabel(f'{time_coord.long_name}') + axes.set_xlabel('time') self._process_pyplot_kwargs(plot_type, dataset) # Rasterization @@ -1356,8 +1469,6 @@ def _plot_hovmoeller_z_vs_time_with_ref(self, plot_func, dataset, dim_coords_dat = self._check_cube_dimensions(cube, plot_type) dim_coords_ref = self._check_cube_dimensions(ref_cube, plot_type) - time_coord = cube.coord(axis='T') - # Create single figure with multiple axes with mpl.rc_context(self._get_custom_mpl_rc_params(plot_type)): fig = plt.figure(**self.cfg['figure_kwargs']) @@ -1405,9 +1516,6 @@ def _plot_hovmoeller_z_vs_time_with_ref(self, plot_func, dataset, plot_ref = plot_func(ref_cube, **plot_kwargs) axes_ref.set_title(self._get_label(ref_dataset), pad=3.0) plt.setp(axes_ref.get_yticklabels(), visible=False) - if self.plots[plot_type]['time_format'] is not None: - axes_ref.get_xaxis().set_major_formatter( - mdates.DateFormatter(self.plots[plot_type]['time_format'])) self._add_stats(plot_type, axes_ref, dim_coords_ref, ref_dataset) self._process_pyplot_kwargs(plot_type, ref_dataset) @@ -1429,11 +1537,8 @@ def _plot_hovmoeller_z_vs_time_with_ref(self, plot_func, dataset, f"{self._get_label(dataset)} - {self._get_label(ref_dataset)}", pad=3.0, ) - axes_bias.set_xlabel(time_coord.long_name) + axes_bias.set_xlabel('time') axes_bias.set_ylabel(f'{z_coord.long_name} [{z_coord.units}]') - if self.plots[plot_type]['time_format'] is not None: - axes_bias.get_xaxis().set_major_formatter( - mdates.DateFormatter(self.plots[plot_type]['time_format'])) cbar_kwargs_bias = self._get_cbar_kwargs(plot_type, bias=True) cbar_bias = fig.colorbar(plot_bias, ax=axes_bias, @@ -1467,6 +1572,174 @@ def _plot_hovmoeller_z_vs_time_with_ref(self, plot_func, dataset, return (plot_path, netcdf_paths) + def _plot_hovmoeller_time_vs_lat_or_lon_with_ref(self, plot_func, dataset, + ref_dataset): + """Plot the hovmoeller profile for single dataset with reference.""" + plot_type = 'hovmoeller_time_vs_lat_or_lon' + logger.info("Plotting Hovmoeller plots with reference dataset" + " '%s' for '%s'", + self._get_label(ref_dataset), self._get_label(dataset)) + + # Make sure that the data has the correct dimensions + cube = dataset['cube'] + ref_cube = ref_dataset['cube'] + dim_coords_dat = self._check_cube_dimensions(cube, plot_type) + self._check_cube_dimensions(ref_cube, plot_type) + + # Create single figure with multiple axes + with mpl.rc_context(self._get_custom_mpl_rc_params(plot_type)): + fig = plt.figure(**self.cfg['figure_kwargs']) + gridspec = GridSpec(5, 4, figure=fig, + height_ratios=[1.0, 1.0, 0.4, 1.0, 1.0]) + + # Options used for all subplots + plot_kwargs = self._get_plot_kwargs(plot_type, dataset) + fontsize = self.plots[plot_type]['fontsize'] + + # Plot dataset (top left) + axes_data = fig.add_subplot(gridspec[0:2, 0:2]) + plot_kwargs['axes'] = axes_data + coord_names = [coord[0].name() for coord in cube.dim_coords] + if coord_names[0] == "time": + coord_names.reverse() + plot_kwargs['coords'] = coord_names + plot_data = plot_func(cube, **plot_kwargs) + axes_data.set_title(self._get_label(dataset), pad=3.0) + axes_data.set_ylabel('time') + if self.plots[plot_type]['time_format'] is not None: + axes_data.get_yaxis().set_major_formatter(mdates.DateFormatter( + self.plots[plot_type]['time_format'])) + if self.plots[plot_type]['show_y_minor_ticks']: + axes_data.get_yaxis().set_minor_locator(AutoMinorLocator()) + if self.plots[plot_type]['show_x_minor_ticks']: + axes_data.get_xaxis().set_minor_locator(AutoMinorLocator()) + self._process_pyplot_kwargs(plot_type, dataset) + + # Plot reference dataset (top right) + # Note: make sure to use the same vmin and vmax than the top left + # plot if a common colorbar is desired + axes_ref = fig.add_subplot(gridspec[0:2, 2:4], sharex=axes_data, + sharey=axes_data) + plot_kwargs['axes'] = axes_ref + if self.plots[plot_type]['common_cbar']: + plot_kwargs.setdefault('vmin', plot_data.get_clim()[0]) + plot_kwargs.setdefault('vmax', plot_data.get_clim()[1]) + plot_ref = plot_func(ref_cube, **plot_kwargs) + axes_ref.set_title(self._get_label(ref_dataset), pad=3.0) + plt.setp(axes_ref.get_yticklabels(), visible=False) + self._process_pyplot_kwargs(plot_type, ref_dataset) + + # Add colorbar(s) + self._add_colorbar(plot_type, plot_data, plot_ref, axes_data, + axes_ref, dataset, ref_dataset) + + # Plot bias (bottom center) + bias_cube = cube - ref_cube + axes_bias = fig.add_subplot(gridspec[3:5, 1:3], sharex=axes_data, + sharey=axes_data) + plot_kwargs_bias = self._get_plot_kwargs(plot_type, dataset, + bias=True) + plot_kwargs_bias['axes'] = axes_bias + plot_kwargs_bias['coords'] = coord_names + plot_bias = plot_func(bias_cube, **plot_kwargs_bias) + axes_bias.set_title( + f"{self._get_label(dataset)} - {self._get_label(ref_dataset)}", + pad=3.0, + ) + axes_bias.set_ylabel('time') + if 'latitude' in dim_coords_dat: + axes_bias.set_xlabel('latitude [°N]') + elif 'longitude' in dim_coords_dat: + axes_bias.set_xlabel('longitude [°E]') + cbar_kwargs_bias = self._get_cbar_kwargs(plot_type, bias=True) + cbar_bias = fig.colorbar(plot_bias, ax=axes_bias, + **cbar_kwargs_bias) + cbar_bias.set_label( + self._get_cbar_label(plot_type, dataset, bias=True), + fontsize=fontsize, + ) + cbar_bias.ax.tick_params(labelsize=fontsize) + + # Customize plot + fig.suptitle(f"{dataset['long_name']} ({dataset['start_year']}-" + f"{dataset['end_year']})") + self._process_pyplot_kwargs(plot_type, dataset) + + # Rasterization + if self.plots[plot_type]['rasterize']: + self._set_rasterized([axes_data, axes_ref, axes_bias]) + + # File paths + plot_path = self.get_plot_path(plot_type, dataset) + netcdf_path = ( + get_diagnostic_filename(Path(plot_path).stem + "_{pos}", self.cfg) + ) + netcdf_paths = { + netcdf_path.format(pos='top_left'): cube, + netcdf_path.format(pos='top_right'): ref_cube, + netcdf_path.format(pos='bottom'): bias_cube, + } + + return (plot_path, netcdf_paths) + + def _plot_hovmoeller_time_vs_lat_or_lon_without_ref(self, plot_func, + dataset): + """Plot time vs zonal or meridional Hovmoeller without reference.""" + plot_type = 'hovmoeller_time_vs_lat_or_lon' + logger.info("Plotting Hovmoeller plots without reference dataset" + " for '%s'", self._get_label(dataset)) + + # Make sure that the data has the correct dimensions + cube = dataset['cube'] + dim_coords_dat = self._check_cube_dimensions(cube, plot_type) + + # Create plot with desired settings + with mpl.rc_context(self._get_custom_mpl_rc_params(plot_type)): + fig = plt.figure(**self.cfg['figure_kwargs']) + axes = fig.add_subplot() + plot_kwargs = self._get_plot_kwargs(plot_type, dataset) + plot_kwargs['axes'] = axes + + # Make sure time is on y-axis + plot_kwargs['coords'] = list(reversed(dim_coords_dat)) + plot_hovmoeller = plot_func(cube, **plot_kwargs) + + # Setup colorbar + fontsize = self.plots[plot_type]['fontsize'] + colorbar = fig.colorbar(plot_hovmoeller, ax=axes, + **self._get_cbar_kwargs(plot_type)) + colorbar.set_label(self._get_cbar_label(plot_type, dataset), + fontsize=fontsize) + colorbar.ax.tick_params(labelsize=fontsize) + + # Customize plot + axes.set_title(self._get_label(dataset)) + fig.suptitle(f"{dataset['long_name']} ({dataset['start_year']}-" + f"{dataset['end_year']})") + if 'latitude' in dim_coords_dat: + axes.set_xlabel('latitude [°N]') + elif 'longitude' in dim_coords_dat: + axes.set_xlabel('longitude [°E]') + axes.set_ylabel('time') + if self.plots[plot_type]['time_format'] is not None: + axes.get_yaxis().set_major_formatter(mdates.DateFormatter( + self.plots[plot_type]['time_format']) + ) + if self.plots[plot_type]['show_y_minor_ticks']: + axes.get_yaxis().set_minor_locator(AutoMinorLocator()) + if self.plots[plot_type]['show_x_minor_ticks']: + axes.get_xaxis().set_minor_locator(AutoMinorLocator()) + self._process_pyplot_kwargs(plot_type, dataset) + + # Rasterization + if self.plots[plot_type]['rasterize']: + self._set_rasterized([axes]) + + # File paths + plot_path = self.get_plot_path(plot_type, dataset) + netcdf_path = get_diagnostic_filename(Path(plot_path).stem, self.cfg) + return (plot_path, {netcdf_path: cube}) + def _process_pyplot_kwargs(self, plot_type, dataset): """Process functions for :mod:`matplotlib.pyplot`.""" pyplot_kwargs = self.plots[plot_type]['pyplot_kwargs'] @@ -1493,9 +1766,11 @@ def _check_cube_dimensions(cube, plot_type): 'timeseries': (['time'],), '1d_profile': (['air_pressure'], ['altitude']), + 'variable_vs_lat': (['latitude'],), 'hovmoeller_z_vs_time': (['time', 'air_pressure'], ['time', 'altitude']), - 'variable_vs_lat': (['latitude'],) + 'hovmoeller_time_vs_lat_or_lon': (['time', 'latitude'], + ['time', 'longitude']), } if plot_type not in expected_dimensions_dict: raise NotImplementedError(f"plot_type '{plot_type}' not supported") @@ -1548,78 +1823,6 @@ def _get_reference_dataset(self, datasets): return ref_datasets[0] return None - def create_variable_vs_lat_plot(self, datasets): - """Create Variable as a function of latitude.""" - plot_type = 'variable_vs_lat' - if plot_type not in self.plots: - return - if not datasets: - raise ValueError(f"No input data to plot '{plot_type}' given") - logger.info("Plotting %s", plot_type) - fig = plt.figure(**self.cfg['figure_kwargs']) - axes = fig.add_subplot() - - # Plot all datasets in one single figure - ancestors = [] - cubes = {} - for dataset in datasets: - ancestors.append(dataset['filename']) - cube = dataset['cube'] - cubes[self._get_label(dataset)] = cube - self._check_cube_dimensions(cube, plot_type) - - # Plot data - plot_kwargs = self._get_plot_kwargs(plot_type, dataset) - plot_kwargs['axes'] = axes - iris.plot.plot(cube, **plot_kwargs) - - # Default plot appearance - multi_dataset_facets = self._get_multi_dataset_facets(datasets) - axes.set_title(multi_dataset_facets['long_name']) - axes.set_xlabel('latitude [°N]') - axes.set_ylabel( - f"{multi_dataset_facets[self.cfg['group_variables_by']]} " - f"[{multi_dataset_facets['units']}]" - ) - gridline_kwargs = self._get_gridline_kwargs(plot_type) - if gridline_kwargs is not False: - axes.grid(**gridline_kwargs) - - # Legend - legend_kwargs = self.plots[plot_type]['legend_kwargs'] - if legend_kwargs is not False: - axes.legend(**legend_kwargs) - - # Customize plot appearance - self._process_pyplot_kwargs(plot_type, multi_dataset_facets) - - # Save plot - plot_path = self.get_plot_path(plot_type, multi_dataset_facets) - fig.savefig(plot_path, **self.cfg['savefig_kwargs']) - logger.info("Wrote %s", plot_path) - plt.close() - - # Save netCDF file - netcdf_path = get_diagnostic_filename(Path(plot_path).stem, self.cfg) - var_attrs = { - n: datasets[0][n] for n in ('short_name', 'long_name', 'units') - } - io.save_1d_data(cubes, netcdf_path, 'latitude', var_attrs) - - # Provenance tracking - caption = (f"{multi_dataset_facets['long_name']} vs. latitude for " - f"various datasets.") - provenance_record = { - 'ancestors': ancestors, - 'authors': ['sarauer_ellen'], - 'caption': caption, - 'plot_types': ['line'], - 'long_names': [var_attrs['long_name']], - } - with ProvenanceLogger(self.cfg) as provenance_logger: - provenance_logger.log(plot_path, provenance_record) - provenance_logger.log(netcdf_path, provenance_record) - def create_timeseries_plot(self, datasets): """Create time series plot.""" plot_type = 'timeseries' @@ -1662,7 +1865,7 @@ def create_timeseries_plot(self, datasets): # Default plot appearance multi_dataset_facets = self._get_multi_dataset_facets(datasets) axes.set_title(multi_dataset_facets['long_name']) - axes.set_xlabel('Time') + axes.set_xlabel('time') # apply time formatting if self.plots[plot_type]['time_format'] is not None: axes.get_xaxis().set_major_formatter( @@ -2044,6 +2247,78 @@ def create_1d_profile_plot(self, datasets): provenance_logger.log(plot_path, provenance_record) provenance_logger.log(netcdf_path, provenance_record) + def create_variable_vs_lat_plot(self, datasets): + """Create Variable as a function of latitude.""" + plot_type = 'variable_vs_lat' + if plot_type not in self.plots: + return + if not datasets: + raise ValueError(f"No input data to plot '{plot_type}' given") + logger.info("Plotting %s", plot_type) + fig = plt.figure(**self.cfg['figure_kwargs']) + axes = fig.add_subplot() + + # Plot all datasets in one single figure + ancestors = [] + cubes = {} + for dataset in datasets: + ancestors.append(dataset['filename']) + cube = dataset['cube'] + cubes[self._get_label(dataset)] = cube + self._check_cube_dimensions(cube, plot_type) + + # Plot data + plot_kwargs = self._get_plot_kwargs(plot_type, dataset) + plot_kwargs['axes'] = axes + iris.plot.plot(cube, **plot_kwargs) + + # Default plot appearance + multi_dataset_facets = self._get_multi_dataset_facets(datasets) + axes.set_title(multi_dataset_facets['long_name']) + axes.set_xlabel('latitude [°N]') + axes.set_ylabel( + f"{multi_dataset_facets[self.cfg['group_variables_by']]} " + f"[{multi_dataset_facets['units']}]" + ) + gridline_kwargs = self._get_gridline_kwargs(plot_type) + if gridline_kwargs is not False: + axes.grid(**gridline_kwargs) + + # Legend + legend_kwargs = self.plots[plot_type]['legend_kwargs'] + if legend_kwargs is not False: + axes.legend(**legend_kwargs) + + # Customize plot appearance + self._process_pyplot_kwargs(plot_type, multi_dataset_facets) + + # Save plot + plot_path = self.get_plot_path(plot_type, multi_dataset_facets) + fig.savefig(plot_path, **self.cfg['savefig_kwargs']) + logger.info("Wrote %s", plot_path) + plt.close() + + # Save netCDF file + netcdf_path = get_diagnostic_filename(Path(plot_path).stem, self.cfg) + var_attrs = { + n: datasets[0][n] for n in ('short_name', 'long_name', 'units') + } + io.save_1d_data(cubes, netcdf_path, 'latitude', var_attrs) + + # Provenance tracking + caption = (f"{multi_dataset_facets['long_name']} vs. latitude for " + f"various datasets.") + provenance_record = { + 'ancestors': ancestors, + 'authors': ['sarauer_ellen'], + 'caption': caption, + 'plot_types': ['line'], + 'long_names': [var_attrs['long_name']], + } + with ProvenanceLogger(self.cfg) as provenance_logger: + provenance_logger.log(plot_path, provenance_record) + provenance_logger.log(netcdf_path, provenance_record) + def create_hovmoeller_z_vs_time_plot(self, datasets): """Create Hovmoeller Z vs. time plot.""" plot_type = 'hovmoeller_z_vs_time' @@ -2120,6 +2395,79 @@ def create_hovmoeller_z_vs_time_plot(self, datasets): for netcdf_path in netcdf_paths: provenance_logger.log(netcdf_path, provenance_record) + def create_hovmoeller_time_vs_lat_or_lon_plot(self, datasets): + """Create the Hovmoeller plot with time vs latitude or longitude.""" + plot_type = 'hovmoeller_time_vs_lat_or_lon' + if plot_type not in self.plots: + return + + if not datasets: + raise ValueError(f"No input data to plot '{plot_type}' given") + + # Get reference dataset if possible + ref_dataset = self._get_reference_dataset(datasets) + if ref_dataset is None: + logger.info("Plotting %s without reference dataset", plot_type) + else: + logger.info("Plotting %s with reference dataset '%s'", plot_type, + self._get_label(ref_dataset)) + + # Get plot function + plot_func = self._get_plot_func(plot_type) + + # Create a single plot for each dataset (incl. reference dataset if + # given) + for dataset in datasets: + if dataset == ref_dataset: + continue + ancestors = [dataset['filename']] + if ref_dataset is None: + (plot_path, netcdf_paths) = ( + self._plot_hovmoeller_time_vs_lat_or_lon_without_ref( + plot_func, + dataset) + ) + caption = ( + f"Hovmoeller plot of {dataset['long_name']} of dataset " + f"{dataset['dataset']} (project {dataset['project']}) " + f"from {dataset['start_year']} to {dataset['end_year']}." + ) + else: + (plot_path, netcdf_paths) = ( + self._plot_hovmoeller_time_vs_lat_or_lon_with_ref( + plot_func, dataset, ref_dataset) + ) + caption = ( + f"Hovmoeller plot of {dataset['long_name']} of dataset " + f"{dataset['dataset']} (project {dataset['project']}) " + f"including bias relative to {ref_dataset['dataset']} " + f"(project {ref_dataset['project']}) from " + f"{dataset['start_year']} to {dataset['end_year']}." + ) + ancestors.append(ref_dataset['filename']) + + # Save plot + plt.savefig(plot_path, **self.cfg['savefig_kwargs']) + logger.info("Wrote %s", plot_path) + plt.close() + + # Save netCDFs + for (netcdf_path, cube) in netcdf_paths.items(): + io.iris_save(cube, netcdf_path) + + # Provenance tracking + provenance_record = { + 'ancestors': ancestors, + 'authors': ['schlund_manuel', 'kraft_jeremy', 'ruhe_lukas'], + 'caption': caption, + 'plot_types': ['zonal'], + 'long_names': [dataset['long_name']], + } + with ProvenanceLogger(self.cfg) as provenance_logger: + provenance_logger.log(plot_path, provenance_record) + for netcdf_path in netcdf_paths: + provenance_logger.log(netcdf_path, provenance_record) + def compute(self): """Plot preprocessed data.""" for (var_key, datasets) in self.grouped_input_data.items(): @@ -2131,6 +2479,7 @@ def compute(self): self.create_1d_profile_plot(datasets) self.create_variable_vs_lat_plot(datasets) self.create_hovmoeller_z_vs_time_plot(datasets) + self.create_hovmoeller_time_vs_lat_or_lon_plot(datasets) def main(): diff --git a/esmvaltool/recipes/monitor/recipe_monitor_with_refs.yml b/esmvaltool/recipes/monitor/recipe_monitor_with_refs.yml index 3db01e6a4a..e75cc763da 100644 --- a/esmvaltool/recipes/monitor/recipe_monitor_with_refs.yml +++ b/esmvaltool/recipes/monitor/recipe_monitor_with_refs.yml @@ -7,10 +7,12 @@ documentation: (ongoing) model simulations. authors: - schlund_manuel - - winterstein_franziska - - sarauer_ellen - - kuehbacher_birgit - heuer_helge + - kraft_jeremy + - kuehbacher_birgit + - ruhe_lukas + - sarauer_ellen + - winterstein_franziska maintainer: - schlund_manuel @@ -20,6 +22,7 @@ datasets: - {project: CMIP6, dataset: MPI-ESM1-2-HR, exp: historical, ensemble: r1i1p1f1, grid: gn, plot_label: 'MPI-ESM1-2-HR historical'} - {project: CMIP6, dataset: MPI-ESM1-2-LR, exp: historical, ensemble: r1i1p1f1, grid: gn, plot_label: 'Reference (MPI-ESM1-2-LR historical)', reference_for_monitor_diags: true} + preprocessors: timeseries_regular: @@ -92,6 +95,13 @@ preprocessors: area_statistics: operator: mean + zonal_mean_2d: + regrid: + target_grid: 2x2 + scheme: linear + zonal_statistics: + operator: mean + diagnostics: @@ -175,6 +185,7 @@ diagnostics: plot_kwargs_bias: levels: [-10.0, -7.5, -5.0, -2.5, 0.0, 2.5, 5.0, 7.5, 10.0] + plot_1D_profiles_with_references: description: Plot 1D profiles including reference datasets. variables: @@ -227,3 +238,20 @@ diagnostics: log_y: false pyplot_kwargs: ylim: [0, 20000] + + plot_time_vs_lat_with_references: + description: Plot Hovmoeller time vs. latitude including reference datasets. + variables: + tas: + mip: Amon + preprocessor: zonal_mean_2d + timerange: '2000/2004' + scripts: + plot: + <<: *plot_multi_dataset_default + script: monitor/multi_datasets.py + plots: + hovmoeller_time_vs_lat_or_lon: + common_cbar: true + show_x_minor_ticks: false + time_format: '%Y' From de112361445037ed0d0fbdc3a7d671631a423b50 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 14 Sep 2023 16:32:41 +0100 Subject: [PATCH 6/8] [Condalock] Update Linux condalock file (#3336) Co-authored-by: valeriupredoi --- conda-linux-64.lock | 197 ++++++++++++++++++++++---------------------- 1 file changed, 98 insertions(+), 99 deletions(-) diff --git a/conda-linux-64.lock b/conda-linux-64.lock index c7e91c6a20..20df33b8a2 100644 --- a/conda-linux-64.lock +++ b/conda-linux-64.lock @@ -13,22 +13,22 @@ https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77 https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-hab24e00_0.tar.bz2#19410c3df09dfb12d1206132a1d357c5 https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-2.6.32-he073ed8_16.conda#7ca122655873935e02c91279c5b03c8c https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-h41732ed_0.conda#7aca3059a1729aa76c597603f10b0dd3 -https://conda.anaconda.org/conda-forge/linux-64/libgcc-devel_linux-64-13.1.0-he3cc6c4_0.conda#5ec50dcd74ba7461709c4ac9c4cc4190 -https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-13.1.0-h15d22d2_0.conda#afb656a334c409dd9805508af1c89c7a -https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-devel_linux-64-13.1.0-he3cc6c4_0.conda#e703914ad2288ab24cf5ac94d812fc11 -https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-13.1.0-hfd8a6a1_0.conda#067bcc23164642f4c226da631f2a2e1d +https://conda.anaconda.org/conda-forge/linux-64/libgcc-devel_linux-64-13.2.0-ha9c7c90_0.conda#9a5cb396c9f40a5310ed88ed6ac9d632 +https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-13.2.0-ha4646dd_0.conda#aa3ee989b0eba634e47197adbaa84fdd +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-devel_linux-64-13.2.0-ha9c7c90_0.conda#65f1916f317ff8169e0d25b00b3dde72 +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-13.2.0-h7e041cc_0.conda#47d33bfb38632133412c20d1dee8eeae https://conda.anaconda.org/conda-forge/noarch/poppler-data-0.4.12-hd8ed1ab_0.conda#d8d7293c5b37f39b2ac32940621c6592 https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-3_cp311.conda#c2e2630ddb68cf52eec74dc7dfab20b5 https://conda.anaconda.org/conda-forge/noarch/tzdata-2023c-h71feb2d_0.conda#939e3e74d8be4dac89ce83b20de2492a https://conda.anaconda.org/conda-forge/linux-64/xorg-imake-1.0.7-0.tar.bz2#23acfc5a339a6a34cc2241f64e4111be https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2#f766549260d6815b0c52253f1fb1bb29 -https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-13.1.0-h69a702a_0.conda#506dc07710dd5b0ba63cbf134897fc10 -https://conda.anaconda.org/conda-forge/linux-64/libgomp-13.1.0-he5830b7_0.conda#56ca14d57ac29a75d23a39eb3ee0ddeb +https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-13.2.0-h69a702a_0.conda#bdaebefa4f6c436741187c8a304681a5 +https://conda.anaconda.org/conda-forge/linux-64/libgomp-13.2.0-h807b86a_0.conda#33c2353e425610c69ad58a8e29694724 https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.12-he073ed8_16.conda#071ea8dceff4d30ac511f4a2f8437cd1 https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2#73aaf86a425cc6e73fcf236a5a46396d https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.40-hf600244_0.conda#33084421a8c0af6aef1b439707f7662a https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2#fee5683a3f04bd15cbd8318b096a27ab -https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-13.1.0-he5830b7_0.conda#cd93f779ff018dd85c7544c015c9db3c +https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-13.2.0-h807b86a_0.conda#3934dca6107fad668d036a4cafca1015 https://conda.anaconda.org/conda-forge/linux-64/aom-3.5.0-h27087fc_0.tar.bz2#a08150fd2298460cd1fcccf626305642 https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.8.23-hd590300_0.conda#cc4f06f7eedb1523f3b83fd0fb3942ff https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h7f98852_4.tar.bz2#a1fd65c7ccbf10880423d82bca54eb54 @@ -41,7 +41,7 @@ https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz https://conda.anaconda.org/conda-forge/linux-64/geos-3.11.2-hcb278e6_0.conda#3b8e364995e3575e57960d29c1e5ab14 https://conda.anaconda.org/conda-forge/linux-64/gettext-0.21.1-h27087fc_0.tar.bz2#14947d8770185e5153fdd04d4673ed37 https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-he1b5a44_1004.tar.bz2#cddaf2c63ea4a5901cf09524c490ecdc -https://conda.anaconda.org/conda-forge/linux-64/ghostscript-9.54.0-h27087fc_2.tar.bz2#c3b35ac18d09ffc8d46064fb09a696af +https://conda.anaconda.org/conda-forge/linux-64/ghostscript-9.56.1-h59595ed_0.conda#0ecb8c9d30157cee294f9ae2546d6789 https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.1-h0b41bf4_3.conda#96f3b11872ef6fad973eac856cd2624f https://conda.anaconda.org/conda-forge/linux-64/gmp-6.2.1-h58526e2_0.tar.bz2#b94cf2db16066b242ebd26db2facbd56 https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h58526e2_1001.tar.bz2#8c54672728e8ec6aa6db90cf2806d220 @@ -63,9 +63,9 @@ https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-h166bdaf_0.tar.bz2 https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-2.1.5.1-h0b41bf4_0.conda#1edd9e67bdb90d78cea97733ff6b54e6 https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.0-h7f98852_0.tar.bz2#39b1328babf85c7c3a61636d9cd50206 https://conda.anaconda.org/conda-forge/linux-64/libnuma-2.0.16-h0b41bf4_1.conda#28bfe2cb11357ccc5be21101a6b7ce86 -https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.23-pthreads_h80387f5_0.conda#9c5ea51ccb8ffae7d06c645869d24ce6 -https://conda.anaconda.org/conda-forge/linux-64/libopenblas-ilp64-0.3.23-pthreads_h5c82d6a_0.conda#14e3fb938a49ea46df201eb105bb9068 -https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-13.1.0-hfd8a6a1_0.conda#7594fd17fb4d1b8b0e47a6b306fe01ae +https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.24-pthreads_h413a1c8_0.conda#6e4ef6ca28655124dcde9bd500e44c32 +https://conda.anaconda.org/conda-forge/linux-64/libopenblas-ilp64-0.3.24-pthreads_h384dd9e_0.conda#a7b84e5b923e139d37e63097bd8a747e +https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-13.2.0-h7e041cc_0.conda#2e88fe2dc9fd682f9c133d21e40518a1 https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.18-h36c2ea0_1.tar.bz2#c3788462a6fbddafdb413a9f9053e58d https://conda.anaconda.org/conda-forge/linux-64/libtool-2.4.7-h27087fc_0.conda#f204c8ba400ec475452737094fb81d52 https://conda.anaconda.org/conda-forge/linux-64/libunwind-1.6.2-h9c3ff4c_0.tar.bz2#a730b2badd586580c5752cc73842e068 @@ -78,8 +78,8 @@ https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda#318 https://conda.anaconda.org/conda-forge/linux-64/lzo-2.10-h516909a_1000.tar.bz2#bb14fcb13341b81d5eb386423b9d2bac https://conda.anaconda.org/conda-forge/linux-64/make-4.3-hd18ef5c_1.tar.bz2#4049ebfd3190b580dffe76daed26155a https://conda.anaconda.org/conda-forge/linux-64/mbedtls-3.3.0-hcb278e6_0.conda#cc1213f464c357b647cc5dde5cfca881 -https://conda.anaconda.org/conda-forge/linux-64/metis-5.1.1-h59595ed_0.conda#9c9e667050d3e258d321e63a0989ebb1 -https://conda.anaconda.org/conda-forge/linux-64/nccl-2.18.3.1-h12f7317_0.conda#c0041b39fc72c1d12139b45363c8a510 +https://conda.anaconda.org/conda-forge/linux-64/metis-5.1.0-h59595ed_1007.conda#40ccb8318df2500f83bd868dd8fcd201 +https://conda.anaconda.org/conda-forge/linux-64/nccl-2.18.5.1-h6103f9b_1.conda#45a5f1a3859ca6547de507330afcf31a https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.4-hcb278e6_0.conda#681105bccc2a3f7f1a837d47d39c9179 https://conda.anaconda.org/conda-forge/linux-64/nspr-4.35-h27087fc_0.conda#da0ec11a6454ae19bff5b02ed881a2b1 https://conda.anaconda.org/conda-forge/linux-64/openlibm-0.8.1-h7f98852_0.tar.bz2#ba0c56761f2380babaa783b2a37b4d08 @@ -90,7 +90,6 @@ https://conda.anaconda.org/conda-forge/linux-64/pkg-config-0.29.2-h36c2ea0_1008. https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2#22dad4df6e8630e8dff2428f6f6a7036 https://conda.anaconda.org/conda-forge/linux-64/rdma-core-28.9-h59595ed_1.conda#aeffb7c06b5f65e55e6c637408dc4100 https://conda.anaconda.org/conda-forge/linux-64/re2-2023.03.02-h8c504da_0.conda#206f8fa808748f6e90599c3368a1114e -https://conda.anaconda.org/conda-forge/linux-64/rocm-smi-5.6.0-h59595ed_1.conda#2980fb3b7777f495dacd46d5cc5d74bb https://conda.anaconda.org/conda-forge/linux-64/sed-4.8-he412f7d_0.tar.bz2#7362f0042e95681f5d371c46c83ebd08 https://conda.anaconda.org/conda-forge/linux-64/snappy-1.1.10-h9fff704_0.conda#e6d228cd0bb74a51dd18f5bfce0b4115 https://conda.anaconda.org/conda-forge/linux-64/tzcode-2023c-h0b41bf4_0.conda#0c0533894f21c3d35697cb8378d390e2 @@ -103,7 +102,7 @@ https://conda.anaconda.org/conda-forge/linux-64/xorg-makedepend-1.0.8-h59595ed_0 https://conda.anaconda.org/conda-forge/linux-64/xorg-renderproto-0.11.1-h7f98852_1002.tar.bz2#06feff3d2634e3097ce2fe681474b534 https://conda.anaconda.org/conda-forge/linux-64/xorg-xextproto-7.3.0-h0b41bf4_1003.conda#bce9f945da8ad2ae9b1d7165a64d0f87 https://conda.anaconda.org/conda-forge/linux-64/xorg-xproto-7.0.31-h7f98852_1007.tar.bz2#b4a4381d54784606820704f7b5f05a15 -https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.1-h0b41bf4_0.conda#e9c3bcf0e0c719431abec8ca447eee27 +https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda#f08fb5c89edfc4aadee1c81d4cfb1fa1 https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2#2161070d867d1b1204ea749c8eec4ef0 https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2#4cb3ad778ec2d5a7acbdf254eb1c42ae https://conda.anaconda.org/conda-forge/linux-64/zfp-1.0.0-h27087fc_3.tar.bz2#0428af0510c3fafedf1c66b43102a34b @@ -113,11 +112,11 @@ https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.2.17-h862ab7 https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.1.11-h862ab75_1.conda#6fbc9bd49434eb36d3a59c5020f4af95 https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.1.16-h862ab75_1.conda#f883d61afbc95c50f7b3f62546da4235 https://conda.anaconda.org/conda-forge/linux-64/expat-2.5.0-hcb278e6_1.conda#8b9b5aca60558d02ddaa09d599e55920 -https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-13.1.0-hc4be1a9_0.conda#99d1a8a8ee1665ee9435f8d160df69fe +https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-13.2.0-h338b0a0_0.conda#b9948d664ec41ef7088623235ce37d79 https://conda.anaconda.org/conda-forge/linux-64/glog-0.6.0-h6f12383_0.tar.bz2#b31f3565cb84435407594e548a2fb7b2 https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h501b40f_6.conda#c3e9338e15d90106f467377017352b97 https://conda.anaconda.org/conda-forge/linux-64/libavif-0.11.1-h8182462_2.conda#41c399ed4c439e37b844c24ab5621b5a -https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-17_linux64_openblas.conda#57fb44770b1bc832fb2dbefa1bd502de +https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-18_linux64_openblas.conda#bcddbb497582ece559465b9cd11042e7 https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.0.9-h166bdaf_9.conda#081aa22f4581c08e4372b0b6c2f8478e https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.0.9-h166bdaf_9.conda#1f0a03af852a9659ed2bf08f2f1704fd https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2#4d331e44109e3f0e19b4cb8f9b82f3e1 @@ -125,54 +124,54 @@ https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda https://conda.anaconda.org/conda-forge/linux-64/libllvm14-14.0.6-hcd5def8_4.conda#73301c133ded2bf71906aa2104edae8b https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.52.0-h61bc06f_0.conda#613955a50485812985c059e7b269f42e https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.39-h753d276_0.conda#e1c890aebdebbfbf87e2c917187b4416 -https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-4.23.3-hd1fb520_0.conda#c8da7f04073ed0fabcb60885a4c1a722 +https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-4.23.3-hd1fb520_1.conda#78c10e8637a6f8d377f9989327d0267d https://conda.anaconda.org/conda-forge/linux-64/librttopo-1.1.0-h0d5128d_13.conda#e1d6139ff0500977a760567a4bec1ce9 -https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.42.0-h2797004_0.conda#fdaae20a1cf7cd62130a0973190a31b7 +https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.43.0-h2797004_0.conda#903fa782a9067d5934210df6d79220f6 https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda#1f5a58e686b13bcfde88b93f547d23fe https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.15-h0b41bf4_0.conda#33277193f5b92bad9fdd230eb700929c -https://conda.anaconda.org/conda-forge/linux-64/libxgboost-1.7.6-cuda112h7a395e5_0.conda#8f5e1a6eb68812ed72cb7992f1db537d +https://conda.anaconda.org/conda-forge/linux-64/libxgboost-1.7.6-cuda112h7a395e5_2.conda#3eb1d878491539ab11baf3c911316f85 https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.11.5-h0d562d8_0.conda#558ab736404275d7df61c473c1af35aa -https://conda.anaconda.org/conda-forge/linux-64/libzip-1.9.2-hc929e4a_1.tar.bz2#5b122b50e738c4be5c3f2899f010d7cf +https://conda.anaconda.org/conda-forge/linux-64/libzip-1.10.1-h2629f0a_2.conda#a83ad320127e83ae8a86b3db8dfeec77 https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.0-hb012696_0.conda#14d87bdff2cbd3b1179a29fb316ed743 -https://conda.anaconda.org/conda-forge/linux-64/openblas-ilp64-0.3.23-pthreads_h3d04fff_0.conda#9787e8492f0a51a6b0498dc86f3864f9 +https://conda.anaconda.org/conda-forge/linux-64/openblas-ilp64-0.3.24-pthreads_h3d04fff_0.conda#8bd1b1f2faa8c80e6bb88b3916398c68 https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.40-hc3806b6_0.tar.bz2#69e2c796349cd9b273890bee0febfe1b https://conda.anaconda.org/conda-forge/linux-64/perl-5.32.1-4_hd590300_perl5.conda#3e785bff761095eb7f8676f4694bd1b1 https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda#47d31b792659ce70f470b5c82fdfb7a4 https://conda.anaconda.org/conda-forge/linux-64/s2n-1.3.46-h06160fa_0.conda#413d96a0b655c8f8aacc36473a2dbb04 https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.12-h27826a3_0.tar.bz2#5b8c42eb62e9fc961af70bdd6a26e168 -https://conda.anaconda.org/conda-forge/linux-64/ucx-1.14.1-h4a2ce2d_2.conda#9ad153019bdfd939b235825eddea53bc +https://conda.anaconda.org/conda-forge/linux-64/ucx-1.14.1-h64cca9d_4.conda#bbbd3de252bf44be87dc83dbf8a5b653 https://conda.anaconda.org/conda-forge/linux-64/xorg-fixesproto-5.0-h7f98852_1002.tar.bz2#65ad6e1eb4aed2b0611855aff05e04f6 https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-h7391055_0.conda#93ee23f12bc2e684548181256edd2cf6 https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.4-h9c3ff4c_1.tar.bz2#21743a8d2ea0c8cfbbf8fe489b0347df https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.13-hd590300_5.conda#68c34ec6149623be41a1933ab996a209 -https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.2-hfc55251_7.conda#32ae18eb2a687912fc9e92a501c0a11b +https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.5-hfc55251_0.conda#04b88013080254850d6c01ed54810589 https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.13.28-h3870b5a_0.conda#b775667301ab249f94ad2bea91fc4223 -https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.4-h0f2a231_0.conda#876286b5941933a0f558777e57d883cc +https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.5-h0f2a231_0.conda#009521b7ed97cca25f8f997f9e745976 https://conda.anaconda.org/conda-forge/linux-64/boost-cpp-1.78.0-h6582d0a_3.conda#d3c3c7698d0b878aab1b86db95407c8e https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.0.9-h166bdaf_9.conda#d47dee1856d9cb955b8076eeff304a5b https://conda.anaconda.org/conda-forge/linux-64/bwidget-1.9.14-ha770c72_1.tar.bz2#5746d6202ba2abad4a4707f2a2462795 -https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-2.10.0-hb4ffafa_0.conda#63b397207c1e039b3373dd45af045d8b +https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-2.10.2-hb4ffafa_0.conda#1a88c95afde6f13403492cac91352568 https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-hca18f0e_1.conda#e1232042de76d24539a436d37597eb06 -https://conda.anaconda.org/conda-forge/linux-64/gfortran_impl_linux-64-13.1.0-hd511a9b_0.conda#e0dead77d88f1bcc59c0e0c2f8975af1 -https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-13.1.0-hc4be1a9_0.conda#e6591b3c81fc5fb83e342b20a2506e80 +https://conda.anaconda.org/conda-forge/linux-64/gfortran_impl_linux-64-13.2.0-h76e1118_0.conda#763e6627086c5d4f04186a5665b22b08 +https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-13.2.0-h338b0a0_0.conda#7e1329f1b02ee8e651aaac5955b57f94 https://conda.anaconda.org/conda-forge/linux-64/hdfeos2-2.20-hebf79cf_1003.conda#23bb57b64a629bc3b33379beece7f0d7 https://conda.anaconda.org/conda-forge/linux-64/krb5-1.20.1-h81ceb04_0.conda#89a41adce7106749573d883b2f657d78 https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.6.2-h039dbb9_1.conda#29cf970521d30d113f3425b84cb250f6 -https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-17_linux64_openblas.conda#7ef0969b00fe3d6eef56a8151d3afb29 +https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-18_linux64_openblas.conda#93dd9ab275ad888ed8113953769af78c https://conda.anaconda.org/conda-forge/linux-64/libgit2-1.5.1-h1f77430_0.conda#16802fd0c80290248ea79a570bd83b95 -https://conda.anaconda.org/conda-forge/linux-64/libglib-2.76.4-hebfc3b9_0.conda#c6f951789c888f7bbd2dd6858eab69de +https://conda.anaconda.org/conda-forge/linux-64/libglib-2.78.0-hebfc3b9_0.conda#e618003da3547216310088478e475945 https://conda.anaconda.org/conda-forge/linux-64/libglu-9.0.0-hac7e632_1002.conda#4c4dce87e96b321308f81ba2c10d2897 -https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.56.2-h3905398_0.conda#a87e780f3d9cc7cf432e47ced83a67ce -https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.9.2-nocuda_h7313eea_1008.conda#3b4cad0666b5a8ec5eaf2de0ef41d6c9 -https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-17_linux64_openblas.conda#a2103882c46492e26500fcb56c03de8b +https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.56.2-h3905398_1.conda#0b01e6ff8002994bd4ddbffcdbec7856 +https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.9.2-default_h554bfaf_1009.conda#9369f407667517fe52b0e8ed6965ffeb +https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-18_linux64_openblas.conda#a1244707531e5b143c420c70573c8ec5 https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.18.1-h8fd135c_2.conda#bbf65f7688512872f063810623b755dc -https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.5.1-h8b53f26_0.conda#8ad377fb60abab446a9f02c62b3c2190 +https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.5.1-h8b53f26_1.conda#5b09e13d732dda1a2bc9adc711164f4d https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.37-h0054252_1.conda#f27960e8873abb5476e96ef33bdbdccd -https://conda.anaconda.org/conda-forge/linux-64/nss-3.89-he45b914_0.conda#2745719a58eeaab6657256a3f142f099 +https://conda.anaconda.org/conda-forge/linux-64/nss-3.92-h1d7d5a4_0.conda#22c89a3d87828fe925b310b9cdf0f574 https://conda.anaconda.org/conda-forge/linux-64/orc-1.9.0-h385abfd_1.conda#2cd5aac7ef1b4c6ac51bf521251a89b3 https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.1.3-h32600fe_0.conda#8287aeb8462e2d4b235eff788e75919d -https://conda.anaconda.org/conda-forge/linux-64/python-3.11.4-hab00c5b_0_cpython.conda#1c628861a2a126b9fc9363ca1b7d014e -https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.42.0-h2c6b66d_0.conda#1192f6ec654a5bc4ee1d64bdc4a3e5cc +https://conda.anaconda.org/conda-forge/linux-64/python-3.11.5-hab00c5b_0_cpython.conda#f0288cb82594b1cbc71111d1cd3c5422 +https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.43.0-h2c6b66d_0.conda#713f9eac95d051abe14c3774376854fe https://conda.anaconda.org/conda-forge/linux-64/tktable-2.10-hb7b940f_3.tar.bz2#ea4d0879e40211fa26f38d8986db1bbe https://conda.anaconda.org/conda-forge/linux-64/udunits2-2.2.28-hc3e0081_0.tar.bz2#d4c341e0379c31e9e781d4f204726867 https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.6-h8ee46fc_0.conda#7590b76c3d11d21caa44f3fc38ac584a @@ -191,14 +190,14 @@ https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.0.9-py311ha362b7 https://conda.anaconda.org/conda-forge/noarch/certifi-2023.7.22-pyhd8ed1ab_0.conda#7f3dbc9179b4dde7da98dfb151d0ad22 https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2#ebb5f5f7dc4f1a3780ef7ea7738db08c https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.2.0-pyhd8ed1ab_0.conda#313516e9a4b08b12dfb1e1cd390a96e3 -https://conda.anaconda.org/conda-forge/noarch/click-8.1.6-unix_pyh707e725_0.conda#64dbb3b205546691a61204d1cfb208e3 +https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda#f3ad426304898027fc619827ff428eca https://conda.anaconda.org/conda-forge/noarch/cloudpickle-2.2.1-pyhd8ed1ab_0.conda#b325bfc4cff7d7f8a868f1f7ecc4ed16 https://conda.anaconda.org/conda-forge/noarch/codespell-2.2.5-pyhd8ed1ab_0.conda#c73551c990f6e7e9c83cdb8bdbafdeb8 https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2#3faab06a954c2a04039983f2c4a50d99 https://conda.anaconda.org/conda-forge/noarch/config-0.5.1-pyhd8ed1ab_0.tar.bz2#97275d4898af65967b1ad57923cef770 https://conda.anaconda.org/conda-forge/noarch/configargparse-1.7-pyhd8ed1ab_0.conda#0d07dc29b1c1cc973f76b74beb44915f https://conda.anaconda.org/conda-forge/noarch/cycler-0.11.0-pyhd8ed1ab_0.tar.bz2#a50559fad0affdbb33729a68669ca1cb -https://conda.anaconda.org/conda-forge/linux-64/cython-3.0.0-py311hb755f60_0.conda#257dfede48699e2e6372528d08399e5a +https://conda.anaconda.org/conda-forge/linux-64/cython-3.0.2-py311hb755f60_0.conda#81d4eacf7eb2d40beee33aa71e8f94ad https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2 https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda#5e4f3466526c52bc9af2d2353a1460bd https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.7-pyhd8ed1ab_0.conda#12d8aae6994f342618443a8f05c652a0 @@ -207,14 +206,14 @@ https://conda.anaconda.org/conda-forge/noarch/dodgy-0.2.1-py_0.tar.bz2#62a69d073 https://conda.anaconda.org/conda-forge/noarch/ecmwf-api-client-1.6.3-pyhd8ed1ab_0.tar.bz2#15621abf59053e184114d3e1d4f9d01e https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2#3cf04868fee0a029769bd41f4b2fbf2d https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-1.1.0-pyhd8ed1ab_0.conda#a2f2138597905eaa72e561d8efb42cf3 -https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.1.2-pyhd8ed1ab_0.conda#de4cb3384374e1411f0454edcf546cdb +https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.1.3-pyhd8ed1ab_0.conda#e6518222753f519e911e83136d2158d9 https://conda.anaconda.org/conda-forge/noarch/execnet-2.0.2-pyhd8ed1ab_0.conda#67de0d8241e1060a479e3c37793e26f9 https://conda.anaconda.org/conda-forge/noarch/fasteners-0.17.3-pyhd8ed1ab_0.tar.bz2#348e27e78a5e39090031448c72f66d5e -https://conda.anaconda.org/conda-forge/noarch/filelock-3.12.2-pyhd8ed1ab_0.conda#53522ec72e6adae42bd373ef58357230 +https://conda.anaconda.org/conda-forge/noarch/filelock-3.12.3-pyhd8ed1ab_0.conda#3104cf0ab9fb9de393051bf92b10dbe9 https://conda.anaconda.org/conda-forge/noarch/findlibs-0.0.5-pyhd8ed1ab_0.conda#8f325f63020af6f7acbe2c4cb4c920db https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.2-h14ed4e7_0.conda#0f69b688f52ff6da70bccb7ff7001d1d https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.4.0-py311h459d7ec_0.conda#54bd8f0776418b17a8eccd6f10181f95 -https://conda.anaconda.org/conda-forge/noarch/fsspec-2023.6.0-pyh1a96a4e_0.conda#50ea2067ec92dfcc38b4f07992d7e235 +https://conda.anaconda.org/conda-forge/noarch/fsspec-2023.9.0-pyh1a96a4e_0.conda#b4a3c7bb3f45d47e085764ff096fa259 https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.10-h6b639ba_2.conda#ee8220db21db8094998005990418fe5b https://conda.anaconda.org/conda-forge/noarch/geographiclib-1.52-pyhd8ed1ab_0.tar.bz2#6880e7100ebae550a33ce26663316d85 https://conda.anaconda.org/conda-forge/linux-64/gsl-2.7-he838d99_0.tar.bz2#fec079ba39c9cca093bf4c00001825de @@ -224,9 +223,9 @@ https://conda.anaconda.org/conda-forge/noarch/idna-3.4-pyhd8ed1ab_0.tar.bz2#3427 https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2#7de5386c8fea29e76b303f37dde4c352 https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda#f800d2da156d08e289b14e87e43c1ae5 https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.1.2-pyhd8ed1ab_0.tar.bz2#3c3de74912f11d2b590184f03c7cd09b -https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.4-py311h4dd048b_1.tar.bz2#46d451f575392c01dc193069bd89766d +https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.5-py311h9547e67_0.conda#f53903649188b99e6b44c560c69f5b23 https://conda.anaconda.org/conda-forge/linux-64/lazy-object-proxy-1.9.0-py311h2582759_0.conda#07745544b144855ed4514a4cf0aadd74 -https://conda.anaconda.org/conda-forge/noarch/lazy_loader-0.2-pyhd8ed1ab_0.conda#d060d017720c9882c4eca0544a4a0592 +https://conda.anaconda.org/conda-forge/noarch/lazy_loader-0.3-pyhd8ed1ab_0.conda#69ea1d0fa7ab33b48c88394ad1dead65 https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.15-haa2dc70_1.conda#980d8aca0bc23ca73fa8caa3e7c84c28 https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.1.2-h409715c_0.conda#50c873c9660ed116707ae15b663928d8 https://conda.anaconda.org/conda-forge/linux-64/libkml-1.3.0-h37653c0_1015.tar.bz2#37d3747dd24d604f63d2610910576e63 @@ -238,7 +237,7 @@ https://conda.anaconda.org/conda-forge/linux-64/lxml-4.9.3-py311h1a07684_0.conda https://conda.anaconda.org/conda-forge/linux-64/lz4-4.3.2-py311h9f220a4_0.conda#b8aad2507303e04037e8d02d8ac54217 https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.1.3-py311h459d7ec_0.conda#9904dc4adb5d547cb21e136f98cb24b0 https://conda.anaconda.org/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_0.tar.bz2#34fc335fc50eef0b5ea708f2b5f54e0c -https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.0-pyhd8ed1ab_0.conda#c7d0ea64c37752ecbe6da458aee662d2 +https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.1-pyhd8ed1ab_0.conda#1dad8397c94e4de97a70de552a7dcf49 https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.0.5-py311ha3edf6b_0.conda#7415f24f8c44e44152623d93c5015000 https://conda.anaconda.org/conda-forge/linux-64/multidict-6.0.4-py311h2582759_0.conda#8f581c14b50f2df47a2c6bd8d230a579 https://conda.anaconda.org/conda-forge/noarch/munch-4.0.0-pyhd8ed1ab_0.conda#376b32e8f9d3eacbd625f37d39bd507d @@ -252,7 +251,7 @@ https://conda.anaconda.org/conda-forge/noarch/packaging-23.1-pyhd8ed1ab_0.conda# https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2#457c2c8c08e54905d6954e79cb5b5db9 https://conda.anaconda.org/conda-forge/noarch/pathspec-0.11.2-pyhd8ed1ab_0.conda#e41debb259e68490e3ab81e46b639ab6 https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_0.tar.bz2#89e3c7cdde7d3aaa2aee933b604dd07f -https://conda.anaconda.org/conda-forge/noarch/pluggy-1.2.0-pyhd8ed1ab_0.conda#7263924c642d22e311d9e59b839f1b33 +https://conda.anaconda.org/conda-forge/noarch/pluggy-1.3.0-pyhd8ed1ab_0.conda#2390bd10bed1f3fdc7a537fb5a447d8d https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.5-py311h2582759_0.conda#a90f8e278c1cd7064b2713e6b7db87e6 https://conda.anaconda.org/conda-forge/noarch/py-1.11.0-pyh6c4a22f_0.tar.bz2#b4613d7e7a493916d867842a6a148054 https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.9.1-pyhd8ed1ab_0.tar.bz2#0191dd7efe1a94262812770183b68892 @@ -264,33 +263,33 @@ https://conda.anaconda.org/conda-forge/noarch/pyshp-2.3.1-pyhd8ed1ab_0.tar.bz2#9 https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2#2a7de29fb590ca14b5243c4c812c8025 https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.18.0-pyhd8ed1ab_0.conda#3be9466311564f80f8056c0851fc5bb7 https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2023.3-pyhd8ed1ab_0.conda#2590495f608a63625e165915fb4e2e34 -https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.2.0-py311h2582759_0.conda#dfcc3e6e30d6ec2b2bb416fcd8ff4dc1 -https://conda.anaconda.org/conda-forge/noarch/pytz-2023.3-pyhd8ed1ab_0.conda#d3076b483092a435832603243567bc31 -https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0-py311hd4cff14_5.tar.bz2#da8769492e423103c59f469f4f17f8d9 +https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.3.0-py311h459d7ec_0.conda#87b306459b81b7a7aaad37222d537a4f +https://conda.anaconda.org/conda-forge/noarch/pytz-2023.3.post1-pyhd8ed1ab_0.conda#c93346b446cd08c169d843ae5fc0da97 +https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.1-py311h459d7ec_0.conda#30eaaf31141e785a445bf1ede6235fe3 https://conda.anaconda.org/conda-forge/linux-64/pyzmq-25.1.1-py311h75c88c4_0.conda#af6d43afe0d179ac83b7e0c16b2caaad -https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.9.2-py311h46250e7_0.conda#bcf66b5abaec47198b42cdd0bb968540 +https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.10.2-py311h46250e7_0.conda#0068f069d641ebeb5a9d8f3422f90442 https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.7-py311h2582759_1.conda#5e997292429a22ad50c11af0a2cb0f08 https://conda.anaconda.org/conda-forge/noarch/semver-3.0.1-pyhd8ed1ab_0.conda#ed90854ae56fb6edae1f13b4663b21b0 https://conda.anaconda.org/conda-forge/noarch/setoptconf-tmp-0.3.1-pyhd8ed1ab_0.tar.bz2#af3e36d4effb85b9b9f93cd1db0963df -https://conda.anaconda.org/conda-forge/noarch/setuptools-68.0.0-pyhd8ed1ab_0.conda#5a7739d0f57ee64133c9d32e6507c46d +https://conda.anaconda.org/conda-forge/noarch/setuptools-68.1.2-pyhd8ed1ab_0.conda#4fe12573bf499ff85a0a364e00cc5c53 https://conda.anaconda.org/conda-forge/linux-64/simplejson-3.19.1-py311h2582759_0.conda#c58e325a8500b8755e95cf0622665840 https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2 https://conda.anaconda.org/conda-forge/noarch/smmap-3.0.5-pyh44b312d_0.tar.bz2#3a8dc70789709aa315325d5df06fb7e4 https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2#4d22a9315e78c6827f806065957d566e https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_0.tar.bz2#6d6552722448103793743dabfbda532d -https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.3.2.post1-pyhd8ed1ab_0.tar.bz2#146f4541d643d48fc8a75cacf69f03ae +https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda#3f144b2c34f8cb5a9abd9ed23a39c561 https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda#da1d979339e2714c30a8e806a33ec087 https://conda.anaconda.org/conda-forge/noarch/sqlparse-0.4.4-pyhd8ed1ab_0.conda#2e2f31b3b1c866c29636377e14f8c4c6 https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.10.0-h00ab1b0_0.conda#9c82b1b389e46b64ec685ec487043e70 https://conda.anaconda.org/conda-forge/noarch/tblib-1.7.0-pyhd8ed1ab_0.tar.bz2#3d4afc31302aa7be471feb6be048ed76 -https://conda.anaconda.org/conda-forge/noarch/tenacity-8.2.2-pyhd8ed1ab_0.conda#7b39e842b52966a99e229739cd4dc36e +https://conda.anaconda.org/conda-forge/noarch/tenacity-8.2.3-pyhd8ed1ab_0.conda#1482e77f87c6a702a7e05ef22c9b197b https://conda.anaconda.org/conda-forge/noarch/termcolor-2.3.0-pyhd8ed1ab_0.conda#440d508f025b1692168caaf436504af3 https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.2.0-pyha21a80b_0.conda#978d03388b62173b8e6f79162cf52b86 https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2#f832c45a477c78bebd107098db465095 https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5844808ffab9ebdb694585b50ba02a96 https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.12.1-pyha770c72_0.conda#62f5b331c53d73e2f6c4c130b53518a0 https://conda.anaconda.org/conda-forge/noarch/toolz-0.12.0-pyhd8ed1ab_0.tar.bz2#92facfec94bc02d6ccf42e7173831a36 -https://conda.anaconda.org/conda-forge/linux-64/tornado-6.3.2-py311h459d7ec_0.conda#12b1c374ee90a1aa11ea921858394dc8 +https://conda.anaconda.org/conda-forge/linux-64/tornado-6.3.3-py311h459d7ec_0.conda#7d9a31416c18704f55946ff7cf8da5dc https://conda.anaconda.org/conda-forge/noarch/traitlets-5.9.0-pyhd8ed1ab_0.conda#d0b4f5c87cd35ac3fb3d47b223263a64 https://conda.anaconda.org/conda-forge/noarch/trove-classifiers-2023.8.7-pyhd8ed1ab_0.conda#347293fe36843c704818dcec8364409a https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.7.1-pyha770c72_0.conda#c39d6a09fe819de4951c2642629d9115 @@ -298,9 +297,9 @@ https://conda.anaconda.org/conda-forge/linux-64/ujson-5.7.0-py311hcafe171_0.cond https://conda.anaconda.org/conda-forge/noarch/untokenize-0.1.1-py_0.tar.bz2#1447ead40f2a01733a9c8dfc32988375 https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-py_1.tar.bz2#3563be4c5611a44210d9ba0c16113136 https://conda.anaconda.org/conda-forge/noarch/webob-1.8.7-pyhd8ed1ab_0.tar.bz2#a8192f3585f341ea66c60c189580ac67 -https://conda.anaconda.org/conda-forge/noarch/wheel-0.41.1-pyhd8ed1ab_0.conda#8f467ba2db2b5470d297953d9c1f9c7d +https://conda.anaconda.org/conda-forge/noarch/wheel-0.41.2-pyhd8ed1ab_0.conda#1ccd092478b3e0ee10d7a891adbf8a4f https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.15.0-py311h2582759_0.conda#15565d8602a78c6a994e4d9fcb391920 -https://conda.anaconda.org/conda-forge/noarch/xlsxwriter-3.1.2-pyhd8ed1ab_0.conda#e0593431fd5e9c12824b9bfa989c9ed0 +https://conda.anaconda.org/conda-forge/noarch/xlsxwriter-3.1.3-pyhd8ed1ab_0.conda#f45ed2f56e2b770df10cba785f935133 https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.4-h0b41bf4_2.conda#82b6df12252e6f32402b96dacc656fec https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-5.0.3-h7f98852_1004.tar.bz2#e9a21aa4d5e3e5f1aed71e8cefd46b6a https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hd590300_0.conda#ed67c36f215b310412b2af935bf3e530 @@ -327,15 +326,15 @@ https://conda.anaconda.org/conda-forge/noarch/click-plugins-1.1.1-py_0.tar.bz2#4 https://conda.anaconda.org/conda-forge/noarch/cligj-0.7.2-pyhd8ed1ab_1.tar.bz2#a29b7c141d6b2de4bb67788a5f107734 https://conda.anaconda.org/conda-forge/noarch/colorspacious-1.1.2-pyh24bf2e0_0.tar.bz2#b73afa0d009a51cabd3ec99c4d2ef4f3 https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.1.0-py311h9547e67_0.conda#daf3f23397ab2265d0cdfa339f3627ba -https://conda.anaconda.org/conda-forge/linux-64/coverage-7.2.7-py311h459d7ec_0.conda#3c2c65575c28b23afc5e4ff721a2fc9f +https://conda.anaconda.org/conda-forge/linux-64/coverage-7.3.1-py311h459d7ec_0.conda#d23df37f3a595e8ffca99642ab6df3eb https://conda.anaconda.org/conda-forge/linux-64/curl-8.1.2-h409715c_0.conda#9f88cfb15b7d08b25880b138f91e0eb4 https://conda.anaconda.org/conda-forge/linux-64/cytoolz-0.12.2-py311h459d7ec_0.conda#5c416db47b7816e437eaf0d46e5c3a3d https://conda.anaconda.org/conda-forge/noarch/docformatter-1.7.5-pyhd8ed1ab_0.conda#3a941b6083e945aa87e739a9b85c82e9 https://conda.anaconda.org/conda-forge/noarch/docrep-0.3.2-pyh44b312d_0.tar.bz2#235523955bc1bfb019d7ec8a2bb58f9a https://conda.anaconda.org/conda-forge/noarch/eofs-1.4.0-py_0.tar.bz2#6e166cd37cfeadefcfca1ffe00f222bb https://conda.anaconda.org/conda-forge/noarch/fire-0.5.0-pyhd8ed1ab_0.conda#9fd22aae8d2f319e80f68b295ab91d64 -https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.42.0-py311h459d7ec_0.conda#8c1ac2c00995248898220c4c1a9d81ab -https://conda.anaconda.org/conda-forge/noarch/geopy-2.3.0-pyhd8ed1ab_0.tar.bz2#529faeecd6eee3a3b782566ddf05ce92 +https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.42.1-py311h459d7ec_0.conda#fc327c0ea015db3b6484eabb37d44e60 +https://conda.anaconda.org/conda-forge/noarch/geopy-2.4.0-pyhd8ed1ab_0.conda#90faaa7eaeba3cc877074c0916efe30c https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.10-pyhd8ed1ab_0.conda#3706d2f3d7cb5dae600c833345a76132 https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.0-nompi_hb72d44e_103.conda#975973a4350ab45ff1981fe535a12af5 https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.8.0-pyha770c72_0.conda#4e9f59a060c3be52bc4ddc46ee9b6946 @@ -358,12 +357,12 @@ https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.2-py311h459d7ec_0.c https://conda.anaconda.org/conda-forge/noarch/partd-1.4.0-pyhd8ed1ab_0.conda#721dab5803ea92ce02ddc4ee50aa0c48 https://conda.anaconda.org/conda-forge/linux-64/pillow-10.0.0-py311h0b84326_0.conda#4b24acdc1fbbae9da03147e7d2cf8c8a https://conda.anaconda.org/conda-forge/noarch/pip-23.2.1-pyhd8ed1ab_0.conda#e2783aa3f9235225eec92f9081c5b801 -https://conda.anaconda.org/conda-forge/noarch/plotly-5.15.0-pyhd8ed1ab_0.conda#48573e7cca7860509648522a3b8507d7 +https://conda.anaconda.org/conda-forge/noarch/plotly-5.16.1-pyhd8ed1ab_0.conda#80a84dd5ca82e99f7a4092639aa14f8a https://conda.anaconda.org/conda-forge/linux-64/postgresql-15.3-hd458b1d_1.conda#4a4b5dede4d2e075e9aa5a44a9fd9f20 https://conda.anaconda.org/conda-forge/linux-64/proj-9.2.1-ha643af7_0.conda#e992387307f4403ba0ec07d009032550 https://conda.anaconda.org/conda-forge/noarch/pydocstyle-6.3.0-pyhd8ed1ab_0.conda#7e23a61a7fbaedfef6eb0e1ac775c8e5 https://conda.anaconda.org/conda-forge/noarch/pyproject_hooks-1.0.0-pyhd8ed1ab_0.conda#21de50391d584eb7f4441b9de1ad773f -https://conda.anaconda.org/conda-forge/noarch/pytest-7.4.0-pyhd8ed1ab_0.conda#3cfe9b9e958e7238a386933c75d190db +https://conda.anaconda.org/conda-forge/noarch/pytest-7.4.2-pyhd8ed1ab_0.conda#6dd662ff5ac9a783e5c940ce9f3fe649 https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984 https://conda.anaconda.org/conda-forge/noarch/python-utils-3.7.0-pyhd8ed1ab_1.conda#d3e9c0f7bf300ddc51a363a8183b3abd https://conda.anaconda.org/conda-forge/linux-64/pywavelets-1.4.1-py311hcb2cf0a_0.conda#272ca0c28df344037ba2c4982d4e4791 @@ -386,20 +385,20 @@ https://conda.anaconda.org/conda-forge/linux-64/xorg-libxpm-3.5.16-hd590300_0.co https://conda.anaconda.org/conda-forge/noarch/yamale-4.0.4-pyh6c4a22f_0.tar.bz2#cc9f59f147740d88679bf1bd94dbe588 https://conda.anaconda.org/conda-forge/noarch/yamllint-1.32.0-pyhd8ed1ab_0.conda#6d2425548b0293a225ca4febd80feaa3 https://conda.anaconda.org/conda-forge/linux-64/yarl-1.9.2-py311h459d7ec_0.conda#4d738187d20e0a3be66973860f134e0a -https://conda.anaconda.org/conda-forge/noarch/async-timeout-4.0.2-pyhd8ed1ab_0.tar.bz2#25e79f9a1133556671becbd65a170c78 +https://conda.anaconda.org/conda-forge/noarch/async-timeout-4.0.3-pyhd8ed1ab_0.conda#3ce482ec3066e6d809dbbb1d1679f215 https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.3.13-heb0bb06_2.conda#c0866da05d5e7bb3a3f6b68bcbf7537b https://conda.anaconda.org/conda-forge/linux-64/cf-units-3.2.0-py311h1f0f07a_0.conda#43a71a823583d75308eaf3a06c8f150b https://conda.anaconda.org/conda-forge/linux-64/cryptography-41.0.3-py311h63ff55d_0.conda#cc8ad641cab65dfe59caddbc23a1aeca -https://conda.anaconda.org/conda-forge/noarch/django-4.2.3-pyhd8ed1ab_0.conda#00a369ccfec9deaa325eabd749bfae28 +https://conda.anaconda.org/conda-forge/noarch/django-4.2.5-pyhd8ed1ab_0.conda#5af47510c844ef54896d6b3ea424b82b https://conda.anaconda.org/conda-forge/noarch/flake8-5.0.4-pyhd8ed1ab_0.tar.bz2#8079ea7dec0a917dd0cb6c257f7ea9ea https://conda.anaconda.org/conda-forge/linux-64/freeglut-3.2.2-hac7e632_2.conda#6e553df297f6e64668efb54302e0f139 https://conda.anaconda.org/conda-forge/noarch/funcargparse-0.2.5-pyhd8ed1ab_0.tar.bz2#e557b70d736251fa0bbb7c4497852a92 https://conda.anaconda.org/conda-forge/linux-64/geotiff-1.7.1-h22adcc9_11.conda#514167b60f598eaed3f7a60e1dceb9ee -https://conda.anaconda.org/conda-forge/linux-64/git-2.41.0-pl5321h86e50cf_0.conda#14f8341e26b274362b026bbdc72b14fb -https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.32-pyhd8ed1ab_0.conda#5809a12901d57388444c3293c975d0bb +https://conda.anaconda.org/conda-forge/linux-64/git-2.42.0-pl5321h86e50cf_0.conda#96ad24c67e0056d171385859c43218a2 +https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.35-pyhd8ed1ab_0.conda#e434463858a6060d5424d95fbd5fa2b8 https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-7.3.0-hdb3a94d_0.conda#765bc76c0dfaf24ff9d8a2935b2510df https://conda.anaconda.org/conda-forge/linux-64/hdfeos5-5.1.16-h8b5b2df_13.conda#29a96d50cb53638a5b4806b5ca6e4b1d -https://conda.anaconda.org/conda-forge/linux-64/imagecodecs-2023.7.10-py311h67b54e4_2.conda#ac734963735ededab90c6991d1d4edff +https://conda.anaconda.org/conda-forge/linux-64/imagecodecs-2023.8.12-py311h67b54e4_0.conda#363e5c2f2c67ff69d717aba54422b03d https://conda.anaconda.org/conda-forge/noarch/imageio-2.31.1-pyh24c5eb1_0.conda#1051cc0376612ba101d4f59e954a1ff4 https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-6.8.0-hd8ed1ab_0.conda#b279b07ce18058034e5b3606ba103a8b https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.7.1-pyhd8ed1ab_0.conda#7c27ea1bdbe520bb830dcadd59f55cbf @@ -407,37 +406,37 @@ https://conda.anaconda.org/conda-forge/linux-64/kealib-1.5.1-h3845be2_3.conda#f3 https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.9.2-nompi_h0f3d0bb_105.conda#b5d412441b84305460e9df8a016a3392 https://conda.anaconda.org/conda-forge/linux-64/libspatialite-5.0.1-hca56755_27.conda#918a735059cab21b96fc13a8d04fbcd8 https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.7.2-py311h54ef318_0.conda#2631a9e423855fb586c05f8a5ee8b177 -https://conda.anaconda.org/conda-forge/linux-64/pandas-2.0.3-py311h320fe9a_1.conda#5f92f46bd33917832a99d1660b4075ac +https://conda.anaconda.org/conda-forge/linux-64/pandas-2.1.0-py311h320fe9a_0.conda#7f35501e126df510b250ad893482ef45 https://conda.anaconda.org/conda-forge/noarch/platformdirs-3.10.0-pyhd8ed1ab_0.conda#0809187ef9b89a3d94a5c24d13936236 https://conda.anaconda.org/conda-forge/linux-64/poppler-23.05.0-hd18248d_1.conda#09e0de1aa7330fe697eed76eaeef666d https://conda.anaconda.org/conda-forge/noarch/progressbar2-4.2.0-pyhd8ed1ab_0.tar.bz2#d883564cf1e9ba190f6b285036c5f949 https://conda.anaconda.org/conda-forge/noarch/pybtex-0.24.0-pyhd8ed1ab_2.tar.bz2#2099b86a7399c44c0c61cdb6de6915ba https://conda.anaconda.org/conda-forge/linux-64/pyproj-3.6.0-py311ha169711_1.conda#92633556d37e88ce45193374d408072c https://conda.anaconda.org/conda-forge/noarch/pytest-cov-4.1.0-pyhd8ed1ab_0.conda#06eb685a3a0b146347a58dda979485da -https://conda.anaconda.org/conda-forge/noarch/pytest-env-0.8.2-pyhd8ed1ab_0.conda#cd20b56ff31042aad74d45e3f47eb5b2 +https://conda.anaconda.org/conda-forge/noarch/pytest-env-1.0.1-pyhd8ed1ab_0.conda#9da651d84c73bac482cae51613a4d4d6 https://conda.anaconda.org/conda-forge/noarch/pytest-metadata-3.0.0-pyhd8ed1ab_1.conda#8bdcc0f401561213821bf67513abeeff https://conda.anaconda.org/conda-forge/noarch/pytest-mock-3.11.1-pyhd8ed1ab_0.conda#fcd2531bc3e492657aeb042349aeaf8a https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.3.1-pyhd8ed1ab_0.conda#816073bb54ef59f33f0f26c14f88311b -https://conda.anaconda.org/conda-forge/noarch/python-build-0.10.0-pyhd8ed1ab_1.conda#0ab47ce574f6a8bcb9f2076436e7fedb +https://conda.anaconda.org/conda-forge/noarch/python-build-1.0.3-pyhd8ed1ab_0.conda#d9ccabf228cb98419ca3d5694b25e1a2 https://conda.anaconda.org/conda-forge/noarch/rdflib-7.0.0-pyhd8ed1ab_0.conda#44d14ef95495b3d4438f28998e0296a9 https://conda.anaconda.org/conda-forge/noarch/requests-2.31.0-pyhd8ed1ab_0.conda#a30144e4156cdbb236f99ebb49828f8b https://conda.anaconda.org/conda-forge/noarch/requirements-detector-1.2.2-pyhd8ed1ab_0.conda#6626918380d99292df110f3c91b6e5ec https://conda.anaconda.org/conda-forge/linux-64/tiledb-2.13.2-hd532e3d_0.conda#6d97164f19dbd27575ef1899b02dc1e0 https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py311h4dd048b_3.tar.bz2#dbfea4376856bf7bd2121e719cf816e5 https://conda.anaconda.org/conda-forge/linux-64/xorg-libxaw-1.0.14-h7f98852_1.tar.bz2#45b68dc2fc7549c16044d533ceaf340e -https://conda.anaconda.org/conda-forge/noarch/zarr-2.16.0-pyhd8ed1ab_0.conda#40a116bf021c83da8b1cf226de0dabe4 +https://conda.anaconda.org/conda-forge/noarch/zarr-2.16.1-pyhd8ed1ab_0.conda#59ec835edbee50266b7bdbadab7ba335 https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.8.5-py311h459d7ec_0.conda#82a817c46ac339c0166f043f56492f33 https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.20.3-he9c0e7f_4.conda#7695770e1d722ce9029a2ea30c060a3d -https://conda.anaconda.org/conda-forge/noarch/bokeh-3.2.1-pyhd8ed1ab_0.conda#1f6a50747c4e69d181f3a2ca739d1fe3 +https://conda.anaconda.org/conda-forge/noarch/bokeh-3.2.2-pyhd8ed1ab_0.conda#30488151f591379db656250b3f5fc0c6 https://conda.anaconda.org/conda-forge/linux-64/cartopy-0.22.0-py311h320fe9a_0.conda#1271b2375735e2aaa6d6770dbe2ad087 https://conda.anaconda.org/conda-forge/noarch/cdsapi-0.6.1-pyhd8ed1ab_0.conda#454ed214cec806066097ae245a409171 https://conda.anaconda.org/conda-forge/noarch/chart-studio-1.1.0-pyh9f0ad1d_0.tar.bz2#acd9a12a35e5a0221bdf39eb6e4811dc https://conda.anaconda.org/conda-forge/noarch/cmocean-3.0.3-pyhd8ed1ab_0.conda#eec7df83d725696d32c7bf99aff21d82 -https://conda.anaconda.org/conda-forge/noarch/dask-core-2023.8.0-pyhd8ed1ab_0.conda#160a92928fc4a0ca40a64b586a2cf671 +https://conda.anaconda.org/conda-forge/noarch/dask-core-2023.9.1-pyhd8ed1ab_0.conda#e420da4262d61ab10156219edbabb54b https://conda.anaconda.org/conda-forge/noarch/flake8-polyfill-1.0.2-py_0.tar.bz2#a53db35e3d07f0af2eccd59c2a00bffe -https://conda.anaconda.org/conda-forge/noarch/identify-2.5.26-pyhd8ed1ab_0.conda#1ca86f154e13f4aa20b48e20d6bbf924 +https://conda.anaconda.org/conda-forge/noarch/identify-2.5.27-pyhd8ed1ab_0.conda#6fbde8d3bdd1874132a1b26a3554b22c https://conda.anaconda.org/conda-forge/linux-64/jasper-4.0.0-h32699f2_1.conda#fdde5424ecef5f7ad310b4242229291c -https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.19.0-pyhd8ed1ab_0.conda#989d1df249e1fce06fa1435548eef68a +https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.19.0-pyhd8ed1ab_1.conda#d442886dffcee45604595fea2ad3a181 https://conda.anaconda.org/conda-forge/linux-64/julia-1.8.5-h783901f_0.conda#98c05ba7ca9c15d22216f730499e167a https://conda.anaconda.org/conda-forge/linux-64/jupyter_core-5.3.1-py311h38be061_0.conda#0cf8259b01ede82c76007996f73f89ed https://conda.anaconda.org/conda-forge/linux-64/libgdal-3.7.0-h5418a03_2.conda#30ddbe080c260fb36da8509e3fd6c45f @@ -452,36 +451,36 @@ https://conda.anaconda.org/conda-forge/noarch/pyroma-4.2-pyhd8ed1ab_0.conda#fe2a https://conda.anaconda.org/conda-forge/noarch/pytest-html-3.2.0-pyhd8ed1ab_1.tar.bz2#d5c7a941dfbceaab4b172a56d7918eb0 https://conda.anaconda.org/conda-forge/noarch/requests-cache-1.1.0-pyhd8ed1ab_0.conda#57b89064c125bb9d0e533e018c3eb17a https://conda.anaconda.org/conda-forge/linux-64/tempest-remap-2.2.0-h43474b4_0.conda#fd815765a86daf44db1e15c6f6edf5e6 -https://conda.anaconda.org/conda-forge/noarch/tifffile-2023.7.18-pyhd8ed1ab_0.conda#34c210cbc9b4c4458d4eba5ee7726fcd -https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.24.2-pyhd8ed1ab_0.conda#a218f3be8ab6185a475c8168a86e18ae -https://conda.anaconda.org/conda-forge/noarch/xarray-2023.7.0-pyhd8ed1ab_0.conda#2f18700699e1ea19aa1634ed57711677 +https://conda.anaconda.org/conda-forge/noarch/tifffile-2023.8.30-pyhd8ed1ab_0.conda#529b803c040449392bc480614f41d522 +https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.24.4-pyhd8ed1ab_0.conda#c3feaf947264a59a125e8c26e98c3c5a +https://conda.anaconda.org/conda-forge/noarch/xarray-2023.8.0-pyhd8ed1ab_0.conda#a8104cede521616573e228c27f9edc97 https://conda.anaconda.org/conda-forge/noarch/yapf-0.40.1-pyhd8ed1ab_0.conda#f269942e802d5e148632143d4c37acc9 https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.10.57-hbc2ea52_17.conda#452c7b08c21eea2ef01f4fd364d6affc https://conda.anaconda.org/conda-forge/noarch/cf_xarray-0.8.4-pyhd8ed1ab_0.conda#18472f8f9452f962fe0bcb1b8134b494 -https://conda.anaconda.org/conda-forge/noarch/distributed-2023.8.0-pyhd8ed1ab_0.conda#974b4a00b0e100e341cd9f179b05f574 +https://conda.anaconda.org/conda-forge/noarch/distributed-2023.9.1-pyhd8ed1ab_0.conda#e3841f3799c666f8705a2aa6604af294 https://conda.anaconda.org/conda-forge/linux-64/eccodes-2.30.2-h1f30a5c_0.conda#21ee8444a7f629924ea8cfe52a622cbd https://conda.anaconda.org/conda-forge/linux-64/esmf-8.4.2-nompi_h20110ff_0.conda#11f5169aeff54ad7277476be8ba19ff7 https://conda.anaconda.org/conda-forge/linux-64/gdal-3.7.0-py311h281082f_2.conda#fde4fad3c517cc80f32995696f45198d https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-h90689f9_2.tar.bz2#957a0255ab58aaf394a91725d73ab422 -https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.3.0-pyhd8ed1ab_0.conda#1d018ee4ab13217e2544f795eb0a6798 +https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.3.1-pyhd8ed1ab_0.conda#b7cc0981484fcb6390e6d341e55618b3 https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.56.3-h98fae49_0.conda#620e754f4344f4c27259ff460a2b9c50 https://conda.anaconda.org/conda-forge/noarch/mapgenerator-1.0.7-pyhd8ed1ab_0.conda#d18db96ef2a920b0ecefe30282b0aecf https://conda.anaconda.org/conda-forge/noarch/myproxyclient-2.1.0-pyhd8ed1ab_2.tar.bz2#363b0816e411feb0df925d4f224f026a https://conda.anaconda.org/conda-forge/noarch/nbformat-5.9.2-pyhd8ed1ab_0.conda#61ba076de6530d9301a0053b02f093d2 https://conda.anaconda.org/conda-forge/noarch/pep8-naming-0.10.0-pyh9f0ad1d_0.tar.bz2#b3c5536e4f9f58a4b16adb6f1e11732d -https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.3.3-pyha770c72_0.conda#dd64a0e440754ed97610b3e6b502b6b1 +https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.4.0-pyha770c72_0.conda#f0fe759dc1dc02722c15cfb5faa1172b https://conda.anaconda.org/conda-forge/linux-64/psyplot-1.4.3-py311h38be061_1.tar.bz2#f0c9a1067c03e8f05e53ef0c5ad5fab3 https://conda.anaconda.org/conda-forge/noarch/pylint-plugin-utils-0.7-pyhd8ed1ab_0.tar.bz2#1657976383aee04dbb3ae3bdf654bb58 https://conda.anaconda.org/conda-forge/linux-64/python-stratify-0.3.0-py311h1f0f07a_0.conda#3a00b1b08d8c01b1a3bfa686b9152df2 https://conda.anaconda.org/conda-forge/linux-64/r-base-4.1.3-hfabd6f2_9.conda#0ab4cf54fbddc0cc9ff260c6f77f8c84 https://conda.anaconda.org/conda-forge/linux-64/rasterio-1.3.8-py311h41e4db2_0.conda#b35deb26af1d7e0d98438c8ac5c6b7b2 -https://conda.anaconda.org/conda-forge/linux-64/scipy-1.11.1-py311h64a7726_0.conda#356da36102fc1eeb8a81e6d79e53bc7e +https://conda.anaconda.org/conda-forge/linux-64/scipy-1.11.2-py311h64a7726_0.conda#18d094fb8e4ac52f93a4f4857a8f1e8f https://conda.anaconda.org/conda-forge/noarch/dask-jobqueue-0.8.2-pyhd8ed1ab_0.conda#cc344a296a41369bcb05f7216661cec8 https://conda.anaconda.org/conda-forge/noarch/esgf-pyclient-0.3.1-pyh1a96a4e_2.tar.bz2#64068564a9c2932bf30e9b4ec567927d -https://conda.anaconda.org/conda-forge/noarch/esmpy-8.4.2-pyhc1e730c_1.conda#4067029ad6872d49f6d43c05dd1f51a9 +https://conda.anaconda.org/conda-forge/noarch/esmpy-8.4.2-pyhc1e730c_4.conda#ddcf387719b2e44df0cc4dd467643951 https://conda.anaconda.org/conda-forge/linux-64/fiona-1.9.4-py311hbac4ec9_0.conda#1d3445f5f7fa002a1c149c405376f012 https://conda.anaconda.org/conda-forge/linux-64/graphviz-8.1.0-h28d9a01_0.conda#33628e0e3de7afd2c8172f76439894cb -https://conda.anaconda.org/conda-forge/noarch/iris-3.6.1-pyha770c72_0.conda#36d615b339058273520990fc78239116 +https://conda.anaconda.org/conda-forge/noarch/iris-3.7.0-pyha770c72_0.conda#dccc1f660bf455c239adaabf56b91dc9 https://conda.anaconda.org/conda-forge/linux-64/libarrow-12.0.1-h657c46f_7_cpu.conda#4de6e12428b7018f1f8a1e8dda555243 https://conda.anaconda.org/conda-forge/linux-64/magics-4.14.2-hd3d5bb6_0.conda#3c571b994b6ce2b4d2c7b98be77a8ebe https://conda.anaconda.org/conda-forge/noarch/nbclient-0.8.0-pyhd8ed1ab_0.conda#e78da91cf428faaf05701ce8cc8f2f9b @@ -489,7 +488,7 @@ https://conda.anaconda.org/conda-forge/linux-64/ncl-6.6.2-hf70af60_47.conda#ee27 https://conda.anaconda.org/conda-forge/linux-64/nco-5.1.6-hd62b316_0.conda#af7780f76ee37325d264327e21a478f5 https://conda.anaconda.org/conda-forge/noarch/patsy-0.5.3-pyhd8ed1ab_0.tar.bz2#50ef6b29b1fb0768ca82c5aeb4fb2d96 https://conda.anaconda.org/conda-forge/linux-64/psy-simple-1.4.1-py311h38be061_2.tar.bz2#4c9101d329f6bc09c2617a80e3eb9c89 -https://conda.anaconda.org/conda-forge/noarch/py-cordex-0.6.2-pyhd8ed1ab_0.conda#457fae5edf0703054b78f6bfb200e855 +https://conda.anaconda.org/conda-forge/noarch/py-cordex-0.6.3-pyhd8ed1ab_0.conda#de9f9392273a1e6095930a21561a37e9 https://conda.anaconda.org/conda-forge/noarch/pylint-celery-0.3-py_1.tar.bz2#e29456a611a62d3f26105a2f9c68f759 https://conda.anaconda.org/conda-forge/noarch/pylint-django-2.5.3-pyhd8ed1ab_0.tar.bz2#00d8853fb1f87195722ea6a582cc9b56 https://conda.anaconda.org/conda-forge/noarch/pylint-flask-0.6-py_0.tar.bz2#5a9afd3d0a61b08d59eed70fab859c1b @@ -563,10 +562,10 @@ https://conda.anaconda.org/conda-forge/noarch/sparse-0.14.0-pyhd8ed1ab_0.conda#e https://conda.anaconda.org/conda-forge/linux-64/cdo-2.2.0-he026af2_4.conda#6c00b0a21b3de8a149eee137e83465d3 https://conda.anaconda.org/conda-forge/linux-64/imagemagick-7.1.1_15-pl5321hf48ede7_0.conda#53c9f7169b61e615d5f41c8d70a72c00 https://conda.anaconda.org/conda-forge/noarch/lime-0.2.0.1-pyhd8ed1ab_1.tar.bz2#789ce01416721a5533fb74aa4361fd13 -https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.7.3-pyhd8ed1ab_0.conda#063c1fda5480050b8d989478c97a4c55 +https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.8.0-pyhd8ed1ab_0.conda#62345c9e24f898bf492979be84a6eb0a https://conda.anaconda.org/conda-forge/noarch/prospector-1.10.2-pyhd8ed1ab_0.conda#2c536985982f7e531df8d640f554008a https://conda.anaconda.org/conda-forge/noarch/psy-maps-1.4.2-pyhd8ed1ab_0.tar.bz2#3ed13103dfd46f71dc870d188bd0b276 -https://conda.anaconda.org/conda-forge/linux-64/py-xgboost-1.7.6-cuda112py311h2344cce_0.conda#262d5d7254fd6e10e63170c4eb8d6ac0 +https://conda.anaconda.org/conda-forge/linux-64/py-xgboost-1.7.6-cuda112py311h2344cce_2.conda#cca8982f2b80ffe50124d5cdbbcfdda8 https://conda.anaconda.org/conda-forge/linux-64/pyarrow-12.0.1-py311h39c9aba_7_cpu.conda#d513ab8d10ec5f3ee45b419c836195ec https://conda.anaconda.org/conda-forge/linux-64/pydot-1.4.2-py311h38be061_3.tar.bz2#64a77de29fde80aef5013ddf5e62a564 https://conda.anaconda.org/conda-forge/linux-64/r-askpass-1.1-r41h06615bd_3.tar.bz2#c8ec8683302ad9a2345cb31ab28e6c6b @@ -596,9 +595,9 @@ https://conda.anaconda.org/conda-forge/linux-64/r-timechange-0.2.0-r41h38f115c_0 https://conda.anaconda.org/conda-forge/linux-64/r-xml2-1.3.4-r41h1ad5fc0_1.conda#82c1446591783493d65273a158e8ce28 https://conda.anaconda.org/conda-forge/linux-64/r-zoo-1.8_12-r41h133d619_0.conda#1d432d2eba171727afd03507faa5e2f6 https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.14.0-py311h1f0f07a_1.conda#a1daa39fa0bfed4d91a3640c2274034a -https://conda.anaconda.org/conda-forge/noarch/xesmf-0.7.1-pyhd8ed1ab_0.conda#3a9cc63d7bcbc8d738a0e92faf8b6c07 -https://conda.anaconda.org/conda-forge/noarch/dask-2023.8.0-pyhd8ed1ab_0.conda#0cd5f8a91edc681f4b87e8a0ce33a591 -https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.7.3-pyhd8ed1ab_0.conda#f44109e52a40b8149156f5ddd9c11b26 +https://conda.anaconda.org/conda-forge/noarch/xesmf-0.8.1-pyhd8ed1ab_0.conda#8c2810704a9bac2743402b1ca22ec312 +https://conda.anaconda.org/conda-forge/noarch/dask-2023.9.1-pyhd8ed1ab_0.conda#7192f8f126e50d6d0274fbbf4e73e9cf +https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.8.0-pyhd8ed1ab_0.conda#1dba1a577df2625a24667612a069e91c https://conda.anaconda.org/conda-forge/noarch/prov-2.0.0-pyhd3deb0d_0.tar.bz2#aa9b3ad140f6c0668c646f32e20ccf82 https://conda.anaconda.org/conda-forge/linux-64/psy-reg-1.4.0-py311h38be061_3.conda#6f7871722c07922028043144e8873b37 https://conda.anaconda.org/conda-forge/noarch/python-cdo-1.6.0-pyhd8ed1ab_0.conda#3fd1a0b063c1fbbe4b7bd5a5a7601e84 @@ -620,9 +619,9 @@ https://conda.anaconda.org/conda-forge/linux-64/r-specsverification-0.5_3-r41ha5 https://conda.anaconda.org/conda-forge/linux-64/r-splancs-2.01_43-r41h8da6f51_1.tar.bz2#3a6aad0706541141d10e3b514467a080 https://conda.anaconda.org/conda-forge/linux-64/r-vctrs-0.6.2-r41ha503ecb_0.conda#1f7610a1863648cab254a9f85bd29dcd https://conda.anaconda.org/conda-forge/noarch/seaborn-0.12.2-hd8ed1ab_0.conda#50847a47c07812f88581081c620f5160 -https://conda.anaconda.org/conda-forge/linux-64/xgboost-1.7.6-cuda112py311h2344cce_0.conda#bfa2be4c1df9bf875896b40b1735e6c2 -https://conda.anaconda.org/conda-forge/noarch/iris-esmf-regrid-0.7.0-pyhd8ed1ab_0.conda#de82eb8d09362babacafe6b7e27752ac -https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.7.3-pyhd8ed1ab_0.conda#f53d92ecd7d8563b006107f6a33e55c6 +https://conda.anaconda.org/conda-forge/linux-64/xgboost-1.7.6-cuda112py311h2344cce_2.conda#97cd4e1589b8ea11e0f78d2f0c7cc217 +https://conda.anaconda.org/conda-forge/noarch/iris-esmf-regrid-0.8.0-pyhd8ed1ab_0.conda#56e85460d22fa7d4fb06300f785dd1e1 +https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.8.0-pyhd8ed1ab_0.conda#43bce95e8c474dd21d7ed5de8b4806f7 https://conda.anaconda.org/conda-forge/noarch/r-cyclocomp-1.1.0-r41hc72bb7e_1005.tar.bz2#800e1da5bf774be48934b8865dd78d33 https://conda.anaconda.org/conda-forge/noarch/r-gridextra-2.3-r41hc72bb7e_1004.tar.bz2#71ebed7e976df735ff3443bb88bd154f https://conda.anaconda.org/conda-forge/noarch/r-httr-1.4.6-r41hc72bb7e_0.conda#53dbb769c96782db54bf2d414fc9b239 @@ -648,11 +647,11 @@ https://conda.anaconda.org/conda-forge/linux-64/r-geomap-2.5_0-r41h06615bd_1.tar https://conda.anaconda.org/conda-forge/noarch/r-lintr-3.0.2-r41hc72bb7e_0.tar.bz2#769c2305486b74fd61d85bfef2296f27 https://conda.anaconda.org/conda-forge/noarch/r-s2dverification-2.10.3-r41hc72bb7e_1.tar.bz2#2253f130c8dab435824d6ddb10a41c73 https://conda.anaconda.org/conda-forge/noarch/autodocsumm-0.2.6-pyhd8ed1ab_0.tar.bz2#4409dd7e06a62c3b2aa9e96782c49c6d -https://conda.anaconda.org/conda-forge/noarch/nbsphinx-0.9.2-pyhd8ed1ab_0.conda#d1212b423fdd10d2da59601385561ff7 +https://conda.anaconda.org/conda-forge/noarch/nbsphinx-0.9.3-pyhd8ed1ab_0.conda#0dbaa7d08d3d79b2a1a4dd6a02cc4581 https://conda.anaconda.org/conda-forge/noarch/pydata-sphinx-theme-0.13.3-pyhd8ed1ab_0.conda#07aca5f2dea315dcc16680d6891e9056 -https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-1.0.6-pyhd8ed1ab_0.conda#5bba7b5823474cb3fcd4e4cbf942da61 -https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-1.0.4-pyhd8ed1ab_0.conda#73dcd0eb2252cbd1530fd1e6e3cbbb03 -https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.0.3-pyhd8ed1ab_0.conda#fb4d6329a57e20e03d7aecd18c7ca918 -https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.5-pyhd8ed1ab_0.conda#85466265b76473cc1d02420056cbc4e3 -https://conda.anaconda.org/conda-forge/noarch/sphinx-7.1.2-pyhd8ed1ab_0.conda#d02bfa35cd4f2cd624289f64911cae9d -https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.7-pyhd8ed1ab_0.conda#01e35beea8aff61cdb445b90a7adf7d4 +https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-1.0.7-pyhd8ed1ab_0.conda#aebfabcb60c33a89c1f9290cab49bc93 +https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-1.0.5-pyhd8ed1ab_0.conda#ebf08f5184d8eaa486697bc060031953 +https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.0.4-pyhd8ed1ab_0.conda#a9a89000dfd19656ad004b937eeb6828 +https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.6-pyhd8ed1ab_0.conda#cf5c9649272c677a964a7313279e3a9b +https://conda.anaconda.org/conda-forge/noarch/sphinx-7.2.5-pyhd8ed1ab_0.conda#bc7881d37168b6731affdd89a2433c64 +https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.9-pyhd8ed1ab_0.conda#0612e497d7860728f2cda421ea2aec09 From dcc6fe468503a7fdcf306f5eea5254842684cb2a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 26 Sep 2023 16:12:00 +0100 Subject: [PATCH 7/8] [Condalock] Update Linux condalock file (#3359) Co-authored-by: valeriupredoi --- conda-linux-64.lock | 202 ++++++++++++++++++++++---------------------- 1 file changed, 101 insertions(+), 101 deletions(-) diff --git a/conda-linux-64.lock b/conda-linux-64.lock index 20df33b8a2..128ace6209 100644 --- a/conda-linux-64.lock +++ b/conda-linux-64.lock @@ -13,35 +13,32 @@ https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77 https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-hab24e00_0.tar.bz2#19410c3df09dfb12d1206132a1d357c5 https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-2.6.32-he073ed8_16.conda#7ca122655873935e02c91279c5b03c8c https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-h41732ed_0.conda#7aca3059a1729aa76c597603f10b0dd3 -https://conda.anaconda.org/conda-forge/linux-64/libgcc-devel_linux-64-13.2.0-ha9c7c90_0.conda#9a5cb396c9f40a5310ed88ed6ac9d632 -https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-13.2.0-ha4646dd_0.conda#aa3ee989b0eba634e47197adbaa84fdd -https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-devel_linux-64-13.2.0-ha9c7c90_0.conda#65f1916f317ff8169e0d25b00b3dde72 -https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-13.2.0-h7e041cc_0.conda#47d33bfb38632133412c20d1dee8eeae +https://conda.anaconda.org/conda-forge/linux-64/libgcc-devel_linux-64-13.2.0-ha9c7c90_2.conda#401c5cf212e568dab47e0677a000d2a7 +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-devel_linux-64-13.2.0-ha9c7c90_2.conda#a0bf59008336aa76ad2a097a652c60bd +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-13.2.0-h7e041cc_2.conda#9172c297304f2a20134fc56c97fbe229 https://conda.anaconda.org/conda-forge/noarch/poppler-data-0.4.12-hd8ed1ab_0.conda#d8d7293c5b37f39b2ac32940621c6592 -https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-3_cp311.conda#c2e2630ddb68cf52eec74dc7dfab20b5 +https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-4_cp311.conda#d786502c97404c94d7d58d258a445a65 https://conda.anaconda.org/conda-forge/noarch/tzdata-2023c-h71feb2d_0.conda#939e3e74d8be4dac89ce83b20de2492a https://conda.anaconda.org/conda-forge/linux-64/xorg-imake-1.0.7-0.tar.bz2#23acfc5a339a6a34cc2241f64e4111be https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2#f766549260d6815b0c52253f1fb1bb29 -https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-13.2.0-h69a702a_0.conda#bdaebefa4f6c436741187c8a304681a5 -https://conda.anaconda.org/conda-forge/linux-64/libgomp-13.2.0-h807b86a_0.conda#33c2353e425610c69ad58a8e29694724 +https://conda.anaconda.org/conda-forge/linux-64/libgomp-13.2.0-h807b86a_2.conda#e2042154faafe61969556f28bade94b9 https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.12-he073ed8_16.conda#071ea8dceff4d30ac511f4a2f8437cd1 https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2#73aaf86a425cc6e73fcf236a5a46396d https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.40-hf600244_0.conda#33084421a8c0af6aef1b439707f7662a https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2#fee5683a3f04bd15cbd8318b096a27ab -https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-13.2.0-h807b86a_0.conda#3934dca6107fad668d036a4cafca1015 +https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-13.2.0-h807b86a_2.conda#c28003b0be0494f9a7664389146716ff https://conda.anaconda.org/conda-forge/linux-64/aom-3.5.0-h27087fc_0.tar.bz2#a08150fd2298460cd1fcccf626305642 https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.8.23-hd590300_0.conda#cc4f06f7eedb1523f3b83fd0fb3942ff https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h7f98852_4.tar.bz2#a1fd65c7ccbf10880423d82bca54eb54 https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.19.1-hd590300_0.conda#e8c18d865be43e2fb3f7a145b6adf1f5 https://conda.anaconda.org/conda-forge/linux-64/charls-2.4.2-h59595ed_0.conda#4336bd67920dd504cd8c6761d6a99645 https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda#418c6ca5929a611cbd69204907a83995 -https://conda.anaconda.org/conda-forge/linux-64/fftw-3.3.10-nompi_hc118613_108.conda#6fa90698000b05dfe8ce6515794fe71a https://conda.anaconda.org/conda-forge/linux-64/freexl-1.0.6-h166bdaf_1.tar.bz2#897e772a157faf3330d72dd291486f62 https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2#ac7bc6a654f8f41b352b38f4051135f8 https://conda.anaconda.org/conda-forge/linux-64/geos-3.11.2-hcb278e6_0.conda#3b8e364995e3575e57960d29c1e5ab14 https://conda.anaconda.org/conda-forge/linux-64/gettext-0.21.1-h27087fc_0.tar.bz2#14947d8770185e5153fdd04d4673ed37 https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-he1b5a44_1004.tar.bz2#cddaf2c63ea4a5901cf09524c490ecdc -https://conda.anaconda.org/conda-forge/linux-64/ghostscript-9.56.1-h59595ed_0.conda#0ecb8c9d30157cee294f9ae2546d6789 +https://conda.anaconda.org/conda-forge/linux-64/ghostscript-10.02.0-h59595ed_0.conda#8ab9369b573e62ddf9456f1fe4dfc39d https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.1-h0b41bf4_3.conda#96f3b11872ef6fad973eac856cd2624f https://conda.anaconda.org/conda-forge/linux-64/gmp-6.2.1-h58526e2_0.tar.bz2#b94cf2db16066b242ebd26db2facbd56 https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h58526e2_1001.tar.bz2#8c54672728e8ec6aa6db90cf2806d220 @@ -59,13 +56,12 @@ https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.18-h0b41bf4_0.conda https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-h516909a_1.tar.bz2#6f8720dff19e17ce5d48cfe7f3d2f0a3 https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.5.0-hcb278e6_1.conda#6305a3dd2752c76335295da4e581f2fd https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2#d645c6d2ac96843a2bfaccd2d62b3ac3 +https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-13.2.0-ha4646dd_2.conda#78fdab09d9138851dde2b5fe2a11019e https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-h166bdaf_0.tar.bz2#b62b52da46c39ee2bc3c162ac7f1804d -https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-2.1.5.1-h0b41bf4_0.conda#1edd9e67bdb90d78cea97733ff6b54e6 +https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-2.1.5.1-hd590300_1.conda#323e90742f0f48fc22bea908735f55e6 https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.0-h7f98852_0.tar.bz2#39b1328babf85c7c3a61636d9cd50206 https://conda.anaconda.org/conda-forge/linux-64/libnuma-2.0.16-h0b41bf4_1.conda#28bfe2cb11357ccc5be21101a6b7ce86 -https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.24-pthreads_h413a1c8_0.conda#6e4ef6ca28655124dcde9bd500e44c32 -https://conda.anaconda.org/conda-forge/linux-64/libopenblas-ilp64-0.3.24-pthreads_h384dd9e_0.conda#a7b84e5b923e139d37e63097bd8a747e -https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-13.2.0-h7e041cc_0.conda#2e88fe2dc9fd682f9c133d21e40518a1 +https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-13.2.0-h7e041cc_2.conda#aa27066e2dcef56db7bc674f2230b6c9 https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.18-h36c2ea0_1.tar.bz2#c3788462a6fbddafdb413a9f9053e58d https://conda.anaconda.org/conda-forge/linux-64/libtool-2.4.7-h27087fc_0.conda#f204c8ba400ec475452737094fb81d52 https://conda.anaconda.org/conda-forge/linux-64/libunwind-1.6.2-h9c3ff4c_0.tar.bz2#a730b2badd586580c5752cc73842e068 @@ -83,7 +79,7 @@ https://conda.anaconda.org/conda-forge/linux-64/nccl-2.18.5.1-h6103f9b_1.conda#4 https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.4-hcb278e6_0.conda#681105bccc2a3f7f1a837d47d39c9179 https://conda.anaconda.org/conda-forge/linux-64/nspr-4.35-h27087fc_0.conda#da0ec11a6454ae19bff5b02ed881a2b1 https://conda.anaconda.org/conda-forge/linux-64/openlibm-0.8.1-h7f98852_0.tar.bz2#ba0c56761f2380babaa783b2a37b4d08 -https://conda.anaconda.org/conda-forge/linux-64/openssl-3.1.2-hd590300_0.conda#e5ac5227582d6c83ccf247288c0eb095 +https://conda.anaconda.org/conda-forge/linux-64/openssl-3.1.3-hd590300_0.conda#7bb88ce04c8deb9f7d763ae04a1da72f https://conda.anaconda.org/conda-forge/linux-64/p7zip-16.02-h9c3ff4c_1001.tar.bz2#941066943c0cac69d5aa52189451aa5f https://conda.anaconda.org/conda-forge/linux-64/pixman-0.40.0-h36c2ea0_0.tar.bz2#660e72c82f2e75a6b3fe6a6e75c79f19 https://conda.anaconda.org/conda-forge/linux-64/pkg-config-0.29.2-h36c2ea0_1008.tar.bz2#fbef41ff6a4c8140c30057466a1cdd47 @@ -112,15 +108,15 @@ https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.2.17-h862ab7 https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.1.11-h862ab75_1.conda#6fbc9bd49434eb36d3a59c5020f4af95 https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.1.16-h862ab75_1.conda#f883d61afbc95c50f7b3f62546da4235 https://conda.anaconda.org/conda-forge/linux-64/expat-2.5.0-hcb278e6_1.conda#8b9b5aca60558d02ddaa09d599e55920 -https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-13.2.0-h338b0a0_0.conda#b9948d664ec41ef7088623235ce37d79 +https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-13.2.0-h338b0a0_2.conda#b4f2ab4faf22658cca303570fd9a7662 https://conda.anaconda.org/conda-forge/linux-64/glog-0.6.0-h6f12383_0.tar.bz2#b31f3565cb84435407594e548a2fb7b2 https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h501b40f_6.conda#c3e9338e15d90106f467377017352b97 https://conda.anaconda.org/conda-forge/linux-64/libavif-0.11.1-h8182462_2.conda#41c399ed4c439e37b844c24ab5621b5a -https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-18_linux64_openblas.conda#bcddbb497582ece559465b9cd11042e7 https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.0.9-h166bdaf_9.conda#081aa22f4581c08e4372b0b6c2f8478e https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.0.9-h166bdaf_9.conda#1f0a03af852a9659ed2bf08f2f1704fd https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2#4d331e44109e3f0e19b4cb8f9b82f3e1 https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda#a1cfcc585f0c42bf8d5546bb1dfb668d +https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-13.2.0-h69a702a_2.conda#e75a75a6eaf6f318dae2631158c46575 https://conda.anaconda.org/conda-forge/linux-64/libllvm14-14.0.6-hcd5def8_4.conda#73301c133ded2bf71906aa2104edae8b https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.52.0-h61bc06f_0.conda#613955a50485812985c059e7b269f42e https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.39-h753d276_0.conda#e1c890aebdebbfbf87e2c917187b4416 @@ -131,15 +127,15 @@ https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda# https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.15-h0b41bf4_0.conda#33277193f5b92bad9fdd230eb700929c https://conda.anaconda.org/conda-forge/linux-64/libxgboost-1.7.6-cuda112h7a395e5_2.conda#3eb1d878491539ab11baf3c911316f85 https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.11.5-h0d562d8_0.conda#558ab736404275d7df61c473c1af35aa -https://conda.anaconda.org/conda-forge/linux-64/libzip-1.10.1-h2629f0a_2.conda#a83ad320127e83ae8a86b3db8dfeec77 +https://conda.anaconda.org/conda-forge/linux-64/libzip-1.10.1-h2629f0a_3.conda#ac79812548e7e8cf61f7b0abdef01d3b https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.0-hb012696_0.conda#14d87bdff2cbd3b1179a29fb316ed743 -https://conda.anaconda.org/conda-forge/linux-64/openblas-ilp64-0.3.24-pthreads_h3d04fff_0.conda#8bd1b1f2faa8c80e6bb88b3916398c68 https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.40-hc3806b6_0.tar.bz2#69e2c796349cd9b273890bee0febfe1b https://conda.anaconda.org/conda-forge/linux-64/perl-5.32.1-4_hd590300_perl5.conda#3e785bff761095eb7f8676f4694bd1b1 https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda#47d31b792659ce70f470b5c82fdfb7a4 https://conda.anaconda.org/conda-forge/linux-64/s2n-1.3.46-h06160fa_0.conda#413d96a0b655c8f8aacc36473a2dbb04 https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.12-h27826a3_0.tar.bz2#5b8c42eb62e9fc961af70bdd6a26e168 -https://conda.anaconda.org/conda-forge/linux-64/ucx-1.14.1-h64cca9d_4.conda#bbbd3de252bf44be87dc83dbf8a5b653 +https://conda.anaconda.org/conda-forge/linux-64/ucx-1.14.1-h64cca9d_5.conda#39aa3b356d10d7e5add0c540945a0944 +https://conda.anaconda.org/conda-forge/linux-64/udunits2-2.2.28-h40f5838_1.conda#85552d64cb49f12781668779efc738ec https://conda.anaconda.org/conda-forge/linux-64/xorg-fixesproto-5.0-h7f98852_1002.tar.bz2#65ad6e1eb4aed2b0611855aff05e04f6 https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-h7391055_0.conda#93ee23f12bc2e684548181256edd2cf6 https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.4-h9c3ff4c_1.tar.bz2#21743a8d2ea0c8cfbbf8fe489b0347df @@ -151,19 +147,19 @@ https://conda.anaconda.org/conda-forge/linux-64/boost-cpp-1.78.0-h6582d0a_3.cond https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.0.9-h166bdaf_9.conda#d47dee1856d9cb955b8076eeff304a5b https://conda.anaconda.org/conda-forge/linux-64/bwidget-1.9.14-ha770c72_1.tar.bz2#5746d6202ba2abad4a4707f2a2462795 https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-2.10.2-hb4ffafa_0.conda#1a88c95afde6f13403492cac91352568 -https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-hca18f0e_1.conda#e1232042de76d24539a436d37597eb06 -https://conda.anaconda.org/conda-forge/linux-64/gfortran_impl_linux-64-13.2.0-h76e1118_0.conda#763e6627086c5d4f04186a5665b22b08 -https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-13.2.0-h338b0a0_0.conda#7e1329f1b02ee8e651aaac5955b57f94 +https://conda.anaconda.org/conda-forge/linux-64/fftw-3.3.10-nompi_hc118613_108.conda#6fa90698000b05dfe8ce6515794fe71a +https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda#9ae35c3d96db2c94ce0cef86efdfa2cb +https://conda.anaconda.org/conda-forge/linux-64/gfortran_impl_linux-64-13.2.0-h76e1118_2.conda#4983e17132a8fac913475db6e7aba288 +https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-13.2.0-h338b0a0_2.conda#f595817f3270325ea833ef1d48d362ce https://conda.anaconda.org/conda-forge/linux-64/hdfeos2-2.20-hebf79cf_1003.conda#23bb57b64a629bc3b33379beece7f0d7 https://conda.anaconda.org/conda-forge/linux-64/krb5-1.20.1-h81ceb04_0.conda#89a41adce7106749573d883b2f657d78 https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.6.2-h039dbb9_1.conda#29cf970521d30d113f3425b84cb250f6 -https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-18_linux64_openblas.conda#93dd9ab275ad888ed8113953769af78c https://conda.anaconda.org/conda-forge/linux-64/libgit2-1.5.1-h1f77430_0.conda#16802fd0c80290248ea79a570bd83b95 https://conda.anaconda.org/conda-forge/linux-64/libglib-2.78.0-hebfc3b9_0.conda#e618003da3547216310088478e475945 -https://conda.anaconda.org/conda-forge/linux-64/libglu-9.0.0-hac7e632_1002.conda#4c4dce87e96b321308f81ba2c10d2897 https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.56.2-h3905398_1.conda#0b01e6ff8002994bd4ddbffcdbec7856 https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.9.2-default_h554bfaf_1009.conda#9369f407667517fe52b0e8ed6965ffeb -https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-18_linux64_openblas.conda#a1244707531e5b143c420c70573c8ec5 +https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.24-pthreads_h413a1c8_0.conda#6e4ef6ca28655124dcde9bd500e44c32 +https://conda.anaconda.org/conda-forge/linux-64/libopenblas-ilp64-0.3.24-pthreads_h384dd9e_0.conda#a7b84e5b923e139d37e63097bd8a747e https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.18.1-h8fd135c_2.conda#bbf65f7688512872f063810623b755dc https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.5.1-h8b53f26_1.conda#5b09e13d732dda1a2bc9adc711164f4d https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.37-h0054252_1.conda#f27960e8873abb5476e96ef33bdbdccd @@ -172,13 +168,11 @@ https://conda.anaconda.org/conda-forge/linux-64/orc-1.9.0-h385abfd_1.conda#2cd5a https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.1.3-h32600fe_0.conda#8287aeb8462e2d4b235eff788e75919d https://conda.anaconda.org/conda-forge/linux-64/python-3.11.5-hab00c5b_0_cpython.conda#f0288cb82594b1cbc71111d1cd3c5422 https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.43.0-h2c6b66d_0.conda#713f9eac95d051abe14c3774376854fe -https://conda.anaconda.org/conda-forge/linux-64/tktable-2.10-hb7b940f_3.tar.bz2#ea4d0879e40211fa26f38d8986db1bbe -https://conda.anaconda.org/conda-forge/linux-64/udunits2-2.2.28-hc3e0081_0.tar.bz2#d4c341e0379c31e9e781d4f204726867 +https://conda.anaconda.org/conda-forge/linux-64/tktable-2.10-h0c5db8f_3.conda#f3936dae9fc1423662ffacd0429e2cc9 https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.6-h8ee46fc_0.conda#7590b76c3d11d21caa44f3fc38ac584a https://conda.anaconda.org/conda-forge/noarch/affine-2.4.0-pyhd8ed1ab_0.conda#ae5f4ad87126c55ba3f690ef07f81d64 https://conda.anaconda.org/conda-forge/noarch/alabaster-0.7.13-pyhd8ed1ab_0.conda#06006184e203b61d3525f90de394471e https://conda.anaconda.org/conda-forge/linux-64/antlr-python-runtime-4.7.2-py311h38be061_1003.tar.bz2#0ab8f8f0cae99343907fe68cda11baea -https://conda.anaconda.org/conda-forge/linux-64/arpack-3.7.0-hdefa2d7_2.tar.bz2#8763fe86163198ef1778d1d8d22bb078 https://conda.anaconda.org/conda-forge/noarch/asciitree-0.3.3-py_2.tar.bz2#c0481c9de49f040272556e2cedf42816 https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-hd4edc92_1.tar.bz2#6c72ec3e660a51736913ef6ea68c454b https://conda.anaconda.org/conda-forge/noarch/attrs-23.1.0-pyh71513ae_1.conda#3edfead7cedd1ab4400a6c588f3e75f8 @@ -201,7 +195,7 @@ https://conda.anaconda.org/conda-forge/linux-64/cython-3.0.2-py311hb755f60_0.con https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2 https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda#5e4f3466526c52bc9af2d2353a1460bd https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.7-pyhd8ed1ab_0.conda#12d8aae6994f342618443a8f05c652a0 -https://conda.anaconda.org/conda-forge/linux-64/docutils-0.20.1-py311h38be061_0.conda#207175b7d514d42f977ec505800d6824 +https://conda.anaconda.org/conda-forge/linux-64/docutils-0.20.1-py311h38be061_1.conda#ff1b48b5b802afe76597197113b8e64d https://conda.anaconda.org/conda-forge/noarch/dodgy-0.2.1-py_0.tar.bz2#62a69d073f7446c90f417b0787122f5b https://conda.anaconda.org/conda-forge/noarch/ecmwf-api-client-1.6.3-pyhd8ed1ab_0.tar.bz2#15621abf59053e184114d3e1d4f9d01e https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2#3cf04868fee0a029769bd41f4b2fbf2d @@ -209,14 +203,13 @@ https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-1.1.0-pyhd8ed1ab_0.cond https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.1.3-pyhd8ed1ab_0.conda#e6518222753f519e911e83136d2158d9 https://conda.anaconda.org/conda-forge/noarch/execnet-2.0.2-pyhd8ed1ab_0.conda#67de0d8241e1060a479e3c37793e26f9 https://conda.anaconda.org/conda-forge/noarch/fasteners-0.17.3-pyhd8ed1ab_0.tar.bz2#348e27e78a5e39090031448c72f66d5e -https://conda.anaconda.org/conda-forge/noarch/filelock-3.12.3-pyhd8ed1ab_0.conda#3104cf0ab9fb9de393051bf92b10dbe9 +https://conda.anaconda.org/conda-forge/noarch/filelock-3.12.4-pyhd8ed1ab_0.conda#5173d4b8267a0699a43d73231e0b6596 https://conda.anaconda.org/conda-forge/noarch/findlibs-0.0.5-pyhd8ed1ab_0.conda#8f325f63020af6f7acbe2c4cb4c920db https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.2-h14ed4e7_0.conda#0f69b688f52ff6da70bccb7ff7001d1d https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.4.0-py311h459d7ec_0.conda#54bd8f0776418b17a8eccd6f10181f95 -https://conda.anaconda.org/conda-forge/noarch/fsspec-2023.9.0-pyh1a96a4e_0.conda#b4a3c7bb3f45d47e085764ff096fa259 +https://conda.anaconda.org/conda-forge/noarch/fsspec-2023.9.1-pyh1a96a4e_0.conda#d69753ff6ee3c84a6638921dd95db662 https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.10-h6b639ba_2.conda#ee8220db21db8094998005990418fe5b https://conda.anaconda.org/conda-forge/noarch/geographiclib-1.52-pyhd8ed1ab_0.tar.bz2#6880e7100ebae550a33ce26663316d85 -https://conda.anaconda.org/conda-forge/linux-64/gsl-2.7-he838d99_0.tar.bz2#fec079ba39c9cca093bf4c00001825de https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda#4d8df0b0db060d33c9a702ada998a8fe https://conda.anaconda.org/conda-forge/linux-64/humanfriendly-10.0-py311h38be061_4.tar.bz2#5c4f38a9e482f00a7bf23fe479c8ca29 https://conda.anaconda.org/conda-forge/noarch/idna-3.4-pyhd8ed1ab_0.tar.bz2#34272b248891bddccc64479f9a7fffed @@ -227,6 +220,7 @@ https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.5-py311h9547e67_0 https://conda.anaconda.org/conda-forge/linux-64/lazy-object-proxy-1.9.0-py311h2582759_0.conda#07745544b144855ed4514a4cf0aadd74 https://conda.anaconda.org/conda-forge/noarch/lazy_loader-0.3-pyhd8ed1ab_0.conda#69ea1d0fa7ab33b48c88394ad1dead65 https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.15-haa2dc70_1.conda#980d8aca0bc23ca73fa8caa3e7c84c28 +https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-18_linux64_openblas.conda#bcddbb497582ece559465b9cd11042e7 https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.1.2-h409715c_0.conda#50c873c9660ed116707ae15b663928d8 https://conda.anaconda.org/conda-forge/linux-64/libkml-1.3.0-h37653c0_1015.tar.bz2#37d3747dd24d604f63d2610910576e63 https://conda.anaconda.org/conda-forge/linux-64/libpq-15.3-hbcd7760_1.conda#8afb2a97d256ffde95b91a6283bc598c @@ -245,12 +239,12 @@ https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2 https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda#4eccaeba205f0aed9ac3a9ea58568ca3 https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyhd8ed1ab_0.conda#70959cd1db3cf77b2a27a0836cfd08a7 https://conda.anaconda.org/conda-forge/noarch/networkx-3.1-pyhd8ed1ab_0.conda#254f787d5068bc89f578bf63893ce8b4 -https://conda.anaconda.org/conda-forge/linux-64/numpy-1.24.4-py311h64a7726_0.conda#5a03d7c75dd4a9ae9a58850860eca468 +https://conda.anaconda.org/conda-forge/linux-64/openblas-ilp64-0.3.24-pthreads_h3d04fff_0.conda#8bd1b1f2faa8c80e6bb88b3916398c68 https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.0-hfec8fc6_2.conda#5ce6a42505c6e9e6151c54c3ec8d68ea https://conda.anaconda.org/conda-forge/noarch/packaging-23.1-pyhd8ed1ab_0.conda#91cda59e66e1e4afe9476f8ef98f5c30 https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2#457c2c8c08e54905d6954e79cb5b5db9 https://conda.anaconda.org/conda-forge/noarch/pathspec-0.11.2-pyhd8ed1ab_0.conda#e41debb259e68490e3ab81e46b639ab6 -https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_0.tar.bz2#89e3c7cdde7d3aaa2aee933b604dd07f +https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda#405678b942f2481cecdb3e010f4925d9 https://conda.anaconda.org/conda-forge/noarch/pluggy-1.3.0-pyhd8ed1ab_0.conda#2390bd10bed1f3fdc7a537fb5a447d8d https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.5-py311h2582759_0.conda#a90f8e278c1cd7064b2713e6b7db87e6 https://conda.anaconda.org/conda-forge/noarch/py-1.11.0-pyh6c4a22f_0.tar.bz2#b4613d7e7a493916d867842a6a148054 @@ -258,7 +252,7 @@ https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.9.1-pyhd8ed1ab_0.tar https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2#076becd9e05608f8dc72757d5f3a91ff https://conda.anaconda.org/conda-forge/noarch/pyflakes-2.5.0-pyhd8ed1ab_0.tar.bz2#1b3bef4313288ae8d35b1dfba4cd84a3 https://conda.anaconda.org/conda-forge/noarch/pygments-2.16.1-pyhd8ed1ab_0.conda#40e5cb18165466773619e5c963f00a7b -https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.0.9-pyhd8ed1ab_0.tar.bz2#e8fbc1b54b25f4b08281467bc13b70cc +https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.1-pyhd8ed1ab_0.conda#176f7d56f0cfe9008bdf1bccd7de02fb https://conda.anaconda.org/conda-forge/noarch/pyshp-2.3.1-pyhd8ed1ab_0.tar.bz2#92a889dc236a5197612bc85bee6d7174 https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2#2a7de29fb590ca14b5243c4c812c8025 https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.18.0-pyhd8ed1ab_0.conda#3be9466311564f80f8056c0851fc5bb7 @@ -267,11 +261,11 @@ https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.3.0-py311h459d7e https://conda.anaconda.org/conda-forge/noarch/pytz-2023.3.post1-pyhd8ed1ab_0.conda#c93346b446cd08c169d843ae5fc0da97 https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.1-py311h459d7ec_0.conda#30eaaf31141e785a445bf1ede6235fe3 https://conda.anaconda.org/conda-forge/linux-64/pyzmq-25.1.1-py311h75c88c4_0.conda#af6d43afe0d179ac83b7e0c16b2caaad -https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.10.2-py311h46250e7_0.conda#0068f069d641ebeb5a9d8f3422f90442 +https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.10.3-py311h46250e7_0.conda#da1b2b57ac17853cfeb4197d0595db45 https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.7-py311h2582759_1.conda#5e997292429a22ad50c11af0a2cb0f08 https://conda.anaconda.org/conda-forge/noarch/semver-3.0.1-pyhd8ed1ab_0.conda#ed90854ae56fb6edae1f13b4663b21b0 https://conda.anaconda.org/conda-forge/noarch/setoptconf-tmp-0.3.1-pyhd8ed1ab_0.tar.bz2#af3e36d4effb85b9b9f93cd1db0963df -https://conda.anaconda.org/conda-forge/noarch/setuptools-68.1.2-pyhd8ed1ab_0.conda#4fe12573bf499ff85a0a364e00cc5c53 +https://conda.anaconda.org/conda-forge/noarch/setuptools-68.2.2-pyhd8ed1ab_0.conda#fc2166155db840c634a1291a5c35a709 https://conda.anaconda.org/conda-forge/linux-64/simplejson-3.19.1-py311h2582759_0.conda#c58e325a8500b8755e95cf0622665840 https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2 https://conda.anaconda.org/conda-forge/noarch/smmap-3.0.5-pyh44b312d_0.tar.bz2#3a8dc70789709aa315325d5df06fb7e4 @@ -281,7 +275,7 @@ https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda#3 https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda#da1d979339e2714c30a8e806a33ec087 https://conda.anaconda.org/conda-forge/noarch/sqlparse-0.4.4-pyhd8ed1ab_0.conda#2e2f31b3b1c866c29636377e14f8c4c6 https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.10.0-h00ab1b0_0.conda#9c82b1b389e46b64ec685ec487043e70 -https://conda.anaconda.org/conda-forge/noarch/tblib-1.7.0-pyhd8ed1ab_0.tar.bz2#3d4afc31302aa7be471feb6be048ed76 +https://conda.anaconda.org/conda-forge/noarch/tblib-2.0.0-pyhd8ed1ab_0.conda#f5580336fe091d46f9a2ea97da044550 https://conda.anaconda.org/conda-forge/noarch/tenacity-8.2.3-pyhd8ed1ab_0.conda#1482e77f87c6a702a7e05ef22c9b197b https://conda.anaconda.org/conda-forge/noarch/termcolor-2.3.0-pyhd8ed1ab_0.conda#440d508f025b1692168caaf436504af3 https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.2.0-pyha21a80b_0.conda#978d03388b62173b8e6f79162cf52b86 @@ -290,23 +284,23 @@ https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5 https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.12.1-pyha770c72_0.conda#62f5b331c53d73e2f6c4c130b53518a0 https://conda.anaconda.org/conda-forge/noarch/toolz-0.12.0-pyhd8ed1ab_0.tar.bz2#92facfec94bc02d6ccf42e7173831a36 https://conda.anaconda.org/conda-forge/linux-64/tornado-6.3.3-py311h459d7ec_0.conda#7d9a31416c18704f55946ff7cf8da5dc -https://conda.anaconda.org/conda-forge/noarch/traitlets-5.9.0-pyhd8ed1ab_0.conda#d0b4f5c87cd35ac3fb3d47b223263a64 -https://conda.anaconda.org/conda-forge/noarch/trove-classifiers-2023.8.7-pyhd8ed1ab_0.conda#347293fe36843c704818dcec8364409a -https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.7.1-pyha770c72_0.conda#c39d6a09fe819de4951c2642629d9115 +https://conda.anaconda.org/conda-forge/noarch/traitlets-5.10.0-pyhd8ed1ab_0.conda#efd3f63a93621367d4fa6e274c511696 +https://conda.anaconda.org/conda-forge/noarch/trove-classifiers-2023.9.19-pyhd8ed1ab_0.conda#258560909111d84bdff089e0b2d50e43 +https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.8.0-pyha770c72_0.conda#5b1be40a26d10a06f6d4f1f9e19fa0c7 https://conda.anaconda.org/conda-forge/linux-64/ujson-5.7.0-py311hcafe171_0.conda#ec3960b6d13bb60aad9c67f42a801720 https://conda.anaconda.org/conda-forge/noarch/untokenize-0.1.1-py_0.tar.bz2#1447ead40f2a01733a9c8dfc32988375 -https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-py_1.tar.bz2#3563be4c5611a44210d9ba0c16113136 +https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda#daf5160ff9cde3a468556965329085b9 https://conda.anaconda.org/conda-forge/noarch/webob-1.8.7-pyhd8ed1ab_0.tar.bz2#a8192f3585f341ea66c60c189580ac67 https://conda.anaconda.org/conda-forge/noarch/wheel-0.41.2-pyhd8ed1ab_0.conda#1ccd092478b3e0ee10d7a891adbf8a4f https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.15.0-py311h2582759_0.conda#15565d8602a78c6a994e4d9fcb391920 -https://conda.anaconda.org/conda-forge/noarch/xlsxwriter-3.1.3-pyhd8ed1ab_0.conda#f45ed2f56e2b770df10cba785f935133 +https://conda.anaconda.org/conda-forge/noarch/xlsxwriter-3.1.4-pyhd8ed1ab_0.conda#d50bb904b23f6590f8c02fe24c0650ee https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.4-h0b41bf4_2.conda#82b6df12252e6f32402b96dacc656fec https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-5.0.3-h7f98852_1004.tar.bz2#e9a21aa4d5e3e5f1aed71e8cefd46b6a https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hd590300_0.conda#ed67c36f215b310412b2af935bf3e530 https://conda.anaconda.org/conda-forge/linux-64/xorg-libxt-1.3.0-hd590300_1.conda#ae92aab42726eb29d16488924f7312cb https://conda.anaconda.org/conda-forge/noarch/xyzservices-2023.7.0-pyhd8ed1ab_0.conda#aacae3c0eaba0204dc6c5497c93c7992 https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_0.conda#cf30c2c15b82aacb07f9c09e28ff2275 -https://conda.anaconda.org/conda-forge/noarch/zipp-3.16.2-pyhd8ed1ab_0.conda#2da0451b54c4563c32490cb1b7cf68a1 +https://conda.anaconda.org/conda-forge/noarch/zipp-3.17.0-pyhd8ed1ab_0.conda#2e4d6bc0b14e10f895fc6791a7d9b26a https://conda.anaconda.org/conda-forge/noarch/accessible-pygments-0.0.4-pyhd8ed1ab_0.conda#46a2e6e3dfa718ce3492018d5a110dd6 https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2#d1e1eb7e21a9e2c74279d87dafb68156 https://conda.anaconda.org/conda-forge/noarch/asgiref-3.7.2-pyhd8ed1ab_0.conda#596932155bf88bb6837141550cb721b0 @@ -321,17 +315,13 @@ https://conda.anaconda.org/conda-forge/linux-64/cairo-1.16.0-hbbf8b49_1016.conda https://conda.anaconda.org/conda-forge/noarch/cattrs-23.1.2-pyhd8ed1ab_0.conda#e554f60477143949704bf470f66a81e7 https://conda.anaconda.org/conda-forge/linux-64/cffi-1.15.1-py311h409f033_3.conda#9025d0786dbbe4bc91fd8e85502decce https://conda.anaconda.org/conda-forge/linux-64/cfitsio-4.2.0-hd9d235c_0.conda#8c57a9adbafd87f5eff842abde599cb4 -https://conda.anaconda.org/conda-forge/linux-64/cftime-1.6.2-py311h4c7f6c3_1.tar.bz2#c7e54004ffd03f8db0a58ab949f2a00b https://conda.anaconda.org/conda-forge/noarch/click-plugins-1.1.1-py_0.tar.bz2#4fd2c6b53934bd7d96d1f3fdaf99b79f https://conda.anaconda.org/conda-forge/noarch/cligj-0.7.2-pyhd8ed1ab_1.tar.bz2#a29b7c141d6b2de4bb67788a5f107734 -https://conda.anaconda.org/conda-forge/noarch/colorspacious-1.1.2-pyh24bf2e0_0.tar.bz2#b73afa0d009a51cabd3ec99c4d2ef4f3 -https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.1.0-py311h9547e67_0.conda#daf3f23397ab2265d0cdfa339f3627ba https://conda.anaconda.org/conda-forge/linux-64/coverage-7.3.1-py311h459d7ec_0.conda#d23df37f3a595e8ffca99642ab6df3eb https://conda.anaconda.org/conda-forge/linux-64/curl-8.1.2-h409715c_0.conda#9f88cfb15b7d08b25880b138f91e0eb4 https://conda.anaconda.org/conda-forge/linux-64/cytoolz-0.12.2-py311h459d7ec_0.conda#5c416db47b7816e437eaf0d46e5c3a3d https://conda.anaconda.org/conda-forge/noarch/docformatter-1.7.5-pyhd8ed1ab_0.conda#3a941b6083e945aa87e739a9b85c82e9 https://conda.anaconda.org/conda-forge/noarch/docrep-0.3.2-pyh44b312d_0.tar.bz2#235523955bc1bfb019d7ec8a2bb58f9a -https://conda.anaconda.org/conda-forge/noarch/eofs-1.4.0-py_0.tar.bz2#6e166cd37cfeadefcfca1ffe00f222bb https://conda.anaconda.org/conda-forge/noarch/fire-0.5.0-pyhd8ed1ab_0.conda#9fd22aae8d2f319e80f68b295ab91d64 https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.42.1-py311h459d7ec_0.conda#fc327c0ea015db3b6484eabb37d44e60 https://conda.anaconda.org/conda-forge/noarch/geopy-2.4.0-pyhd8ed1ab_0.conda#90faaa7eaeba3cc877074c0916efe30c @@ -345,19 +335,19 @@ https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.2-pyhd8ed1ab_1.tar.bz2# https://conda.anaconda.org/conda-forge/noarch/joblib-1.3.2-pyhd8ed1ab_0.conda#4da50d410f553db77e62ab62ffaa1abc https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.2.2-pyhd8ed1ab_0.tar.bz2#243f63592c8e449f40cd42eb5cf32f40 https://conda.anaconda.org/conda-forge/noarch/latexcodec-2.0.1-pyh9f0ad1d_0.tar.bz2#8d67904973263afd2985ba56aa2d6bb4 +https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-18_linux64_openblas.conda#93dd9ab275ad888ed8113953769af78c https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-hfa28ad5_6.conda#ef06bee47510a7f5db3c2297a51d6ce2 +https://conda.anaconda.org/conda-forge/linux-64/libglu-9.0.0-hac7e632_1003.conda#50c389a09b6b7babaef531eb7cb5e0ca https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.12.0-h840a212_1.conda#03c225a73835f5aa68c13e62eb360406 +https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-18_linux64_openblas.conda#a1244707531e5b143c420c70573c8ec5 https://conda.anaconda.org/conda-forge/noarch/logilab-common-1.7.3-py_0.tar.bz2#6eafcdf39a7eb90b6d951cfff59e8d3b -https://conda.anaconda.org/conda-forge/noarch/magics-python-1.5.8-pyhd8ed1ab_1.conda#3fd7e3db129f12362642108f23fde521 https://conda.anaconda.org/conda-forge/noarch/nested-lookup-0.2.25-pyhd8ed1ab_1.tar.bz2#2f59daeb14581d41b1e2dda0895933b2 https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.8.0-pyhd8ed1ab_0.conda#2a75b296096adabbabadd5e9782e5fcc -https://conda.anaconda.org/conda-forge/linux-64/numba-0.57.1-py311h96b013e_0.conda#618010d18c4a38073a7f51d9dd3fd8a8 -https://conda.anaconda.org/conda-forge/linux-64/numcodecs-0.11.0-py311hcafe171_1.conda#ecdaf0772e524ed51218f6d52ef74424 https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.2-py311h459d7ec_0.conda#3fd48307e8596409a2a55d516fa3ad1f -https://conda.anaconda.org/conda-forge/noarch/partd-1.4.0-pyhd8ed1ab_0.conda#721dab5803ea92ce02ddc4ee50aa0c48 +https://conda.anaconda.org/conda-forge/noarch/partd-1.4.0-pyhd8ed1ab_1.conda#6ceb4e000cbe0b56b290180aea8520e8 https://conda.anaconda.org/conda-forge/linux-64/pillow-10.0.0-py311h0b84326_0.conda#4b24acdc1fbbae9da03147e7d2cf8c8a https://conda.anaconda.org/conda-forge/noarch/pip-23.2.1-pyhd8ed1ab_0.conda#e2783aa3f9235225eec92f9081c5b801 -https://conda.anaconda.org/conda-forge/noarch/plotly-5.16.1-pyhd8ed1ab_0.conda#80a84dd5ca82e99f7a4092639aa14f8a +https://conda.anaconda.org/conda-forge/noarch/plotly-5.17.0-pyhd8ed1ab_0.conda#76a0b213abcd3ffc1e8fa78804b69dc0 https://conda.anaconda.org/conda-forge/linux-64/postgresql-15.3-hd458b1d_1.conda#4a4b5dede4d2e075e9aa5a44a9fd9f20 https://conda.anaconda.org/conda-forge/linux-64/proj-9.2.1-ha643af7_0.conda#e992387307f4403ba0ec07d009032550 https://conda.anaconda.org/conda-forge/noarch/pydocstyle-6.3.0-pyhd8ed1ab_0.conda#7e23a61a7fbaedfef6eb0e1ac775c8e5 @@ -365,19 +355,14 @@ https://conda.anaconda.org/conda-forge/noarch/pyproject_hooks-1.0.0-pyhd8ed1ab_0 https://conda.anaconda.org/conda-forge/noarch/pytest-7.4.2-pyhd8ed1ab_0.conda#6dd662ff5ac9a783e5c940ce9f3fe649 https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984 https://conda.anaconda.org/conda-forge/noarch/python-utils-3.7.0-pyhd8ed1ab_1.conda#d3e9c0f7bf300ddc51a363a8183b3abd -https://conda.anaconda.org/conda-forge/linux-64/pywavelets-1.4.1-py311hcb2cf0a_0.conda#272ca0c28df344037ba2c4982d4e4791 https://conda.anaconda.org/conda-forge/noarch/referencing-0.30.2-pyhd8ed1ab_0.conda#a33161b983172ba6ef69d5fc850650cd https://conda.anaconda.org/conda-forge/noarch/retrying-1.3.3-py_2.tar.bz2#a11f356d6f93b74b4a84e9501afd48b4 https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.17.32-py311h459d7ec_0.conda#628868dc17f9bd39a2eb77846e35980c -https://conda.anaconda.org/conda-forge/noarch/seawater-3.3.4-py_1.tar.bz2#a9e101e1601faf5e5a119ab2bd7617a4 -https://conda.anaconda.org/conda-forge/linux-64/shapely-2.0.1-py311h54d622a_1.conda#a894c65b48676c4973e9ee8b59bceb9e -https://conda.anaconda.org/conda-forge/noarch/snuggs-1.4.7-py_0.tar.bz2#cb83a3d6ecf73f50117635192414426a -https://conda.anaconda.org/conda-forge/linux-64/suitesparse-5.10.1-h9e50725_1.tar.bz2#a3a685b5f9aeb890ed874502fe56accf https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.2.1-pyhd8ed1ab_0.tar.bz2#7234c9eefff659501cd2fe0d2ede4d48 https://conda.anaconda.org/conda-forge/noarch/tqdm-4.66.1-pyhd8ed1ab_0.conda#03c97908b976498dcae97eb4e4f3149c -https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.7.1-hd8ed1ab_0.conda#f96688577f1faa58096d06a45136afa2 +https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.8.0-hd8ed1ab_0.conda#384462e63262a527bda564fa2d9126c0 https://conda.anaconda.org/conda-forge/noarch/url-normalize-1.4.3-pyhd8ed1ab_0.tar.bz2#7c4076e494f0efe76705154ac9302ba6 -https://conda.anaconda.org/conda-forge/noarch/urllib3-2.0.4-pyhd8ed1ab_0.conda#18badd8fa3648d1beb1fcc7f2e0f756e +https://conda.anaconda.org/conda-forge/noarch/urllib3-2.0.5-pyhd8ed1ab_0.conda#3bda70bbeb2920f44db5375af2e5fe38 https://conda.anaconda.org/conda-forge/linux-64/xerces-c-3.2.4-h8d71039_2.conda#6d5edbe22b07abae2ea0a9065ef6be12 https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.7.10-h7f98852_0.tar.bz2#e77615e5141cad5a2acaa043d1cf0ca5 https://conda.anaconda.org/conda-forge/linux-64/xorg-libxmu-1.1.3-h7f98852_0.tar.bz2#3cdb89236358326adfce12be820a8af3 @@ -385,33 +370,31 @@ https://conda.anaconda.org/conda-forge/linux-64/xorg-libxpm-3.5.16-hd590300_0.co https://conda.anaconda.org/conda-forge/noarch/yamale-4.0.4-pyh6c4a22f_0.tar.bz2#cc9f59f147740d88679bf1bd94dbe588 https://conda.anaconda.org/conda-forge/noarch/yamllint-1.32.0-pyhd8ed1ab_0.conda#6d2425548b0293a225ca4febd80feaa3 https://conda.anaconda.org/conda-forge/linux-64/yarl-1.9.2-py311h459d7ec_0.conda#4d738187d20e0a3be66973860f134e0a +https://conda.anaconda.org/conda-forge/linux-64/arpack-3.7.0-hdefa2d7_2.tar.bz2#8763fe86163198ef1778d1d8d22bb078 https://conda.anaconda.org/conda-forge/noarch/async-timeout-4.0.3-pyhd8ed1ab_0.conda#3ce482ec3066e6d809dbbb1d1679f215 https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.3.13-heb0bb06_2.conda#c0866da05d5e7bb3a3f6b68bcbf7537b -https://conda.anaconda.org/conda-forge/linux-64/cf-units-3.2.0-py311h1f0f07a_0.conda#43a71a823583d75308eaf3a06c8f150b -https://conda.anaconda.org/conda-forge/linux-64/cryptography-41.0.3-py311h63ff55d_0.conda#cc8ad641cab65dfe59caddbc23a1aeca +https://conda.anaconda.org/conda-forge/linux-64/cryptography-41.0.4-py311h63ff55d_0.conda#2b14cd05541532521196b0d2e0291ecf https://conda.anaconda.org/conda-forge/noarch/django-4.2.5-pyhd8ed1ab_0.conda#5af47510c844ef54896d6b3ea424b82b https://conda.anaconda.org/conda-forge/noarch/flake8-5.0.4-pyhd8ed1ab_0.tar.bz2#8079ea7dec0a917dd0cb6c257f7ea9ea https://conda.anaconda.org/conda-forge/linux-64/freeglut-3.2.2-hac7e632_2.conda#6e553df297f6e64668efb54302e0f139 https://conda.anaconda.org/conda-forge/noarch/funcargparse-0.2.5-pyhd8ed1ab_0.tar.bz2#e557b70d736251fa0bbb7c4497852a92 https://conda.anaconda.org/conda-forge/linux-64/geotiff-1.7.1-h22adcc9_11.conda#514167b60f598eaed3f7a60e1dceb9ee https://conda.anaconda.org/conda-forge/linux-64/git-2.42.0-pl5321h86e50cf_0.conda#96ad24c67e0056d171385859c43218a2 -https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.35-pyhd8ed1ab_0.conda#e434463858a6060d5424d95fbd5fa2b8 +https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.36-pyhd8ed1ab_0.conda#a7c99acc18eea3d70224dd95dadcfd31 +https://conda.anaconda.org/conda-forge/linux-64/gsl-2.7-he838d99_0.tar.bz2#fec079ba39c9cca093bf4c00001825de https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-7.3.0-hdb3a94d_0.conda#765bc76c0dfaf24ff9d8a2935b2510df https://conda.anaconda.org/conda-forge/linux-64/hdfeos5-5.1.16-h8b5b2df_13.conda#29a96d50cb53638a5b4806b5ca6e4b1d -https://conda.anaconda.org/conda-forge/linux-64/imagecodecs-2023.8.12-py311h67b54e4_0.conda#363e5c2f2c67ff69d717aba54422b03d -https://conda.anaconda.org/conda-forge/noarch/imageio-2.31.1-pyh24c5eb1_0.conda#1051cc0376612ba101d4f59e954a1ff4 https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-6.8.0-hd8ed1ab_0.conda#b279b07ce18058034e5b3606ba103a8b https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.7.1-pyhd8ed1ab_0.conda#7c27ea1bdbe520bb830dcadd59f55cbf https://conda.anaconda.org/conda-forge/linux-64/kealib-1.5.1-h3845be2_3.conda#f38e5e47f62d6633166040192ad420a1 https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.9.2-nompi_h0f3d0bb_105.conda#b5d412441b84305460e9df8a016a3392 https://conda.anaconda.org/conda-forge/linux-64/libspatialite-5.0.1-hca56755_27.conda#918a735059cab21b96fc13a8d04fbcd8 -https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.7.2-py311h54ef318_0.conda#2631a9e423855fb586c05f8a5ee8b177 -https://conda.anaconda.org/conda-forge/linux-64/pandas-2.1.0-py311h320fe9a_0.conda#7f35501e126df510b250ad893482ef45 +https://conda.anaconda.org/conda-forge/linux-64/numpy-1.24.4-py311h64a7726_0.conda#5a03d7c75dd4a9ae9a58850860eca468 https://conda.anaconda.org/conda-forge/noarch/platformdirs-3.10.0-pyhd8ed1ab_0.conda#0809187ef9b89a3d94a5c24d13936236 https://conda.anaconda.org/conda-forge/linux-64/poppler-23.05.0-hd18248d_1.conda#09e0de1aa7330fe697eed76eaeef666d https://conda.anaconda.org/conda-forge/noarch/progressbar2-4.2.0-pyhd8ed1ab_0.tar.bz2#d883564cf1e9ba190f6b285036c5f949 https://conda.anaconda.org/conda-forge/noarch/pybtex-0.24.0-pyhd8ed1ab_2.tar.bz2#2099b86a7399c44c0c61cdb6de6915ba -https://conda.anaconda.org/conda-forge/linux-64/pyproj-3.6.0-py311ha169711_1.conda#92633556d37e88ce45193374d408072c +https://conda.anaconda.org/conda-forge/linux-64/pyproj-3.6.1-py311ha169711_0.conda#ad4b6e9be79a89959bb6d7d308027ff2 https://conda.anaconda.org/conda-forge/noarch/pytest-cov-4.1.0-pyhd8ed1ab_0.conda#06eb685a3a0b146347a58dda979485da https://conda.anaconda.org/conda-forge/noarch/pytest-env-1.0.1-pyhd8ed1ab_0.conda#9da651d84c73bac482cae51613a4d4d6 https://conda.anaconda.org/conda-forge/noarch/pytest-metadata-3.0.0-pyhd8ed1ab_1.conda#8bdcc0f401561213821bf67513abeeff @@ -421,74 +404,90 @@ https://conda.anaconda.org/conda-forge/noarch/python-build-1.0.3-pyhd8ed1ab_0.co https://conda.anaconda.org/conda-forge/noarch/rdflib-7.0.0-pyhd8ed1ab_0.conda#44d14ef95495b3d4438f28998e0296a9 https://conda.anaconda.org/conda-forge/noarch/requests-2.31.0-pyhd8ed1ab_0.conda#a30144e4156cdbb236f99ebb49828f8b https://conda.anaconda.org/conda-forge/noarch/requirements-detector-1.2.2-pyhd8ed1ab_0.conda#6626918380d99292df110f3c91b6e5ec +https://conda.anaconda.org/conda-forge/linux-64/suitesparse-5.10.1-h9e50725_1.tar.bz2#a3a685b5f9aeb890ed874502fe56accf https://conda.anaconda.org/conda-forge/linux-64/tiledb-2.13.2-hd532e3d_0.conda#6d97164f19dbd27575ef1899b02dc1e0 https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py311h4dd048b_3.tar.bz2#dbfea4376856bf7bd2121e719cf816e5 https://conda.anaconda.org/conda-forge/linux-64/xorg-libxaw-1.0.14-h7f98852_1.tar.bz2#45b68dc2fc7549c16044d533ceaf340e -https://conda.anaconda.org/conda-forge/noarch/zarr-2.16.1-pyhd8ed1ab_0.conda#59ec835edbee50266b7bdbadab7ba335 https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.8.5-py311h459d7ec_0.conda#82a817c46ac339c0166f043f56492f33 https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.20.3-he9c0e7f_4.conda#7695770e1d722ce9029a2ea30c060a3d -https://conda.anaconda.org/conda-forge/noarch/bokeh-3.2.2-pyhd8ed1ab_0.conda#30488151f591379db656250b3f5fc0c6 -https://conda.anaconda.org/conda-forge/linux-64/cartopy-0.22.0-py311h320fe9a_0.conda#1271b2375735e2aaa6d6770dbe2ad087 https://conda.anaconda.org/conda-forge/noarch/cdsapi-0.6.1-pyhd8ed1ab_0.conda#454ed214cec806066097ae245a409171 +https://conda.anaconda.org/conda-forge/linux-64/cftime-1.6.2-py311h4c7f6c3_1.tar.bz2#c7e54004ffd03f8db0a58ab949f2a00b https://conda.anaconda.org/conda-forge/noarch/chart-studio-1.1.0-pyh9f0ad1d_0.tar.bz2#acd9a12a35e5a0221bdf39eb6e4811dc -https://conda.anaconda.org/conda-forge/noarch/cmocean-3.0.3-pyhd8ed1ab_0.conda#eec7df83d725696d32c7bf99aff21d82 -https://conda.anaconda.org/conda-forge/noarch/dask-core-2023.9.1-pyhd8ed1ab_0.conda#e420da4262d61ab10156219edbabb54b +https://conda.anaconda.org/conda-forge/noarch/colorspacious-1.1.2-pyh24bf2e0_0.tar.bz2#b73afa0d009a51cabd3ec99c4d2ef4f3 +https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.1.1-py311h9547e67_0.conda#db5b3b0093d0d4565e5c89578108402e +https://conda.anaconda.org/conda-forge/noarch/dask-core-2023.9.2-pyhd8ed1ab_0.conda#cce7eeb7eda0124af186a5e9ce9b0fca +https://conda.anaconda.org/conda-forge/noarch/eofs-1.4.0-py_0.tar.bz2#6e166cd37cfeadefcfca1ffe00f222bb https://conda.anaconda.org/conda-forge/noarch/flake8-polyfill-1.0.2-py_0.tar.bz2#a53db35e3d07f0af2eccd59c2a00bffe -https://conda.anaconda.org/conda-forge/noarch/identify-2.5.27-pyhd8ed1ab_0.conda#6fbde8d3bdd1874132a1b26a3554b22c +https://conda.anaconda.org/conda-forge/noarch/identify-2.5.29-pyhd8ed1ab_0.conda#5bdbb1cb692649720b60f261b41760cd +https://conda.anaconda.org/conda-forge/linux-64/imagecodecs-2023.8.12-py311h67b54e4_0.conda#363e5c2f2c67ff69d717aba54422b03d +https://conda.anaconda.org/conda-forge/noarch/imageio-2.31.1-pyh24c5eb1_0.conda#1051cc0376612ba101d4f59e954a1ff4 https://conda.anaconda.org/conda-forge/linux-64/jasper-4.0.0-h32699f2_1.conda#fdde5424ecef5f7ad310b4242229291c -https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.19.0-pyhd8ed1ab_1.conda#d442886dffcee45604595fea2ad3a181 +https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.19.1-pyhd8ed1ab_0.conda#78aff5d2af74e6537c1ca73017f01f4f https://conda.anaconda.org/conda-forge/linux-64/julia-1.8.5-h783901f_0.conda#98c05ba7ca9c15d22216f730499e167a https://conda.anaconda.org/conda-forge/linux-64/jupyter_core-5.3.1-py311h38be061_0.conda#0cf8259b01ede82c76007996f73f89ed https://conda.anaconda.org/conda-forge/linux-64/libgdal-3.7.0-h5418a03_2.conda#30ddbe080c260fb36da8509e3fd6c45f -https://conda.anaconda.org/conda-forge/noarch/nc-time-axis-1.4.1-pyhd8ed1ab_0.tar.bz2#281b58948bf60a2582de9e548bcc5369 +https://conda.anaconda.org/conda-forge/noarch/magics-python-1.5.8-pyhd8ed1ab_1.conda#3fd7e3db129f12362642108f23fde521 https://conda.anaconda.org/conda-forge/linux-64/netcdf-fortran-4.6.1-nompi_h4f3791c_100.conda#405c5b3ad4ef53eb0d93043b54206dd7 -https://conda.anaconda.org/conda-forge/linux-64/netcdf4-1.6.4-nompi_py311h4d7c953_100.conda#c03492d0342e512e58aa2d6c5fdaaa91 +https://conda.anaconda.org/conda-forge/linux-64/numba-0.57.1-py311h96b013e_0.conda#618010d18c4a38073a7f51d9dd3fd8a8 +https://conda.anaconda.org/conda-forge/linux-64/numcodecs-0.11.0-py311hcafe171_1.conda#ecdaf0772e524ed51218f6d52ef74424 +https://conda.anaconda.org/conda-forge/linux-64/pandas-2.1.1-py311h320fe9a_0.conda#1692362ba82f0556099f0143f7842de3 https://conda.anaconda.org/conda-forge/linux-64/pango-1.50.14-heaa33ce_1.conda#cde553e0e32389e26595db4eacf859eb https://conda.anaconda.org/conda-forge/noarch/pooch-1.7.0-pyha770c72_3.conda#5936894aade8240c867d292aa0d980c6 https://conda.anaconda.org/conda-forge/noarch/pylint-2.17.5-pyhd8ed1ab_0.conda#30dc94b05de470e3b579d73d64127656 https://conda.anaconda.org/conda-forge/noarch/pyopenssl-23.2.0-pyhd8ed1ab_1.conda#34f7d568bf59d18e3fef8c405cbece21 https://conda.anaconda.org/conda-forge/noarch/pyroma-4.2-pyhd8ed1ab_0.conda#fe2aca9a5d4cb08105aefc451ef96950 https://conda.anaconda.org/conda-forge/noarch/pytest-html-3.2.0-pyhd8ed1ab_1.tar.bz2#d5c7a941dfbceaab4b172a56d7918eb0 +https://conda.anaconda.org/conda-forge/linux-64/pywavelets-1.4.1-py311hcb2cf0a_0.conda#272ca0c28df344037ba2c4982d4e4791 https://conda.anaconda.org/conda-forge/noarch/requests-cache-1.1.0-pyhd8ed1ab_0.conda#57b89064c125bb9d0e533e018c3eb17a +https://conda.anaconda.org/conda-forge/linux-64/scipy-1.11.2-py311h64a7726_1.conda#58af16843fc4469770bdbaf45d3a19de +https://conda.anaconda.org/conda-forge/noarch/seawater-3.3.4-py_1.tar.bz2#a9e101e1601faf5e5a119ab2bd7617a4 +https://conda.anaconda.org/conda-forge/linux-64/shapely-2.0.1-py311h54d622a_1.conda#a894c65b48676c4973e9ee8b59bceb9e +https://conda.anaconda.org/conda-forge/noarch/snuggs-1.4.7-py_0.tar.bz2#cb83a3d6ecf73f50117635192414426a https://conda.anaconda.org/conda-forge/linux-64/tempest-remap-2.2.0-h43474b4_0.conda#fd815765a86daf44db1e15c6f6edf5e6 -https://conda.anaconda.org/conda-forge/noarch/tifffile-2023.8.30-pyhd8ed1ab_0.conda#529b803c040449392bc480614f41d522 https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.24.4-pyhd8ed1ab_0.conda#c3feaf947264a59a125e8c26e98c3c5a -https://conda.anaconda.org/conda-forge/noarch/xarray-2023.8.0-pyhd8ed1ab_0.conda#a8104cede521616573e228c27f9edc97 https://conda.anaconda.org/conda-forge/noarch/yapf-0.40.1-pyhd8ed1ab_0.conda#f269942e802d5e148632143d4c37acc9 https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.10.57-hbc2ea52_17.conda#452c7b08c21eea2ef01f4fd364d6affc -https://conda.anaconda.org/conda-forge/noarch/cf_xarray-0.8.4-pyhd8ed1ab_0.conda#18472f8f9452f962fe0bcb1b8134b494 -https://conda.anaconda.org/conda-forge/noarch/distributed-2023.9.1-pyhd8ed1ab_0.conda#e3841f3799c666f8705a2aa6604af294 +https://conda.anaconda.org/conda-forge/noarch/bokeh-3.2.2-pyhd8ed1ab_0.conda#30488151f591379db656250b3f5fc0c6 +https://conda.anaconda.org/conda-forge/linux-64/cf-units-3.2.0-py311h1f0f07a_0.conda#43a71a823583d75308eaf3a06c8f150b +https://conda.anaconda.org/conda-forge/noarch/distributed-2023.9.2-pyhd8ed1ab_0.conda#ddb4fd6105b4005b312625cef210ba67 https://conda.anaconda.org/conda-forge/linux-64/eccodes-2.30.2-h1f30a5c_0.conda#21ee8444a7f629924ea8cfe52a622cbd https://conda.anaconda.org/conda-forge/linux-64/esmf-8.4.2-nompi_h20110ff_0.conda#11f5169aeff54ad7277476be8ba19ff7 https://conda.anaconda.org/conda-forge/linux-64/gdal-3.7.0-py311h281082f_2.conda#fde4fad3c517cc80f32995696f45198d https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-h90689f9_2.tar.bz2#957a0255ab58aaf394a91725d73ab422 https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.3.1-pyhd8ed1ab_0.conda#b7cc0981484fcb6390e6d341e55618b3 https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.56.3-h98fae49_0.conda#620e754f4344f4c27259ff460a2b9c50 -https://conda.anaconda.org/conda-forge/noarch/mapgenerator-1.0.7-pyhd8ed1ab_0.conda#d18db96ef2a920b0ecefe30282b0aecf +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.8.0-py311h54ef318_0.conda#b67672c2f39ef2912a1814e29e42c7ca https://conda.anaconda.org/conda-forge/noarch/myproxyclient-2.1.0-pyhd8ed1ab_2.tar.bz2#363b0816e411feb0df925d4f224f026a https://conda.anaconda.org/conda-forge/noarch/nbformat-5.9.2-pyhd8ed1ab_0.conda#61ba076de6530d9301a0053b02f093d2 +https://conda.anaconda.org/conda-forge/linux-64/netcdf4-1.6.4-nompi_py311h4d7c953_100.conda#c03492d0342e512e58aa2d6c5fdaaa91 +https://conda.anaconda.org/conda-forge/noarch/patsy-0.5.3-pyhd8ed1ab_0.tar.bz2#50ef6b29b1fb0768ca82c5aeb4fb2d96 https://conda.anaconda.org/conda-forge/noarch/pep8-naming-0.10.0-pyh9f0ad1d_0.tar.bz2#b3c5536e4f9f58a4b16adb6f1e11732d -https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.4.0-pyha770c72_0.conda#f0fe759dc1dc02722c15cfb5faa1172b -https://conda.anaconda.org/conda-forge/linux-64/psyplot-1.4.3-py311h38be061_1.tar.bz2#f0c9a1067c03e8f05e53ef0c5ad5fab3 +https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.4.0-pyha770c72_1.conda#3fb5ba328a77c9fd71197a46e7f2469a https://conda.anaconda.org/conda-forge/noarch/pylint-plugin-utils-0.7-pyhd8ed1ab_0.tar.bz2#1657976383aee04dbb3ae3bdf654bb58 https://conda.anaconda.org/conda-forge/linux-64/python-stratify-0.3.0-py311h1f0f07a_0.conda#3a00b1b08d8c01b1a3bfa686b9152df2 https://conda.anaconda.org/conda-forge/linux-64/r-base-4.1.3-hfabd6f2_9.conda#0ab4cf54fbddc0cc9ff260c6f77f8c84 https://conda.anaconda.org/conda-forge/linux-64/rasterio-1.3.8-py311h41e4db2_0.conda#b35deb26af1d7e0d98438c8ac5c6b7b2 -https://conda.anaconda.org/conda-forge/linux-64/scipy-1.11.2-py311h64a7726_0.conda#18d094fb8e4ac52f93a4f4857a8f1e8f +https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.3.0-py311hc009520_0.conda#847797c4a9c0c3363ffcfe7571dedfee +https://conda.anaconda.org/conda-forge/noarch/sparse-0.14.0-pyhd8ed1ab_0.conda#ee01b310177a0612554b9d20e537fdbe +https://conda.anaconda.org/conda-forge/noarch/tifffile-2023.9.18-pyhd8ed1ab_0.conda#c24d705dfe38f0a7a5cfa51b40c3d906 +https://conda.anaconda.org/conda-forge/noarch/xarray-2023.8.0-pyhd8ed1ab_0.conda#a8104cede521616573e228c27f9edc97 +https://conda.anaconda.org/conda-forge/noarch/zarr-2.16.1-pyhd8ed1ab_0.conda#59ec835edbee50266b7bdbadab7ba335 +https://conda.anaconda.org/conda-forge/linux-64/cartopy-0.22.0-py311h320fe9a_0.conda#1271b2375735e2aaa6d6770dbe2ad087 +https://conda.anaconda.org/conda-forge/noarch/cf_xarray-0.8.4-pyhd8ed1ab_0.conda#18472f8f9452f962fe0bcb1b8134b494 +https://conda.anaconda.org/conda-forge/noarch/cmocean-3.0.3-pyhd8ed1ab_0.conda#eec7df83d725696d32c7bf99aff21d82 https://conda.anaconda.org/conda-forge/noarch/dask-jobqueue-0.8.2-pyhd8ed1ab_0.conda#cc344a296a41369bcb05f7216661cec8 https://conda.anaconda.org/conda-forge/noarch/esgf-pyclient-0.3.1-pyh1a96a4e_2.tar.bz2#64068564a9c2932bf30e9b4ec567927d https://conda.anaconda.org/conda-forge/noarch/esmpy-8.4.2-pyhc1e730c_4.conda#ddcf387719b2e44df0cc4dd467643951 https://conda.anaconda.org/conda-forge/linux-64/fiona-1.9.4-py311hbac4ec9_0.conda#1d3445f5f7fa002a1c149c405376f012 https://conda.anaconda.org/conda-forge/linux-64/graphviz-8.1.0-h28d9a01_0.conda#33628e0e3de7afd2c8172f76439894cb -https://conda.anaconda.org/conda-forge/noarch/iris-3.7.0-pyha770c72_0.conda#dccc1f660bf455c239adaabf56b91dc9 https://conda.anaconda.org/conda-forge/linux-64/libarrow-12.0.1-h657c46f_7_cpu.conda#4de6e12428b7018f1f8a1e8dda555243 https://conda.anaconda.org/conda-forge/linux-64/magics-4.14.2-hd3d5bb6_0.conda#3c571b994b6ce2b4d2c7b98be77a8ebe https://conda.anaconda.org/conda-forge/noarch/nbclient-0.8.0-pyhd8ed1ab_0.conda#e78da91cf428faaf05701ce8cc8f2f9b +https://conda.anaconda.org/conda-forge/noarch/nc-time-axis-1.4.1-pyhd8ed1ab_0.tar.bz2#281b58948bf60a2582de9e548bcc5369 https://conda.anaconda.org/conda-forge/linux-64/ncl-6.6.2-hf70af60_47.conda#ee27133164cb9f5e74681bdb8839688f https://conda.anaconda.org/conda-forge/linux-64/nco-5.1.6-hd62b316_0.conda#af7780f76ee37325d264327e21a478f5 -https://conda.anaconda.org/conda-forge/noarch/patsy-0.5.3-pyhd8ed1ab_0.tar.bz2#50ef6b29b1fb0768ca82c5aeb4fb2d96 -https://conda.anaconda.org/conda-forge/linux-64/psy-simple-1.4.1-py311h38be061_2.tar.bz2#4c9101d329f6bc09c2617a80e3eb9c89 -https://conda.anaconda.org/conda-forge/noarch/py-cordex-0.6.3-pyhd8ed1ab_0.conda#de9f9392273a1e6095930a21561a37e9 +https://conda.anaconda.org/conda-forge/linux-64/psyplot-1.4.3-py311h38be061_1.tar.bz2#f0c9a1067c03e8f05e53ef0c5ad5fab3 +https://conda.anaconda.org/conda-forge/linux-64/py-xgboost-1.7.6-cuda112py311h2344cce_2.conda#cca8982f2b80ffe50124d5cdbbcfdda8 https://conda.anaconda.org/conda-forge/noarch/pylint-celery-0.3-py_1.tar.bz2#e29456a611a62d3f26105a2f9c68f759 https://conda.anaconda.org/conda-forge/noarch/pylint-django-2.5.3-pyhd8ed1ab_0.tar.bz2#00d8853fb1f87195722ea6a582cc9b56 https://conda.anaconda.org/conda-forge/noarch/pylint-flask-0.6-py_0.tar.bz2#5a9afd3d0a61b08d59eed70fab859c1b @@ -556,16 +555,17 @@ https://conda.anaconda.org/conda-forge/linux-64/r-xfun-0.39-r41ha503ecb_0.conda# https://conda.anaconda.org/conda-forge/noarch/r-xmlparsedata-1.0.5-r41hc72bb7e_1.tar.bz2#921c0ef7104d8df0ab506f1bb81a062c https://conda.anaconda.org/conda-forge/linux-64/r-yaml-2.3.7-r41h133d619_0.conda#4af88071a607237aa73a3cbd51788a39 https://conda.anaconda.org/conda-forge/linux-64/scikit-image-0.21.0-py311hb755f60_0.conda#0a8cbf18f7e57e43b8e106630a0ca7df -https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.3.0-py311hc009520_0.conda#847797c4a9c0c3363ffcfe7571dedfee https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.12.2-pyhd8ed1ab_0.conda#cf88f3a1c11536bc3c10c14ad00ccc42 -https://conda.anaconda.org/conda-forge/noarch/sparse-0.14.0-pyhd8ed1ab_0.conda#ee01b310177a0612554b9d20e537fdbe +https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.14.0-py311h1f0f07a_1.conda#a1daa39fa0bfed4d91a3640c2274034a https://conda.anaconda.org/conda-forge/linux-64/cdo-2.2.0-he026af2_4.conda#6c00b0a21b3de8a149eee137e83465d3 https://conda.anaconda.org/conda-forge/linux-64/imagemagick-7.1.1_15-pl5321hf48ede7_0.conda#53c9f7169b61e615d5f41c8d70a72c00 +https://conda.anaconda.org/conda-forge/noarch/iris-3.7.0-pyha770c72_0.conda#dccc1f660bf455c239adaabf56b91dc9 https://conda.anaconda.org/conda-forge/noarch/lime-0.2.0.1-pyhd8ed1ab_1.tar.bz2#789ce01416721a5533fb74aa4361fd13 +https://conda.anaconda.org/conda-forge/noarch/mapgenerator-1.0.7-pyhd8ed1ab_0.conda#d18db96ef2a920b0ecefe30282b0aecf https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.8.0-pyhd8ed1ab_0.conda#62345c9e24f898bf492979be84a6eb0a https://conda.anaconda.org/conda-forge/noarch/prospector-1.10.2-pyhd8ed1ab_0.conda#2c536985982f7e531df8d640f554008a -https://conda.anaconda.org/conda-forge/noarch/psy-maps-1.4.2-pyhd8ed1ab_0.tar.bz2#3ed13103dfd46f71dc870d188bd0b276 -https://conda.anaconda.org/conda-forge/linux-64/py-xgboost-1.7.6-cuda112py311h2344cce_2.conda#cca8982f2b80ffe50124d5cdbbcfdda8 +https://conda.anaconda.org/conda-forge/linux-64/psy-simple-1.4.1-py311h38be061_2.tar.bz2#4c9101d329f6bc09c2617a80e3eb9c89 +https://conda.anaconda.org/conda-forge/noarch/py-cordex-0.6.3-pyhd8ed1ab_0.conda#de9f9392273a1e6095930a21561a37e9 https://conda.anaconda.org/conda-forge/linux-64/pyarrow-12.0.1-py311h39c9aba_7_cpu.conda#d513ab8d10ec5f3ee45b419c836195ec https://conda.anaconda.org/conda-forge/linux-64/pydot-1.4.2-py311h38be061_3.tar.bz2#64a77de29fde80aef5013ddf5e62a564 https://conda.anaconda.org/conda-forge/linux-64/r-askpass-1.1-r41h06615bd_3.tar.bz2#c8ec8683302ad9a2345cb31ab28e6c6b @@ -594,11 +594,13 @@ https://conda.anaconda.org/conda-forge/linux-64/r-spam-2.9_1-r41hb20cf53_1.conda https://conda.anaconda.org/conda-forge/linux-64/r-timechange-0.2.0-r41h38f115c_0.conda#04a4229419d779a1e27395d70d493571 https://conda.anaconda.org/conda-forge/linux-64/r-xml2-1.3.4-r41h1ad5fc0_1.conda#82c1446591783493d65273a158e8ce28 https://conda.anaconda.org/conda-forge/linux-64/r-zoo-1.8_12-r41h133d619_0.conda#1d432d2eba171727afd03507faa5e2f6 -https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.14.0-py311h1f0f07a_1.conda#a1daa39fa0bfed4d91a3640c2274034a -https://conda.anaconda.org/conda-forge/noarch/xesmf-0.8.1-pyhd8ed1ab_0.conda#8c2810704a9bac2743402b1ca22ec312 -https://conda.anaconda.org/conda-forge/noarch/dask-2023.9.1-pyhd8ed1ab_0.conda#7192f8f126e50d6d0274fbbf4e73e9cf +https://conda.anaconda.org/conda-forge/noarch/seaborn-0.12.2-hd8ed1ab_0.conda#50847a47c07812f88581081c620f5160 +https://conda.anaconda.org/conda-forge/noarch/xesmf-0.8.2-pyhd8ed1ab_0.conda#8e765a0eca0ce1cfa889cd9af82a23a8 +https://conda.anaconda.org/conda-forge/linux-64/xgboost-1.7.6-cuda112py311h2344cce_2.conda#97cd4e1589b8ea11e0f78d2f0c7cc217 +https://conda.anaconda.org/conda-forge/noarch/dask-2023.9.2-pyhd8ed1ab_0.conda#29e33df59c9eac1a599b9cd18d54b4d3 https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.8.0-pyhd8ed1ab_0.conda#1dba1a577df2625a24667612a069e91c https://conda.anaconda.org/conda-forge/noarch/prov-2.0.0-pyhd3deb0d_0.tar.bz2#aa9b3ad140f6c0668c646f32e20ccf82 +https://conda.anaconda.org/conda-forge/noarch/psy-maps-1.4.2-pyhd8ed1ab_0.tar.bz2#3ed13103dfd46f71dc870d188bd0b276 https://conda.anaconda.org/conda-forge/linux-64/psy-reg-1.4.0-py311h38be061_3.conda#6f7871722c07922028043144e8873b37 https://conda.anaconda.org/conda-forge/noarch/python-cdo-1.6.0-pyhd8ed1ab_0.conda#3fd1a0b063c1fbbe4b7bd5a5a7601e84 https://conda.anaconda.org/conda-forge/linux-64/r-akima-0.6_2.3-r41h92ddd45_0.tar.bz2#bac0b7627ef744c98f4bc48885f52e72 @@ -618,8 +620,6 @@ https://conda.anaconda.org/conda-forge/noarch/r-scales-1.2.1-r41hc72bb7e_1.tar.b https://conda.anaconda.org/conda-forge/linux-64/r-specsverification-0.5_3-r41ha503ecb_3.conda#2bc51f0d44b98092ba57cf2f8671b490 https://conda.anaconda.org/conda-forge/linux-64/r-splancs-2.01_43-r41h8da6f51_1.tar.bz2#3a6aad0706541141d10e3b514467a080 https://conda.anaconda.org/conda-forge/linux-64/r-vctrs-0.6.2-r41ha503ecb_0.conda#1f7610a1863648cab254a9f85bd29dcd -https://conda.anaconda.org/conda-forge/noarch/seaborn-0.12.2-hd8ed1ab_0.conda#50847a47c07812f88581081c620f5160 -https://conda.anaconda.org/conda-forge/linux-64/xgboost-1.7.6-cuda112py311h2344cce_2.conda#97cd4e1589b8ea11e0f78d2f0c7cc217 https://conda.anaconda.org/conda-forge/noarch/iris-esmf-regrid-0.8.0-pyhd8ed1ab_0.conda#56e85460d22fa7d4fb06300f785dd1e1 https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.8.0-pyhd8ed1ab_0.conda#43bce95e8c474dd21d7ed5de8b4806f7 https://conda.anaconda.org/conda-forge/noarch/r-cyclocomp-1.1.0-r41hc72bb7e_1005.tar.bz2#800e1da5bf774be48934b8865dd78d33 @@ -648,10 +648,10 @@ https://conda.anaconda.org/conda-forge/noarch/r-lintr-3.0.2-r41hc72bb7e_0.tar.bz https://conda.anaconda.org/conda-forge/noarch/r-s2dverification-2.10.3-r41hc72bb7e_1.tar.bz2#2253f130c8dab435824d6ddb10a41c73 https://conda.anaconda.org/conda-forge/noarch/autodocsumm-0.2.6-pyhd8ed1ab_0.tar.bz2#4409dd7e06a62c3b2aa9e96782c49c6d https://conda.anaconda.org/conda-forge/noarch/nbsphinx-0.9.3-pyhd8ed1ab_0.conda#0dbaa7d08d3d79b2a1a4dd6a02cc4581 -https://conda.anaconda.org/conda-forge/noarch/pydata-sphinx-theme-0.13.3-pyhd8ed1ab_0.conda#07aca5f2dea315dcc16680d6891e9056 +https://conda.anaconda.org/conda-forge/noarch/pydata-sphinx-theme-0.14.1-pyhd8ed1ab_0.conda#78153addf629c51fab775ef360012ca3 https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-1.0.7-pyhd8ed1ab_0.conda#aebfabcb60c33a89c1f9290cab49bc93 https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-1.0.5-pyhd8ed1ab_0.conda#ebf08f5184d8eaa486697bc060031953 https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.0.4-pyhd8ed1ab_0.conda#a9a89000dfd19656ad004b937eeb6828 https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.6-pyhd8ed1ab_0.conda#cf5c9649272c677a964a7313279e3a9b -https://conda.anaconda.org/conda-forge/noarch/sphinx-7.2.5-pyhd8ed1ab_0.conda#bc7881d37168b6731affdd89a2433c64 +https://conda.anaconda.org/conda-forge/noarch/sphinx-7.2.6-pyhd8ed1ab_0.conda#bbfd1120d1824d2d073bc65935f0e4c0 https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.9-pyhd8ed1ab_0.conda#0612e497d7860728f2cda421ea2aec09 From b5050ab7cff6daebd2664a4d3016a62767f23b12 Mon Sep 17 00:00:00 2001 From: Klaus Zimmermann Date: Tue, 26 Sep 2023 17:50:28 +0200 Subject: [PATCH 8/8] Ensure compatible zstandard and zstd in readthedocs builds (#3362) --- .readthedocs.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 07a53170b7..071686d373 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -14,9 +14,11 @@ build: jobs: pre_create_environment: # update mamba just in case - - mamba update --yes --quiet --name=base mamba + - mamba update --yes --quiet --name=base mamba 'zstd=1.5.2' - mamba --version + - mamba list --name=base post_create_environment: + - conda run -n ${CONDA_DEFAULT_ENV} mamba list # use conda run executable wrapper to have all env variables - conda run -n ${CONDA_DEFAULT_ENV} mamba --version - conda run -n ${CONDA_DEFAULT_ENV} pip install . --no-deps