gff文件转入mysql_gff文件提取cds并对照

这是一个Perl脚本,用于从GFF文件中读取数据,并根据输入参数提取特定基因的CDS(编码序列)信息。脚本首先解析GFF文件,然后对比输入的基因名称、起始位置和结束位置,如果符合条件,将打印出相应的基因编号、ID、名称以及CDS的start和end标记。
摘要由CSDN通过智能技术生成

1 #!/usr/bin/perl

2

3 use strict;

4 use warnings;

5

6 my $gff = $ARGV[0];my %cut = &cut($gff);

7

8 my $gene_number = $ARGV[1];my $gene_id = $ARGV[2];my $gene_name = $ARGV[3];my $start = $ARGV[4];my $end = $ARGV[5];

9

10 foreach my $key_1(keys %cut)

11 {

12 my $hash_2 = $cut{$key_1};

13

14 foreach my $key_2(keys %$hash_2)

15 {

16 my @arr = $hash_2 -> {$key_2};

17

18 # print "$key_1,$key_2,$arr[0][0],$arr[0][1]\n";

19

20 if($key_1 eq $gene_name)

21 {

22

23

24 if($arr[0][0] <= $start && $arr[0][1] >= $start )

25 {

26 if($start+30>=$arr[0][1])

27 {

28 print "$gene_number\t$gene_id\t$gene_name\t$start".'-'."$end\tstart:exon$key_2\n";

29 }

30 }

31 if($arr[0][0] <= $end && $arr[0][1] >= $end )

32 {

33 if($end-30>=$arr[0][0])

34 {

35 print "$gene_number\t$gene_id\t$gene_name\t$start".'-'."$end\tend:exon$key_2\n";

36 }

37 }

38 }

39 }

40 }

41

42

43 #############sub################

44

45 sub cut

46 {

47 my %gene;

48

49 my $exon = 1;my $start = 0;my $length = 0;

50

51 my $gff = shift;open GFF,"$gff";

52

53 while(my $line = )

54 {

55 chomp $line;

56

57 my @q = split /\s/,$line;

58

59 if($q[2] =~ /mRNA/)

60 {

61 $exon = 1;$start = $q[3];$length = 0;

62 }

63 elsif($q[2] =~ /CDS/)

64 {

65 $q[8] =~ /Parent=(.*);S/m;my $key = $1;

66

67 my $new_length = $q[4]-$q[3];

68

69 $exon =~/(\w*)/; $gene{$key}{$1} = [$length+1,$length+$new_length];

70

71 $exon++; $length += $new_length;

72 }

73 }

74 return %gene;

75 }

标签:arr,gff,对照,start,length,key,cds,gene,my

来源: https://www.cnblogs.com/yuanjingnan/p/11087860.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值