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 ----------------------上面是结果--------------------------------------