root/galaxy-central/eggs/bx_python-0.5.0_dev_f74aec067563-py2.6-macosx-10.6-universal-ucs2.egg/bx/filter.py @ 3

リビジョン 3, 1.9 KB (コミッタ: kohda, 14 年 前)

Install Unix tools  http://hannonlab.cshl.edu/galaxy_unix_tools/galaxy.html

行番号 
1"""
2Classes for implementing `Pipeline`s composed of `Filter`s (intended to be
3subclassed).
4"""
5
6class Filter( object ):
7    def __init__( self, **kwargs ):
8        raise Exception("AbstractClass")
9   
10    def run( self, reader, writer ):
11        for block in reader:
12            block = self( block )
13            if block: writer( block )
14
15    def step( self, reader, writer ):
16        block = reader.next()
17        if not block: raise StopIteration
18        block = self( block )
19        if block: writer( block )
20       
21    def __call__( self, block ):
22        raise Exception("AbstractMethod")
23
24class Pipeline( Filter ):
25    def __init__( self, **kwargs ):
26        self.pipeline = list()
27
28    def __call__( self, block ):
29        for function in pipeline:
30            if not block: return block
31            try: f = function.__call__
32            except: raise TypeError, "'" + function.__class__.__name__ + "' is not callable."
33            block = f( block )
34        return block
35
36    def append( self, function ):
37        try: f = function.__call__
38        except: raise TypeError, "'" + function.__class__.__name__ + "' is not callable."
39        return self.pipeline.append( function )
40    def remove( self, function ):
41        return self.pipeline.remove( function )
42    def extend( self, pipeline ):
43        for item in pipeline:
44            self.append( item )
45    # Container interface
46    def __len__( self ): return len( self.pipeline )
47    def __getitem__( self, key ): return self.pipeline[key]
48    def __setitem__( self, key, value ):
49        try: f = value.__call__
50        except: raise TypeError, "'" + value.__class__.__name__ + "' is not callable."
51        return self.pipeline.__setitem__( key, value )
52    def __delitem__( self, key ): return self.pipeline.__delitem__( key )
53    def __iter__( self ): return self.pipeline.__iter__()
54    def __contains__( self, item ): return self.pipeline.__contains__( item )
Note: リポジトリブラウザについてのヘルプは TracBrowser を参照してください。