Skip to main content

biclustpy

A Python library for bi-cluster editing.

The Bi-Cluster Editing Problem

  • Task: Given a matrix weights with positive and negative weights, transform the bipartite graph induced by weights into a disjoint collection of bi-cliques (bi-clusters) via edge insertions and deletions, such that the overall transformation cost is minimal.
  • The node sets of the bipartite graph induced by weights are the sets of rows and columns. There is an edge between row i and column k if and only if weights[i,k] > 0.
  • Deleting an existing edge (i,k) incurs cost weights[i,k].
  • Inserting a non-existing edge (i,k) incurs cost -weights[i,k].

Installation

  1. Download and install Gurobi and obtain a license by following the instructions in the installation guide for Linux, Mac OS, or Windows.
  2. Open a shell and execute pip install biclustpy.

Library Usage

After installation, import biclustpy as bp into your Python application. Then use it as follows:

  • bp.Algorithm: Use this class to select the algorithm you want to employ.
  • bp.compute_bi_clusters(weights, algorithm): Use this function to solve a bi-cluster editing problem.
    • weights: The problem instance given as a numpy.array.
    • algorithm: The selected algorithm given as a bp.Algorithm object.
  • bp.save_bi_clusters_as_xml(filename, bi_clusters, obj_val, is_optimal, instance = ""): Use this function to save the obtained solution as an XML file.
    • filename: The name of the XML file.
    • bi_clusters: The bi-clusters returned by bp.compute_bi_clusters.
    • obj_val: The objective value of the bi-clusters returned by bp.compute_bi_clusters.
    • is_optimal: A flag returned by bp.compute_bi_clusters that indicates whether the computed bi-clusters are guaranteed to be optimal.
    • instance: A string that contains information about the problem instance.

Example

import numpy as np
import biclustpy as bp

algorithm = bp.Algorithm
algorithm.algorith_name = "ILP"
algorithm.ilp_time_limit = 100
algorithm.ilp_tune = True

n = 30
m = 40
t = .95
weights = np.random.rand(n, m) - (t * np.ones((n, m)))

bi_clusters, obj_val, is_optimal = bp.compute_bi_clusters(weights, algorithm)

filename = "bi_clusters.xml"
instance = "random instance with 30 rows and 40 columns"
bp.save_bi_clusters_as_xml(filename, bi_clusters, obj_val, is_optimal, instance)

Command Line Usage

Upon installation, you can run biclustpy from the command line. Usage:

biclustpy [-h]
          (--load input-file | --random num-rows num-cols threshold seed)
          [--save output-file] [--alg {ILP,CH}]
          [--ilp_options time-limit tune]

More more information, execute biclustpy -h.

License

You may use and distribute biclustpy under the terms of the GNU Lesser General Public License.

Metadata

Release files for biclustpy 0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for biclustpy 0.2
File Size Uploaded
biclustpy-0.2.tar.gz 9.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for biclustpy 0.2
File Interpreter ABI Platform
biclustpy-0.2-py3-none-any.whl Python 3 none any Details

Total release size: 23.7 kB

Release files / biclustpy-0.2.tar.gz

Download URL biclustpy-0.2.tar.gz
Size 9.7 kB
Tags Source
SHA-256 checksum
How to use checksums
ce02bd7550fdd6b3c098c8c7be31cbcbeb3265e5514af154d62b05b0c2e7dfa6
BLAKE2b-256 checksum
How to use checksums
9f318ea98164e5cbb1aca880333be81f91dda0760a38ad34b6183f38fbd9c3ab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.3

Release files / biclustpy-0.2-py3-none-any.whl

Download URL biclustpy-0.2-py3-none-any.whl
Size 13.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5134babd641443891263cb9bf536b2f6a2ab4a9b53a258f9974e4ee037461013
BLAKE2b-256 checksum
How to use checksums
80e988ff8832a9642e53970005c680b73b1694153445e032cb21e872160ded58
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.3

Release history Release notifications | RSS feed

This release

0.2 This release

2 release files

0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page