Skip to main content

DNA: a domain-specific language (transcription between UTF-8 text and DNA bases) based on YAML.

Project description

logo

DNA

GitHub Actions Workflow Status GitHub last commit PyPI - Python Version PyPI - Version PyPI - Wheel PyPI - Downloads GitHub License

A domain-specific language (transcription between UTF-8 text and DNA bases) based on YAML.

Transcoding

Please refer to coding.py:

DNA_TO_BIN = {
    "A": "00",
    "C": "01",
    "G": "10",
    "T": "11"
}

BIN_TO_DNA = {
    v: k
    for k, v in DNA_TO_BIN.items()
}

DNA_COMPLEMENT = {
    "A": "T",
    "T": "A",
    "C": "G",
    "G": "C"
}

Installation

DNA can be installed from PyPI:

pip install dnadsl

or download the repository and run:

pip install .

as of the repository root folder.

Usage

Run dna --help for help:

$ dna --help
usage: dna [-h] [-m {encode,decode}] [-i INPUT_FILE] [-o OUTPUT_FILE] [-v]

+--------------------------------------------------+
|                        DNA                       |
|            A domain-specific language            |
| (transcription between UTF-8 text and DNA bases) |
|                  based on YAML.                  |
+--------------------------------------------------+

options:
  -h, --help            show this help message and exit
  -m {encode,decode}, --mode {encode,decode}
                        Choose the mode of transcoding.
                        encode: UTF-8 to bases; decode: bases to UTF-8.
                        The default is: encode
  -i INPUT_FILE, --input-file INPUT_FILE
                        The path of the input YAML file.
  -o OUTPUT_FILE, --output-file OUTPUT_FILE
                        The path of the output YAML file.
  -v, --version         Print the version number of dna and exit.

Examples

  • Convert UTF-8 text to DNA bases, e.g., run dna -m encode -i input_text.yml -o output_bases.yml:

    • The input UTF-8 text:

      text_utf8: 😄😊
      
    • The output DNA bases:

      text_utf8: 😄😊
      dna:
      positive_strand:
          sequence: TTAAGCTTGCGAGACATTAAGCTTGCGAGAGG
          binary: 11110000 10011111 10011000 10000100 11110000 10011111 10011000 10001010
          text: 😄😊
      negative_strand:
          sequence: AATTCGAACGCTCTGTAATTCGAACGCTCTCC
          binary: 00001111 01100000 01100111 01111011 00001111 01100000 01100111 01110101
          text: "\x0F`g{\x0F`gu"
      
  • Convert DNA bases to UTF-8 text, e.g., run dna -m decode -i input_bases.yml -o output_text.yml:

    • The input DNA bases:

      positive_strand: TGAGGCTCGGCATGTTGTGAGATTTTAAGCTTGCAAGTCG
      
    • The output UTF-8 text:

      text_utf8: ❤️🐶
      dna:
      positive_strand:
          sequence: TGAGGCTCGGCATGTTGTGAGATTTTAAGCTTGCAAGTCG
          binary: 11100010 10011101 10100100 11101111 10111000 10001111 11110000 10011111
          10010000 10110110
          text: ❤️🐶
      negative_strand:
          sequence: ACTCCGAGCCGTACAACACTCTAAAATTCGAACGTTCAGC
          binary: 00011101 01100010 01011011 00010000 01000111 01110000 00001111 01100000
          01101111 01001001
          text: "\x1Db[\x10Gp\x0F`oI"
      

Packaging

The binaries are created with PyInstaller:

# Package it on Linux
pyinstaller --name DNA --onefile -p dna dna/__main__.py

# Package it on Windows
pyinstaller --name DNA --onefile --icon python.ico -p dna dna/__main__.py

Web Applications

Deploy DNA on Vercel.

Copyrights

DNA is a free, open-source software package (distributed under the GPLv3 license). The logo used in README.md is downloaded from Wikimedia Commons. The Python icon is downloaded from python.ico.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dnadsl-0.4.0.tar.gz (17.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dnadsl-0.4.0-py3-none-any.whl (18.9 kB view details)

Uploaded Python 3

File details

Details for the file dnadsl-0.4.0.tar.gz.

File metadata

  • Download URL: dnadsl-0.4.0.tar.gz
  • Upload date:
  • Size: 17.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for dnadsl-0.4.0.tar.gz
Algorithm Hash digest
SHA256 1cc5148c21230c427f79b17e69297425f524c56b68cba5c099031e800840dff7
MD5 ed72db105c84b777d7b08af4c238c515
BLAKE2b-256 abdafb0d2c6a995b48de71d550ea83c50ba61f90bbd935bc832e0e21d0c3c87c

See more details on using hashes here.

Provenance

The following attestation bundles were made for dnadsl-0.4.0.tar.gz:

Publisher: python-publish.yml on project-aico/dna

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dnadsl-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: dnadsl-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 18.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for dnadsl-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 be4186200e70017c85c3a3efdb669de412cf92698a6b94199ca8474bf11c784e
MD5 f3973b3b1491b2da2341f804a7efa229
BLAKE2b-256 eb96c3f5c804c2dce04e8e8455f339750fac2d098d0d4e1e4166fb77be20b1a8

See more details on using hashes here.

Provenance

The following attestation bundles were made for dnadsl-0.4.0-py3-none-any.whl:

Publisher: python-publish.yml on project-aico/dna

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page