수면 분석을 위한 생체 데이터 생성기: 테스트 데이터지만 진짜처럼
소개
데이터는 통증 - 데이터는 통증입니다 - 데이터는 통증 - 데이터는 통증 - 데이터는 통증 - 데이터는 통증입니다 - -
어르신들의 수면 패턴을 분석하려면 무엇보다 방대한 양의 생체 데이터가 필요했습니다. 하지만 현실은 냉혹했죠. 하나하나 수작업으로 데이터를 만드는 건 시간이 너무 오래 걸리고, 그 자체로 오류가 많았습니다.
그래서 결심했어요. "자동화된 생체 데이터 생성기, 내가 만든다!"
그렇게 이 프로젝트는 시작됐습니다. 목표는 명확했습니다 — 심박수, 호흡수, 맥박 등 수면 분석에 필요한 데이터를 실제처럼 보이게, 대량으로 만들어내는 것!
진행 방법
🛠 사용한 도구와 기술
Python 3.x
SQLAlchemy (비동기 ORM)
asyncio (비동기 프로그 래밍)
argparse (CLI 인터페이스)
dateutil (날짜 처리)
MySQL / MariaDB (DB 저장)
cursor
⚙️ 주요 기능 및 실행 방법
스크립트는 아래와 같은 방식으로 작동합니다. 기존 데이터가 있다면, 그 이후부터 데이터를 생성하고, 특정 날짜 범위도 지정할 수 있게 만들었어요.
실행 방법 및 예시:
# 가상환경 활성화 및 스크립트 실행 위치로 이동
cd path/to/프로젝트 폴더 이름
source .venv/bin/activate
# 스크립트 실행
PYTHONPATH=$PYTHONPATH:$(pwd)/app python app/파일경로/test_dailydate.py [옵션]
사용 예시:
# 1. 기본 실행 (마지막 데이터 이후 ~ 오늘)
python app/파일경로/test_dailydate.py
# 2. 특정 날짜까지 생성
python app/파일경로test_dailydate.py --end-date 2024-03-20
# 3. 특정 기간 데이터 생성
python app/파일경로/test_dailydate.py --start-date 2024-03-01 --end-date 2024-03-20
# 4. 오늘 하루 데이터만 생성
python app/파일경로/test_dailydate.py --start-date $(date +%Y-%m-%d) --end-date $(date +%Y-%m-%d)
💡 개발하면서 느낀 점
현실적인 테스트 데이터를 만들기 위해선 시간대별 생체 신호 특성을 파악하는 것이 핵심이었어요. 단순히 랜덤으로 숫자를 넣는 게 아니라, 실제 수면 사이클과 유사하게 값을 구성해야 했죠.
대량의 데이터를 효율적으로 처리하기 위해 배치 처리를 적용했고, 성능 병목은 asyncio를 활용한 비 동기 DB 작업으로 해소했습니다.
결과와 배운 점
여러 다른 프로그램을 보여주는 컴퓨터 화면
데이터 생성 로그
Adobe Adobe Adobe Adobe Adobe Adobe Adobe
만들어진 테 스트 데이터 테이블 (14일치)
기술적으로는 성능이 월등히 개선된 자동화 도구를 만들었고,
팀 내에서는 모듈 사용법을 문서화해서 공유함으로써 협업 효율도 높일 수 있었어요.
가장 인상 깊었던 순간은, 단순히 좋은 코드를 만드는 것보다 팀이 그것을 쉽게 쓸 수 있도록 설명하는 일이 훨씬 더 중요하다는 걸 깨달은 점이었습니다. 도구는 함께 쓸 때 더 강력해지니까요. 💪
남기고 싶은 메시지
테스트 데이터라도 현실성 있게 만드는 것이 중요합니다. 그래야 실제 데이터로 전환할 때도 문제 없이 작동해요.
자동화 도구는 만들고 끝이 아니라, 사용자 편의성(CLI 옵션, 로그 출력 등)을 고려해서 만들어야 모두가 잘 쓸 수 있습니다.
비동기 프로그래밍과 배치 처리 같은 기법들은 대량 데이터 처리에 있어 꼭 배워두면 좋습니다!
이 사례가 여러분의 데이터 자동화 여정에 도움이 되기를 바랍니다 😊
호박을 가진 남자의 만화와 그 위에 고양이