使用 cadnano 进行 DNA 几何设计
本文介绍了一个工具,您可以使用它来处理三维 DNA 折纸。该软件包名为 cadnano,目前正在 Wyss 研究所开发。借助此软件包,您将能够构建和操作 DNA 结构的三维表示,并生成出版质量的工作图形。
由于此软件是基于研究的,因此您不太可能在您最喜欢的发行版的软件包存储库中找到它,在这种情况下,您需要从 GitHub 存储库安装它。
由于 cadnano 是一个 Python 程序,编写时使用了 Qt 框架,因此您需要首先安装一些软件包。例如,在基于 Debian 的发行版中,您需要运行以下命令
sudo apt-get install python3 python3-pip
我发现安装有点棘手,因此我创建了一个虚拟 Python 环境来管理模块安装。
进入激活的 virtualenv 后,使用以下命令安装所需的 Python 模块
pip3 install pythreejs termcolor pytz pandas pyqt5 sip
安装这些依赖项后,使用以下命令获取源代码
git clone https://github.com/cadnano/cadnano2.5.git
这将获取 Qt5 版本。Qt4 版本位于存储库 https://github.com/cadnano/cadnano2.git 中。
将目录更改到源目录中,您可以使用以下命令构建和安装 cadnano
python setup.py install
现在您的 cadnano 应该在 virtualenv 中可用了。
您可以通过从终端窗口执行 cadnano
命令来简单地启动 cadnano。您将看到一个基本空白的工作区,由几个空的视图窗格和右侧一个空的检查器窗格组成。

图 1. 首次启动 cadnano 时,您会得到一个完全空白的工作空间。
为了了解 cadnano 中可用的一些功能,让我们创建一个六链纳米管。第一步是创建一个您可以基于其进行构建的背景。在主窗口的顶部,您会在工具栏中找到三个按钮,可让您创建“自由形式”、“蜂窝”或“方形”框架。对于此示例,请单击蜂窝按钮。

图 2. 从可用的几何框架之一开始构建。
您可能会注意到,框架的初始渲染对于进一步工作而言并不理想。您可以使用鼠标滚轮在感兴趣的视图窗格中放大和缩小。您还会注意到工具栏中的“创建”按钮已选中,这意味着您已准备好开始添加 DNA 链。从最靠近中心的圆圈开始,位于中心正上方,并逆时针方向,单击中心点周围的六个圆圈。

图 3. 首先创建 DNA 链的排列以定义您的折纸结构。
现在,这六条链将从 0 到 5 编号,围绕中心点逆时针方向排列。这种表示是您从边缘观察纳米管时所看到的,就好像它已沿其厚度切割一样。右侧的检查器窗格现在包含六个虚拟螺旋的条目。底部右侧会打开一个新的窗格,您可以在其中查看检查器窗格中选定条目的详细属性。
此时,您可以放大特定窗格以进行进一步工作。在工具栏的右上角,您会看到各种可用视图的三个图标。单击“切换切片”按钮,使其消失,路径查看器窗格将成为主窗格。

图 4. 您可以选择单个查看器窗格并放大 DNA 结构以进行更详细的设计工作。
在此视图中,您可以更详细地设计您的链、断裂和交叉。单击并拖动特定链将定义支架的部分,其他 DNA 片段将连接到该部分。您将在检查器窗格中看到一个新的寡核苷酸条目。您可以通过单击工具栏中的“Seq”按钮来添加 DNA 序列。现在,当您单击图表中的某个部分时,cadnano 将弹出一个新窗口,您可以在其中从预定义的 DNA 片段中选择一个或插入自定义片段。

图 5. 您可以将 DNA 片段添加到您在链内构建的支架中。
您可以通过单击工具栏中的“断裂”图标来引入断裂,然后单击要引入断裂的支架部分。继续重复这些步骤以构建您的整个折纸结构。
当您构建了一个系统后,您将需要保存所有这些工作。单击“文件→另存为”以保存您的工作并为其指定文件名。Cadnano 使用 JSON 作为系统中结构的 文件格式。这意味着您可以轻松查看文件,甚至在需要时进行手动更改。您还可以通过单击工具栏中的“导出”按钮来导出 DNA 序列本身。这会将序列作为每个片段的 CSV 文件写出。然后,您可以在其他基因组学软件中使用它。保存工作的另一种方法是单击工具栏中的 SVG 按钮,这将生成 SVG 格式的图像文件,然后您可以在出版物或报告中使用该文件。
尽管我一直在描述使用 cadnano 提供的 GUI,但这并不是玩 DNA 折纸的唯一方法。cadnano 被编写为充当标准的 Python 模块,这意味着您可以将 cadnano 导入到您自己的 Python 代码中,并使用它以编程方式创建和操作您的 DNA 结构。当您要生成大量系统,或者如果您正在制作更复杂的系统(难以使用鼠标和 GUI 创建)时,这最有意义。基本样板代码如下所示
import cadnano
from cadnano.document import Document
app = cadnano.app()
doc = app.document = Document()
doc.readFile('myfile.json')
part = doc.activePart()
此样板代码创建一个新应用程序,然后在该应用程序中创建一个新文档。“文档”对象包含您的 DNA 折纸结构的所有内容。第五行读取一个 JSON 文件,其中包含您要操作的结构。最后一行获取父 Part 对象,其中包含所有其他部件、链交叉等。您还可以使用此 Python 模块创建全新的系统,您可以保存以供以后使用。
希望这篇短文向您展示了 cadnano 提供的一些功能。由于它被用作研究软件并如此开发,因此它可能不像其他项目那样受到大量关注。但是,如果基因组学和构建 DNA 结构是您工作的一部分,那么 cadnano 绝对是一个好的起点。
有关更多详细信息,请参阅 cadnano 文档。