def runEmma(phed, p_i, k, snps): # Assume that the accessions are ordered. i = phed.getPhenIndex(p_i) r.library("emma") phenValues = [] for vals in phed.phenotypeValues: phenValues.append(float(vals[i])) phenArray = array([phenValues]) snpsArray = array(snps) res = r.emma_REML_t(phenArray, snpsArray, k) # print res return res
def runEmma(phed, p_i, k, snps): #Assume that the accessions are ordered. i = phed.getPhenIndex(p_i) #r.library("emma") r.source("emma.R") phenValues = [] for vals in phed.phenotypeValues: phenValues.append(float(vals[i])) phenArray = array([phenValues]) snpsArray = array(snps) res = r.emma_REML_t(phenArray, snpsArray, k) #print res return res
def run_emma_w_missing_data(snpsd, phed, p_i, chromosome, k, missing_val='NA'): """ Runs Emma w. missing data. """ #Assume that the accessions are ordered. snps = snpsd.snps r.source("emma.R") phen_vals = phed.getPhenVals(p_i, noNAs=False) if phen_vals.count('NA'): print "Coordinating SNPs and phenotypes, removing %d accessions which were missing phenotypic values." % phen_vals.count( 'NA') ai_to_keep = [i for i in range(len(phen_vals)) if phen_vals[i] != 'NA'] #print ai_to_keep new_snps = [] for snp in snps: new_snps.append([snp[i] for i in ai_to_keep]) snps = new_snps #print snps[0] phen_vals = [phen_vals[i] for i in ai_to_keep] #print phen_vals new_k = zeros((len(ai_to_keep), len(ai_to_keep))) for j1 in range(len(ai_to_keep)): for j2 in range(len(ai_to_keep)): new_k[j1, j2] = k[ai_to_keep[j1], ai_to_keep[j2]] k = new_k p_vals = [] for snp in snps: if snp.count(missing_val): acc_to_keep = [] new_snp = [] for j, nt in enumerate(snp): if not nt == missing_val: acc_to_keep.append(j) new_snp.append(nt) new_k = zeros((len(acc_to_keep), len(acc_to_keep))) new_phen_vals = [] for j1 in range(len(acc_to_keep)): for j2 in range(len(acc_to_keep)): new_k[j1, j2] = k[acc_to_keep[j1], acc_to_keep[j2]] new_phen_vals.append(phen_vals[acc_to_keep[j1]]) if len(set(snp)) == 1: p_vals.append(1) print phenArray print snpsArray print new_k else: phenArray = array([new_phen_vals]) snpsArray = array([new_snp]) #print "Running EMMA w. missing data." try: p_vals.extend( r.emma_REML_t(phenArray, snpsArray, new_k)['ps']) except Exception, err_str: print err_str print phenArray print snpsArray print new_k else: phenArray = array([phen_vals]) snpsArray = array([snp]) #print "Running EMMA w.o. missing data." try: p_vals.extend(r.emma_REML_t(phenArray, snpsArray, k)['ps']) except Exception, err_str: print err_str print phenArray print snpsArray print k
def _runEmma_(snps, phenValues, k): phenArray = array([phenValues]) snpsArray = array(snps) res = r.emma_REML_t(phenArray, snpsArray, k) #print res return res
def _runEmma_(snps,phenValues,k): phenArray = array([phenValues]) snpsArray = array(snps) res = r.emma_REML_t(phenArray,snpsArray,k) #print res return res