{"id":15060510,"url":"https://github.com/stracquadaniolab/mooda","last_synced_at":"2025-07-31T04:05:55.992Z","repository":{"id":40967157,"uuid":"185219800","full_name":"stracquadaniolab/mooda","owner":"stracquadaniolab","description":"A DNA design and assembly method based on multi-objective optimization.","archived":false,"fork":false,"pushed_at":"2024-05-03T20:15:48.000Z","size":114,"stargazers_count":6,"open_issues_count":2,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-07-07T23:19:34.874Z","etag":null,"topics":["assembly","dna-sequence","evolutionary-algorithms","optimisation","synthetic-biology"],"latest_commit_sha":null,"homepage":"https://github.com/stracquadaniolab/mooda","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stracquadaniolab.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-05-06T15:06:13.000Z","updated_at":"2023-07-20T22:06:42.000Z","dependencies_parsed_at":"2025-04-10T05:51:40.297Z","dependency_job_id":"b08768c0-c4fd-475d-af68-6f0b8198d8d1","html_url":"https://github.com/stracquadaniolab/mooda","commit_stats":null,"previous_names":[],"tags_count":29,"template":false,"template_full_name":null,"purl":"pkg:github/stracquadaniolab/mooda","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stracquadaniolab%2Fmooda","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stracquadaniolab%2Fmooda/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stracquadaniolab%2Fmooda/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stracquadaniolab%2Fmooda/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stracquadaniolab","download_url":"https://codeload.github.com/stracquadaniolab/mooda/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stracquadaniolab%2Fmooda/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267985207,"owners_count":24176398,"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","status":"online","status_checked_at":"2025-07-31T02:00:08.723Z","response_time":66,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["assembly","dna-sequence","evolutionary-algorithms","optimisation","synthetic-biology"],"created_at":"2024-09-24T22:59:42.119Z","updated_at":"2025-07-31T04:05:55.940Z","avatar_url":"https://github.com/stracquadaniolab.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MOODA: Multi-Objective Optimization for DNA design and assembly\n\nCurrent version: 0.11.0\n\n![build](https://github.com/stracquadaniolab/mooda/workflows/release/badge.svg)\n![platform](https://anaconda.org/stracquadaniolab/mooda/badges/platforms.svg)\n![anaconda](https://anaconda.org/stracquadaniolab/mooda/badges/version.svg)\n\nMOODA is a multi-objective optimisation algorithm for DNA sequence design and assembly.\n\nIt takes in input an annotated sequence in GenBank format, and optimize it with\nrespect to user-defined objectives.\n\nCurrently, some of the most common common operations in synthetic biology are\nbuilt-in, including:\n\n- The `GCOptimizationOperator` introduces silent mutation in coding regions to\n  obtain DNA constructs with a user-defined GC content.\n\n- The `CodonUsageOperator` probabilistically recodes coding regions by\n  probabilistically selecting the most frequent codon for an aminoacid in a host\n  organism.\n\n- The `BlockJoin` and `BlockSplit` operators allow the division of a sequence\n  into fragments (or blocks). After the optimisation, each block is then adapted\n  to the assembly method selected by the user. Currently, only the Gibson\n  assembly is supported.\n\nNew operators, objective functions or assembly method can be added by extending\nthe `Operator`, `ObjectiveFunction` and `Assembly` classes.\n\n## Installation\n\nThe easiest and fastest method to use `mooda` is using Docker:\n\n```\n    docker pull ghcr.io/stracquadaniolab/mooda\n```\n\nYou can also install `mooda` using `conda`:\n\n```\n    $ conda install -c stracquadaniolab -c bioconda -c conda-forge mooda\n```\n\nor using `pip`:\n\n```\n    $ pip install mooda-dna\n```\n\nPlease note, that `pip` will not install non Python requirements.\n\n## Getting started\n\nA typical `mooda` analysis consists of 3 steps:\n\n1. Select a DNA sequence in Genbank format.\n\n2. Write a MOODA configuration file. A `.yaml` file defining operators,\n   objective functions, assemblies strategy and their parameters.\n\n3. Run MOODA.\n\n### Example: optimizing GC content, E. coli codon usage, number of fragments and the variance of their length\n\nCreate a test directory as follows:\n\n```\n    $ mkdir example-run\n```\n\nMove to your test directory as follows:\n\n```\n    $ cd example-run\n```\n\nDownload test data from Github as follows:\n\n```\n    $ curl -LO https://github.com/stracquadaniolab/mooda/raw/master/examples/mooda-example1.tar.gz\n```\n\nExtract test data as follows:\n\n```\n    $ tar xvzf mooda-example1.tar.gz\n```\n\nRun `mooda` as follows:\n\n```\n    $ docker run -it --rm -v $PWD:$PWD -w $PWD ghcr.io/stracquadaniolab/mooda -i seq_5_5.gb  -c config.yaml -p 10 -it 20 -a 100 -mns 200 -mxs 2000 -bss 50 -js 40 -dir example-opt -gf True\n```\n\nResults will be available in the `example-opt` directory, where you will find:\n\n- `Genbank` files of the Pareto optimal sequence.\n- `FASTA` files with the fragments for Gibson assembly for each Pareto optimal\n  sequence.\n- `_logfile.yaml` file with information about the analysis.\n- `_mooda_result.csv` file with objective function value information for each\n  sequence.\n\n#### Command line options\n\n- **-i**: Input DNA sequence to process.\n\n- **-c**: Configuration file to set operators, objective functions and their\n  parameters.\n\n- **-p**: Pool size. Number of candidate solutions sampled at each iteration.\n  The pool size should increase with the length and complexity of the input\n  sequence.\n\n- **-it**: Number of iterations.  The number of iterations should increase with\n  the length and complexity of the input sequence, although it will take longer\n  to run.\n\n- **-a**: Archive size. The number of non-dominated solutions to store at each\n  iteration, which allows to use smaller pools for improved efficiency.\n\n- **-mns**: Block minimum size.\n\n- **-mxs**: Block maximum size.\n\n- **-bss**: Sequence block step size, define the minimum variance between block\n  size. Default: 50.\n\n- **-js**: Sequence block assembly overlap size, define the amount of overlap\n  between blocks. Default: 40.\n\n- **-dir**: Output directory for MOODA results.\n\n- **-gf**: Allow the writing of FASTA and GenBank files. Default: False.\n\n## Authors\n\n- Angelo Gaeta, a.gaeta@sms.ed.ac.uk\n- Giovanni Stracquadanio, giovanni.stracquadanio@ed.ac.uk\n\n## Citation\n\n[Design and assembly of DNA molecules using multi-objective optimization](https://academic.oup.com/synbio/article-abstract/6/1/ysab026/6387748).\nA Gaeta, V Zulkower, G Stracquadanio - Synthetic Biology, 2021\n\n```\n@article{10.1093/synbio/ysab026,\n    author = {Gaeta, Angelo and Zulkower, Valentin and Stracquadanio, Giovanni},\n    title = \"{Design and assembly of DNA molecules using multi-objective optimization}\",\n    journal = {Synthetic Biology},\n    volume = {6},\n    number = {1},\n    year = {2021},\n    month = {10},\n    issn = {2397-7000},\n    doi = {10.1093/synbio/ysab026},\n    url = {https://doi.org/10.1093/synbio/ysab026},\n    note = {ysab026},\n    eprint = {https://academic.oup.com/synbio/article-pdf/6/1/ysab026/40977182/ysab026.pdf},\n}\n```\n\n## Issues\n\nPlease post an issue to report a bug or request new features.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstracquadaniolab%2Fmooda","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstracquadaniolab%2Fmooda","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstracquadaniolab%2Fmooda/lists"}