{"id":22668552,"url":"https://github.com/lanl/adscodex","last_synced_at":"2025-04-12T11:06:41.891Z","repository":{"id":50149845,"uuid":"258512153","full_name":"lanl/adscodex","owner":"lanl","description":"ADS Codex is a codec for organic molecular archives.","archived":false,"fork":false,"pushed_at":"2023-03-09T21:00:52.000Z","size":46851,"stargazers_count":33,"open_issues_count":2,"forks_count":7,"subscribers_count":9,"default_branch":"master","last_synced_at":"2024-06-27T00:19:26.576Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lanl.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}},"created_at":"2020-04-24T12:54:51.000Z","updated_at":"2024-06-01T02:11:48.000Z","dependencies_parsed_at":"2023-01-28T13:16:47.464Z","dependency_job_id":null,"html_url":"https://github.com/lanl/adscodex","commit_stats":{"total_commits":97,"total_committers":3,"mean_commits":"32.333333333333336","dds":"0.020618556701030966","last_synced_commit":"db4c3904469a488e339a874b443d3f31e53fcfcf"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lanl%2Fadscodex","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lanl%2Fadscodex/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lanl%2Fadscodex/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lanl%2Fadscodex/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lanl","download_url":"https://codeload.github.com/lanl/adscodex/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228911888,"owners_count":17990774,"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":[],"created_at":"2024-12-09T15:15:44.208Z","updated_at":"2024-12-09T15:15:44.839Z","avatar_url":"https://github.com/lanl.png","language":"Go","funding_links":[],"categories":["Uncategorized"],"sub_categories":["Uncategorized"],"readme":"# Adaptive DNA Storage Codec (ADS Codex)\n\nADS Codex is a DNA storage codec that provides high density and can adapt\nto different requirements for DNA synthesis and sequencing.\n\n## External Dependencies\n\n### Reed-Solomon Package\n\nADS Codex depends on https://github.com/klauspost/reedsolomon\n\nPlease install it using \n\n```bash\ngo get -u github.com/klauspost/reedsolomon\n```\n\n### Lookup Tables\n\nLookup tables speed up significantly ADS Codex. You can generate them\nusing the tblgen tool (see below), or download them from github (1.7\nGB file):\n\nhttps://github.com/lanl/adscodex/releases/download/1.0/tables.zip\n\nUnpack the zip into the tbl directory where the tools and the unit\ntests are expectin the lookup tables.\n\n## Installation\n\nTo get ADS Codex clone this repository and build the packages and commands\nthat you are interested in. The description in\ndocs/howtos/HOWTO-setup-go-and-adscodex.txt has more detailed\ninformation on how to build it.\n\n## Documentation\n\nThe specification of the codec is located in the slides located in the\ndoc directory. More documentation on the implementation is located in\nthe source code.\n\nThe HOWTO documents in docs/howtos have more information on how to\nencode and decode data with ADS Codex.\n\n## Packages\n\n### oligo\n\nContains the basic abstraction of an oligo that is used by the rest of\nthe packages.\n\n### oligo/short\n\nAn implementation of the basic oligo interface that stores an oligo in\na 64-bit integer, and therefore can handle short oligos (up to 32 nts).\n\n### oligo/long\n\nAn implementation of the basic oligo interface that can store an\narbitrary long oligo. It uses one byte per nt.\n\n### criteria\n\nAbstract interface for oligo viability criteria. It is used by the\nLevel 0 codec (l0) to check if an oligo can be synthesized/sequenced.\nThe package implements a single criteria: H4G2 that prevents oligos\nwith homopolymers longer than 4 nts (for A, T, and C) or 2 nts for G.\n\n### l0\n\nLevel 0 of the ADS Codex codec (bit packing). Theoretically it can pack\nany value up to 64 bits. In practice it is prohibitively slow to pack\nlarge values and requires lookup tables even for 17 bit values to\nachieve reasonable performance.\n\n### l1\n\nLevel 1 of the ADS Codex codec. Packs an address and array of bytes into a\nsingle oligo.\n\n### l2\n\nLevel 2 of the ADS Codex codec. Packs an arbitrary array of bytes into a\ncollection of oligos. Provides erasure code oligos for recove of the\ndata in case of errors.\n\n## Tools\n\nThe tools in the repository use the packages to provide some\nconvenient commands.\n\n### tblgen\n\nGenerates encoding and decoding lookup tables for speeding-up the\nLevel 0 encoding and decoding. \n\nFor example, generating an encoding lookup table for 17 nts oligos\nthat has 2^13 entries can be done by:\n\n```bash\n./tblgen -e encnt17b13.tbl -l 17 -b 13\n```\n\nGenerating a decoding lookup table for 17 nts oligos that has 2^14\nentries can be done by:\n\n```bash\n./tblgen -d decnt17b7.tbl -l 17 -b 7\n```\n\nAlthough the code is parallelized and uses all available cores, it can\ntake few hours to generate the table.\n\n### encode\n\nEncodes the specified file and outputs a list of oligos that represent\nit.\n\n### decode\n\nDecodes the specified list of oligos into a file. If not all data can\nbe recovered, the output file might have holes.\n\n### Miscelaneous utilities\n\nThe utils directory contains many utilities that can be used to\nanalyze sequenced data.\n\n## Unit Tests\n\nThe packages have some limited unit tests that can be run by the\nstandard:\n\n```bash\ngo test\n```\n\nThe unit tests will slowly be extended to cover all use cases.\n\n## Limitations\n\nThere are multiple TODO and FIXME comments in the source code that\ndescribe things that are missing, or implementation restrictions that\nshould be fixed eventually.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flanl%2Fadscodex","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flanl%2Fadscodex","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flanl%2Fadscodex/lists"}