Kmer 作业的shell范例

输入:
程序 K值 序列文件
 
需求:
1、对于给定序列文件,按照K值进行分割,分割成每K个字符一组。
如:
ATCGCGCGCG _K=1_A T C G C G C G C G (共10组字符)
ATCGCGCGCG _K=2_AT CG CG CG CG(共5组字符)
ATCGCGCGCG _K=3_ATC GCG CGC G(共4组字符)
 
2、令A=0 T=1 G=2 C=3
统计每组字符的数值(每组第一个字符系数为4的(K-1)次方)
如:ATG 则为 0*4*4+1*4+2=6
    CG  则为 3*4+2=14
输出:
序列1 频数1 数值1
序列2 频数2 数值2
。。。
(频数由大到小联系)
如: ATCGCGCGCG _K=2_AT CG CG CG CG(共5组字符)
输出为: CG 4 14
         AT 1 1
---------------------------------------------------------------
 1 如果不考虑每个字母都作为首字符出现:
 2 [bgi_wes_huangzhiwei@ln4%tianhe ~]$ cat test.fa
 3 TAGAGAGAGAGTGTAGCGTAGCGAGCTGACTAGTCGAGCTAGGGT
 4 #这是测试数据
 5 [bgi_wes_huangzhiwei@ln4%tianhe ~]$ cat liuwei.sh
 6 #这是程序
 7 #!/bin/sh
 8 #$ -S /bin/sh
 9 
10 k="$1"
11 #命令行读入K值
12 data="$2"
13 #命令行读入测试数据
14 echo -e Seq"\t"Frequency
15 
16 #打印title
17 cat $data|fold -$k|sort|uniq -c|sort -nr|awk -F " " '{print $2"\t"$1}'
18 #处理数据
19 
20 [bgi_wes_huangzhiwei@ln4%tianhe ~]$ sh liuwei.sh 3 test.fa  #执行脚本
21 #↓↓这是结果
22 Seq Frequency
23 TAG 4
24 TCG 1
25 GTA 1
26 GGT 1
27 GCT 1
28 GCG 1
29 GAG 1
30 GAC 1
31 CGA 1
32 AGT 1
33 AGC 1
34 AGA 1
35 ————————————————————————————————————
36 如果多行,而且考虑每个字母都作为首字符出现:
37 [huangzhiwei@login-0-12 progarm]$ cat test.fa
38 ATGAGAGGTGTGTAGGTAGGTAGGCGCGTCGCGAGTCGAGTAGCT
39 GTAGGTAGGTAGGCGCGTCGGCGTCGCGAGTCGATGAGAGACTTC
40 ----------------------上面是测试数据--------------------------------------
41 [huangzhiwei@login-0-12 progarm]$ cat liuwei.sh
42 #!/bin/sh
43 #$ -S /bin/sh
44 k="$1"
45 data="$2"
46 echo -e Seq"\t"Frequency"\t"Score
47 for f in `cat $data`
48 do
49 echo $f| awk -F '' -vk=$k 'BEGIN{s["A"]=0;s["T"]=1;s["G"]=2;s["C"]=3;s["N"]=4}{for(;++i+k-1<=NF;){for(n=0;++n>use.txt
50 done
51 cat use.txt|sort|uniq -c|sort -nr|awk -F " " '{print $2"\t"$1"\t"$3}'
52 rm use.txt
53 ----------------------上面是脚本--------------------------------------
54 [huangzhiwei@login-0-12 progarm]$ sh liuwei.sh 3 test.fa
55 Seq     Frequency       Score
56 TAG     7       18
57 GTA     7       36
58 GCG     7       46
59 GAG     7       34
60 AGG     7       10
61 TCG     5       30
62 GTC     5       39
63 GGT     5       41
64 CGC     4       59
65 CGA     4       56
66 GGC     3       43
67 CGT     3       57
68 AGT     3       9
69 AGA     3       8
70 TGT     2       25
71 TGA     2       24
72 GTG     2       38
73 ATG     2       6
74 TTC     1       23
75 GCT     1       45
76 GAT     1       33
77 GAC     1       35
78 CTT     1       53
79 CGG     1       58
80 AGC     1       11
81 ACT     1       13
82 ----------------------上面是结果--------------------------------------

 

posted on 2013-12-12 18:07  三川  阅读(354)  评论(0编辑  收藏  举报