Skip to content

Commit

Permalink
Merge branch 'develop'
Browse files Browse the repository at this point in the history
  • Loading branch information
Rob Patro committed Aug 29, 2018
2 parents 3e70bb2 + 0e22fe2 commit 5e56083
Show file tree
Hide file tree
Showing 79 changed files with 11,690 additions and 220 deletions.
77 changes: 39 additions & 38 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,49 +1,50 @@
dist: trusty
sudo: false
language: cpp

git:
depth: 1
language: generic
matrix:
include:
- os : linux
compiler : gcc-7
addons:
apt:
update: true
sources:
- sourceline: 'ppa:mhier/libboost-latest'
- ubuntu-toolchain-r-test
packages: ['g++-7', 'gcc-7', 'zlib1g-dev', 'libbz2-dev']
- env: CC=gcc-7 CXX=g++-7 AR=gcc-ar-7 NM=gcc-nm-7 RANLIB=gcc-ranlib-7
- env: CC=gcc-5 CXX=g++-5 AR=gcc-ar-5 NM=gcc-nm-5 RANLIB=gcc-ranlib-5

install:
- export CXX="g++-7"
- export CC="gcc-7"
- mkdir -p latest-gcc-symlinks
- ln -s /usr/bin/g++-7 latest-gcc-symlinks/g++
- ln -s /usr/bin/gcc-7 latest-gcc-symlinks/gcc
- export PATH=$PWD/latest-gcc-symlinks:$PATH
- export AR=gcc-ar-7
- export RANLIB=gcc-ranlib-7
- DEPS_DIR="${TRAVIS_BUILD_DIR}/deps"
- mkdir ${DEPS_DIR} && cd ${DEPS_DIR}
- travis_retry wget --no-check-certificate https://cmake.org/files/v3.12/cmake-3.12.0-Linux-x86_64.tar.gz
- tar -xzvf cmake-3.12.0-Linux-x86_64.tar.gz > /dev/null
- mv cmake-3.12.0-Linux-x86_64 cmake-install
- PATH=${DEPS_DIR}/cmake-install:${DEPS_DIR}/cmake-install/bin:$PATH
- cd ${TRAVIS_BUILD_DIR}

script:
- mkdir build
- cd build
- cmake -DFETCH_BOOST=TRUE -DNO_RTM=TRUE ..
- travis_wait 45 make
- travis_wait make install
# https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test
- sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
- sudo apt-get update -qq
- sudo apt-get install -qq zlib1g-dev libbz2-dev cmake
- |
if [[ "${CC}" =~ gcc- ]]; then
echo "Installing ${CC}."
sudo apt-get install -qq "${CC}"
fi
- |
if [[ "${CXX}" =~ g\+\+- ]]; then
echo "Installing ${CXX}."
sudo apt-get install -qq "${CXX}"
fi
script:
- LD_LIBRARY_PATH=${TRAVIS_BUILD_DIR}/lib:$LD_LIBRARY_PATH
- ./src/salmon -h
- travis_wait make test VERBOSE=1
- mkdir build
- pushd build
# Set make -j N considering Travis providing 2 cores.
# VERBOSE=1 to show the input commands in generatd Makefile for debug.
- |
cmake \
-DFETCH_BOOST=TRUE \
-DNO_RTM=TRUE \
.. && \
make -j 4 VERBOSE=1 && \
make install && \
./src/salmon -h
- |
make CTEST_OUTPUT_ON_FAILURE=1 VERBOSE=1 test
- popd

after_success:
- cd $TRAVIS_BUILD_DIR
after_success:
- ./scripts/push-binary.sh

after_failure:
- echo "Failure"
- ls -laR $TRAVIS_BUILD_DIR/build/Testing/
Expand Down
97 changes: 56 additions & 41 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,18 @@
cmake_minimum_required (VERSION 3.9)

if(DEFINED ENV{CC})
set(CC $ENV{CC})
else()
set(CC gcc)
endif()
message("CC: ${CC}")

set(CC_VERSION "")
if(${CC} MATCHES ^gcc-)
string(REGEX REPLACE "gcc-" "" CC_VERSION ${CC})
endif()
message("CC version: ${CC_VERSION}")

enable_testing()

project (Salmon)
Expand Down Expand Up @@ -54,41 +67,59 @@ set (REMOVE_WARNING_FLAGS "-Wno-unused-function;-Wno-unused-local-typedefs")
set (TGT_COMPILE_FLAGS "-ftree-vectorize;-funroll-loops;-fPIC;-fomit-frame-pointer;-O3;-DNDEBUG")
set (TGT_WARN_FLAGS "-Wall;-Wno-unknown-pragmas;-Wno-reorder;-Wno-unused-variable;-Wreturn-type;-Werror=return-type;${REMOVE_WARNING_FLAGS}")


###
# Sanitizers BEGIN
###
#list(APPEND TGT_COMPILE_FLAGS "-fsanitize=address")
#set(CMAKE_LINK_FLAGS "-fsanitize=address")
###
# Sanitizers END
###

if (APPLE)
set(WARNING_IGNORE_FLAGS "-Wno-deprecated-register")
list(APPEND TGT_WARN_FLAGS -Wno-deprecated-register)
else()
set(WARNING_IGNORE_FLAGS "")
endif()

if(CONDA_BUILD)
message("Building with CONDA_BUILD flag")
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CXXSTDFLAG "-std=c++11")
set(GCCVERSION "4.8.2")
else ()
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CXXSTDFLAG "-std=c++11")
set(GCCVERSION "5.2")
endif()
## Prefer static to dynamic libraries
SET(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES})

include(CheckIPOSupported)

set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)

set (ICU_LIBS "")
set (ICU_INC_DIRS "")

set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CXXSTDFLAG "-std=c++14")
set(GCCVERSION "5.2")

if(CONDA_BUILD)
message("Building with CONDA_BUILD flag")
if (APPLE)
# Do we require all these components? Any others?
find_package(ICU COMPONENTS data i18n io uc REQUIRED)
if (ICU_FOUND)
message (STATUS "ICU_INCLUDE_DIRS = ${ICU_INCLUDE_DIRS}")
message (STATUS "ICU_LIBRARIES = ${ICU_LIBRARIES}")
endif()
set (ICU_INC_DIRS ${ICU_INCLUDE_DIRS})
set (ICU_LIBS ${ICU_LIBRARIES})
endif()
endif()

set (BOOST_CXX_FLAGS "${WARNING_IGNORE_FLAGS} ${CXXSTDFLAG}")
if (FETCH_BOOST)
set (BOOST_CXX_FLAGS "${BOOST_CXX_FLAGS} -I${CMAKE_CURRENT_SOURCE_DIR}/external/install/include -L${CMAKE_CURRENT_SOURCE_DIR}/external/install/lib")
endif()

## Prefer static to dynamic libraries
SET(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES})

##
# OSX is strange (some might say, stupid in this regard). Deal with it's quirkines here.
##
Expand All @@ -109,7 +140,7 @@ endif()
set( BOOST_EXTRA_FLAGS "--layout=tagged" )
## this get's set differently below if we
## are on clang & apple
set (NON_APPLECLANG_LIBS gomp rt)
set (NON_APPLECLANG_LIBS gomp)

if(UNIX AND NOT APPLE)
set(LIBRT rt)
Expand Down Expand Up @@ -156,10 +187,10 @@ if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU")
endif()

set (WARNING_IGNORE_FLAGS "${WARNING_IGNORE_FLAGS} -Wno-unused-local-typedefs")
set (BOOST_TOOLSET "gcc")
set (BOOST_TOOLSET "${CC}")
set (BOOST_CONFIGURE_TOOLSET "--with-toolset=gcc")
set (BCXX_FLAGS "${CXXSTDFLAG}")
set (BOOST_EXTRA_FLAGS toolset=gcc cxxflags=${BCXX_FLAGS})
set (BOOST_EXTRA_FLAGS toolset=${CC} cxxflags=${BCXX_FLAGS})
# Tentatively, we support clang now
elseif ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
set(CLANG TRUE)
Expand Down Expand Up @@ -399,6 +430,11 @@ elseif(FETCH_BOOST)
INSTALL_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/install
#PATCH_COMMAND patch -p2 < ${CMAKE_CURRENT_SOURCE_DIR}/external/boost156.patch
CONFIGURE_COMMAND CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} ${CMAKE_CURRENT_SOURCE_DIR}/external/boost_1_66_0/bootstrap.sh ${BOOST_CONFIGURE_TOOLSET} ${BOOST_BUILD_LIBS} --prefix=<INSTALL_DIR>
ADD_CUSTOM_COMMAND(
OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/external/boost_1_66_0/tools/build/src/user-config.jam
PRE_BUILD
COMMAND echo "using gcc : ${CC_VERSION} : ${CMAKE_CXX_COMPILER} ;"
)
BUILD_COMMAND CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} ${CMAKE_CURRENT_SOURCE_DIR}/external/boost_1_66_0/b2 -d0 -j2 ${BOOST_LIB_SUBSET} toolset=${BOOST_TOOLSET} ${BOOST_EXTRA_FLAGS} cxxflags=${BOOST_CXX_FLAGS} link=static install
BUILD_IN_SOURCE 1
INSTALL_COMMAND ""
Expand Down Expand Up @@ -645,27 +681,6 @@ ExternalProject_Add(libstadenio
INSTALL_COMMAND make install
)

message("Build system will fetch SPDLOG")
message("==================================================================")
ExternalProject_Add(libspdlog
DOWNLOAD_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external
DOWNLOAD_COMMAND curl -k -L https://github.com/COMBINE-lab/spdlog/archive/v0.16.1.tar.gz -o spdlog-v0.16.1.tar.gz &&
${SHASUM} 733260e1fbdcf1b3dc307fc585e4476240026de8be28eb905731d2ab0942deae spdlog-v0.16.1.tar.gz &&
tar -xzf spdlog-v0.16.1.tar.gz
##
#URL https://github.com/COMBINE-lab/spdlog/archive/v0.12.0.tar.gz
#DOWNLOAD_NAME spdlog-v0.12.0.tar.gz
#TLS_VERIFY FALSE
#URL_HASH SHA1=c868b4d1a27c4d9fb3b748f0566a8f0390d83ffb
##
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/spdlog-0.16.1
INSTALL_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/install
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
BUILD_IN_SOURCE 1
INSTALL_COMMAND cp -r <SOURCE_DIR>/include/spdlog <INSTALL_DIR>/include
)

set (FAST_MALLOC_LIB "")
set (HAVE_FAST_MALLOC FALSE)

Expand Down
2 changes: 1 addition & 1 deletion cmake/UnitTests.cmake
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
set(TEST_COMMAND ${TOPLEVEL_DIR}/tests/unitTests)
execute_process(COMMAND ${TEST_COMMAND}
execute_process(COMMAND ${TEST_COMMAND}
WORKING_DIRECTORY ${TOPLEVEL_DIR}/tests
RESULT_VARIABLE UNIT_TEST_RESULT
)
Expand Down
2 changes: 1 addition & 1 deletion current_version.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
VERSION_MAJOR 0
VERSION_MINOR 11
VERSION_PATCH 2
VERSION_PATCH 3
2 changes: 1 addition & 1 deletion doc/source/alevin.rst
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ Alevin requires the following minimal set of necessary input parameters (general
* ``-1``: CB+UMI file(s), alevin requires the path to the *FASTQ* file containing CB+UMI raw sequences to be given under this command line flag. Alevin also supports parsing of data from multiple files as long as the order is the same as in `-2` flag.
* ``-2``: Read-sequence file(s), alevin requires the path to the *FASTQ* file containing raw read-sequences to be given under this command line flag. Alevin also supports parsing of data from multiple files as long as the order is the same as in `-1` flag.
* ``--dropseq / --chromium``: the protocol, this flag tells the type of single-cell protocol of the input sequencing-library.
* ``-i``: index, file containing the salmon index of the reference transcriptome, as generated by `samlon index` command.
* ``-i``: index, file containing the salmon index of the reference transcriptome, as generated by `salmon index` command.
* ``-p``: number of threads, the number of threads which can be used by alevin to perform the quantification, by default alevin utilizes *all* the available threads in the system, although we recommend using ~10 threads which in our testing gave the best memory-time trade-off.
* ``-o``: output, path to folder where the output gene-count matrix (along with other meta-data) would be dumped.
* ``--tgMap``: transcript to gene map file, a tsv (tab-separated) file --- with *no header*, containing two columns mapping of each transcript present in the reference to the corresponding gene (the first column is a transcript and the second is the corresponding gene).
Expand Down
2 changes: 1 addition & 1 deletion doc/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@
# The short X.Y version.
version = '0.11'
# The full version, including alpha/beta/rc tags.
release = '0.11.2'
release = '0.11.3'

# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ MAINTAINER [email protected]

ENV PACKAGES git gcc make g++ cmake libboost-all-dev liblzma-dev libbz2-dev \
ca-certificates zlib1g-dev curl unzip autoconf
ENV SALMON_VERSION 0.11.2
ENV SALMON_VERSION 0.11.3

# salmon binary will be installed in /home/salmon/bin/salmon

Expand Down
3 changes: 2 additions & 1 deletion docker/build_test.sh
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
#! /bin/bash
docker build -t combinelab/salmon:0.11.2 .
SALMON_VERSION=0.11.3
docker build -t combinelab/salmon:${SALMON_VERSION} -t combinelab/salmon:latest .
2 changes: 2 additions & 0 deletions include/AlevinOpts.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,8 @@ struct AlevinOpts {
bool useCorrelation;
// don't run EM flag
bool doEM;
// Avoid segfaults based on no whitelist mapping
bool debug;
// perform naive deduplication
bool naive;
// perform eqclass level analysis instead of gene or txp level minsets
Expand Down
3 changes: 3 additions & 0 deletions include/BAMQueue.tpp
Original file line number Diff line number Diff line change
Expand Up @@ -553,6 +553,9 @@ inline bool BAMQueue<FragT>::getFrag_(UnpairedRead& sread, FilterT filt) {
!(bam_flag(sread.read) & BAM_FUNMAP) and
sread.transcriptID() >= 0) {
haveValidRead = true;
bool isFwd = !(bam_strand(sread.read));
int32_t startPos = bam_pos(sread.read);
sread.libFmt = salmon::utils::hitType(startPos, isFwd);
}

if (!haveValidRead) {
Expand Down
9 changes: 7 additions & 2 deletions include/CollapsedCellOptimizer.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,10 @@ using tgroupweightvec = std::vector<double>;
namespace bfs = boost::filesystem;
using SCExpT = ReadExperiment<EquivalenceClassBuilder<SCTGValue>>;

struct CellState {
bool inActive;
};

class CollapsedCellOptimizer {
public:
using VecType = std::vector<tbb::atomic<double>>;
Expand Down Expand Up @@ -65,11 +69,12 @@ void optimizeCell(SCExpT& experiment,
std::deque<std::pair<TranscriptGroup, uint32_t>>& orderedTgroup,
std::shared_ptr<spdlog::logger>& jointlog,
bfs::path& outDir, std::vector<uint32_t>& umiCount,
spp::sparse_hash_set<uint32_t>& skippedCBcount,
std::vector<CellState>& skippedCBcount,
bool verbose, GZipWriter& gzw, size_t umiLength, bool doEM,
bool quiet,std::atomic<uint64_t>& totalDedupCounts,
spp::sparse_hash_map<uint32_t, uint32_t>& txpToGeneMap,
uint32_t numGenes, bool txpLevel, bool naive, bool eqClassLevel);
uint32_t numGenes, bool txpLevel, bool naive, bool eqClassLevel,
bool inDebugMode);

using VecT = CollapsedCellOptimizer::SerialVecType;

Expand Down
8 changes: 4 additions & 4 deletions include/EquivalenceClassBuilder.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -161,9 +161,9 @@ class EquivalenceClassBuilder {
totalCount += kv.second.count;
}

logger_->info("Computed {} rich equivalence classes "
logger_->info("Computed {:n} rich equivalence classes "
"for further processing", countMap_.size());
logger_->info("Counted {} total reads in the equivalence classes ",
logger_->info("Counted {:n} total reads in the equivalence classes ",
totalCount);
return true;
}
Expand All @@ -178,10 +178,10 @@ class EquivalenceClassBuilder {
countVec_.push_back(kv);
}

logger_->info("Computed {} rich equivalence classes "
logger_->info("Computed {:n} rich equivalence classes "
"for further processing",
countVec_.size());
logger_->info("Counted {} total reads in the equivalence classes ",
logger_->info("Counted {:n} total reads in the equivalence classes ",
totalCount);
return true;
}
Expand Down
3 changes: 2 additions & 1 deletion include/GZipWriter.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,8 @@ class GZipWriter {
bool writeAbundances(std::vector<double>& alphas,
std::vector<Transcript>& transcripts);

bool writeAbundances(std::string bcName,
bool writeAbundances(bool inDebugMode,
std::string bcName,
std::vector<double>& alphas);

template <typename ExpT>
Expand Down
Loading

0 comments on commit 5e56083

Please sign in to comment.