cograph 2.7.2

Bug fixes

cograph 2.7.0

New features

Bug fixes

Documentation

cograph 2.6.11

plot_mcml(): the figure’s height can now be controlled

plot_mcml() is drawn with a locked aspect ratio from fixed layout numbers, so its shape never changed: a taller image only added white space (an 8 x 12 in image used 59% of its height, 8 x 16 in 44%). And the argument documented for this, layer_spacing, was accepted and then ignored – 2 and 30 drew the same figure.

layer_spacing now works, and takes three kinds of value:

Bug fix: a shrunken plot_htna() legend could still run off the page

When a side legend is too large for its band it is scaled down to fit (new in 2.6.10). That scaling made one proportional adjustment, but a legend’s size is not proportional to its text size – symbols and padding scale differently, and font hinting makes text widths step – so under Cairo fonts (Linux, Windows) the result could still extend 0.5% past the edge of the page, while fitting exactly on macOS. The legend is now re-measured after each adjustment until the measured box fits. Legends that already fit are unaffected.

cograph 2.6.10

plot_htna() gains legend_size, and its legend is no longer oversized

The “Groups” legend was drawn at a hard-coded cex = 1.4 – larger than the node labels it explains – with no argument to change it. plot_htna() now takes legend_size (a cex, default 0.8, the same default and meaning as splot(legend_size = )), and the legend’s symbols are sized from it. The default legend is therefore visibly smaller than in 2.6.9; pass legend_size = 1.4 for the old text size. Anything other than a single positive number raises a cograph_bad_legend_size error.

Bug fix: the plot_htna() legend overlapped the network and was cut off

With a side legend (legend_position = "bottom", the default, or "top", "left", "right"), the “Groups” legend was drawn partly on top of the network and partly off the page, at every figure size. Two causes:

The band is sized from the legend itself (rows, title, longest group name, legend_size, and the device’s text scale) rather than a fixed 6.5 lines. If a legend still cannot fit – many long group names on a small figure – it is scaled down instead of overlapping the plot or leaving the page.

A margin passed explicitly (mar = or margins =) is left untouched. With legend_position = "top" and a title, the title is drawn on the outer lines of the top margin and the legend below it; previously splot() centred the title in that margin, on top of the legend. Corner positions ("topright" etc.) are unchanged and still draw inside the plot box.

cograph 2.6.9

A full audit of the reference manual

Every exported and internal function was read against its own roxygen block. Everything below is a documentation correction unless a heading says otherwise.

Examples no longer assume a suggested package is installed

igraph is in Suggests, but examples throughout the manual failed without it. 78 roxygen example blocks are now @examplesIf requireNamespace("igraph", quietly = TRUE).

Most built their example network with igraph::make_ring(), igraph::make_star() or igraph::make_graph("Zachary") and were found by reading the examples. The last 21 were not: network_summary(), network_girth(), network_radius(), degree_distribution(), dyad_census(), ego_networks(), shortest_paths() and the rest of that family take a plain matrix and reach igraph internally through to_igraph(), so nothing in the example text revealed the dependency. They were found by removing igraph and running the manual.

Verified by running every example in a library where igraph (and therefore tna) could not be loaded: 403 topics, no failures.

... documented an argument that could not be passed

32 verbs – the community detection family, the network_* summaries, assortativity(), core_periphery(), dyad_census(), ego_networks(), shortest_paths(), k_shortest_paths(), rich_club(), rich_club_local(), robustness() and vulnerability() – documented ... as “additional arguments passed to to_igraph()”. to_igraph() is function(x, directed = NULL): it has no ..., so anything passed raised an “unused argument” error. Each site now says what is true. Where directed is already an explicit formal the dots are documented as unused; where it is not, they are documented as carrying directed and nothing else.

A lost title, a lost contract

plot_mcml()’s title line was missing its leading #, so R parsed it as a stray top-level string and roxygen took the next ten lines of prose as the title. man/plot_mcml.Rd now has the title it was meant to have.

A roxygen block in blob-helpers.R had been separated from its function by a later comment banner, which silently moved .expand_repeated_nodes()’s @param and @return onto the one-line accessor that followed it.

Corrections to documented behaviour

Among the factual fixes: core_periphery()’s example printed a component that does not exist; network_global_efficiency() documented the wrong value for its own example; community_consensus() documented ... as reaching the detection method when it is discarded; degree_distribution() marked three always-present components as conditional; binarize(signed = TRUE) was described as producing -1 rather than +1 or -1; get_edges() did not say its from/to are integer indices rather than labels; several verbs did not name the classed condition they raise; and the register_shape() and register_layout() examples overwrote a built-in shape and layout for the rest of the session. show_zero_edges in from_tna() and from_qgraph() is documented as having no effect, which is what it has.

The plot_tna() example that demonstrated custom colours with rainbow(5) now uses palette_colorblind(5): the reference manual was teaching the one palette the package’s own style rules exclude.

British spellings in roxygen prose were normalized to the en-US that DESCRIPTION declares (513 words across 79 files; comments only).

One fewer dependency

scales has been dropped from Suggests. It was used for exactly one call – scales::squish as the out-of-bounds handler on the centrality heatmap’s fill scale – and that behaviour is now a nine-line base R helper. Clamping is unchanged: a finite value outside the limits is pulled to the nearer end, and NA and the infinities are left alone.

show_zero_edges now does something

from_tna() and from_qgraph() have accepted and documented a show_zero_edges argument for several releases without ever reading it. Zero is how a weight matrix stores “no edge”, so an edge whose weight rounds to zero at weight_digits disappears from the plot, and there was no way to prevent that. With show_zero_edges = TRUE such an edge is now drawn at the smallest magnitude weight_digits can express, carrying its sign; every other weight is untouched. The default, FALSE, behaves exactly as before.

Three parameters now say what is wrong with them

ld_radius, s_shell_a and comm_r were unvalidated, so a value outside their domain surfaced as an opaque failure from deep inside a kernel – values must be length 1, but FUN(X[[1]]) result is length 0 for ld_radius = 0, and an all-NA result with a coercion warning for a comm_r that is neither "max_intra" nor a number. All three now raise a classed cograph_bad_parameter error naming the argument and its domain, matching the other tuning parameters in the centrality surface.

Two regressions against reverse dependencies

Both were introduced before this release and are found by checking cograph against the eight packages that depend on it. All eight now check identically against this version and against the current CRAN cograph.

centrality() failed with arguments imply differing number of rows on a network whose node table carries no label column. The node-label fallback tested only for NULL, and a source with no labels arrives as a zero-length character vector instead, so the fallback to node indices never fired and the node column came out empty beside full-length measure columns. The fallback now checks that there is exactly one label per node, which also rejects a label vector of the wrong length.

to_df() and to_data_frame() return from, to and weight again. When these stopped routing through igraph, the round-trip that used to discard extra edge columns went with it, and the verb silently began returning every column the edge table carried. They are the narrow conversion verbs; to get the edge table whole – including columns mutate_edges() computed – use as.data.frame() on the network, which is the accessor and is unchanged.

Fixes

centrality(measures = "hubbell") refused to report a divergent result only when the largest real part of the scaled spectrum reached 1. The Neumann series behind Hubbell diverges once the spectral radius does, so a signed network carrying a complex pair of modulus above 1 – or a real eigenvalue below -1 – was reported as a confident number instead of NA. The guard now tests the modulus. For a non-negative weight matrix the Perron root is real, positive and equal to the spectral radius, so no unsigned network changes.

centrality(measures = "delta_closeness", closeness_delta = 0) scored every node of a disconnected graph 1. R evaluates Inf^0 as 1 and is.finite(1) is TRUE, so an unreachable pair passed the filter and counted as fully close. The distance matrix is now screened as well. Only closeness_delta = 0 is affected; every positive delta already behaved.

centrality_expected_influence_1() and centrality_expected_influence_2() read their result column by $ partial matching, because the column is really expected_influence_1_out. They now index the column by name. Results are unchanged.

mcml()’s deprecation marker no longer depends on the lifecycle package, which was not declared anywhere, and no longer points at an SVG that the package does not ship – the HTML help image for that topic was broken.

cograph 2.6.5

Direction cues on simplicial pathway panels

A simplex is a set of vertices, so a blob on its own cannot say which state came first: A -> B -> B and B -> A -> B drew the identical shape. With dismantled = TRUE each panel shows one ordered pathway, so plot_simplicial() can now draw the traversal three ways, selected with direction_cues: a light-to-dark core ramp along the path ("shade"), a ring whose highlight peaks on the side facing the next state ("ring"), and an arrowhead just outside each node aimed at its successor ("arrows").

direction defaults to NULL, which turns the cues on exactly when dismantled = TRUE. A single combined blob cannot express direction, so direction = TRUE with dismantled = FALSE raises a classed cograph_direction_needs_panels error rather than drawing a misleading figure. legend draws the in-figure legend strip beneath a dismantled grid and defaults to TRUE whenever the cues are on.

Unordered pathways are no longer forced into a source/target split

An association-rule itemset and a clique of a simplicial complex are sets: every member is co-equal and there is no target at all. These are now carried through the pipeline as genuinely unordered — ordered = FALSE — instead of having a source/target split imposed on them, and their panels are titled with a member list rather than a path. Ordered HON/HYPA/MOGen pathways are unaffected.

Fixes

A panel-centring clip that could cut a blob off at the panel edge is fixed, and an NSE-related R CMD check NOTE is resolved.

cograph 2.6.4

Fixes to the parallel motif null

A permutation replicate that does not come back intact from a parallel worker now raises an error. Previously only an explicit worker error was caught; a worker killed by the operating system returns NULL for its whole chunk with only a warning, and those gaps were silently filled by recycling the surviving replicates – part of a permutation null replaced by duplicates, with no warning and no error.

The serial replicate path no longer leaves the session’s random number generator switched to L’Ecuyer-CMRG. motifs() itself never used that path, but the package’s own test suite did, which changed the random fixtures of every test file that ran afterwards.

cores validation now raises a classed cograph_bad_cores condition.

cograph 2.6.3

Clearer errors when igraph is not installed

igraph is a suggested dependency. Functions that need it – including to_igraph(), motif_census(), detect_communities(), robustness(), vulnerability(), rich_club() and network_summary() – now raise a cograph_missing_suggest error naming the function and how to install igraph, instead of R’s bare “there is no package called ‘igraph’”. Functions that need no igraph, such as motifs(significance = FALSE), subgraphs(), extract_triads() and centrality(), keep working without it.

Faster motif permutation tests

motifs() on individual-level data (a tna model, or an edge list with an actor column) now runs its permutation null several times faster — on tna::group_regulation with the default n_perm = 1000, 255s to 39s. The null builds class counts directly instead of materialising and then re-counting a row per node triple, and the triple indices are computed once per state space rather than once per unit per replicate.

Results are unchanged: for a given seed the permutation draws, and every count, expectation, z score and p value, are identical to previous versions.

Faster extract_motifs(significance = TRUE)

The instance-level permutation null now counts (triple, class) pairs directly instead of building a labelled row per triple per unit and re-aggregating it by a pasted key. On tna::group_regulation at n_perm = 1000, 428s to 32s. Results are unchanged for a given seed.

motifs(cores = )

The individual-level permutation null can now run across worker processes. cores = 1 remains the default and is byte-for-byte the previous behaviour.

cores > 1 gives each replicate its own L’Ecuyer-CMRG stream, so a result depends on seed alone – not on the worker count, and not on how replicates were chunked across workers. Repeated parallel runs of one seed agree exactly, at any cores. Those are a different set of draws from the serial path, so p-values from cores > 1 will not match a cores = 1 run of the same seed; both are valid permutation nulls. Forking is used where available, with a PSOCK cluster on Windows.

Measured on 10,000 simulated sequences (10 states) at n_perm = 400: 103.0s at cores = 1, 20.5s at cores = 10.

On Windows the null runs through a PSOCK cluster, which is exercised in the test suite on every platform.

A replicate that does not come back intact from a worker – an error, a NULL from a killed process, or a wrong-length result – raises a cograph_parallel_failure error naming the problem, rather than being folded into the null matrix. If the available core count cannot be detected, cores > 1 is used but reported with a cograph_cores_undetected warning.

plot_mcml(expand = )

The top layer can now be drawn at a finer resolution than the partition: named clusters appear as their member states while every other cluster stays a single node, and the bottom layer still shows the partition, so an expanded state sits inside its cluster’s shell and is linked to its own summary node. expand = "all" (or TRUE) expands every cluster.

The expanded macro is re-counted from the input with a refined partition, using cograph’s own cluster_summary(); a k x k aggregate cannot be disaggregated after the fact. Only a pre-built cluster_summary or mcml, which carries no source to re-count from, falls back to Nestimate::macro_network(), and says so with a cograph_expand_unavailable error when that is unavailable.

This also fixes a silent defect in the previous layout code: the top layer was indexed positionally against the cluster count, so a macro with more nodes than the partition was truncated to its first k rows and drawn under the cluster names — a confident, wrong figure with no error. It is now matched by name, and a macro wider than the partition that cograph did not build itself is refused.

cograph 2.6.1

Fixes for defects an adversarial review found in the 2.6.0 wrangling verbs. All of them were introduced in 2.6.0 except the last, which was older.

Signed weights are no longer deleted

Zero is how cograph stores “no edge”, so it must never be compared against a real weight. to_undirected(), symmetrize(), spanning_tree() and bind_networks() did exactly that, which silently deleted edges in networks that carry negative weights — correlation and partial-correlation networks above all:

Presence is now carried separately from weight throughout: two values are combined only where both arcs exist, and an unreciprocated edge keeps its own weight. Combining to exactly zero raises a cograph_edges_dropped warning rather than shrinking the edge set in silence.

symmetrize() gains method = "mutual" for the reciprocated-only rule (sna’s “strong”). method = "min" no longer means that: it is a weight combination that keeps unreciprocated edges, which is a different operation.

Other fixes

cograph 2.6.0

Network wrangling

The verbs that reshape a network are now a family with one contract: any supported input, options as named arguments, a cograph_network back (or the input format with keep_format = TRUE), and classed conditions. See ?network_wrangling.

New accessor

as.data.frame() on a cograph_network returns the tidy edge table, with endpoints as labels rather than internal indices, and as.data.frame(what = "nodes") returns the node table. No caller needs to reach into the object with $ any more.

New verbs

add_edges() shares its name with igraph::add_edges(); call cograph::add_edges() when igraph is attached.

Wider vocabulary inside expressions

Node expressions gain is_isolated, is_source, is_sink, is_leaf, is_cut, local_transitivity and local_triangles, and any measure centrality() computes can now be named directly — select_nodes(x, harmonic > 0) works, as does select_top(x, n = 5, by = "leverage"). Edge expressions gain is_loop, is_multiple, is_reciprocal, weight_rank, from_community and to_community, and select_edges(by = ) accepts the endpoint metrics.

Bug fixes (all user-visible)

Behaviour changes

cograph 2.5.0

cograph 2.4.9

Centrality without igraph

The whole centrality surface (centrality() and its 191 centrality_* wrappers, edge_centrality(), centralization(), group_centrality(), dispersion(), estrada_index(), trophic_incoherence(), and the centrality vocabulary of the wrangling verbs) now computes on cograph’s own kernels. Every input is turned once into a dense, labelled weight matrix (R/kernels-graph.R); no igraph object is built. igraph stays in Suggests for input conversion of igraph objects and for community detection and layouts.

Equivalence was verified measure by measure against the igraph-backed implementation on a golden corpus of 62 unsigned networks (30 real, 32 synthetic edge cases) under every mode and weighting, at relative tolerance sqrt(.Machine$double.eps), with the following documented exceptions.

New internal kernels: edge betweenness, Barrat transitivity, average neighbour degree, articulation points, bridges, ego masks, and a loop-preserving coreness matching igraph’s convention.

Test infrastructure: a versioned corpus of test networks under tests/testthat/networks/ (32 real, 35 degenerate, plus local tiers), a golden-file comparison harness, a scale-invariance property test, and a CI job that runs the centrality tests with igraph uninstalled.

cograph 2.4.8

New features

Centrality Batch 51 — trust-PageRank

Centrality Batch 50 — degree and importance of lines

Centrality Batch 49 — immediate effects centrality

Centrality Batch 48 — the Lhc index

Centrality Batch 47 — randomized shortest paths betweenness

Centrality Batch 46 — hybrid characteristic centrality (HCC and EHCC)

Centrality Batch 45 — KED method

Centrality Batch 44 — Local neighbor contribution (LNC)

Centrality Batch 43 — Iterative resource allocation (IRA and IIRA)

Centrality Batch 42 — Neighborhood (neighbor distance) centrality

Centrality Batch 41 — Relative-entropy integrated evaluation

Centrality Batch 40 — DK-based gravity model

Centrality Batch 39 — Mixed gravitational centralities

Centrality Batch 38 — Multi-characteristics gravity model

Centrality Batch 37 — SpectralRank

Centrality Batch 36 — ControlRank

Centrality Batch 35 — Map equation centrality

Centrality Batch 34 — Node and Neighbor Layer Information

Centrality Batch 33 — Localized bridging and Extended LBC

Centrality Batch 32 — BG-index and beta power

Centrality Batch 31 — Expected Force and its degree adjustment

Centrality Batch 30 — Proximal betweenness

Centrality Batch 29 — Bridging capital

Centrality Batch 28 — Coleman-Theil hierarchy

Centrality Batch 27 — X-degree

Centrality Batch 26 — LineRank

Centrality Batch 25 — random walk decay

Centrality Batch 24 — graph regularization centrality

Centrality Batch 23 — adaptive LeaderRank

Centrality Batch 22 — weighted LeaderRank

Centrality Batch 21 — global structure models

Centrality Batch 20 — exogenous centrality

Centrality Batch 19 — improved closeness

Centrality Batch 18 — weighted clustering degree algorithm

Centrality Batch 17 — extended coreness and gravity

Centrality Batch 16 — node resistance curvature

Centrality Batch 15 — dynamics-sensitive and Malatya centrality

Centrality Batch 14 — finite diffusion and dynamical importance

Centrality Batch 13 — volume and maximal cliques

Centrality Batch 12 — verified parameter candidates

Centrality Batch 7 — Centrality Zoo comparison batch

Five measures chosen from the Centrality Zoo correlation study (Shvydun 2025; 349 measures, 648 ICON networks, average Kendall tau) as the ones with the lowest rank redundancy against what centrality() already computed (maximum tau with any existing measure in parentheses). All are implemented in base R on matrices (R/kernels-batch7.R) with thin igraph glue and one exported verb each (R/centrality-batch7.R).

The three distance-scaling measures are hop-count measures and ignore edge weights (as gravity and collective_influence already do); they share one unweighted all-pairs matrix per centrality() call.

Centrality Batch 8 — the Zoo’s “on the way” measures

The twelve measures the batch 7 lookup listed as “on the way” are now implemented (thirteen centrality() measures), each verified against an exact brute-force definition or the source paper’s own numbers, plus an independent Python reference written from the paper (kept in local_testing_and_equivalence/batch8/, not shipped). Base-R kernels in R/kernels-batch8.R, verbs in R/centrality-batch8.R.

The Centrality Zoo lookup article and coverage document were regenerated: 82 Zoo measures are now available in cograph and nothing is “on the way”.

centrality() tiers, and a catalogue of the measures

Bug fixes

Centrality Batch 9 — the remaining Zoo measures with a pinned definition

Twenty more measures (R/kernels-batch9.R, R/centrality-batch9.R), each researched from its source paper by a dedicated agent and verified against published tables, brute-force definitions and an independent Python reference (kept in local_testing_and_equivalence/batch9/, not shipped).

Not shipped, with reasons recorded in the coverage document: DegreePunishment, improved WVoteRank and local degree dimension (source articles unobtainable, definitions rest on the Zoo alone) and multi-local dimension (a rescaling of local dimension for every q outside (0, 1)).

New pkgdown article Centrality Zoo lookup answers “is the Zoo measure I want in cograph?”: every Zoo measure listed once under Available, Almost identical (tau >= 0.99, with the cograph measure to use), Near-duplicate (0.90 <= tau < 0.99), On the way, or Not available. docs/CENTRALITY-ZOO-COVERAGE.md records the full intersection of the Zoo matrix with cograph: which Zoo measures are rank-identical to an existing cograph measure (and therefore not worth adding), which are near-duplicates, and the remaining ranked candidates.

Centrality Batch 10 — the gaps against the other centrality packages

docs/CENTRALITY-CROSS-COVERAGE.md counted, in both directions, what each R and Python centrality package reaches of the Zoo. The five node measures that other packages offered and centrality() did not are now implemented (R/kernels-batch10.R, R/centrality-batch10.R), each verified against the package whose gap it closes:

fragmentation and epc join the costly list, so type = "all" holds them back (include = "costly" or naming them restores them).

Three of the reported gaps turned out not to be gaps at all, and the document now says so with the evidence: centiserve::closeness.latora() is cograph’s harmonic exactly, centiserve::communibet() is communicability_betweenness exactly, and brainGraph::efficiency(type = "nodal") is harmonic over n - 1. Two remain unimplemented and are listed with the reason: the link-community centrality of Kalinka & Tomancak (its reference package linkcomm is archived, so no equivalence check is possible) and keyplayer::kpset() (a set search, not a node measure).

Centrality Batch 11 — tuning the families cograph already had

160 of the Zoo’s measures sit at a rank correlation of 0.90 or better with something centrality() already computes (docs/zoo/parameter_candidates.csv), which suggests many are the same family at a different setting rather than different ideas. The first five investigated bear that out, and four new measures plus two arguments cover seven more Zoo labels (coverage 103 -> 110 of 349):

All four are exact under a brute-force enumeration of weighted geodesic pairs (local_testing_and_equivalence/batch11/run_equivalence.R, 6 blocks, 6 PASS).

Bug fixes

cograph 2.4.6

New features

Bug fixes / changes

cograph 2.4.3

Bug fixes / changes

cograph 2.4.2

Bug fixes / changes

cograph 2.4.1

New features

cograph 2.4.0

New features

Bug fixes / changes

cograph 2.3.11

New features

cograph 2.3.10

Bug fixes / changes

cograph 2.3.9

New features

cograph 2.3.8

New features

cograph 2.3.7

Breaking changes

New features

Bug fixes

cograph 2.3.6

Bug fixes

cograph 2.3.5

Documentation

cograph 2.3.4

Bug fixes

cograph 2.3.3

Documentation

cograph 2.3.2

Bug fixes

cograph 2.3.1

Multi-panel layout control

Test suite hygiene

cograph 2.3.0

Documentation

Bug fixes

Centrality

Tests

Plotting — edge-label cex coupling (Phase 2)

Plotting — device-aware visual scaling

Plotting

Correctness fixes (audit-driven)

Performance & documentation

New tests

cograph 2.1.0

New Features

Batch 6 — new-API graph-level / set-level / pair-level measures

These measures don’t fit the per-node centrality() data frame, so they live as standalone functions:

Centrality Batch 5 — Gould-Fernandez brokerage (5 roles)

Added the five Gould-Fernandez (1989) brokerage role counts, a foundational measure in social network analysis (~1500 citations). Each role is a separate per-node measure requiring a membership argument (following the same pattern as participation, within_module_z, gateway), and counts open directed 2-paths a -> v -> c through broker v:

Bit-exact match against sna::brokerage$raw.nli for all five roles across 20 random directed graphs. Implemented natively (no runtime dependency on sna). Key implementation detail: the Gould-Fernandez counting rule requires open 2-paths only — triads where a direct edge a -> c already exists are excluded. This matches sna’s C implementation exactly and was derived empirically (sna’s .C("brokerage_R", ...) has no R-level source).

Directed-only; warns and returns NA on undirected input.

Centrality Batch 4 — directed prestige family (Wasserman-Faust / sna)

Centrality Batch 3 — classical measures with reference-package validation

cograph 1.8.2

New Features

Breaking Changes

Bug Fixes

cograph 1.8.0

New Features

Bug Fixes

cograph 1.7.0

New Features

Cluster Analysis

Network Operations

Motif Analysis

Visualization

Transition Plot Enhancements

Data & Infrastructure

Bug Fixes

Improvements

cograph 1.6.0

New Features

Centrality

Community Detection

Network Metrics

Visualization

Motif Analysis

Network Utilities

Infrastructure

Bug Fixes

cograph 1.5.2

Breaking Changes

Bug Fixes

Documentation

cograph 1.5.1

Breaking Changes (with backwards compatibility)

The following parameters have been renamed for consistency. The old names still work but emit deprecation warnings:

Old Name New Name Reason
esize edge_size Add edge_ prefix, expand abbreviation
cut edge_cutoff Add edge_ prefix, clarify meaning
usePCH use_pch Fix camelCase to snake_case
positive_color edge_positive_color Add edge_ prefix (matches theme storage)
negative_color edge_negative_color Add edge_ prefix (matches theme storage)
donut_border_lty donut_line_type Expand lty abbreviation

Improvements

cograph 1.4.0

New Features

Bug Fixes

cograph 1.3.1

New Features

Bug Fixes

cograph 1.2.7

Bug Fixes

cograph 1.2.6

New Features

Bug Fixes

cograph 1.2.0

New Features

Bug Fixes

cograph 1.1.0

New Features

Bug Fixes

cograph 1.0.0