task3a_gmt函数

gmt文件定义

gmt(Gene Matrix Transposed,基因矩阵转置)是多列注释文件,列与列之间都是Tab制表符分割。

  • 第1列: 是基因所属基因集的名字,可以是通路名字,也可以是自己定义的任何名字。
  • 第2列 :一般是描述信息,说明这套基因列表从哪里收集的,也可以为空或者用NA表示。官方提供的格式是URL,也可以是任意字符串。
  • 第3列-第n列: 是基因集内所有基因的名字,有几个写几列。
    每一行的列数可以不一样,主要是基因集内的基因数量不一样。
library(clusterProfiler)
data(gcSample) #加载gcSample数据集

#第一列用X1-X8,第二列无内容用‘NA’代替,第三列-第N列为基因的entrenz id
#文件以制表符分隔开
get_gmt <- function(gcSample,filename)
一个下载请求, 一、请求网址如下: https://console.his.XXX.com/asa/gateway/S00000000000000000000000000000605:VULWorkbenchService/vuln-workbench/servlet/download?dlType=RiskWarningDetailExport&file=riskWarningProcessData&RiskWarningQueryVO={“warningName”%3A"“%2C"rectificationOwner”%3A"“%2C"discovererId”%3A"“%2C"discoverToolCode”%3A[]%2C"orderList"%3A[]%2C"vulnSourceType"%3A[]%2C"warningSlaStatus"%3A[]%2C"warningPriority"%3A[]%2C"warningStatus"%3A[]%2C"hwItVdIds"%3A[]%2C"cautionCount"%3A[]%2C"confirmSlaStatus"%3A[]%2C"discoverOrganizationCode"%3A[]%2C"warningDateStart"%3A"2024-05-22"%2C"warningDateEnd"%3A"2025-05-22"%2C"dimensionSetCode"%3A"ALL"%2C"dimensionTreeCode"%3A"EAMAP"%2C"dimensionCode"%3A"com.XXX.devops.ione"%2C"dimensionLevel"%3A"5"%2C"dimensionType"%3A"0"%2C"dimensionDepth"%3A"5"%2C"delegateTenantIds"%3A"11111111111111111111111111111111%2C88888888888888888888888888888888"%2C"delegateTenantNames"%3A"XXX技术有限公司%2CHIS平台运营商"%2C"warningIds"%3A[]} 请求方法: GET 状态代码: 200 OK 远程地址: 10.116.9.249:443 引荐来源网址政策: strict-origin-when-cross-origin 二、响应标头如下: HTTP/1.1 200 OK Date: Thu, 22 May 2025 12:26:58 GMT Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet Content-Length: 51267 Connection: keep-alive Keep-Alive: timeout=60 Accept-Ranges: bytes Content-Disposition: attachment; filename=“riskWarningProcessData20250522202658.xlsx” Access-Control-Allow-Origin: https://console.his.XXX.com Access-Control-Expose-Headers: x-login-url, x-csrf-token Access-Control-Allow-Methods: GET,POST,PUT,DELETE,OPTIONS Access-Control-Max-Age: 1800 Access-Control-Allow-Credentials: true X-Server-Process-Time: 1.1269 X-Upstream-Process-Time: 1.1259 X-ALB-SERVER: ALB 三、请求标头如下: GET /asa/gateway/S00000000000000000000000000000605:VULWorkbenchService/vuln-workbench/servlet/download?dlType=RiskWarningDetailExport&file=riskWarningProcessData&RiskWarningQueryVO=%7B%22warningName%22%3A%22%22%2C%22rectificationOwner%22%3A%22%22%2C%22discovererId%22%3A%22%22%2C%22discoverToolCode%22%3A%5B%5D%2C%22orderList%22%3A%5B%5D%2C%22vulnSourceType%22%3A%5B%5D%2C%22warningSlaStatus%22%3A%5B%5D%2C%22warningPriority%22%3A%5B%5D%2C%22warningStatus%22%3A%5B%5D%2C%22hwItVdIds%22%3A%5B%5D%2C%22cautionCount%22%3A%5B%5D%2C%22confirmSlaStatus%22%3A%5B%5D%2C%22discoverOrganizationCode%22%3A%5B%5D%2C%22warningDateStart%22%3A%222024-05-22%22%2C%22warningDateEnd%22%3A%222025-05-22%22%2C%22dimensionSetCode%22%3A%22ALL%22%2C%22dimensionTreeCode%22%3A%22EAMAP%22%2C%22dimensionCode%22%3A%22com.XXX.devops.ione%22%2C%22dimensionLevel%22%3A%225%22%2C%22dimensionType%22%3A%220%22%2C%22dimensionDepth%22%3A%225%22%2C%22delegateTenantIds%22%3A%2211111111111111111111111111111111%2C88888888888888888888888888888888%22%2C%22delegateTenantNames%22%3A%22%E5%8D%8E%E4%B8%BA%E6%8A%80%E6%9C%AF%E6%9C%89%E9%99%90%E5%85%AC%E5%8F%B8%2CHIS%E5%B9%B3%E5%8F%B0%E8%BF%90%E8%90%A5%E5%95%86%22%2C%22warningIds%22%3A%5B%5D%7D HTTP/1.1 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3;q=0.7 Accept-Encoding: gzip, deflate, br, zstd Accept-Language: zh-CN,zh;q=0.9 Connection: keep-alive Cookie: _frid=81291edc9ec445b6a175c06220133f06; iam_grayroute=AD58C955C5C4F9508CDAF98A6C3364C61A60099FADDED4DC; iam_sid_business=2049380137f4fc5b5d91301ee63e38d1d13da6346c71d5e6658d5cec18b96df2d6639648fb0537ec36c9; fingerprintsId=678752da-da25-468a-92cb-778cd8af85f9; idss_cid=678752da-da25-468a-92cb-778cd8af85f9; cbg_wp_lang=zh_CN; HW3MS_think_language=zh-cn; hic_app_id=com.XXX.wisedevops; ztsg_ruuid=5dad40bf294eb86d-d0c0-4900-8999-6834a99cee9b; lang=zh; env_token=pro; EnterpriseId=11111111111111111111111111111111; login_flag=in; guest=false; p60089897_currentRoleXXX.paas.portal=default; hic_lang=zh_CN; console_his_XXX_com_asa_gateway_sticky=fb4dd6bee948243543b3c87a422817999f0f14943bd2c43f3a17a8bee7e147a59a2319b020f406557d7a73fc9df6d2ac:3; HW3MS_CONNECT_SESSION=3onbk815tsi2tar4nhonjlv5a6; X-Auth-Token=f676f1996c410ea8e681338085b730c98a45a3f58c68021a; IAM-Csrf-Token=9d534a9aac23e501591909bac6c97ecce19f4f72fc41d686; prod_J_SESSION_ID=2F-D1-8B-54-C6-6C-55-1F-8D-DC-D8-35-4B-56-3C-49-56-FD-D6-CA-E5-A7-7F-1D-4B-8B-C0-51-A9-F5-A3-40-F3-47-12-6A-43-88-9D-0D-95-3E-6B-8A-C3-94-4E-F0-BD-B0-89-4D-C4-54-80-37; prod_agencyID=p60089897; u_depart=%E5%8D%8E%E4%B8%BA%E6%8A%80%E6%9C%AF%2F%E7%BB%88%E7%AB%AFBG%2F%E7%BB%88%E7%AB%AF%E4%BA%91%E6%9C%8D%E5%8A%A1%E9%83%A8%2F%E7%BB%88%E7%AB%AF%E4%BA%91%E6%9C%8D%E5%8A%A1%E7%A5%A5%E4%BA%91%E4%B8%8E%E5%A4%A7%E6%95%B0%E6%8D%AE%E5%B9%B3%E5%8F%B0%E9%83%A8%2F%E7%BB%88%E7%AB%AF%E4%BA%91%E6%9C%8D%E5%8A%A1%E5%9F%BA%E7%A1%80%E4%BA%91%E5%B9%B3%E5%8F%B0%E5%BC%80%E5%8F%91%E9%83%A8; prod_cftk=AOB 四、根据上述一二三点编写一个python脚本每天5点请求下载一次。
05-23
<think>我们讨论的是ESP32的看门狗功能,特别是`esp_task_wdt_init()`函数。根据引用内容,该函数用于初始化任务看门狗定时器(Task Watchdog Timer, TWDT),可以设置超时时间和是否在超时时触发系统重启。 ### `esp_task_wdt_init()`函数介绍 `esp_task_wdt_init()`函数属于ESP32的FreeRTOS任务看门狗机制,用于监控多个任务是否正常运行。其主要功能包括: 1. **初始化TWDT**:设置看门狗的超时时间(单位:秒)。 2. **配置恐慌处理**:决定超时发生时是否自动重启系统。 3. **启动看门狗**:调用此函数后,TWDT开始运行,但需要显式添加要监视的任务(通过`esp_task_wdt_add()`)[^1][^2]。 #### 函数原型 ```c esp_err_t esp_task_wdt_init(uint32_t timeout, bool panic); ``` - **参数**: - `timeout`:看门狗超时时间(单位:秒)。必须大于0。 - `panic`:布尔值,若为`true`,则超时触发系统重启(恐慌处理);若为`false`,仅记录错误不重启。 - **返回值**: - `ESP_OK`:初始化成功。 - `ESP_ERR_INVALID_STATE`:TWDT已初始化。 - `ESP_ERR_INVALID_ARG`:超时时间无效(如为0)[^1][^2]。 #### 工作流程 1. **初始化后**:TWDT开始倒计时,但未监控任何任务。 2. **添加任务**:通过`esp_task_wdt_add()`将任务注册到TWDT。每个注册任务必须在超时时间内“喂狗”(调用`esp_task_wdt_reset()`)。 3. **超时处理**: - 若任一注册任务未及时喂狗,TWDT超时。 - 若`panic=true`,系统重启;否则仅打印错误日志[^1][^2]。 ### 使用示例 以下代码展示如何初始化和使用TWDT监控主任务(即`loop()`所在任务): ```cpp #include <esp_task_wdt.h> // 包含任务看门狗头文件 void setup() { Serial.begin(115200); // 初始化TWDT:超时时间5秒,超时触发重启 if (esp_task_wdt_init(5, true) != ESP_OK) { Serial.println("看门狗初始化失败!"); return; } // 将当前任务(setup/loop所在任务)添加到TWDT监控 if (esp_task_wdt_add(NULL) != ESP_OK) { // NULL表示当前任务 Serial.println("添加任务失败!"); } } void loop() { // 定期喂狗(至少每5秒一次) esp_task_wdt_reset(); // 模拟实际工作(例如:读取传感器) delay(100); } ``` ### 关键注意事项 1. **喂狗间隔**:所有注册任务必须在超时时间内调用`esp_task_wdt_reset()`。例如超时为5秒,则任务至少每4秒喂狗一次。 2. **多任务场景**: - 每个需监控的任务必须单独调用`esp_task_wdt_add()`注册。 - 若任一任务未及时喂狗,TWDT超时将触发恐慌处理(重启)[^1][^2]。 3. **错误处理**: - 初始化失败可能因参数无效(如`timeout=0`)或重复初始化。 - 添加任务失败可能因任务已添加或TWDT未初始化。 4. **任务删除**:任务结束时需调用`esp_task_wdt_delete()`移除监控,避免资源泄漏。 ### 测试建议 - **正常情况**:喂狗及时,系统无重启。 - **模拟故障**:在`loop()`中插入长延时(如`delay(6000)`),观察是否触发重启(串口输出复位日志)。 §§相关问题§§ 1. 如何在多任务环境中为每个任务添加看门狗监控? 2. `esp_task_wdt_init()`能否多次调用?如何处理重复初始化? 3. 看门狗超时后,如何获取崩溃前的任务堆栈信息? 4. 如何动态调整看门狗超时时间? </think>### `esp_task_wdt_init()` 函数详解 `esp_task_wdt_init()` 是 ESP32 任务看门狗定时器(Task Watchdog Timer, TWDT)的核心初始化函数,属于 ESP-IDF 框架的一部分,可直接在 Arduino 环境中使用。以下是详细说明: #### 函数原型 ```c esp_err_t esp_task_wdt_init(uint32_t timeout, bool panic); ``` #### 参数说明 1. **`timeout`** (单位:秒): - 看门狗超时时间,范围:$1 \leq \text{timeout} \leq 60$ - 典型值:3-10秒,需大于任务最大执行周期 - 设置过小会导致频繁误重启,过大则故障响应延迟[^1] 2. **`panic`** (布尔值): - `true`:超时触发硬件复位(系统重启) - `false`:超时仅触发中断/日志,不重启系统 - 生产环境建议设为 `true`[^2] #### 返回值 - `ESP_OK`:初始化成功 - `ESP_ERR_INVALID_ARG`:参数错误(如 timeout=0) - `ESP_ERR_NO_MEM`:内存分配失败 #### 工作原理 函数初始化 TWDT 定时器,其计时周期为: $$T_{\text{watchdog}} = \text{timeout} \times 80\text{MHz}$$ 当定时器溢出时,根据 `panic` 参数执行: - 若 `panic=true`:触发系统级复位(RTC 看门狗复位) - 若 `panic=false`:触发 TWDT 中断(可自定义处理) #### 使用示例 ```cpp #include <esp_task_wdt.h> void setup() { Serial.begin(115200); // 初始化TWDT:超时5秒,超时自动重启 esp_err_t ret = esp_task_wdt_init(5, true); if (ret != ESP_OK) { Serial.printf("看门狗初始化失败! 错误码: 0x%x\n", ret); while(1); // 阻塞执行 } // 将当前任务添加到看门狗监控 esp_task_wdt_add(NULL); } void loop() { // 必须周期性喂狗(<5秒) esp_task_wdt_reset(); // 实际任务代码... delay(1000); } ``` ### 关键注意事项 1. **多任务支持**: - 需为每个任务单独调用 `esp_task_wdt_add()` - 示例:`esp_task_wdt_add(xTaskGetCurrentTaskHandle())` 2. **时序约束**: - 所有注册任务必须在 timeout 周期内喂狗 - 喂狗间隔应满足:$T_{\text{feed}} < \frac{\text{timeout}}{2}$ 3. **内存管理**: - 任务删除时需调用 `esp_task_wdt_delete()` - 避免内存泄漏[^1] 4. **调试技巧**: ```cpp // 临时禁用看门狗 esp_task_wdt_init(portMAX_DELAY, false); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值