def evaluate(self,seqs): # Check seqs container if isinstance(seqs,pd.DataFrame): seq_col = qc.get_cols_from_df(seqs,'seqs')[0] seqs_to_use = list(seqs[seq_col]) elif not (isinstance(seqs,list) or isinstance(seqs,pd.Series)): raise SortSeqError('Sequences must be input as a list, pd.Series, or pd.DataFrame') else: seqs_to_use = list(seqs) # Check length if len(seqs_to_use[0]) != self.length: raise SortSeqError(\ 'Energy Matrix Length does not equal Sequence Length') # Compute seqmats t0 = time.time() seqarray = fast.seqs2array_for_nbrmodel(seqs_to_use,self.seqtype) t1 = time.time() # Compute and return values vals = self.evaluate_on_seqarray(seqarray) t2 = time.time() return vals
c_time = time.time() - t print 'cython, seqs2array_for_matmodel: %f sec to convert %d %s seqs of length %d'%\ (c_time,num_sites,seqtype,site_length) print '%.1f-fold speedup.' % (p_time / c_time) print '-----------------------------' # Test seqs2array_for_nbrmodel sites = fast.seq2sitelist(seq, 20) site_length = len(sites[0]) num_sites = len(sites) t = time.time() seq_dict, inv_dict = utils.choose_dict(seqtype, modeltype='NBR') sitearray_p = np.zeros([num_sites, ((site_length - 1) * len(seq_dict))], dtype=int) for i, site in enumerate(sites): sitearray_p[i, :] = utils.seq2matpair(site, seq_dict).ravel() p_time = time.time() - t print 'python, seqs2array_for_nbrmodel: %f sec to convert %d %s seqs of length %d'%\ (p_time,num_sites,seqtype,site_length) t = time.time() sitearray = fast.seqs2array_for_nbrmodel(sites, seqtype, safe=False) c_time = time.time() - t print 'cython, seqs2array_for_nbrmodel: %f sec to convert %d %s seqs of length %d'%\ (c_time,num_sites,seqtype,site_length) print '%.1f-fold speedup.' % (p_time / c_time)
c_time = time.time()-t print 'cython, seqs2array_for_matmodel: %f sec to convert %d %s seqs of length %d'%\ (c_time,num_sites,seqtype,site_length) print '%.1f-fold speedup.'%(p_time/c_time) print '-----------------------------' # Test seqs2array_for_nbrmodel sites = fast.seq2sitelist(seq,20) site_length = len(sites[0]) num_sites = len(sites) t = time.time() seq_dict,inv_dict = utils.choose_dict(seqtype,modeltype='NBR') sitearray_p = np.zeros([num_sites,((site_length-1)*len(seq_dict))],dtype=int) for i, site in enumerate(sites): sitearray_p[i,:] = utils.seq2matpair(site,seq_dict).ravel() p_time = time.time()-t print 'python, seqs2array_for_nbrmodel: %f sec to convert %d %s seqs of length %d'%\ (p_time,num_sites,seqtype,site_length) t = time.time() sitearray = fast.seqs2array_for_nbrmodel(sites,seqtype,safe=False) c_time = time.time()-t print 'cython, seqs2array_for_nbrmodel: %f sec to convert %d %s seqs of length %d'%\ (c_time,num_sites,seqtype,site_length) print '%.1f-fold speedup.'%(p_time/c_time)