perl novel可变剪接识别(1)

2024-01-05 15:32
文章标签 识别 可变 perl novel 剪接

本文主要是介绍perl novel可变剪接识别(1),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

想把之前做的可变剪接模型给大家说一下,看看有什么遗漏的没有,由于当时想法比较复杂,所以程序有点多,大致分三个部分来进行。

首先,拿到的结果是tophat给出的junction的数据,其次博主使用的数据库是ensembl的数据库,gencode也可以,先得到已知的参考junction:

#!/usr/bin/env perl
use warnings;
use strict;die "perl $0 <junction.bed> <ensembl|gencode> <bp>\n" unless @ARGV eq 3; 
&showtime("Start...");
my $in = shift;
my %gene;
open GTF, $in or die $!;
while(<GTF>){chomp;my @tmp = split;next if(/^#/);my ($gid) = $_ =~ /gene_name "([^;]+)";/;my ($tid) = $_ =~ /transcript_id "([^;]+)";/;if($tmp[2] =~ /exon/){push @{$gene{$gid}{$tid}{$tmp[0]}}, "$tmp[3]\t$tmp[4]";}
}
close GTF;my %hash;
foreach my $g(keys %gene){foreach my $t(keys %{$gene{$g}}){foreach my $chr(keys %{$gene{$g}{$t}}){my $flag = 0;my $end;foreach my $str(sort @{$gene{$g}{$t}{$chr}}){if($flag == 0){$end = (split /\t/, $str)[1];$flag = 1;}else{my $f_end = (split /\t/, $str)[0];$hash{$chr}{$end}{$f_end} = 0;$end = (split /\t/, $str)[1];}}}}
}
&showtime("GTF is done..."); #上面两步将所有的EXON连接方式给存起来my $junc = shift;
my ($id) = $junc =~ /^(\w+)_alignment/;
open OUT1, ">$id.novel" or die $!;
open OUT2, ">$id.ref" or die $!;
my $bp = shift; #设置精确范围,可以在参考junction的范围内都识别成已知的剪接,博主设置为0为了精确
$bp ||= 0;
open JUNC, $junc or die $!;
while(<JUNC>){chomp;next if($. == 1);my @tmp = split;my $flag = 0;my ($block_s, $block_e) = (split /,/, $tmp[10])[0,1];my $intron_s = $tmp[1] + $block_s;my $intron_e = $tmp[2] - $block_e + 1;foreach my $s(keys %{$hash{$tmp[0]}}){foreach my $e(keys %{$hash{$tmp[0]}{$s}}){if(abs($intron_s - $s) <= $bp and abs($intron_e - $e) <= $bp){$flag = 1;print OUT2 "$tmp[0]\t$tmp[1]\t$tmp[2]\t$tmp[4]\t$tmp[5]\t$block_s\t$block_e\n";delete $hash{$tmp[0]}{$s}{$e};last;}}}if($flag eq 1){next;}else{print OUT1 "$tmp[0]\t$tmp[1]\t$tmp[2]\t$tmp[4]\t$tmp[5]\t$block_s\t$block_e\n";}}
close JUNC;
&showtime("Junctions is done...");sub showtime(){my ($str) = @_;my $time = localtime;print STDERR "$str\t$time\n";
}

这样就得到两部分数据,已知与新的——新的将进行接下来的处理工作。

这篇关于perl novel可变剪接识别(1)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/573332

相关文章

Perl 特殊变量详解

《Perl特殊变量详解》Perl语言中包含了许多特殊变量,这些变量在Perl程序的执行过程中扮演着重要的角色,:本文主要介绍Perl特殊变量,需要的朋友可以参考下... perl 特殊变量Perl 语言中包含了许多特殊变量,这些变量在 Perl 程序的执行过程中扮演着重要的角色。特殊变量通常用于存储程序的

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

perl的学习记录——仿真regression

1 记录的背景 之前只知道有这个强大语言的存在,但一直侥幸自己应该不会用到它,所以一直没有开始学习。然而人生这么长,怎就确定自己不会用到呢? 这次要搭建一个可以自动跑完所有case并且打印每个case的pass信息到指定的文件中。从而减轻手动跑仿真,手动查看log信息的重复无效低质量的操作。下面简单记录下自己的思路并贴出自己的代码,方便自己以后使用和修正。 2 思路整理 作为一个IC d

Clion不识别C代码或者无法跳转C语言项目怎么办?

如果是中文会显示: 此时只需要右击项目,或者你的源代码目录,将这个项目或者源码目录标记为项目源和头文件即可。 英文如下:

BERN2(生物医学领域)命名实体识别与命名规范化工具

BERN2: an advanced neural biomedical named entity recognition and normalization tool 《Bioinformatics》2022 1 摘要 NER和NEN:在生物医学自然语言处理中,NER和NEN是关键任务,它们使得从生物医学文献中自动提取实体(如疾病和药物)成为可能。 BERN2:BERN2是一个工具,

行为智能识别摄像机

行为智能识别摄像机 是一种结合了人工智能技术和监控摄像技术的先进设备,它能够通过深度学习算法对监控画面进行实时分析,自动识别和分析监控画面中的各种行为动作。这种摄像机在安防领域有着广泛的应用,可以帮助监控人员及时发现异常行为,并采取相应的措施。 行为智能识别摄像机可以有效预防盗窃事件。在商场、超市等公共场所安装这种摄像机,可以通过识别异常行为等情况,及时报警并阻止不安全行为的发生

flutter开发实战-flutter build web微信无法识别二维码及小程序码问题

flutter开发实战-flutter build web微信无法识别二维码及小程序码问题 GitHub Pages是一个直接从GitHub存储库托管的静态站点服务,‌它允许用户通过简单的配置,‌将个人的代码项目转化为一个可以在线访问的网站。‌这里使用flutter build web来构建web发布到GitHub Pages。 最近通过flutter build web,通过发布到GitHu

T1打卡——mnist手写数字识别

🍨 本文为🔗365天深度学习训练营中的学习记录博客🍖 原作者:K同学啊 1.定义GPU import tensorflow as tfgpus=tf.config.list_physical_devices("GPU")if gpus:gpu0=gpus[0]tf.config.experimental.set_memort_groth(gpu0,True) #设置GPU现存用量按需

使用 VisionTransformer(VIT) FineTune 训练驾驶员行为状态识别模型

一、VisionTransformer(VIT) 介绍 大模型已经成为人工智能领域的热门话题。在这股热潮中,大模型的核心结构 Transformer 也再次脱颖而出证明了其强大的能力和广泛的应用前景。Transformer 自 2017年由Google提出以来,便在NLP领域掀起了一场革命。相较于传统的循环神经网络(RNN)和长短时记忆网络(LSTM), Transformer 凭借自注意力机制