Могу ли я получить некоторую помощь с эквивалентом массива java в C#?
Привет,
У меня есть программа, которая заполняет список & lt;float> c_dat и t_dat с помощью 2, 4 или 6 цифры за раз. Затем следующий шаг делает некоторую математику, чтобы вычислить дисперсию и отслеживать вещи, добавляя их. Проблема в том, что элемент qC[0] довольно часто равен 0, и это вызывает у меня много проблем позже в коде, пытающемся сделать больше вычислений. Я не специалист по python - могу ли я получить некоторые рекомендации по следующему фрагменту кода?
if C_count >= 0 and T_count >= 0: qC=[0.0,0.0] qT=[0.0,0.0] for j in range(len(C_dat)/2): #print dip_dat[2*j],dip_dat[2*j+1] m = C_dat[2*j]+C_dat[2*j+1] qC[0]+= float(C_dat[2*j]) # ref allele freq qC[1]+= float(m) for j in range(len(T_dat)/2): m = T_dat[2*j]+T_dat[2*j+1] qT[0]+= float(T_dat[2*j]) # ref allele freq qT[1]+= float(m) #print qT[1],qC[1] if (qT[1] >= Min_reads and qC[1] >= Min_reads): # Here I am outputting a standardized data format # columns: scaffold, position, ref allele count 1, total count 1,ref allele count 2, total count 2 outkk.write(cols[0]+"\t"+cols[1]+"\t"+str(qC[0])+"\t"+str(qC[1])+"\t"+str(qT[0])+"\t"+str(qT[1])+"\n") outcomes[2]+=1#print "here" Locations.append(cols[0]+"_"+cols[1]) num_snps+=1 qC_hat=qC[0]/qC[1] qT_hat=qT[0]/qT[1] var_C = 1.0/qC[1] var_T = 1.0/qT[1]
Что я уже пробовал:
Я пробовал делать двойные и плавающие переменные, которые просто добавляются к таким, как qC и qC_m, и я пробовал arraylists и списки, но результаты те же.
Вот моя текущая версия, но она не работает...
if (C_count >= 0 && T_count >= 0) { double[] qC = { 0.0, 0.0 }; double[] qT = { 0.0, 0.0 }; var range1 = Enumerable.Range(0, (C_dat.Count / 2)); foreach (int i in range1) { double m = Convert.ToDouble(C_dat[2 * i]) + Convert.ToDouble(C_dat[2 * i + 1]); //qC[0] is fairly consistently 0 qC[0] = qC[0] + Convert.ToDouble(C_dat[2 * i]); if (C_dat.Count == 2 && qC[0] == 0) { Console.WriteLine(" C_dat count = " + C_dat.Count + " referencing C_dat[2*i] or C_dat " + 2 * i + " item = " + C_dat[2 * i]); } qC[1] = qC[1] + m; } var range2 = Enumerable.Range(0,(T_dat.Count/2)); foreach (int i in range2) { double m = Convert.ToDouble(T_dat[2 * i]) + Convert.ToDouble(T_dat[2 * i + 1]); qT[0] = qT[0] + Convert.ToDouble(T_dat[2 * i]); qT[1] = qT[1] + m; } if (qT[1] >= min_reads && qC[1] >= min_reads) { //skipping output for yut file Locations.Add(cols[0] + "_" + cols[1]); num_snps++; double qC_hat = qC[0] / qC[1]; double qT_hat = qT[0] / qT[1]; double var_C = 1.0 / qC[1]; double var_T = 1.0 / qT[1];