unmapbam to fastq和自己的annovar格式~~~

#!perl
use warnings;
use strict;

die "perl $0 <unmaped.bam> <outprefix>\n" if @ARGV != 2;

my %hash;
open BAM, "samtools view $ARGV[0] |" or die $!;
while(<BAM>)
{
	chomp;
	my @tmp = split;
	push @{$hash{$tmp[0]}}, "$tmp[1]\t$tmp[9]\t$tmp[10]";
}

open OUT1, "| gzip > $ARGV[1]_1.fq.gz" or die $!;
open OUT2, "| gzip > $ARGV[1]_2.fq.gz" or die $!;
foreach(keys %hash)
{
	next if(@{$hash{$_}} == 1);
	foreach my $i(@{$hash{$_}})
	{
		my @str = split /\t/, $i;
		if($str[0] == 69)
		{
			print OUT1 "\@$_/1\n$str[1]\n+\n$str[2]\n";
		}elsif($str[0] == 133){
			print OUT2 "\@$_/2\n$str[1]\n+\n$str[2]\n";
		}else{
			last;
		}
	}
}

#!perl
use warnings;
use strict;

die "perl $0 <VCF>
Note: VCF to new annovar format.\n" if(@ARGV != 1);

my (@lines, @names, @out);
open VCF, $ARGV[0] or die $!;
while(<VCF>)
{
	chomp;
	next if(/^##/);
	@lines = split;
	next if($lines[4] =~ /,/);
	if(/^#{1}/)
	{
		@names = @lines[9..$#lines];
		next;
	}
	my (@type, @num);
	for(my $i = 0; $i < @names; $i ++)
	{
		my @hh = split /:/, $lines[$i + 9];
		$hh[0] =~ s/\//\|/;
		push @type, $hh[0];
		if(defined $hh[1])
		{
			push @num, "$hh[1]";
		}else{
			push @num, ".,.";
		}
	}
	my $t = join "\t", @type;
	my $n = join "\t", @num;
	if(length($lines[3]) > 1)
	{
		my $del = length($lines[3]) - 1;
		my $start = $lines[1] + 1;
		my $end = $lines[1] + $del;
		my @str = split //, $lines[3];
		shift @str;
		my $change = join "", @str;
		push @out, "$lines[0]\t$start\t$end\t$change\t-\tDeletion\t$lines[2]\t$lines[5]\t$t\t$n\n";
	}elsif(length($lines[4]) > 1){
		my @str = split //, $lines[4];
		shift @str;
		my $change = join "", @str;
		push @out, "$lines[0]\t$lines[1]\t$lines[1]\t-\t$change\tInsertion\t$lines[2]\t$lines[5]\t$t\t$n\n";
	}else{
		push @out, "$lines[0]\t$lines[1]\t$lines[1]\t$lines[3]\t$lines[4]\tSNP\t$lines[2]\t$lines[5]\t$t\t$n\n";
	}
}
my @ts = map {$_ . "_type"} @names;
my @rs = map {$_ . "_read"} @names;
my $t = join "\t", @ts;
my $r = join "\t", @rs;
print "#chr\tstart\tend\tref\tmut\tvariation_type\tdatabase\tquality\t$t\t$r\n";
foreach(@out)
{
	print "$_";
}
时间: 2024-08-03 22:04:04

unmapbam to fastq和自己的annovar格式~~~的相关文章

Spark直接读入fastq格式的数据

输入文件: fastq格式 输出结果: kmer的频数和对应的kmer类型 系统环境Ubuntu单机版17.01 spark版本2.7 此次测试主要用到了RDD的函数foreach和zipWithIndex,zipWithIndex这个函数是可以直接对gz文件进行操作的 python的主要通过lambda函数来进行操作 测试代码如下 fastq='/home/yueyao/Spark/00.data/reads.left.fq.gz' fq_rdd = sc.textFile(fastq) fq

Annovar注释说明【转载自http://blog.csdn.net/u013816205/article/details/51262289】

ANNOVAR是一个perl编写的命令行工具,能在安装了perl解释器的多种操作系统上 执行.允许多种输入文件格式,包括最常被使用的VCF格式.输出文件也有多种格式,包括注释过的VCF文件.用tab或者逗号分隔的text文件. ANNOVAR能快速注释遗传变异并预测其功能.类似的variants注释软件还有 VEP, snpEff, VAAST, AnnTools等等. ANNOVAR支持三种不同形式的注释: gene-based, region-based 和filter-based. 这三种

annovar对人类基因组和非人类基因组variants注释流程

部分翻译:Hui Y, Kai W. Genomic variant annotation and prioritization with ANNOVAR and wANNOVAR[J]. Nature Protocols, 2015, 10(10). 此文只是用于作者和所有初接触annovar软件者分享交流.更深入学习请仔细阅读全文.转载请注明. ANNOVAR是一个perl编写的命令行工具,能在安装了perl解释器得多种操作系统上执行.允许多种输入文件格式,包括最常被使用的VCF格式.输出文

ANNOVAR工具

annovar软件组件介绍之一——table_annovar.pl(译) 对于初学者,使用ANNOVAr的最简单方法是使用table_annovar.pl程序,该程序采用输入突变文件(例如,VCF文件)并生成带有多个制表符分隔的输出文件,每个列表示一组注释.另外,如果输入是VCF文件,则程序还生成新的VCF输出文件,其中INFO字段填充有注释信息. 假设我们已经下载了ANNOVAR包并使用tar zxvf annovar.latest.tar.gz解压缩包.您将看到bin/目录包含有多个.pl后

ANNOVAR

第一步:下载Annovar 上Annovar官网下载(http://annovar.openbioinformatics.org/en/latest/user-guide/download/),现在要邮件注册后才能下载.邮件注册后会给你最新版软件下载地址, 下载后文件为annovar.latest.tar.gz. 第二步:安装Annovar linux系统下用该命令解压 tar zxvf annovar.latest.tar.gz 解压后生成annovar文件夹,里面有6个perl脚本程序和两个

sam/bam格式

一)Sam (Sequence Alignment/Map) ------------------------------------------------- 1) SAM 文件产生背景 随着Illumina/Solexa, AB/SOLiD and Roche/454测序技术不断的进步,各种比对工具产生,被用来高效的将reads比对到参考基因组.因为这些比对工具产生不同格式的文件,导致下游分析比较困难,因此一个通用的格式可以提供一个很好的接口用于链接比对与下游分析(组装,变异等,基因分型等)

sam格式详细说明

原文链接 https://www.jianshu.com/p/386f520e5de1 The SAM Format Specification(sam格式说明) 1 The SAM Format Specification sam是一种序列比对后的输出格式,以tab作为分隔符,包括头部信息和比对信息.其中头部信息必须在比对信息之前.头部信息的开头是@,但是比对行不是.每一个比对行有11个重要的比对信息元素,如果比对位置和校准信息等. 1.1 An example FCC0YG3ACXX:2:1

PAT 1006 换个格式输出 C语言

让我们用字母B来表示"百".字母S表示"十",用"12...n"来表示个位数字n(<10),换个格式来输出任一个不超过3位的正整数.例如234应该被输出为BBSSS1234,因为它有2个"百".3个"十".以及个位的4. 输入格式:每个测试输入包含1个测试用例,给出正整数n(<1000). 输出格式:每个测试用例的输出占一行,用规定的格式输出n. 输入样例1: 234 输出样例1: BBSSS1

Ubuntu下安装deb格式的软件

首先在网页上下载用到的软件包deb格式的 然后,在软件包所在的位置打开终端,输入红色的指令 [email protected]:~/下载$ sudo apt install gdebi-core[sudo] tori 的密码: 正在读取软件包列表... 完成正在分析软件包的依赖关系树       正在读取状态信息... 完成       gdebi-core 已经是最新版 (0.9.5.7ubuntu1).升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 14 个软件包未被