如何从vcf文件中按顺序列出的人口数量

时间:2018-05-02 16:25:14

标签: r bioinformatics vcf

我想从vcf文件中按照读入群体的顺序获取每个群体中的个体数量。我的文件的字段看起来像这样

class experimentalCell: BaseCellInAppStoreFolder {
 lazy var familySharingView: UITextView = {
        let tv = UITextView()
        tv.text = "Family Sharing"
        tv.textAlignment = .right
        tv.backgroundColor = UIColor.green
        tv.textContainer.maximumNumberOfLines = 1
        tv.font = UIFont.systemFont(ofSize: 11)
        let options = NSStringDrawingOptions.usesLineFragmentOrigin
          let dummySize = CGSize(width: 1000, height: self.frame.height - 16)
        let rect = tv.text?.boundingRect(with: dummySize, options: options, context: nil)

        tv.textContainerInset = UIEdgeInsets(top: 8, left: 0, bottom: 8, right: 0)
        return tv
    }()
override func setupViews() {
    super.setupViews()
    addSubview(textView)
    addConstraintsWithFormat("H:|[v0]|", views: textView)
    addConstraintsWithFormat("V:|[v0]|", views: textView)
}
}

请参阅此处的示例文件vcf file

例如,在我链接到的文件中,我有两个人口,Chalifour 2003和Chalifour 2015.个人有一个前缀“CHALIFOUR_2003 ...”来识别这个。

我希望能够提取以下内容: Chalifour_2003 * 35 Chalifour 2015 * 45

“35”和“45”表示每个人口中的个体数量(虽然这些数字是由这些数字组成的)。我根本不关心输出的格式,我只需要数字,重要的是按照它们被读入文件的顺序列出种群。

对于试图获取此信息的途径的任何建议都将非常感激。

此致 艾拉

1 个答案:

答案 0 :(得分:0)

使用data.table包读取vcf文件,您可以执行以下操作:

library(data.table)
df <- fread("~/Downloads/ChaliNoOddsWithOuts.vcf")
samples <- colnames(df)[-c(1:9)]
table(gsub("(.*_.*)_.*","\\1", samples))

如果您不坚持使用R,那么bash中的一个班轮就可以完成工作

grep "#CHROM" file.vcf | tr "\t" "\n " | tail -n +10 | cut -f1,2 -d'_' | uniq -c