Differences between revisions 46 and 47
Revision 46 as of 2006-03-03 09:20:22
Size: 4194
Editor: 211
Comment:
Revision 47 as of 2006-03-03 09:20:32
Size: 4196
Editor: 211
Comment:
Deletions are marked like this. Additions are marked like this.
Line 11: Line 11:
1. classmethod : 일반 메쏘드가 첫 인수(self)로 인스턴스 객체를 받는 것에 비해서 클래스 메쏘드는 첫 인수로 클래스 객체를 받는다. 메쏘드를 클래스 메쏘드로 변환하기 위해서 classmethod()를 호출해야 한다. 클래스 메쏘드 호출시 첫 번째 인수로 자동으로 해당 클래스 객체가 전달된다. 1. classmethod : 일반 메쏘드가 첫 인수(self)로 인스턴스 객체를 받는 것에 비해서 클래스 메쏘드는 첫 인수로 클래스 객체를 받는다. 메쏘드를 클래스 메쏘드로 변환하기 위해서 classmethod()를   호출해야 한다. 클래스 메쏘드 호출시 첫 번째 인수로 자동으로 해당 클래스 객체가 전달된다.

(<-)

[../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-
리눅스마스타1급1차시험일


2006-03-03

어제에 이어서...

1. classmethod : 일반 메쏘드가 첫 인수(self)로 인스턴스 객체를 받는 것에 비해서 클래스 메쏘드는 첫 인수로 클래스 객체를 받는다. 메쏘드를 클래스 메쏘드로 변환하기 위해서 classmethod()를 호출해야 한다. 클래스 메쏘드 호출시 첫 번째 인수로 자동으로 해당 클래스 객체가 전달된다.


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]

(->)


CategoryWebLogYong

parkpro/2006-03 (last edited 2011-08-03 11:00:55 by localhost)

web biohackers.net