---
title: "Guix G-expression으로 복잡한 E2E 테스트 파이프라인 구성하기"
published: 2025-12-01T23:40:09.000Z
canonical: https://jeff.news/article/326
---
# Guix G-expression으로 복잡한 E2E 테스트 파이프라인 구성하기

GNU Guix의 G-expression을 활용해 R, Python 등 다양한 언어가 섞인 바이오인포매틱스 파이프라인의 E2E 테스트를 재현 가능하게 구성하는 방법을 보여주는 글.

## 핵심 요약

- GNU Guix의 G-expression을 활용해 R, Python 등 다양한 언어가 섞인 바이오인포매틱스 파이프라인의 E2E 테스트를 재현 가능하게 구성하는 방법을 보여주는 글

## G-expression이 뭔가

- Guix에서 빌드 스크립트를 작성할 때 쓰는 Scheme 기반의 코드 표현식임
- `#~(begin ...)` 형태로 빌드 시 실행할 코드를 정의하고, `#$` 로 패키지 의존성이나 파일을 참조함
- 패키지 프로파일, 입력 파일, 출력 경로를 하나의 표현식 안에서 선언적으로 조합할 수 있음

## 실제 파이프라인 구성

- pyhegp(Python 기반 유전체 암호화 도구)의 출력을 R 혼합 모델 GWAS 코드에 넣는 파이프라인임
- 각 단계가 별도의 Guix 빌드 단계로 정의됨:
  - 데이터 다운로드 (HSmice 데이터셋, ~218MB)
  - 데이터 정리 및 전처리 (R + dplyr)
  - pyhegp로 암호화 처리
  - R 혼합 모델 GWAS 분석 수행
  - QTL 검증으로 최종 테스트 통과 여부 확인
- `guix build -f hsmice-test.scm` 한 줄로 전체 파이프라인이 실행됨

## 재현성이 보장되는 이유

- 모든 패키지 의존성이 Guix 스토어(`/gnu/store/...`)에 해시 기반으로 격리 저장됨
- R 패키지(dplyr, qqman 등)도 시스템 설치와 무관하게 프로파일 내에서 관리됨
- 빌드 환경이 완전히 통제되기 때문에 다른 머신에서도 동일한 결과를 얻을 수 있음

## 다중 언어 지원

- 현재 R과 Python이 혼합된 파이프라인이 잘 작동하고 있음
- 향후 Julia 스크립트도 추가될 예정이라고 함
- G-expression의 구조상 언어가 추가되어도 동일한 방식으로 통합 가능함

---

**원문**: [Complex end-to-end tests using Guix G-expressions](https://systemreboot.net/post/complex-end-to-end-tests-using-guix-g-expressions.html)

## 핵심 포인트

- Guix G-expression으로 R/Python 혼합 파이프라인을 단일 빌드 시스템에서 관리
- guix build 한 번으로 데이터 다운로드부터 GWAS 분석, QTL 검증까지 전체 파이프라인 실행
- 패키지 의존성이 Guix 스토어에서 완전히 격리되어 재현성 보장

## 인사이트

Nix 진영에서 주로 보던 재현 가능 빌드 접근법을 Guix로 바이오인포매틱스 E2E 테스트에 적용한 사례
