나는 참고 게놈의 하위 서열에 스캐 폴드를 정렬하여 가능한 SNPs
및 indels
을 스캔하려고합니다. (원시 읽기는 사용할 수 없습니다). R/bioconductor
과 Biostrings 패키지의 pairwiseAlignment 함수를 사용하고 있습니다. 나는 오류 메시지와 함께 같은 56kbp 발판을 정렬하려고 할 때 이 작은 발판을 위해 잘 작동하지만, 실패했습니다 :긴 쌍 현자단 뉴클레오티드 배열을 수행하는 알고리즘을 찾고
오류 QualityScaledXStringSet.pairwiseAlignment (패턴 = 패턴, 에서 : 크기 17179869183.7 기가의 메모리 블록을 할당 할 수 없습니다 ?
나는 이것이 버그인지 아닌지 확실하지 않다, 나는 pairwiseAlignment
에 의해 사용되는 Needleman-Wunsch algorithm
내가 3.1E9
작업 (56K * 56k ~= 3.1E9)
의 순서로 계산 수요를 의미하는 것이라고 생각 O(n*m)
이라는 인상이었다 그것은 또한 Needleman-Wunsch
유사도 행렬은 3.1 기가 메모리의 순서를 따라야합니다. 나는 제대로 큰 - 오 표기법을 기억하고 있지 않다거나 실제로 R scripting
환경의 오버 헤드가 주어진 정렬을 구축하는 데 필요한 것입니다 메모리 오버 헤드가 확실하지합니다.
누가 더 긴 시퀀스 정렬에 사용할 더 나은 정렬 알고리즘에 대한 제안 사항이 있습니까? 초기 정렬은 이미 BLAST를 사용하여 참조 게놈의 영역을 찾아서 정렬했습니다. 나는 제대로 삽입이나 삭제를 배치하기위한 BLAST
의 신뢰성을 전적으로 확신하지 그리고 난 아직 원시 BLAST 정렬을 구문 분석 biostrings에서 제공하는 것과 같은 좋은 API를 찾을 수 없어. 그런데
library("Biostrings")
scaffold_set = read.DNAStringSet(scaffold_file_name) #scaffold_set is a DNAStringSet instance
scafseq = scaffold_set[[scaffold_name]] #scaf_seq is a "DNAString" instance
genome = read.DNAStringSet(genome_file_name)[[1]] #genome is a "DNAString" instance
#qstart, qend, substart, subend are all from intial BLAST alignment step
scaf_sub = subseq(scafseq, start=qstart, end=qend) #56170-letter "DNAString" instance
genomic_sub = subseq(genome, start=substart, end=subend) #56168-letter "DNAString" instance
curalign = pairwiseAlignment(pattern = scaf_sub, subject = genomic_sub)
#that last line gives the error:
#Error in .Call2("XStringSet_align_pairwiseAlignment", pattern, subject, :
#cannot allocate memory block of size 17179869182.9 Gb
오류가 짧은 정렬 (기초 수백)로 발생하지 않습니다. 오류가 발생하기 시작한 길이 절단이 아직 없습니다.
정렬; 사용중인 R은 sessionInfo'의 2147483647 출력은 2^31-1, 최대 벡터의 크기는()'도움이 될 것입니다. 또한 문제 성명서에서 완전한 순서에 걸쳐 정렬을 수행해야합니까 아니면 합리적인 크기의 창을 (겹쳐서) 보는 것이 합리적입니까? –
정렬 작업을 수행하는 데 사용한 코드를 보여 주시겠습니까? –
64 비트 정수 오버 플로우 (17179869183.7GiB ~ 2 ** 64 바이트) (그것은 순서없이 재현되지 않습니다하지만 적어도 그것은 도움이 될 것입니다); 이것은 거의 확실하게 라이브러리의 버그입니다. – nneonneo