Rosalind를 통해 문제를 해결하려고했습니다. 내가 붙어서 일주일이 지났어. 나는 이것을 가능한 한 간단하게 설명하려고 노력할 것입니다.해당 목록의 특정 요소가있는 목록 사전의 모든 요소 찾기
입력 - Genome
이라는 문자열과 k
, L
및 t
의 정수입니다. 게놈은 일종의 유전 암호 코드입니다.
k
은 각 킬로미터의 크기 인 주어진 정수입니다. kmer는 일부 의미를 지닌 유전 암호의 하위 문자열입니다. t
은 kmer가 나타나는 시간을 덩어리로 나타냅니다. L
은 덩어리를 형성하는 텍스트의 길이입니다. 예를 들어, L = 400
이라면 400 문자의 덩어리 내에서 t
번 발생하는 kmer를 찾고 있습니다.
출력 - 게놈에서 (L, t) - 클럼프를 형성하는 모든 별개의 k-mer.
이 코드는 게놈을 취하여 가능한 모든 킬로미터로 분해하고 해당 킬로ers를 사전에 삽입합니다. kmers는 열쇠입니다. 값은 [frequency_of_kmer, [kmer locations]]
과 같이 설정됩니다. 이 값은 사전에 다음과 같이 저장됩니다. {'AAAAA' : [y, [z1,z2]]}
, 여기서 y
은 발생 횟수이고, z1
및 z2
은 부분 문자열이있는 문자열의 인덱스입니다.
기본적으로, 나는 사전을 반복하려고합니다. 텍스트 내에서 t
번 발생하는 키를 찾고 싶습니다. 즉, 사전 d
과 같은 모든 키를 찾으려면 d[key]==t
입니다.
코드를 출력 한 다음에 출력하십시오.
코드 : 내가 제대로 이해하고있는 경우
from pprint import pprint
genome = "CGGACTCGACAGATGTGAAGAAATGTGAAGACTGAGTGAAGAGAAGAGGAAACACGACACGACATTGCGACATAATGTACGAATGTAATGTGCCTATGGC"
k = 5
L = 75
t = 4
len_genome = int(len(genome))
l = []
for i in range (len_genome - k + 1):
kmer = genome[i:i +k]
# list of every possible kmer
l.append(kmer)
d = {}
for i in range (len(l)):
try:
d[l[i]][0] += 1
d[l[i]][1].append(i)
except KeyError:
d[l[i]] = [1, [i]]
pprint(d)
이 프로그래밍 질문하지 같은 질문을 시도 산출 생물학 질문처럼. 힌트 :'genome','kmer' 또는'clump'라는 단어를 사용하지 마십시오 –
코드에 무슨 문제가 있습니까? 즉 출력이 특별히 잘못된 것은 무엇이며 출력은 무엇입니까? 또한 들여 쓰기를 확인하십시오. –
들여 쓰기가 깨졌습니다. 이것은 공백 대신 탭을 사용하면 생깁니다. 여기에서 성전을 시작하고 싶지 않으므로 편집기 설정을 변경하거나 여기에 들여 쓰기를 수정하십시오. – BartoszKP