SkillAgentSearch skills...

Caravagene

🎨 Python library to plot multi-part genetic constructs

Install / Use

/learn @Edinburgh-Genome-Foundry/Caravagene
About this skill

Quality Score

0/100

Category

Design

Supported Platforms

Universal

README

.. raw:: html

<p align="center">
<img alt="Caravagene logo" title="Caravagene logo" src="https://raw.githubusercontent.com/Edinburgh-Genome-Foundry/Caravagene/master/logo.png" width="500">
<br /><br />
</p>

.. image:: https://github.com/Edinburgh-Genome-Foundry/Caravagene/actions/workflows/build.yml/badge.svg :target: https://github.com/Edinburgh-Genome-Foundry/Caravagene/actions/workflows/build.yml :alt: GitHub CI build status

.. image:: https://coveralls.io/repos/github/Edinburgh-Genome-Foundry/Caravagene/badge.svg?branch=master :target: https://coveralls.io/github/Edinburgh-Genome-Foundry/Caravagene?branch=master

Caravagene (full documentation here <https://edinburgh-genome-foundry.github.io/Caravagene/>_) is a Python library to plot schemas of DNA constructs from a list of parts:

.. code:: python

from caravagene import Part, Construct, ConstructList

constructs = ConstructList([Construct([
    Part('promoter', label='my promoter'),
    Part('CDS', label='gene with a very very long name'),
    Part('terminator', label='PolyA'),
    Part('insulator', label='I1')
])])

constructs.to_image('construct.jpeg')

.. raw:: html

<p align="center">
<img src="https://raw.githubusercontent.com/Edinburgh-Genome-Foundry/Caravagene/master/examples/construct.jpeg" width="600">
</p>

Here is another example producing this PDF <https://raw.githubusercontent.com/Edinburgh-Genome-Foundry/Caravagene/master/examples/multiconstruct.pdf>_ showing multiple constructs:

.. code:: python

from caravagene import Part, Construct, ConstructList

my_constructs = ConstructList(
    title="My constructs",
    constructs=[
        Construct(name="ASM1", parts=[
            Part(label='HA1', category='homology-arm'),
            Part(label='rc1', category='recombinase-recognition-sequence'),
            Part(label='my promoter', category='promoter'),
            Part(label='RNA stability', category='rna-stability-sequence'),
            Part(label='<i>acs</i>', category='CDS'),
            Part(label='PolyA', category='terminator'),
            Part(label='I1', category='insulator'),
        ]),
        Construct(name="ASM2", parts=[
            Part(label='my promoter', category='promoter'),
            Part(label='gene with a very very long name', category='CDS'),
            Part(label='PolyA', category='terminator'),
            Part(label='I1', category='insulator')
        ])
    ]
)
my_constructs.to_pdf('multiconstruct.pdf')

.. raw:: html

<p align="center">
<img src="https://raw.githubusercontent.com/Edinburgh-Genome-Foundry/Caravagene/master/examples/multiconstruct_screen_capture.png" width="800">
</p>

Note that ConstructList can be supplied with a font. It is also possible to extend Caravagene to support other categories/symbols, as follows:

.. code:: python

 from caravagene import SYMBOL_FILES
 SYMBOL_FILES['my-new-category'] = 'path/to/some/symbol.svg'

Finally, here is an example using an Excel spreadsheet:

Spreadsheet:

.. raw:: html

<p align="center">
<img src="https://raw.githubusercontent.com/Edinburgh-Genome-Foundry/Caravagene/master/examples/from_spreadsheet_sample.png" width="600">
</p>

Python code:

.. code:: python

from caravagene import ConstructList
my_constructs = ConstructList("my_spreadsheet.xlsx")
my_constructs.to_pdf('my_schemas.pdf')

or command-line (one-time use):

.. code:: shell

caravagene my_spreadsheet.xlsx my_schemas.pdf

or command-line (re-render when the spreadsheet changes on disk):

.. code:: shell

caravagene my_spreadsheet.xlsx my_schemas.pdf --watch

Output:

.. raw:: html

<p align="center">
<img src="https://raw.githubusercontent.com/Edinburgh-Genome-Foundry/Caravagene/master/examples/from_spreadsheet_screen_capture.png" width="700">
</p>

Installation

Caravagene requires WkHTMLtoPDF <https://wkhtmltopdf.org/>_ to be installed. On Ubuntu, install it with:

.. code:: shell

apt-get install wkhtmltopdf

You can install caravagene through PIP:

.. code:: shell

pip install caravagene

For using it in the terminal, install with:

.. code:: shell

pip install caravagene[cli]

Licence

Caravagene is an open-source software originally written at the Edinburgh Genome Foundry <http://www.genomefoundry.org>_ by Zulko <https://github.com/Zulko>_ and released on Github <https://github.com/Edinburgh-Genome-Foundry/Caravagene>_ under the MIT licence (Copyright 2017 Edinburgh Genome Foundry, University of Edinburgh). Everyone is welcome to contribute!

Related Skills

View on GitHub
GitHub Stars26
CategoryDesign
Updated23d ago
Forks2

Languages

Python

Security Score

95/100

Audited on Mar 18, 2026

No findings