Skip to main content

A SteinerTree library implementing several huristic and exact steiner methods.

Project description

SteinerNet

The Steiner Tree Approach refers to a method used in graph theory and network design to find the most efficient way to connect a set of points (nodes), potentially using extra intermediate points (called Steiner points) to minimize the total connection cost.

This the python eqiuivalent to SteinerNet in R. Released 10 years later on date the R version was released.

Installation PyPl Total Downloads

To install:

pip install steinernet

You can install the package locally using pip:

pip install .

Or, for development:

pip install -e .

Requirements

  • Python 3.7+
  • networkx

Usage

import networkx as nx
from steinernet import SteinerNet

# Create a sample graph
G = nx.cycle_graph(6)
terminals = [0, 2, 4]

# Initialize SteinerNet
sn = SteinerNet(G)

# Compute a Steiner tree using the random walk method
T = sn.steinertree(terminals,'ASP', repeats=1, optimize=True)

# Visualize the result
import matplotlib.pyplot as plt
nx.draw(T, with_labels=True)
plt.show()

Turorial

Check the Tutorial on tutorial file

Documentation

  • SteinerNet(graph)

    • graph: networkx.Graph, the input undirected graph (optionally weighted)
    • Returns: SteinerNet object
  • SteinerNet.random_walk_tree(terminals, seed=None)

    • terminals: list of node indices to connect
    • seed: (optional) random seed for reproducibility
    • Returns: networkx.Graph, a random graph
  • SteinerNet.steinertree(terminals, method, repeats=1, optimize=True)

  • terminals: list of node indices to connect

    • method: one of the methods SP, RSP, SPM, ASP, EXA (see their info in the Reference paper below)
      • Returns: an approximate Steiner tree made by the selected method

Reference

Afshin Sadeghi and Holger Froehlich, "Steiner tree methods for optimal sub-network identification: an empirical study", BMC Bioinformatics 2013 14:144, doi:10.1186/1471-2105-14-144

License

This project is open source under the Apache 2.0 License. You basically can use it in any commercial or research project.

Citation

To use this package in your work, cite this article as:

@article{sadeghi2013steiner,
  title={Steiner tree methods for optimal sub-network identification: an empirical study},
  author={Sadeghi, Afshin and Fr{\"o}hlich, Holger},
  journal={BMC bioinformatics},
  volume={14},
  pages={1--19},
  year={2013},
  publisher={Springer},
  doi = {https://doi.org/10.1186/1471-2105-14-144}
}

Link to R steinerNet repository.

For bug reports contact me at 🔗 LinkedIn

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

steinernet-0.1.9.tar.gz (12.9 kB view details)

Uploaded Source

Built Distribution

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

steinernet-0.1.9-py3-none-any.whl (13.3 kB view details)

Uploaded Python 3

File details

Details for the file steinernet-0.1.9.tar.gz.

File metadata

  • Download URL: steinernet-0.1.9.tar.gz
  • Upload date:
  • Size: 12.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.18

File hashes

Hashes for steinernet-0.1.9.tar.gz
Algorithm Hash digest
SHA256 4bce93fb2ce930dbd9408e71dc3fc1785dced67578a7b2eca4e2d47e046394a4
MD5 e54ecc76ff3f88f13facbfdbaf9c6863
BLAKE2b-256 1f9f4cfd31b01aaba982bad75723be34eaa8a2955b94b5c653edc09dd7ac55e8

See more details on using hashes here.

File details

Details for the file steinernet-0.1.9-py3-none-any.whl.

File metadata

  • Download URL: steinernet-0.1.9-py3-none-any.whl
  • Upload date:
  • Size: 13.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.18

File hashes

Hashes for steinernet-0.1.9-py3-none-any.whl
Algorithm Hash digest
SHA256 2b9c3c08337dc05f093ae5c1c9c9b68f418b82b62de357f32b4eef049347ed9b
MD5 c5f2f455f57448ed59283552dabe4a00
BLAKE2b-256 d67cb2e326512826aa085f43d64b5a8f1aa65f70a38148cca36ee1d3b144ce6f

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