GithubHelp home page GithubHelp logo

barricklab / ostir Goto Github PK

View Code? Open in Web Editor NEW
12.0 4.0 7.0 5.61 MB

Software for predicting translation initiation rates in bacteria

License: GNU General Public License v3.0

Python 87.37% TeX 3.78% R 8.85%
synthetic-biology bioengineering rna-structure

ostir's Introduction

OSTIR (Open Source Translation Initiation Rates)

Status status

OSTIR is a Python package for predicting the rates at which ribosomes will bind to and initiate translation from different start codons in bacterial mRNAs. It uses the ViennaRNA Package to perform the necessary free energy calculations. The code builds on the last open source version of the RBS calculator.

OSTIR includes several improvements in usability. It supports multi-FASTA input with command line parameters or CSV input that can define parameters on a per-sequence basis. Additionally, OSTIR supports multi-threaded execution, accelerating the analysis of very large sequences.

Quickstart

Installation

Step by step

install with bioconda

OSTIR is a Python module and associated command line script. We recommend installing OSTIR using Bioconda on Linux or macOS. This will automatically install OSTIR and all of its dependencies, including ViennaRNA and the required Python modules.

From Bioconda (recommended; Linux, macOS):

  • Run conda install -c bioconda ostir

From Pip (for experts; Linux, macOS, Windows):

  • Download and install ViennaRNA, following the instructions here.
  • Run pip install ostir

For information on installing for development see the Wiki Documentation.

Docker

For an express run and assuming there is Docker in your system you may:

docker build . -t ostir:latest
docker run -it ostir

You should see ostir -h output

Note: By default Dockerfile is linked to Dockerfile.miniforge so that miniforge is being used to install conda. If you want any other installer (Miniconda or Anaconda), please rename/link at your best convenience.

Command Line Usage

Print OSTIR help:

ostir -h

Run OSTIR on a sequence provided at the command line and print output to the console:

ostir -i TTCTAGATGAGAATAAGGTTATGGCGAGCTCTGAAGACGTTATCAAAGAGTTCATGCGTTTCAAAGTTCGTATGGAAGGT

Run OSTIR on all sequences provided in a FASTA file and print output to a CSV file:

ostir -i input.fasta -o output.csv

More options and examples are described in the Wiki Documentation.

Python Module Usage

Run OSTIR on a sequence inside of a Python script:

from ostir import run_ostir

seq = "ACUUCUAAUUUAUUCUAUUUAUUCGCGGAUAUGCAUAGGAGUGCUUCGAUGUCAU"
results = run_ostir(seq, name="my_sequence", threads=8)
print(results)

More options and examples are described in the Wiki Documentation.

ostir's People

Contributors

ajlukasiewicz avatar croots avatar jeffreybarrick avatar luilver avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

ostir's Issues

Add RBS design functionality

Right now OSTIR will predict the translation initiation rate for a start codon given the surrounding mRNA sequence. It does not have the "reverse" capability of designing (or mutating) a sequence that has a desired translation initiation rate.

I'd propose adding a separate module with a function run_ostir_design() that will output mRNA/RBS sequences that have predicted translation initiation rates in a specified range for a given open-reading frame. It should also probably be implemented as a separate command-line script named ostir-design or similar. There will need to be some way of specifying the constraints on the sequence and/or where mutation of the sequence is allowed.

Multithread execution over different input sequences

OSTIR performs predictions for different start codons within each input sequence in parallel (using --threads). This works well when the input is one or a few long sequences. However, it currently is not set up to multithread execution over multiple different input sequences. This functionality would be helpful for speeding up certain workflows. One example is that for performing RBS design (see #1), one might want to test many mutated versions of the sequence around a start codon at the same time.

Probably the best way to implement multithreading across multiple sequences would be to allow run_oster() and OSTIRFactory() to accept a list of sequences so they can set things up in the same process queue that is already being used for multithreading.

Add paramter for custom start_codons to the run_ostir() function

Hi, thank you for developing ostir.

I would like to use ostir on some non-canonical start codons.
Could you add a parameter for custom start codons to the run_ostir() function?
Like:
run_ostir(seq, name="my_sequence", aSD="ACCTCCTTA", start_codons=['ATA', 'ATC', 'ATG', 'ATT', 'CTG', 'GTG', 'TTG'], threads=8)

Add Dockerfile

A non developer friend of mine asked me to helping running this. I believe the best help I could provide with is giving a couple docker commands.

I will spend some time during the weekend trying to accomplish such a task.

Complaints and suggestions are welcome.

Broken CI For Linux Systems

Testing on dev machines indicate that the package is working, however, the linux continuous integration test fails to set up the initial conda environment, leading to a failed CI test. The mac CI test runs fine.

Different host organism

In original RBS calculator (web tool version, Predict Mode), we can select the other host organisms. Can we do it with ostir program?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.