我有以下格式的蛋白质序列文件
uniprotID\space\sequence
序列是任意长度的字符串,但只允许包含 20 个字母,即
ARNDCQEGHILKMFPSTWYV
1 条记录的示例
Q5768D AKCCACAKCCAC
我想创建以下格式的 csv 文件
Q5768D
12
ACA 1
AKC 2
CAC 2
CAK 1
CCA 2
KCC 2
这是我目前正在尝试的:
#!/bin/sh
while read ID SEQ # uniprot along with sequences
do
echo $SEQ | tr -d '[[:space:]]' | sed 's/./& /g' > TEST_FILE
declare -a SSA=(`cat TEST_FILE`)
SQL=$(echo ${#SSA[@]})
for (( X=0; X <= "$SQL"; X++ ))
do
Y=$(expr $X + 1)
Z=$(expr $X + 2)
echo ${SSA[X]} ${SSA[Y]} ${SSA[Z]}
done | awk '{if (NF == 3) print}' | tr -d ' ' > TEMPTRIMER
rm TEST_FILE # removing temporary sequence file
sort TEMPTRIMER|uniq -c > $ID.$SQL
done < $1
在这段代码中,我将单个记录存储在一个不好的不同文件中。此外,该程序在 12 小时内非常慢,在 50 万条记录中只有 12000 条记录被访问。