dnanexus-integration
DNAnexus cloud genomics platform. Build apps/applets, manage data (upload/download), dxpy Python SDK, run workflows, FASTQ/BAM/VCF, for genomics pipeline development and execution.
Author
Category
Development ToolsInstall
Download and extract to your skills directory
Copy command and send to AI Agent for auto-install:
DNAnexus Integration
Overview
DNAnexus is a cloud platform for biomedical data analysis and genomics. Build and deploy apps/applets, manage data objects, run workflows, and use the dxpy Python SDK for genomics pipeline development and execution.
When to Use This Skill
This skill should be used when:
Core Capabilities
The skill is organized into five main areas, each with detailed reference documentation:
1. App Development
Purpose: Create executable programs (apps/applets) that run on the DNAnexus platform.
Key Operations:
dx-app-wizarddx build or dx build --appCommon Use Cases:
Reference: See references/app-development.md for:
2. Data Operations
Purpose: Manage files, records, and other data objects on the platform.
Key Operations:
dxpy.upload_local_file() and dxpy.download_dxfile()Common Use Cases:
Reference: See references/data-operations.md for:
3. Job Execution
Purpose: Run analyses, monitor execution, and orchestrate workflows.
Key Operations:
applet.run() or app.run()Common Use Cases:
Reference: See references/job-execution.md for:
4. Python SDK (dxpy)
Purpose: Programmatic access to DNAnexus platform through Python.
Key Operations:
Common Use Cases:
Reference: See references/python-sdk.md for:
5. Configuration and Dependencies
Purpose: Configure app metadata and manage dependencies.
Key Operations:
Common Use Cases:
Reference: See references/configuration.md for:
Quick Start Examples
Upload and Analyze Data
import dxpy
# Upload input file
input_file = dxpy.upload_local_file("sample.fastq", project="project-xxxx")
# Run analysis
job = dxpy.DXApplet("applet-xxxx").run({
"reads": dxpy.dxlink(input_file.get_id())
})
# Wait for completion
job.wait_on_done()
# Download results
output_id = job.describe()["output"]["aligned_reads"]["$dnanexus_link"]
dxpy.download_dxfile(output_id, "aligned.bam")Search and Download Files
import dxpy
# Find BAM files from a specific experiment
files = dxpy.find_data_objects(
classname="file",
name="*.bam",
properties={"experiment": "exp001"},
project="project-xxxx"
)
# Download each file
for file_result in files:
file_obj = dxpy.DXFile(file_result["id"])
filename = file_obj.describe()["name"]
dxpy.download_dxfile(file_result["id"], filename)Create Simple App
# src/my-app.py
import dxpy
import subprocess
@dxpy.entry_point('main')
def main(input_file, quality_threshold=30):
# Download input
dxpy.download_dxfile(input_file["$dnanexus_link"], "input.fastq")
# Process
subprocess.check_call([
"quality_filter",
"--input", "input.fastq",
"--output", "filtered.fastq",
"--threshold", str(quality_threshold)
])
# Upload output
output_file = dxpy.upload_local_file("filtered.fastq")
return {
"filtered_reads": dxpy.dxlink(output_file)
}
dxpy.run()Workflow Decision Tree
When working with DNAnexus, follow this decision tree:
- Yes → Use App Development (references/app-development.md)
- No → Continue to step 2
- Yes → Use Data Operations (references/data-operations.md)
- No → Continue to step 3
- Yes → Use Job Execution (references/job-execution.md)
- No → Continue to step 4
- Yes → Use Python SDK (references/python-sdk.md)
- No → Continue to step 5
- Yes → Use Configuration (references/configuration.md)
Often you'll need multiple capabilities together (e.g., app development + configuration, or data operations + job execution).
Installation and Authentication
Install dxpy
uv pip install dxpyLogin to DNAnexus
dx loginThis authenticates your session and sets up access to projects and data.
Verify Installation
dx --version
dx whoamiCommon Patterns
Pattern 1: Batch Processing
Process multiple files with the same analysis:
# Find all FASTQ files
files = dxpy.find_data_objects(
classname="file",
name="*.fastq",
project="project-xxxx"
)
# Launch parallel jobs
jobs = []
for file_result in files:
job = dxpy.DXApplet("applet-xxxx").run({
"input": dxpy.dxlink(file_result["id"])
})
jobs.append(job)
# Wait for all completions
for job in jobs:
job.wait_on_done()Pattern 2: Multi-Step Pipeline
Chain multiple analyses together:
# Step 1: Quality control
qc_job = qc_applet.run({"reads": input_file})
# Step 2: Alignment (uses QC output)
align_job = align_applet.run({
"reads": qc_job.get_output_ref("filtered_reads")
})
# Step 3: Variant calling (uses alignment output)
variant_job = variant_applet.run({
"bam": align_job.get_output_ref("aligned_bam")
})Pattern 3: Data Organization
Organize analysis results systematically:
# Create organized folder structure
dxpy.api.project_new_folder(
"project-xxxx",
{"folder": "/experiments/exp001/results", "parents": True}
)
# Upload with metadata
result_file = dxpy.upload_local_file(
"results.txt",
project="project-xxxx",
folder="/experiments/exp001/results",
properties={
"experiment": "exp001",
"sample": "sample1",
"analysis_date": "2025-10-20"
},
tags=["validated", "published"]
)Best Practices
Resources
This skill includes detailed reference documentation:
references/
Load these references when you need detailed information about specific operations or when working on complex tasks.