Выберите последовательности в файле fasta с более чем 300 aa, и "C" встречается как минимум 4 раза - PullRequest
0 голосов
/ 07 мая 2018

У меня есть файл fasta, который содержит белковые последовательности.Я хотел бы выбрать последовательности с более чем 300 аминокислотами, а аминокислота цистеин (C) появляется более 4 раз.

Я использовал эту команду для выбора последовательностей с более чем 300 аминокислот:

 cat 72hDOWN-fasta.fasta | bioawk -c fastx 'length($seq) > 300{ print ">"$name; print $seq }' 

Пример некоторой последовательности:

  >jgi|Triasp1|216614|CE216613_3477
 MPSLYLTSALGLLSLLPAAQAGWNPNSKDNIVVYWGQDAGSIGQNRLSYYCENAPDVDVI
 NISFLVGITDLNLNLANVGNNCTAFAQDPNLLDCPQVAADIVECQQTYGKTIMMSLFGST
 YTESGFSSSSTAVSAAQEIWAMFGPVQSGNSTPRPFGNAVIDGFDFDLEDPIENNMEPFA
 AELRSLTSAATSKKFYLSAAPQCVYPDASDESFLQGEVAFDWLNIQFYNNGCGTSYYPSG
 YNYATWDNWAKTVSANPNTKLLVGTPASVHAVNFANYFPTNDQLAGAISSSKSYDSFAGV
 MLWDMAQLFGNPGYLDLIVADLGGASTPPPPASTTLSTVTRSSTASTGPTSPPPSGGSVP
 QWGQCGGQGYTGPTQCQSPYTCVVESQWWSSCQ* 

1 Ответ

0 голосов
/ 07 мая 2018

Я не знаю bioawk, но я предполагаю, что оно идентично с некоторыми начальными разборками и константными определениями.

Я бы поступил следующим образом. Предполагая, что вы хотите найти строки, содержащие более 4-х кратную букву C и длину более 300, вы можете сделать:

bioawk -c fastx '
   (length($seq) > 300) && (gsub("C","C",$seq)>4) {
       print ">"$name; print $seq
   }' 72hDOWN-fasta.fasta

но это предполагает, что seq - это полная последовательность символов.

Идея заключается в следующем. Команда gsub выполняет подстановки в строках и возвращает общее количество подстановок. Следовательно, если мы заменим все символы «C» на «C», мы фактически не изменим строку, а получим общее количество «C» в строке.

Из стандарта POSIX IEEE Std 1003.1-2017 :

gsub(ere, repl[, in]): ведет себя как sub (см. Ниже), за исключением того, что он должен заменить все вхождения регулярного выражения (например, служебная глобальная замена ed) в $0 или в аргументе in, когда указано.

sub(ere, repl[, in ]): подставить строку repl вместо первого экземпляра расширенного регулярного выражения ere в строку in и возвращает количество замен . An (& ) в строке repl должна быть заменена строка из in это соответствует ERE. предшествует должно быть истолковано как буквальное символ. Появление двух последовательных символы должны интерпретироваться как один буквальный символ. Любое другое вхождение (например, перед любым другим символом) трактоваться как буквальный символ. Обратите внимание, что если repl строковый литерал (лексический токен STRING; см. грамматика ), обработка символа происходит после любого лексического обработка, включая любую лексическую последовательность -escape обработка. Если указано in и оно не является lvalue (см. Выражения в awk ), поведение не определено. Если in опущено, awk должен использовать текущую запись ($0) на своем месте.

Примечание: BioAwk основан на awk * Брайана Кернигана , который задокументирован в "Язык программирования AWK", Аль Ахо, Брайан Керниган и Питер Вайнбергер (Addison-Wesley, 1988, ISBN 0-201-07981-X) . Я не уверен, что эта версия совместима с POSIX .

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