지난 1월 20일~21일, (주)인실리코젠 Codes팀 모두는 강원도 용평리조트에서 열린 2010 한국유전체학회 제6회 동계심포지움에 다녀왔습니다. 출발전 약간의 에피소드와 한겨울의 뜻하지 않은 짙은 안개로 인해 학회장까지의 이동은 그리 녹녹치는 않았습니다.

시간에 맞춰 도착한 학회장은 궂은 날씨에도 불구하고 작년보다 두 배가 넘는 연구자분들로 학회장 분위기가 뜨거웠고, 유전체학에 대한 열정은 그 어느때보다도 대단했습니다. 이번 동계심포지움은 'Challenges in Translation on Omics Technology'라는 주제로 진행되었고, High-throughput technology 와 Bioinformatics 최신 기술에 대한 소식 및 정보들을 많이 얻을 수 있었던 자리였습니다.

우리 Codes팀은 이번 학회를 통해 최신 생물정보학관련 연구동향 기술 소식지인 "Quipu Issue Paper"를 발간하여 연구자분들께 전달하였습니다. "NGS 시대의 분석전략"이라는 주제의 소식지는 NGS에 대한 최근 이슈를 조사하여 NGS에 대한 이해를 도울 수 있도록 시퀀싱부터 분석법과 생물정보 분석전략 등을 정리한 것입니다.

사용자 삽입 이미지
학회측의 도움으로 300부의 Quipu Issue Paper는 등록 테이블에서 급속도로 줄어들었고, 학회 시간 중에 또는 coffee break 시간에 틈틈히 검토하면서 NGS 자료에 관심을 느끼시는 연구자분들을 보면서 예상했던 것 보다 좋은 반응에 더욱 뿌듯함을 느꼈습니다. 이렇게 배포된 "NGS 분석 전략" 소식지를 통해서 생물학자들이 NGS 시대에 다양한 변화를 빨리 습득하고 연구에 조금이나마 도움이 되기를 바라면서 블로그를 통해서도 곧 연재할 예정입니다.

Codes팀 워크샵을 겸한 이번 학회 첫째날, 우여곡절 끝에 모두 모인 Codes팀은 숙소에서 오랫만에 모여 앉아 이런저런 이야기들로 웃음꽃이 피었고, 아이폰 게임으로 한바탕 놀라기도 하면서 따뜻한 시간을 보냈습니다. 대부분의 구성원이 오랜시간 같이 봐온 사이여서 그런지 추억도 많고, 할 얘기도 많았는데 "열정"이 있는 팀이란걸 다시 한번 느끼게 됐고 "사람이 좋은 회사" 라는 것을 말하지 않아도 느낄수 있는 좋은 시간이였습니다. 그러고 보니 어느새 줄기차게 내리던 비가 함박눈으로 바뀌어 온 세상이 하얗게 변하였습니다. 덕분에 이튿날 학회 일정이 없던 오전 시간을 이용하여 겨울 스포츠의 짜릿한 스릴을 맛 볼 수 있었고, 특히 스노우 보드에 초보인 팀원들은 조관희 차장님의 속성 강습으로 모두 함께 스노우 보드를 즐길 수 있었습니다.

사용자 삽입 이미지
사우나로 노곤한 피로를 풀고 다시 찾은 학회장에서는 특히 주요 NGS 플랫폼(Roche - 454, Illumina - Genome Analyzer, Applied Biosystem - SOLiD)에 대한 발표가 각 섹션별로 포함되어 있었으며, 각 플랫폼별로 새로운 시스템의 런칭 소식을 발표하였습니다.  Genome Analyzer의 경우 GAIIx와 HiSeq 2000을 런칭하여 한 번의 run으로 더욱 많은 양의 데이터를 얻을 수 있게 되었으며, Roche의 경우는 소규모 NGS 연구를 지원하기 위한 GS Junior 시스템을 소개하였습니다.  또한 3rd Next generation sequencer로 Helicos와 Pacific Biosciences가 소개됨으로서 NGS 시장의 빠른 발전과 높은 관심을 실감하였습니다.

비록 이틀 간의 짧은 시간이었지만 팀원 전원이 참석함으로써 현재 NGS 시장의 연구동향을 파악하여 함께 공감하고 공유할 수 있었던 뜻깊은 경험이었고, 이와 더불어 새로 두텁게 다진 팀웍과 생물정보에 대한 열정으로 더욱 노력하여 생명과학 전반에 걸친 생물정보 컨설팅 문화를 선도할 수 있는 (주)인실리코젠의 Codes팀이 되도록 하겠습니다.

(주)인실리코젠 Codes팀
Tel : 031-278-0061 / E-mail : codes@insilicogen.com

Posted by 人Co

2010/02/02 20:00 2010/02/02 20:00
, ,
Response
No Trackback , 3 Comments
RSS :
https://www.insilicogen.com/blog/rss/response/34

Django는 파이썬 웹 프레임워크로써 웹 개발을 편리하게 하기 위한 종합적인 환경을 제공한다. 편리한 웹 개발을 위해 제공되는 것들 가운데에는 객체관계매핑, 유연한 웹 템플릿 활용 등 다양한 것들이 있지만, 가장 중요한 특징은 바로 객체관계매핑이다. 본 포스팅은 초보 웹개발자를 위해 Django 에서는 어떻게 데이터베이스를 사용하고, 이를 객체로 연결하여 활용하는 가를 설명한다.

Database --> SQL in source code

일 반적인 테이터베이스 어플리케이션은 보통 위 다이어그램 처럼 직접 데이터베이스 질의언어(SQL)을 어플리케이션 소스코드에서 직접 조작하는 방식으로 구성된다. 데이터베이스의 특정 테이블의 내용을 추출하기 위해서는 SQL "select" 구문을 직접 문자열로 조작하여 데이터베이스 연결 커서에 질의를 수행한다. 잘 알고 있는 내용이지만, 새로운 레코드를 삽입할 경우에는 "insert", 기존 레코드를 수정할 경우에는 "update", 삭제할 경우에는 "delete" 구문을 사용한다. 이들 역시 SQL 구문을 문자열로 조작하여 데이터베이스를 조작하게 된다.

Database --> Django ORM --> Object in source code

Django 는 위 다이어그램 처럼 데이터베이스의 내용을 객체로 변환하는 ORM(Object Relation Mapper)를 중간에 갖고 있어서, 어플리케이션 소스코드에서 직접 객체를 조작할 수 있도록 구성되어 있다. 개발자는 데이터베이스를 조작하는데 SQL을 사용하지 않고 직접 객체를 사용할 수 있다.

Django에서 데이터베이스의 관계(Relation)를 객체(Object)로 바꿀 때의 수준 및 용어는 다음과 같다.

Relation

Object

비고

Database

Project (Application)

하나의 프로젝트는 여러개의 App로 구성된다. 이들은 모두 하나의 database 를 사용한다.

Table

Model

클래스 개념

Record

Object

객체 개념

Column

Attribute

.

이러한 방식으로 각각의 SQL 구문은 다음처럼 객체지향 프로그래밍이 가능한다.

1. SELECT --> Est.objects.all()
--> Est.objects.filter(id__contains='1')
--> exclude, get, count,...
1. INSERT --> Est.objects.create(name='a',...)
1. UPDATE --> est = Est.objects.get(id=1)
est.name = b; est.save()
1. DELETE --> est.delete()

기 존의 어플리케이션 작성시 반복적으로 나타나는 SQL 구문의 패턴을 수정하는 일은 많은 중복과 함께 관리가 귀찮은 면이 있으나, 객체로 활용하면 보다 직관적이고 관리가 용이한 형태의 개발이 가능하다. 이밖에도 다음과 같은 장점이 있다.

  1. RDBMS independant (Oracle, MySQL, PostgreSQL, Sqlite) : Django 에 구현된 각 RDBMS 별 wrapper 를 통해 RDBMS 의 종류가 어떤것인가에 상관없이 만들 수 있다. 개발 용 PC에서는 가벼운 sqlite 를 사용하고, 실제 서비스에서는 Oracle 로 사용하는데 소스코드의 수정이 거의 필요없다. (물론 테스트를 통해 검토해 볼 필요는 있음)
  2. 직관적인 객체지향 프로그래밍 : 다양한 웹 프레임워크 및 웹 관련 라이브러리에서 객체관계매핑이 구현되어 있으나, Django 는 가장 직관적이고 활용이 용이한 방식을 제공한다.
  3. 기존의 DB 기반 구성을 객체 기반 구성으로 확장하여, 컴포넌트를 조합하는 방식의 개발이 가능하다.

대 신 단점도 있다. 복잡한 SQL 질의인 경우, ORM에서는 성능이 낮을 수 있다. : ORM 에서는 SQL 구문의 생성을 추상화하여 구현하였으므로, 복잡한 쿼리의 경우 비 효율적으로 SQL 구문이 생성될 수 있다. 또한 불필요한 질의를 자주 수행함으로써 성능이 낮아질 수 있다. 하지만 Django에서는 이러한 경우를 위해 사용자가 직접 SQL문을 만들 수 있는 기능을 제공하고 있으며, 오픈소스 커뮤니티를 통해 지속적으로 성능이 개선되고 있으므로 그다지 문제가 되지 않는다.

여 러개의 RDBMS를 지원함으로써, RDBMS 간의 마이그레이션이 용이하다는 장점도 있다. Django 에서 현재 데이터베이스의 내용을 덤프받고, 새로운 설정에서 로드하기만 하면된다. 아래 소스코드는 이전 대상 모델들의 데이터를 JSON 형식으로 덤프받고 새 환경에서 로드하는 내용을 보여준다.

from django.core.serializers import serialize
result = []
models = (User, ...) # 이전대상 모델들
for model in models:
result.extend(model.objects.all())
print serialize('json', result)

뒤 코드를 backup.py 로 저장한뒤,

./backup.py > ../fixtures/initial_data.json

로 덤프받고, 새로운 환경에서

./manage.py syncdb

만 수행하면 마이그레이션이 완료된다.

Django 데이터 객체를 이용하여 데이터베이스를 검색하는 방법은 다음과 같다. 만일 Est 라는 모델이 있고, 속성이 name, identifier, sequence, data 가 있다면,

Est.objects.all() # 모든 EST 객체
Est.objects.filter(sequence__startswith='ATG') # sequence 속성이 ATG 로 시작하는 객체
Est.objects.filter( # 필터를 체인으로 연결
name__endswith='Etc.',
).exclude(
date__gte=datatime(2005,1,1),
).filter(
sequence__icontains('AGAGAG'),
)

q = Est.objects.filter(sequence__startswith='ATG')[:10] # queryset are lazy
print q
Est.objects.filter(amodel__bmodel__cmodel__name__startswith='abc') # field lookups related models

마지막 예제에서 처럼 1:다 혹은 다:1, 다:다 로 연결된 모델의 속성에 ''로 연결하여 연결(join) 검색을 수행할 수 있다는 점은 복잡한 관계에서의 편리한 데이터 검색을 가능하게 한다.

이 와 같은 연결된 모델 검색의 경우 다음의 경우가 다르다는 점을 주의해야 한다. 예를 들어 네이버같은 곳에서 여러개의 블로그를 운영하고 각 블로그에 여러 엔트리(글)이 있다고 가정한 뒤(블로그:엔트리 1:다), 특정 글을 갖고 있는 블로그를 두가지 조건으로 검색하는 방법은 다음의 두가지가 있다.

1. Blog.objects.filter(entry__headline__contains='Lennon',
entry__pub_data__year=2009)
2. Blog.objects.filter(entry__headline__contains='Lennon').filter(
entry__pub_data__year=2009)

1번의 방법은 두 조건을 동시에 만족하는 엔트리를 갖는 블로그를 찾지만, 2번의 방법은 첫번째 조건을 만족하는 엔트리를 갖는 블로그 목록에서 다시 두번째 조건을 찾는다.

위 기능들 이외에도, 버전 1.1 이후부터, 효과적인 검색을 위한 다음의 기능을 지원한다.

  1. F() object
  2. annotate()
  3. aggregate()

다음시간에 이 이상의 기능들에 대해 알아본다.

Posted by 人Co

2010/01/15 11:19 2010/01/15 11:19
, ,
Response
No Trackback , 1 Comment
RSS :
https://www.insilicogen.com/blog/rss/response/33

사용자 삽입 이미지
[모집분야]
1. Designer 경력 0명
2. Web publisher 신입 또는 경력 0명
3. Developer 신입 또는 경력 0명

[제출 서류]

1. 이력서 및 자기소개서 : 당사양식 작성 후 제출 (파일명 : 이름_이력서.doc),
   자기소개서 내용
   1) 인실리코젠에서 하고 싶은 일
   2) 이 분야를 선택한 이유와 미래의 꿈
   3) 포트폴리오 파일 또는 URL(프로젝트의 참여율 및 역할 기재) : 필수
   4) 수행프로젝트 기재 : 필수

[제출 방법]
아래의 입사지원서를 다운로드 받아, 내용을 작성하고, recruit@insilicogen.com 으로 파일 첨부하여 메일을 보내주시기 바랍니다. 자신만의 포트폴리오를 별도의 파일로 작성 후 첨부할 수 있습니다.

1. 이력서 및 자기소개서 작성 후 제목 : 이름_이력서.doc

2. 메일 제목 : 제출할 서류를 "[모집분야] 홍길동 지원" 제목으로 메일을 보내주세요.
3. 이력서 상단에 희망연봉기재요망.

[채용 절차]
1. 1차 서류마감 - 2009년 12월 11일 금요일
2. 1차 서류전형 합격자에 한해 면접요청통보
3. 2차 실무담당자 및 임원 면접 (12/16 수요일 예정)

[근무환경]
1. 주5일 근무(08~17시)
2. 4대 보험
3. 퇴직금 별도
4. 성과급
5. 경조사휴가및지원

[우대사항]
1. 장기근속경력자 (2년이상) : 함깨 성실하게 가실분
2. 영어회화가능자
3. 정보처리기사자격증 소지자

[기타]
1. 제출한 서류는 일체 반환하지 않음.
2. 합격시 수일내에 출근가능하신 분.
3. 기본적인 예절 있으신분.
4. 상기내용 숙지 후 이력서 제출요망.

Posted by 人Co

2009/12/02 09:16 2009/12/02 09:16
Response
No Trackback , No Comment
RSS :
https://www.insilicogen.com/blog/rss/response/32

인실리코젠 창립기념일

지난 10월 1일은 저희 (주)인실리코젠의 창립기념일이었습니다. 2004년에 설립된 인실리코젠은 올해로 5번째 생일을 맞이하였습니다. 회사 식구들이 모두 모인 자리에서 창립기념일을 기념하는 행사가 진행되었습니다. 10월 1일 목요일의 5주년 행사에서는 어떤 일이 있었는지 지금부터 그 생생한 현장속으로 ~ 고고고!!!

우선 행사는 10월의 독서경영으로 시작되었습니다. 10월은 책을 읽는 독서경영 대신 11곡의 클래식을 감상하고 자신의 에세이를 함께 이야기하는 시간을 가졌습니다. 분위기 좋은 클래식이 흘러나오고 처음 기대와는 다르게 다들 즐겁게 이야기 나누는 모습입니다

사용자 삽입 이미지
클래식 감상을 마치고 창립 5주년을 축하하기 위해 회사의 모든 직원들이 생일축하 노래를 부르고 생일케잌에 촛불을 껐습니다.
"생일축하합니다. 생일축하합니다. 사랑하는~ 인실리코젠 생일축하합니다♬"
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지

Posted by 人Co

2009/10/09 16:53 2009/10/09 16:53
Response
No Trackback , 1 Comment
RSS :
https://www.insilicogen.com/blog/rss/response/31

지난 2일 국립수의과학검역원 동물위생연구동의 세미나실에서 올해 시범사업인 ‘바이러스 유전자 변이감시 프로그램’의 설명회가 있었습니다.

바이러스 유전자 변이감시 프로그램은 이미 e축산뉴스, 디지털타임즈, 축산경제신문 등의 언론보도가 있었고, 돼지인플루엔자 바이러스(SI)의 유전자 변이 및 신종 바이러스 유입 등의 정보를 체계적으로 감시하여 사전에 예측할 수 있는 유전자 분석 체계로서 지난 7월부터 경기 등 4개 시,도 방역기관에 시범적으로 시작되었습니다.

이번 설명회는 당사에서 구축한 시스템을 시연하는 자리로서 국립수의과학검역원 바이러스과, 4개 시,도 축산위생연구소, (주)마크로젠에서 모두 참석해주셨고, 강병철 박사님께서 시스템의 전반적인 설명과 실제 예제를 이용한 데이터 입력 방법, 분석 진행과정, 분석 결과 내용 등에 대한 발표를 진행하셨습니다.

또한 질의 및 답변 시간은 추가적으로 필요한 사항과 앞으로 개선되어야 할 점 등에 대한 토론으로 시스템이 한층 더 발전할 수 있는 계기가 될 수 있는 중요한 시간이었습니다.

그 리고 인플루엔자 서열 분석에 사용되어질 CLC Main Workbench 프로그램에 대한 기본적인 기능 및 간단한 시연을 할 수 있는 시간도 마련되었으며, 다른 기관에서도 기본적인 생물정보 분석을 진행해볼 수 있도록 프로그램 설치방법과 라이센스를 제공하였습니다.

아직 시작에 불과하지만 본격적인 분석 파이프라인이 구축되어지고, 더욱 더 전문적인 생물정보 분석을 통하여 현재 유행되고 있는 신종 인플루엔자 바이러스 또한 체계적으로 감시하고 정확하게 예측할 수 있길 기대합니다.

Posted by 人Co

2009/09/16 15:37 2009/09/16 15:37
, , ,
Response
No Trackback , No Comment
RSS :
https://www.insilicogen.com/blog/rss/response/30



« Previous : 1 : ... 66 : 67 : 68 : 69 : 70 : 71 : 72 : 73 : 74 : ... 76 : Next »