查找不少于3000个碱基对的DNA序列保存到文件,编程将这些DNA序列翻译为氨基酸,将翻译好的氨基酸链保存到文件中,并计算每种氨基酸的含量。
翻译方法:DNA——>RNA——>氨基酸
#!/bin/bash
a=`cat DNA.txt`
length=${#a}
echo "DNA.txt文件中含脱氧核糖核酸个数为:"$length
j=0
for(( i=0;i<"$length";i++))
do
array[$i]=${a:$j:1} #从第j个位置每次取1赋给数组
j=$(($j+1)) #j每次加1,移动位置
case ${array[$i]} in
A) echo -n "U">> RNA.txt
;;
T) echo -n "A">> RNA.txt
;;
C) echo -n "G">> RNA.txt
;;
G) echo -n "C">> RNA.txt
;;
*) echo $i
echo ${array[$i]}
esac
done
b=`cat RNA.txt`
le=${#b}
echo "RNA.txt文件中含核糖核酸个数为:" $le
m=0
for ((n=0;n<"$length";n++))
do
arr[$n]=${b:$m:1} #30行
m=$(($m+1))
done
k=0;sum=0;
ben=0;liang=0;si=0;lu=0;ban=0;se=0;pu=0;zu=0;guan=0;zhong=0;
jing=0;jia=0;yi=0;su=0;tian=0;lai=0;xie=0;bing=0;gu=0;gan=0;
while(( $k<$length ))
do
case ${arr[$k]} in
U)
case ${arr[$k+1]} in
U)
case ${arr[$k+2]} in
U) echo -n "苯丙氨酸——">> protein.txt
ben=$(($ben+1))
;;
C) echo -n "苯丙氨酸——">> protein.txt
ben=$(($ben+1))
;;
A) echo -n "亮氨酸—— " >> protein.txt
liang=$(($liang+1))
;;
G) echo -n "亮氨酸——" >> protein.txt
liang=$((liang+1))
;;
esac
;;
C) echo -n "丝氨酸——" >> protein.txt
si=$(($si+1))
;;
A)
case ${arr[$k+2]} in
U) echo -n "酪氨酸——">> protein.txt
lu=$(($lu+1))
;;
C) echo -n "酪氨酸——">> protein.txt
lu=$(($lu+1))
;;
A) echo -n "终止——">> protein.txt
zhong=$(($zhong+1))
;;
G) echo -n "终止——">> protein.txt
zhong=$(($zhong+1))
;;
esac
;;
G)
case ${arr[$k+2]} in
U) echo -n "半胱氨酸——">> protein.txt
ban=$(($ban+1))
;;
C) echo -n "半胱氨酸——">> protein.txt
ban=$(($ban+1))
;;
A) echo -n "终止——">> protein.txt
zhong=$(($zhong+1))
;;
G) echo -n "色氨酸——">> protein.txt
se=$(($se+1))
;;
esac
;;
esac
;;
C)
case ${arr[$k+1]} in
U) echo -n "亮氨酸——" >> protein.txt
liang=$(($liang+1))
;;
C) echo -n "脯氨酸——" >> protein.txt
pu=$(($pu+1))
;;
A)
case ${arr[$k+2]} in
U) echo -n "组氨酸——">> protein.txt
zu=$(($zu+1))
;;
C) echo -n "组氨酸——">> protein.txt
zu=$(($zu+1))
;;
A) echo -n "谷胺酰胺——">> protein.txt
guan=$(($guan+1))
;;
G) echo -n "谷胺酰胺——">> protein.txt
guan=$(($guan+1))
;;
esac
;;
G) echo -n "精氨酸——">> protein.txt
jing=$(($jing+1))
;;
esac
;;
A)
case ${arr[$k+1]} in
U)
case ${arr[$k+2]} in
G) echo -n "(起始)甲硫氨酸——">> protein.txt
jia=$(($jia+1))
;;
*) echo -n "异亮氨酸——">> protein.txt
yi=$(($yi+1))
;;
esac
;;
C) echo -n "苏氨酸——" >> protein.txt
su=$(($su+1))
;;
A)
case ${arr[$k+2]} in
U) echo -n "天冬酰胺——">> protein.txt
tian=$(($tian+1))
;;
C) echo -n "天冬酰胺——">> protein.txt
tian=$(($tian+1))
;;
A) echo -n "赖氨酸——">> protein.txt
lai=$(($lai+1))
;;
G) echo -n "赖氨酸——">> protein.txt
lai=$(($lai+1))
;;
esac
;;
G)
case ${arr[$k+2]} in
U) echo -n "丝氨酸——">> protein.txt
si=$(($si+1))
;;
C) echo -n "丝氨酸——">> protein.txt
si=$(($si+1))
;;
A) echo -n "精氨酸——">> protein.txt
jing=$(($jing+1))
;;
G) echo -n "精氨酸——">> protein.txt
jing=$(($jing+1))
;;
esac
;;
esac
;;
G)
case ${arr[$k+1]} in
U) echo -n "(起始)缬氨酸——" >> protein.txt
xie=$(($xie+1))
;;
C) echo -n "丙氨酸——" >> protein.txt
bing=$(($bing+1))
;;
A)
case ${arr[$k+2]} in
U) echo -n "天冬酰胺——">> protein.txt
tian=$(($tian+1))
;;
C) echo -n "天冬酰胺——">> protein.txt
tian=$(($tian+1))
;;
A) echo -n "谷氨酸——">> protein.txt
gu=$(($gu+1))
;;
G) echo -n "谷氨酸——">> protein.txt
gu=$(($gu+1))
;;
esac
;;
G) echo -n "甘氨酸——">> protein.txt
gan=$(($gan+1))
;;
esac
;;
esac
k=$(($k+3))
done
sum=$(($ben+$liang+$si+$lu+$ban+$se+$pu+$zu+$guan+$jing+$jia+$yi+$su+$tian+$lai+$xie+$bing+$gu+$gan+$zhong))
echo "文件protein.txt翻译得到的氨基酸总个数为:"$sum "其中终止个数为" $zhong
echo "笨丙氨酸数:" $ben
echo "亮氨酸数:" $liang
echo "丝氨酸数:" $si
echo "酪氨酸数:" $lu
echo "半胱氨酸数:" $ban
echo "色氨酸数:" $se
echo "脯氨酸数:" $pu
echo "组氨酸数:" $zu
echo "谷胺酰胺数:" $guan
echo "精氨酸数:" $jing
echo "甲硫氨酸数:" $jia
echo "异亮氨酸数:" $yi
echo "苏氨酸数:" $su
echo "天冬酰胺数:" $tian
echo "赖氨酸数:" $lai
echo "缬氨酸数:" $xie
echo "丙氨酸数:" $bing
echo "谷氨酸数:" $gu
echo "甘氨酸数:" $gan
DNA序列共3819个
https://www.ncbi.nlm.nih.gov/nuccore/1063713465?report=fasta中下载。