[ PROMPT_NODE_26494 ]
data-operations
[ SKILL_DOCUMENTATION ]
# DNAnexus 数据操作
## 概述
DNAnexus 为文件、记录、数据库和其他数据对象提供了全面的数据管理功能。所有数据操作均可通过 Python SDK (dxpy) 或命令行界面 (dx) 执行。
## 数据对象类型
### 文件 (Files)
存储在平台上的二进制或文本数据。
### 记录 (Records)
具有任意 JSON 详情和元数据的结构化数据对象。
### 数据库 (Databases)
用于关系型数据的结构化数据库对象。
### 小程序与应用 (Applets and Apps)
可执行程序(详见 app-development.md)。
### 工作流 (Workflows)
多步骤分析流水线。
## 数据对象生命周期
### 状态
**开放状态 (Open State)**:数据可被修改
- 文件:内容可写入
- 记录:详情可更新
- 小程序:默认以关闭状态创建
**关闭状态 (Closed State)**:数据变为不可变
- 文件内容固定
- 元数据字段锁定(类型、详情、链接、可见性)
- 对象已准备好进行共享和分析
### 转换
创建 (开放) → 修改 → 关闭 (不可变)
大多数对象以开放状态开始,需要显式关闭:
python
# 关闭文件
file_obj.close()
某些对象可以在一次操作中创建并关闭:
python
# 创建已关闭的记录
record = dxpy.new_dxrecord(details={...}, close=True)
## 文件操作
### 上传文件
**从本地文件上传**:
python
import dxpy
# 上传文件
file_obj = dxpy.upload_local_file("data.txt", project="project-xxxx")
print(f"已上传: {file_obj.get_id()}")
**带元数据上传**:
python
file_obj = dxpy.upload_local_file(
"data.txt",
name="my_data",
project="project-xxxx",
folder="/results",
properties={"sample": "sample1", "type": "raw"},
tags=["experiment1", "batch2"]
)
**流式上传**:
python
# 用于大文件或生成的数据
file_obj = dxpy.new_dxfile(project="project-xxxx", name="output.txt")
file_obj.write("Line 1n")
file_obj.write("Line 2n")
file_obj.close()
### 下载文件
**下载到本地文件**:
python
# 按 ID 下载
dxpy.download_dxfile("file-xxxx", "local_output.txt")
# 使用处理器下载
file_obj = dxpy.DXFile("file-xxxx")
dxpy.download_dxfile(file_obj.get_id(), "local_output.txt")
**读取文件内容**:
python
file_obj = dxpy.DXFile("file-xxxx")
with file_obj.open_file() as f:
contents = f.read()
**下载到指定目录**:
python
dxpy.download_dxfile("file-xxxx", "/path/to/directory/filename.txt")
### 文件元数据
**获取文件信息**