primer漏配问题解决
在对之前的ITS数据(454数据)做split时,发现有一些reads没有被匹配上,但是barcode能够完全匹配,虽然之后的primer在中间漏了一个碱基,导致后面的碱基全部误匹配,从而导致这条reads没有被匹配上的问题。
终于解决Qiime的问题后,使用 split_libraries.py 做切分,发现同样有这样的问题,Qiime并没有解决漏匹配的问题。
考虑如果用正常方法去做的话,对较小的异常数据需要花费N倍于正常数据的计算资源(包括硬件资源和运行时间),对于这个问题来说是非常不明智的。
由于primer长度在20左右,我的解决办法是,取末端6个碱基,在reads的这6个碱基相应位置左移1-2位,作为漏匹配1-2位的替代处理,这样既解决了漏匹配的问题,而且还能够使原正常的数据匹配速度进一步加快。
#!/usr/bin/perl
use strict; my $usage = "usage:\nsplit.pl\tmapfile\t.fa_file\toutprefix\n";
die $usage unless @ARGV==; my $mapfile = shift @ARGV;
my $fafile = shift @ARGV;
my $outprefix = shift @ARGV; my %barcode;my $barcode_length = ;
my %primer;my $primer_length = ;
open MAP,$mapfile or die $!;
while(<MAP>){
chomp;
next if /^#/;
my @a = split /\s+/;
$barcode{$a[]} = $a[];
$barcode_length = length($a[]) unless $barcode_length;
die "barcode length do not match!" unless ($barcode_length == length($a[]));
$primer{$a[]} = $a[];
$primer_length = length($a[]) unless $primer_length;
die "primer length do not match!" unless ($primer_length == length($a[])); print "$barcode_length\t$primer_length\n";
}
close MAP; my %fa;
open FA,$fafile or die $!;
$/ = ">";
<FA>;
while(<FA>){
chomp;
my @a = split /\n/;
my $id = shift @a;
my $seq = join ("",@a);
@a = split (/\s+/,$id);
$id = shift @a;
$fa{$id} = $seq;
}
$/ = "\n";
close FA; open OUT,">$outprefix.fna" or die $!;
foreach my $id (sort keys %fa){
foreach my $sample (sort keys %barcode){
my $seq = substr($fa{$id},,$barcode_length);# print "$seq\n";
if ($barcode{$sample} eq $seq){
# print "barcode matched\n";
my $pri0 = substr($fa{$id},$barcode_length+$primer_length-,);
my $pri1 = substr($fa{$id},$barcode_length+$primer_length-,);
my $pri2 = substr($fa{$id},$barcode_length+$primer_length-,);
my $pri = substr($primer{$sample},$primer_length-,);
if ($pri0 eq $pri){
my $s = substr($fa{$id},$barcode_length+$primer_length,length($fa{$id})-$barcode_length-$primer_length);
print OUT ">$sample\t$id\n$s\n";
last;
}
if($pri1 eq $pri){ my $s = substr($fa{$id},$barcode_length+$primer_length-,length($fa{$id})-$barcode_length-$primer_length+);
print OUT ">$sample\t$id\n$s\n";
last;
}
if($pri2 eq $pri){
my $s = substr($fa{$id},$barcode_length+$primer_length-,length($fa{$id})-$barcode_length-$primer_length+);
print OUT ">$sample\t$id\n$s\n";
last;
}
}
}
}
close OUT;
primer漏配问题解决的更多相关文章
- 454ITS数据按barcode和primer分类程序v1.0
不知道有什么好办法可以让primer允许漏配,现在仅仅是允许错配,还是有一些没有配上,454数据有些primer漏配了一些,下一步解决这个问题 #include <cstdio> #inc ...
- Batsing的网页编程规范(HTML/CSS/JS/PHP)
特别注意!!!我这里的前端编程规范不苟同于Bootstrap的前端规范. 因为我和它的目的不同,Bootstrap规范是极简主义,甚至有些没有考虑到兼容性的问题. 我的规范是自己从编程实践中总结出来的 ...
- CCIE-交换路由复习笔记
交换 考点: 1.trunk link(基础) 2.vtp 3.vlan 4.stp rstp mstp 5.hsrp vrrp glbp 6.ec Trunk link: 修改封装模式 802.1q ...
- 网络基础Cisco路由交换四
NAT及静态转换 概述(NAT:网络地址转化) 作用: 通过将内部网络的私有ip地址翻译成全球唯一的公网ip地址, 使内部网络可以连接到互联网等外部网络上. NATA的特性 优点: 节省公有合法ip地 ...
- 【原创】微服务为什么一定要用docker
引言 早在2013年的时候,docker就已经发行,然而那会还是很少人了解docker.一直到2014年,Martin Fowler提出了微服务的概念,两个不相干的技术终于走在了一起,创造了今天的辉煌 ...
- Unity项目中的资源管理
这是我在2017金山技术开放日分享的部分内容.从贴图资源格式配置的介绍开始,引申出资源配置工具,最后再谈谈一整套项目资源管理方案.在GitHub上可以获取到资源配置工具的代码,是基于下面理念的一份简单 ...
- CDR话单主要字段介绍
l Time of call connection RRC连接时的时间,格式:yyyy年mm月dd日hh时mm分ss秒 l Call Setup Time per sections 呼叫建立时长 ...
- 指针-AC自动机
大家都不喜欢指针,但是这个AC自动机仿佛不用不行…… 先引用我最喜欢的话:“AC自动机,不是自动AC的机器.” 如果写不好还可能一直WA AC自动机是KMP与Trie树的完美结合,适用于多字符串匹配, ...
- 单点登录之 CAS SSO 从入门到精通(第一天)
转自:http://blog.csdn.net/lifetragedy/article/details/43817903 啊......it's quite a long time. 好久没更新博客了 ...
随机推荐
- velocity 是如何实现内省 屏蔽反射的
velocity的标签中支持$abc 这样的语法,如果abc是一个对象,则写模板时就可以利用它来进行反射,调用一些危险的方法,如 $vm.getClass().newInstance() #set ( ...
- 用tortoiseGit管理GitHub项目代码(完整教程)
一.为什么要写这篇博客呢,因为在一开始用tortoiseGit来管理项目的时候,在百度上找了很多教程,但是感觉说的都不是很全,有些东西以及操作没写清楚,所以想写一片比较完整用tortoiseGit管理 ...
- 基于跳跃表的 ConcurrentSkipListMap 内部实现(Java 8)
我们知道 HashMap 是一种键值对形式的数据存储容器,但是它有一个缺点是,元素内部无序.由于它内部根据键的 hash 值取模表容量来得到元素的存储位置,所以整体上说 HashMap 是无序的一种容 ...
- Loadrunner 中时间戳函数 web_save_timestamp_param(时间返回数值)
web_save_timestamp_param("tStamp", LAST); lr_output_message("Moon1:%s",lr_eval_s ...
- 【Hdu3652】B-number(数位DP)
Description 题目大意:求小于n是13的倍数且含有'13'的数的个数. (1 <= n <= 1000000000) Solution 数位DP,题目需要包含13,且被13整除, ...
- MapReduce编程(一) Intellij Idea配置MapReduce编程环境
介绍怎样在Intellij Idea中通过创建mavenproject配置MapReduce的编程环境. 一.软件环境 我使用的软件版本号例如以下: Intellij Idea 2017.1 Mave ...
- Android 高仿QQ5.2双向側滑菜单DrawerLayout实现源代码
Android 高仿QQ5.2双向側滑菜单DrawerLayout实现源代码 左右側滑效果图 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a ...
- Javascript实现简单的下拉二级菜单
在线演示;http://jsfiddle.net/Web_Code/ThhbG/embedded/result/ <span style="font-size:14px;"& ...
- Android-Volley网络通信框架(ImageRequest,ImageLoader,NetWorkImageView)
1.回想 上篇已经学习了,RequestQueue , StringRequest ,JsonObjectRequest 的使用 2.重点 (1)Volley请求图片的三种方式 (2)ImageRe ...
- IntelliJ Idea设置护眼浅绿色背景方法
老版本的设置位置 新版本的设置位置不一样(下图新版本为2017.5.4)的设置位置