Git과 GitHub으로 코드 버전 관리하기
·
BI&Programming-Tools/Python
전 글에서 모듈과 패키지를 직접 만드는 방법을 정리했습니다.이제 만든 코드를 어떻게 관리하고 공유할지를 다룰 차례입니다.이번 편에서는 버전 관리 시스템인 Git과 원격 저장소 서비스인 GitHub을 처음부터 설정하는 과정을 정리합니다.Git이 필요한 이유코드를 혼자 작성하다 보면 어느 순간 "방금 전 버전으로 돌아가고 싶다"거나, "이 코드가 언제, 왜 바뀌었는지 알고 싶다"는 상황이 생깁니다.파일 이름 끝에 버전 이름을 붙여가며 관리해본 경험이 있다면 그 불편함을 알 것입니다. 팀으로 작업할 때는 이 문제가 훨씬 복잡해집니다.여러 사람이 같은 파일을 동시에 수정하면 누군가의 변경사항이 덮어씌워질 수 있기 때문입니다. Git은 이 문제를 해결하기 위해 만들어진 분산 버전 관리 시스템(Distributed..
패키지로 코드 구조화하기
·
BI&Programming-Tools/Python
파이썬 환경에서 프로젝트 규모가 작을 때는 모듈 몇 개로 충분하지만, 기능이 늘어나고 파일이 많아지면 관련 모듈들을 하나로 묶어서 체계적으로 관리할 필요가 생깁니다.그게 바로 패키지입니다.패키지란패키지는 연관된 모듈 여러 개를 하나의 디렉토리로 묶어서 공통 네임스페이스 아래에 두는 구조입니다.단순히 디렉토리를 만드는 것만으로는 패키지가 되지 않고, 그 안에 __init__.py라는 특수 파일이 있어야 파이썬 인터프리터가 해당 디렉토리를 패키지로 인식합니다. 패키지를 사용하는 이유는 크게 두 가지입니다.첫째는 모듈 간의 이름 충돌을 네임스페이스로 방지할 수 있다는 것이고, 둘째는 프로젝트가 커졌을 때 기능 단위로 코드를 분리해서 유지보수를 쉽게 만들 수 있다는 점입니다.패키지 이름 짓는 규칙PEP 8 기준..
파이썬 모듈: 재사용 가능한 코드의 최소 단위
·
BI&Programming-Tools/Python
모듈이란파이썬에서 모듈은 함수, 변수, 클래스를 담고 있는 .py 파일 하나를 말합니다.정의 자체는 단순하지만, 모듈을 제대로 이해하면 코드의 재사용성을 높이고 프로젝트 구조를 훨씬 깔끔하게 만들 수 있습니다.같은 기능을 여러 파일에 중복으로 작성하지 않아도 되고, 필요한 곳에서 불러다 쓰기만 하면 됩니다.모듈 이름 짓는 규칙이름을 어떻게 짓느냐가 나중에 import할 때 가독성에 큰 영향을 줍니다. 파이썬 컨벤션 기준으로 정리하면 이렇습니다.소문자로 작성합니다. MyModule.py보다 mymodule.py가 맞습니다.짧고 명확하게 씁니다. calc.py, dataprocessing.py처럼 기능이 바로 읽히는 이름이 좋습니다.단어 구분이 필요하면 밑줄(_)을 씁니다. data_processing.py..
의존성 관리: Poetry로 해결하기
·
BI&Programming-Tools/Python
이번 글에서는 그 다음 단계인 "그 버전 위에 어떤 패키지를, 어떤 조합으로 관리할지"를 다루는 도구인 Poetry를 정리합니다.pip만으로 충분하지 않은 이유지금까지는 패키지를 설치할 때 보통 pip을 써왔습니다.pip install requests 문제는 프로젝트가 커질수록 이 방식이 점점 번거로워진다는 점입니다.어떤 패키지를 어떤 버전으로 설치했는지 기록해두려면 별도로 requirements.txt를 직접 만들어야 하고, 가상환경도 따로 venv로 만들어서 관리해야 합니다.게다가 패키지 간의 버전 충돌이 생기면 이걸 수동으로 풀어내야 합니다. Poetry는 이 모든 과정(가상환경 생성, 의존성 기록, 버전 충돌 해결, 빌드, 배포)을 하나의 도구와 하나의 설정 파일(pyproject.toml)로 통..
파이썬 버전 관리: pyenv
·
BI&Programming-Tools/Python
이번 편에서는 본격적으로 개발 환경을 세팅합니다.가장 먼저 부딪히는 문제가 "파이썬 버전을 어떻게 관리할 것인가"인데, 이걸 제대로 이해하지 않고 넘어가면 나중에 패키지 의존성 충돌 같은 문제를 맞닥뜨렸을 때 원인 파악이 한참 걸립니다.시스템에 기본 설치된 파이썬을 그대로 쓰면 안 되는 이유처음엔 "그냥 컴퓨터에 깔려있는 파이썬 쓰면 되는 거 아닌가" 싶은데, 찾아보면 생각보다 문제가 많습니다.sudo pip install로 패키지를 깔면 시스템 전체에 영향을 주는데, 프로젝트마다 원하는 패키지 버전이 다를 수 있습니다. 같은 패키지라도 버전이 섞이면 예상치 못한 오류가 발생하기 쉽습니다.OS에 기본 설치된 파이썬 버전이 너무 오래된 경우도 많습니다.일부 운영체제는 내부적으로 시스템 동작에 파이썬을 사용..
생물정보학에서의 프로그래밍, 환경 세팅
·
BI&Programming-Tools/Python
프로그래밍이란프로그래밍은 결국 어떤 문제를 해결하기 위한 절차(알고리즘)를 사람이 아니라 컴퓨터가 이해할 수 있는 언어로 옮기는 작업입니다.사람과 사람이 대화할 때 통역사가 필요하듯, 사람과 컴퓨터 사이에서는 프로그래밍 언어가 그 통역사 역할을 한다고 생각하면 이해하기 쉽습니다.생물정보학에서 프로그래밍이 필수인 이유처음에는 "엑셀이나 기존 분석 툴로도 충분하지 않나" 싶었는데, 막상 실제 데이터를 다뤄보면 생각이 달라집니다.정리한 이유는 대략 이렇습니다. 1. 데이터 규모 자체가 사람 손으로 처리할 수준이 아님유전자 서열이나 유전체 데이터는 한두 개를 들여다보는 수준이 아니라 수만~수십만 건 단위로 다뤄야 하는 경우가 많습니다.수작업으로는 애초에 불가능한 양이기 때문에 자동화가 선택이 아니라 필수가 됩니..
[통계적 추론] 8. 회귀 분석
·
BI&Programming-Tools/통계
회귀 분석은 하나 이상의 독립변수(예측변수)로 종속변수(결과변수)를 예측하거나 두 변수 간의 관계를 정량화하는 통계 기법입니다.상관 분석이 관계의 강도와 방향을 측정한다면, 회귀 분석은 그 관계를 수식으로 표현하고 예측에 활용합니다.단순 선형 회귀 (Simple Linear Regression)언제 사용할까하나의 연속형 독립변수로 하나의 연속형 종속변수를 예측할 때 사용합니다.두 변수 간의 선형 관계를 직선으로 표현합니다.모델y = β₀ + β₁x + εy: 종속변수 (반응변수)x: 독립변수 (예측변수)β₀: 절편 (x = 0일 때 y의 예측값)β₁: 기울기 (x가 1 단위 증가할 때 y의 변화량)ε: 오차항 (모델이 설명하지 못하는 변동)β₀와 β₁은 최소제곱법(Ordinary Least Squares..
[통계적 추론] 7. ANOVA
·
BI&Programming-Tools/통계
ANOVA(Analysis of Variance, 분산 분석)는 세 집단 이상의 평균을 동시에 비교하는 통계 기법입니다. 이름에 분산이 들어가는 이유는, 집단 간 평균 차이가 유의한지를 집단 내 변동(오차)과 집단 간 변동의 비율로 판단하기 때문입니다.t-검정을 반복 적용해서 세 집단을 비교하는 경우에 다중 검정 문제가 발생할 수 있습니다.ANOVA는 한 번의 검정으로 모든 집단을 동시에 비교해서 이 문제를 피합니다.ANOVA 전제 조건모든 ANOVA에서 공통으로 필요한 전제 조건입니다.정규성 (Normality)각 집단 내 데이터가 정규분포를 따라야 합니다.Shapiro-Wilk test로 집단별로 확인하거나 Q-Q plot으로 시각적으로 확인합니다. 표본 크기가 충분히 크면(집단당 n ≥ 30) 중심..
[통계적 추론] 6. 상관 분석
·
BI&Programming-Tools/통계
상관 분석은 두 변수 간의 관계의 방향과 강도를 수치로 나타내는 방법입니다.상관계수는 -1에서 1 사이의 값을 가지며, 양수면 한 변수가 증가할 때 다른 변수도 증가하는 경향, 음수면 반대 방향의 관계를 나타냅니다. 0에 가까울수록 선형 관계가 없습니다.Pearson 상관계수 (r)언제 사용할까두 연속형 변수 간의 선형 관계를 측정할 때 사용합니다.두 변수 모두 정규분포를 따르고, 관계가 선형이라고 가정할 때 적합합니다.계산 원리Pearson 상관계수는 두 변수가 각각의 평균에서 얼마나 함께 벗어나는지를 측정합니다.두 변수가 같은 방향으로 함께 움직이면 양의 상관, 반대 방향으로 움직이면 음의 상관이 나타납니다.공분산을 두 변수의 표준편차의 곱으로 나눠서 -1에서 1 사이의 표준화된 값으로 만든 것입니다..
[통계적 추론] 5. 모수 검정 (t-검정)
·
BI&Programming-Tools/통계
t-검정은 평균을 비교하는 가장 기본적인 모수 검정입니다.세 가지 유형이 있으며, 연구 설계에 따라 적합한 방법이 달라집니다.공통적으로 데이터가 정규분포를 따른다는 가정이 필요하며, 표본이 충분히 크면(일반적으로 n ≥ 30) 중심극한정리에 의해 정규성 가정이 느슨하게 충족됩니다.단일 표본 t-검정 (One-sample t-test)언제 사용할까하나의 표본 평균이 알려진 특정 기준값(또는 모집단 평균)과 다른지 검정할 때 사용합니다.비교 대상이 다른 집단이 아니라 이미 알려진 값입니다.예를 들어 새로운 실험 방법으로 측정한 GC 함량이 기존에 알려진 값(0.5)과 다른지, 또는 특정 유전자의 발현량이 기준값과 차이가 있는지 검정할 때 사용합니다.가설H₀: 표본의 모집단 평균 = 기준값 (μ = μ₀)H₁..
[통계적 추론] 4. 비모수 검정
·
BI&Programming-Tools/통계
비모수 검정은 데이터가 정규분포를 따른다는 가정 없이 사용할 수 있는 검정 방법입니다.데이터의 실제 값 대신 순위(rank)를 기반으로 분석하기 때문에, 이상값의 영향을 덜 받고 소표본에서도 적용할 수 있습니다.Wilcoxon Rank Sum Test (Mann-Whitney U Test)언제 사용하는가독립적인 두 집단의 분포가 같은지(중앙값 차이가 있는지) 비교할 때 사용합니다. 모수 검정의 독립 표본 t-검정에 대응하는 비모수 검정입니다. 데이터가 정규분포를 따르지 않거나, 표본 크기가 작거나, 이상값이 있는 경우에 선택합니다.Wilcoxon rank sum test와 Mann-Whitney U test는 동일한 검정입니다. 동일한 통계 이론을 기반으로 하며 결과도 같습니다. 명칭만 다를 뿐입니다.동..
[통계적 추론] 3. 통계 분석 기법 선택
·
BI&Programming-Tools/통계
모수 검정과 비모수 검정의 차이모수 검정 (Parametric test)모집단이 특정 분포(주로 정규분포)를 따른다고 가정하고 분석하는 방법입니다.이 가정이 충족될 때 통계적 검정력이 높습니다. t-검정, ANOVA, 선형 회귀 등이 여기에 해당합니다.모수 검정을 사용하려면 일반적으로 다음 조건이 필요합니다.데이터가 정규분포를 따르거나, 표본 크기가 충분히 커서 중심극한정리가 적용됨비교하는 집단 간 분산이 동일함 (등분산성)관측값이 서로 독립적임비모수 검정 (Non-parametric test)특정 분포를 가정하지 않는 방법입니다. 데이터의 실제 값 대신 순위(rank)를 기반으로 분석하는 경우가 많습니다. Wilcoxon test, Kruskal-Wallis test 등이 여기에 해당합니다.모수 검정의..