Rosalind刷题历程

1_Counting DNA Nucleotides

with open('E:/rosalind_dna(1).txt') as f:
    a = list(f.read())
    print(a.count('A'))
    print(a.count('C'))
    print(a.count('G'))
    print(a.count('T'))

2_Transcribing DNA into RNA

with open('E:/rosalind_dna.txt') as f:
    with open('E:/new.txt','w') as f1:
        a = f.read()
        f1.write(a.replace('T','U'))

# 把DNA文件中的T全部变成RNA中的U,然后写进另外一个文件里

3_Complementing a Strand of DNA

with open('E:/rosalind_revc.txt') as f:
    strings = f.read()
    intab = 'ACGT'
    outtab = 'TGCA'
    trantab = str.maketrans(intab, outtab)
    '''
    maketrans() 方法用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,
    第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。
    两个字符串的长度必须相同,为一一对应的关系。
    '''
    print(strings[::-1].translate(trantab))

4_Rabbits and Recurrence Relations

def Rabbits(n, k):
    if n <= 2: # 这里关系到兔子几个月可以繁衍一代,这里应该假设的是兔子每隔2个月繁衍一代。
        return 1
    else:
        return Rabbits(n-1, k) + k * Rabbits(n-2, k)

print(Rabbits(3, 4))

5_Computing GC Content

def GCcount(strings):
    G = strings.count('G')
    C = strings.count('C')
    GC = float((G + C) / len(strings))
    return GC

with open('E:/rosalind_gc.txt') as fh:
    a = fh.read().split('>') # 把fasta格式根据'>'从而分开
    ID_and_GC = {}
    del a[0] # 去除空字符串
    for ID_sequence in a:
        ID = ID_sequence.split('\n')[0]
        sequence = (''.join(ID_sequence.split('\n')[1:])).upper()
        GC_content = GCcount(sequence)
        ID_and_GC[ID] = GC_content

ID_and_GC_max = max(ID_and_GC.items(), key = lambda x:x[1])

ID_and_GC = sorted(ID_and_GC.items(), key = lambda x:x[1],reverse = True)
# ID_and_GC.items()是返回得到[(键,值)]的列表。是可迭代对象
# key可以指定一个函数,来收集可迭代对象中的每一个元素(例如,这里键值对列表,然后对键值对列表应用函数),从而拿应用过函数的元素做排序
print(ID_and_GC_max)

print(ID_and_GC[0])

6_Counting Point Mutations

with open('E:/rosalind_hamm.txt') as f:
    a = f.read().split('\n')
    a.remove('')
    differ = 0
    for x, y in zip(a[0], a[1]):# zip函数会把a[0]和a[1]内的每个值都对应成(x,y)这种形式,变成一个元祖
        if x != y:
            differ += 1
    print(differ)
posted @ 2017-12-30 11:58  熵负  阅读(459)  评论(0编辑  收藏  举报