2. 설치

2.1. MongoDB 설치 및 데이터로딩

KinMatch/KinMatch Rest API는 반드시 mongodb가 설치 되어있어야 실행 가능하다. Mongodb 설치는 MongoDB 홈페이지를 통하거나 아래 방법을 통해 설치할 수 있다 (주의사항: 반드시 MongoDB-2.6버전을 설치 해야한다.)

# Linux인 경우
$ apt-get install mongodb

# OS X인 경우
$ brew install mongodb26

설치가 끝난 후 MongoDB를 실행한다.

$ sudo service mongodb start

계정을 생성한다. 이때 생성한 계정정보는 반드시 KinMatch config.py 설정 을 참고하여 config.py 에 명시해준다.

$ mongo
[in mongo prompt]
> use kinmatch   #데이터베이스명
> db.addUser('아이디', '비밀번호')

생성한 계정에 예제 데이터(kinmatch_genotype_samples.zip )를 로딩한다.

$ unzip kinmatch_genotype_samples.zip
$ mongorestore kindmatch_genotype_samples

#로딩된 데이터확인
$ mongo
[in mongo prompt]
> use kinmatch
> db.genotypes.find()

대립유전자 빈도데이터(astr_af_korean.csv )를 로딩한다.

#kinc 이용
$ ./kinc add-allele-frequencies

#kind 이용
POST /kind/allele-frquencies/?name=Korean&type=A-STR&save-by=new&informat=csv&astr_af_korean.csv&description=korean_a-str_frequencies

#로딩된 데이터확인
$ mongo
[in mongo prompt]
> use kinmatch
> db.allele_frequencies.find()

2.2. KinMatch config.py 설정

사용자의 mongodb 정보를 맞도록 kinmatch/conf.py 에 기입해 주어야 한다.

DEFAULT_MONGODB_NAME = '데이터베이스명'    # mongodb명
DEFAULT_MONGODB_USER = '아이디'    # mongodb 아이디
DEFAULT_MONGODB_PASSWORD = '비밀번호'    #mongodb 비밀번호

2.3. KinMatch 설치

KinMatch 소스코드를 복사한다.

<문의>
()인실리코젠, 데이터사이언스센터
http://insilicogen.com/wiki/KinMatch3

Virtualenv를 생성하고 활성화 시킨다. virtualenv는 sudo apt-get install virtualenv 를 통해 설치 할 수 있다.

$ virtualenv -p python3 .
$ source /bin/activate

requirements_kinc.txt 를 다운받은 후 pip install 을 통해 KinMatch에 필요한 파이썬 라이브러리를 설치한다.

$ pip install -r requirements_kinc.txt

잘 실행되는지 확인하기 위해서 ./kinc -h 를 입력하여 도움말을 확인한다.

$ cd kinmatch
$ ./kinc -h
usage: kinc [-h]
            {add-allele-frequencies,list-allele-frequencies,delete-allele-frequencies,show-allele-frequencies,update-allele-frequencies,add-genotypes,search,search-multiple,check-between,report-hml}
            ...

KinMatch commandline interface

optional arguments:
  -h, --help            show this help message and exit

subcommands:
  kinc has a few sub-commands

  {add-allele-frequencies,list-allele-frequencies,delete-allele-frequencies,show-allele-frequencies,update-allele-frequencies,add-genotypes,search,search-multiple,check-between,report-hml}
                        -h for additional help
    add-allele-frequencies
                        Add allele frequencies data to DB
    list-allele-frequencies
                        List all available allele frequencies
    delete-allele-frequencies
                        Delete allele frequencies by the name
    show-allele-frequencies
                        Show the allele frequencies table
    update-allele-frequencies
                        Update allele frequencies by using current DB
    add-genotypes       Add many genotype data in batch file (generated by
                        GeneMark)
    search              Search relationship.
    search-multiple     Search relationship between groups.
    check-between       Check relationship between two queries.
    report-hml          Report checking result to HML format ('-a' option for
                        group1, '-b' for group2 !!).

Copyright 2014, Insilicogen, Inc.

2.4. KinMatch Rest API 설치

KinMatch Rest API 소스코드를 복사한다.

<문의>
()인실리코젠, 데이터사이언스센터
http://insilicogen.com/wiki/KinMatch3

Virtualenv를 생성하고 활성화 시킨다. virtualenv는 sudo apt-get install virtualenv 를 통해 설치 할 수 있다.

$ virtualenv -p python3 .
$ source /bin/activate

requirements_kind.txt 를 다운받은 후 pip install 을 통해 KinMatch에 필요한 파이썬 라이브러리를 설치한다.

$ pip install -r requirements_kind.txt

kindsite/kindsite/settings.py 파일을 열어서 끝부분에 아래 코드를 추가한다.

$ vim kindsite/kindsite/settings.py
## kinmatch settings##
INSTALLED_APPS += (
        'kind',
        'rest_framework',
        'rest_framework_swagger',
)

TEMPLATE_DIRS = [os.path.join(BASE_DIR, 'kind/templates')]

REST_FRAMEWORK = {
    'DEFAULT_RENDERER_CLASSES': (
        'rest_framework.renderers.BrowsableAPIRenderer',
        'rest_framework.renderers.JSONRenderer',
        'rest_framework.renderers.TemplateHTMLRenderer',
        'rest_framework_csv.renderers.CSVRenderer',
    ),
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework.authentication.SessionAuthentication',
    ),
    'PAGINATE_BY': 10,
}

LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,
    'formatters': {
        'standard': {
            'format' : "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s",
            'datefmt' : "%d/%b/%Y %H:%M:%S"
        },
    },
    'handlers': {
        'null': {
            'level':'DEBUG',
            'class':'django.utils.log.NullHandler',
        },
        'logfile': {
            'level':'DEBUG',
            'class':'logging.handlers.RotatingFileHandler',
            'filename': BASE_DIR + "/logfile",
            'maxBytes': 50000,
            'backupCount': 2,
            'formatter': 'standard',
        },
        'console':{
            'level':'INFO',
            'class':'logging.StreamHandler',
            'formatter': 'standard'
        },
    },
    'loggers': {
        'django': {
            'handlers':['console'],
            'propagate': True,
            'level':'WARN',
        },
        'django.db.backends': {
            'handlers': ['console'],
            'level': 'DEBUG',
            'propagate': False,
        },
        'kind': {
            'handlers': ['console', 'logfile'],
            'level': 'DEBUG',
        },
    }
}

데이터베이스를 생성한다.

$ cd kindsite
$ python manage.py syncdb #이때 생성되는 admin 아이디는 REST API요청의 API로그인키가 된다.

python manage.py runserver 를 실행하고 http://locahost:8000/docs/ 에 접속하여 document가 뜨는지 확인한다.