输入是一个制表符分隔的文件。行是变量,列是样本。变量可以假定三个值(00,0,11,11),并按照需要修饰的顺序列出(v1-> vN)。有大量的行和列,所以输入文件需要以块的形式读取。
输入如下:
s1 s2 s3 s4 v1 00 00 11 01 v2 00 00 00 00 v3 01 11 00 00 v4 00 00 00 00 (...)
我所试图做的是输入拆分成几排,这里的作品是足够的样品是每一个独特的只是大的碎片。在上面的例子中,从v1开始,第一个块应该在v3处结束,因为在该点有足够的信息表明样本是唯一的。下一个块将从第4版开始并重复该过程。任务在达到最后一行时结束。块应打印在输出文件中。
我尝试:
我试图做的是使用CSV模块以产生由列表组成的阵列,每个含有单一变量的状态(00,01,00)适用于所有样品。或者,通过旋转输入,为每个变量创建包含样本状态的列表。如果最好使用v1 = ['00','00','11','01']或者s1 = ['00',我会问这个工作应该专注于列还是行,,即。 ,'00','01','00',...]
以下代码是指我试图将列问题更改为行问题的旋转操作。 (对不起,我笨拙的Python语法,是我能做的最好的)
my_infilename='my_file.txt'
csv_infile=csv.reader(open(my_infilename,'r'), delimiter='\t')
out=open('transposed_'+my_infilename, 'w')
csv_infile=zip(*csv_infile)
line_n=0
for line in csv_infile:
line_n+=1
if line_n==1: #headers
continue
else:
line=(','.join(line)+'\n') #just to make it readable to me
out.write(line)
out.close()
什么是解决这个问题的最好方法是什么? pivoting可以有任何帮助吗?有没有我可以依赖的内置函数?
那么,您的问题是什么? – Marcin 2012-04-17 15:32:49
基本上,如何用一个循环放下脚本,这将允许我识别区分每个样本所需的最小数量的有序变量。 – cometarossa 2012-04-17 15:48:59
这与您发布的代码有什么关系?这个问题的哪一部分是有问题的?现在,这篇文章听起来像“我试图解决这个问题,但不能,那么你能做到吗?” – Marcin 2012-04-17 15:52:20