Tutorials › Quantitative Systems Pharmacology (QSP) › Releasing and Citing Shared QSP Models

Reproducibility and Model Sharing · Tutorial 785 of 799

Releasing and Citing Shared QSP Models

You will learn to make a QSP model release identifiable, accessible, properly licensed, and citable as a specific versioned snapshot.

Intermediate 10 min read

What You'll Learn

  • Define the boundary of a released QSP model artifact and distinguish it from a changing repository.
  • Prepare a versioned snapshot with a useful changelog and clear access instructions.
  • Distinguish model, code, data, and dependency licensing needs.
  • Construct a citation that identifies the exact release rather than only a project or repository.
  • Check whether another group can retrieve, identify, and cite the same artifact.
  • Recognize common release failures, including mutable links and incomplete access details.

Why a Release Must Identify One Exact Artifact

A model can be well documented and still be difficult to share reliably. A repository may change after a link is cited; a package may contain several model versions; or a reader may find the code but not the inputs and instructions needed to identify the intended release. A useful release therefore does more than make files available. It establishes which snapshot is being shared, what permissions apply, how to retrieve it, and how to cite that exact snapshot.

The focus here is the release and its identification, not a new assessment of model validity. Earlier material on project layout, provenance, model exchange, simulation protocols, packaging, and regression tests supplies useful inputs to a release. Those elements do not, by themselves, make a release citable: the cited object still needs an identifiable version, access route, and citation.

Definition: A model release is a deliberately prepared, versioned snapshot of a defined set of model-related materials, accompanied by the information needed to identify, access, use, and cite that snapshot. The release boundary states which materials are included, such as model files, simulation protocols, code, selected inputs, documentation, and test results. A repository that continues to change is not, by itself, a fixed release.

A release should be scoped to its intended use. For example, a model-only release may include equations and parameter definitions but not data or executable simulation code. A computational release may also include code, protocols, and test fixtures. State the boundary rather than allowing users to infer it from a folder name. If an essential component cannot be redistributed, say what is omitted and provide a lawful access route if one exists.

Before preparing a public or restricted release, check that the materials can be shared under the stated conditions. Permissions may differ across model code, documentation, datasets, and third-party components. A license attached to one component does not automatically grant rights to every other component in the package. For restricted materials, specify who may request access, what conditions apply, and where the request should be sent. This is a practical release check, not a substitute for the relevant institutional or legal review.

Build the Release Record

A useful release record answers five questions: what is this artifact, which version is it, what changed, how can it be obtained, and how should it be cited? The answers should be available alongside the snapshot, not only in a project discussion or an author’s memory.

1
Define the contents.
List the included model files and supporting materials, and name important exclusions. Make the release boundary clear enough that a user can tell whether a missing dataset or dependency is intentional.
2
Freeze and label a snapshot.
Assign a release version and preserve the released files as a fixed snapshot. A version label is useful only when it can be connected to the actual snapshot, for example through a repository release, a permanent archive record, or a recorded commit identifier.
3
Record permissions and access.
State the license for each relevant component or group of components. Give a working route to the snapshot, along with any access conditions, retrieval steps, and contact information for restricted materials.
4
Document changes and cite the release.
Summarize changes relative to the prior release and provide a citation containing enough detail to distinguish this snapshot from other versions of the model.
5
Test identification from outside the project.
Ask someone who did not prepare the release to retrieve it, find the version and citation, and determine which files belong to the released artifact. Fix ambiguities before describing the release as shareable.

Version numbers are a convenient label, not proof of immutability. A project may use semantic versioning, where a version has major, minor, and patch components, but the project should state its chosen convention and apply it consistently. For example, if a team follows the common convention, a patch increment signals a backward-compatible correction, a minor increment adds backward-compatible functionality, and a major increment signals an incompatible change. These labels do not replace a changelog or an identifier tied to the snapshot.

A permanent identifier, such as a DOI assigned to an archived release, can provide a stable citation target when the repository or archive preserves that release. A commit identifier can distinguish a particular repository state, but a commit alone may not provide durable access or explain how to use the files. A checksum can help verify that a downloaded file matches a published file, but it does not establish authorship, permissions, or scientific correctness. These mechanisms serve different purposes and can be used together.

Worked Example: Distinguishing a Snapshot From a Moving Repository

A hypothetical team has a public QSP repository with a changing default branch. It prepares release 2.1.0 containing a model definition, simulation protocol, documentation, and regression-test results. The archived package has a permanent record, and the team records the repository commit used to create it.

The repository’s main page is not enough to identify release 2.1.0: its contents can change after a reader follows the link. The release record therefore gives the version, the archive link, and the commit identifier. It also lists the included files and states that a separately licensed input dataset is not included.

Suppose the release archive is 8.40 MB, and the published checksum is a hypothetical SHA-256 value. A user downloads an 8.40 MB package and computes the checksum. If the computed value matches the published value, this supports the conclusion that the downloaded bytes match the referenced package. It does not show that the package is scientifically valid or that its license permits every intended use.

The release is identifiable if another group can retrieve the archived snapshot and verify that its version and contents correspond to the release record. The moving repository remains useful for ongoing development, but the release archive—not the current repository state—is the object to cite for work based on version 2.1.0.

Licenses, Changelogs, and Citation Details

A license tells users what uses are permitted and what obligations apply. Avoid vague labels such as “free to use” when the actual terms matter. Name the license and make its text accessible. Where materials have different terms, make the mapping explicit: for example, model code under one license, documentation under another, and input data available only under specified conditions. If no permission to redistribute a component has been obtained, do not imply that the package license covers it.

A changelog should let a user understand why two releases differ. Record the release date, the version, and changes that affect interpretation or use: altered equations, parameter values, initial conditions, units, solver-relevant implementation, simulation protocols, dependencies, or known limitations. Distinguish corrections from new capabilities where useful. “Updated model” is not informative enough to show whether an earlier result can still be reproduced. A changelog summarizes; it does not replace the detailed model documentation or provenance record.

A release citation should identify the released object rather than merely point to the project homepage. Include the responsible authors or group, release title, version, year or release date, repository or archive, and a persistent identifier or stable release URL when available. Use the citation format required by the relevant journal or organization, but preserve the version and identifier even if punctuation or ordering changes. If the model release and an associated publication are both relevant, cite both: a paper describing the model is not automatically a citation for a particular executable snapshot.

Worked Example: Writing a Release-Specific Citation

Suppose a hypothetical consortium releases a package titled “Inflammation QSP Model,” version 1.4.2, in 2026. The release has an archive record with the hypothetical DOI 10.5555/qsp.2026.142. The consortium wants readers to identify this exact package rather than the changing development repository.

A release-specific citation could be written as: “Nguyen, T., Patel, R., and the Inflammation Modeling Consortium. Inflammation QSP Model (version 1.4.2). 2026. Archive record: https://doi.org/10.5555/qsp.2026.142.”

The key identifying details are the named creators, release title, version, year, and persistent identifier. In a real release, the DOI and URL must resolve to the actual archived artifact; the example identifier here is hypothetical. A citation to “Inflammation QSP Model repository” would be weaker because it does not say which version was used. If a publication describes the model’s scientific rationale, cite that publication separately rather than substituting it for the release citation.

Check Whether Another Group Can Identify It

A practical release test is to give an independent reader only the citation and access instructions. Ask them to find the artifact, determine its version, see what is included, locate its license and changelog, and identify the exact citation they should use. This tests whether the release record works for someone outside the project’s internal context.

A release has an identification problem if two users following the same citation could reasonably retrieve different snapshots, or if they cannot tell which snapshot the citation names. Examples include an unversioned repository URL, a release tag that can be moved without notice, a citation with no version when multiple versions are available, or an archive page that does not specify which files belong to the release. Where possible, use an archived snapshot with a persistent identifier and retain a version or commit link as additional detail.

Access instructions should be tested as well. A public link should lead to the release rather than a generic landing page with no clear route. A restricted release should specify how to request access, eligibility conditions, and a contact route that is expected to remain usable. If access requires a particular software environment or download sequence, state that requirement and point to the relevant documentation. Do not claim that a release is fully accessible if a necessary component is unavailable and no route to obtain it is described.

Release approachStrengthLimitation to manage
Changing repository URLConvenient for browsing current developmentDoes not, by itself, identify a fixed snapshot
Version tag or commit identifierCan distinguish a repository stateMay not provide long-term access, documentation, or an archive
Archived release with persistent identifierSupports stable retrieval and release-specific citationStill requires clear contents, licensing, and usable access instructions
Checksums for release filesHelp detect whether retrieved bytes match the published filesDo not establish identity, permission, provenance, or scientific validity on their own

A Short Justification for the Identification Check

The reason to test retrieval from the citation is straightforward. Let a citation and its access instructions be the information available to an external reader. If those details identify one preserved snapshot, then the reader can distinguish that artifact from later or earlier states. If the same details lead to a changing repository, or leave the version unspecified, the artifact is underdetermined: the reader cannot know which state the citation denotes. Thus, stable identification requires both a distinguishable release label and a route that resolves to the corresponding preserved contents. A checksum can strengthen the file-level comparison after retrieval, but cannot repair an ambiguous citation or missing access route.

Worked Example: Diagnosing an Ambiguous Release

A report cites “Cytokine QSP model, project repository, accessed 12 May 2026.” The repository contains tags 1.0.0 and 1.1.0, and its default branch has since changed. The report does not name a version, commit, or archive record.

The access date narrows when the repository was viewed but does not identify the exact files used. Another group cannot establish from this citation whether the report used version 1.0.0, version 1.1.0, or an untagged state of the default branch. The citation is therefore insufficient to identify an exact artifact.

To correct the record, the authors should identify the actual snapshot used—for example, version 1.1.0 and its archived release identifier—and update the citation and access instructions. If they cannot determine which snapshot produced the reported work, they should state that limitation rather than infer a version from the current repository. A new release cannot retrospectively resolve that uncertainty unless its contents are demonstrably the same as the original snapshot.

Common Pitfalls and Limitations

  • Treating a project page as a release citation. A project page may point to the latest files, which can change. Cite the versioned snapshot and use the project page only as additional context.
  • Assuming a version label guarantees a frozen release. A label such as “2.0” is useful only if it is tied to preserved contents. Record a release archive or immutable identifier and avoid silently replacing released files.
  • Using one license statement for everything. Code, data, documentation, and third-party materials may have distinct terms. Identify those differences and do not claim permission that has not been granted.
  • Overstating what a checksum proves. A matching checksum supports byte-for-byte identity with a reference file; it does not establish that the file is correct, safe, licensed, or scientifically qualified.
  • Assuming release means reproducibility or validity. A well-identified artifact is easier to inspect and cite, but that does not itself demonstrate that its simulations reproduce prior results or that its predictions are valid for a particular use.

Even a careful release has limits. Long-term access depends on repositories, archives, and institutions maintaining their services. Dependencies may become unavailable, restricted data may prevent full execution, and a citation cannot summarize every scientific assumption. Clear scope and access statements make these constraints visible; they do not eliminate them.

Key takeaway: A shareable QSP model release is a defined, versioned snapshot with clear permissions, a useful changelog, workable access instructions, and a citation that identifies that snapshot. The final check is practical: can an outside group retrieve and distinguish the exact artifact being cited?

Check Your Understanding

Answer each question, then compare your reasoning with the solutions.

  1. Why is a link to a changing repository usually insufficient as the only citation for a model used in an analysis?
  2. A package contains model code, documentation, and a dataset with different sharing terms. What should the release license information clarify?
  3. What can a matching checksum establish, and what can it not establish?
  4. A citation names a release version and a persistent identifier, but the identifier leads to a page that does not distinguish the files in that release. Is the artifact fully identified? Explain.
  5. Name two checks an external reader should be able to complete using the release record.

Solutions. (1) The repository can change, so the link may lead to files different from those used; the citation should identify a preserved snapshot and its version. (2) It should map the applicable terms to the relevant components, identify restrictions or exclusions, and avoid implying that one license covers materials it does not. (3) A match supports that the downloaded bytes equal the referenced file; it does not prove authorship, licensing, scientific correctness, or validity. (4) Not fully. The identifier and version are useful, but the record must make the released contents distinguishable, for example through an archive manifest or listed files. (5) Examples include retrieving the snapshot, confirming its version and contents, locating its license and changelog, and finding the citation for that exact release.

Clinical Biostats