Skip to main content

cdmduck

cdmduck

OMOP data. Simpler. Faster. Everywhere. — OHDSI ATLAS-compatible tools for the OMOP CDM, in pure Python on DuckDB. No Java, no Postgres, no Docker.

OMOP CDM · OHDSI ATLAS 호환 도구를 DuckDB 위에서, 순수 파이썬으로.

pip install cdmduck
모듈 원본 (OHDSI, Apache 2.0) 상태
cdmduck.sqlrender SqlRender (Java) 이식 완료 — Java 판과 58,440 건 글자 단위 일치
cdmduck.circe circe-be (Java) 예정
cdmduck.webapi WebAPI 3.0 (Java) — ATLAS 3.0 화면이 부르는 API 예정
from cdmduck.sqlrender import render, translate
sql = render("SELECT TOP 10 * FROM @cdm.person {@adult}?{WHERE year_of_birth < 2000};", cdm="main", adult=True)
translate(sql, "duckdb")   # SELECT  * FROM main.person WHERE year_of_birth < 2000 LIMIT 10;
cdmduck translate query.sql duckdb -p cdm=main
cdmduck dialects

Java 판과의 동등성 검증

tests/equiv/ — SqlRender R 테스트 문자열 2,009개, Circe·WebAPI SQL 763개(×16 방언·렌더·분할), 합성 조건식 3,000개를 Java 원본(tests/java, JDK 22+ 소스 실행)과 이 이식본에 넣어 결과를 비교한다.

python3 tests/equiv/build_corpus.py <클론 디렉터리> cases.tsv
python3 tests/equiv/run_java.py cases.tsv java.out 24
PYTHONPATH=src python3 tests/equiv/py_harness.py cases.tsv py.out 32
python3 tests/equiv/diff.py cases.tsv java.out py.out

알려진 차이: Java 내부 예외(EmptyStack, ArrayIndexOutOfBounds)의 메시지 문구만 다르다(예외가 나는 자리는 같다). BMP 밖 문자(이모지 등)는 Java 가 UTF-16 대리쌍 둘로 보므로 위치가 달라질 수 있다.

라이선스

Apache 2.0. src/cdmduck/sqlrender/csv/replacementPatterns.csv 와 ref/java, tests/java/org 는 OHDSI SqlRender 에서 가져왔다(third_party/, NOTICE).

Metadata

Release files for cdmduck 0.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cdmduck 0.0.1
File Size Uploaded
cdmduck-0.0.1.tar.gz 40.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for cdmduck 0.0.1
File Interpreter ABI Platform
cdmduck-0.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 81.7 kB

Release files / cdmduck-0.0.1.tar.gz

Download URL cdmduck-0.0.1.tar.gz
Size 40.1 kB
Tags Source
SHA-256 checksum
How to use checksums
ce1ed6d620f213a3e0e492d1d8e5337d648aee9ef68ca6e22da1e74df8e61671
BLAKE2b-256 checksum
How to use checksums
b6cdd902cb20785ff7e13db61db7836b3ed8ba880db86667f92d28ef72d222c6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / cdmduck-0.0.1-py3-none-any.whl

Download URL cdmduck-0.0.1-py3-none-any.whl
Size 41.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0e473b952a1e76136176ec1cef662077642ff5782acce856362f73c960f1fa9e
BLAKE2b-256 checksum
How to use checksums
697312e0164487e5a42563d6e3174b0e06d024832090c0d288fe59a986ed2667
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

This release

0.0.1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page