免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2525 | 回复: 8
打印 上一主题 下一主题

请教~去除首末字符 thanks~ [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-07-03 22:08 |只看该作者 |倒序浏览
126-275  (1202571-1202720)   98% ->;
276-356  (1203675-1203755)   100% ->;
357-438  (1203984-1204065)   95%

     126   CGGACAACAGCGGACTCCGAGACCAGTGGATCTCGGCAAACC
               ||  |||||||||||||||||||||| |||||||||||||||||||||||
1202571CGCCCAACAGCGGACTCCGAGACCAGCGGATCTCGGCAAACC   
   ...................... .....................................................
    408    CGGCAGGTGTTGGGGGCGCAGAGGCGGCGAG
               |||||||||||||||| ||  |||| |||||
1204035CGGCAGGTGTTGGGGGAGCGCAGGCAGCGAG

在类似的这个序列中我怎么把开头和结尾上下没有匹配上的字符去掉?
其中中间的“||||"表示上下对的上,中间的空格表示没有对上。
谢谢啦~

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
2 [报告]
发表于 2003-07-04 08:05 |只看该作者

请教~去除首末字符 thanks~

不懂你的描述...
麻煩在詳細點說明..

论坛徽章:
0
3 [报告]
发表于 2003-07-04 09:03 |只看该作者

请教~去除首末字符 thanks~

对不起奥~
就是说,在上面的这个序列中,
用下行的字符代替上面的字符,但要把开头没有对齐的CGC去掉,同时也要把末尾的AGCGCAGGCAGCGAG这些没有连续对齐的去掉。
最后的结果应该是:CCAACAGCGGACTCCGAGACCAGCGGATCTCGGCAAACCCGGCAGGTGTTGGGGG

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
4 [报告]
发表于 2003-07-04 10:07 |只看该作者

请教~去除首末字符 thanks~

我不是搞生物化學的..
所以實在有點難以理解你的說法...
CGGACAACAGCGGACTCCGAGACCAGTGGATCTCGGCAAACC
CGCCCAACAGCGGACTCCGAGACCAGCGGATCTCGGCAAACC
你是不是要向上面這兩行一樣...
把不一樣的char拿掉..剩下
CGCAACAGCGGACTTCCGAGACCAGGGATCTCGGCAAACC

论坛徽章:
0
5 [报告]
发表于 2003-07-04 11:12 |只看该作者

请教~去除首末字符 thanks~

谢谢apile奥^_^

可能是我表达的有问题吧~

你理解的稍微有点偏差。(中间的没有对齐的不用处理,只处理开始和结尾就可以D)
eg:
CGGACAACAGCGGACTCCGAGACCAGTGGATCTCGGCAAACCTGA
CGCCCAACAGCGGACTCCGAGACCAGCGGATCTCGGCAAACCGAT
最后想得到的结果为:(去掉头CGCC和尾GAT就可,中间的不处理)
            CAACAGCGGACTCCGAGACCAGCGGATCTCGGCAAACC

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
6 [报告]
发表于 2003-07-04 11:15 |只看该作者

请教~去除首末字符 thanks~

懂了.....我想一下...這不會很難...

论坛徽章:
0
7 [报告]
发表于 2003-07-04 11:22 |只看该作者

请教~去除首末字符 thanks~

刚刚我得机子给断电了~

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
8 [报告]
发表于 2003-07-04 11:48 |只看该作者

请教~去除首末字符 thanks~

我不懂生化方面的東西...
你可以試試看...基本上連續相同四個,程式才會認為起始點與終止點有效,
不然你沒辦法知道開頭到底幾個不要....
你可以改$limit的數字成你要的數字..就好了...

剛剛我又作了點修正,把counter歸0


  1. #!/usr/bin/perl
  2. $a="CGGACAACAGCGGACTCCGAGACCAGTGGATCTCGGCAAACCTGA";
  3. $b="CGCCCAACAGCGGACTCCGAGACCAGCGGATCTCGGCAAACCGAT";
  4. #$a="CGGCAGGTGTTGGGGGCGCAGAGGCGGCGAG";
  5. #$b="CGGCAGGTGTTGGGGGAGCGCAGGCAGCGAG";
  6. #---設定至少匹配幾個後,才認為是前面或後面相同的字符
  7. $limit = 4;
  8. #---設定起始點
  9. $start_flag = 99999999;
  10. #---設定終止點
  11. $end_flag   = 99999999;
  12. #--找出起始點,連續匹配$limit個才認為起始點有效
  13. for($i=0;$i<length($a);$i++){
  14.    $c=substr($a,$i,1);
  15.    $d=substr($b,$i,1);
  16.    if($c eq $d){
  17.       $counter++;
  18.       if($start_flag == 99999999){
  19.         $start_flag=$i;
  20.       }
  21.    } else { $counter=0;$start_flag =99999999;}

  22.    last if($counter ==$limit);
  23. }
  24. print "Start INDEX :$start_flag\n";
  25. print "-----------------------\n";
  26. $counter =0;

  27. #--找出終止點,連續匹配$limit個才認為終止點有效
  28. for($i=length($a)-1;$i>;=0;$i--){
  29.    $c=substr($a,$i,1);
  30.    $d=substr($b,$i,1);
  31.    if($c eq $d){
  32.       $counter++;
  33.       if($end_flag == 99999999){
  34.         $end_flag=$i;
  35.       }
  36.    } else { $counter=0;$end_flag =99999999;}

  37.    if($counter ==$limit){
  38.       last;
  39.    }
  40. }
  41. print "END INDEX :$end_flag\n";

  42. $result = substr($b,$start_flag,($end_flag-$start_flag)+1);
  43. print "$a\n";
  44. print "$b\n";
  45. print "$result\n";
复制代码

论坛徽章:
0
9 [报告]
发表于 2003-07-04 14:01 |只看该作者

请教~去除首末字符 thanks~

嗯,我理解你的意思了~
thanks ~
我现在考虑能否通过判断"|||"来确定开头和结尾去除几个字符就可以啦~
(序列很长,有好多行的)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP