pranjalv123 / astrid Goto Github PK
View Code? Open in Web Editor NEWFast, accurate species tree estimation.
License: GNU General Public License v2.0
Fast, accurate species tree estimation.
License: GNU General Public License v2.0
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
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/ASTRID/build$ make
-- 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:
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$
(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.
Lines 111 to 124 in a0ad471
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?
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
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:
ASTRID/src/DistanceMethods/FastMEInterface.cpp
Lines 17 to 18 in 2dacaf4
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.
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
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).
hi, it's my first time to use ASTRID. I bazel build //src:ASTRID -c opt successful, but i cannot bazel build //src:ASTRID-phydstar -c opt.
Thanks for any help.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.