2016-12-06 1 views
0

파일의 DNA 시퀀스 내에서 ASCII로 인코딩 된 텍스트를 찾으려고합니다.파이썬의 디코드

첫 번째는 FASTA 파일을 열 수 있고 설정 변수입니다 :

다음은 내 코드입니다.

binarysequence = sequence.replace('A','0') 
다음

나는이 기다란 진 순서를 데려 확인하고 싶었 :

with open("/home/<username>/python/progseq") as mydnaseq: 
    sequence = mydnaseq.read().replace('\n','') 

이 두 번째 비트 바이너리로 순서를 번역 한 동일하게 문자 C와 G/T에 대한 이런 짓을하는 것입니다 그 8 비트에 :

'00110100' 
    '00110010' 
    '01000110' 
    '00011000' 
    '0' 
:

for i in range(0,len(binarysequence),8): 
    binarysequence [i:i+8] 

이것은 다음과 같은 출력이 생성

출력이 훨씬 더 길지만 시퀀스의 마지막 4 개만 포함했습니다.

글자로 변환하는 방법을 알고 싶었습니다.

+1

ASCII 문자열을'sequence.encode()'로 바이너리 (바이트)로 변환 할 수 있습니다. 이 함수는 모든 문자를 8 비트 ASCII 문자 코드로 바꿉니다. 예 : 'A'는 65가됩니다.하지만 다음으로이 비트를 가지고 무엇을 할 계획입니까? – DyZ

+0

안녕하세요 @DYZ, 답장을 보내 주셔서 감사합니다. 나는이시 8 비트 (이 4 가지뿐만 아니라) 시리즈를 각각의 ASCII 문자로 대체하기를 원했는데 시가를 밝혀야한다고 말했을 때입니다. 나는 아직 어떻게 몰라서 encode() 또는 decode()를 사용할지 아니면 접근하는 다른 방법이 있는지 궁금해하고있었습니다. 나는 이해가되기를 바랍니다. 나는 프로그래밍 세계에 처음 온 사람이다. –

+0

나는 ord()를 사용하지 말고 각 문자 ([A, C = 0] [T, G = 1])를 적절히 번역해야합니다. 지금 어디에서 시작해야할지 모르겠습니다. –

답변

0

예 : a = '10010000', 당신은 바이너리 수에 따라 정수로

b = chr(int(a, 2)) 

처음으로 변환하는 a을하고 다음 문자로이 정수를 해석 할 수 있습니다. 이 8 비트 정수 중 많은 수가 읽을 수있는 문자가되지 않습니다!

구체적인 예는 'x'

b = chr(int('01111000', 2)) 
print(b) 

인쇄되고있다.

+0

답장을 보내 주셔서 감사합니다. b = chr (int (binarysequence, 2))을 시도했지만 파이썬이 너무 큽니다. 너무 많은 바이트를 수동으로 입력하지 않으려 고 노력하고 있는데, 더 간단한 방법이 있다고 확신합니다. 나는 그것이 무엇인지 아직 모르겠습니다. 다시 한번 감사드립니다. –

+0

* 수동으로 * 무엇을 의미합니까? 루프에서'chr (int (binarysequence [i : i + 8], 2))'를 사용하지 않고 어쩌면 결과를 목록에 추가할까요? –

+0

제안 해 주셔서 감사합니다. 정말 도움이되었습니다! :) –