Releases: crossfeed-bio/crossfeed
Release list
grownet v0.1.0
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 theall-networkrelease. The
page's All button andderive --alluse 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 labeledall-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 filegrownet 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 cautionzero_at_start. - With max as the growth measure, arcs are checked for stationary phase (register item 27): the caution
stationary_phase_differsmarks an arc where one set reached stationary phase within the compared window
and the other did not, andstationary_uncheckedone 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 fieldssupporting_pairsand
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 identitygenus(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-partnersfor 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 andtxidids 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 FILEwrites the page's report from the command line, andcrossfeed 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-studieswith--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.zipattached. CI builds and starts both on every push. A double-clicked
grownet.exeopens 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
gainmerged_arcsandstrength_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...
All network, derived once a day
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.