Dorif/fragalyseqt

GitHub: Dorif/fragalyseqt

跨平台开源的 DNA 片段分析数据处理软件,用于毛细管电泳数据的峰检测、sizing、等位基因分箱及 CODIS 格式导出。

Stars: 24 | Forks: 2

# README ## 这是什么? 这是一款用于片段分析(MLPA、QF-PCR 等)数据处理的软件。 ## 功能特性 FragalyseQt 0.4 及以上版本支持同时使用多达 8 种不同染料的检测,支持选择性通道隐藏、非拉丁语运行名称,能够正确处理损坏的文件,支持为任何 FSA 或 HID 文件以 CSV 格式导出峰位置、面积、FWHM、大小和通道名称,并支持将 ABI 3500 和 SeqStudio 系列设备生成的 FSA 或 HID 文件的内部分析数据导出为 CSV 格式。自 0.4.2 版本起,FragalyseQt 还支持 Global 和 Local Southern sizing(如 doi: 10.1016/0003-2697(79)90235-5 中所述)。峰面积的计算假设其符合高斯分布。对于噪声较大的运行,提供了去噪和基线校正选项。 自 0.5 版本起,支持使用来自 GeneMapper(制表符分隔的 `*_Panel*.txt`,可附带 `*_Bins*.txt` 和 `*_Stutter*.txt`)和 GeneMarker (`.xml`) 的 panel 文件进行等位基因分箱。**NCBI OSIRIS LadderInfo XML** panel 文件(`.xml`,根元素为 ``)也同样受支持。 加载 panel 后,已确定大小的峰将自动分配等位基因名称;不在任何已知 bin 内的峰将被标记为 OL(off ladder,脱梯)。当加载了 GeneMapper stutter 文件或带有 stutter 比例的 GeneMarker panel 时,将自动应用 **stutter 峰过滤**:高度低于 panel 定义的 stutter 比例(相对于相邻等位基因)的峰将被标记为 stutter 产物。请注意,NCBI OSIRIS panel 不包含 stutter 比例数据,因此不适用于它们进行 stutter 过滤。同样自 0.5 版本起,支持导出为 **CODIS 3.2 CMF XML** 格式:使用 `Ctrl+Shift+C` 打开导出对话框,选择要包含的样本,为每个样本分配标本类别和 ID,填写实验室元数据,FragalyseQt 将生成一个 Schema 有效的 `CODISImportFile`,随时可提交至数据库。所有 29 个 CODIS 标本类别均受支持;基因座数据从已加载的 panel 分配中自动提取。 可以使用 **添加分子量内标** 对话框 (`Ctrl+Shift+A`) 将自定义分子量标准添加到库中:输入名称,选择 ILS 通道(DATA1-4 对应 Blue/Green/Yellow/Red,扩展通道 DATA105-108 对应 Orange/Purple/Aqua/Brown),并提供以空格分隔的大小列表。新标准将被永久保存,并适用于所有当前打开和未来的分析标签页。 所有这些操作都不会改写 FragalyseQt 所处理文件内部的任何数据! ## 支持哪些文件格式? 目前支持 FSA 和 HID 文件,并且(自 0.4.3 版本起)增加了针对原生 Nanophore-05 FRF 文件的初步实验性支持(不适用于 sizing,仅用于查看)。 如果您希望增加对任何文件格式的支持,可以通过发送补丁来协助实现。 ## FragalyseQt 有什么用处? 目前,它有助于毛细管电泳的故障排除、峰检测和 sizing,因此适用于大量不同的分析工作。 由于 FragalyseQt 分析的是原始的毛细管电泳数据,如果您的峰非常拥挤(例如在 TP-PCR 或等位基因 ladder 中),您获得的峰面积可能与真实值不同。在这种情况下,您必须使用基线校正和去噪选项。 FragalyseQt 不会更改所分析的文件,因此如果您想保存分析结果,必须将其导出为 CSV 格式。 ## FragalyseQt 快捷键。 `Ctrl+O` — 打开文件进行分析。 `Ctrl+E` — 将分析结果导出为 CSV。 `Ctrl+I` — 导出内部分析数据为 CSV(仅限 ABI 3500 和 SeqStudio 系列)。 `Ctrl+Shift+C` — 导出为 CODIS 3.2 CMF XML。 `Ctrl+Shift+A` — 添加自定义分子量内标。 `Ctrl+W` — 关闭当前标签页。 `F1` — 关于。 ## FragalyseQt 计划添加哪些功能? 目前,我计划进一步改进分箱功能、基因分型支持以及 CODIS 导出覆盖范围。 ## 我该如何支持您? 您可以提供来自我尚未测试过的机器的运行文件,提供补丁,或在资金上支持我。无论是哪种情况,都可以通过电子邮件 ( dorif11 AT gmail DOT com )、Telegram ( t.me/nurgle ) 或在 GitHub 上联系我。每一份帮助都非常重要! ## FragalyseQt 采用什么许可证? 0.4.x 之前的版本采用 GNU GPL v3。0.4 及以上版本采用 GNU AGPL v3。 ## 从预编译包安装 预编译的 DEB 和 RPM 包可在 [发布页面](https://github.com/Dorif/fragalyseqt/releases)获取。 ### DEB (Debian, Ubuntu, Linux Mint 及其衍生版) 下载 `.deb` 文件并使用 `apt` 安装: ``` sudo apt install ./fragalyseqt_0.5.1_all.deb ``` 这将自动解析并安装所有依赖项。 ### RPM (Fedora, openSUSE, RHEL 9+, Alma, Rocky 及其衍生版) 下载 `.rpm` 文件并使用 `dnf` 安装: ``` sudo dnf install ./fragalyseqt-0.5.1-1.noarch.rpm ``` 在使用 `yum` 的旧版 RHEL/CentOS 7-8 系统上: ``` sudo yum install ./fragalyseqt-0.5.1-1.noarch.rpm ``` ## 如何在 *ubuntu/Debian/SUSE/macOS 上运行? 以您喜欢的任何方式安装 Python 3.8+、git 和 PyQt5/PyQt6/PySide6(仅支持这些 Python 的 Qt 绑定)。之后,从 Git 仓库克隆 FragalyseQt,安装并运行它。我建议您使用 pip3 执行此操作: ``` git clone https://github.com/Dorif/fragalyseqt && cd fragalyseqt && pip3 install . && fragalyseqt ``` 如果遇到 externally-managed-environment 错误,请尝试: ``` pip3 install --break-system-packages . ``` 在正常情况下,这实际上不会破坏任何东西。 或者,您可以尝试设置虚拟环境或使用 pipx,但前面提到的选项是推荐的。 如果您正在使用基于 RHEL 的系统 - 请阅读下一章,祝您好运。 ## 如何在 AltLinux 上运行? 准备运行 FragalyseQt 的环境(需要 GCC 和 python3-dev 来构建 BioPython): ``` su -c "apt-get install -y git gcc python3-module-pip python3-module-scipy python3-module-numpy-testing python3-dev" ``` 下载、安装并运行 FragalyseQt: ``` git clone https://github.com/Dorif/fragalyseqt && cd fragalyseqt && pip install . && fragalyseqt ``` ## 如何在 RHEL/Alma/Rocky/Oracle 8+ 上运行? 准备运行 FragalyseQt 的环境: ``` sudo yum install python-qt5 git ``` 下载、安装并运行 FragalyseQt: ``` git clone https://github.com/Dorif/fragalyseqt && cd fragalyseqt && pip install . && fragalyseqt ``` ## 如何在 RHEL/CentOS/Alma/Rocky/Oracle/Scientific 7 上运行? 这些系统的软件仓库中没有 PyQt5,您也无法在全新安装的这些系统上安装 PyQt5。要安装 PyQt5,您应该首先更新 pip3 并清理 pip 缓存: ``` sudo pip3 install --upgrade pip && rm -rf .pip/cache ``` 之后安装 FragalyseQt 运行所需的包: ``` pip3 install pyqt5 && sudo yum install git ``` 下载、安装并运行 FragalyseQt: ``` git clone https://github.com/Dorif/fragalyseqt && cd fragalyseqt && pip install . && fragalyseqt ``` ## 如何在 FreeBSD 上运行? 首先,安装 Git 和运行 FragalyseQt 所需的库(假设您已经安装了 Python 3.9): ``` pkg install git graphics/py-pyqtgraph biology/py-biopython textproc/py-charset-normalizer py39-pip ``` 现在,下载 FragalyseQt,安装并运行它: ``` git clone https://github.com/Dorif/fragalyseqt && cd fragalyseqt && pip-3.9 install . && fragalyseqt ``` 或者,如果您希望从 PIP 安装所有的 python 库(但请确保它们没有作为原生包安装): ``` pkg install git py39-pip && git clone https://github.com/Dorif/fragalyseqt && cd fragalyseqt && pip-3.9 install . && fragalyseqt ``` ## 如何在 OpenBSD 上运行? 首先,安装 Git 和运行 FragalyseQt 所需的库: ``` pkg_add git py3-pip py3-qt5 py3-pyqtgraph py3-biopython py3-charset-normalizer py3-scipy ``` 现在,下载 FragalyseQt,安装并运行它: ``` git clone https://github.com/Dorif/fragalyseqt && cd fragalyseqt && pip3 install . && fragalyseqt ``` 或者,如果您希望从 PIP 安装所有的 python 库(但请确保它们没有作为原生包安装): ``` pkg_add git py3-pip && git clone https://github.com/Dorif/fragalyseqt && cd fragalyseqt && pip3 install . && fragalyseqt ``` ## 如何在 NetBSD 上运行? 首先,安装 Git 和运行 FragalyseQt 所需的库。在这种情况下,通过 pip 安装 pyqtgraph 是至关重要的,因为原生的 NetBSD 包似乎在某些方面存在问题(假设您使用的是相当新版本的 NetBSD 和 python 3.11): ``` pkg_add git py311-pip py311-qt5 py311-biopython py311-charset-normalizer py311-scipy && pip3.11 install pyqtgraph ``` 现在,下载 FragalyseQt,安装并运行它: ``` git clone https://github.com/Dorif/fragalyseqt && cd fragalyseqt && pip3.11 install . && fragalyseqt ``` 或者,如果您希望从 PIP 安装所有的 python 库(但请确保它们没有作为原生包安装): ``` pkg_add git py311-pip && git clone https://github.com/Dorif/fragalyseqt && cd fragalyseqt && pip3.11 install . && fragalyseqt ``` ## 它能在非 x86 机器上运行吗? 是的,可以,因为它不仅在操作系统方面是跨平台的,在硬件方面也是跨平台的。它至少已在 RISC-V 和 ARM 架构的机器上运行过。 ## 已知存在问题的系统。 OpenVMS - 没有 Qt,至少在 x86_64 版本上没有稳定的 Python,不用考虑了。 Solaris/Illumos - 无法构建和安装 SciPy。 Haiku - pyqtgraph 包似乎存在问题(通过 pip 安装可解决),SciPy 包编译时缺少 ndimage 模块且通过 pip 安装会失败,也许将来会修复这个问题。 ## 如何进一步提升 FragalyseQt 的速度? 如果您使用的是 Linux 或 macOS,您可以为此安装 Pyston(一个针对 Python 的性能优化 JIT),它将加速兼容 Python 3.7 - 3.10 的应用程序,不仅限于 FragalyseQt: ``` pip3 install pyston_lite_autoload ``` ## 如何选择用于 sizing 的分子量内标? 这可能有些违背直觉,但有时您必须使用与在 CE 数据图正上方检测并显示的内标不同的分子量内标。 以下是一些关于如何选择正确分子量内标的提示: 如果您看到数据图上方写有 LIZ/CC5/WEN/BTO/其他通道 5 的 ladder,但没有可用的 LIZ/CC5/WEN/BTO 通道数据 - 请根据您的试剂盒和设备规格选择 ROX/CXR/其他通道 4 的 ladder。示例:Profiler Plus、CoFiler 和 PowerPlex 16 的所有样本文件。 如果您看到有限范围的 ladder 子集(如 GS600LIZ(60-460)),但看到的峰明显大于该 ladder 的上限 - 请计算峰的数量,并在已计数的峰中选择具有最高峰大小的 ladder。示例:在作为示例提供的 SeqStudio GlobalFiler 文件中,检测到了 GS600LIZ(60-460) ladder,但实际上存在高达 600 个核苷酸的所有 ladder 峰,因此您必须使用 GS600LIZ、GS600LIZ(60-600)、GS600LIZ(80-600) 或 GS600LIZ(100-600) ladder 进行 sizing。 如果在该低大小区域有影响甚至 ladder 通道的强烈噪音,请选择跳过低大小标记的 ladder 子集,如 GS600LIZ(60-600)。 仅当相应的峰未能成功进样时,才选择带有减号峰的 ladder 子集,例如 GS600LIZ-250。 ## 如何选择 sizing 算法并对我的数据进行 SizeCall? 速度最快且消耗资源最少、同时具备中等精度的是 Linear Spline。如果您使用的是极度弱势的系统,例如旧款上网本或第一代 Raspberry Pi,请选择它。 最均衡的是 Cubic Spline。 5 次样条曲线可能比 Cubic 稍微精确一些。 然而,Cubic 和 5 次样条曲线都存在 Runge 现象,这使得它们在处理极小或极大的尺寸时几乎无法使用。 如果您希望更高的 sizing 均匀性 - 请使用 LSQ 加权样条 sizing。其精度从 1 阶到 5 阶逐渐提高。资源消耗也会以同样的方式增加。 纯 LSQ calling 擅长处理具有某种程度异常迁移的高度多重化和嘈杂数据。 每次您更改峰检测设置、应用基线校正和去噪、隐藏/显示通道或打开新文件时,请点击 "SizeCall" 按钮。 ## 关于测试文件的来源。 来自 ABI 3100 的 FSA 文件和来自 ABI 3500 的 HID 文件来自 NCBI OSIRIS 测试文件集。NCBI OSIRIS 是公共领域软件。 NCBI OSIRIS 源代码获取地址:https://github.com/ncbi/osiris NCBI OSIRIS 主页:https://www.ncbi.nlm.nih.gov/osiris/ 来自 ABI 310 的文件来自 MLPAinter 项目,采用 GNU GPL v3 许可。 MLPAinter 源代码获取地址:https://code.google.com/archive/p/mlpainter/ MLPAinter 出版物全文获取地址:https://bmcbioinformatics.biomedcentral.com/articles/10.1186/1471-2105-11-67 NIST STR 文件来自 NIST Forensic DNA Open Dataset v. 1.3.0,也可在此获取:https://data.nist.gov/od/id/mds2-2157/pdr:v/1.3.0 NIST mixtures STR 文件来自 NIST Forensic DNA Open Dataset v. 1.4.1,也可在此获取:https://data.nist.gov/od/id/mds2-2157/pdr:v/1.4.1 根据其他 NIST 数据/作品的合理使用政策,已在相应目录中添加了版权声明: https://www.nist.gov/open/copyright-fair-use-and-licensing-statements-srd-data-software-and-technical-series-publications 这些数据集中附带的 Panel 文件已在单独的目录中,以避免文件重复。 用于 GlobalFiler 的 SeqStudio 和 RapidHIT ID v1.x 文件由本人获取,不包含任何其他人的数据。 用于 Nanophore-05 和 SeqStudio 的 COrDis Plus 文件由莫斯科 ISB 的 Dmitrii Romaniuk 提供,不包含个人数据。 Superyears Honor 1616 文件由俄罗斯别尔茨克 "Litolab" 的 Vadim Ponkratov 提供,不包含个人数据。
标签:ABI 3500, CMF XML, CODIS 3.2, DNA片段分析, FSA文件处理, GeneMapper, GeneMarker, HID文件解析, MLPA, OSIRIS, QF-PCR, SeqStudio, Southern算法, STR分析, Stutter过滤, 基因分型, 基线校正, 实验数据管理, 峰值导出, 数据分析工具, 法医数据库, 法医遗传学, 生物信息学, 等位基因分箱, 逆向工具, 降噪, 高斯拟合