Beispiel #1
0
    def _composeDataLine(self, ge, hbColumns, dataLineCount, lastGE):
        cols = []
        for hbColName in hbColumns:
            if hbColName == "start":
                cols.append(self._formatStart(ge.start))
            elif hbColName == "end":
                cols.append(self._formatEnd(ge.end))
            elif hbColName == "strand":
                cols.append(getStringFromStrand(ge.strand))
            elif hbColName == "val":
                cols.append(self._formatValue(ge.val))
            elif hbColName == "edges":
                cols.append(self._formatEdges(ge.edges, ge.weights))
            elif hbColName == "weights":
                pass
            else:
                cols.append(
                    self._formatPhraseWithCorrectChrUsage(
                        str(getattr(ge, hbColName)), useUrlEncoding=True, notAllowedChars="#\t"
                    )
                )

        if self._headerDict["fixed-size data lines"]:
            assert len(cols) == 1
            return cols[0] + (os.linesep if (dataLineCount * len(cols[0])) % 60 < len(cols[0]) or lastGE else "")
        else:
            return "\t".join(cols) + os.linesep
Beispiel #2
0
    def _compose(self, out):
        trackName = self._geSource.getTrackName()
        if trackName is not None:
            name = ':'.join(self._geSource.getTrackName()).replace(' ','_')
            print >>out, 'track' + ' name=' + name

        numCols = self._findNumCols()
        bedColumnsList = list(self._bedColumnsDict.iteritems())

        for ge in self._geSource:
            cols = ['']*numCols
            for i in range(numCols):
                colNames, colInfo = bedColumnsList[i]

                for colName in (colNames if type(colNames) == tuple else (colNames,)):
                    try:
                        value = getattr(ge, colName)
                    except AttributeError:
                        value = None

                    if colName == 'end':
                        value = self._handleEnd(ge, value)
                    elif colName == 'val':
                        value = self._handleVal(value)
                    elif colName == 'strand':
                        value = getStringFromStrand(value)

                    if isinstance(value, str) and colName not in ('name', 'id'):
                        if '|' in value or any('|' in getattr(ge, col) \
                                               for col in colInfo.checkExtra if hasattr(ge,col)):
                            cols[i] = colInfo.defaultVal
                        else:
                            cols[i] = value
                    else:
                        cols[i] = value if value is not None else colInfo.defaultVal

                    if colName == 'id' and value is not None:
                        break

            print >>out, '\t'.join([str(x) for x in cols])
Beispiel #3
0
    def _compose(self, out):
        print >>out, '##gff-version 3'
    
        gffColumnsList = list(self._gffColumnsDict.iteritems())
        
        numCols = 9
        for ge in self._geSource:
            cols = [''] * numCols
            for i in range(numCols):
                colName, colInfo = gffColumnsList[i]

                try:
                    value = getattr(ge, colName)
                except AttributeError:
                    value = None

                if colName == 'source':
                    if value is not None and '\t' in value: #from old source memmaps
                        value = '.'
                if colName == 'start':
                    value = value + 1
                elif colName == 'val':
                    value = self._commonFormatNumberVal(value)
                elif colName == 'strand':
                    value = getStringFromStrand(value)
                elif colName == 'attributes':
                    if value is None:
                        attrs = ''
                        if ge.id is not None:
                            attrs += 'ID=%s;' % quote(ge.id, safe=' |')
                        if hasattr(ge, 'name'):
                            attrs += 'Name=%s;' % quote(ge.name, safe=' |')
                        if attrs != '':
                            value = attrs
                    
                cols[i] = value if value is not None else colInfo.defaultVal
                
            print >>out, '\t'.join([str(x) for x in cols])