[Phylobase-devl] New phylobase build approach using static libncl (Was: Rcpp and OS X compiliation)
Mark Holder
mtholder at gmail.com
Tue Mar 2 22:46:54 CET 2010
Hi again,
Mark Holder and then Peter Cowan wrote:
>> I should be able to fix that aspect of things tomorrow. When I
>> push those changes to NCL, I'll post to this list so that someone
>> with write permissions to phylobase's svn repo can copy those
>> changes into the phylobase.
>
> I'm happy to do this.
At http://people.ku.edu/~mtholder/mth_diff_pkg.tar.gz you'll find a
tar.gz archive. If you unpack it, you'll see the contents of
phylobase's pkg directory with the edits that I had to make to get
things working. Several files were touched (the archive has all of the
pkg if I run svn stat I see:
M pkg/src/NCLInterface.h
M pkg/src/ReadWithNCL.cpp
M pkg/src/nxspublicblocks.cpp
M pkg/src/nxscharactersblock.cpp
M pkg/src/ncl/nxsreader.h
M pkg/src/nxsreader.cpp
M pkg/src/NCLInterface.cpp
M pkg/inst/nexusfiles/treepluscharV01.nex
Note that pkg/inst/nexusfiles/treepluscharV01.nex is not a valid
NEXUS file if you change line 74 from:
BEGIN CHARACTERS2;
to
BEGIN CHARACTERS;
then it should work.
Also note that checkTree(object) in checkdata.R is complaining about
the data returned from pkg/inst/nexusfiles/co1.nex, but I don't know
why. It looks OK to me. It is possible that I broke something, as
I'm not too familiar with what was supposed to be returned by NCL (I
tried to return the same syntax that was originally being returned).
>>> Lastly, is there a way to control the output though Rcpp or
>>> otherwise, a fair bit of what appears to be stderr gets printed in
>>> the R console, it'd be nice to control this.
>>
>> The BASICCMDLINE implementation writes lots of status output to the
>> standard error stream. When I work with it tomorrow, I can make
>> its chattiness controllable by an argument.
>
> That would be wonderful!
I'm partially there. For the NCLInterface.cpp code used by phylobase I
changed it so that it is quiet by default. It is now be possible to
send a numeric argument into BASICCMDLINE.Initialize();
Currently (in ReadWithNCL.cpp) it says,
reader.Initialize(const_cast < char* > (filename.c_str()));
If you change it to
reader.Initialize(const_cast < char* > (filename.c_str()), 0);
you'll see more messages to stderr. The numbers 0-7 generate less and
less output. 8 or higher should be silent (which is the default).
I did not add the hooks in ReadWithNCL.cpp to get a verbosity argument
from R and pass that along to NCL.
> If you have time, I'd like to have a more in depth conversation of
> what NCL is capable and how it is organized. Wrapping NCL is, in my
> opinion, one of the key features of phylobase. But, I also get the
> feeling that there is more functionality we aren't taking advantage
> of.
>
> Perhaps a GSOC student project could come out of it. Or at the very
> least I can expand the developers guide section about NCL so we are
> better able to maintain it in the future.
The NCL docs are terribly out of date. Completely my fault. Paul Lewis
is great about documenting his code, but I have not kept up with the
documenting tasks. I'm happy to chat.
The main potential problems that I see with the ways that phylobase is
using NCL now are:
1. in NCLInterface.cpp there are lots of call to
RemoveUnderscoresAndSpaces to get rid of spaces and _ in names. That
makes names easier to deal with, but at some point will bite you
(somebody will have dataset with a taxon labelled "AB" and another
with "A B", after transformation there will be a name clash).
2. It was not clear to me how different character blocks should
separated. I just return the union of all character matrices. It
seems like, phylobase will need a richer interaction with NCL if
phylobase wants to know about whether the data came in under different
blocks.
all the best,
Mark
Mark Holder
mtholder at ku.edu
http://phylo.bio.ku.edu/mark-holder
==============================================
Department of Ecology and Evolutionary Biology
University of Kansas
6031 Haworth Hall
1200 Sunnyside Avenue
Lawrence, Kansas 66045
lab phone: 785.864.5789
fax (shared): 785.864.5860
==============================================
More information about the Phylobase-devl
mailing list