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()