Author: byun1114

  • GDC, MD5 확인하기

    Shell script를 이용하여 MD5 checksum 확인하려고 한다. GDC(genomic data center)에서 받은 파일은 십중팔구 TSV 포맷이다.

    CSV와는 달리 TSV는 IFS에 읽을 때 $’\t’를 이용한다.

    md5sum으로 확인하면 hash 값과 파일 이름이 나오는데 우리는 hash 값만 필요하므로 awk를 이용한다.

    #! /bin/bash
    INPUT=/home/byun1114/nas/GDC_SVS/gdc_manifest_20200909_050711.txt
    while IFS=$'\t' read id filename md5 size state
    do
            if [ "${id}" != "id" ]; then
            md5_check=`md5sum ${filename} | awk '{ print $1 }'`
                    if [ ${md5_check} = ${md5} ]; then
                    echo "${filename} is passed"
                    else
                    echo "${filename} is not passed"
                    fi
            fi
    done < $INPUT
    

    이 방법도 있을 것이고, 모든 파일에 대하여 md5 hash 값을 구한 뒤에 각각을 비교하는 방법도 있을 것 같다.

  • CRAN mirror 실제 구축하기

    예전글을 따라하다 보니 Docker에서 R 패키지를 설치할 때 미러 서버를 인식하지 못하는 부분이 있었다. 그래서 관련 내용도 수정할 겸 다시 정리해 본다.

    개인적으로 몇 개의 PC를 사용하더라도 미러 서버를 구축해야 할 이유는 사실 없다. 리눅스라면 도커 빌드를 해야하거나, 리눅스 PC가 많거나, 아니면 외부와 인터넷 연결이 제한된 경우 제한된 목적으로 구축하는게 가장 흔한 이유일 것이라고 본다. R도 마찬가지이다. 이번에 정말로 사용한 이유는 도커에서 R을 이용한 설치 과정이 포함되어 있기 때문이다.

    CRAN의 관련 미러 서버 문서 링크와 예시 코드는 다음과 같다. 왠만하면 굳이 건드리지 않아도 된다.

    https://cran.r-project.org/mirror-howto.html

    rsync -rtlzv --delete cran.r-project.org::CRAN /dir/on/local/disc

    나는 리눅스만 이용하고, prelease는 이용하지 않으며, 이전 버젼도 이용하지 않는다. 그래서 exclude 옵션을 이용해서 다음과 같이 수정하였다. 이것을 cron 에 하루에 한 번 혹은 그보다 낮은 빈도로 동작하도록 설정한다.

    rsync -trlzv --delete --exclude="bin/*" --exclude="src/base/*" --exclude="src/base-prelease/*" cran.r-project.org::CRAN /home/byun1114/R
    

    exclude 옵션만을 이용하는 경우는 조건이 어렵지 않다. 조건이 한 두개 정도로 적으면 –exclude=” ” 를 반복해서 적용할 수 있다. 그런데 조건이 많아진다면 해당 구절을 txt 파일로 만들고 –exclude-from=”절대경로” 로 하면 깔끔해 진다.

    include 옵션을 사용하는 경우는 좀 어려운데 흔히 사용하는 ‘*’이 그대로 사용하면 파일이 제대로 전송이 되지 않는다. 인터넷에서 찾은 글은 ‘**’ 혹은 ‘***’를 를 이용해야 하는 것 같다. 귀한 내용이라서 사라질까봐 동일한 내용을 반복해서 기록해 둔다.
    stackoverflow.com/q/48010623

    "*"         means everything
    "dir1"      transfers empty directory [dir1]
    "dir*"      transfers empty directories like: "dir1", "dir2", "dir3", etc...
    "file*"     transfers files whose names start with [file]
    "dir**"     transfers every path that starts with [dir] like "dir1/file.txt", "dir2/bar/ffaa.html", etc...
    "dir***"    same as above
    "dir1/*"    does nothing
    "dir1/**"   does nothing
    "dir1/***"  transfers [dir1] directory and all its contents like "dir1/file.txt", "dir1/fooo.sh", "dir1/fold/baar.py", etc..


    그 다음에는 사용하는 컴퓨터에서 R 설정을 변경해 주어야 한다. 내가 Rprofile.site 파일을 수정해 주어야 한다. 파일 위치를 찾아야 하는데 우선 R에서 다음 명령어를 사용하여 R이 설치된 기본 위치를 확인한다.

    R.home(component = "home")
    [1] "/usr/lib/R"

    저 위치에 가서 etc 폴더 하위의 Rprofile.site 파일에서 수정해야 한다고 이전에 기록했었다. 그런데 사실 이 폴더의 파일을 /etc/R/ 폴더와 심볼릭 링크로 되어있다. /usr/lib/R/etc 폴더에 파일을 수정하는 것은 일반적인 환경에서는 동작에 문제가 없으나 도커 빌드 과정에서는 먹히지 않는다. 그래서 통상적인 original 폴더에 파일을 넣어준다. Rprofile.site 파일을 /etc/R 폴더에 복사한다.

    local({r <- getOption("repos"); r["CRAN"] <- "http://nuc.work/R"; options(repos=r)})

    이렇게 수정한 다음 R 세션을 종료하고 다시 실행하면 secure 어쩌고 하는 경고 메세지가 나온다. 설명에 맞추어서 변경하여 준다.

    https://support.rstudio.com/hc/en-us/articles/360047157094-Managing-R-with-Rprofile-Renviron-Rprofile-site-Renviron-site-rsession-conf-and-repos-co


  • Hyperparameters

    Hyperparameters
    예시에서 사용하는 모델 층의 종류와 크기, 배치 크기, 학습률 등 머신러닝 모델이 매우지 않고 사용자가 직접 지정해주는 값을 ‘하이퍼파라 미터’라고 합니다. 모델의 가중치(파라미터)를 최적화하는데 많은 영향을 주게 됩니다. 따라서 이 하이퍼파라미터를 최적화하는 것도 딥러닝 에서 데이터를 모으는 과정만큼이나 중요합니다.

  • 성찰, 르네 데카르트, 이현복 옮김

    데카르트의 유명한 말. ‘나는 생각한다 고로 존재한다(cortigo, ergo sum)’에 대한 내용에서 벗어나지 않는 내용인 것 같다. 너무나도 유명한 명제이기 때문에 추가할 수 없다는게 한계점(?)이지 않을까 싶다.