shell实现DNA转录和翻译

查找不少于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中下载。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值