From 35dd8915f724c8670cc78814ee5387bf64547dff Mon Sep 17 00:00:00 2001 From: 6044f7ba74fe444923919de71b482464 <6044f7ba74fe444923919de71b482464@app-learninglab.inria.fr> Date: Tue, 14 Oct 2025 14:40:13 +0000 Subject: [PATCH] Version def --- module2/exo4/250715_qPCR_data_aggregated.xlsx | Bin 0 -> 23675 bytes module2/exo4/exercice 2 partie 4.ipynb | 264 ++++++++++++++++++ module2/exo4/exercice.ipynb | 25 -- 3 files changed, 264 insertions(+), 25 deletions(-) create mode 100644 module2/exo4/250715_qPCR_data_aggregated.xlsx create mode 100644 module2/exo4/exercice 2 partie 4.ipynb delete mode 100644 module2/exo4/exercice.ipynb diff --git a/module2/exo4/250715_qPCR_data_aggregated.xlsx b/module2/exo4/250715_qPCR_data_aggregated.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..71a539c267c32b29841d16782f4522a627baf2d7 GIT binary patch literal 23675 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⪚&wdqnyCk>d)BrmtkoD8Qwy)&^*xv$6-~EPVKLhf8G4`&*W|c^2LGA zeAR(qASP3PJmhK&_k7Z*C<4;bMAiFX1GTz3NYdoS)6jQS?aGb!wdVZB{bkyK&>-CD4lw)&On9JM3*shUZiaFN(>@_oZMoy zeM6RWTlkto4HX@A*{L-}V_d?zl)HJt@2Cij$#J#!2}izZ7@9(!b2-M8XWS-`CAHZr zY9%TWZ7b2(B*U$FRV7@G7j4vmcg$|{dI5!8%hW&We$DoManvy$)dQK`1ri7=kmjHX za3bSym3&ZI^S{P?pbEUxJrRhtkqM2CCEq&`C6*O~!*FMU`fdv+12ZfD&*8|KDva#O zM0LUAg(~<$2Yzg0j5N!go!g=G#SsL6eyCaXCH9~>OYKZ}{Cf}jJSYU8kX?`~M-I~U zd5UEy`e~-Y5%TDhq>JJ9 zzzXYISY+&8ExQT*vGTS=4wS|-Cc=foh{@>TVBEz^MBA584PVl@xv)XW&FQp%Poz*3)Dg&H_OmW|z#Cx;+)5oq_9%fJ41EAs}F3w-sw2Mz!|*qr8D+oT3> z2i}$nYqLA^V3T`W{+Zdak=$c?8AK-hPD6t!fZ_rKk_A^eX7#)C55jdwU<$b-`>)>S zwK;K~DQ2_JDkJM4D{Qz*=yN(F2&;B$C;u+3CHX9E>-^3YPQ zh|3_d=XVl6+(pzP548DP=xpld3!jDV16?Ix(~{tSSt26!z5@Am za!BAzU{@OF2sm3{K|aRW68uldPtZm_Kqbaj6FGND=6S8Aiaf@WbKol{rG8|2|MOoNvn2QPCsQlwzo2d~|_I`X0Qyvjmt{3YCH02~^+5EJAcZi=wu zOh%{43LWQJA;#X*o^+Z3%=||7qy8@?Ozv_3_dH{S;|=R|IxFL>$d+CVF&Ihn?{;BKM@C4GB|J8v2fkE%uM_mdTy{5c{0=sErRPiM<_#Fm2Yv}CstxY!EdXZ@ zK}u9Fs7=X9gtb-6q69kyL#GpXMHm=3#ai{8)b`F~J+BlGJ1lg5-I!XNdB)&~E$9O@ z3K(@!;)x-Fi|n(aE#9iOo`*AUcRu^Ps3)9?jBnLM?wci!k4=ocok~Lvnf_beds_iR zDIjMYrg6%E^?UIu0?TilS^#A5=<^wEl6C+QKK~`c$p@sXP9b1pV>Zs8Yz8zvk#itR z#r^sI(xCPN{H|yv^t}(vZq7`2@h(KJ4Io5`ihHxFXGgxr`)U?UP}cC!xhJiwTm4jO zg8`FBP`WERUZ{qzd?DvH#-8>?H66$Znb86D947Pu=MGQ?49EOWSC+k^LVIVZZX1C1 z@Zj?=S{_N|ibMWBnW$*+I^nU9%EN+C%4xo1DxIPsaRlJU_nsVi@~%m- z?gjn*ow4+l1pH#LKy@&}t>qRQIBcrX#7D9K&C{O0up7VzfnGz%4eB7zcAvc;YE52Z z)wrWC`3q8L13QVc;E~FI zi0c2%6v$&=V0PHFuH+|l)&S7)*12ey7vBSMwAzny6{4%tTbdUOA)e%qTk6QwB^-%) zeL`T}ZUU+yv)yM%0YYCBZT8;|F9Pv!!DXAwVSe-nr)`AXP}}$2oe-=`5;$(&!ti^B z5M4C3a}4(MQ!@`Z{eDZM8hjiE&LU3pBjC8wKfFlk+4FHMsY67;-;)=IkfnSZ;tIK_ z)>9T`ty%UDEZXx+-q*RQwM#kT2c!A*lfD!+fquOm|LDkoHG1U-BoG-N zV!D?81-;$DT$Q?%t;t4p#A1B3X`EVhf&#e*sr^&H}`o1Hf3FU{XWRNQF7FqSi<6MtP8O(svY4 zAgQ?AA}QT^+x02NpKZyweuj+<5wKf)_LwO}R2Sfip(6x($Igb{KRW>W$+=ukYz;^~ zJ^suP{Sp5LFF#!>Cr`Vz@rnWDyzeCc^W>*p4opy%&= zeFo6haTqk9b8&zkQ#M#>B{MEgn46}6Xr;y@!!XWbvktf{RXgMe4Gf~7xWxAFY?XLE zI}(0@@uJP;G^!Tp)f*DHeKZ=DW|@tKAvt4x2L$T()LMDKn5siC&Uc}qr3CIp1HR%Z z1`VkBxByU2lNy!54FCxb3k+t%kTE?hJo_u(^4daImO!A_or019U;}ZR=M&nawB$S9 z{SZrjbgNAH`rVl+Rp80q@GZDaHNFu*P{QmCfcD3EKNoC7v-Ud}`|Rzu5~MbkulG~Y z&Q#re$PgEXBadKE(d+|&)EMHMhO&vJ!nb>=+Kx*JI;Tlj4fy(}7?wbyi1}#zuSX2Z z+TSRUj-htj#O%;RV93A>#+TY+LAhgZv|IYdzC2<6mLmMa2)Ye`@RgM5x$x|W7L`?; z4I>KqR-J3+%|7ys5IS?aJyS&=qK|d(u8uv4ba+Y5?==yCBM5%UMF$0N5jgVG24xLC z5?q)v0^T|iq344W5D!9TKjx-|Qgni3`G)=04Vb-P_5sXh?!rSDl*cHr5xQro4B4`@ z+jD@a2NDQvH_k{FL&m~>(yaIr`->uZ45sgTS|#-I+e2wt?9qx7ou~9L)Yq^$bC%-S z?y)zr?S^2TXyhlF!cKcs@v9xAkr*rAdKuNwvl5iLUoppuKZG6-5CU}wTUdVf*J7zZg7$V^NyLh_Q%g`*Wr>j*^sCUQHj zPQA}+^b7g*@NJfSd?-D%TCqxv5%yfDd_VD`oWS$~m=GaT`&Tus!o_$b425uxZ;LLi z8on2*efXx;p^HiIayyppapG8=G)HMlf^jx77e6?&x5DMmt%3_r>)D04m`2`$qqiV9 z1<&+}6{~e)Ru+%qs{~c`!!&R#pdDGoFBY!SZ+d+ESlfq)VfE2?WXrZj*ot9upt3Xl z3E&`u%}m@I_iKB`90#p3v=b-|$+|-Iq*mW3JR94Jz3q|I+q`&YFH8-WlA!tkrFl^n zgGNqpWC0?Gx2$W|utlbm8OC(qUfNg)T-`Dk%J2Bs<_mZY*vo5)zLXFrWva~jnBFU{ zOeY>e`NWl4NJ;X(D0c+zKneF99AV^6VELoKS87FVpe4+f%iFkEFV;WTR@9|4Ntb{0 zN8Idx)-~5;KO4K>ETuQRjiNAhS}zQfJptSJlJ)|g!87|0j>MU1Yr%UDylZ`_IIH@S zdKVzM37K#bTo;aveRCVLziqu-d;ddD!iK7nNT`$i3HSo+0~F(TvrAREeF+T8g`I#C@| zXDwU58FdO+f4eWMUWSg+2jWsv0FiJIJE@2B*}e|_SU(Nk{n8;fP2wCVu9T&Kw!Sm3 z3|Q@&)=lU{Wc3XGRmt}R<7|1f2Ed3R&L8QB%Y*; zkY-_&iX>p_427GJrTF<%z*SmeBkM9GkwLc127>y5foZWe!~PFsGWj-;n{m<=&5DO+Vf!eSH3QC1>|q3ezPMpr*jsfL8vOPlW^aTa}y%a z+Lx06?;C>e*HIMXs1U&@C(8lNl2w?7L_w;?zvB`F#NSAfv8tMS#ajDmHw)pb?!E1W zqR2RIkt@aGX4R>n`pDg+oNqUWM>A?r)YSv@%~U%@)R8+=oCX0iW1cl0pCmn@y*LUU zGvtND=VFLVuD_tT2~mmZXZ1LPYM4Sm8|SM4f6Nphhwz$>x`s%1Js3(JDJ29CIYq`X z33j&($U&b00deGyv|zcb=Dl8;Y)C&Jbks3zOGCJheOYG0Hx>7n%B$`#&B(!Dja7Ln zHsY3idth4w(ge;9DZu0oC?HulhSA<=;2Nsx&L6hIbdSAsxH9*z&7l+ z&QXnX5h5@uP6}~v($y~ry3?A)z5W7{ML=Z6vu-65DQ$HxxUegua8?b_J}w79lYRf0 zQ<)q^bn3bCMXlUdu!c3rk#Np8HSaCT7Xk9{a7^Yr!Q+^=YL%SC?sWydU%TxeR$1MM z^?&Uj=Sw*W?hRk&1I9lM&IC+*_x_1`5zdcr1jbJyuBjY#4-}`DF$Bxz9db+MrS2U>|o!|(wU zm;{*!EWg&buBB;aP#B}=)2-t5kHKP7v%vn-{<)i4ISz;rJgyx%32R*aT~?$`&Qjwe zE2}yHs+=^bv-7YGR;M931XOz7J;?!nlelLItd50wh4+=Ha-LPBNU4fUv0;~@F6f{egw1#p|$n8hm9ry9iML5 zw?AAmX>ZfnCPqu!lrvxt6va~V93v}IlkwUie;F_SWm@YO;{O%heS2R;4(_YZ_#}7i z_yaKs;pQ--ZPQk+}8Y@TWQ97FXr z_{=(3b&L~nn)J_wQm2xh(PFkwLw}8XMoz#lT{T zHjK}#L%?FxN7@90{)&IN=<9V{! z+ScK9d;RP5ZEXF0YT+S&or)_Ef9?wlV>a#dMY&jk!YnM^1DqmeQI%VC$X-)|V5a;To z9!ZEVH^gJuM}Uy_0<2GZwt>#vbxT*L#{Z`H`A7M17Pk z<(xfqFpLQsDkH(Gx$W!vmhX|mZ>3UWxx&4)i8u@NLTbI=TVo|OdPAY?=s1yFp2 z_%%56ixD7$AV*XkjK~s#2?tp%lyKfDYv1AX`0zW(10YfQYS5Bk3Vu-=OXHbERMTHhmL z;LjZ@hElO(WYd0Yi}y$n6rlhXra69(e=yvZ-oun{`PNO)XE4%ifL4qK6bTK8fq}6} zu)}Z<#4RWYN|!<6XuDYK(>jlgh$dSefWH#I)ztat%0hqvs>2{-ZNop@pAeW4BoCIzbcxk+S#l(Kf-d5WTzzoy3(CTa0{CM%uItOpHc0}c_;Qlh*sf5@(OX6loS z;x6=19{>kA9R;eBnGW`_zcM_~f6ERRZJ=oe@YXxxPALcQvYK;M<_o6ehtVhiGG3wo zkX<(Xm37>m{Ciw=-alj|{~?o){l{Fbf6Kh&(+|e^9$}77W+EEERmkJy3bA`gvkw2b zn{^hgX=h|Bt*8rAJ{*YzDk;YCb$!#!{dAM)V8usd#SmQw6CU7F>m!Jn+GDM_8@!~a zRINBU9R=$B(XDnAc=D%{R(Jn$@{k+}`qObd&40@}*pcg7<9J)WJg1c-dAS?}%Sy#_ z@Ih&6KJ{egmH-Yre|7T*sQ=X+p8YS`1#fN2f)60Rt8V{_Z|h^MZmiP9`L6{JBnxe1 zi=jen!2~=XUq;%l*ELY9e~x1mdz6$aV~W1eW4uk;sepD61o+4Yz=AEhnF~HZv*!|5 zaX45J$LUUDl9JVLQfa{Xi#$4cz@a~c5#Zkjvz{ivSvNZ)kAM3ttO5?21@L8b^k2R_ zW*3dtefpx8^e?;l`2AH3J{N=}{ktG|Q9i)JZxrffR@Uzn6%g_x7a0=M1Sg#x;!%z- zqr7+ZT%<%c*VfFyjzsHU={P?Q7aeY1M|q2PDF-exnq8YaqH3z;m85>O*gYD>l%TZP z0YY}x>64)JbKIv*-H@kY>|r$2{;kkDd?}9cu}LL_Q?2B9Q8QklPOP#)JmT&pGNZ1K4&D3(*|?C2B&Bgm~xSW=8H zWJpPod6$E2tX#(L^k)Yw$+t-|D@=cZg=7p>&5+Dd6rxKhdXdqRi_&5zs3e8jayi(A z=|;ELY=%T5ik&GFSY&i;zhDS?rpx9AYbdAGOo-2-yS1#b6xn&I zGqHrD%*5i<{uEzpCERCDkdllZ&jH9My}-som^VXWAtN(FD~yc}g(=mZceA9wbMVOpjLANw+Bnjxw76V{$gcKLNkw^9l$_#A~Rsk-jVm0E{c- zl(2vxl!_JK=SbK~!8Aq$E8>Q%Y@CAvO5(>!wU1~at<PIFeAyTmxi}KEo6*ErK z$)x5;Re8$EBn0%NNHeJerWufu{)<)AbO6PF)+_)=dJE>UMLI?MT>jw=HsKAQop1!0 z1znpi`KNw$fv^Pytur7G>Ck{0`c$>x^Nq5oIfyTJ;t!VAFsUTLm?Ea+RTs!EI@}2f$v)d_(LuJ8obt<^R!+<<5l`^++)wB9 zToIDdm#^BgZVtSaxVdl8>E!iEn01<+N!G! zNfnaU!)>0teG)dD+7Ii^#*;j534EpTqQmo9xW%GRol7v46e?_zJ!MLX;CX}9yO0}03h711kMeLQ0now<7UZA_6`Y-! zcnC7H3m=j_26zLsXx7aNOqs$Wdfx2xu@(&BL-D2n-n$}+Zc2ikOoJbD)1bY)5EV(H8l)~uy=JXJIU=em2rG$V_N66{0x zlK}tfehjJwy$lwl&)67C3Q=~<3Qz(zJ5<_gfC&tE^wc`mD;f#Yi7BW#(#M)j6-ywB zdE`TcI(~np>R5lJvrFlUGb5Q|bvi z2a@BVcs(??sZ@2^WNg1nq_WJI4wNfR+;Dhmw%9gH-Af=1?y~m3GwkV&{zlN&q!Pok z!`Gn8L!rk2T(r;Bf%mB;N8;_9hd`@iOCtf|xZ@RPYQIm~RsX>Q7{X}B=*OWpiubVod#)?&dg#e?jTavN? z|7oC7>7E?+|FmBt z0Rid7H3)!boPwmQxHFNp|WV`QnCD5`boD6b>Ugwm>cM0?}}b_^s+pz zQr8`Wu8Os0NA=_?}=8aR%%4|3T6ZEBS*$012^dm5^7bVQ}hm8|Tfe)(5{e2S8x}O|HNe?brOFwg# z>;yl$tO!Jf5%S!*_(KxuiNE_F^* z6^S!XG&oPxg{!QGh3d}8w}^_XbOEcQFR?cD=D`WKY|)1z7u7MBG~hL{sH}12NzK-p zp=zcSlDUjTsc4Cu>XrB9PWi~k)lIVQ6?bY{ET?Q*KLLqAN&>|J_B<^kalI*8cc%W( zv23`#%k;--LNKJdL1iSEu(9!}xo?qzD}|`~jY0f<{7o=5r%HJ0FnD~$+lB#oeJ z?Dair<;+xqh`x|&$ab0BJv%vHTyU6=2pH+RHq#MADh==tMyv2IV!n8;u9grsUq5cz z`gk(K=_s`uRlLm7{3i3qdKDbpDu#N*lwi@IA$IY1#gq9ILh13NLiYpOw zbc@sT3lX=GMqL@T2;RhlhL{Qbk0B%LFg@u>gzt1F2|b)%;yHO_vWJ;tUZv+5=C?wH;k40ZjzUq z)j-{u-LpFDxOj=;_nNLP4X5MEBT8y)`K@&nTf~LVA=Bzup+zdlEN10+&!%tx!k|*4PoV`)EYoEP z=bbS=(!6jELUQwdxGWCwR}Lg_Q&ovXB4uDQq zKLNQ?U+iVoQ?}%)c^1%v$qUcQ@xDfxUPE49-Zgw5%I!CUhj6{E=5_U7dR^Ca4?2fSt7!RVDN!HI>o#xKWoa{V5@#%Z#kYDWBRii!%f>N>wRqlXZQg#m~pU zb+6Lvs@a_mcj?JMd+n|fAOhfs8VPskp3G!fICt*E&29uL^#rtFbf(C$1X1p0T4^__ zbPG2!zrNg14A(+lZFkgqx#}>IS*mW4`*y?_*Eh0Vi!0v7FFKGwvit?!*qln9#pjq2 z^f(G^H%xI47+g1pC>Yf(lp_!eEMTQU@MxT%j<=VD;)rK>6;s##s$u7GJuvlTGkyHj z3qpY(utVqTY?)YP=#zjiy40{ZuaLb)zX%mf0|z@7#p}7bLeiYPPexLM2VBI?g=E z%cydFh68q;Or0>WV2q7EYzDnUS#&^WV4=}U3#nb(PEN&DcF7v`0{hH#!mqMWEqs1~ z^i0Hp0z;x$v(l$CWoK%(rss$yvckj}Dhtr(Mx_F)x9`o`J6kY$IduXk2jYFwB7VWYo;QPG?@E%!IaVSysgBb)Zu->;mnTT0ssQI;Jt$j(Zx?^iBg0~a=2J7RK& zEmGlAaMh^bmU7nvCZyy80ss2N7^d)!TP)Dn%b11m(9WjD2-75q*yTp|{egV@f)5B~ zDm+Vl6FbL+H}ST<9saY@!EzGGgcDkOjq}L(8U23V>WWi#x+sqn=Q6Bt8f*}*3IBwe z@%Ap5Sjvpi&HRVZkQ#v2j0&Vee{A-!@`XdW zWQ8#=v?D=3=NZ|D1Zrp<${7SP&ZS8hRIyEC(~n|{IpnmseHoVq3`au+Xisl4sqfdu;&f}#4KwUD}8qtR}UHB84sHs$^rnF`xlf2 zOkE%V$^uv$zk;$xlWY_rP2O2j%JTYm)vvm!e-JK6k`%7g9cw6iTFv%A(8q2K|2fCW zFVSe3p)INM)xoGcTp=GT#RgO_4R@bN&uu(YuovOLsC*_=v+E;8dNOtOLnGoBc^+`s zfpb?(UU|i`VeKCwrz5J3X zkD_42#Lln5$dOo{a&a%!Pk_hXMRhhY-Y{t~kF5Kt+6pyMuT%{~@k4d`F6w+}T_!S9 zj4^00L`1%WODp}MCliT$mcX01i0B)%nWc9>|%_$>2SEB@$@dxSzZ++k#iun=?!*PbQ8hbf888}m{tzE58X1@`%#zXblB5n5|L!s33A@_h2 z^*aad|L(`B|BD~KihI-Jfk2c4$SCZ84#eB8uK&g%uynt@(%~rm z5_8VGs5_IhIeJL#X)-w-dmHv0K6m3|n90Z-OsHQWJTgjhCQK@@xFue!IREubq|_8+ zSH@$JJnqOo&$w*+qL&XXb*20h5M}7cz9MV#gNkmaxpF6KbE)z#?#~fdyC@vI#t0J6 zQ~C3O+T_txF8907w)_=l6Vsy~&3WI|?R=}5tc^9Sl$~&GZmXqFzSg-J=C3}RjABeH zyCLx6tQ?m?JYMG3ur^mo9J2kFi%gwiqHXiTZPtcVK30E`QKTPv^umbz+EL)0NO)C2BbBn#l7ts+W_YvV7v=|qcx=^ zK<%2w07$~$e)sQqP_%-yJf&U1IQG90+@&kg3ew_*H?6|A#nY}m9UX%K9o=6_ zDOz*d)UzuPc>Svb|0E&)bJ4v<|3vg_cB2*jHaYG3382FP(LV literal 0 HcmV?d00001 diff --git a/module2/exo4/exercice 2 partie 4.ipynb b/module2/exo4/exercice 2 partie 4.ipynb new file mode 100644 index 0000000..cf67ef1 --- /dev/null +++ b/module2/exo4/exercice 2 partie 4.ipynb @@ -0,0 +1,264 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Exemple de notes de laboratoire" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Aujourd'hui je dois vraiment me forcer à prendre de belles notes afin de rentre mes résultats intelligible et reproductible. C'est nécessaire pour la science ! Mon fichier exemple est stocké dans le document disponible ici :" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/home/work/module2/exo4/050715_qPCR_data_aggregated.xlsx\n" + ] + } + ], + "source": [ + "print(\"/home/work/module2/exo4/250715_qPCR_data_aggregated.xlsx\")" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fichiers dans le dossier courant :\n", + "['exercice_python_en.org', 'exercice_fr.ipynb', 'exercice_fr.Rmd', '250715_qPCR_data_aggregated.xlsx', 'exercice_python_fr.org', 'exercice_R_en.org', 'exercice_R_fr.org', 'exercice 2 partie 4.ipynb', 'exercice_en.Rmd', 'exercice_en.ipynb', '.ipynb_checkpoints']\n" + ] + } + ], + "source": [ + "#Visualiser les fichier dans le même répertoire que ce notebook\n", + "import os\n", + "print(\"Fichiers dans le dossier courant :\")\n", + "print(os.listdir())" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Premières lignes du fichier :\n", + " Lot Sample Name Collecte Rep Target Name Ct Ct Mean\n", + "0 1 ESC 1 1 DUXCL 33.252235 33.609188\n", + "1 1 ESC 1 2 DUXCL 34.533466 33.609188\n", + "2 1 ESC 1 3 DUXCL 33.041870 33.609188\n", + "3 1 pEF1amCherryDUXClong 1 1 DUXCL 21.982199 22.071215\n", + "4 1 pEF1amCherryDUXClong 1 2 DUXCL 22.086342 22.071215\n" + ] + } + ], + "source": [ + "#Importer le fichier et visualiser quelques lignes\n", + "import pandas as pd\n", + "\n", + "# Nom du fichier (doit être identique à celui dans le dossier)\n", + "nom_fichier = '250715_qPCR_data_aggregated.xlsx'\n", + "\n", + "# Lire le fichier Excel\n", + "try:\n", + " df = pd.read_excel(nom_fichier)\n", + " print(\"Premières lignes du fichier :\")\n", + " print(df.head()) # Affiche les 5 premières lignes\n", + "except Exception as e:\n", + " print(f\"Erreur : {e}. Vérifie que le nom du fichier est correct et qu'il est bien dans le dossier.\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "# Commençons les stats ! Importons les packages importants\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from math import *" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Et maintenant, connaissons le nombre moyen de répétitions" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Moyenne de répétitions (colonne 'Rep') : 1.96\n" + ] + } + ], + "source": [ + "# colonne à analyser\n", + "colonne = 'Rep'\n", + "\n", + "# Calculer la moyenne (en ignorant l'en-tête automatiquement)\n", + "moyenne = df[colonne].mean()\n", + "\n", + "print(f\"Moyenne de répétitions (colonne '{colonne}') : {moyenne:.2f}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Je veux maintenant connaître l'écart type moyen entre de toute l'expérience (on filtre par sample)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Écart type de 'Ct' par 'Sample Name' :\n", + "Sample Name\n", + "ESC 5.096469\n", + "pEF1amCherryDUXCcourt 5.420076\n", + "pEF1amCherryDUXClong 4.103212\n", + "pEF1artTAEGFPmCherryDUXCcourt 5.001891\n", + "Name: Ct, dtype: float64\n" + ] + } + ], + "source": [ + "# Grouper par 'Sample Name' et calculer l'écart type de 'Ct' pour chaque groupe\n", + "ecart_type_par_groupe = df.groupby('Sample Name')['Ct'].std()\n", + "\n", + "print(\"\\nÉcart type de 'Ct' par 'Sample Name' :\")\n", + "print(ecart_type_par_groupe)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Écart type moyen de 'Ct' pour tous les 'Sample Name' : 4.9054\n" + ] + } + ], + "source": [ + "# Calculer l'écart type moyen global\n", + "ecart_type_moyen = ecart_type_par_groupe.mean()\n", + "\n", + "print(f\"\\nÉcart type moyen de 'Ct' pour tous les 'Sample Name' : {ecart_type_moyen:.4f}\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Je vais maintenant ploter l'écart type moyen (ordonnée) en fonction du sample (abscisse) en tracant avec une barre en pointillé l'écart type moyen en droite asymptotique" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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wOlXXRWcv489Bt///sDp118P224LDz4IP/3pwOm33QbTpsHvfgfXXTdw+sKFUFoKv/1t8En08MMwbhz88pdwzz0Dpy9eHPx75ZXw0ENrTsvLg0ceCb5/73vw17+uOb2kBO67L/j+7W/Ds8+uOX3qVLj99uD7V78a7MN422wDvw5/SNV1b+D0dNQ90HUv4boHsGr7j/OPS34EwO7nzyev6sM1ptfvvDuvfeNSAOacN4/shpXB9bKvHo30urceaW2DbGb5ZlbY9x04BHgtnTGIiIiIiKxLWptYmNmWQN+fUJnAne5++drmVxOLsWVT+GlmU6E6mTqqlyKjm66XqbMpXC9HZBMLd38HmJXOdYqIiIiIDIW6eRMRERERiaMEWUREREQkjhJkEREREZE4SpBFREREROIoQRYRERERiaMEWUREREQkjhJkEREREZE4SpBFREREROIoQRYRERERiaMEWUREREQkjhJkEREREZE4SpBFREREROIoQRYRERERiaMEWUREREQkjhJkEREREZE4SpBFREREROJkJjOTme3b993dnxq+cEREREREopVUggxcFv7rwAHDFIuIiIiISOSSSpDdff/hDkREREREZCQYUhtkM3t5LeOXpCYcEREREZFoDfUhvZmJI8zMgC1TE46IiIiISLSSfUjv1vBrdtz3PtOBf6UyKBERERGRqCT7kN5/1/LdgWeAe1MWkYiIiIhIhJJ9SO8yADN7zt3/NLwhiYiIiIhEJ9kmFnsCn3L3bw4y7UfAA+7+XJJlxYAlwIfufuRQghURkU3XyaeeTmV1TdRhjApTKsq585bfRB2GyKiVbBOLi4FfrmXa4nD6UUmW9RXgDaAoyflFRGQUqKyu4bwFd0Ydxqiw4LyTow5BZFRLtheLnYBH1zLtMWDXZAoxs6nAEcCNSa5XRERERCStkr2DXARkA22DTMsCCpMs5yrgwnXNb2bzgfkA06ZNo7KyMgigqIisrCzq6+sByM3Npbi4mBUrVgCQkZHBpEmTqKuro7OzE4CysjLa2tpoaWkBYPz48cRiMVauXAlAXl4e48ePp6qqCoBYLEZFRQW1tbV0dXUBUF5eTmtrK62trQBMmDABM6OhoQGAcePGEYvFsMbaYAMyYnjhRKx5JfT2AATDHauhsz0YHlcIDtbWHCyTnYdn52ItQZnEMvGCYqy5Hnp7g2WK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bU0ND/3hfo465tP9Sd9+BxzIxJISAI781DE8//dniGVm8spLL3HQ3p8AoK2tnbKy8kHLPvSIowDYfscdaW1tobCwMGz7lUvjqlU8//dn+MzxQXve8ooK9txnH15euoTDjjxq0JieeOwxXn/tnzx4/30ANDU28c7bb5OVnc0us3djs6lTAdhx1qw1ktU+K1asoKysDIDKykruvfdeFq/nj5hDDjmEF198kT333JOysjLmzJnT3x49UV973V122YX33nuPgoICHn74YY455hjeCo9VX7vz5uZmCgsL17luERER2fSlNUF295NSXui6kqVx49Y9vbQ0qTvGyYh/OCredddcTXl5BU+98BK9vb1MmVDwUXj5+Ru8vuNPOoWFd9/J7++9h2uuv6F/fGIMZoa7c+Ln5vHd712+3nJzcnKC5TIyyM7O6R+fkZFBd3f3oEnmumJyd370s6s44OBD1pj36aee7F8XQCwjRvcgzT7y8vL6H9p4+eWXefvtt5k5cyYAq1evZubMmbz99tsDlrv44ou5+OKLATj55JPZeuutKS0tZdWqVXR3d5OZmcny5cuZMmUK8NEfNACHH3445557bv+DWQAdHR3k5uauddtFRERk9FAb5BTZetuPUbViBS8tCX6Kb25upru7m6bGRiomTSYjI4Pf3Xn7oG1/AQoKCmkJn+BMZtpJ8z7Pr669BoCPbb9D//jFf/0rDStX0tbWxsMP/oHd5+zJvvsfwIP3/57a8CnkhpUr+eC99zZoO+fsvQ/3L7yXnp4e6mprefbpp/vvmg8W0wEHH8zNv76+/+n4t996s/+J62Rst912/QnwEUccQVVVFcuWLWPZsmWMGzdu0OS4p6en/+nXV199lVdffZVDDjkEM2P//fdn4cKFANxyyy186lOfAqCqqqo/+X/hhRfo7e2lJLwTX19fT1lZGVlZWUPbWSIiIrJJ2vTbIEcgsQ3y7rvvzo9+8UtuvO0OvnX+V2lvbyM3N4/fP/wnzjjrbE476Xj+8PuF7L3fXPLXctd4YkkJe8zZk7123YmDDvkkl/3wx+ucVl5RwTYf+xiHH3X0GuV8Ys+9OOfM03jnv//luBNOZOddgwc1L7r0Mo476jB6e3vJysrixz//BdO22GLI237kp45hyfPPse/uu2IG/3f5D6mYNAlg0JjmnX4m77/3HvvP2Q33oDuX2+65L+n1HXHEEVx//fV84QtfWOd8S5Ys4Ve/+hU33ngjXV1d7LPPPkBwZ/j222/vb4Ly4x//mBNPPJFLLrmEnXfemTPPPBMIHga87rrryMzMJC8vj7vvvrv/bvwTTzzB4YO1ZRcREZFRKe3dvA3FSO3mLdHGdvO2IVavXs0+s3fmiWdfoGj8eADuvO0WXlm6lCuu+kVaY1lXTEMxWDdvAHvvvTcPPfQQEyZMSEWYQ3bsscfywx/+kG233XbAtJFYH0HdFqXSptBt0aZC9TJ1VC9TR/UydTaFeqlu3kaxxY//lU/M2pEvnnPuBiWiw2E4Y/rpT38a2Su9Ozs7OeaYYwZNjkVERGR0UhOLTdDcAw7k1bfeGTD+5HmncvK8UyOIaO0xpcIee+wxLOUmIzs7m89//vORrV9ERETST3eQRURERETiKEEWEREREYmjBFlEREREJI4SZBERERGROEqQN1BVVRUnnngiW221FUccfhgnHHMUb7/1Jgvvvivq0ERERERkI2zyvVicfOrpVFbXpKy8KRXl3HnLb9Y5j7vz6U9/mlNPPZW7776b/7z5FlUNjTyw8F6WvvgCx52Y+jdqi4iIiEh6bPIJcmV1TUo7+F5w3snrneeJJ54gKyuLs88+u3/cx2ftxNf/9zze/M+/2W+PXTnxlHmc8+WvpiwuEREREUmPTT5BjsJrr73GrrvuOmD8d7//AxZc9TPu+v0fIohKRERERFJBbZBFREREROIoQd4AO+ywA0uXLo06DBEREREZBkqQN8ABBxxAR0cHN9xwQ/+4l5a8iJnR0twcYWQiIiIisrGUIG8AM+P+++/nL3/5C1tttRVHHnE4V1z+PSZNnkwsM5N9d9+F635xVdRhioiIiMgG2OQf0ptSUZ5UzxNDKS+p+aZM4Z577gHgP2++RdnmMwB44JE/pywWEREREUm/TT5BXl+fxSIiIiIiQ6EmFiIiIiIicZQgi4iIiIjE2SQTZHePOgQR1UMREZFRapNLkHNzc6mvr1dyIpFyd+rr68nNzY06FBEREUmxTe4hvalTp7J8+XJqa2ujDqVfVXUNze2dUYexyWteWUdvT3fUYSQtNzeXqVOnRh2GiIiIpFhaE2QzOxS4GogBN7r7j4ZaRlZWFjNmzEh5bBvjnK9dwHkL7ow6jE3eggsvZPGji6IOQ0RERMa4tDWxMLMYsAA4DNgeOMnMtk/X+kVEREREkpHONsi7A2+7+zvu3gncDXwqjesXEREREVmvdCbImwEfxA0vD8eJiIiIiIwY6WyDbIOMG9AVhZnNB+aHgy1m9p9hjSpFnpw5IeoQ1qcUqIs6iPUxG6yayIbYBOokqF6OOZtAvdwk6iSoXqaS6mXqbAL1cotkZkpngrwcmBY3PBWoTJzJ3X8N/DpdQY0VZrbE3WdHHYdIPNVLGWlUJ2UkUr1Mv3Q2sXgR2NrMZphZNnAi8Mc0rl9EREREZL3SdgfZ3bvN7EvAnwi6ebvZ3f+VrvWLiIiIiCQjrf0gu/vDwMPpXKf0U7MVGYlUL2WkUZ2UkUj1Ms1Mr2wWEREREflIOtsgi4iIiIiMeEqQRURERETiKEEWEREREYmjBFlE0srMPpvMOBGRsczMcpIZJ8NDD+mNQmZ2PtDo7jcljP9fIObuV0UTmQiY2Uvuvsv6xomkS3jNTNQILHX3V9IdjwjoWhm1tHbzJmlzBjDYCfRrghe2KEGWtDOzw4DDgc3M7Bdxk4qA7miiEgFgdvh5MBw+guBaebaZ3evuV0QWmYw5ZjYJ2AzIM7Odgb53NxcB4yILbIxRgjw6ubt3DjKywzaBl6TLqFUJLAGOBpbGjW8GvhZJRCKBEmAXd28BMLNLgYXAvgR1VQmypNMngdOAqcBP+ShBbgIuiiimMUcJ8ihlZhXuXp04Lqp4RNz9H2b2GnCIu98SdTwicTYH4m8qdAFbuHubmXVEFJOMUe5+i5ndBpzk7ndEHc9YpYf0RqefAIvMbD8zKww/cwl+Prwy2tBkLHP3HqDEzLKjjkUkzp3Ac2Z2aXj3+BngLjPLB16PNjQZi9y9Fzgr6jjGMj2kN0qF7T2/BewYjnoN+JG7PxJdVCJgZtcTtJH/I9DaN97dfxZZUDLmmdlsYC+Cn7OfdvclEYckY5yZfQdoA37HmtfKlZEFNYYoQRaRtArv0A3g7pelOxaRPmYWAyqIa3ro7u9HF5GMdWb27iCj3d23THswY5AS5FHIzL4ILHb3t8Lhm4HPAO8Bp7n7S1HGJyIykoRdYF4KVAM9BHeR3d3/J9LARCQySpBHofBBqJ3dvcvMTga+DhwC7Axc6u77RBqgjGlm9gQw4MLj7gdEEI4IZvY2sIe710cdi0gfM/v8YOPd/dZ0xzIWqReL0anb3bvC70cCt4YX/sfMTN0VSdQuiPueS/DrhvpBlih9QPBiEJGRZLe477nAgcBLgBLkNFCCPDr1mtlkoIHghLo8blpeNCGJBNx9acKoZ8zsyUiCEQm8Ayw2s0VAf7duenBUouTu/xs/bGbjgdsiCmfMUYI8On2X4IUMMeCP7v4vADPbj+A/ApHImNnEuMEMYFdgUkThiAC8H36yw4/ISLQa2DrqIMYKtUEepcwsEyh094a4cfkEx7wlushkrAufzHaCB6G6gXeB/+fuT0camIx5ZlZI8HCerpESOTN7kI+e14gB2wH3uPu3ootq7FCCPAqZ2YXufkX4/bPufm/ctB+4u15VKSISMrMdCX667vt1ow74fN+vbyJRCH/17dMNvOfuy6OKZ6xRgjwKmdlL7r5L4vfBhkXSzcyygHOAfcNRi4Hr4x4sFUkrM/s7cLG7PxEOzwV+4O57RhqYjHlmVsFHD+u94O41UcYzluhV06OTreX7YMMi6XYdQbvjX4afXcNxIlHJ70uOAdx9MZAfXTgiYGbHAy8AnwWOB543s+OijWrs0EN6o5Ov5ftgwyLptpu7z4obftzM/hFZNCLwTvha374eAj5H0DZeJEoXE1wvawDMrAx4DFgYaVRjhBLk0WmWmTUR3C3OC78TDudGF5YIAD1mtpW7/xfAzLYkeHuZSFTOAC4Dfk9wnXwKOD3SiEQgI6FJRT365T9tlCCPQu4eizoGkXX4BvCEmb1DkIxsgZIRiVDY28+Xo45DJMGjZvYn4K5w+ATgkQjjGVP0kJ6IpJ2Z5QDbEiTI/3b3jvUsIpJyCd1oDeDuR6cxHJEBzOxYYG/CXzbc/f6IQxozlCCLSFqZ2XnAHe6+KhwuBk5y919GG5mMNQndaA3g7nrDo0TGzGYAK9y9PRzOAyrcfVmkgY0RSpBFJK3M7BV33ylh3MvuvnNUMcnYFD70VOburyeM3wGocffaaCITATNbAuzp7p3hcDbwjLvvtu4lJRXU2FtE0i3DzPq7GzSzGHq9r0TjGqBskPFTgavTHItIosy+5Bgg/K5rZZooQRaRdPsTcI+ZHWhmBxA8gPJoxDHJ2PTxwZpRuPufgP+JIB6ReLVm1t8O3sw+RfCWR0kDNbEQkbQyswxgPnAQwYMnfwZudHd19SZpZWZvuvs2a5n2H3ffNt0xifQxs62AO4Ap4ajlBK9Afzu6qMYOJcgikhbraO+5I1Ct9p6Sbma2CFjg7g8njD8M+LK7HxZNZCIfMbMCgnytOepYxhIlyCKSFmZ2N3Bd4k/aZvZJ4FR3PzmayGSsMrNtgIeAvwNLw9GzgTnAke7+ZlSxydhlZucDje5+U8L4/wVi7n5VNJGNLUqQRSQtzOxf7r7DWqa95u47pjsmkbBP7pOBvvr3L+DOvq61RNLNzF4Ddol/QC8cnwO86O5qH58GepOeiKRL1gZOExkWZjbN3T8AfjPItH3c/W8RhCXiiclxOLIjvgcgGV7qxUJE0uUtMzs8cWTY3vOdCOIRedLMLjSz/ptFZlZhZrcDP4swLhnjzKwimXEyfHQHWUTS5WvAQ2Z2PIO094wsKhnLdgV+BLxsZl8BPv7/27v3aE2q8s7j3x+I0lwb5DKJIghBBG9cNDAOmoBK0IiTaKLBQdCIWbMSRUSJtzUR1KgIoqNZEoOOIqgIxBiiMsAIolEQ6W7ureIlLSjKxUEQBQWe+aPq4NvHcxphpHZpfT9rnUXV3m+f/r2ss+o8vd+ndgGHAW8HDmwZTJN2NPDpJK8Elvdju9H9XB7TLNXE2IMsaTD2e2qM+uL4ncD3gD2q6prGkTRx/Sdrr6G7VhbdtfJtVXVG02ATYoEsaRAz/Z4LzdnvqcElWQocBewO/C3wDOApwMur6pyW2aSFJHlAVd3ROscU2IMsaSj2e2pslgNXAY+vqrOq6lDgBcCbk3ysbTRNVZJ/S7L1AuNPBS5uEGmSLJAlDWU3YDu6fs+9+4+1LwTOp1vBk4b25Ko6ZnZFrqourqonAq4gq5WTgXOTvD7JOkl+N8kpwJuBgxpnmwxbLCQNyn5PjUWSTecNFXBT+YtRjSXZmO6mvKfQbYP598Dx/mwOx10sJA1iXr/nvnT9nmcksd9TrSyjK4pn95bdMMnFwMFV9R9NUkmwE/D7dJ+yPR7Ykq5m+3nLUFPiCrKkQST5FvBe4F1zH2kn2bkfW1VV+7fMJ81J8mzgr6pq39ZZND1J3g/sCvxNVZ2fZH3gSLpFhUOr6qymASfCAlnSIJI8dLF2iiQvqarjh84kLSbJ8qratXUOTU+SVwDvrqo7540/BnhvVT2pTbJpsUCWNAj7PfWbIskGwL9X1c6ts0hqwx5kSUOx31OjkuSwBYY3AZ4F/MPAcSSg2+aN7lo5p4AbgHOr6qQ2qabHFWRJTdnvqVaSvGHeUAE3Ap+vqssaRJJI8gcLDG8KHABcVVWvGTjSJFkgS2rOfk9JWrMkawPLbP0Zhg8KkdRU3+/ptUhNJDkoyfIkt/ZfFyU5sHUuab75N+3p/mUPsqRB2O+psekL4UOBw+geOx267bWOTkJVfbhlPk3TAjc0Q3etPBC4YuA4k2WLhaRB2O+psUlyAfAX828QTbINcHJV7dEgliYuybdZ/YbmuWvlucCbq+rmVtmmxAJZkjRJSa6sqp3u7Zyk3362WEgaTJKDgJcDO/RDK+k2xPejbLXw0/s4J92vkjwYeD7wyH5oJfCxqrqxXappsUCWNAj7PTVCOya5dIHxANsOHUYCSLIjcA5wJrCC7ufxCcDrkuxdVV9tmW8qbLGQNAj7PTU2SbZe03xVrRoqizQnyWnAKVV1yrzx5wDPr6rntEk2LRbIkgZhv6fGKslLgZOq6qbWWaQkX6uqHe7tnBk+q30AABMISURBVH693HtU0lDs99RY/SfgoiSnJNk3Se7xT0j3n1vv45x+jVxBljSIJD8BvrHQFLBtVa0/cCTpbn1RvA/wIuDxwCnAB6rqm02DaXKSXAMcu9AUcGhVbTVwpEnyJj1JQ9mxdQBpMVVVSb4PfB+4g+7BDKclObuq/rZtOk3M8cCGi8y9f8ggU+YKsqRB2e+psUlyCHAQcANdAfLJqvp5krWAq6pqu6YBNUlJNq2qH7bOMVWuIEsa2ly/53LgfwFnlv9SV1sPBp49f9eKqroryTMbZZK+nORi4IPAGV4nh+UKsqTB2e+psehXiS+tqke3ziLN6q+TTwX+Evh94OPAh6rq602DTYS7WEgaXL8SslC/59ubBtPkVNVdwCVJHtY6izSrOmdX1f7AwXRtQBcmOS/Jf24c77eeK8iSBmW/p8YmyTl0Tyq7kJlttKrqWc1CafL6x00fALwA+AHwAeB0YGfg1Kp6eMN4v/XsQZY0NPs9NTZHtg4gLeB84ETgT6rqmpnxi5L8Y6NMk+EKsqTB2O+psUmyNt2Nok9tnUWa0/9cHl1Vh7XOMlX2IEsajP2eGpuquhP4SZKNW2eR5vQ/l49rnWPKbLGQNLTfAa5IYr+nxuI24LIkZ7P6z+Qh7SJJXJzkdOBUVv+5/ES7SNNhgSxpaPZ7amw+3X9JY7IpcCOw98xYARbIA7AHWdJg7PfUWCVZAjysqr7WOovUXysPqap3ts4yVfYgSxqM/Z4aoyT7ARcD/7s/37n/aFtqor9W2nbWkC0WkoZmv6fG5gi6J5V9DqCqLk7iHrNq7UtJ/oHuCXqz18rl7SJNhwWypKHZ76mxuaOqftQ92fdu9h+qtSf2/33jzFixek+y7icWyJIGVVUn2O+pkbk8yfOBtZNsDxwCfKlxJk1cVe3VOsOU2YMsaVD2e2qEXgY8Crgd+BhwM3Bo00SavCRbJvlAkjP6852SvLh1rqlwFwtJg0qyjO4jws9V1S792GVV9Zi2ySRpPPrC+IPA66vqcUkeAKzwWjkMWywkDc1+T41KkkcArwK2Yeb3YlXZ66mWNquqU5K8FqCq7khyZ+tQU2GBLGlo9ntqbE4F/hF4P2ABorG4NcmD6RcQkuwB/KhtpOmwxULSoJKsB7we2AcIcCbwpqq6rWkwTVaSZVW1W+sc0qwkuwLvAR4NXA5sDvxZVV3aNNhEWCBLkiYpyab94SHAdcC/0N2oB0BV/bBFLmlO33e8A91iwteq6ueNI02GBbKkQdnvqbFI8m26j6+zwHRV1bYDR5JWk+SJ/PK18sPNAk2IBbKkQSW5hK7fcxkz/Z5VtaxZKEkamSQnAtvRbYs5d60snzo6DAtkSYOy31NjkeQAut+DJ84bfwlwa1V9tE0yCZKsBHYqC7UmLJAlDcJ+T41NkhXAk6vqlnnjGwHn+g85tZTkVOCQqrq2dZYpcps3SUNZxur9nofPzBVgv6eGtvb84higqm5Osk6LQFKSf6O7Jm4IXJnkQlZfTHhWq2xTYoEsaRBV9fDWGaR51kmyflXdOjuYZEPggY0ySce0DiBYq3UASdOQ5IAkL1hg/CX9g0OkoX0AOC3JNnMD/fHJ/ZzUwnfpnjh63uwX3aryNY2zTYYFsqShvBL45ALjH+/npEFV1THAvwLnJbkxyY3AecCnqurotuk0Ye8Cfqn1B/hJP6cBeJOepEEkubSqHntv56QhJNmA7nfiQoWJNJgkl1fVoxeZu6yqHjN0pimyB1nSUOz31CglWQocCGzTP7kMAPebVSPrrmFuyWApJs4WC0lDsd9TY/UZuqeVXUa328rcl9TCV/q9uFeT5MX4czkYWywkDSbJfwdeC2zQD/0YeFtVHdculaYuyfKq2rV1DgkgyZZ0+8T/jF8UxI+n+6TtT6vq+62yTYkFsqTB2e+pMUnyCrp/rH0KH16jkUiyFzDXi3xFVZ3TMs/UWCBLGtRsvycz90HY76lWkvwN8PfATXRbaQFUVfnwGjWVZBNgK1a/Vi5vl2g6vElP0tA+A1xA1+95V+MsEsBhwO9V1Q2tg0hzkrwReBHwTWb+4Qbs3SzUhFggSxraulV1WOsQ0owr6PaYlcbkecB2VfWz1kGmyAJZ0tBO7O/Qtt9TY3EncHGSc1n9Z9K2H7V0ObAUuK51kCmyQJY0tJ8BRwOvZ/WPDe33VCufZOGnPEotvRVYkeRyVv+H27PaRZoOb9KTNKgk3wR2t99TkhaX5Argfcy7X6OqzmsWakJcQZY0NPs9NSpJtqdbrduJmaeYuYuFGruhqt7dOsRUWSBLGpr9nhqbDwJvAN4J7EW3c0CaJpJgWZK3Aqez+rXSbd4GYIuFpEElOWih8ao6YegsEkCSZVW1W5LLquox/dgXqupJrbNpuvpFhPmqqtzmbQCuIEsalIWwRui2JGsBVyV5KfBdYIvGmTRxVbVX6wxTtlbrAJKmJcn2SU5LcmWSb819tc6lSTsUWA84BNgNOABY8JMO6f6WZPcklyT5cZLzk+zYOtMU2WIhaVBJ/p1f9HvuR9/vWVVvaBpMkkYgyUXAa4HPA88CDq6qP2qbanpcQZY0tCVV9Vm6onhVVR2Bj07VyCT5p9YZNFlrVdXZVXV7VZ0KbN460BTZgyxpaPZ7ahSSbLrYFPCMIbNIM5YmefZi51X1iQaZJscWC0mDSvIEYCXdI1TfBGwEHF1VFzQNpslJciewitW3dKv+/CFV9cAmwTRpST7EL54yOl9V1V8OGGeyLJAlSZOU5CrgKVX1nQXmrq6qrRrEkjQC9iBLas5+TzXyLmCTRebePmQQaU6/gjx37G4qjbiCLGkQ99DveUlVPXTIPJI0RklWVNUu/fHyqtq1daYp8iY9SUO5nsX7Pb1JT4NL8paqel1//LSqOrt1JonF+481IFeQJQ3Cfk+NzezqnCt1Gosk1wEn0y0ePK8/vltVHdIi19S4gixpKHP9nr9UIGO/pyTNOXzm+KJmKSbOFWRJ0iQluQY4lm6l7hX98d2q6tiF/pyk337uYiFpEEneMnP8tJZZpN7xwIbABjPHs1/S4JLsmeTAmfPTkpzTf/nU0YG4gixpEPZ7StI9S/JZ4GVVdWV/fhnwQmB94HVVtW/DeJPhCrIkaZKSnDJzfNS8ubOGTyQBsNFccdy7qqqWVdXn8ZONwXiTnqShbJHkMPpt3frju9nvqQa2nzl+GvDqmfPNB84izVk6e1JVz5453XLgLJPlCrKkodjvqbFZU4+h/Ydq5atJ/nj+YJJnAl9rkGeSXEGWNIiqOrJ1Bmme9ZLsQrdYtCTJXF98gCXtYmniDgM+leTPgOX92G7AE4FnNks1Md6kJ2kQSU6pquf2x0dV1atn5s6qqn3apdMUJTl33tDcL8QAVNVewyaSOkkeBPw34FH90BXAR6vqtnappsUCWdIgkqyoql3649V2sZidk4aWZAnw18CedEXyF4DjLEbUQpJHVtVX++MHVdXtM3N7VNUF7dJNhz3IkoZiv6fG6gRgR+DdwHv64w83TaQp++jM8fnz5t47ZJApswdZ0lDs99RY7VBVj5s5PzfJJc3SaOqyyPFC57qfWCBLGsq1/OJRvt8HjumP059LrayY/eg6ye7AFxtn0nTVIscLnet+Yg+ypEHZ76mxSbIS2AH4Tj/0MGAlcBdQVfXYVtk0PUmuA06mWzx4Xn9Mf/7cqnIv5AFYIEsaVP/0spuBj/RD+wNL53a4kIaWZOs1zVfVqqGySEkOWtN8VZ0wVJYps0CWNKgkl8zr91xwTJL0C0nWBfarqlNbZ5kCd7GQNLQVSfaYO7HfU5IWlmTtJE9P8mFgFV3LhQbgCrKkQdnvKUlrluTJwPOBPwYuBP4LsG1V/aRpsAmxQJY0KPs9JWlxSa6hW0A4DvhkVd2S5NtV9fDG0SbFbd4kDcoCWJLW6J+BP6Frp7gzyb/i9m6DcwVZkiRpRJIE2Itul59nABsBLwY+U1U/bpltKiyQJUmSRirJOsC+dMXyPlW1WeNIk2CBLEmSNBJJPlRVL1xkbklV/XTgSJPkNm+SJEnjsehOPhbHw/EmPUmSpPFYL8kudI+W/iVVtXzgPJNki4UkSdJIJLkF+AoLF8hVVXsPHGmSXEGWJEkaj29YBLdnD7IkSZI0wwJZkiRpPF4NkOTl8ycWGtP9wx5kSZKkkUmyvKp2nTe2oqp2aZVpSuxBliRJGokk+wPPB7ZNcvrM1IbAjW1STY8FsiRJ0nh8CbgW2Ax4x8z4LcClTRJNkAWyJEnSSFTVqiTXALdW1Xmt80yVN+lJkiSNSFXdCfwkycats0yVK8iSJEnjcxtwWZKzgVvnBqvqkHaRpsMCWZIkaXw+3X+pAbd5kyRJkma4gixJkjQySbYH3grsBKw7N15V2zYLNSHepCdJkjQ+HwSOA+4A9gI+DJzYNNGEWCBLkiSNz5Kq+ixdO+yqqjoC2LtxpsmwxUKSJGl8bkuyFnBVkpcC3wW2aJxpMrxJT5IkaWSSPAFYCSwF3gRsBBxdVRc0DTYRFsiSJEnSDHuQJUmSfgMk+afWGabCHmRJkqSRSLLpYlPAM4bMMmUWyJIkSeNxPbCKriCeU/25N+kNxAJZkiRpPL4FPKWqvjN/IsnVDfJMkj3IkiRJ4/EuYJNF5t4+ZJApcxcLSZIkaYYryJIkSSOR5C0zx09rmWXKLJAlSZLGY9+Z46OapZg4C2RJkiRphrtYSJIkjccWSQ6j39atP75bVR3bJta0WCBLkiSNx/HAhgsca0DuYiFJkiTNsAdZkiRpJJKcMnN81Ly5s4ZPNE0WyJIkSeOx/czx/G3eNh8yyJRZIEuSJI3Hmnpf7YsdiDfpSZIkjcd6SXahW8RckmTXfjzAknaxpsWb9CRJkkYiybnzhuYKtQBU1V7DJpomC2RJkqSRSbIE+GtgT7oi+QvAcVV1W9NgE2GBLEmSNDL9bhY3Ax/ph/YHllbVc9ulmg4LZEmSpJFJcklVPe6exnT/cBcLSZKk8VmRZI+5kyS7A19smGdSXEGWJEkamSQrgR2A7/RDDwNWAncBVVWPbZVtCiyQJUmSRibJ1muar6pVQ2WZIgtkSZIkaYY9yJIkSdIMC2RJkiRphgWyJP0GSHJEkpNa55CkKbBAlqQ1SLJnki8l+VGSHyb5YpIntM51byT5jyQ/SLL+zNjBST7XMJYkjZYFsiQtIslGwKeA9wCbAg8BjgRub5nrPnoA8PLWISTpN4EFsiQt7hEAVfWxqrqzqn5aVWdV1aUASbZLck6SG5PckOQjSZbO/eF+5fbwJJcmuTXJB5JsmeSMJLck+T9JNulfu02SSvJXSb6X5Nokr1wsWJI9+pXtm5JckuQP7+G9HA28ajbfvO/3P5NcneTmJMuSPGlm7ogkpyY5qc99WZJHJHltkuv6P7fPzOs37t/rtUm+m+TNSdb+Ff5/S9IoWCBL0uK+DtyZ5IQkT58rZmcEeCvwu8COwFbAEfNe8xzgaXTF9n7AGcDrgM3orsGHzHv9XsD2wD7Aa5I8dX6oJA8BPg28mW5l+1XAPyfZfA3v5SLgc/1rF/IVYOf++30UODXJujPz+wEnApsAK4Az+/wPAd4IvG/mtScAdwC/B+zSv5eD15BNkkbFAlmSFlFVNwN7AgUcD1yf5PQkW/bz36iqs6vq9qq6HjgW+IN53+Y9VfWDqvou8AXgy1W1oqpuB/6FroCcdWRV3VpVlwEfBPZfINoBwGeq6jNVdVdVnU1XAD/jHt7S3wEvW6iQrqqTqurGqrqjqt4BPIjuKV5zvlBVZ1bVHcCpwObA26rq58DJwDZJlvb/b54OHNq/j+uAdwJ/cQ/ZJGk0LJAlaQ2qamVVvbCqHgo8mm61+F0ASbZIcnLfRnAzcBLdyvCsH8wc/3SB8w3mvf7qmeNV/d8339bAn/ftFTcluYmukP+de3gvl9P1VL9m/lySVyZZ2d+MeBOw8bz3Mj/3DVV158w5/XvZGlgHuHYm2/uALdaUTZLGxAJZkn5FVfVV4EN0hTJ07RUFPLaqNqJb2c3/51+z1czxw4DvLfCaq4ETq2rpzNf6VfW2X+H7vwF4CV1rBAB9v/GrgecCm1TVUuBH3Lf3cjXdTYybzWTbqKoedR++lyQ1YYEsSYtI8sh+ZfWh/flWdC0PF/Qv2RD4MXBT3xd8+K/hr/0fSdZL8ijgRcDHF3jNScB+Sf4oydpJ1k3yh3M516SqvtF/z9ne5w3peoavBx6Q5O+Aje5L+Kq6FjgLeEeSjZKs1d/MOL/1RJJGywJZkhZ3C7A78OUkt9IVxpcDc7tLHAnsSrfa+mngE7+Gv/M84BvAZ4Fjquqs+S+oqquB/0p3s9/1dKu2h/OrX9PfCKw/c34m3c2DX6dr67iN1Vs97q0DgQcCVwL/FziNe2j/kKQxSVW1ziBJk5dkG+DbwDr9jXCSpEZcQZYkSZJmWCBLkiRJM2yxkCRJkma4gixJkiTNsECWJEmSZlggS5IkSTMskCVJkqQZFsiSJEnSjP8H4WoDQV2YHXYAAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Créer le graphique\n", + "plt.figure(figsize=(10, 6))\n", + "\n", + "# Tracer les écarts types par groupe (barres ou points)\n", + "ecart_type_par_groupe.plot(kind='bar', color='skyblue', edgecolor='black', alpha=0.7)\n", + "\n", + "# Ajouter la ligne pointillée pour l'écart type moyen\n", + "plt.axhline(y=ecart_type_moyen, color='red', linestyle='--', linewidth=1.5, label=f'Écart type moyen ({ecart_type_moyen:.3f})')\n", + "\n", + "# Personnaliser le graphique\n", + "plt.title(\"Écart type de 'Ct' par 'Sample Name'\", fontsize=14)\n", + "plt.xlabel(\"Sample Name\", fontsize=12)\n", + "plt.ylabel(\"Écart type de 'Ct'\", fontsize=12)\n", + "plt.legend(fontsize=10)\n", + "plt.grid(axis='y', linestyle='--', alpha=0.4)\n", + "\n", + "# Afficher le graphique\n", + "plt.tight_layout()\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.4" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/module2/exo4/exercice.ipynb b/module2/exo4/exercice.ipynb deleted file mode 100644 index 0bbbe37..0000000 --- a/module2/exo4/exercice.ipynb +++ /dev/null @@ -1,25 +0,0 @@ -{ - "cells": [], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.3" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} - -- 2.18.1