使用ADZE计算allelic richness (Ar) 和 private allele richness (pAr)

0.写在前面

软件官网:
https://web.stanford.edu/group/rosenberglab/adze.html
简单来说,等位基因丰度和私有等位基因丰度是描述品种遗传多样性的参数,大约类似于Ho与He。

sci论文.jpg

1.安装

简单的下载解压就行,提供linux和windows两种
tar -xzvf adze-1.0-XX.tar.gz

2.制作输入文件

需要两个输入文件,但本身并没有提供简单的创建输入文件的方法,因此我只能用简单暴力的方法尝试制作

1.datafile

目标格式.png

1.第一行是位点名称的列表,后面可以跟随一定数量的非数据行。然后每个个体的数据占用两行(对于单倍体或多倍体数据,每个个体的行数可能不同)。
2.在每一行的数据之前,有一定数量的列,用来表示个体的分类信息。图1中的文件在基因型数据之前有5列。在这个例子中,这些列分别代表(1)个体编号,(2)群体编号,(3)群体名称,(4)原产国家,和(5)原产地理区域。缺失数据的默认值是-9,但可以通过在参数文件中设置MISSING或者在命令行上使用-m选项来改变。
3.数据文件需要在参数文件中指定,并且必须与ADZE在同一个目录下;否则需要提供数据文件的完整路径。
4.等位基因的表示不限于数字:任何没有空白字符的字符串都可以用来表示一个等位基因。

1.质量控制后的vcf文件转fa格式

使用Northwest A&F University的Yudong Cai师兄提供的脚本
https://github.com/silvewheat/biotrans_cli/blob/master/vcf2fasta_hap.py

python3 vcf2fasta_hap.py -varfile test.vcf -outfile test.fa
fa文件.png

其中一组染色体一个序列,每个个体两条序列,因为不涉及单倍型问题,因此也不需要进行分型。对于不同的染色体,只是简单的首尾相连
注意:对于未知的点,标注的是“N”(第二行第一个)

2.拆分fa文件-每条序列一个文件

awk '/^>/ {s=substr($0,2)} {print > s".fa"}' test.fa

该脚本是将每条序列拆分,并以序列的表头文件命名,如:sample-1-1.fa,sample-1-2.fa,便于后续操作
建议将生成的fa文件移动至单独的文件夹,以免对总的fa文件造成影响

find . -name "*.fa" -exec sed -i '1d' {} \;

直接在原文件上,删除fa文件的第一行

3.多行文件转单行

find . -name "*.fa" -print0 | xargs -0 -I {} sh -c 'xargs < {} > {}.single'
单行序列.png

该命令是将换行符转换为空格,因此需要删除空格

find . -name "*.single" -exec sed -i 's/ //g' {} \;

尽管直接阅读显示多行,使用wc -l显示是单行。

4.每隔一个字符插入一个制表符

find . -name "*.single" -exec sed -i 's/./&\t/g' {} \;

5.将文件中N替换为"-9"

find . -name "*.fa.single" -exec sed -i 's/N/-9/g' {} \;

5.创建三个文件

1.序列编号文件
任意选择一个序列文件,按列编号

gawk 'NR==1 {n=NF} END {for (i=1;i<=n;i++) printf "rs%d\t", i; print ""}' sample.fa.single > num.txt

2.所有文件名的单列文件
按照sequence文件中的顺序合并fa.single文件

xargs cat < sequence > all.fa.single

3.最终datafile的前五列文件,与sequence一一对应

paste prefix all.fa.single >data
cat num.txt data > datafile

2.paramfile

文件名命名为:paramfile.txt
若要创建一个空模板ParamFile,请在默认ParamFile不存在且没有任何命令行参数的情况下运行Adze。 建议在模板的paramfile基础上设置参数

1.必须的参数

G 要计算的最大标准化样本量。 
DATA_LINES 数据文件中的数据行数(不包括包含位置名称的行) 
LOCI 位点数
NON DATA ROWS 在数据之前且应忽略的非数据行数。 此参数始终至少为1(位置名称的行)。 位置名称总是假定在第一行。 
NON_DATA_COLS 数据前面的非数据列数。 在图例中,非数据列数是5
GROUP_BY_COL 用于对个体进行分类的非数据列。 该值应小于NON_DATA_COLS且大于1
DATA_FILE 之前创建的输入文件的名字
R_OUT  等位基因丰富度输出文件的名称
P_OUT 私有等位基因丰富度输出文件的名称

2.组合参数

以下参数是计算组合群体的私有等位基因丰富度所必需的

COMB 默认设置为0,设置为1则表示需计算组合,必须设置以下几个参数
K RANGE 
原文这里有点难以理解,用newbing翻译了一下:如果数据分成了 A、B、C、D 四个组,那么从中选出两个组的组合有 AB、AC、AD、BC、BD、CD 六种。这段话要求所有的值(即组合的大小)必须大于等于 1,小于等于数据分组的个数(例如种群数)。如果组合的大小为 1,那么就相当于计算每个组的私有等位基因丰富度。可以用“-”字符来指定一个整数范围,例如 2-6 表示 2 到 6 之间的所有整数。整数和整数范围必须用逗号分隔,不能有重复的数字。
有效的规范示例有:2,2,5,7,2,4-6。这些示例分别表示要求 ADZE 计算所有两个组的组合的私有丰富度;所有两个组、五个组和七个组的组合的私有丰富度;以及所有两个组、四个组、五个组和六个组的组合的私有丰富度。
C_OUT 组合的私有等位基因丰富度输出文件的名称

3.高级参数

这些参数可以用来输出额外的信息,过滤掉那些有很多缺失数据的轨迹,或者指定缺失数据的替代方式。

MISSING 一个字符串,定义缺少的数据在数据文件中的表示方式。 默认设置是-9。 
TOLERANCE 这个参数是一个介于 0 和 1 之间的数值,用来指定在任何一个分组中,一个位点允许的最大缺失数据的比例。任何有至少一个分组的缺失数据比例超过这个数值的位点,都会被排除在计算之外。被排除的位点的名字会被写入到 deletedloci 文件中。这个参数的默认值是 1。
FULL R 这个参数是一个值为 0 或 1 的数值,默认为0。 为1则输出每个位点的等位基因丰度
FULL P 这个参数是一个值为 0 或 1 的数值,默认为0。 为1则输出每个位点的私有等位基因丰度
FULL_C 这个参数是一个值为 0 或 1 的数值,默认为0。 为1则输出组合的每个位点的私有等位基因丰度
PRINT PROGRESS 默认是1,表示在可能较长的计算期间输出进度报告。为0 则不输出

4.命令行参数

命令行标志为用户提供了从命令行输入信息的选项。 所有命令行参数都将覆盖ParamFile中指定的值。 如果指定了任何命令行参数,也必须给出ParamFile。

 -g MAX_G
 -d DATA_LINES
 -l LOCI
 -nr NON_DATA_ROWS
 -nc NON_DATA_COLS
 -s GROUP_BY_COL
 -f DATA_FILE
 -r R_OUT
 -p P_OUT
 -c COMB
 -k K_RANGE
 -o COUT
 -m MISSING
 -t TOLERANCE
 -tnocalc
 -fr FULL_R
 -fp FULL_P
 -fc FULL_C
 -pp PRINT_PROGRESS
使用方法:./adze-1.0 paramfile.txt -r richness_out
adze似乎需要完整路径

随后,运行./adze-1.0 paramfile.txt (adze需完整路径)
运行该命令所需内存约是文件大小的十倍

3.输出文件

1.R_OUT and P_OUT

P_OUT或R_OUT.png

这个文件包含了每个分组的等位基因丰富度(R OUT)或私有等位基因丰富度(P OUT)的汇总统计量。第一列是分组的名字(根据数据文件和 GROUP BYCOL 参数确定)。第二列是计算结果时使用的 g 值,最后三列是所有没有因为缺失数据而被过滤的位点的均值、方差和均值的标准误差。不同的分组之间用一个空行分隔。
对于P_OUT g值(也即样本量)是标准化的,所以不同组的g相同

2.C_OUT

C_OUT.png

这个文件包含了每个 k 个分组的组合的私有等位基因丰富度的汇总统计量。前 k 列是分组的名字(根据数据文件和 GROUP BYCOL 参数确定)。第 k+1 列是计算结果时使用的 g 值,最后三列是所有没有因为缺失数据而被过滤的位点的均值、方差和均值的标准误差。每个 k 个分组的组合之间用一个空行分隔。

3.FULL *

FULL_OUT.png

这个文件包含了等位基因丰富度(FULL_R)、私有等位基因丰富度(FULL_P)或每个 k 个分组的组合的私有等位基因丰富度(FULL_C)的汇总统计量和所有没有被过滤的位点的数据。第一行是所有用于计算的位点的名字。第一列或多列是分组的名字(对于 FULL_R 和 FULL_P)或多个分组的名字(对于 FULL_C)。第二列是计算结果时使用的 g 值。接下来的列是所有没有被过滤的位点的丰富度计算结果,最后三列是所有这些位点的均值、方差和均值的标准误差。每个分组或 k 个分组的组合之间用一个空行分隔。

4. _deletedloci

这个文件是在使用 TOLERANCE 参数来过滤有缺失数据的位点时生成的。这个文件的名字是 P OUT 文件的名字加上“ deletedloci”。它是一个报告,显示了由于指定的 TOLERANCE 而删除的位点的数量,以及删除的位点的名字的列表

5._summary

这个文件是在每次运行 ADZE 时生成的。这个文件的名字是 R OUT 文件的名字加上“ summary”。这是一个报告,显示了使用的参数和每个主要计算完成的时间(从执行开始算起)

6 例子

解压安装包后,其中以small为前缀的文件是示例

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,711评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,932评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,770评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,799评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,697评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,069评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,535评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,200评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,353评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,290评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,331评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,020评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,610评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,694评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,927评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,330评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,904评论 2 341

推荐阅读更多精彩内容