From 5549d2e194b6c3701225c76e1e0c7f8c1338855a Mon Sep 17 00:00:00 2001 From: Joselyn Chavez Date: Tue, 29 Oct 2024 11:09:15 -0400 Subject: [PATCH] update --- .../figure-html/unnamed-chunk-61-1.png | Bin 91179 -> 90779 bytes .../figure-html/unnamed-chunk-61-1.png | Bin 91179 -> 90779 bytes docs/index.html | 3 ++- docs/search_index.json | 2 +- 4 files changed, 3 insertions(+), 2 deletions(-) diff --git a/_main_files/figure-html/unnamed-chunk-61-1.png b/_main_files/figure-html/unnamed-chunk-61-1.png index 7ab5650c8fb49f7b96cf57e9f62881e8d7a584c4..593279207b708ca54db436019dd4e3cefc8098c5 100644 GIT binary patch literal 90779 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%0D&5fSk$ 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 z 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%0D&5fSk$ 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 z z24RV0ndwMpkr{H@rCbL^T=nG2!gC=1wfB;q^7R@qJ`d2r0{gt9PGVJuq5U(?C}^+I zk42sl`A|8{-coRzIXN8KQCNQ2^29%{L15-Pl0Vt&PSpVvthQO94duH)lWqV&!4^P} zrWjO-t4(7B93BSDrUPHhYbo~-qxbp6bn}@i5n3C*c~~Id=5)78V-JtM+h*NvwNk2In;awTHucFt4?e`pTkj=|#&mWDU*iKN8@xL3z`z3Rge&h}Md-_>Rh9>r^flN); ztSEurpJaCyYHWkj}VG z(!{fQ)}a-Hl~m*2q^i`hiUUL=a0FTdH@Y3T?>K;!&6NXJN{)P-h)tn+Z>B0smwQGw zII&b*#(G$8$$Fsah@$NIcDSynQ?P5Gt|7JqaLA^i45hMjH^ClsdZ0i~T7>Mq9KL%|1hwFytsQEZz zZ{AgwdR#2&f$jK1AH-7iXW9aiNkvCCknt<0arqINFvm%AI{4p^zlbnsOLZJ}K=v0Q zb)we3mEV-^t#&p(wFknH$4kH|=qHNN{@KP#`XBoxQzE zYEkv|`sf{_=^O1UlZ$qI)2eZk-$?n48|}WCWkWPN85LT{LFuSSsZwV>SEDFXG?Fv+ zfoZs73q!eS4>Qnwu?;xm!t$lT&ZE-719RvEWY8$ol*S$bRZlFfr82D{JFU3rPPt@( zT87e>BGzCPcEaRMnd;cU)br`!R?8f{aLBF)Qg3!Wy~v|=8HhI?OFTr;PH&!}S|aJ5 zJpUBgcGxJ-1iw7Iix-G5#%7*IDh`4kZ3ofQanuu}8-&$r2qZCqw=)**zj9;#IJz92 z7gPpY7yO~0)b-1j`2$xY2?iYehNOEmzjy?|Nc@Pa;jWWa$dF_l^B%OIFeEVzKx=?D z_>Etp7~u8#tZ-O`Qb@Qi88(Jo{bu}vhr}8{bO+at8`ok9^yN94TP!SQ)q{$7psFMz zBgh5f4Df8>(CN(1N% zXeS<9Y;$qiX}4bxE$oeSDg}EsQ6S6N@SVAaH^akz zqexEo5SZ<;E7iu)0Qj$)de@|!Q4f4c(AYfn&TDZ7b?caUR2a2Ou z89x-r^S(P3%#Q+xNxpsn9CIHiIX&rp?Pv|ylc{l_(k!SE{%n~6(!xu_a2)DtkXQpU z{A@tHLd#>&hjxYvA%H&jpjrp4WquD<=}Q|h;Vj9w>4W&{GGTB_pz)OlcymK4P5?;h zpJ!Mz1hlCwY&Qp>gy!6PeL)R~UpmErp5H-m@jTIZ$W&sBDnjlZVujbRU`(sP!Yx6d zr<(&jDYmjam~R;1nJL}_y3gCdH8Hm5-mNHAW(G2Omo2~s+~2&$Yd->rk|+S)6a#^Q zy#N7h9H|CQ=w+boRJ?F6Hm-5|$!nF=VS@b zZT9QWM1uzL+_w2`tQavCDFKyW4o$2AK`oFLp4g%RS9EW&g(jA_uwUh}{uGN7X-j9( zWV!)8gFcY8&j-1A8W(1GfTnOG5Gq*nNCcoox0VP-=9w^=B6PQMGxAD(FK zk>3uxF8RZQ_u6wVzpsqn4Bu!n+1?L*JtW>ix2ON+Hlud9%3G!KIJTK+j0gMraMesS zV!MAo8qrpT=$*_%Eu%eQ=(kM_^|CVN~_&#G#6m;rgb>3vf zo)D-uD|xutKGGQ1ImUtD;O9$^0ol|uL26ySpsl56%xZZIOn>VfsG7<+f~l2`f*9iy zkac5rmaVM?njID93WnaU5)tnKF?Pd4auZ?LOhH+Ai|W7}=;o;c8IHaesZnt*(-DB? zF*H_|coLiaa_r1$E1xiylMC8+sU@H!BlNi9Jm#JHy$vV@Beh{1fSbBp2pa9&N-CBC zW+!^_pu5j)d&vR>VR_AL72g5tl{`BOnuD8e$chhbW^Oz@&RITU;Lxjq05y!K)(N)6x`_PcqveD~N ztR$}cKB}bFwc(0ewwdy!2*My!)3SV+Dwl+=@<@FVd;tKYMSx)2hZWzz@+2OL$%khs zrk-KJk5CNK?W5&&&&SW%0^C8z3jwlcc(d=bPNn56Sd%gpM0ZGbYM{ts<$9Tw%j zwha$4D1$AChzQG~1eH{BEI_)ulx`%Y8Eg-N?hYm$LrE_?%+r9Vm z?JcvO=Xjs@`2JgK9m{d%zJGCD=XD1Dqm>&D+!Dj_@2#}UJ?l%(a*(yK2<{^F%XVL9 zjo}yG0Fh*R`glL|6h?D}e$jA%>?KzG@aOdV1jG@C4uq1dazW9`8h*{!xVBcXSfihH z_-L20G2Sec0Y;7N0gl^SE3PZ-VQZt}+g+PoX&7xVCRn)Dqh_cQZ4`95b_Q6ahW5)~ z`@!k-j6k#GR|3Z94wFya>1Yo`0TE`Utz99@+nxENVV!Rz%soU!y@ zE-lSGS&BrNr{5;6sbXOn+<)4#q|hg|Q2aoO#WZV_lk#7@CV+=^ekB6)xY@*z@l3-*YP)@FWkOs?T^2dggO5)I z*_Wn!-17zscwa1GRrN@`247=uL(pQA1-+9TR|l;#nw{Uo6Y753W1e5x$8XFob+fH! z$UWJ-QJV6Iqq|os{FOd?iGH%H{y?fuo;gRkc#kvaB*BN_#nos+hEAk_-h4f1!OO3` zevsNX5OAazF*z}*f?KTxEwM$`7q=9@C5PhEW}hH2+t|&bc)cnbohs)+yGQkGa-nS^ zp=VJ*eBM?Kr4)(QbM14sJ$&-KVzR7K23P7iMW0`Usl{j-XWhKFIkMO2(5hQk)X+xP z==uzxiNF2&Wj=$|uU%Lm0uQ;kRsz}cs%dhn4I0PKUjZb|5d(2P!f2`(Sxam39n!vb zWH_K9b>xjCYUq2fnQVL#Cw|{@!ZpFgMddST2v`>0qF-NWWE2$Catv>pMOWT9Pj`PS z{aLY9U4NC{e^c=YzH(LY+I+Oeg;tu93D0C}*{F_)*jRs;mn*w8kRl7|$UZ83<-ZpC zeGMq{oq*ok00P9lp~jF;{GuwV)3%;}Syc-|){--J=lq`_ChR7xI?WW+u-v;R{(8zR z-cQ^Z*mf6htXzBUs!S%HbsTUc?lz@K1NUJVaxCxbD|ET~3~%1ylumicxgo=^0>v`W{UkH7giA$PsEGIB*OAox%lof?=AP&YpLTi zIj!r-z^jhlnl#vUP=UjS=)OIKkl`PAe_9_ZtRueb*OFfvaG&IAlh=S&Q|9yG%C!;3 z4%=k$J=AV2fh4c^m%jLF&bgEy(Gz{?TD&SQ36(!bM|(gzz$}t~>jPEWWxMr~Oi>Vw zS5FE(7O?#W+^Ll^Xp0;BDuMTp@a+5KC;C;F!3^aaFx?MZ8{lqk+b&nr;OL+{ZJ^nl z2@x<=?v?RUwI|3>EzU3syI6NRUn&=ht=P5i_!y5y`4V;s@t-FYJDRlxEfddapiT2f zQtCmIK1Epagd@Mt&g9v|2?n;7wQb_SHt(71?up=ZMF7hEtXWEhiV!MwtkC~t73&*& zKjEMi@%!mZ2VgbQ&*D!NXav*$;-Npxo^5M$QYUG8H#yA_;;Vi4K+w=iE2LB^-iBM-E+8bdQep!P&cIJp&iVw(LFnyVKd*FSh10n1|ljO!VMuwC|-lj{Z z!j^=*)}7iu8Stg)OvbGzwOK{AZEsX==OP0?wQsa5ifz68O9o`R8JD$Rg|u!5bm|OX zm2RKs(0x_?uw(^>ZZ5*MOinFVV!0jn{j(PSk3$xB2+bF`S<7h02iI`v>sg3g_-nQ; z9}$m$0s2G3IYqjaE;D8od(}1q-DhBTzAN1@+r{*}d2#)V*7J6+tuU_u+edTQ5yVENTIY!)e1Bava;%Sdh zK?NKcUIt`fD;Qqqn}0odcN_ek{XP*Xrr+u-Dh`U%&1+hDhyeu~85D(^Vy)Ioo7l6p zosyh=C?aZ4$XEcva$!IH8WllL-)1T*tjHAK1=Hvr1 zCKDw8EVP>Ar{S}s`u~=Z5k?93=HGKFSjos^#up3zjt27)`Si1YOJotEK7f)-D*Rh2 z%31jIi+@WdX$3NgxlsAv(m^i5rw2ay8wO88Ruz&{0tbl90NKm9QA(@~u9k~r6_yZL zh4|TnKT`e?F6{)Jj)ryv@)(mJL#8BaYh{B$7>l)r$@^H%sX=?KqXaAho|L&$g zYvTN>_#7G+KT3!yKQEa5vpQ$V)}? zOG|TR8(Ub+K5g(q2fY5+-UK&-EyA+}=aWuYltv|jDjYA!BG~Oh?vMfwSOyPwf*Z$P zFz*I$E}Lg!>&d`IZgb`L*jI;YeCygMMd|_MNEt#sRREjlw;3AD2^-^{)1QEX`2C4Z zlHy*LX*7f@>_rCfhRq3h0jMDJm=(0Bs%TgLwhW-Ar4+cGb!kPEW{OSKvlo{#vR1gS z&~HVI&6}&6cWFZV!Dw{;n}>S?1`c*M>P21%RrSV9Df@snPg~xwWA({lR&BsTWlGM( zXB|d0j&(E)l6nz8I1cRg9C4aFR#A7VG%WNCs=Mg<@Zzd?L&^d7A1+P)q2HsoDmgLW zb|GXxh!q}Bcp;r0Jx;gV*L0oH)RWY@`*k>sw`2J!lN}HvehI8hU5pg0TwT*_`eI<{ zwkwa9#@O!&CmL;PMbLi0yG~pBGpZ%eRnEt*BQq+HfwxvT>e~P%Hg|oA_b!PSj?<*X zSat~LWV5}}xt&$|!-LoBYN$lu)hOrDyzkEi#8OpLLV%CMenCe3Bi~lGtJw^iJSKd@ zmVtp(rS%5wP+(nvJz+Xu-xPH#S`^e$J+K-OW#YsA%=+p5hy_w{6ixu3?BSqh01pcF z&EM5CIQgN>smf&^k|4yg1jF9AVC8srIi-R?!N~Z46Jwof-I-l&+VqAYGh%p`fXaNP z>s04O>vGv*IAc`$PY;nosHDoUjoMFqBobIvQw}Xp05EM0{hf8^Br+(F3+Jf;7iw!L zqbk!npq0yB;vFU@Yms$(@syNuo#i|E<;u;FUiP_S;rBsGZQbQ5)3F>tA!$Hk^CiZh z+GI?Xh6!!(^Z46}J6|c*kJ5c{>{cK-<5xbQns*)sb>42*3^?m+GDDX>wx_7*^|&v? zWVpUtSGzZByz7`9hg=)?Zn*H>EY(j(UsSjKc$+R>Y{x4w&aVOx$r?}*XJH%q2b!Q3 zC>_bD(Oh)b@*W)-DJl5&P@tslVGgLU1V`TNp45L;dM!V7nE3hX{&d+(S;3OD;?kjH z2*g{0uY`7q?Zg#25{m}LP1jh=hR)Y9N!`~Qe9`l+-OD}YYHcMYK}fL+%tt1Ip1vi~ zx(uJ213ppll&lTU;aLZW+3EzeMK>2wOO{0{)GeQI`*~1h#46udL3m}Hwmp4(BlP|U z9$8$+*_-ReI_zqwJcws#V%H&>G!%%_KHX`ZE6r*TmXI%JYT0HifqymrLN3vu(mO@4 zx1R1rPm+IPL`zh!80*^j<1=gMIg-0!@!;n*6GsQ(Qb!Gk=;((E=hdjpj|IKhp?USi zUdHTU5^4uqH*@$>`G{};;Y2~Hlv56hkY#|AbdUiESX$<(D2RRw5}E&O*!+rH?|0-B zT=X8x0Qn(a$a1`jKznlO0a@9-rK?N`L+z~m8*_w+wY5^YoewZon2VA4RQ3m1;X*`Z z8EebwVhdfwGR&MxT;NPF*~RRcjUWxVNG}G}xj}lx_D66Nl8rq54d!!zwUBKmUj3x4 zZa@FCuE`iMLHsZke+3eJ1kOJuz%%!ZU0?sJ(Cn>SZPfM<^R_uqW6rBfvgTb0!T<09 zpUDElYVyJ-Emw9i{d7@&?Us;UkJw_tWvE-~1MLmsbF~Z{qHZWQhu&5K64&-+5U`Cd zB_1ER`A)Fuc@$6bYI|49^;%u8E` z!txeC6LC7*JiWAz=yj?+M+YaUm=9fQ*}_bSu8+mLK#$)8Xk-S0m~uP_qN^%{MV}E9 z!*Z7h{R^Mh3HPzTJYc}&H+qc;{99`BES#WSc~6Bk`x5ru?@|8=PJLm_(QRl=?liA{ zU?vXM>Xy4Z&*pIHmvx@-*}Su&L)NHBrg*u}sZ9Q(ns9WS|1l=U?0Ax^Bwjg9!{dVvSj^6+be2p&uT1Zfo4%#^R_yOtoJFsw${2az`YWnILzW}lK6 zgJ?0Y`n>H-sRp-j%GY`@$}UEU=7txGkbsMuQ8LGYGaNYCETc`n5U z9Y%*$SE^F(3c<*)2k^+|AIFi$q>95-n|^Sy;}cI(Jpj$osnrr6jaygIq0_f^WG*@ zvProDqo5R(>`DYVJsa(2yPHX%)ppaGVeKHEgZ zV)jU>nw2fb6&Wk%RP!iBIj!?4Y+=PN)7lz{GcD(l&33fhR>yj3J+PnPE8MQfeA}Q_ zqfH2n6h|C2UBMaIv8~m0x_j8K6+^W_Q5@Ud5aw7K@&>n7X(8@E^$=Uc@Ys?Z4v0^8N6?qc9s3Ifz+scnu}Gg` zF;3_6FvYcLJL5}BZj(@hTpvLjnTI5mrk_)md!g}lanpXQ#kuBS-c3bs?+Wi)Rm7Z5 z!@x)_m|yp62pOh@V>NAWOdLDHL`*9HD5qHLVX0)b3_6~FufYv6f<0gXw?5c7Bp9ZW z$4j46kw|_;y*oc0TjZUvu=b|PVb9Gdas?FMh`5**GwPeIy|!W4&N}PK!7*Tpe0~Vx zc4mTRmKM;1XiVHfGH!MUrX*Kw2GPiB<7JO;BwiSuOKl=tL8ZsMA zRZtBEdo3x1tE2dIe`Sr1XMtw`W`W!eaXhxz4m1xCM@jdQRF}yp-s4yHL?C_#T zSm26(S2W7}i*fHx!NXU~YOdg^J{8Dxl6rkjzfGS}zpL0WsfVp@L$9^ahfB#s(fy1v z3n8to%*}E3!i3#6Z=S5aNPzfJMw32K?4V-;fgK z&wPCxPcOMcR!-uCC!#iA@q#%*^^pCp2zO?yukB7I#g=`oFck^CTZ&)aND7lIi3Q)8 z>V_MFPcZs(Oy+GTxgb6(Fd)t=DC^0T*q-#!i1r*SGiB!Jp#53FK~eZ-5=AmHf`l4k z-w$NcSNdF1x$6YDUjVX$+&Vo#^~kmaxho8+3>-gJ0B%}%)^zUnbBc`Dn|-4+Es(qRF+SLBJ+g6X&^Qi0>@Y)bwa>oo}dyXXs7@2w}6;1bNOk@ltl3@3|u_*XTk!D5gIC_ z6N34=6lI`_MS$kNKBcBNKR+c&m4yrjs*RWs>S^@=JlR~RB-vMcgh3g54*`7po5Lyr zD3o6yoL~}lck0AWfWGwj7sct0ECbc%Vkl|vErH|1F_&w}FjW;j%93$RQ)V9cFx35@ zt~iljzN7zvza(kha$0ttd$A%jq2VuhfNm;_JL!1-)K18>XE8~37u65OV}-7xD|kC zHA1kjOp!uqvqd`!&c}?j6pOitelY+)bxK__8W!6fL&MjR)&tQgXM?SS`x{zeLF;k#7i2r^Ld9Nf?={<#|MMfBp1oibT7&h<>jZoiBM+Ba!vpdIF$H2Q|$9z;7L>To}mO(IZaBy^#V|cl4?#OI&_UCy}-v7>m@!`0; z37B^`khN|hyewdrcEjY=wx4^sKO!8FpjvdSLIwLy6$b-XOF0F!3Ek?{KxL&z1<$pu z>J+dj`XpDgGV8=VWgd19NrH^Y!dGP(RQ7Wh4U%i9Oh&G|W_E;usGW~SKsNUcH-}=p z#Gq_VoLR%H>r0hEx}pw;T`G9lJ2-oE#gbVp>|X96EuT9vfyFtoA5ZW!QPI`zbQ82V z6~husSa}1UFUZ`!IwlCN)RWtYPZg6e|alVoE$*a|y04#*(B&MmQ zjS#KbSNjl30*vh+A2jVxd4pYC=_ngLTDuJ7gKm@8dZv(8kb;a#F7`6$d;^d|2P`y^ z@M3Odrk=hOJbA;Q1B0BZcARZ8zM^p=if4TM(5%S^`x>Rl4b7Y?f~FD)_oz7)uF zH<_J3ua}owCWUCMVupV@9VYidF6EtmyN`?X5^JOo@8OS9`dO z?IuU$!$@VLj60tXvVV(?i&8q0j8C;XR_5a0!Dm-PUuNADw{&fbz&)+4-~=>Ir1&nZ z3ocagOkPhEEri)STxpD)?1L#Wp?<2r*erE~D>za3PXF##l0tyv94nU9@_OyEkaG8# z;A{wIqyCe!uc~Fy<91nwSwiX-HOkv5S3hC!%wSlx{5$uwSfi>OiL49qThqRMMTT?i z{BER6P#JN;)8nhmNI_J_;lAXLwJB7hTaTDLaRJSYmvoN=--?Bh7i0^@r5tl)%Fj3_ z?$w%aJ}n)p`HEa>RWnWFV%n>+l%dP~6wS{R``t#F=r>iV<`Baoh!~^49*YSI+`Xm;%{RK#Ap@QWmd64XavdVFvE#rT;dJ&!bd%Yp0< zUj~XlVBUIOnp!$^K6xu3bDvH|j9Wu?$4NcKIY)4%7Jxiyjp=3|Vy-jTptW)_I0mB3 zYs;jmcGkNfqBF<&HH#N)qH$4eY4<;)8flDuy%%i2>B3Bk>A~kFlS}=+8?TVW2&JhHZ>c zpCdl~Y@sm>Xp|B&=KS#sW&Ru(Grgg&s6KDG!m@|b4)&vd~vjin%7G?`1ou}(W*%Yb& z78tF5TSdE)V{-RZ%8SrAnhK6F#Qqu%!@zHQj593PO9fKvYp=rZ8xS%gB_(Ey!cLb{ zkSRWB54re2BzQ|J-u($2S+mGh2f~N1%YCi}kr$052-bILF^^E@Y;;W|HXDSDNgFoL z7$jA(o+73YDP0_&spj=;py_o7{i63C_gtMe z#mha-VFR3GEn#&!^Gy_A`2ce{sh`KD01x_wFuKBF-X-R|!pL2*0F=21zma*G z{&4=qcD$tsnh>=;dRIVF=i=@+QMrFT>{bm-sw&9n_>_CO+h5txs9#Kpkf2?L<{n?y zEQ?GiXG5QrT~m3O=SEU~f zql!*fer~UyzWBI?L&A&H%blY8+^jH9yXxO%Wl;b8FpBHU@j_C2%{UgzFNe!|Rff~p zH-%Mrf(%e)NgD-xwj{G5>a#!53Zv_yWG9IGP-2Zp%^qMSE@RkG+Tr}zw(kKBCMi z;OB?=+F0HU6I>vNc0(m*f+VzAC4mzmoIir4(4iqB(VFh2_QS)=1-9i&>J5#J&R1GA zFACcAAD`s<8wMQ_R=3WT(9`m`<|o`J_Zm8l&KC+|qU8pgCBz{p z4-iu!q8NMU?P4?*upK+VfeRvSOX{4C%PCpTz;qaCvA?P&{gJcsPhmSX9b2+)&3wou zbj4L#vKGh-D;+eGkC_3jwjCg%QEGc+qYU7lKoYAETdzsrpdw;fp#BCcW~rK&^^(UR zmbOFX6RBxncCW4!s7I!P#=_8xLCuSU)XHQDmV#OM^6Xk@Jy(LdH5-m$^y4UJNN)asV7ji}pt-{5U*#=7fNES6{IW`N#CujzF~xs6<>=~| zFm?21)v<)<^)N)4;{FXye~4FfhSW7{*L7t24-+9C)zGIxugg69p58XTK><~ zYVcOxX4%cqr+@tpD?8g`5o#ig{#~1UVJ`GRtjA{>nks~=En?j#i?Bcr_n$N(QMeso zqsRG4t7Xjh^S>8^%SKOKIhbdval2FznA~kt60y?#O;NG(yP6TD50fOY6&ZsNFMT9+U zdeDe^ce-P|Cm3KvkJQ}{GG4RO!^hW08XqV145;Zl!%IKSuT1R@k4@*yoH{JhTa{p(z+#qQb!Nr(!!pw?PV}-KkJW+Y9QFm3NJj7^cZF8}Ob+@|Lu)vO?xc7r>~4HuFfcg}EML@)S8W?m z1A9590)4zL3+it<6Q^}q&S&pZ^49;!Vti8g9qas|7(6OjIsuhTpl)nva0F^#+Gqvu z8Z+GLYtuXeqz?Wf3@xo{cAqdUN>1VcUpB@(|8w&ac?@j#eZsce`PcS~^8HT(@*?aN zecZ6ci&N85sxxOkaj5zqM~MQrUoQ*cw1a!@J2<%LCx;iu+xjkNY`a0$7H#QU3s!$S z)=-O6#v-KN>h6y>4P6b}7GaOXbdQTNM2q6sSD)8|ubDM6v`pi1oBw%REuWa=S^*0N zR5>G~l7~=S%b$D?ll-{*hd)!x;tCVIXgvc}9UL5{fKBG4hMcZ&Xw#^7ltd%pCuVnBH4<)HrGJmi$m-o{=`IQ#q&^L$h zRcQur0OrH+ss~(0Oc7=b5biZ*;;q0OF&mDG9_0Ml`r;2Oj#Hoa9?4GP5mx>IQX#XG zwR5OG6+!ni8iBup4MecxE#{E39}zV`-2A|A;cS|0NK?yMZ}U1X9!%mAfF^o;fOm!J1t2b}tOv%;qW zYG3@2PCNo*biMfA?sPwpR#>lEC;p7a;FiuFj#ul z-NpK!-`G2L(Nyt=JM)J+*yrjnzB5mJ9PT(#C=6*+V%t`SzdG-D<5FBW z75U3&ZZWma^sOs~a0VA9T{UECDob#VyZRJ*h>UplMMLr!_C=nt9kVoeR#;0K)nxOF zcGqc}52~e{=;NOIIbnbqE5*G z1m5Mx6V`5!-dh4W(%7C7g2jF(bi!#Zx&c^326znO$NOPPmQI7ZsM;K{|)&7@uCNXhwux46}sS3{88J1 zmt!o2x?l>v?0HoK@t@0}g)dt0*&Jfd0P#o7#MpfSsaDlZ#BCjH+Xn@9L73USbVz$` zDucrUsH1iNBq8)JRf4jMkbUbK;$uAx)3rOz2EeN9Q7QxD85h8pv|e-Ty)U3^rs@7U zh8VaY+Z&lT!*==Y?w)t9>IS_YZL?%(Cn2+nsL~xMdQ--?JG1vtsnmm$Cx~i^;tZsgQHI$5O@yT{}Wbod!&}00c`2(`-u(!^G+920uyXO10hhjQ!%9EsJhr zv5$07nJs&7cq5Di5H$!R?mC^QF~l8YPVtI@k5bjD`1aZ}k6LEp+%CZpxIK2IK}6>N zl95mj>!|oYDG3{oYWsjw0P}9QSp0ChxLH=&y#LbdKxIq*b>ip!U%Us(Io-6vLVr}2 zS)VLcj@=k0tpBK5r2h9TNYfc~5) zj9m0kYT=JCMeJ$6BCIm+Fa*Le$8~=R7~Emx@nAz_KT2mW3gB4=EHWTXig*C28_{`sUqY09f%I=gnyoFLh7IOT&PuS{zhysUOmqllq8T3&QF_hGW%pd&v zCZf}6WzT1Y9PUJWugqY5Hw%xtxrug*CP_Csc)8C0qe=`lDxFl3j8fk)=m198*TA;gkS= zM~wsu_M2l2-OmULc4StpTOz5meR->uo5Sa8a(KaMXL7I@F#pnXvOWdlz_Xr$6`2dg zco9oR_wxUaz%c*TW9Clv&26vx3*Q_lF}|rpWJ2KEX7I@;eK5}NE#|!?1DK@uv7b`G zDTcz)cKQ}s3zWx~k8Y}Bwc8e~2%B8w$y2K6L^|0O>Gau}((~Q3y&0x%9&s5=+wQ_X zfeW81zwfcVXhadS-ovmpeUGTlt}5;7R@r9S7*V_=ohO0*Q`?ENKC}vwF*|LARs-4u z6?+*n#VnAzGd=K&7RpLjf^rCKlu9fyd)6C@?hMIl;W=LGIy{LaPFH3cnOKWKDl<2Y z>ZCb`p(}K3MfngQ3Ukz)vN8kLWx~Q{wL(@9{yt}XyUwFFVdm*V{8P@|sd4N*h)>cx zo&1pzkXU>tOtjy~IGoBpd4>+n3zhw3Dl*iAxkO1!%C@$F8bhQ*d;1-e2NPTOIWVpD zjm(>>qUEK~3>M#QfJ;JGQTvLd4~w9x$Gf*}PM&C-8nB<3&AuBP!j6Uxr(FbB3hq^+ zlUVGT;NVgZGbgR$Cu5R{98b*ob9=sYqLPUev3bj?9Q3;OIQGP-KM_@|05xr+!(weF z_KgOu$b#RS{>!sEj1+D+CdJkR2ziVC;vd?DN4M2Y$F$6%hViym8NlN&YtvIdl7a{4 zm**V1;!b*z!t68`#l;Q8jW`e+;k2xG9G{P6n%AMw=5(9is1(1xMB+%*dceO$m-$0q z{9vNr*NBH%ajQ3rP{{%*n8Lc}ekquzmbvUE_c;!7wdat3Uq9IBhBhmYbCw985-+!k zIFhxbwqQE3q@=`PrfU`2KmSni8Q%43VQoP0#(D&^XX5oWw9Bl2q&kRKe~(FbBb=;cA@(wgjF7H z?+KRjf`aUoYf7gp)HHoUFT2B7UqLd9dSP1mjFR{_`Jy;fO5s7JA|c{}_9?Z=hpFa$ z3YBS?wiUL%4uwV3Dy_};l6E&8V*oMnjey@_3|Q4Db~6<=ueY0*4@@P5&s=VbX0 zxd$uWkJbqhvG0y-=Pd$mRO9aPah;el_I1%9kR7~ZjCTo@d(&<$SJH<+z_hxryc~(T zyHdMe?&TPgR5e=LZ8UKhHQfA9q~+hL<%C3pZn4)8p<5i2{C}ofI9zV`2nXr6$E$vs z1eCc&|4oZsv3i}ZXYVjIal~r8WSh44TbYKS*F4pGJTJF=t{g}YuH8k~S~TnQC;I{9 z!kRHa^;8GbcGfxIprQ}R*cMY; zAp%1FtAmsVNXvCkK`|P3mBa4m6E#EH`YdFZ&R^K;rC@l>lSeGVn>i~7RN18p1TM! zQbDKv4WC2R-0^K($EmGlmskxJmmeRW+)A5R2m5W=whFpr)$Nm^P;y1mpKEuAeANUV z%l72KVdxjBo~ca7AmcvnKFA%sMNx{87Kiq_y5xyi=ZQ|Vei{p9h}(<#CmPG+pyHR+ zY6lm(-wsK6FRy+IVuGr}a^^gBX6cO3WOsg=4y(Xd{1aOsB*i_jVBRsmICM54R7R0-HDqB;STG*Z>Ylp_{l7u>!Q%_f!Hv zq0A%@><+ZPUA&+ft&-YbhHyY$Lml&P91!r}h=MwzdP8{{TP4g|6pHsK z*bPM^#*;ypN5Zb^A!Xcne4JrQw;OcZdKaYH?gM%EzafrbW)N$1bnMIVlu-`eC6Gcp zIwN6}U{n?qXOasB@{zTPapQwXO9aY@x(vZoXGuCN!fs}a=Q*o}#0Tv{>IBu@~!aXh1RiR20 zt2b;jy-I9_E+6>Tqnk;7pP;KtN1||%&|ASXtB9P_j^4wr@e6dWHF?5o(4AJ@HIQmSkZz!|t=yHXcLjBKl72*CdV>l>$8Y_t%eJ$ad|4}+A&l1Tdu>z zV^!S4(=!E#G|vlsiU>d=Eee)HG(<1=X3T?Bqw^+f6m5>a(3{f~d`$g^ymnwCxNLIF zAxkd>xgpV?!Pop4?!hD+YWLofNQ5*ewk5|9tDoIOB| zlBZo)2|20gJbC`6n{9!(lTm-xwt{1U@M)vXMllZohG)a!WH@R^pD4fG5^FS51K$hN zW9NO`UBrL++CIo_$kB=Sl&rLC$6mP6Agz2hgX!v)B6Ne|_y`wuu6RucGmB0GRHODcDHI%bEXBYA=t`ZnG$$^vF>FY zwm_`zTrqB{xt#pUXO6#qw7cQTqN6L$d(1A|8mh;;{Bps}H}avyzuxF-(|?ss=#m>9 zOiG6fWnE#<4nIhQ9%}rw>WbuOXUwPfSsZKaHfzh>Mu`ghZ3wkf)%!U$Youe7N_^%e zSTGS)adkfsnpb2^M!FeSSMbaOlzB~G-qQqB8a3T1>&Sv09_;n zC;?AF8H+7#w(9$Q_a#sfKZC93p=bCX{k8QsOf{U&op|%K;~oKxFWNtGq++X_LT9h; zrIU+o^W+CR0n@v@SW~5yK{ja zu$I*3L+t1)LrM_f&G5|hP^(1fglRFg#pMzSE6L7nsmN!A(41IbLk4tUmv^MJ!lLc$ zBnWV!efOB@Mw0R%HJh6892WuW9}P(RkMoabNDP<8Sz3}5n5{tnqFd4pCsVRnP2h@GClcrT_>{V$8oQ3`({D%pNgPd2#oBry)j?|)mWwI1&SaTVN}T&lNjD( zbAD$QuN%A9(OhpU&{~xXJ|s$<0lnhu>+d?yiPvp?^I*q-og$&urg@1cxDEd9=n*p& zAVoeu$arE);Qau6RibJ2!9PKl-@D`>ny?)*L_o=@qnuQ1$6do#sPKLL=Ycs$ziHhP zgKG@u{REu4A-$#|JD8`eNHZKD@j2Ky%6algmaX9A+IaKA+xO*y4^&53$hkdfzut;%sFFpIFqu?(-I9USD}qXeYZ6MyMR*Xtj`@!x>k!2|S?kGdv8* zGkjhrLxF*GDML^~y5B$JxoYvlomDd+s2EK8Kv=K*bf;FqDA01d0ch4KkZ7Hnx%BaA zoApPhoq{oh521`{&(y1D9CFeb-W|zuV_~&Oz;R_oz|72VvGq?KF!79t5 zk6YK*OeQ=-Y|o-1PTxJTGgJhAjyGg*o+)fDbvd)LHogixgz;6v*iODEe0gQciT0cI zM)&qZ?Bw0gS0I}f8-G8JG_SoPyE%!@=ZMN+K;%oOhbZ%#S9M8oKCpv65VBb?=QkxVWwj3o# z;!Sbh%*fKTZ}mkN6B~RhHu5Y>ocM>|yg!7;+l7lvv7btf%L(6dC6W zE57_XQN@)vHH%fZ=u~{|3;BCpd9QjO8kc9e@ur=b{HnFxyH(2F;C?TGEYBi3PjbPK zGK5Q!v+l1b4z&=jVDIM9Z5ioGSBYmNAIRx!3zd))o0XqNM$Z1v3oxXdTB*h%Om_`n z{w|oShWvX)@a0&z<#u#*$o=~Y8%G}el|xNRkr68v`TBr3wv?*0yN1$hw( z=~V|M!?xz`b=3yeh))v2quflpO8OI?bcLL$=^-o#SZ7xqi!!kqDBS@5N)Ct^+F{&k z4ZW^Aadmn4sc8u*M34|jnI`uO_oL2GDi^=gyw89yD*9|@XLk4f*05bT9 zGPaT@@aJ~y9_(oxEc+g$kWfzn#T82~U$Fi$Hb!z`4iFvkTK8>kZVoPi$HT*n*ZY8J zf&ZWr_iX3Kpvc+(0uMch(%2=*5245SEj2+8`a#cS6qK^Jg<%}}fdB&(1*FqaFLp2~ zg|1((95_M`GNS*7Pd(5n(lX^N?j1NO=0$-wP`u_-`|JL#FNf^`A(U);jvBpp6MV)hyLfE2Ksdm ztWIr?N-*YqJt1aG(kcRlTcnp7N0|eX2E#S6T!8ArTkVY4F=6|T@qG>wnn>2PjVHyh zMUIhRtn@DIaBrf_Yvnt3Ky2w7HF^Fj^&siLi6wwC?`DWtxGINntKm@^5-$;Xv4iw1 zsELljKaGh0xxaa&fr=+lE>Crj)FJ>*DNsSZ_Xd&LC~ynKgGq~N`y^?a(f`9={p1Kx z#U3GPeo%j_PbooFoUS%p0;XEI& z3<7t&0A>x^iPAM6H~;~1?Eu~o!y{HY+mkS2%FoCJXZG`+&kcYItM0p}C7Vz8&tvZ& zMVb**qGBPPu%Hjo(*uIo^@NeQJaE74^j;|)=mL*FE4ZM}s}K0x z2K^UaE(9RTTl+=ke7BWjhhTejfe<6A4nW8$AQapgvI5g?J?C#~E>P6dr)Dubcz`gg zcTJr5>lt`st=x8Yy2^Okf`bTK(URuKIeSJ{#03g5V>ast9$4_o_)o-z974Kh)(y7T zHLNKl~;D1kJwn+H4kD3{;fv{ z>F{f>GG1t%egR3O0bs2gj?nsc^^>;!*%KSr`D7xMcAr~wjbgJ@I&+ZRIdb~u_1rv$ z2Uy~XL&SJPe~(ZBPJ_oDk$gv^s(SS(;?krtifE?VIL^=5v>G~*M-t`-*2fZl7)(Aw z{|x^OM%_ryDbKMNx63$c`w%glO2$4 zu7m{_x`&asGqD3uI!pl;$L4M|2aZ_LHo$qv|4nqG6IDblfV8YY@p}m1!Cl}xVff+E zepfQ}CA}*eK1#vM2Nnx```v53-8|AA1+0A$L8u|XHSavPXJI8>J@h^>7@>@a&E(}*TNmbtLkA)pWb zdB*brhAtgkB@qrT62Y>y5WSs;5G!a6kxzf;5ic5xO8u{4KhNdRb9mn&uwp?nsu{Ke z%IWJi6et)$9;RQ{*qHyPKf(Aoco93#y}>JUDvmb`FkQTTADLYUKr}6Vf?ALMfi@5M zn*#`pkK}^(B@qLUUvAAG-EY4S3Ry137_GeR)lcG6P)rM&Sie%GHB?7w-5_g#%JvhQ zb!)}qCOH>GwIok)-cu!OvcJ(myQq3Vy#aOi#;iQf8hup_9ATc{M`I-+SS!b7>A2i? zjU(Bw6z2SEV-l%;;>9W4o3({-e!d1QljJcFbnEI9&jf|G;jO z9dk54{zv_cQ$74|1O3vqkw_XY9oJ7xu3%1^T9G4>PaF-^&>y$e_@{kAJ%pkEmwf@J z(E_ll9JFGzB~{2uIWvpiXPAtCQ;Xp`KiiS0yC~u_*OnHaGF;ELMEJf49(x(im+2_g zlstbBbnLiX(g?lnLa()%)ox7QmpF`4W3h+q)tR>d3}FDu&5B3WUKUIY#!Bda zE;hLhbRYf9scq0^aKdZx>!5 zEB*cJ8pHBjK7;YiC?S9?t3wZ>A$lOitbX#2$PS-|m;W$1s2KC%^hgA%?kx%pqVY+S zOIDAFq)I=Bj@^Ur%iedQXS$q}6%M|IQKw-qk5x|Fktg zFs=`J+%Ece_GREw;+(~|GHWS2*NS3IG+ipnyy(Z4 z-CA6S22j`WhLf9cbQuB>o>TkGl${T%y;9hV&n8(uolMcry+nxCVkkD7Daig-wI8}V z&ENH<>dP~!EGY!CZLVTuz7Cb?M?CEuY`nEEPas|6hs{WSgR9GKV?7j~ zus&z}pY1LSKjmgu-MRAyT==p3D?uMWy?p{@2~T3e+}yhfyTFEQ$CfbAi=2{9Y(gfkSXd3TiZnyJ63pKM<1 zVBxBhZCf?bNjVgodA;I=lTGQ>5|=mLJMamt3k@Hb{X*G1bf5yV$_g3XP9L0R69euQ zxKBKXVf-o0e31WFS9J*vcn%Rh?$JNz5QB~MS@(S2aLb2ds9i@z<%+so*E3b{n&A^H z0LDfySWz8KN$q)Ar=x(_4IkXddZ_wIC%28+_~~l!Y2C$@#!6GGblLyvvlPr#tRE+%E{jWmvoPgTF2;@aH9y0ENtRBeTr(9e&0UP zMMaGplaS!@ydJzr{a%BU1EYw1{yj+N2&3=(RvM7kwy9%RKFos+jp_j>B2`Ar*3BGP zB&RD;Cw9(866uRZ-+J`6JLKEL5#9-TAlC%&|G!xu{M*=j5DBY8+`pVO6rqiMXzN)W1!im>_;cf1IyV-_jnZ6Ehkfr6ZGJK%|4733ZpX3o;(lx=0L6e^;4}*Mb@LW`aWEb$aZ7Whm zyvhD;rk#H=|9VyMU)Oq%4#)ABemN>U=u6RiCzW`uD-~(x`xqfKXJPF}!1-Q>UG>4C z17LV&=f1*`lLk(~!XwPP?~k0?%taLcfo^L_xu`zGK6oH?+d@zaJ195cMN+$O8U0W&~EB?3nvn`YCZ({_#F~lJs zDTezX)8&SpLe~IBoAaJ?l`mPfwPLeOlo-(U`$|{v)k#y>G0j#=2Xc$%$`R2|Ef02# znJ46@dlMhr4}GY2BH$~+0C8!($%>e)^;J^pvpy4D){GQ(&4emIvZl4KTxj@L`K@m& z!@rKcJ$TiyuF|LPuL~c~$e+=SvCS2w_9kz9boleYhXL0Ixi^2VLH8tOypYFq#c(E* z>|mw?`*ZS*yn2~`{HHc;q7E~THTJc)X4S`%`{a`5Wv(4v|M(R8 z>-IMaOO_%fDzO0tY(hX0RHQ{Dq+41Ar9tT~K?Nifq#Nn(4lxiUB&5rrQ%d@s4}0%( z&KCW>@3>>UQ`NyFyaeec7=A55u=qt<>;8fIT8!C`5PqalrDH`T+57@xBbAh|kganjQuvNHSJYbwM6i z7Mormm7IHx5&znu$J9QmQ&{kR78kUu&IxX) z30(9q*Tsb3-&Swmo0S?$kJ{q*b&d;UIQ21A@|u`xLawkA!SsvV?X~xs-E!9+i@%qW zBNKljPDUR0V=0fahg__%mDTvg)&k$wVAkvhjgf&+?hDp4j*;)~^v!Ovj@maZa6b)g z-i$EceFUyLhXI&2l76`St4jz+{|ZKTr+uDz?fy}8@#wqJ$GwMRd3UbVu3!Am!CY{E ze8TZxKTx6<;p6wq*Ytkv;*Wn)0;Z0y7*gXQEY<1^jZ@a|?+G0@GtVtKWHYT!M6uo>%WPL@@J#_D~VnSiE$1@xjrn>@F>H8(RE2(zWv6lBuiyBzf+UTtKh9F@2_IScMkFx=GrMC(XL-%-Ea+3j>C$j7< zH#2Hdcw_EQ(Ea09{Obafq7!@g@aV5U1)2t)fc!VH)&swMOi1zJ#Hg>nBKh^FqU3N@ zQof%Y{}liSNAM6%jQH5C-+Y?j1y@DE_SxcZ-pH$PVxIolzxh;77_LexkJ#F8Zs;*M zvH!o_Zh9>|m<8)X=yNt;lMnl{V6-vQbx`EU!3SrHxWP<#Y~oV|%+P{*CyHrZ^A9qF zUF3Zkzx&P#VDMlK)JBf-~=+W({)T*3G;PU4Ev?bU(1WN8HPWa9kf_bX=|{ z4FBti`R9s2X64%A$3$T7r^mnh6_ydeprLhlC}>x2*boBPLWXh+(^f+6_=?$VDm)fQ zg?>r0~4= zn1dD|ktD?48c@&lS2;VQ&c|7^_$j27_Fwm-HAcqbj=)wZv|BQ0Gnj&z$GMEYfmoqO zX2Bj)YLIS$1Z|m7vsK#z075cwgAo~OP_kj-?HNJW_Yq<>+m4F?w>ck<U120PDuEo?v`8=a@ z{CMdrxCI)o2|~bI#zwJjmwklUtNk-{3qYyUGKBe4m-+WQqs;EsU*8!Qi~QkwxYU?1 zFIZ#sShjxSz+anR*6~|bxy;R2CC756v&jneBb-z2A#xL9qxHubBJ9z8% zpxp3*>`Tp9v_&@0))2oUJaWHvWNu$q_$cNZlVamCErB|djZL?1a5wm37y(vQ3QeW- zu}=L{OJH}@3k>707$fSdnM2y2;#}fJs(d(JtGiaB)*i&C{!4P(n_$>&3cx}_5R2NU z!C*@v+z((Ss8($D9+K@$5w?OFF;>!~Lgq2*vjna1ha#m!2`Wk)6554AG)UipV&u4B zYn*-=teK1Wdi;MuF}6f}9x{ z(0wLox)dODzUT7qZxdYhrRJb=Q_4ne-s&u$U)0T|6sQ6R$vTkI+WY;)kZA20{#L0)#vL%3Pw@FXk~5oMU!LkNZ&z!yk1scALn=lQO4YVq&gnQ6&(VU1z$Ih)krzkcqU_ zj*0Yl&~K04#8GI&x2cgPp6oRLpt{IIKGm^O4~MA>NA0;jP;W;&+onuE{c3m(H!jXO zSzM$!i_MWe2V@P4n^N(kKRuZG%w`bV6FTyohypuqw=#3IPZyK~_Y#MaNSF*27M$(g ztd|Yg^MhNq{EHNEuo>)|o7J9^Uk}RRf>9NvO1nLFisO+^HW3g!IGPi@W+;iA>_+wV zO4y0aRmrO5!AcrHc5q!A^q-PyELnwxV7;h?CpL%dPi3VPgel$=os-|kv8c6>W+#6b z2rwOieer^PBuhDxzT=JH)n6s zo|cU)GCVhoelTuoz7h8L3ILQ6(R;D7-*2n&XIIb>*~;=;{>(!2Psh}U5#8mon{FQ* z)BHG(oXhOP#}&Q%Y=jpK_ckCYXch6@kTvc-H1$LfLv7yQG7Zi=h;P;>s~cbtQtstB zDq`@+*YN%smP3oMG>jXoe}ieD`Dj{JO^nGWaSq*Ta%J^lw<=W}rWfph5nHRK$h}mj zIiay5siX!;B~BWqeb|d4#VfyVM^nkvmFy!Ud6?8h)zxh2ZK+wy|iOym9{oi)cb2(;P(#18I^+6leRDsJN6L`Kc9NJya|) zNjT%M$B~;ag`H4b@JwZpXCI@^JS53G6qFvCJ>XQ48V&2<8_oTEl%`rHTAbvrZrN*I z3S{MuTl*C@5hAm4k_DF^qt>ONrQ>jGaS=R_(+l?w@ zsCM-Fta94;0mT2#LF4S1z3w?Vg_45mSOHFT^{jnIEoAC40$oFibiw(^L^cUHFCNCe zo=Xs?*p?64QCCO_7N||h{yC8W8qVXSjP@4}2JLfCqaL7b#t0LH*$PtyXwG}SvY)N3 z7}0rbX{NFUMawJ2@Gp*#)sT~~bxE$JjrskdvBjRl4o6`TLR;n*E4H4KqsnP>Epb(L z$r477-EdC#U}d!&^=P=e#H@XS1+GHkw>wF@LXydxT!&s=nrO7_)Ci83QUoP`70@Fp z7m7|8>y0^<3k$W8m$#L_L<#bR!G?OyW{++23Bi+Rny#r-G|-toJ6716L)XQNg4Jt@ z&z0%Bt~rdHo#yiNKE_?NnbV$xsD`dLFY@u9D}TRpxzd_Vlkicsrbm2e{-Iq@3~Ak2 z8E`~kmQVEQErAG(B5K=_3+z=W07p$xUFao*)C|+518BlnotUfh{?Mf}iO%O5JV%0w zNTQn`T>h-48)0W|z*LudZ2hA+pe*WxzOdVZ>_|ReUgLT~@KW-v&)to#Ddy$$x2y<{ z3Rm2xrHcSglk=mpnbHOmu)xl)k&YxIQXf4j)LC_qhLI6kxKnh@kv~sm=y~z-Cy?L~ z?dI)LhPq3D<){Jw2JE$17n*@hkzUnW>=q7%@VuXHe+cBlV<{!;?Ra|ZP08)Bw~;n* zUg2n`zX>t&ub%c+LJp6Y$ka#m_+$#st5Sjcmvb?2R<^8ijU8ZU?DQPLRLTj(rUxNHgVUt13)%WWTCSN;O#wqo$oV_!o=HV>&0M1qcfjGNu6=ZQx;MO1 zf$XdzFR)%x8(y___qf{v+V?d~qw=mY3)cU*4d!cGmSYxPLtB2xLdHW>cz<4{%eATLSBvbu5iY z8jH(T^7W8)>c}PHChrtJMzxEE6h;Ylga+Fk%39MAoJU99tCV;%m0V=TppZ| z$v`93g}Wi1PLG(OOenlGU{lK>l8EtVB5;_vu_9wN0s&1KI`5wiv-;^rPkh{nuGdt! zo*XQR(mwDNW2C!bPw2msg7!KS)(@~Xhp$a`Ok?>A2pmE0XAGtCrz+=dmDIB>=490o zkg5xG@lNqThT$S%<}T(RH)F42i`X~Zu!K_&4@+gk+4M&)0K(e^3geB1Zh;ulx0gOd zZD_Zo-VPI0(eGLl37Pp8RI{CaF?fbzwSOC$sD@d!2UXjYFljVBOCYM9bsTH)g`;XZ z)o(@2+|_MzYbMg+t(wf*)22a9nIft6b*U*erfFgVf|&QAp?M7isYl0c22V)!MELeg zdGQ6ODR46O985U~H&4cr*u7JH9ym4mFltcYp>nNf=x~UmexL!lH$`>+MRE=a>mxeb z@LW%LCK=v3h2?>kdQPIIGNOH4BfhlYb6M_9&gjI67b3ULh7AauKlSDX;`LFE@qxDw z!5w8ib6os$c$GLUC8u`H4ZcRY1Nm*2B?fpMPsro{8~8ysiou%do-B1R^^G*HFCtTMw&>0D7lv+FB&9-6Q5 zI6^}U2gB8Vfjguy#dM6GkqGhkpFxR2i5&xs_$RNzjOjR8$}dJxqUN|PJTK|>j@MVa z?l~+=Y)L-^Sac%zCU3RNnhi~`acctg+$wwZ(_)?hv zdCqgSi_^hAjpE)HgVF*i`V*dm%1+0g%cB!?D`GV!-$6Z!n7y*e}hNJz=_44p8CzAL59$Z;|HFZ z{JA{+ykrR^!->fp{vEvOh0uzCePWk>v!*D(i6!s<-HIcO(2D=w?w=pH|95V;z!rW! z$k1u85vu64co8<5Ot^!Jnj4erA}+ebKNONtJAO`t-SR3ELK{H}EwP|N9@(=~p%GJeeJ*J=UmWS{V z@PBtKrXgr#s`Un20a8aNN`&4xjL<}*8iXpM1i-to_TeYMD8h~L|!tNrQ z`P=qCh97D0LMvQx)UsW6#~Tvd^|is@kC=1wn1`|4x={YPz&e_?COp}M7)G(L(bn7mYHCxL1@<#qAvHnU0lRmyT z3*ST>nGTO6n~nxou!wZtmz}{b!}c`89P1geKces4z0UiJnb^}Wjs#C$Nv6Mt$;i?O z&Lb>g>cprOPW|ctV~t z1l7la)^%#6`amw8pr5I;OWEFn`&fi%TJV}FX51bT*j;A=9&}*^Scw!uGrX3>@PkpB9IJ;k zhlTFjA348kf)d5dI&m5V7d>?WCo&+eF?4yd5uUv}p!+H5t%4}Ea1isSR1JHLa6xoZ zvIay_4wIZQ8bp&_U@I1ay2c|zUT_@D#~VRQ_!aXW(mr$cA3pt%H#l;f5s)`KK5M(5 z-xPsLe1>qjZl8LubfD@J>Kp~LL)Q2?WX{OH^`n+7!~sk$)1h|vnh?og-jXrS*w1B(@0#o74-s$w|*Q5PaT$thSAk zRefxhS)(++VUg%=_yCOF05(2{jFt#nQ%%?&kN2M`>jXun8W>abSsDyNtE1sqgEI;~ z9bXfPTh7fQn_5|ArfIm9W){FmL#ph$C}4Q+e?$=h12y8;(wUt(W|u%niuJU@34E zdrC*VM1$k#?ydX;d4wl$rmpfMf~IvC#=V9e z@P=UAWJmA`HLtC5e^-$4H4P%diqFb4#;3USqmlYZ?qbtX7=IzGa3UkZAnF)SW7EtEt+PT?jB^^-C6NHTk%E z_7=z2AMZG4Oa6xOc!AKng5u{CUsho;TD+JUXUnA6u8h5Tf?Sd+1}Eb`fQK-OJ#sW4 zlt5yTb4Uzw0ur=E6%&Mg$s`oD6}%-GPbjqEJq%Z(m*c+OJ&WbH%w&I@2Ud<(+9|L} zv&COXOewSQbq+CPL%QRWtdYgJt$@1*RHnPCO!`xJ`IjY&o9`S`c@Q6y9TbKS!XctfgF^)8I@gwG%bQ!F`iJ&2es2cNp z0bfd+b-*?=06?j!l`V3|Z5f(a%xRA`{|p9=wQU{AdV~jrjV&I!1G=^3r_ikOgRv~` ztSnZH^FZ?2LH!?gR&76~;a%R!c<}7tq}GvJLJO64r^*Unx0+_LYPLy34Zg-}ZuheZ zgFxkeyu3^C{T6^<`dVF{%7KC7+BynQr4avat&?{!;zqlgjz};9925=s>TPb!(T1I7 z3pn+M&(i{9g3nAiYiJ?wbSJsOkRYZ?luGa2lN9IEC)!=3xz0hEjG35cmH4L7Y-m6T zO~Ul(joF`XAA^jmXm|J%J%w|{sl(H%=XpQHmHd@+DKuQMGOWpYPp|yc<+HpWy_fJF z#l35FD(ELcKc$6Y? z`@m(d^vIG>8VEuVnsD(%rNIuGkPm_o+Z#}EtsAj*wrmZNF6dE$eM~QZgk=E3wt%*f zH-&yZ4mpcD*`y;z@oPik+Bf1^l#roT!Polqj;%>Rrmph@;Z)F?M#7_At*gHm1{}1C z*mdiRGhwf9$+%9N5e;(aBA};qL#1R4Hh^0xP_F?$XS?YjBqoZrOI+2Z+WV+^JxC`n z)<@oy_6By6Lx*2gAF$)ea0PGZ0z6{L|~Jx+=V=H*=6d1_+}6Hga@Xq&|* zBge&x-tDcGs^oWEAp_7twym$W+5cQe6BM{8@hZy-EWmc`-9wp?4%$pZ@SgV7udj`V4R%So2^hBBY%vNC11;1Zh%Yz7ErKCT#qAf z^t1hN{#~&=2VHW{9~lU+l1CQ4WaEo`$4P&v&dR&0k{_iZddNXw_kgja!1-gv;D zf=#op)M|P{E7*vJKtT)WF_||JFUN9rpr34th@z3$4wAxt2(7ul>$+Zj7&QN4bGsGs z9#S!YV_2cYZ7b$KfM9cn=AuzZhDy#WVr*xe0N7gHr-~YQ#XlNh?ppx4r}A3xJeaP@ z$!04ol|%d(E1@~iHkQFqP7VAGjDWCXQZO$;`R>PcbJZOfA>-EEzhMNLXPN6v7c76w z4bMaXKcgFVWHR|_Ep8ZuI%PBiM90Xduq}=oO3!nqB&itFEdUeYJK zm1$ly&`lzeEFKFYn2Bo%1@ye=YZTZwfAzmaVRR2YKoU|}4@Akya} z15!fH;!^vwLBY(*O{XQpbiTavyR_7q)=TJQkm`c!b$BW>pa;xR2qha;NRfMkT>p2Z z{?#gkmry-z^_J>h7rbbOsyJe!Hp0xk@__D;y%)6~INTSY+`Bf?e(jZb?I-@Lj$v`q z8VH|5X6XwPg<@*6A(I!HZwBNOOV)UzK8avC)y!giRX>AJL`Xh6Xq~J%m~M%YA-Ie+ zQfs-ePqDg#i=u1cRT@|23qo^7vj?^6O4Z-E$U{`v9WKgCO@1lu!m4V~T#?qEQZ~P9 zf>&tN&2}l++?W;5pq(YyJ8fZ0uJLe6>;(1Rtf0@FAJlN!*}^ZppkRnsSa_1DT2LS8 zku2<49`yN63EwAkr_CkhOFSBc5P4|}?JTO(Z&&b4*ruv6S2BkKcwV1rVw-ULBN-Mo zKa)K`kI_iRl&AdQd6pqf6cjAH11dzFDU#_2Fw0!a z_JKQ3<{~65<%C|iS6V&Im=y838B0A=NPT*ioF(d-AUy-j){<*}nK9OiZzHr6)Sp5= zRZIT#A}v(9+zDs3o?c9(CneJ+`6UPn(>1YUX6>>ft8KW*F`nf}0W7c*#%=AmVd0jr z512T^FOuf5a&TMyajDz2cT*TZH6Vgfb#ww>4zALRlfo!+1O_(mSxhY91uCsYe)mYb z9Cp#z06<7H^Kd6Hix^?CdRd|>;`2v90n@+F&9hPNMN*_~(wBpW?Tz&-1qIlp8VB=$jEt_sVI(iqHwJ7L58~LM&@p6&6j_K8| z9SgR1*J3Q&LfyY_c9GEH!WF)4>loyEc3*Ax!d0u7=vrK5I> zMiJ50e=pjchmN%g|GYWxR5GoKP{5V)*{=QEaPN?G1*p*o_P;0npO@}`d#7bMs@96_ zS4^zaP-+JW493*J5z4*_Ud9ar%*t;@STq8W8FIFH;A?5S* z=bzcrf1iqIGLAR>sley;J5S)QU+6<&a(}w5Er#WnZv(wQ!W{O0OJM)cyYlb#M)Wj% z{C<%`?>A;jClPFLl`Dnl@5A}`kD}i_L%D|Ryu>{}#}(|n5IC6q=xvjcV)~h{`R97) zs)MRb32FDjT~+3vFBHORPXG7Rci+1I-u3?n54@j)#~F6-P!K~&OmnddCP^83A6v5PK|9=^ z12m^oLsFq>T_xs8X=?Vse2rSAhc=r&4yxOO`j>x3^Zt54JT&MR-v+%y2`WDFsgW*Qg1N|gtmRmr?y+@f0*!#+lASh+T&m)I zuhdKN%wH=TawAL!YV)zteb$SUoz3~8a_^s=nua4GqOH$IF{1Xv9+VO9VI+G8s4G^R z+@J)RPEE_qg#weSZPo5X5x5yNP4fd4ehNJ8iMd3$^97!Hes%^jU7^LeT#;F8fC#NV z%vh~QBDt+e>?5t3!Y?(y^*uW2I|ysH67UdFIX|6IH1J?W3k(T5Qsm!JUo_IA)UXHu zuG;0>8c+CQ?xix~EUtmSy2||LH~o1X3l$(RKrq0Q%2P`(9}5KVQoW>KV}~YerFJyG zP0D=RpCFDHYukKWnBe=&xZ^B;4_)*C4z_FksdR;si?#HuTGf(h%Hm#zn1SeC6HVOy z&|Y8rc|1}A(HL_-Q^K*PzU2kmAVCItS8m?>7zv!}<%My3!1|(OddS)0X?bV*K9Ss-zr6r% z9`1|OF9WXXMX-6y#;v^t%;;?~|DMr_Ig(0}~qiT_f@jhCc zm<9&8X>8Me{9EU+r|Im*jsa)245Ft@Syk+&a^97Ko7Dm5)o+x+9X4RTSn6|KcMID9 z?W2aa1!^OTat}3M{z8 z$V&#z)yUZj-=oeO^G#b|$!F=PG^7|>djqF}5&DYs6Qlo+bOB zG`9kl4Ci!%Cu}syu||V7Ux<|}Ft3n+A~YI$jC{BRU5QeW6O|%?!)fVi1y6vJ4*UPF z_>7{-E}rpe40+#yJ-sxkG$(P>7tsJW0d`|eewi*tTtq@LtrU|1N;)vkg0xZKmA!zz zrYTDVR{?t+IW&X-FEF0bWt<#azmtmv`3U{lKj4w!*0EW87Q}XjF}nye=II z+gMv1|KgUP+DmxbZsq-qB}^nfK{SJPWX~nDApvErbJezOl9x*K_aH|Y`_*s3)1Z~P zh{gF^km2$T1Q}N`u3^sv+72?{q%H&rrsCX7h`U2z$Aq7zk5e9ZFG-*f6Uzjb!6phU zmCh}@MTZdxo(|(XrUIwQi)`~D+tktuglxt1W-rBq+>){*M|NP6wOp@}l47`(@>}O2 z(6u|W__J5w?3trKcR2KE)sWw$8z#-JLY6SuUsgouVz*9ChrgG)hm zQXvExTrsiRVLK663L^=*SC<^Xvq}FO1(DMP4==Z*NDS8{>)C;6w^o9^`}UL!Pk38L zkFYCJq;7!fPAU}x^~bQ4TFHZN8=KU*N7Q#j966v3TQv>3 zKSr)=WT2DcML{Q5eNJ_M=EW?mQ+XWun+oicb|n@ovJ^eV)mjqn50x;t6is^AUj?y# zMX41esgbE?<;n<5l%`_X)p7WjVpOw5|AbXq^vo~r9bF*$ln3(6 zOL%JQP8;(g^513CPyK;IoGC?j$dj#Zhcw`&50)uu+r1q!G7 zOokf@f^v;}Qk||*S875yPqHHR!ddfY2Wbkv`?%NKOBmm0QZ`+f9Lzx2!Cd+RCpoFc z&=o5X`?JXsj%zz5{$11Slhg2y9-TJpx&w3A#g*Bff(Dkrud{V`Ph1X8W@o54#6mh5 zDPLfqXnJ9!bBH%zO7!@RbAQkn_L99;#8EK6JFx^#LP^u@tVN{)p_sC!2R>U4F1CQ)GB4X!X3}r6@ z59GDIZTo_|(8oLaRZQ|A;lLgR2}i&Z=MM)IEok&;d0&>FZk@xNL!rDHthomKT6VzM z`Ntg)s3*|TARC2$-XN=05LTjGE*!oC-7NAA#Kn%+Kj_#9{7a`H)wqMK;8CiBN<*P| z5=^lYiDW*$63!Voqpo3FBHg?KeYI7Qj7u2|<85uZC!}t&2bS`hDQ1m#p>99F+0 zA!cW-2O(u?M_s(7HP}rdg&ibVmZ0b>{sO4h5(~r?AQSZS$m_)ece`60Lb<3kGXPSN zlEmKR{2Nl~1@OZV*Z^KuscM1m!=)`j#46jHE6A+RT)Hki$|NIqo?~pIjT+P zxEP>csmObV022kEleC-iu3{Lm>zCApaU0*!+MhL8FUYlnnSKTkVE|YOUL6Hg<&$cm z(f9y!F_&&V*|y53r@#nOGy9m3{w}^^MG1vafyMbj>5h4nYR;jc=_+2prrHe!#xy9Z z?n+(p_F<#k2bj>0Ocz6eZgcXrq;ffO_|kgX`cQJT}?k^5$Rb0tz8P4^p8j^Nal`4iix5 z?(^M^wWtA7X*t$XQ?58w!F7T2gKFB_D&P-s5jJd^c7hDGXY z5V8~|esdu6;mlF*#VbIMpj_-A{Q+%B@2Oz*&r%&5i8Vo!9cOeK?l!tTRWKEt$pY&% zM#H7S?X4n4Jswb=Q+`k)RrMCfuAdTGs(@+>+pRMb`49@=)5AisyA4Ai(Z}s!*dQP- zgZapJmF^H7k<+JC#fHW*F3>Tywal8mv>0#QF={2ciltX1`_Ude6Fc<*h%{?dPlhMz zOm-9-JEi4`_J-3-ZqWpvfuz%*>%Ldnx;azxD4TL-1j_Y7G>VBVmzt~MzA2Zj+(xJ83nZPJST7xi+U&DRNVQ%|!4amv zkrT4zxK)9UEF|{kRpZst{U%5H_+&Nd4^j51-5b|c#u%Kqk?MA3Dev5C09%d$ej;+V zlhLdbf|*pLo~|G1=!fTdg?#0Wn1dkHn-W@Nc(=)cJ((^S@$>HR_rL*Msq|v)bvS-w zkN!XXIH{}vbGCHIxnrN_ZAf@PjX`AYx6j8s9?*fO^|gY#mR%UPtKj9&1-ivNVc4^e zMB*A}yQ|A#dYt-8n1AkEJI5xFiR}UC6$Y}+mb|GkU?8(U<&ik4|F4MzFr;|EA_HE_ zKp6$=C+&j?|CKcC8VBMzf?u~ij4 zvR}Lm@J9R(DyN;%yBxg8a(oojztLPhA%)pGzVO692ljtIBCZK!@NuA@$Ms!=>_1<| z;|Nx`8gS)bKY$NOOUAiEBwVj|uxzlHJQ4B6`7j7B!4XM3Y~wC)jH0W;z6e=pBuYn{`0;#y%%YNA zJ=^%~)Qt_}i@B64WmXx^t)PJ2G&W|qjHY>A;2^?2Jxcta_wA%qjNa$exI_gCK+Wll zfSJQu9nbHz4dtIizaoy576COfl-U$qsoLIbHmTaQN&^}~qPgwi=xT7om_l~fp`HXx zkC?%@KMV1It-w16*#^9dd{ucFuh4YR1ZW!B$Tz0S0A?FjErR=2XA5G7@|5p3M;U{m zJWwv~cB2IK=@Cw!Y8cTP0hx}_{Nzg6;)O@gxLuKd0@OlxAXvR_ak&1DAMahLhtnBD zlp%43a*+;bm7KuZx4tCdp4I?t=amOwplj8ksJuGc&2ZTj25+a^npaiS+wugQy{?pROFUPh&qVe<2Q-y=cL3@QF z)6-_)e@z-e)wB#xLQ>Av8jH;@e*A@?Nhou9kWVpoU@!5TPju!8QIB-qTKy^4fJF(tNy#pOuhW(0fbB{|0H|`k=pg_q-o+SXKA@ z!Eb-4NEnC1`UQbh!yH(xc&mJbUnhMTX*B38#%psxpDn@@y=TNpYRsK!GhHb=37GLp zV0F!WGdBTwrTB{SUs~MmjR=Hfcb+rBFE=?MStUg>;_~@pB!9D{ zcrC=W*e-*}q8pfClrx8xkNM|gknnnYUmkVJtn=oPXz-jGAN2S$*_87kyI>GYKM=2x zHB$$0`nWwh&ti}O82XeQbB%+N(Xmg$e9tY20ql@e@BKcRWN zUu<-|7KgVJ2;XYJ#5xgKzeR+*=`6Rs-ClQ0{4;iOvm9ps%JXnLH)-^)oHDJdy3j=Y zR3h#gMaw>of&4S@uvIz7IbF9|-;CtyYpLTQXGu*uz`EqBgJKO-XoAsdIDP{9dB-Tr zKHiS)WMm4neFbX~_$@xj2$6AD_SM2qV?(h)FrYB1C9&V3mzII3KIT^)mH zew$pwf!I`{W>MU|o9yc_el5X?*b0%k{sv}oGknKz%gL`q`1TSgv@j`3vG&cBjD|%{^wg5V;;0@A<7mWKl9_)wJ7i?asqVa&C!|XqQVSrjSP+8up)`oO$cWLOIn9KeQR;qn&i& z!ymNeXYNQ9C!eLFYn^(J?@+pMVQZ)>KAJx;Vt*gtLrv#TWFP(^BPLV^B^-zQ$+5cfZyj~$Nki4Cx4_mt!os+e$;s=PY;DoO=!kvBYG zd}>4b%6I}V72U}7inAxGOU``RqiyX3yX3Ntj_=y&?%L=j{Y zIM}@|F>h}`Ss_)dlj{5f=LmI6u?-OYF~!aw6!5a-5y#o^Lsc%GEw;>MhEmdw21jm` zz>slMe_vq0jVD^w4Hn)VJU07S9>*R!VnV^wWM$#%GnA)xU)@}dF?>0@mc-l6)v1X= zO@YvbaY3Bw8eArZJLB59rDPyA@0M;Fz)YW&4N+fM@FjnOeZ+oq$;Ng`^ zyu^1#OP@H*yU7p8hLYSd_hOE9cN422L(TAooAMvW20!dMz%w+c!JiellrkDVAI?n` zQzyJg;Vi`a$uy?4#DIxE2)~oDZ8Ub zBxP}l&ntdBP7DrF4ed8J&pcqt=+b4+D;CJjh>eECbY3kYDl|uAYvrs11o-D z$H^1kZ>CkVwFN&3mHP<_EF`7ssqQ1z^+~cBc@pxKFKRupzJ!V@B9mEF^kmdAJJi&c zNjX2%r&SlGs5&YlVE zXR;qFn2+7+x5Gg06t9rWYNMQUTiAKac-A_3YU0MbF9VMruEogK=n!D=ze)(uZP}fg z95fhk(%iv&w?JFE=7&|giAVNBVSn(!;SBl|+k0-Iahl|sdp|;jR-sY;_SjIyNHYH+ zog>ooTiGr3&jWv8IjUlVH*JBh`$oM63ZlM~i>34du0A0&{+Kg%HF&)4HeOD&wt~g5 zQ8Pr{;9A+nmY2K^9Hx-|XfQwUNE_-iEuP>9Guwm=-nIZ)v4(TWG9Xh4s++07hi+EW zFdm$3Ho|Txg0}9te?4b&8bPWS12U2Uwu{{xH&RK7i zX?8;9Q`lggUW&f&Yd?k^4wQX4tX>oM#)e}<;TuHz;L|?n)!cgo{5``$tj7HINGfD0 z@_=s!c^l_|m}>U5Z=eR6vzn)Vom;?mtDUKbu%%boz=ppCE ze0pA!m(`Vb$MJ1k^KCBd|2E5#82e@)!#v>;^AG1|j)dlrhTC z3_riW0^|ZspwuDTep>Qszn<_UO!mr*GZfN@YJu8a#`PIF!xhPG_)uMtNPB(n?BiQh z-g?EuiKW_zkFC3}gy4tt2h5tbFfy^apiA*qHOk?;*tWv#=!+`%ry+RdIAajdbDLx@ zqjrCm7Qb>8yL9>Xnb#IVQdjBsY&4@)b)lvr@;Q9pnAi&gP2up3Ms+s>-fyZ0dpz@N0 z;(~)oPyT!U#AA}k91?#507rm4F{5#l93f+iMCpyy z5e#VS?%y+e|b_aZM?Lu24{@e18T zVYvWy_>l|1KQQ3bD5HW(1okXZxus$*VA*Buccal_|0bZWf``jDC zMrDNZ$wQPVGTq_{B%Gmvb0P=Bl><8?Psi1LU60kYw>DO1{4`9XibcuwKHFl`_hW<) zc^Ox^9Z=P7q`8`^n6otOJwm3WEl=nJ-P{|;D&{eMkftppcDM8e)$?>d!otdqGzQIM z?Ftxzt3`SrUj^RW0^WKTvdkm+F*f)HC@q^@Bn4(6QTv4E9*jg$Dl)r^_27-7(}hw7H;%c2MQe%l79cc$o->6TB8@tRJWr2hhxSu$dmj2 z+r`vD^V^|(jKyn~66EHG{_1NJDu79wzfDm`E3h!hm_65Z$FGFw>?}b>U*bztB z)#aSY^l+(k&18=g)`>ZbeiNRj_@mCdv@JslyJlKE?0LjmEwsFzy48(Fg79FZ>_UbC z-(|^DbHJw%;ph62ocOs#Jspof?`8cm-lhcfyq(j~UR#7J66_Ubu4ixOaT-YN{MhvE z56pX}m}oB5#!Uza%V(5N)G@gGX()-$s02jJ>K84{N{LPD@pT<0tm%lS6GO)LJd2S( zF1dJ&d#6o8e5S`DF30BP^*4ON? z+1DBDMzyw@l?83=01&>Z=j}+y(!tlpd}JHWsrW+^GC>8-$51Y1L2)o29{1YN3>x9^#N?W_&o=i4I# zM{`zA+8}NhWG#~a=!&?^EQqN;-g^8DDvI0;62erl*?x*%3vyyHFqoLR=bKB#xXSF} zxMgQv^p$jIy;3`B4;+{exAmU{v6ypUV#6XK?Opg2R{vM8FQ5)9`hHDi-#?0eM*#Y=mRF1Udd&Yhg!$K)0sr+W zs0~SPzpx=4i&<3S^A=u3!tP_CT53pM3B9+vLCTwIz+%jyAOb=05)MD=}K!RimhLR7oSy>XUv z819pxFSbTs-1H*sUtb)82NtHrXgUNdh?Z>gHvDP~e6MA2gXsPcdSUwU3E#(deEZ-B zTw?^bw>FJ|j%O0g&JFGmw}2n1G)LyFMwbu49jzuM-zY9gYypOz2k>w=9Q$l^?e!^4 z*E^Fpp{QNbgr}g9P;ug4#GTt@e?S5b5JErjtA(l<_vGL2Rsj)64x)&{jLDGN>xyv? zN835uicV4`U2g!uTdQ6mUmW^p)i9B}g$9n?;0$>u9BcrQb~He$2qCjb+dT;hdHQQO zcR^r+f7zvsVme$~KD(gSs~1-E!Gt8p{Wf{(s$ z@xHCB3VYnnlqSl{Tjt&mKVK7_NjY{Z`1&`y3EOt}l!p(l#D^$QGo_}y{dkhMu}VsmCw^ON05*+9XH=HL=fuhZaC zRmRdyXTz+O?JYKGKE|Hji5|nOAg#>_Wp;3);67pr+jlD@Legm2-zPV^%p1y_1w&rf zILwu-Y?9hfD7sXihMzF866UiB@V;1eLbE}zcfKbHXPGbdu_v7FLk598dXI~B{slZI z9B$d$4CmU#z*auz2FczkV3^|1E(XxPF315|Nx8|cN5UE@_+@tBvbf3^5SGTDU&31)D|dyI$)XSan%Mc z`h7|>ezFyC4?pb-}&J{$m zG&x$|_>V8CJ`z(xaf%A$kbAmajI(v9woSRV)VBxFWgd#3VSH&kZbK;DAL>n?b?X+ut*}0XdV;U{-kA z`-R0IFmI=vrahYeaRh&!CR>I}@8L}FL(uGn7Neb|8VNJh;uN>0cV%8TW2NffBhrdcNvz(X-^ zwxkUAlnz;bmmv`jJm~s)`62TOqJW6K%d5Jb!lD))-++SJXI+C{^$nP_tsIShJdRy# ze!gb-zuNn%uqxZGTR=ccQ9%)qR!SNqB?S>AR1`#F5mFM;v1rAjq$DJj5`*pr5u_y) z5Ll>mOSq8U^VaWs_y7I>zOH?`54HzhdVsF=Joi0gj4{W|Gg$O}Q!`Q=dC9w9{4UNg z7fb~JJXhb+AnQ~o*nT@$sGdQ|Py@Qn)ppF@HDjL@l`*fGxn+4+Bx=6{=Hg0#Q%%Y6 zAC0EGvK(DCVJ_G$xp`&Jn;yk8KI7`a+8(JOx5yILVNi=Kj2Y~Dzr|D{?@c8RYw3c1 z)4}XgHez@QA43AX2F)+9rq`ofk4VyR8@o@WYccX!TuE!d23U1GCEFv(-?;niP5d1k z#NfOXJ(w8-1zfi^q>$xCM_YRr6w1j^Gh$cP_nV=0b9Osf(A7d!;vxWhGKq&9 zH<(4KUy8z}&=w!Z@RA$3+RWRAAz9sbp~)&uNo@9Qp;FUisZe-@i(cPXhN;OUSQST0 z_T569sDIn8KRETFRniYe(#{5-oS7Myux*LYK9N7r#A_Fvz+`Z>k%A@1(dG=Y$&k!s zJVxE(%%>=R{Rn54m9}OoC1Q(fw|QuU-W#71ZF#Zrb6id+bK4%< z_^hyqFX2&$uh_t(MBQeX-Wak*iO1dGp;nf!mR;)*#l;=?%IyL3Z80n4ANd>sW{^V2 zU#?=Mci2PZ_}N2!-0lNieeLguiY}hZH5*AVe>k*-10AmwXlreXJ~cl9px$d=ersbn zRa`DGf#lUjLRjPD22rh(ulH7yAf%e>-rHE>AldJFZk(dF0lM-ADffl=I-N0~QlAZE=9D^_AbXZ55@6^5ttX5&1?U(Xhtl|Fq_ zuhgPli(q?U#5q!ZU-vm~Qv6MymW<|7?Y2XY)C0}&S`ff!g9zJtzDBEa<&pf3;(D0_ z5H(q73!%HBc-4J>A~??nq9;!ic1uc`^67GJ+2!fneQR7JZ7;W_aU1K`1_ndp^IqKc zmc+LR7jno@l2aynAyIHmA?HLIm!WGM^|tkbrun^rHAQbrlA(?`67hElGGdoRe(YT^ z0fs4DpS6<#I`Q`j;FW96kfF0>z04-+|I(udPHnV^0O2f2zVig zB8~UD@8wDhljMKNRlaE#)pEs?T>iqG3^q+p%#f6`LEh8_OvAT$LB?b#7o>sqdSia# zp6mKPxxo@ies>Lz6gqne#3zYT)wr9#!>+rHhb=St=hy6O1j9gj`NcLuNcOu=Cfl`_ z1o$V+n?7i>nSsBXb^Mt0GIMGd`JLK!=kUf6A83L^ zX?n1teJ6uM>(7s0t?p~yL*g-02f2;?3*W~OQt;)iKFtTy*c_3ZjUGd-6sMO?+1LLT zyFUc3;Lcw!VvD%0pl9@jO}!H7T{iOLh8?Op4<`<|UXJDK!PpT(B}f+geg@jQqKero zcSKkG(~{gCIFGuXl!cGQ^d%P+0Zr>Ke?1FKaJhjn8AcDtZmXc5-&9x4P$pcUk$vfD zg>^+M9-GAMf)n&^E>*8-&4NHZ2?{s&50hX}{}I4ZR`BL8d()h#axh)8L*xeMFS+OK zt)g0DOEG^Z<`qUrc$=95*0lM*`3b>u%K$x24hJWB1z0RKy?u3OnpE>xM=ll7pcMgy z@NeXuRIxl%q}mbOf%XB9W!fYUyaPJ7w(rPFMu5Tcuf3zUt5AZPk!C5NZ=9}~ejrb{ zuq!pm5!>bcM&9l_oXPhRTDte_r}lp9(un@6ISUyPH7Dt9b-(wgi(A6F@>d108aP z-A?~?%M^Prm`7HwJB436f4%rLp7un2Z9dsDDu;K-KOGSB|B{(|8r!Ji(VG9X%lIh+AU%KoJyuNW6`HKXcIW~H{9{21Unle5TsW74!_+zJ! zGCsx5-OWNrHW?&qSx@bhI(NLoH!lul317IzB+4gg&cJ?}u3oOPYw43=;PE;b*{NcN)@tQJwu5PNNc=1fvipf zXJ6^bhEwM~KY0Q1R6WfmsuE_7eUKHZt$-z5=-WPmZfp=gt0|qrUZz34#^a^yP(FBH z*@A`WOYzKi|4H9p2~2C*++zhXOC#VQ6|R47I79}!KGW;FdXz;Le-uNYvxAHo3}N4f zak9V&!S`ATS!(+WBQTSdE}{A_NTAu_XaSb5u^E?5&YLv!^qPB;R)uwHqc4;!2-z^s;6bL z9K}xIaC5)TuSH!JSdp`?2&$sMe)?o5FK0<{<1(Cfv3N-SZcsER(V%6vxayjxh|t zrjDFp@%CzNeYDyt(sAz&-p_pMm|R8Q^cxsls?Yi?cyH()r3uSOC@sqBxgJCe9tHR_on@usGb#XB%&sl3v_dYV!`o5 z_}vFeRCS=YGGKlSOz_Gc(-U!8nlcNA#C`*h(`C}{KA?o@)ndK_6B`-Ed`i-ygm=*_UaqVZkwJD z`zFm5|C$rhhT7h($xhAmr5pB8f}nlvdm?PQx{%~QoRI99=}G_4;bmKQ#cMoFA_J_} zYybG`*&TpABj+X{BhWE5ck22O&iSq!Dryb1O0w%OyqunXv$*9qa#kPfKgx0OBh;20 zSV5j@nC-j;)u8$KoUA2aFYa?;jVqqZ+63PIT21IdHXchO6yqBbiOs_YpkVqt<9(jeV)1{IuJ9!ROSWUeZ}{44eYfojAzNIA<}?%J>t?z(CyE#<>_#g; z1Hc@_I8M$kXC7e%BkB(qArm;b}{|- zX1?H6f^Fre`D3$5U!_yu;qEfSu%8z|S)wO$Hc|oBYXw}23yd~mU}RMU@QvU7e={Go3rCL+3!iEp8$n}b;g`)1#?&YuTE>I=o>8${}Gd^Wc@L7;e$9^kx z9Yjl66ydvm3+5OS0(gf}tP%4!o_)+)Am;-uny^dE&@&dzp?Csb$1KT$}Y*V zz@Z?af_#VGOoLUE6O6LW#~gJ2`Au>930I1v21kyj`P769et9faL=FmX*K?Ld@z1B1 zr&G+QOx-#j6|d9NJcn-?s{BIblXne0v(3COTn#4QR6Eg-2uVbNnoqHoI(3Sj3QuSk z)W443q)o$Z2T`y=B4$go{OAmASKwal)+XaZvkmBf9`=qih5Aqv@|g<(%xP13 z;s$pJv5lFfv zcIA_y9$76EoOay?$ssqqhv$+kr0Ehie=ZzPlbyj~=lP+Z4=#I3*Fc<4J@xF(AQC-U zFJEA~vjqzayoTn8RKeY-)D5GD`GU=pl`ol&t-1jM;YD^kV85(ZY$aX8P_S%8-aiF z27O$>I+Oz&TuN-GT;^Cif1FCfb5TGNAqm3stzG3zzF%yFRn<3VD zrFFZDcfSbh9JZt&lJS3uCj+~u@WnIPE~SMeH1%@vdIIM2)v3~T?k5ukI+~N3ax8K- za_k$azSDDQ7_I&bHV?c`G^s<9&l0FDx7ox#lQ9ht!ula+m<|Y;CAS(E1hm^jnmvWK zelJ6%7V~FR_>z&^`I)Tu*WDma>3_;-k|1)ZL4y~0&DtuUmVbU80I@IHbhb!U>Dwv) z_g%IRf+%u%@sm3fE@hsDLB0>eGv|v<%~vw=ND+L0j1w7WAoTbWC*W2h$MO1vqWWdK zkhpAzInI)`gWSm>{q9J)@SmQPV0-4Z66|ct0Q3hn6Pz8w2@th2oy!`=c8OSZ7#e9v zMzDDxRb@}mE>Z8el8tSS}@v+wls zem(_<(|{j(DR1}ZA*tA*Qi6(*LE-%seh#k_OXLH<6=19`YD;1?Y&c9)W4YGrVQeYn zaJF&2NuVM4rMatYcrR6`!odC247+45SI{7e=i-%+8&(G7a+Mzi97O^6Qv;+|ihf7N zKQKj6K7l6TB%0I>%N|hmrY#_WQn;L+N4<^!T1MNCsAatMx-0QrH{XY$^}C{n(i%t# zs2wg+pwBjd%A8xpRFkTx%;AJGXL+NBJ|;GvZxaTZSm`Q zi88cuDz5I?N9yHBG??85ZxvtC%{A128^!E35ownB)YfdyS4=O(D#?0;=dZg;U^yj- zoknaG9XD66$wts!zsMbAqqHS8TKIDqx+~l9bNS!_^k4>)bX>cHO5Ez zQf2Zt$e)c{SI!JTzZCrJ&A8+Tb(ZNS)V;~Ur7vfZ#rE&L)6lELX}ex+f!=di(BAF( z!@W*lu<2chYe1NotP+QjloRE9IS0L@HDIHn5FD;n&3k4dek8?Fx-JEO#Yw{6#aZ}{0eb} zwlCx>GMw|{9xk*9G2%B^)?Ctsy(3bSF*+kVotcY&>Y0Qi5ex1c!-CgcyG*nEF15#rL|{{+IQt1woRlUHomm5JM-6Hl`)+MtU+^b* zbnS4$iR1OPe|_)+?MP0ZjeloI)jNA64orc9oU=?12_K#`;rK|qP4^q-dN2X%bUC1>Z)ayyzCAojWf9SwuAD61ByF*Vv;8bGzTO?tG}bH zlFpk=zj_5_!_d`}(nJ^Nm@^2)RP*Hu8*m4YT}AOMm1v#d7rBbqzk-`WS_auVSR&#{ zYo?yt-UcbgnaO-f7#`qGCjxC;Q8jpLHOg}B)1BPjNz`G7l2bEq)nct!^6WqVzybv_ z6igWb@_GU`SXyi-ONqkIA0+}QXMRfoWTsvOb1wT)43>UkYl6+ z0rPGBy)qu+HUg2AX4e#rvo;=cTo&HmSdN1XpbP>o8r`cCQ0@xT4Z_wfqoc<39Ha9ZTiWd_w}I-wY41C&Uu zP`njg@)Bv~czWJ>^-$iQR^xS(va2`oETPR)K87>*Fbs3PjzxwU-{`sMf;ZdEf!1*b zUoxz0rz19V~gs(Tgo!bW;k`9=9(_Xwf0X(mT#y9B4qd-F| z@}@`{uH0?dly(hr=G)#D*`s);Ji;Vc^&3M>s2eCquJe#{aEouNTE2 z(2xZ%yomwV3sc5G#G;AI2DSofyA<`b2Dz_vJU@5V{3>9qWtd`XLH6C@c?W5$6)>xw z2Kbu*S^$E#r!G#?b3KYDEcyxtIAXS6I`nvVMasZu=Ngn?Jt_mRam);}t*(*5PBcjO zclUIJ2PCsKE#p$k3^wk{`4C@M{H;}BtCXid^pg7jxv;9<3c}n*j2FPYUKf}uI5n#v zv$_O!Gv6yM<60^M~#OsmxrpdRt{XloZF3K-J)7cp(R}Gm=jZ7 zqL;J=5B9JNpxVxxu-Rq`C-y~Zu38Du*aA}UZg`4N@h{Aq=e-uza*T@K!qruSC7<@) zZ_)L$CdN+~qNy|yFeV?~)};&T!SUE_9<7)2=mPy+ECh+otsMQLti@R$aMk zJS%kqSH)w=oJ!L?$OItaZu##W{YizI?%;QWPduA>#9t%}T+H_SL{iV}^HUM~ zlrFX3`>p8Md)bG0>~E$2hnAjTh7YZISn`cK+1+KR~942IoVq70&mJV2{Z`UJg=j* zKwUHHpwYhwHTaSmNe>ARtxAy!% zSoe^OW%M!Ntd8|*fbs2@VF2Pg@LlRulSXRLov3=;F!WyfHDq)jm^m!Do1$Xr4!KFH zysbLwEUy7l^j!Vnu0G|bBQfWU3TVtQc8zaEZk9W~0C1v#(eGUdTfwBZ!lMIKjA7lm z%6@+47$2)Ly@=d$9~gZ(E`Pz9%qRfMBJI>m;&)bj%FDaR^B>RF}hKSrwm1_0{UGUOlhiPLPqvM_* zBiQgIj9tqnM8GQ=eF^IZ1w|}C&Js5RoAAW>8{DgVX3&uqT6HrceDf@fMMZ$+t_Ex} zaqxaI|Kk$uy=&VR{*bAF%E;%aj4Zjn_(}*Q9x(^g*6vw8XIzIH$J0j>af@KPUpxr) zZJP+l!1QM3pF-Ey8m=z}Sb!c=Q|aqZ`0I!uP~b;@zYS9YJJ5VeEwr4o7d&cu_9g6w z;LIi)2wdv~=tCT93}ROIqZuDU=tA~pvNm26bxEH!ABAo|&&7$mp#46UrSr@*Jr{!q z|BXer%J?64(!Z#IGXe%b5=j9*mMBPx`uv>u-C#Ja<%hsO9-2=EKR}4aC;i|(40rRP zh1Si@kFL1~pMroG!x{(*BkbCsrT5MAZ5C%$rT<-1fWapjPy_;c((P;grt0fK?Z@)s zTk{1uO=4U1-ri(`I;}t+NU3P(uPqa3TJKSmhe@taQ1R;R{2rtm6B<4Rv4(@TR`ySKGGa-CdJUFdWoV@ypov*XN)Q7ky51sS6Y5 z3z8ZOM*{`;rTv9fcM8tdI7mfD$_6dy0mfB zm7%nkps7+qO_faMUyaof55kA_Ej6SWQu|O;Uj}r{J{05+t>8Tw$tkW_L0c~u2NwKT z(5+`e=`S96I1m6&Y(CZFh?_A9%uTp#|}$^NibQiR;B%6B`UO6w8&4CgO<#a>%`4 zn8oN)4oC)|yf^5n8?s9PcGOOp3f>>99cmU&2z=Nqvm5G_!S1Ga#sUquW@S`%8`+|GX4;`B#lK(fsbGE``?sx)KD4jkbn#e=~KTXRG#G zRt*aj1-g!Ukps_-{Ri)n?*P*g3t@0rd2R!&8%Wy&2K6aTQc-Z%N)*?`d5(wGZ_b#R zRt7{3bIb!-83!i3_XKT-E?rwbU@|Gh+bt>8L>2$cuhkRhH9aKAKq)_Ft-Hh?v_xd; zSClGbdM^|PP42GWY<@2n8Vt&#vhUutLYM}V)xsryrf<}HT}#!9-Zw%1_Vl$byE_x=%~uoNvQf8W*6lP>dtwT^zB zUyaMcpm3i+-6yvdizErqi%srVG>}NnmR+xc$V2_SYWgK7=)w4#UwdfFdZ0T9O)}zXj$s4{)0(UE*;W9cX-O!1gOJyF6qWnZ7P;prfZdZ4P%Xj_O7%L!~_%?GsKP%)irLj4W+2@_Q9|sF&8b|H@=lhAJ`@0sCqmJDC)(Nr2 z=o^#ZE``am9`D9Vaaj>yWrwKE7`8%a)7Iu^i;pOlLgg7^6B+>}DXH3ts&cqH0#fMi zRApAmrvAc#C*DHn`vDZWQCGhBa}x#=TVVsYoh}x$HO{inz188eK66#(-UaXCqD**# zC5PBhoHHg~9r>p2lzA!O-^@_<#0;@>4~;-&y5Q&;bC$(l+dy0~iPq&WYFa!jmI0`~ zB%L3|YnS4`H+G?^(0HjQ$>0Vl4HQV(3bIKC9?ahfbPru<^N)4+8Up6$BR_-3qqX*H z+88Z}GVCjVpqnk|NTp%qvuxuDYx)gN?G(GdcpHgRqHz|DMX(x|E8upXILJOnL`}N*oeiy&7 z8FTH^{KHD%2cLs?v>mQmAG(k09UOdBtw_RPfZF(hYasj4>G2MCP}IFY;N70*ziTVy zIuil4@mB#V8&TnX_(FEtS331nd-~rQ3>^C5K}fhjY4Q{8YkqtQ`pKgWI((3);meV+ z3i<7L$^>1{_PkkS8J0Z97TpH-HWT`KGi-S9EI;o){_g(N8R43XDv#>t9kHF;Fx9=* z=n2-=j$HLu>R6s3SGvkc! zjQIgdu;lQ^92%CGW#1$ziqApQ=4FrZI|!@_!$3n8zrR0n-+-M|@qCh#wNSf$ z6%v)Oj+8_V=jaCHXj*dfgCP0SOM|12pXl_lHJdsT3s6HJ-9xP$)2WSOCpX^kd&6Lv zwP=w1HGoHgqV05Tvs}-85A+CV0gb!(LJLHzSIkH{CiXny=@-=`-UWKY39uw0^V!2{ z7Qbj&^!0{M+m84&%NvXJULVd8;(Ls|7LTJXa{5r#CwJ>SDzo~!9`YQdT7%XPyv=8Q z=fOxP-!!b#FwHIpBx3&tx<}W&poX~$jF!bTp)7X&m67KnSRm#fN|Jt>?Pv3*TLQTl zU^31_cZle2?;3efdg?o+-Uq7y0aWfv#923ZDfY3boWD@;blPqD?NNoaAo2;9RHg<-CrbG}f+oa!r2D4l>c2QrqK9)e+;&S%*6(CWDdXzd%hX*KGkxUduROdxxV z(lY8oGtQ%26ni!2WF?t=jd{wueeD^vXhg&?;@FjrIR0?`B!0Fei9aa8Uo|@m(H1`o zBas@3M)$cE;H*%7l>Jstt+-{t=sWT-_1?Bq`)^2;O)Q!rTF2FbQhSB5%zrF(DoS>jaoom0K?cg<#Bk2qW(F36$U%9s`o^E)m@4#1(hlG1{bMI{Q`Q~jT z!NO|E=gp(Y#BTYn8x)SoNEoEJ(*;6EQr3G&OLK(8n&8mUvbVQ2;gIK^#&4DlJlX;V zf0&vWiM*E&phfSR<`2#2W*Y!z6=KZVypzsta3>HTpI+e$1MlMKdzV0U^u-GRq9kC! z4PZEdv zs!H{&MjsyBwSU;eHHra;2P>%3aRpr|vNCMA)V*~s!BDz?-G#$I`q+K%*i7URT^Q>I z<$AQdr7X9?*-aOIas|}LbD1GQMg=YO zJ#o)1gai>+cD3MXGfo4)e2(2Z9VYHrZjUkte>Kr_>|?!-bzm1Q3TvIVk_VZ>$Y%Qs2Dvpcg#Vu7gvTE0u`6(=fuJ_1Nr0XuQaw*uPY zLznjptwI;~gZk}QZ$io~oVU@tB>sv3eT6nsLolpxKl62>;Mm4o@DMoUCXd=onQ4-} z)yqpU1b1imRGT0zvT@D7%Ewx?D00H1ZaW!hX~T}6c0-_zi{F%Ae7&62pw-dHp+=nt z5Zp`o5%Z|k)1zuN+HJ?SKnvxh_kM-0i(!mWq4ysgMT|Y?YP& zjn)Ggs@&L%Wm;2PlI0ScN`u_#n=C`_knn6X01wHaUAhs^M=5&yh98(H46_ymR}{lQ zV@Q_l1v>s)x5pBnrF`hmGR4}tEkq;WNBa2smgA^rLKUBH6B|E{RJIf2KaaFvrb7*BE0-2a9LEuo$Nnzl3HLUdJrnH@yJ z^orWQGRS|_ti1604D+g=u7QM|IwRtx3Cpp!-FAybJG z<1>lH+-|D*YM4fWzV2d2!Oiu2${NCA1d4;?4#+j zz2wNqxL%gf{wW7Un7u-MGy-heMR(rObwjT0aQq(Ri2M7=k=$Bn%g&shQ1s?s8f5t#)FSgW|t*yji+3@hnMhRY0!X;nY@ot(5n%b z{n12qpRVt$7@MHz`gI&gs%%CpOUf$Um56b-0oUO;dbBOA9#J5`tl{@ev%W?E(|Q@c z^&}F@u64<1lTtJDWqEi-ief69Ge@)6{0g_ck1}I`zWtz_A;O7H-o5`olOzCO8F&96 z_3upcC))k?ymmh6FiOtc=rE)>Hm1*{|~?EpZmBienvenida0.1 Instructores diff --git a/docs/search_index.json b/docs/search_index.json index d0e2d9d..30ef9ab 100644 --- a/docs/search_index.json +++ b/docs/search_index.json @@ -1 +1 @@ -[["index.html", "Desarrollo de paqueterías de R/Bioconductor. Bienvenida 0.1 Instructores 0.2 Ayudantes 0.3 Temario 0.4 Patrocinadores 0.5 Licencia", " Desarrollo de paqueterías de R/Bioconductor. Dra. Joselyn Cristina Chávez-Fuentes, Dra. Mirna Vázquez Rosas-Landa, M.C. Erick Cuevas-Fernández, Dra. Alejandra Medina-Rivera, Bienvenida Les damos la bienvenida al Workshop Desarrollo de paqueterías de R/Bioconductor! En este taller aprenderás cuáles son los pasos cruciales para desarrollar un paquete de R y algunas buenas prácticas para la generación de código. Con la integración de estas herramientas, tendrás la oportunidad de crear tu primer paquete y contribuir a la comunidad de desarrolladores. Adicionalmente, aprenderás a crear un sitio web para mostrar el funcionamiento de un paquete de R. 0.1 Instructores Dra. Joselyn Cristina Chávez Fuentes: Estancia Postdoctoral en Icahn School of Medicine at Mount Sinai. Dra. Mirna Vázquez Rosas Landa: Investigadora en el Instituto de Ciencias de Mar y Limnología de la UNAM. Dra. Alejandra Medina Rivera: Investigadora Asociada en el Laboratorio Internacional de Investigación de Medicina Genómica, UNAM. M.C. Erick Cuevas Fernández: Estudiante de Doctorado en la Universidad Nacional Autónoma de México. M.C. José Antonio Ovando Ricárdez: Estudiante de Doctorado en el Instituto Nacional de Enfermedades Respiratorias Ismael Cosío Villegas. 0.2 Ayudantes Dra. Evelia Coss: Posdoctoral en el Laboratorio Internacional de Investigación de Medicina Genómica, UNAM. M.C. José Antonio Ovando Ricárdez: Estudiante de Doctorado en el Instituto Nacional de Enfermedades Respiratorias Ismael Cosío Villegas. 0.3 Temario Consulta el calendario de este curso en: https://bit.ly/calendarcdsb2024 Día 1: Flujo de trabajo orientado a proyectos: Introducción al trabajo con proyectos de RStudio. Paths seguros. Control de versiones con GitHub y RStudio. Solución de problemas con las versiones de paquetes de Rstudio. Día 2: Creación de paquetes de R/Bioconductor Parte I Infraestructura de un paquete de R/Bioconductor. Documentación de funciones. Sesión social: Conociendo a la comunidad. Proyectos colaborativos Parte I. Día 3: Creación de paquetes de R/Bioconductor Parte II Diseño de pruebas. Creación de viñetas. Compilación e instalación de paquetes. Proyectos colaborativos Parte II. Día 4: Creación de sitios web para la documentación de paquetes de R Creación de sitios web con pkgdown Proyectos colaborativos Parte III. Presentación de proyectos. Clausura. 0.4 Patrocinadores Agradecemos a nuestros patrocinadores: 0.5 Licencia Este material posee una licencia tipo Creative Commons Attribution-ShareAlike 4.0 International License. Para conocer más sobre esta licencia, visite http://creativecommons.org/licenses/by-sa/4.0/ "],["trabajando-con-proyectos-de-rstudio.html", "1 Trabajando con proyectos de RStudio 1.1 Diapositivas 1.2 ¿Qué es un proyecto de RStudio? 1.3 ¿Cómo generamos un proyecto de RStudio? 1.4 ¿Por qué usar proyectos de RStudio? 1.5 Algunos hacks! 1.6 Generando rutas seguras", " 1 Trabajando con proyectos de RStudio Joselyn Cristina Chávez Fuentes 28 de octubre de 2024 1.1 Diapositivas div.grey { background-color: #bfbfbf; } div.center { text-align:center; } 1.2 ¿Qué es un proyecto de RStudio? Es un archivo especial de R, compatible con RStudio, que al ejecutarlo hará 3 cosas: Abrirá una nueva sesión de RStudio. Establecerá la ubicación del proyecto como tu directorio de trabajo. Establecerá la ubicación del proyecto como la raíz de los archivos. 1.3 ¿Cómo generamos un proyecto de RStudio? 1.3.1 Opción 1: Creando un proyecto en un directorio nuevo. En las opciones de RStudio Ve a File > New project > New Directory > New Project. Asigna un nombre a tu proyecto, sin espacios y sin caracteres especiales. Selecciona la ubicación donde crearás el nuevo directorio. Selecciona la opción Open in New Session. Oprime Create Project. 1.3.2 Opción 2: Creando un proyecto en un directorio existente. Crea un directorio en alguna ubicación conocida de tu computadora. Asigna un nombre a tu directorio, sin espacios y sin caracteres especiales (Este será el nombre de tu proyecto). En las opciones de RStudio ve a File > New project > Existing Directory. Selecciona la ubicación donde previamente creaste el directorio. Selecciona la opción Open in New Session. Oprime Create Project. 1.4 ¿Por qué usar proyectos de RStudio? Te permiten ser más organizado y pasar de tener una ensalada de archivos a tener carpetas para cada sección del análisis. Compartamentalizas tu trabajo al generar un proyecto específico para cada análisis. Te permiten trabajar con varios proyectos a la vez en sesiones independientes de RStudio, cada uno con sus propias variables, directorio de trabajo y archivos. Establece automáticamente tu directorio de trabajo. En lugar de usar setwd() solamente requieres ejecutar el archivo .Rproj para abrir la sesión y trabajar en la ubicación del proyecto. Puedes usar rutas relativas (y estables) a tus archivos, que seguirán funcionando sin importar en dónde se ubique tu proyecto. Facilita el compartir y reproducir tu trabajo. No más rutas al estilo ~/MiComputadora/MiFolder/MiArchivo. Comparte la carpeta completa de tu proyecto con todos los archivos necesarios y usa rutas relativas dentro del Rscript, por ejemplo ./datos. Nos ayuda a establecer colaboraciones y trabajar con plataformas de control de versiones. Actividad Comprueba algunas ventajas de usar proyectos de RStudio. Genera un nuevo proyecto de RStudio llamado ‘miproyecto’, recuerda que existen varias formas para hacerlo. Cierra la sesión y vuelve a abrirla ejecutando desde la terminal open miproyecto.Rproj o dando doble click sobre el archivo miproyecto.Rproj. Evalúa tu directorio de trabajo ejecutando en la consola de RStudio el comando getwd(). Cierra la sesión y mueve toda la carpeta de tu proyecto a otra ubicación. Si lo creaste en Documentos mueve la carpeta al Escritorio o viceversa. Abre nuevamente el proyecto y verifica el directorio de trabajo, ¿Cambió el directorio de trabajo? Sin cerrar este proyecto, abre alguno de los proyectos que generaste previamente (por ejemplo directorioprevio.Rproj), recuerda que puedes seleccionar Open Project in New session 1.5 Algunos hacks! RStudio recuerda los proyectos con los que has trabajado recientemente. Ve a la esquina superior derecha y da click en la flecha junto al nombre de tu proyecto actual. Verás todos los proyectos recientes. Si das click en el nombre de alguno de ellos te abrirá el proyecto en la misma sesión, si das click en el recuadro con flecha blanca te abrirá una nueva sesión con tu proyecto. Crea todos tus proyectos dentro de una carpeta principal y usa el buscador de archivos para acceder a ellos rápidamente. 1.6 Generando rutas seguras Se construyen a partir de una base estable El directorio de trabajo cambia de usuario a usuario y dependiendo de la ubicación de los archivos. getwd() Deben funcionar en cualquier sistema operativo Una ruta en sistemas Linux se ve así: "/Users/joselynchavez/Documents/materiales_cdsb2024" Mientras que una ruta en Windows se ve así: "C:\\Documents/materiales_cdsb2024" 1.6.1 El paquete here Usemos el paquete here para detectar la ubicación del proyecto: here::here() Ahora generemos una ruta segura a partir de la raíz del proyecto here::here("mi_tabla.csv") here::here("subfolder", "mi_tabla.csv") 1.6.2 Usando el paquete fs Por defecto, usa el directorio de trabajo actual como base y detecta el sistema operativo automáticamente. fs::path("mi_tabla.csv") fs::path("subfolder", "mi_tabla.csv") Tiene como ventaja que puede construir las rutas a partir del home del usuario. fs::path_home() fs::path_home("mi_tabla.csv") 1.6.3 Usando funciones base Si no deseas incluir el paquete ‘here’ en las dependencias de tu paquete, puedes usar la función file.path Esta función usa como base el directorio de trabajo actual y detecta el sistema operativo para construir la ruta. file.path("mi_tabla.csv") file.path("subfolder", "mi_tabla.csv") "],["control-de-versiones-con-github-y-rstudio.html", "2 Control de versiones con GitHub y RStudio 2.1 Diapositivas 2.2 ¿Por qué hacer control de versiones de nuestros proyectos? 2.3 Git 2.4 Recomendaciones para sus proyectos 2.5 Proyectos colaborativos 2.6 GitHub 2.7 Manual de sobreviviencia con Git Y GitHub en RStudio (en caso de ser necesario) 2.8 Cómo clonar un repositorio y tener conección/permisos para modificarlo? 2.9 Credenciales HTTPS en Cache 2.10 Conectando RStudio con Git y Github. 2.11 GitHub primero, RStudio después… 2.12 Rmarkdown en GitHub 2.13 RStudio primero y GitHub también 2.14 Proyecto existente, GitHub al final 2.15 Git basics: commands 2.16 Merge conflics 2.17 Merge conflics 2.18 En resumen", " 2 Control de versiones con GitHub y RStudio Dra. Alejandra Medina Rivera 28 de octubre de 2024 div.color { border-radius: 5px; padding: 20px; margin: 30px 0px 30px;} div.red { background-color:#f67155; } div.orange{ background-color:#f0BB51;} div.pair { display: flex; flex-direction: row; justify-content: center; text-align:center; padding:0px} div.inside { width: 49%; padding: 0px} div.scroll { max-height: 400px; overflow-y: auto; background: #111111; border-radius:5px; padding: 10px; margin: 30px 0px 30px; color: #999999;} div.alert{color:#bd475d; background-color:transparent} Este documento se basa en “Happy Git with R” de Jenny Bryan, los STAT 545 TAs, Jim Hester https://happygitwithr.com 2.1 Diapositivas 2.2 ¿Por qué hacer control de versiones de nuestros proyectos? ✅ Los proyectos suelen cambiar y crecer. 💾 Es díficil saber cuáles fueron todos los cambios a lo largo del tiempo (en especial tiempos largos, hazlo por tu yo del futuro!). 🤔 Las colaboraciones se pueden complicar sin un buen control de versiones. 🔐 Seguridad. 2.3 Git Git es un sistema de control de versiones Git funciona con GitHub, Bitbucket o GitLab ¿Por qué usar Git en vez de solo renombrar los archivos? ✅✅Por qué es mejor tener una filogenia del archivo. Git es un sistema de control de versiones distribuido, gratuito y de código abierto, diseñado para manejar todo tipo de proyectos, desde los más pequeños hasta los más grandes, con rapidez y eficiencia. Git es fácil de aprender y ocupa poco espacio con un rendimiento rapidísimo. Supera a las herramientas SCM como Subversion, CVS, Perforce y ClearCase con características como la ramificación local barata, las cómodas áreas de preparación y los múltiples flujos de trabajo. 2.3.1 Git vs controles de versión a mano Con Git cada contribuidor tiene una copia del repositorio central, con todos los archivos y la historia de los cambios por los que han pasado. Excuse me, do you have a moment to talk about version control?, Jennifer Bryan, 2017 ⚠️ NO OLVIDES TENER INSTALADO Git, en caso de que aún no lo hayas instalado, lo puedes descargar en el siguiente enlace https://git-scm.com/downloads. Para conocer la localización y la versión de Git que tienes en tu computadora, corre el siguiente comando en la terminal: which git y git --version 2.4 Recomendaciones para sus proyectos Dedicar un directorio Es mejor organizarlo en un RStudio Project Hacer un repositorio de Git Trabajen como siempre, solo además de guardar, recuerden hacer commit De vez en vez hagan push de sus cambios cuando los hayan verificado. 2.5 Proyectos colaborativos GitHub se parece más a un GoogleDoc que a un Word Document. Es fácil que los colaboradores hagan cambios y también es fácil saber quién hizo que. El owner del proyecto puede dar permisos a los diferentes colaboradores. También existen organizaciones, esto puede ser útil para manejar los permisos de grupos grandes de colaboración. 2.6 GitHub GitHub es una plataforma para guardar proyectos, hace uso de Git. Su principal utilidad es para generar código fuente de programas. ⚠️ NO OLVIDES TENER UNA CUENTA EN GITHUB, en caso de que aún no lo hayas hecho, puedes ir la página de GitHub y seleccionar join. Es indispensable tu usuario para los ejercicios que siguen. También existen otras plataformas como Bitbucked y GitLab, las cuales funcionan de manera similar a GitHub. 2.7 Manual de sobreviviencia con Git Y GitHub en RStudio (en caso de ser necesario) Por cualquier problema con la conexión entre RStudio y Git, siempre ten en cuenta la ubicación de dónde se instaló Git. Puedes usar en la terminal which git (Mac y Linux) O bien usar en la terminal where git (Windows) Recuerda que la terminal (o línea de comandos ó consola ó shell ó bash) es un programa en tu computadora que funciona para correr otros programas. Desde RStudio puedes abrir la terminal, lo cual es muy conveniente si estás trabajando en un proyecto. Puedes abrir una terminal con: Tools > Terminal (abre la terminal dentro del IDE de RStudio) Tools > Shell (abre una terminal externa a RStudio) 2.8 Cómo clonar un repositorio y tener conección/permisos para modificarlo? Git puede comunicarse con un servidor remoto usando uno de dos protocolos, HTTPS o SSH, y cada protocolo usa credenciales diferentes. La recomendación actual de GitHub es usar HTTPS porque es la manera más fácil de configurar y tiene operabilidad en multiples redes y plataformas. Es menos probable que HTTPS sea bloqueado por un firewall. Una conexión HTTPS permite que credential.helper almacene en caché su contraseña. (por tanto puedes configurar tu usuario y contraseña en tu equipo de uso) Es más sencillo acceder a un repositorio desde cualquier lugar, ya que solo necesitas los detalles de tu cuenta (no se requieren claves SSH) para escribir en el repositorio. Usualmente cuando inicies un proyecto colaborativo con GitHub inicializa el ropositorio con un README. Copia el HTTPS URL para clonar el repositorio en la terminal git clone https://github.com/TU-USUARIO/TU-REPOSITORIO.git. 2.9 Credenciales HTTPS en Cache Para usar HTTPS debes crear un token de acceso personal, PAT (PERSONAL ACCESS TOKEN), esa será tu credencial para HTTPS. Es una alternativa al uso de contraseñas para la autenticación en GitHub. Como precaución de seguridad, GitHub elimina automáticamente los tokens de acceso personales que no se han usado durante un año. ¿Cómo crear un token? Ve a tu perfil de GitHub, dale click a la imagen de perfil (usualmente en la esquina superior derecha), y busca la opción de settings ó configuración según sea la configuración de idioma que tengas. Da click a continuación en Developer settings ó Parámetros del desarrollador. En la barra lateral izquierda da click en Tokens de acceso personal. Haz click en Generar un nuevo token. Asígna un nombre descriptivo a tu token. Selecciona los alcances o permisos que deseas otorgarle a este token. Para usar tu token para acceder a repositorios desde la línea de comando, selecciona repo. (Recomendados: repo, user, workflow ) Finalmente haz click en generar token. Listo, copia y pega tu token en el lugar dónde siempre lo puedas volver a copiar, ya que por razones de seguridad, una vez salgas de la página no podrás volver a ver el token. Nota: Preserva tus tokens de la misma manera que tus contraseñas y no se las reveles a nadie. Una vez que tengas un token, puedes ingresarlo en lugar de tu contraseña cuando realices operaciones de Git a través de HTTPS. El punto final es que una vez configurada una PAT, varios paquetes de R, incluidos usethis y gh, podrán trabajar con la API de GitHub en su nombre, de forma automática. Por lo tanto, una PAT configurada correctamente significa que todo esto funcionará a la perfección: - Operaciones HTTPS remotas a través de la línea de comando Git y, por lo tanto, a través de RStudio - Operaciones HTTPS remotas a través del paquete gert R y, por lo tanto, usethis - Operaciones de la API de GitHub a través del paquete gh R y, por lo tanto, usethis Probar el repositorio Clonado Después de hacer clone Usa estos comandos para verificar tu repositorio y revisar desde dónde se está sincorinzando. cd myrepo ls -la head README.md git remote show origin Probemos haciendo un cambio en el README echo "Something I want to add to the README in my local computer" >> README.md git status Qué pasó? Ahora tenemos que decirle a git que queremos seguir los cambios de ese archivo Vamos a commit los cambios y luego a subir (push) los mismos a GitHub git add README.md git commit -m "A commit from my local computer" git push Recuerda tu TOKEN!! ¿Cómo crear un token desde R? Puedes ir directamente a la página de GitHub a la parte para generar tu token de acceso personal mediante la siguiente función: usethis::create_github_token() Y con las opciones que se mencionaban anteriormente puedes configurar y crear tu PAT. Si lo que quieres es especificar tu PAT en RStudio, las siguientes funciones te serán útiles: library(gitcreds) gitcreds_set() library(credentials) set_github_pat() Para eliminar credenciales utiliza la función credentials::git_credential_forget() 2.9.1 Actividad Ejecuta los códigos y genera tu PAT, recuerda no perderlo! 2.10 Conectando RStudio con Git y Github. Para lo que sigue a continuación, deberías tener esto: Tener una cuenta en GitHub R y RStudio actualizados Git instalado Saber que desde la terminal puedes hacer push y pull 2.11 GitHub primero, RStudio después… Crea un repositorio en GitHub: mi_repositorio > Public > YES initialize this repository with a README > clicken el gran botón verde “Create repository” En RStudio crea un nuevo proyecto: File > New Project > Version Control > Git. Ahi pega el URL del repositorio https://github.com/mi_usuario/mi_repositorio.git. Da click en Create Project. Esto nos generará los siguientes elementos: Un directorio nuevo Un repositorio Git enlazado a al repositorio de GitHub Un proyecto en RStudio Con este procedimiento ya no es necesario preocuparse por configurar controles remotos Git y rastrear ramas en la línea de comandos. 2.11.1 Actividad Genera un repositorio con el nombre que desees. Y conéctalo a RStudio. Cerciorate de que el archivo README se encuentre en tu nueva carpeta. Usa la función usethis::use_r(\"titulo_de_un_script\") y observa lo que sucede. PAUSA ¿Cómo comento y doy push/pull desde RStudio? 2.11.2 Comentar, pull y push Con la flecha azul podemos hacer pull (RECUERDA HACERLO ANTES DE HACER UN PUSH), y con la flecha verde un push. Para poder comentar y hacer push debemos marcar con una flechita mediante un click en las pequeñas cajas blancas de la columna Staged, damoc click en commit lo cual no abre la siguiente ventana. Volvemos a dar click en commit, y finalizamos con push (flecha verde). 2.12 Rmarkdown en GitHub Creemos un Rmakrdown y subámoslo a GitHub Ahora hay que agregarlo al repositorio (add), stage and commit. Subieron el hmlt? Qué tal se ve? No se ve como queremos, verdad? Para eso necesitamos recuperar el .md. El .md es un resultado intermedio de crear el html desde Rmd. Tenemos que cambiar el header para esto --- title: "RmarkwondTest" output: html_document: keep_md: true --- 2.12.1 Actividad Usa el código dir.create(\"mis_imagenes\") en la consola de tu sesión de RStudio (la que está vinculada a tu repositorio). Ejecuta el siguiente código quitando los #: install.packages("MASS") library (MASS) data(MASS::cats) # pdf("mis_imagenes/cats_plot.pdf") ggplot(cats, aes(x = Sex)) + geom_bar(fill = "orange", color = "black") + theme_classic() + xlab("Sexo") + ylab("Número de Gatos") + ggtitle("Gatos") # dev.off() Comenta y da push a los cambios que realizaste en el repositorio. 2.13 RStudio primero y GitHub también Usa uno de los proyectos que hayas generado en las sesiones anteriores, PERO, que no esté enlazado a GitHub. Ahora veremos como conectar un proyecto de R existente con GitHub. Realiza los pasos que hicimos en GitHub primero, RStudio después pero asegurate de crear un repositorio con un nuevo nombre. Y LISTO!! usa un simple ctrl + c, ó mv ó click derecho + copiar ó el método que prefieras para mover o copiar archivos. Copia los archivos de tu antigüo proyecto al proyecto nuevo. Solo haz commit y push y listo, lo que tenía en tu antigüo proyecto ya está enlazado a GitHub. 2.14 Proyecto existente, GitHub al final Supongamos que tenemos un proyecto de R existente en algún lugar de nuestra computadora. NOTA: Para generar proyecto de RStudio desde la consola puedes utilizar el siguiente código: usethis::create_project() O en RStudio con File > New Project > Existing Directory Si su proyecto ya es un proyecto de RStudio, ejecútelo. ¿Ya es un repositorio de Git? La presencia del panel de Git debería alertarlo. Si es así, ha terminado. Sino este es el primer camino a seguir: Con el páquete usethis usa la función usethis::use_git En RStudio ve a Tools > Project Options > Git/SVN. Dentro de Version control system, selecciona Git. Y da click a “Yes” cuando aparezca “Confirm New Git Repository?”. Si usaste RStudio o usethis, el proyecto debería reiniciarse en RStudio. Hazlo tu mismo si hizo git init. RStudio ahora debería tener un panel Git. 2.14.1 Breviario cultural con los PATs Si usas el paquete usethis Y has configurado un token de acceso personal (PAT) de GitHub has esto en R: usethis::use_github() Esto creará un nuevo repositorio en GitHub, lo agregará como un control remoto, configurará una rama de seguimiento y lo abrirá en su navegador. Lea la ayuda de use_github() para conocer sus argumentos y consejos sobre cómo configurar una PAT. Esto es extremadamente útil para una variedad de flujos de trabajo que llaman a la API de GitHub. Considere configurar esto si usa usethis, devtools o gh con regularidad. Volviendo al tema de Proyecto existente, GitHub al final. Otra opción que se puede hacer para conectar un proyecto existen a GitHub es ir a hacer un repositorio a GitHub PERO ten en cuenta los siguientes cambios: Elije un nombre de repositorio; probablemente debería coincidir con el nombre de su proyecto y directorio local. NO inicialice este repositorio con un archivo README. Todo lo demás es igual a los pasos que hacíamos en GitHub primero, RStudio después… Ahora ve a tu proyecto de RStudio, has clic en los “dos cuadros de color púrpura y un cuadrado blanco” en el panel de Git. Has clic en “Agregar control remoto”. Pegue la URL aquí y elija un nombre remoto, casi con certeza el origin. Ahora “ADD”. Pasado esto deberiamos volver en el cuadro de diálogo “New Branch”. Ingresa “master” como el nombre de la rama y asegúrate de que la opción “Sync branch with remote” esté marcada. Haz clic en “Create”. En el siguiente cuadro de diálogo elije “overwrite”. Ahora solo haz commit/pull/push y cérciorate que FUNCIONE!! 2.15 Git basics: commands Fetch Commits git fetch Create and Switch to a branch git branch [branch-name] git checkout [branch-name] 2.16 Merge conflics A veces, no tan a veces también, las cosas no salen bien a la primera Merging (Fusionar) es una de esas cosas Cuando bajamos un cambio o fusionamos branches esto puede pasar. Primera regla: NO ENTRAR EN PANICO!!! Revisen el status del repositorio. Qué archivo tiene conflicto? 2.17 Merge conflics Abran ese archivo y busquen los problemas de merge. Es fácil, se ven así: <<<<<<< HEAD:index.html <div id="footer">contact : email.support@github.com</div> ======= <div id="footer"> please contact us at support@github.com </div> >>>>>>> issue-5:index.html Editen esa sección, dejen una versión final. Hagan commit y push Si entran en pánico? Aborten la misión! git merge --abort t 2.18 En resumen ¡QUE LA FUERZA TE ACOMPAÑE! "],["solución-de-problemas-con-las-versiones-de-paquetes-de-rstudio.html", "3 Solución de problemas con las versiones de paquetes de Rstudio 3.1 Diapositivas", " 3 Solución de problemas con las versiones de paquetes de Rstudio Yalbi Balderas 28 de octubre de 2024 3.1 Diapositivas "],["creando-la-infraestructura-de-un-paquete.html", "4 Creando la infraestructura de un paquete 4.1 Diapositivas 4.2 Los primeros pasos 4.3 Checks 4.4 Modificando el archivo DESCRIPTION 4.5 Modificando el archivo NEWS", " 4 Creando la infraestructura de un paquete Joselyn Cristina Chávez Fuentes 29 de octubre de 2024 4.1 Diapositivas 4.2 Los primeros pasos Revisar si podemos usar el nombre del paquete available::available("mipaquete") Crear la estructura inicial del paquete usethis::create_package("mipaquete") Podemos agregar la estructura de biocthis biocthis::use_bioc_pkg_templates() Pedir que Git ignore el archivo .Rproj usethis::use_git_ignore("*.Rproj") Crear el respositorio de GitHub usethis::use_github() Crear el archivo Description estilo Bioconductor biocthis::use_bioc_description() Crear el archivo README estilo Bioconductor biocthis::use_bioc_readme_rmd() devtools::build_readme() Recuerda guardar los cambios, hacer commit y push. Crear el archivo NEWS estilo Bioconductor biocthis::use_bioc_news_md() Crear los archivos de ayuda para usuarios y contribuidores biocthis::use_bioc_coc() usethis::use_tidy_contributing() biocthis::use_bioc_support() biocthis::use_bioc_issue_template() biocthis::use_bioc_citation() 4.3 Checks 4.3.1 BiocCheck BiocManager::install("BiocCheck") BiocCheck::BiocCheck() Algunas reglas de BiocCheck: Utilizar el símbolo <- en lugar de = para definir funciones y variables. Utilizar TRUE y FALSE en lugar de T y F. Indentar el código usando 4 espacios. Las líneas de código y documentación no deben ser mayores a 80 caracteres. Las funciones deben tener 50 líneas de código o menos. El paquete debe contener al menos una viñeta. Al menos 80% de las funciones deben tener ejemplos reproducibles. Las dependencias deben ser declaradas en el archivo DESCRIPTION. El paquete debe tener al menos un biocView. El tamaño del paquete no debe ser mayor 5Mb. El maintainer debe estar suscrito a la lista de correo de Bioconductor. El maintainer debe agregar su paquete en los tags de Bioconductor. 4.3.2 rcmdcheck install.packages("rcmdcheck") rcmdcheck::rcmdcheck() Algunas reglas de rcmdcheck: El paquete debe ser instalable. Los ejemplos de las funciones deben ser reproducibles. Las viñetas deben ser reproducibles. Todas las unidades de prueba deben pasar sin errores. El archivo DESCRIPTON debe tener el formato adecuado. 4.4 Modificando el archivo DESCRIPTION Paquete Este es el nombre del paquete. El nombre del repositorio y el nombre del paquete en la descripción deben coincidir (incluyendo mayúsculas y minúsculas). Título Este es un título breve pero descriptivo para el paquete. Versión Todos los paquetes de Bioconductor utilizan un esquema de versión x.y.z. Cuando se envía por primera vez a Bioconductor, un paquete debe tener la versión 0.99.0. Se aplican las siguientes reglas: x es normalmente 0 para paquetes que aún no han sido liberados. y es par para paquetes liberados, e impar para paquetes en desarrollo. Generalmente, no se debe aumentar este número en el pre-release. z se incrementa siempre que se realizan cambios en el paquete. Descripción La descripción debe ser una visión general relativamente breve pero detallada de lo que implica la funcionalidad del paquete. Debe ser de al menos tres oraciones completas. Autores Se requiere una designación de maintainer (cre) con una dirección de correo electrónico que se mantenga activamente. Esta dirección de correo se utilizará para el contacto con respecto a cualquier problema que surja con el paquete en el futuro. Idealmente, se debe incluir el ORCiD por lo menos del maintainer. person("Lori", "Shepherd", email = Lori.Shepherd@roswellpark.org, role = c("cre", "aut"), comment = c(ORCID = "0000-0002-5910-4010")) Sólo debe figurar una persona como responsable para garantizar un único punto de contacto. Esta persona tendrá acceso al repositorio git en git.bioconductor.org. El acceso a Commit puede ser dado a otros desarrolladores por solicitud en la lista de correo bioc-devel. Otra opción es añadir colaboradores al repositorio de GitHub. Este enfoque permite el desarrollo por muchos pero restringe el acceso a git.bioconductor.org. Licencia El campo de licencia debe referirse preferentemente a una licencia estándar no restrictiva. Las licencias que restringen el uso, por ejemplo, a investigadores académicos o sin fines de lucro, no son adecuadas para Bioconductor. Los paquetes de bioconductor básico suelen estar licenciados bajo Artistic-2.0. El paquete debe contener sólo código que pueda ser redistribuido de acuerdo con la licencia del paquete. LazyData Para paquetes que incluyen datos, se recomienda NO incluir LazyData: TRUE. Incluirlo en ese caso, ralentiza la carga de paquetes con datos grandes. Dependencias Todos los paquetes deben estar disponibles a través de biocViews o CRAN de Bioconductor; el uso del campo Remotes: no es soportado, por lo tanto las dependencias sólo disponibles en otros repositorios (e.g. GitHub) no están permitidas. Un paquete puede ser listado sólo una vez entre Depends, Imports, Suggests, o Enhances: Imports: es para paquetes que proporcionan funciones, métodos o clases que se usan dentro del código del paquete. La mayoría de los paquetes están listados aquí. Depends: es para paquetes que proporcionan funcionalidad esencial para los usuarios del paquete, por ejemplo, el paquete GenomicRanges se enumera en el campo Depends: de GenomicAlignments. Es poco común que más de tres paquetes aparezcan como Depends:. Suggests: es para paquetes usados en viñetas, ejemplos y código condicional. Comúnmente, los paquetes de anotaciones y experimentos (por ejemplo, TxDb*) usados en viñetas y código de ejemplo se incluyen en este campo, evitando así una descarga costosa. Enhances: es para paquetes como parallel que mejoran el rendimiento del paquete, pero no son estrictamente necesarios para su funcionalidad. En el caso de que se requiera una función única externa para el código del paquete, la disponibilidad y el uso del paquete pueden hacerse a través de: if (!requireNamespace('suggPKG', quietly = TRUE)) stop("Install 'suggPKG' to use this function.") suggPKG::function() biocViews Este campo es obligatorio! Especifica al menos dos biocViews. Los términos deben provenir del mismo tipo de paquete (Software, AnnotationData, ExperimentData o Workflow). Puedes encontrar más información en: https://www.bioconductor.org/packages/release/BiocViews.html BugReports Se recomienda apuntar hacia el repositorio de GitHub, por ejemplo: https://github.com/usuario/paquete/issues. URL Se incluyen los links importantes, como el repositorio con el código fuente y el sitio web de pkgdown si se cuenta con él. Por ejemplo: https://github.com/usuario/paquete https://usuario.github.io/paquete 4.5 Modificando el archivo NEWS Secciones: New: Nuevas funciones. Bug fixes: Reparación de errores en las funciones previas o en la documentación. Changes: Cambios en el código de las funciones, incluyendo modificaciones en los argumentos. Breaking changes: Cambios importantes que romperían el código en caso de no ser atendidos, por ejemplo el uso de funciones o argumentos antiguos. Enhancements: Mejoras a las funciones existentes. Formato El archivo NEWS se ve similar a este ejemplo: "],["creando-mis-primeras-funciones.html", "5 Creando mis primeras funciones 5.1 Diapositivas 5.2 Nombre de la función 5.3 Estructura de la función 5.4 ¡Tu turno! 5.5 Argumentos 5.6 ¡Tu turno! 5.7 Indentación 5.8 Uso de espacios 5.9 Comentarios 5.10 Mensajes para el usuario", " 5 Creando mis primeras funciones Instructora: Joselyn Chávez 29 de octubre de 2024 5.1 Diapositivas 5.2 Nombre de la función Cortos pero descriptivos Recomendable: Separar las palabras con _ Establecer una palabra en común al inicio para familias de funciones use_bioc_citation() # es mejor que citation() bioc_cit() usebioccitation() useBiocCitation() use.bioc.citation() 5.3 Estructura de la función Indentar las líneas de código. Agregar comentarios para separar/describir las secciones importantes. Usar la sintaxis paquete::funcion() cuando hacemos llamado a funciones de otros paquetes. usethis::use_r("subset_heatmap") Generemos el código de manera regular. Simulemos una matriz con diversas mediciones y grafiquemos los datos en un heatmap. mi_matriz <- matrix(rnorm(100), nrow = 10) rownames(mi_matriz) <- paste0("medicion_",letters[1:10]) colnames(mi_matriz) <- paste0("grupo_",letters[1:10]) library(ComplexHeatmap) Heatmap(mi_matriz, cluster_columns = FALSE, heatmap_legend_param = list(title = "valores")) Escribamos una función que permita seleccionar algunos grupos de interés y genere el heatmap. No la mejor opción: library(ComplexHeatmap) subset_heatmap <- function(x,mediciones=NULL,grupos=NULL) { x_subset <- x[mediciones,grupos] Heatmap(mi_matriz, cluster_columns=FALSE, heatmap_legend_param=list(title="valores")) } Un poco mejor: library(ComplexHeatmap) subset_heatmap <- function(x, mediciones = NULL, grupos = NULL) { x_subset <- x[mediciones,grupos] Heatmap(mi_matriz, cluster_columns = FALSE, heatmap_legend_param = list(title = "valores")) } Mucho mejor: subset_heatmap <- function(x, mediciones = NULL, grupos = NULL) { # subset matrix x_subset <- x[mediciones, grupos] # plot heatmap ComplexHeatmap::Heatmap( x_subset, cluster_columns = FALSE, heatmap_legend_param = list(title = "valores")) } Ejecutemos la función: subset_heatmap( mi_matriz, mediciones = c("medicion_a", "medicion_b", "medicion_c"), grupos = c("grupo_d","grupo_e","grupo_f")) 5.4 ¡Tu turno! Escribe una función que: Filtre la matriz y mantenga sólo los valores por encima de cierto valor. Genere el heatmap filtrado. Recuerda seguir las recomendaciones para escribir funciones. 5.5 Argumentos Los argumentos deben tener un nombre descriptivo y bien documentado. No la mejor opción: subset_heatmap <- function(x, m, g) { # subset matrix x_subset <- x[mediciones, grupos] } Una mejor opción: subset_heatmap <- function(x, mediciones, grupos) { # subset matrix x_subset <- x[mediciones, grupos] # plot heatmap ComplexHeatmap::Heatmap( x_subset, cluster_columns = FALSE, heatmap_legend_param = list(title = "valores")) } Los argumentos generalmente deben tener valores default. subset_heatmap <- function(x, mediciones = NULL, grupos = NULL, return_plot = TRUE) { # subset matrix x_subset <- x[mediciones, grupos] # plot heatmap ComplexHeatmap::Heatmap( x_subset, cluster_columns = FALSE, heatmap_legend_param = list(title = "valores")) } Evalúa la validez de los argumentos subset_heatmap <- function(x, mediciones = NULL, grupos = NULL, return_plot = TRUE) { stopifnot(is.matrix(x)) # subset matrix x_subset <- x[mediciones, grupos] # plot heatmap heatmap <- ComplexHeatmap::Heatmap( x_subset, cluster_columns = FALSE, heatmap_legend_param = list(title = "valores")) if(return_plot == TRUE) {return(heatmap)} } Este código no debe funcionar: subset_heatmap( as.data.frame(mi_matriz), mediciones = c("medicion_a", "medicion_b", "medicion_c"), grupos = c("grupo_d","grupo_e","grupo_f")) Nota: Usa las funciones is() para evaluar la clase de los objects, no uses class() == ni class() !=. Proporciona pistas para entender los errores. subset_heatmap <- function(x, mediciones = NULL, grupos = NULL, return_plot = TRUE) { if(!is.matrix(x)) {stop("x debe ser una matriz")} # subset matrix x_subset <- x[mediciones, grupos] # plot heatmap heatmap <- ComplexHeatmap::Heatmap( x_subset, cluster_columns = FALSE, heatmap_legend_param = list(title = "valores")) if(return_plot == TRUE) {return(heatmap)} } Este código debe dar un error, más un mensaje de ayuda. subset_heatmap( as.data.frame(mi_matriz), mediciones = c("medicion_a", "medicion_b", "medicion_c"), grupos = c("grupo_d","grupo_e","grupo_f")) 5.6 ¡Tu turno! Agrega pasos de evaluación para los otros argumentos de la función. Incluye mensajes de ayuda cuando el formato de los argumentos no es el esperado. 5.7 Indentación Usa 4 espacios para indentar, evita los tabs. No uses líneas de más de 80 caracteres. 5.8 Uso de espacios Usa un espacio después de la coma: a, b, c. Usa espacio después de operadores binarios: a == b. 5.9 Comentarios Usa “##” para comenzar las líneas de comentarios. Los comentarios deben usarse como notas y documentación solamente. No dejes código comentado que no se va a usar. Evita los TODO’s comentados cuando vayas a publicar el paquete. 5.10 Mensajes para el usuario Si deseas imprimir mensajes para el usuario, como el progreso del análisis en la función o advertir sobre los valores de los argumentos, evita el uso de cat(), mejor usa: message() comunica mensajes diagnóstico, como el progreso de la función. message("Paso 1: completo") ## Paso 1: completo warning() comunica situaciones inusuales que pueden ser manejadas por tu código. warning("El número de elementos esperados es mayor a uno, se tomará el primer valor del vector") ## Warning: El número de elementos esperados es mayor a uno, ## se tomará el primer valor del vector stop() indica una condición errónea. stop("x debe ser numérico") "],["documentación-de-funciones.html", "6 Documentación de funciones 6.1 Diapositivas 6.2 Links importantes: 6.3 ¿Qué es la documentación de una función y por qué es importante? 6.4 Generacion de la documentacion con ayuda del paquete roxygen 6.5 Antes de empezar…✏️ 6.6 Generacion de un bloque de documentacion con ayuda del paquete roxygen. 6.7 Otros campos de la documentacion.", " 6 Documentación de funciones Instructor/a: 29 de octubre de 2024 6.1 Diapositivas 6.2 Links importantes: Esta lección está basada en algunos manuales sobre documentación: Una viñeta del cranproject El manual de paqutes de r En esta viñeta de cranproject 6.3 ¿Qué es la documentación de una función y por qué es importante? 🙇️ Es la información complementaria que el desarrollador escribe sobre una función y que se accede con ? seguido el nombre de una función actual de un paquete p.ej. ?unafuncion. 📁 La documentación se almacena como un archivo .Rd (“R documentation) en la carpeta man/. 🔎 La documentación usa una síntesis especial, que es distinta a la de r y que está ligeramente basada en LaTeX. 📄 Se puede renderizar como html, pdf o texto sin formato según se necesite. 6.4 Generacion de la documentacion con ayuda del paquete roxygen En un paquete de r y en cualquier ecosistema de devtools no editamos un documento .Rd manualmente. La documentación usa una síntesis parecida a LaTex que puede ser fácil de estropear. Por ventaja existen paquetes como roxigen2. Usar roxigen nos permite usar comentarios especiales sobre el inicio de la función, esto nos da un par de ventajas: ✅ La documentación y la función estarán en un mismo lugar, por lo que si editas la función será mas fácil recordar actualizar la documentcion también. 🎉 Puedes usar markdown en lugar de la síntesis especial para los archivos .Rd 6.5 Antes de empezar…✏️ Vamos a crear un función para nuestro paquete. Supongamos que para nuestro paquete necesitamos una función que calcule la moda. Esta es una forma sencilla de calcular la moda: getmode <- function(serievector) { uniqv <- unique(serievector) uniqv[which.max(tabulate(match(serievector, uniqv)))] } unique(serievector): Crea un vector que contiene únicamente los valores únicos de la serie de números serievector. match(serievector, uniqv): Encuentra la posición de cada valor de serievector en el vector único uniqv. tabulate(match(serievector, uniqv)): Cuenta cuántas veces aparece cada valor en la serie serievector. which.max(tabulate(match(serievector, uniqv))): Encuentra el índice del valor máximo en el vector de frecuencias. uniqv[which.max(tabulate(match(serievector, uniqv)))]: Devuelve el valor correspondiente al índice calculado, que es la moda. Creamos un ejemplo para ver que funcione: serie_numeros <- c(1, 2, 2, 2, 2, 3, 3, 4, 4, 4) resultado <- getmode(serie_numeros) print(resultado) ## [1] 2 Bien ahora si podemos podemos empezar a usar el paquete de roxygen para documentar nuestra función.. comencemos. 6.6 Generacion de un bloque de documentacion con ayuda del paquete roxygen. Podemos insertar un esqueleto de comentarios de roxygen para ver su síntesis. Colocamos el cursor en algún lugar de la definición de nuestra función y buscamos en la pestaña Código > Insertar Roxygen Skeleton. #' Title #' #' @param serievector #' #' @return #' @export #' #' @examples getmode <- function(serievector) { uniqv <- unique(serievector) uniqv[which.max(tabulate(match(serievector, uniqv)))] } Ahora ya tenemos un esqueleto de la documentación que nos da una ventaja para su creación. Las líneas de comentarios de Roxygen siempre comienzan con #', el habitual para un comentario # mas un ' Veamos los comentarios de uno por uno: Empezamos con el titulo. Se sugiere poner en el titulo las acciones principales que realiza la función en este caso por ejemplo podremos usar: #' @title Encontrar la Moda de una Serie de Números #' #' @param serievector #' #' @return #' @export #' #' @examples getmode <- function(serievector) { uniqv <- unique(serievector) uniqv[which.max(tabulate(match(serievector, uniqv)))] } Muy bien!. El siguiente comentario que podemos ver es @param. Pero antes, vamos a añadir una pequeña descripción de la función y como usarla. Primero añadimos la pequeña descripción con @description: #' @title Encontrar la Moda de una Serie de Números #' #' @description Esta función lee una serie de números en forma de vector y #' encuentra el elemento que mas se repite, es decir la moda. #' @param serievector #' #' @return #' @export #' #' @examples getmode <- function(serievector) { uniqv <- unique(serievector) uniqv[which.max(tabulate(match(serievector, uniqv)))] } Ahora vamos a añadir el comentario @usage que nos indica como puedes mandar a llamar la función. #' @title Encontrar la Moda de una Serie de Números #' #' @description Esta función lee una serie de números en forma de vector y #' encuentra el elemento que mas se repite, es decir la moda. #' @usage getmode(serievector) #' @param serievector #' #' @return #' @export #' #' @examples getmode <- function(serievector) { uniqv <- unique(serievector) uniqv[which.max(tabulate(match(serievector, uniqv)))] } Ahora si vamos a añadir una pequeña descripción de nuestros argumentos. Si tuviéramos mas de un parámetro en nuestra función podríamos llamar las veces que sea necesario el comentario de parámetro con @param, veamoslo. Ahora añadimos una pequeña descripción a nuestro único parámetro que es serievector: #' @title Encontrar la Moda de una Serie de Números #' #' @description Esta función lee una serie de números en forma de vector y #' encuentra el elemento que mas se repite, es decir la moda. #' #' @param serievector Es una serie de números en forma de un vector simple de r. #' #' @return #' @export #' #' @examples getmode <- function(serievector) { uniqv <- unique(serievector) uniqv[which.max(tabulate(match(serievector, uniqv)))] } Después, podemos añadir un comentario de detalles de la función con @details. Por ejemplo, si en nuestro ejemplo tuviéramos ciertos valores no numéricos en nuestro vector de entrada, por ejemplo letras, ¿nuestra función podría leerlas?, o si le diéramos un vector sin caracteres ¿que pasaría?, veamos: serie_numeros <- c(0,2,2,"d", "d","d") resultado <- getmode(serie_numeros) print(resultado) ## [1] "d" serie_numeros <- c() resultado <- getmode(serie_numeros) print(resultado) ## NULL Entonces, esto es un ejemplo de lo que podríamos poner en el comentario @details. Hagamoslo describiendo esto. En details podemos agregar detalles un poco mas específicos que en la descripción de la función #' @title Encontrar la Moda de una Serie de Números #' #' @description Esta función lee una serie de números en forma de vector y #' encuentra el elemento que mas se repite, es decir la moda. #' #' @param serievector Es una serie de números en forma de un vector simple de r. #' #' @details si tu vector de entrada puede ser interpretado alternando números y #' letras escritas entre comillas "". Si un vector esta vacío, dará como #' resultado un NULL. #' @return #' @export #' #' @examples getmode <- function(serievector) { uniqv <- unique(serievector) uniqv[which.max(tabulate(match(serievector, uniqv)))] } Ya casi terminamos de llenar nuestra documentación, pero antes vamos a ver algunos otros arrobas que pudieran ser importantes. El @import e @importfrom importan funciones de otros paquetes en caso de que las necesitemos, el primero importa todas las funciones del paquete que que solicites, y el segundo importa solo algunas funciones especificas. En nuestra función no necesitamos llamar funciones de otros paquetes puesto que todas las que usamos están en r base. Pero imaginemos que tu función, por ejemplo necesita leer un archivo .tsv con la función read_tsv del paquete readr y después reconvertir la tabla resultante en un archivo con write.table pero solo necesitas esa función del paquete utils, entonces haríamos: #' @title Encontrar la Moda de una Serie de Números #' #' @description Esta función lee una serie de números en forma de vector y #' encuentra el elemento que mas se repite, es decir la moda. #' #' @param serievector Es una serie de números en forma de un vector simple de r. #' #' @details si tu vector de entrada puede ser interpretado alternando números y #' letras escritas entre comillas "". Si un vector esta vacío, dará como #' resultado un NULL. #' @import readr #' @importFrom utils write.table #' @return #' @export #' #' @examples getmode <- function(serievector) { uniqv <- unique(serievector) uniqv[which.max(tabulate(match(serievector, uniqv)))] } Así podemos importar las funciones que necesitemos de otros paquetes y se incluirán en la documentación y se cargaran automáticamente al cargar tu paquete. :eyes::exclamation: Para un correcto funcionamiento de tu paquete y al estar los paquetes necesarios incluidos en la documentación, no será necesario llamarlos de la forma ``library(“apackage”)```. Entonces llegamos a la sección @return. Esta descripción le servirá al usuario del paquete para conocer cual sera el resultado de la función, que puede ser un archivo, una tabla, un numero,etc. Entonces retomando la función que usamos al inicio, vamos a escribir una descripción corta del resultado de la función getmode(). #' @title Encontrar la Moda de una Serie de Números #' #' @description Esta función lee una serie de números en forma de vector y #' encuentra el elemento que mas se repite, es decir la moda. #' #' @param serievector Es una serie de números en forma de un vector simple de r. #' #' @details si tu vector de entrada puede ser interpretado alternando números y #' letras escritas entre comillas "". Si un vector esta vacío, dará como #' resultado un NULL. #' @return El carácter con mas frecuencia de el vector de entrada. #' @export #' #' @examples getmode <- function(serievector) { uniqv <- unique(serievector) uniqv[which.max(tabulate(match(serievector, uniqv)))] } Por ultimo tenemos @export que es el encargado de renderizar la documentación para que pueda aparecer en la ventana de Ayuda (abajo a la derecha). esta opción la dejamos para funciones principales que el usuario va a utilizar, aunque puede que existan alguna funciones internas que no queremos que el usuario vea. En ese caso vamos a usar @noRd en lugar de este. Antes de terminar podemos incluir ejemplos de como funciona nuestra función para un mejor entendimiento, pongamos los que ya realizamos: #' @title Encontrar la Moda de una Serie de Números #' #' @description Esta función lee una serie de números en forma de vector y #' encuentra el elemento que mas se repite, es decir la moda. #' #' @param serievector Es una serie de números en forma de un vector simple de r. #' #' @details si tu vector de entrada puede ser interpretado alternando números y #' letras escritas entre comillas "". Si un vector esta vacío, dará como #' resultado un NULL. #' @return El carácter con mas frecuencia de el vector de entrada. #' @export #' #' @examples #' serie_números <- c(1, 2, 2, 2, 2, 3, 3, 4, 4, 4) #' resultado <- getmode(serie_números) #' print(resultado) getmode <- function(serievector) { uniqv <- unique(serievector) uniqv[which.max(tabulate(match(serievector, uniqv)))] } Ahora si, una vez teniendo listo el bloque de comentarios para la documentación, vamos a ejecutar devtools::load_all() para cargar nuestras funciones y hecho esto, ejecutamos devtools::document() o presionamos Ctrl/Cmd + Shift + D para convertir los comentarios en archivo .Rd y poder renderizarlo. 💯 Listo, tenemos nuestra documentación para una función. Así se verá cuando el paquete esté terminado. 6.7 Otros campos de la documentacion. @seealso para indicar funciones relacionadas y facilitar la búsqueda de funciones. @references añade algunas referencias. @author para especificar el autor de la función. "],["diseño-de-pruebas.html", "7 Diseño de pruebas 7.1 Diapositivas", " 7 Diseño de pruebas Mirna Vázquez Rosas-Landa 30 de octubre de 2024 7.1 Diapositivas "],["creación-de-viñetas.html", "8 Creación de viñetas 8.1 Diapositivas 8.2 ¿Qué es una viñeta? 8.3 Características de una vignette 8.4 ¿Cómo consultar la viñeta de un paquete? 8.5 ¿Cómo crear una viñeta? 8.6 ¿Cómo guardar y actualizar la viñeta? 8.7 Veamos un ejemplo 8.8 Actividad", " 8 Creación de viñetas José Antonio Ovando Ricárdez 30 de octubre de 2024 8.1 Diapositivas 8.2 ¿Qué es una viñeta? Es una guía extendida sobre cómo funciona el paquete. Es recomendable que muestre cómo utilizar las funciones del paquete, aplicado en un flujo de trabajo; por ejemplo: el análisis estadístico de una encuesta o el análisis de expresión diferencial de genes. Podemos estructurarlo como haríamos con la escritura de un capítulo de libro o de un artículo científico: debe mostrar el problema a resolver y la metodología paso a paso sobre cómo el paquete lo resuelve. Si el paquete contiene funciones que se complementan entre sí para alcanzar un fin específico, entonces debes mostrar su uso de forma compartamentalizada. 8.3 Características de una vignette Debe mostrar un flujo de análisis explotando el potencial de tu paquete. Implementa tantas funciones de tu paquete como sea posible, pero no es necesario que incluya todas. Los datos a usar deben ser pequeños o fáciles de acceder. Puedes crear múltiples viñetas para mostrar diferentes casos de análisis y cubrir una mayor cantidad de funciones. 8.4 ¿Cómo consultar la viñeta de un paquete? browseVignettes(package = "ggplot2") 8.5 ¿Cómo crear una viñeta? biocthis::use_bioc_vignette("mi_vignette") Esta función tendrá tres efectos: Generar el directorio vignettes en caso que no exista. Agregar dependencias en el archivo DESCRIPTION (por ejemplo, knitr necesario para construir viñetas dentro del paquete). Abrir un templado en formato .Rmd para comenzar a escribir la viñeta, que se va a guardar en vignettes/mi_vignette.Rmd 8.6 ¿Cómo guardar y actualizar la viñeta? Una vez que se ha generado el archivo vignettes/mi_vignette.Rmd se hacen las modificaciones necesarias. Puedes usar el comando: edit_file("vignettes/mi_vignette.Rmd") Para guardar los cambios debes hacer click en el botón Knit o utiliza la combinación de teclas Ctrl/Cmd-Shift-K. 8.7 Veamos un ejemplo Busca la viñeta del paquete regutools en la página de Bioconductor https://bioconductor.org/packages/release/bioc/html/regutools.html 8.8 Actividad Escribe una viñeta que muestre cómo utilizar las funciones para cargar y filtrar los datos de pbmc. "],["compilación-e-instalación-de-paquetes.html", "9 Compilación e instalación de paquetes 9.1 Diapositivas 9.2 Metadatos de una paquetería 9.3 Licencias 9.4 Paqueterías de código fuente 9.5 ¿En dónde podemos encontrar el código fuente de un paquete? 9.6 Instalando la última versión en desarrollo 9.7 Instalando paquetes desde GitHub 9.8 Instalando un paquete local 9.9 Contribuyendo código", " 9 Compilación e instalación de paquetes Joselyn Cristina Chávez Fuentes 30 de octubre de 2024 9.1 Diapositivas 9.2 Metadatos de una paquetería Los metadatos de la paquetería se encuentran en el archivo DESCRIPTION. 9.2.1 Description El campo Description describe lo que hace tu paquetería. Suele ser extenso, si requieres escribir múltiples líneas, deben estar indentadas. Por ejemplo: # Description: Este paquete contiene todas las funciones generadas en el curso # de escritura de paqueterías en R. También contiene las funciones que cada # participante propuso para solucionar un problema relacionado con su trabajo. 9.2.2 Dependencias Las dependencias son las paqueterías que tu paquete necesita para funcionar. La lista de paquetes se escribe separada por comas y es recomendado que se escriban en orden alfabético. Existen tres tipos: Imports: Son paquetes que deben instalarse para que tu paquete funcione y por tanto se van a instalar en el momento que instales el paquete. Internamente existe una función que evalúa si los paquetes se encuentran instalados o no y solamente instala los faltantes. Esta dependencia hace solamente la instalación pero no ejecuta library(), por lo que los paquetes requeridos deberán ser cargados dentro de la escritura del paquete. Depends: Son paquetes que obligatoriamente deben estar para que tu paquetería funcione pero no se instalarán de manera automática. Aquí también se indica la versión de R requerida para el funcionamiento del paquete. Los paquetes que se listen aquí se van a cargar al mismo tiempo que se ejecute el library(mipaquete). Suggests: Se refiere a los paquetes que tu paquete puede utilizar y aprovechar para ser más poderoso en el análsis pero no los necesita para funcionar. Por ejemplo, paquetes que contienen sets de datos para hacer pruebas o análisis de práctica. Nota Importante Se recomienda listar los paquetes necesarios para el funcionamiento de nuestro paquete en Imports porque cuando se ponen en Depends se cargan los paquetes completos y probablemente solamente requerimos una o dos funciones. Cargar demasiados paquetes completos, sin ser necesario, sólo hace que nuestro paquete se vuelva pesado y lento. Es mejor llamar particularmente a las funciones usando la sintaxis explícita: Biostrings::translate() 9.2.3 ¿Cómo añadir dependencias? Usando usethis: usethis::use_package("ggplot2", type = "Imports") Editando manualmente el archivo DESCRIPTION. 9.3 Licencias Establece quién puede usar tu paquete. Existen diversas licencias pero hablaremos sobre las 3 más comunes: MIT (Massachusetts Institute of Technology): es simple y permisiva. Permite a cualquier persona usar y distribuir tu paquetería con una sola restricción: la distribución debe incluir la declaración de licencia del autor. Existe un texto base al cual se le pueden añadir cláusulas o excepciones. Este es un ejemplo: GPL-2 (General Public License): Permite usar y distribuir tu código con la condición que si se genera una versión modificada de tu código, su distribución debe ser también bajo esta licencia. Aunque está enfocada a la distribución de código abierto, permite dejar en claro quién es el autor del material y evitar la apropiación del código por terceros. Un ejemplo de la aplicación de esta licencia es el desarrollo de Linux. CCO: Esta licencia implica que cedes todos los derechos y el código puede ser utilizado con cualquier fin, excepto fines comerciales. Es el más utilizado en los paquetes. Concede el derecho a utilizar y distribuir el material sin requerir el permiso del autor. 9.4 Paqueterías de código fuente En algunas ocasiones necesitaremos instalar paquetes que no se encuentran compilados, por ejemplo: Paquetes en desarrollo de CRAN o Bioconductor. Versiones anteriores de paquetes de CRAN o Bioconductor. Paquetes que no se encuentran depositados en CRAN o Bioconductor, sino en repositorios personales como GitHub. Paquetes que estás desarrollando de forma local. El paquete remotes será de gran utilidad. Regularmente, los paquetes que instalamos desde algún repositorio como CRAN o Bioconductor son paquetes binarios que ya se encuentran compilados previamente. Existen algunas funciones que nos permiten instalar paquetes desde código fuente. Anteriormente, se solían utilizar las funciones install_* del paquete devtools; sin embargo, recientemente se creó el paquete remotes que contiene las mismas funciones pero está específicamente diseñado para ayudarnos a trabajar con paquetes desde código fuente. 9.5 ¿En dónde podemos encontrar el código fuente de un paquete? Si el paquete se encuentra disponible en CRAN, puedes encontrar el link al código fuente en la sección URL. Si el paquete se encuentra disponible en Bioconductor, puedes encontrar el link al código fuente en la sección Package Archives Si el paquete se encuentra en GitHub o GitLab, necesitarás conocer el nombre de usuario y el nombre del paquete. 9.6 Instalando la última versión en desarrollo Si el paquete se encuentra depositado en CRAN podemos usar la función remotes::install_dev("pkgname") Por ejemplo, para instalar la versión en desarrollo de dplyr usaremos el comando remotes::install_dev("dplyr") Si el paquete se encuentra en Bioconductor usaremos la siguiente función: remotes::install_bioc("pkgname") Por ejemplo, para instalar la versión en desarrollo de regutools, el paquete desarrollado por miembros de la CDSB, usaremos el comando remotes::install_bioc("regutools") 9.7 Instalando paquetes desde GitHub Para poder instalar un paquete desde GitHub necesitaremos conocer el usuario del creador y el nombre del repositorio. remotes::install_github("usuario/repositorio") Por ejemplo, para instalar el paquete starwarssay desarrollado por Erick Cuevas (Erickcufe) utilizaremos el siguiente comando: remotes::install_github("Erickcufe/starwarssay") Independientemente de si el paquete se encuentra en CRAN, Bioconductor, o ninguno de ellos, podemos instalar un paquete depositado en una cuenta de GitHub. Para poder instalar un paquete desde GitHub necesitaremos conocer el usuario del creador y el nombre del repositorio donde se encuentra depositado el paquete. Con esta información usaremos la siguiente función: 9.8 Instalando un paquete local Paso 1: Abre el proyecto del paquete que estás desarrollando. Paso opcional: Ejecuta la documentación si realizaste algún cambio. devtools::document() Paso 2: Construye el paquete: devtools::build() Paso 3: Instala el paquete desde tu proyecto actual: devtools::install() 9.9 Contribuyendo código Una ventaja de descargar el paquete de forma local es que puedes realizar cambios, probar que funciona de manera local y después contribuir (haciendo un pull-request). Usemos el paquete saludo Clona el repositorio en tu computadora. git clone https://github.com/ComunidadBioInfo/saludo.git Ahora puedes abrir el proyecto del paquete y agregar tu código. "],["creación-de-sitios-web-con-pkgdown.html", "10 Creación de sitios web con pkgdown 10.1 Diapositivas 10.2 Instalación 10.3 Configura el paquete para crear el sitio con pkgdown 10.4 Genera la estructura de pkgdown 10.5 Pre-visualiza el sitio de manera local 10.6 Personalizando el _pkgdown.yml 10.7 Las variables bslib 10.8 Layout 10.9 Accessibilidad 10.10 La página de inicio 10.11 La página de referencias 10.12 Articles 10.13 News 10.14 Publicando el sitio web", " 10 Creación de sitios web con pkgdown Joselyn Cristina Chávez Fuentes 31 de octubre de 2024 10.1 Diapositivas div.grey { background-color: #bfbfbf; } div.center { text-align:center; } 10.2 Instalación install.packages("pkgdown") 10.3 Configura el paquete para crear el sitio con pkgdown Este paso se ejecuta solamente una vez, dentro del proyecto del paquete. usethis::use_pkgdown_github_pages() Este paso genera las acciones automáticas de GitHub para renderizar el sitio. El archivo README.md será tu página de inicio, la documentación en man/ va a crear una sección de referencias, y las viñetas serán renderizadas como articles. 10.4 Genera la estructura de pkgdown Este paso se ejecuta solamente una vez. usethis::use_pkgdown() 10.5 Pre-visualiza el sitio de manera local Este paso lo puedes ejecutar para visualizar el sitio cada vez que hagas una modificación, antes de enviar los cambios a GitHub. pkgdown::build_site() 10.6 Personalizando el _pkgdown.yml 10.6.1 Metadatos URL Este es el link donde se va a renderizar el sitio, revisa que sea correcto y, de ser necesario, actualízalo. url: https://pkgdown.r-lib.org template Esta sección permite personalizar la apariencia general del sitio. template: bootstrap: 5 bootswatch: cerulean 10.6.2 Temas Light switch Puedes proporcionar un “light switch” para permitir a tus usuarios cambiar entre temas oscuros y claros configurando la opción de light-switch a true: template: light-switch: true Bootswatch themes La forma más fácil de cambiar toda la apariencia de tu sitio web es usar un tema de Bootswatch: template: bootstrap: 5 bootswatch: materia Puedes ver los temas disponibles en https://bootswatch.com/ Estos temas suelen no ser compatibles con el light switch, pero puedes intentar. Al cambiar el bootswatch theme necesitas renderizar el sitio para ver por completo los efectos del tema. build_site() Mientras estás experimentando, puedes acelerar las cosas simplemente reconstruyendo la página de inicio y el CSS ejecutando: build_home_index() init_site() y luego actualizando el navegador. Los bootswatch theme con barras de navegación altas (lux, pulse) también requieren que se modifique la variable pkgdown-nav-height. Debido a que los temas de bootswatch son proporcionados por el paquete bslib, se puede anidar el campo bootswatch debajo del campo bslib. template: bootstrap: 5 bslib: bootswatch: lux pkgdown-nav-height: 100px 10.7 Las variables bslib Hay tres variables clave que afectan al color: bg (fondo) determina el fondo de la página. fg (primer plano) determina el color del texto. primary establece el color del enlace y el color translúcido en la barra de navegación y la barra lateral. template: bootstrap: 5 bslib: bg: "#202123" fg: "#B8BCC2" primary: "#306cc9" También se pueden personalizar las fuentes predeterminadas utilizadas para la mayoría del texto (base_font), para los encabezados (heading_font) y para el código (code_font). La forma más fácil es proporcionar el nombre de una fuente de Google con la siguiente sintaxis: template: bootstrap: 5 bslib: base_font: {google: "Roboto"} heading_font: {google: "Roboto Slab"} code_font: {google: "JetBrains Mono"} 10.7.1 Syntax highlighting Los colores utilizados para el resaltado de sintaxis en bloques de código están controlados por la configuración theme: template: bootstrap: 5 theme: breeze-light Puedes elegir entre: a11y-dark, a11y-light, arrow-dark, arrow-light, atom-one-dark, atom-one-light, ayu-dark, ayu-light, ayu-mirage, breeze-dark, breeze-light, breezedark, dracula, espresso, github-dark, github-light, gruvbox-dark, gruvbox-light, haddock, kate, monochrome-dark, monochrome-light, monochrome, monokai, nord, oblivion, printing, pygments, radical, solarized-dark, solarized-light, solarized, tango, vim-dark, zenburn. 10.7.2 Navbar style Los campos bg y type de la barra de navegación controlan los colores del fondo y el primer plano respectivamente. Normalmente bg será light, dark, o primary: navbar: bg: primary 10.8 Layout Puedes personalizar el contenido de la barra de navegación, pie de página, utilizando los campos navbar y footer. Todos ellos utilizan una estructura similar que define por separado la estructura global y los componentes individuales. 10.8.1 Navbar Esta es la estructura default: navbar: structure: left: [intro, reference, articles, tutorials, news] right: [search, github, lightswitch] intro: “Get Started”, enlaza a una viñeta o artículo con el mismo nombre que el paquete. reference: si hay archivos . Rd. articles: si hay viñetas o artículos. tutorials: si hay algún tutorial. news: si existe NEWS.md. search: la barra de búsqueda. github: un enlace al repositorio de origen (con un icono), es determinado automáticamente a partir del archivo DESCRIPTION. lightswitch; un “interruptor de luz” para seleccionar el modo claro, modo oscuro o modo automático. Puedes utilizar el campo structure para reorganizar la barra de navegación: navbar: structure: left: [search] right: [reference, articles] Puedes usar la misma sintaxis para organizar el menú de artículos: navbar: components: articles: text: Articles menu: - text: Category A - text: Title A1 href: articles/a1.html - text: Title A2 href: articles/a2.html - text: ------- - text: "Category B" - text: Article B1 href: articles/b1.html 10.8.2 Footer Esta es la estructura por defecto:: footer: structure: left: developed_by right: built_with Que utiliza dos de los tres componentes incorporados: developed_by: una frase que describe a los principales autores del paquete. built_with: una frase que hace publicidad de la misma. package: el nombre del paquete. Puedes personalizar la organización del pie de página: footer: structure: left: pkgdown right: [developed_by, legal] components: legal: Provided without **any warranty**. 10.9 Accessibilidad Las configuraciones default de pkgdown tratan de hacer el sitio lo más accesible posible para todos, pero hay algunos puntos a tomar en cuenta: 10.9.1 Colores Si ajustas cualquier color del tema default, verifica que el contraste entre el fondo y el primer plano no haga difícil leer ningún texto. Puedes utilizar la herramienta de evaluación de accessibilidad en https://wave.webaim.org. El color default genera un contraste demasiado bajo contra el fondo gris pálido de la barra de navegación. Este color viene de la paleta “danger” de bootstrap, así que puedes arreglarlo sobreescribiendo esa variable en tu _pkgdown.yml: template: bootstrap: 5 bslib: danger: "#A6081A" Si utilizas entradas de barra de navegación personalizadas que sólo muestran un icono, asegúrate de utilizar también el campo aria-label para proporcionar una etiqueta accesible que describa el icono. cran: icon: fab fa-r-project href: https://cloud.r-project.org/package=pkgdown aria-label: View on CRAN 10.9.2 Imágenes Para hacer tu sitio completamente accessible, agrega una descripción del contenido de las imágenes en las viñetas usando el campo “fig.alt” de las opciones del chunk de R. 10.10 La página de inicio Los contenidos del home page son automáticamente generados desde el archivo index.md o el README.md. pkgdown les asigna diferentes prioridades, por lo que es possible tener contenidos diferentes en el repositorio de GitHub y la página de pkgdown si provees ambos archivos. La página de inicio también incluye una barra de contenidos con links importantes, como la guía de contribución, el código de conducta, etc. 10.11 La página de referencias pkgdown crea una página de referencia en reference/ para cada una de las funciones del paquete, basado en la documentación. pkgdown ejecuta todos los ejemplos de las funciones, insertando los resultados renderizados en los archivos HTML generados. Por defecto, pkgdown genera un índice de referencia que es sólo una lista de funciones ordenadas alfabéticamente. El índice es mucho más útil con la curación manual porque las funciones pueden agruparse y describirse en categorías. Cada entrada de referencia puede adoptar una de las tres formas siguientes: Un título, definido por los campos title y desc (descripción) opcionales. Un subtítulo, definido por los campos de subtítulo y desc (descripción) opcionales. Lista de temas definidos por un campo de contenido. Mientras editas el índice de referencias, puedes ejecuar la siguiente función para renderizar solamente el índice, lo que permite ver de forma rápida el efecto de los cambios sin tener que renderizar todo el sitio. pkgdown::build_reference_index() reference: - title: "Connecting to Spark" desc: > Functions for installing Spark components and managing connections to Spark contents: - spark_config - spark_connect - spark_disconnect - spark_install - spark_log 10.12 Articles pkgdown creará automáticamente todas las viñetas que se encuentran en la carpeta vignettes/, traduciéndolas a archivos HTML en articles/. Se puede nombrar el artículo de introducción con el nombre del paquete para generar una página “Get Started” automáticamente. 10.13 News Si el archivo NEWS.md está presente, se procesará en un changelog de una sola página basado en los títulos de las secciones del archivo. pkgdown asume que el archivo NEWS.md está formateado con encabezados de nivel uno (#) para especificar el nombre del paquete y el número de versión, y con encabezados de nivel dos (##) para proporcionar una organización temática para cada versión. # pkgdown 1.1.0 ## Bug Fixes * Lots of them 10.14 Publicando el sitio web Haz commit de los cambios y luego push. Ve al repositorio del paquete en GitHub y espera a que la acción de GitHub termine de renderizar el sitio. Ve al sitio web, el formato debe ser similar a https://usuario.github.io/paquete "],["proyectos-colaborativos-1.html", "11 Proyectos colaborativos 11.1 Propuesta 1 11.2 Propuesta 2 11.3 Propuesta 3 11.4 Propuesta 4 11.5 Propuesta 5", " 11 Proyectos colaborativos 11.1 Propuesta 1 11.2 Propuesta 2 11.3 Propuesta 3 11.4 Propuesta 4 11.5 Propuesta 5 "],["404.html", "Page not found", " Page not found The page you requested cannot be found (perhaps it was moved or renamed). You may want to try searching to find the page's new location, or use the table of contents to find the page you are looking for. "]] +[["index.html", "Desarrollo de paqueterías de R/Bioconductor. Bienvenida 0.1 Instructores 0.2 Ayudantes 0.3 Temario 0.4 Patrocinadores 0.5 Licencia", " Desarrollo de paqueterías de R/Bioconductor. Dra. Joselyn Cristina Chávez-Fuentes, Dra. Mirna Vázquez Rosas-Landa, M.C. Erick Cuevas-Fernández, Dra. Alejandra Medina-Rivera, Bienvenida Les damos la bienvenida al Workshop Desarrollo de paqueterías de R/Bioconductor! En este taller aprenderás cuáles son los pasos cruciales para desarrollar un paquete de R y algunas buenas prácticas para la generación de código. Con la integración de estas herramientas, tendrás la oportunidad de crear tu primer paquete y contribuir a la comunidad de desarrolladores. Adicionalmente, aprenderás a crear un sitio web para mostrar el funcionamiento de un paquete de R. 0.1 Instructores Dra. Joselyn Cristina Chávez Fuentes: Estancia Postdoctoral en Icahn School of Medicine at Mount Sinai. Dra. Alejandra Medina Rivera: Investigadora Asociada en el Laboratorio Internacional de Investigación de Medicina Genómica, UNAM. Dra. Yalbi I. Balderas-Martínez: Investigadora en el Instituto Nacional de Enfermedades Respiratorias Ismael Cosío Villegas. Dra. Mirna Vázquez Rosas Landa: Investigadora en el Instituto de Ciencias de Mar y Limnología de la UNAM. M.C. Erick Cuevas Fernández: Estudiante de Doctorado en la Universidad Nacional Autónoma de México. M.C. José Antonio Ovando Ricárdez: Estudiante de Doctorado en el Instituto Nacional de Enfermedades Respiratorias Ismael Cosío Villegas. 0.2 Ayudantes Dra. Evelia Coss: Posdoctoral en el Laboratorio Internacional de Investigación de Medicina Genómica, UNAM. M.C. José Antonio Ovando Ricárdez: Estudiante de Doctorado en el Instituto Nacional de Enfermedades Respiratorias Ismael Cosío Villegas. 0.3 Temario Consulta el calendario de este curso en: https://bit.ly/calendarcdsb2024 Día 1: Flujo de trabajo orientado a proyectos: Introducción al trabajo con proyectos de RStudio. Paths seguros. Control de versiones con GitHub y RStudio. Solución de problemas con las versiones de paquetes de Rstudio. Día 2: Creación de paquetes de R/Bioconductor Parte I Infraestructura de un paquete de R/Bioconductor. Documentación de funciones. Sesión social: Conociendo a la comunidad. Proyectos colaborativos Parte I. Día 3: Creación de paquetes de R/Bioconductor Parte II Diseño de pruebas. Creación de viñetas. Compilación e instalación de paquetes. Proyectos colaborativos Parte II. Día 4: Creación de sitios web para la documentación de paquetes de R Creación de sitios web con pkgdown Proyectos colaborativos Parte III. Presentación de proyectos. Clausura. 0.4 Patrocinadores Agradecemos a nuestros patrocinadores: 0.5 Licencia Este material posee una licencia tipo Creative Commons Attribution-ShareAlike 4.0 International License. Para conocer más sobre esta licencia, visite http://creativecommons.org/licenses/by-sa/4.0/ "],["trabajando-con-proyectos-de-rstudio.html", "1 Trabajando con proyectos de RStudio 1.1 Diapositivas 1.2 ¿Qué es un proyecto de RStudio? 1.3 ¿Cómo generamos un proyecto de RStudio? 1.4 ¿Por qué usar proyectos de RStudio? 1.5 Algunos hacks! 1.6 Generando rutas seguras", " 1 Trabajando con proyectos de RStudio Joselyn Cristina Chávez Fuentes 28 de octubre de 2024 1.1 Diapositivas div.grey { background-color: #bfbfbf; } div.center { text-align:center; } 1.2 ¿Qué es un proyecto de RStudio? Es un archivo especial de R, compatible con RStudio, que al ejecutarlo hará 3 cosas: Abrirá una nueva sesión de RStudio. Establecerá la ubicación del proyecto como tu directorio de trabajo. Establecerá la ubicación del proyecto como la raíz de los archivos. 1.3 ¿Cómo generamos un proyecto de RStudio? 1.3.1 Opción 1: Creando un proyecto en un directorio nuevo. En las opciones de RStudio Ve a File > New project > New Directory > New Project. Asigna un nombre a tu proyecto, sin espacios y sin caracteres especiales. Selecciona la ubicación donde crearás el nuevo directorio. Selecciona la opción Open in New Session. Oprime Create Project. 1.3.2 Opción 2: Creando un proyecto en un directorio existente. Crea un directorio en alguna ubicación conocida de tu computadora. Asigna un nombre a tu directorio, sin espacios y sin caracteres especiales (Este será el nombre de tu proyecto). En las opciones de RStudio ve a File > New project > Existing Directory. Selecciona la ubicación donde previamente creaste el directorio. Selecciona la opción Open in New Session. Oprime Create Project. 1.4 ¿Por qué usar proyectos de RStudio? Te permiten ser más organizado y pasar de tener una ensalada de archivos a tener carpetas para cada sección del análisis. Compartamentalizas tu trabajo al generar un proyecto específico para cada análisis. Te permiten trabajar con varios proyectos a la vez en sesiones independientes de RStudio, cada uno con sus propias variables, directorio de trabajo y archivos. Establece automáticamente tu directorio de trabajo. En lugar de usar setwd() solamente requieres ejecutar el archivo .Rproj para abrir la sesión y trabajar en la ubicación del proyecto. Puedes usar rutas relativas (y estables) a tus archivos, que seguirán funcionando sin importar en dónde se ubique tu proyecto. Facilita el compartir y reproducir tu trabajo. No más rutas al estilo ~/MiComputadora/MiFolder/MiArchivo. Comparte la carpeta completa de tu proyecto con todos los archivos necesarios y usa rutas relativas dentro del Rscript, por ejemplo ./datos. Nos ayuda a establecer colaboraciones y trabajar con plataformas de control de versiones. Actividad Comprueba algunas ventajas de usar proyectos de RStudio. Genera un nuevo proyecto de RStudio llamado ‘miproyecto’, recuerda que existen varias formas para hacerlo. Cierra la sesión y vuelve a abrirla ejecutando desde la terminal open miproyecto.Rproj o dando doble click sobre el archivo miproyecto.Rproj. Evalúa tu directorio de trabajo ejecutando en la consola de RStudio el comando getwd(). Cierra la sesión y mueve toda la carpeta de tu proyecto a otra ubicación. Si lo creaste en Documentos mueve la carpeta al Escritorio o viceversa. Abre nuevamente el proyecto y verifica el directorio de trabajo, ¿Cambió el directorio de trabajo? Sin cerrar este proyecto, abre alguno de los proyectos que generaste previamente (por ejemplo directorioprevio.Rproj), recuerda que puedes seleccionar Open Project in New session 1.5 Algunos hacks! RStudio recuerda los proyectos con los que has trabajado recientemente. Ve a la esquina superior derecha y da click en la flecha junto al nombre de tu proyecto actual. Verás todos los proyectos recientes. Si das click en el nombre de alguno de ellos te abrirá el proyecto en la misma sesión, si das click en el recuadro con flecha blanca te abrirá una nueva sesión con tu proyecto. Crea todos tus proyectos dentro de una carpeta principal y usa el buscador de archivos para acceder a ellos rápidamente. 1.6 Generando rutas seguras Se construyen a partir de una base estable El directorio de trabajo cambia de usuario a usuario y dependiendo de la ubicación de los archivos. getwd() Deben funcionar en cualquier sistema operativo Una ruta en sistemas Linux se ve así: "/Users/joselynchavez/Documents/materiales_cdsb2024" Mientras que una ruta en Windows se ve así: "C:\\Documents/materiales_cdsb2024" 1.6.1 El paquete here Usemos el paquete here para detectar la ubicación del proyecto: here::here() Ahora generemos una ruta segura a partir de la raíz del proyecto here::here("mi_tabla.csv") here::here("subfolder", "mi_tabla.csv") 1.6.2 Usando el paquete fs Por defecto, usa el directorio de trabajo actual como base y detecta el sistema operativo automáticamente. fs::path("mi_tabla.csv") fs::path("subfolder", "mi_tabla.csv") Tiene como ventaja que puede construir las rutas a partir del home del usuario. fs::path_home() fs::path_home("mi_tabla.csv") 1.6.3 Usando funciones base Si no deseas incluir el paquete ‘here’ en las dependencias de tu paquete, puedes usar la función file.path Esta función usa como base el directorio de trabajo actual y detecta el sistema operativo para construir la ruta. file.path("mi_tabla.csv") file.path("subfolder", "mi_tabla.csv") "],["control-de-versiones-con-github-y-rstudio.html", "2 Control de versiones con GitHub y RStudio 2.1 Diapositivas 2.2 ¿Por qué hacer control de versiones de nuestros proyectos? 2.3 Git 2.4 Recomendaciones para sus proyectos 2.5 Proyectos colaborativos 2.6 GitHub 2.7 Manual de sobreviviencia con Git Y GitHub en RStudio (en caso de ser necesario) 2.8 Cómo clonar un repositorio y tener conección/permisos para modificarlo? 2.9 Credenciales HTTPS en Cache 2.10 Conectando RStudio con Git y Github. 2.11 GitHub primero, RStudio después… 2.12 Rmarkdown en GitHub 2.13 RStudio primero y GitHub también 2.14 Proyecto existente, GitHub al final 2.15 Git basics: commands 2.16 Merge conflics 2.17 Merge conflics 2.18 En resumen", " 2 Control de versiones con GitHub y RStudio Dra. Alejandra Medina Rivera 28 de octubre de 2024 div.color { border-radius: 5px; padding: 20px; margin: 30px 0px 30px;} div.red { background-color:#f67155; } div.orange{ background-color:#f0BB51;} div.pair { display: flex; flex-direction: row; justify-content: center; text-align:center; padding:0px} div.inside { width: 49%; padding: 0px} div.scroll { max-height: 400px; overflow-y: auto; background: #111111; border-radius:5px; padding: 10px; margin: 30px 0px 30px; color: #999999;} div.alert{color:#bd475d; background-color:transparent} Este documento se basa en “Happy Git with R” de Jenny Bryan, los STAT 545 TAs, Jim Hester https://happygitwithr.com 2.1 Diapositivas 2.2 ¿Por qué hacer control de versiones de nuestros proyectos? ✅ Los proyectos suelen cambiar y crecer. 💾 Es díficil saber cuáles fueron todos los cambios a lo largo del tiempo (en especial tiempos largos, hazlo por tu yo del futuro!). 🤔 Las colaboraciones se pueden complicar sin un buen control de versiones. 🔐 Seguridad. 2.3 Git Git es un sistema de control de versiones Git funciona con GitHub, Bitbucket o GitLab ¿Por qué usar Git en vez de solo renombrar los archivos? ✅✅Por qué es mejor tener una filogenia del archivo. Git es un sistema de control de versiones distribuido, gratuito y de código abierto, diseñado para manejar todo tipo de proyectos, desde los más pequeños hasta los más grandes, con rapidez y eficiencia. Git es fácil de aprender y ocupa poco espacio con un rendimiento rapidísimo. Supera a las herramientas SCM como Subversion, CVS, Perforce y ClearCase con características como la ramificación local barata, las cómodas áreas de preparación y los múltiples flujos de trabajo. 2.3.1 Git vs controles de versión a mano Con Git cada contribuidor tiene una copia del repositorio central, con todos los archivos y la historia de los cambios por los que han pasado. Excuse me, do you have a moment to talk about version control?, Jennifer Bryan, 2017 ⚠️ NO OLVIDES TENER INSTALADO Git, en caso de que aún no lo hayas instalado, lo puedes descargar en el siguiente enlace https://git-scm.com/downloads. Para conocer la localización y la versión de Git que tienes en tu computadora, corre el siguiente comando en la terminal: which git y git --version 2.4 Recomendaciones para sus proyectos Dedicar un directorio Es mejor organizarlo en un RStudio Project Hacer un repositorio de Git Trabajen como siempre, solo además de guardar, recuerden hacer commit De vez en vez hagan push de sus cambios cuando los hayan verificado. 2.5 Proyectos colaborativos GitHub se parece más a un GoogleDoc que a un Word Document. Es fácil que los colaboradores hagan cambios y también es fácil saber quién hizo que. El owner del proyecto puede dar permisos a los diferentes colaboradores. También existen organizaciones, esto puede ser útil para manejar los permisos de grupos grandes de colaboración. 2.6 GitHub GitHub es una plataforma para guardar proyectos, hace uso de Git. Su principal utilidad es para generar código fuente de programas. ⚠️ NO OLVIDES TENER UNA CUENTA EN GITHUB, en caso de que aún no lo hayas hecho, puedes ir la página de GitHub y seleccionar join. Es indispensable tu usuario para los ejercicios que siguen. También existen otras plataformas como Bitbucked y GitLab, las cuales funcionan de manera similar a GitHub. 2.7 Manual de sobreviviencia con Git Y GitHub en RStudio (en caso de ser necesario) Por cualquier problema con la conexión entre RStudio y Git, siempre ten en cuenta la ubicación de dónde se instaló Git. Puedes usar en la terminal which git (Mac y Linux) O bien usar en la terminal where git (Windows) Recuerda que la terminal (o línea de comandos ó consola ó shell ó bash) es un programa en tu computadora que funciona para correr otros programas. Desde RStudio puedes abrir la terminal, lo cual es muy conveniente si estás trabajando en un proyecto. Puedes abrir una terminal con: Tools > Terminal (abre la terminal dentro del IDE de RStudio) Tools > Shell (abre una terminal externa a RStudio) 2.8 Cómo clonar un repositorio y tener conección/permisos para modificarlo? Git puede comunicarse con un servidor remoto usando uno de dos protocolos, HTTPS o SSH, y cada protocolo usa credenciales diferentes. La recomendación actual de GitHub es usar HTTPS porque es la manera más fácil de configurar y tiene operabilidad en multiples redes y plataformas. Es menos probable que HTTPS sea bloqueado por un firewall. Una conexión HTTPS permite que credential.helper almacene en caché su contraseña. (por tanto puedes configurar tu usuario y contraseña en tu equipo de uso) Es más sencillo acceder a un repositorio desde cualquier lugar, ya que solo necesitas los detalles de tu cuenta (no se requieren claves SSH) para escribir en el repositorio. Usualmente cuando inicies un proyecto colaborativo con GitHub inicializa el ropositorio con un README. Copia el HTTPS URL para clonar el repositorio en la terminal git clone https://github.com/TU-USUARIO/TU-REPOSITORIO.git. 2.9 Credenciales HTTPS en Cache Para usar HTTPS debes crear un token de acceso personal, PAT (PERSONAL ACCESS TOKEN), esa será tu credencial para HTTPS. Es una alternativa al uso de contraseñas para la autenticación en GitHub. Como precaución de seguridad, GitHub elimina automáticamente los tokens de acceso personales que no se han usado durante un año. ¿Cómo crear un token? Ve a tu perfil de GitHub, dale click a la imagen de perfil (usualmente en la esquina superior derecha), y busca la opción de settings ó configuración según sea la configuración de idioma que tengas. Da click a continuación en Developer settings ó Parámetros del desarrollador. En la barra lateral izquierda da click en Tokens de acceso personal. Haz click en Generar un nuevo token. Asígna un nombre descriptivo a tu token. Selecciona los alcances o permisos que deseas otorgarle a este token. Para usar tu token para acceder a repositorios desde la línea de comando, selecciona repo. (Recomendados: repo, user, workflow ) Finalmente haz click en generar token. Listo, copia y pega tu token en el lugar dónde siempre lo puedas volver a copiar, ya que por razones de seguridad, una vez salgas de la página no podrás volver a ver el token. Nota: Preserva tus tokens de la misma manera que tus contraseñas y no se las reveles a nadie. Una vez que tengas un token, puedes ingresarlo en lugar de tu contraseña cuando realices operaciones de Git a través de HTTPS. El punto final es que una vez configurada una PAT, varios paquetes de R, incluidos usethis y gh, podrán trabajar con la API de GitHub en su nombre, de forma automática. Por lo tanto, una PAT configurada correctamente significa que todo esto funcionará a la perfección: - Operaciones HTTPS remotas a través de la línea de comando Git y, por lo tanto, a través de RStudio - Operaciones HTTPS remotas a través del paquete gert R y, por lo tanto, usethis - Operaciones de la API de GitHub a través del paquete gh R y, por lo tanto, usethis Probar el repositorio Clonado Después de hacer clone Usa estos comandos para verificar tu repositorio y revisar desde dónde se está sincorinzando. cd myrepo ls -la head README.md git remote show origin Probemos haciendo un cambio en el README echo "Something I want to add to the README in my local computer" >> README.md git status Qué pasó? Ahora tenemos que decirle a git que queremos seguir los cambios de ese archivo Vamos a commit los cambios y luego a subir (push) los mismos a GitHub git add README.md git commit -m "A commit from my local computer" git push Recuerda tu TOKEN!! ¿Cómo crear un token desde R? Puedes ir directamente a la página de GitHub a la parte para generar tu token de acceso personal mediante la siguiente función: usethis::create_github_token() Y con las opciones que se mencionaban anteriormente puedes configurar y crear tu PAT. Si lo que quieres es especificar tu PAT en RStudio, las siguientes funciones te serán útiles: library(gitcreds) gitcreds_set() library(credentials) set_github_pat() Para eliminar credenciales utiliza la función credentials::git_credential_forget() 2.9.1 Actividad Ejecuta los códigos y genera tu PAT, recuerda no perderlo! 2.10 Conectando RStudio con Git y Github. Para lo que sigue a continuación, deberías tener esto: Tener una cuenta en GitHub R y RStudio actualizados Git instalado Saber que desde la terminal puedes hacer push y pull 2.11 GitHub primero, RStudio después… Crea un repositorio en GitHub: mi_repositorio > Public > YES initialize this repository with a README > clicken el gran botón verde “Create repository” En RStudio crea un nuevo proyecto: File > New Project > Version Control > Git. Ahi pega el URL del repositorio https://github.com/mi_usuario/mi_repositorio.git. Da click en Create Project. Esto nos generará los siguientes elementos: Un directorio nuevo Un repositorio Git enlazado a al repositorio de GitHub Un proyecto en RStudio Con este procedimiento ya no es necesario preocuparse por configurar controles remotos Git y rastrear ramas en la línea de comandos. 2.11.1 Actividad Genera un repositorio con el nombre que desees. Y conéctalo a RStudio. Cerciorate de que el archivo README se encuentre en tu nueva carpeta. Usa la función usethis::use_r(\"titulo_de_un_script\") y observa lo que sucede. PAUSA ¿Cómo comento y doy push/pull desde RStudio? 2.11.2 Comentar, pull y push Con la flecha azul podemos hacer pull (RECUERDA HACERLO ANTES DE HACER UN PUSH), y con la flecha verde un push. Para poder comentar y hacer push debemos marcar con una flechita mediante un click en las pequeñas cajas blancas de la columna Staged, damoc click en commit lo cual no abre la siguiente ventana. Volvemos a dar click en commit, y finalizamos con push (flecha verde). 2.12 Rmarkdown en GitHub Creemos un Rmakrdown y subámoslo a GitHub Ahora hay que agregarlo al repositorio (add), stage and commit. Subieron el hmlt? Qué tal se ve? No se ve como queremos, verdad? Para eso necesitamos recuperar el .md. El .md es un resultado intermedio de crear el html desde Rmd. Tenemos que cambiar el header para esto --- title: "RmarkwondTest" output: html_document: keep_md: true --- 2.12.1 Actividad Usa el código dir.create(\"mis_imagenes\") en la consola de tu sesión de RStudio (la que está vinculada a tu repositorio). Ejecuta el siguiente código quitando los #: install.packages("MASS") library (MASS) data(MASS::cats) # pdf("mis_imagenes/cats_plot.pdf") ggplot(cats, aes(x = Sex)) + geom_bar(fill = "orange", color = "black") + theme_classic() + xlab("Sexo") + ylab("Número de Gatos") + ggtitle("Gatos") # dev.off() Comenta y da push a los cambios que realizaste en el repositorio. 2.13 RStudio primero y GitHub también Usa uno de los proyectos que hayas generado en las sesiones anteriores, PERO, que no esté enlazado a GitHub. Ahora veremos como conectar un proyecto de R existente con GitHub. Realiza los pasos que hicimos en GitHub primero, RStudio después pero asegurate de crear un repositorio con un nuevo nombre. Y LISTO!! usa un simple ctrl + c, ó mv ó click derecho + copiar ó el método que prefieras para mover o copiar archivos. Copia los archivos de tu antigüo proyecto al proyecto nuevo. Solo haz commit y push y listo, lo que tenía en tu antigüo proyecto ya está enlazado a GitHub. 2.14 Proyecto existente, GitHub al final Supongamos que tenemos un proyecto de R existente en algún lugar de nuestra computadora. NOTA: Para generar proyecto de RStudio desde la consola puedes utilizar el siguiente código: usethis::create_project() O en RStudio con File > New Project > Existing Directory Si su proyecto ya es un proyecto de RStudio, ejecútelo. ¿Ya es un repositorio de Git? La presencia del panel de Git debería alertarlo. Si es así, ha terminado. Sino este es el primer camino a seguir: Con el páquete usethis usa la función usethis::use_git En RStudio ve a Tools > Project Options > Git/SVN. Dentro de Version control system, selecciona Git. Y da click a “Yes” cuando aparezca “Confirm New Git Repository?”. Si usaste RStudio o usethis, el proyecto debería reiniciarse en RStudio. Hazlo tu mismo si hizo git init. RStudio ahora debería tener un panel Git. 2.14.1 Breviario cultural con los PATs Si usas el paquete usethis Y has configurado un token de acceso personal (PAT) de GitHub has esto en R: usethis::use_github() Esto creará un nuevo repositorio en GitHub, lo agregará como un control remoto, configurará una rama de seguimiento y lo abrirá en su navegador. Lea la ayuda de use_github() para conocer sus argumentos y consejos sobre cómo configurar una PAT. Esto es extremadamente útil para una variedad de flujos de trabajo que llaman a la API de GitHub. Considere configurar esto si usa usethis, devtools o gh con regularidad. Volviendo al tema de Proyecto existente, GitHub al final. Otra opción que se puede hacer para conectar un proyecto existen a GitHub es ir a hacer un repositorio a GitHub PERO ten en cuenta los siguientes cambios: Elije un nombre de repositorio; probablemente debería coincidir con el nombre de su proyecto y directorio local. NO inicialice este repositorio con un archivo README. Todo lo demás es igual a los pasos que hacíamos en GitHub primero, RStudio después… Ahora ve a tu proyecto de RStudio, has clic en los “dos cuadros de color púrpura y un cuadrado blanco” en el panel de Git. Has clic en “Agregar control remoto”. Pegue la URL aquí y elija un nombre remoto, casi con certeza el origin. Ahora “ADD”. Pasado esto deberiamos volver en el cuadro de diálogo “New Branch”. Ingresa “master” como el nombre de la rama y asegúrate de que la opción “Sync branch with remote” esté marcada. Haz clic en “Create”. En el siguiente cuadro de diálogo elije “overwrite”. Ahora solo haz commit/pull/push y cérciorate que FUNCIONE!! 2.15 Git basics: commands Fetch Commits git fetch Create and Switch to a branch git branch [branch-name] git checkout [branch-name] 2.16 Merge conflics A veces, no tan a veces también, las cosas no salen bien a la primera Merging (Fusionar) es una de esas cosas Cuando bajamos un cambio o fusionamos branches esto puede pasar. Primera regla: NO ENTRAR EN PANICO!!! Revisen el status del repositorio. Qué archivo tiene conflicto? 2.17 Merge conflics Abran ese archivo y busquen los problemas de merge. Es fácil, se ven así: <<<<<<< HEAD:index.html <div id="footer">contact : email.support@github.com</div> ======= <div id="footer"> please contact us at support@github.com </div> >>>>>>> issue-5:index.html Editen esa sección, dejen una versión final. Hagan commit y push Si entran en pánico? Aborten la misión! git merge --abort t 2.18 En resumen ¡QUE LA FUERZA TE ACOMPAÑE! "],["solución-de-problemas-con-las-versiones-de-paquetes-de-rstudio.html", "3 Solución de problemas con las versiones de paquetes de Rstudio 3.1 Diapositivas", " 3 Solución de problemas con las versiones de paquetes de Rstudio Yalbi Balderas 28 de octubre de 2024 3.1 Diapositivas "],["creando-la-infraestructura-de-un-paquete.html", "4 Creando la infraestructura de un paquete 4.1 Diapositivas 4.2 Los primeros pasos 4.3 Checks 4.4 Modificando el archivo DESCRIPTION 4.5 Modificando el archivo NEWS", " 4 Creando la infraestructura de un paquete Joselyn Cristina Chávez Fuentes 29 de octubre de 2024 4.1 Diapositivas 4.2 Los primeros pasos Revisar si podemos usar el nombre del paquete available::available("mipaquete") Crear la estructura inicial del paquete usethis::create_package("mipaquete") Podemos agregar la estructura de biocthis biocthis::use_bioc_pkg_templates() Pedir que Git ignore el archivo .Rproj usethis::use_git_ignore("*.Rproj") Crear el respositorio de GitHub usethis::use_github() Crear el archivo Description estilo Bioconductor biocthis::use_bioc_description() Crear el archivo README estilo Bioconductor biocthis::use_bioc_readme_rmd() devtools::build_readme() Recuerda guardar los cambios, hacer commit y push. Crear el archivo NEWS estilo Bioconductor biocthis::use_bioc_news_md() Crear los archivos de ayuda para usuarios y contribuidores biocthis::use_bioc_coc() usethis::use_tidy_contributing() biocthis::use_bioc_support() biocthis::use_bioc_issue_template() biocthis::use_bioc_citation() 4.3 Checks 4.3.1 BiocCheck BiocManager::install("BiocCheck") BiocCheck::BiocCheck() Algunas reglas de BiocCheck: Utilizar el símbolo <- en lugar de = para definir funciones y variables. Utilizar TRUE y FALSE en lugar de T y F. Indentar el código usando 4 espacios. Las líneas de código y documentación no deben ser mayores a 80 caracteres. Las funciones deben tener 50 líneas de código o menos. El paquete debe contener al menos una viñeta. Al menos 80% de las funciones deben tener ejemplos reproducibles. Las dependencias deben ser declaradas en el archivo DESCRIPTION. El paquete debe tener al menos un biocView. El tamaño del paquete no debe ser mayor 5Mb. El maintainer debe estar suscrito a la lista de correo de Bioconductor. El maintainer debe agregar su paquete en los tags de Bioconductor. 4.3.2 rcmdcheck install.packages("rcmdcheck") rcmdcheck::rcmdcheck() Algunas reglas de rcmdcheck: El paquete debe ser instalable. Los ejemplos de las funciones deben ser reproducibles. Las viñetas deben ser reproducibles. Todas las unidades de prueba deben pasar sin errores. El archivo DESCRIPTON debe tener el formato adecuado. 4.4 Modificando el archivo DESCRIPTION Paquete Este es el nombre del paquete. El nombre del repositorio y el nombre del paquete en la descripción deben coincidir (incluyendo mayúsculas y minúsculas). Título Este es un título breve pero descriptivo para el paquete. Versión Todos los paquetes de Bioconductor utilizan un esquema de versión x.y.z. Cuando se envía por primera vez a Bioconductor, un paquete debe tener la versión 0.99.0. Se aplican las siguientes reglas: x es normalmente 0 para paquetes que aún no han sido liberados. y es par para paquetes liberados, e impar para paquetes en desarrollo. Generalmente, no se debe aumentar este número en el pre-release. z se incrementa siempre que se realizan cambios en el paquete. Descripción La descripción debe ser una visión general relativamente breve pero detallada de lo que implica la funcionalidad del paquete. Debe ser de al menos tres oraciones completas. Autores Se requiere una designación de maintainer (cre) con una dirección de correo electrónico que se mantenga activamente. Esta dirección de correo se utilizará para el contacto con respecto a cualquier problema que surja con el paquete en el futuro. Idealmente, se debe incluir el ORCiD por lo menos del maintainer. person("Lori", "Shepherd", email = Lori.Shepherd@roswellpark.org, role = c("cre", "aut"), comment = c(ORCID = "0000-0002-5910-4010")) Sólo debe figurar una persona como responsable para garantizar un único punto de contacto. Esta persona tendrá acceso al repositorio git en git.bioconductor.org. El acceso a Commit puede ser dado a otros desarrolladores por solicitud en la lista de correo bioc-devel. Otra opción es añadir colaboradores al repositorio de GitHub. Este enfoque permite el desarrollo por muchos pero restringe el acceso a git.bioconductor.org. Licencia El campo de licencia debe referirse preferentemente a una licencia estándar no restrictiva. Las licencias que restringen el uso, por ejemplo, a investigadores académicos o sin fines de lucro, no son adecuadas para Bioconductor. Los paquetes de bioconductor básico suelen estar licenciados bajo Artistic-2.0. El paquete debe contener sólo código que pueda ser redistribuido de acuerdo con la licencia del paquete. LazyData Para paquetes que incluyen datos, se recomienda NO incluir LazyData: TRUE. Incluirlo en ese caso, ralentiza la carga de paquetes con datos grandes. Dependencias Todos los paquetes deben estar disponibles a través de biocViews o CRAN de Bioconductor; el uso del campo Remotes: no es soportado, por lo tanto las dependencias sólo disponibles en otros repositorios (e.g. GitHub) no están permitidas. Un paquete puede ser listado sólo una vez entre Depends, Imports, Suggests, o Enhances: Imports: es para paquetes que proporcionan funciones, métodos o clases que se usan dentro del código del paquete. La mayoría de los paquetes están listados aquí. Depends: es para paquetes que proporcionan funcionalidad esencial para los usuarios del paquete, por ejemplo, el paquete GenomicRanges se enumera en el campo Depends: de GenomicAlignments. Es poco común que más de tres paquetes aparezcan como Depends:. Suggests: es para paquetes usados en viñetas, ejemplos y código condicional. Comúnmente, los paquetes de anotaciones y experimentos (por ejemplo, TxDb*) usados en viñetas y código de ejemplo se incluyen en este campo, evitando así una descarga costosa. Enhances: es para paquetes como parallel que mejoran el rendimiento del paquete, pero no son estrictamente necesarios para su funcionalidad. En el caso de que se requiera una función única externa para el código del paquete, la disponibilidad y el uso del paquete pueden hacerse a través de: if (!requireNamespace('suggPKG', quietly = TRUE)) stop("Install 'suggPKG' to use this function.") suggPKG::function() biocViews Este campo es obligatorio! Especifica al menos dos biocViews. Los términos deben provenir del mismo tipo de paquete (Software, AnnotationData, ExperimentData o Workflow). Puedes encontrar más información en: https://www.bioconductor.org/packages/release/BiocViews.html BugReports Se recomienda apuntar hacia el repositorio de GitHub, por ejemplo: https://github.com/usuario/paquete/issues. URL Se incluyen los links importantes, como el repositorio con el código fuente y el sitio web de pkgdown si se cuenta con él. Por ejemplo: https://github.com/usuario/paquete https://usuario.github.io/paquete 4.5 Modificando el archivo NEWS Secciones: New: Nuevas funciones. Bug fixes: Reparación de errores en las funciones previas o en la documentación. Changes: Cambios en el código de las funciones, incluyendo modificaciones en los argumentos. Breaking changes: Cambios importantes que romperían el código en caso de no ser atendidos, por ejemplo el uso de funciones o argumentos antiguos. Enhancements: Mejoras a las funciones existentes. Formato El archivo NEWS se ve similar a este ejemplo: "],["creando-mis-primeras-funciones.html", "5 Creando mis primeras funciones 5.1 Diapositivas 5.2 Nombre de la función 5.3 Estructura de la función 5.4 ¡Tu turno! 5.5 Argumentos 5.6 ¡Tu turno! 5.7 Indentación 5.8 Uso de espacios 5.9 Comentarios 5.10 Mensajes para el usuario", " 5 Creando mis primeras funciones Instructora: Joselyn Chávez 29 de octubre de 2024 5.1 Diapositivas 5.2 Nombre de la función Cortos pero descriptivos Recomendable: Separar las palabras con _ Establecer una palabra en común al inicio para familias de funciones use_bioc_citation() # es mejor que citation() bioc_cit() usebioccitation() useBiocCitation() use.bioc.citation() 5.3 Estructura de la función Indentar las líneas de código. Agregar comentarios para separar/describir las secciones importantes. Usar la sintaxis paquete::funcion() cuando hacemos llamado a funciones de otros paquetes. usethis::use_r("subset_heatmap") Generemos el código de manera regular. Simulemos una matriz con diversas mediciones y grafiquemos los datos en un heatmap. mi_matriz <- matrix(rnorm(100), nrow = 10) rownames(mi_matriz) <- paste0("medicion_",letters[1:10]) colnames(mi_matriz) <- paste0("grupo_",letters[1:10]) library(ComplexHeatmap) Heatmap(mi_matriz, cluster_columns = FALSE, heatmap_legend_param = list(title = "valores")) Escribamos una función que permita seleccionar algunos grupos de interés y genere el heatmap. No la mejor opción: library(ComplexHeatmap) subset_heatmap <- function(x,mediciones=NULL,grupos=NULL) { x_subset <- x[mediciones,grupos] Heatmap(mi_matriz, cluster_columns=FALSE, heatmap_legend_param=list(title="valores")) } Un poco mejor: library(ComplexHeatmap) subset_heatmap <- function(x, mediciones = NULL, grupos = NULL) { x_subset <- x[mediciones,grupos] Heatmap(mi_matriz, cluster_columns = FALSE, heatmap_legend_param = list(title = "valores")) } Mucho mejor: subset_heatmap <- function(x, mediciones = NULL, grupos = NULL) { # subset matrix x_subset <- x[mediciones, grupos] # plot heatmap ComplexHeatmap::Heatmap( x_subset, cluster_columns = FALSE, heatmap_legend_param = list(title = "valores")) } Ejecutemos la función: subset_heatmap( mi_matriz, mediciones = c("medicion_a", "medicion_b", "medicion_c"), grupos = c("grupo_d","grupo_e","grupo_f")) 5.4 ¡Tu turno! Escribe una función que: Filtre la matriz y mantenga sólo los valores por encima de cierto valor. Genere el heatmap filtrado. Recuerda seguir las recomendaciones para escribir funciones. 5.5 Argumentos Los argumentos deben tener un nombre descriptivo y bien documentado. No la mejor opción: subset_heatmap <- function(x, m, g) { # subset matrix x_subset <- x[mediciones, grupos] } Una mejor opción: subset_heatmap <- function(x, mediciones, grupos) { # subset matrix x_subset <- x[mediciones, grupos] # plot heatmap ComplexHeatmap::Heatmap( x_subset, cluster_columns = FALSE, heatmap_legend_param = list(title = "valores")) } Los argumentos generalmente deben tener valores default. subset_heatmap <- function(x, mediciones = NULL, grupos = NULL, return_plot = TRUE) { # subset matrix x_subset <- x[mediciones, grupos] # plot heatmap ComplexHeatmap::Heatmap( x_subset, cluster_columns = FALSE, heatmap_legend_param = list(title = "valores")) } Evalúa la validez de los argumentos subset_heatmap <- function(x, mediciones = NULL, grupos = NULL, return_plot = TRUE) { stopifnot(is.matrix(x)) # subset matrix x_subset <- x[mediciones, grupos] # plot heatmap heatmap <- ComplexHeatmap::Heatmap( x_subset, cluster_columns = FALSE, heatmap_legend_param = list(title = "valores")) if(return_plot == TRUE) {return(heatmap)} } Este código no debe funcionar: subset_heatmap( as.data.frame(mi_matriz), mediciones = c("medicion_a", "medicion_b", "medicion_c"), grupos = c("grupo_d","grupo_e","grupo_f")) Nota: Usa las funciones is() para evaluar la clase de los objects, no uses class() == ni class() !=. Proporciona pistas para entender los errores. subset_heatmap <- function(x, mediciones = NULL, grupos = NULL, return_plot = TRUE) { if(!is.matrix(x)) {stop("x debe ser una matriz")} # subset matrix x_subset <- x[mediciones, grupos] # plot heatmap heatmap <- ComplexHeatmap::Heatmap( x_subset, cluster_columns = FALSE, heatmap_legend_param = list(title = "valores")) if(return_plot == TRUE) {return(heatmap)} } Este código debe dar un error, más un mensaje de ayuda. subset_heatmap( as.data.frame(mi_matriz), mediciones = c("medicion_a", "medicion_b", "medicion_c"), grupos = c("grupo_d","grupo_e","grupo_f")) 5.6 ¡Tu turno! Agrega pasos de evaluación para los otros argumentos de la función. Incluye mensajes de ayuda cuando el formato de los argumentos no es el esperado. 5.7 Indentación Usa 4 espacios para indentar, evita los tabs. No uses líneas de más de 80 caracteres. 5.8 Uso de espacios Usa un espacio después de la coma: a, b, c. Usa espacio después de operadores binarios: a == b. 5.9 Comentarios Usa “##” para comenzar las líneas de comentarios. Los comentarios deben usarse como notas y documentación solamente. No dejes código comentado que no se va a usar. Evita los TODO’s comentados cuando vayas a publicar el paquete. 5.10 Mensajes para el usuario Si deseas imprimir mensajes para el usuario, como el progreso del análisis en la función o advertir sobre los valores de los argumentos, evita el uso de cat(), mejor usa: message() comunica mensajes diagnóstico, como el progreso de la función. message("Paso 1: completo") ## Paso 1: completo warning() comunica situaciones inusuales que pueden ser manejadas por tu código. warning("El número de elementos esperados es mayor a uno, se tomará el primer valor del vector") ## Warning: El número de elementos esperados es mayor a uno, ## se tomará el primer valor del vector stop() indica una condición errónea. stop("x debe ser numérico") "],["documentación-de-funciones.html", "6 Documentación de funciones 6.1 Diapositivas 6.2 Links importantes: 6.3 ¿Qué es la documentación de una función y por qué es importante? 6.4 Generacion de la documentacion con ayuda del paquete roxygen 6.5 Antes de empezar…✏️ 6.6 Generacion de un bloque de documentacion con ayuda del paquete roxygen. 6.7 Otros campos de la documentacion.", " 6 Documentación de funciones Instructor/a: 29 de octubre de 2024 6.1 Diapositivas 6.2 Links importantes: Esta lección está basada en algunos manuales sobre documentación: Una viñeta del cranproject El manual de paqutes de r En esta viñeta de cranproject 6.3 ¿Qué es la documentación de una función y por qué es importante? 🙇️ Es la información complementaria que el desarrollador escribe sobre una función y que se accede con ? seguido el nombre de una función actual de un paquete p.ej. ?unafuncion. 📁 La documentación se almacena como un archivo .Rd (“R documentation) en la carpeta man/. 🔎 La documentación usa una síntesis especial, que es distinta a la de r y que está ligeramente basada en LaTeX. 📄 Se puede renderizar como html, pdf o texto sin formato según se necesite. 6.4 Generacion de la documentacion con ayuda del paquete roxygen En un paquete de r y en cualquier ecosistema de devtools no editamos un documento .Rd manualmente. La documentación usa una síntesis parecida a LaTex que puede ser fácil de estropear. Por ventaja existen paquetes como roxigen2. Usar roxigen nos permite usar comentarios especiales sobre el inicio de la función, esto nos da un par de ventajas: ✅ La documentación y la función estarán en un mismo lugar, por lo que si editas la función será mas fácil recordar actualizar la documentcion también. 🎉 Puedes usar markdown en lugar de la síntesis especial para los archivos .Rd 6.5 Antes de empezar…✏️ Vamos a crear un función para nuestro paquete. Supongamos que para nuestro paquete necesitamos una función que calcule la moda. Esta es una forma sencilla de calcular la moda: getmode <- function(serievector) { uniqv <- unique(serievector) uniqv[which.max(tabulate(match(serievector, uniqv)))] } unique(serievector): Crea un vector que contiene únicamente los valores únicos de la serie de números serievector. match(serievector, uniqv): Encuentra la posición de cada valor de serievector en el vector único uniqv. tabulate(match(serievector, uniqv)): Cuenta cuántas veces aparece cada valor en la serie serievector. which.max(tabulate(match(serievector, uniqv))): Encuentra el índice del valor máximo en el vector de frecuencias. uniqv[which.max(tabulate(match(serievector, uniqv)))]: Devuelve el valor correspondiente al índice calculado, que es la moda. Creamos un ejemplo para ver que funcione: serie_numeros <- c(1, 2, 2, 2, 2, 3, 3, 4, 4, 4) resultado <- getmode(serie_numeros) print(resultado) ## [1] 2 Bien ahora si podemos podemos empezar a usar el paquete de roxygen para documentar nuestra función.. comencemos. 6.6 Generacion de un bloque de documentacion con ayuda del paquete roxygen. Podemos insertar un esqueleto de comentarios de roxygen para ver su síntesis. Colocamos el cursor en algún lugar de la definición de nuestra función y buscamos en la pestaña Código > Insertar Roxygen Skeleton. #' Title #' #' @param serievector #' #' @return #' @export #' #' @examples getmode <- function(serievector) { uniqv <- unique(serievector) uniqv[which.max(tabulate(match(serievector, uniqv)))] } Ahora ya tenemos un esqueleto de la documentación que nos da una ventaja para su creación. Las líneas de comentarios de Roxygen siempre comienzan con #', el habitual para un comentario # mas un ' Veamos los comentarios de uno por uno: Empezamos con el titulo. Se sugiere poner en el titulo las acciones principales que realiza la función en este caso por ejemplo podremos usar: #' @title Encontrar la Moda de una Serie de Números #' #' @param serievector #' #' @return #' @export #' #' @examples getmode <- function(serievector) { uniqv <- unique(serievector) uniqv[which.max(tabulate(match(serievector, uniqv)))] } Muy bien!. El siguiente comentario que podemos ver es @param. Pero antes, vamos a añadir una pequeña descripción de la función y como usarla. Primero añadimos la pequeña descripción con @description: #' @title Encontrar la Moda de una Serie de Números #' #' @description Esta función lee una serie de números en forma de vector y #' encuentra el elemento que mas se repite, es decir la moda. #' @param serievector #' #' @return #' @export #' #' @examples getmode <- function(serievector) { uniqv <- unique(serievector) uniqv[which.max(tabulate(match(serievector, uniqv)))] } Ahora vamos a añadir el comentario @usage que nos indica como puedes mandar a llamar la función. #' @title Encontrar la Moda de una Serie de Números #' #' @description Esta función lee una serie de números en forma de vector y #' encuentra el elemento que mas se repite, es decir la moda. #' @usage getmode(serievector) #' @param serievector #' #' @return #' @export #' #' @examples getmode <- function(serievector) { uniqv <- unique(serievector) uniqv[which.max(tabulate(match(serievector, uniqv)))] } Ahora si vamos a añadir una pequeña descripción de nuestros argumentos. Si tuviéramos mas de un parámetro en nuestra función podríamos llamar las veces que sea necesario el comentario de parámetro con @param, veamoslo. Ahora añadimos una pequeña descripción a nuestro único parámetro que es serievector: #' @title Encontrar la Moda de una Serie de Números #' #' @description Esta función lee una serie de números en forma de vector y #' encuentra el elemento que mas se repite, es decir la moda. #' #' @param serievector Es una serie de números en forma de un vector simple de r. #' #' @return #' @export #' #' @examples getmode <- function(serievector) { uniqv <- unique(serievector) uniqv[which.max(tabulate(match(serievector, uniqv)))] } Después, podemos añadir un comentario de detalles de la función con @details. Por ejemplo, si en nuestro ejemplo tuviéramos ciertos valores no numéricos en nuestro vector de entrada, por ejemplo letras, ¿nuestra función podría leerlas?, o si le diéramos un vector sin caracteres ¿que pasaría?, veamos: serie_numeros <- c(0,2,2,"d", "d","d") resultado <- getmode(serie_numeros) print(resultado) ## [1] "d" serie_numeros <- c() resultado <- getmode(serie_numeros) print(resultado) ## NULL Entonces, esto es un ejemplo de lo que podríamos poner en el comentario @details. Hagamoslo describiendo esto. En details podemos agregar detalles un poco mas específicos que en la descripción de la función #' @title Encontrar la Moda de una Serie de Números #' #' @description Esta función lee una serie de números en forma de vector y #' encuentra el elemento que mas se repite, es decir la moda. #' #' @param serievector Es una serie de números en forma de un vector simple de r. #' #' @details si tu vector de entrada puede ser interpretado alternando números y #' letras escritas entre comillas "". Si un vector esta vacío, dará como #' resultado un NULL. #' @return #' @export #' #' @examples getmode <- function(serievector) { uniqv <- unique(serievector) uniqv[which.max(tabulate(match(serievector, uniqv)))] } Ya casi terminamos de llenar nuestra documentación, pero antes vamos a ver algunos otros arrobas que pudieran ser importantes. El @import e @importfrom importan funciones de otros paquetes en caso de que las necesitemos, el primero importa todas las funciones del paquete que que solicites, y el segundo importa solo algunas funciones especificas. En nuestra función no necesitamos llamar funciones de otros paquetes puesto que todas las que usamos están en r base. Pero imaginemos que tu función, por ejemplo necesita leer un archivo .tsv con la función read_tsv del paquete readr y después reconvertir la tabla resultante en un archivo con write.table pero solo necesitas esa función del paquete utils, entonces haríamos: #' @title Encontrar la Moda de una Serie de Números #' #' @description Esta función lee una serie de números en forma de vector y #' encuentra el elemento que mas se repite, es decir la moda. #' #' @param serievector Es una serie de números en forma de un vector simple de r. #' #' @details si tu vector de entrada puede ser interpretado alternando números y #' letras escritas entre comillas "". Si un vector esta vacío, dará como #' resultado un NULL. #' @import readr #' @importFrom utils write.table #' @return #' @export #' #' @examples getmode <- function(serievector) { uniqv <- unique(serievector) uniqv[which.max(tabulate(match(serievector, uniqv)))] } Así podemos importar las funciones que necesitemos de otros paquetes y se incluirán en la documentación y se cargaran automáticamente al cargar tu paquete. :eyes::exclamation: Para un correcto funcionamiento de tu paquete y al estar los paquetes necesarios incluidos en la documentación, no será necesario llamarlos de la forma ``library(“apackage”)```. Entonces llegamos a la sección @return. Esta descripción le servirá al usuario del paquete para conocer cual sera el resultado de la función, que puede ser un archivo, una tabla, un numero,etc. Entonces retomando la función que usamos al inicio, vamos a escribir una descripción corta del resultado de la función getmode(). #' @title Encontrar la Moda de una Serie de Números #' #' @description Esta función lee una serie de números en forma de vector y #' encuentra el elemento que mas se repite, es decir la moda. #' #' @param serievector Es una serie de números en forma de un vector simple de r. #' #' @details si tu vector de entrada puede ser interpretado alternando números y #' letras escritas entre comillas "". Si un vector esta vacío, dará como #' resultado un NULL. #' @return El carácter con mas frecuencia de el vector de entrada. #' @export #' #' @examples getmode <- function(serievector) { uniqv <- unique(serievector) uniqv[which.max(tabulate(match(serievector, uniqv)))] } Por ultimo tenemos @export que es el encargado de renderizar la documentación para que pueda aparecer en la ventana de Ayuda (abajo a la derecha). esta opción la dejamos para funciones principales que el usuario va a utilizar, aunque puede que existan alguna funciones internas que no queremos que el usuario vea. En ese caso vamos a usar @noRd en lugar de este. Antes de terminar podemos incluir ejemplos de como funciona nuestra función para un mejor entendimiento, pongamos los que ya realizamos: #' @title Encontrar la Moda de una Serie de Números #' #' @description Esta función lee una serie de números en forma de vector y #' encuentra el elemento que mas se repite, es decir la moda. #' #' @param serievector Es una serie de números en forma de un vector simple de r. #' #' @details si tu vector de entrada puede ser interpretado alternando números y #' letras escritas entre comillas "". Si un vector esta vacío, dará como #' resultado un NULL. #' @return El carácter con mas frecuencia de el vector de entrada. #' @export #' #' @examples #' serie_números <- c(1, 2, 2, 2, 2, 3, 3, 4, 4, 4) #' resultado <- getmode(serie_números) #' print(resultado) getmode <- function(serievector) { uniqv <- unique(serievector) uniqv[which.max(tabulate(match(serievector, uniqv)))] } Ahora si, una vez teniendo listo el bloque de comentarios para la documentación, vamos a ejecutar devtools::load_all() para cargar nuestras funciones y hecho esto, ejecutamos devtools::document() o presionamos Ctrl/Cmd + Shift + D para convertir los comentarios en archivo .Rd y poder renderizarlo. 💯 Listo, tenemos nuestra documentación para una función. Así se verá cuando el paquete esté terminado. 6.7 Otros campos de la documentacion. @seealso para indicar funciones relacionadas y facilitar la búsqueda de funciones. @references añade algunas referencias. @author para especificar el autor de la función. "],["diseño-de-pruebas.html", "7 Diseño de pruebas 7.1 Diapositivas", " 7 Diseño de pruebas Mirna Vázquez Rosas-Landa 30 de octubre de 2024 7.1 Diapositivas "],["creación-de-viñetas.html", "8 Creación de viñetas 8.1 Diapositivas 8.2 ¿Qué es una viñeta? 8.3 Características de una vignette 8.4 ¿Cómo consultar la viñeta de un paquete? 8.5 ¿Cómo crear una viñeta? 8.6 ¿Cómo guardar y actualizar la viñeta? 8.7 Veamos un ejemplo 8.8 Actividad", " 8 Creación de viñetas José Antonio Ovando Ricárdez 30 de octubre de 2024 8.1 Diapositivas 8.2 ¿Qué es una viñeta? Es una guía extendida sobre cómo funciona el paquete. Es recomendable que muestre cómo utilizar las funciones del paquete, aplicado en un flujo de trabajo; por ejemplo: el análisis estadístico de una encuesta o el análisis de expresión diferencial de genes. Podemos estructurarlo como haríamos con la escritura de un capítulo de libro o de un artículo científico: debe mostrar el problema a resolver y la metodología paso a paso sobre cómo el paquete lo resuelve. Si el paquete contiene funciones que se complementan entre sí para alcanzar un fin específico, entonces debes mostrar su uso de forma compartamentalizada. 8.3 Características de una vignette Debe mostrar un flujo de análisis explotando el potencial de tu paquete. Implementa tantas funciones de tu paquete como sea posible, pero no es necesario que incluya todas. Los datos a usar deben ser pequeños o fáciles de acceder. Puedes crear múltiples viñetas para mostrar diferentes casos de análisis y cubrir una mayor cantidad de funciones. 8.4 ¿Cómo consultar la viñeta de un paquete? browseVignettes(package = "ggplot2") 8.5 ¿Cómo crear una viñeta? biocthis::use_bioc_vignette("mi_vignette") Esta función tendrá tres efectos: Generar el directorio vignettes en caso que no exista. Agregar dependencias en el archivo DESCRIPTION (por ejemplo, knitr necesario para construir viñetas dentro del paquete). Abrir un templado en formato .Rmd para comenzar a escribir la viñeta, que se va a guardar en vignettes/mi_vignette.Rmd 8.6 ¿Cómo guardar y actualizar la viñeta? Una vez que se ha generado el archivo vignettes/mi_vignette.Rmd se hacen las modificaciones necesarias. Puedes usar el comando: edit_file("vignettes/mi_vignette.Rmd") Para guardar los cambios debes hacer click en el botón Knit o utiliza la combinación de teclas Ctrl/Cmd-Shift-K. 8.7 Veamos un ejemplo Busca la viñeta del paquete regutools en la página de Bioconductor https://bioconductor.org/packages/release/bioc/html/regutools.html 8.8 Actividad Escribe una viñeta que muestre cómo utilizar las funciones para cargar y filtrar los datos de pbmc. "],["compilación-e-instalación-de-paquetes.html", "9 Compilación e instalación de paquetes 9.1 Diapositivas 9.2 Metadatos de una paquetería 9.3 Licencias 9.4 Paqueterías de código fuente 9.5 ¿En dónde podemos encontrar el código fuente de un paquete? 9.6 Instalando la última versión en desarrollo 9.7 Instalando paquetes desde GitHub 9.8 Instalando un paquete local 9.9 Contribuyendo código", " 9 Compilación e instalación de paquetes Joselyn Cristina Chávez Fuentes 30 de octubre de 2024 9.1 Diapositivas 9.2 Metadatos de una paquetería Los metadatos de la paquetería se encuentran en el archivo DESCRIPTION. 9.2.1 Description El campo Description describe lo que hace tu paquetería. Suele ser extenso, si requieres escribir múltiples líneas, deben estar indentadas. Por ejemplo: # Description: Este paquete contiene todas las funciones generadas en el curso # de escritura de paqueterías en R. También contiene las funciones que cada # participante propuso para solucionar un problema relacionado con su trabajo. 9.2.2 Dependencias Las dependencias son las paqueterías que tu paquete necesita para funcionar. La lista de paquetes se escribe separada por comas y es recomendado que se escriban en orden alfabético. Existen tres tipos: Imports: Son paquetes que deben instalarse para que tu paquete funcione y por tanto se van a instalar en el momento que instales el paquete. Internamente existe una función que evalúa si los paquetes se encuentran instalados o no y solamente instala los faltantes. Esta dependencia hace solamente la instalación pero no ejecuta library(), por lo que los paquetes requeridos deberán ser cargados dentro de la escritura del paquete. Depends: Son paquetes que obligatoriamente deben estar para que tu paquetería funcione pero no se instalarán de manera automática. Aquí también se indica la versión de R requerida para el funcionamiento del paquete. Los paquetes que se listen aquí se van a cargar al mismo tiempo que se ejecute el library(mipaquete). Suggests: Se refiere a los paquetes que tu paquete puede utilizar y aprovechar para ser más poderoso en el análsis pero no los necesita para funcionar. Por ejemplo, paquetes que contienen sets de datos para hacer pruebas o análisis de práctica. Nota Importante Se recomienda listar los paquetes necesarios para el funcionamiento de nuestro paquete en Imports porque cuando se ponen en Depends se cargan los paquetes completos y probablemente solamente requerimos una o dos funciones. Cargar demasiados paquetes completos, sin ser necesario, sólo hace que nuestro paquete se vuelva pesado y lento. Es mejor llamar particularmente a las funciones usando la sintaxis explícita: Biostrings::translate() 9.2.3 ¿Cómo añadir dependencias? Usando usethis: usethis::use_package("ggplot2", type = "Imports") Editando manualmente el archivo DESCRIPTION. 9.3 Licencias Establece quién puede usar tu paquete. Existen diversas licencias pero hablaremos sobre las 3 más comunes: MIT (Massachusetts Institute of Technology): es simple y permisiva. Permite a cualquier persona usar y distribuir tu paquetería con una sola restricción: la distribución debe incluir la declaración de licencia del autor. Existe un texto base al cual se le pueden añadir cláusulas o excepciones. Este es un ejemplo: GPL-2 (General Public License): Permite usar y distribuir tu código con la condición que si se genera una versión modificada de tu código, su distribución debe ser también bajo esta licencia. Aunque está enfocada a la distribución de código abierto, permite dejar en claro quién es el autor del material y evitar la apropiación del código por terceros. Un ejemplo de la aplicación de esta licencia es el desarrollo de Linux. CCO: Esta licencia implica que cedes todos los derechos y el código puede ser utilizado con cualquier fin, excepto fines comerciales. Es el más utilizado en los paquetes. Concede el derecho a utilizar y distribuir el material sin requerir el permiso del autor. 9.4 Paqueterías de código fuente En algunas ocasiones necesitaremos instalar paquetes que no se encuentran compilados, por ejemplo: Paquetes en desarrollo de CRAN o Bioconductor. Versiones anteriores de paquetes de CRAN o Bioconductor. Paquetes que no se encuentran depositados en CRAN o Bioconductor, sino en repositorios personales como GitHub. Paquetes que estás desarrollando de forma local. El paquete remotes será de gran utilidad. Regularmente, los paquetes que instalamos desde algún repositorio como CRAN o Bioconductor son paquetes binarios que ya se encuentran compilados previamente. Existen algunas funciones que nos permiten instalar paquetes desde código fuente. Anteriormente, se solían utilizar las funciones install_* del paquete devtools; sin embargo, recientemente se creó el paquete remotes que contiene las mismas funciones pero está específicamente diseñado para ayudarnos a trabajar con paquetes desde código fuente. 9.5 ¿En dónde podemos encontrar el código fuente de un paquete? Si el paquete se encuentra disponible en CRAN, puedes encontrar el link al código fuente en la sección URL. Si el paquete se encuentra disponible en Bioconductor, puedes encontrar el link al código fuente en la sección Package Archives Si el paquete se encuentra en GitHub o GitLab, necesitarás conocer el nombre de usuario y el nombre del paquete. 9.6 Instalando la última versión en desarrollo Si el paquete se encuentra depositado en CRAN podemos usar la función remotes::install_dev("pkgname") Por ejemplo, para instalar la versión en desarrollo de dplyr usaremos el comando remotes::install_dev("dplyr") Si el paquete se encuentra en Bioconductor usaremos la siguiente función: remotes::install_bioc("pkgname") Por ejemplo, para instalar la versión en desarrollo de regutools, el paquete desarrollado por miembros de la CDSB, usaremos el comando remotes::install_bioc("regutools") 9.7 Instalando paquetes desde GitHub Para poder instalar un paquete desde GitHub necesitaremos conocer el usuario del creador y el nombre del repositorio. remotes::install_github("usuario/repositorio") Por ejemplo, para instalar el paquete starwarssay desarrollado por Erick Cuevas (Erickcufe) utilizaremos el siguiente comando: remotes::install_github("Erickcufe/starwarssay") Independientemente de si el paquete se encuentra en CRAN, Bioconductor, o ninguno de ellos, podemos instalar un paquete depositado en una cuenta de GitHub. Para poder instalar un paquete desde GitHub necesitaremos conocer el usuario del creador y el nombre del repositorio donde se encuentra depositado el paquete. Con esta información usaremos la siguiente función: 9.8 Instalando un paquete local Paso 1: Abre el proyecto del paquete que estás desarrollando. Paso opcional: Ejecuta la documentación si realizaste algún cambio. devtools::document() Paso 2: Construye el paquete: devtools::build() Paso 3: Instala el paquete desde tu proyecto actual: devtools::install() 9.9 Contribuyendo código Una ventaja de descargar el paquete de forma local es que puedes realizar cambios, probar que funciona de manera local y después contribuir (haciendo un pull-request). Usemos el paquete saludo Clona el repositorio en tu computadora. git clone https://github.com/ComunidadBioInfo/saludo.git Ahora puedes abrir el proyecto del paquete y agregar tu código. "],["creación-de-sitios-web-con-pkgdown.html", "10 Creación de sitios web con pkgdown 10.1 Diapositivas 10.2 Instalación 10.3 Configura el paquete para crear el sitio con pkgdown 10.4 Genera la estructura de pkgdown 10.5 Pre-visualiza el sitio de manera local 10.6 Personalizando el _pkgdown.yml 10.7 Las variables bslib 10.8 Layout 10.9 Accessibilidad 10.10 La página de inicio 10.11 La página de referencias 10.12 Articles 10.13 News 10.14 Publicando el sitio web", " 10 Creación de sitios web con pkgdown Joselyn Cristina Chávez Fuentes 31 de octubre de 2024 10.1 Diapositivas div.grey { background-color: #bfbfbf; } div.center { text-align:center; } 10.2 Instalación install.packages("pkgdown") 10.3 Configura el paquete para crear el sitio con pkgdown Este paso se ejecuta solamente una vez, dentro del proyecto del paquete. usethis::use_pkgdown_github_pages() Este paso genera las acciones automáticas de GitHub para renderizar el sitio. El archivo README.md será tu página de inicio, la documentación en man/ va a crear una sección de referencias, y las viñetas serán renderizadas como articles. 10.4 Genera la estructura de pkgdown Este paso se ejecuta solamente una vez. usethis::use_pkgdown() 10.5 Pre-visualiza el sitio de manera local Este paso lo puedes ejecutar para visualizar el sitio cada vez que hagas una modificación, antes de enviar los cambios a GitHub. pkgdown::build_site() 10.6 Personalizando el _pkgdown.yml 10.6.1 Metadatos URL Este es el link donde se va a renderizar el sitio, revisa que sea correcto y, de ser necesario, actualízalo. url: https://pkgdown.r-lib.org template Esta sección permite personalizar la apariencia general del sitio. template: bootstrap: 5 bootswatch: cerulean 10.6.2 Temas Light switch Puedes proporcionar un “light switch” para permitir a tus usuarios cambiar entre temas oscuros y claros configurando la opción de light-switch a true: template: light-switch: true Bootswatch themes La forma más fácil de cambiar toda la apariencia de tu sitio web es usar un tema de Bootswatch: template: bootstrap: 5 bootswatch: materia Puedes ver los temas disponibles en https://bootswatch.com/ Estos temas suelen no ser compatibles con el light switch, pero puedes intentar. Al cambiar el bootswatch theme necesitas renderizar el sitio para ver por completo los efectos del tema. build_site() Mientras estás experimentando, puedes acelerar las cosas simplemente reconstruyendo la página de inicio y el CSS ejecutando: build_home_index() init_site() y luego actualizando el navegador. Los bootswatch theme con barras de navegación altas (lux, pulse) también requieren que se modifique la variable pkgdown-nav-height. Debido a que los temas de bootswatch son proporcionados por el paquete bslib, se puede anidar el campo bootswatch debajo del campo bslib. template: bootstrap: 5 bslib: bootswatch: lux pkgdown-nav-height: 100px 10.7 Las variables bslib Hay tres variables clave que afectan al color: bg (fondo) determina el fondo de la página. fg (primer plano) determina el color del texto. primary establece el color del enlace y el color translúcido en la barra de navegación y la barra lateral. template: bootstrap: 5 bslib: bg: "#202123" fg: "#B8BCC2" primary: "#306cc9" También se pueden personalizar las fuentes predeterminadas utilizadas para la mayoría del texto (base_font), para los encabezados (heading_font) y para el código (code_font). La forma más fácil es proporcionar el nombre de una fuente de Google con la siguiente sintaxis: template: bootstrap: 5 bslib: base_font: {google: "Roboto"} heading_font: {google: "Roboto Slab"} code_font: {google: "JetBrains Mono"} 10.7.1 Syntax highlighting Los colores utilizados para el resaltado de sintaxis en bloques de código están controlados por la configuración theme: template: bootstrap: 5 theme: breeze-light Puedes elegir entre: a11y-dark, a11y-light, arrow-dark, arrow-light, atom-one-dark, atom-one-light, ayu-dark, ayu-light, ayu-mirage, breeze-dark, breeze-light, breezedark, dracula, espresso, github-dark, github-light, gruvbox-dark, gruvbox-light, haddock, kate, monochrome-dark, monochrome-light, monochrome, monokai, nord, oblivion, printing, pygments, radical, solarized-dark, solarized-light, solarized, tango, vim-dark, zenburn. 10.7.2 Navbar style Los campos bg y type de la barra de navegación controlan los colores del fondo y el primer plano respectivamente. Normalmente bg será light, dark, o primary: navbar: bg: primary 10.8 Layout Puedes personalizar el contenido de la barra de navegación, pie de página, utilizando los campos navbar y footer. Todos ellos utilizan una estructura similar que define por separado la estructura global y los componentes individuales. 10.8.1 Navbar Esta es la estructura default: navbar: structure: left: [intro, reference, articles, tutorials, news] right: [search, github, lightswitch] intro: “Get Started”, enlaza a una viñeta o artículo con el mismo nombre que el paquete. reference: si hay archivos . Rd. articles: si hay viñetas o artículos. tutorials: si hay algún tutorial. news: si existe NEWS.md. search: la barra de búsqueda. github: un enlace al repositorio de origen (con un icono), es determinado automáticamente a partir del archivo DESCRIPTION. lightswitch; un “interruptor de luz” para seleccionar el modo claro, modo oscuro o modo automático. Puedes utilizar el campo structure para reorganizar la barra de navegación: navbar: structure: left: [search] right: [reference, articles] Puedes usar la misma sintaxis para organizar el menú de artículos: navbar: components: articles: text: Articles menu: - text: Category A - text: Title A1 href: articles/a1.html - text: Title A2 href: articles/a2.html - text: ------- - text: "Category B" - text: Article B1 href: articles/b1.html 10.8.2 Footer Esta es la estructura por defecto:: footer: structure: left: developed_by right: built_with Que utiliza dos de los tres componentes incorporados: developed_by: una frase que describe a los principales autores del paquete. built_with: una frase que hace publicidad de la misma. package: el nombre del paquete. Puedes personalizar la organización del pie de página: footer: structure: left: pkgdown right: [developed_by, legal] components: legal: Provided without **any warranty**. 10.9 Accessibilidad Las configuraciones default de pkgdown tratan de hacer el sitio lo más accesible posible para todos, pero hay algunos puntos a tomar en cuenta: 10.9.1 Colores Si ajustas cualquier color del tema default, verifica que el contraste entre el fondo y el primer plano no haga difícil leer ningún texto. Puedes utilizar la herramienta de evaluación de accessibilidad en https://wave.webaim.org. El color default genera un contraste demasiado bajo contra el fondo gris pálido de la barra de navegación. Este color viene de la paleta “danger” de bootstrap, así que puedes arreglarlo sobreescribiendo esa variable en tu _pkgdown.yml: template: bootstrap: 5 bslib: danger: "#A6081A" Si utilizas entradas de barra de navegación personalizadas que sólo muestran un icono, asegúrate de utilizar también el campo aria-label para proporcionar una etiqueta accesible que describa el icono. cran: icon: fab fa-r-project href: https://cloud.r-project.org/package=pkgdown aria-label: View on CRAN 10.9.2 Imágenes Para hacer tu sitio completamente accessible, agrega una descripción del contenido de las imágenes en las viñetas usando el campo “fig.alt” de las opciones del chunk de R. 10.10 La página de inicio Los contenidos del home page son automáticamente generados desde el archivo index.md o el README.md. pkgdown les asigna diferentes prioridades, por lo que es possible tener contenidos diferentes en el repositorio de GitHub y la página de pkgdown si provees ambos archivos. La página de inicio también incluye una barra de contenidos con links importantes, como la guía de contribución, el código de conducta, etc. 10.11 La página de referencias pkgdown crea una página de referencia en reference/ para cada una de las funciones del paquete, basado en la documentación. pkgdown ejecuta todos los ejemplos de las funciones, insertando los resultados renderizados en los archivos HTML generados. Por defecto, pkgdown genera un índice de referencia que es sólo una lista de funciones ordenadas alfabéticamente. El índice es mucho más útil con la curación manual porque las funciones pueden agruparse y describirse en categorías. Cada entrada de referencia puede adoptar una de las tres formas siguientes: Un título, definido por los campos title y desc (descripción) opcionales. Un subtítulo, definido por los campos de subtítulo y desc (descripción) opcionales. Lista de temas definidos por un campo de contenido. Mientras editas el índice de referencias, puedes ejecuar la siguiente función para renderizar solamente el índice, lo que permite ver de forma rápida el efecto de los cambios sin tener que renderizar todo el sitio. pkgdown::build_reference_index() reference: - title: "Connecting to Spark" desc: > Functions for installing Spark components and managing connections to Spark contents: - spark_config - spark_connect - spark_disconnect - spark_install - spark_log 10.12 Articles pkgdown creará automáticamente todas las viñetas que se encuentran en la carpeta vignettes/, traduciéndolas a archivos HTML en articles/. Se puede nombrar el artículo de introducción con el nombre del paquete para generar una página “Get Started” automáticamente. 10.13 News Si el archivo NEWS.md está presente, se procesará en un changelog de una sola página basado en los títulos de las secciones del archivo. pkgdown asume que el archivo NEWS.md está formateado con encabezados de nivel uno (#) para especificar el nombre del paquete y el número de versión, y con encabezados de nivel dos (##) para proporcionar una organización temática para cada versión. # pkgdown 1.1.0 ## Bug Fixes * Lots of them 10.14 Publicando el sitio web Haz commit de los cambios y luego push. Ve al repositorio del paquete en GitHub y espera a que la acción de GitHub termine de renderizar el sitio. Ve al sitio web, el formato debe ser similar a https://usuario.github.io/paquete "],["proyectos-colaborativos-1.html", "11 Proyectos colaborativos 11.1 Propuesta 1 11.2 Propuesta 2 11.3 Propuesta 3 11.4 Propuesta 4 11.5 Propuesta 5", " 11 Proyectos colaborativos 11.1 Propuesta 1 11.2 Propuesta 2 11.3 Propuesta 3 11.4 Propuesta 4 11.5 Propuesta 5 "],["404.html", "Page not found", " Page not found The page you requested cannot be found (perhaps it was moved or renamed). You may want to try searching to find the page's new location, or use the table of contents to find the page you are looking for. "]]