Giter VIP home page Giter VIP logo

astrid's People

Contributors

pranjalv123 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

astrid's Issues

Error message in latest Mac OS X release

Hi Pranjal,

Just letting you know that I get the following error in the latest release

ASTRID-macos(42463,0x1195c1e00) malloc: *** error for object 0x7ffee3cd2af8: pointer being freed was not allocated
ASTRID-macos(42463,0x1195c1e00) malloc: *** set a breakpoint in malloc_error_break to debug
Abort trap: 6

but it hasn't impacted me using ASTRID (the output files are written before the error occurs).

Also, it looks like UPGMA is the default method now? My output was

Estimating tree
Running upgma

but if I include the -s flag, then the output was

Estimating tree
Running fastme_spr

 . Performing NNI...

 . Performing SPR...

None of this is urgent, just letting you know.

Thanks!
-Erin

Expose UPGMA* as a standalone method

(Again, this is a follow-up to a previous meeting). UPGMA* seems to stand on its own as a method beating BioNJ* in terms of accuracy and running time, it would be great if UPGMA* could be exposed as a distance-based tree estimation method alone from the cli interface.

Crash with free() invalid: size()

Dear Pranjal,

I have successfully installed Astrid with the bazel system as explained in the README.

When I run it, I get the following error:

WARNING: Logging before InitGoogleLogging() is written to STDERR
I0923 15:09:48.831423 24464 astrid.cpp:144] Reading trees...
I0923 15:09:48.831540 24464 astrid.cpp:150] Read 1 trees
Estimating tree
Running upgma
free(): invalid size
Aborted (core dumped)

I reproduce with any input tree(s). For instance:

../ASTRID/bazel-bin/src/ASTRID -i gene_trees.txt  -o output.newick

with gene_trees.txt containing:

((a,b),(c,d));

It looks like ASTRID manages to output a tree (in output.newick.1) but I don't know if this is the final tree.
I reproduced this on both ubuntu and centos.

I also get an issue (but maybe it's related to the invalid free problem) when running bionj, and in this case, I don't get any output tree at all:

../ASTRID/bazel-bin/src/ASTRID-phydstar -i gene_trees.txt  -o output.newick --bionj
WARNING: Logging before InitGoogleLogging() is written to STDERR
I0923 15:18:33.230427 100869 astrid.cpp:144] Reading trees...
I0923 15:18:33.230530 100869 astrid.cpp:150] Read 1 trees
Estimating tree
Running bionj
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007f986e13c4ff, pid=100869, tid=0x00007f98737347c0
#
# JRE version: OpenJDK Runtime Environment (8.0_272-b10) (build 1.8.0_272-b10)
# Java VM: OpenJDK 64-Bit Server VM (25.272-b10 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# V  [libjvm.so+0x7024ff]  get_method_id(JNIEnv_*, _jclass*, char const*, char const*, bool, Thread*) [clone .isra.196]+0x8f
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /data/morelbt/github/phd_experiments/hs_err_pid100869.log
#
# If you would like to submit a bug report, please visit:
#   https://bugzilla.redhat.com/enter_bug.cgi?product=Red%20Hat%20Enterprise%20Linux%207&component=java-1.8.0-openjdk
#
Aborted

I hope you can help!

Best,
Benoit

Potential memory leak during iterations

This is really low priority (honestly AFAIK nobody ran into problems with this), and I really am not familiar with languages without GCs, but I think that during the call to FastME, for initializing the matrices for FastME:

A = initDoubleMatrix (2*numSpecies-2);
D = initDoubleMatrix (2*numSpecies-2);

These matrices never got freed (or did they by FastME? Valgrind seems to say that they leak, but it was also my first time using valgrind.). If they do leak, in between iterations (default -uns) ASTRID might consume much more memory than needed (without iterations the OS just does the freeing), making the ASTRID analysis on a large number of taxa potentially fail. I think just freeing the matrices themselves can save the largest chunk of memory, but I suppose everything for invoking FastME needs to be freed.

Remove experimental OCTAL support

This is cluttering up the main loop and doesn't work in an obvious way. I'll leave the actual OCTAL completion code in octal.h/cpp, and if you want to do some experiments you or I can wire it up again.

CC @RuneBlaze

Switching the default method for missing data to `-u -s` or `-u -n -s`

I am following up from a previous correspondence from Dr. Warnow's lab. As shown in your thesis, -u -s is superior to BioNJ*, so it would be great for either -u -s or -u -n -s to be made the default arguments when missing data is seen

(Of course, let me know if this is how you want me to create the issues, or even if you think I should best do some parts of it. I don't know how simple some of these things are, and whether you prefer pull requests filled with potential C++ novice mistakes over modifying on your own. I can also just maintain a fork if you feel like some of the features are out of scope).

`-u -n -s`, difference from `-u -s`

ASTRID/src/astrid.cpp

Lines 111 to 124 in a0ad471

void fill_in(TaxonSet &ts, DistanceMatrix &dm, std::string tree) {
std::vector<std::string> trees;
trees.push_back(tree);
DistanceMatrix dm_tree = get_distance_matrix(ts, trees, NULL);
for (size_t i = 0; i < ts.size(); i++) {
for (size_t j = i; j < ts.size(); j++) {
if (!dm.has(i, j)) {
dm(i, j) = dm_tree(i, j);
dm.masked(i, j) = 1;
}
}
}
}

From what I gathered, ASTRID does fill in of the matrix using this fill_in function. What I am confused about is that this fill_in seems to be a NOP after called once on the distance matrix. Lines 119 to 120 will only be run (the only place where this function modifies dm) if !dm.has(i,j), which is equivalent to saying (inside the instance of dm) get(i, j, mask_) != 0;. Line 120 will modify the matrix to have mask at taxon i, j to be 1. Therefore each entry, in the process of being filled, will never be filled again in the future.

This seems to imply that -u -n -s is the same as -u -s, since dm is already been filled out (all mask values != 0) when FastME-NNI is run, and the resulting tree is never used (since dm has already been filled out), and FastME itself seems like a pure function (never modifies dm. It only outputs a tree). Therefore the second iteration, under this logic, is not useful in any way. There should be somewhere where my reasoning is wrong (or else -u -n -s is the same as -u -s), but where?

fatal build error: missing DistanceMatrix.hpp

Hello,
Following the instructions to build ASTRID2 but build terminated saying the DistanceMatrix.hpp did not exist. Details below. Any ideas on what went wrong? Thanks

user@tobyg2:/ASTRID/build$ cmake ../src
-- The C compiler identification is GNU 7.4.0
-- The CXX compiler identification is GNU 7.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found Java: /usr/lib/jvm/java-11-oracle/bin/java (found version "11.0.2")
-- Found JNI: /usr/lib/jvm/java-11-oracle/lib/libjawt.so
-- Configuring done
-- Generating done
-- Build files have been written to: /home/user/ASTRID/build
user@tobyg2:
/ASTRID/build$ make
Scanning dependencies of target Test
[ 1%] Building CXX object CMakeFiles/Test.dir/FastMEInterface.cpp.o
In file included from /home/linda_n/ASTRID/src/FastMEInterface.cpp:1:0:
/home/user/ASTRID/src/DistanceMethods.hpp:8:10: fatal error: DistanceMatrix.hpp: No such file or directory
#include <DistanceMatrix.hpp>
^~~~~~~~~~~~~~~~~~~~
compilation terminated.
CMakeFiles/Test.dir/build.make:62: recipe for target 'CMakeFiles/Test.dir/FastMEInterface.cpp.o' failed
make[2]: *** [CMakeFiles/Test.dir/FastMEInterface.cpp.o] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/Test.dir/all' failed
make[1]: *** [CMakeFiles/Test.dir/all] Error 2
Makefile:129: recipe for target 'all' failed
make: *** [all] Error 2
user@tobyg2:~/ASTRID/build$

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.