2

에 fasta 파일을 구문 분석하는 방법을 고려 중입니다. 당신의 사람들을 위해 FASTA 포맷을 예를 모르고 :병렬로 파일 구문 분석

>SEQUENCE_1 
MTEITAAMVKELRESTGAGMMDCKNALSETNGDFDKAVQLLREKGLGKAAKKADRLAAEG 
LVSVKVSDDFTIAAMRPSYLSYEDLDMTFVENEYKALVAELEKENEERRRLKDPNKPEHK 
IPQFASRKQLSDAILKEAEEKIKEELKAQGKPEKIWDNIIPGKMNSFIADNSQLDSKLTL 
MGQFYVMDDKKTVEQVIAEKEKEFGGKIKIVEFICFEVGEGLEKKTEDFAAEVAAQL 
>SEQUENCE_2 
SATVSEINSETDFVAKNDQFIALTKDTTAHIQSNSLQSVEELHSSTINGVKFEEYLKSQI 
ATIGENLVVRRFATLKAGANGVVNGYIHTNGRVGVVIAAACDSAEVASKSRDLLRQICMH 

그래서 라인을로 시작하는 '>'식별자 다음과 같은 순서에 대한 식별자를 포함하는 헤더 라인이 있습니다.

전체 파일을 메모리에로드한다고 가정하지만이 데이터를 처리하는 방법을 찾는 데 문제가 있습니다.

문제는 다음과 같습니다. 스레드가 이런 식으로 순서를 자르기 수 있기 때문에 임의의 위치에서 스레드를 시작할 수 없습니다.

행이 서로 의존 할 때 누군가가 병렬로 파일을 파싱 한 경험이 있습니까? 어떤 생각이라도 감사합니다.

+0

http://biostar.stackexchange.com/ – Pierre

답변

1

이 경우 라인의 의존성이 매우 간단하기 때문에 충분히 쉬워야합니다. 스레드를 임의의 위치에서 시작한 다음 '>'로 시작하는 라인까지 건너 뜁니다. '(즉, 새 시퀀스를 시작합니다).

시퀀스가 ​​두 번 처리되지 않도록하려면 처리 된 모든 시퀀스 ID 집합을 유지하십시오 (시퀀스 ID가 고유하지 않은 경우 줄 번호로 처리 할 수 ​​있지만 실제로 있어야합니다!).

1

전처리 단계를 수행하고 데이터를 한 번 살펴보고 모든 유효한 시작점을 결정합니다. 이러한 작업을 호출 해 봅시다. 그런 다음 각 작업자가 반복적으로 작업 (출발점)을 묻고 파싱하는 작업자 - 승무원 모델을 사용할 수 있습니다.

+0

사전 처리를 수행하려면 기본적으로 처리 시간을 지배하는 파일을 읽어야합니다. –

+0

@Ira Baxter 가능합니다. 나는 파일이 어느 정도까지 "파싱"되고 있는지 알지 못한다. 시퀀스가 단순한 배열이나리스트 또는 유사한 데이터 구조로 구문 분석되면 실제로 이것으로부터 아무 것도 얻지 못할 것입니다. 그러나, 그 경우 나는 당신이 어쨌든 그것을 parallellising하여 무언가를 이길 것이라고 의심합니다. – Yuri