def getSlice(self, seqID, start, stop): 'perform an interval query and return results as raw ivals' try: seq = self.seqDict[seqID] nlmsa_id, ns, offset = self.seqs[seq] # GET UNION INFO FOR THIS SEQ except KeyError: return '' # failure code ival = sequence.absoluteSlice(seq, start, stop) # GET THE INTERVAL try: myslice = self[ival] # DO THE QUERY except EmptySliceError: return 'EMPTY' except KeyError: return '' # FAILURE CODE ivals = myslice.rawIvals() # GET RAW INTERVAL DATA d = {} # Save index info for source seq. d[nlmsa_id] = self.seqs.IDdict[str(nlmsa_id)] for v in ivals: # SAVE INDEX INFO FOR TARGET SEQS id = v[2] # target_id NLMSA_ID if not self.seqlist.is_lpo(id): # Only non-LPO seqs stored in this index. d[id] = self.seqs.IDdict[str(id)] # XMLRPC can't handle int dictionaries, use a list. l = [(key, val) for key, val in d.items()] # List of aligned ivals, list of (nlmsa_id, (seqID, nsID)). return nlmsa_id, ivals, l
def getSlice(self, seqID, start, stop): "perform an interval query and return results as raw ivals" try: seq = self.seqDict[seqID] nlmsa_id, ns, offset = self.seqs[seq] # GET UNION INFO FOR THIS SEQ except KeyError: return "" # failure code ival = sequence.absoluteSlice(seq, start, stop) # GET THE INTERVAL try: myslice = self[ival] # DO THE QUERY except EmptySliceError: return "EMPTY" except KeyError: return "" # FAILURE CODE ivals = myslice.rawIvals() # GET RAW INTERVAL DATA d = {} d[nlmsa_id] = self.seqs.IDdict[str(nlmsa_id)] # SAVE INDEX INFO FOR SOURCE SEQ for v in ivals: # SAVE INDEX INFO FOR TARGET SEQS id = v[2] # target_id NLMSA_ID if not self.seqlist.is_lpo(id): # ONLY NON-LPO SEQS STORED IN THIS INDEX d[id] = self.seqs.IDdict[str(id)] l = [(key, val) for key, val in d.items()] # XMLRPC CAN'T HANDLE int DICT, SO USE LIST return nlmsa_id, ivals, l # LIST OF ALIGNED IVALS, LIST OF (nlmsa_id,(seqID,nsID))