玉米中的元基因调控网络突出了功能上相关的调控相互作用。/biosample_parser.py

总结:

  1. 导入模块和命令行参数设置

    • 使用 argparse 处理命令行输入,获取输入文件路径。
    • 导入必要的模块,如 BeautifulSoup 用于解析XML。
  2. 打开文件并解析XML

    • 读取输入的XML文件,并用 BeautifulSoup 解析为可操作的结构。
  3. 遍历 XML 数据并提取信息

    • 遍历 XML 文件中的每个 BioSample 元素,提取其中的 accessiontitletissuegenotype 等信息。
    • 输出格式为表格形式,其中各字段通过制表符分隔。

脚本的整体功能:

这个脚本的主要功能是从一个包含生物样本信息的XML文件中提取每个生物样本的相关数据,并将这些信息输出为表格格式。具体包括:

  • 生物样本ID(accession)
  • 标题(title)
  • 组织类型(tissue)
  • 基因型(genotype)

通过命令行传递一个XML文件路径,脚本会解析该文件并打印出提取的信息。

第一部分:导入模块和设置命令行参数

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import sys
import os.path as op
from bs4 import BeautifulSoupif __name__ == '__main__':import argparseparser = argparse.ArgumentParser(formatter_class = argparse.ArgumentDefaultsHelpFormatter,description = 'fasta utilities')parser.add_argument('fi', help = 'input biosample xml')args = parser.parse_args()

解析

  1. #!/usr/bin/env python
    这行是Shebang,用于指定脚本的解释器。在Unix-like系统中,这行代码告诉操作系统使用 python 来运行脚本。

  2. # -*- coding: utf-8 -*-
    这是声明文件编码为UTF-8,确保脚本能够正确处理非ASCII字符,如中文或其他特殊字符。

  3. import osimport sysimport os.path as op
    这些是标准的Python模块,用于文件和系统操作:

    • os:用于操作文件和目录。
    • sys:提供对Python解释器和操作系统的访问。
    • os.path:用于路径操作,提供对文件路径的处理功能。
  4. from bs4 import BeautifulSoup
    bs4(BeautifulSoup库)导入 BeautifulSoup 类。BeautifulSoup 是一个Python库,用于从HTML或XML文件中提取数据,解析XML结构,常用于网页抓取和数据提取。

  5. if __name__ == '__main__':
    这一行确保当脚本直接运行时,if 语句下的代码会执行。如果该脚本被作为模块导入到其他Python脚本中,这部分代码则不会执行。

  6. import argparse
    argparse 是一个Python模块,用于解析命令行参数。脚本通过 argparse 处理传入的参数,允许用户在命令行中指定输入文件路径。

  7. parser = argparse.ArgumentParser(...)
    创建一个 ArgumentParser 对象,用于处理命令行参数。

    • formatter_class = argparse.ArgumentDefaultsHelpFormatter:设置帮助信息的格式,使得默认值也能显示在帮助文档中。
    • description = 'fasta utilities':设置脚本的描述,用于显示在帮助信息中。
  8. parser.add_argument('fi', help = 'input biosample xml')
    add_argument() 方法定义了命令行参数。这里的 fi 是一个必需的参数,表示输入文件,用户必须提供一个XML文件作为输入,文件路径将被传递给程序。

  9. args = parser.parse_args()
    parse_args() 解析命令行参数,并将其存储在 args 对象中。用户输入的参数将保存在 args 对象的属性中。

总结:

这一部分的代码实现了:

  • 导入所需的模块。
  • 设置命令行参数,使得脚本能够从命令行接收输入的XML文件路径。

这部分的目的是准备输入并设置命令行参数,确保后续代码能够读取指定的XML文件。

很好!接下来是第二部分:打开输入文件并解析XML内容

第二部分:打开输入文件并解析XML内容

fhi = open(args.fi, 'r')
soup = BeautifulSoup(fhi, 'xml')
print("BioSample\tTitle\ttissue\tgenotype")

解析

  1. fhi = open(args.fi, 'r')

    • args.fi 是通过命令行参数传递的输入文件路径。open() 函数以只读模式('r')打开该文件,并将文件对象赋值给 fhi 变量。
    • args.fi 对应的是命令行输入的文件路径,应该是一个XML文件(例如,包含生物样本信息的XML文件)。
  2. soup = BeautifulSoup(fhi, 'xml')

    • 使用 BeautifulSoup 解析打开的XML文件。'xml' 参数告诉 BeautifulSoup 解析XML格式,而不是HTML格式。
    • soup 现在是一个 BeautifulSoup 对象,它表示整个XML文档,可以通过它进行进一步的数据提取操作。
  3. print("BioSample\tTitle\ttissue\tgenotype")

    • 打印表头信息。这个表头将用于输出每个生物样本的相关信息,包括:BioSample(生物样本ID)、Title(标题)、tissue(组织类型)和 genotype(基因型)。
    • 每个字段之间用制表符(\t)分隔,确保输出符合表格格式,便于后续的处理或查看。

总结:

这一部分代码完成了:

  • 打开用户指定的XML文件。
  • 使用BeautifulSoup解析XML内容,生成 soup 对象。
  • 打印表头,为后续的数据输出做准备。

这一部分的核心功能是读取和解析XML文件,以便后续提取数据。

很好!接下来是第三部分:遍历 XML 数据并提取信息

第三部分:遍历 XML 数据并提取信息

for bs in soup.BioSampleSet.children:if len(bs) == 1: continuebsid = bs['accession']title = bs.Description.Title.string.strip("\"")tissue = ''genotype = ''if bs.Attributes:for x in bs.Attributes.children:if x.string.strip() == '': continueif x['attribute_name'] == 'tissue':tissue = x.string.strip()elif x['attribute_name'] == 'genotype':genotype = x.string.strip()print("\t".join([bsid, title, tissue, genotype]))

解析

  1. for bs in soup.BioSampleSet.children:

    • 这行代码遍历 soupBioSampleSet 元素的所有子元素。soup.BioSampleSet 返回XML中名为 BioSampleSet 的标签下的所有内容。
    • .children 属性返回一个可迭代的对象,包含了 BioSampleSet 标签下的所有子元素(可能是 <BioSample> 标签)。
  2. if len(bs) == 1: continue

    • 这一行检查当前元素(bs)是否只有一个子元素。如果是,则跳过当前循环,继续处理下一个元素。此判断通常用于过滤掉没有有效数据的元素(例如,空的或格式不正确的元素)。
  3. bsid = bs['accession']

    • 获取当前 BioSample 元素的 accession 属性值,并将其赋值给变量 bsid。这个值通常是生物样本的唯一标识符。
  4. title = bs.Description.Title.string.strip("\"")

    • 提取当前 BioSample 元素中的 Description -> Title 字段的字符串值,并移除两边的引号(如果有的话)。这通常是该生物样本的描述或标题。
  5. tissue = ''genotype = ''

    • 初始化 tissuegenotype 为空字符串,稍后会从 Attributes 中获取具体值。
  6. if bs.Attributes:

    • 检查当前 BioSample 是否有 Attributes 元素。如果存在,则继续从中提取 tissuegenotype 信息。
  7. for x in bs.Attributes.children:

    • 遍历 Attributes 元素的所有子元素。每个子元素代表一个属性,例如 tissuegenotype
  8. if x.string.strip() == '': continue

    • 跳过空字符串。此步骤用于确保只处理非空的属性值。
  9. if x['attribute_name'] == 'tissue': tissue = x.string.strip()

    • 如果当前属性的名称是 tissue,则将其值提取出来并赋给变量 tissue
  10. elif x['attribute_name'] == 'genotype': genotype = x.string.strip()

    • 如果当前属性的名称是 genotype,则将其值提取出来并赋给变量 genotype
  11. print("\t".join([bsid, title, tissue, genotype]))

    • 输出每个生物样本的信息。bsidtitletissuegenotype 通过制表符(\t)连接,确保每个字段在输出时对齐,形成表格格式。

总结:

这一部分的代码完成了:

  • 遍历每个生物样本,提取其 accessiontitletissuegenotype 信息。
  • 对每个生物样本的属性进行过滤和提取,只处理有效的、非空的 tissuegenotype 信息。
  • 最终,输出所有生物样本的相关信息,以制表符分隔的格式进行打印。

这部分代码的核心是从解析后的XML数据中提取关键字段,并将其以表格格式输出。

你理解这一部分了吗?如果清楚,我们可以继续讨论其他部分。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/500712.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SSM-Spring-AOP

目录 1 AOP实现步骤&#xff08;以前打印当前系统的时间为例&#xff09; 2 AOP工作流程 3 AOP核心概念 4 AOP配置管理 4-1 AOP切入点表达式 4-1-1 语法格式 4-1-2 通配符 4-2 AOP通知类型 五种通知类型 AOP通知获取数据 获取参数 获取返回值 获取异常 总结 5 …

idea( 2022.3.2)打包报错总结

一 报错 class lombok.javac.apt.LombokProcessor (in unnamed module 0x4fe64d23) cannot access class com.sun.tools.javac.processing.JavacProcessingEnvironment (in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.processing …

攻防靶场(29):目录权限和文件权限 ICMP

目录 1. 侦查 1.1 收集目标网络信息&#xff1a;IP地址 1.2 主动扫描&#xff1a;扫描IP地址段 1.3 搜索目标网站 2. 初始访问 2.1 利用面向公众的应用 3. 权限提升 3.1 有效账户&#xff1a;本地账户 3.2 滥用特权控制机制&#xff1a;Sudo和Sudo缓存 靶场下载地址&#xff1a…

C++ 面向对象编程:多态、虚函数原理

多态的通用描述便是&#xff0c;使用父类指针调用函数&#xff0c;可以根据对象类型来调用对应类型函数&#xff0c;我们分几个步骤来理解&#xff0c;先看下类的占用空间&#xff0c;然后拓展到虚函数对应数组&#xff0c;最后理解多态的原理。 我们先来看下在多态中没有任何…

王老吉药业SRM系统上线 携手隆道共启战略合作新篇章

12月27日&#xff0c;广州王老吉药业股份有限公司&#xff08;简称“王老吉药业”&#xff09;SRM项目上线启动会&#xff0c;在王老吉科普教育基地——“吉园”隆重举行。广药集团纪委主任陈耕、王老吉药业总工程师黄晓丹、隆道公司总裁吴树贵、项目经理赵耀、供应商代表郭伟及…

JavaScript基础 -- 变量、作用域与内存

1 原始值与引用值 原始值就是最简单的数据&#xff0c;引用值则是由多个值构成的对象。在把一个值赋给变量时&#xff0c;JavaScript引擎必须要确定这个值是原始值还是引用值 原始值大小固定&#xff0c;保存在栈内存上&#xff1b;引用值是对象&#xff0c;存储在堆内存上 它…

SQL—替换字符串—replace函数用法详解

SQL—替换字符串—replace函数用法详解 REPLACE() 函数——查找一个字符串中的指定子串&#xff0c;并将其替换为另一个子串。 REPLACE(str, old_substring, new_substring)str&#xff1a;要进行替换操作的原始字符串。old_substring&#xff1a;要被替换的子串。new_substri…

[极客大挑战 2019]Http 1

进入环境&#xff1a; 检查源码发现有一个链接&#xff0c;但是这里没有绑定&#xff0c;需要手动跳转&#xff0c;打开后&#xff0c;发现提示&#xff1a; 这里就是需要我们从https://Sycsecret.buuoj.cn来访问它 因此我们抓包&#xff0c;使用referer&#xff1a;服务器伪造…

吾杯网络安全技能大赛——Misc方向WP

吾杯网络安全技能大赛——Misc方向WP Sign 题目介绍: 浅浅签个到吧 解题过程&#xff1a; 57754375707B64663335376434372D333163622D343261382D616130632D3634333036333464646634617D 直接使用赛博橱子秒了 flag为 WuCup{df357d47-31cb-42a8-aa0c-6430634ddf4a} 原神启动…

如何查看下载到本地的大模型的具体大小?占了多少存储空间:Llama-3.1-8B下载到本地大概15GB

这里介绍一下tree命令&#xff0c;可以方便的查看文件目录结构和文件大小。 命令行tree的具体使用&#xff0c;请参考笔者的另一篇博客&#xff1a;深入了解 Linux tree 命令及其常用选项&#xff1a;Linux如何显示目录结构和文件大小&#xff0c;一言以蔽之&#xff0c;sudo a…

【Java回顾】Day2 正则表达式----异常处理

参考资料&#xff1a;菜鸟教程 https://www.runoob.com/java/java-exceptions.html 正则表达式 有一部分没看完 介绍 字符串的模式搜索、编辑或处理文本java.util.regex包&#xff0c;包含了pattern和mathcer类&#xff0c;用于处理正则表达式的匹配操作。 捕获组 把多个字符…

招银网路Java后端一面,难度有点大!

这是一位武汉理工大学同学的招银网络一面面经,同样附带超详细的参考答案。大家可以用来查漏补缺,针对性地补短板。 招银网络一面还是比较简单的,基本都是一些比较重要且高频的常规八股,项目问的不多。到了二面的时候, 会开始主要考察你的项目。 1、自我介绍 自我介绍一般…

xadmin后台首页增加一个导入数据按钮

xadmin后台首页增加一个导入数据按钮 效果 流程 1、在添加小组件中添加一个html页面 2、写入html代码 3、在urls.py添加导入数据路由 4、在views.py中添加响应函数html代码 <!DOCTYPE html> <html lang

arcgis模版空库怎么用(一)

这里以某个项目的数据为例&#xff1a; 可以看到&#xff0c;属性表中全部只有列标题&#xff0c;无数据内容 可能有些人会认为空库是用来往里面加入信息的&#xff0c;其实不是&#xff0c;正确的用法如下&#xff1a; 一、下图是我演示用的数据&#xff0c;我们可以看到其中…

GJB系统设计说明模板

GJB系统设计说明模板及详解 1 范围 1.1 标识 1.2 系统概述 1.3 文档概述 2 引用文档 GJB XXX XXX XXX&#xff1b; XXX XXX。 前2章通用不再赘述 3 系统级设计决策 系统设计决策的目的:对系统规格说明中的关键需求(包括功能、质量属性和设计约束)进行分析,得到系统级概念性架构…

某小程序sign签名参数逆向分析

文章目录 1. 写在前面2. 接口分析3. 分析还原 【&#x1f3e0;作者主页】&#xff1a;吴秋霖 【&#x1f4bc;作者介绍】&#xff1a;擅长爬虫与JS加密逆向分析&#xff01;Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Python…

2000-2020年各省财政一般预算支出面板数据

2000-2020年各省财政一般预算支出面板数据 1、时间&#xff1a;2000-2020年 2、来源&#xff1a;国家统计局 3、指标&#xff1a;年份、省份、地方财政一般预算支出 4、范围&#xff1a;31省 指标解释&#xff1a;地方财政一般预算支出‌是指地方ZF根据预算安排&#xff0…

[羊城杯 2024]1z_misc

得到FL4G.zip和天机不可泄露.txt文件&#xff0c;其中压缩包需要解压密码&#xff1a; 二十八星宿&#xff1a; 东方苍龙七宿&#xff1a;角、亢、氐、房、心、尾、箕 南方朱雀七宿&#xff1a;鬼、井、柳、星、张、翼、轸 西方白虎七宿&#xff1a;奎、娄、胃、昴、毕、觜、…

右值引用全面剖析

为什么要有右值引用&#xff0c;右值引用出现前程序员们的困境&#xff1a; 在右值引用出现以前&#xff0c;想要把一块内存空间里的内容放到另一块内存空间&#xff0c;只能再开辟一块内存&#xff0c;然后将原来内存里的内容复制到新开辟的内存里&#xff0c;然后再把原来的…

mac下载Homebrew安装nvm

通过Homebrew安装 - 国内下载地址 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"安装nvm brew install nvm 配置nvm环境变量 export NVM_DIR“$HOME/.nvm” [ -s “/usr/local/opt/nvm/nvm.sh” ] && . “/usr/…