Skip to content

Commit

Permalink
Update rsem to 1.3.2 (#15318)
Browse files Browse the repository at this point in the history
Package uploads complete: [ci skip]
 - biocontainers/rsem:1.3.2--pl526r351hc0aa232_0
 - linux-64/rsem-1.3.2-pl526r351hc0aa232_0.tar.bz2
 - osx-64/rsem-1.3.2-pl526r351h43679fd_0.tar.bz2
  • Loading branch information
epruesse authored and biocondabot[bot] committed May 12, 2019
1 parent f7b1b9f commit dd67a62
Show file tree
Hide file tree
Showing 4 changed files with 162 additions and 116 deletions.
49 changes: 49 additions & 0 deletions recipes/rsem/01_fix_cxx_11.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
Fixes C++11: casting iostream to bool must be explicit

diff -rNu RSEM-1.3.2.orig/buildReadIndex.cpp RSEM-1.3.2/buildReadIndex.cpp
--- RSEM-1.3.2.orig/buildReadIndex.cpp 2019-04-06 15:04:25.000000000 -0600
+++ RSEM-1.3.2/buildReadIndex.cpp 2019-05-11 18:57:20.451993213 -0600
@@ -37,15 +37,15 @@
streampos pos = fin.tellg();
success = true;

- success = (getline(fin, line));
+ success = (bool)(getline(fin, line));
if (!success) continue;
- success = (getline(fin, line));
+ success = (bool)(getline(fin, line));
if (!success) continue;

if (hasQ) {
- success = (getline(fin, line));
+ success = (bool)(getline(fin, line));
if (!success) continue;
- success = (getline(fin, line));
+ success = (bool)(getline(fin, line));
if (!success) continue;
}

diff -rNu RSEM-1.3.2.orig/PairedEndHit.h RSEM-1.3.2/PairedEndHit.h
--- RSEM-1.3.2.orig/PairedEndHit.h 2019-04-06 15:04:25.000000000 -0600
+++ RSEM-1.3.2/PairedEndHit.h 2019-05-11 18:57:51.399980833 -0600
@@ -26,7 +26,7 @@

bool PairedEndHit::read(std::istream& in) {
conprb = 0.0;
- return (in>>sid>>pos>>insertL);
+ return (bool)(in>>sid>>pos>>insertL);
}

void PairedEndHit::write(std::ostream& out) {
diff -rNu RSEM-1.3.2.orig/SingleHit.h RSEM-1.3.2/SingleHit.h
--- RSEM-1.3.2.orig/SingleHit.h 2019-04-06 15:04:25.000000000 -0600
+++ RSEM-1.3.2/SingleHit.h 2019-05-11 18:59:11.543948700 -0600
@@ -43,7 +43,7 @@

bool SingleHit::read(std::istream& in) {
conprb = 0.0;
- return (in>>sid>>pos);
+ return (bool)(in>>sid>>pos);
}

void SingleHit::write(std::ostream& out) {
58 changes: 58 additions & 0 deletions recipes/rsem/02_fix_makefile.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
Removes vendored samtools and allows overriding compile flags

diff -ru RSEM-1.3.2.orig/Makefile RSEM-1.3.2/Makefile
--- RSEM-1.3.2.orig/Makefile 2019-04-06 15:04:25.000000000 -0600
+++ RSEM-1.3.2/Makefile 2019-05-11 19:02:37.320313844 -0600
@@ -11,12 +11,12 @@
BOOST = .

# Compilation variables
-CXX = g++
-CXXFLAGS = -std=gnu++98 -Wall -I. -I$(BOOST) -I$(SAMTOOLS)/$(HTSLIB)
-CPPFLAGS =
+CXX ?= g++
+CXXFLAGS ?= -std=gnu++98 -Wall -I. -I$(BOOST) -I$(SAMTOOLS)/$(HTSLIB)
+CPPFLAGS ?=

-LDFLAGS =
-LDLIBS =
+LDFLAGS ?=
+LDLIBS ?=

# Installation variables
INSTALL = install
@@ -54,13 +54,11 @@

.PHONY : all ebseq pRSEM clean

-all : $(PROGRAMS) $(SAMTOOLS)/samtools
+all : $(PROGRAMS)

$(SAMTOOLS)/samtools :
cd $(SAMTOOLS) && $(CONFIGURE) --without-curses && $(MAKE) -f $(SAMTOOLS_MAKEFILE) samtools

-$(SAMLIBS) : $(SAMTOOLS)/samtools
-

# Compile objects
$(OBJS1) :
@@ -163,17 +161,14 @@


# Install RSEM
-install : $(PROGRAMS) $(SCRIPTS) $(SAMTOOLS)/samtools rsem_perl_utils.pm
- $(INSTALL_DIR) $(DESTDIR)$(bindir) $(DESTDIR)$(bindir)/$(SAMTOOLS)
+install : $(PROGRAMS) $(SCRIPTS) rsem_perl_utils.pm
+ $(INSTALL_DIR) $(DESTDIR)$(bindir)
$(foreach prog,$(PROGRAMS),$(INSTALL_PROGRAM) $(prog) $(DESTDIR)$(bindir)/$(prog) ; $(STRIP) $(DESTDIR)$(bindir)/$(prog) ;)
- $(INSTALL_PROGRAM) $(SAMTOOLS)/samtools $(DESTDIR)$(bindir)/$(SAMTOOLS)/samtools
- $(STRIP) $(DESTDIR)$(bindir)/$(SAMTOOLS)/samtools
$(foreach script,$(SCRIPTS),$(INSTALL_PROGRAM) $(script) $(DESTDIR)$(bindir)/$(script) ;)
$(INSTALL_DATA) rsem_perl_utils.pm $(DESTDIR)$(bindir)/rsem_perl_utils.pm

# Clean
clean :
rm -f *.o *~ $(PROGRAMS)
- cd $(SAMTOOLS) && $(MAKE) clean-all
cd EBSeq && $(MAKE) clean
cd pRSEM && $(MAKE) clean
153 changes: 44 additions & 109 deletions recipes/rsem/build.sh
Original file line number Diff line number Diff line change
@@ -1,113 +1,48 @@
#!/usr/bin/env bash

set -x -e

pushd $SRC_DIR

binaries="\
convert-sam-for-rsem \
EBSeq/rsem-for-ebseq-calculate-clustering-info \
EBSeq/rsem-for-ebseq-find-DE \
EBSeq/rsem-for-ebseq-generate-ngvector-from-clustering-info \
extract-transcript-to-gene-map-from-trinity \
rsem-bam2readdepth \
rsem-bam2wig \
rsem-build-read-index \
rsem-calculate-credibility-intervals \
rsem-calculate-expression \
rsem-control-fdr \
rsem-extract-reference-transcripts \
rsem-generate-data-matrix \
rsem-generate-ngvector \
rsem-gen-transcript-plots \
rsem-get-unique \
rsem-gff3-to-gtf \
rsem-parse-alignments \
rsem-plot-model \
rsem-plot-transcript-wiggles \
rsem-prepare-reference \
rsem-preref \
rsem-refseq-extract-primary-assembly \
rsem-run-ebseq \
rsem-run-em \
rsem-run-gibbs \
rsem-sam-validator \
rsem-scan-for-paired-end-reads \
rsem-simulate-reads \
rsem-synthesis-reference-transcripts \
rsem-tbam2gbam \
"

export INCLUDE_PATH="${PREFIX}/include"
export LIBRARY_PATH="${PREFIX}/lib"
export LD_LIBRARY_PATH="${PREFIX}/lib"

export LDFLAGS="-L${PREFIX}/lib"
export CPPFLAGS="-I${PREFIX}/include"
export CFLAGS="-I${PREFIX}/include"

########################################################
### Prepare Samtools/Htslib
########################################################

sed -i.bak 's/^CPPFLAGS =$//g' samtools-1.3/Makefile
sed -i.bak 's/^LDFLAGS =$//g' samtools-1.3/Makefile

sed -i.bak 's/^CPPFLAGS =$//g' samtools-1.3/htslib-1.3/Makefile
sed -i.bak 's/^LDFLAGS =$//g' samtools-1.3/htslib-1.3/Makefile

# varfilter.py in install fails because we don't install Python
sed -i.bak 's#misc/varfilter.py##g' samtools-1.3/Makefile

# Remove rdynamic which can cause build issues on OSX
# https://sourceforge.net/p/samtools/mailman/message/34699333/
sed -i.bak 's/ -rdynamic//g' samtools-1.3/Makefile
sed -i.bak 's/ -rdynamic//g' samtools-1.3/htslib-1.3/configure

########################################################
### Build rsem
########################################################

INSTALLDIR=$PREFIX/lib/rsem
BINDIR=$PREFIX/bin
mkdir -p $BINDIR
mkdir -p $INSTALLDIR

make
make ebseq

for i in $binaries; do cp $i $INSTALLDIR && chmod +x $INSTALLDIR/$(basename $i); done
for i in $binaries; do
echo "#!/usr/bin/env bash" > $BINDIR/$(basename $i);
echo 'DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )' >> $BINDIR/$(basename $i);
echo '$DIR/../lib/rsem/'$(basename $i) '$@' >> $BINDIR/$(basename $i);
chmod +x $BINDIR/$(basename $i);
done

########################################################
### Do Perl Things
########################################################


#!/usr/bin/bash
set -x

case `uname` in
Linux)
DSOSUF="so"
;;
Darwin)
DSOSUF="dylib"
;;
*)
echo "Unknown uname '`uname`'" >&2
exit 1
esac

# main binaries
make \
CXX=$CXX \
CXXFLAGS="$CXXFLAGS" \
CPPFLAGS="$CPPFLAGS -I$PREFIX/include -I." \
SAMLIBS=$PREFIX/lib/libhts.$DSOSUF \
SAMHEADERS=$PREFIX/include/htslib/sam.h \
LDFLAGS="$LDFLAGS -L$PREFIX/lib" \
prefix="$PREFIX" \
install

# EBSeq R scripts and one binary
sed -i.bak 's|#!/usr/bin/env Rscript|#!'$(which Rscript)'|' EBSeq/rsem-*
rm EBSeq/rsem-*.bak
make -C EBSeq CXX="$CXX $CXXFLAGS $LDFLAGS" rsem-for-ebseq-calculate-clustering-info
cp EBSeq/rsem-* $PREFIX/bin

# Fix perl scripts and module
# move all perl stuff into a separate dir
mkdir -p perl-build/lib
#mv *pl perl-build
mv *.pm perl-build/lib
mv rsem-calculate-expression perl-build
mv rsem-control-fdr perl-build
mv rsem-generate-data-matrix perl-build
mv rsem-plot-transcript-wiggles perl-build
mv rsem-prepare-reference perl-build
mv rsem-run-ebseq perl-build
mv $PREFIX/bin/rsem*.pm perl-build/lib
for n in $PREFIX/bin/rsem-*; do
if head -n1 "$n" | grep -q "env perl"; then
mv -v "$n" perl-build
fi
done
mv rsem-control-fdr rsem-run-ebseq perl-build
cp ${RECIPE_DIR}/Build.PL perl-build

cd perl-build

# now run perl install
perl ./Build.PL

# patch shebang line to make it shorter
perl -i.bak -wpe 's[^#!.+][#!/usr/bin/env perl]' Build

./Build manifest
./Build install --installdirs site

chmod u+rwx $PREFIX/bin/*
perl ./Build manifest
perl ./Build install --installdirs site
18 changes: 11 additions & 7 deletions recipes/rsem/meta.yaml
Original file line number Diff line number Diff line change
@@ -1,44 +1,48 @@
{% set version = "1.3.1" %}
{% set version = "1.3.2" %}

package:
name: rsem
version: {{ version }}

source:
url: https://github.com/deweylab/RSEM/archive/v{{ version }}.tar.gz
sha256: 93c749a03ac16e94b1aab94d032d4fd5687d3261316ce943ecb89d3ae3ec2e11
sha256: 7cf5538226330960415f759045fd6940fe39ed26955ba833e09dbfdf3332ec6b
patches:
- 01_fix_cxx_11.patch # iostreams must be cast to bool explicitly
- 02_fix_makefile.patch # de-vendor samtools and allow overriding *FLAGS

build:
rpaths:
- lib/R/lib/
- lib/
number: 1
number: 0

requirements:
build:
- {{ compiler('c') }}
host:
- bioconductor-biobase
- boost
- perl
- perl-module-build
- r-base
- samtools
- htslib
- zlib
run:
- bioconductor-biobase
- bioconductor-ebseq
- boost
- ucsc-bigwigsummary
- perl
- perl-module-build
- r-base
- samtools 1.3
- samtools
- zlib

test:
commands:
- rsem-prepare-reference 2>&1 | grep reference_name > /dev/null
- rsem-for-ebseq-find-DE 2>&1 | grep Usage > /dev/null
- rsem-bam2wig foo bar foobar 2>&1 | grep "fail to open file" > /dev/null
- rsem-bam2wig foo bar foobar 2>&1 | grep "Failed to open file" > /dev/null
- which rsem-for-ebseq-calculate-clustering-info

about:
Expand Down

0 comments on commit dd67a62

Please sign in to comment.