查看原文
其他

FASTX 处理 fasta 和 fastq 文件

JunJunLab 老俊俊的生信笔记 2022-08-17


万物终归尘土

1引言

今天分享个 JuliaFASTX 用来处理 fastafastq 文件。

说明文档地址:

https://docs.juliahub.com/FASTX/ZwJmk/1.3.0/

2安装

add FASTX

3处理 fasta 文件

fasta 文件格式:

# 格式
>{name} {description}?
{sequence}

# 例如
>chrI chromosome 1
CCACACCACACCCACACACCCACACACCACACCACACACCACACCACACC
CACACACACACATCCTAACACTACCCTAACACAGCCCTAATCTAACCCTG

读写 fasta 文件:

using FASTX

r = FASTA.Reader(open("my-seqs.fasta""r"))
w = FASTA.Writer(open("my-out.fasta""w"))

# or
r = open(FASTA.Reader, "my-seqs.fasta")
w = open(FASTA.Writer, "my-out.fasta")

循环操作文件:

open(FASTA.Reader, "my-seqs.fasta"do reader
    for record in reader
        # 显示id名称
        @show FASTA.identifier(record)
    end
end

打开压缩的 fasta 文件:

reader = FASTA.Reader(GzipDecompressorStream(open("my-reads.fasta.gz")))
for record in reader
    ## do something
end
close(reader)

使用 while 循环节省内存:

open(FASTA.Reader, "my-seqs.fasta"do reader
    record = FASTA.Record()
    while !eof(reader)
        read!(reader, record)
        ## Do something.
    end
end

可获取的相关参数:

# 判断是否存在id
FASTA.hasidentifier
# id名称
FASTA.identifier
# 判断是否存在描述信息
FASTA.hasdescription
# id的描述
FASTA.description
# 判断是否存在序列
FASTA.hassequence
# 序列
FASTA.sequence

写出 fasta 文件:

using BioSequences
x = dna"aaaaatttttcccccggggg"
rec = FASTA.Record("MySeq", x)
open(FASTA.Writer, "my-out.fasta"do
    write(w, rec)
end

4处理 fastq 文件

fastq 文件格式:

# 基本格式
@{name} {description}?
{sequence}
+
{qualities}

# 例如
@FSRRS4401BE7HA
tcagTTAAGATGGGAT
+
###EEEEEEEEE##E#

读取 fastq 文件:

using FASTX

r = FASTQ.Reader(open("my-reads.fastq""r"))
w = FASTQ.Writer(open("my-output.fastq""w"))

# or
r = open(FASTQ.Reader, "my-reads.fastq")
w = open(FASTQ.Writer, "my-out.fastq")

for 循环迭代操作:

open(FASTQ.Reader, "my-reads.fastq"do reader
    for record in reader
        ## Do something
    end
end

打开压缩的 fastq 文件:

reader = FASTQ.Reader(GzipDecompressorStream(open("my-reads.fastq.gz")))
for record in reader
    ## do something
end
close(reader)

使用 while 循环节省内存:

open(FASTQ.Reader, "my-reads.fastq"do reader
    record = FASTQ.Record()
    while !eof(reader)
        read!(reader, record)
        ## Do something.
    end
end

可获取相关参数:

FASTQ.hasidentifier
FASTQ.identifier
FASTQ.hasdescription
FASTQ.description
FASTQ.hassequence
FASTQ.sequence
# 判断是否存在质量值
FASTQ.hasquality
# 质量值
FASTQ.quality

写出 fastq 文件:

using BioSequences
x = dna"aaaaatttttcccccggggg"
q = fill(1, length(x))
rec = FASTQ.Record("MySeq", x, q)
open(FASTQ.Writer, "my-out.fastq"do
    write(w, rec)
end

不同测序平台的质量值编码格式:

可以在 Record 里面加入质量值信息:

FASTQ.Record(identifier, sequence, quality; offset=33)

FASTQ.Record(identifier, description, sequence, quality; offset=33)

5结尾

感兴趣的小伙伴们可以自己试试。




  老俊俊生信交流群 ,QQ,


老俊俊微信:


知识星球:



今天的分享就到这里了,敬请期待下一篇!

最后欢迎大家分享转发,您的点赞是对我的鼓励肯定

如果觉得对您帮助很大,赏杯快乐水喝喝吧!



  





如何计算 read 的 covergae

RiboChat 一键分析 Ribo-seq 数据

Julia 处理 bigWig 文件

Julia 笔记之元组

GFF3 处理 GFF 注释文件

Sam 文件 flag 研究

Ribo-seq 质控之 reads 分布特征

Julia 笔记之字典

Cell 文章代码重改复现测试

Julia 笔记之数组

◀...

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存