From 6181b860b54c0c2a7f769a1e16852c6fdf229c61 Mon Sep 17 00:00:00 2001 From: ricomnl Date: Wed, 29 Oct 2025 18:13:54 +0000 Subject: [PATCH 1/4] Added tube definitions --- docs/resources/library/celltreat.md | 7 +++++++ .../celltreat_15000ul_centrifuge_tube_Vb.webp | Bin 0 -> 6566 bytes pylabrobot/resources/celltreat/__init__.py | 1 + pylabrobot/resources/celltreat/tubes.py | 19 ++++++++++++++++++ pylabrobot/resources/eppendorf/tubes.py | 18 +++++++++++++++++ 5 files changed, 45 insertions(+) create mode 100644 docs/resources/library/img/celltreat/celltreat_15000ul_centrifuge_tube_Vb.webp create mode 100644 pylabrobot/resources/celltreat/tubes.py diff --git a/docs/resources/library/celltreat.md b/docs/resources/library/celltreat.md index 192aa2ab3aa..16b3117ab17 100644 --- a/docs/resources/library/celltreat.md +++ b/docs/resources/library/celltreat.md @@ -8,3 +8,10 @@ | Same as 229590 (229590 is sold with lids) 'CellTreat_96_wellplate_350ul_Ub'
Part no.: 229591
[manufacturer website](https://www.celltreat.com/product/229591/) | ![](img/celltreat/CellTreat_96_wellplate_350ul_Ub.jpg) | `CellTreat_96_wellplate_350ul_Ub` | | 229195 and 229196 'CellTreat_96_wellplate_350ul_Fb'
Part no.: 229195
[manufacturer website](https://www.celltreat.com/product/229195/)
are treated | ![](img/celltreat/CellTreat_96_wellplate_350ul_Fb.jpg) | `CellTreat_96_wellplate_350ul_Fb` | | 229562 (not sterile), 229566 (sterile) 'CellTreat_12_troughplate_15000ul_Vb'
[manufacturer website](https://www.celltreat.com/product/229562)
are treated | ![](img/celltreat/CellTreat_12_troughplate_15000ul_Vb.jpg) | `CellTreat_12_troughplate_15000ul_Vb` | + + +## Tubes + +| Description | Image | PLR definition | +|--------------------|--------------------|--------------------| +| 229414 (sterile)
[manufacturer website](https://www.celltreat.com/product/229414/)
- bottom_type=TubeBottomType.V | ![](img/celltreat/celltreat_15000ul_centrifuge_tube_Vb.webp) | `celltreat_15000ul_centrifuge_tube_Vb` | diff --git a/docs/resources/library/img/celltreat/celltreat_15000ul_centrifuge_tube_Vb.webp b/docs/resources/library/img/celltreat/celltreat_15000ul_centrifuge_tube_Vb.webp new file mode 100644 index 0000000000000000000000000000000000000000..1cefc4d60b4e8aa9a448bc70c7699d38fb5129ba GIT binary patch literal 6566 zcmYLJRa6|vwrw;x!QBb&?iw5#cbDJ}!QBav;O_34;Ls2>xVyVIt_{4ocV_OZulm@v z>TEk|a?;Yd1OR}xl!S_w3LkmmUw5{4Kn@hcEz~WPhyzc$95oeX0j0(hAP6TfENQwv5-lD<3^n7!0}vv;`i3 zvI1jH7oXorUbUa2-jrTFUwM(@s&3KlCoe?4apvm01$A@#DEquDu?fcr-kj?^Pdik8 z6{E0FkF-#X$7j0?O9sak%w7e)CKVz2y=aO2)c3C<(_`+Q``jlzfLt3CGQ;GH2Yr#n zY*sFCrfBG<{{D2dOJ?CZ0r?lKX((CZ+HB9} zJeB8zC8_@F*g2DM_^Isp$U}x%~vg-n9?_r2L6M9a();g7e(&0C|z0-KY!#@ zFVlgXr@!&47m|=;_dM}DDr;homy(LIA`5`$WgTU(ss zCpwYneg7spVLeN|Mir_VG@pG}OX;CCC$HqlOf(jcC)l%jXcb)q$AoE%jf$>S<%N!K zclU#=>VGe*ZA(R&pbNSb&dRcx?&ykUBGI)erJ=)NH{&T!aEoP|qVK%p`1&Fm?h04` ztLUZWu{bd4wV@LosM495)a{T~XSdzPTbN1mIpzZkO=0w_z`qJ;iO{ZsZS_k7 zC}&=hY@CQHI66ZdBO|=&e@ktxdLld|P|Te@JpS#&{Er&kO?bzwCxT60OY^ZMH+7kt zcJ{Yrj#sxFuewTg0J&))N$$U{&HwoJ^&Lbk-)Lt;iR*d>sBF$+=+|ezzSg&W`4Ctg z-KHoC;2Syh%?b=BS5;Wk-ORHcn%53bR99_d2}vMJ{;hsV>Ghk{zQ>la7Z#Q~@GP=n z_<16P6^#iz`OExNs%4pAlAbHOgKN>k>iN##R1EPVtlfydA)s>1&pw2|MFQA)Y&rFSNCa+Igq?e>}dSr-vL(Y#1;~rn;?m`oplun1q2~;m&I>LY_I95 zQ_$a?xB&mMT8MEVH|OMCQ4(&|H&E!va~!a3c3wy@+kj>Q6d&!>5hLmT9k0J4ujd-m z{nl?6%4kve)MN5EP0?yy&+vRTe9nY5+RKh!vK*uw^S?N19>Aq5`POebEjx&l;iVK7 z!EWo{$}%+BT29L9r&-aITK(0Y|GH+|u`E|_ypnLwb+RGWc}xe^8OV2?<(4uk*)A<8 zWLu(AF7j*sN2!&DyBx-;mNg26&8KOVIkw%k%U%6+_dnFA1Vkw8^vE~)-Qx~k*lG{B zo`-*73;k?n<4Ue}i_viWOK}GFN-yh%4%k#xC@z`g%b3c*n0JME?p8zG&IxXk2J&W#2_bkjUR74=s2m7IlhHnfo3td+vhrC043) zkLe$FkG2Qo9MDtjer-@B{#&qVhs%!3gD_mUG<=d;McmZ*JHeYwvsauQb=%jy;nDPK zro@{6*VtFBRdh~WMu zZ4!x|%>A&AmjAz(ysm|ccx5Q&AG%$VPSV*6dJJkVL|so7nQH8$TK*%=e=0dq2p8dI zB7^TcZ6QQXcmJcDGqn!#Pu~9%P9qK$T8d^iKdQDd9)^jUfwx<3-@kfh`%iKOfLJUE z`f3+{coO2;71~lM6!-X={wLAAZiTti+UUEoRlvU;jRFAP-j}%milRVK>|hg;GkMM_ z4G{Ps=*<<{qW-q3f6&wQwB#l^7|D(rAqxborCLK$pikNkvfG7ISox9}fOJrUb3Fw(4jJ(u0SlxdJTO(uOj6(V&veY@CyHP2VW2YK=EwUD4b znUfFj%bO%e(hdCDZB;3(d{yLF{^LAFkg)mykPFG@o8=0_cIXlRl*h`OBN(@fR3N0G zMY`5P#vuhIgMu+}+}7YxZS74!np!ZK819y~wA^ZyG9TM>Jb84c*o`K{aNt(qVm3H? zXn4dS4u9q(?DcDo=XwBt=%AbL=@MXJJuWo?w{*w@qd+LPVz?K-Qmj)zNQ!^DZWzY0 zUG9D@JV2o1%!}RZ2Pk3{6tJ3_bHx?~!281?R zM(9}b2+O3tYAgK7JMe|(lu(O|RylWLD)oBElF7?7_z#l4Ko6Gpd#Usm2uAuUR5QLf z9jFn!3!5qhAO7bJt{y$fXB{4h-O?=vO72@!3~KHm7p%n0H<>K)g^>b4f!Uv}O}#>h zz-XyJ*aDAk8EIh}NgK3G8M!K?q=gRmfw_(hZzwJP&tZ4a`KQ&>n} zia4#p-S+PNJIIKC zN44PeCa1seVqVky9K`4`DAUcF5(BXvhG>?9%A#3DyayKJ|LFQqVkjAnA36Lw7uj*T zcU&Y^vkjmka72gGX&aa_>Cw^$#%Yp+Y1t+ff2V#LU;nzmLeTrO;uB*50yWz(uLI6( zgMrjlazmeRk$#H0yqM)R@5nZIy1jqg*P_mvztT>;ZHv_q!)vJ|=*kN4S-L-=L`T0l z`C&)z)enif0!6}!3}OZipM9>Gi;+jKI3Xjrhl-W;K?d}W8Q=^DULO&<@fPT)+J+k{ z#7TjNc{$Y>AAp#8t@CIuRKSvaoe>&BKnPdfe?mEou;4x6U(3PFb!<7}+mW;|)Xq#s zavs1f7N=7moT9q@O#NcUw2Pl$9*x&+@WrT9K1Get5xmaOw@i$Af=4_Zv-4bJrfUm4 z5(BXwX#tr)jg2CZRXhBd4Vqqvzp1fUMuJ%YLWET>N3ydIJwmufjscGaOpZd}%kjOJ zS3;z~Ue=#)&>b<*G0T(KcV>}<3%1CF14cmr1By87#9hgnO*Q zBM38&gvhqPO_LyYJbTC0l1-oWb`rvS@+nTphf$}GjisCeVAp`jd~e?|PV-)gFCoSZ zoe1^@f`(Btfe70#Ed;s+V_!_kkK?ck@Rg+QrP_w%^NHyO-n6ghV4kOx@nT`}jSR3D z`iSGlBgQG7ETsG2&pNa5{I|k5K>=#cj&vHt9tTa8VxKe%N}!I$c2#TM!O8#}%1PpQ zA~DJ;7cTAN2cq7``q<$w4)bCM4qwU-$ND8vKI|j6Ch`lh`YXcKcog3@!ZfHf!;$NAR^n5A0ls__-2CCJ|4D0xKRT>{*@S|7CNz8ZLFi(LnLIJ^5LD+ z^ER4jZ*-bJW$jg#@l=ak+US8@Vx+{9z2CXdWt@2n0B6)TZ&Yry8+$wIsNuQT5~n{S zIjFQWN$ez#L%ivB;luM#q0rF$sa+E)_YFk?hT1>3r7dj9*FVYC${1ML$C|YL(-1cP zg`BEe|H^*o0@ty%CE7~T+L?*`;6f4q>~WE9ij@B>lp8r@+}go<_xkeT3jvhB|ECBp ztf)oi1okIHv)YcB1I}1wXl%9FvSu2D^2&J^ni`8bN0d&ztvTM~y;Bh^_a%{I|9s

TQ+M_0l`e!`q?0@Zd9T(=JOHQPFE8S9JzbCg(I+;~)v~}xB>P}Hd+$1L z61nJ7AqH&a(0ZZeaSZnjdXZ`Ufpau>+P0%(j<<*!t&Y7%6{(u}Oe{Qh>a={wXLk|L zLeAZYku#D!VRd+zC{B`P3SK6CjB2VR{BU@p5M5mO5KTbk^A^Y!e!cHyT30McTvgyj zq%YX~&ciYSDMYQxttiot%FU=4HvFQ&p>Td)wK*EndH34Qs zPF51>&%t%tw4D+pUjaQY;p>x$gG=eqlaK?ZAWe~9KxB4hw%2zU;*)tLYhnkTn=$8K zmVPrcbKg%=#h~;DFON15wHMn3_(ouIdK=YGIs;Pl_X6{I_|d@v&EHs~d4Gvfw~R$> zF7+b9gk1PPw|a6iP^Nt1;F9?xeR+I4XcqNgH*UIt79*@tJ5nsS|GKHC_kP`Ga%cJg}~PY~Xi^UCg#uSR}{W3bJrp zjnd;u9^6lob6ZmkITkqPCvf&9zQk%I)CRn1osAs;hdJ$D&NZ+*x9`Zvt}tzDm^@;J+1U9XQSM&B`a0$5adcqy~ zeb0UF!#|*Z*Z4&LBP5ej9NT830->L!nfb#~H;A?#_>KzVws2-#r` z(s@lXQesf*3FpsEdeHO_1{qM5kp&sWOg32f*;$sma!IPT2|e*)MPa&<|(wj4j}p& zLA(p=GGaSb?~^S^w_%yD293wSOkqn!sB0AZp%UH#$9w6x1C3kA8N+W(Z=Hco)XnDx zFWs|!)-*~rTHCl1Wm@)N2L5s-3{4;c$j-2f`-9MM4-^dv7VPmD;s;*Dj0%btOJ?fn zFz*6Jp_mLQD7=pbh9Zn|kRTpdS(7y7oQ&s8<_OV>!)NWo)Nk4~8)1PR)ZmS5L4<2# z&b)jy5;myF_oPlP7IebUnXKXi#$H#XG%Y)6r{`1!HkfC(Ap+|Ue7xk^!?>$gG1mz0Nc0v_$RGLOf&1GQq80B}zw za*Wh)$EE`ONM?+KZXa?=d8nKPQKt)|c1&wzTE==iPM-Kktn8Bd&Pt)WRLg1?s{uFN z#gLy7mCQmkl~+`ASlgA`u3x+qs#cS#?-k{u4PMG3U^Ud(l*ch0AZ8Sb5Cfrdt(&tu zqiWqgAKtOkLjj#N*DriQZB#Y@l2D<$ovZj;%i?%5SO}hMYqGJ_=x;pEpS05eWeuIN z>q*_b$mliila)HQ4o@>_-zBQ6epVY%LK;2Q7hr{}NqgPTaTPhg5op&96#0nl`VBid zFp*C&jqx*m@-aKXib+<^9KE|>)W%2evs0sim7BII-uZbHw4YIT8DdnYzok;hex9ZH z#qM17a4Y$=dwy)Vz3;J)IhUpH zE95nx*NJ9b#(Vx=z{L|p%wbiDueTn6gRfeqq~!!rSZB;l36P zWjN3YqzZS>yyEZxSEFjn`TqGFNTM7~wUy*tF*6-bRombgvqe1G-bp?_5JqVvse386Mhx)R&MdfvSD#^(w6=wKimKT6 zXW70ob|`_Ip-qCb>E!bNa5-U8YY1T36ukwT(`yrbZdb+g$`8orY~VSR1|EoniSF-6 z_0}2}YKLPu{VC=c#?dkbI?^739>vZik{K!IojQ{Ap}rb!Lc7nuNV9aa+$(HXWg>F{ zc#*>hz1v334r&#K`~v4z;&uu8qylbwVyd*f12fDrq^fM(sy3SkiDWp=ju7sNAJH+q z#<=v1fo7s7J#41u_AHxu>W}pulI5*%$PZo+(RJ7w<9uP#uT8$Vmr1kj^Q94kgjDT% z8LX)%Z;)RlniplA-+4h255hSm)P$?D-TPWY8w#P>FWX)vYbsJ?eUFRpkkF*iS0MIp zr9uGICl8c)1#3pxM?!fSg1E_iss(Q1S~V+7X1V?YuV1kPTys?qU?xr%Qa4f;`8YMu z9wXwHKcBeOWB(+`w!-%q3e`p4EgK+hQhY0rAiC^b) zll=+vM5JX}tQZ5}9!WI9PT#_rbc7n=wpqH2bKRrp*?t~jTU(y6&)s;p5Nlc87iBa`zam4v(5?y&*rFTep2zW(m);&0Ogt!j}nb% zNt8>asSZ<^?E-5VHWKyw#8U@c!X{kwsJH(H#($HaF7gn}vsmDbH_0@^3}DQMRv8z> zFhJawTI|ho{Gqm_^!n=~u|Kxj+@|xCL`@j}V_Q`!ul9M?Fu(59YI{Hl_U1@QhOI-X~qdb`#a>wlHwYlbYEM5k*af zQJR_)j`ci7&IKY;PY-~UGfHUEIGFHQ*oCxuYZpZchMm%O`AU<|DXjLKvuNHs*TbZL q)r*9LY$A;chBwurANVG)1+ZDmuou+HLXyJlv1;F%qRt2Wb^Z^AVEq;V literal 0 HcmV?d00001 diff --git a/pylabrobot/resources/celltreat/__init__.py b/pylabrobot/resources/celltreat/__init__.py index 15ff2bd6e67..96eea0e7355 100644 --- a/pylabrobot/resources/celltreat/__init__.py +++ b/pylabrobot/resources/celltreat/__init__.py @@ -1 +1,2 @@ from .plates import * +from .tubes import * \ No newline at end of file diff --git a/pylabrobot/resources/celltreat/tubes.py b/pylabrobot/resources/celltreat/tubes.py new file mode 100644 index 00000000000..0226de19dcb --- /dev/null +++ b/pylabrobot/resources/celltreat/tubes.py @@ -0,0 +1,19 @@ +from pylabrobot.resources.tube import Tube + + +def celltreat_15000ul_centrifuge_tube_Vb(name: str) -> Tube: + """CELLTREAT® Centrifuge Tubes-RackMaster 15mL Centrifuge Tube, Best Value - Paperboard Rack, Sterile + Part no.: 229414 + + - bottom_type=TubeBottomType.V + """ + diameter = 14.7 + return Tube( + name=name, + size_x=diameter, + size_y=diameter, + size_z=190.5, + model=celltreat_15000ul_centrifuge_tube_Vb.__name__, + max_volume=15_000, # units: ul + material_z_thickness=0.8, + ) diff --git a/pylabrobot/resources/eppendorf/tubes.py b/pylabrobot/resources/eppendorf/tubes.py index 1cc78389101..3bf6221d9dc 100644 --- a/pylabrobot/resources/eppendorf/tubes.py +++ b/pylabrobot/resources/eppendorf/tubes.py @@ -29,3 +29,21 @@ def Eppendorf_Protein_LoBind_1_5ml_Vb(name: str) -> Tube: Same as Eppendorf_DNA_LoBind_1_5ml_Vb """ return Eppendorf_DNA_LoBind_1_5ml_Vb(name=name, model="Eppendorf_Protein_LoBind_1_5ml_Vb") + + +def Eppendorf_DNA_LoBind_2ml_Ub(name: str) -> Tube: + """2 mL round-bottom snap-cap Eppendorf tube. cat. no.: 022431048 + + - bottom_type=TubeBottomType.U + - snap-cap lid + """ + diameter = 10.33 + return Tube( + name=name, + size_x=diameter, + size_y=diameter, + size_z=41, + model="Eppendorf_DNA_LoBind_2ml_Ub", + max_volume=2000, # units: ul + material_z_thickness=0.8, + ) From b3f0e8d0a5499ec744e33afc8c0ac547d46ff647 Mon Sep 17 00:00:00 2001 From: ricomnl Date: Mon, 3 Nov 2025 15:55:57 -0800 Subject: [PATCH 2/4] added measurements --- pylabrobot/resources/celltreat/tubes.py | 6 +++--- pylabrobot/resources/eppendorf/tubes.py | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/pylabrobot/resources/celltreat/tubes.py b/pylabrobot/resources/celltreat/tubes.py index 0226de19dcb..1870724b4b2 100644 --- a/pylabrobot/resources/celltreat/tubes.py +++ b/pylabrobot/resources/celltreat/tubes.py @@ -7,13 +7,13 @@ def celltreat_15000ul_centrifuge_tube_Vb(name: str) -> Tube: - bottom_type=TubeBottomType.V """ - diameter = 14.7 + diameter = 14.7 # measured return Tube( name=name, size_x=diameter, size_y=diameter, - size_z=190.5, + size_z=190.5, # measured model=celltreat_15000ul_centrifuge_tube_Vb.__name__, max_volume=15_000, # units: ul - material_z_thickness=0.8, + material_z_thickness=0.8, # measured ) diff --git a/pylabrobot/resources/eppendorf/tubes.py b/pylabrobot/resources/eppendorf/tubes.py index 3bf6221d9dc..46ae8cdb69d 100644 --- a/pylabrobot/resources/eppendorf/tubes.py +++ b/pylabrobot/resources/eppendorf/tubes.py @@ -9,15 +9,15 @@ def Eppendorf_DNA_LoBind_1_5ml_Vb(name: str, model="Eppendorf_DNA_LoBind_1_5ml_V - bottom_type=TubeBottomType.V - snap-cap lid """ - diameter = 10.33 + diameter = 10.33 # measured return Tube( name=name, size_x=diameter, size_y=diameter, - size_z=39.5, + size_z=39.5, # measured model="Eppendorf_DNA_LoBind_1_5ml_Vb", max_volume=1_400, - material_z_thickness=0.8, + material_z_thickness=0.8, # measured ) @@ -37,13 +37,13 @@ def Eppendorf_DNA_LoBind_2ml_Ub(name: str) -> Tube: - bottom_type=TubeBottomType.U - snap-cap lid """ - diameter = 10.33 + diameter = 10.33 # measured return Tube( name=name, size_x=diameter, size_y=diameter, - size_z=41, + size_z=41, # measured model="Eppendorf_DNA_LoBind_2ml_Ub", max_volume=2000, # units: ul - material_z_thickness=0.8, + material_z_thickness=0.8, # measured ) From 7a0344e059b6abd4386c29e3c44d91b65da6f72e Mon Sep 17 00:00:00 2001 From: Rick Wierenga Date: Mon, 3 Nov 2025 17:05:14 -0800 Subject: [PATCH 3/4] document Eppendorf_DNA_LoBind_2ml_Ub --- docs/resources/library/eppendorf.md | 1 + .../eppendorf/Eppendorf_DNA_LoBind_2ml_Ub.jpg | Bin 0 -> 8907 bytes 2 files changed, 1 insertion(+) create mode 100644 docs/resources/library/img/eppendorf/Eppendorf_DNA_LoBind_2ml_Ub.jpg diff --git a/docs/resources/library/eppendorf.md b/docs/resources/library/eppendorf.md index b3b173a7732..f4cd9df0a8c 100644 --- a/docs/resources/library/eppendorf.md +++ b/docs/resources/library/eppendorf.md @@ -19,3 +19,4 @@ Company page: [Eppendorf Wikipedia](https://en.wikipedia.org/wiki/Eppendorf_(com | Description | Image | PLR definition | |--------------------|--------------------|--------------------| | "Common eppendorf tube"
Part no.: 022431021 (DNA), 022431081 (protein)
[manufacturer website](https://www.fishersci.com/shop/products/dna-lobind-microcentrifuge-tubes/13698791) | ![](img/eppendorf/Eppendorf_DNA_LoBind_1_5ml_Vb.webp) | `Eppendorf_DNA_LoBind_1_5ml_Vb` `Eppendorf_Protein_LoBind_1_5ml_Vb` | +| "Common eppendorf tube"
Part no.: 022431048
[manufacturer website](https://www.fishersci.com/shop/products/dna-lobind-microcentrifuge-tubes/13698792) | ![](img/eppendorf/Eppendorf_DNA_LoBind_2ml_Ub.jpg) | `Eppendorf_DNA_LoBind_2ml_Ub` | diff --git a/docs/resources/library/img/eppendorf/Eppendorf_DNA_LoBind_2ml_Ub.jpg b/docs/resources/library/img/eppendorf/Eppendorf_DNA_LoBind_2ml_Ub.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9e6034e06c53a2326ac53e4f6bdeff343cb0e501 GIT binary patch literal 8907 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 l-dgAg2-v#7o38-KYQ~7B#n=}sOFa#laJb Date: Mon, 3 Nov 2025 17:06:30 -0800 Subject: [PATCH 4/4] format --- pylabrobot/resources/celltreat/__init__.py | 2 +- pylabrobot/resources/celltreat/tubes.py | 6 +++--- pylabrobot/resources/eppendorf/tubes.py | 12 ++++++------ 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/pylabrobot/resources/celltreat/__init__.py b/pylabrobot/resources/celltreat/__init__.py index 96eea0e7355..9848d77c78f 100644 --- a/pylabrobot/resources/celltreat/__init__.py +++ b/pylabrobot/resources/celltreat/__init__.py @@ -1,2 +1,2 @@ from .plates import * -from .tubes import * \ No newline at end of file +from .tubes import * diff --git a/pylabrobot/resources/celltreat/tubes.py b/pylabrobot/resources/celltreat/tubes.py index 1870724b4b2..af515375801 100644 --- a/pylabrobot/resources/celltreat/tubes.py +++ b/pylabrobot/resources/celltreat/tubes.py @@ -7,13 +7,13 @@ def celltreat_15000ul_centrifuge_tube_Vb(name: str) -> Tube: - bottom_type=TubeBottomType.V """ - diameter = 14.7 # measured + diameter = 14.7 # measured return Tube( name=name, size_x=diameter, size_y=diameter, - size_z=190.5, # measured + size_z=190.5, # measured model=celltreat_15000ul_centrifuge_tube_Vb.__name__, max_volume=15_000, # units: ul - material_z_thickness=0.8, # measured + material_z_thickness=0.8, # measured ) diff --git a/pylabrobot/resources/eppendorf/tubes.py b/pylabrobot/resources/eppendorf/tubes.py index 46ae8cdb69d..839e8808c34 100644 --- a/pylabrobot/resources/eppendorf/tubes.py +++ b/pylabrobot/resources/eppendorf/tubes.py @@ -9,15 +9,15 @@ def Eppendorf_DNA_LoBind_1_5ml_Vb(name: str, model="Eppendorf_DNA_LoBind_1_5ml_V - bottom_type=TubeBottomType.V - snap-cap lid """ - diameter = 10.33 # measured + diameter = 10.33 # measured return Tube( name=name, size_x=diameter, size_y=diameter, - size_z=39.5, # measured + size_z=39.5, # measured model="Eppendorf_DNA_LoBind_1_5ml_Vb", max_volume=1_400, - material_z_thickness=0.8, # measured + material_z_thickness=0.8, # measured ) @@ -37,13 +37,13 @@ def Eppendorf_DNA_LoBind_2ml_Ub(name: str) -> Tube: - bottom_type=TubeBottomType.U - snap-cap lid """ - diameter = 10.33 # measured + diameter = 10.33 # measured return Tube( name=name, size_x=diameter, size_y=diameter, - size_z=41, # measured + size_z=41, # measured model="Eppendorf_DNA_LoBind_2ml_Ub", max_volume=2000, # units: ul - material_z_thickness=0.8, # measured + material_z_thickness=0.8, # measured )