实验室管理软件不是一个正常运作的实验室所必需的,但却是一个可扩展的实验室所必需的。当你需要每天追踪数千个质粒的位置、质量、生长和法律地位时,就像我们在Addgene所做的那样,笔和纸会让你失望。实验室管理软件的好处不仅仅局限于大容量的设备;它在博士后、学生和实验室伙伴频繁进出的学术实验室中很有用——这是一个成熟的环境,可以让有价值的工作和材料从缝隙中溜走。
在这篇文章中,我们将重点介绍过去几年来我们学到的一些经验,希望我们的见解能够帮助您在编写自己的软件时,引导您朝着正确的方向前进。这些都不是真理,但我们认为值得考虑。一切都会出错
每当一个订单会在Addgene网站上发布,它引发了整个Addgene的连锁反应——在办公室,在我们的法律部门,当然,在实验室。为了把质粒送到你的实验室,我们需要(这有一点简化):
为了防止我们混淆样本,并确保每样东西都成功地生长,我们必须跟踪和管理所有这些步骤。不幸的是,生物学是混乱的。实验过程中的每一个步骤都可能失败。有些步骤失败需要重新尝试相同的步骤,有些需要倒退两步,有些需要从头开始,我们的软件需要处理这些情况。下面的代码示例展示了如何构造软件以适应生物的混乱。这些例子故意显得微不足道,但它们在这里是为了帮助讲述这个故事。
在右边的第一个例子中(# this will make you sad),有人提出了一个特定的质粒请求,现在是我们实验室的技术人员取回样品并准备运输的时候了。在第一种情况下,我们天真地假设一切都会完美进行,我们的软件只是遵循线性进程,指导技术人员完成整个过程。
这个问题?正如我们上面所说的,这些步骤中的任何一个都可能失败,但是在我们当前的设置中,并没有明确的说明当某些事情失败时应该做什么。虽然我们确信我们的技术人员在需要的时候可以解决问题,但他们必须单独跟踪任何故障并自行排除故障。对于一些例子来说,这还不算太糟,但对于成千上万的例子来说,如果没有软件,这就非常困难了。
跟踪实验室程序还可以让您访问关于哪些步骤最有可能失败的硬数据。我们的实验室经理一定会很想知道她的手术哪一部分最容易失败。
在学术实验室中,类似的情况也会出现,如果一位处理特定样本的实验室资深人员突然离开,没有一个系统可以让她轻松地将处理样本的指令传递给新的实验室成员。
如果成功或失败,我们可以通过软件向实验室成员提供明确的指示,从而为成功打下基础:
在第二个示例中,我们添加了一些简单但关键的逻辑。有些步骤“很难”失败,它们重置了整个过程。其他步骤会“软”失败,它们只是需要重复。我们现在也有一个很好的界面,开始跟踪分析数据的实验室程序。有了这些数据,我们可以返回并优化我们的过程,使整个过程更有效地工作。
上那份条形码的美差吧
- 买一台条形码标签打印机。
- 购买条形码扫描仪。
- 条形码一切.
- 如果它有条形码,那么在数据库中应该有相应的条目。
- 享受你快乐的实验室工作人员吧。
条形码材料使每个人的生活更容易,加快安装速度的时间和资本成本几乎总是值得的。因为标签是贴在容器上的,而不是贴在所述容器中糊状、粘稠的内容上的,所以请仔细考虑您希望您的软件如何处理这些编码的数字。
松散地耦合容器和内容
从一开始就尽可能清楚地说明这个事实(尽管总是会有困惑)容器不同于其内容物.你应该同时跟踪它们,你应该能够轻松地将内容从一个容器移动到另一个容器。
如果您正在使用条形码(您应该这样做!)请记住,您的条形码是应用于容器,而不是内容。把条形码和容器紧密连接起来也许不是一个坏主意,但是把它们和里面的东西紧密连接起来可能会让你感到悲伤和困惑,因为一个棘手的程序失败了,你的技术人员重新开始了一个新的管子。
在第一个例子中继承使管子的内容物与管子本身紧密相连。如果蠕虫发生了什么事,需要更换管道,没有干净的方法从容器中分离内容(当然,这在实验室中是一个简单的任务,但软件应该镜像实验室程序,而不是人为地限制它们)。
在第二个例子中,我们有一个单独的蠕虫模型和管模型,我们可以根据需要很容易地交换它们。在这种情况下,实验室的物理考虑对象组合比继承更明智的选择。
有些容器是永久性的,比如托盘或冰箱。有些是一次性的,比如塑料管。和你的实验室团队谈谈他们希望如何跟踪这些东西。
术语和语言是棘手的
事物的名称会在某个时候绊住每个人,尽早决定在名称空间冲突中要做什么。甚至在数据库中有额外的“dev_name”和“science_name”列也是值得的。您需要根据您正在解决的问题的技术细节做出决定,但一致性是关键。您可能会遇到一些名称空间冲突:vector、sequence、insert、trait、factor、expression等。
也会有这样的情况,你学习生物学术语(质粒,5-prime, CRISPR,生长菌株,载体骨干,等等),你只是没有足够的背景来了解它们真的是这样的。您的代码处理这些数据的方式可能与在实验室中处理数据的方式不一致,因此,编写松散耦合的模块化代码很重要。
使用可靠的工具
我们使用Python,Django,Apache,MariaDB.使用可靠的工具意味着更少的启动和运行时间,更多的时间用于编写有趣的生物技术代码。
选择非Python堆栈有合理的技术原因,但如果您与科学家一起工作,他们不太可能接触到除Python或MATLAB以外的任何东西。选择Python可以很容易地为他们创建一个只读的Jupyter笔记本,并让他们也享受其中的乐趣。
Kris Shamloo是Addgene公司的一名软件工程师,他对编写帮助科学家的软件工具很感兴趣。你可以在推特上找到他@krisshamloo而在krisshamloo.com
Addgene博客上的额外资源188博金宝官网
更多资源请访问Addgene.org
主题:Addgene新闻
留下你的评论