sifFile = args[0] featureFile = args[1] iplMatrix = None global verbose, globalList, globalPathway for o, a in opts: if o == "-q": verbose = False elif o == "-i": iplMatrix = a ## build sourceList typeFile = "/".join(re.split("/", sifFile)[:-2] + ["TYPE.NA"]) sourceList = re.split("/", sifFile)[-2] + ".list_t" h = mData.rList(featureFile) (n, i) = mPathway.rSIF(sifFile, typef=typeFile) (gn, gi) = mPathway.rPathway(globalPathway) p = mPathway.Pathway(n, i) s = mPathway.sortConnected(p) f = open(sourceList, "w") c = 1 for i in s: u = list(set(i) & set(h)) if len(u) >= 5: f.write("component_%s\t%s\n" % (c, "\t".join(u))) c += 1 break f.write("component_all\t%s\n" % ("\t".join(list(set(n.keys()) & set(h))))) f.write("all\t%s\n" % ("\t".join(list(set(gn.keys()) & set(h))))) f.close()
def cli_routine(outputDir, circleFiles, orderFiles, sampleFile, featureFile, orderFeature, centerFile, colorscaleFile, printLabel, verbose, cohortMinMax=False, purpleHack = True): """Routine for program execution via command-line.""" # I've tried not to touch this method as much as possible. # I don't want to break the way it was working for Sam Ng. # chrisw ## execute samples = [] features = [] if sampleFile != None: samples = mData.rList(sampleFile) if featureFile != None: features = mData.rList(featureFile) # end section for getting lists of samples and features ## read circleFiles # circleData is a list of dict[col][row]=score from each circleFile circleData = [] # circleColorsPalette is a list of (minColor),(zeroColor),(maxColor) circleColorsPalette = [] ## read colorscaleFile # the format is as follows - header compulsory: # min/max color coding color1 color2 color 3 # -2,2 rgb 155,155,155 255,255,255 0,0,0, # - rgb 155,0,155 255,0,255 0,0,0, # the "color format" is intended to support more color format, as I have # seen the html-colors in the code. # Michael ([email protected]) colorscaleData = None if colorscaleFile != None: if cohortMinMax: log("WARNING: The -k option overrides -m") colorscaleData = mData.retRows(colorscaleFile,aslist=True) line=1 for cs in colorscaleData: line = line + 1 if len(cs) != 5: log("ERROR: color scale needs five fields: datapoints, colorcoding(rgb) and three colors\n", die = True) try: cs[0] = [float(x) for x in cs[0].split(",")] except ValueError: pass if len(cs[0]) != 2 and cs[0] != "-": print cs[0] log("ERROR: Two data points or dash needed for color scale\n", die = True) if cs[1].lower() == "rgb": try: cs[2] = rgb(*[float(x) for x in cs[2].split(",")]) cs[3] = rgb(*[float(x) for x in cs[3].split(",")]) cs[4] = rgb(*[float(x) for x in cs[4].split(",")]) except TypeError: log("ERROR: RGB needs three values on line " + str(line) + "\n", die = True) except ValueError: log("ERROR: RGB color not correctly defined on line " + str(line) + "\n", die=True) else: log("ERROR: Unknown color coding on line " + str(line) + ": " + str(cs[1]) + "\n", die=True) for i in xrange(len(circleFiles)): # get data, samples, and features from each circleFile # data is a dict[col][row]=score # cols is a list of sample names # features is a list of feature names (data, cols, rows) = mData.rCRSData(circleFiles[i], retFeatures=True) circleData.append(data) minCol = lightBlueRGB zerCol = whiteRGB maxCol = redRGB if colorscaleFile != None and i<len(colorscaleData): #get colors from specified colorscaleFile minCol = colorscaleData[i][2] zerCol = colorscaleData[i][3] maxCol = colorscaleData[i][4] # special cases for -meth and -mut # if circleFiles[i].endswith("meth"): # maxCol = blueRGB # minCol = redRGB # log("Color: meth\n") # elif circleFiles[i].endswith("mut"): # maxCol = blackRGB # minCol = whiteRGB # log("Color: mut\n") circleColorsPalette.append((minCol, zerCol, maxCol)) # if no sampleFile/featureFile, default to using samples/features from circleFiles if sampleFile == None: samples = list(set(cols) | set(samples)) if featureFile == None: features = list(set(rows) | set(features)) # end section for reading circleFiles ## read centerFile centerData = None if centerFile != None: centerData = mData.r2Col(centerFile, header=True) ## sort if orderFeature != None: if len(orderFiles) > 0: orderData = [] orderColors = [] for i in xrange(len(orderFiles)): orderData.append(mData.rCRSData(orderFiles[i])) minCol = whiteRGB zerCol = whiteRGB maxCol = blackRGB orderColors.append((minCol, zerCol, maxCol)) else: orderData = circleData # sort samples based on sample score in orderData # priority of sorting determined by orderFiles parameter samples.sort(lambda x, y: scmp(x, y, orderFeature, orderData)) ## cohort png # cgi will probably not use orderFiles if len(orderFiles) > 0: imgFile = "%s/Cohort.png" % (outputDir) label = "Cohort" centerCol = whiteRGB.tohex() cohortCircleCols = [] for i in xrange(len(orderData)): ringCols = [] ringVals = [] for sample in samples: if sample in orderData[i]: if orderFeature in orderData[i][sample]: ringVals.append(orderData[i][sample][orderFeature]) elif "*" in orderData[i][sample]: ringVals.append(orderData[i][sample]["*"]) minVal = min([-0.01] + mData.floatList(ringVals)) maxVal = max([0.01] + mData.floatList(ringVals)) for sample in samples: if sample in orderData[i]: if orderFeature in orderData[i][sample]: ringCols.append(getColor(orderData[i][sample][orderFeature], minVal, maxVal, minColor=orderColors[i][0], zeroColor=orderColors[i][1], maxColor=orderColors[i][2])) elif "*" in orderData[i][sample]: ringCols.append(getColor(orderData[i][sample]["*"], minVal, maxVal, minColor=orderColors[i][0], zeroColor=orderColors[i][1], maxColor=orderColors[i][2])) else: ringCols.append(greyRGB.tohex()) else: ringCols.append(greyRGB.tohex()) cohortCircleCols.append(ringCols) plotCircle(imgFile, label=label, centerCol=centerCol, circleCols=cohortCircleCols, innerRadTotal=0.2, outerRadTotal=0.5, width=5) # end section for sample ordering ## plot images if centerData != None: centerDataFloatList = mData.floatList(centerData.values()) centerDataMinVal = min([-0.01] + centerDataFloatList) centerDataMaxVal = max([0.01] + centerDataFloatList) # get min/max values for datasets if cohortMinMax: (minValList, maxValList) = getCohortMinMaxValues(features, samples, circleData) else: (minValList, maxValList) = (None, None) if colorscaleData != None: (minValList, maxValList) = getColorScaleMinMaxValues(minValList, maxValList, len(circleData), colorscaleData) for feature in features: log("Drawing %s\n" % (feature)) centerColHex = None if centerData != None: if feature in centerData: centerColHex = getColor(centerData[feature], centerDataMinVal, centerDataMaxVal, minColor=lightBlueRGB, zeroColor=whiteRGB, purple0Hack=purpleHack) imgFile = "%s/%s.png" % (outputDir, re.sub("[/:]", "_", feature)) label = "" if printLabel: label = feature image_width = 5.0 drawCircleImageForFeature(feature, samples, label, imgFile, circleData, circleColorsPalette, width=image_width, centerColHex=centerColHex, minValList=minValList, maxValList=maxValList, purple0Hack=purpleHack) for sample in samples: log("ordered samples: %s\n" % (sample))
orderFiles = [] else: orderFeature = sa[0] orderFiles = re.split(",", sa[1]) elif o == "-c": centerFile = a elif o == "-l": printLabel = True elif o == "-q": verbose = False ## execute samples = [] features = [] if sampleFile != None: samples = mData.rList(sampleFile) if featureFile != None: features = mData.rList(featureFile) ## read circleFiles circleData = [] circleColors = [] for i in range(len(circleFiles)): (data, cols, rows) = mData.rCRSData(circleFiles[i], retFeatures = True) circleData.append(data) minCol = rgb(0, 0, 255) zerCol = rgb(255, 255, 255) maxCol = rgb(255, 0, 0) if circleFiles[i].endswith("meth"): maxCol = rgb(0, 0, 255) minCol = rgb(255, 0, 0)
import os, re import mData assert (os.path.exists("first.props")) assert (os.path.exists("include.features")) features = mData.rList("include.features") f = open("first.props", "r") o = open("all.props", "w") for line in f: if line.startswith( "nodeCustomGraphics1.default-Node\ Custom\ Graphics\ 1-Discrete\ Mapper.mapping.map" ): pline = re.split(",", line.rstrip("\r\n")) imgCounter = int(pline[1]) for feature in features: reline = re.sub(features[0], feature, pline[0]) + "," + str(imgCounter) + "," + re.sub( features[0], feature, pline[1]) + "," + pline[2] imgCounter += 1 else: o.write(line) f.close() o.close()
def cli_routine(outputDir, circleFiles, orderFiles, sampleFile, featureFile, orderFeature, centerFile, colorscaleFile, printLabel, verbose, cohortMinMax=False, purpleHack=True): """Routine for program execution via command-line.""" # I've tried not to touch this method as much as possible. # I don't want to break the way it was working for Sam Ng. # chrisw ## execute samples = [] features = [] if sampleFile != None: samples = mData.rList(sampleFile) if featureFile != None: features = mData.rList(featureFile) # end section for getting lists of samples and features ## read circleFiles # circleData is a list of dict[col][row]=score from each circleFile circleData = [] # circleColorsPalette is a list of (minColor),(zeroColor),(maxColor) circleColorsPalette = [] ## read colorscaleFile # the format is as follows - header compulsory: # min/max color coding color1 color2 color 3 # -2,2 rgb 155,155,155 255,255,255 0,0,0, # - rgb 155,0,155 255,0,255 0,0,0, # the "color format" is intended to support more color format, as I have # seen the html-colors in the code. # Michael ([email protected]) colorscaleData = None if colorscaleFile != None: if cohortMinMax: log("WARNING: The -k option overrides -m") colorscaleData = mData.retRows(colorscaleFile, aslist=True) line = 1 for cs in colorscaleData: line = line + 1 if len(cs) != 5: log("ERROR: color scale needs five fields: datapoints, colorcoding(rgb) and three colors\n", die=True) try: cs[0] = [float(x) for x in cs[0].split(",")] except ValueError: pass if len(cs[0]) != 2 and cs[0] != "-": print cs[0] log("ERROR: Two data points or dash needed for color scale\n", die=True) if cs[1].lower() == "rgb": try: cs[2] = rgb(*[float(x) for x in cs[2].split(",")]) cs[3] = rgb(*[float(x) for x in cs[3].split(",")]) cs[4] = rgb(*[float(x) for x in cs[4].split(",")]) except TypeError: log("ERROR: RGB needs three values on line " + str(line) + "\n", die=True) except ValueError: log("ERROR: RGB color not correctly defined on line " + str(line) + "\n", die=True) else: log("ERROR: Unknown color coding on line " + str(line) + ": " + str(cs[1]) + "\n", die=True) for i in xrange(len(circleFiles)): # get data, samples, and features from each circleFile # data is a dict[col][row]=score # cols is a list of sample names # features is a list of feature names (data, cols, rows) = mData.rCRSData(circleFiles[i], retFeatures=True) circleData.append(data) minCol = lightBlueRGB zerCol = whiteRGB maxCol = redRGB if colorscaleFile != None and i < len(colorscaleData): #get colors from specified colorscaleFile minCol = colorscaleData[i][2] zerCol = colorscaleData[i][3] maxCol = colorscaleData[i][4] # special cases for -meth and -mut # if circleFiles[i].endswith("meth"): # maxCol = blueRGB # minCol = redRGB # log("Color: meth\n") # elif circleFiles[i].endswith("mut"): # maxCol = blackRGB # minCol = whiteRGB # log("Color: mut\n") circleColorsPalette.append((minCol, zerCol, maxCol)) # if no sampleFile/featureFile, default to using samples/features from circleFiles if sampleFile == None: samples = list(set(cols) | set(samples)) if featureFile == None: features = list(set(rows) | set(features)) # end section for reading circleFiles ## read centerFile centerData = None if centerFile != None: centerData = mData.r2Col(centerFile, header=True) ## sort if orderFeature != None: if len(orderFiles) > 0: orderData = [] orderColors = [] for i in xrange(len(orderFiles)): orderData.append(mData.rCRSData(orderFiles[i])) minCol = whiteRGB zerCol = whiteRGB maxCol = blackRGB orderColors.append((minCol, zerCol, maxCol)) else: orderData = circleData # sort samples based on sample score in orderData # priority of sorting determined by orderFiles parameter samples.sort(lambda x, y: scmp(x, y, orderFeature, orderData)) ## cohort png # cgi will probably not use orderFiles if len(orderFiles) > 0: imgFile = "%s/Cohort.png" % (outputDir) label = "Cohort" centerCol = whiteRGB.tohex() cohortCircleCols = [] for i in xrange(len(orderData)): ringCols = [] ringVals = [] for sample in samples: if sample in orderData[i]: if orderFeature in orderData[i][sample]: ringVals.append(orderData[i][sample][orderFeature]) elif "*" in orderData[i][sample]: ringVals.append(orderData[i][sample]["*"]) minVal = min([-0.01] + mData.floatList(ringVals)) maxVal = max([0.01] + mData.floatList(ringVals)) for sample in samples: if sample in orderData[i]: if orderFeature in orderData[i][sample]: ringCols.append( getColor(orderData[i][sample][orderFeature], minVal, maxVal, minColor=orderColors[i][0], zeroColor=orderColors[i][1], maxColor=orderColors[i][2])) elif "*" in orderData[i][sample]: ringCols.append( getColor(orderData[i][sample]["*"], minVal, maxVal, minColor=orderColors[i][0], zeroColor=orderColors[i][1], maxColor=orderColors[i][2])) else: ringCols.append(greyRGB.tohex()) else: ringCols.append(greyRGB.tohex()) cohortCircleCols.append(ringCols) plotCircle(imgFile, label=label, centerCol=centerCol, circleCols=cohortCircleCols, innerRadTotal=0.2, outerRadTotal=0.5, width=5) # end section for sample ordering ## plot images if centerData != None: centerDataFloatList = mData.floatList(centerData.values()) centerDataMinVal = min([-0.01] + centerDataFloatList) centerDataMaxVal = max([0.01] + centerDataFloatList) # get min/max values for datasets if cohortMinMax: (minValList, maxValList) = getCohortMinMaxValues(features, samples, circleData) else: (minValList, maxValList) = (None, None) if colorscaleData != None: (minValList, maxValList) = getColorScaleMinMaxValues(minValList, maxValList, len(circleData), colorscaleData) for feature in features: log("Drawing %s\n" % (feature)) centerColHex = None if centerData != None: if feature in centerData: centerColHex = getColor(centerData[feature], centerDataMinVal, centerDataMaxVal, minColor=lightBlueRGB, zeroColor=whiteRGB, purple0Hack=purpleHack) imgFile = "%s/%s.png" % (outputDir, re.sub("[/:]", "_", feature)) label = "" if printLabel: label = feature image_width = 5.0 drawCircleImageForFeature(feature, samples, label, imgFile, circleData, circleColorsPalette, width=image_width, centerColHex=centerColHex, minValList=minValList, maxValList=maxValList, purple0Hack=purpleHack) for sample in samples: log("ordered samples: %s\n" % (sample))
import os, re import mData assert(os.path.exists("first.props")) assert(os.path.exists("include.features")) features = mData.rList("include.features") f = open("first.props", "r") o = open("all.props", "w") for line in f: if line.startswith("nodeCustomGraphics1.default-Node\ Custom\ Graphics\ 1-Discrete\ Mapper.mapping.map"): pline = re.split(",", line.rstrip("\r\n")) imgCounter = int(pline[1]) for feature in features: reline = re.sub(features[0], feature, pline[0]) + "," + str(imgCounter) + "," + re.sub(features[0], feature, pline[1]) + "," + pline[2] imgCounter += 1 else: o.write(line) f.close() o.close()
orderFiles = [] else: orderFeature = sa[0] orderFiles = re.split(",", sa[1]) elif o == "-c": centerFile = a elif o == "-l": printLabel = True elif o == "-q": verbose = False ## execute samples = [] features = [] if sampleFile != None: samples = mData.rList(sampleFile) if featureFile != None: features = mData.rList(featureFile) ## read circleFiles circleData = [] circleColors = [] ## ## record file types for each, effects the color scheme ## use the input index for each color_scheme_map = {} for i in range(len(circleFiles)): circleFile, colorScheme = circleFiles[i].split(':') color_scheme_map[i] = parseColorScheme(colorScheme) (data, cols, rows) = mData.rCRSData(circleFile, retFeatures = True) circleData.append(data)