# Julia and Pkg are the best

**URL:** <https://discourse.julialang.org/t/julia-and-pkg-are-the-best/108610>\
**Category:** General Usage\
**Created:** [January 10, 2024, 9:00am UTC](https://discourse.julialang.org/t/julia-and-pkg-are-the-best/108610 "2024-01-10T09:00:29Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![cdawg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/cdawg/32/9811_2.png) [@cdawg](https://discourse.julialang.org/u/cdawg)\
**Post date:** [January 10, 2024, 9:00am UTC](https://discourse.julialang.org/t/julia-and-pkg-are-the-best/108610/1 "2024-01-10T09:00:29Z")

</div>

I have a pipeline that has Julia, R and python and bash-run docker clis and everything is fragile and breaking across builds.

But! when the julia package chokes on unexpected input, I dev the package, and revise (on by default in vs code) loads it up and fix the error. The code is just julia, not compiled c++, not docker images, so the problems can be fixed at the error.

The package manager is of course not perfect. But it is so much better than any of the others. The error messages are not perfect but they are SO much better than the others. Julia is still niche in Bioinformatics but it’s superiority for standard tasks over standard tools is striking.

Coding is horrible no matter what. But when you have a pipeline with these things next to each other the extraordinary excellence of Julia becomes clear. Just wanted to throw a log on the community fire and keep the excitement up.

---

<div class="post-metadata">

**Author:** ![jakobnissen](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jakobnissen/32/13477_2.png) [@jakobnissen](https://discourse.julialang.org/u/jakobnissen)\
**Post date:** [January 10, 2024, 9:51am UTC](https://discourse.julialang.org/t/julia-and-pkg-are-the-best/108610/2 "2024-01-10T09:51:44Z")

</div>

I’m glad you like Julia, and I’m especially glad you like it for bioinformatics 😉  
Yes, I’ve also found Pkg to be a godsend for bioinfo projects. For bioinfo in particular, I can recommend also looking at JLL packages - for example, suppose you want to use [minimap2](https://github.com/lh3/minimap2) - instead of calling it with `run(minimap2 ... )`, you could instead do:

```julia
(my_project) pkg> add minimap2_jll
   [output...]

julia> using minimap2_jll

julia> run(`$(minimap2()) -h`)
Usage: minimap2 [options] <target.fa>|<target.idx> [query.fa] [...]
Options:
  Indexing:
    -H use homopolymer-compressed k-mer (preferrable for PacBio)
    -k INT k-mer size (no larger than 28) [15]
    -w INT minimizer window size [10]
  [...]

```

And in this way have `minimap2` be an actual dependency of Julia, managed and downloaded by Pkg, and tracked in the Project.toml and Manifest.toml. The only downside is that, AFAIK, JLL packages must be binary executables and can’t be e.g. Perl or Python programs like NCBI’s `blastn`. So you might still need a Conda environment.

---

<div class="post-metadata">

**Author:** ![GunnarFarneback](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gunnarfarneback/32/1827_2.png) [@GunnarFarneback](https://discourse.julialang.org/u/GunnarFarneback)\
**Post date:** [January 10, 2024, 11:24am UTC](https://discourse.julialang.org/t/julia-and-pkg-are-the-best/108610/3 "2024-01-10T11:24:50Z")

</div>

> [@jakobnissen](#):
>
> JLL packages must be binary executables

For what it’s worth, most JLL packages are libraries and not executables at all.

> [@jakobnissen](#):
>
> and can’t be e.g. Perl or Python

I think it’s possible with the right JLL dependencies. As an example `polymake_jll` depends on `Perl_jll` and

```julia
julia> using polymake_jll

julia> first(eachline(polymake_jll.polymake_path))
"#!/usr/bin/env perl"

```

Package dependencies for a foreign language might be an issue though.
