Разбор файла параллельно - PullRequest
3 голосов
/ 24 ноября 2011

Я думаю о способе разбора файла fasta в параллельно . Для тех из вас, кто не знает, fasta-формат, например:

>SEQUENCE_1  
MTEITAAMVKELRESTGAGMMDCKNALSETNGDFDKAVQLLREKGLGKAAKKADRLAAEG  
LVSVKVSDDFTIAAMRPSYLSYEDLDMTFVENEYKALVAELEKENEERRRLKDPNKPEHK  
IPQFASRKQLSDAILKEAEEKIKEELKAQGKPEKIWDNIIPGKMNSFIADNSQLDSKLTL  
MGQFYVMDDKKTVEQVIAEKEKEFGGKIKIVEFICFEVGEGLEKKTEDFAAEVAAQL  
>SEQUENCE_2  
SATVSEINSETDFVAKNDQFIALTKDTTAHIQSNSLQSVEELHSSTINGVKFEEYLKSQI  
ATIGENLVVRRFATLKAGANGVVNGYIHTNGRVGVVIAAACDSAEVASKSRDLLRQICMH  

Таким образом, строки, начинающиеся с '>', представляют собой строки заголовка, содержащие идентификатор последовательности, следующей за идентификатором.

Полагаю, вы загружаете весь файл в память, но после этого у меня возникают проблемы с поиском способа обработки этих данных.

Проблема в том, что потоки не могут начинаться с произвольной позиции, потому что они могут вырезать последовательности таким образом.

Есть ли у кого-нибудь опыт параллельного разбора файлов, когда строки зависят друг от друга? Любая идея приветствуется.

Ответы [ 2 ]

2 голосов
/ 28 ноября 2011

Должно быть достаточно просто, так как зависимость линий друг от друга очень проста в этом случае: просто заставьте потоки начинаться в произвольной позиции, а затем просто пропустите строки, пока они не дойдут до той, которая начинается с '>'(т.е. начинается новая последовательность).

Чтобы убедиться, что никакая последовательность не будет обработана дважды, сохраните набор всех идентификаторов последовательности, которые были обработаны (или вы можете сделать это по номеру строки, если идентификаторы последовательности не уникальны, но они действительно должны быть!).

1 голос
/ 24 ноября 2011

Выполните шаг предварительной обработки, один раз просмотрите данные и определите все действительные начальные точки. Давайте назовем эти задачи. Затем вы можете просто использовать модель «рабочий-экипаж», где каждый рабочий неоднократно запрашивает задание (отправную точку) и анализирует его.

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