Esempio n. 1
0
    def add_complex_index(self, refseq, index, pregaps=0):
        if isinstance(self._idx[refseq], list):
            raise AttributeError('A complex index cannot be modified')
        if not isinstance(index, list):
            raise AttributeError(
                'A complex index is a list of IndexedNum or integers')
        if len(index) < len(re.sub('-', '', self._seq[refseq].sequence)):
            raise AttributeError(
                'The given index is not long enought to cover que assigned sequence'
            )

        init_value = self._idx[refseq]
        part_to_add = index[init_value - 1 - pregaps:]
        self._idx[refseq] = []
        count = 0

        for x in range(len(self._seq[refseq])):
            if self._seq[refseq][x] != '-':
                self._idx[refseq].append(IndexedNum(part_to_add[count]))
                count += 1

        for x in range(len(self._segment[refseq])):
            if self._segment[refseq][x] != '-':
                self._segment[refseq][x] = self._sequence_position_id(
                    refseq, self._segment[refseq][x] - init_value + 1)

        self._has_complex_index = True
Esempio n. 2
0
    def _alignment_position_from_sequence_position(self, refseq, pos):
        if not isinstance(self._idx[refseq], list):
            return super(IndexedSeqAli,
                         self)._alignment_position_from_sequence_position(
                             refseq, pos)

        pos = IndexedNum(pos)
        if not self._seq[refseq].is_gapped:
            try:
                return self._idx[refseq].index(pos) + 1
            except ValueError, e:
                raise IndexError(e.message)
Esempio n. 3
0
def process_DBREF_line(line):
    '''
    The line format is such as:

    COLUMNS    DATA TYPE    FIELD          DEFINITION
    ----------------------------------------------------------------
     1 - 6     Record name  "DBREF "
     8 - 11    IDcode       idCode         ID code of this entry.
    13         Character    chainID        Chain identifier.
    15 - 18    Integer      seqBegin       Initial sequence number
                                           of the PDB sequence segment.
    19         AChar        insertBegin    Initial insertion code
                                           of the PDB sequence segment.
    21 - 24   Integer       seqEnd         Ending sequence number
                                           of the PDB sequence segment.
    25         AChar        insertEnd      Ending insertion code
                                           of the PDB sequence segment.
    27 - 32    LString      database       Sequence database name.
    34 - 41    LString      dbAccession    Sequence database accession code.
    43 - 54    LString      dbIdCode       Sequence database
                                           identification code.
    56 - 60    Integer      dbseqBegin     Initial sequence number of the
                                           database seqment.
    61         AChar        idbnsBeg       Insertion code of initial residue
                                           of the segment, if PDB is the
                                           reference.
    63 - 67    Integer      dbseqEnd       Ending sequence number of the
                                           database segment.
    68         AChar        dbinsEnd       Insertion code of the ending
                                           residue of the segment, if PDB is
                                           the reference.

    For example:

             1         2         3         4         5         6         7
    1234567890123456789012345678901234567890123456789012345678901234567890
    DBREF  1ABC B    1B   36  PDB    1ABC     1ABC             1B    36

    DBREF  3AKY      3   220  SWS    P07170   KAD1_YEAST       5    222

    DBREF  1HAN      2   288  GB     397884   X66122           1    287

    DBREF  3HSV A    1    92  SWS    P22121   HSF_KLULA      193    284
    DBREF  3HSV B    1    92  SWS    P22121   HSF_KLULA      193    284

    DBREF  1ARL      1   307  SWS    P00730   CBPA_BOVIN     111    417

    DBREF  249D A    1    12  NDB    BDL070   BDL070           1     12
    DBREF  249D B   13    24  NDB    BDL070   BDL070          13     24
    DBREF  249D C   26    36  NDB    BDL070   BDL070          26     36
    DBREF  249D D   37    48  NDB    BDL070   BDL070          37     48

    Detailed info @ http://www.wwpdb.org/documentation/format23/sect3.html
    '''
    data = []
    data.append(line[7:11].strip())
    data.append(fix_chain(line[12:13].strip()))
    data.append(IndexedNum(line[14:19].strip()))
    data.append(IndexedNum(line[20:25].strip()))
    data.append(line[25:29].strip())
    data.append(line[30:41].strip())
    return data
 def end(self):
     return IndexedNum(self.line[32:39].strip())
 def init(self):
     return IndexedNum(self.line[20:27].strip())
 def end(self):
     return IndexedNum(self.line[33:38].strip())
 def init(self):
     return IndexedNum(self.line[22:28].strip())