Skip to main content

Best match graph editing.

Project description

Best match graph editing

license: GPL v3

Implemention of various heuristics and ILP formulations for best match graph (BMG) editing.

Best match graphs (BMGs) are a class of colored digraphs that naturally appear in mathematical phylogenetics as a representation of the pairwise most closely related genes among multiple species. An arc connects a gene x with a gene y from another species (encoded as the color of the nodes) Y whenever it is one of the phylogenetically closest relatives of x. This package contains various methods to edit an arbitrary vertex-colored digraph to a valid BMG, i.e., a graph that has a certain representation as (leaf-colored) tree.

Installation and Dependencies

bmg-edt requires Python 3.7 or higher. It has the following dependencies:

In order to use the ILP versions for BMG editing, an installation of Gurobi Optimizer (9.0 or higher) or IBM ILOG CPLEX Optimization Studio (12.10 or higher) is required. Moreover, the corresponding Python packages gurobipy or docplex, respectively, must be installed.

Usage

The functions in bmg-edit require a NetworkX DiGraph as input. Moreover, all nodes must have an attribute 'color'.

ILP

The following classes for optimal BMG editing are available in the module ilp.GurobiBMG (requires an installation of Gurobi Optimzizer):

  • BMGEditor edits the input graph with an arbitrary number of colors to the closest BMG.
  • BinaryBMGEditor edits the input graph with an arbitrary number of colors to the closest BMG that can be explained by a binary tree.
  • TwoBMGEditor edits the input graph with at most two distinct colors to the closest (2-)BMG.
Example usage: (Click to expand)
solver = BMGEditor(input_graph)
solver.build_model()

# run the optimization with an optional time limit in seconds
solver.optimize(time_limit=None)

optimal_editing_cost, solution_graph = solver.get_solution()

The following classes for optimal BMG editing are available in the module ilp.CplexBMG (requires an installation of IBM ILOG CPLEX Optimization Studio):

  • BMGEditor edits the input graph with an arbitrary number of colors to the closest BMG.
Example usage: (Click to expand)
solver = BMGEditor(input_graph)
solver.build_model()

# run the optimization with an optional time limit in seconds
solver.optimize(time_limit=3)
solver.get_solution()

optimal_editing_cost, solution_graph = solver.get_solution()

Heuristics Algorithms

The package also implements various heuristic approaches for BMG editing. Some of these methods are based on the unsatisfiable relation (UR) which are insertions or deletions of arcs that are associated with a certain inner node of the tree that explains the editing results. More precisely, the heuristics construct this tree in a top-down manner (i.e., starting with the root) and attempt, in each step, to minimize the UR (see refrenced paper below for details).

The class BMGEditor in the module BMGEditor manages the editing:

editor = BMGEditor(disturbed, binary=True)
editor.build('Mincut', objective='cost')
solution_graph = editor.get_bmg(extract_triples_first=False)
The following methods are available (first parameter of the `build` method): (Click to expand)
  • 'Mincut'
  • 'BPMF'
  • 'Karger'
  • 'Greedy'
  • 'Gradient_Walk'
  • 'Louvain'
  • 'Louvain_Obj'

See the paper for an explanation of these methods.

Citation and References

If you use bmg-edit in your project or code from it, please consider citing:

  • Schaller, D., Geiß, M., Hellmuth, M., Stadler, P. F. (2021) Heuristic Algorithms for Best Match Graph Editing. Algorithms for Molecular Biology (in press). arXiv:2103.07280 [math.CO].

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bmgedit-0.0.3.tar.gz (39.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bmgedit-0.0.3-py3-none-any.whl (45.3 kB view details)

Uploaded Python 3

File details

Details for the file bmgedit-0.0.3.tar.gz.

File metadata

  • Download URL: bmgedit-0.0.3.tar.gz
  • Upload date:
  • Size: 39.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.7

File hashes

Hashes for bmgedit-0.0.3.tar.gz
Algorithm Hash digest
SHA256 5ff1bfcfef8e605dd1d1986cd22150be745ff3abc26653df869c3f178a8b4044
MD5 c2939600d74819258f9cc1cce0d8eb18
BLAKE2b-256 e8589e1c74eaf53fffa85952653ad309d9808809858e63a66b9d70db1ba77a10

See more details on using hashes here.

File details

Details for the file bmgedit-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: bmgedit-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 45.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.7

File hashes

Hashes for bmgedit-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 37712d1e5ff51aa492d68f861f6bbbc7d69240b307656ba32e5e418cf0b5a26a
MD5 92f8931d702501be5386521d1439f600
BLAKE2b-256 531df23ea6138e5c953c9e2d3a0ef17d7ab6f6a0babbf0f1055bb027b8f020e2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page