Commit 0f7483af authored by Andreas Tille's avatar Andreas Tille
Browse files

New upstream version 1.6.3+dfsg

parent b3676234
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -51,7 +51,7 @@ add_definitions(-DIQ_TREE)
# The version number.
set (iqtree_VERSION_MAJOR 1)
set (iqtree_VERSION_MINOR 6)
set (iqtree_VERSION_PATCH "1")
set (iqtree_VERSION_PATCH "3")

set(BUILD_SHARED_LIBS OFF)

@@ -277,7 +277,7 @@ if (NOT IQTREE_FLAGS MATCHES "single")
  		set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp -pthread")
  	elseif (CLANG)
		set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pthread")
  		set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp=libomp")
  		set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp=libomp -pthread")
  	endif()
else()
	message("OpenMP        : NONE")
@@ -435,6 +435,8 @@ check_function_exists (gettimeofday HAVE_GETTIMEOFDAY)
check_function_exists (getrusage HAVE_GETRUSAGE)
check_function_exists (GlobalMemoryStatusEx HAVE_GLOBALMEMORYSTATUSEX)
check_function_exists (strndup HAVE_STRNDUP)
check_function_exists (strtok_r HAVE_STRTOK_R)

find_package(Backtrace)

# configure a header file to pass some of the CMake settings
+31 −4
Original line number Diff line number Diff line
@@ -3006,15 +3006,29 @@ void Alignment::createBootstrapAlignment(Alignment *aln, IntVector* pattern_freq
            outError("Unsupported bootstrap feature, pls contact the developers");
    }
    
    if (Params::getInstance().jackknife_prop > 0.0 && spec) {
        outError((string)"Unsupported jackknife with sampling " + spec);
    }

	IntVector site_vec;
    if (!spec) {
		// standard bootstrap
        int added_sites = 0;
		for (site = 0; site < nsite; site++) {
			int site_id = random_int(nsite);
            int site_id;
            if (Params::getInstance().jackknife_prop == 0.0) {
                // bootstrap sampling with replacement
                site_id = random_int(nsite);
            } else {
                // jacknife without replacement
                if (random_double() < Params::getInstance().jackknife_prop)
                    continue;
                site_id = site;
            }
			int ptn_id = aln->getPatternID(site_id);
			Pattern pat = aln->at(ptn_id);
            int nptn = getNPattern();
			addPattern(pat, site);
			addPattern(pat, added_sites);
            if (!aln->site_state_freq.empty() && getNPattern() > nptn) {
                // a new pattern is added, copy state frequency vector
                double *state_freq = new double[num_states];
@@ -3022,7 +3036,10 @@ void Alignment::createBootstrapAlignment(Alignment *aln, IntVector* pattern_freq
                site_state_freq.push_back(state_freq);
            }
			if (pattern_freq) ((*pattern_freq)[ptn_id])++;
            added_sites++;
		}
        if (added_sites < nsite)
            site_pattern.resize(added_sites);
    } else if (strncmp(spec, "GENESITE,", 9) == 0) {
		// resampling genes, then resampling sites within resampled genes
		convert_int_vec(spec+9, site_vec);
@@ -3115,6 +3132,9 @@ void Alignment::createBootstrapAlignment(int *pattern_freq, const char *spec, in
    int site, nsite = getNSite();
    memset(pattern_freq, 0, getNPattern()*sizeof(int));
	IntVector site_vec;
    if (Params::getInstance().jackknife_prop > 0.0 && spec)
        outError((string)"Unsupported jackknife with " + spec);

    if (!spec ||  strncmp(spec, "SCALE=", 6) == 0) {

        if (spec) {
@@ -3123,10 +3143,17 @@ void Alignment::createBootstrapAlignment(int *pattern_freq, const char *spec, in
        }
        int nptn = getNPattern();

        if (nsite/8 < nptn) {
        if (nsite/8 < nptn || Params::getInstance().jackknife_prop > 0.0) {
            int orig_nsite = getNSite();
            for (site = 0; site < nsite; site++) {
                int site_id = random_int(orig_nsite, rstream);
                int site_id;
                if (Params::getInstance().jackknife_prop == 0.0)
                    site_id = random_int(orig_nsite, rstream);
                else {
                    if (random_double() < Params::getInstance().jackknife_prop)
                        continue;
                    site_id = site;
                }
                int ptn_id = getPatternID(site_id);
                pattern_freq[ptn_id]++;
            }
+48 −4
Original line number Diff line number Diff line
@@ -679,10 +679,54 @@ Alignment *SuperAlignment::concatenateAlignments(set<int> &ids) {
}

Alignment *SuperAlignment::concatenateAlignments() {
    set<int> ids;
    for (int i = 0; i < partitions.size(); i++)
        ids.insert(i);
    return concatenateAlignments(ids);
    vector<SeqType> seq_types;
    vector<set<int> > ids;
    for (int i = 0; i < partitions.size(); i++) {
        bool found = false;
        for (int j = 0; j < seq_types.size(); j++)
            if (partitions[i]->seq_type == seq_types[j]) {
                ids[j].insert(i);
                found = true;
                break;
            }
        if (found)
            continue;
        // create a new partition
        seq_types.push_back(partitions[i]->seq_type);
        ids.push_back(set<int>());
        ids.back().insert(i);
    }
    if (seq_types.size() == 1)
        return concatenateAlignments(ids[0]);

    // mixed data with >= 2 partitions
    SuperAlignment *saln = new SuperAlignment();
    saln->max_num_states = 0;
    // first build taxa_index and partitions
    int site, seq, nsite = ids.size();
    
    // BUG FIX 2016-11-29: when merging partitions with -m TESTMERGE, sequence order is changed
    // get the taxa names from existing tree
    
    saln->seq_names = seq_names;
    saln->taxa_index.resize(saln->seq_names.size());
    for (auto it = saln->taxa_index.begin(); it != saln->taxa_index.end(); it++)
        it->resize(nsite, -1);
    
    for (site = 0; site != nsite; site++) {
        Alignment *part_aln = concatenateAlignments(ids[site]);
        saln->partitions.push_back(part_aln);
        int nseq = part_aln->getNSeq();
        //cout << "nseq  = " << nseq << endl;
        for (seq = 0; seq < nseq; seq++) {
            int id = saln->getSeqID(part_aln->getSeqName(seq));
            ASSERT(id >= 0);
            saln->taxa_index[id][site] = seq;
        }
    }
    // now the patterns of sequence-genes presence/absence
    saln->buildPattern();
    return saln;
}

void SuperAlignment::countConstSite() {
+2 −0
Original line number Diff line number Diff line
@@ -12,6 +12,8 @@
/*#cmakedefine HAVE_PCLOSE*/
/* does the platform provide GlobalMemoryStatusEx functions? */
#cmakedefine HAVE_GLOBALMEMORYSTATUSEX
#cmakedefine HAVE_STRNDUP
#cmakedefine HAVE_STRTOK_R

/* does the platform provide backtrace functions? */
#cmakedefine Backtrace_FOUND
+1 −1
Original line number Diff line number Diff line
@@ -1031,7 +1031,7 @@ void mainlb(int n, int m, double *x,
				--ifun;
				--iback;
			}
			strcpy(task, "ERROR: ABNORMAL_TERMINATION_IN_LNSRCH");
			strcpy(task, "WARNING: ABNORMAL_TERMINATION_IN_LNSRCH");
			++iter;
			goto L999;
		} else {
Loading