def main(): parser = OptionParser() parser.add_option("-i","--input_heats",dest="input_heats",action="store",default=None,help="\ File with columns as samples, rows as pathway features") parser.add_option("-r", "--real-only", action="store_true", default=False, help="Report only observed values") parser.add_option("-k","--kernel",dest="kernel",action="store",default=None,help="\ Pre-computed heat diffusion kernel in tab-delimited form. Should have both a header and row labels") parser.add_option("-o","--output",dest="output",action="store",default="diffused.tab") parser.add_option("-n","--network",dest="network",action="store",default=None,help="\ .sif network file for the curated pathway to search. <source> <(-a>,-a|,-t>,-t|,-component>)> <target>") parser.add_option("--pagerank",dest="pagerank",action="store_true",default=False,help="Use Personalized PageRank to Diffuse") (opts, args) = parser.parse_args() if opts.input_heats is None: print "Please define input_heat" return input_heats = DataMatrix(opts.input_heats) # # Diffusion Step: # Load the heat diffusion kernel and perform a kernel-multiply, or alternatively use supplied # page-rank diffused vectors # if opts.network is None: print "Please define network" return print "Parsing Network File..." network = parseNet(opts.network) network_nodes = getNetworkNodes(network) diffuser = None if opts.pagerank: from ppr import PPrDiffuser diffuser = PPrDiffuser(network) else: print "Loading Heat Diffusion Kernel.." if not opts.kernel: # requires SCIPY installation from kernel_scipy import SciPYKernel diffuser = SciPYKernel(opts.network) else: diffuser = Kernel(opts.kernel) print "Finished Loading..." if opts.real_only: print "Report Real only..." feature_list = input_heats.getFeatureList() else: feature_list = diffuser.getKernelLabels() # negative values require dual-diffusion and a merge/sum step m_diffuser = MultiDiffuser(diffuser) out = open(opts.output, 'w') out.write("Sample\t"+"\t".join(feature_list)+"\n") for sample in input_heats.getSampleList(): in_heat_vec = input_heats.getSampleValues(sample) diffused_heat_vec = m_diffuser.diffuse(in_heat_vec, reverse=False) # print diffused heats in order, to line up with feature columns out.write(sample+"\t"+"\t".join([str(diffused_heat_vec.get(feature, "NA")) for feature in feature_list])+"\n") out.close()
def main(): parser = OptionParser() parser.add_option("-i", "--input_heats", dest="input_heats", action="store", default=None, help="\ File with columns as samples, rows as pathway features") parser.add_option("-r", "--real-only", action="store_true", default=False, help="Report only observed values") parser.add_option("-k", "--kernel", dest="kernel", action="store", default=None, help="\ Pre-computed heat diffusion kernel in tab-delimited form. Should have both a header and row labels" ) parser.add_option("-o", "--output", dest="output", action="store", default="diffused.tab") parser.add_option("-n", "--network", dest="network", action="store", default=None, help="\ .sif network file for the curated pathway to search. <source> <(-a>,-a|,-t>,-t|,-component>)> <target>" ) parser.add_option("--pagerank", dest="pagerank", action="store_true", default=False, help="Use Personalized PageRank to Diffuse") (opts, args) = parser.parse_args() if opts.input_heats is None: print "Please define input_heat" return input_heats = DataMatrix(opts.input_heats) # # Diffusion Step: # Load the heat diffusion kernel and perform a kernel-multiply, or alternatively use supplied # page-rank diffused vectors # if opts.network is None: print "Please define network" return print "Parsing Network File..." network = parseNet(opts.network) network_nodes = getNetworkNodes(network) diffuser = None if opts.pagerank: from ppr import PPrDiffuser diffuser = PPrDiffuser(network) else: print "Loading Heat Diffusion Kernel.." if not opts.kernel: # requires SCIPY installation from kernel_scipy import SciPYKernel diffuser = SciPYKernel(opts.network) else: diffuser = Kernel(opts.kernel) print "Finished Loading..." if opts.real_only: print "Report Real only..." feature_list = input_heats.getFeatureList() else: feature_list = diffuser.getKernelLabels() # negative values require dual-diffusion and a merge/sum step m_diffuser = MultiDiffuser(diffuser) out = open(opts.output, 'w') out.write("Sample\t" + "\t".join(feature_list) + "\n") for sample in input_heats.getSampleList(): in_heat_vec = input_heats.getSampleValues(sample) diffused_heat_vec = m_diffuser.diffuse(in_heat_vec, reverse=False) # print diffused heats in order, to line up with feature columns out.write(sample + "\t" + "\t".join([ str(diffused_heat_vec.get(feature, "NA")) for feature in feature_list ]) + "\n") out.close()
search_depth = int(opts.depth) # set the output folder for the reports and networks, create the directory output_folder = opts.output_folder if not os.path.exists(output_folder): os.mkdir(output_folder) # # Diffusion Step: # Load the heat diffusion kernel and perform a kernel-multiply, or alternatively use supplied # page-rank diffused vectors # if opts.pagerank: # use PageRank to diffuse heats: create a diffuser object to perform this step diffuser = PPrDiffuser(network) else: if opts.kernel is not None: sys.stderr.write("Loading Heat Diffusion Kernel..\n") # load a heat diffusion kernel to perform diffusion diffuser = Kernel(opts.kernel) else: sys.stderr.write( "Using SCIPY to compute the matrix exponential, t=0.1...\n") # No kernel supplied: use SCIPY to generate a kernel on the fly, and then use it # for subsequent diffusion operations if path.exists('tiedie_kernel.pkl'): fh = open('tiedie_kernel.pkl', 'rb') diffuser = pickle.load(fh) fh.close()
output_folder += "_PAGERANK" # create directory if not os.path.exists(output_folder): os.mkdir(output_folder) # # Diffusion Step: # Load the heat diffusion kernel and perform a kernel-multiply, or alternatively use supplied # page-rank diffused vectors # print "Parsing Network File..." network = parseNet(opts.network) if opts.pagerank: diffuser = PPrDiffuser(network) else: print "Loading Heat Diffusion Kernel.." diffuser = Kernel(opts.kernel) print "Diffusing Heats..." up_heats_diffused = diffuser.diffuse(up_heats, reverse=False) down_heats_diffused = diffuser.diffuse(down_heats, reverse=True) if opts.size_select: # Search a number of network sizes to get a range with the highest significance. # Somewhat slow. search_space = [] start, end = opts.size_select.split(":") start = int(start)