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