bam格式转换为Fastq/Fasta格式

bam格式转换为Fastq/Fasta格式

  1. Samtools Fastq
  2. GATK SamToFastq
  3. Bedtools bamtofastq

举例说明,比如说我们现在有一个转录组比对文件D1_D1.sort.bam:

samtools view -H D1_D1.sort.bam | tail
@SQ	SN:19	LN:58617616
@SQ	SN:20	LN:64444167
@SQ	SN:21	LN:46709983
@SQ	SN:22	LN:50818468
@SQ	SN:X	LN:156040895
@SQ	SN:Y	LN:57227415
@SQ	SN:MT	LN:16569
@RG	ID:D1_D1_D1	PL:illumina	PU:D1	LB:D1	SM:D1	CN:BGI
@PG	ID:bwa	PN:bwa	VN:0.7.10-r789	CL:/home/lixf/RNA_module_V1.0/Alignment/Alignment_BWA/bin/bwa mem -t 4 -a -R @RG\tID:D1_D1_D1\tPL:illumina\tPU:D1\tLB:D1\tSM:D1\tCN:BGI /data_center_11/Project/wenpp/RNA/01_RY20190826D002_RNAref/prepare/Homo_sapiens.GRCh38.dna.toplevel.fa /data_center_11/Project/wenpp/RNA/01_RY20190826D002_RNAref/01.deal_reads/process/Filter_SOAPnuke/D1/D1/D1_1.fq.gz /data_center_11/Project/wenpp/RNA/01_RY20190826D002_RNAref/01.deal_reads/process/Filter_SOAPnuke/D1/D1/D1_2.fq.gz
@PG	ID:samtools	PN:samtools	PP:bwa	VN:1.12	CL:samtools view -H D1_D1.sort.bam

从@PG可以看出来比对软件是BWA,这是一个与hg38 toplevel基因组序列比对后产生的,根据染色体上位置进行排序的BAM文件。那么如果我们要与不同的基因组序列进行比对,比如更换基因组序列的版本为hg19,就需要将BAM文件还原成原来的fastq文件,而从上述数据可以看出,原始测序应该是一个双端测序文件,那么我们应该转换后得到的是两个fastq文件。

Samtools Fastq

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要从 BAM 比对文件中提取某个位置的 FASTA 序列,可以使用 samtools 工具。具体流程如下: 1. 安装 samtools 工具: ``` # 使用 conda 安装 conda install -c bioconda samtools ``` 2. 从 BAM 文件中提取指定位置的 reads: ``` samtools view -h input.bam chr:start-end > output.sam ``` 其中,`chr` 是染色体名,`start` 和 `end` 是需要提取的位置。这条命令将会把包含指定位置的 reads 提取出来,并保存到 output.sam 文件中。 3. 将 SAM 文件换为 BAM 文件: ``` samtools view -S -b output.sam > output.bam ``` 4. 使用 bedtools 工具将 BAM 文件换为 FASTA 文件: ``` bedtools bamtofastq -i output.bam -fq output.fq ``` 这条命令将会把 output.bam 文件中的 reads 换为 FASTQ 格式,并保存到 output.fq 文件中。 5. 使用 seqtk 工具将 FASTQ 文件换为 FASTA 文件: ``` seqtk seq -a output.fq > output.fasta ``` 这条命令将会把 output.fq 文件中的 reads 换为 FASTA 格式,并保存到 output.fasta 文件中。 注意:上述命令中的参数需要根据具体情况进行修改。 代码实现: ``` # 导入必要的包 import os # 定义 bam 文件和输出文件名 bam_file = "input.bam" output_file = "output.fasta" # 定义需要提取的位置 chrom = "chr1" start = 1000 end = 2000 # 使用 samtools 工具提取指定位置的 reads samtools_command = "samtools view -h {0} {1}:{2}-{3} > output.sam".format(bam_file, chrom, start, end) os.system(samtools_command) # 将 SAM 文件换为 BAM 文件 os.system("samtools view -S -b output.sam > output.bam") # 使用 bedtools 工具将 BAM 文件换为 FASTQ 文件 os.system("bedtools bamtofastq -i output.bam -fq output.fq") # 使用 seqtk 工具将 FASTQ 文件换为 FASTA 文件 os.system("seqtk seq -a output.fq > {0}".format(output_file)) # 删除中间文件 os.remove("output.sam") os.remove("output.bam") os.remove("output.fq") ``` 输出的 FASTA 文件格式如下: ``` >read1 ATCG... >read2 GCTA... ... ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值