生信技能树-task1-人类基因组外显子区域长度

这篇博客介绍了如何使用Perl、Python和R三种编程语言,从ftp.ncbi.nlm.nih.gov/pub/CCDS/current_human/CCDS.current.txt文件中统计人类基因组外显子区域的总长度。通过读取文件、处理数据并利用各自语言的特性去重,最终得出外显子总长度为35185772。三种语言的执行时间分别为0m39.897s、0m43.192s和6.63437s。

目标:统计人类基因组外显子区域长度

题目数据来源为:ftp://ftp.ncbi.nlm.nih.gov/pub/CCDS/current_human/CCDS.current.txt

perl

open F,"CCDS.current.txt";
while(<F>){#一行一行读取数据
  next if /^#/;#pass掉带#符号开头的行,即首行
  chomp;#去掉末尾的换行符
  @arr=split /\t/;#以制表符切割读取的每一行数据
  next unless /\[(.*?)\]/;#无外显子坐标的行pass
  @start_end=split /,\s+/,$1;#切割文件的第10列
  foreach(@start_end){
    @loci=split /-/;#以“-”切割每个外显子
    foreach(@loci[0]..@loci[1]){$hash{"$arr[0]:$_"}=1;}#以染色体:坐标符号 格式存入perl哈希中,目的去重
  }
}
close F;

$length=keys %hash;#得到哈希键值长度
print "外显子总长度:$length\n";

输出结果

外显子总长度:35185772

用时  0m39.897s


python3 

import re

chr_pos = set()#定义set数据,目的去重
with open("CCDS.current.txt", 'r') as file:
    for line in file:
        if re.match('^#',line): 
            continue #跳过首行
        line = line.split("\t")
        if line[9] != "-":#pass掉第10列为"-
内容概要:本文研究了计及碳排放的多微网电能交互分布式运行策略,提出了一种基于交替方向乘子法(ADMM)的优化方法,旨在实现多微电网系统在满足能源供需平衡的同时降低碳排放。文中构建了包含分布式电源、储能系统、可控负荷及碳排放约束的多微网协同优化模型,通过ADMM算法将全局优化问题分解为各微网子系统独立求解的子问题,实现分布式协同调度,在保障各微网自治性的同时兼顾系统整体的经济性与低碳性。研究通过Matlab代码完成了算法仿真,验证了所提策略在提升能源利用效率、减少碳排放、增强系统鲁棒性与可扩展性方面的有效性,为低碳化、去中心化的能源互联网运行提供了理论支持与实践参考。; 适合群:具备电力系统分析、优化理论及Matlab编程基础的科研员、电气工程及相关专业的研究,以及从事智慧能源、分布式能源系统规划与运行的工程技术员。; 使用场景及目标:①应用于多微电网系统的分布式能量管理与协同优化调度;②支持“双碳”目标下的低碳电网运行策略设计与政策评估;③为ADMM等分布式优化算法在能源系统中的工程化应用提供完整的模型构建、算法实现与仿真验证案例。; 阅读建议:读者应结合Matlab代码深入理解ADMM算法的迭代流程、拉格朗日函数构造与收敛条件设定,重点关注模型中碳排放因子的引入方式、变量分解机制与子问题求解过程,建议通过调整微网数量、碳价参数及通拓扑结构进行多场景仿真,以深化对分布式协同机制与环保经济权衡关系的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值