2013-07-31 3 views
0

오늘 다시 문제가 발생했습니다.비 탭으로 구분 된 파일에서 시퀀스를 찾습니다

파일 검색

>chr1 
ACGACTGACTGTCGATCGATCGATGCTCGATGCTCGACGATCGTGCTCGATC 
>chr2 
GTGACGCACACGTGCTAGCGCTGATCGATCGTAGCTCAGTCAG 
>chr3 
CAGTCGTCGATCGTCGATCGTCG 

등 (basicly FASTA시 파일) :

나는 파일이 같이 찾고 있습니다. 두 파일은 내가 수행해야 할 모든 것을 쓰기 원하는

정말 거대

chr2 0 * 2S3M5I2M1D3M * CACTTTTTGTCTA NM:i:6 

파일 B : 다른 파일에서

나는 나의 읽기에 대한 좋은 탭으로 구분 된 정보를 가지고 내가 문제가있는 부분 만 :

파일 B에서 chr2가 파일 A에서 line> chr2와 일치하면 파일 순서대로 CACTTTTTGTCTA (fileB)를 찾습니다. A (> chr2 영역에서만 순서대로). 다음> chr은 다른 염색체이므로 검색하고 싶지 않습니다.)

이의가 살펴 보자 단순화하기 위해 : 파일에 CACACGTGCTAG 순서

내가 파일 A에 대해 사전을 사용하려고했지만, 완전히 실현 아니다.

제안 사항? 같은

+0

그래서 지금하고있는 것은 파일 A에서 사전을 만드는 것입니다. 염색체 값은 DNA 서열입니까? 그리고 "fileAfield에서 fileBField"와 같은 것을 사용하여 시퀀스가 ​​적절한 키 값에 있는지 확인하십시오. – seaotternerd

+0

예, 매우 '똑똑하지 않습니다'. 그러나 .next 방법을 파고 개선했다. – Irek

답변

0

뭔가 : 당신이 parseB 기능을 쓸 수있는 경우

for req in fileb: 
    (tag, pattern) = parseB(req) 
    tag_matched = False 
    filea = open(file_a_name) 
    for line in filea: 
     if line.startswith('>'): 
      tag_matched = line[1:].startswith(tag) 
     elif tag_matched and (line.find(pattern) > -1) 
      do_whatever() 
    filea.close 

이 작업을 수행해야합니다.

0

사전 조회가 빠르기 때문에 순서를 검색하는 데 오랜 시간이 걸리는 것처럼 보입니다. string.contains()는 C로 구현되어있어 매우 효율적입니다. 속도가 충분히 빠르지 않다면 여기에 설명 된대로 효율성을 위해보다 전문화 된 알고리즘을 사용해야 할 것입니다. Python efficient way to check if very large string contains a substring

관련 문제