其他
FASTX 处理 fasta 和 fastq 文件
万物终归尘土
1引言
今天分享个 Julia 包 FASTX 用来处理 fasta
和 fastq
文件。
说明文档地址:
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群,欢迎加入下载。
群二维码:
老俊俊微信:
知识星球:
所以今天你学习了吗?
今天的分享就到这里了,敬请期待下一篇!
最后欢迎大家分享转发,您的点赞是对我的鼓励和肯定!
如果觉得对您帮助很大,赏杯快乐水喝喝吧!
往期回顾
◀...