美文网首页Julia的生物信息学应用
julia 计算为ASCAT创建GC矫正文件

julia 计算为ASCAT创建GC矫正文件

作者: 小光amateur | 来源:发表于2022-10-14 16:55 被阅读0次

如题,官方已经提供了一个R的版本createGCcontentFile.R ,但是根据代码就能看出这个版本非常占内存了,首先要把基因组整个序列都load入内存中去,每次计算出的矫正数据也是储存dataframe中。为了降低内存占用,也为了提高计算速度,我写了一个julia版本的。代码如下:

using BioSequences
using FASTX

function cal(sequence::LongDNASeq)
    nGC = count(x -> ((x == DNA_G) || (x == DNA_C)), sequence)
    nAT = count(x -> ((x == DNA_A) || (x == DNA_T)), sequence)
    (nGC, nAT)
end

function getPosGCs(IO::IOStream, CHRseq::BioSequence, totalLen::Int64, Chr::SubString, POS::Int64, WINDOW::Vector{Int64}, THRESH::Int64, idx::SubString)
    print(IO, idx, "\t", Chr, "\t", POS, "\t")
    for window in WINDOW
        window = window % 2 == 0 ? window + 1 : window
        startPOS = POS - Int64(floor(window / 2))
        tailPOS = POS + Int64(floor(window / 2))
        tailPOS = tailPOS > totalLen ? totalLen : tailPOS
        startPOS = startPOS <= 0 ? 1 : startPOS
        gc, at = cal(CHRseq[startPOS:tailPOS])
        if gc + at > THRESH
            print(IO, round(gc / (gc + at); digits=6), "\t")
        else
            print(IO, "NA", "\t")
        end
    end
    print(IO, "\n")
end

function main(snpLoci::String, fasta::String)
    open("GC_correct.file.txt", "w") do io
        println("Loding reference genome!")
        Genome = open(FASTA.Reader, fasta, index=string(fasta, ".fai"))
        WINDOWS = Int64[25, 50, 100, 200, 500, 1e3, 2e3, 5e3, 1e4, 2e4, 5e4, 1e5, 2e5, 5e5, 1e6]
        println(io, "\tChr\tPosition\t25bp\t50bp\t100bp\t200bp\t500bp\t1kb\t2kb\t5kb\t10kb\t20kb\t50kb\t100kb\t200kb\t500kb\t1Mb")
        chrMarker = ""
        seq = dna"NNNNN"
        totalLen = 0
        for line in eachline(snpLoci)
            if startswith(line, "\t")
                continue
            else
                idx, chr, pos = split(line, "\t")
                pos = parse(Int64, pos)
                if chr != chrMarker
                    seq = FASTA.sequence(Genome[chr])
                    totalLen = length(seq)
                    println("processing chromosome ", chr, "...")
                end
                chrMarker = chr
                getPosGCs(io, seq, totalLen, chr, pos, WINDOWS, 20, idx)
            end
        end
    end
end

main(ARGS[1], ARGS[2])

代码使用了Biojulia中的FASTX.jl包快速读取基因组,使用BioSequences.jl中的函数计算GC含量和索引序列。因此,这两个包需要提前安装好,然后用法就很简单,

julia createGCcontentFile.jl snp_loci.txt hg38.fa

相关文章

  • julia 计算为ASCAT创建GC矫正文件

    如题,官方已经提供了一个R的版本createGCcontentFile.R[https://github.com/...

  • Julia环境配置

    Julia是一门为并行科学计算而设计的高级动态语言,Julia官方将Julia吹得神乎其神,号称语法简洁如Pyth...

  • Jupyter with Julia

    Julia语言入门 Julia的安装和运行 Julia程序语言介绍 Julia程序语言是一种计算机编程语言, 就像...

  • julia-计算文本文件行数

    Julia内置的很多函数很方便,比如计算文本文件的行数,在linux 用wc -l 命令就可与完成,但是有时文件是...

  • 用julia语言计算测序数据的Insert Size?

    Julia读取BAM的库 想要计算Insert size,需要提供一个基因组比对后的文件,sam也好,bam也罢。...

  • Julia GPU 计算入门

    作为专门为科学计算设计的编程语言,Julia 在分布式、GPU 甚至 TPU 计算方面提供了许多丰富易用的特性。我...

  • 高兴地,Julia 1.0发布

    Julia是一个新的,有野心的编程语言,特别适合科学计算,希望这是你深爱着的。 Julia语言下载 Julia语言...

  • Julia 与育种数据分析

    1. Julia是什么? Julia是一个面向科学计算的高性能动态高级程序设计语言。其语法与其他科学计算语言相似。...

  • 创建任意大小的测试文件

    创建测试文件 建议使用管理员 打开powerShell 执行 计算文件的 hash

  • julia编程 单元测试的写法

    julia是一门十分适合用于科学计算的语言. 个人学习julia的主要目的就是为了科学计算,相比于python,性...

网友评论

    本文标题:julia 计算为ASCAT创建GC矫正文件

    本文链接:https://www.haomeiwen.com/subject/dndczrtx.html