加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl函数substr

发布时间:2020-12-15 23:43:56 所属栏目:大数据 来源:网络整理
导读:把DNA序列经过整合成一行,然后去除所有的空白字符以后,又把$DNA通过split函数变成了数组,然后进行统计,那有没有更好的办法呢? 其实perl里有一个函数,substr。 我们先来看一看这个函数的用法,substr是针对一个大字符串的操作符(The substr function w
把DNA序列经过整合成一行,然后去除所有的空白字符以后,又把$DNA通过split函数变成了数组,然后进行统计,那有没有更好的办法呢?

其实perl里有一个函数,substr。

我们先来看一看这个函数的用法,substr是针对一个大字符串的操作符(The substr function works with only a part of a larger string )言外之意就是对一个很长的字符串,进行片段化处理,取其中的一部分。我们这里用到的就是这个特性。

$little_string =substr($large_string,$start_position,$length)

$小片段=substr($大片段,$你要截取的小片段的起始位置,$你要截取的长度)

我们这里为了统计DNA中各种碱基的数量,所以要处理的字符串是一个碱基,所以我们要把$length设置为1。这样才能够满足我们的需求。

下面我们把修改过的代码写下:

[plain] view plain copy print ?
  1. #下面的程序是用来计算一段DNA序列中ATGC的数量的??
  2. ??
  3. #首先定义四种碱基的数量为0??
  4. $count_A=0;??
  5. $count_T=0;??
  6. $count_C=0;??
  7. $count_G=0;??
  8. #首先要先把序列进行合并成一行??
  9. ??
  10. #先确定所要处理的文件的路径及文件名(在windows系统下面要按照这样的例子写??
  11. #f:perldata.txt??
  12. print?"please?input?the?Path?just?like?this?f:\perl\data.txtn";??
  13. chomp($dna_filename=<STDIN>);??
  14. #打开文件??
  15. open(DNAFILENAME,$dna_filename)||die("can?not?open?the?file!");??
  16. #将文件赋予一个数组??
  17. @DNA=<DNAFILENAME>;??
  18. ??
  19. #以下两步要把所有的行合并成一行,然后去掉所有的空白符??
  20. $DNA=join('',@DNA);??
  21. $DNA=~s/s//g;??
  22. ??
  23. ??
  24. #然后依次读取字符串的元素,并对四种碱基的数量进行统计??
  25. for?($position=0;$position<length?$DNA;++$position)??
  26. {??
  27. ????$base=substr($DNA,$position,1);??
  28. ????if?($base?eq?'A')??
  29. ????{??
  30. ????????$count_A=$count_A+1;??
  31. ????}??
  32. ????elsif?($base?eq?'T')??
  33. ????{??
  34. ????????$count_T=$count_T+1;??
  35. ????}??
  36. ????elsif?($base?eq?'C')??
  37. ????{??
  38. ????????$count_C=$count_C+1;??
  39. ????}??
  40. ????elsif?($base?eq?'G')??
  41. ????{??
  42. ????????$count_G=$count_G+1;??
  43. ????}??
  44. ????else??
  45. ????{??
  46. ????????print?"errorn"??
  47. ????}??
  48. }??
  49. #输出最后的结果??
  50. print?"A=$count_An";??
  51. print?"T=$count_Tn";??
  52. print?"C=$count_Cn";??
  53. print?"G=$count_Gn";??
  54. ??
  55. ??????



得到的结果如下:

[plain] view plain copy print ?
  1. F:&;perla.pl??
  2. please?input?the?Path?just?like?this?f:perldata.txt??
  3. f:perldata.txt??
  4. error??
  5. A=40??
  6. T=17??
  7. C=27??
  8. G=24??
  9. ??
  10. F:&;?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读