我有一个多fasta序列文件:test.fasta
>Ara_001
MGIKGLTKLLADNAPSCMKEQKFESYFGRKIAVDASMSIYQFLIVVGRTGTEMLTNEAGE
VTSHLQGMFNRTIRLLEAGIKPVYVFDGKPPELKRQELAKRYSKRADATADLTGAIEAGN
>Ara_002
MGIKGLTKLLADNAPSCMKEQKFESYFGRKIAVDASMSIYQFLIVVGRTGTEMLTNEAGE
VTSHLQGMFNRTIRLLEAGIKPVYVFDGKPPELKRQELAKRYSKRADATADLTGAIEAGN
>Ara_003
MGIKGLTKLLAEHAPRAAAQRRVEDYRGRVIAIDASLSIYQFLVVVGRKGTEVLTNEAEG
LTVDCYARFVFDGEPPDLKKRELAKRSLRRDDASEDLNRAIEVGDEDSIEKFSKRTVKIT
我有另一个包含范围的列表文件:range.txt
Ara_001 3 60
Ara_002 10 80
Ara_003 20 50
我想提取已定义的区域。
我的预期输出为:
>Ara_001
KGLTKLLADNAPSCMKEQKFESYFGRKIAVDASMSIYQFLIVVGRTGTEMLTNEAGE
VT
>Ara_002
ADNAPSCMKEQKFESYFGRKIAVDASMSIYQFLIVVGRTGTEMLTNEAGE
VTSHLQGMFNRTIRLLEAGIKPVYVFDGKP
>Ara_003
RRVEDYRGRVIAIDASLSIYQFLVVVGRKG
我试探着:
#!/bin/bash
lines=$(awk 'END {print NR}' range.txt)
for ((a=1; a<= $lines ; a++))
do
number=$(awk -v lines=$a 'NR == lines' range.txt)
grep -v ">" test.fasta | awk -v lines=$a 'NR == lines' | cut -c$number
done;
4条答案
按热度按时间tuwxkamq1#
不要重复发明。使用为此目的编写并广泛使用的标准生物信息学工具。在您的示例中,使用
bedtools getfasta
。将区域文件重新格式化为3列床格式,然后:安装
bedtools
套件,例如,使用conda
,特别是miniconda
,如下所示:toe950272#
使用biopython:
输出档案:
j8ag8udp3#
当我写我的第一个答案时,我误解了这个问题。你的情况并不太依赖于任何编程语言。你似乎需要Timur Shtatland的答案中的实用程序。要么安装该实用程序,要么使用mozway的python代码片段来处理 * 两个 * 你的文件。
我读你的问题的格式,如果你有4个单独的文件,而不是两个。
lrpiutwd4#
对于我正在开发的Biotite包,可以使用以下命令来完成此操作: