搜索
查看: 14176|回复: 20

【菜鸟Python练习1】[ROSALIND-DNA] 计算DNA中每种核苷酸的数目

[复制链接]

20

主题

68

帖子

870

积分

版主

Rank: 7Rank: 7Rank: 7

积分
870
QQ
发表于 2016-10-10 11:54:15 | 显示全部楼层 |阅读模式
本帖最后由 bioinfo.dong 于 2016-10-13 03:26 编辑

发现用Python的小伙伴有不少,开个帖刷下ROSALIND中Bioinfomatics stronghold的题目,欢迎讨论交流。
【1】Counting DNA Nucleotides (计算DNA序列中每种核苷酸的数目)

Screenshot from 2016-10-12 12-25-28.png

[Python] 纯文本查看 复制代码
### 1. Counting DNA Nucleotides ###

seq = ''
ntCounts = []
with open('/Users/DONG/Downloads/rosalind_dna.txt') as f:
    for line in f:
        line = line.rstrip()
        seq += line.upper()
        
for nt in ['A','C','G','T']:
    ntCounts.append(seq.count(nt))

print ('\t'.join(map(str, ntCounts)))







You really shouldn't spend your time reinventing the wheel
回复

使用道具 举报

0

主题

8

帖子

91

积分

注册会员

Rank: 2

积分
91
发表于 2017-2-23 10:47:28 | 显示全部楼层
帅帅 发表于 2017-2-23 09:51
刚研究完直播的第一题,看到版主的python刷题,按照直播第一题的思维做了一下
import csv
file='DNA Nucleo ...

with open('DNA Nucleotides.txt','r')as f:
    for a in f:
        b=list(str(a))
        c={}
        for d in b:
            c[d]=b.count(d)
print(c)
精简了一下代码 结果如下
{'A': 20, 'G': 17, 'C': 12, 'T': 21}
回复 支持 2 反对 3

使用道具 举报

9

主题

16

帖子

248

积分

中级会员

Rank: 3Rank: 3

积分
248
发表于 2018-6-4 09:14:26 | 显示全部楼层
[Python] 纯文本查看 复制代码
s='AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC'
d={}
for i in set(list(s)):
    d[i]=s.count(i)
d

回复 支持 1 反对 0

使用道具 举报

4

主题

50

帖子

326

积分

中级会员

Rank: 3Rank: 3

积分
326
发表于 2016-10-10 17:28:59 | 显示全部楼层
我刷题卡在卡特兰数和rna二级结构了。。。
回复 支持 反对

使用道具 举报

20

主题

68

帖子

870

积分

版主

Rank: 7Rank: 7Rank: 7

积分
870
QQ
 楼主| 发表于 2016-10-11 01:18:37 | 显示全部楼层
xuehzh95 发表于 2016-10-10 17:28
我刷题卡在卡特兰数和rna二级结构了。。。

已经做好的题目可以按照【菜鸟Python练习n】的格式分享下去啊,哈哈,我直接跟你的帖就行了~
You really shouldn't spend your time reinventing the wheel
回复 支持 反对

使用道具 举报

2

主题

8

帖子

695

积分

信息监察员

人见人爱的

Rank: 9Rank: 9Rank: 9

积分
695
发表于 2016-10-11 09:23:04 | 显示全部楼层
ROSALIND好东西,收藏学习了
回复 支持 反对

使用道具 举报

0

主题

9

帖子

119

积分

注册会员

Rank: 2

积分
119
发表于 2016-10-14 11:13:02 | 显示全部楼层
学习学习@!!!
回复

使用道具 举报

0

主题

8

帖子

91

积分

注册会员

Rank: 2

积分
91
发表于 2017-2-23 09:51:24 | 显示全部楼层
刚研究完直播的第一题,看到版主的python刷题,按照直播第一题的思维做了一下
import csv
file='DNA Nucleotides.txt'
with open(file,'r')as f:
    f1=csv.reader(f,delimiter='\t')
    for a in f1:
        b=list(str(a))
        c={}
        for d in b:
            c[d]=b.count(d)
    print(c)
            
结果如下:
{'[': 1, "'": 2, 'A': 20, 'G': 17, 'C': 12, 'T': 21, ']': 1}
不尽人意,但是总算有点结果 还是很高兴,继续完善一下再跟帖。
我txt的内容如下
wxid_dy4nm379v2o421_1487814350445_71.png
回复 支持 反对

使用道具 举报

4

主题

24

帖子

184

积分

注册会员

Rank: 2

积分
184
发表于 2017-2-28 13:19:14 | 显示全部楼层
本帖最后由 tsznxx 于 2017-2-28 13:24 编辑

解法1:
[Python] 纯文本查看 复制代码
cnts = {c:0 for c in 'ATCG'}
for line in open("test.txt"):
  for c in line.rstrip():
    cnts[c] += 1
print cnts
解法2:
[Python] 纯文本查看 复制代码
from collections import Counter
print Counter(open('test.txt').read())

回复 支持 反对

使用道具 举报

0

主题

8

帖子

91

积分

注册会员

Rank: 2

积分
91
发表于 2017-2-28 16:57:35 | 显示全部楼层
帅帅 发表于 2017-2-23 10:47
with open('DNA Nucleotides.txt','r')as f:
    for a in f:
        b=list(str(a))

最后精简一次代码:
with open('DNA Nucleotides.txt','r')as f:
    for a in f:
        for nt in ['A','C','G','T']:
            print(a.count(nt),end='  ')
结果:
20  12  17  21  
回复 支持 反对

使用道具 举报

7

主题

25

帖子

680

积分

高级会员

Rank: 4

积分
680
发表于 2017-3-9 23:21:56 | 显示全部楼层
本帖最后由 xotong 于 2017-3-9 23:23 编辑

算是第一次写代码:

[Python] 纯文本查看 复制代码
with open('/Users/Administrator/Desktop/test/rosalind_dna.txt','r') as f:
    for line in f:
        line = line.rstrip()
        l = list(line)
        l = line.upper()
        for nt in ['A','C','G','T']:
            a = l.count(nt)
            a = str(a)
            print(nt+':'+a,end='\t')
        print('\n')


基本都不懂,看了好几个人做的,综合了一下,运行了出来,以后还要不断提高
A:20        C:12        G:17        T:21
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|生信技能树 ( 粤ICP备15016384号  

GMT+8, 2021-3-5 17:17 , Processed in 0.042295 second(s), 33 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.