Repository navigation
Conversation
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…species mapping Removes the old runHypeR/prepareHypeRSignatures implementation ahead of the hypeR-native rewrite. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ymbol sources Regenerated NAMESPACE/man via devtools::document() to export prepareHypeRSignatures(). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…nance hypeR's argument names and defaults, per-query "difexp" background, and unusable signatures skipped with a warning instead of aborting the run. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…o-weight kstest guard Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…ckground Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Replaces the hardcoded connection credentials with placeholders and drops the superseded review vignette. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…he query, and unrunnable queries no longer abort the batch Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…e, hypeRToExcel and fuller provenance Fixes from the hypeR capability evaluation (W1-W3, W5-W8, W11, W13-W15): - direction = up/down/both ranks by the negated score for the low end - ks_source = "signature" runs kstest on signatures without difexp - return a hyp only for a single signature that builds one query by construction; everything else is a multihyp - query_names function and hypeRToExcel() with safe sheet names + index - power = 0 uses hypeR's ranked branch (score and Signature Type match hypeR) - nine more SigRepo keys in hyp$info (direction, background source, drops...) - drop hypeR's empty placeholder plots when plotting = FALSE - gene-vector backgrounds also reduce the hypergeometric query - resolve each signature's symbols once per call - tests for hyp_emap, hyp_hmap, hyp_to_graph, hyp_to_table, hyp_to_rmd, rctbl_build - hypeR (>= 2.0.0) in Suggests Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…and hypeRToExcel Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…e backgrounds - runHypeR()/prepareHypeRSignatures() take signature = a character vector, named numeric vector or named list, as hypeR::hypeR() does, instead of SigRepo signatures (W4) - getHypeRDifexp() returns difexp tables with resolved_symbol for custom cutoffs (W4) - background accepts a named list keyed by signature label or ID, each entry a number, gene vector or "difexp"; arms share their signature's entry Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…round lists Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…conventions in runHypeR - categorical signatures: hypergeometric splits each category by score sign (<label> | <group> | up/down); kstest ranks each category's own difexp rows - kstest skips rankings whose scores are constant or all one sign - min_query_genes = 4: hypergeometric queries with fewer genes found in the genesets are skipped (BS831 hyperEnrichment min.drawsize) - fdr_scope = "run" (default) adjusts FDR across every query in the call (hyperEnrichment mht = TRUE); "query" keeps hypeR's per-query FDR - background = NULL (default): a complete difexp's genes for hypergeometric, 23467 without a difexp or, with a warning, when the difexp looks filtered; kstest keeps 23467 - SigRepo FDR Scope provenance key Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…eR tutorial and NEWS Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…down hyps Ports hypeR's fgsea vignette wrapper with hypeR's info keys, a hits column, seeded runs that restore the caller's RNG, and gene-vector background reduction. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…kings One ranking per signature (per category for categorical signatures) with the requested direction in info; direction defaults to "both" for fgsea, is allowed with native input, and native input must be named numeric. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
… fgsea_args runHypeR() branches to the fgsea engine after backgrounds are resolved and shares finishHypeRRun() with the other tests for FDR scope, cutoffs and the return type. absolute = TRUE, bad seeds and reserved fgsea_args are errors; fgsea warnings are re-emitted once with an "fgsea: " prefix. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…xygen Final-review fixes for runHypeR(test = "fgsea") (F1-F5): - fgseaHypeRTable() no longer errors when fgsea drops every pathway (e.g. minSize larger than every geneset, or a background sharing no genes with the genesets); it now returns a proper 0-row table. - runFgseaQueries()/finishHypeRRun() pool run-scope FDR across the up and down sides of every ranking regardless of `direction`, instead of silently pooling only the requested side(s). - checkHypeRFgseaArgs() rejects fgsea_args$scoreType (it would change the ES-sign split runHypeR() relies on). - checkHypeRKstestArgs() error text now names fgsea too. - roxygen for runHypeR()'s background/fdr_scope/quiet and prepareHypeRSignatures()'s split/ks_source/score_col now describes fgsea; man/*.Rd regenerated via devtools::document(). Rscript -e 'devtools::test(filter = "hypeR_|hypergem", reporter = "check")': [ FAIL 0 | WARN 1 | SKIP 1 | PASS 495 ] (warning and skip both expected). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…results Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
… each test's own arithmetic and tie rule Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…multihyp Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…) and Venn diagrams (hypergeometric) on demand Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…urning NULL with a warning where hypeR would error Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…hypeR tutorial Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
…top-N ties, map guards, docs) Addresses the final whole-branch review of the hypeR plotting work: - I1: hypeREnrichmentData() now reorders fgsea stats the way fgsea::plotEnrichmentData() does before computing ticks and the leading edge, fixing wrong tick positions/leading-edge genes on unsorted native rankings. - T2-a: documents that fgsea's curve holds fgsea's own step points (0..N+1), not one row per ranked gene. - M1: hypeREnrichmentData() now errors for absolute = TRUE kstest results instead of silently reporting the wrong ES. - M2: hypeRDotData() now gives a named error when size_by = "overlap"/ "geneset" and that column is missing, instead of an opaque data.frame() error. - M3: hypeRDotData()'s top-N tie-break now falls back to best pval, then label name, instead of alphabetical only. - M4: plotHypeRMap() gets its own @PARAM val/@PARAM top text instead of the inherited (inaccurate) hypeRDotData() text. - M5: the map guard now warns distinctly when fewer than 2 genesets pass the cutoffs and top, instead of the misleading "lower similarity_cutoff" warning. - M6: plotHypeRMap() validates pval/fdr like hypeRDotData() does. - M7: the "not in results after cutoffs" subtitle text (inaccurate for fgsea size-filtered genesets) is now "not in the result table". - M9: emptyHypeRDotData() gets the @nord block used by other internal helpers. - T2-c: adds a hand-derived exact-value test for the kstest running_score on the TIE fixture. M8 (duplicated member-lookup logic) is intentionally left for a later pass. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- Every plot (dots, enrichment, Venn, map) is titled with the test that was
run ("Hypergeometric test", "KS test", "GSEA (fgsea)") unless `title` is
given; the enrichment plot's geneset moves to the subtitle.
- plotHypeRDots() groups several signatures under short codes (S1, S2, ...)
labelled by group or direction, with the full names in the caption; a
single signature is named in the subtitle with horizontal group labels
while they fit. `signature_key = FALSE` restores full query names (no
wrapping, 45 degrees, left margin grown so labels are not clipped).
Legends hang from the top so they are not cut off.
- hypeRDotData() adds signature_code and query_group; new export
hypeRSignatureKey() returns the code-to-name table.
- plotHypeREnrichment()/hypeREnrichmentData() name the whole fgsea ranking
instead of its up/down side and accept the signature name as `query`
(the side holding the geneset is used); summary gains `ranking`. kstest
down queries keep their side (negated ranking).
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…ults Cameron's Annotate feedback: the tutorial and the functions themselves should say what is mandatory, what is optional, and what NULL means. - runHypeR(), prepareHypeRSignatures() and getHypeRGenesets() get a 'Required and optional arguments' section. - The hypeR tutorial says it before the conventions table. - The error for a call with no signatures now names 'signature' too. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Part of #265. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Submit, poll and fetch against the coresh-back JSON endpoints. Part of #265. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Also keep the .superpowers plan workspace out of the package build. Part of #265. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… the signature A failed reference-table or biomaRt lookup used to vanish, so a network outage surfaced as "0 mapped" with no hint why. The lookups now carry the error, buildExternalQuery() prints it when verbose and appends it to the "Could not map enough" error, and the query reports it as lookup_errors. A direction with no features now says so rather than reporting zero mappable features. Part of #265. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…() messages The translation message said "sending the top 500" while the result had 25 rows, which read as a contradiction: 500 is the genes sent as the query, 25 is the hits returned. The translation line now says "the query is ...", and each source reports "N of M matching hits returned (limit = L)", with the CORESH results page when there is one. Part of #265. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…e-rummageo-coresh Add searchExternal(): query Rummagene, RummaGEO and CORESH from a SigRepo signature
# Conflicts: # NEWS.md
Add mergeDifexp() to merge signatures' difexp tables into one matrix
Brings master's rebuilt NEWS.md (the #258 bullet under 1.0.0) into dev. One conflict in NEWS.md, resolved by keeping both 1.0.0 bullets in the order NEWS.Rmd already has them. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Merge master into dev: NEWS rebuild for #258
…the-staging-instance Ask SigRepo_Server to rebuild the staging image when this package changes
… the missing bullets NEWS.Rmd is what the render-news-rmd workflow turns into NEWS.md on every push to master that touches it, and it held only the 1.0.0 section: the whole development section lived in NEWS.md by hand, so the release merge would have rendered it away. The section now lives in NEWS.Rmd under 'SigRepo 1.1.0', and NEWS.md is rendered from it with rmarkdown exactly as the workflow does, so the next render is a no-op. New bullets: #233 under 1.0.0 (it is live on master), and a Process section for #235, #237, #239 and #251. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…name-the-development-header-and-add-the-missing-bullets NEWS for 1.1.0: carry the section in NEWS.Rmd, rename the header, add the missing bullets
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
20 of 21 tasks
…-release Bump Version to 1.1.0
docs/ is pkgdown's output directory, and build_site_github_pages() refuses to clean a non-empty docs/ it did not build, which fails the pkgdown check on the release PR. The spec and plan from #266 now live outside the repository, with the other planning documents; the .gitignore exception that let them in goes too. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…lanning-documents-from-docs-so-pkgdown-can-build Remove the searchExternal planning documents from docs/ so pkgdown can build
Collaborator
Author
build_reference_index() fails on the release PR because neither topic is listed. mergeDifexp joins compareSignatures; searchExternal joins writeSignatureSearchScript under a section for searching beyond the repository. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…missing-mergedifexp-and-searchexternal pkgdown: add mergeDifexp() and searchExternal() to the reference index
Closed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release 1.1.0:
dev->master. Checklist copied from #267 (state as of opening; it is kept current there). Pairs with montilab/SigRepo_Server release PR; both merge in the same window and production rebuilds once afterwards. #273 (DESCRIPTION 1.1.0) is still to merge intodevand will appear here when it does.Release checklist for the next
dev->masterpull request. One line per merged pull request, with what to exercise on staging and what a correct result looks like. Tick a box only after doing it. Paired with montilab/SigRepo_Server release issue montilab/SigRepo_Server#154 (the server one): the two release pull requests merge in the same window, and production rebuilds its image once, after both are in.Why both repositories, and in which order
devchangesrunHypeR()soorganismandtestare required andmethod,msigdb_speciesandsplit_by_directionare gone (hypeR-native annotation client, plotting and annotation tutorial #223). The production server's MCPrun_enrichmenttool still calls the old signature (mcp/lib/queries.Ron server master). Releasing the client alone and rebuilding the production image would break that tool. Serverdevwithdrew the tool (SigRepo_Server#139), so the server release must land no later than the client release.devrebuilt the Shiny Annotate and Home tabs on the new client (SigRepo_Server#148, package touch ups #153). They callgetHypeRGenesets(),hypeRToExcel(),plotHypeRDots(),plotHypeREnrichment(),hypeRDotData(),hypeREnrichmentData()andhypeRSignatureKey(), none of which exist on client master. Releasing the server alone would break staging's Annotate tab the moment production rebuilt. So the client release must land no later than the server release.devis client-only: it reaches users throughinstall_github()and the server does not call it.Net: merge both release pull requests, then rebuild
montilab/sigrepo:latestonce. The Dockerfile clones clientmasterat build time, so the rebuild must come after the client merge.Before anything can be tested on staging
devnever reaches montilab.bu.edu and the boxes below cannot honestly be ticked. (Client changes never reach the staging instance #240.)montilab/sigrepo:devcarries the current client: inside the staging API container,packageDescription("SigRepo")$RemoteShamatchesorigin/dev.Coupled with the server release (test on staging, which runs the dev image)
LLFS_Aging_Gene_2023against MSigDB Hallmarks with hypergeometric, kstest and fgsea. Each produces a table and plots; the Excel export opens. From R against the staging database:runHypeR(conn_handler = conn, signature_name = "LLFS_Aging_Gene_2023", organism = "Homo sapiens", test = "fgsea", genesets = "msigdb")returns ahypobject with no error. Calling it withoutorganismerrors with a message that names the argument.connect-sigrepo-mcpskill no longer listsrun_enrichment. Staging MCP tool list (mcp/) has norun_enrichment; the skill text matches.Client-only (test from an R session with
remotes::install_github("montilab/SigRepo@dev"))searchExternal().searchExternal(conn_handler = conn, signature_name = "LLFS_Aging_Gene_2023", limit = 10)returns a named list of three data frames with the same first twelve columns; the verbose lines say "165 of 169 features mapped" and "N of M matching hits returned (limit = 10)";attr(x$coresh, "job_url")opens a CORESH results page in a browser.source = "rummagene", direction = "both"returns a stacked frame withdirectionup/down. A mouse signature from the database runs RummaGEO against the mouse background (attr(x$rummageo, "query")$organism_code == "mmu").writeSignatureSearchScript(). Writes an R script for a human transcriptomics signature with at least 10 features in each direction; the script sources without error wheresignatureSearchis installed (or: the generated file reads correctly and refuses a signature with too few features with a clear message).mergeDifexp()(open; include only if merged before the release PR opens). Two signatures with difexp merge into one matrix withcollapse = "min"; a signature without difexp is reported, not silently dropped.addSignatureWithID()rolls back on partial failure. Deposit a signature whose feature step is forced to fail on the staging database; no orphan row remains insignatures.R/hypeR_examples.Rremoved.R CMD checkpasses on the release candidate; nothing imports the removed module.Process and CI (no user-visible behaviour; confirm they still work after the release)
devand on the release PR; all green on the release PR.Closes #NNNfires. Still accurate after this release; update the "what is live" sentence if needed.Closesfor already-closed issues).Release steps
Versionin DESCRIPTION to 1.1.0 (therunHypeR()interface change is breaking; decide whether that warrants 2.0.0 instead and note the decision here).# SigRepo (development version)header in NEWS.md to# SigRepo 1.1.0and check every merged PR since 1.0.0 has a bullet or ano-changeloglabel.dev->masterwith this checklist copied into the body. NoCloseslines.:latestbuild clones client master and OmicSignature main; this is also what finally ships OmicSignature 1.4.1 to production).v1.1.0on master.masterback intodevthe same day (CONTRIBUTING rule).Out of this release
devis excluded. If a line above cannot be ticked, open a bug with what was run, what happened and the error, link it here, and label this issueblockeduntil it closes.🤖 Generated with Claude Code