Skip to content

Commit

Permalink
Add Eagle2 (#51851)
Browse files Browse the repository at this point in the history
* Add Eagle2

* Fix linting

* Fix scripts

* Fix install

* Improve build script

* Update files

* Set to dynamic

* Fix directory

* Fix sed command

* Set -euo

* Update example

* Update meta.yml

* Update meta.yml

* Update meta.yml

* Update meta.yml

* Update meta.yml

* Set version compiler

* Update C++ version

---------

Co-authored-by: Louis Le Nezet <[email protected]>
  • Loading branch information
LouisLeNezet and Louis Le Nezet authored Nov 4, 2024
1 parent b017356 commit 3a3d558
Show file tree
Hide file tree
Showing 3 changed files with 87 additions and 0 deletions.
5 changes: 5 additions & 0 deletions recipes/eagle2/0001-Use-CXX-and-flags.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
--- src/Makefile
+++ src/Makefile
@@ -1,99 +1,99 @@
-O = DipTreePBWT.o Eagle.o EagleImpMiss.o EagleParams.o EaglePBWT.o FileUtils.o GenoData.o HapHedge.o MapInterpolater.o MemoryUtils.o NumericUtils.o StaticMultimap.o StringUtils.o SyncedVcfData.o Timer.o memcpy.o
+O = DipTreePBWT.o Eagle.o EagleImpMiss.o EagleParams.o EaglePBWT.o FileUtils.o GenoData.o HapHedge.o MapInterpolater.o MemoryUtils.o NumericUtils.o StaticMultimap.o StringUtils.o SyncedVcfData.o Timer.o
33 changes: 33 additions & 0 deletions recipes/eagle2/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#!/bin/bash

set -euo pipefail

echo "Building Eagle2 version ${PKG_VERSION}"

cd src || exit 1

sed -i.bak 's/memcpy.o//g' Makefile

# Set up environment variables for building
export BOOST_INSTALL_DIR=$PREFIX
export HTSLIB_DIR=$PREFIX/lib
export BLAS_DIR=$PREFIX/lib
export ZLIB_STATIC_DIR=$PREFIX/lib

# Run make
make CC=${CXX} \
-e -j ${CPU_COUNT} \
CFLAGS="$CXXFLAGS -Wno-unused-result -std=c++11" \
BOOST_INSTALL_DIR=$BOOST_INSTALL_DIR \
HTSLIB_DIR=$HTSLIB_DIR \
BLAS_DIR=$BLAS_DIR \
ZLIB_STATIC_DIR=$ZLIB_STATIC_DIR \
LIBSTDCXX_STATIC_DIR=${PREFIX}/lib \
linking=dynamic

echo "Installing Eagle2..."
mkdir -p "${PREFIX}/bin"
install -m 755 eagle "${PREFIX}/bin/"
echo "Eagle2 installation completed successfully"

cd .. || exit 1
49 changes: 49 additions & 0 deletions recipes/eagle2/meta.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
{% set version = "2.4.1" %}

package:
name: eagle2
version: {{ version }}

build:
number: 0
run_exports:
- {{ pin_subpackage('eagle2', max_pin='x.x.x') }}

source:
url: https://github.com/poruloh/Eagle/archive/refs/tags/v{{ version }}.tar.gz
sha256: 85804bfe972186ccb66e602856d6e04044302e5c0dbf9309849b0cde981e3432

requirements:
build:
- make
- {{ compiler('c') }}
- {{ compiler('cxx') }}
host:
- htslib >=1.9
- bzip2
- zlib
- boost-cpp >=1.58
- openblas >=0.2.19
run:
- {{ pin_compatible('bzip2') }}
- {{ pin_compatible('zlib') }}
- {{ pin_compatible('boost-cpp') }}
- {{ pin_compatible('openblas') }}


test:
commands:
- eagle -h

about:
home: https://github.com/poruloh/Eagle
license: GPL-3.0-or-later
summary: The Eagle software estimates haplotype phase either within a genotyped cohort or using a phased reference panel.
description:
Eagle2 is now the default phasing method used by the Sanger and Michigan imputation servers and uses a new
very fast HMM-based algorithm that improves speed and accuracy over existing methods via two key ideas;
a new data structure based on the positional Burrows-Wheeler transform and a rapid search algorithm that
explores only the most relevant paths through the HMM. Compared to the Eagle1 algorithm, Eagle2 has similar
speed but much greater accuracy at sample sizes <50,000; as such, we have made the Eagle2 algorithm the default option.
(The Eagle1 algorithm can be accessed via the --v1 flag.) Eagle v2.3+ supports phasing sequence data with or without
a reference and also supports phasing chrX.

0 comments on commit 3a3d558

Please sign in to comment.