# ATRT - Active Temperature Sensing and Thermal Response Test Analysis Package
## 概述
ATRT是一个用于分析分布式温度传感(DTS)数据和热响应测试的Python包。该包提供了完整的工具集,用于处理主动温度传感数据、计算热物性参数、估算地下水流速等。
## 主要功能
- **DTS数据处理**: 处理分布式温度传感数据,包括时间序列和深度剖面分析
- **DTPM计算**: 分布式热物性质(Distributed Thermal Properties Measurement)的相关计算
- **热导率分析**: 热传导系数和热扩散系数的计算与优化
- **地下水流速估算**: 基于温度数据的地下水流速反演
## 安装
### 从源码安装
```bash
# 克隆或下载项目
cd atrt
# 安装依赖
pip install -r requirements.txt
# 安装包
pip install -e .
```
### 依赖要求
- Python >= 3.8
- numpy >= 1.20.0
- pandas >= 1.3.0
- scipy >= 1.7.0
- matplotlib >= 3.4.0
## 快速开始
```python
import atrt
from atrt import DtsDataProcessing
# 加载DTS数据
data_processor = DtsDataProcessing(your_data)
# 提取加热数据
seconds, delta_temp, natural_temp = data_processor.extraction_heating_data(
top_idx=10,
bottom_idx=50,
start_str='2024/01/01 10:00:00',
end_str='2024/01/01 12:00:00'
)
# 进行DTPM计算
from atrt import NFM_Kluitenberg
rmse = NFM_Kluitenberg(parameters, measured_temp, time_array, variables)
```
## 模块说明
### `dts_dataprocessing.py`
分布式温度传感数据处理模块,包含DtsDataProcessing类用于数据提取和预处理。
### `DTPM_calcfunc.py`
DTPM方法的核心计算函数,包含NFM_Kluitenberg函数用于参数优化和理论温度计算。
### `thermal_conductivity_function.py`
热导率相关的计算函数,包括功率校正和温度分析。
### `flowrate_function.py`
地下水流速计算相关函数,包含参数优化和流速反演算法。
## 使用示例
详细的使用示例请参考`examples/`目录下的Jupyter notebook文件。
## 作者信息
- **作者**: 王丰源
- **邮箱**: wfy22500@smail.nju.edu.cn
- **机构**: 南京大学
## 许可证
本项目采用MIT许可证。详见LICENSE文件。
## 贡献
欢迎提交Issues和Pull Requests来改进这个项目。
## 更新日志
### v0.1.0 (2024-12-07)
- 初始版本发布
- 基本的DTS数据处理功能
- DTPM计算功能
- 热导率分析功能
- 地下水流速估算功能
## Changelog
- 0.1.1: 修复 data_extract 的提取逻辑;提高导热系数计算函数的稳健性。
Raw data
{
"_id": null,
"home_page": "https://github.com/wfyissuperman/atrt",
"name": "atrt",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "thermal conductivity, DTS, temperature sensing, groundwater flow, heat transfer",
"author": "\u738b\u4e30\u6e90",
"author_email": "wfy22500@smail.nju.edu.cn",
"download_url": "https://files.pythonhosted.org/packages/5d/2f/759a20bb6ebeb694d6614944351db03e8166c4fb8d744352928b0c9b2f16/atrt-0.1.1.tar.gz",
"platform": null,
"description": "# ATRT - Active Temperature Sensing and Thermal Response Test Analysis Package\r\n\r\n## \u6982\u8ff0\r\n\r\nATRT\u662f\u4e00\u4e2a\u7528\u4e8e\u5206\u6790\u5206\u5e03\u5f0f\u6e29\u5ea6\u4f20\u611f(DTS)\u6570\u636e\u548c\u70ed\u54cd\u5e94\u6d4b\u8bd5\u7684Python\u5305\u3002\u8be5\u5305\u63d0\u4f9b\u4e86\u5b8c\u6574\u7684\u5de5\u5177\u96c6\uff0c\u7528\u4e8e\u5904\u7406\u4e3b\u52a8\u6e29\u5ea6\u4f20\u611f\u6570\u636e\u3001\u8ba1\u7b97\u70ed\u7269\u6027\u53c2\u6570\u3001\u4f30\u7b97\u5730\u4e0b\u6c34\u6d41\u901f\u7b49\u3002\r\n\r\n## \u4e3b\u8981\u529f\u80fd\r\n\r\n- **DTS\u6570\u636e\u5904\u7406**: \u5904\u7406\u5206\u5e03\u5f0f\u6e29\u5ea6\u4f20\u611f\u6570\u636e\uff0c\u5305\u62ec\u65f6\u95f4\u5e8f\u5217\u548c\u6df1\u5ea6\u5256\u9762\u5206\u6790\r\n- **DTPM\u8ba1\u7b97**: \u5206\u5e03\u5f0f\u70ed\u7269\u6027\u8d28(Distributed Thermal Properties Measurement)\u7684\u76f8\u5173\u8ba1\u7b97\r\n- **\u70ed\u5bfc\u7387\u5206\u6790**: \u70ed\u4f20\u5bfc\u7cfb\u6570\u548c\u70ed\u6269\u6563\u7cfb\u6570\u7684\u8ba1\u7b97\u4e0e\u4f18\u5316\r\n- **\u5730\u4e0b\u6c34\u6d41\u901f\u4f30\u7b97**: \u57fa\u4e8e\u6e29\u5ea6\u6570\u636e\u7684\u5730\u4e0b\u6c34\u6d41\u901f\u53cd\u6f14\r\n\r\n## \u5b89\u88c5\r\n\r\n### \u4ece\u6e90\u7801\u5b89\u88c5\r\n\r\n```bash\r\n# \u514b\u9686\u6216\u4e0b\u8f7d\u9879\u76ee\r\ncd atrt\r\n\r\n# \u5b89\u88c5\u4f9d\u8d56\r\npip install -r requirements.txt\r\n\r\n# \u5b89\u88c5\u5305\r\npip install -e .\r\n```\r\n\r\n### \u4f9d\u8d56\u8981\u6c42\r\n\r\n- Python >= 3.8\r\n- numpy >= 1.20.0\r\n- pandas >= 1.3.0\r\n- scipy >= 1.7.0\r\n- matplotlib >= 3.4.0\r\n\r\n## \u5feb\u901f\u5f00\u59cb\r\n\r\n```python\r\nimport atrt\r\nfrom atrt import DtsDataProcessing\r\n\r\n# \u52a0\u8f7dDTS\u6570\u636e\r\ndata_processor = DtsDataProcessing(your_data)\r\n\r\n# \u63d0\u53d6\u52a0\u70ed\u6570\u636e\r\nseconds, delta_temp, natural_temp = data_processor.extraction_heating_data(\r\n top_idx=10, \r\n bottom_idx=50, \r\n start_str='2024/01/01 10:00:00', \r\n end_str='2024/01/01 12:00:00'\r\n)\r\n\r\n# \u8fdb\u884cDTPM\u8ba1\u7b97\r\nfrom atrt import NFM_Kluitenberg\r\nrmse = NFM_Kluitenberg(parameters, measured_temp, time_array, variables)\r\n```\r\n\r\n## \u6a21\u5757\u8bf4\u660e\r\n\r\n### `dts_dataprocessing.py`\r\n\u5206\u5e03\u5f0f\u6e29\u5ea6\u4f20\u611f\u6570\u636e\u5904\u7406\u6a21\u5757\uff0c\u5305\u542bDtsDataProcessing\u7c7b\u7528\u4e8e\u6570\u636e\u63d0\u53d6\u548c\u9884\u5904\u7406\u3002\r\n\r\n### `DTPM_calcfunc.py`\r\nDTPM\u65b9\u6cd5\u7684\u6838\u5fc3\u8ba1\u7b97\u51fd\u6570\uff0c\u5305\u542bNFM_Kluitenberg\u51fd\u6570\u7528\u4e8e\u53c2\u6570\u4f18\u5316\u548c\u7406\u8bba\u6e29\u5ea6\u8ba1\u7b97\u3002\r\n\r\n### `thermal_conductivity_function.py`\r\n\u70ed\u5bfc\u7387\u76f8\u5173\u7684\u8ba1\u7b97\u51fd\u6570\uff0c\u5305\u62ec\u529f\u7387\u6821\u6b63\u548c\u6e29\u5ea6\u5206\u6790\u3002\r\n\r\n### `flowrate_function.py`\r\n\u5730\u4e0b\u6c34\u6d41\u901f\u8ba1\u7b97\u76f8\u5173\u51fd\u6570\uff0c\u5305\u542b\u53c2\u6570\u4f18\u5316\u548c\u6d41\u901f\u53cd\u6f14\u7b97\u6cd5\u3002\r\n\r\n## \u4f7f\u7528\u793a\u4f8b\r\n\r\n\u8be6\u7ec6\u7684\u4f7f\u7528\u793a\u4f8b\u8bf7\u53c2\u8003`examples/`\u76ee\u5f55\u4e0b\u7684Jupyter notebook\u6587\u4ef6\u3002\r\n\r\n## \u4f5c\u8005\u4fe1\u606f\r\n\r\n- **\u4f5c\u8005**: \u738b\u4e30\u6e90\r\n- **\u90ae\u7bb1**: wfy22500@smail.nju.edu.cn\r\n- **\u673a\u6784**: \u5357\u4eac\u5927\u5b66\r\n\r\n## \u8bb8\u53ef\u8bc1\r\n\r\n\u672c\u9879\u76ee\u91c7\u7528MIT\u8bb8\u53ef\u8bc1\u3002\u8be6\u89c1LICENSE\u6587\u4ef6\u3002\r\n\r\n## \u8d21\u732e\r\n\r\n\u6b22\u8fce\u63d0\u4ea4Issues\u548cPull Requests\u6765\u6539\u8fdb\u8fd9\u4e2a\u9879\u76ee\u3002\r\n\r\n## \u66f4\u65b0\u65e5\u5fd7\r\n\r\n### v0.1.0 (2024-12-07)\r\n- \u521d\u59cb\u7248\u672c\u53d1\u5e03\r\n- \u57fa\u672c\u7684DTS\u6570\u636e\u5904\u7406\u529f\u80fd\r\n- DTPM\u8ba1\u7b97\u529f\u80fd\r\n- \u70ed\u5bfc\u7387\u5206\u6790\u529f\u80fd\r\n- \u5730\u4e0b\u6c34\u6d41\u901f\u4f30\u7b97\u529f\u80fd\r\n\r\n\r\n## Changelog\r\n- 0.1.1: \u4fee\u590d data_extract \u7684\u63d0\u53d6\u903b\u8f91\uff1b\u63d0\u9ad8\u5bfc\u70ed\u7cfb\u6570\u8ba1\u7b97\u51fd\u6570\u7684\u7a33\u5065\u6027\u3002\r\n",
"bugtrack_url": null,
"license": null,
"summary": "Active Temperature Sensing and Thermal Response Test Analysis Package",
"version": "0.1.1",
"project_urls": {
"Bug Reports": "https://github.com/wfyissuperman/atrt/issues",
"Homepage": "https://github.com/wfyissuperman/atrt",
"Source": "https://github.com/wfyissuperman/atrt"
},
"split_keywords": [
"thermal conductivity",
" dts",
" temperature sensing",
" groundwater flow",
" heat transfer"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "69484247569faa3215c9f77ef8d5d7950fc6656a720a30908c192495b5701314",
"md5": "cc866b43a758b85fa591194f4630cfba",
"sha256": "b8e5ca23bbb830e9f1c45f4f13beb34a0fe72de1839fc6f2a23e689437122aca"
},
"downloads": -1,
"filename": "atrt-0.1.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "cc866b43a758b85fa591194f4630cfba",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 14963,
"upload_time": "2025-10-27T06:16:43",
"upload_time_iso_8601": "2025-10-27T06:16:43.419699Z",
"url": "https://files.pythonhosted.org/packages/69/48/4247569faa3215c9f77ef8d5d7950fc6656a720a30908c192495b5701314/atrt-0.1.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "5d2f759a20bb6ebeb694d6614944351db03e8166c4fb8d744352928b0c9b2f16",
"md5": "191ad92d4c1c6ac6d5018b7a4ea070d3",
"sha256": "80b94d947e90888346d1e48a6a18a40f0805a5f0eda1a80f6ddcd115e9bc7341"
},
"downloads": -1,
"filename": "atrt-0.1.1.tar.gz",
"has_sig": false,
"md5_digest": "191ad92d4c1c6ac6d5018b7a4ea070d3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 16029,
"upload_time": "2025-10-27T06:16:45",
"upload_time_iso_8601": "2025-10-27T06:16:45.161606Z",
"url": "https://files.pythonhosted.org/packages/5d/2f/759a20bb6ebeb694d6614944351db03e8166c4fb8d744352928b0c9b2f16/atrt-0.1.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-27 06:16:45",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "wfyissuperman",
"github_project": "atrt",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [
{
"name": "numpy",
"specs": [
[
">=",
"1.20.0"
],
[
"<",
"2.0.0"
]
]
},
{
"name": "pandas",
"specs": [
[
">=",
"1.3.0"
],
[
"<",
"2.1.0"
]
]
},
{
"name": "scipy",
"specs": [
[
">=",
"1.7.0"
]
]
},
{
"name": "matplotlib",
"specs": [
[
">=",
"3.4.0"
],
[
"<",
"3.9.0"
]
]
},
{
"name": "pytest",
"specs": [
[
">=",
"6.0.0"
]
]
},
{
"name": "pytest-cov",
"specs": [
[
">=",
"2.0.0"
]
]
},
{
"name": "black",
"specs": [
[
">=",
"21.0.0"
]
]
},
{
"name": "flake8",
"specs": [
[
">=",
"3.8.0"
]
]
}
],
"lcname": "atrt"
}