Чтение файлов столбцов и выходных файлов с названием каждой строки - PullRequest
0 голосов
/ 11 июня 2018

Я работаю с генетикой, и у меня есть эта командная строка, которая возвращает мне последовательность ДНК гена:

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.fasta.когда мне нужно, чтобы запрос был над "Polyphosphate kinase", а вывод был Polyphosphate_kinase.fasta

Можете ли вы помочь мне с этим?Буду благодарен.

1 Ответ

0 голосов
/ 11 июня 2018

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, избегая всего этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...