This repository has been archived on 2024-07-04. You can view files and clone it, but cannot push or open issues or pull requests.
laydi/scripts/illumina/illumina2ftsv
einarr 5f1f4d0dc2 Renamed directory illumina2ftsv to illumina to gather all Illumina-relevant
scripts there.  Added laydi-annot-illumina script that generates Laydi
annotation files from Illumina text annotation files.
2011-01-04 11:43:24 +00:00

93 lines
2.1 KiB
Python

#!/usr/bin/python
import getopt
import numpy
import sys
from laydi import dataset
VERSION = "0.1.0"
dataset_fn = "-"
def print_help():
print "illumina2ftsv %s" % VERSION
print
print "Usage: illumina2ftsv [options] <illumina_genome_studio_file>"
print
def parse_options():
s_opts = "d:h"
l_opts = ["dataset", "help"]
options, params = getopt.getopt(sys.argv[1:], s_opts, l_opts)
for opt, val in options:
if opt in ["-d", "--dataset"]:
global dataset_fn
dataset_fn = val
elif opt in ["-h", "--help"]:
print_help()
sys.exit(0)
if len(params) != 1:
print_help()
sys.exit(1)
return params
def read_illumina_file(fn):
fd = open(fn)
line = fd.readline()
if line.strip() != "Illumina Inc. GenomeStudio version 1.7.0":
raise Exception("File cannot be recognized as Illumina textual data")
headers = {}
line= fd.readline()
while line.strip() != "":
key, val = line.split("=", 1)
headers[key.strip()] = val.strip()
line = fd.readline()
col_headers = fd.readline().split('\t')
values = []
line = fd.readline()
while line != "":
values.append([x.strip() for x in line.split('\t')])
line = fd.readline()
probe_col = col_headers.index("ProbeID")
print "probe id column:"
header_cols = []
samples = []
for i, colname in enumerate(col_headers):
if colname.startswith("AVG_Signal-"):
header_cols.append(i)
samples.append(colname.split("-", 1)[1])
print header_cols
print samples
a = numpy.array(values)
m = numpy.array(a[:,header_cols], dtype='d')
print m
probe_ids = list(a[:, probe_col])
print "samples: ", len(samples)
print "probe_ids: ", len(probe_ids)
print "shape: ", m.shape
ds = dataset.Dataset(m.transpose(), [('samples', samples), ('probe-ids', probe_ids)], name="Average Expr.")
dataset.write_ftsv("test.ftsv", ds)
if __name__ == '__main__':
fn = parse_options()[0]
read_illumina_file(fn)