{"id":22377289,"url":"https://github.com/csbiology/chlamyatlas","last_synced_at":"2025-07-20T09:12:59.807Z","repository":{"id":241720446,"uuid":"724655600","full_name":"CSBiology/ChlamyAtlas","owner":"CSBiology","description":"Chlamy Atlas is a AI-powered web application which predicts the localizations of proteins from the Green Algae Chlamydomonas reinhardtii.","archived":false,"fork":false,"pushed_at":"2024-05-29T07:21:22.000Z","size":141726,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-26T18:21:21.568Z","etag":null,"topics":["chlamydomonas","data-science","ml","plant","science","target","tool"],"latest_commit_sha":null,"homepage":"https://csb-chlamyatlas.bio.rptu.de","language":"F#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CSBiology.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-11-28T14:23:55.000Z","updated_at":"2024-05-29T07:27:04.000Z","dependencies_parsed_at":"2024-05-29T21:13:33.609Z","dependency_job_id":null,"html_url":"https://github.com/CSBiology/ChlamyAtlas","commit_stats":null,"previous_names":["csbiology/chlamyatlas"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/CSBiology/ChlamyAtlas","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CSBiology%2FChlamyAtlas","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CSBiology%2FChlamyAtlas/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CSBiology%2FChlamyAtlas/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CSBiology%2FChlamyAtlas/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CSBiology","download_url":"https://codeload.github.com/CSBiology/ChlamyAtlas/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CSBiology%2FChlamyAtlas/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266094083,"owners_count":23875571,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["chlamydomonas","data-science","ml","plant","science","target","tool"],"created_at":"2024-12-04T22:13:30.665Z","updated_at":"2025-07-20T09:12:59.779Z","avatar_url":"https://github.com/CSBiology.png","language":"F#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ChlamyAtlas\n\nA web UI for optimised versions of the models published in Wang et al. 2023.\n\n![alt text](./assets/image2.png)\n\n# Supported formats\n\nChlamyAtlas expects input in either the FASTA format or as pure amino acid sequence.\nThe FASTA format consists of two building blocks. The first is a description which explains the following sequence. This description starts with \"\u003e\" and is written in a single line. The amino acid sequence follows in the next line and can span multiple lines. An example for this format is:\n```\n\u003esp|A0A178WF56|CSTM3_ARATH Protein CYSTEINE-RICH TRANSMEMBRANE MODULE 3 OS=Arabidopsis thaliana OX=3702 GN=CYSTM3 PE=1 SV=1\nMAQYHQQHEMKQTMAETQYVTAPPPMGYPVMMKDSPQTVQPPHEGQSKGSGGFLRGCLAA\nMCCCCVLDCVF\n\u003esp|A1YKT1|TCP18_ARATH Transcription factor TCP18 OS=Arabidopsis thaliana OX=3702 GN=TCP18 PE=1 SV=1\nMNNNIFSTTTTINDDYMLFPYNDHYSSQPLLPFSPSSSINDILIHSTSNTSNNHLDHHHQ\nFQQPSPFSHFEFAPDCALLTSFHPENNGHDDNQTIPNDNHHPSLHFPLNNTIVEQPTEPS\nETINLIEDSQRISTSQDPKMKKAKKPSRTDRHSKIKTAKGTRDRRMRLSLDVAKELFGLQ\nDMLGFDKASKTVEWLLTQAKPEIIKIATTLSHHGCFSSGDESHIRPVLGSMDTSSDLCEL\nASMWTVDDRGSNTNTTETRGNKVDGRSMRGKRKRPEPRTPILKKLSKEERAKARERAKGR\nTMEKMMMKMKGRSQLVKVVEEDAHDHGEIIKNNNRSQVNRSSFEMTHCEDKIEELCKNDR\nFAVCNEFIMNKKDHISNESYDLVNYKPNSSFPVINHHRSQGAANSIEQHQFTDLHYSFGA\nKPRDLMHNYQNMY\n```\n\nChlamyAtlas was developed with the assumption that the description follows the standard used by the Universal Protein Resource ([Uniprot](https://www.uniprot.org/)) and only returns the Uniprot ID as description in the output table. This can be circumvented by removing the \"|\" in the description. In this case the complete description gets returned.\n\nThe only other supported format are pure amino acid sequences. An example for this format is:\n```\nMAQYHQQHEMKQTMAETQYVTAPPPMGYPVMMKDSPQTVQPPHEGQSKGSGGFLRGCLAA\nMCCCCVLDCVF\n```\nThis format can only be used for a single amino acid sequence. Multiple amino acid sequences must be in the following format:\n```\n\u003e!MAQYHQQHEMKQTMAETQYVTAPPPMGYPVMMKDSPQTVQPPHEGQSKGSGGFLRGCLAA\nMCCCCVLDCVF\n\u003e!MNNNIFSTTTTINDDYMLFPYNDHYSSQPLLPFSPSSSINDILIHSTSNTSNNHLDHHHQ\nFQQPSPFSHFEFAPDCALLTSFHPENNGHDDNQTIPNDNHHPSLHFPLNNTIVEQPTEPS\nETINLIEDSQRISTSQDPKMKKAKKPSRTDRHSKIKTAKGTRDRRMRLSLDVAKELFGLQ\nDMLGFDKASKTVEWLLTQAKPEIIKIATTLSHHGCFSSGDESHIRPVLGSMDTSSDLCEL\nASMWTVDDRGSNTNTTETRGNKVDGRSMRGKRKRPEPRTPILKKLSKEERAKARERAKGR\nTMEKMMMKMKGRSQLVKVVEEDAHDHGEIIKNNNRSQVNRSSFEMTHCEDKIEELCKNDR\nFAVCNEFIMNKKDHISNESYDLVNYKPNSSFPVINHHRSQGAANSIEQHQFTDLHYSFGA\nKPRDLMHNYQNMY\n```\n\n# Result\n\n![alt text](./assets/image.png)\n\nExplanations of Chloropred ,Qchloro, Mitopred,Qmito,Secrpred,Qsecr, and FinalPred.\n\n### Chloropred\n\nPrediction score indicating the likelihood of the protein being localized to the Chloroplast. A higher scores suggest a stronger prediction that the protein is localized in the Chloroplast.\n\n### Qchloro\n\nq-value associated with the Chloroplast prediction score. Provides a measure of statistical significance for the Chloroplast prediction. Lower q-values indicate higher statistical significance.\n\n### Mitopred\nPrediction score for the localization of the protein to the Mitochondria. A higher scores suggest a stronger prediction of Mitochondrial localization.\n\n### Qmito\nq-value associated with the Mitochondria prediction score. Indicates the statistical significance of the Mitochondria localization prediction. Lower q-values suggest a more reliable prediction.\n\n### Secrpred\nPrediction score for identifying the protein as a Secretory Protein.A higher scores indicate a stronger likelihood that the protein functions as a Secretory Protein.\n\n### Qsecr\nq-value for the Secretory Protein prediction. Provides a measure of the statistical significance of the Secretory Protein prediction. Lower q-values are indicative of more statistically significant predictions.\n\n### FinalPred\nRepresents the model's final prediction of the protein's localization based on the highest score and its corresponding q-value. The final localization is determined by comparing the q-values and prediction scores against preset cutoffs. If all q-values exceed the cutoff, the protein is classified as \"Cytoplasmic.\"\n\n### Cutoff\nThe threshold q-value below which a prediction is considered statistically significant. Set to 0.05 by default, meaning that predictions with q-values below this threshold are classified as significant. This parameter helps in distinguishing between statistically significant and non-significant predictions, reducing the chance of false-positive localizations.\n\n\n# Docker\n\n## Environment Variables\n\n- **NET_EMAIL_EMAIL**: Email address to send emails from\n\n  Default: Set via user secrets\n\n- **NET_EMAIL_ACCOUNTNAME**: Email account name to send emails from\n\n    Default: Set via user secrets\n\n- **NET_EMAIL_PASSWORD**: Email account password to send emails from\n\n    Default: Set via user secrets\n\n- **NET_EMAIL_SERVER**: Email server to send emails from\n\n    Default: Set via user secrets\n\n- **NET_EMAIL_PORT**: Email server port to send emails from\n\n    Default: Set via user secrets\n\n- **PYTHON_SERVICE_TIMEOUT**: Time in minutes before conenction timeout between ui and api service\n\n    Default: 30 minutes\n\n- **PYTHON_SERVICE_URL**: Sets the url for the api predictor backend.\n\n    Default: `http://localhost:8000`\n\n    *Remarks:* In docker compose this could be `http://host.docker.internal:8000`\n\n    *Remarks:* On Linux might require:\n\n    ```\n    extra_hosts:\n        - \"host.docker.internal:host-gateway\"\n    ```\n\n- **PYTHON_SERVICE_STORAGE_TIMESPAN**: How long the user data should be stored\n\n    Default: 1 Hour\n\n## Docker Compose\n\n```yaml\nversion: '3.7'\n\nname: chlamyatlas\n\nservices:\n  api:\n    image: csbdocker/chlamyatlas-api:latest\n    ports:\n      - 8000:80\n    environment:\n      GUNICORN_CMD_ARGS: \"-k uvicorn.workers.UvicornWorker --preload\"\n      MAX_WORKERS: \"4\"\n      TIMEOUT: \"0\"\n  ui:\n    image: csbdocker/chlamyatlas-ui:latest\n    environment:\n      PYTHON_SERVICE_URL: \"http://host.docker.internal:8000\"\n      PYTHON_SERVICE_STORAGE_TIMESPAN: \"7\"\n    ports:\n      - 5000:5000\n    # Use this to make host.docker.internal accessible on linux docker\n    extra_hosts:\n     - \"host.docker.internal:host-gateway\"\n```\n\n# Local Development\n\n## Install pre-requisites\n\nYou'll need to install the following pre-requisites in order to build SAFE applications\n\n* [.NET SDK](https://www.microsoft.com/net/download) 8.0 or higher\n* [Node 18](https://nodejs.org/en/download/) or higher\n* [NPM 9](https://www.npmjs.com/package/npm) or higher\n* [Python 3.11](https://www.python.org/downloads/) or higher\n\n## Install\n\n- run `setup.cmd`\n\n.. __or__ ..\n\n1. `dotnet tool restore`\n2. `py -m venv .venv`\n3. `.\\.venv\\Scripts\\python.exe -m pip install -r .\\src\\FastAPI\\requirements.txt`\n\n## Run\n\n- `.\\build.cmd run` starts SAFE stack\n\nplus in another terminal run:\n\n1. activate local python environment: `.\\.venv\\Scripts\\Activate.ps1`\n2. navigate to fastapi folder: `cd .\\src\\FastAPI\\`\n3. start fastapi backend: `./run.cmd`\n\n## Activate Email notification (optional)\n\nSet user-secrets in the following schema:\n\n```json\n{\n  \"email\": {\n    \"NET_EMAIL_EMAIL\": \"placeholder@mail.de\",\n    \"NET_EMAIL_ACCOUNTNAME\": \"PlaceholderAccountName\",\n    \"NET_EMAIL_PASSWORD\": \"HelloWorld1234\",\n    \"NET_EMAIL_SERVER\": \"smtp.placeholdermail.de\",\n    \"NET_EMAIL_PORT\": 587\n  }\n}\n```\n\n## Publish\n\n### Test Publish\n\n1. `.\\build.cmd dockerbundle [--uionly]`, creates `:new` docker image(s). Skip fastapi image with `--uionly`\n2. `.\\build.cmd dockertest`, uses local docker-compose file to start `:new` images.\n\n### To docker-hub\n\n1. Login to CSB-Docker\n2. Ensure correct Versions, both for python and dotnet service.\n    - `.\\build.cmd versions`\n    - *Remarks:* Versions are defined in project files. Paths can be found in build project `ProjectInfo.fs`. Accessed via regex parsing.\n3. Run `Test Publish` steps. The following step requires built `:new` images.\n4. `.\\build.cmd dockerpublish`\n\n# Request Workflow\n\n```mermaid\nsequenceDiagram\n    participant py as Python ML\n    participant net as F#35; Server\n    participant c as Client\n    actor u as User\n    u --\u003e\u003e c: Gives data\n    c --\u003e\u003e+net: sends user data\n    par start analysis\n    loop\n    net-)+py: send sequence\n    py-\u003epy: predict target\n    py-)net: return predicted target\n    end\n    and return request information\n    net -) c: returns `request-ID`\n    end\n    critical ⚠️\n    u --\u003e\u003e c: copies and stores `request-ID`\n    end\n    opt email\n    u --\u003e\u003e c: give email address\n    c --\u003e\u003e net: give id + email to store\n    end\n    opt check status\n    u --\u003e\u003e c: use `request-ID` to check status\n    end\n    py-)net: send last package\n    deactivate py\n    net--\u003e\u003enet: run q-value calculation\n    net--\u003e\u003enet: store results\n    deactivate net\n    opt gave email\n    net-)u: send email\n    end\n    u --\u003e\u003e c: request data\n    c--\u003e\u003enet: get data\n    net--\u003e\u003ec: return data\n    c--\u003e\u003eu: download data\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcsbiology%2Fchlamyatlas","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcsbiology%2Fchlamyatlas","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcsbiology%2Fchlamyatlas/lists"}