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. 好久没更新博客了 ...
随机推荐
- cookie解决跨域问题
v一.前言 随着项目模块越来越多,很多模块现在都是独立部署.模块之间的交流有时可能会通过cookie来完成.比如说门户和应用,分别部署在不同的机器或者web容器中,假如用户登陆之后会在浏览器客户端写入 ...
- centos7.0安装教程
CentOS(Community Enterprise Operating System,中文意思是:社区企业操作系统)是Linux发行版之一,它是来自于Red Hat Enterprise Linu ...
- centOS 搭建pipelineDB docs
#下载docs git clone https://github.com/pipelinedb/docs.git #安装python-sphinx &python-dev yum instal ...
- 两年JAVA程序员的面试总结
前言 工作两年左右,实习一年左右,正式工作一年左右,其实挺尴尬的,高不成低不就.因此在面试许多公司,找到了目前最适合自己的公司之后.于是做一个关于面试的总结.希望能够给那些依旧在找工作的同学提供帮助. ...
- 【luogu1220】关路灯
https://www.luogu.org/problem/show?pid=1220 假如当前老张在a处跑去关掉b处的路灯,那么a与b之间的路灯都可以顺手关掉.因此每一时刻关掉的路灯必定是连续的. ...
- Jarvis OJ - [XMAN]level3 - Writeup——ret2libc尝试
这次除了elf程序还附带一个动态链接库 先看一下,很一般的保护 思路分析 在ida中查看,可以确定通过read函数输入buf进行溢出,但是并没有看到合适的目标函数 但是用ida打开附带的链接库,可以看 ...
- ssm整合(基于xml配置方式)
本文是基于xml配置的方式来整合SpringMVC.Spring和Mybatis(基于注解的方式会再写一篇文章),步骤如下: (1)首先自然是依赖包的配置文件 pom.xml <project ...
- Hadoop 少量map/reduce任务执行慢问题
最近在做报表统计,跑hadoop任务. 之前也跑过map/reduce但是数据量不大,遇到某些map/reduce执行时间特别长的问题. 执行时间长有几种可能性: 1. 单个map/reduce任务处 ...
- HDOJ 4251 The Famous ICPC Team Again
划分树水题..... The Famous ICPC Team Again Time Limit: 30000/15000 MS (Java/Others) Memory Limit: 3276 ...
- 获取AJAX加载的内容
1.有些网页内容使用AJAX加载,AJAX一般返回的是JSON,直接对AJAX地址进行post或get,就返回JSON数据了. 2.用抓包工具分析https://movie.douban.com/j/ ...