【发布时间】:2018-06-11 02:51:41
【问题描述】:
我从事遗传学工作,我有这个命令行可以检索基因的 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
但是脚本只读取了 Column 的第一个单词,例如在聚磷酸激酶中只读取“聚磷酸盐”并且输出文件是聚磷酸盐.fasta。当我需要查询超过“聚磷酸激酶”并且输出为 Polyphosphate_kinase.fasta
你能帮我解决这个问题吗?我将不胜感激。
【问题讨论】:
-
嗨,是一个 bash 脚本:
-
#!/bin/sh for i in $( cat prueba.txt | cut -f1 ); do esearch -db gene -query "$i [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' >> "$i".fasta done