Skip to content

Releases: crossfeed-bio/crossfeed

grownet v0.1.0

Choose a tag to compare

@github-actions github-actions released this 29 Sep 14:18
6df07ba

Windows: download grownet-v0.1.0-windows.zip below, unzip it (right-click, Extract All) and double-click grownet.exe in the extracted folder. The first time, Windows shows "Windows protected your PC". Click the small More info link under the message; only then does a Run anyway button appear, and clicking it starts grownet. Windows says this about any program that few people have run yet, and grownet is new: it is built in public from this repository by its release workflow. With Smart App Control on (Windows 11) there may be no Run anyway; then install with uv tool install grownet or pipx install grownet instead (see the README).

Everyone else: uv tool install grownet or pipx install grownet, then grownet gui.

The first release, on PyPI (grownet) and as a Windows program. It holds everything since 0.0.1; 0.0.2
was never published.

Added

  • All reads the network the repository derives once a day (#96): .github/workflows/all-network.yml
    derives All with the default settings and publishes it as the assets of the all-network release. The
    page's All button and derive --all use it when it is less than a day old and the settings are the
    defaults, and derive live otherwise, or with --no-published; the page and the report say when it was
    derived. One derivation a day instead of about 1,300 requests to mGrowthDB per All. A failed daily
    build opens an issue labeled all-network-failed, closed by the next build that succeeds.
  • Every derived network carries the page's caution on how to read it in meta.provisional (a graph
    attribute in GraphML), so a download or the daily All network states its own terms without the page.
  • The local page offers the Cytoscape style as a download (/grownet_style.xml, the file grownet style
    writes), linked from the help page's Cytoscape answers, so styling a GraphML file needs no command line.
    Help, Legend and About have a Back at the upper right as well as at the end, and the grownet mark leads
    back to the search being worked on instead of an empty page.
  • The help page compares the three growth measures (area, maximum, growth rate): what each captures, and
    its strengths and weaknesses. The README calls the tool grownet, keeping crossfeed only for the command,
    the module, the repository and the schema id until the rename is released.
  • A monoculture set is also matched to a co-culture by identical wording of how it was grown, once the
    organisms and the kind of culture are set aside (register item 28): SMGDB00000014's five co-cultures
    now give 10 arcs. An obligate or abolished arc whose set without growth is zero from its first time point
    carries the caution zero_at_start.
  • With max as the growth measure, arcs are checked for stationary phase (register item 27): the caution
    stationary_phase_differs marks an arc where one set reached stationary phase within the compared window
    and the other did not, and stationary_unchecked one whose curves have under 6 time points. The rule is
    not fooled by a diauxic shift: a pause followed by a measured second rise is not stationary.
  • An All button beside Example (derive --live --all): the box is ignored and every study in mGrowthDB is
    derived, with every partner; Only these studies and Exclude these studies still apply (register item 25).
  • Merge to genus (--merge-genera), an advanced setting off by default: one node per genus, and the arcs
    between two genera merged by sign, with the median log2 mean and new arc fields supporting_pairs and
    merged_pairs (species pairs, or strain pairs when only taxon ids were entered). Interactions within a
    genus stay as a self-loop; absent arcs as one hidden absent arc per genus pair. With Merge parallel arcs
    on too, a pair measured in several studies counts once. Nodes gain the identity genus (item 24). The
    genus skips qualifiers (Candidatus, unclassified, uncultured) and keeps NCBI's brackets, so [Clostridium]
    is not Clostridium, in the merge, the genus query and the genus colors alike.
  • A genus entered alone ("Blautia") stands for every species of it in mGrowthDB, listed on the page and
    in the report, instead of being refused as "a genus alone".
  • The README says the tool is now called grownet and what keeps the crossfeed name until the rename, that
    the tests also run on Windows and macOS, and that the local page's About says who built the tool.
  • An About button beside Help (#80): who built grownet, in the wording Craig agreed to on #80, with the
    repository link and the version.
  • The help page opens with the idea behind the tool, after Gause (1932, 1934): grow two species alone
    and together and compare. A figure, drawn from code with the Baranyi-Roberts model the tool fits, shows
    each species alone, both together, and the arcs the change gives, and marks the three growth measures
    the tool can compare (area, maximum, growth rate). Tests keep the figure in step with the measures.
  • The help page now explains every advanced setting (with its command line flag and default), every arc
    and node attribute, the main design decisions and why, the command line with the page's own example,
    what to do when no network comes back, a short Q&A, how to cite, and links the issue tracker. Tests
    require an entry for every setting, command line option and model field, so it cannot fall behind (#78).
  • derive --live --species NAME ... runs the local page's search from the command line, with
    --all-partners for the page's "only the species entered" box unticked (#78).
  • The report and every network record when the search ran (date, time and offset) and the version of
    the data: mGrowthDB publishes none for the whole database, so each study's upload and publication
    dates. Input that gives nothing now says why, per entry (unreadable, a taxon id mGrowthDB does not hold,
    a genus alone, an unknown name, with suggestions), commas and txid ids are understood, an empty result
    names the setting that caused it, and the Cytoscape messages say what to do on the page and the
    command line alike.
  • derive --report FILE writes the page's report from the command line, and crossfeed derive --help
    groups its options as the page does (what to derive, the settings, the outputs), in the page's
    wording, with examples. A test requires an option for every setting and all three outputs.
  • Clearer advanced settings: the absence threshold says it decides when an interaction counts as absent
    (the species do not affect each other), and the no-growth settings say they test the replicate growth
    curves of one species in one culture condition. A new setting, Exclude these studies
    (--exclude-studies with --species), leaves the listed studies out of a search; empty by default.
  • Release automation (#26, #27): a version tag runs .github/workflows/release.yml, which checks the tag
    against the version and this changelog, tests the wheel in a clean environment on Linux, Windows and
    macOS, builds and starts the Windows program, publishes to PyPI through trusted publishing once a
    maintainer approves, and creates the GitHub release with the notes from this changelog and
    grownet-<version>-windows.zip attached. CI builds and starts both on every push. A double-clicked
    grownet.exe opens the page, and on an error waits for Enter instead of closing. RELEASING.md gives the
    setup and the steps; the README's install section offers the Windows zip, uv and PyPI.
  • The gate gained a merge-marker check, after conflict markers from a merge reached this changelog
    unseen (now removed, both sides kept).
  • Documentation made to agree with the code, after an audit (21 conflicts): the README's Cytoscape style,
    output example and field descriptions, technique rule, metric options and correction; the help page's
    effect, community and empty-result wording; "k = 0 marks only a mean of exactly zero absent" everywhere;
    METHOD_NOTES' defaults at a glance, rewritten from the running code; the viewer's derivation panel,
    which described the retired baseline, replaced by a plain statement. The viewer's GraphML now writes all
    of export.py's keys (it wrote 9 of 34), and a test runs it with Node against the CLI's. Page and CLI
    defaults are checked equal by a test.
  • Merge parallel arcs (register item 14, Karoline's choices): an advanced setting, off by default
    (--merge-arcs), making the arcs of each source and target, across conditions, studies and evidence, one
    arc with the median log2 mean and its range; arcs whose signs disagree are not merged, absent arcs stay
    separate. Minimum supporting studies (--min-studies) keeps arcs resting on that many studies. Edges
    gain merged_arcs and strength_range.
  • A species is compared only when its monocultures and co-cultures (or full community and drop-out) were
    measured by the same technique, not only in the same unit (Karoline, METHOD_NOTES item 23). No edge in
    mGrowthDB changed; it guards future data.
  • With "only interactions between the species entered" (the default), a search reads only what can give
    such an interaction: monocultures and co-cultures of the entered strains, and whole drop-out designs
    holding two of them. Searches take about half as long (the Example about 2 s once the species list is
    in); checked on eight searches, the networks are identical to reading everything.
  • The standalone viewer (gui/index.html) draws the legend's colors, one arrowhead, dashes for evidence
    and quality, and genus colors. CI also runs on Windows and macOS. The species list looks 25 missing
    study ids ahead instead of 5. Download, Report and Send to Cytoscape answer for the search on screen. A
    study of monocultures only says so.
  • A strain is shown by its current name (#24, Karoline's rule of 2026-09-18): the name used by the most
    recently published study holding its taxon id, in the network's nodes and the resolved list; old names
    still f...
Read more

All network, derived once a day

Pre-release

Choose a tag to compare

@github-actions github-actions released this 29 Sep 06:26
98fdad6

The All network of mGrowthDB, derived with the default settings by .github/workflows/all-network.yml and replaced once a day. grownet reads all_result.json when it is less than a day old; all_network.json and all_report.txt are the same network and its report. Every arc cites the studies it comes from.