2016-11-26 1 views
0

나는 k와 ID 유사성 스코어로 두 dna 시퀀스의 도트 플롯 행렬을 만들고 관심도는 임계 값으로하고 싶습니다. 저는 파이썬을 배우고 있습니다. 비록 데이터에 능숙하지만 테이블과 도트 포인트로 고생하고 있습니다. 간단한 아이덴티티 행렬을 생성하기 위해 위 코드를 만들었습니다. 이제 그것을 변경하거나 새로운 것을 만들어야합니다.파이썬에서 두 DNA 시퀀스의 점도를 만드는 방법

필요한 정의는 this paper을 참조하십시오.

+0

. 애 스터 리스크가 특정 임계 값에만 존재하도록 내가 무언가를 바꿀 수 있는지 알고 싶습니다. – Ana

+0

방금 ​​추가했지만 모든 게시물이 코드 형식이 아닌 것을 알 수 있으므로 게시 관련 문제가 있습니다. 나는 여러 번 노력했다. 양해 해 주셔서 감사합니다. – Ana

+0

.py 스크립트 나는 복사와 붙여 넣기가 손상 되었으면 좋겠다. 이 스크립트는 별표가 일치하는 아미노산을 보여주는 플롯을 만들었습니다. 내가하고 싶은 것은 seq1, seq2, k, t (임계 값)의 유사한 코드 또는 유사한 플롯을 생성하는 것입니다. http://www.cs.unibo.it/~dilena/LabBII/LabBI-I.pdf의 슬라이드 4와 비슷한 내용. 나는 내가하고 싶은 것을 더 잘 설명해주기를 바란다. 도와 주셔서 정말로 고맙습니다. – Ana

답변

1

행렬을 생성하는 논리를 문자 그리기의 비교적 쉬운 논리에서 분리해야합니다.

첫번째는 델타 함수를 정의

지금 M[i,j]
def delta(x,y): 
    return 0 if x == y else 1 

:

def M(seq1,seq2,i,j,k): 
    return sum(delta(x,y) for x,y in zip(seq1[i:i+k],seq2[j:j+k])) 

이 매트릭스합니다

def makeMatrix(seq1,seq2,k): 
    n = len(seq1) 
    m = len(seq2) 
    return [[M(seq1,seq2,i,j,k) for j in xrange(m-k+1)] for i in xrange(n-k+1)] 

플롯 행렬을. 당신은 다른 문자를 실험 할 수 있습니다

def plotMatrix(M,t, seq1, seq2, nonblank = unichr(0x25A0), blank = ' '): 
    print(' |' + seq2) 
    print('-'*(2 + len(seq2))) 
    for label,row in zip(seq1,M): 
     line = ''.join(nonblank if s < t else blank for s in row) 
     print(label + '|' + line) 

래퍼 기능 : 다음

def dotplot(seq1,seq2,k = 1,t = 1): 
    M = makeMatrix(seq1,seq2,k) 
    plotMatrix(M, t, seq1,seq2) #experiment with character choice 

그리고 :

#for testing purposes (drawn from paper): 

seqx = "ACCTGAGCTCACCTGAGTTA" 
seqy = "ACCTGAGCTCACCTGAGTTA" 
dotplot(seqx,seqy) 

출력 :에서 그림을 일치

|ACCTGAGCTCACCTGAGTTA 
---------------------- 
A|■ ■ ■ ■ ■ 
C| ■■ ■ ■ ■■  
C| ■■ ■ ■ ■■  
T| ■ ■ ■ ■■ 
G| ■ ■  ■ ■ 
A|■ ■ ■ ■ ■ 
G| ■ ■  ■ ■ 
C| ■■ ■ ■ ■■  
T| ■ ■ ■ ■■ 
C| ■■ ■ ■ ■■  
A|■ ■ ■ ■ ■ 
C| ■■ ■ ■ ■■  
C| ■■ ■ ■ ■■  
T| ■ ■ ■ ■■ 
G| ■ ■  ■ ■ 
A|■ ■ ■ ■ ■ 
G| ■ ■  ■ ■ 
T| ■ ■ ■ ■■ 
T| ■ ■ ■ ■■ 
A|■ ■ ■ ■ ■ 

종이 (비록 그것은 ro w 및 열 레이블 - 당신이 추가 기능을 할 수 원하는 경우) : 나는 간단한 도트 플롯 행렬을 작성하기 전에 사용되는 코드를 추가 한

enter image description here

+0

와우! 나는 코드를 검사하고 테스트하고, 어떤 일이 일어날 지 알기 위해 매개 변수를 변경하는 것이 인상적이다. 또한, 당신은 나에게 Python의 주제 그래프에서 약간의 독서를 추천 할 수 있지만 matlabplot은 그렇지 않다. 대단히 감사합니다. 헤더도 포함하려고합니다. – Ana

+1

Mitchell Model의 "Python을 사용하는 생물 정보학 프로그래밍"장에는 그래픽 라이브러리 Tkinter를 사용하여 점선을 만드는 장이 있습니다. 그것은 파이썬 3이지만 파이썬 2에서 작동해야합니다 (약간의 수정이 필요합니다). matlabplot과 같은 것은 원시 Tkinter로 할 수있는 것보다 훨씬 풍부합니다. 그래서 당신이 그것을 피하고 싶지는 않습니다. "파이썬에서의 데이터 시각화"와 같은 제목을 가진 많은 책들이 있습니다. –

+0

안녕하세요, 머리글을 삽입하는 방법을 알아 내려고 노력하고 있습니다. 도움이 필요하십니까? – Ana

관련 문제