From 2ab1209751bb221b8b15733c3f99e64372a72492 Mon Sep 17 00:00:00 2001 From: Wolfgang Maier Date: Wed, 11 Feb 2026 13:47:59 +0100 Subject: [PATCH 1/4] Add data managers tutorial --- .../dev/images/data-manager-file-layout.png | Bin 0 -> 62178 bytes topics/dev/images/loc-files-approach.png | Bin 0 -> 67555 bytes .../data-manager-architecture/tutorial.md | 363 ++++++++++++++++++ 3 files changed, 363 insertions(+) create mode 100644 topics/dev/images/data-manager-file-layout.png create mode 100644 topics/dev/images/loc-files-approach.png create mode 100644 topics/dev/tutorials/data-manager-architecture/tutorial.md diff --git a/topics/dev/images/data-manager-file-layout.png b/topics/dev/images/data-manager-file-layout.png new file mode 100644 index 0000000000000000000000000000000000000000..323461b88de15b79c35b083a57a8b57dd97bf9a3 GIT binary patch literal 62178 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 W^RcaU)}tl{AnEuZ|D^_p zg5mxH*ImWf3jm0|{e6K_xrt~1fDuqtc%tv0vy3x9b`i8HxLBkqr^VuZjO}BQG&*6I%Jd?^;8BQTYEm8o#EGN6GhpN8|N4 z&07Dzqf6X>zFrd__QXS|g7Z23WS^?+DS1*O)T7CkF~M;tw%&LA>XPOu!xkkP%8nwe z5;-V0a6;08CYU|hrFL60CI3T8(LdH`@ol9@q5r)w=_mnw3uxx`Q>uJy1k9q#O96F* zu6lqo@S*`3;6>Z-L2ED3`;U=YO`nnUj1qY8P0x)I>IpQsDMXan-5J}8SLmuc_QLbu zv3)Iye?6GO6T13_{FNrfFqL5d@aV`wL}xJnbv1?bA18S>5?wS8&0$`uq3ZQji()g~ zH(o4v=}Bhto*mzBY+x)0W#&*C)lh9uB1D1;Jxtjmt)5)olL9fJ;tRfzK+HwgX_EQ6 z!iW>EjZbmt#|*>8$hm^b&ay;y#Yw33pT_Lz14-7V$dugZL-(C8wPV;ztZ?OLYe>0 z{^5`oz=!3I4jl$cfz}9HQ=uz7I3++7^M$tL*5;EGA`aw&ZS^ik32-1>kp$?-_if&P z{*33IIW9#HUj`uofk>2+S`QzT5}?Ic(RC#~$B|DLAb~Z3VlfVgfiByQ6>2~RwD=No z1j@l#;pd`ETzvA|!U3{&h~Pm40v2fQB+%P|E7yUMLGbpVWe8ALUd?CNZHehFtNO+x zYfc@Q#yVhu`hi@iuCY)_HQOLFj1>x*vx<7x$4@VO{)VZ)LSSn87aF1q#3R^{KA4;C zsrO^>X~bnS&@I|9GLVy=+qi#T!KG3)FWs`H|2iMov4b2PD0k5lS7f704L}4+ba>Q=X$9ns`fvk!NSE-{5PG;iaEHCZ0;>XENPO>qDwGXl&1XOt zpG0c>$px)E1Kz4ZJ`0aqjoG&_ULOYgB4Qgnils`3E> z3&?JbMOCelG%DBvM-9u+&L{Yd>s0tDu*bP_@y|4Pq!may^O+TZiu7&ZV|q@EB1ix>p~A2kaIp?=66?A{|A z<`<(U-nf*aDHFW_8&;2>7s@M;`Nf0xA>rVg2mpyKAdV*{*Dm`&-W;%L60zb#v;kP4 za~W~hLNTZ%tJNH-yqJ(_MwI}%3Ft*4EWaNW3awq(n#hZE#yB^DXN?azj5i?7IB=wHuO*|L zk-^icoi@6%3?%T83qg+Dk#Q6RC;xmV{3KL)>jGQ7DXh*)9Ydv7phFu~9+54ppJl9T>K zLx|Y!ue_Wi-9#&3g*vLDK~9@8;|N0Qj08uLf$F@n9v{`(oT23AuxnDd&^(szJ9pag zaR&|0_o0R}nzj*WKq>lnhsaOwz^3w|b*~%$Ne5%13cR7Hq7u&lK_~^d<-1VM`cL*C z49FSUi#cRog^QV8>A0N^rhdBgtwrx|gTF>b*T3{<`Wo8-_zSwze;_}_2gQmu@S|>9 zg(--z585*0(t?6CUlNNnm=5j82+>%sZk(gZhrq%T7S|BR6I)k-k@1qM*1PcEhK@Y6 zXe)$(k(vYS+)b%oC+%9gY?tz_(%vpmT@Wn)hMxwu$UmU%N|tUvX^~5@%-HrSY2rT* z-D0jt{C-EP%VI;V_!ybQYQ;k|I^)wAf@oKYi;E=GI(UTrqA8xLBLf8iP7;QT9l>hN5=CEo>4R)_qCRvWG2Hh(bxMT_ae+ zoBr312lMI|`DH!*iXJFE3TN&;x@W*#ob6j8Ft8RBU$WNz)_- zN1_N)e6!e7YShdQC~g==Se-ge7l{|BT-3d3EN5J&RNrc*a7Q|vNdf| zW&w~>zX@>boLIXXniasEI4feVj*m!MwMUnKs7|xBJw{-Is!hIZv_88Ch1wdylwrYU zuVINnKqs&D=N?u1;^u2jV85Jqvv`6mP(5gkz?J))@|Fx9Ot_MKuJ9Jx0R*F20f+{b zX68B5GRff5>!+vQp&0Hxhd-iGaX??9S>cN)md_($K%=4Dl!e_fBh&-j!ewak&+@^O zpQ7Jd@P3XD*qf1^cni>G*E1*6CivtN9LAx2R7Gug0U_QwGpfL=G@pZnlF*Ns@kNk1;Q% z>Ci8=nM=Aj++O^AsEh{-(e96ZaX|}r@+ckJ@uSl2P}HK?N+(D(t>h`?s_h0OLFbmG zuNjS%xjk#_SZ`@-hI^CW^dE=T>Ml+I1nd`LKN#?=_T}yT`GL3(Ec>TeA93IZ(cMz8 zxRa%3j8VKGZkp%Zj+uCsg`oTvw7i>qxmdwd&x-v=k zB9~NxQJwc|pdDApGAsRLs2t}N)*b#LrGv8qo#SIL!Bp{uE|p@Z(XOFvKdT{*(3PPt zQ)y*bD>eK`GW9cB*pc1Z&*gD0fBl=jMWrKIN{gb?N@8l<3La;i*% zBO&ECjMysbFCRfCrkeMyAr0&MMi)Wq0o2u^TbovMxJ+;k>vim}dT#opC5TU-cF3I`ta`2?LBsH@sOA)grv&kqGc@oG&G z+Fs^$mD~FuVZ7@fL{=JU8?6>U12JD|u21XCP&z#~H{dCg|DdRf17h%9RSP`lD95x{Z0hXJ&NXcXdfu7{JYOnEHi;c&jBPyk)+MQ1g@! z9^c+=K$>U?+F@*206Go7cc8mtLh~cG@f+(e)8Vc{uKAl4+va*(>-3(^nfqR4DF!mT zWqUNOQ%NV6_-Yrs7b9V}NBMWx8*+F5>{=S!s+G1e?nd6BA3T4_yMSDp>7I4xmLEj< zSJUbYV+%|pNqiP8PtJO2KZpJ*fNmfV^nKC6X($A)&}Qy`b9Vk%#+V zth66Dez^!HsXKK^K>wI98NC4Ve{M}=^fBc1(GvINo-gR2J5!V3P|&0*1tHXoCLmNl z^l*P+c%yA%{1td8Dw2Yv@qdt+M`)7MdhyDcwVNH0H`Ya{Dk|KNAF=jnJpOnvtw-2k z(o8v#^_tq8Kji@S|;UXW{74{F28*#6q$4feV>(;XdCk z)mozmtSzbH#!A8-QxE$ln!0yBlf?;N^{Y zRhQ6e@ST)%NAKX1&VM2C{kupW42RNIVgCVemNBP1wvSn}n9sP+udaAwDLL=VP1TcK z)bKsVnm4FK`dUBDGnTK3ubD<`;yuCJO|nQD)mtME6c4`UE9K-J zbx%u}GB8UAmoh#)ExOIqtS3brd56?gw-JNe<&! zeds_ZVC4m)Q=!LS38o^>t&rZhT6|oGo`GGE5Nl5aa!=byJRfuWufIG(DQaGYRi~-T z=|67)Kq|?_8gkTVVqtpvC~vH|CU^B+!ow<@xnX90JjiJT+lA!-+m{=l9o?T*JZ%?^ z%4m@R&XTq0R=lB@XZK_-)PZGt?Z&RGKsjwkrqOm>%;$8;}|x33j71XrA;a z{OlE4d)=5i6zP22ef2xHwtSbR1`OV0-#$FCWx82othKZqB`FNS()?mH`I~^ekO*Or z(&s1X^Rjsf;R-AnSda|8?mu3V>i+p3O!}8rc;u-4{DS$<-oHb* zqVOsIZ*YGF+5fMTeFkztf6?!u_x@6d4G`2ZI{WXXE1pt-{6B@=-7b$K2Xd+Yjv?{> zJ#Lq5(&QAPQvamwX!TzYcq}vKsug1>c2~0gl2MVI`6lOmeE5Huskm0^v-&5y^G#)5!8MV9vpJIr;!49@Qw9h zjfaldD}q23kYTWg6rW0a3v|BN)A-Mv5Ap<|i*tFq|9twV4FrD!5TSkKgbt~6W30Ro z3epV?a3?| zG4ns+OVe!k+wXqKV|L*Bu-85eILn+ng7|hArW=j%TR*{_kkd9HWr|VDu<%(w^R#Cy z2oF7pc`(z-{O#v|vq4Ya%&YKSq8Uh@1rQrGz+QXI;T~zBS5&SB{-~fJv z$&=P06{6HTOI2B}Y&^%2z@U$n!KA9{p}?=iMKNXLCZ-Ef#2h$`c`m_r=?eqQh@&PI zWJX)uqq|a*mgg6n=O=)edM#dlWm(nP%@$zheisO{gqh`{Tm#D{RF+Z@a7M%%FlCZ- zv@Lsy%zG4HyIdaXnNCLcKoA|-bK?3GO(WPc*P=Xbxcs3aECM~u=UDm%t)*|^?s53S zDL7x(JiDm#cnEfzREa+16Y??7jSgmy9YCYyS;Mho4VD`hJLZFma{jTemI5ajndG9~ z^&@IRWY;(TJL}0YFkDKNTS7Pvum*U8+$EqVpliJ|+!a+I2yK(c;5HwSR;|&uAZCGY|V%!)X!tXp93Rk_jMu$nL#Q{vH-afY~T#z_gkl9 zN_26>iw>PW5dXV9OPm!hpaa3N2vvAc;JHWurvb76aRPZupbYK2r%@wwZUneT&YaLH zP!9TvDHSUQl#}ywsq&1(_7jRgkhp2Hz$@%goe`YWi=}XRM}EgVT8hYJQKJ%Q>F_A;TKWeg~}ioQl*rty^Ogq&@r~V z5JFR>wyM7ME0P|e<2x)!gs1?&O_gF8ejd?uuckXjC2L?)V_909EsADXE5`RXMDQ7QV&_3x7IOC`WPj`Sv7qm)VR9t`mnkP>t3o|XwA=w5-g0kQ~liTT?N|HfjWyk!BBosqgaC?V8I&jdbN%H z*(n?PED<~&a*B()ZWUZBH??;oX#V;R4EfsHKVo|LQICV_@Fif4Nuch#h3*=d#H_4x&4GvaGd zZR_-;|1m@R(u?Ig6NqRN&RmxnK95(#ACIxbUz@HbWb<>#rI@|Cf~W#M;1+E~3NXr^ zgG(QEY6ROGmm`mO`N~Mv2~{eJhG8iRtp&vP3^fH1<|JV`b-|qADLliK4fJzGG_;ij z)njnQomkQYAF!m2fqy8Jg?gk({ZPZu5`X-H94;(GQzy`nl8_p4ErKN=>k#bZ?D>P| zYjlv}94@>vOPsB`xG@?r_1@}9ETQ3-mc+5o&MK$4*VP|V12ES8?F2tjkVc#(^#yA} z2?&vYSzY2rdhjOJVEB<+}O`3N8@6_6iBP=bL)Np^}(8BH}j{x{9h^UluXS|*OxFs=d z-HIiGwp^Z1Ie@ChvLcK0TnPoy^zQRqnf21JS!ietI|cP3LF#p z_NQ+?30+8-nq;)7wf0nC5SnhMd|XehiFstC9k;zadP31V-Z)LMJ|uj>F9|jR9moMS z_5L&;qCQnMK4=$%cBqJoHf$e$_lmn6J}h`TVzlK)^KeFoy+A(;f4hR|{BcaaZNjak zo|g7G>v>phW-rzQO3dUk6ROxVW1=-b$Frv`^CnEH3)2D;y)}Z9Xcw~sJL;%X9 zPEEq8hQkh7Xgf@hotC9gqjKmytu1%I!kQi1xN7&0;O*hk&v&dwlwN6aDtn+655Q6t z>MkGMa>OcsWy(CudJ)-3S*t4XyU&9}N}1H_+-o2 zCiYaUfj<1|48TfWf`U%gN}ef3Om^6$)vQo>aA8ooX0+c_n= z4zBK5$hapNl-lj}kMZE~U?bx3c`|q(^@?Fi0_dK~SgYNR>t8$@XY2pO$liJT2p$iF z#*SCKYoA~SP7V(!g-o7C{^A@lB@k)U&>(CgKBiCB>R=v8iuvaI?28a^OH_akEjxbo zw(2&g5{pmAQ5}Pvo3pOUF{t+$i2&-u1M8&(l6KcTaR&p|IY?vW?XUaAZze5zBcwjU z)AGDaJpPn3^n=VULy|N{drwnrh8BL@)Yh4Hz=AeFys!?%Kf488wR(03 zeqcn+hhvJQ#Z*)(I4rT}Az17gmP#{Qn>-c_d%%D9?x5`9&k2=KwxVGh)l+SP1z0dH zd?)M9kbJO7l z;zbMUpbki8*iLniqfdEvqj3E%iQ8eki_l4mV78)N8x{IgU5d8(b(@n#d*yYpY*d^_ zu+Ac{N_Taja1@IC&#d_R#U<=I+E%D*xeXkoU_CzYzJBoV{TGeoKX<(7a^$~fRwYd= zvG$Yq*9hn6kX6#_8@z41W%jvsvH`S+lIGaTxa_3awCCBmv;_jjefxeK#RM^`s*(5* zQ7ZTXFw8oaiBc4_pj7*iHzOJqqE^^w9PzA?@)Za4F|b$j&1MnL ziU|6bqplQ`Nlxv0MQWN-#sB!SJvhlJqgXG4U{SFEFFb@ZklQH3%95+IS#}vfwB>qO zwM=aRM0aq8eV0<|g9-1;uT0wrb)eZ)lm+#9C$+rblJa)YY@bF7at9VEUF_i+I1&LazJBnq7{dyAv#M*NyHg33_GswzMSn*y4li9{^BB)T+xg zQ8}+@gHWdRmXoG$!oCm+@OO;uU6~rQB7P z9Nr8ll`l1=J+|Vg;XTn%m-VLi(O;NXQq!wRAMa4ws%cTsv0%F*>Q_IPMu$Iu(O~}W z0%vRAtc%Ur+<2;G8lZBk>pb+$aeL0N4=|wEs-@J=r;Gi`UAOV?*RgcSsW0dc-^sA; z1OHaxt@(28Ibpp!BP)rTT1jyd_;RC2p^d;NWFHHOgKvuF2dy!TL;CeIe^*S+KHzL{ zj|Az`nYrr#`BTgf9;=MY7aJp}e(ySK0qp5Y>{Pn_Y%DhWh7)2mQxRJR_-n+xSuVE- z!(DL>DKg!XVM9&zIR*z|K|>*F8hi_Erg{ea&6B=piP9$c3iu*FrJnRP=Q9Vm3^bgA z4xV!?QgBz8({P!(FmS}#=)7PMUqt$fHS9N}_!ata=;hgXhRSgzhXdW%qZU}x9iGd7Ec^q*3PvGi&fw-{&yR)k6$s##e5y`k-J1rQ-B>XD zB=i<~w2SRC5knKsi5Q)mz($ zqTC&luG-UU72d^e>LHLbq8^`*zb7MvR&<}<~Jre~sG(Yz7 zt#s8Edj{P#Ja3G;VvV<~_RvR#TbDJQR(H`_XaJ4x5BE#6V@D=egoh81+?=`D z=qe?@CuCn3dZYm_HA=nJAh)i<{N8Ho&rpa7Gh1 zcN#hZmp{TP&`eZD|ENedqC!QFOet$Qepvj&)R_BD$PRs#M`T3^!|QFV zOZw2UmD3(zTEEESiL8%#X~)TbwE)U=NM;}i`*wlzra|rG=Bmyq>_@xL_E?Rn7=EbC zA#PdwF%vW}e4)0I!G0@{-Mj_w`o0!h(#`&(N2Yo({HhSoFUDnFc+z$nkT%=%tlqNB zTVK|nx%u!B5hP(glf8L4|9#oibD7cInY*P3tp%dfTAV8`ptgVbefhWNo%0)ejmx-n z&?Mes%UJQs$M0dJO~$$2A(dbDQ%Y#PrgbVl4deG?dCD>KFvPJ~fZ%ZLqs`o$58FgK zX37IMjRW1Jni+C4=$*Mp z(;LUSW;r|)hh`ctT~&C_vB>p&57js6M2O8Sr132i3yaP_!zYz0mnMW8 z_Bv2jZj~M85*ApiT@0ztvjWcOiZ4Wg(Zu7 zRZ-hl4xp*X@3^8b#5zwbMRc=SXE9=mFLHS`x*l72l4}W@K6Uz)W6*A$iOPb4%~XW& z<9xCZx6DJ@Fnfs}hI^h-;qpaz%ZW$kJDzj8m{Hpgc2G5|7thJAX2i0SXPAohbj)ff zYfeImwB>SRH@m6CZwUgpYtph$>RYC|-Cs}%1SWVgXu$0J7pB;NHk7s9X7=}l%X3&Lc_g1tS| z^3AE>x}8g>*fLVfXdOYZKSOP`9%Z<*>Mg70;hafwN+q(Hxq3^3NN6ahVZY5wwB>?u zE?{_2so?oVggSc2B{SuPc%d9;c+NugSZEuZR@mzTAN;an}ryv7KfSnAIms~~uP zg$)yb)0r}K8j%?nOTfctpp6PubdY*7kKeydS+7LKXY=E6Llp^U*vhFtZfumKNICeqvt!XYW&HAh|9Ze_=VS&MeJ#^qIxpN6w znkfCkCib;fxy}WBMSZY@iZi-v)wQ%T*;LYnq$>|fq^lzi2!=q^XSIbIehV_wwGd|B zC!p%!ArEkeu-Sgxs93@YH63#KH0IJ(q>NTGjG{Zk68M6Y)qL;#8Whhh=_R|E2XgJE*iQ(z)P0o!;n&c%PR155u zB$M`0i)?%(?!8DEa>p6wrc#jTVCI7(Jm#AOM=8MmFyS=`cjF=S-zb*cqx6D?7e;us z+v?+I#uejcX=6!=_~4)Sx*Se&1iVP}<9Wsci%;d(I+Nd$58zB=zl8z{i+&hRz#~d#{hkW6K07K^xA9PrlM8w0nIC|(?vH&2)ANSyQATR z5QMQua{dAQJf#tKyu`agmA%Ty&9U z^=2j7lJK(x@^^mk{n)m5v7M&wWC1zHE4$K9wvPvJ$Sq= zDjaRrV0mfd1$5Z5$oS}sHrShhHCeE!#Cj#eiRY}Ex^s}=)L7p5wImk2A1ue1iDQJv zIZ~3RO^_m!T;olxnhodEAPGB5IX4n$h$w0mEYZ5gH_LK<`HsC%eQ1RH{{iH3G zZ5nm``HN@w6>wcI*eSp0c=N{^q>F+g%LIa-)RuC?emBZ{Ty_2$=17yYXkPW+Rm4$R zFha@rab|H(z#Qg4gqe>w3G}aKfi*rj6R*HSx?axz9J$ zx^8AS6&hcnB*2btG#kJ9^F>$HPS%P5v%Fbifd)UMi|xUcS%3armhxp3tRlyADxr=1 zV-n0ndB`O#GqLj zjR7WUk3B5p><=Lo5l@PlkMQGJa#JdMs}vr~ya`}`^m|wCDO}dv|1^Eok?PRor7064 zFd*kt==oJakjfzABA0QdKV?x(UD>AK#8qXq=fK+#Va`Q7I9ll@J7sii&=R&)YqQR@ zzSCQ!?c=bZIr%GvJ2#@0=RzG*$fZFmGj|=u4YJA@UO`s`p)lQ-bGbD0D3&5UIu0o= zJ)o1{dX+PE5|HP-l!v_qiR+0rDq-&R4tRYRGiiE7zHU8HZg%99u6p|nZS%;Eu_eEVa#)?1LE_Dyb#@kZ-9>;Yv*h|XAcsYB4)?G{3Na5Bn--&HczDSR)%0nf?@EG-Y7EOhY3z_K?XwnMN6s={}C2rkR3SOS8xD<=A?r6Xg9ElI$n-)=Psf9i0 z!ki|?RS@jVxqhlcokPz7OvIFMQmbjdb!~C-faLd^D*4`XlT_m`bC+E;`@BCX=-&G` zW@kn_Z7|7;5qgoq#tU|^4b>Q%efYs{Cdtx|M|59X9|;A? z_py!`(j2~L+wI`0=|nW-Xz4S|VaoeaO^2wmi=kZa_)Y0jL1Q#0AvwHpnd~gQ@h^|P zMymGeNN9G`3wI2iMqZ_?!YMEL23|%()u|PH{|1rzM~B~jp%!bQ{oU=28<)}|cpn)3 zf^1G$l-l;6)GTJ+6}S7mU7n0v!?R3mb#m|x7e+Gx3#1g{E~R)L7miv3P6Zp@1o-nC z(4S(Aa)>(?WO%q0AdYHMKN%UO?y7$}?5x&HUDqFwZ0AW7z4adY+oNTtsYBa*dZ=5G zGmJfI)|a#QM>SiI@IZ3Qc2$PTt>c+;uV#AMRKR$rKR7`=hvZ&}x$(2+gGU%~!K0_A zT+Wu!85?$4l{{s-(_?nz|LT^h9yeUsg12oeL}#WEXhsg&MQbVKbwyfiNSDUgkzDMR zCvy>0+&*_se@=Tn@V@>lFE&K(SkTe@7M~*d=Zqaf0Q;|em{7>sXis{Q ztTV(T=bCd}C*^;w==e1r?0>q?>`|oJ(x2u&_0xBF(p%8o`*y$CxAjNivntv5w6L`K zv>oZ@GPbqweB^6LbSd`h@ugqNy@&KowU#}%v#)-%n~yixkDP0`^?RrhAZo$N+Zq=| zgSia$jw+&)Qq;zKo#Io(Fg;bGD*0A!?;I!2|1^VAnQwJrDe9kkq+q9{k!(JSm|rqNYp%-pJ}ez-?&m7Ji^jugpw}PnDdBEz^97F zLHqzZYgoD@LE_|aQDBL!&7|#ULm!_A^bxohy9UkGTpDS6gBO1R&73CzM^lkZS*?p` zD+0J(d&~ilHX%bubVcq0Df~+C8!li<=G@I(xDEkcaVrImmbl%m~0jGm;~_vf^)Fb-Iu5lEMhnLn_t!tPb@;`jY>uS!f!kcL>p z#rp8OWICa%VPt8F6hp}yR5&oNvf>k$Nhs7HB%;$5i#l{Evj3+mNtlZPLHgh3zkGYJJ6n1FfEBXSw3#6q*Qll@xek@Ujb6bxS2wZR${JN(|-R8m{FE-;297t)dzE<`9-#09vYbMH-fzNQKvbASM1 zK}E~xmXFO?-7&1}>?RGX!kRj}ie7_VLNAnPq_gYxxa-Pz}YrkVx zVb*}6=GVwEKM$PS;E`mJ$4ipur}K)AO**Ej!A972-wlm`WPre+RU2eh7oi4NGoU0DuaV2qNJ-`%B!xoy)dMxz>{gU}G$&!h-bajV*e=aGHv zMC0C}63-Y~71|irI|k2!bftn)zl`WDj7gVt);C{)_u1N@sJ$l{HdCi`X+Lk+ZY4RF z0xoaUoR;)l*#>nJ84L=RQrUHgDH**-?NcW{PzQXN7w>>IryxvR@<# zbyH}YZrf7u;9mA%;_fCy{>yrck$tN-znJ(!6V?L@ji z-#&h0JIGPzoY?s+)v?=R>*(_hvC2|yI8s1nLLAnw{6`q?^tmQ;fM2mhqM_D_ibWN% zV>5NxO~e&;70)zNKr`0_k5B9zmfyV^`B}XLLJ~{}Z)&%9OclYie2Z!W_vmCI887G& zyx#xnFwD`*IRp2yzsTrb0({T=kMR*db=3#)5W|5+N5{yU^;>GF-}EVQ zk>`Qhuto9KeAE>`HT*{DuzTee0)AWRagmBDvZjkU^p6_wu>&Zv*QtG(nO=^M z>)#kgjH;jbPb(cGnQF2@~ zhUn#%pvVZ{&1_>z_+hEVi?PEVLbxViVbm&1ozhK?_vkPjRT%B|2pS@s;YOz+P-|rI z3iR=9^CuU4D-1-S@rR`ca8iH`{hSh-v_+$YcHcm^h~B5Js9$;s!EgL<#si%LnkV-w zQi5kD6zXK5(^55k430+)mPu0T8BpJ_Wg zLkhnEx-my}vwYJXMuPxoQE`nPFIvI+9(-=zHFIO|h8T9;(@JnG^8>p;aa@c$ z?-Gc|I7rMKnzD7v*c!ZT7bAyPfyGAt4BxZ8^DY;n6*`~;5H}k6Q_1Gzr?6z|*mF3Q z53Nu-- zGI8*^Bygl9W7**cvS8Juy)BMr34$r=Y=;+luh8A&FEb-Ri#5%U*^D~EM4|bh#d43( zkP;CjQjl72vV#g|B?#C}O|JzGKh=DEyY&^nQg7Loy9{k%XA0C=(tai82=*h0H2o>$ z!pU3u-2Dy%y4y5$6&Ax?10#KhddkU5?}5Pb zhnm;NgSv*=+nHKv9*IBkj>LW}D~udqLbdfRcF7^~Y5v5|TYt5`!dii}iA>b#q#dA( zoQoUKJ?D>dt++Bj9`4p>Iq?JR5!z*pc{KXBMh=#9A_G@J#^X!R{^S&ek5U2jV_l^t zQ-Y};LO|G9S6`rZzSF_6Hc$k*1`4cG_UlAOf7iD9P8IkHLi>T8TA~v#K-=!S{j(A` zuDW8g3edZXS0VT-WT~I`fm*`VR)vV!;VfFSTKA5Wt*c|pJtsH39)D-g=}z@yZt3P+KH$29yyDlLy(_=juRisYA^c7NS6vT1 zGdQVopc;^k0=4qub<|!CF`e3*I(popTd}w0*KTJ|@=a+X)NV7AnP1GCaJK%ae?Ga>|Fx}r`|5ok_$zRYWiM*T=0qrB~HXqNb=DVfQj|CR@4g;^Zsd)aD#)BW3dm8`P^E~FpgMB+mjuc3t zXX73@VSRX+keOQ)q@8R=C+`NE$((x%o6yHi5NcRfeZ^Q|CMHBv-75QDe~hi_lk_(v zTOuv*?|C|iZ_*b6%m=@!$|U3BU^gi9Kii!>F1B&?F2)Mf z))W&l`vz_+!f1)+P)D9(q?(tA>9@GHv}0@7T#ZRg1)? z1)LkB!Qwz>E|4~3$l=Z-%BgO|ObXq(~K&wJGh(gVvWeDdt^m%OUalRvhK z%hZ62WQ_4aQgY6(#XrIr3Cd;nMSz+QFFdR3GVanccb23>abvNDc6VicMO?8tPQLnZm!=dF~Y;kPCtjTKJ%( zs=hI=XU2;q!J+nZTgucmKqmyU#(efx`1`9G1P8z)(9o+?Cvtkl#Bt=p!)Ga!t$An< zSSs%e@GPsQ;yOdt8fDh`c(vq{is8Gq!iMNKD90-4(X(5}CJXd52=TB)Y9ckO>FST0`@JwTg#~J#@xGT(M^Q1Yo*r%}TO`{+P z%3Y)-f;1W=AT;KCqaw0T1FNg5B~bZ|VdI;WI@=qUbzfst&fnowKMZkQDZ{^Y5Uzz` zcm^MYPfx>ZGbcg#>s#f8kGMHmj(LRvcS3}0c)o$~&q|%d&L6IAlP{Q_y;cl+c4p=j z6A&fRFb7B`NgKQN8tPK+uNbBuaeXZg$&D?^EGPef6~OM`TX&j&3d1{AfZ1ox-H@Px z;AxOk^PdS3m}5TAfVCl)2)u9P8&~$OcQky~)vBXmDx<#)*}714k?XR&c`uv+Ib-y1 zW`9b$jDYeQSF97zqBA5H54kN5_$4l?nc%q=lfPY|^Cga)oqMsGyI#(qF7K&$Vwt(c zcF0o}9jo1t=JxnY)|{8grisz(&;7#PouEM?gt(V0kncD+KSoXYipg4SO?ql}LZvUp z`dl;%SkAMjZJU<|pTyddYPu{GpKBJOLKtt$)o*O&UdqH}FHKH=bl0gE^+cqUp@P%~ zc=OKtQB!-_nMt(eif9wFbR-9RlmT}dS#}r2`R`lhRKM$M^*S^>?CKB#I;pzYRW`$N zg;VO-F2K-Qh^R<@D95Z;*Q8L^oCfR}K&w?>CagJ4(5yf};s%BK~lm0fjO%rs4clkXc3HL|}=PDdLZ zt+doo-z9hz=e~bILY=0qn?_e8ESC1`on8dfTn4Haklnji_IFoF4-%UEF)rSopuP|)2$3**;a}$~Q!vQh`en8JZ)Ib<9wKSw;iz5547Qjm(iU0neq^1gk zm+X$jt}H;@kPEjEjn0STQZxrz=cvtgRm`Z7n6c=ESiH28uhgS0Mm@%2qiB`KQb=97 zmtjZ3Y~S_8bmly{#7?o-O2Vhm;GZ~czGi8>)O%U!5*`fBW~y^ARUJ(6(6sxFUJ%y0 zl^0>=%J@2P`kASyh1wreLwz^4a^h>_^#{5RZ760(eCqoyjB_^A?gGBuJ5P&x2YU$q zkc;hc_6zxcIxx}mkU|78v{XY$d6aubN-h}u)Riv3UUXaNeiQeij+EJ&4)_3HZDA^SFolXldobzo6i<#xp^#GXCG?qUiI_ByYMcq{(7mK zIoYiI=3tm`#uS_S#tFB@zHumJ3Y!8kXrjP8~rS!my7Tsc&w%k@fy`27Xtideguh6i3$22ZUxzW@yLIurj zeu_Mjm1{4x3dVfj>4(~y5z)@c-*WeSle;=dwdH0$eLeMf;?=@}omY~Y0>d51=YTay#ZngI zPsxARQ#-mG4Uc9L&2oyIDcWvClqzm3S9|37$53{=0o9^%A9yeSwD! zC=Hsh`FYM042f$PeYDKI5v(M_^p<^1*ZrlTjHR}t2Wt0$7U4`QsO3CtiVJF1q(#

Q}<8rRvoSW%y3H3=3=5RG1nY8 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

AK*?pRHL1H}Sn6&)taFt%NHdYA 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 literal 0 HcmV?d00001 diff --git a/topics/dev/tutorials/data-manager-architecture/tutorial.md b/topics/dev/tutorials/data-manager-architecture/tutorial.md new file mode 100644 index 00000000000000..c429134bdcc7c5 --- /dev/null +++ b/topics/dev/tutorials/data-manager-architecture/tutorial.md @@ -0,0 +1,363 @@ +--- +layout: tutorial_hands_on + +title: Understanding Galaxy Data managers +level: Introductory +subtopic: tooldev +questions: +- What are data managers and why are they needed? +- How do you write a data manager tool? +- How do you test a data manager tool? +objectives: +- Understand the idea behind and the concept of Galaxy data managers +- Understand what components are needed to write your own data manager tool +- Know how to test a data manager and be aware of the limitations of the current test framework with respect to data managers +time estimation: 1.5H +key_points: +- Data managers are tools to be run by admins of a Galaxy instance. +- They automate reference data collection and preparation and they write data table (.loc file) records. +- In addition to a regular tool wrapper xml file, data managers require several xml config files that define the interaction of the data manager with the Galaxy framework and with the data tables they are supposed to populate. +- Currently, Galaxy only allows for partial automation of data manager testing. Some manual testing is required. +contributions: + authorship: + - wm75 + +--- + +# What are data managers and why are they needed? + +Many tools run with two kinds of input data: some experimental data specific to +the tool run (like, e.g., sequencing data) and another dataset, which stays the +same across a range of different tool runs (e.g. a reference genome, or some +genome annotations that are the same across runs for the same organism). + +Forcing users to provide that second type of data for every tool run is undesireable +because: + +- some of that data is complicated to gather from public sources or needs some pre-processing +- it leads to unnecessary copies of data that would better be reused across user accounts + +One possible solution (which was actually used in the early days of Galaxy) is to have +Galaxy server admins collect and prepare commonly used data, store it on the server and +record the location in a so-called .loc file. + +Tools can then declare select parameters that are populated with the records of specific .loc files, +can access the paths stored in them and, at tool run time, retrieve the data cached on the server. + +While this is user-friendly, it shifts the burden of making cached data available to admins. +With more and more tools requiring data of very different formats, this approach becomes increasingly +unmanageable because, for each tool, an admin has to research where to obtain the data, +or how to calculate it, and whether it needs some reformatting or other pre-processing before being usable +by tools. + +![The issue of maintaining different kinds of data with the .loc files approach illustrated through three examples](../../images/loc-files-approach.png "The issue of maintaining different kinds of data with the .loc files approach") + +In principle, admins could automate some of this work through scripts, but it would be nice to not have each admin reinvent the wheel. + +## The idea of data managers + +Just like admin-installed data found via .loc files frees the *user* from having to care about all the details of how to obtain the data, +special tools, ideally written by people who know how to obtain and set up certain types of data, should automate data collection and preparation, and the writing of .loc file records, and make life easier for *admins*. +In other words, admins become users themselves, don't have to know all the details, but just run a tool that "knows" how to install a certain type of data on the server. + +> Reference document +> +> This tutorial is an attempt to describe the different parts and functions of data managers in +> a way that is structured as logically as possible. +> +> An in-depth, technical explanation of this matter is provided at +> +> and, when in doubt, that material should be considered the reference document +> for data managers. +> +{: .comment} + +> +> +> In this tutorial, we will cover: +> +> 1. TOC +> {:toc} +> +{: .agenda} + +# Components of a data manager + +Here you see a tree view of the files that together constitute the widely used [bowtie2 data manager](https://github.com/galaxyproject/tools-iuc/tree/main/data_managers/data_manager_bowtie2_index_builder): + +![Terminal tree view of the folder structure of the bowtie2 data manager](../../images/data-manager-file-layout.png "Layout of a typical data manager folder"){:max-width="70%"} + +Lets look at these components one-by-one: + +1. There's a `data_manager` subfolder with the actual Data Manager **Tool** defined through a familiar tool xml file. + + This is what the admin is interacting with when installing new data (bowtie2 indices in this case). + +2. In the root folder of the data manager, there is a **Data Manager Configuration** file. + + This file is always named `data_manager_conf.xml`. It declares, which .loc files the data manager will write to, defines how the output of the Data Manager Tool is to be translated into .loc file records, and where exactly Galaxy should store the data downloaded by the Data Manager Tool. + + When talking about Data Managers, their .loc files are called Data Tables. + +3. A `.shed.yml` file that serves the same purpose (of declaring metadata for the Galaxy toolshed) as for regular tools. + + We will not discuss the contents of this file any further here. + +4. A `test-data` folder with, you may guess it, data for testing the data manager. + + We will discuss testing data managers at the end of the tutorial. + +5. A `tool-data` folder + + Here, tools can provide samples of the .loc files they are going to work with. + + In these .loc.sample files, tools can already define records that can point to data + directly *shipping* with the tool, which would then also be stored in the `tool-data` + folder (hence its name). Most tools and data managers do not ship data directly and + provide "empty" .loc.sample files that have only comment lines describing the .loc file + purpose. + + Data manager tools can both write to Data Tables and use other Data Tables as a source for populating select boxes in their tool interface, + and there will be one (possibly empty) .loc.sample file for each of them. + For example, the bowtie2 data manager lets the admin select the reference genome to build an index for + from the list of installed genomes recorded in the `all_fasta` data table, and the index it builds is useful + for both bowtie2 and tophat2 so the path to the installed index will get recorded in the corresponding two data tables. + +6. A Data table configuration file + + This file is always named `tool_data_table_conf.xml.sample` and provides the *layout* information for all Data tables the Data manager operates on and uses. + + For the bowtie2 data manager, this file has the following content: + + ``` + + + + value, dbkey, name, path + +
+ + + value, dbkey, name, path + +
+ + + value, dbkey, name, path + +
+
+ ``` + + The Data tables mentioned here are the same as the ones the `tool-data` folder has .loc.sample files for, + but here we find the metadata for these tables, i.e. their name and .loc file name (which *could*, + but probably shouldn't be different) and the identifiers for the different columns in each table. + +7. A Data table configuration test file + + This file is always named `tool_data_table_conf.xml.test`, is very similar to the `tool_data_table_conf.xml.sample`, + but exists only for testing purposes, which, again, will be discussed at the end of the tutorial. + +# How are Data managers different from regular tools? + +1. (Normally) only admins can run them through the Admin interface of Galaxy + +2. They do create an output dataset in your history, + but their **"side-effects"** are what really matters. As such side-effects + data managers will: + + - typically, download or compute some data and tell Galaxy to store it + in a special cached data folder somewhere + - always instruct Galaxy to write at least one line of tab-separated info to + at least one Data Table file + - if data was downloaded or computed, instruct Galaxy to + + - move the data to a permanent storage location for cached data + - record the path to that final data location in the newly created Data Table record + +# How does a Data Manager communicate with Galaxy? + +1. It declares itself a Data Manager: + + `` + + This has several consequences: + + 1. The tool will only appear in the Admin user interface + 2. Galaxy will expect the output of the tool to be of `format="data_manager_json"` + and its content to describe which columns should be added to new lines in which Data tables. + 3. Galaxy will expect any data downloaded or computed by the tool to live in that output's + `extra_files_path` + + For example, if the output section of the Data manager looks like this: + + ``` + + + + ``` + it should make sure that its command section deposits data to be stored + by Galaxy in `'$out_file.extra_files_path'`. + 4. The `data_manager_json` output file that the wrapper declares will exist + **before** the command section runs and will contain a mapping of the input + parameters, + [among other things](https://docs.galaxyproject.org/en/latest/dev/data_managers.html#example-json-input-to-tool). + You do not have to use the file if you don't want to, but you will have to overwrite it! + + > Minimal profile version for data managers + > + > Data managers were executed in Galaxy's main environment until release 18.09! + > + > This means: + > + > - if you want to use `requirements` in a data manager tool, you should set + > `profile="18.09"` or higher + > - if you are bumping the profile version of an existing data manager to + > beyond 18.09, you may have to add requirements to it that bring in things + > the old version happened to find in Galaxy's environment. + > + {: .comment} + +2. In its command section (or in a helper script called from there), the data manager tool + + 1. **overwrites** the already existing output file with a json of the items that should be + added to one or more Data tables. + + 2. **creates** the folder at `output.extra_files_path` and deposits any data + there that Galaxy should move then to a permanent storage location + +3. The data manager tool ships with a `data_manager_conf.xml` file, + which forms the bridge between the `data_manager_json` file that it produces + as output and the Data table files Galaxy is supposed to add lines to. + + An example config file: + + ``` + + + + + + + + + + ${database_folder} + CAT/${database_folder} + + ${GALAXY_DATA_MANAGER_DATA_PATH}/CAT/${database_folder} + abspath + + + + ${taxonomy_folder} + CAT/${taxonomy_folder} + + ${GALAXY_DATA_MANAGER_DATA_PATH}/CAT/${taxonomy_folder} + abspath + + + + + + ``` + + This file declares column names for a single Data table (`cat_database`) that + Galaxy should add lines to based on the `data_manager_json` file returned by + the `data_manager_cat` tool, and which might look like this: + + ``` + {'data_tables': { + 'cat_database': [ + { + 'database_folder': '/a_CAT_database', + 'name': '', + 'taxonomy_folder': '/a_taxonomy', + 'value': '' + } + ] + }} + ``` + + Here, each innermost dictionary corresponds to one line that Galaxy should + add to the Data table `cat_database` and the keys in it match the column names + declared in the `data_manager_conf.xml` file so Galaxy knows which dict value + it should write into which column of the Data table. + + The example tool downloads data, then extracts it into two folders, `a_CAT_database` + and `a_taxonomy` under its output's `extra_files_path` folder. The tool wants + Galaxy to record the `extra_files_path` folder name both in the value column and in the + name column of the `cat_database` Data table. + + It also wants to store the paths to the extracted `database_folder` and `taxonomy_folder` so that tools that later want to use that data can discover + it from the corresponding columns of the Data table. + + However, here's the issue: + The Data manager tool at run time knows only the `extra_files_path`, but not the + ultimate location that Galaxy will move the data to. This is where the more + complicated parts of the above `data_manager_conf.xml` file enter the scene: + + ``` + + + ${database_folder} + CAT/${database_folder} + + ${GALAXY_DATA_MANAGER_DATA_PATH}/CAT/${database_folder} + abspath + + + + ${taxonomy_folder} + CAT/${taxonomy_folder} + + ${GALAXY_DATA_MANAGER_DATA_PATH}/CAT/${taxonomy_folder} + abspath + + ``` + + The definitions of the `database_folder` column hold two types of instructions for Galaxy: + + 1. The `` element says that Galaxy should take (see the `` element) the data that lives where the `${database_folder}` item of the `data_manager_json` output says it lives and move it to a destination `CAT/${database_folder}` under the base path indicated by `${GALAXY_DATA_MANAGER_DATA_PATH}` (which itself is the configured cached data storage path of the Galaxy instance). + + 2. The first `` element says that Galaxy should not write the Data manager tool-provided value for `database_folder` directly, but instead first translate it to `${GALAXY_DATA_MANAGER_DATA_PATH}/CAT/${database_folder`. If you compare the resulting string with the `` instructions, you will see that it will now be the same as the ultimate path to the folder after Galaxy has moved it. + + The second `` element simply says that Galaxy should turn the result of the first translation into an absolute path on the system. The result is then the value that will get written into the `database_folder` column of the `cat_database` table. + + The same logic is then used again to move the `taxonomy` folder to its final destination and to obtain the value to write to the corresponding Data table column. + +# How to test data manager tools? + +Unfortunately, the only automated tests you can run on a data manager tool are the ones available for regular tools, too. + +This means that you can test assumptions about the tool's `data_manager_json` output, about the command line formed and the stdout and stderr generated, but you can **not** verify that the data manager framework detects any data in the `extra_files_path` and moves it to the intended location. + +For this reason, `planemo serve` is a very important command to use during any work on data managers! + +> Getting planemo to work on a data managers +> +> `planemo test` and `planemo serve` work just fine for data managers, +> if you keep in mind that a data manager is more than just the tool xml file. +> If you're following the standard layout of data managers with the tool xml +> file in a subfolder, you need to run planemo from the parent folder to have +> it discover all required files beyond the tool xml, but point it to the tool +> xml to test or serve like, e.g.: `planemo serve data_manager/my_dm.xml` +> +> With `planemo serve` specifically, don't be surprised if the tool doesn't show +> up in the tools panel - it's not supposed to, but it's accessible from the +> Admin interface under *"Local Data"*. +> +{: .comment} + +With a correctly written `tool_data_table_conf.xml.test` the Data manager, during testing, will read from and write to the .loc files in its `test-data` folder. +This data is persistent across planemo runs as is the actual installed data, so after testing with `planemo serve`, you can inspect the .loc file records that have been written and check the path recorded there to see if the data has been installed the way you intended. + +Before committing the test-data folder you may want to consider clearing the data tables you may have populated in it. + +## Testing data managers and their client tools in combination + +As said above, `planemo serve` and `planemo test` need to be run from the root folder of the data manager, but it's possible to point planemo to multiple xml files to test and you can use this to test both the data manager tool and a tool using its data table in one session through, e.g.: + +`planemo serve data_manager/my_dm.xml ../../tools/my_client_tool.xml` + +If you have previously served your data manager in isolation and installed some data, then, because this brings the data manager's test-data folder back into scope, that data will be immediately usable by the client tool. From 3a45766ffbad09f517c2a2b755a63d1cc25506b1 Mon Sep 17 00:00:00 2001 From: Wolfgang Maier Date: Wed, 11 Feb 2026 18:54:08 +0100 Subject: [PATCH 2/4] Fix time estimation metadata --- topics/dev/tutorials/data-manager-architecture/tutorial.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topics/dev/tutorials/data-manager-architecture/tutorial.md b/topics/dev/tutorials/data-manager-architecture/tutorial.md index c429134bdcc7c5..fafca22415c1ad 100644 --- a/topics/dev/tutorials/data-manager-architecture/tutorial.md +++ b/topics/dev/tutorials/data-manager-architecture/tutorial.md @@ -12,7 +12,7 @@ objectives: - Understand the idea behind and the concept of Galaxy data managers - Understand what components are needed to write your own data manager tool - Know how to test a data manager and be aware of the limitations of the current test framework with respect to data managers -time estimation: 1.5H +time_estimation: 1.5H key_points: - Data managers are tools to be run by admins of a Galaxy instance. - They automate reference data collection and preparation and they write data table (.loc file) records. From edc3e900e785c66c30275807ff24aa5b2e7aaabf Mon Sep 17 00:00:00 2001 From: Wolfgang Maier Date: Wed, 11 Feb 2026 18:59:08 +0100 Subject: [PATCH 3/4] ... again :-) --- topics/dev/tutorials/data-manager-architecture/tutorial.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topics/dev/tutorials/data-manager-architecture/tutorial.md b/topics/dev/tutorials/data-manager-architecture/tutorial.md index fafca22415c1ad..243ac2eb263838 100644 --- a/topics/dev/tutorials/data-manager-architecture/tutorial.md +++ b/topics/dev/tutorials/data-manager-architecture/tutorial.md @@ -12,7 +12,7 @@ objectives: - Understand the idea behind and the concept of Galaxy data managers - Understand what components are needed to write your own data manager tool - Know how to test a data manager and be aware of the limitations of the current test framework with respect to data managers -time_estimation: 1.5H +time_estimation: 2H key_points: - Data managers are tools to be run by admins of a Galaxy instance. - They automate reference data collection and preparation and they write data table (.loc file) records. From c140f192257890edf1a122c126b659b4f3888d27 Mon Sep 17 00:00:00 2001 From: Wolfgang Maier Date: Thu, 19 Mar 2026 18:18:32 +0100 Subject: [PATCH 4/4] Fix elements --- .../tutorials/data-manager-architecture/tutorial.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/topics/dev/tutorials/data-manager-architecture/tutorial.md b/topics/dev/tutorials/data-manager-architecture/tutorial.md index 243ac2eb263838..1f882f88208029 100644 --- a/topics/dev/tutorials/data-manager-architecture/tutorial.md +++ b/topics/dev/tutorials/data-manager-architecture/tutorial.md @@ -242,7 +242,7 @@ Lets look at these components one-by-one: - ${database_folder} + ${database_folder} CAT/${database_folder} ${GALAXY_DATA_MANAGER_DATA_PATH}/CAT/${database_folder} @@ -250,7 +250,7 @@ Lets look at these components one-by-one: - ${taxonomy_folder} + ${taxonomy_folder} CAT/${taxonomy_folder} ${GALAXY_DATA_MANAGER_DATA_PATH}/CAT/${taxonomy_folder} @@ -300,7 +300,7 @@ Lets look at these components one-by-one: ``` - ${database_folder} + ${database_folder} CAT/${database_folder} ${GALAXY_DATA_MANAGER_DATA_PATH}/CAT/${database_folder} @@ -308,7 +308,7 @@ Lets look at these components one-by-one: - ${taxonomy_folder} + ${taxonomy_folder} CAT/${taxonomy_folder} ${GALAXY_DATA_MANAGER_DATA_PATH}/CAT/${taxonomy_folder} @@ -318,7 +318,7 @@ Lets look at these components one-by-one: The definitions of the `database_folder` column hold two types of instructions for Galaxy: - 1. The `` element says that Galaxy should take (see the `` element) the data that lives where the `${database_folder}` item of the `data_manager_json` output says it lives and move it to a destination `CAT/${database_folder}` under the base path indicated by `${GALAXY_DATA_MANAGER_DATA_PATH}` (which itself is the configured cached data storage path of the Galaxy instance). + 1. The `` element says that Galaxy should take (see the `` element) the data that lives where the `${database_folder}` item of the `data_manager_json` output says it lives and move it to a destination `CAT/${database_folder}` under the base path indicated by `${GALAXY_DATA_MANAGER_DATA_PATH}` (which itself is the configured cached data storage path of the Galaxy instance). 2. The first `` element says that Galaxy should not write the Data manager tool-provided value for `database_folder` directly, but instead first translate it to `${GALAXY_DATA_MANAGER_DATA_PATH}/CAT/${database_folder`. If you compare the resulting string with the `` instructions, you will see that it will now be the same as the ultimate path to the folder after Galaxy has moved it.