搜索
查看: 2114|回复: 8

【learnyoung】答题

[复制链接]

1

主题

41

帖子

285

积分

中级会员

Rank: 3Rank: 3

积分
285
发表于 2016-9-25 19:59:04 | 显示全部楼层 |阅读模式

在知乎上看到jimmy的回答,找到这个论坛,现在开始刷题,记录一下自己的做题过程(我用的python)
1,计算DNA单链A,T,C,G
[Python] 纯文本查看 复制代码
# coding=utf-8
import re
a='AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC'
b=list(a)
c1=len(re.findall('A',a))
c2=len(re.findall('T',a))
c3=len(re.findall('C',a))
c4=len(re.findall('G',a))
print c1,c2,c3,c4




上一篇:如何快速入手git及在linux系统下如何安装
下一篇:使用ASPERA更高效地下载SRA[fastq]数据
回复

使用道具 举报

1

主题

41

帖子

285

积分

中级会员

Rank: 3Rank: 3

积分
285
 楼主| 发表于 2016-9-25 20:03:31 | 显示全部楼层
找出一段DNA序列的反向互补序列,如:ATCG反向互补序列为CGAT
[Python] 纯文本查看 复制代码
#coding=utf-8
a=raw_input('输入序列:\n')
b=a.upper()
reverse_b=b[::-1]
c=list(reverse_b)
for i in range(len(c)):
    if c[i]=='A':
        c[i]='T'
    elif c[i]=='T':
        c[i]='A'
    elif c[i]=='C':
        c[i]='G'
    elif c[i]=='G':
        c[i]='C'
print ''.join(c)
回复 支持 反对

使用道具 举报

1

主题

41

帖子

285

积分

中级会员

Rank: 3Rank: 3

积分
285
 楼主| 发表于 2016-9-25 20:04:40 | 显示全部楼层
找出两个序列的共有最长序列
[AppleScript] 纯文本查看 复制代码
# coding=utf-8
b = 'AACTGCACGTGCATCGGATGCATCGATCGTGCGAGTAGTCGATCGATCGTAGCTAGCTCAGTCGATCAGCTACCTCGC'
a = 'CGTAGCTACGATCGCATCAGCTACCTCCGTTCGAGTCTGCGCAACGCTACGACTATCGACGTCA'
match =[]
for x in range(len(b)):
    for y in range(len(b)):
        if x<y and b[x:y+1] in a:#b[x:y+1]w为b中所有存在的元素(以元素长度作为判断,元素长度最大为b的长度,最小为2)
            match.append(b[x:y+1])
setmatch=set(match)
#找出所有的可能存在最长共有序列(视a,b情况而定,可能存在多个共有最长序列)
t=[]
for i in setmatch:
    t.append(len(i))
for j in setmatch:
    if len(j)==max(t):
        print j
回复 支持 反对

使用道具 举报

0

主题

1

帖子

21

积分

新手上路

Rank: 1

积分
21
发表于 2016-9-25 20:05:37 | 显示全部楼层
这个跟perl里面的下面的代码功能一样:
while(<INPUT>){
$count_A=$count_A+($_=~s/A//ig);
$count_T=$count_T+($_=~s/T//ig);
$count_G=$count_G+($_=~s/G//ig);
$count_C=$count_C+($_=~s/C//ig);
}
回复 支持 反对

使用道具 举报

1

主题

41

帖子

285

积分

中级会员

Rank: 3Rank: 3

积分
285
 楼主| 发表于 2016-9-25 20:11:26 | 显示全部楼层
tmp 发表于 2016-9-25 20:05
这个跟perl里面的下面的代码功能一样:
while(){
$count_A=$count_A+($_=~s/A//ig);


我只会python,刚开始学
回复 支持 反对

使用道具 举报

1

主题

41

帖子

285

积分

中级会员

Rank: 3Rank: 3

积分
285
 楼主| 发表于 2016-9-26 10:56:48 | 显示全部楼层
统计文本文件中单词的频次
[Python] 纯文本查看 复制代码
#coding=utf-8
import string
fh=open('1.txt')
read_fh=fh.read()
read_fh=read_fh.split()
d={}
for i in read_fh:
    i=i.translate(None,string.punctuation)
    i=i.lower()
    if i[0].isalpha():
        pass
    else:
        i=i[3:]
    d[i]=d.get(i,0)+1
for k,v in d.items():
    print ('%s => %s'%(k,v))
回复 支持 反对

使用道具 举报

11

主题

52

帖子

276

积分

中级会员

Rank: 3Rank: 3

积分
276
发表于 2016-10-18 17:21:26 | 显示全部楼层
回复一下你的第一题

python统计字符个数
[Python] 纯文本查看 复制代码
a='AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC'
print a.count('A')
print a.count('T')
print a.count('G')
print a.count('C')


回复 支持 反对

使用道具 举报

1

主题

41

帖子

285

积分

中级会员

Rank: 3Rank: 3

积分
285
 楼主| 发表于 2016-10-19 15:09:41 | 显示全部楼层
dongye 发表于 2016-10-18 17:21
回复一下你的第一题

python统计字符个数

这样写更简单0.0handshake
回复 支持 反对

使用道具 举报

0

主题

1

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2016-10-19 19:53:22 | 显示全部楼层
我比较习惯把序列生成为list,然后用直接for i in xxx,每个指针依次输出
这样可扩展性也比较好,下一次可以继续用,需要新功能直接添加下去即可
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|手机版|小黑屋|生信技能树    

GMT+8, 2019-6-19 23:52 , Processed in 0.032640 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.