피드로 돌아가기
I built a DuckDB extension to handle chemistry data without pandas or RDKit
Dev.toDev.to
Database

SMILES/InChI 처리를 위한 DuckDB 확장 모듈 기반 분석 파이프라인 구축

I built a DuckDB extension to handle chemistry data without pandas or RDKit

nk_Enuke2026년 5월 2일7intermediate

Context

화학 데이터 분석 시 RDKit과 pandas를 활용한 전통적 방식의 의존성 발생. Google Colab 런타임 불안정성 및 pandas 버전 충돌로 인한 데이터 전처리 병목 현상 지속.

Technical Solution

  • DuckDB Community Extension 기반의 ducksmiles 모듈을 개발하여 SQL 레이어에서 화학 데이터 직접 처리
  • RDKit의 Mol 객체 생성 과정을 생략하고 InChI 문자열에서 레이어를 직접 추출하는 최적화 로직 구현
  • SMILES ⇄ SELFIES 상호 변환 기능을 내장하여 ML 모델 입력 데이터 생성 공정 단순화
  • PDB/CIF/XYZ 등 대용량 3D 구조 파일의 메타데이터를 파일 전체 로드 없이 SQL로 Aggregation 하는 구조 설계
  • 잘못된 SMILES 입력 시 Exception 대신 NULL을 반환하는 Error Handling으로 대규모 Batch 처리 안정성 확보
  • DuckDB의 native reader(S3, Parquet, CSV)와 결합하여 데이터 인입부터 전처리까지 단일 쿼리로 통합

- 도메인 전용 라이브러리의 의존성 충돌이 심한 경우 DB Extension 도입 검토 - 대규모 배치 처리 시 개별 레코드의 예외가 전체 프로세스를 중단시키지 않도록 NULL 반환 전략 적용 - 외부 파일 포맷의 부분 추출이 필요한 경우 full-load 대신 String Parsing 기반의 직접 접근 방식 고려

원문 읽기