Size: 4194
Comment:
|
Size: 4196
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] |
(->) |