def create_domain(at, cl, metas): if OR3: return Orange.data.Domain(at, cl, metas=metas) else: domain = Orange.data.Domain(at, cl) if metas: if isinstance(metas, dict): metas = sorted(metas.items()) else: metas = zip([ StringVariable.new_meta_id() for _ in metas ], metas) domain.add_metas(dict((StringVariable.new_meta_id(), ma) for mi, ma in metas)) return domain
def create_domain(at, cl, metas): if OR3: return Orange.data.Domain(at, cl, metas=metas) else: domain = Orange.data.Domain(at, cl) if metas: domain.add_metas(dict((StringVariable.new_meta_id(), ma) for ma in metas)) return domain
def create_domain(at, cl, metas): if OR3: return Orange.data.Domain(at, cl, metas=metas) else: domain = Orange.data.Domain(at, cl) if metas: domain.add_metas( dict((StringVariable.new_meta_id(), ma) for ma in metas)) return domain
def create_domain(at, cl, metas): if OR3: return Orange.data.Domain(at, cl, metas=metas) else: domain = Orange.data.Domain(at, cl) if metas: # add metas in the reverse order (because meta ids are always decreasing) # this allows us to pass metas in the same order to create_table metas = zip([ StringVariable.new_meta_id() for _ in metas ], reversed(metas)) domain.add_metas(dict(metas)) return domain
def create_domain(at, cl, metas): if OR3: return Orange.data.Domain(at, cl, metas=metas) else: domain = Orange.data.Domain(at, cl) if metas: # add metas in the reverse order (because meta ids are always decreasing) # this allows us to pass metas in the same order to create_table metas = zip([StringVariable.new_meta_id() for _ in metas], reversed(metas)) domain.add_metas(dict(metas)) return domain
def transpose_labels_to_class(data, class_label=None, gene_label="gene"): """Converts data with genes in rows to data with genes as attributes.""" # if no class_label (attribute type) given, guess it from the data if not class_label: l = [] for a in data.domain.attributes: l.extend(list(a.attributes.keys())) l = list(set(l)) class_label = l[0] if len(set(l)) > 1: import warnings warnings.warn( "More than single attribute label types (%s), took %s" % (", ".join(l), class_label)) if gene_label in [v.name for v in data.domain.getmetas().values()]: atts = [ContinuousVariable(str(d[gene_label])) for d in data] else: atts = [ContinuousVariable("A%d" % i) for i in range(len(data))] classvalues = list( set([a.attributes[class_label] for a in data.domain.attributes])) if all([isinstance(x, (int, float, complex)) for x in classvalues]): classvar = ContinuousVariable(class_label) else: classvar = DiscreteVariable(class_label, values=classvalues) domain = Orange.data.Domain(atts, classvar) newdata = [] for a in data.domain.attributes: newdata.append([_float_or_na(d[a]) for d in data] + [a.attributes[class_label]]) sample = StringVariable("sample") id = StringVariable.new_meta_id() new = Orange.data.Table(domain, newdata) new.domain.addmeta(id, sample) for i, d in enumerate(new): d[sample] = data.domain.attributes[i].name return new
def transpose_labels_to_class(data, class_label=None, gene_label="gene"): """Converts data with genes in rows to data with genes as attributes.""" # if no class_label (attribute type) given, guess it from the data if not class_label: l = [] for a in data.domain.attributes: l.extend(list(a.attributes.keys())) l = list(set(l)) class_label = l[0] if len(set(l)) > 1: import warnings warnings.warn("More than single attribute label types (%s), took %s" % (", ".join(l), class_label)) if gene_label in [v.name for v in data.domain.getmetas().values()]: atts = [ContinuousVariable(str(d[gene_label])) for d in data] else: atts = [ContinuousVariable("A%d" % i) for i in range(len(data))] classvalues = list(set([a.attributes[class_label] for a in data.domain.attributes])) if all([isinstance(x, (int, float, complex)) for x in classvalues]): classvar = ContinuousVariable(class_label) else: classvar = DiscreteVariable(class_label, values=classvalues) domain = Orange.data.Domain(atts, classvar) newdata = [] for a in data.domain.attributes: newdata.append([_float_or_na(d[a]) for d in data] + [a.attributes[class_label]]) sample = StringVariable("sample") id = StringVariable.new_meta_id() new = Orange.data.Table(domain, newdata) new.domain.addmeta(id, sample) for i, d in enumerate(new): d[sample] = data.domain.attributes[i].name return new
def transpose_class_to_labels(data, attcol="sample"): """Converts data with genes as attributes to data with genes in rows.""" if attcol in [v.name for v in data.domain.getmetas().values()]: atts = [ContinuousVariable(str(d[attcol])) for d in data] else: atts = [ContinuousVariable("S%d" % i) for i in range(len(data))] for i, d in enumerate(data): atts[i].setattr("class", str(d.getclass())) domain = Orange.data.Domain(atts, None) newdata = [] for a in data.domain.attributes: newdata.append([_float_or_na(d[a]) for d in data]) gene = StringVariable("gene") id = StringVariable.new_meta_id() new = Orange.data.Table(domain, newdata) new.domain.addmeta(id, gene) for i, d in enumerate(new): d[gene] = data.domain.attributes[i].name return new