From 62c6f9aa5fcd78f76b65ee93b99e18895349ea51 Mon Sep 17 00:00:00 2001 From: Tanush576 Date: Wed, 11 Mar 2026 13:52:33 +0530 Subject: [PATCH 1/3] feat(ui): redesign mobile footer to a responsive multi-column grid --- assets/css/styles_override.css | 214 +++++++++++++++++++++++++++------ config.yaml | 4 + layouts/partials/footer.html | 97 ++++++++------- 3 files changed, 236 insertions(+), 79 deletions(-) diff --git a/assets/css/styles_override.css b/assets/css/styles_override.css index 1c48fd7..87f6a4a 100644 --- a/assets/css/styles_override.css +++ b/assets/css/styles_override.css @@ -1,5 +1,10 @@ -#backtotop a:after { - content: "⇧"; +/* Back to top – colour override to match footer theme */ +#backtotop a { + background-color: #0b214a; + border: 2px solid rgba(255, 255, 255, 0.25); +} +#backtotop.visible a:hover { + background-color: #1a3a7a; } .hero-title-content { max-width: 1200px; @@ -43,53 +48,194 @@ } } -/* Footer */ -@media (max-width: 850px){ - .footer-column > ul.link-list { - padding-left: unset; - } +/* ============================================= + FOOTER — REDESIGN + ============================================= */ - .footer-column { - padding-left: unset; - } +.footer-redesign { + background-color: #0b214a; + color: #e2e8f0; + padding: 3rem 0 0; + font-family: inherit; } -.footer-logo-column { - display: flex; - justify-content: flex-start; - flex-direction: column; - padding: 0.5rem; +/* ---- Inner wrapper (brand + link grid) ---- */ +.footer-inner { + max-width: 1200px; + margin: 0 auto; + padding: 0 2rem 2.5rem; + display: flex; + gap: 3rem; + align-items: flex-start; } -.footer-column { - padding-left: 30px; +/* ---- Brand block ---- */ +.footer-brand { + flex: 0 0 200px; } -.social-media-icons { - display: flex; +.footer-title { + font-size: 1.75rem; + font-weight: 800; + color: #ffffff; + margin-bottom: 1.5rem; + letter-spacing: -0.3px; } -@media (max-width: 400px) { - ul { - padding-left: 0px !important; - padding-right: 30px; - } - } +/* ---- Partner logo row ---- */ +.footer-partners { + display: flex; + flex-wrap: wrap; + gap: 1.25rem; + align-items: center; + opacity: 0.7; +} + +.footer-partners a { + display: inline-flex; + align-items: center; +} + +.footer-partners img { + max-height: 36px; + width: auto; + object-fit: contain; + filter: brightness(0) invert(1); + transition: opacity 0.2s ease; +} + +.footer-partners a:hover img { + opacity: 0.85; +} + +/* ---- Link columns grid ---- */ +.footer-links { + flex: 1; + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 2rem; +} + +/* ---- Column heading ---- */ +.footer-group-heading { + font-size: 0.68rem; + font-weight: 700; + letter-spacing: 0.12em; + text-transform: uppercase; + color: rgba(255, 255, 255, 0.45); + margin: 0 0 0.875rem 0; + padding: 0; +} + +/* ---- Link list ---- */ +.footer-link-group ul { + list-style: none; + margin: 0; + padding: 0; +} + +.footer-link-group ul li a { + color: #c8d4e8; + text-decoration: none; + font-size: 0.9rem; + display: flex; + align-items: center; + min-height: 44px; + transition: color 0.2s ease; +} + +.footer-link-group ul li a:hover { + color: #ffffff; + text-decoration: underline; +} + +/* ---- Bottom bar ---- */ +.footer-bottom { + max-width: 1200px; + margin: 0 auto; + padding: 1.25rem 2rem; + border-top: 1px solid rgba(255, 255, 255, 0.1); + display: flex; + align-items: center; + justify-content: space-between; + flex-wrap: wrap; + gap: 1rem; +} -/* Icon size slightly enlargened for footer */ -#footer .social-media-icons { - font-size: 1.5em; +/* ---- Social icons ---- */ +.footer-socials { + display: flex; + gap: 0.75rem; + align-items: center; } -#footer svg.icon { - fill: #1e87f0; +.footer-socials a { + display: inline-flex; + align-items: center; + justify-content: center; + min-width: 44px; + min-height: 44px; + color: #c8d4e8; + transition: color 0.2s ease; } -/* For information ⓘ, when icon is missing */ -#footer .icon { - color: #1e87f0; +.footer-socials a:hover { + color: #ffffff; +} + +.footer-socials svg.icon { + width: 1.4rem; + height: 1.4rem; + fill: currentColor; +} + +/* ---- Copyright ---- */ +.footer-copyright { + color: rgba(255, 255, 255, 0.45); + font-size: 0.85rem; +} + +/* ============================================= + FOOTER — MOBILE (max-width: 768px) + ============================================= */ +@media (max-width: 768px) { + .footer-inner { + flex-direction: column; + gap: 2rem; + padding: 0 1.25rem 2rem; + } + + .footer-brand { + flex: unset; + width: 100%; + } + + .footer-partners { + flex-direction: row; + flex-wrap: wrap; + gap: 1rem; + } + + .footer-links { + width: 100%; + grid-template-columns: repeat(2, 1fr); + gap: 1.25rem 1rem; + } + + .footer-link-group ul li a { + text-align: left; + } + + .footer-bottom { + padding: 1.25rem; + flex-direction: column; + align-items: flex-start; + } } +/* ============================================= + UTILITIES + ============================================= */ .img-fit { - object-fit: contain; + object-fit: contain; } diff --git a/config.yaml b/config.yaml index 1f99991..475c084 100644 --- a/config.yaml +++ b/config.yaml @@ -139,6 +139,7 @@ languages: icon: discord quicklinks: column1: + heading: RESOURCES links: - text: Install link: https://openms.readthedocs.io/en/latest/about/installation.html @@ -147,6 +148,7 @@ languages: - text: Citing OpenMS link: /citing-openms column2: + heading: COMMUNITY links: - text: Community link: /communication @@ -155,6 +157,7 @@ languages: - text: Code of conduct link: /code-of-conduct column3: + heading: ABOUT links: - text: OpenMS Inc. link: /about @@ -163,6 +166,7 @@ languages: - text: Jobs link: /jobs column4: + heading: LEGAL links: - text: Terms of use link: /terms diff --git a/layouts/partials/footer.html b/layouts/partials/footer.html index 6eb5884..4ec550d 100644 --- a/layouts/partials/footer.html +++ b/layouts/partials/footer.html @@ -6,55 +6,62 @@ {{- $sponsorLogo3 := index $footer "sponsorLogo3" }} {{- $quickLinks := index $footer "quicklinks" }} {{- $socialMedia := index $footer "socialmedia" }} -{{- $logo := index $footer "logo" }} -{{- $navbarLogo := .Site.Params.navbarlogo }} - \ No newline at end of file From a9621c4799b86987c5cc3829c86c282e5c34aeb7 Mon Sep 17 00:00:00 2001 From: Tanush576 Date: Wed, 11 Mar 2026 23:17:10 +0530 Subject: [PATCH 3/3] chore: address accessibility, hierarchy, and touch target review feedback --- assets/css/styles_override.css | 7 ++++ content/en/news/gsoc2025.md | 66 +++++++++++++++++----------------- layouts/partials/footer.html | 2 +- 3 files changed, 41 insertions(+), 34 deletions(-) diff --git a/assets/css/styles_override.css b/assets/css/styles_override.css index 79eb5b9..ef8a8b8 100644 --- a/assets/css/styles_override.css +++ b/assets/css/styles_override.css @@ -102,6 +102,13 @@ min-height: 44px; } +.footer-link-group ul li a:focus-visible, +.footer-socials a:focus-visible { + color: #ffffff; + outline: 2px solid rgba(255, 255, 255, 0.45); + outline-offset: 4px; +} + .footer-partners img { max-height: 36px; width: auto; diff --git a/content/en/news/gsoc2025.md b/content/en/news/gsoc2025.md index 6876b21..2ef20be 100644 --- a/content/en/news/gsoc2025.md +++ b/content/en/news/gsoc2025.md @@ -5,7 +5,7 @@ date: 2025-01-31 summary: The OpenMS team applies as an organization for GSoC 2025 and invites the computational mass spectrometry community to join us in this effort. --- -# OpenMS Invites the Computational Mass Spectrometry Community to Join Google Summer of Code 2025! +# OpenMS Invites the Computational Mass Spectrometry Community to Join Google Summer of Code 2025! [Google Summer of Code (GSoC) 2025](https://summerofcode.withgoogle.com) OpenMS is planning to apply as an umbrella organization and we would like to extend an invitation to other projects and groups within the computational mass spectrometry and proteomics/metabolomics communities to join us in this effort. If your project aligns with the goals of GSoC and you are interested in mentoring a student project, we encourage you to submit a short proposals by **February 7th 2025 at 23:59 UTC.** @@ -13,14 +13,13 @@ summary: The OpenMS team applies as an organization for GSoC 2025 and invites th --- -## GSoC Contributors +## GSoC Contributors -- Make sure you are [eligible](https://summerofcode.withgoogle.com/get-started) to participate in GSoC 2025. +- Make sure you are [eligible](https://summerofcode.withgoogle.com/get-started) to participate in GSoC 2025. - remember the [GSOC 2025 timeline](https://developers.google.com/open-source/gsoc/timeline) - Read the [DOs and DON'Ts document](https://opensource.googleblog.com/2011/03/dos-and-donts-of-google-summer-of-code.html) to gauge your interest in participating in this year's GSoC 2025. -- remember the [GSOC 2025 timeline](https://developers.google.com/open-source/gsoc/timeline) - Review the list of themes and the projects available within. If you have specific questions about a project, our mentors are active on [Discord](https://discord.com/invite/4TAGhqJ7s5) and we will happily assist you. -- Follow our instructions below on how to submit a proposal to us. +- Follow our instructions below on how to submit a proposal to us. --- @@ -31,29 +30,29 @@ summary: The OpenMS team applies as an organization for GSoC 2025 and invites th --- -# Available Projects +## Available Projects ## Theme A) Visualization and User-Friendly Tools ### 1) Peptide m/z Calculator -**Proposed Mentors:** Arslan Siraj, Tom Müller -**Skills:** Python, Git, Streamlit +**Proposed Mentors:** Arslan Siraj, Tom Müller +**Skills:** Python, Git, Streamlit **Estimated Project Length:** 90 hours | **Difficulty:** Easy -In mass spectrometry (MS) proteomics and metabolomics, one common task is to compute the mass-to-charge (m/z) ratio of the analyte so that it can be located in a spectrum. Although the calculation is computationally simple and can easily be performed by the pyopenms package, this simple, commonly used calculation can be cumbersome for wet lab scientists with little programming experience. In this project the student will use the new [OpenMS-WebApps template](https://pubs.acs.org/doi/10.1021/acs.jproteome.4c00872) to create a simple GUI to allow researchers to perform this calculation. This calculation can be performed using pyopenms as demonstrated [here](https://pyopenms.readthedocs.io/en/latest/user_guide/peptides_proteins.html) Furthermore, this outcome web application further can be extend to other MS calculations tasks (e-g theoretical spectra generation etc) for quick interpretation of MS data. +In mass spectrometry (MS) proteomics and metabolomics, one common task is to compute the mass-to-charge (m/z) ratio of the analyte so that it can be located in a spectrum. Although the calculation is computationally simple and can easily be performed by the pyopenms package, this simple, commonly used calculation can be cumbersome for wet lab scientists with little programming experience. In this project the student will use the new [OpenMS-WebApps template](https://pubs.acs.org/doi/10.1021/acs.jproteome.4c00872) to create a simple GUI to allow researchers to perform this calculation. This calculation can be performed using pyopenms as demonstrated [pyOpenMS peptide and protein guide](https://pyopenms.readthedocs.io/en/latest/user_guide/peptides_proteins.html) Furthermore, this outcome web application further can be extend to other MS calculations tasks (e.g. theoretical spectra generation etc.) for quick interpretation of MS data. --- ### 2) Write a generic visualization app for mzQC -**Proposed Mentors:** Chris Bielow, Arslan Siraj -**Skills:** Visualization, Controlled Vocabularies, Python|R +**Proposed Mentors:** Chris Bielow, Arslan Siraj +**Skills:** Visualization, Controlled Vocabularies, Python|R **Estimated Project Length:** 175 hours | **Difficulty:** Easy to Medium Adoption and public exposure of quality control in mass-spectrometry (MS) has gained increasing traction in recent years. The Proteomics Standard Initiative (PSI) has developed an open exchange format named [mzQC](https://hupo-psi.github.io/mzQC/), which aims to foster capturing, exchanging and archiving quality control related data across all MS-based OMICS, such as proteomics, metabolomics and lipidomics. -Currently, there exists no package which is capable of visualizing and summarizing the content of any given mzQC file (e.g. as obtained from a publication's supplemental material). +Currently, there exists no package which is capable of visualizing and summarizing the content of any given mzQC file (e.g. as obtained from a publication's supplemental material). Tasks: @@ -64,36 +63,37 @@ Tasks: ### 3) Improving PyOpenMS Tool Parameter Accessibility -**Proposed Mentors:** Tom Müller, Joshua Charkow -**Skills:** Python, Cython, Git +**Proposed Mentors:** Tom Müller, Joshua Charkow +**Skills:** Python, Cython, Git **Estimated Project Length:** 175 hours | **Difficulty:** Medium PyOpenMS provides Python bindings for OpenMS, a powerful open-source C++ library for computational mass spectrometry. These bindings are automatically generated using Cython and the autowrap package. While C++ developers prioritize performance and fine-grained control, Python developers emphasize readability and ease of use. Simply exposing a C++ API to Python often results in an interface that feels unnatural to Python users. One area where this is particularly evident in PyOpenMS is the handling of parameters in OpenMS algorithms. Currently, retrieving and modifying parameters requires multiple steps: instantiating an object from an algorithm class, calling a method to obtain parameters, modifying them through a dedicated ‘Param’ class, and applying them via a setter method. This workflow is complex and does not align with Pythonic conventions. -The task is to improve the usability of PyOpenMS by enabling parameter setting directly via keyword arguments when instantiating objects of an algorithm class and making parameters easily accessible through the help() function for interactive exploration. +The task is to improve the usability of PyOpenMS by enabling parameter setting directly via keyword arguments when instantiating objects of an algorithm class and making parameters easily accessible through the help() function for interactive exploration. Tasks: -1. Modify the Cython binding for function type checking and conversion. +1. Modify the Cython binding for function type checking and conversion. 2. Add Pythonic helper functions for type checking and conversion. -3. Port the C++ tool documentation to Python. +3. Port the C++ tool documentation to Python. --- ## Theme B) Data Formats and Interoperability ### 1) Pythonic mzML handling + **Proposed Mentors:** Joshua Charkow, Tom Müller **Skills:** Python, Git **Estimated Project Length:** 175 hours | Difficulty: Easy -Liquid-Chromatography-Mass Spectrometry data is commonly stored in sparse multidimensional data containing billions of peaks and can easily exceed a few gigabytes when compressed on disk. Python is commonly used in the field for exploratory analysis and development of novel data processing algorithms. The most common format for storing mass spectrometry data is in .mzML, an XML based format Although numerous libraries exist for parsing .mzML files in Python, an open source XML based format most commonly used in the field, each library contains its own UI which might not be intuitive for data scientists just starting with mass spectrometry. Recently, the [alphatims](https://github.com/MannLabs/alphatims) package was introduced which stores mass spectrometry data in a pandas dataframe like structure making it quite accessible data manipulation and exploration. Notably, this format takes advantage of python’s slicing syntax making it intuitive for all data scientists. However, this package only supports “.d” files which are vendor specific and not applicable to the broader mass spectrometry community. In this project, the student will create a “pythonic” .mzML file reader inspired by alphatims by extending the current available .mzML python parsers. +Liquid-Chromatography-Mass Spectrometry data is commonly stored in sparse multidimensional data containing billions of peaks and can easily exceed a few gigabytes when compressed on disk. Python is commonly used in the field for exploratory analysis and development of novel data processing algorithms. The most common format for storing mass spectrometry data is in .mzML, an XML based format Although numerous libraries exist for parsing .mzML files in Python, an open source XML based format most commonly used in the field, each library contains its own UI which might not be intuitive for data scientists just starting with mass spectrometry. Recently, the [alphatims](https://github.com/MannLabs/alphatims) package was introduced which stores mass spectrometry data in a pandas dataframe like structure making it quite accessible data manipulation and exploration. Notably, this format takes advantage of python’s slicing syntax making it intuitive for all data scientists. However, this package only supports “.d” files which are vendor specific and not applicable to the broader mass spectrometry community. In this project, the student will create a “pythonic” .mzML file reader inspired by alphatims by extending the current available .mzML python parsers. Tasks: -1. Leaverage the pyopenms documentation to get familiar with pyopenms .mzML file reading. -2. Create a class which allows for splicing of the .mzML file across various dimensions and returning a DataFrame object. -3. Benchmarking this class on various .mzML files for read times and memory usage. +1. Leaverage the pyopenms documentation to get familiar with pyopenms .mzML file reading. +2. Create a class which allows for splicing of the .mzML file across various dimensions and returning a DataFrame object. +3. Benchmarking this class on various .mzML files for read times and memory usage. 4. creating a python package and releasing it on PyPI. --- @@ -101,12 +101,12 @@ Tasks: ### 2) Write a C++ library to read/write mzQC **Proposed Mentors:** Chris Bielow, Nils Hoffmann -**Skills:** C++, Controlled Vocabularies, JSON, CMake, GitHub CI +**Skills:** C++, Controlled Vocabularies, JSON, CMake, GitHub CI **Estimated Project Length:** 350 hours | **Difficulty:** Easy to Medium Adoption and public exposure of quality control in mass-spectrometry (MS) has gained increasing traction in recent years. The Proteomics Standard Initiative (PSI) has developed an open exchange format named [mzQC](https://hupo-psi.github.io/mzQC/),which aims to foster capturing, exchanging and archiving quality control related data across all MS-based OMICS, such as proteomics, metabolomics and lipidomics. -Currently, there exist core libraries to read and write mzQC in Python, R, and Java. See [MS-Quality-Hub](https://github.com/MS-Quality-Hub). +Currently, there exist core libraries to read and write mzQC in Python, R, and Java. See [MS-Quality-Hub](https://github.com/MS-Quality-Hub). Tasks: @@ -121,23 +121,23 @@ Tasks: **Proposed Mentors:** Timo Sachsenberg, Samuel Wein **Skills:** CMake, GitHub CI, C++, Python -**Estimated Project Length:** 350 hours | **Difficulty:** Medium +**Estimated Project Length:** 350 hours | **Difficulty:** Medium Proteomics and metabolomics mass spectrometry studies are generating datasets of unprecedented size as they scale to include more and more samples. Managing and processing these large datasets efficiently requires robust and scalable data handling solutions to make results readily available for downstream processing tasks like machine learning. The task is to integrate Apache Parquet, a columnar storage format, into OpenMS as a fundamental step toward enabling faster data processing, reducing memory usage, and improving scalability. The integration will involve: -1. Updating the OpenMS build system with new CMake configurations. -2. Developing comprehensive tests to validate functionality and performance. +1. Updating the OpenMS build system with new CMake configurations. +2. Developing comprehensive tests to validate functionality and performance. 3. Adapting CI/CD pipelines for macOS, Linux, and Windows to ensure cross-platform compatibility. --- ### 4) Universal Mass Spectrometry Data Processing in Python -**Proposed Mentors:** Wout Bittremieux, Janne Heirman -**Skills:** Python, R, GitHub CI -**Estimated Project Length:** 350 hours | Difficulty: Medium +**Proposed Mentors:** Wout Bittremieux, Janne Heirman +**Skills:** Python, R, GitHub CI +**Estimated Project Length:** 350 hours | Difficulty: Medium A major challenge in mass spectrometry (MS) data analysis is the lack of interoperability between different open-source software tools. While various data processing packages in Python exist, many of these suffer from development inefficiencies due to having to implement duplicate functionality. @@ -153,8 +153,8 @@ By building these bridges, this project will empower scientists to focus on disc ### 1) Diffusion Deconvolution of DIA-MS/MS Data (D^4 | dquartic) -**Proposed Mentors:** Justin Sing, Leon Xu -**Skills:** Python, PyTorch, Deep Learning +**Proposed Mentors:** Justin Sing, Leon Xu +**Skills:** Python, PyTorch, Deep Learning **Estimated Project Length:** 350 hours | **Difficulty:** Medium to Advanced Diffusion models have revolutionized generative AI, excelling in tasks like image enhancement and speech separation. This project applies similar principles to Data-Independent Acquisition Mass Spectrometry (DIA-MS)—a technique that captures complex, overlapping signals requiring deconvolution. This project offers an exciting opportunity to apply deep learning & generative AI techniques to a real-world bioinformatics challenge. If you enjoy working on AI models for signal processing, deconvolution, and scientific applications, we’d love to have you on board! @@ -186,9 +186,9 @@ Tasks: **Proposed Mentors:** William Stafford Noble, Wout Bittremieux **Skills:** Python, PyTorch, deep learning, profiling -**Estimated Project Length:** 350 hours | Difficulty: Advanced +**Estimated Project Length:** 350 hours | Difficulty: Advanced -De novo peptide sequencing is a powerful approach for molecular discovery by deciphering peptides directly from tandem mass spectrometry (MS/MS) data. Casanovo is a state-of-the-art AI tool that treats de novo sequencing like a language translation problem—converting sequences of peaks in an MS/MS spectrum into amino acid sequences, just like translating one language into another. Powered by a transformer deep neural network, Casanovo has already revolutionized peptide sequencing, but its inference speed remains a bottleneck, particularly during beam search decoding, the step responsible for selecting the best peptide candidates. +De novo peptide sequencing is a powerful approach for molecular discovery by deciphering peptides directly from tandem mass spectrometry (MS/MS) data. Casanovo is a state-of-the-art AI tool that treats de novo sequencing like a language translation problem—converting sequences of peaks in an MS/MS spectrum into amino acid sequences, just like translating one language into another. Powered by a transformer deep neural network, Casanovo has already revolutionized peptide sequencing, but its inference speed remains a bottleneck, particularly during beam search decoding, the step responsible for selecting the best peptide candidates. By making Casanovo faster and more efficient, we can unlock new biological insights at an unprecedented scale. Whether it's identifying unknown proteins, uncovering disease biomarkers, or advancing drug discovery, your contributions will have a real-world impact on science and healthcare. If you love machine learning, performance optimization, and AI-driven discovery, this project is your chance to make a difference in computational biology! diff --git a/layouts/partials/footer.html b/layouts/partials/footer.html index 774856e..d219add 100644 --- a/layouts/partials/footer.html +++ b/layouts/partials/footer.html @@ -15,7 +15,7 @@