Git Product home page Git Product logo

ncl's Introduction

NCL - the NEXUS Class Library

Build Status

This is version 2.1.21-dev of NCL by Paul O. Lewis (and others see below)

This git repo was forked from https://github.com/mtholder/ncl so that all of the open tree of life developers would have write permissions. Mark is adding several example programs for dealing with trees from the Open Tree project. They are being added to this repo just because it is easier to distribute NCL-dependent code as a part of the library than it is to document the procedure of installing C++ libraries and linking to them. If we keep using these tools, we can fairly easily pull out these examples as free standing client repo(s).

If we find any changes need to be made to the existing files in the ncl subdir, we should try to remember to pull those back into the mtholder fork of the repo so that other users of NCL can benefit.

Most documentation for this C++ class library is in the form of HTML files in the html directory. Please begin by viewing the html/index.html file in your web browser.

See the INSTALL file for important information about building and installing the NCL and example programs, and incorporating the NCL into your own applications.

As of March 09, 2012, NCL is available under a Simplified BSD license (see BSDLicense.txt) in addition to the GPL license.

ACKNOWLEDGEMENTS

NCL AUTHORS -- the author of the NEXUS Class Library (NCL) version 2.0 is

Paul O. Lewis, Ph.D. Department of Ecology and Evolutionary Biology The University of Connecticut 75 North Eagleville Road, Unit 3043 Storrs, CT 06269-3043 U.S.A.

WWW: http://lewis.eeb.uconn.edu/lewishome Email: [email protected]

Versions after 2.0 contain changes primarily made by: Mark T. Holder [email protected]

Other contributors to these versions include: Derrick Zwickl Brian O'Meara Brandon Chisham François Michonneau Jeet Sukumaran

Chris Desjardins (https://github.com/cdesjardins) provided the cmake files.

The code in examples/phylobase... was written by Brian O'Meara and Derrick Zwickl for phylobase.

David Suárez Pascal contributed SWIG bindings which heavily influenced those found in branches/v2.2. Thanks to David for blazing the way on the swig binding, Google for funding, and NESCent (in particular Hilmar Lapp) for getting the NESCent GSoC program going.

The 2010 GSoC effort also led to enhancements in terms of annotation storage and xml parsing which are currently on. Michael Elliot contributed some code to the branches/xml branch. Thanks to NESCent and Google for supporting that work.

Many of the files used for testing were provided by Arlin Stoltzfus (see http://www.molevol.org/camel/projects/nexus/ for more information), the Mesquite package, and from TreeBase (thanks, Bill Piel!).

ncl's People

Contributors

bredelings avatar cdesjardins avatar jimallman avatar mbrazeau avatar ms609 avatar mtholder avatar zwickl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

ncl's Issues

Please add release tags

Hi,
I just realised by chance that ncl moved from SourceForge (latest version 2.1.18) to Github (specifying 2.1.21 in README.md). I would love to update the Debian package to the most recent version but to do so it would really help if you would add release tags to enable us spotting if new code is ready for a release distribution.
Thanks for considering, Andreas.

License oddities

  1. The repo seems to be dual licensed BSD and GPLv2. Is that intentional?
  2. Is there a reason to prefer GPLv2 over GPLv3?
    Thanks

Build possibilities for ncl

Hello, I am working with @mbrazeau on a program called morphy that uses ncl, I put a copy of it in github a while ago now and it works great. Lately however we have been doing some rework and expanding to new platforms (i.e. windows). In order to support this I have been using cmake to build everything. In ncl however the issue is that you use the rather old auto-tools on posix and just have a msvc project file for windows (which in my version at least was missing some files, and had different include paths for debug and release, and other minor things that were broken). This works but is not great; obviously there are maintenance issues. I think for a lib like ncl it would be rather trivial to add some cmake files and get rid of your current build systems and support all major platforms and all version of msvc, xcode, eclipse, make, etc... My question is would you be willing to accept a pull request with such a change? If so I will put that together for you.

compilation issue with windows

These lines:
https://github.com/mtholder/ncl/blob/master/ncl/nxstaxablock.cpp#L278-280

are causing issue when compiling NCL under windows (specifically using the winbuilder tool for R packages):

g++ -m64 -I"D:/RCompile/recent/R/include"            -I"d:/RCompile/CRANpkg/lib/3.2/Rcpp/include" -I"d:/Rcompile/CRANpkg/extralibs215/local215/include"  -I. -DHAVE_INTTYPES_H -DASSERTS_TO_EXCEPTIONS   -O3 -Wall  -mtune=core2            -c nxstaxablock.cpp -o nxstaxablock.o
nxstaxablock.cpp: In member function 'void NxsTaxaBlock::CheckCapitalizedTaxonLabel(const string&) const':
nxstaxablock.cpp:279:54: error: ambiguous overload for 'operator<<' in 'e.NxsString::operator<<(((const char*)"Number of stored labels (")) << ((const NxsTaxaBlock*)this)->NxsTaxaBlock::taxLabels.std::vector<_Tp, _Alloc>::size [with _Tp = NxsString, _Alloc = std::allocator<NxsString>, std::vector<_Tp, _Alloc>::size_type = long long unsigned int]()'
nxstaxablock.cpp:279:54: note: candidates are:
./ncl/nxsstring.h:617:19: note: NxsString& NxsString::operator<<(int)
./ncl/nxsstring.h:626:19: note: NxsString& NxsString::operator<<(unsigned int)
./ncl/nxsstring.h:635:19: note: NxsString& NxsString::operator<<(long int)
./ncl/nxsstring.h:644:19: note: NxsString& NxsString::operator<<(long unsigned int)
./ncl/nxsstring.h:653:19: note: NxsString& NxsString::operator<<(double)
./ncl/nxsstring.h:662:19: note: NxsString& NxsString::operator<<(const char*) <near match>
./ncl/nxsstring.h:662:19: note:   no known conversion for argument 1 from 'std::vector<NxsString>::size_type {aka long long unsigned int}' to 'const char*'
./ncl/nxsstring.h:671:19: note: NxsString& NxsString::operator<<(char)
./ncl/nxsstring.h:680:19: note: NxsString& NxsString::operator<<(const string&) <near match>
./ncl/nxsstring.h:680:19: note:   no known conversion for argument 1 from 'std::vector<NxsString>::size_type {aka long long unsigned int}' to 'const string& {aka const std::basic_string<char>&}'
make: *** [nxstaxablock.o] Error 1

Duplicate node ids created (possibly due to multiple trees?)

I'm calling NCLconverter from the Open Tree curation app, sending the test file avian_ovomucoids.nex to import its trees. It's then called with these options:

['/Users/jima/.virtualenvironments/opentree/bin/python',
 '/Users/jima/projects/nescent/opentree/web2py/applications/curator/modules/joblauncher.py',
 '/Users/jima/projects/nescent/opentree/opentree/curator/private/scratch/2nexml/uef741a68-912f-4e8c-ba8b-0cfdf08843ba',
 '',
 'out.xml',
 'err.txt',
 '/Users/jima/projects/nescent/opentree/opentree/curator/private/bin/NCLconverter',
 '-fnexus',
 '-g',
 '-pe505',
 '-pO10',
 '-pt3',
 '-pT10',
 '-po128',
 '-pn505',
 'in.nex']

Note that the next available node id is 505. When the NexSON is returned with added trees, there are dozens (not hundreds) of duplicate ids: 505, 506, 509, 636, ... reported in the JS console.

Could the duplication be happening because there are multiple trees in this file?

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.