Skip to main content

4 genotype

这个 README 文件是 GfaViz 的官方使用说明,介绍了它的功能、安装方法、运行方式、界面操作、布局与样式选项、渲染输出以及一些注意事项。下面按主要部分解释。


1. GfaViz 是什么?​

GfaViz 是一个图形化交互工具,用于可视化 GFA 格式的序列图。它同时支持 GFA1 和 GFA2 两种格式。

GFA(Graphical Fragment Assembly)最初是为序列组装设计的,但现在已经发展成一种通用格式,可以表示多种序列图,包括:

  • 组装图
  • Scaffolding 图
  • 比对图
  • 变异图
  • 剪接图

其中 GFA1 更侧重于序列组装,GFA2 更强大、可扩展性更好。README 建议新应用应实现 GFA2。


2. 安装​

支持系统​

  • Linux
  • macOS 10.12 或更新版本

依赖​

  • 使用 C++ 和 Qt5 框架编写,因此需要安装 Qt5。
  • 编译需要 GCC 7.1.0+ 或 clang 3.8.0+,旧版本可能导致编译错误。
  • 图计算依赖 OGDF 库,但该库已随 GfaViz 一起打包。

编译安装​

git clone https://github.com/ggonnella/gfaviz
cd gfaviz
qmake-qt5
make

SVG 支持​

如果系统缺少 Qt SVG 相关库,可以安装缺失的头文件,或者在 qmake-qt5 时加上 NOSVG=true 来禁用 SVG 导出:

qmake-qt5 NOSVG=true

这样生成的版本无法导出 SVG,但其他功能正常。


3. 运行方式​

运行可执行文件 gfaviz。

两种用户界面​

  • GUI:图形用户界面,默认模式,可交互。
  • CLI:命令行界面,适合大图、批量处理或集成到软件流程中。使用 --no-gui 或 -n 进入 CLI 模式。

打开文件​

  • GUI 模式下可以一次打开多个文件;也可以从菜单 File -> Open GFA file 打开。
  • CLI 模式下需要提供一个文件名。
  • 支持 GFA1 和 GFA2。建议用 GfaLint 检查格式,用 GfaPy 修改 GFA 文件。

4. 布局选项​

GfaViz 使用 OGDF 库提供两种布局算法:

  1. Stress Minimization (SM):默认算法,质量更好,但速度较慢。
  2. Fast Multipole Multilevel Method (FMMM):速度更快,适合大图。

使用 --fmmm 选项启用 FMMM。在 GUI 中,布局选项位于右侧面板下方,部分参数可以在 GUI 中调整,但 CLI 当前不支持这些参数。


5. 样式选项​

可以改变不同元素的视觉表现。元素类型包括:seg(片段)、edge(边)、dovetail、internal、group(组)、gap(间隙)、fragment(片段比对)。

在 GUI 中​

  • 通过 Style 部件中的元素类型标签修改特定类型元素的样式。
  • 若只想修改选中的单个元素,勾选 “apply changes to selection only”。

在 CLI 中​

选项命名规则:先写元素类型,再写选项类型,例如 --seg-color、--seg-width、--edge-color 等。

片段(Segments)​

  • 默认画成多边形,颜色由 --seg-color 控制,宽度由 --seg-width 控制。
  • 可设置轮廓颜色和宽度,宽度设为 0 可禁用轮廓。
  • 可用 --seg-as-arrow 画成箭头,表示 DNA 链方向。
  • --weight-factor 控制片段长度与 DNA 长度的比例。
  • --minweight 设置最小长度,保证极小片段可见。
  • --seg-max-sub 控制片段被分成多少子段;设为 1 则画成直线。

边(Edges)​

  • --edge-width、--edge-color 设置边的宽度和颜色。
  • 内部边和 dovetail 边可分别用 --internal-width、--internal-color、--dovetail-width、--dovetail-color 设置。
  • --internal-length、--dovetail-length 设置边长。
  • 比对位置可用高亮显示:--edge-highlights-show 开启,--edge-highlights-color 设置颜色,--edge-highligths-color-random 使用随机颜色。

间隙(Gaps)​

  • 默认用虚线表示,不影响布局。
  • --gaps-as-edges 让间隙参与布局。
  • --gap-length 设置长度。
  • --gap-color 设置正长度间隙颜色,--neg-gap-color 设置负长度间隙颜色。

片段比对(Fragments)​

  • 表示外部序列与片段的比对。
  • 外部序列用矩形表示,宽度由 --fragment-width 控制,颜色由 --fragment-color 控制。
  • --fragment-multlength 设置长度乘数,--fragment-minlenght 设置最小长度。
  • --fwd-fragment-color 和 --rev-fragment-color 根据比对方向设置不同颜色。
  • 连接线距离由 --fragment-dist 控制,颜色由 --fragment-conn-color 控制,宽度由 --fragment-conn-width 控制。
  • 高亮:--fragment-highlights-show 开启,--fragments-highlights-color 设置颜色。

组(Groups)​

  • 用附加的彩色轮廓表示,多个组可以嵌套。
  • --group-width 设置轮廓宽度,--group-colors 设置颜色列表,按 GFA 文件中的组顺序。
  • GUI 中按住 CTRL 双击组内元素可选中整个组。

6. 标签样式​

大多数元素都有名称,可以显示为文本标签,但默认不显示。

  • --labels 开启所有标签;也可用 --seg-labels、--edge-labels 等单独开启。
  • 可设置字体、大小、颜色、轮廓宽度和颜色,如 --label-font、--frag-label-outline-color。
  • 片段标签默认是 ID,可用 --seg-label-showlength 显示长度,或用 --seg-label-seq 显示序列。
  • GUI 中通过 Style 部件的 Label 标签调整。

7. 隐藏元素​

默认显示所有元素,可以隐藏特定类型或单个元素。

  • GUI:在 Style 部件中勾选 “hide element”。
  • CLI:--no-gaps、--no-fragments、--no-groups 隐藏整类元素。注意 --no-segments 和 --no-edges 似乎缺失。
  • 单个元素隐藏:在 GFA 文件的 JSON 标签 vo 中添加 "no-X":true,例如 vo:J:{"no-segments":true}。

8. 渲染输出​

可将图渲染为矢量图或位图:

-r, --render 渲染图到文件
-o, --output <filename> 输出文件名
-f, --output-format <format> 输出格式:BMP, PNG, JPG, JPEG, PBM, XBM, XPM, SVG,默认 PNG
-W, --width <width> 输出宽度(像素)
-H, --height <height> 输出高度(像素)
-t, --transparency 透明背景(仅 PNG)
--bg-color <value> 背景颜色

注意这些选项不会阻止 GUI 启动;若只想用 CLI,请加 --no-gui。


9. 样式表​

样式表可以让不同图使用相同样式。通常从 GUI 中基于现有图创建,仓库的 style 目录中有示例。

应用样式表:

--usestyle <filename>

10. 树导航面板​

GUI 右上角的树导航面板以树形展示 GFA 文件内容,功能包括:

  • 查看元素信息(如片段长度、标签)
  • 点击选择元素
  • 探索元素之间的连接

11. 搜索元素​

在搜索框中输入一个或多个 ID(空格分隔)可搜索命名元素。片段总有 ID,边、间隙、组等可选 ID,未命名元素无法搜索。


12. 选项列表​

查看所有可用命令:

./gfaviz --help

13. 提示与技巧:TwoPacCo​

当前 TwoPacCo 输出的 GFA1 和 GFA2 不符合标准。GFA2 问题较少(边行缺少字段),更容易使用。可以用以下命令修正 GFA2:

sed 's/^E/E\t*/' mygraph.gfa2 > mygraph.fixed.gfa2

14. 致谢、许可证、引用​

  • 图计算由 OGDF 库完成:http://www.ogdf.net/
  • 软件使用 ISC 许可证,详见 LICENSE.txt。
  • 引用格式:

    Giorgio Gonnella, Niklas Niehus, Stefan Kurtz. GfaViz: Flexible and interactive visualization of GFA sequence graphs. Bioinformatics, bty1046 (2018). DOI: 10.1093/bioinformatics/bty1046


15. 已知问题​

GUI 中保存图时可以选择 GFA1 或 GFA2 格式,但实际上文件总是保存为之前的格式,与选择无关。该格式选择选项将在后续版本中移除。若需转换格式,请使用 GfaPy。


总的来说,这个 README 是 GfaViz 的完整使用手册,涵盖了从安装、运行、界面操作到样式定制、渲染输出和已知问题的全部内容。它强调 GfaViz 支持 GFA1/GFA2,尤其擅长通过丰富的样式选项展示序列图的各种元素,如片段、边、间隙、片段比对和组。


genotype: 0/0, 0/1, 1/1 是遗传学中表示二倍体个体基因型的常见写法,通常出现在 VCF 文件的 GT 字段中。其中的数字和符号含义如下:

数字含义​

  • 0:参考等位基因(REF),即与参考基因组一致的等位基因。
  • 1:第一个替代等位基因(ALT),即相对于参考序列发生变异的等位基因。
  • 2、3…:如果存在多个替代等位基因,依次表示第二个、第三个 ALT。

分隔符 / 的含义​

  • / 表示 unphased(无相位信息)。
  • 意思是:我们知道这个个体有两个等位基因,但不知道哪个来自父方、哪个来自母方,也不知道这两个等位基因是否在同一条染色体上。
  • 因此,0/1 和 1/0 在无相位信息时是等价的。

具体基因型解释​

基因型含义通俗理解
0/0两个等位基因都是参考纯合参考
0/1一个参考、一个替代杂合,但不知道相位
1/1两个等位基因都是替代纯合替代

举例​

假设参考序列在某 SNP 位点是 A,替代等位基因是 G:

  • 0/0:A/A
  • 0/1:A/G(或 G/A,不知道哪条染色体是哪个)
  • 1/1:G/G

与 0|0, 0|1, 1|1 的区别​

  • |(竖线):表示 phased(有相位信息)。例如 0|1 表示一条染色体是 0,另一条是 1,顺序有生物学意义。
  • /(斜杠):表示 unphased(无相位信息)。例如 0/1 只知道一个 0 一个 1,但不知道哪个等位基因在同一条染色体上。

所以:

  • 0|1 和 0/1 的等位基因组合相同,都是杂合。
  • 但 0|1 告诉了你两个等位基因分别位于哪条染色体上(父源或母源),而 0/1 没有这个信息。

补充​

  • 二倍体生物通常有两个等位基因,所以写成两个数字。
  • 单倍体只有一个数字;多倍体可能有多个,如 0/1/1。
  • 如果看到 0/0,就是纯合参考;1/1 是纯合替代;0/1 是杂合。