{"id":14970861,"url":"https://github.com/dev-ev/protexam","last_synced_at":"2026-03-01T11:04:32.628Z","repository":{"id":57455137,"uuid":"469883035","full_name":"dev-ev/protexam","owner":"dev-ev","description":"Inspect your quantitative proteomics results using this streamlit-powered dashboard. The dashboard is specifically tailored for the comprehensive examination of the result of isobaric labeling-based quantitative proteomics.","archived":false,"fork":false,"pushed_at":"2022-04-09T20:12:38.000Z","size":394,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-30T21:29:28.276Z","etag":null,"topics":["mass-spectrometry","proteomics","streamlit","streamlit-webapp","visualization"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dev-ev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-03-14T19:50:02.000Z","updated_at":"2022-12-05T09:16:13.000Z","dependencies_parsed_at":"2022-09-10T02:23:49.681Z","dependency_job_id":null,"html_url":"https://github.com/dev-ev/protexam","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dev-ev/protexam","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dev-ev%2Fprotexam","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dev-ev%2Fprotexam/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dev-ev%2Fprotexam/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dev-ev%2Fprotexam/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dev-ev","download_url":"https://codeload.github.com/dev-ev/protexam/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dev-ev%2Fprotexam/sbom","scorecard":{"id":336529,"data":{"date":"2025-08-11","repo":{"name":"github.com/dev-ev/protexam","commit":"b14b7441e9027f363da6a684adf74277488f344b"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.7,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":0,"reason":"16 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2018-34 / GHSA-2fc2-6r4j-p65h","Warn: Project is vulnerable to: PYSEC-2021-856 / GHSA-5545-2q6w-2gh6","Warn: Project is vulnerable to: PYSEC-2019-108 / GHSA-9fq2-x9r6-wfmf","Warn: Project is vulnerable to: PYSEC-2018-33 / GHSA-cw6w-4rcx-xphc","Warn: Project is vulnerable to: PYSEC-2021-857 / GHSA-f7c7-j99h-c22f","Warn: Project is vulnerable to: GHSA-fpfv-jqm9-f5jm","Warn: Project is vulnerable to: PYSEC-2017-1 / GHSA-frgw-fgh6-9g52","Warn: Project is vulnerable to: PYSEC-2020-73","Warn: Project is vulnerable to: PYSEC-2020-107 / GHSA-jjw5-xxj6-pcv5","Warn: Project is vulnerable to: PYSEC-2024-110 / GHSA-jw8x-6495-233v","Warn: Project is vulnerable to: PYSEC-2020-108","Warn: Project is vulnerable to: PYSEC-2019-156 / GHSA-xp76-357g-9wqq","Warn: Project is vulnerable to: PYSEC-2023-102","Warn: Project is vulnerable to: PYSEC-2023-114","Warn: Project is vulnerable to: PYSEC-2024-153 / GHSA-rxff-vr5r-8cj5","Warn: Project is vulnerable to: PYSEC-2022-248"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-18T04:52:17.097Z","repository_id":57455137,"created_at":"2025-08-18T04:52:17.097Z","updated_at":"2025-08-18T04:52:17.097Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29967933,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-01T10:55:55.490Z","status":"ssl_error","status_checked_at":"2026-03-01T10:55:55.175Z","response_time":124,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["mass-spectrometry","proteomics","streamlit","streamlit-webapp","visualization"],"created_at":"2024-09-24T13:44:15.287Z","updated_at":"2026-03-01T11:04:32.612Z","avatar_url":"https://github.com/dev-ev.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# protexam\n## Inspect your quantitative proteomics results using this streamlit-powered dashboard. The app is specifically tailored for comprehensive examination of result files from isobaric labeling-based quantitative experiments.\n\n*protexam* has been tested on Python 3.8 and 3.10 on Windows 10 and Python 3.8 on Ubuntu 20.04. *protexam* is dependent on multiple other packages, such as *streamlit*, *bokeh*, *matplotlib*. Because of that, we strongly advise creating a virtual environment that will contain the package and all of it's dependencies. One option is [*venv*](https://packaging.python.org/en/latest/guides/installing-using-pip-and-virtual-environments), which is a part of Python's standard library.\\\nFirst, we need to choose a path and create a virtual environment. On Linux, create the environment using the command line, with your custom path and project name:\n\n```\npython3 -m venv /your_project_path/project_name\n```\n\nNow we can activate the newly created environment:\n\n```\nsource /your_project_path/project_name/bin/activate\n```\n\nIf the environment has been activated correctly, it's name should be displayed in the console.\n\n```\n(project_name) user:~$\n```\n\nIt is a good idea to update pip within the virtual environment before installing other packages:\n\n```\npip3 install --upgrade pip\n```\n\nWe can now install *protexam*. The installation will take a while due to the long list of dependencies.\n\n```\npip3 install protexam\n```\n\nThe dashboard is based on *streamlit*, so we will need to run the script *app.py* in order to deploy the dashboard. The module will help us to find the path to the *app.py* file. Run the module as follows:\n\n```\npython3 -m protexam\n```\n\nThe output in the console will contain a few notes, including the path to the source file. We should change the working directory using the suggested path:\n\n```\ncd /path_to_app_source\n```\n\nFinally, it's time to run the *streamlit* app:\n\n```\nstreamlit run app.py --server.maxUploadSize 1000 --server.port 8501\n```\n\nwhere:\\\n    server.maxUploadSize - max size of a single text file in MB\\\n    server.port - port for the app\n    \nWe would need to modify the above-mentioned commands if we are using a Windows machine:\n\n```\n\u003epython -m venv /your_project_path/project_name\n\u003eyour_project_path/project_name/Scripts/activate\n\u003epip install --upgrade pip\n\u003epip install protexam\n\u003epython -m protexam\n\u003ecd path_to_app_source\n\u003estreamlit run app.py --server.maxUploadSize 1000 --server.port 8501\n``` \n\nRight after launching the app, *streamlit* will give us a hint on how to access the dashboard in a web browser. To view locally, go to:\n```\nhttp://localhost:8501\n```\n\nUse the IP address to view the dashboard in the local network:\n```\nhttp://ip-of-the-server:8501\n```\nIf the app is running correctly, we will see the file upload widget:\n\n\u003cimg src=\"https://github.com/dev-ev/protexam/blob/main/img/app_screenshot_01.png\" width=\"700\"\u003e\n\nThe dashboard has been specifically adapted for the [Proteome Discoverer (PD)](https://www.thermofisher.com/se/en/home/industrial/mass-spectrometry/liquid-chromatography-mass-spectrometry-lc-ms/lc-ms-software/multi-omics-data-analysis/proteome-discoverer-software.html) tab-delimited output files, but a few of the MaxQuant tables are also supported.\\\nThere are two options for creating tab-delimited text output in PD 2.4:\n* add the Result Exporter node to the consensus workflow. We recommend to choose \"True\" for the \"R-Friendly header\" option, but the app works with \"False\" as well. The resulting text files can be found in the study folder.\n* if the workflow has been already completed, open the PD result file and go to the menu File -\u003e Export -\u003e To Text (tab delimited).\n\nThe files are uploaded and visualized one-by-one. Choose one of the supported tables and upload. The app will try to determine the type of the uploaded file and show that below the upload widget. If the type has been inferred correctly, press the \"Generate Plots\" button. If we know the type of the table, but it has not been determined automatically, we can override it by selecting from the list, an then pressing the \"Generate Plots\" button.\n\n\u003cimg src=\"https://github.com/dev-ev/protexam/blob/main/img/app_screenshot_02.png\" width=\"700\"\u003e\n\nDisplaying all of the plots can take time, but we can start scrolling down while the images are being rendered:\n\n\u003cimg src=\"https://github.com/dev-ev/protexam/blob/main/img/app_screenshot_03.png\" width=\"700\"\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdev-ev%2Fprotexam","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdev-ev%2Fprotexam","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdev-ev%2Fprotexam/lists"}