root/galaxy-central/lib/galaxy/datatypes/qualityscore.py @ 2

リビジョン 2, 3.8 KB (コミッタ: hatakeyama, 14 年 前)

import galaxy-central

行番号 
1"""
2Qualityscore class
3"""
4
5import data
6import logging
7from galaxy.datatypes.sniff import *
8from galaxy import util
9
10log = logging.getLogger(__name__)
11
12class QualityScore ( data.Text ):
13    """
14    until we know more about quality score formats
15    """
16    file_ext = "qual"
17
18class QualityScoreSOLiD ( QualityScore ):
19    """
20    until we know more about quality score formats
21    """
22    file_ext = "qualsolid"
23
24    def sniff( self, filename ):
25        """
26        >>> fname = get_test_fname( 'sequence.fasta' )
27        >>> QualityScoreSOLiD().sniff( fname )
28        False
29        >>> fname = get_test_fname( 'sequence.qualsolid' )
30        >>> QualityScoreSOLiD().sniff( fname )
31        True
32        """
33        try:
34            fh = open( filename )
35            readlen = None
36            goodblock = 0
37            while True:
38                line = fh.readline()
39                if not line:
40                    if goodblock > 0:
41                        return True
42                    else:
43                        break #EOF
44                line = line.strip()
45                if line and not line.startswith( '#' ): #first non-empty non-comment line
46                    if line.startswith( '>' ):
47                        line = fh.readline().strip()
48                        if line == '' or line.startswith( '>' ):
49                            break
50                        try:
51                            [ int( x ) for x in line.split() ]
52                            if not(readlen):
53                                readlen = len(line.split())
54                            assert len(line.split()) == readlen    #SOLiD reads should be of the same length
55                        except:
56                            break
57                        goodblock += 1
58                        if goodblock > 10:
59                            return True
60                    else:
61                        break #we found a non-empty line, but it's not a header
62            fh.close()
63        except:
64            pass
65        return False
66   
67    def set_meta( self, dataset, **kwd ):
68        if self.max_optional_metadata_filesize >= 0 and dataset.get_size() > self.max_optional_metadata_filesize:
69            dataset.metadata.data_lines = None
70            return
71        return QualityScore.set_meta( self, dataset, **kwd )
72
73
74
75class QualityScore454 ( QualityScore ):
76    """
77    until we know more about quality score formats
78    """
79    file_ext = "qual454"
80
81    def sniff( self, filename ):
82        """
83        >>> fname = get_test_fname( 'sequence.fasta' )
84        >>> QualityScore454().sniff( fname )
85        False
86        >>> fname = get_test_fname( 'sequence.qual454' )
87        >>> QualityScore454().sniff( fname )
88        True
89        """
90        try:
91            fh = open( filename )
92            while True:
93                line = fh.readline()
94                if not line:
95                    break #EOF
96                line = line.strip()
97                if line and not line.startswith( '#' ): #first non-empty non-comment line
98                    if line.startswith( '>' ):
99                        line = fh.readline().strip()
100                        if line == '' or line.startswith( '>' ):
101                            break
102                        try:
103                            [ int( x ) for x in line.split() ]
104                        except:
105                            break
106                        return True
107                    else:
108                        break #we found a non-empty line, but it's not a header
109            fh.close()
110        except:
111            pass
112        return False
113
114class QualityScoreSolexa ( QualityScore ):
115    """
116    until we know more about quality score formats
117    """
118    file_ext = "qualsolexa"
119
120class QualityScoreIllumina ( QualityScore ):
121    """
122    until we know more about quality score formats
123    """
124    file_ext = "qualillumina"
Note: リポジトリブラウザについてのヘルプは TracBrowser を参照してください。