def buildContiguousCloseResidueSequences(self):
     #7. attempt to show ribbon for contiguous residues in macromolecule
     rdict = self.results
     res = rdict['macro_close_res']
     chs = res.parent.uniq()
     ss_res = ResidueSet()
     last_ind = 0
     chain1 = 1
     #output = 0
     for c in chs:
         num_res = len(c.residues)
         if num_res <3:
             continue
         rr = res.get(lambda x: x.parent==c)
         rr.sort()
         chain1 = 0
         current_seq = ResidueSet() # contiguous residues
         current_set = ResidueSet() # all pieces in this chain
         skipped_set = ResidueSet() # hole in current contiguous piece
         if len(rr)>3:  #?? min num residues for ss:at least 3??
             #reset all
             first = c.residues.index(rr[0])
             last = c.residues.index(rr[-1])
             for r in c.residues[first:last+1]:
                 if r==c.residues[-1]:
                     if r in rr: 
                         if len(current_seq)>3:
                             current_seq.append(r)
                     if len(current_seq)>4:
                         ss_res.extend(current_seq)
                 if r not in rr:  #process hole
                     skipped_set.append(r)   # one hole ok
                     if len(skipped_set)>=2: # found second hole -> end seq
                         if len(current_seq)>4:
                             if not len(current_set):
                                 current_set = current_seq[:]
                                 current_set.sort()
                             else:
                                 current_set.extend(current_seq)
                                 current_set.sort()
                             if not len(ss_res):
                                 ss_res = current_set[:]
                             else:
                                 ss_res.extend(current_set)
                         skipped_set = ResidueSet()
                         current_seq = ResidueSet()
                 else:
                     #reset skipped_set
                     if len(skipped_set)<=1 and len(current_seq)>=1: #save RR_R 
                         current_seq.extend(skipped_set) #save hole if there is one
                         current_seq.append(r) #save this residue
                     else:  #just save it
                         current_seq.append(r)
                     skipped_set= ResidueSet()
         if len(current_seq)>4:
             for r in current_seq:
                 if r not in ss_res:
                     ss_res.append(r)
         if len(current_set)>4:
             for r in current_set:
                 if r not in ss_res:
                     ss_res.append(r)
     rdict['ss_res'] = ss_res
Example #2
0
 def buildContiguousCloseResidueSequences(self):
     #7. attempt to show ribbon for contiguous residues in macromolecule
     rdict = self.results
     res = rdict['macro_close_res']
     chs = res.parent.uniq()
     ss_res = ResidueSet()
     last_ind = 0
     chain1 = 1
     #output = 0
     for c in chs:
         num_res = len(c.residues)
         if num_res <3:
             continue
         rr = res.get(lambda x: x.parent==c)
         rr.sort()
         chain1 = 0
         current_seq = ResidueSet() # contiguous residues
         current_set = ResidueSet() # all pieces in this chain
         skipped_set = ResidueSet() # hole in current contiguous piece
         if len(rr)>3:  #?? min num residues for ss:at least 3??
             #reset all
             first = c.residues.index(rr[0])
             last = c.residues.index(rr[-1])
             for r in c.residues[first:last+1]:
                 if r==c.residues[-1]:
                     if r in rr: 
                         if len(current_seq)>3:
                             current_seq.append(r)
                     if len(current_seq)>4:
                         ss_res.extend(current_seq)
                 if r not in rr:  #process hole
                     skipped_set.append(r)   # one hole ok
                     if len(skipped_set)>=2: # found second hole -> end seq
                         if len(current_seq)>4:
                             if not len(current_set):
                                 current_set = current_seq[:]
                                 current_set.sort()
                             else:
                                 current_set.extend(current_seq)
                                 current_set.sort()
                             if not len(ss_res):
                                 ss_res = current_set[:]
                             else:
                                 ss_res.extend(current_set)
                         skipped_set = ResidueSet()
                         current_seq = ResidueSet()
                 else:
                     #reset skipped_set
                     if len(skipped_set)<=1 and len(current_seq)>=1: #save RR_R 
                         current_seq.extend(skipped_set) #save hole if there is one
                         current_seq.append(r) #save this residue
                     else:  #just save it
                         current_seq.append(r)
                     skipped_set= ResidueSet()
         if len(current_seq)>4:
             for r in current_seq:
                 if r not in ss_res:
                     ss_res.append(r)
         if len(current_set)>4:
             for r in current_set:
                 if r not in ss_res:
                     ss_res.append(r)
     rdict['ss_res'] = ss_res