Beispiel #1
0
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()
Beispiel #2
0
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()
Beispiel #3
0
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()
Beispiel #4
0
	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)