Skip to content
This repository was archived by the owner on Jan 21, 2026. It is now read-only.

week-5#6

Merged
t0mdavid-m merged 23 commits into
mainfrom
week-5
Jul 13, 2025
Merged

week-5#6
t0mdavid-m merged 23 commits into
mainfrom
week-5

Conversation

@achalbajpai

@achalbajpai achalbajpai commented Jul 4, 2025

Copy link
Copy Markdown
Collaborator

Closes achalbajpai/peptide-mz-tool#30
Added testing to Github Action , completed Documentation , removed files that are not needed , removed unused code and updated the README.md

Summary by CodeRabbit

  • New Features

    • Added a comprehensive GitHub Actions workflow for automated testing, including unit, integration, performance, and GUI tests across multiple Python versions and environments.
  • Documentation

    • Rewrote the README with a project-specific overview, improved citation, and references.
    • Added a detailed user guide and a comprehensive feature overview.
    • Expanded the changelog with a new section for version 1.0 and previous updates.
  • Tests

    • Refactored GUI tests to focus on the peptide calculator, documentation, and visualization pages.
    • Simplified and improved integration tests for modification consistency.
    • Removed outdated tests for subprocesses and simple workflows.
  • Chores

    • Updated workflow triggers and job naming for clarity and broader branch support.
    • Removed temporary CI-related workflow steps for Windows executable builds.
    • Added version constraints to dependencies in the Dockerfile.

@coderabbitai

coderabbitai Bot commented Jul 4, 2025

Copy link
Copy Markdown
## Walkthrough

This update introduces comprehensive documentation, revises the README for project specificity, and implements robust GitHub Actions workflows for testing. It also refactors and streamlines the GUI and integration test suites, removing obsolete tests and focusing on core peptide calculator functionality, while expanding user and feature documentation.

## Changes

| File(s)                                                                                      | Change Summary                                                                                                   |
|----------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------|
| .github/workflows/peptide-calculator-tests.yml, .github/workflows/workflow-tests.yml         | Added and updated GitHub Actions workflows for expanded and more targeted testing, including matrix and GUI tests |
| README.md                                                                                    | Rewrote README to focus on the peptide calculator tool, removing template and generic content                     |
| docs/feature_overview.md, docs/new.md, docs/user_guide.md                                    | Added or expanded detailed documentation: feature overview, changelog, and comprehensive user guide               |
| content/visualization.py                                                                     | Implemented a Streamlit visualization page with a main function and development notice                           |
| test_gui.py                                                                                  | Refactored GUI tests to focus on calculator, docs, and visualization; removed or simplified other page tests      |
| tests/test_integration_comprehensive.py                                                      | Simplified and refactored modification list consistency test                                                      |
| tests/test_run_subprocess.py, tests/test_simple_workflow.py                                  | Deleted test files for removed or obsolete workflow/subprocess features                                           |
| .github/workflows/build-windows-executable-app.yaml                                         | Removed temporary CI-related CMake files checkout step                                                           |
| Dockerfile                                                                                   | Added version constraint for autowrap package in pip install command                                             |

## Sequence Diagram(s)

```mermaid
sequenceDiagram
    participant User
    participant GitHub
    participant ActionsRunner
    participant TestSuite

    User->>GitHub: Push or PR to main/week-* branch
    GitHub->>ActionsRunner: Trigger peptide-calculator-tests workflow
    ActionsRunner->>TestSuite: Run peptide and functional tests
    TestSuite-->>ActionsRunner: Report results (unit, integration, GUI, web app)
    ActionsRunner-->>GitHub: Upload test artifacts and status

Assessment against linked issues

Objective Addressed Explanation
Start with documentation (#30)
Update the README (#30)
Add testing to GitHub Actions (#30)

Poem

A rabbit hopped through docs and code,
Tidied tests on every road.
Workflows run with matrix flair,
The README’s fresh—no need to stare!
With guides and features, clear and bright,
The peptide tool now shines just right.
🐇✨


<!-- walkthrough_end -->


---

<details>
<summary>📜 Recent review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**


<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 5fa66d01745809cf2aa8e54053a6795af91d6b3c and eee0832df79fe6ede0ba65daf434549f0513dc2c.

</details>

<details>
<summary>📒 Files selected for processing (1)</summary>

* `.github/workflows/build-windows-executable-app.yaml` (2 hunks)

</details>

<details>
<summary>🚧 Files skipped from review as they are similar to previous changes (1)</summary>

* .github/workflows/build-windows-executable-app.yaml

</details>

<details>
<summary>⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (5)</summary>

* GitHub Check: functional-tests
* GitHub Check: build-simple-app
* GitHub Check: build-full-app
* GitHub Check: build-openms
* GitHub Check: test (ubuntu-latest, 3.11)

</details>

</details>
<!-- internal state start -->


<!-- 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 -->

<!-- internal state end -->
<!-- tips_start -->

---

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

<details>
<summary>❤️ Share</summary>

- [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai)
- [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai)
- [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai)
- [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)

</details>

<details>
<summary>🪧 Tips</summary>

### Chat

There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai?utm_source=oss&utm_medium=github&utm_campaign=OpenMS/mz-calculator&utm_content=6):

- Review comments: Directly reply to a review comment made by CodeRabbit. Example:
  - `I pushed a fix in commit <commit_id>, please review it.`
  - `Explain this complex logic.`
  - `Open a follow-up GitHub issue for this discussion.`
- Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples:
  - `@coderabbitai explain this code block.`
  -	`@coderabbitai modularize this function.`
- PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
  - `@coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.`
  - `@coderabbitai read src/utils.ts and explain its main purpose.`
  - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.`
  - `@coderabbitai help me debug CodeRabbit configuration file.`

### Support

Need help? Create a ticket on our [support page](https://www.coderabbit.ai/contact-us/support) for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

### CodeRabbit Commands (Invoked using PR comments)

- `@coderabbitai pause` to pause the reviews on a PR.
- `@coderabbitai resume` to resume the paused reviews.
- `@coderabbitai review` to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
- `@coderabbitai full review` to do a full review from scratch and review all the files again.
- `@coderabbitai summary` to regenerate the summary of the PR.
- `@coderabbitai generate docstrings` to [generate docstrings](https://docs.coderabbit.ai/finishing-touches/docstrings) for this PR.
- `@coderabbitai generate sequence diagram` to generate a sequence diagram of the changes in this PR.
- `@coderabbitai resolve` resolve all the CodeRabbit review comments.
- `@coderabbitai configuration` to show the current CodeRabbit configuration for the repository.
- `@coderabbitai help` to get help.

### Other keywords and placeholders

- Add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed.
- Add `@coderabbitai summary` to generate the high-level summary at a specific location in the PR description.
- Add `@coderabbitai` anywhere in the PR title to generate the title automatically.

### CodeRabbit Configuration File (`.coderabbit.yaml`)

- You can programmatically configure CodeRabbit by adding a `.coderabbit.yaml` file to the root of your repository.
- Please see the [configuration documentation](https://docs.coderabbit.ai/guides/configure-coderabbit) for more information.
- If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: `# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json`

### Documentation and Community

- Visit our [Documentation](https://docs.coderabbit.ai) for detailed information on how to use CodeRabbit.
- Join our [Discord Community](http://discord.gg/coderabbit) to get help, request features, and share feedback.
- Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.

</details>

<!-- tips_end -->

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (9)
README.md (2)

20-24: Add language specification to fenced code block.

The citation code block should specify a language for proper markdown formatting.

-```
+```bibtex
 Müller, T. D., Siraj, A., et al. OpenMS WebApps: Building User-Friendly Solutions for MS Analysis. 
 Journal of Proteome Research (2025). 
 https://doi.org/10.1021/acs.jproteome.4c00872

---

`30-32`: **Format URLs properly to avoid bare URL markdown violations.**

The references section contains bare URLs that should be properly formatted according to markdown best practices.


```diff
-1. **Pfeuffer, J., Bielow, C., Wein, S. et al.** (2024). OpenMS 3 enables reproducible analysis of large-scale mass spectrometry data. *Nature Methods*, 21, 365–367. https://doi.org/10.1038/s41592-024-02197-7
+1. **Pfeuffer, J., Bielow, C., Wein, S. et al.** (2024). OpenMS 3 enables reproducible analysis of large-scale mass spectrometry data. *Nature Methods*, 21, 365–367. [DOI](https://doi.org/10.1038/s41592-024-02197-7)

-2. **Röst, H. L., Schmitt, U., Aebersold, R., & Malmström, L.** (2014). pyOpenMS: a Python-based interface to the OpenMS mass-spectrometry algorithm library. *Proteomics*, 14(1), 74-77. https://doi.org/10.1002/pmic.201300246 | PubMed: [24420968](https://pubmed.ncbi.nlm.nih.gov/24420968/)
+2. **Röst, H. L., Schmitt, U., Aebersold, R., & Malmström, L.** (2014). pyOpenMS: a Python-based interface to the OpenMS mass-spectrometry algorithm library. *Proteomics*, 14(1), 74-77. [DOI](https://doi.org/10.1002/pmic.201300246) | PubMed: [24420968](https://pubmed.ncbi.nlm.nih.gov/24420968/)
content/visualization.py (1)

8-8: Remove unused import to clean up the code.

The v_space function is imported but never used in this file.

-from src.common.common import page_setup, v_space
+from src.common.common import page_setup
.github/workflows/workflow-tests.yml (1)

32-32: Add missing newline at end of file.

YAMLlint flagged a missing newline character at the end of the file.

        PYTHONPATH: .
+
docs/user_guide.md (1)

27-31: Consider adding language specifications to code blocks.

Adding language specifications to the fenced code blocks would improve syntax highlighting and readability.

For example:

-```
+```text
PEPTIDE
STREAMLIT
ALSSCVVDEEQDVER

Also applies to: 36-41, 44-48, 51-56, 61-64, 67-70, 73-77, 120-123, 126-129, 132-135

.github/workflows/peptide-calculator-tests.yml (3)

6-6: Remove trailing spaces throughout the file.

YAMLlint flagged multiple lines with trailing spaces that should be cleaned up.

Run the following command to remove trailing spaces:

sed -i 's/[[:space:]]*$//' .github/workflows/peptide-calculator-tests.yml

Also applies to: 24-24, 28-28, 33-33, 41-41, 47-47, 56-56, 62-62, 68-68, 74-74, 82-82, 91-91, 101-101, 108-108, 116-116, 123-123, 128-128, 133-133, 136-136, 143-143, 153-153, 163-163, 173-173, 176-176, 181-181, 197-197, 202-202, 210-210, 216-216, 222-222, 225-225, 228-228, 231-231


26-26: Fix indentation issues.

YAMLlint flagged incorrect indentation in step definitions.

-    - name: Checkout code
+      - name: Checkout code

Also applies to: 195-195


234-234: Add missing newline at end of file.

YAMLlint flagged a missing newline character at the end of the file.

        PYTHONPATH: .
+
test_gui.py (1)

27-27: Fix spacing before inline comment.

Flake8 requires at least two spaces before inline comments.

-        "content/visualization.py", # Visualization page
+        "content/visualization.py",  # Visualization page
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f5a0e92 and ccecb65.

📒 Files selected for processing (11)
  • .github/workflows/peptide-calculator-tests.yml (1 hunks)
  • .github/workflows/workflow-tests.yml (2 hunks)
  • README.md (1 hunks)
  • content/visualization.py (1 hunks)
  • docs/feature_overview.md (1 hunks)
  • docs/new.md (1 hunks)
  • docs/user_guide.md (1 hunks)
  • test_gui.py (3 hunks)
  • tests/test_integration_comprehensive.py (1 hunks)
  • tests/test_run_subprocess.py (0 hunks)
  • tests/test_simple_workflow.py (0 hunks)
💤 Files with no reviewable changes (2)
  • tests/test_run_subprocess.py
  • tests/test_simple_workflow.py
🧰 Additional context used
🧬 Code Graph Analysis (1)
content/visualization.py (1)
src/common/common.py (2)
  • page_setup (116-288)
  • v_space (419-434)
🪛 Flake8 (7.2.0)
content/visualization.py

[error] 8-8: 'src.common.common.v_space' imported but unused

(F401)

test_gui.py

[error] 27-27: at least two spaces before inline comment

(E261)

🪛 Ruff (0.11.9)
content/visualization.py

8-8: src.common.common.v_space imported but unused

Remove unused import: src.common.common.v_space

(F401)

🪛 LanguageTool
docs/new.md

[uncategorized] ~9-~9: The Latin adjective/adverb “pro Forma” is spelled as two words.
Context: ...ide Calculator #### 🚀 New Features ProForma Arbitrary Mass Shifts Support - Suppo...

(PRO_RATA)


[duplication] ~9-~9: Possible typo: you repeated a word.
Context: ...tures ProForma Arbitrary Mass Shifts Support - Support for arbitrary mass deltas in ProForma f...

(ENGLISH_WORD_REPEAT_RULE)


[uncategorized] ~10-~10: The Latin adjective/adverb “pro Forma” is spelled as two words.
Context: ... - Support for arbitrary mass deltas in ProForma format - Examples: PEPTIDE[+15.9949],...

(PRO_RATA)


[uncategorized] ~36-~36: The Latin adjective/adverb “pro Forma” is spelled as two words.
Context: ... Engine** - Direct pyOpenMS parsing for ProForma sequences - Fallback parsing for comple...

(PRO_RATA)

docs/feature_overview.md

[uncategorized] ~24-~24: The Latin adjective/adverb “pro Forma” is spelled as two words.
Context: ...OD Standard**: C[UNIMOD:4]PEPTIDE - ProForma Mass Deltas: PEPTIDE[+15.9949] - **...

(PRO_RATA)


[uncategorized] ~50-~50: The Latin adjective/adverb “pro Forma” is spelled as two words.
Context: ...Parsing** - Direct pyOpenMS parsing for ProForma sequences - Fallback parsing for comple...

(PRO_RATA)


[uncategorized] ~115-~115: The Latin adjective/adverb “pro Forma” is spelled as two words.
Context: ...+ example sequences with descriptions - ProForma notation examples - UNIMOD reference ex...

(PRO_RATA)


[uncategorized] ~121-~121: The Latin adjective/adverb “pro Forma” is spelled as two words.
Context: ...strations ## Advanced Features ### 🧪 ProForma Support Arbitrary Mass Shifts - Su...

(PRO_RATA)


[uncategorized] ~129-~129: The Latin adjective/adverb “pro Forma” is spelled as two words.
Context: ...lexible positioning (any amino acid) ProForma Compliance - PSI-MS ProForma notation...

(PRO_RATA)


[uncategorized] ~130-~130: The Latin adjective/adverb “pro Forma” is spelled as two words.
Context: ...acid) ProForma Compliance - PSI-MS ProForma notation standard - Direct pyOpenMS par...

(PRO_RATA)


[uncategorized] ~222-~222: The Latin adjective/adverb “pro Forma” is spelled as two words.
Context: ...standard modification database - PSI-MS ProForma notation compliance - OpenMS calculatio...

(PRO_RATA)

docs/user_guide.md

[uncategorized] ~50-~50: The Latin adjective/adverb “pro Forma” is spelled as two words.
Context: ... # UNIMOD:1 = Acetyl (N-term) #### ProForma Arbitrary Mass Shifts PEPTIDE[+15.9...

(PRO_RATA)


[uncategorized] ~174-~174: The Latin adjective/adverb “pro Forma” is spelled as two words.
Context: ...ds synchronize with sequence notation - ProForma arbitrary mass shifts provide maximum f...

(PRO_RATA)


[uncategorized] ~187-~187: The Latin adjective/adverb “pro Forma” is spelled as two words.
Context: ...07276466879 Da ### Supported Formats - ProForma notation (partial support) - UNIMOD sta...

(PRO_RATA)

🪛 markdownlint-cli2 (0.17.2)
docs/new.md

9-9: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


15-15: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


21-21: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


27-27: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


35-35: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


41-41: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


47-47: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


55-55: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


61-61: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


67-67: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


75-75: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


81-81: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


91-91: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


97-97: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


107-107: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)

README.md

20-20: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


30-30: Bare URL used

(MD034, no-bare-urls)


32-32: Bare URL used

(MD034, no-bare-urls)

docs/feature_overview.md

7-7: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


13-13: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


21-21: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


27-27: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


33-33: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


43-43: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


49-49: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


57-57: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


63-63: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


73-73: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


79-79: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


87-87: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


93-93: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


99-99: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


107-107: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


113-113: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


123-123: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


129-129: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


137-137: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


143-143: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


151-151: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


157-157: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


167-167: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


173-173: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


181-181: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


189-189: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


199-199: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


206-206: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


214-214: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


220-220: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)

docs/user_guide.md

27-27: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


36-36: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


44-44: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


51-51: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


61-61: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


67-67: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


73-73: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


120-120: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


126-126: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


132-132: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🪛 YAMLlint (1.37.1)
.github/workflows/workflow-tests.yml

[error] 32-32: no new line character at the end of file

(new-line-at-end-of-file)

.github/workflows/peptide-calculator-tests.yml

[error] 6-6: trailing spaces

(trailing-spaces)


[error] 24-24: trailing spaces

(trailing-spaces)


[warning] 26-26: wrong indentation: expected 6 but found 4

(indentation)


[error] 28-28: trailing spaces

(trailing-spaces)


[error] 33-33: trailing spaces

(trailing-spaces)


[error] 41-41: trailing spaces

(trailing-spaces)


[error] 47-47: trailing spaces

(trailing-spaces)


[error] 56-56: trailing spaces

(trailing-spaces)


[error] 62-62: trailing spaces

(trailing-spaces)


[error] 68-68: trailing spaces

(trailing-spaces)


[error] 74-74: trailing spaces

(trailing-spaces)


[error] 82-82: trailing spaces

(trailing-spaces)


[error] 91-91: trailing spaces

(trailing-spaces)


[error] 101-101: trailing spaces

(trailing-spaces)


[error] 108-108: trailing spaces

(trailing-spaces)


[error] 116-116: trailing spaces

(trailing-spaces)


[error] 123-123: trailing spaces

(trailing-spaces)


[error] 128-128: trailing spaces

(trailing-spaces)


[error] 133-133: trailing spaces

(trailing-spaces)


[error] 136-136: trailing spaces

(trailing-spaces)


[error] 143-143: trailing spaces

(trailing-spaces)


[error] 153-153: trailing spaces

(trailing-spaces)


[error] 163-163: trailing spaces

(trailing-spaces)


[error] 173-173: trailing spaces

(trailing-spaces)


[error] 176-176: trailing spaces

(trailing-spaces)


[error] 181-181: trailing spaces

(trailing-spaces)


[warning] 195-195: wrong indentation: expected 6 but found 4

(indentation)


[error] 197-197: trailing spaces

(trailing-spaces)


[error] 202-202: trailing spaces

(trailing-spaces)


[error] 210-210: trailing spaces

(trailing-spaces)


[error] 216-216: trailing spaces

(trailing-spaces)


[error] 222-222: trailing spaces

(trailing-spaces)


[error] 225-225: trailing spaces

(trailing-spaces)


[error] 228-228: trailing spaces

(trailing-spaces)


[error] 231-231: trailing spaces

(trailing-spaces)


[error] 234-234: no new line character at the end of file

(new-line-at-end-of-file)

🪛 actionlint (1.7.7)
.github/workflows/peptide-calculator-tests.yml

30-30: the runner of "actions/setup-python@v4" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)


35-35: the runner of "actions/cache@v3" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)


199-199: the runner of "actions/setup-python@v4" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)

⏰ Context from checks skipped due to timeout of 90000ms (4)
  • GitHub Check: functional-tests
  • GitHub Check: build-simple-app
  • GitHub Check: build-full-app
  • GitHub Check: build-openms
🔇 Additional comments (14)
README.md (1)

2-11: Excellent visual presentation setup!

The centered logo, title, and navigation links create a professional and polished project introduction. The HTML formatting is clean and appropriate for a project README.

content/visualization.py (1)

11-22: Well-structured Streamlit page implementation!

The main function follows good Streamlit practices with proper page setup, clear title, and informative user feedback about the development status.

docs/new.md (1)

1-113: Comprehensive and well-structured changelog!

This document provides excellent documentation of the software's evolution and new features. The detailed descriptions of ProForma support, UNIMOD integration, and technical improvements are very helpful for users and developers.

Note: The static analysis tool incorrectly flags "ProForma" as incorrect spelling - this is actually the correct terminology for the PSI-MS ProForma notation standard.

docs/feature_overview.md (1)

1-225: Outstanding comprehensive feature documentation!

This document provides an excellent overview of the peptide calculator's capabilities, covering technical architecture, user interface features, and quality assurance measures. The structured approach from core functionality through advanced features makes it highly accessible for both users and developers.

Note: The static analysis tool incorrectly flags "ProForma" as incorrect spelling - this is the correct terminology for the PSI-MS ProForma notation standard used in mass spectrometry.

tests/test_integration_comprehensive.py (1)

209-222: Good test refactoring for improved robustness!

The simplified validation approach makes the test more reliable by focusing on essential structure validation rather than detailed assertions that might be brittle in mocked environments. This change improves test maintainability while preserving the core validation logic.

.github/workflows/workflow-tests.yml (3)

5-5: Good enhancement to support weekly development branches.

The addition of "week-*" pattern to trigger branches aligns well with the development workflow mentioned in the PR objectives.


10-10: Improved job naming for clarity.

Changing the job name from "build" to "test" better reflects the actual purpose of this workflow.


23-32: Enhanced test execution with proper environment setup.

The changes improve the testing setup by:

  • Running all tests in the tests/ directory for broader coverage
  • Adding PYTHONPATH environment variable for proper module imports
  • Using verbose output for better debugging
docs/user_guide.md (2)

1-191: Excellent comprehensive user guide.

This documentation provides thorough coverage of all peptide calculator features including:

  • Multiple input formats and notation systems
  • Detailed modification support
  • Charge state handling
  • Advanced features and troubleshooting
  • Technical implementation details

The structure is logical and user-friendly, making it easy for users to find relevant information.


50-50: "ProForma" is correct terminology.

The LanguageTool suggestions to change "ProForma" to "pro Forma" should be ignored. ProForma is the standard term in proteomics and bioinformatics for this notation format.

Also applies to: 174-174, 187-187

.github/workflows/peptide-calculator-tests.yml (1)

1-234: Excellent comprehensive testing workflow.

This workflow provides thorough testing coverage with:

  • Matrix testing across Python versions
  • Unit, integration, and performance tests
  • Edge case and error handling validation
  • Advanced notation support testing (ProForma, UNIMOD)
  • GUI and functional testing
  • Coverage reporting and artifact upload

The structure is well-organized and the inline Python scripts effectively test edge cases and performance.

test_gui.py (3)

22-35: Good refactoring to focus on core pages.

The simplified parameterization focuses on the three main pages (peptide calculator, documentation, visualization) which aligns with the project's core functionality.


54-96: Excellent peptide calculator testing approach.

The new tests effectively simulate user interaction by:

  • Checking for presence of UI elements
  • Setting input values for sequence and charge
  • Triggering calculations via button clicks
  • Verifying no exceptions occur

This provides good coverage of the user workflow.


98-103: Good addition of visualization page testing.

The new visualization page test ensures this important component loads without errors.

Comment thread .github/workflows/peptide-calculator-tests.yml
@t0mdavid-m

Copy link
Copy Markdown
Member

All your changes look good to me. Tests seem to be running fine.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 3788f28 and 9e5a291.

📒 Files selected for processing (1)
  • Dockerfile (1 hunks)
🧰 Additional context used
🪛 Hadolint (2.12.0)
Dockerfile

[error] 61-61: Ensure the shebang uses an absolute path to the interpreter.

(SC2239)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (8)
  • GitHub Check: test
  • GitHub Check: build-simple-app
  • GitHub Check: build-openms
  • GitHub Check: build-full-app
  • GitHub Check: peptide-tests (3.10)
  • GitHub Check: peptide-tests (3.11)
  • GitHub Check: test (ubuntu-latest, 3.11)
  • GitHub Check: test

Comment thread Dockerfile Outdated
# Install up-to-date cmake via mamba and packages for pyOpenMS build.
RUN mamba install cmake
RUN pip install --upgrade pip && python -m pip install -U setuptools nose 'cython<3.1' autowrap pandas numpy pytest
RUN pip install --upgrade pip && python -m pip install -U setuptools nose cython autowrap pandas numpy pytest

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Unpinned cython risks non-reproducible builds and future breakages

cython is now installed without any version bound. Several downstream projects—including pyOpenMS—have broken with major Cython updates in the past. A future rebuild could fail or produce subtly different binaries.

Consider pinning to the currently validated version (or at least capping the major/minor) and use --no-cache-dir to keep the layer slim:

-RUN pip install --upgrade pip && python -m pip install -U setuptools nose cython autowrap pandas numpy pytest
+RUN pip install --upgrade pip && \
+    python -m pip install --no-cache-dir -U \
+        setuptools \
+        nose \
+        'cython<3.1' \
+        autowrap \
+        pandas \
+        numpy \
+        pytest

If the intent is to stay on the bleeding edge, add CI that rebuilds the image on every Cython release to surface incompatibilities early.


🏁 Script executed:

#!/bin/bash
# Search for any Cython references or version pins in the repository
rg -n "cython" --color=never
rg -n "cython<" --color=never
rg -n "cython==" --color=never

Length of output: 215


Pin Cython to a specific version range to ensure reproducible builds

Installing Cython without any version bounds may lead to future rebuild failures or subtly different binaries when a new major release ships. Pin it to the currently validated version (e.g. <3.1) and use --no-cache-dir to keep the image layer slim.

Locations to update:

  • Dockerfile: line 61

Suggested diff:

-RUN pip install --upgrade pip && python -m pip install -U setuptools nose cython autowrap pandas numpy pytest
+RUN pip install --upgrade pip && \
+    python -m pip install --no-cache-dir -U \
+        setuptools \
+        nose \
+        'cython<3.1' \
+        autowrap \
+        pandas \
+        numpy \
+        pytest

Optionally, add CI automation to rebuild this image on every Cython release to surface any incompatibilities early.

🧰 Tools
🪛 Hadolint (2.12.0)

[error] 61-61: Ensure the shebang uses an absolute path to the interpreter.

(SC2239)

🤖 Prompt for AI Agents
In Dockerfile at line 61, the Cython package is installed without a version
constraint, risking future build inconsistencies. Modify the pip install command
to pin Cython to a version less than 3.1 by specifying 'cython<3.1'. Also, add
the '--no-cache-dir' option to the pip install command to reduce image size by
preventing cache storage during installation.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

♻️ Duplicate comments (1)
Dockerfile (1)

61-61: Un-pinned cython re-introduces the reproducibility risk flagged earlier
This exact issue was raised in a prior review and is still unresolved. Pin or cap the version ('cython<3.1') to avoid future breakages when Cython 3.x.y ships.

-RUN pip install --upgrade pip && python -m pip install -U setuptools nose cython autowrap pandas numpy pytest
+RUN pip install --upgrade pip && \
+    python -m pip install --no-cache-dir -U \
+        setuptools \
+        nose \
+        'cython<3.1' \
+        autowrap \
+        pandas \
+        numpy \
+        pytest
🧹 Nitpick comments (1)
.github/workflows/build-windows-executable-app.yaml (1)

16-16: Remove trailing whitespace to satisfy linting

Hadolint/YAML-lint is objecting to the stray space after 3.4.0.

-  OPENMS_VERSION: 3.4.0  
+  OPENMS_VERSION: 3.4.0
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 9e5a291 and 95e369b.

📒 Files selected for processing (2)
  • .github/workflows/build-windows-executable-app.yaml (1 hunks)
  • Dockerfile (2 hunks)
🧰 Additional context used
🪛 YAMLlint (1.37.1)
.github/workflows/build-windows-executable-app.yaml

[error] 16-16: trailing spaces

(trailing-spaces)

🪛 Hadolint (2.12.0)
Dockerfile

[error] 61-61: Ensure the shebang uses an absolute path to the interpreter.

(SC2239)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (5)
  • GitHub Check: functional-tests
  • GitHub Check: build-simple-app
  • GitHub Check: build-full-app
  • GitHub Check: build-openms
  • GitHub Check: test (ubuntu-latest, 3.11)
🔇 Additional comments (1)
Dockerfile (1)

12-12: Verify that release/3.4.0 exists and compiles cleanly

Jumping two minor releases can introduce API/ABI changes in OpenMS and its contrib. Please confirm that release/3.4.0 is available on GitHub and that downstream build steps (TOPP, pyOpenMS) still succeed on CI.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

♻️ Duplicate comments (1)
Dockerfile (1)

61-61: Unpinned cython re-introduces the non-reproducible build risk
This line drops the <3.1 pin that was discussed in an earlier review. Future Cython releases have repeatedly broken pyOpenMS; the image could fail on the next rebuild.

-RUN pip install --upgrade pip && python -m pip install -U setuptools nose cython autowrap pandas numpy pytest
+RUN pip install --upgrade pip && \
+    python -m pip install --no-cache-dir -U \
+        setuptools \
+        nose \
+        'cython<3.1' \
+        autowrap \
+        pandas \
+        numpy \
+        pytest
🧹 Nitpick comments (1)
.github/workflows/build-windows-executable-app.yaml (1)

16-16: Trim the trailing space to keep YAML lint-clean

Line 16 has a stray space after 3.3.0, flagged by yamllint.

-  OPENMS_VERSION: 3.3.0␠
+  OPENMS_VERSION: 3.3.0
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 95e369b and 50049ec.

📒 Files selected for processing (2)
  • .github/workflows/build-windows-executable-app.yaml (1 hunks)
  • Dockerfile (2 hunks)
🧰 Additional context used
🪛 YAMLlint (1.37.1)
.github/workflows/build-windows-executable-app.yaml

[error] 16-16: trailing spaces

(trailing-spaces)

🪛 Hadolint (2.12.0)
Dockerfile

[error] 61-61: Ensure the shebang uses an absolute path to the interpreter.

(SC2239)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (5)
  • GitHub Check: functional-tests
  • GitHub Check: build-full-app
  • GitHub Check: build-simple-app
  • GitHub Check: build-openms
  • GitHub Check: test (ubuntu-latest, 3.11)
🔇 Additional comments (1)
Dockerfile (1)

12-12: Verify that release/3.3.0 exists and builds cleanly

Jumping a full minor OpenMS release can introduce ABI changes that break the downstream pyOpenMS build. Please double-check that the branch/tag release/3.3.0 is present upstream and that the CI matrix covers this bump (Linux, Windows, macOS) before merging.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
Dockerfile (1)

61-61: Consider adding --no-cache-dir and multi-line continuation to slim the layer

Great job pinning cython and autowrap. To finish the optimisation originally suggested, add --no-cache-dir and break the long pip invocation across lines to keep the image slim and readable:

-RUN pip install --upgrade pip && python -m pip install -U setuptools nose 'cython<3.1' 'autowrap<0.23' pandas numpy pytest
+RUN pip install --no-cache-dir --upgrade pip && \
+    python -m pip install --no-cache-dir -U \
+        setuptools \
+        nose \
+        'cython<3.1' \
+        'autowrap<0.23' \
+        pandas \
+        numpy \
+        pytest

This prevents pip’s wheel/cache residue from bloating the intermediate layer and enhances readability for future maintenance.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 50049ec and 5fa66d0.

📒 Files selected for processing (2)
  • .github/workflows/build-windows-executable-app.yaml (1 hunks)
  • Dockerfile (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • .github/workflows/build-windows-executable-app.yaml
🧰 Additional context used
🪛 Hadolint (2.12.0)
Dockerfile

[error] 61-61: Ensure the shebang uses an absolute path to the interpreter.

(SC2239)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (5)
  • GitHub Check: functional-tests
  • GitHub Check: build-openms
  • GitHub Check: build-full-app
  • GitHub Check: build-simple-app
  • GitHub Check: test (ubuntu-latest, 3.11)

@t0mdavid-m t0mdavid-m merged commit 7be2370 into main Jul 13, 2025
11 checks passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

week-5

2 participants