Exemplo n.º 1
0
def main(argv):
    #Create variables
    expression_data = None
    motif = None
    ppi = None
    output_file = "output_panda.txt"
    rm_missing = False
    lioness_file = False
    # Get input options
    try:
        opts, args = getopt.getopt(argv, 'he:m:p:o:rq:', ['help', 'expression=', 'motif=', 'ppi=', 'out=', 'rm_missing', 'lioness'])
    except getopt.GetoptError:
        print(__doc__)
        sys.exit()
    for opt, arg in opts:
        if opt in ('-h', '--help'):
            print(__doc__)
            sys.exit()
        elif opt in ('-e', '--expression'):
            expression_data = arg
        elif opt in ('-m', '--motif'):
            motif = arg
        elif opt in ('-p', '--ppi'):
            ppi = arg
        elif opt in ('-o', '--out'):
            output_file = arg
        elif opt in ('-r', '--rm_missing'):
            rm_missing = arg
        elif opt in ('-q', '--lioness'):
            lioness_file = arg
    #Check if required options are given
    print('Input data:')
    print('Expression:', expression_data)
    print('Motif data:', motif)
    print('PPI data:', ppi)
    if expression_data is None and motif is None:
        print('Missing inputs!')
        print(__doc__)
        sys.exit()

    # Run PANDA
    print('Start Panda run ...')
    panda_obj = Panda(expression_data, motif, ppi, save_tmp=True, remove_missing=rm_missing, keep_expression_matrix=bool(lioness_file))
    #panda_obj = pypanda.Panda(expression_data, motif, None, save_tmp=True, remove_missing=rm_missing)
    #panda_obj = pypanda.Panda(None, motif, ppi, save_tmp=True, remove_missing=rm_missing)
    #panda_obj = pypanda.Panda(None, motif, None, save_tmp=True, remove_missing=rm_missing)
    #panda_obj = pypanda.Panda(expression_data, None, ppi, save_tmp=True, remove_missing=rm_missing)
    panda_obj.save_panda_results(output_file)
    #panda_obj.top_network_plot(top=70, file='panda_topgenes.png')
    #indegree = panda_obj.return_panda_indegree()
    #outdegree = panda_obj.return_panda_outdegree()

    if lioness_file:
        from netZooPy.lioness.lioness import Lioness
        lioness_obj = Lioness(panda_obj)
        lioness_obj.save_lioness_results(lioness_file)
    print('All done!')
Exemplo n.º 2
0
def test_lioness():
    print('Start lioness test!')
    #1. First generate temporary PANDA files as inputs for Lioness
    ppi = 'tests/puma/ToyData/ToyPPIData.txt'
    motif = 'tests/puma/ToyData/ToyMotifData.txt'
    expression_data = 'tests/puma/ToyData/ToyExpressionData.txt'
    lioness_file = 'Travis'
    rm_missing = False
    output_file = 'panda.npy'
    gt_file = 'tests/panda/test_panda.txt'
    panda_obj = Panda(expression_data,
                      motif,
                      ppi,
                      save_tmp=True,
                      remove_missing=rm_missing,
                      keep_expression_matrix=bool(lioness_file),
                      modeProcess='legacy',
                      save_memory=False)
    # Set parameters
    lioness_obj = Lioness(panda_obj, start=1, end=1)
    # lioness_obj.save_lioness_results(lioness_file)
    # Read first lioness network
    res = np.load('lioness_output/lioness.1.npy')
    gt = np.load('tests/lioness/lioness.1.npy')
    # Compare to ground truth
    assert (np.allclose(gt, res))

    #2. Testing Lioness with motif set to None to compute Lioness on coexpression networks
    motif = None
    # Make sure to keep epxression matrix for next step
    panda_obj_2 = Panda(expression_data,
                        motif,
                        ppi,
                        save_tmp=True,
                        remove_missing=rm_missing,
                        keep_expression_matrix=True,
                        modeProcess='legacy')
    lioness_obj_2 = Lioness(panda_obj_2, start=1, end=1)
    # lioness_obj.save_lioness_results(lioness_file)
    # Read first lioness network
    res = np.load('lioness_output/lioness.1.npy')
    gt = np.load('tests/lioness/lionessCoexpression.1.npy')
    # Compare to ground truth
    assert (np.allclose(gt, res))

    #3. Testing Lioness in parallel
    # Set parameters
    os.remove('lioness_output/lioness.1.npy')
    lioness_obj = Lioness(panda_obj, ncores=2, start=1, end=2)
    # lioness_obj.save_lioness_results(lioness_file)
    # Read first lioness network
    res = np.load('lioness_output/lioness.1.npy')
    gt = np.load('tests/lioness/lioness.1.npy')
    # Compare to ground truth
    assert (np.allclose(gt, res))
Exemplo n.º 3
0
def main(argv):
    """
    Description:
        Run LIONESS algorithm from the command line.

    Usage:
        -h, --help: help
        -e, --expression: expression matrix (.npy)
        -m, --motif: motif matrix, normalized (.npy)
        -p, --ppi: ppi matrix, normalized (.npy)
        -g, --comp: use cpu (default) or gpu
        -r, --pre: number of digits to calcluate
        -c, --ncores: number cores
        -n, --npy: PANDA network (.npy)
        -o, --out: output folder
        -f, --format: output format (txt, npy, or mat)
        start: to start from nth sample (optional)
        end: to end at nth sample (optional, must with start)
    
    Example:
        python3 run_lioness.py -e ../../tests/ToyData/ToyExpressionData.txt -m ../../tests/ToyData/ToyMotifData.txt -p ../../tests/ToyData/ToyPPIData.txt -g cpu -r single -c 2 -o /tmp -f npy 1 2

    Reference:
        Kuijjer, Marieke Lydia, et al. "Estimating sample-specific regulatory networks." Iscience 14 (2019): 226-240.
    """
    #Create variables
    expression_data = None
    motif = None
    ppi = None
    comp = None
    pre = None
    ncores = None
    save_dir = None
    save_fmt = None
    try:
        opts, args = getopt.getopt(argv, 'he:m:p:g:r:c:n:o:f:', ['help', 'expression=', 'motif=','ppi=','comp=','pre=','ncores=', 'out=', 'format='])
    except getopt.GetoptError as err:
        print(str(err))  # will print something like "option -a not recognized"
        print(__doc__)
        return 2

    for opt, arg in opts:
        if opt in ('-h', '--help'):
            print(__doc__)
            return 0
        elif opt in ('-e', '--expression'):
            expression_data = arg
        elif opt in ('-m', '--motif'):
            motif = arg
        elif opt in ('-p', '--ppi'):
            ppi = arg
        elif opt in ('-g', '--comp'):
            comp = arg
        elif opt in ('-r', '--pre'):
            pre = arg
        elif opt in ('-c', '--ncores'):
            ncores = arg
        elif opt in ('-n'):
            panda_net = arg
        elif opt in ('-o', '--out'):
            save_dir = arg
        elif opt in ('-f', '--format'):
            save_fmt = arg
        else:
            print('Unknown option', opt)
            return 1

    start, end = 1, None
    if len(args) == 2:
        start, end = map(int, args)

    #Check if required options are given
    if expression_data is None or motif is None or ppi is None \
            or save_dir is None or save_fmt is None:
        print('Missing argument!')
        print(__doc__)
        return 1
    else:
        print('Input data:')
        print('Expression:   ', expression_data)
        print('Motif matrix: ', motif)
        print('PPI matrix:   ', ppi)
        print('compute core: ', comp)
        print('precision:    ', pre)
        print('n cores:      ', ncores)        
        print('Output folder:', save_dir)
        print('Output format:', save_fmt)
        print('Sample range: ', start, '-', end)

    # Run panda
    print('Start LIONESS run ...')
    obj = Panda(expression_data, motif, ppi, keep_expression_matrix=True,save_memory=False)
    L   = Lioness(obj, computing=comp, precision=pre,ncores=ncores,start=start, end=end, save_dir=save_dir, save_fmt=save_fmt)
    print('All done!')
Exemplo n.º 4
0
def main(argv):
    #Create variables
    expression_data = None
    motif = None
    ppi = None
    save_dir = None
    save_fmt = None
    try:
        opts, args = getopt.getopt(
            argv, 'he:m:p:n:o:f:',
            ['help', 'expression=', 'motif=', 'ppi=', 'out=', 'format='])
    except getopt.GetoptError as err:
        print(str(err))  # will print something like "option -a not recognized"
        print(__doc__)
        return 2

    for opt, arg in opts:
        if opt in ('-h', '--help'):
            print(__doc__)
            return 0
        elif opt in ('-e', '--expression'):
            expression_data = arg
        elif opt in ('-m', '--motif'):
            motif = arg
        elif opt in ('-p', '--ppi'):
            ppi = arg
        elif opt in ('-n'):
            panda_net = arg
        elif opt in ('-o', '--out'):
            save_dir = arg
        elif opt in ('-f', '--format'):
            save_fmt = arg
        else:
            print('Unknown option', opt)
            return 1

    start, end = 1, None
    if len(args) == 2:
        start, end = map(int, args)

    #Check if required options are given
    if expression_data is None or motif is None or ppi is None \
            or save_dir is None or save_fmt is None:
        print('Missing argument!')
        print(__doc__)
        return 1
    else:
        print('Input data:')
        print('Expression:   ', expression_data)
        print('Motif matrix: ', motif)
        print('PPI matrix:   ', ppi)
        print('Output folder:', save_dir)
        print('Output format:', save_fmt)
        print('Sample range: ', start, '-', end)

    # Run panda
    print('Start LIONESS run ...')
    obj = Panda(expression_data, motif, ppi, keep_expression_matrix=True)
    L = Lioness(obj,
                start=start,
                end=end,
                save_dir=save_dir,
                save_fmt=save_fmt)
    print('All done!')
Exemplo n.º 5
0
def main(argv):
    """
    Description:
        Run PANDA algorithm from the command line.

    Inputs:
        -h, --help: help
        -e, --expression: expression values
        -m, --motif: pair file of motif edges, or Pearson correlation matrix when not provided
        -p, --ppi: pair file of PPI edges
        -o, --out: output file
        -r, --rm_missing
        -q, --lioness: output for Lioness single sample networks 
    
    Example:
        python run_panda.py -e ../../tests/ToyData/ToyExpressionData.txt -m ../../tests/ToyData/ToyMotifData.txt -p ../../tests/ToyData/ToyPPIData.txt -o test_panda.txt -q output_panda.txt

    Reference:
        Glass, Kimberly, et al. "Passing messages between biological networks to refine predicted interactions." PloS one 8.5 (2013): e64832.
    """
    #Create variables
    expression_data = None
    motif = None
    ppi = None
    output_file = "output_panda.txt"
    rm_missing = False
    lioness_file = False
    # Get input options
    try:
        opts, args = getopt.getopt(argv, 'he:m:p:o:rq:', [
            'help', 'expression=', 'motif=', 'ppi=', 'out=', 'rm_missing',
            'lioness'
        ])
    except getopt.GetoptError:
        print(__doc__)
        sys.exit()
    for opt, arg in opts:
        if opt in ('-h', '--help'):
            print(__doc__)
            sys.exit()
        elif opt in ('-e', '--expression'):
            expression_data = arg
        elif opt in ('-m', '--motif'):
            motif = arg
        elif opt in ('-p', '--ppi'):
            ppi = arg
        elif opt in ('-o', '--out'):
            output_file = arg
        elif opt in ('-r', '--rm_missing'):
            rm_missing = arg
        elif opt in ('-q', '--lioness'):
            lioness_file = arg
    #Check if required options are given
    print('Input data:')
    print('Expression:', expression_data)
    print('Motif data:', motif)
    print('PPI data:', ppi)
    if expression_data is None and motif is None:
        print('Missing inputs!')
        print(__doc__)
        sys.exit()

    # Run PANDA
    print('Start Panda run ...')
    panda_obj = Panda(expression_data,
                      motif,
                      ppi,
                      save_tmp=True,
                      remove_missing=rm_missing,
                      keep_expression_matrix=bool(lioness_file))
    #panda_obj = pypanda.Panda(expression_data, motif, None, save_tmp=True, remove_missing=rm_missing)
    #panda_obj = pypanda.Panda(None, motif, ppi, save_tmp=True, remove_missing=rm_missing)
    #panda_obj = pypanda.Panda(None, motif, None, save_tmp=True, remove_missing=rm_missing)
    #panda_obj = pypanda.Panda(expression_data, None, ppi, save_tmp=True, remove_missing=rm_missing)
    panda_obj.save_panda_results(output_file)
    #panda_obj.top_network_plot(top=70, file='panda_topgenes.png')
    #indegree = panda_obj.return_panda_indegree()
    #outdegree = panda_obj.return_panda_outdegree()

    if lioness_file:
        from netZooPy.lioness.lioness import Lioness
        lioness_obj = Lioness(panda_obj)
        lioness_obj.save_lioness_results(lioness_file)
    print('All done!')