这道题要求求出一个fastq文件中序列的cg含量

with open("Test1.fastq","r") as f:lines = f.readlines()
seq = []
index = []
cg_n = []
cg_percentage = []
head = ['Read', 'CG']
cg = open("cg.txt","w")
#这里精髓,取出每条序列的标题
for line in lines:if lines.index(line) %4== 0:index.append(line.split(" ")[0].split(":",2)[2])
for line in lines:if lines.index(line)% 4 == 1:seq.append(line)
for line in seq:line = line.strip()counter = 0counter2 = 0for cg in line:      if cg =="C" or cg =="G":counter += 1     cg_n.append(counter)percent3 = float(counter/len(line))percent3 = ('%.3f') % percent3 #格式化三位小数cg_percentage.append(percent3)
# 将两个列表变成字典 然后排序
dictionary = dict(zip(index, cg_percentage))
d = sorted(dictionary.items(), key=lambda d: d[1],reverse = True) #
d = [('Read', 'CG')] + list(d)f = open('1-1.txt','w')
for i in d:i = list(i)i[1] = "\t"+i[1]  f.writelines(i)f.writelines("\n")
f.close()

这个方法其实很蠢,为什么不用字典呢?
另外用到了Counter函数,很方便

注意这种格式化输出的方法:
'%.3f'% per
# 8.13 整理 逐行读取
from collections import Counter
with open("c:/Test1.fastq","r") as f:count = 0percentage = {}while True:        line = f.readline().strip()count += 1if count % 4 == 1:index =(':'.join(line.split(':')[2:6]))if count % 4 == 2:per = (Counter(line)['C'] + Counter(line)['G'])/len(line)per = ('%.3f'% per)percentage[index] = per # 这一行如果不缩进就会有问题 ???if len(line) == 0:break
percentage = sorted(percentage.items(), key=lambda x: x[1],reverse = True)
with open('c:/1-1.txt','w') as f:f.write('Read'+ "\t"+ "CG" + '\n')for i in percentage:        f.write(i[0]+ "\t" + i[1]+'\n' )

生信脚本练习(5)求fastq文件的cg含量相关推荐

  1. linux怎么查看一个bam文件,生信分析过程中这些常见文件的格式以及查看方式你都知道吗?...

    原标题:生信分析过程中这些常见文件的格式以及查看方式你都知道吗? 生信分析过程中,会与很多不同格式的文件打交道,除了原始测序数据 fastq 之外,还需要准备基因组文件 fasta 格式和基因注释文件 ...

  2. **生信自学记录1——获取Fastq格式的反向互补序列**

    ` 生信自学记录1--获取Fastq格式的反向互补序列 总共分为三步 1.读取基因序列的str格式,返回反向互补序列str 2.打开fastq格式的文本提取基因序列,返回互补序列list 3.读取互补 ...

  3. 生信分析过程中这些常见文件(fastq/bed/gtf/sam/bam/wig)的格式以及查看方式你都知道吗?

    生信分析过程中,会与很多不同格式的文件打交道,除了原始测序数据fastq之外,还需要准备基因组文件fasta格式和基因注释文件gtf格式.在分析的过程中还会有众多中间文件的生成,如bed.bed12. ...

  4. 生信分析过程中这些常见文件的格式以及查看方式你都知道吗?

    生信分析过程中,会与很多不同格式的文件打交道,除了原始测序数据fastq之外,还需要准备基因组文件fasta格式和基因注释文件gtf格式.在分析的过程中还会有众多中间文件的生成,如bed.bed12. ...

  5. python生信脚本之fasta序列反向互补

    1.如何使用python把fasta序列进行反向互补 后续还要再优化 def fasta2dict(fasta_name):with open(fasta_name) as fa:fa_dict = ...

  6. 生信宝典文章集锦,一站式学习生信!众多干货,有趣有料

    生信的作用越来越大,想学的人越来越多,不管是为了以后发展,还是为了解决眼下的问题.但生信学习不是一朝一夕就可以完成的事情,也许你可以很短时间学会一个交互式软件的操作,却不能看完程序教学视频后就直接写程 ...

  7. 生信宝典教程大放送,一站式学习生信技术

    生物信息学包含生物数据分析.数据可视化.重复工作程序化,是生物.医学科研必备的技能之一.生信宝典精心组织生信学习系列教程.生信工具精品教程,通过大量的生信例子.关键的注释.浓缩的语句和录制的视频帮助快 ...

  8. 送书 | 知乎阅读300w+的生信学习指南(更新版)

    先送书 在上周的留言送书活动中,恭喜下面这位读者获得书籍"Oracle高性能系统架构实战大全",请及时与生信宝典编辑(shengxinbaodian)联系. 2020过去三分之一了 ...

  9. 生信宝典:生物信息学习系列教程、视频、资源

    生信的作用越来越大,想学的人越来越多,不管是为了以后发展,还是为了解决眼下的问题.但生信学习不是一朝一夕就可以完成的事情,也许你可以很短时间学会一个交互式软件的操作,却不能看完程序教学视频后就直接写程 ...

最新文章

  1. 《因果学习周刊》第9期:因果学习中的工具变量
  2. 帮助你高效开发Ajax应用的超酷jQuery插件 - AjaxML
  3. VTK:冰激凌用法实战
  4. sklearn预处理转化流水线
  5. springboot抑制log中的info信息
  6. java中组合_java中组合模式详解和使用方法
  7. amazons3 检查连接是否_钢筋机械连接接头如何检查是否合格?抽检数量、合格率是多少?...
  8. 【需求工程】需求管理
  9. 萝卜视频源码前后端带视频演示更换播放内核到3.2.6
  10. Winform开发框架中工作流模块的动态处理
  11. 学习哪一款EDA软件画PCB电路板比较好?AD、PADS与Allegro的比较
  12. 如何提高mysql的update速度_如何提高数据库update更新的速度
  13. Vue项目--仿大麦网移动端
  14. 请教FlashCs3导入图片时出现无法导入问题。
  15. 诺威健康IPO招股书失效:称将继续录得巨额亏损,TPG持股74.6%
  16. 快收藏ReactOS 新手指南
  17. DataFrame数据选取超全攻略
  18. vue项目中的小知识--快捷键-vue插件版本号--vscode插件等
  19. 淮南师范学院计算机组成原理试卷,淮南师范学院物化试卷J
  20. 上海高校计算机二级考纲,上海市普通高校计算机等级考试考纲

热门文章

  1. 作为编程爱好者的我,为什么痴迷于编程?
  2. android 阻止系统进入深度休眠(不影响正常休眠逻辑)
  3. Python中导入cx-Oracle文件配置
  4. 第1章 从新浪微博聊起多端应用
  5. 斯蒂文斯理工学院计算机科学硕士,美国史蒂文斯理工学院计算机科学专业申请(附案例)...
  6. 【华人学者风采】刘康 中国科学院自动化所
  7. 启动http报错AH00558:Could not reliably determine the server‘s fully qualified domain name using解决办法
  8. Python 创建一个类实现机器人跳舞
  9. 手机号格式处理(正则)
  10. with 语句的二三事