YeAST Build Status

Yet Another Shell Trick

What's that?

YeAST is an extension of the bourne shell shebang syntax.

YeAST aims to solve issues of interoperability, parallel programming, quick prototyping and progressive refactoring by incitate users to use in their scripts and software features of UNIX system and build things more KISS.

You can read more about it through:

Quick Running

These instructions will get you the last stable binaries of yeast on your local machine for standard usage purposes.

Binaries installation

..on macOS using brew:

You can install YeAST on macOS using our Homebrew custom Tap:

{.shell} brew install yvan-sraka/YeAST/yeast

..on others UNIX-like using the install script:

Run the following line in your terminal, then follow the onscreen instructions:

{.shell} curl https://raw.githubusercontent.com/yvan-sraka/YeAST/master/install.sh -sSf | sh

If you wonder what this previous command do, don't hesitate to inspect the script: it runs all instructions of the Getting Started section.

Bootstraping

To make scripts easily work out of the box, you can add this little hack at the beggining of your files:

``` {.shell}

! /bin/sh

! @ignore

if ! [ -x "$(command -v yeast)" ]; then curl "https://raw.githubusercontent.com/yvan-sraka/YeAST/master/install.sh" -sSf | sh fi yeast "$0" exit ```

Editors integration

You now have YeAST installed on your machine! Cool next thing to do could be to get a syntax support extension for your favorite code editor:

Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.

Prerequisites

Get a stable Rust toolchain:

{.shell} curl https://sh.rustup.rs -sSf | sh

Building and running

{.shell} git clone git@github.com:yvan-sraka/YeAST.git cd YeAST cargo run basic_example.yst

Ecosystem

Real World Examples

The basic_example available in this repository is fun to get the general idea behind YeAST! But to really understand the purpose of this tool, we will go through examples inspired from REAL WORLD, mainly by my scientific domain: "Bioinformatics and Modeling".

YeAST works like cat outside interpreters

``` {.yeast}

! /usr/bin/env yeast

This text will be printed on standard output!

Beside we experiment with a Python code we expect to say "Hello World":

! python3

print("Hello, World!")

!

Enjoy this nice way of writing code in notebook style. ```

It provides multithreading by default

``` {.yeast}

! /usr/bin/env yeast

Here we try to fold 3 different sequences, so we do it in parallel by allocating 3 threads, there is no additonal syntax needed:

! python3 folding.py

;LCBO - Prolactin precursor - Bovine ; a sample sequence in FASTA format MDSKGSSQKGSRLLLLLVVSNLLLCQGVVSTPVCPNGPGNCQVSLRDLFDRAVMVSHYIHDLSS EMFNEFDKRYAQGKGFITMALNSCHTSSLPTPEDKEQAQQTHHEVLMSLILGLLRSWNDPLYHL VTEVRGMKGAPDAILSRAIEIEEENKRLLEGMEMIFGQVIPGAKETEPYPVWSGLPSLQTKDED ARYSAFYNLLHCLRRDSSKIDTYLKLLNCRIIYNNNC* !#

Shebang in YeAST could be any shell command that's accepting as last argument a given file, here we use the syntax to call our external script folding.py.

! python3 folding.py

MCHU - Calmodulin - Human, rabbit, bovine, rat, and chicken ADQLTEEQIAEFKEAFSLFDKDGDGTITTKELGTVMRSLGQNPTEAELQDMINEVDADGNGTID FPEFLTMMARKMKDTDSEEEIREAFRVFDKDGNGYISAAELRHVMTNLGEKLTDEEVDEMIREA DIDGDGQVNYEEFVQMMTAK* !#

Bonus: the output of this multhreading computation will be displayed the in right order as soon that the information is available!

! python3 folding.py

gi|5524211|gb|AAD44166.1| cytochrome b [Elephas maximus maximus] LCLYTHIGRNIYYGSYLYSETWNTGIMLLLITMATAFMGYVLPWGQMSFWGATVITNLFSAIPYIGTNLV EWIWGGFSVDKATLNRFFAFHFILPFTMVALAGVHLTFLHETGSNNPLGLTSDSDKIPFHPYYTIKDFLG LLILILLLLLLALLSPDMLGDPDNHMPADPLNTPLHIKPEWYFLFAYAILRSVPNKLGGVLALFLSIVIL GLMPFLHTSKHRSMMLRPLSQALFWTLTMDLLTLTWIGSQPVEYPYTIIGQMASILYFSIILAFLPIAGX IENY !# ```

Roadmap

Contributing

Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.

Authors

See also the list of contributors who participated in this project.

License

This project is licensed under the 3rd version of GPL License - see the LICENSE file for details.