-
Error Correction in ReadsBioinformatics/Rosalind 2019. 6. 19. 14:45
http://rosalind.info/problems/corr/
ROSALIND | Error Correction in Reads
It appears that your browser has JavaScript disabled. Rosalind requires your browser to be JavaScript enabled. Error Correction in Reads solved by 1467 2012년 7월 2일 12:00:00 오전 by Mikhail Dvorkin Topics: Genome Assembly Genome Sequencing Isn't Perfect In “G
rosalind.info
DNA seq에서 하나의 base에 err가 발생했을때 이를 교정하는 문제이다.
입력된 sequence에서 하나만 있는것은 err가 있는 sequence이고 올바른 sequence는 complementary strand에도 존재할 수 있다고 되어있으므로 일단 모든 err가 있는 sequence를 분리 후 올바른 sequence와 올바른 sequence의 complementary strand를 구한 후 err가 있는 seq들을 올바른 seq에 매칭해야 한다. Base의 삽입, 삭제는 고려하지 않으므로 다른 base의 갯수가 1개인것만 찾으면 된다.
from util.read import read_fasta from util.func_tools import get_complement seqs = list(map(lambda row: row[1], read_fasta('rosalind_corr.txt'))) seqs_with_complements = seqs + list(map(lambda seq: get_complement(seq), seqs)) err_seqs = list(filter(lambda seq: seqs_with_complements.count(seq) == 1, seqs)) correct_seqs = list(filter(lambda seq: seqs_with_complements.count(seq) > 1, seqs_with_complements)) corrected_seqs = list(map(lambda err_seq: list(filter(lambda seq: list(map(lambda base_match: base_match[0] == base_match[1], zip(err_seq, seq))).count(False) == 1, correct_seqs))[0], err_seqs)) print('\n'.join(map(lambda correction: '->'.join(correction), zip(err_seqs, corrected_seqs))))
대충 짜다보니 corrected_seqs, 즉 err seq에 매칭되는 올바른 seq를 찾는 코드를 한줄에 몰아넣어서 보기가 좀 힘들지만 위에 천천히 보면 이해가 될것이다.
'Bioinformatics > Rosalind' 카테고리의 다른 글
Finding a Spliced Motif (0) 2019.06.19 k-Mer Composition (0) 2019.06.18 Completing a Tree (0) 2019.06.17 Genome Assembly as Shortest Superstring (0) 2019.06.13 Independent Alleles (0) 2019.06.08 댓글