我使用遗传学,我有这个命令行来检索基因的DNA序列:
search -db gene -query "glutaminase-asparaginase [Gene/Protein Name] AND (bacteria [orgn] OR fungi [orgn] OR archaea [orgn]) AND alive [prop]" | efetch -format docsum | xtract -pattern GenomicInfoType
-element ChrAccVer -element ChrStart -element ChrStop |xargs -n 3 sh -c 'efetch -db nuccore -id "$0" -seq_start "$1" -seq_stop "$2" -format fasta'
输出就像那样(基因谷氨酰胺酶 - 天冬酰胺酶三种生物的三个序列):
>NC_030957.1:c4121890-4120582 Colletotrichum higginsianum
TGAGAGCTTCTTACTTGTCGACGCTGTTGTTGCCAGCTCTGGTAGCCCATGGTTTCGCCTCCCCAGTCGG
>NC_016603.1:c898826-897759 Acinetobacter pittii
TGTTGACTAAAACTGTTAAATCTTTAGGTTTAGCGATGGGCTTATTAG
>NC_002947.4:c2800289-2799201 Pseudomonas putida
TGAATGCCGCACTGAAAACCTTCGCCCCAAGCGCACTCGCCCTGCTGCTGATCCTGCCATCCAGCGCCTC
但我需要使用几个基因名称进行此查询,并生成包含每个基因序列的输出文件。我有一个像这样的Excel表:
glutaminase-asparaginase ColumnB ColumnC
Polyphosphate kinase ColumnB Columnc
Inositol-polyphosphate multikinase ColumnB Columnc
我正在尝试使用此脚本执行此操作:
for i in $( cat PATH_TO_TABLE | cut -f1 ); do
esearch -db gene -query "$i [Gene/Protein Name] AND (bacteria [org .... >>"$i".fasta
done
但是剧本只读了专栏的第一个字,例如聚磷酸激酶只能读取" Polyphosphate"输出文件是Polyphosphate.fasta。当我需要查询结束时,多磷酸激酶"输出为Polyphosphate_kinase.fasta
你可以帮帮我吗?我将不胜感激。答案 0 :(得分:0)
Bash只捕获第一个单词,因为它不知道第二个单词是另一个列,还是第一个列的一部分。这是由名称中的空格引起的。要解决此问题,请将Excel文件导出为CSV。它会给你这样的东西:
glutaminase-asparaginase,ColumnB,ColumnC
Polyphosphate kinase,ColumnB,ColumnC
Inositol-polyphosphate multikinase,ColumnB,ColumnC
然后,您可以剪切','
以拆分列。请注意,如果您的数据也包含','
,则可能会出现问题。然后,您可以将Excel导出为CSV,但使用';'
分隔符(在我的Excel上提供)。如果您同时拥有','
和';'
,则另一个选项是使用制表符分隔符导出到.txt。但是......那么你必须选择最适合你数据集的格式; - )
要用'_'
替换空格,您可以使用echo "$Column1Value" | tr '[:space:]' '_'
。
另一种选择可能是在Excel电子表格中直接用_替换所有空格,避免这一切。