免费注册 查看新帖 |

Chinaunix

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

[文本处理] 怎么取数量最多的输出结果 [复制链接]

论坛徽章:
8
技术图书徽章
日期:2013-08-22 11:21:28未羊
日期:2015-01-19 22:22:25巳蛇
日期:2014-08-11 16:53:08子鼠
日期:2014-05-29 09:04:44摩羯座
日期:2014-04-11 14:15:07丑牛
日期:2014-01-24 12:41:28金牛座
日期:2013-11-21 17:38:28射手座
日期:2015-01-21 08:50:32
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-01-06 17:35 |只看该作者 |倒序浏览
ChrNew1 39017   G       1       A       i
ChrNew1 39018   C       1       .       i
ChrNew1 39019   T       1       .       i
ChrNew1 39020   T       1       AAC      i
ChrNew1 39021   T       1       ,       i
ChrNew1 39022   G       1       A       i
这种文件;1、如果第五列包含.或者,表示匹配直接输出和第三列的ref碱基即可;
2、如果第五列有这两种符号同时还有其他的碱基,仍然输出ref碱基;
3、如果没有逗号句号符号,出现“ATCGNatcgn”则比较“A+a”“T+t”“C+c”“G+g”的数量,取数量最多的输出结果
4、如果第五列为空则输出N
怎么搞,第三步不会呀
比如上面的输出要是
A
C
T
A
T
A

论坛徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
2 [报告]
发表于 2014-01-06 17:37 |只看该作者
楼主,你的基因突变怪兽还没研究出来吗?

论坛徽章:
8
技术图书徽章
日期:2013-08-22 11:21:28未羊
日期:2015-01-19 22:22:25巳蛇
日期:2014-08-11 16:53:08子鼠
日期:2014-05-29 09:04:44摩羯座
日期:2014-04-11 14:15:07丑牛
日期:2014-01-24 12:41:28金牛座
日期:2013-11-21 17:38:28射手座
日期:2015-01-21 08:50:32
3 [报告]
发表于 2014-01-06 17:40 |只看该作者
回复 2# Herowinter


    你说对了

论坛徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
4 [报告]
发表于 2014-01-06 17:41 |只看该作者
大概看懂了,但是不是给多点数据?
还有数量相等时按ATCGN顺序?

论坛徽章:
8
技术图书徽章
日期:2013-08-22 11:21:28未羊
日期:2015-01-19 22:22:25巳蛇
日期:2014-08-11 16:53:08子鼠
日期:2014-05-29 09:04:44摩羯座
日期:2014-04-11 14:15:07丑牛
日期:2014-01-24 12:41:28金牛座
日期:2013-11-21 17:38:28射手座
日期:2015-01-21 08:50:32
5 [报告]
发表于 2014-01-06 17:45 |只看该作者
回复 4# Herowinter

ATCGNatcgn是除了,.两种字符,还可能会有A、T、C、G、N、a、t、c、g、n这十种字符
    就是如果$5~aaaA表示A=5
ChrNew1 39020   T       1       AAC      i
在这个例子里面,第五列出现AAC,表示a两个,c一个,那就输出A

论坛徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
6 [报告]
发表于 2014-01-06 18:06 |只看该作者
回复 1# huang6894

从现在的数据看,可以实现功能,还有,
我不会把ATCGN写一个循环,很傻地重复了5次。
  1. awk '{if(!$5){print "N"}else if($5~/\.|,/){print $3}else{a[gsub(/A|a/,"A",$5)]="A";a[gsub(/T|t/,"T",$5)]="T";a[gsub(/C|c/,"C",$5)]="C";a[gsub(/G|g/,"G",$5)]="G";a[gsub(/N|n/,"N",$5)]="N";l=asorti(a,b);print a[b[l]]}} ' i

  2. A
  3. C
  4. T
  5. A
  6. T
  7. A
复制代码

论坛徽章:
8
技术图书徽章
日期:2013-08-22 11:21:28未羊
日期:2015-01-19 22:22:25巳蛇
日期:2014-08-11 16:53:08子鼠
日期:2014-05-29 09:04:44摩羯座
日期:2014-04-11 14:15:07丑牛
日期:2014-01-24 12:41:28金牛座
日期:2013-11-21 17:38:28射手座
日期:2015-01-21 08:50:32
7 [报告]
发表于 2014-01-06 18:10 |只看该作者
回复 6# Herowinter


    我也这么做了,不过我更傻,重复了10次

论坛徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
8 [报告]
发表于 2014-01-06 18:20 |只看该作者
回复 7# huang6894

改进了下,写了个循环。
  1. awk '{if(!$5){print "N"}else if($5~/\.|,/){print $3}else{split("ATCGN",c,"");for(i in c){s=gsub(c[i],c[i],$5);s+=gsub(tolower(c[i]),tolower(c[i]),$5);a[s]=c[i]};l=asorti(a,b);print a[b[l]]}}' i

复制代码

论坛徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
9 [报告]
发表于 2014-01-06 18:25 |只看该作者
个人感觉当 A和T都出现2次这种场景下,
输出顺序不能保证。

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
10 [报告]
发表于 2014-01-06 18:59 |只看该作者
回复 1# huang6894

$ awk '$5==""{print"N";next}$5~/[.,]/{print $3;next}{t=split(toupper($5),s,"");delete a;for(max=n=0;n++<t;)if(++a[s[n]]>max)a[++max]=s[n];print a[max]}' FILE
A
C
T
A
T
A


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP