(<-) |
[../2006-02] |
[../2006-04] |
(->) |
2006 / March | ||||||
Sunday | Monday | Tuesday | Wednesday | Thursday | Friday | Saturday |
-1- | -2- | -3- | -4- | |||
공휴일 |
||||||
-5- | -6- | -7- | -8- | -9- | -10- | -11- |
-12- | -13- | -14- | -15- | -16- | -17- | -18- |
-19- | -20- | -21- | -22- | -23- | -24- | -25- |
-26- | -27- | -28- | -29- | -30- | -31- | |
리눅스시험2시 |
1000일^^ |
2006-03-28
빌게이츠의 인생충고 10가지...
- 인생이란 원래 공평하지 못하다. 그런 현실에 대하여 불평할 생각하지 말고 받아들여라.
- 세상은 네 자신이 어떻게 생각하든 상관하지 않는다. 세상이 너희들한테 기대하는 것은 네가 스스로 만족한다고 느끼기 전에 무엇인가를 성취해서 보여 줄 것을 기다리고 있다.
- 대학 교육을 받지 않은 상태에서 연봉이 4만 달러가 될 것이라고는 상상도 하지 말라.
- 학교 선생님이 까다롭다고 생각되거든 사회 나와서 직장 상사의 진짜 까다로운 맛을 한 번 느껴 봐라.
- 햄버거 가게에서 일하는 것을 수치스럽게 생각하지 마라. 너희 할아버지는 그 일을 기회라고 생각하였다.
- 네 인생을 네가 망치고 있으면서 부모 탓을 하지 마라. 불평만 일삼을 것이 아니라 잘못한 것에서 교훈을 얻어라.
- 학교는 승자나 패자를 뚜렷이 가리지 않을지 모른다. 어떤 학교에서는 낙제 제도를 아예 없애고 쉽게 가르치고 있다는 것을 잘 안다. 그러나 사회 현실은 이와 다르다는 것을 명심하라.
- 인생은 학기처럼 구분되어 있지도 않고 여름 방학이란 것은 아예 있지도 않다. 네가 스스로 알아서 하지 않으면 직장에서는 가르쳐 주지 않는다.
- TV는 현실이 아니다. 현실에서는 커피를 마셨으면 일을 시작하는 것이 옳다.
- 공부 밖에는 할 줄 모르는 '바보'한테 잘 보여라. 사회 나온 다음에는 아마 그 '바보' 밑에서 일하게 될지 모른다.
2006-03-27
강의 : 이화여대 이상혁 교수님
세번째 강의...
분자생물학에 대한 개괄적인 내용이었다. central dogma...and informatics적인 central dogma
2006-03-23
Django tutorial 1 번역중...
Django 실습
python manage.py runserver -> Django 서버가 돌아간다.
python manage.py runserver 0.0.0.0:8000 -> 원격지에서 확인하고 싶으면...
sqlite3 test.db -> sqlite3는 파일 하나로 db를 만든다.
- vi settings.py
-> DATABASE_ENGINE에 sqlite3
-> DATABASE_NAME에 만든 데이타베이스 이름, 단 sqlite3는 db 파일경로
python manage.py init ->
apt-cache search pysqlite2 ->
apt-get install python2.4-pysqlite2 ->
2006-03-20
이번주 일요일에 리눅스마스타 1급1차 시험보는 장소
2006-03-16
Introduction to Bioinformatics 2
강의 : 이화여대 이상혁 교수님
두번째 강의...
2006-03-14
Introduction to Bioinformatics 1
강의 : 이화여대 이상혁 교수님
첫 주 강의 시작...
2006-03-06
- 고전적 퍼즐게임. 체스판위의 Queen은 장기의 차처럼 전후좌우 이동이 가능하며, 대각선으로도 가능하다. 총 8*8 크기의 체스판위에 Queen 8개를 올려놓고 이들이 서로 공격하지 않도록 자리배치하는 문제.
2006-03-03
어제에 이어서...
1. classmethod : single fasta file을 title과 sequence 부분으로 나눠줄때 사용했다.
- 일반 메쏘드가 첫 인수(self)로 인스턴스 객체를 받는 것에 비해서 클래스 메쏘드는 첫 인수로 클래스 객체를 받는다. 메쏘드를 클래스 메쏘드로 변환하기 위해서 classmethod()를 호출해야 한다. 클래스 메쏘드 호출시 첫 번째 인수로 자동으로 해당 클래스 객체가 전달된다.
@classmethod def FastaParsing(klass, aStr): fasta = klass() lines = aStr.splitlines() fasta.title = lines[0][1:] fasta.sequence = ''.join(lines[1:]) return fasta
이 함수는 DNA 클래스 안에 있다. DNA 클래스 밖으로 뺐더니 TypeError: 'classmethod' object is not callable 에러가 발생했다.
2. TypeError: unbound method FastaParsing() must be called with DNA instance as first argument (got str instance instead)
FastaParsing()을 classmethod를 사용하지 않고 했더니 이와 같은 에러 메세지가 발생했다.
3. Unbound Class Method : 클래스 객체를 이용하여 메쏘드를 호출하는 것. 예) MyClass.set(c, 'egg'))
4. 질량 리스트를 질량이 작은 순으로 출력하기
- ', '.join('%.2f'%mass for mass in sorted(masses))
2006-03-02
어제에 이어서...
1. enumerate() : peptide list들의 질량 list값들을 unittest에서 test할때 사용했다. 하나의 int값을 test할때는 assertAlmostEqual을 사용
- for문을 이용할 때 요소의 값뿐만 아니라 인덱스 값도 함께 필요할 때 사용한다. (인덱스, 요소값)튜플 자료를 반복적으로 넘겨준다.
문제점 발견) Protein() 안에 있는 RestrictionEnzymes를 깔끔하게 하기 위해서 밖으로 뺐더니 NameError: name 'Trypsine' is not defined 가 발생했다.
- 문제점 해결) class Trypsin 보다 위에 있었기 때문에 에러가 발생했다. 아래에 두면 OK. 왜냐하면 이 녀석이 Trypsine을 호출할 때 위에서부터 검색하기 때문이다.
2. StringIO() : print 출력을 문자열로 저장하는 방법은 StringIO 표준 모듈을 이용하는 것이 간편하다. StringIO 모듈의 StringIO 클래스는 문자열을 파일 객체처럼 입.출력한다.
3. FastaGenerator() : multi fasta file을 받아서 record 단위로 출력해 주는 함수이다.
next() : 순차적으로 자료를 넘기고 더 이상 자료를 넘겨줄 수 없는 경우에는 StopIteration 예외를 발생한다. 파일 객체가 라인 단위의 반복자를 지원한다.
def FastaGenerator(aFile): lines = [aFile.next()] for line in aFile: if line.startswith('>'): yield ''.join(lines) lines = [] lines.append(line) else: yield ''.join(lines)
의문) : lines = [aFile.next()]에서 내 생각엔 aFile.next()를 쓰지 않아도 될거 같은데 없으면 AssertionError: '>title1\nATGC\nATGC\n' != " 가 발생한다. ???
def testFastaGenerator(self): input = StringIO('''\ >title1 ATGC ATGC >title2 TACG TACG ''') g = FastaGenerator(input) expect = '''\ >title1 ATGC ATGC ''' self.assertEquals(expect, g.next()) expect1 = '''\ >title2 TACG TACG ''' self.assertEquals(expect1, g.next())
의문 : g.next()로 하지 않고, FastaGenerator(input)을 직접 사용했더니 AssertionError: '>title2\nTACG\nTACG\n' != 'TACG\nTACG\n' 에러가 발생했다. 왜 그럴까?
-> AssertionError는 assert문이 실패할 때 발생한다.
4. lines.splitlines() : 문자열을 라인단위로 분리한다. 결과는 리스트
2006-03-01
오늘의 문제 : 입력으로 multi FASTA format으로 구성된 DNA 서열을 받고, 출력으로 peptide 조각들의 질량을 돌려준다.
- 1단계 : CRC card를 작성해 보자.
- 2단계 : unittest로 코드 작성
1. map -> start codon의 인덱스를 찾기 위해서 사용했다. 여러개 있을 수도 있기 때문에 사용
- map함수의 첫번째 인수는 함수이고, 두번째 인수는 리스트이다. 두번째 인수의 모든 아이템들은 첫 인수인 함수에 적용되고 결과로 리스트를 리턴한다.
startcodon = map(sequence.find, StartCodon)
주의) 내가 받는 값의 type을 잘 살펴보자...
2. yield : protein sequence를 받아서 restriction enzyme으로 자를 때 사용했다.
- 일반 함수와 발생자의 큰 차이점은 일반 함수는 한번 함수가 호출되면 종료할 때까지 모든 일을 마친 결과를 넘겨야 하는 반면에, 발생자는 정보를 생성하는 중간에 결과를 넘길 수 있다.
(<-) |
[../2006-02] |
[../2006-04] |
(->) |