Python/PySide6로 DNA 염기서열 검토용 데스크톱 GUI 도구를 만들고 있습니다
안녕하세요.
Python/PySide6 기반으로 DNA 염기서열 검토용 데스크톱 GUI 도구를 개인 프로젝트로 개발하고 있습니다.
전문 개발자라기보다는 생물학/실험실 서열 분석 쪽 배경에서 출발한 개인 프로젝트입니다. 실제로 반복해서 겪는 서열 검토 작업을 조금 더 편하게 만들고 싶어서, 2025년 봄부터 Python/PySide6를 공부하면서 AI 코딩 도구의 도움을 받아 개발을 이어오고 있습니다. 단기간에 대충 만든 실험용 스크립트라기보다는, 실제로 사용할 수 있는 데스크톱 도구를 목표로 기능 구현, 데이터 구조 정리, UI 상호작용, undo/redo, 시각화, export, 패키징 검토까지 단계적으로 다듬고 있습니다.
이 프로젝트를 시작한 이유는, 실험실에서 반복적으로 하는 DNA 서열 확인 작업이 생각보다 여러 도구에 흩어져 있기 때문입니다. 기존 도구들이 있지만, 서열 확인·간단한 편집·정렬 결과 확인·분류·시각화·표/그림 출력 흐름을 한 번에 이어가기에는 접근성이 좋지 않다고 느꼈습니다.
개발자 커뮤니티에서는 조금 생소한 분야일 수 있어 간단히 설명하면, DNA 염기서열 데이터는 A, T, G, C 같은 문자가 길게 나열된 데이터입니다. 실험실에서는 여러 샘플의 서열을 열어보고, 특정 위치가 서로 다른지, 변이가 어디에 있는지, 실험 결과가 의도한 방향과 맞는지 확인하는 작업을 자주 합니다.
제가 만들고 있는 도구는 이런 서열 검토 과정을 조금 더 빠르게 연결하기 위한 데스크톱 뷰어입니다.
현재 목표로 하는 흐름은 대략 아래와 같습니다.
DNA 염기서열 파일 열기
샘플 ID 영역과 sequence 영역을 분리해서 보기
여러 서열 선택, column/region selection, highlight
복사/붙여넣기/간단한 편집
정렬 결과 확인
ID/label 기반 grouping
amino-acid marker 기반 typing rule
similarity-based grouping
특정 위치 또는 연속 구간의 변이 시각화
CSV, FASTA, 이미지 파일 등으로 결과 내보내기
여기서 FASTA는 DNA나 단백질 서열을 저장할 때 많이 쓰는 텍스트 파일 형식이고, Sanger AB1은 실험 장비에서 나온 DNA 서열 읽기 결과 파일이라고 보면 됩니다.
현재는 아직 배포 전 pre-alpha 단계이며, 기능 안정화와 개발 기록 정리, 패키징/라이선스 검토를 진행하고 있습니다. 테스터 모집이나 판매 목적의 글은 아니고, 개발 방향과 구조에 대한 피드백을 받아보고 싶어 글을 올립니다.
최근에는 GitHub Pages에 Devlog 05까지 정리했습니다.
이번에는 특히 visualization and inspection workflow를 정리했습니다.
예를 들어 두 가지 흐름을 나누어 보고 있습니다.
특정 위치 확인
이미 중요한 위치를 알고 있을 때, 여러 샘플에서 그 위치의 염기나 아미노산이 어떻게 다른지 표와 그림으로 확인합니다.연속 구간 확인
특정 위치 하나가 아니라 일정 구간 전체에서 변이가 어디에 많이 몰리는지, 데이터가 부족한 위치가 있는지, 기준 서열과 다른 위치가 얼마나 많은지 확인합니다.
개발자 관점에서 특히 조언을 듣고 싶은 부분은 아래입니다.
편집 가능한 viewer와 분석/시각화 기능이 같은 working state를 바라보게 하는 데이터 구조가 적절한지
현재는 원본 데이터를 바로 덮어쓰기보다는, 원본은 보존하고 편집된 현재 작업 상태를 분석/시각화/분류 기능이 함께 바라보는 구조로 정리하고 있습니다.sequence 데이터처럼 긴 문자열을 다루는 데스크톱 GUI에서 undo/redo를 어떻게 설계하는 게 좋을지
초기에는 전체 상태 저장이 단순하지만, 데이터가 커지면 메모리와 성능 문제가 생길 수 있어 delta 기반 undo/redo 방향을 고민하고 있습니다.PySide6 기반 데스크톱 앱에서 대량 데이터 표시, 테이블 결과, matplotlib figure 출력, export workflow를 어떻게 분리하는 게 좋을지
도메인 특화 도구의 GitHub Pages/README/Devlog를 어떤 구조로 정리하면 외부 개발자가 구조를 이해하기 쉬울지
배포 전 pre-alpha 단계에서 최소한 준비해야 할 문서, smoke test, 패키징 체크리스트가 무엇일지
비전공 개발자가 AI 코딩 도구의 도움을 받아 데스크톱 앱을 만들 때, 코드 구조나 유지보수 측면에서 특히 조심해야 할 부분이 있을지
아래는 현재 개발 중인 화면 일부입니다.



개발 기록과 스크린샷은 아래에 정리해두었습니다.
https://user92-11.github.io/JU-works/
도메인 자체는 생물학/서열 분석 쪽이지만, 내부적으로는 데스크톱 GUI, 문자열 편집기, working-state 관리, undo/redo, 시각화/표 출력, 패키징 문제에 가까운 부분이 많아서 개발자 관점의 의견을 듣고 싶습니다.
