[ PROMPT_NODE_26498 ]
python-sdk
[ SKILL_DOCUMENTATION ]
# DNAnexus Python SDK (dxpy)
## 概述
dxpy 库提供了与 DNAnexus 平台交互的 Python 绑定。它既可在 DNAnexus 执行环境中使用(用于在平台上运行的应用),也可用于访问 API 的外部脚本。
## 安装
bash
# 安装 dxpy
pip install dxpy
# 或使用 conda
conda install -c bioconda dxpy
**要求**:Python 3.8 或更高版本
## 认证
### 登录
bash
# 通过命令行登录
dx login
### API 令牌
python
import dxpy
# 设置认证令牌
dxpy.set_security_context({
"auth_token_type": "Bearer",
"auth_token": "YOUR_API_TOKEN"
})
### 环境变量
bash
# 通过环境变量设置令牌
export DX_SECURITY_CONTEXT='{"auth_token": "YOUR_TOKEN", "auth_token_type": "Bearer"}'
## 核心类
### DXFile
文件对象的处理器。
python
import dxpy
# 获取文件处理器
file_obj = dxpy.DXFile("file-xxxx")
# 获取文件信息
desc = file_obj.describe()
print(f"名称: {desc['name']}")
print(f"大小: {desc['size']} 字节")
# 下载文件
dxpy.download_dxfile(file_obj.get_id(), "local_file.txt")
# 读取文件内容
with file_obj.open_file() as f:
contents = f.read()
# 更新元数据
file_obj.set_properties({"key": "value"})
file_obj.add_tags(["tag1", "tag2"])
file_obj.rename("new_name.txt")
# 关闭文件
file_obj.close()
### DXRecord
记录对象的处理器。
python
# 创建记录
record = dxpy.new_dxrecord(
name="metadata",
types=["Metadata"],
details={"key": "value"},
project="project-xxxx",
close=True
)
# 获取记录处理器
record = dxpy.DXRecord("record-xxxx")
# 获取详情
details = record.get_details()
# 更新详情 (必须处于开放状态)
record.set_details({"updated": True})
record.close()
### DXApplet
小程序对象的处理器。
python
# 获取小程序
applet = dxpy.DXApplet("applet-xxxx")
# 获取小程序信息
desc = applet.describe()
print(f"名称: {desc['name']}")
print(f"版本: {desc.get('version', 'N/A')}")
# 运行小程序
job = applet.run({
"input1": {"$dnanexus_link": "file-yyyy"},
"param1": "value"
})
### DXApp
应用对象的处理器。
python
# 按名称获取应用
app = dxpy.DXApp(name="my-app")
# 或按 ID 获取
app = dxpy.DXApp("app-xxxx")
# 运行应用
job = app.run({
"input": {"$dnanexus_link": "file-yyyy"}
})
### DXWorkflow
工作流对象的处理器。
python
# 创建工作流
workflow = dxpy.new_dxworkflow(
name="My Pipeline",
project="proj