Multi-Dendrix Logo

Source code for permute_ppi_network

#!/usr/bin/python

# Load required modules
import sys, os, networkx as nx

def parse_args(input_list=None):
    # Parse arguments
    import argparse
    class Args: pass
    args = Args()
    description = 'Creates permuted networks for the given network.'
    parser = argparse.ArgumentParser(description=description)
    parser.add_argument('-n', '--network_edgelist', required=True,
                        help='PPI edgelist location.')
    parser.add_argument('-o', '--output_dir', required=True,
                        help='Name of output directory.')
    parser.add_argument('-q', '--Q', default=100, type=int,
                        help='Edge swap constant.')
    parser.add_argument('-c', '--num_networks', default=100, type=int,
                        help='Number of permuted networks to create.')
    parser.add_argument('-s', '--start_index', default=1, type=int,
                        help='Start index for name of permuted networks.')
    parser.add_argument('-v', '--verbose', default=False, action='store_true',
                        help='Flag verbose mode.')

    # If called from the command line, parse command line args.
    if input_list: parser.parse_args(input_list, namespace=args)
    else: parser.parse_args(namespace=args)
    
    return args

[docs]def load_network(network_file): return nx.read_edgelist(network_file)
[docs]def permute_network(G, Q): H = G.copy() nx.double_edge_swap(H, nswap=Q*len( G.edges() ), max_tries=1e75) return H
[docs]def run(args): # Load network G = load_network(args.network_edgelist) if args.verbose: print 'Input network has', len( G.edges() ), 'edges among', len(G.nodes()), print 'nodes.\nPerforming', len( G.edges() ) * args.Q, 'edge swaps.' # Make sure output directory exists os.system('mkdir -p ' + args.output_dir) # Permute network and output files for i in range(args.num_networks): if args.verbose: sys.stdout.write('+') sys.stdout.flush() # Permute graph and output as an edge list H = permute_network(G, args.Q) filename = args.output_dir + "/" + str(i + args.start_index) + ".txt" nx.write_edgelist(H, filename) if args.verbose: print
if __name__ == "__main__": run(parse_args())