搜索
楼主: Jimmy

生信编程直播第0题-生信编程很简单!

[复制链接]

0

主题

14

帖子

80

积分

注册会员

Rank: 2

积分
80
发表于 2018-7-28 00:30:56 | 显示全部楼层
## 统计碱基个数及GC%

# !user/bin/python
# -*- coding: utf-8 -*-
##########################################
# Author    :    luhope
# Email     :    luhuilonghope@outlook.com
# Comment   :    Count the number of bases and GC % (for fastq)
# Parameter :    python total_bases_GC.py raw_data.fq total_bases_GC.xls ( = copy)
##########################################
import sys
args = sys.argv

sums,nums = 0, 0
f1 = open(args[2],'w')
with open(args[1],'r') as f:
    for (num,value) in enumerate(f):
        if num % 4 == 1:
            sums += len(value.strip())
            nums += (value.strip().count('G') + value.strip().count('C'))
           
f1.write('total_bases(bp)' + '\t' + 'GC(%)' + '\n')
f1.write('%d\t' % sums + '%.2f' % (nums/sums*100))
#f1.write(str(sums) + '\t' + str(round(nums/sums*100,2)))

f1.close()
回复 支持 反对

使用道具 举报

0

主题

14

帖子

80

积分

注册会员

Rank: 2

积分
80
发表于 2018-7-28 13:35:42 | 显示全部楼层
#取互补序列

# !/user/bin/python
# -*- coding: utf-8 -*-
##########################################
# Author    :    luhope
# Email     :    luhuilonghope@outlook.com
# Comment   :    sequence complement(for fasta)
# Parameter :    python seq_complement.py new_data.fa seq_complement.fa
##########################################
import sys
args = sys.argv

def seq_comp(seq):
    nt_comp = {'A':'T', 'C':'G', 'T':'A', 'G':'C','N':'N'}
    return ''.join([nt_comp[k] for k in list(seq.upper())])

f1 = open(args[2],'w')
with open(args[1],'r') as f:
    line = f.readline().strip()
    while line:
        if line.startswith('>'):
            f1.write(line + '\n')
        else:
            f1.write(seq_comp(line) + '\n')
        line = f.readline().strip()

f1.close()
回复 支持 反对

使用道具 举报

0

主题

14

帖子

80

积分

注册会员

Rank: 2

积分
80
发表于 2018-7-28 13:37:48 | 显示全部楼层
#取反向序列
# !/user/bin/python
# -*- coding: utf-8 -*-
##########################################
# Author    :    luhope
# Email     :    luhuilonghope@outlook.com
# Comment   :    The reverse sequence (for fasta)
# Parameter :    python sequence_reverse.py new_data.fa new_data_reverse.fa
##########################################
import sys
args = sys.argv

f1 = open(args[2],'w')
with open(args[1],'r') as f:
    line = f.readline()
    while line:
        if line.startswith('>'):
            f1.write(line)
        else:
            f1.write(line.strip()[::-1] + '\n')
        line = f.readline()
f1.close()
回复 支持 反对

使用道具 举报

0

主题

14

帖子

80

积分

注册会员

Rank: 2

积分
80
发表于 2018-7-28 13:52:12 | 显示全部楼层
#DNA to RNA
# !/user/bin/python
# -*- coding: utf-8 -*-
##########################################
# Author    :    luhope
# Email     :    luhuilonghope@outlook.com
# Comment   :    DAN TO RNA (for fasta)
# Parameter :    python DNA2RNA_fasta.py new_data.fa DNA2RNA_fasta.fa
##########################################
import sys
import re
args = sys.argv

f1 = open(args[2],'w')
with open (args[1],'r') as f:
    line = f.readline()
    while line:
        if line.startswith('>'):
            f1.write(line)
        else:
            f1.write(re.sub('T','U',line))
        line = f.readline()

f1.close()
回复 支持 反对

使用道具 举报

0

主题

14

帖子

80

积分

注册会员

Rank: 2

积分
80
发表于 2018-8-28 17:33:18 | 显示全部楼层
# 大小写upper or lower (for fasta)

# !/user/bin/python
# -*- coding: utf-8 -*-
##########################################
# Author    :    luhope
# Email     :    luhuilonghope@outlook.com
# Comment   :    upper or lower (for fasta)
# Parameter :    python upper_lower_subread.py upper(or lower) your.fasta yourNew.fasta
##########################################
import sys

args = sys.argv

f1 = open(args[3],'w')
with open (args[2],'r') as f:
    for line in f:        
        if line.startswith('>'):
            f1.write(line)
        else:
            if args[1] == 'upper':
                f1.write(line.upper())
            else:
                f1.write(line.lower())

f1.close()
回复 支持 反对

使用道具 举报

0

主题

14

帖子

80

积分

注册会员

Rank: 2

积分
80
发表于 2018-8-28 19:05:38 | 显示全部楼层
#每行指定长度输出序列

# !/user/bin/python
# -*- coding: utf-8 -*-
##########################################
# Author    :    luhope
# Email     :    luhuilonghope@outlook.com
# Comment   :    specified length output  (for fasta)
# Parameter :    python specified_length.py 60 your.fasta specified_length.fasta
##########################################
import sys
import re

args = sys.argv

f1 = open(args[3],'w')
with open (args[2],'r') as f:
    for line in f:        
        if line.startswith('>'):
            f1.write(line)
        else:
            rule = r'\w{1,%s}' % args[1]
            lineCuts = re.findall(rule,line)
            for lineCut in lineCuts:
                f1.write(lineCut +'\n')

f1.close()
回复 支持 反对

使用道具 举报

0

主题

14

帖子

80

积分

注册会员

Rank: 2

积分
80
发表于 2018-8-29 00:05:24 | 显示全部楼层
#sorted py length or name

# !/user/bin/python
# -*- coding: utf-8 -*-
##########################################
# Author    :    luhope
# Email     :    luhuilonghope@outlook.com
# Comment   :    output by name or length  (for fasta)
# Parameter :    python sort_byNameOrLength.py name your.fasta name.fasta
##########################################
import sys
import pysam
args = sys.argv

f1 = open(args[3],'w')
famy = pysam.FastaFile(args[2])
nameLengths = zip(famy.references,famy.lengths)
if args[1] == 'name':
    for nameLength in sorted(nameLengths, key = lambda k: k[0]):
        f1.write('>' + nameLength[0] + '\n')
        f1.write(famy.fetch(nameLength[0]) + '\n')
else:
    for nameLength in sorted(nameLengths, key = lambda k: k[1]):
        f1.write('>' + nameLength[0] + '\n')
        f1.write(famy.fetch(nameLength[0]) + '\n')


f1.close()
回复 支持 反对

使用道具 举报

0

主题

14

帖子

80

积分

注册会员

Rank: 2

积分
80
发表于 2018-8-29 00:33:10 | 显示全部楼层
#提取指定ID的序列

# !/user/bin/python
# -*- coding: utf-8 -*-
##########################################
# Author    :    luhope
# Email     :    luhuilonghope@outlook.com
# Comment   :    fetch specified sequence by ID  (for fasta)
# Parameter :    python fetch_specified_seq.py ID your.fasta
##########################################
import sys
import pysam
args = sys.argv

with open('ID.fasta','w') as f1:
    famy = pysam.FastaFile(args[2])
    f1.write('>%s\n' % args[1])
    f1.write(famy.fetch(args[1]) + '\n')
回复 支持 反对

使用道具 举报

0

主题

14

帖子

80

积分

注册会员

Rank: 2

积分
80
发表于 2018-8-29 01:17:57 | 显示全部楼层
#随机抽取序列
# !/user/bin/python
# -*- coding: utf-8 -*-
##########################################
# Author    :    luhope
# Email     :    luhuilonghope@outlook.com
# Comment   :    random fetch sequence by number or percent (for fasta)
# Parameter :    python random_fetch_seq12.py number 100 your.fasta
##########################################
import sys
import pysam
import random
args = sys.argv

f1 = open('%s.%s.random.fasta' % (args[1],args[2]),'w')
famy = pysam.FastaFile(args[3])
if args[1] == 'number':
    names = random.sample(famy.references,int(args[2]))
    for name in names:
        f1.write('>' + name + '\n')
        f1.write(famy.fetch(name) + '\n')
else:
    names = random.sample(famy.references,int(len(famy.references)*float(args[2])))
    for name in names:
        f1.write('>' + name + '\n')
        f1.write(famy.fetch(name) + '\n')

f1.close()
回复 支持 反对

使用道具 举报

1

主题

4

帖子

290

积分

中级会员

Rank: 3Rank: 3

积分
290
QQ
发表于 2018-9-1 19:49:47 | 显示全部楼层
dongye 发表于 2017-3-18 00:22
http://www.blaststation.com/intl/en/q2a-pro.php
这就是抢劫了

你好,请问你的视频在《生物信息学编程实战》关于fastq部分在哪里?我没找到
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2019-9-16 15:44 , Processed in 0.047550 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.