2013-07-28 1 views
0

나는 이미 다중 서열 정렬을 한 520 개의 인플루엔자 서열 세트를 가지고 있고 쌍 단위 항체를 계산했다. 다른 시퀀스를 추가하려면 모든 것을 재정렬하고 전체 PWI 행렬을 다시 계산해야합니다. 정렬에이 다른 시퀀스를 "추가"하고 PWI w.r.t 만 계산할 수있는 프로그램이 있습니까? 다른 모든 시퀀스?다중 서열 정렬 - 정렬에 덧붙임

간단한 예는 다음과 같습니다. 다음 점수로 2x2 맞춤을했습니다.

 SeqA SeqB SeqC 
SeqA 1.00 0.98 0.99 
SeqB 0.98 1.00 0.97 
SeqC 0.99 0.97 1.00 

나는 바이오 파이썬 패키지를 사용하고 있습니다 :

 SeqA SeqB 
SeqA 1.00 0.98 
SeqB 0.98 1.00 

전체 정렬을 다시 실행,하지만 다른 모든 시퀀스에 대해 "SeqC"를 실행하지 않고, 나는 다음과 같은 매트릭스를 좀하고 싶습니다 , 파이썬은 내가 선호하는 언어이지만 필요하다면 자바도 괜찮습니다.

[BioStars에 게시되지 않은 전문가가있는 경우를 대비하여 BioStars에서 크로스 게시한다고 여기에서 거부합니다. BioStars 게시판은 http://www.biostars.org/p/77607/이지만 내용은 똑같습니다.]

+0

BioStarts 질문에 대한 링크가 있습니까? – PhiS

답변

1

정렬을 다시 실행하는 데 걸리는 시간에 주요 문제가있는 경우 (PWI 행렬을 다시 계산하려면 계산 비용이 저렴해야 함) MUSCLE 당신이 찾고있는 것을 할 수있는 능력, 일반적으로 "profile-profile alignment"이라고 불리는 절차.

Profile-profile 배향

-profile 플래그를 전달하는 경우, 정렬은 "필요한 곳에 갭의 열을 그대로 입력 열을 유지하고, 삽입 서로 재 정렬."일 것이다

하면 만약 관련 시퀀스의 두 가지 기존 정렬을 사용하면 MUSCLE의 -profile 옵션을 사용하여 두 시퀀스를 정렬 할 수 있습니다.

muscle -profile -in1 one.afa -in2 two.afa -out both.afa 

Biopythonwrapper around MUSCLE을 가지고 바이오 파이썬으로 구현,하지만 난 쉽게 바로 그때, 근육 부르는 MultipleSeqAlignment에 다시 결과를 구문 분석 subprocess를 사용하여 찾을 수 : 일반적인 사용법은

# Do profile-profile alignment (one sequence to many aligned) 
seq_fn = "influenza_seq.fasta" 
aligned_fn = "520_influenza_seqs.afasta" 
cmd = ['muscle', '-clwstrict', '-profile', '-in1', seq_fn, '-in2', aligned_fn] 
aligner = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) 
stdout, stderr = aligner.communicate() 

# Get resulting alignment (MultipleSeqAlignment) 
alignment = AlignIO.read(StringIO(stdout), "clustal", 
          alphabet=Alphabet.ProteinAlphabet()) 
+0

안녕 David, 귀하의 서브 프로세스 코드를 시도했지만 내 컴퓨터에서 작동하지 않는 것 같습니다. 필자는 bash를 사용하여 'muscle -in muscle_align_vap492zjqgxk915.fasta -out muscle_align_vap492zjqgxk915.out'와 같은 명령을 실행할 수 있습니다. 그것은 당신의 코드 뒤에'subprocess'와 함께 작동하지 않습니다.'aligner = subprocess.Popen (muscle_command, stdout = subprocess.PIPE, stderr = subprocess.PIPE, shell = True) stdout, stderr = aligner.communicate() '이고 결과는 stdout이 NULL이고 stderr이'-in : 1 : -in : muscle : not found'입니다. – sikisis

+0

@Davide Cain 그래서 BioPython에서 사용할 필요가 없기 때문에 뭘 할 수 있습니까? – sikisis