[med-svn] r9 - in trunk/packages: . treeviewx treeviewx/branches
treeviewx/branches/upstream treeviewx/branches/upstream/current
treeviewx/branches/upstream/current/TreeLib
treeviewx/branches/upstream/current/TreeLib/gport
treeviewx/branches/upstream/current/bitmaps
treeviewx/branches/upstream/current/bitmaps/mac
treeviewx/branches/upstream/current/ncl-2.0
treeviewx/branches/upstream/current/ncl-2.0/data
treeviewx/branches/upstream/current/ncl-2.0/html
treeviewx/branches/upstream/current/ncl-2.0/src
treeviewx/branches/upstream/current/tv.pbproj
treeviewx/branches/upstream/current/tv.xcode
Charles Plessy
charles-guest at costa.debian.org
Mon Mar 27 15:52:00 UTC 2006
Author: charles-guest
Date: 2006-03-27 15:51:50 +0000 (Mon, 27 Mar 2006)
New Revision: 9
Added:
trunk/packages/treeviewx/
trunk/packages/treeviewx/branches/
trunk/packages/treeviewx/branches/upstream/
trunk/packages/treeviewx/branches/upstream/current/
trunk/packages/treeviewx/branches/upstream/current/AUTHORS
trunk/packages/treeviewx/branches/upstream/current/COPYING
trunk/packages/treeviewx/branches/upstream/current/ChangeLog
trunk/packages/treeviewx/branches/upstream/current/INSTALL
trunk/packages/treeviewx/branches/upstream/current/Makefile.am
trunk/packages/treeviewx/branches/upstream/current/Makefile.in
trunk/packages/treeviewx/branches/upstream/current/NEWS
trunk/packages/treeviewx/branches/upstream/current/README
trunk/packages/treeviewx/branches/upstream/current/TreeLib/
trunk/packages/treeviewx/branches/upstream/current/TreeLib/Makefile.am
trunk/packages/treeviewx/branches/upstream/current/TreeLib/Makefile.in
trunk/packages/treeviewx/branches/upstream/current/TreeLib/Parse.cpp
trunk/packages/treeviewx/branches/upstream/current/TreeLib/Parse.h
trunk/packages/treeviewx/branches/upstream/current/TreeLib/TreeLib.cpp
trunk/packages/treeviewx/branches/upstream/current/TreeLib/TreeLib.h
trunk/packages/treeviewx/branches/upstream/current/TreeLib/gport/
trunk/packages/treeviewx/branches/upstream/current/TreeLib/gport/gdefs.h
trunk/packages/treeviewx/branches/upstream/current/TreeLib/gport/gport.cpp
trunk/packages/treeviewx/branches/upstream/current/TreeLib/gport/gport.h
trunk/packages/treeviewx/branches/upstream/current/TreeLib/lcaquery.cpp
trunk/packages/treeviewx/branches/upstream/current/TreeLib/lcaquery.h
trunk/packages/treeviewx/branches/upstream/current/TreeLib/mast.cpp
trunk/packages/treeviewx/branches/upstream/current/TreeLib/mast.h
trunk/packages/treeviewx/branches/upstream/current/TreeLib/nodeiterator.h
trunk/packages/treeviewx/branches/upstream/current/TreeLib/ntree.cpp
trunk/packages/treeviewx/branches/upstream/current/TreeLib/ntree.h
trunk/packages/treeviewx/branches/upstream/current/TreeLib/profile.h
trunk/packages/treeviewx/branches/upstream/current/TreeLib/quartet.cpp
trunk/packages/treeviewx/branches/upstream/current/TreeLib/quartet.h
trunk/packages/treeviewx/branches/upstream/current/TreeLib/tokeniser.cpp
trunk/packages/treeviewx/branches/upstream/current/TreeLib/tokeniser.h
trunk/packages/treeviewx/branches/upstream/current/TreeLib/treedrawer.cpp
trunk/packages/treeviewx/branches/upstream/current/TreeLib/treedrawer.h
trunk/packages/treeviewx/branches/upstream/current/TreeLib/treeorder.cpp
trunk/packages/treeviewx/branches/upstream/current/TreeLib/treeorder.h
trunk/packages/treeviewx/branches/upstream/current/TreeLib/treereader.cpp
trunk/packages/treeviewx/branches/upstream/current/TreeLib/treereader.h
trunk/packages/treeviewx/branches/upstream/current/TreeLib/treewriter.cpp
trunk/packages/treeviewx/branches/upstream/current/TreeLib/treewriter.h
trunk/packages/treeviewx/branches/upstream/current/aclocal.m4
trunk/packages/treeviewx/branches/upstream/current/bitmaps/
trunk/packages/treeviewx/branches/upstream/current/bitmaps/copy.xpm
trunk/packages/treeviewx/branches/upstream/current/bitmaps/internal.xpm
trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/
trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/app.icns
trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/copy.xpm
trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/doc.icns
trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/internal.xpm
trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/new.xpm
trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/next.xpm
trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/open.xpm
trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/paste.xpm
trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/phylogram.xpm
trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/previous.xpm
trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/print.xpm
trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/print_preview.xpm
trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/rectangletree.xpm
trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/saveas.xpm
trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/slanttree.xpm
trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/zoomin.xpm
trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/zoomout.xpm
trunk/packages/treeviewx/branches/upstream/current/bitmaps/new.xpm
trunk/packages/treeviewx/branches/upstream/current/bitmaps/next.xpm
trunk/packages/treeviewx/branches/upstream/current/bitmaps/open.xpm
trunk/packages/treeviewx/branches/upstream/current/bitmaps/paste.xpm
trunk/packages/treeviewx/branches/upstream/current/bitmaps/phylogram.xpm
trunk/packages/treeviewx/branches/upstream/current/bitmaps/previous.xpm
trunk/packages/treeviewx/branches/upstream/current/bitmaps/print.xpm
trunk/packages/treeviewx/branches/upstream/current/bitmaps/print_preview.xpm
trunk/packages/treeviewx/branches/upstream/current/bitmaps/rectangletree.xpm
trunk/packages/treeviewx/branches/upstream/current/bitmaps/saveas.xpm
trunk/packages/treeviewx/branches/upstream/current/bitmaps/slanttree.xpm
trunk/packages/treeviewx/branches/upstream/current/bitmaps/treeview.xpm
trunk/packages/treeviewx/branches/upstream/current/bitmaps/zoomin.xpm
trunk/packages/treeviewx/branches/upstream/current/bitmaps/zoomout.xpm
trunk/packages/treeviewx/branches/upstream/current/configure
trunk/packages/treeviewx/branches/upstream/current/configure.in
trunk/packages/treeviewx/branches/upstream/current/depcomp
trunk/packages/treeviewx/branches/upstream/current/install-sh
trunk/packages/treeviewx/branches/upstream/current/missing
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/Makefile.am
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/Makefile.in
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/GPCombined.nex
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/GPMolecular.nex
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/GPMorph.nex
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/LPCombined.nex
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/LPMolecular.nex
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/LPMorph.nex
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/P95morph.nex
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/P95rbcl.nex
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/W98morph.nex
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/characters.nex
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/characters.ref.txt
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/distances.nex
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/kenrickcrane.nex
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/html/
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/html/NexusClassLibrary.html
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/Makefile.am
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/Makefile.in
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/allelesblock.cpp
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/allelesblock.h
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/assumptionsblock.cpp
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/assumptionsblock.h
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/charactersblock.cpp
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/charactersblock.h
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/datablock.cpp
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/datablock.h
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/discretedatum.cpp
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/discretedatum.h
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/discretematrix.cpp
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/discretematrix.h
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/distancedatum.cpp
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/distancedatum.h
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/distancesblock.cpp
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/distancesblock.h
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexus.cpp
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexus.h
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexusblock.cpp
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexusdefs.h
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexustoken.cpp
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexustoken.h
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nxsdate.cpp
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nxsdate.h
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nxsstring.cpp
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nxsstring.h
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/setreader.cpp
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/setreader.h
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/taxablock.cpp
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/taxablock.h
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/treesblock.cpp
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/treesblock.h
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/xnexus.cpp
trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/xnexus.h
trunk/packages/treeviewx/branches/upstream/current/tdoc.cpp
trunk/packages/treeviewx/branches/upstream/current/tdoc.h
trunk/packages/treeviewx/branches/upstream/current/tproject.h
trunk/packages/treeviewx/branches/upstream/current/treeorder_dialog.cpp
trunk/packages/treeviewx/branches/upstream/current/treeorder_dialog.h
trunk/packages/treeviewx/branches/upstream/current/tv.cpp
trunk/packages/treeviewx/branches/upstream/current/tv.h
trunk/packages/treeviewx/branches/upstream/current/tv.pbproj/
trunk/packages/treeviewx/branches/upstream/current/tv.pbproj/project.pbxproj
trunk/packages/treeviewx/branches/upstream/current/tv.pbproj/rpage.pbxuser
trunk/packages/treeviewx/branches/upstream/current/tv.spec.in
trunk/packages/treeviewx/branches/upstream/current/tv.xcode/
trunk/packages/treeviewx/branches/upstream/current/tv.xcode/project.pbxproj
trunk/packages/treeviewx/branches/upstream/current/tv.xcode/rpage.pbxuser
trunk/packages/treeviewx/branches/upstream/current/tview.cpp
trunk/packages/treeviewx/branches/upstream/current/tview.h
trunk/packages/treeviewx/tags/
Log:
[svn-inject] Installing original source of treeviewx
Added: trunk/packages/treeviewx/branches/upstream/current/AUTHORS
===================================================================
Property changes on: trunk/packages/treeviewx/branches/upstream/current/AUTHORS
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/COPYING
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/COPYING 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/COPYING 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,340 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
Property changes on: trunk/packages/treeviewx/branches/upstream/current/COPYING
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ChangeLog
===================================================================
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ChangeLog
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/INSTALL
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/INSTALL 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/INSTALL 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,182 @@
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+ The file `configure.in' is used to create `configure' by a program
+called `autoconf'. You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes awhile. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. You can give `configure'
+initial values for variables by setting them in the environment. Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+ env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory. After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ In addition, if you use an unusual directory layout you can give
+options like `--bindir=PATH' to specify different values for particular
+kinds of files. Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on. Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+ CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+ If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+ Use and save the results of the tests in FILE instead of
+ `./config.cache'. Set FILE to `/dev/null' to disable caching, for
+ debugging `configure'.
+
+`--help'
+ Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made. To
+ suppress all normal output, redirect it to `/dev/null' (any error
+ messages will still be shown).
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--version'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
Property changes on: trunk/packages/treeviewx/branches/upstream/current/INSTALL
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/Makefile.am
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/Makefile.am 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/Makefile.am 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,44 @@
+# $Id: Makefile.am,v 1.21 2005/08/30 11:48:53 rdmp1c Exp $
+
+# The root makefile.
+
+TREELIBDIR = TreeLib
+GPORTDIR = $(TREELIBDIR)/gport
+
+# to do: add XML support back into Unix version (cf. TreeEdit)
+#EXPATPPDIR = $(TREELIBDIR)/expatpp
+#XMLPARSEDIR = $(EXPATPPDIR)/xmlparse
+
+NCLDIR = ncl-2.0/src
+#LIBDIRS = -L$(NCLDIR)
+#-L$(XMLPARSEDIR)
+
+LIBS = @LIBS@ -L$(NCLDIR) -lncl -L$(TREELIBDIR) -ltreelib
+#-lexpat
+INCLUDES = -I$(NCLDIR) -I$(TREELIBDIR) -I$(GPORTDIR)
+#-I$(EXPATPPDIR) -I$(XMLPARSEDIR) -I$(EXPATPPDIR)/xmltok
+
+# We want to build the tree and NEXUS parsing code as separate libraries
+SUBDIRS = ncl-2.0 TreeLib
+
+# The actual TreeView X program
+bin_PROGRAMS = tv
+tv_SOURCES = tview.cpp tdoc.cpp tv.cpp treeorder_dialog.cpp
+
+
+# Include headers, bitmaps, icons, and IDE files in the distribution
+EXTRA_DIST = tdoc.h tproject.h tv.h tview.h treeorder_dialog.h \
+ bitmaps/paste.xpm bitmaps/new.xpm bitmaps/copy.xpm bitmaps/phylogram.xpm bitmaps/print_preview.xpm \
+ bitmaps/slanttree.xpm bitmaps/next.xpm bitmaps/previous.xpm bitmaps/rectangletree.xpm \
+ bitmaps/treeview.xpm bitmaps/open.xpm bitmaps/print.xpm bitmaps/saveas.xpm \
+ bitmaps/mac/copy.xpm bitmaps/mac/phylogram.xpm bitmaps/mac/print_preview.xpm \
+ bitmaps/mac/slanttree.xpm bitmaps/mac/next.xpm bitmaps/mac/previous.xpm bitmaps/mac/rectangletree.xpm \
+ bitmaps/mac/open.xpm bitmaps/mac/print.xpm bitmaps/mac/saveas.xpm \
+ bitmaps/mac/internal.xpm bitmaps/mac/new.xpm bitmaps/mac/paste.xpm \
+ bitmaps/mac/zoomin.xpm bitmaps/mac/zoomout.xpm bitmaps/zoomin.xpm bitmaps/zoomout.xpm bitmaps/internal.xpm \
+ tv.pbproj/project.pbxproj tv.pbproj/rpage.pbxuser \
+ tv.xcode/project.pbxproj tv.xcode/rpage.pbxuser \
+ bitmaps/mac/app.icns bitmaps/mac/doc.icns
+
+
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/Makefile.am
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/Makefile.in
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/Makefile.in 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/Makefile.in 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,657 @@
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+# $Id: Makefile.am,v 1.21 2005/08/30 11:48:53 rdmp1c Exp $
+
+# The root makefile.
+
+SOURCES = $(tv_SOURCES)
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = .
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+bin_PROGRAMS = tv$(EXEEXT)
+subdir = .
+DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in $(srcdir)/tv.spec.in \
+ $(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \
+ depcomp install-sh missing
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno configure.status.lineno
+mkinstalldirs = $(install_sh) -d
+CONFIG_CLEAN_FILES = tv.spec
+am__installdirs = "$(DESTDIR)$(bindir)"
+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+PROGRAMS = $(bin_PROGRAMS)
+am_tv_OBJECTS = tview.$(OBJEXT) tdoc.$(OBJEXT) tv.$(OBJEXT) \
+ treeorder_dialog.$(OBJEXT)
+tv_OBJECTS = $(am_tv_OBJECTS)
+tv_LDADD = $(LDADD)
+DEFAULT_INCLUDES = -I. -I$(srcdir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+ -o $@
+SOURCES = $(tv_SOURCES)
+DIST_SOURCES = $(tv_SOURCES)
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-exec-recursive install-info-recursive \
+ install-recursive installcheck-recursive installdirs-recursive \
+ pdf-recursive ps-recursive uninstall-info-recursive \
+ uninstall-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+ { test ! -d $(distdir) \
+ || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
+ && rm -fr $(distdir); }; }
+DIST_ARCHIVES = $(distdir).tar.gz
+GZIP_ENV = --best
+distuninstallcheck_listfiles = find . -type f -print
+distcleancheck_listfiles = find . -type f -print
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+ENT_FALSE = @ENT_FALSE@
+ENT_TRUE = @ENT_TRUE@
+EXEEXT = @EXEEXT@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+#LIBDIRS = -L$(NCLDIR)
+#-L$(XMLPARSEDIR)
+LIBS = @LIBS@ -L$(NCLDIR) -lncl -L$(TREELIBDIR) -ltreelib
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+WX_CONFIG = @WX_CONFIG@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build_alias = @build_alias@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host_alias = @host_alias@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+TREELIBDIR = TreeLib
+GPORTDIR = $(TREELIBDIR)/gport
+
+# to do: add XML support back into Unix version (cf. TreeEdit)
+#EXPATPPDIR = $(TREELIBDIR)/expatpp
+#XMLPARSEDIR = $(EXPATPPDIR)/xmlparse
+NCLDIR = ncl-2.0/src
+#-lexpat
+INCLUDES = -I$(NCLDIR) -I$(TREELIBDIR) -I$(GPORTDIR)
+#-I$(EXPATPPDIR) -I$(XMLPARSEDIR) -I$(EXPATPPDIR)/xmltok
+
+# We want to build the tree and NEXUS parsing code as separate libraries
+SUBDIRS = ncl-2.0 TreeLib
+tv_SOURCES = tview.cpp tdoc.cpp tv.cpp treeorder_dialog.cpp
+
+# Include headers, bitmaps, icons, and IDE files in the distribution
+EXTRA_DIST = tdoc.h tproject.h tv.h tview.h treeorder_dialog.h \
+ bitmaps/paste.xpm bitmaps/new.xpm bitmaps/copy.xpm bitmaps/phylogram.xpm bitmaps/print_preview.xpm \
+ bitmaps/slanttree.xpm bitmaps/next.xpm bitmaps/previous.xpm bitmaps/rectangletree.xpm \
+ bitmaps/treeview.xpm bitmaps/open.xpm bitmaps/print.xpm bitmaps/saveas.xpm \
+ bitmaps/mac/copy.xpm bitmaps/mac/phylogram.xpm bitmaps/mac/print_preview.xpm \
+ bitmaps/mac/slanttree.xpm bitmaps/mac/next.xpm bitmaps/mac/previous.xpm bitmaps/mac/rectangletree.xpm \
+ bitmaps/mac/open.xpm bitmaps/mac/print.xpm bitmaps/mac/saveas.xpm \
+ bitmaps/mac/internal.xpm bitmaps/mac/new.xpm bitmaps/mac/paste.xpm \
+ bitmaps/mac/zoomin.xpm bitmaps/mac/zoomout.xpm bitmaps/zoomin.xpm bitmaps/zoomout.xpm bitmaps/internal.xpm \
+ tv.pbproj/project.pbxproj tv.pbproj/rpage.pbxuser \
+ tv.xcode/project.pbxproj tv.xcode/rpage.pbxuser \
+ bitmaps/mac/app.icns bitmaps/mac/doc.icns
+
+all: all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .cpp .o .obj
+am--refresh:
+ @:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \
+ cd $(srcdir) && $(AUTOMAKE) --gnu \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ echo ' $(SHELL) ./config.status'; \
+ $(SHELL) ./config.status;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ $(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+tv.spec: $(top_builddir)/config.status $(srcdir)/tv.spec.in
+ cd $(top_builddir) && $(SHELL) ./config.status $@
+install-binPROGRAMS: $(bin_PROGRAMS)
+ @$(NORMAL_INSTALL)
+ test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ if test -f $$p \
+ ; then \
+ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+ echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
+ $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
+ else :; fi; \
+ done
+
+uninstall-binPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
+ rm -f "$(DESTDIR)$(bindir)/$$f"; \
+ done
+
+clean-binPROGRAMS:
+ -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+tv$(EXEEXT): $(tv_OBJECTS) $(tv_DEPENDENCIES)
+ @rm -f tv$(EXEEXT)
+ $(CXXLINK) $(tv_LDFLAGS) $(tv_OBJECTS) $(tv_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tdoc.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/treeorder_dialog.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tv.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tview.Po at am__quote@
+
+.cpp.o:
+ at am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+ at am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ at am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+ at am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+uninstall-info-am:
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ $(am__remove_distdir)
+ mkdir $(distdir)
+ $(mkdir_p) $(distdir)/. $(distdir)/bitmaps $(distdir)/bitmaps/mac $(distdir)/tv.pbproj $(distdir)/tv.xcode
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(mkdir_p) "$(distdir)/$$subdir" \
+ || exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+ -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
+ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
+ || chmod -R a+r $(distdir)
+dist-gzip: distdir
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ $(am__remove_distdir)
+
+dist-bzip2: distdir
+ tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+ $(am__remove_distdir)
+
+dist-tarZ: distdir
+ tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+ $(am__remove_distdir)
+
+dist-shar: distdir
+ shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+ $(am__remove_distdir)
+
+dist-zip: distdir
+ -rm -f $(distdir).zip
+ zip -rq $(distdir).zip $(distdir)
+ $(am__remove_distdir)
+
+dist dist-all: distdir
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ $(am__remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration. Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+ case '$(DIST_ARCHIVES)' in \
+ *.tar.gz*) \
+ GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
+ *.tar.bz2*) \
+ bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
+ *.tar.Z*) \
+ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+ *.shar.gz*) \
+ GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
+ *.zip*) \
+ unzip $(distdir).zip ;;\
+ esac
+ chmod -R a-w $(distdir); chmod a+w $(distdir)
+ mkdir $(distdir)/_build
+ mkdir $(distdir)/_inst
+ chmod a-w $(distdir)
+ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+ && cd $(distdir)/_build \
+ && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+ $(DISTCHECK_CONFIGURE_FLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) dvi \
+ && $(MAKE) $(AM_MAKEFLAGS) check \
+ && $(MAKE) $(AM_MAKEFLAGS) install \
+ && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+ && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+ distuninstallcheck \
+ && chmod -R a-w "$$dc_install_base" \
+ && ({ \
+ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+ } || { rm -rf "$$dc_destdir"; exit 1; }) \
+ && rm -rf "$$dc_destdir" \
+ && $(MAKE) $(AM_MAKEFLAGS) dist \
+ && rm -rf $(DIST_ARCHIVES) \
+ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck
+ $(am__remove_distdir)
+ @(echo "$(distdir) archives ready for distribution: "; \
+ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+ sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}'
+distuninstallcheck:
+ @cd $(distuninstallcheck_dir) \
+ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+ || { echo "ERROR: files left after uninstall:" ; \
+ if test -n "$(DESTDIR)"; then \
+ echo " (check DESTDIR support)"; \
+ fi ; \
+ $(distuninstallcheck_listfiles) ; \
+ exit 1; } >&2
+distcleancheck: distclean
+ @if test '$(srcdir)' = . ; then \
+ echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+ exit 1 ; \
+ fi
+ @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+ || { echo "ERROR: files left in build directory after distclean:" ; \
+ $(distcleancheck_listfiles) ; \
+ exit 1; } >&2
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(PROGRAMS)
+installdirs: installdirs-recursive
+installdirs-am:
+ for dir in "$(DESTDIR)$(bindir)"; do \
+ test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-exec-am: install-binPROGRAMS
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -rf $(top_srcdir)/autom4te.cache
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS uninstall-info-am
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \
+ check-am clean clean-binPROGRAMS clean-generic clean-recursive \
+ ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \
+ dist-shar dist-tarZ dist-zip distcheck distclean \
+ distclean-compile distclean-generic distclean-recursive \
+ distclean-tags distcleancheck distdir distuninstallcheck dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-binPROGRAMS install-data install-data-am install-exec \
+ install-exec-am install-info install-info-am install-man \
+ install-strip installcheck installcheck-am installdirs \
+ installdirs-am maintainer-clean maintainer-clean-generic \
+ maintainer-clean-recursive mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-recursive pdf pdf-am ps ps-am \
+ tags tags-recursive uninstall uninstall-am \
+ uninstall-binPROGRAMS uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
Added: trunk/packages/treeviewx/branches/upstream/current/NEWS
===================================================================
Property changes on: trunk/packages/treeviewx/branches/upstream/current/NEWS
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/README
===================================================================
Property changes on: trunk/packages/treeviewx/branches/upstream/current/README
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/Makefile.am
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/Makefile.am 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/Makefile.am 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,20 @@
+
+noinst_LIBRARIES = libtreelib.a
+if ENT
+INCLUDES = -Igport -I../graph
+libtreelib_a_SOURCES = nodeiterator.h Parse.cpp Parse.h \
+ profile.h tokeniser.cpp tokeniser.h TreeLib.cpp TreeLib.h \
+ treedrawer.cpp treedrawer.h treereader.cpp treereader.h \
+ treewriter.cpp treewriter.h treeorder.cpp treeorder.h \
+ ntree.cpp ntree.h mast.cpp mast.h lcaquery.cpp lcaquery.h quartet.cpp quartet.h \
+ gport/gport.cpp
+else
+INCLUDES = -Igport
+
+libtreelib_a_SOURCES = nodeiterator.h Parse.cpp Parse.h \
+ profile.h tokeniser.cpp tokeniser.h TreeLib.cpp TreeLib.h \
+ treedrawer.cpp treedrawer.h treereader.cpp treereader.h \
+ treewriter.cpp treewriter.h treeorder.cpp treeorder.h
+endif
+
+EXTRA_DIST = gport/gport.h gport/gdefs.h gport/gport.cpp
Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/Makefile.am
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/Makefile.in
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/Makefile.in 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/Makefile.in 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,431 @@
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+SOURCES = $(libtreelib_a_SOURCES)
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+subdir = TreeLib
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_CLEAN_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+AR = ar
+ARFLAGS = cru
+libtreelib_a_AR = $(AR) $(ARFLAGS)
+libtreelib_a_LIBADD =
+am__libtreelib_a_SOURCES_DIST = nodeiterator.h Parse.cpp Parse.h \
+ profile.h tokeniser.cpp tokeniser.h TreeLib.cpp TreeLib.h \
+ treedrawer.cpp treedrawer.h treereader.cpp treereader.h \
+ treewriter.cpp treewriter.h treeorder.cpp treeorder.h \
+ ntree.cpp ntree.h mast.cpp mast.h lcaquery.cpp lcaquery.h \
+ quartet.cpp quartet.h gport/gport.cpp
+ at ENT_FALSE@am_libtreelib_a_OBJECTS = Parse.$(OBJEXT) \
+ at ENT_FALSE@ tokeniser.$(OBJEXT) TreeLib.$(OBJEXT) \
+ at ENT_FALSE@ treedrawer.$(OBJEXT) treereader.$(OBJEXT) \
+ at ENT_FALSE@ treewriter.$(OBJEXT) treeorder.$(OBJEXT)
+ at ENT_TRUE@am_libtreelib_a_OBJECTS = Parse.$(OBJEXT) \
+ at ENT_TRUE@ tokeniser.$(OBJEXT) TreeLib.$(OBJEXT) \
+ at ENT_TRUE@ treedrawer.$(OBJEXT) treereader.$(OBJEXT) \
+ at ENT_TRUE@ treewriter.$(OBJEXT) treeorder.$(OBJEXT) \
+ at ENT_TRUE@ ntree.$(OBJEXT) mast.$(OBJEXT) lcaquery.$(OBJEXT) \
+ at ENT_TRUE@ quartet.$(OBJEXT) gport.$(OBJEXT)
+libtreelib_a_OBJECTS = $(am_libtreelib_a_OBJECTS)
+DEFAULT_INCLUDES = -I. -I$(srcdir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+ -o $@
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(libtreelib_a_SOURCES)
+DIST_SOURCES = $(am__libtreelib_a_SOURCES_DIST)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+ENT_FALSE = @ENT_FALSE@
+ENT_TRUE = @ENT_TRUE@
+EXEEXT = @EXEEXT@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+WX_CONFIG = @WX_CONFIG@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build_alias = @build_alias@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host_alias = @host_alias@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+noinst_LIBRARIES = libtreelib.a
+ at ENT_FALSE@INCLUDES = -Igport
+ at ENT_TRUE@INCLUDES = -Igport -I../graph
+ at ENT_FALSE@libtreelib_a_SOURCES = nodeiterator.h Parse.cpp Parse.h \
+ at ENT_FALSE@ profile.h tokeniser.cpp tokeniser.h TreeLib.cpp TreeLib.h \
+ at ENT_FALSE@ treedrawer.cpp treedrawer.h treereader.cpp treereader.h \
+ at ENT_FALSE@ treewriter.cpp treewriter.h treeorder.cpp treeorder.h
+
+ at ENT_TRUE@libtreelib_a_SOURCES = nodeiterator.h Parse.cpp Parse.h \
+ at ENT_TRUE@ profile.h tokeniser.cpp tokeniser.h TreeLib.cpp TreeLib.h \
+ at ENT_TRUE@ treedrawer.cpp treedrawer.h treereader.cpp treereader.h \
+ at ENT_TRUE@ treewriter.cpp treewriter.h treeorder.cpp treeorder.h \
+ at ENT_TRUE@ ntree.cpp ntree.h mast.cpp mast.h lcaquery.cpp lcaquery.h quartet.cpp quartet.h \
+ at ENT_TRUE@ gport/gport.cpp
+
+EXTRA_DIST = gport/gport.h gport/gdefs.h gport/gport.cpp
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu TreeLib/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu TreeLib/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+clean-noinstLIBRARIES:
+ -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+libtreelib.a: $(libtreelib_a_OBJECTS) $(libtreelib_a_DEPENDENCIES)
+ -rm -f libtreelib.a
+ $(libtreelib_a_AR) libtreelib.a $(libtreelib_a_OBJECTS) $(libtreelib_a_LIBADD)
+ $(RANLIB) libtreelib.a
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Parse.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/TreeLib.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gport.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/lcaquery.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/mast.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ntree.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/quartet.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tokeniser.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/treedrawer.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/treeorder.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/treereader.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/treewriter.Po at am__quote@
+
+.cpp.o:
+ at am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+ at am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ at am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+ at am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+gport.o: gport/gport.cpp
+ at am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT gport.o -MD -MP -MF "$(DEPDIR)/gport.Tpo" -c -o gport.o `test -f 'gport/gport.cpp' || echo '$(srcdir)/'`gport/gport.cpp; \
+ at am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/gport.Tpo" "$(DEPDIR)/gport.Po"; else rm -f "$(DEPDIR)/gport.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='gport/gport.cpp' object='gport.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o gport.o `test -f 'gport/gport.cpp' || echo '$(srcdir)/'`gport/gport.cpp
+
+gport.obj: gport/gport.cpp
+ at am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT gport.obj -MD -MP -MF "$(DEPDIR)/gport.Tpo" -c -o gport.obj `if test -f 'gport/gport.cpp'; then $(CYGPATH_W) 'gport/gport.cpp'; else $(CYGPATH_W) '$(srcdir)/gport/gport.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/gport.Tpo" "$(DEPDIR)/gport.Po"; else rm -f "$(DEPDIR)/gport.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='gport/gport.cpp' object='gport.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o gport.obj `if test -f 'gport/gport.cpp'; then $(CYGPATH_W) 'gport/gport.cpp'; else $(CYGPATH_W) '$(srcdir)/gport/gport.cpp'; fi`
+uninstall-info-am:
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ $(mkdir_p) $(distdir)/gport
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-noinstLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-exec install-exec-am install-info \
+ install-info-am install-man install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/Parse.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/Parse.cpp 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/Parse.cpp 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,263 @@
+/*
+ * TreeLib
+ * A library for manipulating phylogenetic trees.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+ // $Id: Parse.cpp,v 1.9 2002/02/23 12:22:32 rdmp1c Exp $
+
+#include <ctype.h>
+#include "Parse.h"
+
+// Return the next token in the string
+tokentype Parser::NextToken ()
+{
+ tokentype t;
+ token = "";
+
+ if (pos >= text.length())
+ {
+ t = ENDOFSTRING;
+ }
+ else
+ {
+ char ch = text[pos];
+
+ if (ch == '\'')
+ {
+ // Single quoted token
+ bool done = false;
+ pos++;
+ while (!done)
+ {
+ ch = text[pos++];
+ // Look ahead for double quote
+ if (ch == '\'')
+ {
+ ch = text[pos];
+ done = (ch != '\'');
+ }
+ if (!done && (ch != '\n') && (ch != '\r'))
+ {
+ token += ch;
+ }
+ }
+ t = STRING; //classify the token
+ }
+ else if (isalpha (ch))
+ {
+ while (isalnum (ch) || (ch == '_') || (ch == '.') && (pos < text.length()))
+ {
+ if (ch == '_')
+ token += ' ';
+ else
+ token += ch;
+ pos++;
+ ch = text[pos];
+ }
+ t = STRING; //classify the token
+ }
+ else
+ {
+ if (isdigit(ch) || (ch == '-'))
+ {
+ t = ParseNumber();
+// int stop = text.find_first_not_of ("01234567890-.Ee", pos);
+// token = text.substr (pos, stop-pos);
+// pos = stop;
+// t = NUMBER;
+ }
+ else
+ {
+ token += ch;
+ pos++;
+ switch (ch)
+ {
+ case '(': t = LPAR; break;
+ case ')': t = RPAR; break;
+ case ' ': t = SPACE; break;
+ case ',': t = COMMA; break;
+ case ';': t = SEMICOLON; break;
+ case ':': t = COLON; break;
+ case '\t': t = TAB; break;
+ case '\r':
+ case '\n': t = NEWLINE; break;
+ default: t = BAD; break;
+ }
+ }
+ }
+ }
+
+// cout << "token = " << token << endl;
+
+ return (t);
+}
+
+//------------------------------------------------------------------------------
+// Parse a number (integer or real).
+tokentype Parser::ParseNumber ()
+{
+ enum {
+ start = 0x0001, // 0
+ sign = 0x0002, // 1
+ digit = 0x0004, // 2
+ fraction = 0x0008, // 3
+ expsymbol = 0x0010, // 4
+ expsign = 0x0020, // 5
+ exponent = 0x0040, // 6
+ bad = 0x0080,
+ done = 0x0100
+ } state;
+
+ tokentype result = BAD;
+
+ token = "";
+ state = start;
+
+ char curChar = text[pos];
+
+ while (!IsWhiteSpace (curChar)
+ && !(IsPunctuation (curChar) && (curChar != '-'))
+ && (state != bad)
+ && (state != done))
+ {
+ if (isdigit (curChar))
+ {
+ switch (state)
+ {
+ case start:
+ case sign:
+ state = digit;
+ break;
+ case expsymbol:
+ case expsign:
+ state = exponent;
+ break;
+ default:
+ break;
+ }
+ }
+ else if ((curChar == '-') || (curChar == '+'))
+ {
+ switch (state)
+ {
+ case start:
+ state = sign; // sign of number
+ break;
+ case digit:
+ state = done; // minus sign is punctuation, such as 6-10
+ break;
+ case expsymbol:
+ state = expsign; // sign of exponent
+ break;
+ default:
+ state = bad; // syntax error
+ break;
+ }
+ }
+ else if ((curChar == '.') && (state == digit))
+ state = fraction;
+ else if (((curChar == 'E') || (curChar == 'e')) && (state & (digit | fraction)))
+ state = expsymbol;
+ else
+ state = bad;
+
+ if ((state != bad) && (state != done))
+ {
+ token += curChar;
+ curChar = GetNextChar ();
+ }
+ }
+
+ int isNumber = state & (digit | fraction | exponent | done);
+ if (isNumber)
+ {
+ // We have a number
+ result = NUMBER;
+
+ if (IsPunctuation (curChar))
+ {
+// PutBack (curChar);
+// if (!atEOL)
+// filecol--;
+ }
+ }
+
+ else
+ {
+ // Not a number, but a string that starts with numbers, such as "00BW0762.1"
+// cout << "Do something!" << endl;
+ do {
+ if (curChar == '_')
+ token += ' ';
+ else
+ token += curChar;
+ curChar = GetNextChar ();
+ } while (isalnum (curChar) || (curChar == '_') || (curChar == '.') && (pos < text.length()));
+ result = STRING; //classify the token
+
+ }
+
+ return result;
+}
+
+
+//------------------------------------------------------------------------------
+bool Parser::IsPunctuation (char ch)
+{
+ char punctuation[22];
+ punctuation[0] = '(';
+ punctuation[1] = ')';
+ punctuation[2] = '[';
+ punctuation[3] = ']';
+ punctuation[4] = '{';
+ punctuation[5] = '}';
+ punctuation[6] = '/';
+ punctuation[7] = '\\';
+ punctuation[8] = ',';
+ punctuation[9] = ';';
+ punctuation[10] = ':';
+ punctuation[11] = '=';
+ punctuation[12] = '*';
+ punctuation[13] = '\'';
+ punctuation[14] = '"';
+ punctuation[15] = '`';
+ punctuation[16] = '+';
+ punctuation[17] = '-';
+ punctuation[18] = '<';
+ punctuation[19] = '>';
+ punctuation[20] = '!';
+ punctuation[21] = '#';
+ punctuation[22] = '\0';
+
+
+ return (bool)(strchr (punctuation, ch) != NULL);
+}
+
+
+//------------------------------------------------------------------------------
+bool Parser::IsWhiteSpace (char ch)
+{
+ char whitespace[4];
+ whitespace[0] = ' ';
+ whitespace[1] = '\t';
+ whitespace[2] = '\n';
+ whitespace[3] = '\0';
+
+ return (bool)(strchr (whitespace, ch) != NULL);
+}
Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/Parse.cpp
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/Parse.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/Parse.h 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/Parse.h 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,86 @@
+/*
+ * TreeLib
+ * A library for manipulating phylogenetic trees.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+ // $Id: Parse.h,v 1.7 2004/03/04 23:22:42 rdmp1c Exp $
+
+//
+// Simple string parser
+//
+
+
+#ifndef PARSE_H
+#define PARSE_H
+
+#ifdef __BORLANDC__
+ // Undefine __MINMAX_DEFINED so that min and max are correctly defined
+ #ifdef __MINMAX_DEFINED
+ #undef __MINMAX_DEFINED
+ #endif
+ // Ignore "Cannot create precompiled header: code in header" message
+ // generated when compiling string.cc
+ #pragma warn -pch
+#endif
+
+#include <string>
+
+#ifdef __BORLANDC__
+ #pragma warn .pch
+#endif
+
+
+using namespace std;
+
+enum tokentype {STRING, NUMBER, OTHER, ENDOFSTRING, BAD, SPACE, LPAR, RPAR,
+ COMMA, SEMICOLON, COLON, TAB, NEWLINE};
+
+class Parser
+{
+public:
+ Parser () { text = ""; token = ""; pos = 0; };
+ Parser (string s) { text = s; token = ""; pos = 0; };
+ Parser (char *s) { text = s; token = ""; pos = 0; };
+ virtual ~Parser () {};
+ virtual tokentype NextToken ();
+ virtual string GetToken () { return token; };
+ virtual const char *GetTokenAsCstr () { return token.c_str(); };
+ virtual int GetPos () { return pos; };
+
+ virtual bool IsPunctuation (char ch);
+ virtual bool IsWhiteSpace (char ch);
+ virtual char GetNextChar () { return text[++pos]; };
+ virtual void PutBack (char ch) { pos--; };
+ virtual tokentype ParseNumber ();
+protected:
+ string text;
+ string token;
+ int pos;
+};
+
+
+#ifdef __BORLANDC__
+ // Redefine __MINMAX_DEFINED so Windows header files compile
+ #ifndef __MINMAX_DEFINED
+ #define __MINMAX_DEFINED
+ #endif
+#endif
+
+
+#endif // PARSE_H
Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/Parse.h
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/TreeLib.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/TreeLib.cpp 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/TreeLib.cpp 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,1258 @@
+/*
+ * TreeLib
+ * A library for manipulating phylogenetic trees.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+// $Id: TreeLib.cpp,v 1.26 2004/05/13 12:22:11 jcotton Exp $
+
+#include "TreeLib.h"
+#include "Parse.h"
+
+#include <vector>
+
+
+// Convert a string to a NEXUS format string
+std::string NEXUSString (const std::string s)
+{
+ std::string outputString ="";
+ bool enclose = false;
+ int i = 0;
+
+ if (isalpha (s[0]))
+ {
+ // First character is a letter, check the rest
+ i = 1;
+ while ((i < s.length()) && !enclose)
+ {
+ if (!isalnum (s[i]) && (s[i] != ' ') && (s[i] != '_') && (s[i] != '.'))
+ enclose = true;
+ i++;
+ }
+ }
+ else
+ enclose = true;
+
+ if (enclose)
+ {
+ outputString = "'";
+ }
+
+ i = 0;
+ while (i < s.length())
+ {
+ if (s[i] == '\'')
+ outputString += "''";
+ else if ((s[i] == ' ') && !enclose)
+ outputString += '_';
+ else
+ outputString += s[i];
+ i++;
+ }
+
+
+ if (enclose)
+ {
+ outputString += "'";
+ }
+
+ return outputString;
+}
+
+
+
+
+//------------------------------------------------------------------------------
+Node::Node ()
+{
+ Child = Anc = Sib = NULL;
+ Label = "";
+ Weight = 0;
+ Length = 0.0;
+ Leaf = false;
+ Height = 0;
+ Marked = false;
+ Depth = 0;
+ Degree = 0;
+ PathLength = 0.0;
+ LeafNumber = 0;
+ LabelNumber = 0;
+}
+
+//------------------------------------------------------------------------------
+void Node::Copy (Node *theCopy)
+{
+ theCopy->SetLeaf (IsLeaf ());
+ theCopy->SetLabel (Label);
+ theCopy->SetIndex (Index);
+ theCopy->SetLeafNumber (LeafNumber);
+ theCopy->SetLabelNumber (LabelNumber);
+ theCopy->SetEdgeLength (Length);
+}
+
+///------------------------------------------------------------------------------
+// True if node is a left descendant of q
+bool Node::IsALeftDescendantOf (Node *q)
+{
+ NodePtr r = this;
+ while ((r) && (r != q->Child) && (r != q)) r = r->Anc;
+ return (r == q->Child);
+}
+
+//------------------------------------------------------------------------------
+// Return sibling node that is immediately to the LEFT of this node
+Node *Node::LeftSiblingOf ()
+{
+ NodePtr q = Anc->Child;
+ while (q->Sib != this)
+ q = q->Sib;
+ return q;
+}
+
+//------------------------------------------------------------------------------
+// Return the rightmost sibling of the node
+Node *Node::GetRightMostSibling ()
+{
+ Node *p = this;
+
+ while (p->Sib) p = p->Sib;
+ return (p);
+}
+
+//------------------------------------------------------------------------------
+Tree::Tree ()
+{
+ Root = NULL;
+ CurNode = NULL;
+ Leaves = 0;
+ Internals = 0;
+ Error = 0;
+ InternalLabels = false;
+ EdgeLengths = false;
+ Nodes = NULL;
+ Name = "";
+ Rooted = false;
+ Weight = 1.0;
+}
+
+//------------------------------------------------------------------------------
+// Copy constructor
+Tree::Tree (const Tree &t)
+{
+ if (t.GetRoot() == NULL)
+ {
+ Root = NULL;
+ CurNode = NULL;
+ Leaves = 0;
+ Internals = 0;
+ Error = 0;
+ InternalLabels = false;
+ EdgeLengths = false;
+ Nodes = NULL;
+ Name = "";
+ Rooted = false;
+ Weight = 1.0;
+ }
+ else
+ {
+ CurNode = t.GetRoot();
+ NodePtr placeHolder;
+ t.copyTraverse (CurNode, placeHolder );
+ Root = placeHolder;
+ Leaves = t.GetNumLeaves ();
+ Internals = t.GetNumInternals ();
+ Name = t.GetName ();
+ CurNode = NULL;
+ Error = 0;
+ InternalLabels = t.GetHasInternalLabels ();;
+ EdgeLengths = t.GetHasEdgeLengths ();
+ Nodes = NULL;
+ Rooted = t.IsRooted();
+ Weight = t.GetWeight();
+ }
+}
+
+
+//------------------------------------------------------------------------------
+Tree::~Tree ()
+{
+ deletetraverse (Root);
+ delete [] Nodes;
+}
+
+//------------------------------------------------------------------------------
+void Tree::deletetraverse (NodePtr p)
+{
+ if (p)
+ {
+ deletetraverse (p->GetChild());
+ deletetraverse (p->GetSibling());
+ delete p;
+ }
+}
+
+//------------------------------------------------------------------------------
+/*
+ Return a copy of the subtree in rooted at RootedAt.
+ The function result is the root of the subtree.
+
+ Tree
+
+ x---y b---c x'--y'
+ \ \ \
+ \ \ \
+ RootedAt ->w--------a ==> CopyOfSubTree -> NULL
+ \
+ \
+
+ which corresponds to copying
+
+ x' y' x y b c
+ \ / \ / \ /
+ \ / \ / \ /
+ w' from w a
+ \ /
+ \ /
+ \ /
+ v
+
+*/
+
+//------------------------------------------------------------------------------
+// This code needs Tree to be a friend of Node
+void Tree::copyTraverse (NodePtr p1, NodePtr &p2) const
+{
+ if (p1)
+ {
+ p2 = NewNode ();
+ p1->Copy (p2);
+
+ // Note the call to p2->child, not p2->GetChild(). Calling the field
+ // is essential because calling GetChild merely passes a temporary
+ // copy of the child, hence we are not actually creating a child of p2.
+ // We can access child directly by making Tree a friend of Node (see
+ // TreeLib.h).
+ copyTraverse (p1->GetChild(), p2->Child);
+ if (p2->GetChild())
+ p2->GetChild()->SetAnc (p2);
+
+ // Ensure we don't copy RootedAt sibling. If the sibling is NULL then
+ // we won't anyway, but this line ensures this for all cases.
+ if (p1 != CurNode)
+ copyTraverse (p1->GetSibling(), p2->Sib); // note sib
+ if (p2->GetChild ())
+ {
+ NodePtr q = p2->GetChild()->GetSibling();
+ while (q)
+ {
+ q->SetAnc (p2);
+ q = q->GetSibling();
+ }
+ }
+ }
+}
+
+//------------------------------------------------------------------------------
+NodePtr Tree::CopyOfSubtree (NodePtr RootedAt)
+{
+ CurNode = RootedAt; // Store this to avoid copying too much of the tree
+ NodePtr placeHolder; // This becomes the root of the subtree
+ copyTraverse (CurNode, placeHolder);
+ return placeHolder;
+}
+
+
+//------------------------------------------------------------------------------
+string Tree::GetErrorMsg ()
+{
+ string s = "No error";
+
+ switch (Error)
+ {
+ case errSYNTAX:
+ s = "Syntax error";
+ break;
+ case errENDOFSTRING:
+ s = "Syntax error";
+ break;
+ case errMISSINGLPAR:
+ s = "Missing '('";
+ break;
+ case errUNBALANCED:
+ s = "Unbalance parentheses";
+ break;
+ case errSTACKNOTEMPTY:
+ s = "Stack not empty";
+ break;
+ case errSEMICOLON:
+ s = "Expecting a semicolon";
+ break;
+ default:
+ break;
+ }
+ return s;
+}
+
+//------------------------------------------------------------------------------
+// Make CurNode a leaf, called by tree reading code
+void Tree::MakeCurNodeALeaf (int i)
+{
+ Leaves++;
+ CurNode->SetLeaf(true);
+ CurNode->SetWeight(1);
+// CurNode->SetLabelNumber(i);
+ CurNode->SetLeafNumber(Leaves);
+// Nodes[i - 1] = CurNode;
+}
+
+//m
+
+//------------------------------------------------------------------------------
+// Make a child of CurNode and make it CurNode
+void Tree::MakeChild ()
+{
+ NodePtr q = NewNode();
+ CurNode->SetChild(q);
+ q->SetAnc(CurNode);
+ CurNode->IncrementDegree();
+ CurNode = q;
+ Internals++;
+}
+
+//------------------------------------------------------------------------------
+// Create a new node and make it the root of the tree, and set CurNode=Root.
+void Tree::MakeRoot ()
+{
+ CurNode = NewNode();
+ Root = CurNode;
+}
+
+//------------------------------------------------------------------------------
+// Make a sibling of CurNode and make CurNode the new node.
+void Tree::MakeSibling ()
+{
+ NodePtr q = NewNode ();
+ NodePtr ancestor = CurNode->GetAnc();
+ CurNode->SetSibling(q);
+ q->SetAnc(ancestor);
+ ancestor->AddWeight(CurNode->GetWeight());
+ ancestor->IncrementDegree();
+ CurNode = q;
+}
+
+
+
+//------------------------------------------------------------------------------
+int Tree::Parse (const char *TreeDescr)
+{
+ enum {stGETNAME, stGETINTERNODE, stNEXTMOVE,
+ stFINISHCHILDREN, stQUIT, stACCEPTED} state;
+
+ stack< NodePtr, vector<NodePtr> > stk;
+ NodePtr q;
+ Parser p ((char *)TreeDescr);
+ tokentype token;
+ float f;
+
+ // Initialise tree variables
+ Root = NULL;
+ Leaves = 0;
+ Internals = 0;
+ Error = 0;
+
+ // Create first node
+ CurNode = NewNode();
+ Root = CurNode;
+
+ // Initialise FSA that reads tree
+ state = stGETNAME;
+ token = p.NextToken ();
+
+ while ((state != stQUIT) && (state != stACCEPTED))
+ {
+ switch (state)
+ {
+ case stGETNAME:
+ switch (token)
+ {
+ case SPACE:
+ case TAB:
+ case NEWLINE:
+ token = p.NextToken ();
+ break;
+ case STRING:
+ // to do: handle translation
+ Leaves++;
+ CurNode->SetLeaf (true);
+ CurNode->SetLeafNumber (Leaves);
+ CurNode->SetWeight (1);
+ CurNode->SetLabel (p.GetToken());
+ CurNode->SetDegree (0);
+ token = p.NextToken ();
+ state = stGETINTERNODE;
+ break;
+ case NUMBER:
+ // to do: handle translation
+ Leaves++;
+ CurNode->SetLeaf (true);
+ CurNode->SetLeafNumber (Leaves);
+ CurNode->SetWeight (1);
+ CurNode->SetLabel (p.GetToken());
+ CurNode->SetDegree (0);
+ token = p.NextToken ();
+ state = stGETINTERNODE;
+ break;
+ case LPAR:
+ state = stNEXTMOVE;
+ break;
+ case ENDOFSTRING:
+ Error = errENDOFSTRING;
+ state = stQUIT;
+ break;
+ default:
+ Error = errSYNTAX;
+ state = stQUIT;
+ break;
+ }
+ break;
+
+ case stGETINTERNODE:
+ switch (token)
+ {
+ case SPACE:
+ case TAB:
+ case NEWLINE:
+ token = p.NextToken ();
+ break;
+ case COLON:
+ case COMMA:
+ case RPAR:
+ state = stNEXTMOVE;
+ break;
+ case ENDOFSTRING:
+ Error = errENDOFSTRING;
+ state = stQUIT;
+ break;
+ default:
+ Error = errSYNTAX;
+ state = stQUIT;
+ break;
+ }
+ break;
+
+ case stNEXTMOVE:
+ switch (token)
+ {
+ case COLON:
+ token = p.NextToken ();
+ f = atof (p.GetTokenAsCstr());
+ CurNode->SetEdgeLength (f);
+ EdgeLengths = true;
+ token = p.NextToken ();
+ break;
+ case SPACE:
+ case TAB:
+ case NEWLINE:
+ token = p.NextToken ();
+ break;
+ // The next node encountered will be a sibling
+ // of Curnode and a descendant of the node on
+ // the top of the node stack.
+ case COMMA:
+ q = NewNode();
+ CurNode->SetSibling (q);
+ if (stk.empty())
+ {
+ Error = errMISSINGLPAR;
+ state = stQUIT;
+ }
+ else
+ {
+ q->SetAnc (stk.top());
+ stk.top()->AddWeight (CurNode->GetWeight());
+ stk.top()->IncrementDegree ();
+ CurNode = q;
+ state = stGETNAME;
+ token = p.NextToken ();
+ }
+ break;
+ // The next node will be a child of CurNode, hence
+ // we create the node and push CurNode onto the
+ // node stack.
+ case LPAR:
+ Internals++;
+ stk.push (CurNode);
+ q = NewNode();
+ CurNode->SetChild (q);
+ q->SetAnc (CurNode);
+ CurNode->IncrementDegree ();
+ CurNode = q;
+ token = p.NextToken ();
+ state = stGETNAME;
+ break;
+ // We've finished ready the descendants of the node
+ // at the top of the node stack so pop it off.
+ case RPAR:
+ if (stk.empty ())
+ {
+ Error = errUNBALANCED;
+ state = stQUIT;
+ }
+ else
+ {
+ q = stk.top();
+ q->AddWeight (CurNode->GetWeight());
+ CurNode = q;
+ stk.pop();
+ state = stFINISHCHILDREN;
+ token = p.NextToken ();
+ }
+ break;
+ // We should have finished the tree
+ case SEMICOLON:
+ if (stk.empty())
+ {
+ state = stACCEPTED;
+ }
+ else
+ {
+ Error = errSTACKNOTEMPTY;
+ state = stQUIT;
+ }
+ break;
+ case ENDOFSTRING:
+ Error = errENDOFSTRING;
+ state = stQUIT;
+ break;
+ default:
+ Error = errSYNTAX;
+ state = stQUIT;
+ break;
+ }
+ break;
+
+ case stFINISHCHILDREN:
+ switch (token)
+ {
+ case STRING:
+ case NUMBER:
+ // internal label
+ InternalLabels = true;
+ CurNode->SetLabel (p.GetToken());
+ token = p.NextToken ();
+ break;
+
+ case COLON:
+ token = p.NextToken ();
+ f = atof (p.GetTokenAsCstr());
+ CurNode->SetEdgeLength (f);
+ EdgeLengths = true;
+ token = p.NextToken ();
+ break;
+
+ case SPACE:
+ case TAB:
+ case NEWLINE:
+ token = p.NextToken ();
+ break;
+
+ // We've completed traversing the descendants of the
+ // node at the top of the stack, so pop it off.
+ case RPAR:
+ if (stk.empty())
+ {
+ Error = errUNBALANCED;
+ state = stQUIT;
+ }
+ else
+ {
+ q = stk.top();
+ q->AddWeight (CurNode->GetWeight());
+ CurNode = q;
+ stk.pop();
+ token = p.NextToken ();
+ }
+ break;
+
+ // The node at the top of the stack still has some
+ // descendants.
+ case COMMA:
+ q = NewNode();
+ CurNode->SetSibling (q);
+ if (stk.empty())
+ {
+ Error = errMISSINGLPAR;
+ state = stQUIT;
+ }
+ else
+ {
+ q->SetAnc (stk.top());
+ stk.top()->AddWeight (CurNode->GetWeight());
+ stk.top()->IncrementDegree ();
+ CurNode = q;
+ state = stGETNAME;
+ token = p.NextToken ();
+ }
+ break;
+ case SEMICOLON:
+ state = stNEXTMOVE;
+ break;
+ default:
+ if (stk.empty())
+ {
+ Error = errSEMICOLON;
+ }
+ else
+ {
+ Error = errSYNTAX;
+ }
+ state = stQUIT;
+ break;
+ }
+ break;
+ }
+ }
+ // Handle errors
+ if (state == stQUIT)
+ {
+ // Clean up to go here
+ return (p.GetPos());
+ }
+ else
+ {
+ Root->SetWeight(Leaves);
+ return (0);
+ }
+}
+
+
+
+//------------------------------------------------------------------------------
+int Tree::Read (istream &f)
+{
+ char ch = '\0';
+ string str = "";
+ while (f.good() && !f.eof() && (ch != ';'))
+ {
+ f.get (ch);
+ str += ch;
+ }
+ return Parse (str.c_str());
+}
+
+
+//------------------------------------------------------------------------------
+void Tree::Write (ostream &f)
+{
+ treeStream = &f;
+ traverse (Root);
+ f << ";";
+}
+
+//------------------------------------------------------------------------------
+void Tree::traverse (NodePtr p)
+{
+
+ if (p)
+ {
+ if (p->IsLeaf())
+ {
+ *treeStream << NEXUSString (p->GetLabel());
+
+ if (EdgeLengths)
+ {
+ *treeStream << ':' << p->GetEdgeLength ();
+ }
+ }
+ else
+ {
+ *treeStream << "(";
+ }
+
+ traverse (p->GetChild());
+ if (p->GetSibling())
+ {
+ *treeStream << ",";
+ }
+ else
+ {
+ if (p != Root)
+ {
+ *treeStream << ")";
+ // 29/3/96
+ if ((p->GetAnc()->GetLabel() != "") && InternalLabels)
+ {
+ *treeStream << '\'' << NEXUSString (p->GetAnc()->GetLabel ()) << '\'';
+ }
+ if (EdgeLengths && (p->GetAnc () != Root))
+ {
+ *treeStream << ':' << p->GetAnc()->GetEdgeLength ();
+ }
+ }
+ }
+ traverse (p->GetSibling());
+ }
+
+}
+
+
+
+//------------------------------------------------------------------------------
+void Tree::drawInteriorEdge (NodePtr p)
+{
+ NodePtr r = p->GetAnc ();
+ int stop = r->GetHeight();
+ if (p->IsTheChild ())
+ {
+ // Visiting ancestor for the first time, so draw the
+ // end symbol
+ if (r == Root)
+ {
+// if (IsRooted ())
+ Line[stop] = TEE; // «
+// else
+// Line[stop] = VBAR; // Ò
+ }
+ else
+ {
+ Line[stop] = TEE; // «
+ }
+
+
+ // Draw branch itself
+ if (r != Root)
+ {
+ // Line
+ int start = r->GetAnc()->GetHeight();
+ for (int i = start + 1; i < stop; i++)
+ {
+ Line[i] = HBAR; //
+ }
+ // Start symbol
+ if (start == stop)
+ Line[start] = VBAR; // Ò
+ else if (r->IsTheChild ())
+ Line[start] = LEFT; // ò
+ else if (r->GetSibling ())
+ Line[start] = SIB; // Ì
+ else Line[start] = RIGHT; // Ë
+
+ //
+ fillInAncestors (r);
+ }
+ }
+ else
+ {
+ // Just draw nodes below
+ Line[stop] = VBAR;
+ fillInAncestors (p->GetSibling());
+ }
+
+ // Output the line
+ Line[stop + 1] = '\0';
+
+ drawLine (r, p->IsTheChild());
+
+/*
+
+ *treeStream << Line.c_str();
+
+// *treeStream << "h=" << r->GetHeight() << " w= "
+// << r->GetWeight() << "-- ";
+
+
+ // Draw internal label, if present
+ string s = r->GetLabel();
+ if (s != "" && p->IsTheChild ())
+ *treeStream << r->GetLabel();
+ *treeStream << endl;
+*/
+ // Clear the line for the next pass
+ for (int i = 0; i < (Leaves + 2); i++) // to do: get a better limit
+ Line[i] = ' ';
+}
+
+void Tree::drawLine (NodePtr p, bool isChild)
+{
+ *treeStream << Line.c_str();
+
+ if (p->IsLeaf())
+ {
+ * treeStream<< " " << p->GetLabel () <<endl;
+ }
+ else
+ {
+ // Draw internal label, if present
+ string s = p->GetLabel();
+ if (s != "" && isChild)
+ *treeStream << p->GetLabel();
+
+ *treeStream << endl;
+ }
+}
+
+
+
+//------------------------------------------------------------------------------
+void Tree::drawPendantEdge (NodePtr p)
+{
+ NodePtr q = p->GetAnc();
+ if (q == NULL)
+ {
+ // Handle the degenerate case of a tree with a single leaf
+ Line = (char) HBAR;
+ drawLine (p);
+ }
+ else
+ {
+ int start = q->GetHeight();
+ int stop = p->GetHeight();
+ char symbol;
+
+ // Draw line between p and its ancestor
+ int i;
+ for (i = start + 1; i <= stop; i++)
+ Line[i] = (char)HBAR; //
+
+ // Find appropriate symbol for link to ancestor
+ if (p == q->GetChild())
+ {
+ symbol = (char)LEFT; // ò
+ }
+ else
+ {
+ // p is a sibling
+ if (p->GetSibling())
+ symbol = (char)SIB; // Ì
+ else symbol = (char)RIGHT; // Ë
+ }
+ Line[start] = symbol;
+
+ // Fill in ancestors
+ fillInAncestors (p);
+
+ // Terminate line
+ Line[stop + 1] = '\0';
+
+
+ drawLine (p);
+ /* // Output line and taxon name
+ *treeStream << Line.c_str() << " " << p->GetLabel ()
+ // << "h=" << p->GetHeight() << " w= "
+ // << p->GetWeight()
+ <<endl;
+ */
+
+ // Clear the line for the next pass
+ for (i = 0; i < (Leaves + 2); i++) // to do: get a better limit for this
+ Line[i] = ' ';
+ }
+}
+
+
+
+//------------------------------------------------------------------------------
+/*
+ { Put a VBAR symbol ("Ò") into buffer where needed to
+ represent branches of tree under p. Two cases:
+
+ ..... Ancestor
+ > Sibling
+ <---- Child
+
+ 1. r is a sibling of the child of q, and q has a sibling, or
+
+ xsib>r
+ ò . .
+ \ . .
+ \ . .
+ child\ . .|
+ \.. |
+ q|sib>
+ \ |
+ \| <- this branch passes under r
+ \
+
+
+ 2. r is q's child and q is a sibling of another node.
+
+ r
+ ò
+ \
+ |\
+ | \
+ xsib|>q
+ | .
+ |.<- this branch passes under r
+ .
+ .
+
+ } */
+
+//------------------------------------------------------------------------------
+void Tree::fillInAncestors (NodePtr p)
+{
+
+ NodePtr q = p->GetAnc ();
+ NodePtr r = p;
+ while (q != Root)
+ {
+ if (
+ (q->GetSibling () && !(r->IsTheChild ()))
+ || (!(q->IsTheChild ()) && r->IsTheChild())
+ )
+ {
+ if (r ==p && q->GetHeight() == q->GetAnc()->GetHeight())
+ Line[q->GetAnc()->GetHeight()] = SIB;
+ else
+ Line[q->GetAnc()->GetHeight()] = VBAR;
+ }
+ r = q;
+ q = q->GetAnc ();
+ }
+}
+
+
+
+
+
+//------------------------------------------------------------------------------
+void Tree::drawAsTextTraverse (NodePtr p)
+{
+ if (p)
+ {
+ drawAsTextTraverse (p->GetChild ());
+ if (p->IsLeaf ())
+ drawPendantEdge (p);
+ if (p->GetSibling ())
+ drawInteriorEdge (p);
+ drawAsTextTraverse (p->GetSibling ());
+ }
+}
+
+//------------------------------------------------------------------------------
+void Tree::Draw (ostream &f)
+{
+ treeStream = &f;
+
+ if (Root)
+ {
+ string s (Leaves + 2, ' ');
+ Line = s;
+ MaxHeight = 0;
+ getNodeHeights (Root);
+ drawAsTextTraverse (Root);
+ }
+ else f << "(No tree)" << endl;
+}
+
+//------------------------------------------------------------------------------
+void Tree::getNodeHeights(NodePtr p)
+{
+ if (p)
+ {
+ p->SetHeight (Leaves - p->GetWeight ());
+ if (p->GetHeight() > MaxHeight)
+ MaxHeight = p->GetHeight();
+ getNodeHeights (p->GetChild());
+ getNodeHeights (p->GetSibling());
+ }
+}
+
+
+//------------------------------------------------------------------------------
+// Compute node depth (i.e, height above root). Based on COMPONENT 2.0 code,
+// assumes count is set to 0 prior to calling code
+void Tree::getNodeDepth(NodePtr p)
+{
+ if (p)
+ {
+
+ p->SetDepth (count);
+ count++;
+ getNodeDepth (p->GetChild());
+ count--;
+ getNodeDepth (p->GetSibling());
+ }
+}
+
+//------------------------------------------------------------------------------
+// Compute node depth (i.e, height above root).
+void Tree::GetNodeDepths ()
+{
+ count = 0;
+ getNodeDepth (Root);
+}
+
+
+//------------------------------------------------------------------------------
+void Tree::markNodes(NodePtr p, bool on)
+{
+ if (p)
+ {
+ p->SetMarked (on);
+ markNodes (p->GetChild(), on);
+ markNodes (p->GetSibling(), on);
+ }
+}
+
+//------------------------------------------------------------------------------
+void Tree::MarkNodes (bool on)
+{
+ markNodes (Root, on);
+}
+
+//------------------------------------------------------------------------------
+void Tree::makeNodeList (NodePtr p)
+{
+ if (p)
+ {
+ makeNodeList (p->GetChild ());
+ makeNodeList (p->GetSibling ());
+ if (p->IsLeaf())
+ {
+ LeafList[p->GetLabel()] = p->GetLeafNumber()-1;
+ Nodes[p->GetLeafNumber()-1] = p;
+ p->SetIndex (p->GetLeafNumber()-1);
+ }
+ else
+ {
+ Nodes[count] = p;
+ p->SetIndex (count);
+ count++;
+ }
+ if (p != Root)
+ {
+ }
+ }
+}
+
+//------------------------------------------------------------------------------
+void Tree::MakeNodeList ()
+{
+ if (Nodes == NULL)
+ {
+ Nodes = new NodePtr [Leaves + Internals];
+ Nodes_dimension = Leaves + Internals;
+ }
+ else if (Nodes_dimension != Leaves + Internals) //The tree size has changed since Nodes was allocated - need to allocate correct amount of space before re-building array!
+ {
+ delete Nodes; //Nodes has already been allocated - need to free it!
+ Nodes = new NodePtr [Leaves + Internals];
+ Nodes_dimension = Leaves + Internals;
+ }
+ count = Leaves;
+ makeNodeList (Root);
+}
+
+//------------------------------------------------------------------------------
+NodePtr Tree::GetLeafWithLabel (string s)
+{
+ NodePtr result = NULL;
+
+ map<string, int, less<string> >::iterator index = LeafList.find (s);
+ if (index != LeafList.end())
+ result = Nodes[LeafList[s]];
+
+ return result;
+}
+
+//------------------------------------------------------------------------------
+// Add Node below Below. Doesn't update any clusters, weights, etc.
+void Tree::AddNodeBelow (NodePtr Node, NodePtr Below)
+{
+ NodePtr Ancestor = NewNode ();
+ Ancestor->SetChild (Node);
+ Node->SetAnc (Ancestor);
+ NodePtr q = Below->GetAnc ();
+ Internals++;
+ if (Node->IsLeaf())
+ Leaves++;
+ if (q == NULL || Below == q->GetChild())
+ {
+ Node->SetSibling (Below);
+ Ancestor->SetAnc (q);
+ Ancestor->SetSibling (Below->GetSibling());
+ Below->SetSibling (NULL);
+ Below->SetAnc (Ancestor);
+ if (q == NULL)
+ Root = Ancestor;
+ else
+ q->SetChild (Ancestor);
+ }
+ else
+ {
+ // Get left sibling of Below
+ NodePtr r = Below->LeftSiblingOf();
+ while (Below != r->GetSibling())
+ r = r->GetSibling();
+ Node->SetSibling (Below);
+ Ancestor->SetAnc (q);
+ Ancestor->SetSibling (Below->GetSibling());
+ Below->SetSibling (NULL);
+ Below->SetAnc (Ancestor);
+ r->SetSibling (Ancestor);
+ }
+}
+
+//------------------------------------------------------------------------------
+// Compute nodal heights based on path length from root, and store maximum
+// value in plot.maxheight. Used by drawing routines.
+void Tree::getPathLengths (NodePtr p)
+{
+ if (p)
+ {
+ if (p != Root)
+ {
+ float l = p->GetEdgeLength();
+ if (l < 0.000001) // suppress negative branch lengths
+ l = 0.0;
+ p->SetPathLength (p->GetAnc()->GetPathLength() + l);
+ }
+ if (p->GetPathLength() > MaxPathLength)
+ MaxPathLength = p->GetPathLength();
+ getPathLengths (p->GetChild());
+ getPathLengths (p->GetSibling());
+ }
+}
+
+//------------------------------------------------------------------------------
+// Fill in weight, degree, etc.
+void Tree::buildtraverse (NodePtr p)
+{
+ if (p)
+ {
+ p->SetWeight (0);
+ p->SetDegree (0);
+ buildtraverse (p->GetChild ());
+ buildtraverse (p->GetSibling ());
+ if (p->IsLeaf())
+ {
+ Leaves++;
+ p->SetWeight (1);
+ }
+ else
+ {
+ Internals++;
+ }
+ if (p != Root)
+ {
+ p->GetAnc()->AddWeight (p->GetWeight());
+ p->GetAnc()->IncrementDegree();
+ }
+ }
+}
+
+//------------------------------------------------------------------------------
+// Ensure fields like weight, degree, etc are correct
+void Tree::Update ()
+{
+ count = 0;
+ Leaves = Internals = 0;
+ buildtraverse (Root);
+}
+
+
+NodePtr Tree::RemoveNode (NodePtr Node)
+{
+ NodePtr result = NULL;
+
+ if (Node == Root)
+ {
+ if (Leaves == 1)
+ {
+ Root = NULL;
+ Node->SetAnc (NULL);
+ Leaves = Internals = 0;
+ }
+ return result;
+ }
+
+ NodePtr p;
+ NodePtr Ancestor = Node->GetAnc();
+
+ if (Ancestor->GetDegree() == 2)
+ {
+ // ancestor is binary, so remove node and its ancestor
+ if (Node->IsTheChild ())
+ p = Node->GetSibling();
+ else
+ p = Ancestor->GetChild();
+ NodePtr q = Ancestor->GetAnc();
+ p->SetAnc (q);
+ if (q != NULL)
+ {
+ if (Ancestor->IsTheChild())
+ q->SetChild (p);
+ else
+ {
+ NodePtr r = Ancestor->LeftSiblingOf ();
+ r->SetSibling (p);
+ }
+ p->SetSibling (Ancestor->GetSibling());
+ result = p;
+ }
+ else
+ {
+ // Ancestor is the root
+ Root = p;
+ p->SetSibling (NULL);
+ result = p;
+ }
+ delete Ancestor;
+ Internals--;
+ if (Node->IsLeaf())
+ Leaves--;
+ Node->SetAnc (NULL);
+ Node->SetSibling (NULL);
+ }
+ else
+ {
+ // polytomy, just remove node
+ NodePtr q;
+ if (Node->IsTheChild())
+ {
+ Ancestor->SetChild (Node->GetSibling());
+ q = Node->GetSibling ();
+ }
+ else
+ {
+ q = Node->LeftSiblingOf ();
+ q->SetSibling (Node->GetSibling ());
+ }
+ Node->SetSibling (NULL);
+ Node->SetAnc (NULL);
+ if (Node->IsLeaf())
+ Leaves--;
+ Ancestor->SetDegree (Ancestor->GetDegree() - 1);
+ result = q;
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/TreeLib.cpp
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/TreeLib.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/TreeLib.h 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/TreeLib.h 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,343 @@
+/*
+ * TreeLib
+ * A library for manipulating phylogenetic trees.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+// $Id: TreeLib.h,v 1.26 2004/05/13 12:22:11 jcotton Exp $
+
+
+#ifndef TREELIB_H
+#define TREELIB_H
+
+#ifdef __BORLANDC__
+ // Undefine __MINMAX_DEFINED so that min and max are correctly defined
+ #ifdef __MINMAX_DEFINED
+ #undef __MINMAX_DEFINED
+ #endif
+ // Ignore "Cannot create precompiled header: code in header" message
+ // generated when compiling string.cc
+ #pragma warn -pch
+#endif
+
+
+#include <fstream>
+#include <strstream>
+#include <string>
+#include <vector>
+#include <stack>
+#include <map>
+
+
+#ifdef __BORLANDC__
+ #pragma warn .pch
+#endif
+
+
+
+//using namespace std;
+
+// Graphics characters for drawing trees
+
+#ifdef __WIN32__
+ // OEM character set
+ //Compressed tree
+ #define HBAR 196 // Ä
+ #define VBAR 179 // ³
+ #define SIB 195 // Ã
+ #define BOT 192 // À
+ #define ROOT 218 // Ú
+ #define DOWN 194 // Â
+
+ // Regular tree
+ #define TEE 180 // ´
+ #define LEFT ROOT
+ #define RIGHT BOT
+
+#else
+ // ANSI character set
+ #define HBAR 45
+ #define VBAR 124
+ #define SIB 43
+ #define BOT 92
+ #define ROOT 43
+ #define DOWN 43
+ #define TEE 124
+// #define LEFT 47
+// #define RIGHT 92
+ #define LEFT 43
+ #define RIGHT 43
+
+#endif
+
+std::string NEXUSString (const std::string s);
+
+
+class Tree;
+
+
+class Node
+{
+friend class Tree;
+public:
+ Node ();
+ virtual ~Node () {};
+
+ virtual void AddWeight (int w) { Weight += w; };
+ virtual void AppendLabel (char *s) { Label += s; };
+ virtual void AppendLabel (std::string s) { Label += s; };
+
+ virtual void Copy (Node* theCopy);
+
+ virtual Node *GetAnc () { return Anc; };
+ virtual Node *GetChild () { return Child; };
+ virtual int GetDegree () { return Degree; };
+ virtual int GetDepth () { return Depth; };
+ virtual float GetEdgeLength () { return Length; };
+ virtual int GetHeight () { return Height; };
+ virtual int GetIndex () { return Index; };
+ virtual std::string GetLabel () { return Label; };
+ virtual int GetLabelNumber () { return LabelNumber; };
+ virtual int GetLeafNumber () { return LeafNumber; };
+ virtual float GetPathLength () { return PathLength; };
+ virtual Node *GetRightMostSibling ();
+ virtual Node *GetSibling () { return Sib; };
+ virtual int GetWeight() { return Weight; };
+
+
+ virtual void IncrementDegree () { Degree++; };
+ virtual bool IsLeaf () { return Leaf; };
+ virtual bool IsALeftDescendantOf (Node *q);
+ virtual bool IsMarked () { return Marked; };
+ virtual bool IsTheChild () { return (Anc->Child == this); };
+
+ virtual Node *LeftSiblingOf ();
+
+ virtual void SetAnc (Node *p) { Anc = p; };
+ virtual void SetChild (Node *p) { Child = p; };
+ virtual void SetDegree (int d) { Degree = d; };
+ virtual void SetDepth (int d) { Depth = d; };
+ virtual void SetEdgeLength (float e) { Length = e; };
+ virtual void SetHeight (int h) { Height = h; };
+ virtual void SetIndex (int i) { Index = i;};
+ virtual void SetLeaf (bool on) { Leaf = on; };
+ virtual void SetLeafNumber (int i) { LeafNumber = i;};
+ virtual void SetLabel (std::string s) { Label = s; };
+ virtual void SetLabel (char *s) { Label = s; };
+ virtual void SetLabelNumber (int i) { LabelNumber = i;};
+ virtual void SetMarked (bool on) { Marked = on; };
+ virtual void SetPathLength (float l) { PathLength = l;};
+ virtual void SetSibling (Node *p) { Sib = p; };
+ virtual void SetWeight (int w) { Weight = w; };
+
+
+
+protected:
+ Node *Child;
+ Node *Sib;
+ Node *Anc;
+ int Weight;
+ std::string Label;
+ float Length;
+ bool Leaf;
+ int Height;
+ bool Marked;
+ int Degree;
+ int LeafNumber;
+ int Depth;
+ float PathLength;
+ int Index;
+ int LabelNumber;
+};
+typedef Node *NodePtr;
+
+/**
+ *@typedef map <std::string, int, less<std::string> > IntegerNodeMap;
+ */
+typedef std::map<int, NodePtr, std::less <int> > IntegerNodeMap;
+
+
+#define errSYNTAX 1
+#define errENDOFSTRING 2
+#define errMISSINGLPAR 3
+#define errUNBALANCED 4
+#define errSTACKNOTEMPTY 5
+#define errSEMICOLON 6
+
+
+class Tree
+{
+public:
+ Tree ();
+ Tree (const Tree &t);
+ virtual ~Tree ();
+
+ virtual void AddNodeBelow (NodePtr Node, NodePtr Below);
+
+ virtual NodePtr CopyOfSubtree (NodePtr RootedAt);
+
+#if defined __BORLANDC__ && (__BORLANDC__ < 0x0550)
+ virtual void Draw (ostream &f);
+#else
+ virtual void Draw (std::ostream &f);
+#endif
+
+ virtual NodePtr GetCurNode() { return CurNode; };
+ virtual int GetError () { return Error; };
+ virtual std::string GetErrorMsg ();
+ virtual bool GetHasEdgeLengths () const { return EdgeLengths; };
+ virtual bool GetHasInternalLabels () const { return InternalLabels; };
+ virtual NodePtr GetLeafWithLabel (std::string s);
+ virtual std::string GetName () const { return Name; };
+ virtual void GetNodeDepths ();
+ virtual int GetNumInternals () const { return Internals; };
+ virtual int GetNumLeaves () const { return Leaves; };
+ virtual int GetNumNodes () const { return Leaves + Internals; };
+ virtual NodePtr GetRoot () const { return Root; };
+ virtual double GetWeight() const { return Weight; };
+
+ virtual bool IsRooted () const { return Rooted; };
+
+
+ virtual void MakeChild ();
+ virtual void MakeCurNodeALeaf (int i);
+ virtual void MakeRoot ();
+ virtual void MakeSibling ();
+ virtual void MakeNodeList ();
+
+ virtual void MarkNodes (bool on);
+ virtual NodePtr NewNode () const { return new Node; };
+
+ virtual int Parse (const char *TreeDescr);
+
+#if defined __BORLANDC__ && (__BORLANDC__ < 0x0550)
+ virtual int Read (istream &f);
+#else
+ virtual int Read (std::istream &f);
+#endif
+
+ virtual NodePtr RemoveNode (NodePtr Node);
+
+ virtual void SetCurNode (NodePtr p) { CurNode = p; };
+ virtual void SetEdgeLengths (bool on) { EdgeLengths = on; };
+ virtual void SetInternalLabels (bool on) { InternalLabels = on; };
+ virtual void SetName (const std::string s) { Name = s; };
+ virtual void SetNumInternals (const int n) { Internals = n; };
+ virtual void SetNumLeaves (const int n) { Leaves = n; };
+ virtual void SetRoot (NodePtr r) { Root = r; };
+ virtual void SetRooted (bool on) { Rooted = on; };
+ virtual void SetWeight (const double w) { Weight = w; };
+
+ virtual void Update ();
+
+
+#if defined __BORLANDC__ && (__BORLANDC__ < 0x0550)
+ virtual void Write (ostream &f);
+#else
+ virtual void Write (std::ostream &f);
+#endif
+
+ NodePtr operator[] (const int i) { return Nodes[i]; };
+
+
+
+protected:
+ NodePtr Root; // Root of tree
+ NodePtr CurNode; // Current node
+ int Leaves; // Number of leaves
+ int Internals; // Number of internal nodes
+ int Error;
+ std::string Name; // Name of tree (e.g., for NEXUS trees)
+ NodePtr *Nodes; // Array of nodes
+ std::map<std::string, int, std::less<std::string> > LeafList; // Quick lookup of leaves by label
+
+ bool InternalLabels; // Flag for displaying internal node labels
+ bool EdgeLengths; // Flag for displaying edge lengths
+ bool Rooted; // Flag for rooted/unrooted
+
+ std::string Line; // Buffer for drawing trees to text streams
+ int MaxHeight;
+ float MaxPathLength;
+
+ double Weight;
+
+ unsigned int Nodes_dimension; // stores the current dimension of the Nodes array - needed to rebuild Nodes if treesize changes JAC 13/05/04
+#if defined __BORLANDC__ && (__BORLANDC__ < 0x0550)
+ ostream *treeStream;
+#else
+ std::ostream *treeStream; // Pointer to stream used to draw trees to
+#endif
+
+ int count;
+
+ virtual void traverse (NodePtr p);
+
+ virtual void buildtraverse (NodePtr p);
+ virtual void copyTraverse (NodePtr p1, NodePtr &p2) const;
+ virtual void deletetraverse (NodePtr p);
+ virtual void drawAsTextTraverse (NodePtr p);
+ virtual void drawLine (NodePtr p, bool isChild = false);
+ virtual void fillInAncestors (NodePtr p);
+ virtual void drawPendantEdge (NodePtr p);
+ virtual void drawInteriorEdge (NodePtr p);
+ virtual void getNodeDepth(NodePtr p);
+ virtual void getNodeHeights (NodePtr p);
+ virtual void getPathLengths (NodePtr p);
+ virtual void markNodes (NodePtr p, bool on);
+ virtual void makeNodeList (NodePtr p);
+
+};
+typedef Tree *TreePtr;
+
+#if defined __BORLANDC__ && (__BORLANDC__ < 0x0550)
+inline istream& operator >> (istream& is, Tree &tree)
+{
+ tree.Read (is);
+ return is;
+}
+
+inline ostream& operator << (ostream& os, Tree &tree)
+{
+ tree.Write (os);
+ return os;
+}
+#else
+inline std::istream& operator >> (std::istream& is, Tree &tree)
+{
+ tree.Read (is);
+ return is;
+}
+
+inline std::ostream& operator << (std::ostream& os, Tree &tree)
+{
+ tree.Write (os);
+ return os;
+}
+#endif
+
+
+#ifdef __BORLANDC__
+ // Redefine __MINMAX_DEFINED so Windows header files compile
+ #ifndef __MINMAX_DEFINED
+ #define __MINMAX_DEFINED
+ #endif
+#endif
+
+
+#endif // TREELIB_H
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/TreeLib.h
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/gport/gdefs.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/gport/gdefs.h 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/gport/gdefs.h 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,38 @@
+#ifndef GDEFH
+#define GDEFH
+
+// Determine which platform we are building for
+
+
+
+#if __BORLANDC__ // Borland specific options
+ #define GPORT_WINDOWS 1 // Windows
+ #define GPORT_MAC 0
+#endif
+
+#ifdef __MWERKS__ // Metrowerks specific options
+ #ifdef __INTEL__
+ #define GPORT_WINDOWS 1 // Windows
+ #define GPORT_MAC 0
+ #define __WIN32__ // MetroWerks only supports Win32
+ #endif /* __INTEL__ */
+
+ #ifdef macintosh // MacOS
+ #ifdef __WXMAC__
+ #define USE_WXWINDOWS 1 // wxWindows
+ #define GPORT_MAC 0
+ #define GPORT_WINDOWS 0
+ #else
+ #define GPORT_MAC 1 // Macintosh
+ #define GPORT_WINDOWS 0
+ #endif
+ #endif /* macintosh */
+#endif
+
+#ifdef __GNUC__
+ #define GPORT_MAC 0 // Assume gcc implies X windows
+ #define GPORT_WINDOWS 0
+#endif
+
+#endif
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/gport/gdefs.h
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/gport/gport.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/gport/gport.cpp 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/gport/gport.cpp 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,324 @@
+#include "gport.h"
+
+
+// System specific defines
+
+#if GPORT_MAC
+ // From MacTech 4(6) "Comments about PICTs"
+ #define picGrpBeg 140
+ #define picGrpEnd 141
+#endif
+
+
+// The global port
+GBasePort *Port = NULL;
+
+
+// A sensible default font
+GBaseFont::GBaseFont ()
+{
+ description = "Times-Roman";
+ name = "Times-Roman";
+ size = 10;
+ bold = false;
+ italic = true;
+}
+
+GPostscriptPort::GPostscriptPort ()
+{
+ PenWidth = 1;
+ DocumentFonts = "";
+ Device = devPostscript;
+ DisplayRect.SetRect (0, 0, 595-144, 842-144);
+}
+
+void GPostscriptPort::DrawArc (const GPoint &pt, const int radius,
+ const double startAngleDegrees, const double endAngleDegrees)
+{
+ PostscriptStream << "newpath" << endl;
+ PostscriptStream << pt.GetX() << " " << -pt.GetY()
+ << " " << radius
+ << " " << (360.0 -startAngleDegrees)
+ << " " << (360.0 - endAngleDegrees)
+ << " arcn" << endl;
+ PostscriptStream << "stroke" << endl;
+ PostscriptStream << endl;
+}
+
+
+void GPostscriptPort::DrawLine (const int x1, const int y1, const int x2, const int y2)
+{
+ PostscriptStream << x2 << " " << -y2 << " " << x1 << " " << -y1 << " " << PenWidth << " DrawLine" << endl;
+}
+
+void GPostscriptPort::DrawCircle (const GPoint &pt, const int radius)
+{
+ PostscriptStream << "newpath" << endl;
+ PostscriptStream << pt.GetX() << " " << -pt.GetY() << " " << radius << " 0 360 arc" << endl;
+ PostscriptStream << "stroke" << endl;
+ PostscriptStream << endl;
+}
+
+
+void GPostscriptPort::DrawRect (const GRect &r)
+{
+ PostscriptStream << r.GetLeft() << " " << -r.GetTop() << " moveto" << endl;
+ PostscriptStream << r.GetWidth() << " 0 rlineto" << endl;
+ PostscriptStream << "0 " << -r.GetHeight() << " rlineto" << endl;
+ PostscriptStream << -r.GetWidth() << " 0 rlineto" << endl;
+ PostscriptStream << "0 " << r.GetHeight() << " rlineto" << endl;
+ PostscriptStream << "closepath" << endl;
+ PostscriptStream << "stroke" << endl;
+ PostscriptStream << endl;
+}
+
+void GPostscriptPort::DrawFilledRect (const GRect &r, double graylevel)
+{
+ PostscriptStream << r.GetLeft() << " " << -r.GetTop() << " moveto" << endl;
+ PostscriptStream << r.GetWidth() << " 0 rlineto" << endl;
+ PostscriptStream << "0 " << -r.GetHeight() << " rlineto" << endl;
+ PostscriptStream << -r.GetWidth() << " 0 rlineto" << endl;
+ PostscriptStream << "0 " << r.GetHeight() << " rlineto" << endl;
+ PostscriptStream << "closepath" << endl;
+ PostscriptStream << "gsave" << endl;
+ PostscriptStream << graylevel << " setgray fill" << endl;
+ PostscriptStream << "grestore" << endl;
+ PostscriptStream << "stroke" << endl;
+ PostscriptStream << endl;
+}
+
+void GPostscriptPort::DrawText (const int x, const int y, const char *text)
+{
+ PostscriptStream << "(" << text << ") " << x << " " << -y << " DrawText" << endl;
+}
+
+
+void GPostscriptPort::GetPrintingRect (GRect &r)
+{
+ // A4, with 1" margin
+ r.SetRect (0, 0, 595-144, 842-144);
+}
+
+
+void GPostscriptPort::SetCurrentFont (GBaseFont &font)
+{
+ std::string face = font.GetName();
+ if (font.IsBold() || font.IsItalic())
+ {
+ face += "-";
+ if (font.IsBold())
+ face += "Bold";
+ if (font.IsItalic())
+ face += "Italic";
+ }
+/*
+ // Duh -- need to do this earlier, perhaps scan the list of
+ // fonts already created and output those...
+ // Store this font in the list of fonts we need for our document
+ int found = DocumentFonts.find_first_of (face, 0);
+ if ((found < 0) || (found > DocumentFonts.length()))
+ {
+ if (DocumentFonts.length() > 0)
+ DocumentFonts += ", ";
+ DocumentFonts += face;
+ }
+*/
+ PostscriptStream << endl;
+ PostscriptStream << "/" << face << " findfont" << endl;
+ PostscriptStream << font.GetSize () << " scalefont" << endl;
+ PostscriptStream << "setfont" << endl;
+ PostscriptStream << endl;
+}
+
+
+// Mac
+// Win
+// Postscript
+
+void GPostscriptPort::SetPenWidth (int w)
+{
+ PenWidth = w;
+ PostscriptStream << w << " setlinewidth" << endl;
+ PostscriptStream << endl;
+}
+
+void GPostscriptPort::AddPSCommands(char* c)
+{
+ PostscriptStream << c;
+}
+
+void GPostscriptPort::StartPicture (char *pictFileName)
+{
+ PostscriptStream.open (pictFileName);
+
+
+ // Postscript header
+ PostscriptStream << "%!PS-Adobe-2.0" << endl;
+ PostscriptStream << "%%Creator: Roderic D. M. Page" << endl;
+ PostscriptStream << "%%DocumentFonts: Times-Roman" << endl;
+ PostscriptStream << "%%Title:" << pictFileName << endl;
+ PostscriptStream << "%%BoundingBox: 0 0 595 842" << endl; // A4
+ PostscriptStream << "%%Pages: 1" << endl;
+ PostscriptStream << "%%EndComments" << endl;
+ PostscriptStream << endl;
+
+ // Move origin to top left corner
+ PostscriptStream << "0 842 translate" << endl;
+ PostscriptStream << "72 -72 translate" << endl; // one inch margin
+
+ // Some definitions for drawing lines, etc.
+
+ // Drawline draws text with encaps that project...
+ PostscriptStream << "% Encapsulate drawing a line" << endl;
+ PostscriptStream << "% arguments x1 y1 x2 xy2 width" << endl;
+ PostscriptStream << "/DrawLine {" << endl;
+ PostscriptStream << " gsave" << endl;
+ PostscriptStream << " setlinewidth" << endl;
+ // We may not always want to set this as it works best with rectangular trees...
+// PostscriptStream << " 2 setlinecap" << endl;
+ PostscriptStream << " 0 setgray" << endl;
+ PostscriptStream << " moveto" << endl;
+ PostscriptStream << " lineto" << endl;
+ PostscriptStream << " stroke" << endl;
+ PostscriptStream << " grestore" << endl;
+ PostscriptStream << " } bind def" << endl;
+ PostscriptStream << endl;
+
+ PostscriptStream << "% Encapsulate drawing text" << endl;
+ PostscriptStream << "% arguments x y text" << endl;
+ PostscriptStream << "/DrawText {" << endl;
+ PostscriptStream << " gsave 1 setlinewidth 0 setgray" << endl;
+ PostscriptStream << " moveto" << endl;
+ PostscriptStream << " show grestore" << endl;
+ PostscriptStream << "} bind def" << endl;
+ PostscriptStream << endl;
+
+}
+
+void GPostscriptPort::EndPicture ()
+{
+ PostscriptStream << "showpage" << endl;
+ PostscriptStream << "%%Trailer" << endl;
+ PostscriptStream << "%%end" << endl;
+ PostscriptStream << "%%EOF" << endl;
+ PostscriptStream.close ();
+}
+
+
+
+#if GPORT_MAC
+// Macintosh
+void GMacPort::BeginGroup ()
+{
+// ::PicComment (picGrpBeg, 0, NULL);
+}
+
+void GMacPort::EndGroup ()
+{
+// ::PicComment (picGrpEnd, 0, NULL);
+}
+#endif
+
+SVGPort::SVGPort ()
+{
+ fontString = "font-family:Times;font-size:12";
+ DisplayRect.SetRect (0, 0, 400, 400);
+}
+
+void SVGPort::DrawLine (const int x1, const int y1, const int x2, const int y2)
+{
+ svgStream << "<path style=\"stroke:black;";
+ svgStream << ";stroke-width:" << PenWidth;
+ svgStream << ";stroke-linecap:square";
+ svgStream << "\" ";
+
+
+ svgStream << "d=\"M";
+ svgStream << x1 << " " << y1 << " " << x2 << " " << y2 << "\"/>";
+
+
+// svgStream << "<g style=\"fill:none;stroke:black\"><path d=\"M";
+// svgStream << x1 << " " << y1 << " " << x2 << " " << y2 << "\"/>";
+// svgStream << "</g>" << endl;
+}
+
+void SVGPort::DrawCircle (const GPoint &pt, const int radius)
+{
+/* PostscriptStream << "newpath" << endl;
+ PostscriptStream << pt.GetX() << " " << -pt.GetY() << " " << radius << " 0 360 arc" << endl;
+ PostscriptStream << "stroke" << endl;
+ PostscriptStream << endl;
+*/
+}
+
+
+void SVGPort::DrawRect (const GRect &r)
+{
+/* PostscriptStream << r.GetLeft() << " " << -r.GetTop() << " moveto" << endl;
+ PostscriptStream << r.GetWidth() << " 0 rlineto" << endl;
+ PostscriptStream << "0 " << -r.GetHeight() << " rlineto" << endl;
+ PostscriptStream << -r.GetWidth() << " 0 rlineto" << endl;
+ PostscriptStream << "0 " << r.GetHeight() << " rlineto" << endl;
+ PostscriptStream << "closepath" << endl;
+ PostscriptStream << "stroke" << endl;
+ PostscriptStream << endl;
+*/
+}
+
+void SVGPort::DrawText (const int x, const int y, const char *text)
+{
+ svgStream << "<text x=\"" << x << "\" y=\"" << y << "\" style=\"" << fontString << "\" >"
+ << text << "</text>" << endl;
+}
+
+
+void SVGPort::StartPicture (char *pictFileName)
+{
+ svgStream.open (pictFileName);
+
+ svgStream << "<?xml version=\"1.0\" standalone=\"no\"?>" << endl;
+ svgStream << "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 20010904//EN\" " << endl;
+ svgStream << "\"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd\"> " << endl;
+
+ svgStream << "<svg width=\"" << DisplayRect.GetWidth() << "pt\" "
+ << "height=\"" << DisplayRect.GetHeight() << "pt\" >" << endl;
+
+// <title>test</title>
+// <desc>test</desc>
+}
+
+void SVGPort::EndPicture ()
+{
+ svgStream << "</svg>" << endl;
+ svgStream.close ();
+}
+
+
+void SVGPort::GetPrintingRect (GRect &r)
+{
+ r = DisplayRect;
+}
+
+void SVGPort::SetCurrentFont (GBaseFont &font)
+{
+ fontString = "";
+ fontString += "font-family:";
+ fontString += font.GetName();
+
+ char buf[32];
+ sprintf (buf, ";font-size:%d", font.GetSize());
+ fontString += buf;
+
+ if (font.IsItalic())
+ {
+ fontString += ";font-style:italic";
+ }
+ if (font.IsBold())
+ {
+ fontString += ";font-weight:bold";
+ }
+
+}
+
+
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/gport/gport.cpp
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/gport/gport.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/gport/gport.h 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/gport/gport.h 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,311 @@
+#ifndef GPORTH
+#define GPORTH
+
+#ifdef __BORLANDC__
+ // Undefine __MINMAX_DEFINED so that min and max are correctly defined
+ #ifdef __MINMAX_DEFINED
+ #undef __MINMAX_DEFINED
+ #endif
+ // Ignore "Cannot create precompiled header: code in header" message
+ // generated when compiling string.cc
+ #pragma warn -pch
+#endif
+
+#include <iostream>
+#include <fstream>
+#include <string>
+
+#ifdef __BORLANDC__
+ #pragma warn .pch
+#endif
+
+
+using namespace std;
+
+
+#include "gdefs.h"
+
+// System specific includes here
+#if GPORT_WINDOWS
+#endif
+
+#if GPORT_MAC
+// #include <Printing.h>
+#endif
+
+enum GPortDevice {devScreen, devPrinter, devPicture, devPostscript};
+
+
+
+
+/* Note that we always draw using the following coordinate system:
+
+(0,0)--------->(+x,0)
+ |
+ |
+ |
+ \/
+(+y,0)
+
+ Hence the origin is the top left hand corner, and y goes down rather than up.
+ This is typical for drawing to a window. Some systems have other coordinate
+ systems (such as Postscript). We make the translation internally.
+
+*/
+
+// A point
+class GPoint
+{
+public:
+ GPoint () { SetPoint (0, 0); };
+ GPoint (GPoint &p) { X = p.X; Y = p.Y; };
+ GPoint (const int x, const int y) { SetPoint (x, y); };
+ virtual int GetX () const { return X; };
+ virtual int GetY () const { return Y; };
+ virtual void Offset (const int xoff, const int yoff) { X += xoff; Y += yoff; };
+ virtual void SetPoint (const int x, const int y) { X = x; Y = y; };
+ virtual void SetX (int x) { X = x; };
+ virtual void SetY (int y) { Y = y; };
+
+ int operator== (const GPoint &p) { return (int) ( (X == p.X) && ( Y == p.Y)); };
+ int operator!= (const GPoint &p) { return (int) ( (X != p.X) || ( Y != p.Y)); };
+protected:
+ int X;
+ int Y;
+};
+
+// A rectangle
+class GRect
+{
+public:
+ GRect () { left = top = right = bottom = 0; };
+ GRect (const int l, const int t, const int r, const int b) { SetRect (l, t, r, b); };
+ virtual int GetLeft () const { return left; };
+ virtual int GetTop () const { return top; };
+ virtual int GetRight () const { return right; };
+ virtual int GetBottom () const { return bottom; };
+ virtual int GetWidth () const { return right - left; };
+ virtual int GetHeight () const { return bottom - top; };
+
+ virtual void Inset (const int dx, const int dy) { left += dx; right -= dx; top += dy; bottom -= dy; };
+ virtual void Offset (const int dx, const int dy) { left += dx; right += dx; top += dy; bottom += dy; };
+ virtual bool PointInRect (GPoint &pt)
+ {
+ return (((pt.GetX() >= left) && (pt.GetX() <= right)) &&
+ ((pt.GetY() >= top) && (pt.GetY() <= bottom)));
+ }
+
+ virtual void SetLeft (const int l) {left = l; };
+ virtual void SetTop (const int t) {top = t; };
+ virtual void SetRight (const int r) {right = r; };
+ virtual void SetBottom (const int b) {bottom = b; };
+ virtual void SetRect (const int l, const int t, const int r, const int b)
+ { left = l; top = t; right = r; bottom = b; };
+
+protected:
+ int left, top, right, bottom;
+};
+
+// Base class for system specific fonts
+class GBaseFont
+{
+public:
+ GBaseFont ();
+ virtual ~GBaseFont () {};
+ virtual std::string GetName () { return description; };
+ virtual std::string GetDescription () { return description; };
+ virtual int GetSize () { return size; };
+ virtual bool IsBold () { return bold; };
+ virtual bool IsItalic () { return italic; };
+protected:
+ std::string description;
+ std::string name;
+ int size;
+ bool bold;
+ bool italic;
+};
+typedef GBaseFont *GBaseFontPtr;
+
+typedef GBaseFont GFont ; // for now
+typedef GFont *GFontPtr;
+
+
+
+// Windows needs the two handles for screen and printer fonts
+// Mac just sets things
+// Postscript writes to the postscript stream
+
+
+// Virtual class to encapsulate printing
+class GBasePrinter
+{
+public:
+ GBasePrinter () {};
+ virtual ~GBasePrinter () {};
+ virtual void PrinterSetup () = 0;
+ virtual void AbortPrinting () = 0;
+ virtual void EndDoc ();
+ virtual bool EndPage ();
+ virtual void GetPrintingRect (GRect &r) = 0;
+ virtual void GetPhysicalPageRect (GRect &r) = 0;
+ virtual bool StartPage () = 0;
+ virtual bool StartDoc (char *jobname = "GBasePrinter") = 0;
+};
+
+// Windows port VPort
+// Mac port VPort
+// Postscript - just write to file
+
+
+
+// Encapsulates the complete graphics system (screen drawing, picture files,
+// printing, clipboard).
+class GBasePort
+{
+public:
+ GBasePort () { Device = devScreen; PenWidth = 1;};
+ virtual ~GBasePort() {};
+ virtual void DrawArc (const GPoint &pt, const int radius,
+ const double startAngleDegrees, const double endAngleDegrees) = 0;
+ virtual void DrawCircle (const GPoint &pt, const int radius) = 0;
+ virtual void DrawLine (const int x1, const int y1, const int x2, const int y2) = 0;
+ virtual void DrawLinePts (const GPoint &pt1, const GPoint &pt2)
+ { DrawLine (pt1.GetX(), pt1.GetY(), pt2.GetX(), pt2.GetY()); };
+ virtual void DrawRect (const GRect &r) = 0;
+ virtual void DrawText (const int x, const int y, const char *s) = 0;
+
+ // Display
+ virtual GPortDevice GetCurrentDevice () { return Device; };
+ virtual void GetDisplayRect (GRect &r) { r = DisplayRect; };
+ virtual void SetDisplayRect (GRect &r) { DisplayRect = r; };
+
+ // Pen
+ virtual int GetPenWidth () { return PenWidth; };
+ virtual void SetPenWidth (int w) { PenWidth = w; };
+
+ // Fonts
+ virtual void SetCurrentFont (GBaseFont &font) = 0;
+
+ // Pictures
+ virtual void StartPicture (char *pictFileName) = 0;
+ virtual void EndPicture () = 0;
+
+ // Groups
+ virtual void BeginGroup () = 0;
+ virtual void EndGroup () = 0;
+
+ // Printing
+ virtual void GetPrintingRect (GRect &r) = 0;
+
+
+protected:
+ // list of fonts
+ // printer class
+ //pens
+
+ int PenWidth;
+
+ // Device info
+ GPortDevice Device;
+ GRect DisplayRect;
+};
+
+// Mac
+// Win
+// Postscript
+
+class GPostscriptPort : public GBasePort
+{
+public:
+ GPostscriptPort ();
+ virtual ~GPostscriptPort () {};
+ virtual void DrawArc (const GPoint &pt, const int radius,
+ const double startAngleDegrees, const double endAngleDegrees);
+ virtual void DrawCircle (const GPoint &pt, const int radius);
+ virtual void DrawLine (const int x1, const int y1, const int x2, const int y2);
+ virtual void DrawRect (const GRect &r);
+ virtual void DrawFilledRect (const GRect &r, double greylevel); //greylevel of fill - 0 is black, 1 is white
+ virtual void DrawText (const int x, const int y, const char *text);
+
+ // Pen
+ virtual void SetPenWidth (int w);
+
+
+ // Fonts
+ virtual void SetCurrentFont (GBaseFont &font);
+
+ // Pictures
+ virtual void StartPicture (char *pictFileName);
+ virtual void EndPicture ();
+
+ // Groups
+ virtual void BeginGroup () {};
+ virtual void EndGroup () {};
+
+ // Printing
+ virtual void GetPrintingRect (GRect &r);
+
+ // Random
+ virtual void AddPSCommands (char* c); //allow direct access to postscript file - needed for nice spacing in histogram
+
+protected:
+ ofstream PostscriptStream;
+ std::string DocumentFonts;
+};
+
+class GMacPort : public GBasePort
+{
+public:
+ // Groups
+ virtual void BeginGroup ();
+ virtual void EndGroup ();
+protected:
+};
+
+class SVGPort : public GBasePort
+{
+public:
+ SVGPort ();
+ virtual void DrawArc (const GPoint &pt, const int radius,
+ const double startAngleDegrees, const double endAngleDegrees) {};
+ virtual void DrawCircle (const GPoint &pt, const int radius);
+ virtual void DrawLine (const int x1, const int y1, const int x2, const int y2);
+ virtual void DrawRect (const GRect &r);
+ virtual void DrawText (const int x, const int y, const char *text);
+
+ // Pen
+ virtual void SetPenWidth (int w) {};
+
+
+ // Fonts
+ virtual void SetCurrentFont (GBaseFont &font);
+
+ // Pictures
+ virtual void StartPicture (char *pictFileName);
+ virtual void EndPicture ();
+
+ // Groups
+ virtual void BeginGroup () {};
+ virtual void EndGroup () {};
+
+ // Printing
+ virtual void GetPrintingRect (GRect &r);
+protected:
+ ofstream svgStream;
+ std::string fontString;
+};
+
+
+#ifndef USE_VC2
+extern GBasePort *Port; // for now
+#endif
+
+#ifdef __BORLANDC__
+ // Redefine __MINMAX_DEFINED so Windows header files compile
+ #ifndef __MINMAX_DEFINED
+ #define __MINMAX_DEFINED
+ #endif
+#endif
+
+
+#endif
Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/gport/gport.h
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/lcaquery.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/lcaquery.cpp 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/lcaquery.cpp 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,55 @@
+#include "lcaquery.h"
+
+#define DEBUG_LCA 1
+#if DEBUG_LCA
+ #include <stdio.h>
+#endif
+
+LCAQuery::LCAQuery (Tree *tree)
+{
+ SetTree (tree);
+}
+
+void LCAQuery::SetTree (Tree *tree)
+{
+ t = tree;
+ Initialise ();
+}
+
+void SimpleLCAQuery::Initialise ()
+{
+ PreorderIterator <Node> n (t->GetRoot());
+
+ int count = 0;
+ Node *q = n.begin();
+ while (q)
+ {
+ depth[q] = count++;
+
+#if DEBUG_LCA
+ if (!q->IsLeaf())
+ {
+ char buf[32];
+ sprintf (buf, "%d", (count-1));
+ q->SetLabel (buf);
+ }
+#endif
+ q = n.next();
+ }
+}
+
+NodePtr SimpleLCAQuery::LCA (NodePtr i, NodePtr j)
+{
+ NodePtr p = i;
+ NodePtr q = j;
+
+ while (depth[p] != depth[q])
+ {
+ if (depth[p] < depth[q])
+ q = q->GetAnc();
+ else
+ p = p->GetAnc();
+ }
+ return p;
+}
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/lcaquery.cpp
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/lcaquery.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/lcaquery.h 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/lcaquery.h 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,98 @@
+/*
+ * TreeLib
+ * A library for manipulating phylogenetic trees.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+ // $Id: lcaquery.h,v 1.1 2002/03/14 14:11:42 rdmp1c Exp $
+
+/**
+ * @file lcaquery.h
+ *
+ * Classes to perform LCA queries on a tree
+ *
+ */
+
+#ifndef LCAQUERYH
+#define LCAQUERYH
+
+#ifdef __BORLANDC__
+ // Undefine __MINMAX_DEFINED so that min and max are correctly defined
+ #ifdef __MINMAX_DEFINED
+ #undef __MINMAX_DEFINED
+ #endif
+ // Ignore "Cannot create precompiled header: code in header" message
+ // generated when compiling string.cc
+ #pragma warn -pch
+#endif
+
+#include <vector>
+
+#include "TreeLib.h"
+#include "nodeiterator.h"
+
+/**
+ * @class LCAQuery
+ * Base class for performing LCA queries. Descendants of this class must
+ * override the abstract member function LCA.
+ */
+class LCAQuery
+{
+public:
+ LCAQuery () { t = NULL; };
+ LCAQuery (Tree *tree);
+ virtual ~LCAQuery () {};
+ virtual NodePtr LCA (NodePtr i, NodePtr j) = 0;
+ virtual void SetTree (Tree *tree);
+protected:
+ Tree *t;
+ virtual void Initialise () {};
+};
+
+/**
+ * @class SimpleLCAQuery
+ * Does naive LCA queries by going down the tree until we find the
+ * LCA.
+ */
+class SimpleLCAQuery : public LCAQuery
+{
+public:
+ SimpleLCAQuery () {};
+ SimpleLCAQuery (Tree *tree) : LCAQuery (tree) { Initialise (); };
+ /**
+ * Finds LCA by going down tree twowards root until we reach node
+ * with the same preorder number.
+ * @return LCA of nodes i and j
+ */
+ virtual NodePtr LCA (NodePtr i, NodePtr j);
+protected:
+ std::map<Node *, int, std::less<Node *> > depth;
+ /**
+ * Number the nodes in preorder (root = 0).
+ */
+ virtual void Initialise ();
+};
+
+#if __BORLANDC__
+ // Redefine __MINMAX_DEFINED so Windows header files compile
+ #ifndef __MINMAX_DEFINED
+ #define __MINMAX_DEFINED
+ #endif
+#endif
+
+#endif
Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/lcaquery.h
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/mast.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/mast.cpp 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/mast.cpp 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,295 @@
+/*
+ * TreeLib
+ * A library for manipulating phylogenetic trees.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+ // $Id: mast.cpp,v 1.5 2005/05/24 22:55:16 rdmp1c Exp $
+
+/**
+ * @file mast.cpp
+ *
+ * Compute Maximum Agreement Subtree (MAST) between a pair of trees
+ *
+ */
+
+// Vital that this is included before <iomanip.h> or Borland C++ 5.5 complains that
+// min and max are alreday defined
+#include "mast.h"
+
+#include <iomanip.h>
+
+#ifdef __GNUC__
+ #include <algo.h>
+#endif
+
+#define USE_MATCHING 1
+#if USE_MATCHING
+ #include "mwbmatching.h"
+#endif
+
+typedef std::vector <NNodePtr> NodeVector;
+
+int MAST (NTree &T1, NTree &T2)
+{
+ int result = 0;
+
+ // 1. create lists of the nodes in T1 and T2 in postorder
+ int count = 0;
+ NodeVector pot1;
+ NodeIterator <Node> n1 (T1.GetRoot());
+ Node *q = n1.begin();
+ while (q)
+ {
+ q->SetIndex (count);
+ pot1.push_back ((NNode *)q);
+ count++;
+ q = n1.next();
+ }
+
+ count = 0;
+ NodeVector pot2;
+ NodeIterator <Node> n2 (T2.GetRoot());
+ q = n2.begin();
+ while (q)
+ {
+ q->SetIndex (count);
+ pot2.push_back ((NNode *)q);
+ count++;
+ q = n2.next();
+ }
+
+ // Matrix to hold solutions
+ int **m;
+
+ m = new int *[T1.GetNumNodes()];
+ for (int i = 0; i < T1.GetNumNodes(); i++)
+ m[i] = new int [T2.GetNumNodes()];
+
+ for (int i = 0; i < T1.GetNumNodes(); i++)
+ for (int j = 0; j <T2.GetNumNodes(); j++)
+ m[i][j] = 0;
+
+
+ // 2. Visit all pairs of nodes in T1 and T2
+ for (int i = 0; i < T1.GetNumNodes(); i++)
+ {
+ for (int j = 0; j <T2.GetNumNodes(); j++)
+ {
+ if (pot1[i]->IsLeaf() || pot2[j]->IsLeaf())
+ {
+ // Both are leaves, so MAST[i,j] is 1 if labels are identical
+ if (pot1[i]->IsLeaf() && pot2[j]->IsLeaf())
+ {
+ if ( pot1[i]->GetLabel() == pot2[j]->GetLabel())
+ m[i][j] = 1;
+ }
+ else
+ {
+ // Only one is a leaf, so MAST[i,j] is 1 if leaf is element in cluster
+ IntegerSet common;
+ std::set_intersection (pot1[i]->Cluster.begin(), pot1[i]->Cluster.end(),
+ pot2[j]->Cluster.begin(), pot2[j]->Cluster.end(),
+ std::inserter (common, common.end()));
+ int w = common.size();
+ m[i][j] = w;
+ }
+ }
+ else
+ {
+ // Both are internals so MAST[i,j] is MAX (diag, match)
+ std::vector <NodePtr> pchildren, qchildren;
+
+ // diag
+ int diag = 0;
+
+ // Get MAST of base of subtree in t1 and immediate children of
+ // base of subtree in t2, and at the same time store list of
+ // immediate children
+ NodePtr p = pot2[j]->GetChild();
+ while (p)
+ {
+ qchildren.push_back(p);
+ diag = std::max (diag, m[i][p->GetIndex()]);
+ p = p->GetSibling();
+ }
+ // get MAST of base of subtree in t2 and immediate children of
+ // base of subtree in t1, and at the same time store list of
+ // immediate children
+ NodePtr q = pot1[i]->GetChild();
+ while (q)
+ {
+ pchildren.push_back(q);
+ diag = std::max (diag, m[q->GetIndex()][j]);
+ q = q->GetSibling();
+ }
+
+ // maximum weighted bipartite matching
+
+#if USE_MATCHING
+ int match = 0;
+ graph g;
+ g.make_directed();
+
+ // Nodes for p and q children
+ map <int, node, less <int> > p_node;
+ map <int, node, less <int> > q_node;
+ for (int k = 0; k < pchildren.size(); k++)
+ {
+ node n = g.new_node();
+ p_node[k] = n;
+ }
+ for (int k = 0; k < qchildren.size(); k++)
+ {
+ node n = g.new_node();
+ q_node[k] = n;
+ }
+ // Edges
+ edge_map<int> weights(g, 0);
+
+
+ for (int k = 0; k < pchildren.size(); k++)
+ {
+ for (int r = 0; r < qchildren.size(); r++)
+ {
+ int v = pchildren[k]->GetIndex();
+ int w = qchildren[r]->GetIndex();
+
+ // It seems that if the partition "from" is much larger than "to,
+ // the matching algorithm can blow up with a memory access error
+ // in fheap.c. Reversing the graph seems to help.
+
+ edge e;
+ if (pchildren.size() < qchildren.size())
+ e = g.new_edge (p_node[k], q_node[r]);
+ else
+ e = g.new_edge (q_node[r], p_node[k]);
+
+ weights[e] = m[v][w];
+ }
+ }
+
+// cout << "g" << endl;
+// cout << g;
+// g.save();
+// cout << "Start matching...";
+
+ if (g.number_of_nodes() == 0)
+ {
+ match = 0;
+ }
+
+ else
+ {
+
+ mwbmatching mwbm;
+ mwbm.set_vars (weights);
+
+ if (mwbm.check(g) != algorithm::GTL_OK)
+ {
+ cout << "Maximum weight bipartite matching algorithm check failed" << endl;
+ exit(1);
+ }
+ else
+ {
+ if (mwbm.run(g) != algorithm::GTL_OK)
+ {
+ cout << "Error running maximum weight bipartite matching algorithm" << endl;
+ exit(1);
+ }
+ else
+ {
+ match = mwbm.get_mwbm();
+ }
+ }
+ }
+// cout << "matching done (" << match << ")" << endl;
+#else
+ // For now (sigh) brute force generation of all matchings. Eventually
+ // will need to do this more efficiently
+ int n = std::max (pchildren.size(), qchildren.size());
+
+ // Store a vector of indices of children of subtree in t2.
+ // We will permute this to generate all matchings. If t2
+ // has fewer children than subtree in t1, vector will contain
+ // one or more "null" (-1) values.
+ std::vector <int> perm;
+ for (int k = 0; k < n; k++)
+ {
+ if (k < qchildren.size())
+ perm.push_back (k);
+ else
+ perm.push_back (-1);
+ }
+
+ // Generate all matchings
+
+ // First matching
+ int match = 0;
+ for (int k = 0; k < n; k++)
+ {
+ if ((k < pchildren.size()) && (perm[k] != -1))
+ {
+ int v = pchildren[k]->GetIndex();
+ int w = qchildren[perm[k]]->GetIndex();
+ match += m[v][w];
+ }
+ }
+
+ // Remaining matchings
+ while (next_permutation (perm.begin(), perm.end()) )
+ {
+ int this_match = 0;
+ for (int k = 0; k < n; k++)
+ {
+ if ((k < pchildren.size()) && (perm[k] != -1))
+ {
+ int v = pchildren[k]->GetIndex();
+ int w = qchildren[perm[k]]->GetIndex();
+ this_match += m[v][w];
+ }
+ }
+ match = std::max (match, this_match);
+ }
+#endif
+ m[i][j] = std::max (diag, match);
+ }
+ }
+ }
+
+ result = m[T1.GetNumNodes() - 1][T2.GetNumNodes() - 1];
+
+ // Show matrix
+/* for (int i = 0; i < T1.GetNumNodes(); i++)
+ {
+ cout << setw(3) << i << "|";
+ for (int j = 0; j < T2.GetNumNodes(); j++)
+ cout << setw(3) << m[i][j];
+ cout << endl;
+ }
+*/
+
+ // clean up
+ for (int i = 0; i < T1.GetNumNodes(); i++)
+ delete [] m[i];
+
+ delete [] m;
+
+ return result;
+}
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/mast.cpp
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/mast.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/mast.h 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/mast.h 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,70 @@
+/*
+ * TreeLib
+ * A library for manipulating phylogenetic trees.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+ // $Id: mast.h,v 1.1 2002/05/16 16:07:32 rdmp1c Exp $
+
+/**
+ * @file mast.h
+ *
+ * Compute Maximum Agreement Subtree (MAST) between a pair of trees
+ *
+ */
+#ifndef MASTH
+#define MASTH
+
+#ifdef __BORLANDC__
+ // Undefine __MINMAX_DEFINED so that min and max are correctly defined
+ #ifdef __MINMAX_DEFINED
+ #undef __MINMAX_DEFINED
+ #endif
+ // Ignore "Cannot create precompiled header: code in header" message
+ // generated when compiling string.cc
+ #pragma warn -pch
+#endif
+
+#include "nodeiterator.h"
+#include "ntree.h"
+
+/**
+ * @fn int MAST (NTree &T1, NTree &T2)
+ * @brief Computes the size of the maximum agreement subtree between two rooted trees
+ *
+ * MAST uses the dynamic programming algorithm of Steel and Warnow (1993) to compute
+ * the size of the largest agreement subtree. The algorithm has time complexity
+ * @f${\rm O}(n^{4.5} \log n + V)@f$ for two trees with @em n leaves, where @em V
+ * is the maximum number of nodes in the trees. This implementation would be much improved
+ * by using an efficient algorithm for maximum weight bipartite matching (rather than
+ * simply enumerating all @f$(k - 1)!@f$ possible matchings), and by using the
+ * sparsification techniques of Farach and Thorup (1997).
+ *
+ * @param T1 one tree
+ * @param T2 another tree
+ */
+int MAST (NTree &T1, NTree &T2);
+
+#if __BORLANDC__
+ // Redefine __MINMAX_DEFINED so Windows header files compile
+ #ifndef __MINMAX_DEFINED
+ #define __MINMAX_DEFINED
+ #endif
+#endif
+
+#endif
Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/mast.h
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/nodeiterator.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/nodeiterator.h 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/nodeiterator.h 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,187 @@
+/*
+ * TreeLib
+ * A library for manipulating phylogenetic trees.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+ // $Id: nodeiterator.h,v 1.5 2005/03/29 16:48:52 rdmp1c Exp $
+
+/**
+ * @file nodeiterator.h
+ *
+ * Iterate over nodes in a tree
+ *
+ */
+
+
+/*
+ 29 March 2005
+
+ Spent a day trying to get TreeView X to work with gcc 3.4.1 on Mandrake 10.1.
+ Even if it compiled, the phylogram display would cause a segmentation fault.
+ Eventualy tracked it down to the PreorderIterator class. Essentially, in a
+ templated class the inherited members need to be explicity identified, e.g.
+ by something like B<T>::f. Hence, in PreorderIterator I can't refer to cur
+ but PreorderIterator<N>::cur works. Initially when trying to get it to build I
+ simply duplicated the members, but this caused TreeView X to crash.
+
+ For more on this "feature" see http://lists.debian.org/debian-gcc/2004/05/msg00435.html
+
+*/
+
+#ifndef NODEITERATORH
+#define NODEITERATORH
+
+#ifdef __BORLANDC__
+ // Undefine __MINMAX_DEFINED so that min and max are correctly defined
+ #ifdef __MINMAX_DEFINED
+ #undef __MINMAX_DEFINED
+ #endif
+ // Ignore "Cannot create precompiled header: code in header" message
+ // generated when compiling string.cc
+ #pragma warn -pch
+#endif
+
+#include <vector>
+#include <stack>
+
+/**
+ * @class NodeIterator
+ * Iterator class that visits nodes in a tree in post order. Uses a stack to keep
+ * track of place in tree. By making this a template class we can apply it to
+ * any descendant of the class Node.
+ *
+ */
+template <class N> class NodeIterator
+{
+public:
+ /**
+ * Constructor takes the root of the tree as a parameter.
+ * @param r the root of the tree
+ */
+ NodeIterator (N *r) { root = r; };
+ virtual ~NodeIterator () {};
+ /**
+ * Initialises the iterator and returns the first node.
+ * @return The first node of the tree
+ */
+ virtual N *begin ();
+ /**
+ * Moves to the next node in the tree.
+ * @return The next node in the tree, or NULL if all nodes have been visited.
+ */
+ virtual N *next ();
+
+
+protected:
+ N *root;
+ N *cur;
+ std::stack < N *, std::vector<N *> > stk;
+};
+
+
+template <class N> class PreorderIterator : public NodeIterator<N>
+{
+public:
+ PreorderIterator (N *r) : NodeIterator<N> (r) {};
+ virtual ~PreorderIterator () {};
+ virtual N *begin ();
+ virtual N *next ();
+};
+
+
+
+template <class N> N *NodeIterator<N>::begin ()
+{
+ cur = root;
+ while (cur->GetChild())
+ {
+ stk.push (cur);
+ cur = (N *)(cur->GetChild());
+ }
+ return cur;
+}
+
+template <class N> N *NodeIterator<N>::next ()
+{
+ if (stk.empty())
+ cur = NULL;
+ else
+ {
+ if (cur->GetSibling())
+ {
+ N *p = (N *)(cur->GetSibling());
+ while (p->GetChild())
+ {
+ stk.push (p);
+ p = (N *)(p->GetChild());
+ }
+ cur = p;
+ }
+ else
+ {
+ cur = stk.top();
+ stk.pop();
+ }
+ }
+ return cur;
+}
+
+template <class N> N *PreorderIterator<N>::begin ()
+{
+ PreorderIterator<N>::cur = PreorderIterator<N>::root;
+ return PreorderIterator<N>::cur;
+}
+
+template <class N> N *PreorderIterator<N>::next ()
+{
+ if (PreorderIterator<N>::cur->GetChild())
+ {
+ PreorderIterator<N>::stk.push (PreorderIterator<N>::cur);
+ N *p = (N *)(PreorderIterator<N>::cur->GetChild());
+ PreorderIterator<N>::cur = p;
+ }
+ else
+ {
+ while (!PreorderIterator<N>::stk.empty() && (PreorderIterator<N>::cur->GetSibling() == NULL))
+ {
+ PreorderIterator<N>::cur = PreorderIterator<N>::stk.top();
+ PreorderIterator<N>::stk.pop();
+ }
+ if (PreorderIterator<N>::stk.empty())
+ PreorderIterator<N>::cur = NULL;
+ else
+ {
+ N *p = (N *)(PreorderIterator<N>::cur->GetSibling());
+ PreorderIterator<N>::cur = p;
+ }
+ }
+ return PreorderIterator<N>::cur;
+}
+
+
+#if __BORLANDC__
+ // Redefine __MINMAX_DEFINED so Windows header files compile
+ #ifndef __MINMAX_DEFINED
+ #define __MINMAX_DEFINED
+ #endif
+#endif
+
+
+
+#endif
Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/nodeiterator.h
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/ntree.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/ntree.cpp 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/ntree.cpp 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,273 @@
+#include "ntree.h"
+
+#ifdef __GNUC__
+#include <algo.h>
+#endif
+
+enum SetRelations {IDENTITY = 0, DISJOINT, SUBSET, SUPERSET, OVERLAPPING};
+
+
+SetRelations Relationship (IntegerSet &one, IntegerSet &two);
+
+
+SetRelations Relationship (IntegerSet &one, IntegerSet &two)
+{
+ SetRelations result;
+
+/* cout << " {";
+ std::copy (one.begin(), one.end(),
+ std::ostream_iterator<int>(cout, " "));
+ cout << "}";
+
+ cout << " {";
+ std::copy (two.begin(), two.end(),
+ std::ostream_iterator<int>(cout, " "));
+ cout << "}";
+*/
+ if (one == two)
+ result = IDENTITY;
+ else if (std::includes (two.begin(), two.end(), one.begin(), one.end()))
+ result = SUBSET; // one is a subset of two
+ else if (std::includes (one.begin(), one.end(), two.begin(), two.end()))
+ result = SUPERSET; // two is a subset of one
+ else
+ {
+ IntegerSet common;
+ std::set_intersection (one.begin(), one.end(),
+ two.begin(), two.end(),
+ std::inserter (common, common.end()));
+ if (common.size() == 0)
+ result = DISJOINT;
+ else
+ result = OVERLAPPING;
+ }
+
+// cout << "result=" << result << endl;
+
+ return result;
+}
+
+
+void NTree::BuildClustersTraverse (NNodePtr p)
+{
+ if (p)
+ {
+ p->Cluster.erase (p->Cluster.begin(), p->Cluster.end());
+ BuildClustersTraverse ((NNodePtr)(p->GetChild()));
+ BuildClustersTraverse ((NNodePtr)(p->GetSibling()));
+ if (p->IsLeaf())
+ {
+ switch (use)
+ {
+ case useLeafNumber:
+ p->Cluster.insert (p->GetLeafNumber());
+ break;
+
+ case useLabelNumber:
+ p->Cluster.insert (p->GetLabelNumber());
+ break;
+ }
+ }
+ if (p !=Root)
+ {
+ NNodePtr anc = (NNodePtr)(p->GetAnc());
+ std::set<int, less<int> > temp_set;
+ std::set_union(anc->Cluster.begin(), anc->Cluster.end(),
+ p->Cluster.begin(), p->Cluster.end(),
+ std::inserter(temp_set, temp_set.begin()));
+ anc->Cluster.swap(temp_set);
+ }
+ }
+}
+
+void NTree::BuildLeafLabelsTraverse (NNodePtr p)
+{
+ if (p)
+ {
+ BuildLeafLabelsTraverse ((NNodePtr)(p->GetChild()));
+ BuildLeafLabelsTraverse ((NNodePtr)(p->GetSibling()));
+ if (p->IsLeaf())
+ {
+ leaf_labels[p->GetLabel()] = p;
+ }
+ }
+}
+
+// debugging
+//------------------------------------------------------------------------------
+void NTree::ShowClustersTraverse (NNodePtr p)
+{
+ if (p)
+ {
+ ShowClustersTraverse ((NNodePtr)(p->GetChild()));
+ // Show clusters
+ cout << "{ ";
+ std::copy (p->Cluster.begin(), p->Cluster.end(),
+ std::ostream_iterator<int>(cout, " "));
+ cout << "}" << endl;
+ ShowClustersTraverse ((NNodePtr)(p->GetSibling()));
+ }
+}
+
+//------------------------------------------------------------------------------
+// Create a star tree with n leaves
+void NTree::StarTree (int n)
+{
+ Leaves = n;
+ Internals = 1;
+
+ Root = NewNode();
+ Root->SetWeight (n);
+ Root->SetDegree (n);
+
+ CurNode = NewNode();
+ CurNode->SetLeaf(true);
+ CurNode->SetLeafNumber(1);
+ CurNode->SetLabelNumber(1);
+
+ Root->SetChild (CurNode);
+ CurNode->SetAnc (Root);
+
+ // Remaining leaves
+ for (int i = 1; i < n; i++)
+ {
+ NodePtr q = NewNode ();
+ q->SetLeaf(true);
+ q->SetLeafNumber(i+1);
+ q->SetLabelNumber(i+1);
+ q->SetAnc (Root);
+ CurNode->SetSibling (q);;
+ CurNode = q;
+ }
+
+ MakeNodeList();
+ Update();
+ BuildLeafClusters ();
+
+}
+
+//------------------------------------------------------------------------------
+// Add cluster to a tree
+int NTree::AddCluster (IntegerSet &b, char *label)
+{
+ Error = 0;
+ int n = b.size();
+ if (n > 1 && n < ((NNodePtr)Root)->Cluster.size())
+ {
+ // non trivial set
+ NNodePtr p = (NNodePtr)Root;
+ NNodePtr q = (NNodePtr)(p->GetChild());
+ bool done = false;
+ SetRelations r;
+
+ // locate insertion point
+ while (q && !done)
+ {
+ r = Relationship (b, q->Cluster);
+
+ switch (r)
+ {
+ case IDENTITY:
+ done = true;
+ Error = 1; // we already have this cluster
+ break;
+
+ case SUBSET:
+ p = q;
+ q = (NNodePtr)(q->GetChild());
+ break;
+
+ case DISJOINT:
+ p = q;
+ q = (NNodePtr)(q->GetSibling());
+ break;
+
+ case SUPERSET:
+ done = true;
+ break;
+
+ case OVERLAPPING:
+ done = true;
+ Error = 2; // can't be a part of a tree
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ if (Error == 0)
+ {
+ // Create node
+ NNodePtr nunode = (NNodePtr)NewNode ();
+ Internals++;
+ nunode->SetWeight(n);
+ nunode->Cluster = b;
+
+ if (label)
+ nunode->SetLabel (label);
+
+
+ // Insert node in tree
+ switch (r)
+ {
+ case SUBSET:
+ p->SetChild (nunode);
+ nunode->SetAnc (p);
+ break;
+
+ case DISJOINT:
+ p->SetSibling (nunode);
+ nunode->SetAnc (p->GetAnc());
+ break;
+
+ case SUPERSET:
+ if (q == p->GetChild())
+ {
+ p->SetChild (nunode);
+ nunode->SetChild (q);
+ nunode->SetAnc (p);
+ q->SetAnc (nunode);
+ }
+ else
+ {
+ p->SetSibling (nunode);
+ nunode->SetChild (q);
+ nunode->SetAnc (p->GetAnc());
+ q->SetAnc (nunode);
+ }
+
+ NNodePtr tmp = q;
+ NNodePtr s = (NNodePtr)(q->GetSibling());
+ NNodePtr t = (NNodePtr)(q->GetAnc());
+
+ while (s)
+ {
+ r = Relationship (s->Cluster, b);
+ if ((r == IDENTITY) || (r == SUBSET))
+ {
+ s->SetAnc(nunode);
+ tmp = s;
+ s = (NNodePtr)(s->GetSibling());
+ }
+ else
+ {
+ t->SetSibling (s);
+ tmp->SetSibling (s->GetSibling());
+ t = s;
+ t->SetSibling (NULL);
+ s = (NNodePtr)(tmp->GetSibling());
+ }
+ }
+ break;
+
+// checkSiblings (q, nunode->cluster);
+ }
+// nunode->GetDegreeOf ();
+// nunode->anc->degree = nunode->degree - nunode->degree - 1;
+ }
+ }
+ return Error;
+}
+
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/ntree.cpp
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/ntree.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/ntree.h 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/ntree.h 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,98 @@
+//$Id: ntree.h,v 1.7 2004/04/20 17:13:49 rdmp1c Exp $
+
+#ifndef NTREEH
+#define NTREEH
+
+#include "TreeLib.h"
+#include "gtree.h"
+
+#include <set>
+#include <map>
+
+/**
+ *@typedef std::set <int, std::less<int> > IntegerSet;
+ */
+typedef std::set <int, std::less<int> > IntegerSet;
+
+class NTree;
+
+/**
+ * @class NNode
+ * A node with a cluster of all descendants of that node.
+ */
+class NNode : public Node
+{
+friend class NTree;
+public:
+ NNode () {};
+ /**
+ * A set of indices of all descendants of this node.
+ */
+ IntegerSet Cluster;
+};
+typedef NNode *NNodePtr;
+
+/**
+ *@typedef std::map <string, NNodePtr, less <std::string> > NNodeLabelMap;
+ */
+typedef std::map <string, NNodePtr, less <std::string> > NNodeLabelMap;
+
+/**
+ * @class NTree
+ * NTree implements an n-tree, i.e. a tree in which each node has a cluster.
+ *
+ * In the standard definition of a n-tree the clusters are subsets of
+ * @f$S=\{1,\ldots,n\}@f$, where n is the number of leaves in the tree. BuildLeafClusters
+ * creates clusters that satisfy this condition. However, in some applications (such as
+ * supertrees) the clusters may be subsets of a larger set @f$L \supset S at f$.
+ * BuildLabelClusters creates clusters where the members are the indices of the leaf
+ * labels in a larger list (such as the set of labels in a set of trees with overlapping
+ * leaf sets). In this case the clusters are subsets of @f$S=\{1,\ldots,m\}@f$,
+ * where @f$m \geq n at f$.
+ */
+class NTree : public Tree
+{
+public:
+ /**
+ * A map between leaf labels in the profile and a unique integer index
+ */
+ NNodeLabelMap leaf_labels;
+ enum { useLeafNumber, useLabelNumber } use;
+ NTree () { use = useLeafNumber; };
+ /**
+ * Create all node clusters, where each cluster is a subset of @f$\{1,\ldots,n\}@f$.
+ * Clusters contain the index of the corresponding node in the node list for
+ * this tree.
+ */
+ virtual void BuildLeafClusters ()
+ {
+ use = useLeafNumber;
+ BuildClustersTraverse ((NNodePtr)Root);
+ };
+ /**
+ * Create all node clusters, where each cluster is a subset of @f$\{1,\ldots,m\}@f$,
+ * where @f$m \geq n at f$.
+ * Clusters contain the index of the label of each node.
+ */
+ virtual void BuildLabelClusters ()
+ {
+ use = useLabelNumber;
+ BuildClustersTraverse ((NNodePtr)Root);
+ };
+ virtual NodePtr NewNode () const { return new NNode; };
+ /**
+ * Output the clusters for debugging.
+ */
+ virtual void ShowClusters () { ShowClustersTraverse ((NNodePtr)Root); };
+ virtual void BuildLeafLabels () { BuildLeafLabelsTraverse ((NNodePtr)Root); };
+
+ virtual void StarTree (int n);
+ virtual int AddCluster (IntegerSet &b, char *label = NULL);
+protected:
+ virtual void BuildClustersTraverse (NNodePtr p);
+ virtual void BuildLeafLabelsTraverse (NNodePtr p);
+ virtual void ShowClustersTraverse (NNodePtr p);
+};
+
+#endif // NTREEH
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/ntree.h
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/profile.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/profile.h 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/profile.h 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,840 @@
+/*
+ * TreeLib
+ * A library for manipulating phylogenetic trees.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+ // $Id: profile.h,v 1.30 2005/08/31 08:55:59 rdmp1c Exp $
+
+/**
+ * @file profile.h
+ *
+ * Storage of trees
+ *
+ */
+#ifndef PROFILE_H
+#define PROFILE_H
+
+#ifdef __BORLANDC__
+ // Undefine __MINMAX_DEFINED so that min and max are correctly defined
+ #ifdef __MINMAX_DEFINED
+ #undef __MINMAX_DEFINED
+ #endif
+ // Ignore "Cannot create precompiled header: code in header" message
+ // generated when compiling string.cc
+ #pragma warn -pch
+#endif
+
+#include "TreeLib.h"
+
+#include "treereader.h"
+#include "treewriter.h"
+
+// NCL includes
+#include "nexusdefs.h"
+#include "xnexus.h"
+#include "nexustoken.h"
+#include "nexus.h"
+#include "taxablock.h"
+#include "assumptionsblock.h"
+#include "treesblock.h"
+#include "discretedatum.h"
+#include "discretematrix.h"
+#include "charactersblock.h"
+#include "datablock.h"
+
+#if USE_XML
+ #include "xml.h"
+#endif
+
+#if USE_VC2
+ #include "VMsg.h"
+#endif
+
+#if USE_WXWINDOWS
+ #include "wx/wx.h"
+#endif
+
+#if (__BORLANDC__ < 0x0550)
+ #include <time.h>
+#else
+ #include <ctime>
+#endif
+
+
+
+/**
+ *@typedef std::map <std::string, int, std::less<std::string> > LabelMap;
+ */
+typedef std::map <std::string, int, std::less<std::string> > LabelMap;
+
+
+/**
+ * @class Profile
+ * Encapsulates reading and storing a set of trees.
+ *
+ */
+template <class T> class Profile
+{
+public:
+ /**
+ * A map between leaf labels in the profile and a unique integer index
+ */
+ LabelMap Labels;
+ /**
+ * For each leaf label the number of trees in the profile that have the corresponding leaf
+ */
+ LabelMap LabelFreq;
+
+ /**
+ * Constructor
+ */
+ Profile () {};
+ /**
+ * Destructor
+ */
+ virtual ~Profile () {};
+
+ /**
+ * @brief The ith tree in the profile
+ *
+ * @param i the index of the tree in the range 0 - (n-1)
+ * @return The tree
+ */
+ virtual T GetIthTree (int i) { return Trees[i]; };
+ /**
+ * @brief The name of the ith tree in the profile
+ *
+ * @param i the index of the tree in the range 0 - (n-1)
+ * @return The tree
+ */
+ virtual std::string GetIthTreeName (int i) { return Trees[i].GetName(); };
+ /**
+ * @return The number of labels in the profile
+ */
+ virtual int GetNumLabels () { return Labels.size(); };
+ /**
+ * @return The number of trees in the profile
+ */
+ virtual int GetNumTrees () { return Trees.size(); };
+ /**
+ * @brief The index of a leaf label
+ * @param s A leaf label
+ * @return The index of the leaf label
+ */
+ virtual int GetIndexOfLabel (std::string s);
+ /**
+ * @brief The unique index of a leaf label
+ * @param i A leaf index
+ * @return The ith leaf label
+ * @sa Profile::GetIndexOfLabel
+ */
+ virtual std::string GetLabelFromIndex (int i) { return LabelIndex[i]; };
+
+ /**
+ * @brief Assign a unique integer index to each leaf label in the profile
+ */
+ virtual void MakeLabelList ();
+ /**
+ * @brief Count the number of trees each leaf label occurs in
+ */
+ virtual void MakeLabelFreqList ();
+ /**
+ * @brief Read a NEXUS file and store the trees in Profile::trees.
+
+ * If a TAXA block is
+ * present then the leaf labels are stored in Labels in the same order as in
+ * the TAXA block, otherwise Profile::MakeLabelList is called to assign a unique integer
+ * index to each label.
+ *
+ * @param f input stream in NEXUS format
+ * @return true if sucessful
+ */
+ virtual bool ReadNEXUS (std::istream &f);
+ /**
+ * @brief Read a PHYLIP tree file and store the trees in Profile::trees.
+ *
+ * @param f input stream in PHYLIP format
+ * @return true if sucessful
+ */
+ virtual bool ReadPHYLIP (std::istream &f);
+ /**
+ * @brief Read a set of trees from an input stream
+ * At present PHYLIP, NEXUS, and a subset of PhyloXML
+ * formats are supported.
+ * @param f input stream
+ * @return true if successful
+ */
+ virtual bool ReadTrees (std::istream &f);
+#if USE_XML
+ /**
+ * @brief Read a XML file and store the trees in Profile::trees.
+ * XML format is based on "XML for phylogenetic and population genetic data"
+ * (see http://evolve.zoo.ox.ac.uk/PhyloXML/).
+ *
+ * @param f input stream in PHYLIP format
+ * @return true if sucessful
+ */
+ virtual bool ReadXML (std::istream &f);
+#endif
+ /**
+ * @brief Output leaf labels.
+ *
+ * @param f output stream
+ */
+ virtual void ShowLabelList (std::ostream &f);
+
+ /**
+ * @brief Output trees as dendrograms.
+ *
+ * @param f output stream
+ */
+ virtual void ShowTrees (std::ostream &f);
+ /**
+ * @brief Write a set of trees to an output stream
+ * @param f output stream
+ * @param format file format to use (at present nexus only)
+ * @return true if successful
+ */
+ virtual bool WriteTrees (std::ostream &f, const int format = 0, const char *endOfLine = "\n");
+
+protected:
+ /**
+ * The trees
+ *
+ */
+ std::vector <T> Trees;
+ /**
+ * The leaf labels stored as a vector so they can be accessed by an index value
+ *
+ */
+ std::vector <std::string> LabelIndex;
+
+#if USE_XML
+ virtual bool xmlTraverse (XMLElementPtr p);
+ virtual bool xmlCleanup (XMLElementPtr p);
+ virtual void postProcessXMLTree (int tree_num);
+#endif
+
+ int curTreeNumber;
+ IntegerNodeMap node_map;
+};
+
+//------------------------------------------------------------------------------
+template <class T> int Profile<T>::GetIndexOfLabel (std::string s)
+{
+ return Labels[s];
+}
+
+//------------------------------------------------------------------------------
+template <class T> void Profile<T>::MakeLabelList ()
+{
+ for (int i = 0; i < Trees.size(); i++)
+ {
+ T t = Trees[i];
+ t.MakeNodeList();
+ for (int j = 0; j < t.GetNumLeaves(); j++)
+ {
+ std::string s = t[j]->GetLabel();
+
+ if (Labels.find (s) == Labels.end ())
+ {
+ int index = Labels.size();
+// cout << "Labels.size() = " << Labels.size();
+ Labels[s] = index;
+ LabelIndex.push_back (s);
+// cout << "Labels[s] =" << Labels[s] << endl;
+ }
+ }
+ }
+/* cout << endl << "Number of labels = " << Labels.size() << endl;
+ LabelMap::iterator it = Labels.begin();
+ LabelMap::iterator end = Labels.end();
+ while (it != end)
+ {
+ cout << (*it).first << " - " << (*it).second << endl;
+ it++;
+ }*/
+}
+
+
+//------------------------------------------------------------------------------
+template <class T> void Profile<T>::ShowLabelList (std::ostream &f)
+{
+ f << std::endl << "Number of labels = " << Labels.size() << std::endl;
+ LabelMap::iterator it = Labels.begin();
+ LabelMap::iterator end = Labels.end();
+ while (it != end)
+ {
+ f << (*it).first << " - " << (*it).second << std::endl;
+ it++;
+ }
+ f << std::endl;
+}
+
+//------------------------------------------------------------------------------
+template <class T> void Profile<T>::MakeLabelFreqList ()
+{
+// cout << "MakeLabelListFreq" << endl;
+ for (int i = 0; i < Trees.size(); i++)
+ {
+ T t = Trees[i];
+ t.MakeNodeList();
+ for (int j = 0; j < t.GetNumLeaves(); j++)
+ {
+ std::string s = t[j]->GetLabel();
+ LabelMap::iterator there = LabelFreq.find (s);
+
+ if (there == Labels.end ())
+ {
+ LabelFreq[s] = 1;
+ }
+ else
+ {
+ LabelFreq[s] += 1;
+ }
+ }
+ }
+/* cout << "Frequency of labels" << endl;
+ LabelMap::iterator it = LabelFreq.begin();
+ LabelMap::iterator end = LabelFreq.end();
+ while (it != end)
+ {
+ cout << (*it).first << " - " << (*it).second << endl;
+ it++;
+ }*/
+}
+
+/**
+ * @class MyNexus
+ * Extends Nexus class to output progress to cout
+ *
+ */
+class MyNexus : public Nexus
+{
+public:
+ MyNexus () : Nexus() { isOK = true; };
+
+#if (USE_VC2 || USE_WXWINDOWS)
+
+ #if USE_VC2
+ virtual void EnteringBlock( nxsstring blockName ) { }
+ virtual void ExitingBlock( nxsstring blockName ) { };
+ virtual void SkippingBlock( nxsstring blockName ) { };
+ virtual void SkippingDisabledBlock( nxsstring blockName ) { };
+ virtual void ExecuteStarting() { };
+ virtual void ExecuteStopping() { };
+ virtual void OutputComment( nxsstring comment ) {};
+ virtual void NexusError( nxsstring& msg, streampos pos, long line, long col )
+ {
+ char buf[256];
+ sprintf (buf,"%s at line %d, column %d", msg.c_str(), line, col);
+ Message (MSG_ERROR, "Error reading NEXUS file", buf);
+ isOK = false;
+ };
+ #endif
+
+
+ #if USE_WXWINDOWS
+ #if 1
+ virtual void EnteringBlock( nxsstring blockName ) { }
+ virtual void ExitingBlock( nxsstring blockName ) { };
+ virtual void SkippingBlock( nxsstring blockName ) { };
+ virtual void SkippingDisabledBlock( nxsstring blockName ) { };
+ virtual void ExecuteStarting() { };
+ virtual void ExecuteStopping() { };
+ #else // debugging NEXUS reader
+ virtual void EnteringBlock( nxsstring blockName ) { wxLogMessage ("Entering %s block", blockName.c_str()); }
+ virtual void ExitingBlock( nxsstring blockName ) { wxLogMessage ("Exiting %s block", blockName.c_str()); };
+ virtual void SkippingBlock( nxsstring blockName ) { wxLogWarning ("Skipping %s block", blockName.c_str()); };
+ virtual void SkippingDisabledBlock( nxsstring blockName ) { wxLogWarning ("Skipping disabled %s block", blockName.c_str()); };
+ virtual void ExecuteStarting() { wxLogMessage ("Starting to execute NEXUS file"); };
+ virtual void ExecuteStopping() { wxLogMessage ("Finished executing NEXUS file"); };
+ #endif
+ virtual void OutputComment( nxsstring comment ) { std::cout << comment << std::endl;};
+ virtual void NexusError( nxsstring& msg, std::streampos pos, long line, long col )
+ {
+ wxLogError (wxT("%s at line %d, column %d"), msg.c_str(), line, col);
+ isOK = false;
+ };
+ #endif
+
+#else
+ virtual void EnteringBlock( nxsstring blockName ) { cout << " Entering " << blockName << " block..."; };
+ virtual void ExitingBlock( nxsstring blockName ) { cout << "done" << endl; };
+ virtual void SkippingBlock( nxsstring blockName ) { cout << " (Skipping " << blockName << " block)" << endl; };
+ virtual void SkippingDisabledBlock( nxsstring blockName ) { cout << " (Skipping disabled " << blockName << " block)" << endl; };
+ virtual void ExecuteStarting() { cout << "Starting to execute NEXUS file" << endl; };
+ virtual void ExecuteStopping() { cout << "Finished executing NEXUS file" << endl; };
+ virtual void OutputComment( nxsstring comment ) { cout << comment << endl;};
+ virtual void NexusError( nxsstring& msg, streampos pos, long line, long col )
+ {
+ cerr << "Error: " << msg << " line " << line << ", col " << col << endl;
+ isOK = false;
+ };
+#endif
+ bool GetIsOK () { return isOK; };
+
+protected:
+ bool isOK;
+};
+
+//------------------------------------------------------------------------------
+template <class T> bool Profile<T>::ReadNEXUS (std::istream &f)
+{
+ bool result = false;
+
+ TaxaBlock* taxa;
+ DataBlock *data;
+ CharactersBlock *characters;
+ AssumptionsBlock *assumptions;
+ TreesBlock *trees;
+
+ taxa = new TaxaBlock();
+ assumptions = new AssumptionsBlock (*taxa);
+ data = new DataBlock (*taxa, *assumptions);
+ characters = new CharactersBlock (*taxa, *assumptions);
+ trees = new TreesBlock (*taxa);
+
+ MyNexus nexus;
+ nexus.Add( taxa );
+ nexus.Add( data );
+ nexus.Add( characters );
+ nexus.Add( trees );
+
+
+
+ // Set to binary to handle Mac and Unix files
+#ifdef __MWERKS__
+#elif __BORLANDC__
+ f.setf (ios::binary);
+#elif __GNUC__
+ #if __GNUC__ < 3
+ f.setf (ios::binary);
+ #endif
+#endif
+
+ NexusToken token (f);
+
+
+ try
+ {
+ nexus.Execute (token);
+ }
+ catch (XNexus x)
+ {
+ std::cout << x.msg << " (line " << x.line << ", column " << x.col << ")" << std::endl;
+ }
+
+ if (nexus.GetIsOK() && (trees->GetNumTrees() > 0))
+ {
+
+ // Display information about the trees
+#if (USE_WXWINDOWS || USE_VC2)
+#else
+ trees->Report (std::cout);
+ std::cout << endl;
+#endif
+ // Store the trees themselves
+ int i = 0;
+ int error = 0;
+ while ((i < trees->GetNumTrees()) && (error == 0))
+ {
+ T t;
+ std::string tstr;
+// if (trees->HasTranslationTable())
+// tstr = trees->GetTranslatedTreeDescription (i);
+// else
+ tstr = trees->GetTreeDescription (i);
+ tstr += ";";
+ error = t.Parse (tstr.c_str());
+ if (error == 0)
+ {
+ t.SetName (trees->GetTreeName (i));
+ t.SetRooted (trees->IsRootedTree (i));
+ t.SetWeight (trees->GetTreeWeight (i));
+
+ if (trees->HasTranslationTable())
+ {
+ t.MakeNodeList();
+ for (int k = 0; k < t.GetNumLeaves (); k++)
+ {
+ std::string skey = t[k]->GetLabel();
+ if (skey != "")
+ {
+ nxsstring svalue = trees->GetTranslatedLabel(skey);
+ if (svalue != "")
+ t[k]->SetLabel (svalue);
+ }
+ }
+ }
+
+
+
+ Trees.push_back (t);
+ }
+ else
+ {
+#if USE_WXWINDOWS
+ wxLogError ( wxT("Error in description of tree %d: %s"), (i+1), t.GetErrorMsg().c_str());
+#elif USE_VC2
+ char buf[256];
+ sprintf (buf, "Reading tree %d: %s", (i+1), t.GetErrorMsg().c_str());
+ Message (MSG_ERROR, "Error in tree description", buf);
+#else
+ cerr << "Error in tree description " << (i + 1) << t.GetErrorMsg() << endl;
+#endif
+ return false;
+ }
+ i++;
+ }
+
+ // Assign each label a unique index
+ if (taxa->GetNumTaxonLabels() == 0)
+ {
+ // No taxa block in NEXUS file
+ MakeLabelList ();
+ }
+ else
+ {
+ // Store the labels in the same order encountered in the
+ // NEXUS file
+ for (int i = 0; i < taxa->GetNumTaxonLabels (); i++)
+ {
+ Labels[taxa->GetTaxonLabel (i)] = i;
+ LabelIndex.push_back (taxa->GetTaxonLabel (i));
+ }
+ }
+ result = true;
+ }
+ return result;
+}
+
+
+//------------------------------------------------------------------------------
+template <class T> bool Profile<T>::ReadTrees (std::istream &f)
+{
+ bool result = false;
+
+ char ch = (char)f.peek ();
+ if (ch == '#')
+ result = ReadNEXUS (f);
+ else if (strchr ("([", ch))
+ result = ReadPHYLIP (f);
+#if USE_XML
+ else if (ch == '<')
+ result = ReadXML (f);
+#endif
+ return result;
+}
+
+//------------------------------------------------------------------------------
+template <class T> bool Profile<T>::ReadPHYLIP (std::istream &f)
+{
+ Tokeniser p (f);
+ PHYLIPReader tr (p);
+ bool ok = true;
+ while (ok)
+ {
+ T t;
+
+ try
+ {
+ ok = tr.Read (&t);
+ }
+ catch (XTokeniser x)
+ {
+#if USE_WXWINDOWS
+ wxLogError (wxT("%s at line %d, column %d"), x.msg.c_str(), x.line, x.col);
+#elif USE_VC2
+ char buf[256];
+ sprintf (buf, "%s at line %d, column %d", x.msg.c_str(), x.line, x.col);
+ Message (MSG_ERROR, "Error reading tree file", buf);
+#else
+ std::cerr << x.msg << " (line " << x.line << ", column " << x.col << ")" << std::endl;
+#endif
+ return false;
+ }
+
+ if (ok)
+ Trees.push_back (t);
+ }
+
+ bool result = (Trees.size() > 0);
+
+ if (result)
+ {
+ // Build a list of labels in the profile, such that each label
+ // is assigned a unique index
+ MakeLabelList ();
+ }
+ return result;
+}
+
+//------------------------------------------------------------------------------
+template <class T> void Profile<T>::ShowTrees (std::ostream &f)
+{
+ for (int i = 0; i < Trees.size(); i++)
+ {
+ T t = Trees[i];
+ t.Update ();
+ t.Draw (f);
+ }
+}
+
+//------------------------------------------------------------------------------
+template <class T> bool Profile<T>::WriteTrees (std::ostream &f, const int format, const char *endOfLine)
+{
+ bool result = true;
+
+ // Simple nexus tree file
+ f << "#nexus" << endOfLine;
+ f << endOfLine;
+ f << "begin trees;";
+
+ // Date the file
+ f << " [Treefile written ";
+ time_t timer = time(NULL);
+ struct tm* tblock = localtime(&timer);
+ char time_buf[64];
+ strncpy (time_buf, asctime(tblock), sizeof (time_buf));
+ char *q = strrchr (time_buf, '\n');
+ if (q)
+ *q = '\0';
+ f << time_buf << "]" << endOfLine;
+
+ for (int i = 0; i < Trees.size(); i++)
+ {
+ T t = Trees[i];
+ f << "\ttree ";
+ if (t.GetName() != "")
+ f << NEXUSString (t.GetName());
+ else
+ f << "tree_" << (i+1);
+ f << " = ";
+ if (t.IsRooted())
+ f << "[&R] ";
+ else
+ f << "[&U] ";
+
+ // Tree
+ NewickTreeWriter tw (&t);
+ tw.SetStream (&f);
+ tw.Write();
+ f << endOfLine;
+
+// f << t << endOfLine;
+ }
+ f << "end;" << endOfLine;
+
+ return true;
+}
+
+
+#if USE_XML
+//------------------------------------------------------------------------------
+template <class T> void Profile<T>::postProcessXMLTree (int tree_num)
+{
+ IntegerNodeMap::iterator it = node_map.begin();
+ IntegerNodeMap::iterator end = node_map.end();
+
+ if (it != end)
+ {
+ // Dump tree
+ int nodeCount = 0;
+ int leafCount = 0;
+ NodePtr root = NULL;
+ while (it != end)
+ {
+ nodeCount++;
+ int index = it->first;
+ NodePtr p = it->second;
+
+ if (p->GetAnc() == NULL)
+ Trees[tree_num].SetRoot (p);
+
+ if (p->GetChild() == NULL)
+ {
+ p->SetLeaf (true);
+ p->SetLeafNumber (++leafCount);
+ }
+ else
+ {
+ if (p->GetLabel() != "")
+ Trees[tree_num].SetInternalLabels (true);
+ }
+
+ it++;
+ }
+ Trees[tree_num].SetNumLeaves (leafCount);
+ Trees[tree_num].SetNumInternals (nodeCount - leafCount);
+ }
+}
+
+
+
+//------------------------------------------------------------------------------
+template <class T> bool Profile<T>::xmlTraverse (XMLElementPtr p)
+{
+ if (p)
+ {
+ string attrname, attrvalue;
+ if (p->name == "tree")
+ {
+ attrname = "rooted";
+ std::string rooted = p->attributes[attrname];
+
+ // Finish any previous tree. If we are processing a new <tree> tag,
+ // then now is our chance to finish the previous tre
+ if (curTreeNumber > 0)
+ {
+ postProcessXMLTree (curTreeNumber - 1);
+ }
+
+ // Clean up node list
+ node_map.erase(node_map.begin(), node_map.end());
+
+ // Create new tree
+ T t;
+ t.SetRooted (true);
+ Trees.push_back(t);
+ Trees[curTreeNumber].SetRooted (rooted == "true");
+
+ curTreeNumber++;
+ }
+
+ if (p->name == "node")
+ {
+ attrname = "name";
+ std::string node_name = p->attributes[attrname];
+ attrname = "id";
+ std::string node_id = p->attributes[attrname];
+
+ // Create node, set its attributes, use a map to access it by its id
+ int i = atoi (node_id.c_str());
+ Node *p = Trees[curTreeNumber-1].NewNode();
+ node_map[i] = p;
+ if (node_name != "")
+ p->SetLabel (node_name);
+ p->SetIndex (i);
+ }
+ if (p->name == "edge")
+ {
+ attrname = "source";
+ attrvalue = p->attributes[attrname];
+ int source = atoi (attrvalue.c_str());
+
+ attrname = "target";
+ attrvalue = p->attributes[attrname];
+ int target = atoi (attrvalue.c_str());
+
+ // join ancestor-descendant pair, set any attributes of this edge
+ Node *s = node_map[target];
+ Node *q = node_map[source];
+ s->SetAnc (q);
+ if (q->GetChild())
+ {
+ Node *r = q->GetChild();
+ r = r->GetRightMostSibling();
+ r->SetSibling (s);
+ }
+ else
+ q->SetChild (s);
+
+
+ attrname = "length";
+ attrvalue = p->attributes[attrname];
+ if (attrvalue != "")
+ {
+ float length = atof (attrvalue.c_str());
+ s->SetEdgeLength (length);
+ Trees[curTreeNumber-1].SetEdgeLengths (true);
+ }
+ }
+
+ if (p->name == "newick")
+ {
+ // parse Newick description
+ Trees[curTreeNumber - 1].Parse (p->data.c_str());
+ }
+
+ xmlTraverse (p->child);
+ xmlTraverse (p->sib);
+ }
+}
+
+
+//------------------------------------------------------------------------------
+template <class T> bool Profile<T>::xmlCleanup (XMLElementPtr p)
+{
+ if (p)
+ {
+ xmlCleanup (p->child);
+ xmlCleanup (p->sib);
+ delete p;
+ }
+}
+
+
+//------------------------------------------------------------------------------
+template <class T> bool Profile<T>::ReadXML (istream &f)
+{
+ bool result = true;
+
+ XMLElementPtr Root;
+ myParser parser;
+
+ char buf[BUFSIZ];
+
+ while (f.good())
+ {
+ f.getline (buf, sizeof (buf));
+ if (!parser.XML_Parse(buf, strlen (buf), false))
+ {
+#if USE_WXWINDOWS
+ wxLogError ("%s at line %d", XML_ErrorString(parser.XML_GetErrorCode()), parser.XML_GetCurrentLineNumber());
+#elif USE_VC2
+ char buf[256];
+ sprintf (buf, "%s at line %d", XML_ErrorString(parser.XML_GetErrorCode()), parser.XML_GetCurrentLineNumber());
+ Message (MSG_ERROR, "Error reading tree file", buf);
+#else
+ cerr << XML_ErrorString(parser.XML_GetErrorCode()) << " at line " << parser.XML_GetCurrentLineNumber() << endl;
+#endif
+ return false;
+ }
+ }
+
+ // Parsed XML file OK, so now extract trees and clean up
+ curTreeNumber = 0;
+ xmlTraverse (parser.Root);
+ postProcessXMLTree (curTreeNumber - 1);
+ xmlCleanup (parser.Root);
+
+ return result;
+}
+#endif // USE_XML
+
+#if __BORLANDC__
+ // Redefine __MINMAX_DEFINED so Windows header files compile
+ #ifndef __MINMAX_DEFINED
+ #define __MINMAX_DEFINED
+ #endif
+#endif
+
+#endif
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/profile.h
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/quartet.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/quartet.cpp 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/quartet.cpp 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,754 @@
+/*
+ * TreeLib
+ * A library for manipulating phylogenetic trees.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+ // $Id: quartet.cpp,v 1.2 2002/03/14 16:37:13 rdmp1c Exp $
+
+/**
+ * @file quartet.cpp
+ *
+ * Compute quartet distance between two trees.
+ *
+ */
+
+#include "quartet.h"
+#include "nodeiterator.h"
+#include "lcaquery.h"
+
+#include <iomanip.h>
+#ifdef __GNUC__
+ #include <algo.h>
+#endif
+
+
+#define DEBUG_QUARTETS 0
+
+
+class ECODE
+{
+public:
+ ECODE (Tree *tree);
+ ~ECODE ();
+ virtual void EncodeNode (NNodePtr r);
+ virtual void EncodeTree (int ni, int nj);
+ virtual bool Visit (NNodePtr p);
+ void Write (ostream &s);
+ virtual int GetLeaves () { return n; };
+ int *E[3];
+protected:
+ int vertex;
+ int subtree;
+ int n;
+ int i;
+ int j;
+ Tree * t;
+ SimpleLCAQuery lca;
+ IntegerSet mVisited;
+};
+
+class TCODE : public ECODE
+{
+public:
+ TCODE (Tree *tree) : ECODE (tree) {};
+ virtual void EncodeTree (int ni, int nj);
+ virtual bool Visit (NNodePtr p);
+};
+
+
+
+
+// Local routines
+
+long n_choose_2 (int n);
+long n_choose_3 (int n);
+long n_choose_4 (int n);
+void RadixSort (ECODE &E1, ECODE &E2, int &s, int &r, int &x);
+
+
+
+// Store a tuple representing the vertex and subtree codes in the two trees
+class Tuple
+{
+public:
+ int Leaf;
+ int Vertex1;
+ int Subtree1;
+ int Vertex2;
+ int Subtree2;
+ Tuple () { Leaf = Vertex1 = Subtree1 = Vertex2 = Subtree2 = 0; };
+ int operator< (const Tuple &t) const
+ {
+ if (Vertex1 < t.Vertex1)
+ return 1;
+ else if (Vertex1 > t.Vertex1)
+ return 0;
+ else // Vertex1 ==
+ {
+ if (Subtree1 < t.Subtree1)
+ return 1;
+ else if (Subtree1 > t.Subtree1)
+ return 0;
+ else // Subtree1 ==
+ {
+ if (Vertex2 < t.Vertex2)
+ return 1;
+ else if (Vertex2 > t.Vertex2)
+ return 0;
+ else // Vertex2 ==
+ {
+ if (Subtree2 < t.Subtree2)
+ return 1;
+ else if (Subtree2 > t.Subtree2)
+ return 0;
+ else return 0;
+ }
+ }
+ }
+
+ };
+
+ int operator== (const Tuple &t) const
+ {
+ return (
+ (t.Vertex1 == Vertex1)
+ && (t.Subtree1 == Subtree1)
+ && (t.Vertex2 == Vertex2)
+ && (t.Subtree2 == Subtree2) );
+ };
+};
+
+
+//------------------------------------------------------------------------------
+long n_choose_2 (int n)
+{
+ if (n < 2)
+ return 0;
+ else
+ return (n * (n-1)) / 2;
+}
+
+
+//------------------------------------------------------------------------------
+long n_choose_3 (int n)
+{
+ if (n < 3)
+ return 0;
+ else
+ return (n * (n-1) * (n-2)) / 6;
+}
+
+//------------------------------------------------------------------------------
+long n_choose_4 (int n)
+{
+ if (n < 4)
+ return 0;
+ else
+ return (n * (n-1) * (n-2) * (n-3)) / 24;
+}
+
+
+//------------------------------------------------------------------------------
+ECODE::ECODE (Tree *tree)
+{
+ t = tree;
+
+ n = t->GetNumLeaves();
+
+ E[0] = new int [n+1];
+ E[1] = new int [n+1];
+ E[2] = new int [n+1];
+
+ for (int k = 1; k <=n; k++)
+ {
+ E[0][k] = k;
+ E[1][k] = 0;
+ E[2][k] = 0;
+ }
+ vertex = subtree = 0;
+
+ lca.SetTree (t);
+}
+
+//------------------------------------------------------------------------------
+ECODE::~ECODE ()
+{
+ delete [] E[0];
+ delete [] E[1];
+ delete [] E[2];
+}
+
+//------------------------------------------------------------------------------
+// Node should be encoded if it is not on the path <i,j> and its cluster is
+// not a subset of {1..i}
+bool ECODE::Visit (NNodePtr p)
+{
+ return (!p->IsMarked() && !(p->Cluster <= mVisited));
+/* SetRelations s = p->ClusterRelationship (Visited);
+ return (!p->IsFlag (NF_MARKED) && (s != rdmpIDENTITY && s != rdmpSUBSET));
+*/
+}
+
+
+//------------------------------------------------------------------------------
+/* isit desc of node and encode.
+ Each node that does not
+ include i or j as a descendant
+ is a new subtree of the current
+ vertex:
+
+ i a b c
+ \ | \/
+ \ | /
+ \ 1 2
+ \|/
+ +
+
+ + = vertex
+ 1 = subtree 1
+ 2 = subtree 2
+
+ A vertex with no subtrees meeting the
+ requirements of ECODE::Visit is irrelevant
+ to the problem. These cases are flagged by
+ subtree=0.
+*/
+void ECODE::EncodeNode (NNodePtr r)
+{
+ subtree = 0;
+ NNodePtr q = r;
+ while (q)
+ {
+ if (Visit (q))
+ {
+ subtree++;
+
+ IntegerSet::iterator nit = q->Cluster.begin();
+ IntegerSet::iterator nend = q->Cluster.end();
+ while (nit != nend)
+ {
+ if ((*nit) >= i)
+ {
+ E[1][*nit] = vertex;
+ E[2][*nit] = subtree;
+ }
+ nit++;
+ }
+ }
+ q = (NNodePtr)(q->GetSibling ());
+ }
+}
+
+
+
+//------------------------------------------------------------------------------
+/*
+ Visit each node on path <i,j> and encode
+ desc leaves. Note that leaves below lub(i,j)
+ are also "descendants" of lub (i,j) since T
+ is an unrooted tree. These leaves are all
+ on the same subtree.
+
+ i = 2
+ j = 4
+
+ 1 5 2 3 4
+ \/ \ | /
+ \ \ | /
+ \ \ | /
+ \ \|/
+ \ +
+ \ /
+ \/
+
+ is really
+
+ 2---+---4
+ / \
+ / \
+ 1--+ 3
+ |
+ 5
+
+
+
+*/
+void ECODE::EncodeTree (int ni, int nj)
+{
+ i = ni;
+ j = nj;
+ NNodePtr inode = (NNode *)(*t)[i - 1];
+ NNodePtr jnode = (NNode *)(*t)[j - 1];
+
+ NNodePtr lub = (NNode *)lca.LCA (inode, jnode);
+ vertex = 1;
+
+ mVisited.erase(mVisited.begin(), mVisited.end());
+ for (int k = 1; k <= i; k++)
+ mVisited.insert (k);
+
+ // Mark path ij
+ NNodePtr q = inode;
+ while (q != lub)
+ {
+ q->SetMarked (true);
+ q = (NNode *)(q->GetAnc());
+ }
+ q = jnode;
+ while (q != lub)
+ {
+ q->SetMarked (true);
+ q = (NNode *)(q->GetAnc());
+ }
+
+
+
+ // i -- lub(i,j)
+ q = (NNode *)(inode->GetAnc());
+ while (q->IsMarked())
+ {
+ EncodeNode ((NNode *)(q->GetChild()));
+ if (subtree)
+ vertex++;
+ q = (NNode *)(q->GetAnc());
+ }
+
+
+ // j--lub(i,j)
+ q = (NNode *)(jnode->GetAnc());
+ while (q->IsMarked())
+ {
+ EncodeNode ((NNode *)(q->GetChild()));
+ if (subtree)
+ vertex++;
+ q = (NNode *)(q->GetAnc());
+ }
+
+ // visit lub (i,j)
+ EncodeNode ((NNode *)(q->GetChild()));
+ subtree++;
+
+ for (int k = i + 1; k <= n; k++)
+ {
+ bool kIsElement = (q->Cluster.find(k) != q->Cluster.end());
+ if ((k != j) && !kIsElement)
+ {
+ E[1][k] = vertex;
+ E[2][k] = subtree;
+ }
+ }
+
+ // Unmark path between i and j
+ q = inode;
+ while (q != lub)
+ {
+ q->SetMarked (false);
+ q = (NNode *)(q->GetAnc());
+ }
+ q = jnode;
+ while (q != lub)
+ {
+ q->SetMarked (false);
+ q = (NNode *)(q->GetAnc());
+ }
+}
+
+
+//------------------------------------------------------------------------------
+void ECODE::Write (ostream &s)
+{
+ s << endl;
+ int k;
+ for (k = 1; k <= n; k++)
+ s << setw(3) << E[0][k];
+ s << endl;
+ for (k = 1; k <= n; k++)
+ s << "---";
+ s << endl;
+ for (k = 1; k <= n; k++)
+ s << setw(3) << E[1][k];
+ s << endl;
+ for (k = 1; k <= n; k++)
+ s << setw(3) << E[2][k];
+ s << endl;
+}
+
+
+//------------------------------------------------------------------------------
+// Replace original code from Douchette and COMPONENT by a simple use of
+// STL.
+void RadixSort (ECODE &E1, ECODE &E2, int &s, int &r, int &x)
+{
+ std::vector <Tuple> E;
+ for (int i = 1; i <= E1.GetLeaves (); i++)
+ {
+ Tuple t;
+ t.Vertex1 = E1.E[1][i];
+ t.Subtree1 = E1.E[2][i];
+ t.Vertex2 = E2.E[1][i];
+ t.Subtree2 = E2.E[2][i];
+ E.push_back (t);
+ }
+
+#if DEBUG_QUARTETS
+ // Show
+ cout << "Before sort" << endl;
+ for (int i = 0; i < E.size(); i++)
+ {
+ cout << " " << i;
+ }
+ cout << endl;
+ for (int i = 0; i < E.size(); i++)
+ {
+ cout << "--";
+ }
+ cout << endl;
+ for (int i = 0; i < E.size(); i++)
+ {
+ cout << " " << E[i].Vertex1;
+ }
+ cout << endl;
+ for (int i = 0; i < E.size(); i++)
+ {
+ cout << " " << E[i].Subtree1;
+ }
+ cout << endl;
+ for (int i = 0; i < E.size(); i++)
+ {
+ cout << "--";
+ }
+ cout << endl;
+ for (int i = 0; i < E.size(); i++)
+ {
+ cout << " " << E[i].Vertex2;
+ }
+ cout << endl;
+ for (int i = 0; i < E.size(); i++)
+ {
+ cout << " " << E[i].Subtree2;
+ }
+ cout << endl;
+ for (int i = 0; i < E.size(); i++)
+ {
+ cout << "==";
+ }
+ cout << endl;
+#endif
+
+ sort (E.begin(), E.end());
+
+#if DEBUG_QUARTETS
+
+ // Show
+ cout << "After sort" << endl;
+ for (int i = 0; i < E.size(); i++)
+ {
+ cout << " " << i;
+ }
+ cout << endl;
+ for (int i = 0; i < E.size(); i++)
+ {
+ cout << "--";
+ }
+ cout << endl;
+ for (int i = 0; i < E.size(); i++)
+ {
+ cout << " " << E[i].Vertex1;
+ }
+ cout << endl;
+ for (int i = 0; i < E.size(); i++)
+ {
+ cout << " " << E[i].Subtree1;
+ }
+ cout << endl;
+ for (int i = 0; i < E.size(); i++)
+ {
+ cout << "--";
+ }
+ cout << endl;
+ for (int i = 0; i < E.size(); i++)
+ {
+ cout << " " << E[i].Vertex2;
+ }
+ cout << endl;
+ for (int i = 0; i < E.size(); i++)
+ {
+ cout << " " << E[i].Subtree2;
+ }
+ cout << endl;
+ for (int i = 0; i < E.size(); i++)
+ {
+ cout << "==";
+ }
+ cout << endl;
+#endif
+
+ // Count
+
+ int a = 0;
+ int b = 0;
+ int c = 0;
+ int d = 0;
+ s = 0;
+ r = 0;
+ x = 0;
+ int insubtree1 = 0;
+ int insubtree2 = 0;
+ int innode2 = 0;
+
+ for (int k = 0; k < E.size(); k++)
+ {
+ if (E[k].Vertex1 != 0)
+ {
+ if ( (d != E[k].Subtree2)
+ || (c != E[k].Vertex2)
+ || (b != E[k].Subtree1)
+ || (a != E[k].Vertex1))
+ {
+ s += n_choose_2 (insubtree2);
+ r += insubtree2 * innode2;
+ innode2 += insubtree2;
+ insubtree2 = 0;
+ d = E[k].Subtree2;
+ }
+
+ if ( (c != E[k].Vertex2)
+ || (b != E[k].Subtree1)
+ || (a != E[k].Vertex1))
+ {
+ innode2 = 0;
+ c = E[k].Vertex2;
+ }
+
+ if ( (b != E[k].Subtree1) || (a != E[k].Vertex1))
+ {
+ x += n_choose_2 (insubtree1);
+ insubtree1 = 0;
+ b = E[k].Subtree1;
+ a = E[k].Vertex1;
+ }
+ insubtree1++;
+ insubtree2++;
+ }
+ }
+ s += n_choose_2 (insubtree2);
+ x += n_choose_2 (insubtree1);
+ r += insubtree2 * innode2;
+#if DEBUG_QUARTETS
+ cout << "s=" << s << " x=" << x << " r=" << r << endl;
+#endif
+}
+
+
+//------------------------------------------------------------------------------
+void ShowQTRecord (ostream &s, QTValues &QR)
+{
+ s << setprecision (3) << setw (6) << setiosflags (ios::right)
+ << setw (6)<< QR.SD << " "
+ << setw (6)<< QR.EA << " "
+ << setw (6)<< QR.DC << " "
+ << setw (6)<< QR.SJA << " "
+ << setw (8)<< QR.n
+ << setw (8)<< QR.s
+ << setw (8)<< QR.d
+ << setw (8)<< QR.r1
+ << setw (8)<< QR.r2
+ << setw (8)<< QR.u
+ << setw (8)<< endl;
+}
+
+//------------------------------------------------------------------------------
+void ShowHeader (ostream &s)
+{
+ s << " SD EA DC SJA n s d r1 r2 u" << endl;
+ s << "----------------------------------------------------------------------------" << endl;
+}
+
+//------------------------------------------------------------------------------
+void SummaryStats (QTValues &QR)
+{
+ QR.d = QR.x1 - (QR.s + QR.r1);
+ QR.u = QR.n - (QR.s + QR.d + QR.r1 + QR.r2);
+ QR.SD = float (2 * QR.d + QR.r1 + QR.r2)/ float (2 * QR.d + 2* QR.s + QR.r1 + QR.r2);
+ QR.EA = float (QR.d + QR.r1 + QR.r2 + QR.u)/ float (QR.n);
+ QR.DC = float (QR.d) / float (QR.n);
+ int tmp = QR.d + QR.s;
+ if (tmp == 0)
+ QR.SJA = -1;
+ else
+ QR.SJA = float (QR.d) / float (QR.d + QR.s);
+}
+
+//------------------------------------------------------------------------------
+void CompareQuartets (NTree &t1, NTree &t2, QTValues &QR)
+{
+ // Clear indices
+ QR.SD = 0.0;
+ QR.EA = 0.0;
+ QR.SJA = 0.0;
+ QR.DC = 0.0;
+ QR.d = 0;
+ QR.s = 0;
+ QR.r1 = 0;
+ QR.r2 = 0;
+ QR.x1 = 0;
+ QR.u = 0;
+ QR.n = n_choose_4 (t1.GetNumLeaves ());
+ for (int i = 1; i < t1.GetNumLeaves (); i++)
+ {
+ for (int j = i + 1; j <= t1.GetNumLeaves (); j++)
+ {
+ int SS, RR1, RR2, XX1, XX2;
+
+// cout << "i=" << i << " (" << t1[i-1]->GetLabel() << ") " << " j=" << j << " (" << t1[j-1]->GetLabel() << ") "<< endl;
+// cout << "i=" << i << " (" << t2[i-1]->GetLabel() << ") " << " j=" << j << " (" << t2[j-1]->GetLabel() << ") "<< endl;
+
+ ECODE E1 (&t1);
+ ECODE E2 (&t2);
+
+ E1.EncodeTree (i, j);
+ E2.EncodeTree (i, j);
+ RadixSort (E1, E2, SS, RR1, XX1);
+
+ QR.s += SS;
+ QR.r1 += RR1;
+ QR.x1 += XX1;
+
+ RadixSort (E2, E1, SS, RR2, XX2);
+ QR.r2 += RR2;
+ }
+ }
+
+}
+
+//------------------------------------------------------------------------------
+// Node should be encoded if it is not on the path <j,root>.
+bool TCODE::Visit (NNodePtr p)
+{
+ return (!p->IsMarked());
+}
+
+
+//------------------------------------------------------------------------------
+/*
+ { Doucette's algorithm for quartets takes each
+ pair of leaves in the tree and hangs the
+ remaining subtrees from the path connecting
+ those two leaves, e.g.:
+
+ 1 2 3 4 1---*---*---4
+ \ \ \ / | |
+ \ \ \ / = | |
+ \ \ * 2 3
+ \ \ /
+ \ *
+ \ /
+ *
+
+ In triplets, one "leaf" is always the root,
+ so the path is simply those nodes between the
+ leaf and the root, e.g.:
+
+ 1 2 3 4 root---*---*---*---4
+ \ \ \ / | | |
+ \ \ \ / = | | |
+ \ \ * 1 2 3
+ \ \ /
+ \ *
+ \ /
+ *
+ |
+ |
+ root
+*/
+void TCODE::EncodeTree (int ni, int nj)
+{
+ i = 1; // Set to 1 so we can use ECODE::Encode
+ j = nj;
+
+ NNodePtr jnode = (NNode *)(*t)[j - 1];
+
+
+ // Mark path to root
+ NNodePtr q = jnode;
+ while (q != NULL)
+ {
+ q->SetMarked (true);
+ q = (NNode *)(q->GetAnc());
+ }
+
+ vertex = 1;
+ q = (NNode *)(jnode->GetAnc());
+ while (q)
+ {
+ if (q->IsMarked())
+ {
+ EncodeNode ((NNode *)(q->GetChild()));
+ if (subtree)
+ vertex++;
+ }
+ q = (NNode *)(q->GetAnc());
+ }
+
+ q = jnode;
+ while (q != NULL)
+ {
+ q->SetMarked (false);
+ q = (NNode *)(q->GetAnc());
+ }
+
+}
+
+//------------------------------------------------------------------------------
+void CompareTriplets (NTree &t1, NTree &t2, QTValues &QR)
+{
+ // Clear indices
+ QR.SD = 0.0;
+ QR.EA = 0.0;
+ QR.SJA = 0.0;
+ QR.DC = 0.0;
+ QR.d = 0;
+ QR.s = 0;
+ QR.r1 = 0;
+ QR.r2 = 0;
+ QR.x1 = 0;
+ QR.u = 0;
+ QR.n = n_choose_3 (t1.GetNumLeaves ());
+ for (int j = 1; j <= t1.GetNumLeaves (); j++)
+ {
+ int SS, RR1, RR2, XX1, XX2;
+
+// cout << "j=" << j << endl;
+
+ TCODE E1 (&t1);
+ TCODE E2 (&t2);
+
+ E1.EncodeTree (1, j);
+ E2.EncodeTree (1, j);
+ RadixSort (E1, E2, SS, RR1, XX1);
+
+ QR.s += SS;
+ QR.r1 += RR1;
+ QR.x1 += XX1;
+
+ RadixSort (E2, E1, SS, RR2, XX2);
+ QR.r2 += RR2;
+ }
+
+}
Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/quartet.cpp
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/quartet.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/quartet.h 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/quartet.h 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,85 @@
+/*
+ * TreeLib
+ * A library for manipulating phylogenetic trees.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+ // $Id: quartet.h,v 1.1 2002/03/14 14:11:42 rdmp1c Exp $
+
+/**
+ * @file quartet.h
+ *
+ * Compute quartet distance between two trees. Algorithm is based on
+ * Doucette, C. R. 1985. An efficient algorithm to
+ * compute quartet dissimilarity measures. Unpubl.
+ * BSc(Hons) dissertation, Dept. Computer Science,
+ * Memorial University of Newfoundland.
+ *
+ *
+ */
+
+#ifndef QUARTETH
+#define QUARTETH
+
+#ifdef __BORLANDC__
+ // Undefine __MINMAX_DEFINED so that min and max are correctly defined
+ #ifdef __MINMAX_DEFINED
+ #undef __MINMAX_DEFINED
+ #endif
+ // Ignore "Cannot create precompiled header: code in header" message
+ // generated when compiling string.cc
+ #pragma warn -pch
+#endif
+
+#include <vector>
+
+#include "ntree.h"
+
+
+// Values
+typedef struct {
+ int u; // unresolved in T1 and T2
+ int d; // resolved but different
+ int s; // resolved and same
+ int r1; // resolved in T1 but not T2
+ int r2; // resolved in T2 but not T1
+ int x1; // total resolved in T1
+ int n; // maximum no. of quartets/triplets
+ float SD; // symmetric difference
+ float EA; // explicitly agree
+ float SJA; // strict joint assertions
+ float DC; // do not conflict
+}QTValues;
+
+
+void SummaryStats (QTValues &QR);
+void ShowHeader (ostream &s);
+void ShowQTRecord (ostream &s, QTValues &QR);
+void CompareQuartets (NTree &t1, NTree &t2, QTValues &QR);
+void CompareTriplets (NTree &t1, NTree &t2, QTValues &QR);
+
+
+
+#if __BORLANDC__
+ // Redefine __MINMAX_DEFINED so Windows header files compile
+ #ifndef __MINMAX_DEFINED
+ #define __MINMAX_DEFINED
+ #endif
+#endif
+
+#endif
Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/quartet.h
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/tokeniser.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/tokeniser.cpp 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/tokeniser.cpp 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,582 @@
+/*
+ * TreeLib
+ * A library for manipulating phylogenetic trees.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+// $Id: tokeniser.cpp,v 1.14 2005/09/05 07:44:48 rdmp1c Exp $
+
+#include "tokeniser.h"
+#include <ctype.h>
+#include <string.h>
+
+//------------------------------------------------------------------------------
+#if defined __BORLANDC__ && (__BORLANDC__ < 0x0550)
+Tokeniser::Tokeniser (istream& i ) : in(i)
+#else
+Tokeniser::Tokeniser (std::istream& i ) : in(i)
+#endif
+{
+ curChar = '\0';
+ filecol = 1L;
+ fileline = 1L;
+ filepos = 0L;
+ atEOF = false;
+ atEOL = false;
+ token = "";
+
+#ifdef __MWERKS__
+ putBuffer = '\0';
+#endif
+
+ modifierPHYLIP = false;
+
+}
+
+Tokeniser::~Tokeniser ()
+{
+}
+
+//------------------------------------------------------------------------------
+bool Tokeniser::IsPunctuation (char ch)
+{
+ char punctuation[23];
+ punctuation[0] = '(';
+ punctuation[1] = ')';
+ punctuation[2] = '[';
+ punctuation[3] = ']';
+ punctuation[4] = '{';
+ punctuation[5] = '}';
+ punctuation[6] = '/';
+ punctuation[7] = '\\';
+ punctuation[8] = ',';
+ punctuation[9] = ';';
+ punctuation[10] = ':';
+ punctuation[11] = '=';
+ punctuation[12] = '*';
+ punctuation[13] = '\'';
+ punctuation[14] = '"';
+ punctuation[15] = '`';
+ punctuation[16] = '+';
+ punctuation[17] = '-';
+ punctuation[18] = '<';
+ punctuation[19] = '>';
+ punctuation[20] = '!';
+ punctuation[21] = '#';
+ punctuation[22] = '\0';
+
+
+ return (bool)(strchr (punctuation, ch) != NULL);
+}
+
+
+//------------------------------------------------------------------------------
+bool Tokeniser::IsWhiteSpace (char ch)
+{
+ char whitespace[4];
+ whitespace[0] = ' ';
+ whitespace[1] = '\t';
+ whitespace[2] = '\n';
+ whitespace[3] = '\0';
+
+ return (bool)(strchr (whitespace, ch) != NULL);
+}
+
+//------------------------------------------------------------------------------
+char Tokeniser::GetNextChar ()
+{
+ int ch;
+#ifdef __MWERKS__
+ if (putBuffer != '\0')
+ {
+ ch = putBuffer;
+ putBuffer = '\0';
+ }
+ else
+ ch = in.get();
+#else
+ ch = in.get();
+#endif
+ int failed = in.bad();
+ if( failed )
+ throw XTokeniser ( "Unknown error reading data file (check to make sure file exists)" );
+
+ // cout << "[" << (char)ch << "]" << endl;
+
+ if( ch == 13 || ch == 10 )
+ {
+ fileline++;
+ filecol = 1L;
+
+ if( ch == 13 && (int)in.peek() == 10 )
+ ch = in.get();
+
+ atEOL = true;
+ }
+ else if( ch == EOF )
+ {
+ atEOF = true;
+ }
+ else
+ {
+ filecol++;
+ atEOL = false;
+ }
+
+ filepos = in.tellg();
+
+
+
+ if (atEOF )
+ return '\0';
+ else if (atEOL )
+ return '\n';
+ else
+ return (char)ch;
+}
+
+
+
+//------------------------------------------------------------------------------
+Tokeniser::tokentype Tokeniser::GetNextToken ()
+{
+ tokentype TokenType = EMPTY;
+
+ while ((TokenType == EMPTY) && !in.bad() && !atEOF)
+ {
+ curChar = GetNextChar ();
+
+ if (IsWhiteSpace (curChar))
+ {
+ // skip white space
+ }
+ else
+ {
+ if (IsPunctuation (curChar))
+ {
+ // classify punctuation token
+ switch (curChar)
+ {
+ case '[': ParseComment (); break;
+ case '\'':
+ if (ParseString ())
+ TokenType = STRING;
+ else TokenType = BAD;
+ break;
+ case '(':
+ TokenType = LPAR;
+ break;
+ case ')':
+ TokenType = RPAR;
+ break;
+ case '{':
+ TokenType = LPAR;
+ break;
+ case '}':
+ TokenType = RPAR;
+ break;
+ case '!':
+ TokenType = BANG;
+ break;
+ case '#':
+ TokenType = HASH;
+ break;
+ case '=':
+ TokenType = EQUALS;
+ break;
+ case ';':
+ TokenType = SEMICOLON;
+ break;
+ case ',':
+ TokenType = COMMA;
+ break;
+ case '*':
+ TokenType = ASTERIX;
+ break;
+ case ':':
+ TokenType = COLON;
+ break;
+ case '-':
+ TokenType = MINUS;
+ break;
+ case '"':
+ TokenType = DOUBLEQUOTE;
+ break;
+ case '/':
+ TokenType = BACKSLASH;
+ break;
+ default:
+ TokenType = OTHER;
+ break;
+ }
+ }
+ else
+ {
+ // It's either a number, or a string
+ if (isdigit (curChar))
+ {
+ TokenType = ParseNumber();
+ }
+ else
+ {
+ if (ParseToken ())
+ TokenType = STRING;
+ else TokenType = BAD;
+ }
+ }
+ }
+ }
+
+ if ((TokenType != STRING) && (TokenType != NUMBER))
+ {
+ token = "";
+ token += curChar;
+ }
+ return TokenType;
+}
+
+//------------------------------------------------------------------------------
+bool Tokeniser::ParseString ()
+{
+ bool done = false;
+ char lastChar = '\0';
+ token = "";
+
+ while (!done && !atEOF)
+ {
+ curChar = GetNextChar ();
+
+ if (curChar=='\'')
+ {
+ if (lastChar == '\0') // first time we've encountered a quote
+ lastChar = '\'';
+ else if (lastChar == '\'') // second single quote
+ {
+ token += curChar;
+ lastChar = '\0';
+ }
+ }
+ else
+ {
+ if (lastChar == '\'')
+ {
+ // end of quoted string indicated by single quote that doesn't
+ // follow another single quote
+ done = true;
+ }
+ else
+ {
+ lastChar = '\0';
+ if (curChar == '_')
+ token += ' ';
+ else
+ token += curChar;
+ }
+ }
+ }
+#ifdef __MWERKS__
+ putBuffer = curChar;
+#else
+ in.putback (curChar);
+#endif
+ filecol--;
+ return (done);
+}
+
+
+//------------------------------------------------------------------------------
+// Parse a number (integer or real).
+Tokeniser::tokentype Tokeniser::ParseNumber ()
+{
+ enum {
+ start = 0x0001, // 0
+ sign = 0x0002, // 1
+ digit = 0x0004, // 2
+ fraction = 0x0008, // 3
+ expsymbol = 0x0010, // 4
+ expsign = 0x0020, // 5
+ exponent = 0x0040, // 6
+ bad = 0x0080,
+ done = 0x0100
+ } state;
+
+ tokentype result = BAD;
+
+ token = "";
+ state = start;
+
+ while (!IsWhiteSpace (curChar)
+ && !(IsPunctuation (curChar) && (curChar != '-'))
+ && (state != bad)
+ && (state != done))
+ {
+ if (isdigit (curChar))
+ {
+ switch (state)
+ {
+ case start:
+ case sign:
+ state = digit;
+ break;
+ case expsymbol:
+ case expsign:
+ state = exponent;
+ break;
+ default:
+ break;
+ }
+ }
+ else if ((curChar == '-') || (curChar == '+'))
+ {
+ switch (state)
+ {
+ case start:
+ state = sign; // sign of number
+ break;
+ case digit:
+ state = done; // minus sign is punctuation, such as 6-10
+ break;
+ case expsymbol:
+ state = expsign; // sign of exponent
+ break;
+ default:
+ state = bad; // syntax error
+ break;
+ }
+ }
+ else if ((curChar == '.') && (state == digit))
+ state = fraction;
+ else if (((curChar == 'E') || (curChar == 'e')) && (state & (digit | fraction)))
+ state = expsymbol;
+ else
+ state = bad;
+
+ if ((state != bad) && (state != done))
+ {
+ token += curChar;
+ curChar = GetNextChar ();
+ }
+ }
+
+ int isNumber = state & (digit | fraction | exponent | done);
+ if (isNumber)
+ {
+ // We have a number
+ result = NUMBER;
+
+ if (IsPunctuation (curChar))
+ {
+#ifdef __MWERKS__
+ putBuffer = curChar;
+#else
+ in.putback (curChar);
+#endif
+ if (!atEOL)
+ filecol--;
+ }
+ }
+ else
+ {
+ // Not a number, but a string that starts with numbers, such as "00BW0762.1"
+ do {
+ if (curChar == '_')
+ token += ' ';
+ else
+ token += curChar;
+ curChar = GetNextChar ();
+ } while (isalnum (curChar) || (curChar == '_') || (curChar == '.'));
+ if (IsPunctuation (curChar))
+ {
+#ifdef __MWERKS__
+ putBuffer = curChar;
+#else
+ in.putback (curChar);
+#endif
+ if (!atEOL)
+ filecol--;
+ }
+
+ result = STRING; //classify the token
+
+ }
+
+
+ return result;
+}
+
+
+
+
+
+//------------------------------------------------------------------------------
+bool Tokeniser::ParseToken ()
+{
+ token = "";
+ while ((curChar != '\0') && !IsWhiteSpace(curChar)
+ && !(IsPunctuation (curChar) && (curChar != '-')))
+ {
+ if (curChar == '_')
+ token += ' ';
+ else
+ token += curChar;
+ curChar = GetNextChar ();
+ }
+ if (!atEOL)
+ {
+#ifdef __MWERKS__
+ putBuffer = curChar;
+#else
+ in.putback (curChar);
+#endif
+ filecol--;
+ }
+ return true;
+
+}
+
+//------------------------------------------------------------------------------
+// Parse a NEXUS-style comment
+bool Tokeniser::ParseComment ()
+{
+ bool echo = false;
+ comment = "";
+
+ curChar = GetNextChar ();
+ echo = (curChar == '!');
+ if (echo)
+ curChar = GetNextChar ();
+
+ while ((curChar != '\0') && (curChar != ']'))
+ {
+ comment += curChar;
+ curChar = GetNextChar();
+ }
+
+ if (echo)
+#if defined __BORLANDC__ && (__BORLANDC__ < 0x0550)
+ cout << comment;
+#else
+ std::cout << comment;
+#endif
+
+ return true;
+}
+
+//------------------------------------------------------------------------------
+bool Tokeniser::IsPHYLIPEndOfToken (char ch)
+{
+ char end[5];
+ end[0] = ':';
+ end[1] = ',';
+ end[2] = ')';
+ end[3] = '\n';
+ end[4] = '\r';
+
+ return (bool)(strchr (end, ch) != NULL);
+}
+
+
+//------------------------------------------------------------------------------
+// PHYLIP will take all sorts of rubbish in the taxon name, so just grab a string
+Tokeniser::tokentype Tokeniser::GetNextPHYLIPToken ()
+{
+ tokentype TokenType = BAD;
+
+ token = "";
+
+
+ do {
+ curChar = in.get ();
+ if (curChar == '\n')
+ {
+ if ((int)in.peek() == 10 )
+ curChar = in.get();
+ fileline++;
+ filecol = 1L;
+ }
+ else if (curChar == '\r')
+ {
+ fileline++;
+ filecol = 1L;
+ }
+ else
+ filecol++;
+ } while ( in.good () && (( curChar == '\n') || (curChar == '\r') || (curChar == ' ') || (curChar == '\t')));
+ if (curChar == '(')
+ {
+ TokenType = LPAR;
+ }
+ else
+ {
+ if (curChar == '\'')
+ {
+ ParseString ();
+ }
+ else
+ {
+ token += curChar;
+ curChar = in.get();
+ while ( ( (curChar) && (curChar != ',') && (curChar != ')')
+ && (curChar != '\n') && (curChar != '\r') && (curChar != ':')))
+ {
+ token += curChar;
+ curChar = in.get();
+ filecol++;
+ }
+ in.putback (curChar);
+ }
+ TokenType = STRING;
+ }
+ return TokenType;
+}
+
+/*
+//------------------------------------------------------------------------------
+char Tokeniser::PeekNextChar ()
+{
+ int ch;
+ ch = in.peek();
+ int failed = in.bad();
+ if( failed )
+ throw XTokeniser ( "Unknown error reading data file (check to make sure file exists)" );
+
+ if( ch == 13 || ch == 10 )
+ {
+ atEOL = true;
+ }
+ else if( ch == EOF )
+ {
+ atEOF = true;
+ }
+ else
+ {
+ atEOL = false;
+ }
+ if (atEOF )
+ return '\0';
+ else if (atEOL )
+ return '\n';
+ else
+ return (char)ch;
+}
+*/
+
+
+
+
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/tokeniser.cpp
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/tokeniser.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/tokeniser.h 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/tokeniser.h 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,169 @@
+/*
+ * TreeLib
+ * A library for manipulating phylogenetic trees.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+ // $Id: tokeniser.h,v 1.14 2003/09/17 13:05:57 rdmp1c Exp $
+
+#ifndef TOKENISER_H
+#define TOKENISER_H
+
+#include <iostream>
+#include <fstream>
+
+
+#ifdef __BORLANDC__
+ // Undefine __MINMAX_DEFINED so that min and max are correctly defined
+ #ifdef __MINMAX_DEFINED
+ #undef __MINMAX_DEFINED
+ #endif
+ // Ignore "Cannot create precompiled header: code in header" message
+ // generated when compiling string.cc
+ #pragma warn -pch
+#endif
+
+#include <string>
+
+
+class XTokeniser
+{
+public:
+ std::string msg;
+#if (defined( __MWERKS__ ) || (defined __BORLANDC__ && (__BORLANDC__ < 0x0550)))
+ long pos;
+#else
+ std::streampos pos;
+#endif
+ long line;
+ long col;
+
+#if (defined( __MWERKS__ ) || (defined __BORLANDC__ && (__BORLANDC__ < 0x0550)))
+ XTokeniser( std::string s, long fp = 0, long fl = 0L, long fc = 0L )
+#else
+ XTokeniser( std::string s, std::streampos fp = 0, long fl = 0L, long fc = 0L )
+#endif
+ {
+ msg = s;
+ pos = fp;
+ line = fl;
+ col = fc;
+ };
+};
+
+
+class Tokeniser
+{
+#if defined __BORLANDC__ && (__BORLANDC__ < 0x0550)
+ istream& in;
+#else
+ std::istream& in;
+#endif
+ char curChar;
+ std::string token;
+ std::string comment;
+#if (defined( __MWERKS__ ) || (defined __BORLANDC__ && (__BORLANDC__ < 0x0550)))
+ long filepos;
+#else
+ std::streampos filepos;
+#endif
+
+ long fileline;
+ long filecol;
+ bool atEOF;
+ bool atEOL;
+
+#ifdef __MWERKS__
+ char putBuffer;
+#endif
+
+ bool modifierPHYLIP;
+
+public:
+ enum tokentype
+ {
+ EMPTY,
+ STRING, // a text token
+ NUMBER, // a real or integer number
+ OTHER,
+ BAD,
+ SPACE, //
+ LPAR, // (
+ RPAR, // )
+ COMMA, // ,
+ SEMICOLON, // ;
+ EQUALS, // =
+ MINUS, // -
+ ASTERIX, // *
+ BACKSLASH, // /
+ LCURLY, // {
+ RCURLY, // }
+ DOUBLEQUOTE, // "
+ BANG, // !
+ HASH, // #
+ COLON // :
+ };
+
+ Tokeniser ();
+#if defined __BORLANDC__ && (__BORLANDC__ < 0x0550)
+ Tokeniser(istream& i);
+#else
+ Tokeniser(std::istream& i);
+#endif
+ virtual ~Tokeniser();
+ bool AtEOF() { return atEOF; };
+ bool AtEOL() { return atEOL; };
+ long GetFileColumn() { return filecol; };
+#if (defined( __MWERKS__ ) || (defined __BORLANDC__ && (__BORLANDC__ < 0x0550)))
+ long GetFilePosition() { return filepos; };
+#else
+ std::streampos GetFilePosition() { return filepos; };
+#endif
+ long GetFileLine() { return fileline; };
+ char GetNextChar ();
+ tokentype GetNextToken ();
+ tokentype GetNextPHYLIPToken ();
+ std::string GetToken () { return token; };
+ bool IsPHYLIPEndOfToken (char ch);
+ virtual bool IsPunctuation (char ch);
+ virtual bool IsWhiteSpace (char ch);
+ bool ParseComment ();
+ tokentype ParseNumber ();
+ bool ParseString ();
+ bool ParseToken ();
+
+ // don't use these functions as they will bugger up keeping track of
+ // file positions.
+ // char PeekNextChar ();
+ // void PutBack (char ch) { in.putback (ch); };
+#if (__BORLANDC__ < 0x0550)
+ bool TokenEquals (std::string s) { return s.compare (token); };
+#else
+ bool TokenEquals (std::string s) { return (token == s); };
+#endif
+};
+
+#if __BORLANDC__
+ // Redefine __MINMAX_DEFINED so Windows header files compile
+ #ifndef __MINMAX_DEFINED
+ #define __MINMAX_DEFINED
+ #endif
+#endif
+
+#endif
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/tokeniser.h
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/treedrawer.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/treedrawer.cpp 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/treedrawer.cpp 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,753 @@
+/*
+ * TreeLib
+ * A library for manipulating phylogenetic trees.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+// $Id: treedrawer.cpp,v 1.18 2005/09/06 13:00:14 rdmp1c Exp $
+
+#include <math.h>
+#include <stdio.h>
+
+#include "treedrawer.h"
+
+#ifndef M_PI
+ #define M_PI 3.14159265358979323846 // define pi
+#endif
+
+#define DEGREES_TO_RADIANS(d) ((d / 180.0) * M_PI)
+#define RADIANS_TO_DEGREES(r) ((180.0 * r) / M_PI)
+
+//------------------------------------------------------------------------------
+TreeDrawer::TreeDrawer (Tree *tree)
+{
+ t = tree;
+ rooted = true;
+ showInternalLabels = true;
+ showLeafLabels = true;
+ left = 0.0;
+ top = 0.0;
+ width = 400.0;
+ height = 400.0;
+ leafCount = 0;
+ NodeIterator <Node> n (t->GetRoot());
+ Node *q = n.begin();
+ while (q)
+ {
+ if (q->IsLeaf ())
+ {
+ point p;
+ node_coordinates[q] = p;
+ }
+ q = n.next();
+ }
+}
+
+//------------------------------------------------------------------------------
+void TreeDrawer::CalcLeaf (Node *p)
+{
+ node_coordinates[p].y = top + (double)leafCount * leafGap;
+ lastY = node_coordinates[p].y;
+ leafCount++;
+
+ // Cladogram
+ node_coordinates[p].x = left + width;
+}
+
+//------------------------------------------------------------------------------
+void TreeDrawer::CalcInternal (Node *p)
+{
+ // Cladogram
+ node_coordinates[p].x = left + (double)nodeGap * (double)(t->GetNumLeaves() - p->GetWeight());
+
+ // Slant
+ node_coordinates[p].y = lastY - (((double)(p->GetWeight() - 1) * leafGap) / 2.0);
+}
+
+
+//------------------------------------------------------------------------------
+void TreeDrawer::CalcCoordinates ()
+{
+ double l = t->GetNumLeaves();
+ leafGap = height / (l - 1.0);
+ if (rooted)
+ nodeGap = width / l;
+ else
+ nodeGap = width / (l - 1.0);
+ leafCount = 0;
+
+ if (rooted)
+ {
+ // Allow for edge below root
+ left += nodeGap;
+ width -= nodeGap;
+ }
+
+ NodeIterator <Node> n (t->GetRoot());
+ Node *q = n.begin();
+ while (q)
+ {
+ if (q->IsLeaf ())
+ {
+ CalcLeaf (q);
+ }
+ else
+ {
+ CalcInternal (q);
+ }
+
+ q = n.next();
+ }
+
+}
+
+//------------------------------------------------------------------------------
+void TreeDrawer::DrawLeaf (Node *p)
+{
+ // cladogram (slant)
+ NodePtr anc = p->GetAnc();
+ if (anc)
+ {
+ DrawLine (node_coordinates[p], node_coordinates[anc]);
+ }
+ DrawLeafLabel (p);
+}
+
+//------------------------------------------------------------------------------
+void TreeDrawer::DrawInternal (Node *p)
+{
+ // cladogram (slant)
+ NodePtr anc = p->GetAnc();
+ if (anc)
+ {
+ DrawLine (node_coordinates[p], node_coordinates[anc]);
+ }
+ DrawInternalLabel (p);
+}
+
+
+//------------------------------------------------------------------------------
+void TreeDrawer::DrawLeafLabel (Node *p)
+{
+ if (showLeafLabels && (p->GetLabel() != ""))
+ {
+ point pt = node_coordinates[p];
+
+#if USE_PORT
+ pt.x += font.GetSize()/2;
+ pt.y += font.GetSize()/3;
+#endif
+ DrawText (pt, p->GetLabel());
+ }
+}
+
+//------------------------------------------------------------------------------
+void TreeDrawer::DrawInternalLabel (Node *p)
+{
+ if (showInternalLabels && (p->GetLabel() != ""))
+ DrawText (node_coordinates[p], p->GetLabel());
+}
+
+
+
+//------------------------------------------------------------------------------
+void TreeDrawer::Draw ()
+{
+ NodeIterator <Node> n (t->GetRoot());
+ Node *q = n.begin();
+ while (q)
+ {
+ if (q->IsLeaf ())
+ {
+ DrawLeaf (q);
+ }
+ else
+ {
+ DrawInternal (q);
+ }
+
+ q = n.next();
+ }
+ if (rooted)
+ {
+ DrawRoot ();
+ }
+}
+
+//------------------------------------------------------------------------------
+void TreeDrawer::DrawRoot ()
+{
+ // Draw edge below root
+ point pt2 = node_coordinates[t->GetRoot()];
+ point pt1 = pt2;
+ pt1.x -= nodeGap;
+ DrawLine (pt1, pt2);
+}
+
+//------------------------------------------------------------------------------
+void TreeDrawer::DrawLine (point pt1, point pt2)
+{
+#if USE_WXWINDOWS
+ dc->DrawLine ((int)pt1.x, (int)pt1.y, (int)pt2.x, (int)pt2.y);
+#endif
+
+#if USE_VC2
+ Port.DrawLine ((int)pt1.x, (int)pt1.y, (int)pt2.x, (int)pt2.y);
+#endif
+
+#if USE_PORT
+ Port->DrawLine ((int)pt1.x, (int)pt1.y, (int)pt2.x, (int)pt2.y);
+#endif
+
+}
+
+//------------------------------------------------------------------------------
+void TreeDrawer::DrawText (point pt, std::string s)
+{
+#if wxUSE_UNICODE
+ std::wstring formatedString = L"";
+#else
+ std::string formatedString = "";
+#endif
+
+ int i = 0;
+ while (i < s.size())
+ {
+ if (s[i] == '_')
+ formatedString += ' ';
+ else
+ formatedString += s[i];
+ i++;
+ }
+
+#if USE_VC2
+ pt.x += Port.GetMaxCharWidth()/2;
+ pt.y += Port.GetFontHeight()/2;
+ Port.DrawText (pt.x, pt.y, (char *)formatedString.c_str());
+#endif
+
+#if USE_WXWINDOWS
+ // We add a new level of scope to avoid a "Declaration of 's' shadows a parameter"
+ // error in gcc, which is probably a gcc bug
+ {
+ wxCoord w, h, descent;
+ wxString s (formatedString.c_str(), wxSTRING_MAXLEN);
+ pt.x += dc->GetCharWidth();
+ pt.y -= dc->GetCharHeight()/2;
+ dc->DrawText (s, (int)pt.x, (int)pt.y);
+ }
+#endif
+
+
+#if USE_PORT
+ Port->DrawText (pt.x, pt.y, (char *)formatedString.c_str());
+#endif
+}
+
+
+//------------------------------------------------------------------------------
+void TreeDrawer::SetPenWidth (int width)
+{
+#if USE_VC2
+ ::PenSize (width, width);
+#endif
+
+#if USE_PORT
+#endif
+}
+
+
+//------------------------------------------------------------------------------
+void RectangleTreeDrawer::CalcCoordinates ()
+{
+ t->MakeNodeList();
+ maxDepth = 0;
+ // Clear internal node depths
+ for (int i = t->GetNumLeaves(); i < t->GetNumNodes(); i++)
+ {
+ (*t)[i]->SetDepth(0);
+ }
+ for (int i = 0; i < t->GetNumLeaves(); i++)
+ {
+ NodePtr p = (*t)[i]->GetAnc();
+ int count = 1;
+ while (p)
+ {
+ if (count > p->GetDepth())
+ {
+ p->SetDepth(count);
+ if (count > maxDepth)
+ maxDepth = count;
+ }
+ count++;
+ p = p->GetAnc();
+ }
+ }
+
+ double l = t->GetNumLeaves();
+ leafGap = height / (l - 1.0);
+ l = maxDepth + 1.0;
+ if (rooted)
+ nodeGap = width / l;
+ else
+ nodeGap = width / (l - 1.0);
+ leafCount = 0;
+
+ if (rooted)
+ {
+ // Allow for edge below root
+ left += nodeGap;
+ width -= nodeGap;
+ }
+
+ NodeIterator <Node> n (t->GetRoot());
+ Node *q = n.begin();
+ while (q)
+ {
+ if (q->IsLeaf ())
+ {
+ CalcLeaf (q);
+ }
+ else
+ {
+ CalcInternal (q);
+ }
+
+ q = n.next();
+ }
+
+}
+
+
+//------------------------------------------------------------------------------
+void RectangleTreeDrawer::CalcInternal (Node *p)
+{
+ // Cladogram
+ node_coordinates[p].x = left + (double)nodeGap * (double)(maxDepth - p->GetDepth());
+
+ // Rectangular style
+ node_coordinates[p].y =
+ node_coordinates[p->GetChild()].y + (node_coordinates[p->GetChild()->GetRightMostSibling()].y - node_coordinates[p->GetChild()].y)/2.0;
+}
+
+//------------------------------------------------------------------------------
+void RectangleTreeDrawer::DrawLeaf (Node *p)
+{
+ NodePtr anc = p->GetAnc();
+ if (anc)
+ {
+ point pt;
+ pt.x = node_coordinates[anc].x;
+ pt.y = node_coordinates[p].y;
+ DrawLine (node_coordinates[p], pt);
+ }
+ DrawLeafLabel (p);
+}
+
+//------------------------------------------------------------------------------
+void RectangleTreeDrawer::DrawInternal (Node *p)
+{
+ // cladogram (slant)
+ NodePtr anc = p->GetAnc();
+ if (anc)
+ {
+ point pt;
+ pt.x = node_coordinates[anc].x;
+ pt.y = node_coordinates[p].y;
+ DrawLine (node_coordinates[p], pt);
+ }
+
+ point pt1, pt2;
+ pt1.x = node_coordinates[p].x;
+ pt1.y = node_coordinates[p->GetChild()].y;
+ pt2.x = node_coordinates[p].x;
+ pt2.y = node_coordinates[p->GetChild()->GetRightMostSibling()].y;
+ DrawLine (pt1, pt2);
+
+ DrawInternalLabel (p);
+}
+
+
+
+//------------------------------------------------------------------------------
+void PhylogramDrawer::CalcCoordinates ()
+{
+ // 1. Get path lengths
+ mMaxPathLength = 0.0;
+ t->GetRoot()->SetPathLength (t->GetRoot()->GetEdgeLength()); // modify for rooted?
+
+
+ // duh! this needs to be preorder!!!!!!!!!
+
+ PreorderIterator <Node> n (t->GetRoot());
+ Node *q = n.begin();
+ while (q)
+ {
+ double d = q->GetEdgeLength();
+ if (d < 0.00001)
+ d = 0.0;
+ if (q != t->GetRoot())
+ q->SetPathLength (q->GetAnc()->GetPathLength() + d);
+ if (q->GetPathLength() > mMaxPathLength)
+ mMaxPathLength = q->GetPathLength();
+ q = n.next();
+ }
+
+ // Is the tree ultrametric? (should really be a method of the tree class...)
+ mUltrametric = true;
+ NodeIterator <Node> u (t->GetRoot());
+ q = u.begin();
+ while (q && mUltrametric)
+ {
+ if (q->IsLeaf())
+ {
+ double d = q->GetPathLength() - mMaxPathLength;
+#if (__GNUC__ == 3 && __GNUC_MINOR__ > 3) || __GNUC__ > 3
+ // fabs is no longer in the std namespace in gcc 3.4 or greater (sigh)
+ mUltrametric = (fabs(d) <= 0.0001);
+#else
+ mUltrametric = (std::fabs(d) <= 0.0001);
+#endif
+// cout << mMaxPathLength << ":" << q->GetPathLength() << " " << d << endl;
+ }
+ q = u.next();
+ }
+
+
+ // Allow for scale bar
+
+#if USE_VC2
+ scalebar_space = Port.GetFontHeight() * 2;
+#endif
+
+#if USE_WXWINDOWS
+ scalebar_space = dc->GetCharHeight() * 2;
+#endif
+
+
+#if USE_PORT
+ scalebar_space = font.GetSize() * 2;
+#endif
+
+ height -= scalebar_space;
+
+ double l = t->GetNumLeaves();
+ leafGap = height / (l - 1.0);
+ leafCount = 0;
+
+ NodeIterator <Node> po (t->GetRoot());
+ q = po.begin();
+ while (q)
+ {
+ if (q->IsLeaf ())
+ {
+ CalcLeaf (q);
+ }
+ else
+ {
+ CalcInternal (q);
+ }
+
+ q = po.next();
+ }
+
+}
+
+
+//------------------------------------------------------------------------------
+void PhylogramDrawer::CalcInternal (Node *p)
+{
+ node_coordinates[p].x = left + (p->GetPathLength() / mMaxPathLength) * width;
+
+ // Rectangular style
+ node_coordinates[p].y =
+ node_coordinates[p->GetChild()].y + (node_coordinates[p->GetChild()->GetRightMostSibling()].y - node_coordinates[p->GetChild()].y)/2.0;
+}
+
+//------------------------------------------------------------------------------
+void PhylogramDrawer::CalcLeaf (Node *p)
+{
+ node_coordinates[p].x = left + (p->GetPathLength() / mMaxPathLength) * width;
+ node_coordinates[p].y = top + (double)leafCount * leafGap;
+ lastY = node_coordinates[p].y;
+ leafCount++;
+
+}
+
+//------------------------------------------------------------------------------
+void PhylogramDrawer::Draw ()
+{
+ TreeDrawer::Draw ();
+ DrawScaleBar ();
+}
+
+//------------------------------------------------------------------------------
+void PhylogramDrawer::DrawScaleBar ()
+{
+ point pt1, pt2;
+ // Draw scale bar using "log" scale
+ float m = log10 (mMaxPathLength);
+ int i = (int) m;
+ if (!mUltrametric)
+ i -= 1;
+ float bar = pow (10.0, i);
+ float scalebar = (bar / mMaxPathLength) * (float)width;
+ //int scalebar = (int)((bar / mMaxPathLength) * width);
+
+
+ // Pen to draw scale line
+#if USE_WXWINDOWS
+ wxPen scale_pen (*wxBLACK, 1, wxSOLID);
+ dc->SetPen (scale_pen);
+#endif
+
+
+ if (mUltrametric)
+ {
+ // Draw scale bar that is the length of the tree
+ pt1.x = left;
+ pt1.y = top + height + scalebar_space;
+ pt2.x = left + width;
+ pt2.y = pt1.y;
+
+ // Draw
+ DrawLine (pt1, pt2);
+
+
+ // Draw ticks and labels
+ int num_ticks = (int)(mMaxPathLength/bar);
+ int tick_height = scalebar_space/3;
+ for (int k = 0; k <= num_ticks; k++)
+ {
+ pt1.x = left + width - scalebar * (float)k;
+ pt1.y = top + height + scalebar_space;
+ pt2.x = pt1.x;
+ pt2.y = pt1.y - tick_height;
+ DrawLine (pt1, pt2);
+
+ // Label
+#if wxUSE_UNICODE
+ wchar_t buf[16];
+ if (i >= 0)
+ {
+ swprintf (buf, wcslen(buf), L"%d", int (bar * k));
+ }
+ else
+ {
+ int j = abs (i);
+ swprintf (buf, wcslen(buf), L"%.*f", j, bar * (float)k);
+ }
+#else
+ char buf[16];
+ if (i >= 0)
+ {
+ sprintf (buf, "%d", int (bar * k));
+ }
+ else
+ {
+ int j = abs (i);
+ sprintf (buf, "%.*f", j, bar * (float)k);
+ }
+#endif
+
+#if USE_WXWINDOWS
+ wxCoord w, h;
+ wxString s (buf, wxSTRING_MAXLEN);
+ dc->GetTextExtent (s, &w, &h);
+ int x = (int)pt2.x;
+ int y = (int)pt2.y;
+ x -= w/2;
+ y -= h;
+ dc->DrawText (s, x, y);
+#else
+ std::string s = buf;
+ DrawText (pt2, buf);
+
+#endif
+ }
+ }
+ else
+ {
+ // Simple bar to indicate scale
+ pt1.x = left;
+ pt1.y = top + height + scalebar_space/2;
+ pt2 = pt1;
+ pt2.x += scalebar;
+
+ // Draw
+ DrawLine (pt1, pt2);
+
+ // Text to the right a la PAUP*
+ char buf[64];
+ if (i >= 0)
+ {
+ sprintf (buf, "%d", int (bar));
+ }
+ else
+ {
+ int j = abs (i);
+ sprintf (buf, "%.*f", j, bar);
+ }
+ std::string s = buf;
+ DrawText (pt2, buf);
+ }
+}
+
+
+//------------------------------------------------------------------------------
+void PhylogramDrawer::DrawRoot ()
+{
+ // Draw edge below root
+ point pt2 = node_coordinates[t->GetRoot()];
+ point pt1 = pt2;
+ pt1.x -= (t->GetRoot()->GetPathLength() / mMaxPathLength) * width;
+ DrawLine (pt1, pt2);
+}
+
+
+
+
+//------------------------------------------------------------------------------
+void CircleTreeDrawer::CalcLeaf (Node *p)
+{
+ node_angle[p] = leaf_angle * (double)leafCount;
+ node_radius[p] = leaf_radius;
+ leafCount++;
+
+ node_coordinates[p].x = node_radius[p] * cos (node_angle[p]);
+ node_coordinates[p].y = node_radius[p] * sin (node_angle[p]);
+}
+
+//------------------------------------------------------------------------------
+void CircleTreeDrawer::CalcInternal (Node *p)
+{
+ double left_angle = node_angle[p->GetChild()];
+ double right_angle = node_angle[p->GetChild()->GetRightMostSibling()];
+ node_angle[p] = left_angle + (right_angle - left_angle)/2.0;
+ node_radius[p] = nodeGap * (double)(maxDepth - p->GetDepth());
+
+ node_coordinates[p].x = node_radius[p] * cos (node_angle[p]);
+ node_coordinates[p].y = node_radius[p] * sin (node_angle[p]);
+
+ NodePtr q = p->GetChild();
+ while (q)
+ {
+ point pt;
+ node_backarc[q] = pt;
+ node_backarc[q].x = node_radius[p] * cos (node_angle[q]);
+ node_backarc[q].y = node_radius[p] * sin (node_angle[q]);
+ q = q->GetSibling();
+ }
+}
+
+
+//------------------------------------------------------------------------------
+void CircleTreeDrawer::CalcCoordinates ()
+{
+ t->MakeNodeList();
+ maxDepth = 0;
+ // Clear internal node depths
+ for (int i = t->GetNumLeaves(); i < t->GetNumNodes(); i++)
+ {
+ (*t)[i]->SetDepth(0);
+ }
+ for (int i = 0; i < t->GetNumLeaves(); i++)
+ {
+ NodePtr p = (*t)[i]->GetAnc();
+ int count = 1;
+ while (p)
+ {
+ if (count > p->GetDepth())
+ {
+ p->SetDepth(count);
+ if (count > maxDepth)
+ maxDepth = count;
+ }
+ count++;
+ p = p->GetAnc();
+ }
+ }
+
+ leaf_angle = 2 * M_PI / t->GetNumLeaves();
+ left = top = 0.0;
+ width = height = 400.0;
+ leaf_radius = width / 2.0;
+ leafCount = 0;
+ nodeGap = leaf_radius / double(maxDepth);
+ origin.x = 0.0;
+ origin.y = 0.0;
+
+ NodeIterator <Node> n (t->GetRoot());
+ Node *q = n.begin();
+ while (q)
+ {
+ if (q->IsLeaf ())
+ {
+ CalcLeaf (q);
+ }
+ else
+ {
+ CalcInternal (q);
+ }
+
+ q = n.next();
+ }
+
+ // Translate
+ origin.x = left + (width/2.0);
+ origin.y = top + (height/2.0);
+ q = n.begin();
+ while (q)
+ {
+ node_coordinates[q].x += origin.x;
+ node_coordinates[q].y += origin.y;
+ node_backarc[q].x += origin.x;
+ node_backarc[q].y += origin.y;
+ q = n.next();
+ }
+
+
+}
+
+//------------------------------------------------------------------------------
+void CircleTreeDrawer::DrawLeaf (Node *p)
+{
+ DrawLine (node_coordinates[p], node_backarc[p]);
+ DrawLeafLabel (p);
+}
+
+//------------------------------------------------------------------------------
+void CircleTreeDrawer::DrawInternal (Node *p)
+{
+ NodePtr anc = p->GetAnc();
+ if (anc)
+ {
+ DrawLine (node_coordinates[p], node_backarc[p]);
+ double left_angle = node_angle[p->GetChild()];
+ double right_angle = node_angle[p->GetChild()->GetRightMostSibling()];
+#if USE_PORT
+ GPoint pt;
+ pt.SetX((int)origin.x);
+ pt.SetY((int)origin.y);
+ Port->DrawArc (pt, node_radius[p], RADIANS_TO_DEGREES(left_angle), RADIANS_TO_DEGREES(right_angle));
+#endif
+ }
+ DrawInternalLabel (p);
+}
+
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/treedrawer.cpp
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/treedrawer.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/treedrawer.h 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/treedrawer.h 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,284 @@
+/*
+ * TreeLib
+ * A library for manipulating phylogenetic trees.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+// $Id: treedrawer.h,v 1.8 2004/03/16 07:07:40 rdmp1c Exp $
+
+ /**
+ * @file treedrawer.h
+ *
+ * Classes to draw trees to a graphics device
+ *
+ */
+
+#ifndef TREEDRAWERH
+#define TREEDRAWERH
+
+#ifdef __BORLANDC__
+ // Undefine __MINMAX_DEFINED so that min and max are correctly defined
+ #ifdef __MINMAX_DEFINED
+ #undef __MINMAX_DEFINED
+ #endif
+ // Ignore "Cannot create precompiled header: code in header" message
+ // generated when compiling string.cc
+ #pragma warn -pch
+#endif
+
+#include <map>
+
+#include "TreeLib.h"
+#include "nodeiterator.h"
+#include "gport.h"
+
+#if USE_VC2
+ #define USE_PORT 0
+ #include "VPort.h"
+#elif USE_WXWINDOWS
+ #define USE_PORT 0
+ #include "wx/wx.h"
+#else
+ #define USE_PORT 1
+#endif
+
+/**
+ * @class point
+ * An x, y point in real number coodinates
+ */
+class point
+{
+public:
+ double x;
+ double y;
+ point () { x = y = 0.0; };
+};
+
+/**
+ * @class TreeDrawer
+ * Base class for tree drawer object
+ */
+class TreeDrawer
+{
+public:
+ TreeDrawer (Tree *tree);
+ virtual ~TreeDrawer () {};
+ /**
+ * Calculate coordinates for internal nodes. For a slanted cladogram
+ * internal node are spaced along the x-axis by their "weight", and along the
+ * y-axis they are placed in the middle of their descendant leaves
+ * @param p the internal node being visited
+ */
+ virtual void CalcInternal (Node *p);
+ /**
+ * Calculate coordinates for leaf nodes. For a slanted cladogram
+ * all leaves have the same coordinate on the x-aixs, and are spaced
+ * evenly along the y-axis
+ * @param p the leaf being visited
+ */
+ virtual void CalcLeaf (Node *p);
+ /**
+ * Calculate coordinates for tree drawing. Tree is traversed in post order.
+ */
+ virtual void CalcCoordinates ();
+ /**
+ * Draw tree by traversing it in post-order and calling DrawLeaf and
+ * DrawInternal.
+ */
+ virtual void Draw();
+ /**
+ * Draw a line connecting the leaf with its immediate ancestor.
+ */
+ virtual void DrawLeaf (Node *p);
+ /**
+ * Draw leaf label (if showLeafLabels is true)
+ */
+ virtual void DrawLeafLabel (Node *p);
+ /**
+ * Draw a line connecting internal node with its immediate ancestor.
+ */
+ virtual void DrawInternal (Node *p);
+ /**
+ * Draw intenral label (if it exists and if showInternalLabels is true)
+ */
+ virtual void DrawInternalLabel (Node *p);
+ /**
+ * Draw a line to the graphics device connecting the two points pt1 and pt2.
+ * @param pt1 start of the line
+ * @param pt2 end of the line
+ */
+ virtual void DrawLine (point pt1, point pt2);
+ /**
+ * Draw a line representing the root of the tree.
+ */
+ virtual void DrawRoot ();
+ /**
+ * Draw a text to the graphics device.
+ * @param pt posuition for text
+ * @param s text to draw
+ */
+ virtual void DrawText (point pt, std::string s);
+
+ virtual void SetRect (int l, int t, int right, int bottom)
+ {
+ left = (double) l;
+ top = (double) t;
+ width = (double)(right - l);
+ height = (double)(bottom - t);
+ }
+
+#if USE_WXWINDOWS
+ virtual void SetDC (wxDC *wxdc) { dc = wxdc; };
+#endif
+
+#if USE_PORT
+ virtual void SetFont (GBaseFont f) { font = f; };
+#endif
+ /**
+ * Toggle drawing of tree as rooted. For a cladogram this toggles the display
+ * of a short branch below the root node.
+ */
+ virtual void SetDrawRooted (bool on = true) { rooted = on; };
+ /**
+ * Toggle drawing of internal labels.
+ */
+ virtual void SetDrawInternalLabels (bool on = true) { showInternalLabels = on; };
+ /**
+ * Toggle drawing of leaf labels.
+ */
+ virtual void SetDrawLeafLabels (bool on = true) { showLeafLabels = on; };
+
+ virtual void SetPenWidth (int width);
+
+protected:
+ Tree * t;
+ std::map<Node *, point, std::less<Node *> > node_coordinates;
+ double left, top, width, height;
+ double leafGap, lastY, nodeGap;
+ int leafCount;
+ bool rooted;
+ bool showInternalLabels;
+ bool showLeafLabels;
+
+#if USE_PORT
+ GBaseFont font;
+#endif
+
+#if USE_WXWINDOWS
+ wxDC *dc;
+#endif
+
+};
+
+/**
+ * @class RectangleTreeDrawer
+ * Draw rectangular trees
+ */
+class RectangleTreeDrawer : public TreeDrawer
+{
+public:
+ RectangleTreeDrawer (Tree *tree) : TreeDrawer (tree) {};
+ virtual ~RectangleTreeDrawer () {};
+
+ /**
+ * Calculate coordinates for internal nodes. For a rectangular cladogram we
+ * find the longest path from the root to a leaf, and space the internal nodes
+ * evenly. This gives a nicer look than using weights.
+ * @param p the internal node being visited
+ */
+ virtual void CalcInternal (Node *p);
+ virtual void CalcCoordinates ();
+ virtual void DrawLeaf (Node *p);
+ virtual void DrawInternal (Node *p);
+protected:
+ int maxDepth;
+
+};
+
+/**
+ * @class PhylogramDrawer
+ * Draw phylograms
+ */
+class PhylogramDrawer : public RectangleTreeDrawer
+{
+public:
+ PhylogramDrawer (Tree *tree) : RectangleTreeDrawer (tree) { mUltrametric = false; };
+ virtual ~PhylogramDrawer () {};
+ /**
+ * Calculate coordinates for internal nodes.
+ * @param p the internal node being visited
+ */
+ virtual void CalcInternal (Node *p);
+ virtual void CalcLeaf (Node *p);
+ virtual void CalcCoordinates ();
+ /**
+ * Draw tree by traversing it in post-order and calling DrawLeaf and
+ * DrawInternal.
+ */
+ virtual void Draw();
+// virtual void DrawLeaf (Node *p);
+// virtual void DrawInternal (Node *p);
+ virtual void DrawRoot ();
+ virtual void DrawScaleBar ();
+protected:
+ double mMaxPathLength;
+ int scalebar_space;
+ bool mUltrametric;
+};
+
+/**
+ * @class CircleTreeDrawer
+ * Draw circle trees
+ */
+class CircleTreeDrawer : public RectangleTreeDrawer
+{
+public:
+ CircleTreeDrawer (Tree *tree) : RectangleTreeDrawer (tree) {};
+ virtual ~CircleTreeDrawer () {};
+
+ virtual void CalcInternal (Node *p);
+ virtual void CalcLeaf (Node *p);
+ virtual void CalcCoordinates ();
+
+// virtual void Draw();
+
+ virtual void DrawLeaf (Node *p);
+// virtual void DrawLeafLabel (Node *p);
+ virtual void DrawInternal (Node *p);
+// virtual void DrawInternalLabel (Node *p);
+// virtual void DrawText (point pt, std::string s);
+
+protected:
+ double leaf_angle;
+ double leaf_radius;
+ point origin;
+ std::map<Node *, double, std::less<Node *> > node_angle;
+ std::map<Node *, double, std::less<Node *> > node_radius;
+ std::map<Node *, point, std::less<Node *> > node_backarc;
+};
+
+
+
+#if __BORLANDC__
+ // Redefine __MINMAX_DEFINED so Windows header files compile
+ #ifndef __MINMAX_DEFINED
+ #define __MINMAX_DEFINED
+ #endif
+#endif
+
+#endif
Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/treedrawer.h
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/treeorder.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/treeorder.cpp 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/treeorder.cpp 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,151 @@
+/*
+ * TreeLib
+ * A library for manipulating phylogenetic trees.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+// $Id: treeorder.cpp,v 1.2 2005/02/23 14:19:00 rdmp1c Exp $
+
+#include "treeorder.h"
+
+#include <iostream>
+
+//------------------------------------------------------------------------------
+void TreeOrder::Order ()
+{
+ NodeIterator <Node> n (t->GetRoot());
+ Node *q = n.begin();
+ while (q)
+ {
+ if (!q->IsLeaf ())
+ SortDescendants (q);
+
+ q = n.next();
+ }
+}
+
+//------------------------------------------------------------------------------
+void TreeOrder::SortDescendants (NodePtr node)
+{
+ NodePtr head = node->GetChild ();
+ NodePtr tail = head;
+ while (tail->GetSibling () != NULL)
+ {
+ NodePtr p = tail->GetSibling ();
+ if (MustSwap (head, p))
+ {
+ tail->SetSibling (p->GetSibling ());
+ p->SetSibling (head);
+ head = p;
+ p->GetAnc()->SetChild (p);
+ }
+ else
+ {
+ NodePtr q = head;
+ NodePtr r = q->GetSibling ();
+ while (MustSwap (p, r))
+ {
+ q = r;
+ r = q->GetSibling ();
+ }
+ if (p == r)
+ tail = p;
+ else
+ {
+ tail->SetSibling (p->GetSibling ());
+ p->SetSibling (r);
+ q->SetSibling (p);
+ }
+ }
+ }
+}
+
+//------------------------------------------------------------------------------
+bool LeftOrder::MustSwap (NodePtr p, NodePtr q)
+{
+ return (p->GetWeight() < q->GetWeight());
+}
+
+
+//------------------------------------------------------------------------------
+bool RightOrder::MustSwap (NodePtr p, NodePtr q)
+{
+ return (p->GetWeight() > q->GetWeight());
+}
+
+//------------------------------------------------------------------------------
+bool AlphaOrder::MustSwap (NodePtr p, NodePtr q)
+{
+ return (labels[p] > labels[q]);
+}
+
+//------------------------------------------------------------------------------
+void AlphaOrder::Order ()
+{
+ NodeIterator <Node> n (t->GetRoot());
+ Node *q = n.begin();
+ while (q)
+ {
+ if (q->IsLeaf ())
+ labels[q] = q->GetLabel();
+ q = n.next();
+ }
+ q = n.begin();
+ while (q)
+ while (q)
+ {
+ if (!q->IsLeaf ())
+ {
+ SortDescendants (q);
+ labels[q] = labels[q->GetChild()];
+ }
+
+ q = n.next();
+ }
+}
+
+//------------------------------------------------------------------------------
+void ThorneOrder::Order ()
+{
+ if (outgroup->GetSibling() != NULL)
+ {
+ NodePtr q = t->GetRoot()->GetChild()->GetRightMostSibling();
+
+ //std::cout << "OG" << outgroup->GetLabel() << std::endl;
+
+ if (outgroup == t->GetRoot()->GetChild())
+ {
+ t->GetRoot()->SetChild(outgroup->GetSibling());
+ }
+ else
+ {
+ NodePtr p = outgroup->LeftSiblingOf();
+ p->SetSibling (outgroup->GetSibling());
+ }
+ q->SetSibling (outgroup);
+ outgroup->SetSibling (NULL);
+ }
+
+}
+
+//------------------------------------------------------------------------------
+bool ThorneOrder::MustSwap (NodePtr p, NodePtr q)
+{
+ return (p == outgroup);
+}
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/treeorder.cpp
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/treeorder.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/treeorder.h 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/treeorder.h 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,173 @@
+/*
+ * TreeLib
+ * A library for manipulating phylogenetic trees.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+ // $Id: treeorder.h,v 1.4 2005/02/23 14:19:00 rdmp1c Exp $
+
+/**
+ * @file treeorder.h
+ *
+ * Classes to reorder nodes in a tree
+ *
+ */
+
+#ifndef TREEORDERH
+#define TREEORDERH
+
+#ifdef __BORLANDC__
+ // Undefine __MINMAX_DEFINED so that min and max are correctly defined
+ #ifdef __MINMAX_DEFINED
+ #undef __MINMAX_DEFINED
+ #endif
+ // Ignore "Cannot create precompiled header: code in header" message
+ // generated when compiling string.cc
+ #pragma warn -pch
+#endif
+
+#include <map>
+
+#include "TreeLib.h"
+#include "nodeiterator.h"
+
+
+/**
+ * @class TreeOrder
+ * Base class for ordering tree. By overiding the MustSwap fucntion, any
+ * ordering can be described.
+ */
+class TreeOrder
+{
+public:
+ TreeOrder () {};
+ /**
+ * Constructor takes a tree as a parameter.
+ * @param tree tree to be ordered.
+ */
+ TreeOrder (Tree *tree) { t = tree; };
+ virtual ~TreeOrder() {};
+ /**
+ * Order the tree. Call this method to reorder nodes. The tree is traversed
+ * in post order, and for each internal node SortDescendants is called. How the
+ * nodes are sorted is determined by MustSwap, so normally Order will not need
+ * to be overridden in descendant classes.
+ */
+ virtual void Order ();
+protected:
+ Tree *t;
+ /**
+ * Test whether nodes p and q need to be swapped. This is an abstract
+ * function that must be overriden in descendant classes. This function
+ * determines how the tree is ordered.
+ * @param p a node in the tree
+ * @param q another node in the tree that is a sibling of q
+ * @return True if p and q must be swapped.
+ */
+ virtual bool MustSwap (NodePtr p, NodePtr q) = 0;
+ /**
+ * Sort descendants of node according to criterion defined in MustSwap.
+ * @param node the node whose descendants are being sorted.
+ */
+ virtual void SortDescendants (NodePtr node);
+};
+
+
+
+/**
+ * @class LeftOrder
+ * Extends Treeorder to order trees by placing "heavier" nodes to the left.
+ */
+class LeftOrder : public TreeOrder
+{
+public:
+ LeftOrder (Tree *tree) : TreeOrder (tree) {};
+ virtual ~LeftOrder() {};
+protected:
+ virtual bool MustSwap (NodePtr p, NodePtr q);
+
+};
+
+/**
+ * @class RightOrder
+ * Extends Treeorder to order trees by placing "heavier" nodes to the right.
+ */
+class RightOrder : public TreeOrder
+{
+public:
+ RightOrder (Tree *tree) : TreeOrder (tree) {};
+ virtual ~RightOrder() {};
+protected:
+ virtual bool MustSwap (NodePtr p, NodePtr q);
+
+};
+
+
+/**
+ * @class AlphaOrder
+ * Extends Treeorder to order trees by sorting nodes alphabetically.
+ */
+class AlphaOrder : public TreeOrder
+{
+public:
+ AlphaOrder (Tree *tree) : TreeOrder (tree) {};
+ virtual ~AlphaOrder() {};
+ /**
+ * Order the tree. Extends ancestral method by storing "lowest" label
+ * found in any descendant of a given node using a map.
+ */
+ virtual void Order ();
+protected:
+ std::map<Node *, std::string, std::less<Node *> > labels;
+ virtual bool MustSwap (NodePtr p, NodePtr q);
+
+};
+
+/**
+ * @class ThorneOrder
+ * Extends Treeorder to order in form required by Jeff Thorne's programs
+ * estabranches and multidivtime. That is, the outgroup is the rightmost
+ * node of the tree.
+ */
+class ThorneOrder : public TreeOrder
+{
+public:
+ ThorneOrder (Tree *tree) : TreeOrder (tree) { outgroup = t->GetRoot()->GetChild(); };
+ virtual ~ThorneOrder() {};
+ virtual void SetOutgroup (NodePtr o) { outgroup = o; };
+ /**
+ * Order the tree. Extends ancestral method by storing "lowest" label
+ * found in any descendant of a given node using a map.
+ */
+ virtual void Order ();
+protected:
+ virtual bool MustSwap (NodePtr p, NodePtr q);
+ NodePtr outgroup;
+
+};
+
+
+#if __BORLANDC__
+ // Redefine __MINMAX_DEFINED so Windows header files compile
+ #ifndef __MINMAX_DEFINED
+ #define __MINMAX_DEFINED
+ #endif
+#endif
+
+
+#endif
Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/treeorder.h
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/treereader.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/treereader.cpp 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/treereader.cpp 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,360 @@
+/*
+ * TreeLib
+ * A library for manipulating phylogenetic trees.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+ // $Id: treereader.cpp,v 1.5 2003/09/10 12:58:16 rdmp1c Exp $
+
+#include "treereader.h"
+
+#if __MWERKS__
+ #include <string.h>
+ #include <stdlib.h>
+#endif
+
+//------------------------------------------------------------------------------
+TreeReader::TreeReader (Tokeniser &p) : parser (p)
+{
+}
+
+//------------------------------------------------------------------------------
+Tokeniser::tokentype TreeReader::GetTaxonName ()
+{
+ return parser.GetNextToken ();
+}
+
+//------------------------------------------------------------------------------
+// Parse the edge length token.
+bool TreeReader::LabelEdge ()
+{
+ bool result = false;
+ Tokeniser::tokentype token = parser.GetNextToken ();
+
+ // Handle negative branch lengths by peeking at the token. If
+ // it is a '-' then call ParseNumber to ensure it handles the sign
+ // correctly.
+ if (token == Tokeniser::MINUS)
+ result = parser.ParseNumber();
+ else
+ result = (token == Tokeniser::NUMBER);
+
+ if (result)
+ {
+ // Convert token to a number
+ char number_string[128], *endptr;
+
+ strncpy (number_string, parser.GetToken().c_str(), sizeof (number_string));
+ double value = strtod (number_string, &endptr);
+ if (*endptr == '\0' || endptr == NULL)
+ {
+#ifdef __BORLANDC__
+ if (value == HUGE_VAL)
+ {
+ errormsg = "The number ";
+ errormsg += parser.GetToken();
+ errormsg += " caused strtod to report a HUGE_VAL error";
+ }
+else
+ {
+#endif
+ // Set -ve branch lengths to zero
+ if (value < 0.0)
+ value = 0.0;
+ tree->GetCurNode()->SetEdgeLength (value);
+ tree->SetEdgeLengths (true);
+#ifdef __BORLANDC__
+ }
+#endif
+ }
+ else
+ {
+ errormsg = "The token ";
+ errormsg += parser.GetToken();
+ errormsg += " is not a valid number";
+ }
+ }
+ return result;
+}
+
+
+//------------------------------------------------------------------------------
+// Label the current leaf
+bool TreeReader::LabelLeaf (std::string s)
+{
+ tree->MakeCurNodeALeaf (tree->GetNumLeaves() + 1);
+ tree->GetCurNode()->SetLabel (s);
+ return true;
+}
+
+//------------------------------------------------------------------------------
+// Label the current internal node
+void TreeReader::LabelInternalNode (std::string s)
+{
+ tree->GetCurNode()->SetLabel (s);
+ tree->SetInternalLabels (true);
+}
+
+//------------------------------------------------------------------------------
+// Uses a simple pushdown automaton to read Newick-style trees
+bool TreeReader::Read (TreePtr t)
+{
+ // States of pushdown automaton that reads trees
+ enum statetype
+ {
+ GETNAME,
+ GETINTERNODE,
+ NEXTMOVE,
+ DOSIBLING,
+ FINISHCHILDREN,
+ ACCEPTED,
+ CLEANUP,
+ QUIT
+ } state;
+
+ std::stack< NodePtr, std::vector<NodePtr> > stk;
+ Tokeniser::tokentype token;
+
+ tree = t;
+ tree->MakeRoot();
+ token = parser.GetNextToken ();
+
+ if (token == Tokeniser::EMPTY)
+ return false;
+
+ // Parse the tree description
+ state = GETNAME;
+ while ((state != QUIT) && (state != ACCEPTED))
+ {
+ switch (state)
+ {
+ case GETNAME:
+ switch (token)
+ {
+ case Tokeniser::STRING:
+ case Tokeniser::NUMBER:
+ LabelLeaf (parser.GetToken());
+ token = parser.GetNextToken ();
+ state = GETINTERNODE;
+ break;
+ case Tokeniser::LPAR:
+ state = NEXTMOVE;
+ break;
+ default:
+ errormsg = "Syntax error [GETNAME]: expecting a \"(\" or leaf name, got \"";
+ errormsg += parser.GetToken();
+ errormsg += "\" instead";
+ state = QUIT;
+ break;
+ }
+ break;
+
+ case GETINTERNODE:
+ switch (token)
+ {
+ case Tokeniser::COLON:
+ case Tokeniser::COMMA:
+ case Tokeniser::RPAR:
+ state = NEXTMOVE;
+ break;
+ default:
+ errormsg = "Syntax error [GETINTERNODE]: expecting one of \":,)\", got ";
+ errormsg += parser.GetToken();
+ errormsg += " instead";
+ state = QUIT;
+ break;
+ }
+ break;
+
+ case NEXTMOVE:
+ switch (token)
+ {
+ case Tokeniser::COLON:
+ if (LabelEdge ())
+ token = parser.GetNextToken ();
+ else
+ state = QUIT;
+ break;
+ // The next node encountered will be a sibling
+ // of Curnode and a descendant of the node on
+ // the top of the node stack.
+ case Tokeniser::COMMA:
+ if (stk.empty())
+ {
+ errormsg = "Tree description unbalanced, this \")\" has no matching \"(\"";
+ state = QUIT;
+ }
+ else
+ {
+ tree->MakeSibling ();
+ //token = parser.GetNextToken ();
+ token = GetTaxonName();
+ state = GETNAME;
+ }
+ break;
+ // The next node will be a child of CurNode, hence
+ // we create the node and push CurNode onto the
+ // node stack.
+ case Tokeniser::LPAR:
+ stk.push (tree->GetCurNode());
+ tree->MakeChild();
+ //token = parser.GetNextToken ();
+ token = GetTaxonName();
+ state = GETNAME;
+ break;
+ // We've finished ready the descendants of the node
+ // at the top of the node stack so pop it off.
+ case Tokeniser::RPAR:
+ if (stk.empty())
+ {
+ errormsg = "Tree description unbalanced (an extra \")\")";
+ state = QUIT;
+ }
+ else
+ {
+ NodePtr q = stk.top();
+ q->AddWeight(tree->GetCurNode()->GetWeight());
+ tree->SetCurNode (q);
+ stk.pop ();
+ token = parser.GetNextToken ();
+ state = FINISHCHILDREN;
+ }
+ break;
+ // We should have finished the tree
+ case Tokeniser::SEMICOLON:
+ if (stk.empty())
+ {
+ state = ACCEPTED;
+ }
+ else
+ {
+ errormsg = "Tree description ended prematurely (stack not empty)";
+ state = QUIT;
+ }
+ break;
+ default:
+ errormsg = "Syntax error [NEXTMOVE]: expecting one of \":,();\", got ";
+ errormsg += parser.GetToken();
+ errormsg += " instead";
+ state = QUIT;
+ break;
+ }
+ break;
+
+ case FINISHCHILDREN:
+ switch (token)
+ {
+ case Tokeniser::STRING:
+ case Tokeniser::NUMBER:
+ LabelInternalNode (parser.GetToken());
+ token = parser.GetNextToken ();
+ break;
+ case Tokeniser::COLON:
+ if (LabelEdge ())
+ token = parser.GetNextToken ();
+ else
+ state = QUIT;
+ break;
+ // We've completed traversing the descendants of the
+ // node at the top of the stack, so pop it off.
+ case Tokeniser::RPAR:
+ if (stk.empty())
+ {
+ errormsg = "Tree description unbalanced, this \")\" has no matching \"(\"";
+ state = QUIT;
+ }
+ else
+ {
+ NodePtr q = stk.top();
+ q->AddWeight(tree->GetCurNode()->GetWeight());
+ tree->SetCurNode (q);
+ stk.pop ();
+ token = parser.GetNextToken ();
+ }
+ break;
+
+ // The node at the top of the stack still has some
+ // descendants.
+ case Tokeniser::COMMA:
+ if (stk.empty())
+ {
+ errormsg = "Tree description unbalanced, missing a \"(\"";
+ state = QUIT;
+ }
+ else
+ {
+ tree->MakeSibling ();
+ //token = parser.GetNextToken ();
+ token = GetTaxonName();
+ state = GETNAME;
+ }
+ break;
+ case Tokeniser::SEMICOLON:
+ state = NEXTMOVE;
+ break;
+ default:
+ if (stk.empty())
+ {
+ errormsg = "Tree description unbalanced";
+ state = QUIT;
+ }
+ else
+ {
+ errormsg = "Syntax error [FINISHCHILDREN]: expecting one of \":,();\" or internal label, got ";
+ errormsg += parser.GetToken();
+ errormsg += " instead";
+ }
+ state = QUIT;
+ break;
+ }
+ break;
+ }
+ }
+ // Handle errors
+ if (state == QUIT)
+ {
+ // Clean memory here...
+
+ // ... then throw exception
+ throw XTokeniser (errormsg, parser.GetFilePosition(),
+ parser.GetFileLine (), parser.GetFileColumn());
+ }
+ else
+ {
+ tree->GetRoot()->SetWeight(tree->GetNumLeaves());
+ doAdjust ();
+ }
+ return true;
+}
+
+//------------------------------------------------------------------------------
+Tokeniser::tokentype PHYLIPReader::GetTaxonName ()
+{
+ return parser.GetNextPHYLIPToken ();
+}
+
+
+//------------------------------------------------------------------------------
+// Unrooted PHYLIP trees have degree > 2
+void PHYLIPReader::doAdjust ()
+{
+ tree->SetRooted (tree->GetRoot()->GetDegree() == 2);
+}
+
+
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/treereader.cpp
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/treereader.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/treereader.h 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/treereader.h 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,67 @@
+/*
+ * TreeLib
+ * A library for manipulating phylogenetic trees.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+// $Id: treereader.h,v 1.4 2003/10/21 10:58:45 rdmp1c Exp $
+
+#ifndef TREEREADER_H
+#define TREEREADER_H
+
+#include "TreeLib.h"
+#include "tokeniser.h"
+
+class TreeReader
+{
+public:
+ TreeReader (Tokeniser &p);
+ virtual ~TreeReader () {};
+
+ virtual bool Read (TreePtr t);
+ virtual bool MoreTrees() { return true; };
+
+protected:
+ Tokeniser &parser;
+ Tree *tree;
+ std::string errormsg;
+
+
+ virtual void doAdjust() = 0;
+
+ virtual Tokeniser::tokentype GetTaxonName ();
+ virtual bool LabelEdge ();
+ virtual bool LabelLeaf (std::string s);
+ virtual void LabelInternalNode (std::string s);
+
+// virtual int ReadName() { return 0; };
+};
+
+class PHYLIPReader : public TreeReader
+{
+public:
+ PHYLIPReader (Tokeniser &p) : TreeReader (p) { };
+ virtual ~PHYLIPReader () {};
+ virtual Tokeniser::tokentype GetTaxonName ();
+protected:
+ virtual void doAdjust();
+};
+
+#endif
+
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/treereader.h
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/treewriter.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/treewriter.cpp 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/treewriter.cpp 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,207 @@
+/*
+ * TreeLib
+ * A library for manipulating phylogenetic trees.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+ // $Id: treewriter.cpp,v 1.4 2005/02/23 14:32:44 rdmp1c Exp $
+
+#include "treewriter.h"
+
+//------------------------------------------------------------------------------
+void NewickTreeWriter::WriteLeftParenthesis ()
+{
+ *f << '(';
+}
+
+//------------------------------------------------------------------------------
+void NewickTreeWriter::WriteRightParenthesis ()
+{
+ *f << ')';
+}
+
+//------------------------------------------------------------------------------
+void NewickTreeWriter::WriteSiblingSymbol ()
+{
+ *f << ',';
+}
+
+//------------------------------------------------------------------------------
+void NewickTreeWriter::WriteLeaf ()
+{
+ *f << NEXUSString (cur->GetLabel());
+ if (t->GetHasEdgeLengths () && writeEdgeLengths)
+ *f << ":" << cur->GetEdgeLength();
+}
+
+
+//------------------------------------------------------------------------------
+void NewickTreeWriter::WriteInternal ()
+{
+ if (cur->GetLabel() != "")
+ *f << NEXUSString (cur->GetLabel());
+ if (t->GetHasEdgeLengths () && writeEdgeLengths)
+ *f << ":" << cur->GetEdgeLength();
+}
+
+//------------------------------------------------------------------------------
+void NewickTreeWriter::WriteEndOfTree ()
+{
+ *f << ';';
+}
+
+
+//------------------------------------------------------------------------------
+void NewickTreeWriter::Write ()
+{
+ cur = t->GetRoot();
+
+ while (cur)
+ {
+ if (cur->GetChild())
+ {
+ WriteLeftParenthesis ();
+ stk.push (cur);
+ cur = cur->GetChild();
+ }
+ else
+ {
+ WriteLeaf ();
+ while (!stk.empty() && (cur->GetSibling() == NULL))
+ {
+ WriteRightParenthesis ();
+ cur = stk.top();
+ WriteInternal ();
+ stk.pop();
+ }
+ if (stk.empty())
+ cur = NULL;
+ else
+ {
+ WriteSiblingSymbol ();
+ cur = cur->GetSibling();
+ }
+ }
+ }
+ WriteEndOfTree ();
+}
+
+
+//------------------------------------------------------------------------------
+void XMLTreeWriter::Write ()
+{
+ OpenTree();
+
+ cur = t->GetRoot();
+ count = 0;
+
+ while (cur)
+ {
+ if (cur->GetChild())
+ {
+ count++;
+ OpenNode();
+ NodeInfo();
+
+ stk.push (cur);
+ cur = cur->GetChild();
+ }
+ else
+ {
+ count++;
+ OpenNode();
+ NodeInfo();
+ CloseNode();
+ while (!stk.empty() && (cur->GetSibling() == NULL))
+ {
+ CloseNode();
+ cur = stk.top();
+ stk.pop();
+ }
+ if (stk.empty())
+ cur = NULL;
+ else
+ {
+ cur = cur->GetSibling();
+ }
+ }
+ }
+ CloseTree();
+
+}
+
+void TreeBolicTreeWriter::OpenTree ()
+{
+ *f << "<tree>" << std::endl;
+ *f << "<nodes>" << std::endl;
+}
+
+void TreeBolicTreeWriter::CloseTree ()
+{
+ *f << "</tree>" << std::endl;
+ *f << "</nodes>" << std::endl;
+}
+
+void TreeBolicTreeWriter::OpenNode ()
+{
+ *f << std::string (stk.size() * 3, ' ') << "<node id = \"" << count << "\">" << std::endl;
+}
+
+void TreeBolicTreeWriter::CloseNode ()
+{
+ *f << std::string (stk.size() * 3, ' ') << "</node>" << std::endl;
+}
+
+void TreeBolicTreeWriter::NodeInfo ()
+{
+ // label
+ if (cur->GetLabel() != "")
+ *f << std::string (stk.size() * 3 + 3, ' ') << "<label>" << cur->GetLabel() << "</label>" << std::endl;
+}
+
+//------------------------------------------------------------------------------
+void ThorneTreeWriter::WriteLeaf ()
+{
+ *f << formatLabel (cur->GetLabel());
+}
+
+
+//------------------------------------------------------------------------------
+void ThorneTreeWriter::WriteInternal ()
+{
+}
+
+std::string ThorneTreeWriter::formatLabel(std::string s)
+{
+ std::string sub = s.substr(0,30);
+ std::string thorne_label = "";
+ int k = 0;
+ while (k < sub.length())
+ {
+ switch (sub[k])
+ {
+ case '\'': thorne_label += '_'; break;
+ case ' ': thorne_label += '_'; break;
+ default: thorne_label += sub[k]; break;
+ }
+ k++;
+ }
+ return thorne_label;
+}
+
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/treewriter.cpp
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/treewriter.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/treewriter.h 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/treewriter.h 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,171 @@
+/*
+ * TreeLib
+ * A library for manipulating phylogenetic trees.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+// $Id: treewriter.h,v 1.5 2005/02/23 14:36:08 rdmp1c Exp $
+
+#ifndef TREEWRITER_H
+#define TREEWRITER_H
+
+#include "TreeLib.h"
+#include "nodeiterator.h"
+
+#include <iostream>
+
+/**
+ * @class NewickTreeWriter
+ * Base class for writing Newick format tree descriptions.
+ *
+ */
+class NewickTreeWriter
+{
+public:
+ NewickTreeWriter (Tree *tree) { t = tree; writeEdgeLengths = true; };
+ virtual ~NewickTreeWriter () {};
+
+ /**
+ * Toggle on or off the writing of edge lengths in the tree description.
+ */
+ virtual void SetWriteEdgeLengths (bool on) { writeEdgeLengths = on; };
+ /**
+ * Set output stream to which the tree description is written
+ * @param s pointer to the stream
+ */
+ virtual void SetStream (std::ostream *s) { f = s; };
+ /**
+ * Write the tree description.
+ */
+ virtual void Write ();
+protected:
+ std::ostream *f;
+ Node *cur;
+ std::stack < Node *, std::vector<Node *> > stk;
+ Tree * t;
+
+ /**
+ * Write the symbol signalling the end of the tree description. By default this is ';'
+ */
+ virtual void WriteEndOfTree ();
+ /**
+ * Write '('
+ */
+ virtual void WriteLeftParenthesis ();
+ /**
+ * Write ')'
+ */
+ virtual void WriteRightParenthesis ();
+ /**
+ * Write the sibling symbol. By default this is ','
+ */
+ virtual void WriteSiblingSymbol ();
+ /**
+ * Write leaf node.
+ */
+ virtual void WriteLeaf ();
+ /**
+ * Write internal node.
+ */
+ virtual void WriteInternal ();
+
+ bool writeEdgeLengths;
+
+};
+
+/**
+ * @class XMLTreeWriter
+ * Abstract base class for writing XML tree descriptions.
+ *
+ */
+class XMLTreeWriter
+{
+public:
+ XMLTreeWriter (Tree *tree) { t = tree; count = 0; };
+ virtual ~XMLTreeWriter () {};
+
+ /**
+ * Set output stream to which the tree description is written
+ * @param s pointer to the stream
+ */
+ virtual void SetStream (std::ostream *s) { f = s; };
+ /**
+ * Write the tree description.
+ */
+ virtual void Write ();
+
+ virtual void OpenNode() = 0;
+ virtual void NodeInfo () = 0;
+ virtual void CloseNode() = 0;
+ virtual void OpenTree() = 0;
+ virtual void CloseTree() = 0;
+
+protected:
+ std::ostream *f;
+ Node *cur;
+ std::stack < Node *, std::vector<Node *> > stk;
+ Tree * t;
+ int count;
+
+};
+
+/**
+ * @class TreeBolicTreeWriter
+ * Writing TreeBolic XML tree description.
+ *
+ */
+class TreeBolicTreeWriter : public XMLTreeWriter
+{
+public:
+ TreeBolicTreeWriter (Tree *tree) : XMLTreeWriter (tree) {};
+ virtual ~TreeBolicTreeWriter () {};
+ virtual void OpenNode();
+ virtual void NodeInfo ();
+ virtual void CloseNode();
+ virtual void OpenTree();
+ virtual void CloseTree();
+};
+
+
+/**
+ * @class ThorneTreeWriter
+ * Writing tree for Jeff Thorne's multidivtime tree description.
+ *
+ */
+class ThorneTreeWriter : public NewickTreeWriter
+{
+public:
+ ThorneTreeWriter (Tree *tree) : NewickTreeWriter (tree) {};
+ virtual ~ThorneTreeWriter () {};
+ /**
+ * Write leaf node.
+ */
+ virtual void WriteLeaf ();
+ /**
+ * Write internal node.
+ */
+ virtual void WriteInternal ();
+protected:
+ std::string formatLabel (std::string s);
+};
+
+
+
+#endif
+
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/treewriter.h
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/aclocal.m4
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/aclocal.m4 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/aclocal.m4 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,1020 @@
+# generated automatically by aclocal 1.9.2 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+# Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+# -*- Autoconf -*-
+# Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+# Generated from amversion.in; do not edit by hand.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION so it can be traced.
+# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+ [AM_AUTOMAKE_VERSION([1.9.2])])
+
+# AM_AUX_DIR_EXPAND
+
+# Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
+# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory. The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run. This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+# fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+# fails if $ac_aux_dir is absolute,
+# fails when called from a subdirectory in a VPATH build with
+# a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir. In an in-source build this is usually
+# harmless because $srcdir is `.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
+# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+# MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH. The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+
+# AM_CONDITIONAL -*- Autoconf -*-
+
+# Copyright (C) 1997, 2000, 2001, 2003, 2004 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 6
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ(2.52)dnl
+ ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
+ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])
+AC_SUBST([$1_FALSE])
+if $2; then
+ $1_TRUE=
+ $1_FALSE='#'
+else
+ $1_TRUE='#'
+ $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+ AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+# serial 7 -*- Autoconf -*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
+# Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+
+# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery. Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
+ [$1], CXX, [depcc="$CXX" am_compiler_list=],
+ [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+ [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
+ [depcc="$$1" am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+ [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_$1_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+ fi
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ case $depmode in
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ none) break ;;
+ esac
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this.
+ if depmode=$depmode \
+ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_$1_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE(dependency-tracking,
+[ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors])
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])
+])
+
+# Generate code to set up dependency tracking. -*- Autoconf -*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
+# Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+#serial 2
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[for mf in $CONFIG_FILES; do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+ # We used to match only the files named `Makefile.in', but
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+ # So let's grep whole file.
+ if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
+ dirpart=`AS_DIRNAME("$mf")`
+ else
+ continue
+ fi
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # When using ansi2knr, U may be empty or an underscore; expand it
+ U=`sed -n 's/^U = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+ fdir=`AS_DIRNAME(["$file"])`
+ AS_MKDIR_P([$dirpart/$fdir])
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+done
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled. FIXME. This creates each `.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+ [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+ [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+
+# Do all the work for Automake. -*- Autoconf -*-
+
+# This macro actually does too much some checks are only needed if
+# your package does certain things. But this isn't really a big deal.
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+# Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 11
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out. PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition. After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.58])dnl
+dnl Autoconf wants to disallow AM_ names. We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+# test to see if srcdir already configured
+if test "`cd $srcdir && pwd`" != "`pwd`" &&
+ test -f $srcdir/config.status; then
+ AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
+AM_MISSING_PROG(AUTOCONF, autoconf)
+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
+AM_MISSING_PROG(AUTOHEADER, autoheader)
+AM_MISSING_PROG(MAKEINFO, makeinfo)
+AM_PROG_INSTALL_SH
+AM_PROG_INSTALL_STRIP
+AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+ [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+ [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+ [_AM_DEPENDENCIES(CC)],
+ [define([AC_PROG_CC],
+ defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [_AM_DEPENDENCIES(CXX)],
+ [define([AC_PROG_CXX],
+ defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+])
+])
+
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated. The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $1 | $1:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+
+# Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+install_sh=${install_sh-"$am_aux_dir/install-sh"}
+AC_SUBST(install_sh)])
+
+# -*- Autoconf -*-
+# Copyright (C) 2003 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 1
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot. For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Check to see how 'make' treats includes. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 2
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo done
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# We grep out `Entering directory' and `Leaving directory'
+# messages which can occur if `w' ends up in MAKEFLAGS.
+# In particular we don't look at `^make:' because GNU make might
+# be invoked under some other name (usually "gmake"), in which
+# case it prints its new name instead of `make'.
+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
+ am__include=include
+ am__quote=
+ _am_result=GNU
+fi
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ fi
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+# -*- Autoconf -*-
+
+
+# Copyright (C) 1997, 1999, 2000, 2001, 2003 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 3
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it supports --run.
+# If it does, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ AC_MSG_WARN([`missing' script is too old or missing])
+fi
+])
+
+# AM_PROG_MKDIR_P
+# ---------------
+# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise.
+
+# Copyright (C) 2003, 2004 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories
+# created by `make install' are always world readable, even if the
+# installer happens to have an overly restrictive umask (e.g. 077).
+# This was a mistake. There are at least two reasons why we must not
+# use `-m 0755':
+# - it causes special bits like SGID to be ignored,
+# - it may be too restrictive (some setups expect 775 directories).
+#
+# Do not use -m 0755 and let people choose whatever they expect by
+# setting umask.
+#
+# We cannot accept any implementation of `mkdir' that recognizes `-p'.
+# Some implementations (such as Solaris 8's) are not thread-safe: if a
+# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c'
+# concurrently, both version can detect that a/ is missing, but only
+# one can create it and the other will error out. Consequently we
+# restrict ourselves to GNU make (using the --version option ensures
+# this.)
+AC_DEFUN([AM_PROG_MKDIR_P],
+[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
+ # We used to keeping the `.' as first argument, in order to
+ # allow $(mkdir_p) to be used without argument. As in
+ # $(mkdir_p) $(somedir)
+ # where $(somedir) is conditionally defined. However this is wrong
+ # for two reasons:
+ # 1. if the package is installed by a user who cannot write `.'
+ # make install will fail,
+ # 2. the above comment should most certainly read
+ # $(mkdir_p) $(DESTDIR)$(somedir)
+ # so it does not work when $(somedir) is undefined and
+ # $(DESTDIR) is not.
+ # To support the latter case, we have to write
+ # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
+ # so the `.' trick is pointless.
+ mkdir_p='mkdir -p --'
+else
+ # On NextStep and OpenStep, the `mkdir' command does not
+ # recognize any option. It will interpret all options as
+ # directories to create, and then abort because `.' already
+ # exists.
+ for d in ./-p ./--version;
+ do
+ test -d $d && rmdir $d
+ done
+ # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
+ if test -f "$ac_aux_dir/mkinstalldirs"; then
+ mkdir_p='$(mkinstalldirs)'
+ else
+ mkdir_p='$(install_sh) -d'
+ fi
+fi
+AC_SUBST([mkdir_p])])
+
+# Helper functions for option handling. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 2
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# ------------------------------
+# Set option NAME. Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ----------------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+#
+# Check to make sure that the build environment is sane.
+#
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 3
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+ if test "$[*]" = "X"; then
+ # -L didn't work.
+ set X `ls -t $srcdir/configure conftest.file`
+ fi
+ rm -f conftest.file
+ if test "$[*]" != "X $srcdir/configure conftest.file" \
+ && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
+alias in your environment])
+ fi
+
+ test "$[2]" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT(yes)])
+
+# AM_PROG_INSTALL_STRIP
+
+# Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# One issue with vendor `install' (even GNU) is that you can't
+# specify the program used to strip binaries. This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in `make install-strip', and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'. However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+if test "$cross_compiling" != no; then
+ AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Check how to create a tarball. -*- Autoconf -*-
+
+# Copyright (C) 2004 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 1
+
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of `v7', `ustar', or `pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+# tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+# $(am__untar) < result.tar
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility.
+AM_MISSING_PROG([AMTAR], [tar])
+m4_if([$1], [v7],
+ [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+ [m4_case([$1], [ustar],, [pax],,
+ [m4_fatal([Unknown tar format])])
+AC_MSG_CHECKING([how to create a $1 tar archive])
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar;
+ do
+ AM_RUN_LOG([$_am_tar --version]) && break
+ done
+ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x $1 -w "$$tardir"'
+ am__tar_='pax -L -x $1 -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+ am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+ am__untar='cpio -i -H $1 -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
+
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_$1}" && break
+
+ # tar/untar a dummy directory, and stop if the command works
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ AM_RUN_LOG([$am__untar <conftest.tar])
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+ fi
+done
+rm -rf conftest.dir
+
+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/copy.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/copy.xpm 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/copy.xpm 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,53 @@
+/* XPM */
+static char * copy_xpm[] = {
+"24 24 26 1",
+" c None",
+". c #000000",
+"+ c #B4B4B4",
+"@ c #F8F8F8",
+"# c #F6F6F6",
+"$ c #C3C3C3",
+"% c #E9E9E9",
+"& c #989898",
+"* c #828282",
+"= c #8A8A8A",
+"- c #E8E8E8",
+"; c #636363",
+"> c #5A5A5A",
+", c #6B6B6B",
+"' c #B3B3B3",
+") c #FFFFFF",
+"! c #D6D6D6",
+"~ c #818181",
+"{ c #A7A7A7",
+"] c #8F8F8F",
+"^ c #C6C6C6",
+"/ c #808080",
+"( c #E7E7E7",
+"_ c #6D6D6D",
+": c #767676",
+"< c #F5F5F5",
+" ",
+" ............. ",
+" .+@@@@@@@@@#$. ",
+" .@%%%%%%%%%%%. ",
+" .@&**=%+*%*+%. ",
+" .@%%%%%%%%---. ",
+" .@;>%,*+-............ ",
+" .@%%%%%%.'))))))))))!. ",
+" .@&**%*~.)))))))))))). ",
+" .@%%%%%-.){]]&)^])]^). ",
+" .@;>>%,/.)))))))))))). ",
+" .@%%%%%(.)_;):]^)^])). ",
+" .@&**%*~.)))))))))))). ",
+" .<%%%%%-.){]])]]^)&]). ",
+" .$%%%%%-.)))))))))))). ",
+" ........)_;;):]^)^]). ",
+" .)))))))))))). ",
+" .){]])]]^)&]). ",
+" .)))))))))))). ",
+" .!))))))))))!. ",
+" .............. ",
+" ",
+" ",
+" "};
Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/copy.xpm
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/internal.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/internal.xpm 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/internal.xpm 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,30 @@
+/* XPM */
+static char *internal_xpm[]={
+"24 24 3 1",
+". c None",
+"# c #000000",
+"a c #808080",
+"........................",
+"........................",
+"........................",
+"........................",
+"........................",
+"......##########........",
+"......#.................",
+"......#.................",
+"......#.a#a.#...........",
+"......#.#.#.#...........",
+"....###.#.#.##a.a#......",
+"......#.###.#.#.#.......",
+"......#.#.#.##a.a#......",
+"......#.................",
+"......#.................",
+"......#.................",
+"......##########........",
+"........................",
+"........................",
+"........................",
+"........................",
+"........................",
+"........................",
+"........................"};
Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/internal.xpm
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/app.icns
===================================================================
(Binary files differ)
Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/app.icns
___________________________________________________________________
Name: svn:executable
+
Name: svn:mime-type
+ application/octet-stream
Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/copy.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/copy.xpm 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/copy.xpm 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,26 @@
+/* XPM */
+static char * copy_xpm[] = {
+/* columns rows colors chars-per-pixel */
+"16 16 4 1",
+" c None",
+"a c Black",
+"b c #000080",
+"d c #F8FCF8",
+/* pixels */
+" ",
+" aaaaaa ",
+" addddaa ",
+" addddada ",
+" adaadabbbbbb ",
+" adddddbddddbb ",
+" adaaaabddddbdb ",
+" adddddbdaadbbbb",
+" adaaaabdddddddb",
+" adddddbdaaaaadb",
+" aaaaaabdddddddb",
+" bdaaaaadb",
+" bdddddddb",
+" bbbbbbbbb",
+" ",
+" "
+};
\ No newline at end of file
Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/copy.xpm
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/doc.icns
===================================================================
(Binary files differ)
Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/doc.icns
___________________________________________________________________
Name: svn:executable
+
Name: svn:mime-type
+ application/octet-stream
Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/internal.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/internal.xpm 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/internal.xpm 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,30 @@
+/* XPM */
+static char *internal_xpm[]={
+"24 24 3 1",
+". c None",
+"# c #000000",
+"a c #808080",
+"........................",
+"........................",
+"........................",
+"........................",
+"........................",
+"......##########........",
+"......#.................",
+"......#.................",
+"......#.a#a.#...........",
+"......#.#.#.#...........",
+"....###.#.#.##a.a#......",
+"......#.###.#.#.#.......",
+"......#.#.#.##a.a#......",
+"......#.................",
+"......#.................",
+"......#.................",
+"......##########........",
+"........................",
+"........................",
+"........................",
+"........................",
+"........................",
+"........................",
+"........................"};
Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/internal.xpm
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/new.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/new.xpm 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/new.xpm 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,24 @@
+/* XPM */
+static char *new_xpm[] = {
+/* columns rows colors chars-per-pixel */
+"16 15 3 1",
+" c None",
+". c Black",
+"X c Gray100",
+/* pixels */
+" ",
+" ........ ",
+" .XXXXXX.. ",
+" .XXXXXX.X. ",
+" .XXXXXX.... ",
+" .XXXXXXXXX. ",
+" .XXXXXXXXX. ",
+" .XXXXXXXXX. ",
+" .XXXXXXXXX. ",
+" .XXXXXXXXX. ",
+" .XXXXXXXXX. ",
+" .XXXXXXXXX. ",
+" .XXXXXXXXX. ",
+" ........... ",
+" "
+};
Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/new.xpm
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/next.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/next.xpm 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/next.xpm 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,25 @@
+/* XPM */
+static char * next_xpm[] = {
+/* columns rows colors chars-per-pixel */
+"16 16 2 1",
+" c None",
+"a c Black",
+/* pixels */
+" ",
+" ",
+" ",
+" a ",
+" aa ",
+" aaa ",
+" aaaa ",
+" aaaaa ",
+" aaaaaa ",
+" aaaaa ",
+" aaaa ",
+" aaa ",
+" aa ",
+" a ",
+" ",
+" "
+};
+
\ No newline at end of file
Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/next.xpm
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/open.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/open.xpm 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/open.xpm 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,27 @@
+/* XPM */
+static char * open_xpm[] = {
+/* columns rows colors chars-per-pixel */
+ "16 15 5 1",
+" c None",
+"a c Black",
+"b c #808000",
+"c c #F8FC00",
+"d c #F8FCF8",
+/* pixels */
+" ",
+" aaa ",
+" a a a",
+" aa",
+" aaa aaa",
+" acdcaaaaaaa ",
+" adcdcdcdcda ",
+" acdcdcdcdca ",
+" adcdcaaaaaaaaaa",
+" acdcabbbbbbbbba",
+" addabbbbbbbbba ",
+" acabbbbbbbbba ",
+" aabbbbbbbbba ",
+" aaaaaaaaaaa ",
+" "
+};
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/open.xpm
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/paste.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/paste.xpm 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/paste.xpm 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,30 @@
+/* XPM */
+static char *paste_xpm[] =
+{
+/* width height ncolors chars_per_pixel */
+"16 16 6 1",
+/* colors */
+" c none",
+"B c #008080",
+"C c #C0C0C0",
+"D c #808080",
+"E c #FFFF00",
+"F c Black",
+/* pixels */
+" ",
+" FFFF ",
+" FFFFFEEFFFFF ",
+"FDDDFEFFEFDDDF ",
+"FDDFCCCCCCFDDF ",
+"FDDFFFFFFFFDDF ",
+"FDDDDDDDDDDDDF ",
+"FDDDDDBBBBBBBF ",
+"FDDDDDB BB ",
+"FDDDDDB B B ",
+"FDDDDDB BBB BBB ",
+"FDDDDDB B ",
+"FDDDDDB BBBBB B ",
+" FFFFFB B ",
+" BBBBBBBBB ",
+" "
+};
Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/paste.xpm
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/phylogram.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/phylogram.xpm 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/phylogram.xpm 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,24 @@
+/* XPM */
+static char * phylogram_xpm[] = {
+ /* columns rows colors chars-per-pixel */
+ "16 16 2 1",
+ " c None",
+ "a c Black",
+ /* pixels */
+ " ",
+ " ",
+ " aaaaaaa ",
+ " a ",
+ " aaa ",
+ " a a ",
+ " a aaa ",
+ " a ",
+ " a ",
+ " a ",
+ " a aaaaaa ",
+ " a a ",
+ " aaaaaa ",
+ " a ",
+ " aaaaaaa ",
+ " "
+ };
\ No newline at end of file
Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/phylogram.xpm
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/previous.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/previous.xpm 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/previous.xpm 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,24 @@
+/* XPM */
+static char * previous_xpm[] = {
+ /* columns rows colors chars-per-pixel */
+ "16 16 2 1",
+ " c None",
+ "a c Black",
+ /* pixels */
+ " ",
+ " ",
+ " ",
+ " a ",
+ " aa ",
+ " aaa ",
+ " aaaa ",
+ " aaaaa ",
+ " aaaaaa ",
+ " aaaaa ",
+ " aaaa ",
+ " aaa ",
+ " aa ",
+ " a ",
+ " ",
+ " "
+ };
\ No newline at end of file
Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/previous.xpm
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/print.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/print.xpm 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/print.xpm 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,27 @@
+/* XPM */
+static char * print_xpm[] = {
+ /* columns rows colors chars-per-pixel */
+ "16 15 6 1",
+ " c None",
+ "a c Black",
+ "b c #FFFFFF",
+ "d c #C0C0C0",
+ "e c #808000",
+ "f c #FFFF00",
+ /* pixels */
+ " ",
+ " aaaaaaaaa ",
+ " abbbbbbbba ",
+ " abaaaaaba ",
+ " abbbbbbbba ",
+ " abaaaaabaaaa ",
+ " abbbbbbbbadada",
+ " aaaaaaaaaadadaa",
+ "addddddddddadada",
+ "aaaaaaaaaaaaadda",
+ "addddddeeeddada ",
+ "addddddfffddaaa ",
+ "aaaaaaaaaaaaada ",
+ " adddddddddada ",
+ " aaaaaaaaaaa "
+ };
\ No newline at end of file
Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/print.xpm
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/print_preview.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/print_preview.xpm 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/print_preview.xpm 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,28 @@
+/* XPM */
+static char * print_preview_xpm[] = {
+ /* columns rows colors chars-per-pixel */
+ "16 16 6 1",
+ " c None",
+ "a c Black",
+ "b c #FFFFFF",
+ "d c #C0C0C0",
+ "e c #808080",
+ "f c #00FFFF",
+ /* pixels */
+ "aaaaaaaaa ",
+ "abbbbbbbaa ",
+ "abbbbbbbada ",
+ "abbbbbbbaaaa ",
+ "abbbbbbbbbba ",
+ "abbbbbbbaaaa ",
+ "abbbbbbaeddea ",
+ "abbbbbaeffdeba ",
+ "abbbbbadfddeda ",
+ "abbbbbaddddeda ",
+ "abbbbbaeddfeba ",
+ "abbbbbbaeddeab ",
+ "abbbbbbbaaaaaaa ",
+ "abbbbbbbbbba aaa",
+ "aaaaaaaaaaaa aa",
+ " "
+ };
\ No newline at end of file
Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/print_preview.xpm
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/rectangletree.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/rectangletree.xpm 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/rectangletree.xpm 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,24 @@
+/* XPM */
+static char * rectangletree_xpm[] = {
+ /* columns rows colors chars-per-pixel */
+ "16 16 2 1",
+ " c None",
+ "a c Black",
+ /* pixels */
+ " ",
+ " ",
+ " aaaa ",
+ " a ",
+ " aaaaaa ",
+ " a a ",
+ " a aaaa ",
+ " a ",
+ " a ",
+ " a ",
+ " a aaaa ",
+ " a a ",
+ " aaaaaa ",
+ " a ",
+ " aaaa ",
+ " "
+ };
\ No newline at end of file
Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/rectangletree.xpm
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/saveas.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/saveas.xpm 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/saveas.xpm 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,25 @@
+/* XPM */
+/* columns rows colors chars-per-pixel */
+static char * saveas_xpm[] = {
+"16 15 4 1",
+" c None",
+"a c Black",
+"b c #808000",
+"c c #808080",
+/* pixels */
+" ",
+" aaaaaaaaaaaaaa ",
+" aba a a ",
+" aba aaa ",
+" aba aba ",
+" aba aba ",
+" aba aba ",
+" aba aba ",
+" abbaaaaaaaacba ",
+" abbbbbbbbbbbba ",
+" abbaaaaaaaaaba ",
+" abbaaaaaa aba ",
+" abbaaaaaa aba ",
+" abbaaaaaa aba ",
+" aaaaaaaaaaaaa "
+};
\ No newline at end of file
Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/saveas.xpm
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/slanttree.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/slanttree.xpm 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/slanttree.xpm 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,24 @@
+/* XPM */
+static char * slanttree_xpm[] = {
+ /* columns rows colors chars-per-pixel */
+ "16 16 2 1",
+ " c None",
+ "a c Black",
+ /* pixels */
+ " ",
+ " ",
+ " a ",
+ " a ",
+ " a ",
+ " a a ",
+ " a a ",
+ " a ",
+ " a ",
+ " a ",
+ " a ",
+ " a a ",
+ " a ",
+ " a ",
+ " a ",
+ " "
+ };
\ No newline at end of file
Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/slanttree.xpm
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/zoomin.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/zoomin.xpm 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/zoomin.xpm 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,26 @@
+/* XPM */
+static const char *zoomin_xpm[] = {
+"16 16 6 1",
+" c Gray0",
+". c #939393",
+"X c Gray63",
+"o c #aeaeae",
+"O c None",
+"+ c Gray100",
+"OOOo XXoOOOOO",
+"Oo ++++ XoOOOO",
+"O ++++++++ XoOOO",
+"o +++ +++ XXoOO",
+" ++++ ++++ XoOO",
+" ++ ++ XoOO",
+" ++ ++ XoOO",
+" ++++ ++++ XoOO",
+"o +++ +++ .oOOO",
+"O ++++++++ .oOOO",
+"Oo ++++ .oOOO",
+"OOOo O XoOO",
+"OOOOOOOOOO XoO",
+"OOOOOOOOOOO XO",
+"OOOOOOOOOOOO O",
+"OOOOOOOOOOOOO O"
+};
Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/zoomin.xpm
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/zoomout.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/zoomout.xpm 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/zoomout.xpm 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,26 @@
+/* XPM */
+static const char *zoomout_xpm[] = {
+"16 16 6 1",
+" c Gray0",
+". c #939393",
+"X c Gray63",
+"o c #aeaeae",
+"O c None",
+"+ c Gray100",
+"OOOOo XXoOOOO",
+"OOo ++++ XoOOO",
+"OO ++++++++ XoOO",
+"Oo ++++++++ XXoO",
+"O ++++++++++ XoO",
+"O ++ ++ XoO",
+"O ++ ++ XoO",
+"O ++++++++++ XoO",
+"Oo ++++++++ .oOO",
+"OO ++++++++ .oOO",
+"OOo ++++ .oOO",
+"OOOOo O XoO",
+"OOOOOOOOOOO Xo",
+"OOOOOOOOOOOO X",
+"OOOOOOOOOOOOO ",
+"OOOOOOOOOOOOOO "
+};
Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/zoomout.xpm
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/new.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/new.xpm 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/new.xpm 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,154 @@
+/* XPM */
+static char * new_xpm[] = {
+"24 24 127 2",
+" c None",
+". c #000000",
+"+ c #D3D3D3",
+"@ c #F6F6F6",
+"# c #FFFFFF",
+"$ c #F9F9F9",
+"% c #DADADA",
+"& c #585858",
+"* c #C7C7C7",
+"= c #D1D1D1",
+"- c #D6D6D6",
+"; c #FEFEFE",
+"> c #FDFDFD",
+", c #C0C0C0",
+"' c #E1E1E1",
+") c #F0F0F0",
+"! c #9B9B9B",
+"~ c #FCFCFB",
+"{ c #FBFBFB",
+"] c #AFAFAE",
+"^ c #E9E9E9",
+"/ c #DFDFDF",
+"( c #8F8F8F",
+"_ c #FAFAF9",
+": c #F9F9F8",
+"< c #A4A4A3",
+"[ c #F4F4F4",
+"} c #CFCFCF",
+"| c #A2A2A2",
+"1 c #F8F8F7",
+"2 c #F8F7F6",
+"3 c #9E9E9E",
+"4 c #F7F6F5",
+"5 c #F6F6F4",
+"6 c #F4F3F2",
+"7 c #DEDDDC",
+"8 c #D3D2D0",
+"9 c #B7B7B5",
+"0 c #9F9E9D",
+"a c #706F6F",
+"b c #65625A",
+"c c #F5F4F3",
+"d c #F2F2F0",
+"e c #E4E4E2",
+"f c #DAD9D7",
+"g c #D8D8D6",
+"h c #CDCCCA",
+"i c #AFAEAC",
+"j c #88847B",
+"k c #F3F3F1",
+"l c #EFEFED",
+"m c #EEEDEB",
+"n c #EDECEA",
+"o c #E9E8E6",
+"p c #D5D4D3",
+"q c #C4C3C2",
+"r c #8F8A81",
+"s c #F6F5F4",
+"t c #F5F5F3",
+"u c #F1F1EF",
+"v c #F1F0EE",
+"w c #ECEBE9",
+"x c #EAE9E7",
+"y c #E5E4E2",
+"z c #E4E3E0",
+"A c #D2D1CE",
+"B c #8D887E",
+"C c #F3F2F1",
+"D c #F0F0EE",
+"E c #F0EFED",
+"F c #EFEEEC",
+"G c #E8E7E5",
+"H c #E5E4E1",
+"I c #E2E1DE",
+"J c #E1DFDC",
+"K c #979288",
+"L c #A49E93",
+"M c #E8E7E4",
+"N c #E7E6E3",
+"O c #E3E2DF",
+"P c #E2E0DD",
+"Q c #E1E0DC",
+"R c #E0DFDB",
+"S c #A19C90",
+"T c #EDEDEB",
+"U c #EBEAE8",
+"V c #E9E8E5",
+"W c #E6E4E1",
+"X c #E3E2DE",
+"Y c #DFDEDA",
+"Z c #DEDDD9",
+"` c #DDDCD8",
+" . c #A19B90",
+".. c #E7E5E2",
+"+. c #E4E3DF",
+"@. c #DCDBD7",
+"#. c #E6E5E2",
+"$. c #E5E4E0",
+"%. c #E2E1DD",
+"&. c #DBD9D5",
+"*. c #D9D7D3",
+"=. c #9F998D",
+"-. c #E4E2DF",
+";. c #DDDBD7",
+">. c #DCDAD6",
+",. c #D8D6D2",
+"'. c #9E988D",
+"). c #EDEDED",
+"!. c #E1E0DD",
+"~. c #E0DEDA",
+"{. c #D8D6D1",
+"]. c #D7D5D1",
+"^. c #9D978B",
+"/. c #E1DFDB",
+"(. c #DEDCD8",
+"_. c #D7D6D1",
+":. c #D5D3CE",
+"<. c #9B958A",
+"[. c #999891",
+"}. c #A39E92",
+"|. c #A39D92",
+"1. c #A39D91",
+"2. c #A29C90",
+"3. c #A19B8F",
+"4. c #9D978C",
+"5. c #9B968A",
+"6. c #676359",
+" ",
+" . . . . . . . . . . . . . ",
+" . + @ # # # # # # # # $ % & . ",
+" . @ # # # # # # # # # # * = - . ",
+" . # # # # # # # ; # ; > , ' ) ! . ",
+" . # # # # # ; > ~ > ~ { ] ^ # / ( . ",
+" . # # # ; > ~ { _ { _ : < ) # [ } | . ",
+" . # ; > ~ { _ : 1 : 1 2 3 . . . . . . . ",
+" . # ~ { _ : 1 2 4 2 4 5 6 7 8 9 0 a b . ",
+" . # _ : 1 2 4 5 c 5 c 6 d e f g h i j . ",
+" . # 1 2 4 5 c 6 k 6 k d l m n o p q r . ",
+" . # s t 6 6 k d u d u v m w x y z A B . ",
+" . # 6 C d D l v E v E F w G H z I J K . ",
+" . # 6 C d D l v E v E F w G H z I J L . ",
+" . # D l l F m n n n n w M N O P Q R S . ",
+" . # T n w w w U V U V V H W X Y Z ` .. ",
+" . # U o o G M M N M N ..+.X R Z ` @. .. ",
+" . # N #.#.#.H W $.W $.+.%.R Z @.&.*.=.. ",
+" . $ z O X -.+.%.X %.X Q Q Z ;.>.*.,.'.. ",
+" . ).!.J Q R %.R Q R Q Y ~.;.>.*.{.].^.. ",
+" . = /.~.Y Z R Z ~.Z ~.(.(.>.>.,._.:.<.. ",
+" . [.}.L |.1.|.S 2.S 2.3. .=.=.4.4.5.6.. ",
+" . . . . . . . . . . . . . . . . . . ",
+" "};
Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/new.xpm
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/next.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/next.xpm 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/next.xpm 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,32 @@
+/* XPM */
+static char * next_xpm[] = {
+/* width height ncolors cpp [x_hot y_hot] */
+"24 24 2 1 0 0",
+/* colors */
+" s none m none c none",
+". s iconColor1 m black c black",
+/* pixels */
+" ",
+" ",
+" ",
+" ",
+" . ",
+" .. ",
+" ... ",
+" .... ",
+" ..... ",
+" ...... ",
+" ....... ",
+" ........ ",
+" ....... ",
+" ...... ",
+" ..... ",
+" .... ",
+" ... ",
+" .. ",
+" . ",
+" ",
+" ",
+" ",
+" ",
+" "};
Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/next.xpm
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/open.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/open.xpm 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/open.xpm 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,200 @@
+/* XPM */
+static char * open_xpm[] = {
+"24 24 173 2",
+" c None",
+". c #000000",
+"+ c #010100",
+"@ c #B5B8A5",
+"# c #E4E7D2",
+"$ c #878A76",
+"% c #33342B",
+"& c #0B0B0B",
+"* c #E2E5CF",
+"= c #CFD4AF",
+"- c #CED3AE",
+"; c #B2B696",
+"> c #2D2D25",
+", c #23241D",
+"' c #9D9F90",
+") c #C6CAA6",
+"! c #C4C9A5",
+"~ c #C6CBA7",
+"{ c #C7CCA8",
+"] c #C9CEA9",
+"^ c #555847",
+"/ c #1A1B15",
+"( c #20201A",
+"_ c #D4D6C2",
+": c #BEC2A0",
+"< c #B3B896",
+"[ c #B0B595",
+"} c #B3B797",
+"| c #B6BB99",
+"1 c #BBC09E",
+"2 c #BCC19F",
+"3 c #81856C",
+"4 c #3E3F32",
+"5 c #010101",
+"6 c #DADDC8",
+"7 c #AFB494",
+"8 c #AAAF8F",
+"9 c #A3A789",
+"0 c #A6AA8B",
+"a c #A9AD8E",
+"b c #A7AB8D",
+"c c #A4A88A",
+"d c #A1A588",
+"e c #AAAD96",
+"f c #B3B5A5",
+"g c #B8BBAA",
+"h c #BABCAB",
+"i c #C1C3B2",
+"j c #C7CAB7",
+"k c #CACDBB",
+"l c #BABDA8",
+"m c #0C0C09",
+"n c #DDDFCB",
+"o c #969B7E",
+"p c #9DA286",
+"q c #95987C",
+"r c #96997E",
+"s c #9A9D81",
+"t c #999D80",
+"u c #9DA184",
+"v c #A5AA8B",
+"w c #A4A98A",
+"x c #A3A889",
+"y c #A2A588",
+"z c #A2A587",
+"A c #9FA386",
+"B c #9B9E83",
+"C c #898D74",
+"D c #D8DBC9",
+"E c #84866E",
+"F c #7D8169",
+"G c #151612",
+"H c #D7DAC9",
+"I c #797D67",
+"J c #3D3F34",
+"K c #E0E0D9",
+"L c #EBEDDD",
+"M c #E8EBD9",
+"N c #E7EAD8",
+"O c #E3E6D4",
+"P c #DEE1D0",
+"Q c #DADCCC",
+"R c #DADCD1",
+"S c #2B2C28",
+"T c #D7DAC6",
+"U c #6F735E",
+"V c #0D0D0D",
+"W c #F4F4EC",
+"X c #CACFAB",
+"Y c #C6CBA8",
+"Z c #C2C6A4",
+"` c #ABB091",
+" . c #23251E",
+".. c #494B3D",
+"+. c #DCDCD4",
+"@. c #EAECDD",
+"#. c #CDD2AD",
+"$. c #CCD1AC",
+"%. c #CACFAA",
+"&. c #BABF9D",
+"*. c #B5B999",
+"=. c #81836C",
+"-. c #070806",
+";. c #D5D8C4",
+">. c #161616",
+",. c #F2F2EA",
+"'. c #C9CEAA",
+"). c #C8CDA9",
+"!. c #C4C9A6",
+"~. c #C1C5A3",
+"{. c #BCC09F",
+"]. c #B6BB9A",
+"^. c #B0B494",
+"/. c #9DA185",
+"(. c #535445",
+"_. c #B6B8A7",
+":. c #747470",
+"<. c #ECECE2",
+"[. c #C3C8A5",
+"}. c #C2C7A4",
+"|. c #C0C5A2",
+"1. c #BFC4A1",
+"2. c #BDC2A0",
+"3. c #B9BD9C",
+"4. c #B9BE9D",
+"5. c #A9AD8F",
+"6. c #A3A78A",
+"7. c #80836D",
+"8. c #020201",
+"9. c #A6A998",
+"0. c #B8BC9B",
+"a. c #AFB394",
+"b. c #ACB091",
+"c. c #A8AC8E",
+"d. c #A6AA8C",
+"e. c #9FA286",
+"f. c #9B9F83",
+"g. c #9A9D82",
+"h. c #8A8D75",
+"i. c #4F5243",
+"j. c #070705",
+"k. c #9E9F91",
+"l. c #E5E6DA",
+"m. c #ADB192",
+"n. c #A5A98C",
+"o. c #9FA387",
+"p. c #999D81",
+"q. c #95987E",
+"r. c #92957B",
+"s. c #8C8F76",
+"t. c #8A8D74",
+"u. c #71735F",
+"v. c #080908",
+"w. c #E3E5D9",
+"x. c #C0C3AF",
+"y. c #94987C",
+"z. c #8F9379",
+"A. c #8B8F75",
+"B. c #8A8E74",
+"C. c #888C73",
+"D. c #858970",
+"E. c #868971",
+"F. c #82866E",
+"G. c #80836C",
+"H. c #7D8069",
+"I. c #797C66",
+"J. c #727560",
+"K. c #717460",
+"L. c #71745F",
+"M. c #6A6D59",
+"N. c #434538",
+"O. c #080907",
+"P. c #050504",
+" ",
+" ",
+" ",
+" . . . . . . . ",
+" + @ # # # # # $ % ",
+" & * = = = - - ; > ",
+", ' * ) ! ~ { ] ] ^ / ",
+"( _ : < [ } | 1 2 3 4 5 . . . . . . . ",
+", 6 7 8 9 0 8 a b c d e f g h i j k l . ",
+"m n o p q r s t r u v w x y 9 z A B C . ",
+". D E F G . . . . . . . . . . . . . . . 5 5 ",
+". H I J K L M M M M M M M M M M M N O P Q R S ",
+". T U V W = = = = = = = = = - - - X Y Z 1 ` . ",
+". T ..+. at .#.- - #.- #.#.#.#.#.$.%.Y Z &.*.=.-. ",
+". ;.>.,.X %.X %.'.%.'.{ ).).Y !.~.{.].^./.(.m ",
+". _.:.<.[.}.}.Z |.Z 1.2.|.2.3.4.} [ 5.6.7.8. ",
+". 9.+.0.0.*.} } [ [ a.a.a.b.c.d.e.f.g.h.i.j. ",
+". k.l.m.5.d.n.6.6.d o.e.f.p.q.r.s.t.t.u.v. ",
+". w.x.y.z.A.B.C.C.D.E.F.G.H.I.J.K.L.M.N.O. ",
+" . . . . . . . . . . . . . . . . . . P. ",
+" ",
+" ",
+" ",
+" "};
Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/open.xpm
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/paste.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/paste.xpm 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/paste.xpm 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,156 @@
+/* XPM */
+static char * paste_xpm[] = {
+"24 24 129 2",
+" c None",
+". c #000000",
+"+ c #B9B9B9",
+"@ c #FEFEFE",
+"# c #F9F9F9",
+"$ c #757575",
+"% c #F5F5E8",
+"& c #565651",
+"* c #FFFFFF",
+"= c #A0A0A0",
+"- c #939393",
+"; c #7C7C7C",
+"> c #C5C5BB",
+", c #CFC6A0",
+"' c #D7CEAA",
+") c #ADA689",
+"! c #4B483C",
+"~ c #6D6D6D",
+"{ c #6C6C6C",
+"] c #A9A9A9",
+"^ c #3D3A30",
+"/ c #979178",
+"( c #C1B898",
+"_ c #8A793D",
+": c #C3BB9A",
+"< c #AFA78A",
+"[ c #444236",
+"} c #FAFAFA",
+"| c #EFEFEF",
+"1 c #C7C7C7",
+"2 c #D8D8D8",
+"3 c #D2D2D2",
+"4 c #7B7B7B",
+"5 c #302E26",
+"6 c #89846C",
+"7 c #C4BC9A",
+"8 c #847235",
+"9 c #C5C5C5",
+"0 c #A7A7A7",
+"a c #ADADAD",
+"b c #9A9A9A",
+"c c #9B9B9B",
+"d c #868686",
+"e c #424242",
+"f c #847033",
+"g c #C9C09E",
+"h c #464337",
+"i c #35332A",
+"j c #2D2B23",
+"k c #C6BE9D",
+"l c #826F33",
+"m c #7F7964",
+"n c #4C493C",
+"o c #171612",
+"p c #13120F",
+"q c #3E3B31",
+"r c #282210",
+"s c #474438",
+"t c #B3B3B3",
+"u c #D6D6D6",
+"v c #B7AE90",
+"w c #B1AA8C",
+"x c #37352B",
+"y c #151410",
+"z c #C9C9C9",
+"A c #E5E5E5",
+"B c #C6C6C6",
+"C c #B9B293",
+"D c #11100D",
+"E c #313131",
+"F c #B3D2BA",
+"G c #7BA676",
+"H c #618159",
+"I c #434035",
+"J c #8D8D8D",
+"K c #B4B4B4",
+"L c #2E2E2E",
+"M c #AFD2B6",
+"N c #79A674",
+"O c #62825A",
+"P c #888888",
+"Q c #BABABA",
+"R c #AAA48B",
+"S c #A5A086",
+"T c #A19A7F",
+"U c #312F26",
+"V c #AED2B6",
+"W c #78A672",
+"X c #608158",
+"Y c #DEDEDE",
+"Z c #252525",
+"` c #1D1D1D",
+" . c #3E3E3E",
+".. c #AFD2B7",
+"+. c #545454",
+"@. c #383838",
+"#. c #AFA88C",
+"$. c #050403",
+"%. c #3D3D3D",
+"&. c #688C60",
+"*. c #6B9061",
+"=. c #83A07A",
+"-. c #464646",
+";. c #12110E",
+">. c #ABABAB",
+",. c #484848",
+"'. c #B1D2B8",
+"). c #ACD2B4",
+"!. c #618458",
+"~. c #618057",
+"{. c #2B2B2B",
+"]. c #A9A489",
+"^. c #A39E85",
+"/. c #B0D2B7",
+"(. c #57734A",
+"_. c #212121",
+":. c #797979",
+"<. c #EBE7D0",
+"[. c #282828",
+"}. c #7AA674",
+"|. c #222222",
+"1. c #C0C0C0",
+"2. c #D2C9A5",
+"3. c #A29053",
+"4. c #8E7C3D",
+"5. c #88793B",
+"6. c #806C2F",
+"7. c #78652B",
+"8. c #251F0C",
+" . . . . ",
+" . . . . . . + @ # $ . . . . . . ",
+". % % % % % & * = - ; & > % % % , . ",
+". % ' ' ' ) ! * ~ { ] ^ / ( ' ' _ . ",
+". % : : < [ } | 1 2 3 4 5 6 < 7 8 . ",
+". % ' ' ! 9 0 0 a b c d e ! ) ' f . ",
+". % g : 6 h i j j j j j 5 6 < k l . ",
+". % ' ' ' / / / / / / / / ( ' ' l . ",
+". % g : : : : m n o p p p p ^ q r . . . . ",
+". % ' ' ' ' ' s t * * * * * * * * * * * u . ",
+". % v w w w w x * * * * * * * * * * * * * . ",
+". % ' ' ' ' ' y * 0 z A . . . . . * z B * . ",
+". % C w w w w D * * * * E F G H . 1 * * * . ",
+". % ' ' ' ' ' I * J K * L M N O . P Q * * . ",
+". % R S T T T U * * * * L V W X . c * * * . ",
+". % ' ' ' ' ' I * Y Z ` ...W O . +. at .z * . ",
+". % #.S T T T $.* * %...F M W &.*.=.-.c * . ",
+". % ' ' ' ' ' ;.* + >.,.'.).W !.~.{.d 1 * . ",
+". % ].^.T T T U * * * 1 ,./.W (._.:.1 * * . ",
+". <.' ' ' ' ' I * 0 z A 1 [.}.|.P B 1.0 * . ",
+". 2.3.4.5.6.7.8.* * * * * 1 @.c 1 * * * * . ",
+" . . . . . . . u * * * * * * * * * * * u . ",
+" . . . . . . . . . . . . . ",
+" "};
Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/paste.xpm
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/phylogram.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/phylogram.xpm 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/phylogram.xpm 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,32 @@
+/* XPM */
+static char * phylogram_xpm[] = {
+/* width height ncolors cpp [x_hot y_hot] */
+"24 24 2 1 0 0",
+/* colors */
+" s none m none c none",
+". s iconColor1 m black c black",
+/* pixels */
+" ",
+" ",
+" ",
+" ",
+" ",
+" ...... ",
+" . ",
+" . ",
+" . ",
+" . ......... ",
+" . . ",
+" . . ",
+" ..... ",
+" . .. ",
+" . . ",
+" ..... ",
+" . ",
+" .. ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" "};
Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/phylogram.xpm
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/previous.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/previous.xpm 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/previous.xpm 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,32 @@
+/* XPM */
+static char * previous_xpm[] = {
+/* width height ncolors cpp [x_hot y_hot] */
+"24 24 2 1 0 0",
+/* colors */
+" s none m none c none",
+". s iconColor1 m black c black",
+/* pixels */
+" ",
+" ",
+" ",
+" ",
+" . ",
+" .. ",
+" ... ",
+" .... ",
+" ..... ",
+" ...... ",
+" ....... ",
+" ........ ",
+" ....... ",
+" ...... ",
+" ..... ",
+" .... ",
+" ... ",
+" .. ",
+" . ",
+" ",
+" ",
+" ",
+" ",
+" "};
Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/previous.xpm
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/print.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/print.xpm 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/print.xpm 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,165 @@
+/* XPM */
+static char * print_xpm[] = {
+"24 24 138 2",
+" c None",
+". c #000000",
+"+ c #BABABA",
+"@ c #FFFFFF",
+"# c #F6F6F6",
+"$ c #8D8D8D",
+"% c #A6A6A6",
+"& c #B5B5B5",
+"* c #DADADA",
+"= c #838383",
+"- c #7A7A7A",
+"; c #797979",
+"> c #9F9F9F",
+", c #5C5C5C",
+"' c #878787",
+") c #7D7D7D",
+"! c #9A9A9A",
+"~ c #A7A7A7",
+"{ c #EDEDED",
+"] c #E9E9E9",
+"^ c #949494",
+"/ c #999999",
+"( c #E4E4E4",
+"_ c #A1A1A1",
+": c #C2C2C2",
+"< c #E1E1E1",
+"[ c #C8C8C8",
+"} c #CCCCCC",
+"| c #87847C",
+"1 c #EAE8E3",
+"2 c #8D8982",
+"3 c #53524C",
+"4 c #807D74",
+"5 c #AAA9A5",
+"6 c #BAB5AB",
+"7 c #F3F3F3",
+"8 c #C3C1BD",
+"9 c #8B8B89",
+"0 c #E6E5E1",
+"a c #F9F9F8",
+"b c #FAFAF9",
+"c c #F9F9F7",
+"d c #F7F6F5",
+"e c #F7F7F4",
+"f c #F6F5F4",
+"g c #F2F1EE",
+"h c #F0EFEC",
+"i c #E5E5E4",
+"j c #DFDED9",
+"k c #A4A3A1",
+"l c #6C6B6A",
+"m c #F5F4F3",
+"n c #BEBEBE",
+"o c #D5D5D5",
+"p c #B6B6B6",
+"q c #D3D3D3",
+"r c #D4D4D3",
+"s c #B7B7B7",
+"t c #D4D4D4",
+"u c #A9A9A9",
+"v c #CDCDCB",
+"w c #B5B5B4",
+"x c #DCDAD3",
+"y c #6B6B6A",
+"z c #999896",
+"A c #918F87",
+"B c #999895",
+"C c #E6E4E1",
+"D c #F0EEEC",
+"E c #FAFAFA",
+"F c #FAF9F9",
+"G c #F9F8F7",
+"H c #F8F7F6",
+"I c #F8F8F7",
+"J c #F4F3F1",
+"K c #F2F1EF",
+"L c #565655",
+"M c #858482",
+"N c #9C9B99",
+"O c #6B6A68",
+"P c #585858",
+"Q c #5E5C57",
+"R c #524F4B",
+"S c #4A4845",
+"T c #4B4A46",
+"U c #4B4946",
+"V c #4A4844",
+"W c #494743",
+"X c #484642",
+"Y c #474541",
+"Z c #464440",
+"` c #514F4B",
+" . c #53514E",
+".. c #7B7A77",
+"+. c #797771",
+"@. c #949391",
+"#. c #989694",
+"$. c #868480",
+"%. c #6E6C66",
+"&. c #706D67",
+"*. c #5C5955",
+"=. c #67645F",
+"-. c #5B5954",
+";. c #585651",
+">. c #5D5B56",
+",. c #595652",
+"'. c #53504C",
+"). c #575450",
+"!. c #595752",
+"~. c #5C5956",
+"{. c #5B5956",
+"]. c #61615E",
+"^. c #696861",
+"/. c #77756F",
+"(. c #7E7B77",
+"_. c #979690",
+":. c #96938D",
+"<. c #807E77",
+"[. c #7D7A74",
+"}. c #787770",
+"|. c #716F6A",
+"1. c #6E6C67",
+"2. c #595753",
+"3. c #63615C",
+"4. c #686661",
+"5. c #6F6E68",
+"6. c #6D6C66",
+"7. c #72716B",
+"8. c #76746F",
+"9. c #6A6963",
+"0. c #8B8880",
+"a. c #B2AFA8",
+"b. c #B6B3AD",
+"c. c #BFBDB6",
+"d. c #BDBBB4",
+"e. c #B0AEA6",
+"f. c #ABA8A2",
+"g. c #9C9991",
+" ",
+" . . . . . . . . . . . . ",
+" . + @ @ @ @ @ @ @ @ @ @ + . ",
+" . @ @ @ @ @ @ @ @ @ @ @ # . ",
+" . @ $ % & @ * @ @ @ @ @ # . ",
+" . @ @ @ @ @ @ @ @ @ @ @ # . ",
+" . @ = - % @ ; > * + , @ # . ",
+" . @ @ @ @ @ @ @ @ @ @ @ # . ",
+" . @ ' ) ! > * @ * ~ * @ # . ",
+" . # # # # # # # # # # # { . ",
+" . . ] ^ / % ( ^ _ ( % : ( < . . ",
+" . @ . [ } } } } } } } } } [ : . | . ",
+" . @ 1 2 3 . . . . . . . . . . 4 | 5 6 . ",
+" . @ @ 7 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 1 . ",
+" . 8 9 0 a b a c d e b b f g g h i 1 > j 6 . ",
+" . k l m n o p q p r s t u q & v w x y z A . ",
+" . B y C D d a E F a G H I I J J J K L M A . ",
+" . N O P Q R S T U U U V W X Y W Z ` ...+.. ",
+" . @.#.$.%.&.*.=.-.;.-.>.,.'.).!.~.{.].^./.. ",
+" . (._.:.A <.[.}./.|./.|.1.2.3.4.5.6.7.8.9.. ",
+" . . . . . . . . . . . . . . . . . . . . ",
+" . 0.a.b.c.c.c.c.c.d.e.a.f.e.g.g.g.4 4 . ",
+" . . . . . . . . . . . . . . . . . . ",
+" "};
Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/print.xpm
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/print_preview.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/print_preview.xpm 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/print_preview.xpm 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,223 @@
+/* XPM */
+static char * print_preview_xpm[] = {
+"24 24 196 2",
+" c None",
+". c #000000",
+"+ c #BABABA",
+"@ c #FFFFFF",
+"# c #F6F6F6",
+"$ c #8D8D8D",
+"% c #A6A6A6",
+"& c #B5B5B5",
+"* c #DADADA",
+"= c #828282",
+"- c #797979",
+"; c #A4A4A4",
+"> c #FDFDFD",
+", c #787878",
+"' c #9E9E9E",
+") c #5C5C5C",
+"! c #FEFEFE",
+"~ c #FAFAFA",
+"{ c #F2F2F2",
+"] c #AFAFAF",
+"^ c #47473F",
+"/ c #0A0A09",
+"( c #4B4B43",
+"_ c #BBBBBB",
+": c #F8F8F8",
+"< c #7C7C7C",
+"[ c #484848",
+"} c #34342E",
+"| c #9D9D8D",
+"1 c #CFCFB9",
+"2 c #C4C4AF",
+"3 c #8D8D7F",
+"4 c #353530",
+"5 c #9F9F9F",
+"6 c #E2E2E2",
+"7 c #CFCFCF",
+"8 c #46463F",
+"9 c #9C9C8C",
+"0 c #E2E2D0",
+"a c #EDEDE7",
+"b c #C0C0AC",
+"c c #B2B29F",
+"d c #828274",
+"e c #4C4C44",
+"f c #EDEDED",
+"g c #C8C8C8",
+"h c #747474",
+"i c #090908",
+"j c #D5D5BF",
+"k c #FBFBFA",
+"l c #C3C3AE",
+"m c #B5B5A2",
+"n c #A6A695",
+"o c #9C9C8F",
+"p c #080807",
+"q c #E4E4E4",
+"r c #E1E1E1",
+"s c #9D9D9D",
+"t c #090909",
+"u c #CACAB5",
+"v c #DDDDD0",
+"w c #B7B7A4",
+"x c #AAAA98",
+"y c #9B9B8B",
+"z c #AEAEA3",
+"A c #C2C2C2",
+"B c #87847C",
+"C c #EAE8E3",
+"D c #848079",
+"E c #45443F",
+"F c #474740",
+"G c #929283",
+"H c #BABAA7",
+"I c #ADAD9B",
+"J c #9F9F8E",
+"K c #ACACA1",
+"L c #CFCFCB",
+"M c #4C4C45",
+"N c #807D74",
+"O c #AAA9A5",
+"P c #BAB5AB",
+"Q c #F3F3F3",
+"R c #DBDBDB",
+"S c #C9C9C9",
+"T c #838383",
+"U c #34342F",
+"V c #878779",
+"W c #A0A090",
+"X c #AEAEA2",
+"Y c #C3C3BE",
+"Z c #010101",
+"` c #C3C1BD",
+" . c #8B8B89",
+".. c #E6E5E1",
+"+. c #F4F4F3",
+"@. c #E6E6E5",
+"#. c #D1D1D1",
+"$. c #C4C4C2",
+"%. c #8B8B8A",
+"&. c #414141",
+"*. c #A09F9D",
+"=. c #404040",
+"-. c #B5B5B4",
+";. c #DFDED9",
+">. c #A4A3A1",
+",. c #6C6B6A",
+"'. c #F5F4F3",
+"). c #BDBDBD",
+"!. c #A7A7A7",
+"~. c #979797",
+"{. c #B0B0AF",
+"]. c #9B9B9B",
+"^. c #B6B6B6",
+"/. c #8C8C8C",
+"(. c #B3B3B3",
+"_. c #171717",
+":. c #AEACA7",
+"<. c #6A6A69",
+"[. c #999896",
+"}. c #918F87",
+"|. c #999895",
+"1. c #6B6B6A",
+"2. c #E6E4E1",
+"3. c #F0EEEC",
+"4. c #F6F5F4",
+"5. c #EAE9E9",
+"6. c #E9E9E8",
+"7. c #EBEAE9",
+"8. c #E6E5E4",
+"9. c #D4D4D4",
+"0. c #CACAC9",
+"a. c #979696",
+"b. c #9C9C9C",
+"c. c #545454",
+"d. c #50504F",
+"e. c #858482",
+"f. c #9C9B99",
+"g. c #6B6A68",
+"h. c #585858",
+"i. c #5E5C57",
+"j. c #524F4B",
+"k. c #494744",
+"l. c #4A4945",
+"m. c #4A4845",
+"n. c #484642",
+"o. c #43413D",
+"p. c #3D3B38",
+"q. c #393834",
+"r. c #393836",
+"s. c #757575",
+"t. c #4C4C4C",
+"u. c #7B7A77",
+"v. c #797771",
+"w. c #949391",
+"x. c #989694",
+"y. c #868480",
+"z. c #6E6C66",
+"A. c #706D67",
+"B. c #5C5955",
+"C. c #67645F",
+"D. c #5B5954",
+"E. c #585651",
+"F. c #5C5A55",
+"G. c #56534F",
+"H. c #4C4945",
+"I. c #4A4744",
+"J. c #484743",
+"K. c #4B4A48",
+"L. c #848484",
+"M. c #7D7D7D",
+"N. c #696861",
+"O. c #77756F",
+"P. c #7E7B77",
+"Q. c #979690",
+"R. c #96938D",
+"S. c #807E77",
+"T. c #7D7A74",
+"U. c #787770",
+"V. c #716F6A",
+"W. c #6D6B66",
+"X. c #565450",
+"Y. c #5A5954",
+"Z. c #585752",
+"`. c #605F5A",
+" + c #676660",
+".+ c #72716B",
+"++ c #76746F",
+"@+ c #6A6963",
+"#+ c #8B8880",
+"$+ c #B2AFA8",
+"%+ c #B6B3AD",
+"&+ c #BFBDB6",
+"*+ c #BDBBB4",
+"=+ c #B0AEA6",
+"-+ c #ABA8A2",
+";+ c #9C9991",
+" ",
+" . . . . . . . . . . . . ",
+" . + @ @ @ @ @ @ @ @ @ @ + . ",
+" . @ @ @ @ @ @ @ @ @ @ @ # . ",
+" . @ $ % & @ * @ @ @ @ @ # . ",
+" . @ @ @ @ @ @ @ @ @ @ @ # . ",
+" . @ = - ; > , ' * + ) @ # . ",
+" . ! ~ { ] ^ / / ( _ @ @ # . ",
+" . : < [ } | 1 2 3 4 5 @ # . ",
+" . 6 7 8 9 0 a b c d e # f . ",
+" . . g h i j k l m n o p q r . . ",
+" . @ . % s t u v w x y z / g A . B . ",
+" . @ C D E . F G H I J K L M . N B O P . ",
+" . @ @ Q { R S T U V W X Y Z Z @ @ @ @ @ C . ",
+" . ` ...+. at .#.$.%.( / / &.*.=.Z -.C 5 ;.P . ",
+" . >.,.'.).7 !.& ~.{.].^./.(.' =._.:.<.[.}.. ",
+" . |.1.2.3.4.+.f 5.6.7.8.9.0.a.b.c.Z d.e.}.. ",
+" . f.g.h.i.j.k.l.m.m.m.n.o.p.q.r.s.t.t.u.v.. ",
+" . w.x.y.z.A.B.C.D.E.D.F.G.H.I.J.K.L.M.N.O.. ",
+" . P.Q.R.}.S.T.U.O.V.O.V.W.X.Y.Z.`. +.+++ at +. ",
+" . . . . . . . . . . . . . . . . . . . . ",
+" . #+$+%+&+&+&+&+&+*+=+$+-+=+;+;+;+N N . ",
+" . . . . . . . . . . . . . . . . . . ",
+" "};
Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/print_preview.xpm
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/rectangletree.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/rectangletree.xpm 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/rectangletree.xpm 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,32 @@
+/* XPM */
+static char * rectangletree_xpm[] = {
+/* width height ncolors cpp [x_hot y_hot] */
+"24 24 2 1 0 0",
+/* colors */
+" s none m none c none",
+". s iconColor1 m black c black",
+/* pixels */
+" ",
+" ",
+" ",
+" ",
+" ",
+" ............. ",
+" . ",
+" . ",
+" . ",
+" . ......... ",
+" . . ",
+" . . ",
+" ..... ",
+" . ..... ",
+" . . ",
+" ..... ",
+" . ",
+" ..... ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" "};
Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/rectangletree.xpm
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/saveas.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/saveas.xpm 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/saveas.xpm 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,123 @@
+/* XPM */
+static char * saveas_xpm[] = {
+"24 24 96 2",
+" c None",
+". c #000000",
+"+ c #F4CB34",
+"@ c #E3A445",
+"# c #E79E3C",
+"$ c #574C2A",
+"% c #F6F9FF",
+"& c #ABD5FF",
+"* c #CCCCCC",
+"= c #5F542E",
+"- c #C5E1FF",
+"; c #6699CC",
+"> c #999999",
+", c #524828",
+"' c #B4D9FF",
+") c #FFFFFF",
+"! c #203141",
+"~ c #E3A647",
+"{ c #2C4258",
+"] c #223446",
+"^ c #646464",
+"/ c #35506B",
+"( c #2B4258",
+"_ c #656565",
+": c #8D8D8D",
+"< c #45678A",
+"[ c #3A5876",
+"} c #D2AA71",
+"| c #6B6B6B",
+"1 c #8C8C8C",
+"2 c #9E9E9A",
+"3 c #4E769D",
+"4 c #4E4015",
+"5 c #696966",
+"6 c #686868",
+"7 c #7C7C7C",
+"8 c #B5B5B5",
+"9 c #EFEFEF",
+"0 c #060605",
+"a c #AAAAAA",
+"b c #A7A7A7",
+"c c #C6C6C6",
+"d c #E7E7E7",
+"e c #5C8AB8",
+"f c #EBF1F8",
+"g c #F5F5F5",
+"h c #BBCAD7",
+"i c #6496C8",
+"j c #5C8BB9",
+"k c #5B89B7",
+"l c #5A87B5",
+"m c #6598CB",
+"n c #8EA4BC",
+"o c #B8B8B8",
+"p c #C2C2C2",
+"q c #DFDFDF",
+"r c #72787D",
+"s c #2E465F",
+"t c #436587",
+"u c #6090C0",
+"v c #263A4F",
+"w c #304961",
+"x c #CBCBCB",
+"y c #25394C",
+"z c #4A7095",
+"A c #426385",
+"B c #6294C5",
+"C c #C1C1C1",
+"D c #2E455D",
+"E c #436688",
+"F c #B3B3B3",
+"G c #233648",
+"H c #486D91",
+"I c #556B81",
+"J c #5E8EBD",
+"K c #C0C0C0",
+"L c #293E54",
+"M c #466A8E",
+"N c #B4B4B4",
+"O c #9F9F9F",
+"P c #233649",
+"Q c #496E93",
+"R c #3A5977",
+"S c #4A5B6C",
+"T c #3C5B7A",
+"U c #919191",
+"V c #B2B2B2",
+"W c #808080",
+"X c #7D7D7D",
+"Y c #777777",
+"Z c #626262",
+"` c #575757",
+" . c #192735",
+".. c #344E69",
+"+. c #36516D",
+"@. c #263A4E",
+" ",
+" . . ",
+" . + @ . ",
+" . . . . . . . . . . . . . . + # $ . ",
+" . % & * * * * * * * * * * . + # = . ",
+" . - ; > > > > > > > > > . + # , . . ",
+" . ' ; ) ) ) ) ) ) ) ) . + # , . ! . ",
+" . ' ; ) ) ) ) ) ) ) . + ~ = . { ] . ",
+" . ' ; ) * * * * * . + # = . ^ / ( . ",
+" . ' ; ) ) ) ) ) . + # $ . _ : < [ . ",
+" . ' ; ) ) ) ) ) . } = . | 1 2 3 [ . ",
+" . ' ; ) * * * . 4 . . 5 6 7 8 3 [ . ",
+" . ' ; ) ) ) 9 0 . a b 8 c d d e [ . ",
+" . ' ; f ) g d d d d d d d d h e [ . ",
+" . ' ; ; i j e e e e e k l e e e [ . ",
+" . ' ; m n o o p q d * r s t e e [ . ",
+" . ' ; u o o v w d x o a y z A e [ . ",
+" . ' B e o C D E C o o F G H E e [ . ",
+" . I J e K q L M o o N O P Q E e R . ",
+" . S T U V W W X Y Z ` .w ..+. at .. ",
+" . . . . . . . . . . . . . . . ",
+" ",
+" ",
+" "};
Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/saveas.xpm
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/slanttree.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/slanttree.xpm 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/slanttree.xpm 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,32 @@
+/* XPM */
+static char * slanttree_xpm[] = {
+/* width height ncolors cpp [x_hot y_hot] */
+"24 24 2 1 0 0",
+/* colors */
+" s none m none c none",
+". s iconColor1 m black c black",
+/* pixels */
+" ",
+" ",
+" ",
+" ",
+" ",
+" . ",
+" . ",
+" . ",
+" . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . ",
+" . ",
+" . ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" "};
Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/slanttree.xpm
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/treeview.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/treeview.xpm 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/treeview.xpm 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,39 @@
+/* XPM */
+static char *treeview_xpm[] = {
+"32 32 4 1",
+"# c #000000000000",
+" c None",
+"a c #FFFFFFFF0000",
+"b c #808080808080",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ##### ##### ##### ",
+" #aaa#b# #aaa#b #aaa#b ",
+"#####bbb# #####b #####b ",
+" #aaa#bbb# #aaa#b #aaa#b ",
+" #aaa#bbb#aaa#b #aaa#b ",
+" #aaa#b#aaa#b #aaa#b ",
+" #aaa#aaa#b #aaa#b ",
+" #aaaaa#b# #aaa#b ",
+" #aaa#bbb# #aaa#b ",
+" #aaa#bbb# #aaa#b ",
+" #aaa#bbb#aaa#b ",
+" #aaa#b#aaa#b ",
+" #aaa#aaa#b ",
+" #aaaaa#b# ",
+" #aaa#bbb# ",
+" #aaa#bbb# ",
+" #aaa#bbb# ",
+" #aaa#bbb# ",
+" #aaa#bbb# ",
+" #aaa#b# ",
+" ##### ",
+" ",
+" ",
+" ",
+" "};
Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/treeview.xpm
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/zoomin.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/zoomin.xpm 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/zoomin.xpm 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,33 @@
+/* XPM */
+static char *zoomin_xpm[]={
+"24 24 6 1",
+". c None",
+"a c #000000",
+"d c #939393",
+"b c #a1a1a1",
+"# c #aeaeae",
+"c c #ffffff",
+"........................",
+"........................",
+"........................",
+"........................",
+".......#aaaabb#.........",
+".....#aaccccaab#........",
+".....accccccccab#.......",
+"....#acccaacccabb#......",
+"....accccaaccccab#......",
+"....accaaaaaaccab#......",
+"....accaaaaaaccab#......",
+"....accccaaccccab#......",
+"....#acccaacccad#.......",
+".....accccccccad#.......",
+".....#aaccccaaad#.......",
+".......#aaaa.aaab#......",
+"..............aaab#.....",
+"...............aaab.....",
+"................aaa.....",
+".................aa.....",
+"........................",
+"........................",
+"........................",
+"........................"};
Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/zoomin.xpm
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/zoomout.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/zoomout.xpm 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/zoomout.xpm 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,33 @@
+/* XPM */
+static char *zoomout_xpm[]={
+"24 24 6 1",
+". c None",
+"a c #000000",
+"d c #939393",
+"b c #a1a1a1",
+"# c #aeaeae",
+"c c #ffffff",
+"........................",
+"........................",
+"........................",
+"........................",
+".......#aaaabb#.........",
+".....#aaccccaab#........",
+".....accccccccab#.......",
+"....#accccccccabb#......",
+"....accccccccccab#......",
+"....accaaaaaaccab#......",
+"....accaaaaaaccab#......",
+"....accccccccccab#......",
+"....#accccccccad#.......",
+".....accccccccad#.......",
+".....#aaccccaaad#.......",
+".......#aaaa.aaab#......",
+"..............aaab#.....",
+"...............aaab.....",
+"................aaa.....",
+".................aa.....",
+"........................",
+"........................",
+"........................",
+"........................"};
Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/zoomout.xpm
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/configure
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/configure 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/configure 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,3992 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.59.
+#
+# Copyright (C) 2003 Free Software Foundation, Inc.
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## --------------------- ##
+## M4sh Initialization. ##
+## --------------------- ##
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+ set -o posix
+fi
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ as_unset=unset
+else
+ as_unset=false
+fi
+
+
+# Work around bugs in pre-3.0 UWIN ksh.
+$as_unset ENV MAIL MAILPATH
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+ LC_TELEPHONE LC_TIME
+do
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+ $as_unset $as_var
+ fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)$' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+ /^X\/\(\/\/\)$/{ s//\1/; q; }
+ /^X\/\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+
+
+# PATH needs CR, and LINENO needs CR and PATH.
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+
+
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x$as_lineno_3" = "x$as_lineno_2" || {
+ # Find who we are. Look in the path if we contain no path at all
+ # relative or not.
+ case $0 in
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+
+ ;;
+ esac
+ # We did not find ourselves, most probably we were run as `sh COMMAND'
+ # in which case we are not to be found in the path.
+ if test "x$as_myself" = x; then
+ as_myself=$0
+ fi
+ if test ! -f "$as_myself"; then
+ { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2
+ { (exit 1); exit 1; }; }
+ fi
+ case $CONFIG_SHELL in
+ '')
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for as_base in sh bash ksh sh5; do
+ case $as_dir in
+ /*)
+ if ("$as_dir/$as_base" -c '
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
+ $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+ $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+ CONFIG_SHELL=$as_dir/$as_base
+ export CONFIG_SHELL
+ exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+ fi;;
+ esac
+ done
+done
+;;
+ esac
+
+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+ # uniformly replaced by the line number. The first 'sed' inserts a
+ # line-number line before each line; the second 'sed' does the real
+ # work. The second script uses 'N' to pair each line-number line
+ # with the numbered line, and appends trailing '-' during
+ # substitution so that $LINENO is not a special case at line end.
+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+ # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
+ sed '=' <$as_myself |
+ sed '
+ N
+ s,$,-,
+ : loop
+ s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+ t loop
+ s,-$,,
+ s,^['$as_cr_digits']*\n,,
+ ' >$as_me.lineno &&
+ chmod +x $as_me.lineno ||
+ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+ { (exit 1); exit 1; }; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensible to this).
+ . ./$as_me.lineno
+ # Exit status is that of the last command.
+ exit
+}
+
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+ *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T=' ' ;;
+ *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+ *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+ # We could just check for DJGPP; but this test a) works b) is more generic
+ # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+ if test -f conf$$.exe; then
+ # Don't use ln at all; we don't have any links
+ as_ln_s='cp -p'
+ else
+ as_ln_s='ln -s'
+ fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+as_executable_p="test -f"
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS=" $as_nl"
+
+# CDPATH.
+$as_unset CDPATH
+
+
+# Name of the host.
+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+exec 6>&1
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_config_libobj_dir=.
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+# Maximum number of lines to put in a shell here document.
+# This variable seems obsolete. It should probably be removed, and
+# only ac_max_sed_lines should be used.
+: ${ac_max_here_lines=38}
+
+# Identity of this package.
+PACKAGE_NAME=
+PACKAGE_TARNAME=
+PACKAGE_VERSION=
+PACKAGE_STRING=
+PACKAGE_BUGREPORT=
+
+ac_unique_file="tview.cpp"
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar CXX CXXFLAGS LDFLAGS CPPFLAGS ac_ct_CXX EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE RANLIB ac_ct_RANLIB ENT_TRUE ENT_FALSE WX_CONFIG LIBOBJS LTLIBOBJS'
+ac_subst_files=''
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datadir='${prefix}/share'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+libdir='${exec_prefix}/lib'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+infodir='${prefix}/info'
+mandir='${prefix}/man'
+
+ac_prev=
+for ac_option
+do
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+ eval "$ac_prev=\$ac_option"
+ ac_prev=
+ continue
+ fi
+
+ ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+ case $ac_option in
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+ bindir=$ac_optarg ;;
+
+ -build | --build | --buil | --bui | --bu)
+ ac_prev=build_alias ;;
+ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+ build_alias=$ac_optarg ;;
+
+ -cache-file | --cache-file | --cache-fil | --cache-fi \
+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+ ac_prev=cache_file ;;
+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+ cache_file=$ac_optarg ;;
+
+ --config-cache | -C)
+ cache_file=config.cache ;;
+
+ -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
+ ac_prev=datadir ;;
+ -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
+ | --da=*)
+ datadir=$ac_optarg ;;
+
+ -disable-* | --disable-*)
+ ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+ { (exit 1); exit 1; }; }
+ ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+ eval "enable_$ac_feature=no" ;;
+
+ -enable-* | --enable-*)
+ ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+ { (exit 1); exit 1; }; }
+ ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+ case $ac_option in
+ *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+ *) ac_optarg=yes ;;
+ esac
+ eval "enable_$ac_feature='$ac_optarg'" ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+ | --exec | --exe | --ex)
+ ac_prev=exec_prefix ;;
+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+ | --exec=* | --exe=* | --ex=*)
+ exec_prefix=$ac_optarg ;;
+
+ -gas | --gas | --ga | --g)
+ # Obsolete; use --with-gas.
+ with_gas=yes ;;
+
+ -help | --help | --hel | --he | -h)
+ ac_init_help=long ;;
+ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+ ac_init_help=recursive ;;
+ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+ ac_init_help=short ;;
+
+ -host | --host | --hos | --ho)
+ ac_prev=host_alias ;;
+ -host=* | --host=* | --hos=* | --ho=*)
+ host_alias=$ac_optarg ;;
+
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+ | --includ=* | --inclu=* | --incl=* | --inc=*)
+ includedir=$ac_optarg ;;
+
+ -infodir | --infodir | --infodi | --infod | --info | --inf)
+ ac_prev=infodir ;;
+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+ infodir=$ac_optarg ;;
+
+ -libdir | --libdir | --libdi | --libd)
+ ac_prev=libdir ;;
+ -libdir=* | --libdir=* | --libdi=* | --libd=*)
+ libdir=$ac_optarg ;;
+
+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+ | --libexe | --libex | --libe)
+ ac_prev=libexecdir ;;
+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+ | --libexe=* | --libex=* | --libe=*)
+ libexecdir=$ac_optarg ;;
+
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+ | --localstate | --localstat | --localsta | --localst \
+ | --locals | --local | --loca | --loc | --lo)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+ | --localstate=* | --localstat=* | --localsta=* | --localst=* \
+ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
+ localstatedir=$ac_optarg ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+ ac_prev=mandir ;;
+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+ mandir=$ac_optarg ;;
+
+ -nfp | --nfp | --nf)
+ # Obsolete; use --without-fp.
+ with_fp=no ;;
+
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+ | --no-cr | --no-c | -n)
+ no_create=yes ;;
+
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+ no_recursion=yes ;;
+
+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+ | --oldin | --oldi | --old | --ol | --o)
+ ac_prev=oldincludedir ;;
+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+ oldincludedir=$ac_optarg ;;
+
+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+ ac_prev=prefix ;;
+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+ prefix=$ac_optarg ;;
+
+ -program-prefix | --program-prefix | --program-prefi | --program-pref \
+ | --program-pre | --program-pr | --program-p)
+ ac_prev=program_prefix ;;
+ -program-prefix=* | --program-prefix=* | --program-prefi=* \
+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+ program_prefix=$ac_optarg ;;
+
+ -program-suffix | --program-suffix | --program-suffi | --program-suff \
+ | --program-suf | --program-su | --program-s)
+ ac_prev=program_suffix ;;
+ -program-suffix=* | --program-suffix=* | --program-suffi=* \
+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+ program_suffix=$ac_optarg ;;
+
+ -program-transform-name | --program-transform-name \
+ | --program-transform-nam | --program-transform-na \
+ | --program-transform-n | --program-transform- \
+ | --program-transform | --program-transfor \
+ | --program-transfo | --program-transf \
+ | --program-trans | --program-tran \
+ | --progr-tra | --program-tr | --program-t)
+ ac_prev=program_transform_name ;;
+ -program-transform-name=* | --program-transform-name=* \
+ | --program-transform-nam=* | --program-transform-na=* \
+ | --program-transform-n=* | --program-transform-=* \
+ | --program-transform=* | --program-transfor=* \
+ | --program-transfo=* | --program-transf=* \
+ | --program-trans=* | --program-tran=* \
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+ program_transform_name=$ac_optarg ;;
+
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+
+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+ ac_prev=sbindir ;;
+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+ | --sbi=* | --sb=*)
+ sbindir=$ac_optarg ;;
+
+ -sharedstatedir | --sharedstatedir | --sharedstatedi \
+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+ | --sharedst | --shareds | --shared | --share | --shar \
+ | --sha | --sh)
+ ac_prev=sharedstatedir ;;
+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+ | --sha=* | --sh=*)
+ sharedstatedir=$ac_optarg ;;
+
+ -site | --site | --sit)
+ ac_prev=site ;;
+ -site=* | --site=* | --sit=*)
+ site=$ac_optarg ;;
+
+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+ ac_prev=srcdir ;;
+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+ srcdir=$ac_optarg ;;
+
+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+ | --syscon | --sysco | --sysc | --sys | --sy)
+ ac_prev=sysconfdir ;;
+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+ sysconfdir=$ac_optarg ;;
+
+ -target | --target | --targe | --targ | --tar | --ta | --t)
+ ac_prev=target_alias ;;
+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+ target_alias=$ac_optarg ;;
+
+ -v | -verbose | --verbose | --verbos | --verbo | --verb)
+ verbose=yes ;;
+
+ -version | --version | --versio | --versi | --vers | -V)
+ ac_init_version=: ;;
+
+ -with-* | --with-*)
+ ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid package name: $ac_package" >&2
+ { (exit 1); exit 1; }; }
+ ac_package=`echo $ac_package| sed 's/-/_/g'`
+ case $ac_option in
+ *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+ *) ac_optarg=yes ;;
+ esac
+ eval "with_$ac_package='$ac_optarg'" ;;
+
+ -without-* | --without-*)
+ ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid package name: $ac_package" >&2
+ { (exit 1); exit 1; }; }
+ ac_package=`echo $ac_package | sed 's/-/_/g'`
+ eval "with_$ac_package=no" ;;
+
+ --x)
+ # Obsolete; use --with-x.
+ with_x=yes ;;
+
+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+ | --x-incl | --x-inc | --x-in | --x-i)
+ ac_prev=x_includes ;;
+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+ x_includes=$ac_optarg ;;
+
+ -x-libraries | --x-libraries | --x-librarie | --x-librari \
+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+ ac_prev=x_libraries ;;
+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+ x_libraries=$ac_optarg ;;
+
+ -*) { echo "$as_me: error: unrecognized option: $ac_option
+Try \`$0 --help' for more information." >&2
+ { (exit 1); exit 1; }; }
+ ;;
+
+ *=*)
+ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+ { (exit 1); exit 1; }; }
+ ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
+ eval "$ac_envvar='$ac_optarg'"
+ export $ac_envvar ;;
+
+ *)
+ # FIXME: should be removed in autoconf 3.0.
+ echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+ : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+ ;;
+
+ esac
+done
+
+if test -n "$ac_prev"; then
+ ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+ { echo "$as_me: error: missing argument to $ac_option" >&2
+ { (exit 1); exit 1; }; }
+fi
+
+# Be sure to have absolute paths.
+for ac_var in exec_prefix prefix
+do
+ eval ac_val=$`echo $ac_var`
+ case $ac_val in
+ [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
+ *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+ { (exit 1); exit 1; }; };;
+ esac
+done
+
+# Be sure to have absolute paths.
+for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
+ localstatedir libdir includedir oldincludedir infodir mandir
+do
+ eval ac_val=$`echo $ac_var`
+ case $ac_val in
+ [\\/$]* | ?:[\\/]* ) ;;
+ *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+ { (exit 1); exit 1; }; };;
+ esac
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+ if test "x$build_alias" = x; then
+ cross_compiling=maybe
+ echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+ If a cross compiler is detected then cross compile mode will be used." >&2
+ elif test "x$build_alias" != "x$host_alias"; then
+ cross_compiling=yes
+ fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+ ac_srcdir_defaulted=yes
+ # Try the directory containing this script, then its parent.
+ ac_confdir=`(dirname "$0") 2>/dev/null ||
+$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$0" : 'X\(//\)[^/]' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$0" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ srcdir=$ac_confdir
+ if test ! -r $srcdir/$ac_unique_file; then
+ srcdir=..
+ fi
+else
+ ac_srcdir_defaulted=no
+fi
+if test ! -r $srcdir/$ac_unique_file; then
+ if test "$ac_srcdir_defaulted" = yes; then
+ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2
+ { (exit 1); exit 1; }; }
+ else
+ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+ { (exit 1); exit 1; }; }
+ fi
+fi
+(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null ||
+ { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2
+ { (exit 1); exit 1; }; }
+srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
+ac_env_build_alias_set=${build_alias+set}
+ac_env_build_alias_value=$build_alias
+ac_cv_env_build_alias_set=${build_alias+set}
+ac_cv_env_build_alias_value=$build_alias
+ac_env_host_alias_set=${host_alias+set}
+ac_env_host_alias_value=$host_alias
+ac_cv_env_host_alias_set=${host_alias+set}
+ac_cv_env_host_alias_value=$host_alias
+ac_env_target_alias_set=${target_alias+set}
+ac_env_target_alias_value=$target_alias
+ac_cv_env_target_alias_set=${target_alias+set}
+ac_cv_env_target_alias_value=$target_alias
+ac_env_CXX_set=${CXX+set}
+ac_env_CXX_value=$CXX
+ac_cv_env_CXX_set=${CXX+set}
+ac_cv_env_CXX_value=$CXX
+ac_env_CXXFLAGS_set=${CXXFLAGS+set}
+ac_env_CXXFLAGS_value=$CXXFLAGS
+ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set}
+ac_cv_env_CXXFLAGS_value=$CXXFLAGS
+ac_env_LDFLAGS_set=${LDFLAGS+set}
+ac_env_LDFLAGS_value=$LDFLAGS
+ac_cv_env_LDFLAGS_set=${LDFLAGS+set}
+ac_cv_env_LDFLAGS_value=$LDFLAGS
+ac_env_CPPFLAGS_set=${CPPFLAGS+set}
+ac_env_CPPFLAGS_value=$CPPFLAGS
+ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
+ac_cv_env_CPPFLAGS_value=$CPPFLAGS
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+ # Omit some internal or obsolete options to make the list less imposing.
+ # This message is too long to be a string in the A/UX 3.1 sh.
+ cat <<_ACEOF
+\`configure' configures this package to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE. See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+ -h, --help display this help and exit
+ --help=short display options specific to this package
+ --help=recursive display the short help of all the included packages
+ -V, --version display version information and exit
+ -q, --quiet, --silent do not print \`checking...' messages
+ --cache-file=FILE cache test results in FILE [disabled]
+ -C, --config-cache alias for \`--cache-file=config.cache'
+ -n, --no-create do not create output files
+ --srcdir=DIR find the sources in DIR [configure dir or \`..']
+
+_ACEOF
+
+ cat <<_ACEOF
+Installation directories:
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ [$ac_default_prefix]
+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
+ [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+ --bindir=DIR user executables [EPREFIX/bin]
+ --sbindir=DIR system admin executables [EPREFIX/sbin]
+ --libexecdir=DIR program executables [EPREFIX/libexec]
+ --datadir=DIR read-only architecture-independent data [PREFIX/share]
+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --libdir=DIR object code libraries [EPREFIX/lib]
+ --includedir=DIR C header files [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc [/usr/include]
+ --infodir=DIR info documentation [PREFIX/info]
+ --mandir=DIR man documentation [PREFIX/man]
+_ACEOF
+
+ cat <<\_ACEOF
+
+Program names:
+ --program-prefix=PREFIX prepend PREFIX to installed program names
+ --program-suffix=SUFFIX append SUFFIX to installed program names
+ --program-transform-name=PROGRAM run sed PROGRAM on installed program names
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+
+ cat <<\_ACEOF
+
+Optional Features:
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors
+
+Some influential environment variables:
+ CXX C++ compiler command
+ CXXFLAGS C++ compiler flags
+ LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
+ nonstandard directory <lib dir>
+ CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have
+ headers in a nonstandard directory <include dir>
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+_ACEOF
+fi
+
+if test "$ac_init_help" = "recursive"; then
+ # If there are subdirs, report their specific --help.
+ ac_popdir=`pwd`
+ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+ test -d $ac_dir || continue
+ ac_builddir=.
+
+if test "$ac_dir" != .; then
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+ # A "../" for each directory in $ac_dir_suffix.
+ ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+ ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+ .) # No --srcdir option. We are building in place.
+ ac_srcdir=.
+ if test -z "$ac_top_builddir"; then
+ ac_top_srcdir=.
+ else
+ ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+ fi ;;
+ [\\/]* | ?:[\\/]* ) # Absolute path.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir ;;
+ *) # Relative path.
+ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+ case "$ac_dir" in
+ .) ac_abs_builddir=`pwd`;;
+ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+ *) ac_abs_builddir=`pwd`/"$ac_dir";;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+ case ${ac_top_builddir}. in
+ .) ac_abs_top_builddir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+ case $ac_srcdir in
+ .) ac_abs_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+ case $ac_top_srcdir in
+ .) ac_abs_top_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+ esac;;
+esac
+
+ cd $ac_dir
+ # Check for guested configure; otherwise get Cygnus style configure.
+ if test -f $ac_srcdir/configure.gnu; then
+ echo
+ $SHELL $ac_srcdir/configure.gnu --help=recursive
+ elif test -f $ac_srcdir/configure; then
+ echo
+ $SHELL $ac_srcdir/configure --help=recursive
+ elif test -f $ac_srcdir/configure.ac ||
+ test -f $ac_srcdir/configure.in; then
+ echo
+ $ac_configure --help
+ else
+ echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+ fi
+ cd $ac_popdir
+ done
+fi
+
+test -n "$ac_init_help" && exit 0
+if $ac_init_version; then
+ cat <<\_ACEOF
+
+Copyright (C) 2003 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+ exit 0
+fi
+exec 5>config.log
+cat >&5 <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by $as_me, which was
+generated by GNU Autoconf 2.59. Invocation command line was
+
+ $ $0 $@
+
+_ACEOF
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
+
+/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+hostinfo = `(hostinfo) 2>/dev/null || echo unknown`
+/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
+/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ echo "PATH: $as_dir"
+done
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_sep=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+ for ac_arg
+ do
+ case $ac_arg in
+ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ continue ;;
+ *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+ ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ case $ac_pass in
+ 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
+ 2)
+ ac_configure_args1="$ac_configure_args1 '$ac_arg'"
+ if test $ac_must_keep_next = true; then
+ ac_must_keep_next=false # Got value, back to normal.
+ else
+ case $ac_arg in
+ *=* | --config-cache | -C | -disable-* | --disable-* \
+ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+ | -with-* | --with-* | -without-* | --without-* | --x)
+ case "$ac_configure_args0 " in
+ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+ esac
+ ;;
+ -* ) ac_must_keep_next=true ;;
+ esac
+ fi
+ ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
+ # Get rid of the leading space.
+ ac_sep=" "
+ ;;
+ esac
+ done
+done
+$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
+$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log. We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Be sure not to use single quotes in there, as some shells,
+# such as our DU 5.0 friend, will then `close' the trap.
+trap 'exit_status=$?
+ # Save into config.log some information that might help in debugging.
+ {
+ echo
+
+ cat <<\_ASBOX
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+_ASBOX
+ echo
+ # The following way of writing the cache mishandles newlines in values,
+{
+ (set) 2>&1 |
+ case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
+ *ac_space=\ *)
+ sed -n \
+ "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
+ ;;
+ *)
+ sed -n \
+ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+ ;;
+ esac;
+}
+ echo
+
+ cat <<\_ASBOX
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+_ASBOX
+ echo
+ for ac_var in $ac_subst_vars
+ do
+ eval ac_val=$`echo $ac_var`
+ echo "$ac_var='"'"'$ac_val'"'"'"
+ done | sort
+ echo
+
+ if test -n "$ac_subst_files"; then
+ cat <<\_ASBOX
+## ------------- ##
+## Output files. ##
+## ------------- ##
+_ASBOX
+ echo
+ for ac_var in $ac_subst_files
+ do
+ eval ac_val=$`echo $ac_var`
+ echo "$ac_var='"'"'$ac_val'"'"'"
+ done | sort
+ echo
+ fi
+
+ if test -s confdefs.h; then
+ cat <<\_ASBOX
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+_ASBOX
+ echo
+ sed "/^$/d" confdefs.h | sort
+ echo
+ fi
+ test "$ac_signal" != 0 &&
+ echo "$as_me: caught signal $ac_signal"
+ echo "$as_me: exit $exit_status"
+ } >&5
+ rm -f core *.core &&
+ rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
+ exit $exit_status
+ ' 0
+for ac_signal in 1 2 13 15; do
+ trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -rf conftest* confdefs.h
+# AIX cpp loses on an empty file, so make sure it contains at least a newline.
+echo >confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer explicitly selected file to automatically selected ones.
+if test -z "$CONFIG_SITE"; then
+ if test "x$prefix" != xNONE; then
+ CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
+ else
+ CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
+ fi
+fi
+for ac_site_file in $CONFIG_SITE; do
+ if test -r "$ac_site_file"; then
+ { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+echo "$as_me: loading site script $ac_site_file" >&6;}
+ sed 's/^/| /' "$ac_site_file" >&5
+ . "$ac_site_file"
+ fi
+done
+
+if test -r "$cache_file"; then
+ # Some versions of bash will fail to source /dev/null (special
+ # files actually), so we avoid doing that.
+ if test -f "$cache_file"; then
+ { echo "$as_me:$LINENO: loading cache $cache_file" >&5
+echo "$as_me: loading cache $cache_file" >&6;}
+ case $cache_file in
+ [\\/]* | ?:[\\/]* ) . $cache_file;;
+ *) . ./$cache_file;;
+ esac
+ fi
+else
+ { echo "$as_me:$LINENO: creating cache $cache_file" >&5
+echo "$as_me: creating cache $cache_file" >&6;}
+ >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in `(set) 2>&1 |
+ sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
+ eval ac_old_set=\$ac_cv_env_${ac_var}_set
+ eval ac_new_set=\$ac_env_${ac_var}_set
+ eval ac_old_val="\$ac_cv_env_${ac_var}_value"
+ eval ac_new_val="\$ac_env_${ac_var}_value"
+ case $ac_old_set,$ac_new_set in
+ set,)
+ { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,set)
+ { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,);;
+ *)
+ if test "x$ac_old_val" != "x$ac_new_val"; then
+ { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
+echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ { echo "$as_me:$LINENO: former value: $ac_old_val" >&5
+echo "$as_me: former value: $ac_old_val" >&2;}
+ { echo "$as_me:$LINENO: current value: $ac_new_val" >&5
+echo "$as_me: current value: $ac_new_val" >&2;}
+ ac_cache_corrupted=:
+ fi;;
+ esac
+ # Pass precious variables to config.status.
+ if test "$ac_new_set" = set; then
+ case $ac_new_val in
+ *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+ ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *) ac_arg=$ac_var=$ac_new_val ;;
+ esac
+ case " $ac_configure_args " in
+ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
+ *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+ esac
+ fi
+done
+if $ac_cache_corrupted; then
+ { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
+echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+ { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+am__api_version="1.9"
+ac_aux_dir=
+for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
+ if test -f $ac_dir/install-sh; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install-sh -c"
+ break
+ elif test -f $ac_dir/install.sh; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+ elif test -f $ac_dir/shtool; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/shtool install -c"
+ break
+ fi
+done
+if test -z "$ac_aux_dir"; then
+ { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
+echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"
+ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
+
+# Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in
+ ./ | .// | /cC/* | \
+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
+ /usr/ucb/* ) ;;
+ *)
+ # OSF1 and SCO ODT 3.0 have their own names for install.
+ # Don't use installbsd from OSF since it installs stuff as root
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ :
+ elif test $ac_prog = install &&
+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # program-specific install script used by HP pwplus--don't use.
+ :
+ else
+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ break 3
+ fi
+ fi
+ done
+ done
+ ;;
+esac
+done
+
+
+fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+ # As a last resort, use the slow shell script. We don't cache a
+ # path for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the path is relative.
+ INSTALL=$ac_install_sh
+ fi
+fi
+echo "$as_me:$LINENO: result: $INSTALL" >&5
+echo "${ECHO_T}$INSTALL" >&6
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+echo "$as_me:$LINENO: checking whether build environment is sane" >&5
+echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+ if test "$*" = "X"; then
+ # -L didn't work.
+ set X `ls -t $srcdir/configure conftest.file`
+ fi
+ rm -f conftest.file
+ if test "$*" != "X $srcdir/configure conftest.file" \
+ && test "$*" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken
+alias in your environment" >&5
+echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken
+alias in your environment" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+
+ test "$2" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ { { echo "$as_me:$LINENO: error: newly created file is older than distributed files!
+Check your system clock" >&5
+echo "$as_me: error: newly created file is older than distributed files!
+Check your system clock" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+test "$program_prefix" != NONE &&
+ program_transform_name="s,^,$program_prefix,;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+ program_transform_name="s,\$,$program_suffix,;$program_transform_name"
+# Double any \ or $. echo might interpret backslashes.
+# By default was `s,x,x', remove it if useless.
+cat <<\_ACEOF >conftest.sed
+s/[\\$]/&&/g;s/;s,x,x,$//
+_ACEOF
+program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
+rm conftest.sed
+
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5
+echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+fi
+
+if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
+ # We used to keeping the `.' as first argument, in order to
+ # allow $(mkdir_p) to be used without argument. As in
+ # $(mkdir_p) $(somedir)
+ # where $(somedir) is conditionally defined. However this is wrong
+ # for two reasons:
+ # 1. if the package is installed by a user who cannot write `.'
+ # make install will fail,
+ # 2. the above comment should most certainly read
+ # $(mkdir_p) $(DESTDIR)$(somedir)
+ # so it does not work when $(somedir) is undefined and
+ # $(DESTDIR) is not.
+ # To support the latter case, we have to write
+ # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
+ # so the `.' trick is pointless.
+ mkdir_p='mkdir -p --'
+else
+ # On NextStep and OpenStep, the `mkdir' command does not
+ # recognize any option. It will interpret all options as
+ # directories to create, and then abort because `.' already
+ # exists.
+ for d in ./-p ./--version;
+ do
+ test -d $d && rmdir $d
+ done
+ # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
+ if test -f "$ac_aux_dir/mkinstalldirs"; then
+ mkdir_p='$(mkinstalldirs)'
+ else
+ mkdir_p='$(install_sh) -d'
+ fi
+fi
+
+for ac_prog in gawk mawk nawk awk
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_AWK+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$AWK"; then
+ ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AWK="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+ echo "$as_me:$LINENO: result: $AWK" >&5
+echo "${ECHO_T}$AWK" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$AWK" && break
+done
+
+echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6
+set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'`
+if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.make <<\_ACEOF
+all:
+ @echo 'ac_maketemp="$(MAKE)"'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=`
+if test -n "$ac_maketemp"; then
+ eval ac_cv_prog_make_${ac_make}_set=yes
+else
+ eval ac_cv_prog_make_${ac_make}_set=no
+fi
+rm -f conftest.make
+fi
+if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ SET_MAKE=
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+# test to see if srcdir already configured
+if test "`cd $srcdir && pwd`" != "`pwd`" &&
+ test -f $srcdir/config.status; then
+ { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
+echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE=tv
+ VERSION=0.5.1
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define VERSION "$VERSION"
+_ACEOF
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+install_sh=${install_sh-"$am_aux_dir/install-sh"}
+
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'. However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$STRIP"; then
+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+ echo "$as_me:$LINENO: result: $STRIP" >&5
+echo "${ECHO_T}$STRIP" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_STRIP"; then
+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+ echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+echo "${ECHO_T}$ac_ct_STRIP" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ STRIP=$ac_ct_STRIP
+else
+ STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
+
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+# Always define AMTAR for backward compatibility.
+
+AMTAR=${AMTAR-"${am_missing_run}tar"}
+
+am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+
+
+
+
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$CXX"; then
+ ac_cv_prog_CXX="$CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+ echo "$as_me:$LINENO: result: $CXX" >&5
+echo "${ECHO_T}$CXX" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$CXX" && break
+ done
+fi
+if test -z "$CXX"; then
+ ac_ct_CXX=$CXX
+ for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_CXX"; then
+ ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CXX="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+ echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
+echo "${ECHO_T}$ac_ct_CXX" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$ac_ct_CXX" && break
+done
+test -n "$ac_ct_CXX" || ac_ct_CXX="g++"
+
+ CXX=$ac_ct_CXX
+fi
+
+
+# Provide some information about the compiler.
+echo "$as_me:$LINENO:" \
+ "checking for C++ compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+ (eval $ac_compiler --version </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+ (eval $ac_compiler -v </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+ (eval $ac_compiler -V </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+echo "$as_me:$LINENO: checking for C++ compiler default output file name" >&5
+echo $ECHO_N "checking for C++ compiler default output file name... $ECHO_C" >&6
+ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5
+ (eval $ac_link_default) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ # Find the output, starting from the most likely. This scheme is
+# not robust to junk in `.', hence go to wildcards (a.*) only as a last
+# resort.
+
+# Be careful to initialize this variable, since it used to be cached.
+# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile.
+ac_cv_exeext=
+# b.out is created by i960 compilers.
+for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out
+do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj )
+ ;;
+ conftest.$ac_ext )
+ # This is the source file.
+ ;;
+ [ab].out )
+ # We found the default executable, but exeext='' is most
+ # certainly right.
+ break;;
+ *.* )
+ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ # FIXME: I believe we export ac_cv_exeext for Libtool,
+ # but it would be cool to find out if it's true. Does anybody
+ # maintain Libtool? --akim.
+ export ac_cv_exeext
+ break;;
+ * )
+ break;;
+ esac
+done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { echo "$as_me:$LINENO: error: C++ compiler cannot create executables
+See \`config.log' for more details." >&5
+echo "$as_me: error: C++ compiler cannot create executables
+See \`config.log' for more details." >&2;}
+ { (exit 77); exit 77; }; }
+fi
+
+ac_exeext=$ac_cv_exeext
+echo "$as_me:$LINENO: result: $ac_file" >&5
+echo "${ECHO_T}$ac_file" >&6
+
+# Check the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+echo "$as_me:$LINENO: checking whether the C++ compiler works" >&5
+echo $ECHO_N "checking whether the C++ compiler works... $ECHO_C" >&6
+# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
+# If not cross compiling, check that we can run a simple program.
+if test "$cross_compiling" != yes; then
+ if { ac_try='./$ac_file'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cross_compiling=no
+ else
+ if test "$cross_compiling" = maybe; then
+ cross_compiling=yes
+ else
+ { { echo "$as_me:$LINENO: error: cannot run C++ compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run C++ compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+ fi
+fi
+echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+rm -f a.out a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+# Check the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
+echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
+echo "$as_me:$LINENO: result: $cross_compiling" >&5
+echo "${ECHO_T}$cross_compiling" >&6
+
+echo "$as_me:$LINENO: checking for suffix of executables" >&5
+echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;;
+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ export ac_cv_exeext
+ break;;
+ * ) break;;
+ esac
+done
+else
+ { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest$ac_cv_exeext
+echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
+echo "${ECHO_T}$ac_cv_exeext" >&6
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+echo "$as_me:$LINENO: checking for suffix of object files" >&5
+echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6
+if test "${ac_cv_objext+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;;
+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+ break;;
+ esac
+done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
+echo "${ECHO_T}$ac_cv_objext" >&6
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6
+if test "${ac_cv_cxx_compiler_gnu+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_compiler_gnu=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_compiler_gnu=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6
+GXX=`test $ac_compiler_gnu = yes && echo yes`
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+CXXFLAGS="-g"
+echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
+echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_cxx_g+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_prog_cxx_g=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_prog_cxx_g=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
+echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6
+if test "$ac_test_CXXFLAGS" = set; then
+ CXXFLAGS=$ac_save_CXXFLAGS
+elif test $ac_cv_prog_cxx_g = yes; then
+ if test "$GXX" = yes; then
+ CXXFLAGS="-g -O2"
+ else
+ CXXFLAGS="-g"
+ fi
+else
+ if test "$GXX" = yes; then
+ CXXFLAGS="-O2"
+ else
+ CXXFLAGS=
+ fi
+fi
+for ac_declaration in \
+ '' \
+ 'extern "C" void std::exit (int) throw (); using std::exit;' \
+ 'extern "C" void std::exit (int); using std::exit;' \
+ 'extern "C" void exit (int) throw ();' \
+ 'extern "C" void exit (int);' \
+ 'void exit (int);'
+do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_declaration
+#include <stdlib.h>
+int
+main ()
+{
+exit (42);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+continue
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_declaration
+int
+main ()
+{
+exit (42);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+rm -f conftest*
+if test -n "$ac_declaration"; then
+ echo '#ifdef __cplusplus' >>confdefs.h
+ echo $ac_declaration >>confdefs.h
+ echo '#endif' >>confdefs.h
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+DEPDIR="${am__leading_dot}deps"
+
+ ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo done
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
+echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# We grep out `Entering directory' and `Leaving directory'
+# messages which can occur if `w' ends up in MAKEFLAGS.
+# In particular we don't look at `^make:' because GNU make might
+# be invoked under some other name (usually "gmake"), in which
+# case it prints its new name instead of `make'.
+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
+ am__include=include
+ am__quote=
+ _am_result=GNU
+fi
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ fi
+fi
+
+
+echo "$as_me:$LINENO: result: $_am_result" >&5
+echo "${ECHO_T}$_am_result" >&6
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then
+ enableval="$enable_dependency_tracking"
+
+fi;
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+fi
+
+
+if test "x$enable_dependency_tracking" != xno; then
+ AMDEP_TRUE=
+ AMDEP_FALSE='#'
+else
+ AMDEP_TRUE='#'
+ AMDEP_FALSE=
+fi
+
+
+
+
+depcc="$CXX" am_compiler_list=
+
+echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
+if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_CXX_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+ fi
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ case $depmode in
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ none) break ;;
+ esac
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this.
+ if depmode=$depmode \
+ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_CXX_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_CXX_dependencies_compiler_type=none
+fi
+
+fi
+echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5
+echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6
+CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
+
+
+
+if
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
+ am__fastdepCXX_TRUE=
+ am__fastdepCXX_FALSE='#'
+else
+ am__fastdepCXX_TRUE='#'
+ am__fastdepCXX_FALSE=
+fi
+
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+# Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in
+ ./ | .// | /cC/* | \
+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
+ /usr/ucb/* ) ;;
+ *)
+ # OSF1 and SCO ODT 3.0 have their own names for install.
+ # Don't use installbsd from OSF since it installs stuff as root
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ :
+ elif test $ac_prog = install &&
+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # program-specific install script used by HP pwplus--don't use.
+ :
+ else
+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ break 3
+ fi
+ fi
+ done
+ done
+ ;;
+esac
+done
+
+
+fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+ # As a last resort, use the slow shell script. We don't cache a
+ # path for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the path is relative.
+ INSTALL=$ac_install_sh
+ fi
+fi
+echo "$as_me:$LINENO: result: $INSTALL" >&5
+echo "${ECHO_T}$INSTALL" >&6
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+#AC_ARG_PROGRAM
+
+# We need ranlib to make the library, and we need to define make
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_RANLIB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$RANLIB"; then
+ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+ echo "$as_me:$LINENO: result: $RANLIB" >&5
+echo "${ECHO_T}$RANLIB" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+ ac_ct_RANLIB=$RANLIB
+ # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_RANLIB"; then
+ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_RANLIB="ranlib"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+ echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+echo "${ECHO_T}$ac_ct_RANLIB" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ RANLIB=$ac_ct_RANLIB
+else
+ RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6
+set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'`
+if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.make <<\_ACEOF
+all:
+ @echo 'ac_maketemp="$(MAKE)"'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=`
+if test -n "$ac_maketemp"; then
+ eval ac_cv_prog_make_${ac_make}_set=yes
+else
+ eval ac_cv_prog_make_${ac_make}_set=no
+fi
+rm -f conftest.make
+fi
+if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ SET_MAKE=
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+
+# Ensure that we set ENT (and set it to false). This flag affects
+# the Makefile for TreeLib
+
+
+if false; then
+ ENT_TRUE=
+ ENT_FALSE='#'
+else
+ ENT_TRUE='#'
+ ENT_FALSE=
+fi
+
+
+
+
+# Extract the first word of "wx-config", so it can be a program name with args.
+set dummy wx-config; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_WX_CONFIG+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $WX_CONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_WX_CONFIG="$WX_CONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_WX_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_path_WX_CONFIG" && ac_cv_path_WX_CONFIG="no"
+ ;;
+esac
+fi
+WX_CONFIG=$ac_cv_path_WX_CONFIG
+
+if test -n "$WX_CONFIG"; then
+ echo "$as_me:$LINENO: result: $WX_CONFIG" >&5
+echo "${ECHO_T}$WX_CONFIG" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+if [ "$WX_CONFIG" = "no" ] ; then
+ { { echo "$as_me:$LINENO: error: \"Could not find wx-config: is wxWindows installed?\"" >&5
+echo "$as_me: error: \"Could not find wx-config: is wxWindows installed?\"" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+CXXFLAGS="$CXXFLAGS -Wno-deprecated"
+
+echo "$as_me:$LINENO: checking wxWindows version" >&5
+echo $ECHO_N "checking wxWindows version... $ECHO_C" >&6
+wx_version=`$WX_CONFIG --version`
+echo "$as_me:$LINENO: result: $wx_version" >&5
+echo "${ECHO_T}$wx_version" >&6
+case "$wx_version" in
+ 2.2.*) { echo "$as_me:$LINENO: WARNING: wxWindows is older than 2.3., setting CXXFLAGS using --cflags" >&5
+echo "$as_me: WARNING: wxWindows is older than 2.3., setting CXXFLAGS using --cflags" >&2;}
+ CXXFLAGS="$CXXFLAGS `$WX_CONFIG --cflags` -DUSE_WXWINDOWS"
+ ;;
+ *) CXXFLAGS="$CXXFLAGS `$WX_CONFIG --cxxflags` -DUSE_WXWINDOWS"
+ ;;
+esac
+
+LIBS="$LIBS `$WX_CONFIG --libs`"
+
+# Do we have SVG support?
+# Set this to 0 when building an RPM on Linux,
+# otherwise test for existence of SVG library.
+# The reason for this is wxGTK RPMs from wxWidgets.org
+# do not have the required SVG library (which is a contribution)
+echo "$as_me:$LINENO: checking whether we will use SVG" >&5
+echo $ECHO_N "checking whether we will use SVG... $ECHO_C" >&6
+USE_SVG=1
+WX_SVG_LIB=
+if test "$USE_SVG" = 0 ; then
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+else
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+ case "$wx_version" in
+ 2.4.*) WX_SVG_LIB=`$WX_CONFIG --basename`_dcsvg-`echo ${wx_version} | sed -e "s:\.[0-9]\{1,\}$::"`
+ ;;
+ *) WX_SVG_LIB=`$WX_CONFIG --basename`_svg-`echo ${wx_version} | sed -e "s:\.[0-9]\{1,\}$::"`
+ ;;
+ esac
+
+
+
+as_ac_Lib=`echo "ac_cv_lib_$WX_SVG_LIB''_main" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for main in -l$WX_SVG_LIB" >&5
+echo $ECHO_N "checking for main in -l$WX_SVG_LIB... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Lib+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-l$WX_SVG_LIB $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+
+int
+main ()
+{
+main ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_Lib=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_Lib=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Lib'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Lib'}'`" >&6
+if test `eval echo '${'$as_ac_Lib'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_LIB$WX_SVG_LIB" | $as_tr_cpp` 1
+_ACEOF
+
+ LIBS="-l$WX_SVG_LIB $LIBS"
+
+else
+ { echo "$as_me:$LINENO: WARNING: \"library required for SVG support not found\"" >&5
+echo "$as_me: WARNING: \"library required for SVG support not found\"" >&2;}
+fi
+
+fi
+
+
+if test "$USE_SVG" = 1 ; then
+ CXXFLAGS="$CXXFLAGS -DUSE_SVG"
+ LIBS="$LIBS -l$WX_SVG_LIB"
+fi
+
+ ac_config_files="$ac_config_files Makefile ncl-2.0/Makefile ncl-2.0/src/Makefile TreeLib/Makefile tv.spec"
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems. If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, don't put newlines in cache variables' values.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+{
+ (set) 2>&1 |
+ case `(ac_space=' '; set | grep ac_space) 2>&1` in
+ *ac_space=\ *)
+ # `set' does not quote correctly, so add quotes (double-quote
+ # substitution turns \\\\ into \\, and sed turns \\ into \).
+ sed -n \
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+ ;;
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+ sed -n \
+ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+ ;;
+ esac;
+} |
+ sed '
+ t clear
+ : clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+ /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+ : end' >>confcache
+if diff $cache_file confcache >/dev/null 2>&1; then :; else
+ if test -w $cache_file; then
+ test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
+ cat confcache >$cache_file
+ else
+ echo "not updating unwritable cache $cache_file"
+ fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+ ac_vpsub='/^[ ]*VPATH[ ]*=/{
+s/:*\$(srcdir):*/:/;
+s/:*\${srcdir}:*/:/;
+s/:*@srcdir@:*/:/;
+s/^\([^=]*=[ ]*\):*/\1/;
+s/:*$//;
+s/^[^=]*=[ ]*$//;
+}'
+fi
+
+# Transform confdefs.h into DEFS.
+# Protect against shell expansion while executing Makefile rules.
+# Protect against Makefile macro expansion.
+#
+# If the first sed substitution is executed (which looks for macros that
+# take arguments), then we branch to the quote section. Otherwise,
+# look for a macro that doesn't take arguments.
+cat >confdef2opt.sed <<\_ACEOF
+t clear
+: clear
+s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g
+t quote
+s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g
+t quote
+d
+: quote
+s,[ `~#$^&*(){}\\|;'"<>?],\\&,g
+s,\[,\\&,g
+s,\],\\&,g
+s,\$,$$,g
+p
+_ACEOF
+# We use echo to avoid assuming a particular line-breaking character.
+# The extra dot is to prevent the shell from consuming trailing
+# line-breaks from the sub-command output. A line-break within
+# single-quotes doesn't work because, if this script is created in a
+# platform that uses two characters for line-breaks (e.g., DOS), tr
+# would break.
+ac_LF_and_DOT=`echo; echo .`
+DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'`
+rm -f confdef2opt.sed
+
+
+ac_libobjs=
+ac_ltlibobjs=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+ # 1. Remove the extension, and $U if already installed.
+ ac_i=`echo "$ac_i" |
+ sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
+ # 2. Add them.
+ ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
+ ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${ENT_TRUE}" && test -z "${ENT_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"ENT\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"ENT\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+: ${CONFIG_STATUS=./config.status}
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
+echo "$as_me: creating $CONFIG_STATUS" >&6;}
+cat >$CONFIG_STATUS <<_ACEOF
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+## --------------------- ##
+## M4sh Initialization. ##
+## --------------------- ##
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+ set -o posix
+fi
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ as_unset=unset
+else
+ as_unset=false
+fi
+
+
+# Work around bugs in pre-3.0 UWIN ksh.
+$as_unset ENV MAIL MAILPATH
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+ LC_TELEPHONE LC_TIME
+do
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+ $as_unset $as_var
+ fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)$' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+ /^X\/\(\/\/\)$/{ s//\1/; q; }
+ /^X\/\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+
+
+# PATH needs CR, and LINENO needs CR and PATH.
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+
+
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x$as_lineno_3" = "x$as_lineno_2" || {
+ # Find who we are. Look in the path if we contain no path at all
+ # relative or not.
+ case $0 in
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+
+ ;;
+ esac
+ # We did not find ourselves, most probably we were run as `sh COMMAND'
+ # in which case we are not to be found in the path.
+ if test "x$as_myself" = x; then
+ as_myself=$0
+ fi
+ if test ! -f "$as_myself"; then
+ { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
+echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+ case $CONFIG_SHELL in
+ '')
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for as_base in sh bash ksh sh5; do
+ case $as_dir in
+ /*)
+ if ("$as_dir/$as_base" -c '
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
+ $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+ $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+ CONFIG_SHELL=$as_dir/$as_base
+ export CONFIG_SHELL
+ exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+ fi;;
+ esac
+ done
+done
+;;
+ esac
+
+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+ # uniformly replaced by the line number. The first 'sed' inserts a
+ # line-number line before each line; the second 'sed' does the real
+ # work. The second script uses 'N' to pair each line-number line
+ # with the numbered line, and appends trailing '-' during
+ # substitution so that $LINENO is not a special case at line end.
+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+ # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
+ sed '=' <$as_myself |
+ sed '
+ N
+ s,$,-,
+ : loop
+ s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+ t loop
+ s,-$,,
+ s,^['$as_cr_digits']*\n,,
+ ' >$as_me.lineno &&
+ chmod +x $as_me.lineno ||
+ { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
+echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
+ { (exit 1); exit 1; }; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensible to this).
+ . ./$as_me.lineno
+ # Exit status is that of the last command.
+ exit
+}
+
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+ *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T=' ' ;;
+ *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+ *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+ # We could just check for DJGPP; but this test a) works b) is more generic
+ # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+ if test -f conf$$.exe; then
+ # Don't use ln at all; we don't have any links
+ as_ln_s='cp -p'
+ else
+ as_ln_s='ln -s'
+ fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+as_executable_p="test -f"
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS=" $as_nl"
+
+# CDPATH.
+$as_unset CDPATH
+
+exec 6>&1
+
+# Open the log real soon, to keep \$[0] and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling. Logging --version etc. is OK.
+exec 5>>config.log
+{
+ echo
+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+} >&5
+cat >&5 <<_CSEOF
+
+This file was extended by $as_me, which was
+generated by GNU Autoconf 2.59. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+ CONFIG_LINKS = $CONFIG_LINKS
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+_CSEOF
+echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
+echo >&5
+_ACEOF
+
+# Files that config.status was made for.
+if test -n "$ac_config_files"; then
+ echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_headers"; then
+ echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_links"; then
+ echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_commands"; then
+ echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTIONS] [FILE]...
+
+ -h, --help print this help, then exit
+ -V, --version print version number, then exit
+ -q, --quiet do not print progress messages
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+ --file=FILE[:TEMPLATE]
+ instantiate the configuration file FILE
+
+Configuration files:
+$config_files
+
+Configuration commands:
+$config_commands
+
+Report bugs to <bug-autoconf at gnu.org>."
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+ac_cs_version="\\
+config.status
+configured by $0, generated by GNU Autoconf 2.59,
+ with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
+
+Copyright (C) 2003 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+srcdir=$srcdir
+INSTALL="$INSTALL"
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+# If no file are specified by the user, then we need to provide default
+# value. By we need to know if files were specified by the user.
+ac_need_defaults=:
+while test $# != 0
+do
+ case $1 in
+ --*=*)
+ ac_option=`expr "x$1" : 'x\([^=]*\)='`
+ ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
+ ac_shift=:
+ ;;
+ -*)
+ ac_option=$1
+ ac_optarg=$2
+ ac_shift=shift
+ ;;
+ *) # This is not an option, so the user has probably given explicit
+ # arguments.
+ ac_option=$1
+ ac_need_defaults=false;;
+ esac
+
+ case $ac_option in
+ # Handling of the options.
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ ac_cs_recheck=: ;;
+ --version | --vers* | -V )
+ echo "$ac_cs_version"; exit 0 ;;
+ --he | --h)
+ # Conflict between --help and --header
+ { { echo "$as_me:$LINENO: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&2;}
+ { (exit 1); exit 1; }; };;
+ --help | --hel | -h )
+ echo "$ac_cs_usage"; exit 0 ;;
+ --debug | --d* | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ $ac_shift
+ CONFIG_FILES="$CONFIG_FILES $ac_optarg"
+ ac_need_defaults=false;;
+ --header | --heade | --head | --hea )
+ $ac_shift
+ CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+ ac_need_defaults=false;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+ -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&2;}
+ { (exit 1); exit 1; }; } ;;
+
+ *) ac_config_targets="$ac_config_targets $1" ;;
+
+ esac
+ shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+ exec 6>/dev/null
+ ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+if \$ac_cs_recheck; then
+ echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
+ exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+fi
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+#
+# INIT-COMMANDS section.
+#
+
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+_ACEOF
+
+
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+for ac_config_target in $ac_config_targets
+do
+ case "$ac_config_target" in
+ # Handling of arguments.
+ "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+ "ncl-2.0/Makefile" ) CONFIG_FILES="$CONFIG_FILES ncl-2.0/Makefile" ;;
+ "ncl-2.0/src/Makefile" ) CONFIG_FILES="$CONFIG_FILES ncl-2.0/src/Makefile" ;;
+ "TreeLib/Makefile" ) CONFIG_FILES="$CONFIG_FILES TreeLib/Makefile" ;;
+ "tv.spec" ) CONFIG_FILES="$CONFIG_FILES tv.spec" ;;
+ "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+ *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+ { (exit 1); exit 1; }; };;
+ esac
+done
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used. Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience. Make it in the build tree
+# simply because there is no reason to put it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Create a temporary directory, and hook for its removal unless debugging.
+$debug ||
+{
+ trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
+ trap '{ (exit 1); exit 1; }' 1 2 13 15
+}
+
+# Create a (secure) tmp directory for tmp files.
+
+{
+ tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
+ test -n "$tmp" && test -d "$tmp"
+} ||
+{
+ tmp=./confstat$$-$RANDOM
+ (umask 077 && mkdir $tmp)
+} ||
+{
+ echo "$me: cannot create a temporary directory in ." >&2
+ { (exit 1); exit 1; }
+}
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+
+#
+# CONFIG_FILES section.
+#
+
+# No need to generate the scripts if there are no CONFIG_FILES.
+# This happens for instance when ./config.status config.h
+if test -n "\$CONFIG_FILES"; then
+ # Protect against being on the right side of a sed subst in config.status.
+ sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
+ s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
+s, at SHELL@,$SHELL,;t t
+s, at PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
+s, at PACKAGE_NAME@,$PACKAGE_NAME,;t t
+s, at PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
+s, at PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
+s, at PACKAGE_STRING@,$PACKAGE_STRING,;t t
+s, at PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
+s, at exec_prefix@,$exec_prefix,;t t
+s, at prefix@,$prefix,;t t
+s, at program_transform_name@,$program_transform_name,;t t
+s, at bindir@,$bindir,;t t
+s, at sbindir@,$sbindir,;t t
+s, at libexecdir@,$libexecdir,;t t
+s, at datadir@,$datadir,;t t
+s, at sysconfdir@,$sysconfdir,;t t
+s, at sharedstatedir@,$sharedstatedir,;t t
+s, at localstatedir@,$localstatedir,;t t
+s, at libdir@,$libdir,;t t
+s, at includedir@,$includedir,;t t
+s, at oldincludedir@,$oldincludedir,;t t
+s, at infodir@,$infodir,;t t
+s, at mandir@,$mandir,;t t
+s, at build_alias@,$build_alias,;t t
+s, at host_alias@,$host_alias,;t t
+s, at target_alias@,$target_alias,;t t
+s, at DEFS@,$DEFS,;t t
+s, at ECHO_C@,$ECHO_C,;t t
+s, at ECHO_N@,$ECHO_N,;t t
+s, at ECHO_T@,$ECHO_T,;t t
+s, at LIBS@,$LIBS,;t t
+s, at INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
+s, at INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
+s, at INSTALL_DATA@,$INSTALL_DATA,;t t
+s, at CYGPATH_W@,$CYGPATH_W,;t t
+s, at PACKAGE@,$PACKAGE,;t t
+s, at VERSION@,$VERSION,;t t
+s, at ACLOCAL@,$ACLOCAL,;t t
+s, at AUTOCONF@,$AUTOCONF,;t t
+s, at AUTOMAKE@,$AUTOMAKE,;t t
+s, at AUTOHEADER@,$AUTOHEADER,;t t
+s, at MAKEINFO@,$MAKEINFO,;t t
+s, at install_sh@,$install_sh,;t t
+s, at STRIP@,$STRIP,;t t
+s, at ac_ct_STRIP@,$ac_ct_STRIP,;t t
+s, at INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t
+s, at mkdir_p@,$mkdir_p,;t t
+s, at AWK@,$AWK,;t t
+s, at SET_MAKE@,$SET_MAKE,;t t
+s, at am__leading_dot@,$am__leading_dot,;t t
+s, at AMTAR@,$AMTAR,;t t
+s, at am__tar@,$am__tar,;t t
+s, at am__untar@,$am__untar,;t t
+s, at CXX@,$CXX,;t t
+s, at CXXFLAGS@,$CXXFLAGS,;t t
+s, at LDFLAGS@,$LDFLAGS,;t t
+s, at CPPFLAGS@,$CPPFLAGS,;t t
+s, at ac_ct_CXX@,$ac_ct_CXX,;t t
+s, at EXEEXT@,$EXEEXT,;t t
+s, at OBJEXT@,$OBJEXT,;t t
+s, at DEPDIR@,$DEPDIR,;t t
+s, at am__include@,$am__include,;t t
+s, at am__quote@,$am__quote,;t t
+s, at AMDEP_TRUE@,$AMDEP_TRUE,;t t
+s, at AMDEP_FALSE@,$AMDEP_FALSE,;t t
+s, at AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t
+s, at CXXDEPMODE@,$CXXDEPMODE,;t t
+s, at am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t
+s, at am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t
+s, at RANLIB@,$RANLIB,;t t
+s, at ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
+s, at ENT_TRUE@,$ENT_TRUE,;t t
+s, at ENT_FALSE@,$ENT_FALSE,;t t
+s, at WX_CONFIG@,$WX_CONFIG,;t t
+s, at LIBOBJS@,$LIBOBJS,;t t
+s, at LTLIBOBJS@,$LTLIBOBJS,;t t
+CEOF
+
+_ACEOF
+
+ cat >>$CONFIG_STATUS <<\_ACEOF
+ # Split the substitutions into bite-sized pieces for seds with
+ # small command number limits, like on Digital OSF/1 and HP-UX.
+ ac_max_sed_lines=48
+ ac_sed_frag=1 # Number of current file.
+ ac_beg=1 # First line for current file.
+ ac_end=$ac_max_sed_lines # Line after last line for current file.
+ ac_more_lines=:
+ ac_sed_cmds=
+ while $ac_more_lines; do
+ if test $ac_beg -gt 1; then
+ sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+ else
+ sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+ fi
+ if test ! -s $tmp/subs.frag; then
+ ac_more_lines=false
+ else
+ # The purpose of the label and of the branching condition is to
+ # speed up the sed processing (if there are no `@' at all, there
+ # is no need to browse any of the substitutions).
+ # These are the two extra sed commands mentioned above.
+ (echo ':t
+ /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
+ if test -z "$ac_sed_cmds"; then
+ ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
+ else
+ ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
+ fi
+ ac_sed_frag=`expr $ac_sed_frag + 1`
+ ac_beg=$ac_end
+ ac_end=`expr $ac_end + $ac_max_sed_lines`
+ fi
+ done
+ if test -z "$ac_sed_cmds"; then
+ ac_sed_cmds=cat
+ fi
+fi # test -n "$CONFIG_FILES"
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+ case $ac_file in
+ - | *:- | *:-:* ) # input from stdin
+ cat >$tmp/stdin
+ ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ * ) ac_file_in=$ac_file.in ;;
+ esac
+
+ # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
+ ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ { if $as_mkdir_p; then
+ mkdir -p "$ac_dir"
+ else
+ as_dir="$ac_dir"
+ as_dirs=
+ while test ! -d "$as_dir"; do
+ as_dirs="$as_dir $as_dirs"
+ as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ done
+ test ! -n "$as_dirs" || mkdir $as_dirs
+ fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+ { (exit 1); exit 1; }; }; }
+
+ ac_builddir=.
+
+if test "$ac_dir" != .; then
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+ # A "../" for each directory in $ac_dir_suffix.
+ ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+ ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+ .) # No --srcdir option. We are building in place.
+ ac_srcdir=.
+ if test -z "$ac_top_builddir"; then
+ ac_top_srcdir=.
+ else
+ ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+ fi ;;
+ [\\/]* | ?:[\\/]* ) # Absolute path.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir ;;
+ *) # Relative path.
+ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+ case "$ac_dir" in
+ .) ac_abs_builddir=`pwd`;;
+ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+ *) ac_abs_builddir=`pwd`/"$ac_dir";;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+ case ${ac_top_builddir}. in
+ .) ac_abs_top_builddir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+ case $ac_srcdir in
+ .) ac_abs_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+ case $ac_top_srcdir in
+ .) ac_abs_top_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+ esac;;
+esac
+
+
+ case $INSTALL in
+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+ *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
+ esac
+
+ if test x"$ac_file" != x-; then
+ { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+ rm -f "$ac_file"
+ fi
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ if test x"$ac_file" = x-; then
+ configure_input=
+ else
+ configure_input="$ac_file. "
+ fi
+ configure_input=$configure_input"Generated from `echo $ac_file_in |
+ sed 's,.*/,,'` by configure."
+
+ # First look for the input files in the build tree, otherwise in the
+ # src tree.
+ ac_file_inputs=`IFS=:
+ for f in $ac_file_in; do
+ case $f in
+ -) echo $tmp/stdin ;;
+ [\\/$]*)
+ # Absolute (can't be DOS-style, as IFS=:)
+ test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ echo "$f";;
+ *) # Relative
+ if test -f "$f"; then
+ # Build tree
+ echo "$f"
+ elif test -f "$srcdir/$f"; then
+ # Source tree
+ echo "$srcdir/$f"
+ else
+ # /dev/null tree
+ { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ fi;;
+ esac
+ done` || { (exit 1); exit 1; }
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+ sed "$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s, at configure_input@,$configure_input,;t t
+s, at srcdir@,$ac_srcdir,;t t
+s, at abs_srcdir@,$ac_abs_srcdir,;t t
+s, at top_srcdir@,$ac_top_srcdir,;t t
+s, at abs_top_srcdir@,$ac_abs_top_srcdir,;t t
+s, at builddir@,$ac_builddir,;t t
+s, at abs_builddir@,$ac_abs_builddir,;t t
+s, at top_builddir@,$ac_top_builddir,;t t
+s, at abs_top_builddir@,$ac_abs_top_builddir,;t t
+s, at INSTALL@,$ac_INSTALL,;t t
+" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
+ rm -f $tmp/stdin
+ if test x"$ac_file" != x-; then
+ mv $tmp/out $ac_file
+ else
+ cat $tmp/out
+ rm -f $tmp/out
+ fi
+
+done
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+#
+# CONFIG_COMMANDS section.
+#
+for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
+ ac_dest=`echo "$ac_file" | sed 's,:.*,,'`
+ ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_dir=`(dirname "$ac_dest") 2>/dev/null ||
+$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_dest" : 'X\(//\)[^/]' \| \
+ X"$ac_dest" : 'X\(//\)$' \| \
+ X"$ac_dest" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$ac_dest" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ { if $as_mkdir_p; then
+ mkdir -p "$ac_dir"
+ else
+ as_dir="$ac_dir"
+ as_dirs=
+ while test ! -d "$as_dir"; do
+ as_dirs="$as_dir $as_dirs"
+ as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ done
+ test ! -n "$as_dirs" || mkdir $as_dirs
+ fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+ { (exit 1); exit 1; }; }; }
+
+ ac_builddir=.
+
+if test "$ac_dir" != .; then
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+ # A "../" for each directory in $ac_dir_suffix.
+ ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+ ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+ .) # No --srcdir option. We are building in place.
+ ac_srcdir=.
+ if test -z "$ac_top_builddir"; then
+ ac_top_srcdir=.
+ else
+ ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+ fi ;;
+ [\\/]* | ?:[\\/]* ) # Absolute path.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir ;;
+ *) # Relative path.
+ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+ case "$ac_dir" in
+ .) ac_abs_builddir=`pwd`;;
+ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+ *) ac_abs_builddir=`pwd`/"$ac_dir";;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+ case ${ac_top_builddir}. in
+ .) ac_abs_top_builddir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+ case $ac_srcdir in
+ .) ac_abs_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+ case $ac_top_srcdir in
+ .) ac_abs_top_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+ esac;;
+esac
+
+
+ { echo "$as_me:$LINENO: executing $ac_dest commands" >&5
+echo "$as_me: executing $ac_dest commands" >&6;}
+ case $ac_dest in
+ depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+ # We used to match only the files named `Makefile.in', but
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+ # So let's grep whole file.
+ if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
+ dirpart=`(dirname "$mf") 2>/dev/null ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$mf" : 'X\(//\)[^/]' \| \
+ X"$mf" : 'X\(//\)$' \| \
+ X"$mf" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$mf" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ else
+ continue
+ fi
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # When using ansi2knr, U may be empty or an underscore; expand it
+ U=`sed -n 's/^U = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+ fdir=`(dirname "$file") 2>/dev/null ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$file" : 'X\(//\)[^/]' \| \
+ X"$file" : 'X\(//\)$' \| \
+ X"$file" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ { if $as_mkdir_p; then
+ mkdir -p $dirpart/$fdir
+ else
+ as_dir=$dirpart/$fdir
+ as_dirs=
+ while test ! -d "$as_dir"; do
+ as_dirs="$as_dir $as_dirs"
+ as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ done
+ test ! -n "$as_dirs" || mkdir $as_dirs
+ fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5
+echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;}
+ { (exit 1); exit 1; }; }; }
+
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+done
+ ;;
+ esac
+done
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+{ (exit 0); exit 0; }
+_ACEOF
+chmod +x $CONFIG_STATUS
+ac_clean_files=$ac_clean_files_save
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded. So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status. When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+ ac_cs_success=:
+ ac_config_status_args=
+ test "$silent" = yes &&
+ ac_config_status_args="$ac_config_status_args --quiet"
+ exec 5>/dev/null
+ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+ exec 5>>config.log
+ # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+ # would make configure fail if this is the last instruction.
+ $ac_cs_success || { (exit 1); exit 1; }
+fi
+
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/configure
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/configure.in
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/configure.in 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/configure.in 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,83 @@
+# $Id: configure.in,v 1.19 2005/08/31 14:08:28 rdmp1c Exp $
+
+dnl Process this file with autoconf to produce a configure script
+
+AC_INIT(tview.cpp)
+AM_INIT_AUTOMAKE(tv, 0.5.1)
+AC_PROG_CXX
+AC_LANG_CPLUSPLUS
+AC_PROG_INSTALL
+#AC_ARG_PROGRAM
+
+# We need ranlib to make the library, and we need to define make
+AC_PROG_RANLIB
+AC_PROG_MAKE_SET
+
+# Ensure that we set ENT (and set it to false). This flag affects
+# the Makefile for TreeLib
+AM_CONDITIONAL(ENT, false)
+
+
+
+dnl We need wxWindows to be installed
+AC_PATH_PROG(WX_CONFIG, wx-config, no)
+if [[ "$WX_CONFIG" = "no" ]] ; then
+ AC_MSG_ERROR("Could not find wx-config: is wxWindows installed?")
+fi
+
+dnl Set compiler flagsthat don't relate to wxWindows
+CXXFLAGS="$CXXFLAGS -Wno-deprecated"
+
+dnl We use wx-config to set the compiler flags. In wxWindows 2.2.x
+dnl this was done using `wx-config --cflags` regardless of whether
+dnl the code is C or C++. Version 2.3.x uses --cxxflags for C++.
+dnl Because --cxxflags is not a valid option for wx-config prior
+dnl to 2.3.x, we need to check which version of wxWindows we are
+dnl using and set $CXXFLAGS accordingly.
+dnl
+AC_MSG_CHECKING(wxWindows version)
+wx_version=`$WX_CONFIG --version`
+AC_MSG_RESULT($wx_version)
+case "$wx_version" in
+ 2.2.*) AC_MSG_WARN([wxWindows is older than 2.3., setting CXXFLAGS using --cflags])
+ CXXFLAGS="$CXXFLAGS `$WX_CONFIG --cflags` -DUSE_WXWINDOWS"
+ ;;
+ *) CXXFLAGS="$CXXFLAGS `$WX_CONFIG --cxxflags` -DUSE_WXWINDOWS"
+ ;;
+esac
+
+LIBS="$LIBS `$WX_CONFIG --libs`"
+
+# Do we have SVG support?
+# Set this to 0 when building an RPM on Linux,
+# otherwise test for existence of SVG library.
+# The reason for this is wxGTK RPMs from wxWidgets.org
+# do not have the required SVG library (which is a contribution)
+AC_MSG_CHECKING(whether we will use SVG)
+USE_SVG=1
+WX_SVG_LIB=
+if test "$USE_SVG" = 0 ; then
+ AC_MSG_RESULT(no)
+else
+ AC_MSG_RESULT(yes)
+
+ dnl Andreas Pokorny provided this patch to test for the presence of SVG support.
+ dnl Note that the name of the contributed SVG library changed between 2.4 and 2.6 (sigh)
+ case "$wx_version" in
+ 2.4.*) WX_SVG_LIB=[`$WX_CONFIG --basename`_dcsvg-`echo ${wx_version} | sed -e "s:\.[0-9]\{1,\}$::"`]
+ ;;
+ *) WX_SVG_LIB=[`$WX_CONFIG --basename`_svg-`echo ${wx_version} | sed -e "s:\.[0-9]\{1,\}$::"`]
+ ;;
+ esac
+
+ AC_CHECK_LIB($WX_SVG_LIB, main, [], [AC_MSG_WARN("library required for SVG support not found")])
+fi
+
+
+if test "$USE_SVG" = 1 ; then
+ CXXFLAGS="$CXXFLAGS -DUSE_SVG"
+ LIBS="$LIBS -l$WX_SVG_LIB"
+fi
+
+AC_OUTPUT(Makefile ncl-2.0/Makefile ncl-2.0/src/Makefile TreeLib/Makefile tv.spec)
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/configure.in
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/depcomp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/depcomp 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/depcomp 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,522 @@
+#! /bin/sh
+# depcomp - compile a program generating dependencies as side-effects
+
+scriptversion=2004-05-31.23
+
+# Copyright (C) 1999, 2000, 2003, 2004 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Originally written by Alexandre Oliva <oliva at dcc.unicamp.br>.
+
+case $1 in
+ '')
+ echo "$0: No command. Try \`$0 --help' for more information." 1>&2
+ exit 1;
+ ;;
+ -h | --h*)
+ cat <<\EOF
+Usage: depcomp [--help] [--version] PROGRAM [ARGS]
+
+Run PROGRAMS ARGS to compile a file, generating dependencies
+as side-effects.
+
+Environment variables:
+ depmode Dependency tracking mode.
+ source Source file read by `PROGRAMS ARGS'.
+ object Object file output by `PROGRAMS ARGS'.
+ DEPDIR directory where to store dependencies.
+ depfile Dependency file to output.
+ tmpdepfile Temporary file to use when outputing dependencies.
+ libtool Whether libtool is used (yes/no).
+
+Report bugs to <bug-automake at gnu.org>.
+EOF
+ exit 0
+ ;;
+ -v | --v*)
+ echo "depcomp $scriptversion"
+ exit 0
+ ;;
+esac
+
+if test -z "$depmode" || test -z "$source" || test -z "$object"; then
+ echo "depcomp: Variables source, object and depmode must be set" 1>&2
+ exit 1
+fi
+
+# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
+depfile=${depfile-`echo "$object" |
+ sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
+
+rm -f "$tmpdepfile"
+
+# Some modes work just like other modes, but use different flags. We
+# parameterize here, but still list the modes in the big case below,
+# to make depend.m4 easier to write. Note that we *cannot* use a case
+# here, because this file can only contain one case statement.
+if test "$depmode" = hp; then
+ # HP compiler uses -M and no extra arg.
+ gccflag=-M
+ depmode=gcc
+fi
+
+if test "$depmode" = dashXmstdout; then
+ # This is just like dashmstdout with a different argument.
+ dashmflag=-xM
+ depmode=dashmstdout
+fi
+
+case "$depmode" in
+gcc3)
+## gcc 3 implements dependency tracking that does exactly what
+## we want. Yay! Note: for some reason libtool 1.4 doesn't like
+## it if -MD -MP comes after the -MF stuff. Hmm.
+ "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ mv "$tmpdepfile" "$depfile"
+ ;;
+
+gcc)
+## There are various ways to get dependency output from gcc. Here's
+## why we pick this rather obscure method:
+## - Don't want to use -MD because we'd like the dependencies to end
+## up in a subdir. Having to rename by hand is ugly.
+## (We might end up doing this anyway to support other compilers.)
+## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
+## -MM, not -M (despite what the docs say).
+## - Using -M directly means running the compiler twice (even worse
+## than renaming).
+ if test -z "$gccflag"; then
+ gccflag=-MD,
+ fi
+ "$@" -Wp,"$gccflag$tmpdepfile"
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
+## The second -e expression handles DOS-style file names with drive letters.
+ sed -e 's/^[^:]*: / /' \
+ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
+## This next piece of magic avoids the `deleted header file' problem.
+## The problem is that when a header file which appears in a .P file
+## is deleted, the dependency causes make to die (because there is
+## typically no way to rebuild the header). We avoid this by adding
+## dummy dependencies for each header file. Too bad gcc doesn't do
+## this for us directly.
+ tr ' ' '
+' < "$tmpdepfile" |
+## Some versions of gcc put a space before the `:'. On the theory
+## that the space means something, we add a space to the output as
+## well.
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly. Breaking it into two sed invocations is a workaround.
+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+hp)
+ # This case exists only to let depend.m4 do its work. It works by
+ # looking at the text of this script. This case will never be run,
+ # since it is checked for above.
+ exit 1
+ ;;
+
+sgi)
+ if test "$libtool" = yes; then
+ "$@" "-Wp,-MDupdate,$tmpdepfile"
+ else
+ "$@" -MDupdate "$tmpdepfile"
+ fi
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+
+ if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
+ echo "$object : \\" > "$depfile"
+
+ # Clip off the initial element (the dependent). Don't try to be
+ # clever and replace this with sed code, as IRIX sed won't handle
+ # lines with more than a fixed number of characters (4096 in
+ # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
+ # the IRIX cc adds comments like `#:fec' to the end of the
+ # dependency line.
+ tr ' ' '
+' < "$tmpdepfile" \
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
+ tr '
+' ' ' >> $depfile
+ echo >> $depfile
+
+ # The second pass generates a dummy entry for each header file.
+ tr ' ' '
+' < "$tmpdepfile" \
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+ >> $depfile
+ else
+ # The sourcefile does not contain any dependencies, so just
+ # store a dummy comment line, to avoid errors with the Makefile
+ # "include basename.Plo" scheme.
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile"
+ ;;
+
+aix)
+ # The C for AIX Compiler uses -M and outputs the dependencies
+ # in a .u file. In older versions, this file always lives in the
+ # current directory. Also, the AIX compiler puts `$object:' at the
+ # start of each line; $object doesn't have directory information.
+ # Version 6 uses the directory in both cases.
+ stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
+ tmpdepfile="$stripped.u"
+ if test "$libtool" = yes; then
+ "$@" -Wc,-M
+ else
+ "$@" -M
+ fi
+ stat=$?
+
+ if test -f "$tmpdepfile"; then :
+ else
+ stripped=`echo "$stripped" | sed 's,^.*/,,'`
+ tmpdepfile="$stripped.u"
+ fi
+
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+
+ if test -f "$tmpdepfile"; then
+ outname="$stripped.o"
+ # Each line is of the form `foo.o: dependent.h'.
+ # Do two passes, one to just change these to
+ # `$object: dependent.h' and one to simply `dependent.h:'.
+ sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
+ sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
+ else
+ # The sourcefile does not contain any dependencies, so just
+ # store a dummy comment line, to avoid errors with the Makefile
+ # "include basename.Plo" scheme.
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile"
+ ;;
+
+icc)
+ # Intel's C compiler understands `-MD -MF file'. However on
+ # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
+ # ICC 7.0 will fill foo.d with something like
+ # foo.o: sub/foo.c
+ # foo.o: sub/foo.h
+ # which is wrong. We want:
+ # sub/foo.o: sub/foo.c
+ # sub/foo.o: sub/foo.h
+ # sub/foo.c:
+ # sub/foo.h:
+ # ICC 7.1 will output
+ # foo.o: sub/foo.c sub/foo.h
+ # and will wrap long lines using \ :
+ # foo.o: sub/foo.c ... \
+ # sub/foo.h ... \
+ # ...
+
+ "$@" -MD -MF "$tmpdepfile"
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+ # Each line is of the form `foo.o: dependent.h',
+ # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
+ # Do two passes, one to just change these to
+ # `$object: dependent.h' and one to simply `dependent.h:'.
+ sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
+ # Some versions of the HPUX 10.20 sed can't process this invocation
+ # correctly. Breaking it into two sed invocations is a workaround.
+ sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
+ sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+tru64)
+ # The Tru64 compiler uses -MD to generate dependencies as a side
+ # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
+ # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+ # dependencies in `foo.d' instead, so we check for that too.
+ # Subdirectories are respected.
+ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+ test "x$dir" = "x$object" && dir=
+ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+
+ if test "$libtool" = yes; then
+ # Dependencies are output in .lo.d with libtool 1.4.
+ # With libtool 1.5 they are output both in $dir.libs/$base.o.d
+ # and in $dir.libs/$base.o.d and $dir$base.o.d. We process the
+ # latter, because the former will be cleaned when $dir.libs is
+ # erased.
+ tmpdepfile1="$dir.libs/$base.lo.d"
+ tmpdepfile2="$dir$base.o.d"
+ tmpdepfile3="$dir.libs/$base.d"
+ "$@" -Wc,-MD
+ else
+ tmpdepfile1="$dir$base.o.d"
+ tmpdepfile2="$dir$base.d"
+ tmpdepfile3="$dir$base.d"
+ "$@" -MD
+ fi
+
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+ exit $stat
+ fi
+
+ if test -f "$tmpdepfile1"; then
+ tmpdepfile="$tmpdepfile1"
+ elif test -f "$tmpdepfile2"; then
+ tmpdepfile="$tmpdepfile2"
+ else
+ tmpdepfile="$tmpdepfile3"
+ fi
+ if test -f "$tmpdepfile"; then
+ sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+ # That's a tab and a space in the [].
+ sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+ else
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile"
+ ;;
+
+#nosideeffect)
+ # This comment above is used by automake to tell side-effect
+ # dependency tracking mechanisms from slower ones.
+
+dashmstdout)
+ # Important note: in order to support this mode, a compiler *must*
+ # always write the preprocessed file to stdout, regardless of -o.
+ "$@" || exit $?
+
+ # Remove the call to Libtool.
+ if test "$libtool" = yes; then
+ while test $1 != '--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+
+ # Remove `-o $object'.
+ IFS=" "
+ for arg
+ do
+ case $arg in
+ -o)
+ shift
+ ;;
+ $object)
+ shift
+ ;;
+ *)
+ set fnord "$@" "$arg"
+ shift # fnord
+ shift # $arg
+ ;;
+ esac
+ done
+
+ test -z "$dashmflag" && dashmflag=-M
+ # Require at least two characters before searching for `:'
+ # in the target name. This is to cope with DOS-style filenames:
+ # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
+ "$@" $dashmflag |
+ sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
+ rm -f "$depfile"
+ cat < "$tmpdepfile" > "$depfile"
+ tr ' ' '
+' < "$tmpdepfile" | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly. Breaking it into two sed invocations is a workaround.
+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+dashXmstdout)
+ # This case only exists to satisfy depend.m4. It is never actually
+ # run, as this mode is specially recognized in the preamble.
+ exit 1
+ ;;
+
+makedepend)
+ "$@" || exit $?
+ # Remove any Libtool call
+ if test "$libtool" = yes; then
+ while test $1 != '--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+ # X makedepend
+ shift
+ cleared=no
+ for arg in "$@"; do
+ case $cleared in
+ no)
+ set ""; shift
+ cleared=yes ;;
+ esac
+ case "$arg" in
+ -D*|-I*)
+ set fnord "$@" "$arg"; shift ;;
+ # Strip any option that makedepend may not understand. Remove
+ # the object too, otherwise makedepend will parse it as a source file.
+ -*|$object)
+ ;;
+ *)
+ set fnord "$@" "$arg"; shift ;;
+ esac
+ done
+ obj_suffix="`echo $object | sed 's/^.*\././'`"
+ touch "$tmpdepfile"
+ ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
+ rm -f "$depfile"
+ cat < "$tmpdepfile" > "$depfile"
+ sed '1,2d' "$tmpdepfile" | tr ' ' '
+' | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly. Breaking it into two sed invocations is a workaround.
+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile" "$tmpdepfile".bak
+ ;;
+
+cpp)
+ # Important note: in order to support this mode, a compiler *must*
+ # always write the preprocessed file to stdout.
+ "$@" || exit $?
+
+ # Remove the call to Libtool.
+ if test "$libtool" = yes; then
+ while test $1 != '--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+
+ # Remove `-o $object'.
+ IFS=" "
+ for arg
+ do
+ case $arg in
+ -o)
+ shift
+ ;;
+ $object)
+ shift
+ ;;
+ *)
+ set fnord "$@" "$arg"
+ shift # fnord
+ shift # $arg
+ ;;
+ esac
+ done
+
+ "$@" -E |
+ sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
+ sed '$ s: \\$::' > "$tmpdepfile"
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ cat < "$tmpdepfile" >> "$depfile"
+ sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+msvisualcpp)
+ # Important note: in order to support this mode, a compiler *must*
+ # always write the preprocessed file to stdout, regardless of -o,
+ # because we must use -o when running libtool.
+ "$@" || exit $?
+ IFS=" "
+ for arg
+ do
+ case "$arg" in
+ "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
+ set fnord "$@"
+ shift
+ shift
+ ;;
+ *)
+ set fnord "$@" "$arg"
+ shift
+ shift
+ ;;
+ esac
+ done
+ "$@" -E |
+ sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
+ echo " " >> "$depfile"
+ . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+none)
+ exec "$@"
+ ;;
+
+*)
+ echo "Unknown depmode $depmode" 1>&2
+ exit 1
+ ;;
+esac
+
+exit 0
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
Property changes on: trunk/packages/treeviewx/branches/upstream/current/depcomp
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/install-sh
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/install-sh 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/install-sh 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,322 @@
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2004-09-10.20
+
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# `make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch. It can only install one file at a time, a restriction
+# shared with many OS's install programs.
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit="${DOITPROG-}"
+
+# put in absolute paths if you don't have them in your path; or use env. vars.
+
+mvprog="${MVPROG-mv}"
+cpprog="${CPPROG-cp}"
+chmodprog="${CHMODPROG-chmod}"
+chownprog="${CHOWNPROG-chown}"
+chgrpprog="${CHGRPPROG-chgrp}"
+stripprog="${STRIPPROG-strip}"
+rmprog="${RMPROG-rm}"
+mkdirprog="${MKDIRPROG-mkdir}"
+
+chmodcmd="$chmodprog 0755"
+chowncmd=
+chgrpcmd=
+stripcmd=
+rmcmd="$rmprog -f"
+mvcmd="$mvprog"
+src=
+dst=
+dir_arg=
+dstarg=
+no_target_directory=
+
+usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+ or: $0 [OPTION]... SRCFILES... DIRECTORY
+ or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+ or: $0 [OPTION]... -d DIRECTORIES...
+
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
+
+Options:
+-c (ignored)
+-d create directories instead of installing files.
+-g GROUP $chgrpprog installed files to GROUP.
+-m MODE $chmodprog installed files to MODE.
+-o USER $chownprog installed files to USER.
+-s $stripprog installed files.
+-t DIRECTORY install into DIRECTORY.
+-T report an error if DSTFILE is a directory.
+--help display this help and exit.
+--version display version info and exit.
+
+Environment variables override the default commands:
+ CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
+"
+
+while test -n "$1"; do
+ case $1 in
+ -c) shift
+ continue;;
+
+ -d) dir_arg=true
+ shift
+ continue;;
+
+ -g) chgrpcmd="$chgrpprog $2"
+ shift
+ shift
+ continue;;
+
+ --help) echo "$usage"; exit 0;;
+
+ -m) chmodcmd="$chmodprog $2"
+ shift
+ shift
+ continue;;
+
+ -o) chowncmd="$chownprog $2"
+ shift
+ shift
+ continue;;
+
+ -s) stripcmd=$stripprog
+ shift
+ continue;;
+
+ -t) dstarg=$2
+ shift
+ shift
+ continue;;
+
+ -T) no_target_directory=true
+ shift
+ continue;;
+
+ --version) echo "$0 $scriptversion"; exit 0;;
+
+ *) # When -d is used, all remaining arguments are directories to create.
+ # When -t is used, the destination is already specified.
+ test -n "$dir_arg$dstarg" && break
+ # Otherwise, the last argument is the destination. Remove it from $@.
+ for arg
+ do
+ if test -n "$dstarg"; then
+ # $@ is not empty: it contains at least $arg.
+ set fnord "$@" "$dstarg"
+ shift # fnord
+ fi
+ shift # arg
+ dstarg=$arg
+ done
+ break;;
+ esac
+done
+
+if test -z "$1"; then
+ if test -z "$dir_arg"; then
+ echo "$0: no input file specified." >&2
+ exit 1
+ fi
+ # It's OK to call `install-sh -d' without argument.
+ # This can happen when creating conditional directories.
+ exit 0
+fi
+
+for src
+do
+ # Protect names starting with `-'.
+ case $src in
+ -*) src=./$src ;;
+ esac
+
+ if test -n "$dir_arg"; then
+ dst=$src
+ src=
+
+ if test -d "$dst"; then
+ mkdircmd=:
+ chmodcmd=
+ else
+ mkdircmd=$mkdirprog
+ fi
+ else
+ # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
+ # might cause directories to be created, which would be especially bad
+ # if $src (and thus $dsttmp) contains '*'.
+ if test ! -f "$src" && test ! -d "$src"; then
+ echo "$0: $src does not exist." >&2
+ exit 1
+ fi
+
+ if test -z "$dstarg"; then
+ echo "$0: no destination specified." >&2
+ exit 1
+ fi
+
+ dst=$dstarg
+ # Protect names starting with `-'.
+ case $dst in
+ -*) dst=./$dst ;;
+ esac
+
+ # If destination is a directory, append the input filename; won't work
+ # if double slashes aren't ignored.
+ if test -d "$dst"; then
+ if test -n "$no_target_directory"; then
+ echo "$0: $dstarg: Is a directory" >&2
+ exit 1
+ fi
+ dst=$dst/`basename "$src"`
+ fi
+ fi
+
+ # This sed command emulates the dirname command.
+ dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
+
+ # Make sure that the destination directory exists.
+
+ # Skip lots of stat calls in the usual case.
+ if test ! -d "$dstdir"; then
+ defaultIFS='
+ '
+ IFS="${IFS-$defaultIFS}"
+
+ oIFS=$IFS
+ # Some sh's can't handle IFS=/ for some reason.
+ IFS='%'
+ set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
+ IFS=$oIFS
+
+ pathcomp=
+
+ while test $# -ne 0 ; do
+ pathcomp=$pathcomp$1
+ shift
+ if test ! -d "$pathcomp"; then
+ $mkdirprog "$pathcomp"
+ # mkdir can fail with a `File exist' error in case several
+ # install-sh are creating the directory concurrently. This
+ # is OK.
+ test -d "$pathcomp" || exit
+ fi
+ pathcomp=$pathcomp/
+ done
+ fi
+
+ if test -n "$dir_arg"; then
+ $doit $mkdircmd "$dst" \
+ && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \
+ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \
+ && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \
+ && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
+
+ else
+ dstfile=`basename "$dst"`
+
+ # Make a couple of temp file names in the proper directory.
+ dsttmp=$dstdir/_inst.$$_
+ rmtmp=$dstdir/_rm.$$_
+
+ # Trap to clean up those temp files at exit.
+ trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
+ trap '(exit $?); exit' 1 2 13 15
+
+ # Copy the file name to the temp name.
+ $doit $cpprog "$src" "$dsttmp" &&
+
+ # and set any options; do chmod last to preserve setuid bits.
+ #
+ # If any of these fail, we abort the whole thing. If we want to
+ # ignore errors from any of these, just make sure not to ignore
+ # errors from the above "$doit $cpprog $src $dsttmp" command.
+ #
+ { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
+ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
+ && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
+ && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } &&
+
+ # Now rename the file to the real destination.
+ { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \
+ || {
+ # The rename failed, perhaps because mv can't rename something else
+ # to itself, or perhaps because mv is so ancient that it does not
+ # support -f.
+
+ # Now remove or move aside any old file at destination location.
+ # We try this two ways since rm can't unlink itself on some
+ # systems and the destination file might be busy for other
+ # reasons. In this case, the final cleanup might fail but the new
+ # file should still install successfully.
+ {
+ if test -f "$dstdir/$dstfile"; then
+ $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \
+ || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
+ || {
+ echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
+ (exit 1); exit
+ }
+ else
+ :
+ fi
+ } &&
+
+ # Now rename the file to the real destination.
+ $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
+ }
+ }
+ fi || { (exit 1); exit; }
+done
+
+# The final little trick to "correctly" pass the exit status to the exit trap.
+{
+ (exit 0); exit
+}
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
Property changes on: trunk/packages/treeviewx/branches/upstream/current/install-sh
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/missing
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/missing 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/missing 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,353 @@
+#! /bin/sh
+# Common stub for a few missing GNU programs while installing.
+
+scriptversion=2004-09-07.08
+
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004
+# Free Software Foundation, Inc.
+# Originally by Fran,cois Pinard <pinard at iro.umontreal.ca>, 1996.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+if test $# -eq 0; then
+ echo 1>&2 "Try \`$0 --help' for more information"
+ exit 1
+fi
+
+run=:
+
+# In the cases where this matters, `missing' is being run in the
+# srcdir already.
+if test -f configure.ac; then
+ configure_ac=configure.ac
+else
+ configure_ac=configure.in
+fi
+
+msg="missing on your system"
+
+case "$1" in
+--run)
+ # Try to run requested program, and just exit if it succeeds.
+ run=
+ shift
+ "$@" && exit 0
+ # Exit code 63 means version mismatch. This often happens
+ # when the user try to use an ancient version of a tool on
+ # a file that requires a minimum version. In this case we
+ # we should proceed has if the program had been absent, or
+ # if --run hadn't been passed.
+ if test $? = 63; then
+ run=:
+ msg="probably too old"
+ fi
+ ;;
+
+ -h|--h|--he|--hel|--help)
+ echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
+error status if there is no known handling for PROGRAM.
+
+Options:
+ -h, --help display this help and exit
+ -v, --version output version information and exit
+ --run try to run the given command, and emulate it if it fails
+
+Supported PROGRAM values:
+ aclocal touch file \`aclocal.m4'
+ autoconf touch file \`configure'
+ autoheader touch file \`config.h.in'
+ automake touch all \`Makefile.in' files
+ bison create \`y.tab.[ch]', if possible, from existing .[ch]
+ flex create \`lex.yy.c', if possible, from existing .c
+ help2man touch the output file
+ lex create \`lex.yy.c', if possible, from existing .c
+ makeinfo touch the output file
+ tar try tar, gnutar, gtar, then tar without non-portable flags
+ yacc create \`y.tab.[ch]', if possible, from existing .[ch]
+
+Send bug reports to <bug-automake at gnu.org>."
+ exit 0
+ ;;
+
+ -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+ echo "missing $scriptversion (GNU Automake)"
+ exit 0
+ ;;
+
+ -*)
+ echo 1>&2 "$0: Unknown \`$1' option"
+ echo 1>&2 "Try \`$0 --help' for more information"
+ exit 1
+ ;;
+
+esac
+
+# Now exit if we have it, but it failed. Also exit now if we
+# don't have it and --version was passed (most likely to detect
+# the program).
+case "$1" in
+ lex|yacc)
+ # Not GNU programs, they don't have --version.
+ ;;
+
+ tar)
+ if test -n "$run"; then
+ echo 1>&2 "ERROR: \`tar' requires --run"
+ exit 1
+ elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+ exit 1
+ fi
+ ;;
+
+ *)
+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+ # We have it, but it failed.
+ exit 1
+ elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+ # Could not run --version or --help. This is probably someone
+ # running `$TOOL --version' or `$TOOL --help' to check whether
+ # $TOOL exists and not knowing $TOOL uses missing.
+ exit 1
+ fi
+ ;;
+esac
+
+# If it does not exist, or fails to run (possibly an outdated version),
+# try to emulate it.
+case "$1" in
+ aclocal*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`acinclude.m4' or \`${configure_ac}'. You might want
+ to install the \`Automake' and \`Perl' packages. Grab them from
+ any GNU archive site."
+ touch aclocal.m4
+ ;;
+
+ autoconf)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`${configure_ac}'. You might want to install the
+ \`Autoconf' and \`GNU m4' packages. Grab them from any GNU
+ archive site."
+ touch configure
+ ;;
+
+ autoheader)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`acconfig.h' or \`${configure_ac}'. You might want
+ to install the \`Autoconf' and \`GNU m4' packages. Grab them
+ from any GNU archive site."
+ files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
+ test -z "$files" && files="config.h"
+ touch_files=
+ for f in $files; do
+ case "$f" in
+ *:*) touch_files="$touch_files "`echo "$f" |
+ sed -e 's/^[^:]*://' -e 's/:.*//'`;;
+ *) touch_files="$touch_files $f.in";;
+ esac
+ done
+ touch $touch_files
+ ;;
+
+ automake*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
+ You might want to install the \`Automake' and \`Perl' packages.
+ Grab them from any GNU archive site."
+ find . -type f -name Makefile.am -print |
+ sed 's/\.am$/.in/' |
+ while read f; do touch "$f"; done
+ ;;
+
+ autom4te)
+ echo 1>&2 "\
+WARNING: \`$1' is needed, but is $msg.
+ You might have modified some files without having the
+ proper tools for further handling them.
+ You can get \`$1' as part of \`Autoconf' from any GNU
+ archive site."
+
+ file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
+ test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
+ if test -f "$file"; then
+ touch $file
+ else
+ test -z "$file" || exec >$file
+ echo "#! /bin/sh"
+ echo "# Created by GNU Automake missing as a replacement of"
+ echo "# $ $@"
+ echo "exit 0"
+ chmod +x $file
+ exit 1
+ fi
+ ;;
+
+ bison|yacc)
+ echo 1>&2 "\
+WARNING: \`$1' $msg. You should only need it if
+ you modified a \`.y' file. You may need the \`Bison' package
+ in order for those modifications to take effect. You can get
+ \`Bison' from any GNU archive site."
+ rm -f y.tab.c y.tab.h
+ if [ $# -ne 1 ]; then
+ eval LASTARG="\${$#}"
+ case "$LASTARG" in
+ *.y)
+ SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
+ if [ -f "$SRCFILE" ]; then
+ cp "$SRCFILE" y.tab.c
+ fi
+ SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
+ if [ -f "$SRCFILE" ]; then
+ cp "$SRCFILE" y.tab.h
+ fi
+ ;;
+ esac
+ fi
+ if [ ! -f y.tab.h ]; then
+ echo >y.tab.h
+ fi
+ if [ ! -f y.tab.c ]; then
+ echo 'main() { return 0; }' >y.tab.c
+ fi
+ ;;
+
+ lex|flex)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified a \`.l' file. You may need the \`Flex' package
+ in order for those modifications to take effect. You can get
+ \`Flex' from any GNU archive site."
+ rm -f lex.yy.c
+ if [ $# -ne 1 ]; then
+ eval LASTARG="\${$#}"
+ case "$LASTARG" in
+ *.l)
+ SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
+ if [ -f "$SRCFILE" ]; then
+ cp "$SRCFILE" lex.yy.c
+ fi
+ ;;
+ esac
+ fi
+ if [ ! -f lex.yy.c ]; then
+ echo 'main() { return 0; }' >lex.yy.c
+ fi
+ ;;
+
+ help2man)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified a dependency of a manual page. You may need the
+ \`Help2man' package in order for those modifications to take
+ effect. You can get \`Help2man' from any GNU archive site."
+
+ file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
+ if test -z "$file"; then
+ file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
+ fi
+ if [ -f "$file" ]; then
+ touch $file
+ else
+ test -z "$file" || exec >$file
+ echo ".ab help2man is required to generate this page"
+ exit 1
+ fi
+ ;;
+
+ makeinfo)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified a \`.texi' or \`.texinfo' file, or any other file
+ indirectly affecting the aspect of the manual. The spurious
+ call might also be the consequence of using a buggy \`make' (AIX,
+ DU, IRIX). You might want to install the \`Texinfo' package or
+ the \`GNU make' package. Grab either from any GNU archive site."
+ file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
+ if test -z "$file"; then
+ file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+ file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
+ fi
+ touch $file
+ ;;
+
+ tar)
+ shift
+
+ # We have already tried tar in the generic part.
+ # Look for gnutar/gtar before invocation to avoid ugly error
+ # messages.
+ if (gnutar --version > /dev/null 2>&1); then
+ gnutar "$@" && exit 0
+ fi
+ if (gtar --version > /dev/null 2>&1); then
+ gtar "$@" && exit 0
+ fi
+ firstarg="$1"
+ if shift; then
+ case "$firstarg" in
+ *o*)
+ firstarg=`echo "$firstarg" | sed s/o//`
+ tar "$firstarg" "$@" && exit 0
+ ;;
+ esac
+ case "$firstarg" in
+ *h*)
+ firstarg=`echo "$firstarg" | sed s/h//`
+ tar "$firstarg" "$@" && exit 0
+ ;;
+ esac
+ fi
+
+ echo 1>&2 "\
+WARNING: I can't seem to be able to run \`tar' with the given arguments.
+ You may want to install GNU tar or Free paxutils, or check the
+ command line arguments."
+ exit 1
+ ;;
+
+ *)
+ echo 1>&2 "\
+WARNING: \`$1' is needed, and is $msg.
+ You might have modified some files without having the
+ proper tools for further handling them. Check the \`README' file,
+ it often tells you about the needed prerequisites for installing
+ this package. You may also peek at any GNU archive site, in case
+ some other package would contain this missing \`$1' program."
+ exit 1
+ ;;
+esac
+
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
Property changes on: trunk/packages/treeviewx/branches/upstream/current/missing
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/Makefile.am
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/Makefile.am 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/Makefile.am 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,16 @@
+# $Id: Makefile.am,v 1.2 2005/03/29 11:38:25 rdmp1c Exp $
+
+# The root makefile. We simply list the subdirectory with the source (src has its
+# own makefile, and we list any additional files (in their subdirectories) that
+# we want to distribute.
+
+SUBDIRS = src
+
+# Include base HTML documentation, and the example NEXUS files in the distribution
+EXTRA_DIST = html/NexusClassLibrary.html \
+ data/LPCombined.nex data/P95rbcl.nex data/distances.nex \
+ data/GPCombined.nex data/LPMolecular.nex data/W98morph.nex data/kenrickcrane.nex \
+ data/GPMolecular.nex data/LPMorph.nex data/characters.nex \
+ data/GPMorph.nex data/P95morph.nex data/characters.ref.txt
+
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/Makefile.am
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/Makefile.in
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/Makefile.in 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/Makefile.in 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,433 @@
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+# $Id: Makefile.am,v 1.2 2005/03/29 11:38:25 rdmp1c Exp $
+
+# The root makefile. We simply list the subdirectory with the source (src has its
+# own makefile, and we list any additional files (in their subdirectories) that
+# we want to distribute.
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+subdir = ncl-2.0
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-exec-recursive install-info-recursive \
+ install-recursive installcheck-recursive installdirs-recursive \
+ pdf-recursive ps-recursive uninstall-info-recursive \
+ uninstall-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+ENT_FALSE = @ENT_FALSE@
+ENT_TRUE = @ENT_TRUE@
+EXEEXT = @EXEEXT@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+WX_CONFIG = @WX_CONFIG@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build_alias = @build_alias@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host_alias = @host_alias@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+SUBDIRS = src
+
+# Include base HTML documentation, and the example NEXUS files in the distribution
+EXTRA_DIST = html/NexusClassLibrary.html \
+ data/LPCombined.nex data/P95rbcl.nex data/distances.nex \
+ data/GPCombined.nex data/LPMolecular.nex data/W98morph.nex data/kenrickcrane.nex \
+ data/GPMolecular.nex data/LPMorph.nex data/characters.nex \
+ data/GPMorph.nex data/P95morph.nex data/characters.ref.txt
+
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ncl-2.0/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu ncl-2.0/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+uninstall-info-am:
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ $(mkdir_p) $(distdir)/data $(distdir)/html
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(mkdir_p) "$(distdir)/$$subdir" \
+ || exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
+ clean clean-generic clean-recursive ctags ctags-recursive \
+ distclean distclean-generic distclean-recursive distclean-tags \
+ distdir dvi dvi-am html html-am info info-am install \
+ install-am install-data install-data-am install-exec \
+ install-exec-am install-info install-info-am install-man \
+ install-strip installcheck installcheck-am installdirs \
+ installdirs-am maintainer-clean maintainer-clean-generic \
+ maintainer-clean-recursive mostlyclean mostlyclean-generic \
+ mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \
+ uninstall uninstall-am uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/GPCombined.nex
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/GPCombined.nex 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/GPCombined.nex 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,2940 @@
+#NEXUS
+[MacClade 3.01 registered to Brent D. Mishler, Duke University]
+
+[**The final matrix GP-COMB used in the Ann .Mo. Bot. 81: 451-483 (Mishler et al. 1994)
+ green plant synthesis paper.]
+
+BEGIN DATA;
+DIMENSIONS NTAX=59 NCHAR=2289;
+FORMAT DATATYPE=DNA MISSING=? GAP=- INTERLEAVE SYMBOLS="0 1 2 3 4 5 6 7";
+OPTIONS MSTAXA=UNCERTAIN ;
+
+MATRIX
+
+[ 10 20 30 40 50]
+[ . . . . .]
+
+Glycine_max TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTGTAAGTATGAACTAA [50]
+Oryza_sativa TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTGCAAGTATGAACTAA [50]
+Zamia_pumila TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTGTCAGTATGAACTAT [50]
+Psilotum_n ?????????????????????????????????????????????????? [50]
+Equisetum_ar ?????????????????????????????????????????????????? [50]
+Atrichum_angus ?????????????????????????????????????????????????? [50]
+Notothylas_bre ?????????????????????????????????????????????????? [50]
+Phaeoceros_lae ?????????????????????????????????????????????????? [50]
+Porella_pi ?????????????????????????????????????????????????? [50]
+Conocephal_con ?????????????????????????????????????????????????? [50]
+Asterella_tene ?????????????????????????????????????????????????? [50]
+Riccia ?????????????????????????????????????????????????? [50]
+Klebsormid_fla ?????????????????????????????????????????????????? [50]
+Coleochaet_nit ?????????????????????????????????????????????????? [50]
+Fissidens_taxi ?????????????????????????????????????????????????? [50]
+Plagiomnium_cu ????????????????????????????????TGTGTAAGTATAAACT-C [49]
+Micromonas_pus ?????????????????????????????????????????????????? [50]
+Mantoniel_squa ?????????????????????????????????????????????????? [50]
+Nephroselm_pyr ?????????????????????????????????????????????????? [50]
+Pedinomonas_mi ?????????????????????????????????????????????????? [50]
+Tetraselm_cart ?????????????????????????????????????????????????? [50]
+Enteromorpha ?????????????????????????????????????????????????? [50]
+Ulva_fasci ?????????????????????????????????????????????????? [50]
+Ulothrix_zo ?????????????????????????????????????????????????? [50]
+Cympolia_barba ?????????????????????????????????????????????????? [50]
+Batophora_oers ?????????????????????????????????????????????????? [50]
+Codium_decort ?????????????????????????????????????????????????? [50]
+Cladophoro ?????????????????????????????????????????????????? [50]
+Blastophysa_rh ?????????????????????????????????????????????????? [50]
+Trentepohlia ?????????????????????????????????????????????????? [50]
+Cephaleuro_par ???????C-TGTCTCAAAGA-TAAGCCATGCATGTCTAAGTATAA---GC [45]
+Characium_vac TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGC [50]
+Dunaliella_par TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGC [50]
+Chlamyd_reinha TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGC [50]
+Volvox_carteri TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGC [50]
+Chlorococc_min TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGC [50]
+Draparn_plum ?????????????????????????????????????????????????? [50]
+Uronema_belk ?????????????????????????????????????????????????? [50]
+Chlamydom_moew ?????????????????????????????????????????????????? [50]
+Stephanos_pl ?????????????????????????????????????????????????? [50]
+Carteria_rad ?????????????????????????????????????????????????? [50]
+Gonium_pecto ?????????????????????????????????????????????????? [50]
+Chlorella_kess TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGC [50]
+Chlorella_vulg TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGC [50]
+Protothec_wic TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAA--TGG [48]
+Chlorella_prot TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTGAGTATAACCTG- [49]
+Chlorella_min TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGC [50]
+Neochloris_aqu TCATATGCTTGTCTCAAAGATTAACCCATGCATGTCTAAGTATAAACTGC [50]
+Neochloris_vig TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGC [50]
+Pediastrum_dup TCATATGCTTGTCTCAGAGATTAAGCCATGCATGTCTAAGTATAAACTGC [50]
+Scenedesm_obl TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGC [50]
+Characium_hin TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGC [50]
+Chlorella_fus TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGC [50]
+Ankistrodesmus TCATATGCTTRTCTCAAAGATTAAGCCATGCATGTC?AAGTATAAACTGC [50]
+Pseudotreb_gig ?????????????????????????????????????????????????? [50]
+Pleurastr_terr ?????????????????????????????????????????????????? [50]
+Characium_per TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGC [50]
+Parietochl_pse TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGC [50]
+Friedmannia_is TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGC [50]
+
+[ 60 70 80 90 100]
+[ . . . . .]
+
+Glycine_max TTCA-GACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTGTT [99]
+Oryza_sativa TTC-GAACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTGTT [99]
+Zamia_pumila TTT-GGACGGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTCTT [99]
+Psilotum_n ?????????????????GCGAATGGCTCATTAAATCAGTTATAGTTTCTT [100]
+Equisetum_ar ?????????????????GCGAATGGCTGATTAAATCAGTTATAGTTTCTT [100]
+Atrichum_angus ????????????????????????????ATTAAATCAGTTATAGTTTCTT [100]
+Notothylas_bre ?????????????????????????????????????????????????? [100]
+Phaeoceros_lae ?????????????????????????????????????????????????? [100]
+Porella_pi ????????????????????????????????????????????????TT [100]
+Conocephal_con ?????????????????????????????????????????????????? [100]
+Asterella_tene ???????CTGTGAAACTGCGAATGGCTC-TTAAATC-GTTATAGTTTCTT [98]
+Riccia ?????????????????????????????????????????????????? [100]
+Klebsormid_fla ?????????????????????????????????????????????????? [100]
+Coleochaet_nit ??????????????????????TGGCTCATTAAATCAGTTATAGTTT-TT [99]
+Fissidens_taxi ?????????????????????????????????????GTTATAGTTTCTT [100]
+Plagiomnium_cu TTTTGTACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTCTT [99]
+Micromonas_pus ????????????????????????????????????????AT-GTTTCTT [99]
+Mantoniel_squa ?????????????????????????????????????????????????? [100]
+Nephroselm_pyr ?????????????????????????????????????????????????? [100]
+Pedinomonas_mi ?????????????????????????????????????GAAATA-TTTCTT [99]
+Tetraselm_cart ????????????????????????????????????????ATAGTTTATT [100]
+Enteromorpha ????????????????????????????ATTAAATCAGTTAGAGTTTATT [100]
+Ulva_fasci ????????????????????????????????????????AGAGTTTATT [100]
+Ulothrix_zo ?????????????????????????????????????????????????? [100]
+Cympolia_barba ?????????????????????????????????????????????????? [100]
+Batophora_oers ?????????????????????????????????????????????????? [100]
+Codium_decort ?????????????????????????????????????????????????? [100]
+Cladophoro ?????????????????????????????????????????????????? [100]
+Blastophysa_rh ?????????????????????????????????????????????????? [100]
+Trentepohlia ???????CTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTC-ATT [99]
+Cephaleuro_par TTTA-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTT-ATT [93]
+Characium_vac TT-A-TACGGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATT [98]
+Dunaliella_par TT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATT [98]
+Chlamyd_reinha TT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATT [98]
+Volvox_carteri TT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATT [98]
+Chlorococc_min TT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATT [98]
+Draparn_plum ?????????????????????????????????????????????????? [100]
+Uronema_belk ???????????????????????????????????????????GTTTATT [100]
+Chlamydom_moew ????????????????????????????ATTAAATCAGTTATAATTTATT [100]
+Stephanos_pl ?????????????????GCGAATGGCTCATTAAATCAGTTATAGTTTATT [100]
+Carteria_rad ?????????????????GCGAATGGCTCATTAAATCAGTTATAGTTTATT [100]
+Gonium_pecto ????????????????????????GCTCATTAAATCAG-TATAGTTTATT [99]
+Chlorella_kess TTTA-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATT [99]
+Chlorella_vulg TTTA-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATT [99]
+Protothec_wic TT-A-TACTATGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATT [96]
+Chlorella_prot TTTACTACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATT [99]
+Chlorella_min TTTA-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATT [99]
+Neochloris_aqu TT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATT [98]
+Neochloris_vig TT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATT [98]
+Pediastrum_dup TT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATT [98]
+Scenedesm_obl TT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATT [98]
+Characium_hin TT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATT [98]
+Chlorella_fus TT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATT [98]
+Ankistrodesmus TT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATT [98]
+Pseudotreb_gig ????????????????????????????????????????????????TT [100]
+Pleurastr_terr ??????????????????????????????????TCAGTTATAGTTTATT [100]
+Characium_per TT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATT [98]
+Parietochl_pse TT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATT [98]
+Friedmannia_is TTTA-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATT [99]
+
+[ 110 120 130 140 150]
+[ . . . . .]
+
+Glycine_max TGATGGTATC-TACTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAA [144]
+Oryza_sativa TGATGGTACG-TGCTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAA [144]
+Zamia_pumila TGATGGTACTCTGCTACAC---GGATAACCGTAGTAA-TTCTAGAGCTAA [145]
+Psilotum_n TGATGGTACCTTGCTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAA [146]
+Equisetum_ar TGATGGTACCTTGCTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAA [146]
+Atrichum_angus T-ATGGTACCTTGCTACTC---GGATAACCGTAGTA--TTCTA-AGCTAA [143]
+Notothylas_bre ????????CCTT-CTACTC---GGATAAC-G-AGTAA-TTCTA-AGCTAA [142]
+Phaeoceros_lae ?GATGGTACCTTGCTACTC---GGATAACC--AGTAA-TTCTA-AGCTAA [143]
+Porella_pi TGATGGTACCTTGCTACTC---GGATAACC-TAGTAA-TTCTAGAGCTAA [145]
+Conocephal_con ?????????????????????????????????????????????????? [150]
+Asterella_tene TGATGGTGCCTT-CTACTC---GGATAACCG-AGTAA-TTCTAGAGCTAA [142]
+Riccia ?????????TTTACTACTC---GGATAACC-TAGTAA-TTCTAG-GCTAA [144]
+Klebsormid_fla ????????CCTTA-TACTC---GGATAACCGTAGTAAGTTCTA-AGCTAA [145]
+Coleochaet_nit TGATGGTAGCC---TACTC---GGATAACC-T-GTAA-TTCTAGAGCTAT [140]
+Fissidens_taxi T-ATGGTACCTTGCTACTC---GGATAACCGTAGTAA-TTCTA-AGCTAA [144]
+Plagiomnium_cu TGATGGTACCTTGCTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAA [145]
+Micromonas_pus TGGTGGTGTTTTACTACAT---GGATAACCGTAGTAA-TTCT-G-GCTAA [143]
+Mantoniel_squa ???????????????????????????????????AA-TACATGCG-T-- [146]
+Nephroselm_pyr ????????CCTT-CT-CTC---GGAT?ACCGTAGTA---TCT-G-GCTAA [140]
+Pedinomonas_mi TGATGGTGAAAATCTACAC---GGATACCCGT-GTA--TTCT-GAGCTAA [142]
+Tetraselm_cart TGATGGTACC-TACTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAA [145]
+Enteromorpha TGATGGTACCACACTACTC---GGATAACCGTAGTAA-AGCTACAGCTAA [146]
+Ulva_fasci TGATGGTACCACACTACTC----GATAACCGTAGTAA-AGCTAC-GCTAA [144]
+Ulothrix_zo ???????????????????????GATAACCGTAGTAA-TTCTAGA-CTAA [148]
+Cympolia_barba ?????????????????????????????????????????????????? [150]
+Batophora_oers ?????????????????????????????????????????????????? [150]
+Codium_decort ?????????????????????????????????????????????????? [150]
+Cladophoro ?????????????????????????????????????????????????? [150]
+Blastophysa_rh ??????TAC-TTGCTACTT---GGATAACC--AGTAA-TTCAGAAGCTAA [143]
+Trentepohlia T-ATGGTGT-TT-CTACTC---GGATAACC--AGGAA-AACTAGAGCTAA [140]
+Cephaleuro_par TGATGGTG-TTTGTTACTC---GGATAACCGTAGGA----CTAGAGCTAA [135]
+Characium_vac TGATGGTACC-TCTTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAA [143]
+Dunaliella_par TGATGGTACCTT--TACTC---GGATAACCGTAGTAA-TTCTAGAGCTAA [142]
+Chlamyd_reinha TGATGGTACC-TACTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAA [143]
+Volvox_carteri TGATGGTACC-TACTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAA [143]
+Chlorococc_min TGATGGTACC-TATTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAA [143]
+Draparn_plum ????????????CTTACTC---GGATAACTGTAGTAA-TTCTA-AGCTAA [145]
+Uronema_belk TGATGATACCTT--TCCTC----GATAACCGT-GTA--TTCTAGAGCTAA [141]
+Chlamydom_moew TGATGGTAC-TTACTACTT---GGATAACCGTAGTAA-TTCTAGAGCTAA [145]
+Stephanos_pl TGATGGTACCTT--TACTC---GGATAACCGTAGTAA-TTCTAG-GCTAA [143]
+Carteria_rad TGATGGTAC-TTGGTACTC---GGATAACTGTACCAA-AG-TAGAGCTAA [144]
+Gonium_pecto TGATGGTACC-TACTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAA [144]
+Chlorella_kess TGATGGTACCTTACTAC-C---GGATAACCGTAGTAA-TTCTAGAGCTAA [144]
+Chlorella_vulg TGATGGTAC-TTACTACTC---GGATACCCGTAGTAA-ATCTAGAGCTAA [144]
+Protothec_wic TGATGGTACC-TACTACTC---GGATACCCGTAGTAA-TTCTAGAGCTAA [141]
+Chlorella_prot TGATGGTACC-TGCTACTG---GGATACCCGTAGTAA-TTCTAGAGCTAA [144]
+Chlorella_min TGATGGTACC-TACTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAA [144]
+Neochloris_aqu TGATGGTACC-TCCTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAA [143]
+Neochloris_vig TGATGGTACC-TCCTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAA [143]
+Pediastrum_dup TGATGGTACCTT-CTACTC---GGATACCCGTAGTAA-TTCTAGAGCTAA [143]
+Scenedesm_obl TGGTGGTACCTTACTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAA [144]
+Characium_hin TGATGGTACCTT-CTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAA [143]
+Chlorella_fus TGGTGGTACCTTACTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAA [144]
+Ankistrodesmus TGATGGTACC--TCTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAA [142]
+Pseudotreb_gig TGATGGTGCCTTACT-CTC---GGATAACCGTAGTAA-TTCTAGAGCTAA [145]
+Pleurastr_terr TGATGGTACACTACTACTC---GGATAACCGTAGTAA-TTCTAGGGCTAA [146]
+Characium_per TGATGGTACC-TACTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAA [143]
+Parietochl_pse TGATGGTACC-TACTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAA [143]
+Friedmannia_is TGATGGTACC--CTTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAA [143]
+
+[ 160 170 180 190 200]
+[ . . . . .]
+
+Glycine_max TACGTGCAACAAACCCCGACTTC--TGGAAGGGATGCATTTATTAGATAA [192]
+Oryza_sativa TACGTGCAACAAACCCCGACTTCC-GGG-AGGGGCGCATTTATTAGATAA [192]
+Zamia_pumila TACGTGCACCAAATCCCGACTTTT-TG-AAGGGACGCATCTATTAGATAA [193]
+Psilotum_n TACGTGCACCAACTCCCGACTTC--CGG-AGGGACGCATTTATTAGATAA [193]
+Equisetum_ar TACGTGCACCAACTCCCGACTTC--TGG--GGGA-GCATTTATTAGATAA [191]
+Atrichum_angus TACGTGCACAAACTCCCGACCTC--TGGAAGGG-CG-TTTTATTAGATAA [189]
+Notothylas_bre -ACGTGCAACAACTCCCGACTC---TGGAAGG-AG--ATTTATTAGATAA [185]
+Phaeoceros_lae T-CGTGCAACAACTCCCGGCTTT--TGG-AGGG-TGT-TTT-TTAG-TAA [185]
+Porella_pi TACGTGCACCAACTCCCGACTTC--TGGAAGGG-CGTATTTATTAGATAA [192]
+Conocephal_con ?ACGTGCACC-AGGCTCGAC----?TGGAAGGGG----TTTTTTAGATAA [191]
+Asterella_tene TACGTGCACCAACGCCCGACTTT-CCGGAAGGG--TGTTTTATTAGATAA [189]
+Riccia TACGTGCACCAACGCCCGACTTCG-CGGAAGGGCTGTATTTATTGGATAA [193]
+Klebsormid_fla TACGTGCACCAAATCCCGACTTC--TGGAAG?ACGTGATTTATTAGATAA [193]
+Coleochaet_nit ACCGTGC-CC--ATCC-GACTTC--TGGAAGG--GGTATTTGTTAGATAA [182]
+Fissidens_taxi TACGTGCACAAACTCC-GACTCG-?TGGA-GGGACG-ATTTATTAGATAA [190]
+Plagiomnium_cu TACGTGCACAAAATCCCGACTGG---G?AAGGGA??GATTTATTGGATAA [192]
+Micromonas_pus TACATGC-GTAAATCCCGACTTC---GGAAGGGACGTATTTATTAGAT-A [188]
+Mantoniel_squa -----------AATCCCGAC-TC---GG--GGG--GT-TTTATTAGAT-- [174]
+Nephroselm_pyr TACGTGC-GCAACACCCGACTTC---GGAAGGGTTGT-TATATTAGATAA [185]
+Pedinomonas_mi TACGT-C-GTAA---CTCCATT----GG-AGG-T----TTT-TT-G-TCC [174]
+Tetraselm_cart TACGTGC-GTAAATCCCGACTTC--TGGAAGGGACGTATTTATTAGATTT [192]
+Enteromorpha TACGTGC-GTAACTCCCGACYC---CG-AAGGGACGT-TTTATTAGATTC [190]
+Ulva_fasci TACGTGC-GTAACTCCCGACTTA--CG-AAGGGACG-ATTTATTAGATTC [189]
+Ulothrix_zo TACGTGT-GTAAATCCCGACT?A--CG-AAGGGACGTATTTATTA?ATCC [194]
+Cympolia_barba ?????????????????????????????????????????????????? [200]
+Batophora_oers ?????????????????????????????????????????????????? [200]
+Codium_decort ?????????????????????????????????????????????????? [200]
+Cladophoro ?????????????????????????????????????????????????? [200]
+Blastophysa_rh TACAT-C-GCGGATCCCAGACTTC-TGGAAGGGACGTATTTATTAGATAA [190]
+Trentepohlia TACGTGC-GTAAATCCCGACCTCC---GAAGGGACGTATTTATTAGATAA [186]
+Cephaleuro_par TACGTGC-GTAAATCCCGA--TC---GGAAGGGA-G-ATTTATTAGATAA [177]
+Characium_vac TACGTGC-GTAAATCCCGACTTA--TGGAAGGGACGTATTTATTAGATAA [190]
+Dunaliella_par TACGTGC-GTAAATCCCGACTTC--TGGAAGGGACGTATTTATTAGATAA [189]
+Chlamyd_reinha TACGTGC-GCACAACCCGACTTC--TGGAAGGGTCGTATTTATTAGATAA [190]
+Volvox_carteri TACGTGC-GCACAACCCGACTTC--TGGAAGGGTCGTATTTATTAGATAA [190]
+Chlorococc_min TACGTGC-GTAAATCCCGACTTC--TGGAAGGGACGTATTTATTAGATAA [190]
+Draparn_plum TACGTGCTTCAAGTCCCAACTTC--TGGAAGGG---TGGTTATAAGA-GT [189]
+Uronema_belk TACGTGC-GCAACTCCCGACTTC--TGG--GGGA-GTGTT-ATTAGATCT [184]
+Chlamydom_moew TACATGCGGATAATCCCAACTTC--TGGAAGGGACGTATTTATTAGATAA [193]
+Stephanos_pl TACGTGC-GTAAATCCCGACTTC--TGGAAGGGA-GTATTTATTAGATAA [189]
+Carteria_rad TACGTGC-GTAAATCCCGACTCA--C-GAAGGGACGTATTTATTAGATAA [190]
+Gonium_pecto TACGTGC-GCACAACCCGACTTC--TGGAAGGGTCGTATTTATTAGATAA [191]
+Chlorella_kess TACGTGC-GTAAATCCCGACTTC--TGGAAGGGACGTATTTATTAGATTT [191]
+Chlorella_vulg TACGTGC-GTAAATCCCGACTTC--TGGAAGGGACGTATTTATTAGATAA [191]
+Protothec_wic TACGTGC-GCACATCCCGACTTC--TGGAAGGGACGTATTTATTAGATCC [188]
+Chlorella_prot TACCTGC-GCAAACCCCGACTTTGGTGGAAGGGGTGTATTTATTAGATCC [193]
+Chlorella_min TACGTGC-GCAAATCCCGACTTC--TGGAAGGGACGTATTTATTAGATAT [191]
+Neochloris_aqu TACGTGC-GTAAAACCCGACTTC--TGGAAGGGTCGTATATATTAGATAA [190]
+Neochloris_vig TACGTGC-GTAAAACCCGACTTC--TGGAAGGGTCGTATATATTAGATAA [190]
+Pediastrum_dup TACGTGC-GTAAAACCCGACTTC--TGGAAGGGTCGTATATATTAGATAA [190]
+Scenedesm_obl TACGTGC-GTAAATCCCGACTTC--TGGAAGGGACGTATATATTAGATAA [191]
+Characium_hin TACGTGC-GTAAAACCCGACTTC--TGGAAGGGTCGTATATATTAGATAA [190]
+Chlorella_fus TACGTGC-GTAAATCCCGACTTC--TGGAAGGGACGTATATATTAGATAA [191]
+Ankistrodesmus TACGTGC-GCAAATCCCGACTTC--TGGAAGGGACGTATTTATTAGATAA [189]
+Pseudotreb_gig TACGTGC-GCACATCCCGACTCC----GAAGGGA-G--TTTATTAGATAA [187]
+Pleurastr_terr TACGTGC-GTAAATCCCGACTTC--TGGAAGGGACGTATTTATTAGATAA [193]
+Characium_per TACGTGC-GTAAATCCCGACTTC--TGGAAGGGACGTATTTATTAGATAA [190]
+Parietochl_pse TACGTGC-GCACATCCCGACTTC--TGGAAGGGACGTATTTATTAGATTA [190]
+Friedmannia_is TACGTGC-GTAAACCCCGACTTC--TGGAAGGGGCGTATTTATTAGATAA [190]
+
+[ 210 220 230 240 250]
+[ . . . . .]
+
+Glycine_max AAGGTCAACACAGGC-TCTGCCTGTGCT-TTGATGATTCATGATAACTCG [240]
+Oryza_sativa AAGGCTGACGCGGGC-TCCGCCCGCGAT-CCGATGATTCATGATAACTCG [240]
+Zamia_pumila AAGGCCGATGCGGGC-TTTGCCCGGCGT-TTGGTGAATCATGATACCTTG [241]
+Psilotum_n AAGGCCGATGCGGGC-TT-GCCCGGTTATGC-GT-ATTCATGATAACTCT [239]
+Equisetum_ar AAGGCCGATGCGGGC-TGTGCCCGGTAA----CGGATTC--GATAACTTC [234]
+Atrichum_angus AAGGCCGATGC-GGC-TT-GCCCGGTAT-TCGGTGACTCA-GATAACTCG [234]
+Notothylas_bre AAG---GATG---GC-TT-GTCCCGTTT-A--CTGAATC-TGATAACTCC [223]
+Phaeoceros_lae AAG---GA-GCGG-C-TT-GTCCCGGTTTACGGTGAA-CW-GATAACTCC [226]
+Porella_pi AAGACCGATGCGGGC--T-GCCCGGTGTTGCGGTGAATCATGATAACTCG [239]
+Conocephal_con AAGACCGATGGGGGTGCT-GCC-GGTGATTC-GGGA-TC-TGATAACTCG [236]
+Asterella_tene AAGACCGATG---GC-TT-GCC-CGGTGATT-CGGAATCATGATAACTCG [232]
+Riccia AAGGCCGATG-GGGC-TTGCCCCGGTGTTT-CGTGAATCATGATAACTCG [240]
+Klebsormid_fla AAGGCCAATGCGGGC-TT--CCCGGTATTGCGGTGAATCATGATAACTCG [240]
+Coleochaet_nit AAGACCAAT----GC-TC-GCCCGGTGTT-CGGTGAATC--GATAACTCC [223]
+Fissidens_taxi AAGGC-GA-T-C-------GCC-GGTGTT---GCGAATCA-GATAAC?AG [225]
+Plagiomnium_cu AAGGCCGA-TGCGGGCT-TGCCCGGTTC-GCGG-GAC----GATAAC--G [232]
+Micromonas_pus AAGAC--AC----------CTC--GTCT-GCGGTGAATCATGATAACTTC [223]
+Mantoniel_squa AAGACC-AC----------CTCG-TTCT-GCGGTGAATCA-GAT-ACTT- [208]
+Nephroselm_pyr AAGACCGAC----CT-TCG-GCG-TTCT-TCGGTGAATCATGATATTTCC [227]
+Pedinomonas_mi -AACC-AGC-----C-TT-GGGG--TTT-TCTGTGAATC-TGATACTTTC [211]
+Tetraselm_cart AAG-CGG-C---AGC-TTT-C---GTC---CGGTGAA-CA-GATAACTTC [227]
+Enteromorpha -AGACCGAC-CGTGC-TTGCCGTCTTT----GGTGAATCATGGTAACTTC [233]
+Ulva_fasci AAGGCCGAC-TGC---TTGACGTCTTT----GGTGAATCATGGTAACTTC [231]
+Ulothrix_zo AAGAC?GAC-CGC---TTG-CACCTTT----GGTGAATCATA-TAACTTC [234]
+Cympolia_barba ?????????????????????????????????????????????????? [250]
+Batophora_oers ?????????????????????????????????????????????????? [250]
+Codium_decort ?????????????????????????????????????????????????? [250]
+Cladophoro ?????????????????????????????????????????????????? [250]
+Blastophysa_rh AAGGCYGAC-CGGGC-TT---CCCGAGTGCAGGTGACT-ATGATAGACAT [234]
+Trentepohlia GAGGCCGGAACGCGC-TTAGGCCCGCT--TCGGTGAATCATAATA-ACTT [232]
+Cephaleuro_par GAGGC-GAC-CGGGC-TT-GTCCCGCT--TCGGTGA-TC-TGATAACTCA [219]
+Characium_vac AAGGCCAGC-CGGGC-T-TGCCCGACCC-TAGGCGAATCATGATAACTTC [236]
+Dunaliella_par AAGGCCAGC-CGGGC-T-TGCCCGACTC-TTGGCGAATCATGATAACTTC [235]
+Chlamyd_reinha AAGGCCAGC-CGGGC-TCTGCCCGACCT-GCGGTGAATCATGATAACTTC [237]
+Volvox_carteri AAGGCCAGC-CGGGC-TTTGCCCGTTGA-ATGGTGAATCATGATAACTTC [237]
+Chlorococc_min AAGGCCAGC-CGGGC-T-TGCCCGACCT-ATGGCGAATCATGATAACTTC [236]
+Draparn_plum AAGGCCAA--ACGCT---CTCCCGATTT---GA-GAC-----ATAAGTCC [225]
+Uronema_belk -AGGC-A------GC----TCCCGACA----GGTGA-TCATG-TAACTCC [216]
+Chlamydom_moew AAGGCCAGC-CGTGC-T-TGCACGATCC-TGGTTGATTCATGATAACTTC [239]
+Stephanos_pl AAGGCCAGC-GAGGC-TTGCTCGACTCTT-GG-CGAATCATGATAACTTG [235]
+Carteria_rad AAGGCCAGC-CGGGC-T-TGCCCGACTTTT-GGCGACTCATGATAACTTC [236]
+Gonium_pecto AAGGCCAGC----GC-TTTGCCCGACT--GCGGTGAATCATGATAACTTC [234]
+Chlorella_kess AAGGCCGAC-CCGGC-TCTGCCGGTCTC-GCGGTGAATCATGATAACTTC [238]
+Chlorella_vulg AAGGCCGAC-CGGGCTTCTGCCCGACTC-GCGGTGAATCATGATAACTTC [239]
+Protothec_wic AAGGCCGAC-CGGGC-T-TGCCCGACTC-GCGGTGAATCATGATAACTTT [234]
+Chlorella_prot AAGGCCGAC-CGGGC-TC-GCCCGACTC-GCGGTGACTCATGATAACTTT [239]
+Chlorella_min AAGGCCGAC-CGGGC-TCTGCCCGACTC-GCGGTGAATCATGATAACTTC [238]
+Neochloris_aqu AAGACC-AG-CCGGAC-TTTGTCCGACCCGCGGTGACTCATGATATCTTC [237]
+Neochloris_vig AAGACC-AG-CCGGAC-TTTG????GCCCGCGGTGACTCATGATATCTTC [237]
+Pediastrum_dup AAGGCCGAGCCG??C-TTTGTCCGACCC-GCGGTGAATCATGATATCTTC [238]
+Scenedesm_obl AAGGCCGAC-CGAGC-TTTGCTCGACCC-GCGGTGAATCATGATATCTTC [238]
+Characium_hin AAGGCCGAC-CGGGC-TTGCCCGACCC--GCGGTGAATCATGATATCTTC [236]
+Chlorella_fus AAGGCCGAC-CGGGC-TT?GCCCGACCC-GCGGTGAATCATGATATCTTC [238]
+Ankistrodesmus AAGGCCGAC-CGGGC-TCTGCCCGACCC-GCGGTGAATCATGATAACTTC [236]
+Pseudotreb_gig AAGGC-GAG-CCGGG-GC--CCCGAGAC-GCGGTGAATCA-GATAAC--C [228]
+Pleurastr_terr AAGGCCGAC-CGGACTC-G-TCCGACCC-GCGGTGAA-CCTGATAACTTC [238]
+Characium_per AAGGCCGAC-CGGGC-T-TGCCCGACTC-GCGGTGAATCATGATAACTTC [236]
+Parietochl_pse AAGGCCGAC-CGGGC-TCTGCCCGACTC-GCGGTGACTCATGATAACTTC [237]
+Friedmannia_is AAGGCCGAC-CGGGC-TTTGCCCGACTC-GCGGTGAATCATGATAACTTC [237]
+
+[ 260 270 280 290 300]
+[ . . . . .]
+
+Glycine_max TCGGATCGCACGGCCTTTGTGCCGGCGACGCATCATTCAAATTTCTGCCC [290]
+Oryza_sativa ACGGATCGCACGGCCCTCGTGCCGGCGACGCATCATTCAAATTTCTGCCC [290]
+Zamia_pumila ATGGATTGCATGGCCCTCGAGCCGGCGACGCTTCATTCAAATTTCTGCCC [291]
+Psilotum_n GCGAATCGCACGGCC??????????????????????????????????? [289]
+Equisetum_ar CCGGATCGCACGGCCT????ACGGGTGA?????????????????????? [284]
+Atrichum_angus TCGAATCGCACGGCCTTA???????????????????????????????? [284]
+Notothylas_bre TCGAATCGCACGGCCCT????????????????????????????????? [273]
+Phaeoceros_lae TCGGATCGCACGGCCCT????????????????????????????????? [276]
+Porella_pi TCGAATCGCACGGCC??????????????????????????????????? [289]
+Conocephal_con ACGAATCGCACGGCC??????????????????????????????????? [286]
+Asterella_tene ACGAATCGCACGGCCT?????????????????????????????????? [282]
+Riccia ACGAATCGCACGGCCCCC???????????????????????????????? [290]
+Klebsormid_fla TCGAATCGCACGGCCTTTGCGCTG?????????????????????????? [290]
+Coleochaet_nit TCG?ATCGCACGGCCT?????????????????????????????????? [273]
+Fissidens_taxi TCGAATCGACCC?????????????????????????????????????? [275]
+Plagiomnium_cu TCGAATCGCA-GGCCG?????????????????????????????????? [281]
+Micromonas_pus -CGGATCGCATGGCTTCAA??????????????????????????????? [272]
+Mantoniel_squa -CGGATC-CATGGCTTCAA?GCCG?CGATGTTCCATTCAAATTTCTGCCC [256]
+Nephroselm_pyr ACGGATCGCAT--CTTCCC??????????????????????????????? [275]
+Pedinomonas_mi ?????????????????????????????????????????????????? [261]
+Tetraselm_cart ACGAATCGCATGGCCTCCGCGCCGGCGATGTTTCATTCAAATTTCTGCCC [277]
+Enteromorpha ACGAATCGCA-GG--TTTACCCCGG????????????????????????? [280]
+Ulva_fasci ACGAATCGCAGGG--TTTATC????????????????????????????? [279]
+Ulothrix_zo ACGAATCGCATGG-CCTTGTGC-GGC???????????????????????? [282]
+Cympolia_barba ?????????????????????????????????????????????????? [300]
+Batophora_oers ?????????????????????????????????????????????????? [300]
+Codium_decort ?????????????????????????????????????????????????? [300]
+Cladophoro ?????????????????????????????????????????????????? [300]
+Blastophysa_rh CACACGAATC???????????????????????????????????????? [284]
+Trentepohlia CAC--GAATCG---CTG-GTC---GAACYGA??????????????????? [273]
+Cephaleuro_par ACGA-TCG------CTG-GTCCGTGAACCGC??????????????????? [261]
+Characium_vac ACGAATCGCATGCCCTC-GTGGCGGCGATGTTTCATTCAAATTTCTGCCC [285]
+Dunaliella_par ACGAATCGCACGGC-TTCGTGCCGGCGATGTTTCATTCAAATTTCTGCCC [284]
+Chlamyd_reinha ACGAATCGTATGGGCTC-GTCCCGACGATGTTTCATTCAAATTTCTGCCC [286]
+Volvox_carteri ACGAATCGTATGGCCAC-GTGCCGACGATGTTTCATTCAAATTTCTGCCC [286]
+Chlorococc_min ACGGACCGCATGGCCTT-GTCGCGGCGGCGTTTCATTCAAATTTCTGCCC [285]
+Draparn_plum ACG-ATCGCA--GCCT--GGTGACGGGTGA???????????????????? [270]
+Uronema_belk ACGAATCGC--GGCC---GCGC???????????????????????????? [261]
+Chlamydom_moew ACGAATCGCATGGCCTT-GTGCCGGC???????????????????????? [288]
+Stephanos_pl ACGAATCGCATGGCCTG-GTAACGGGTGA????????????????????? [284]
+Carteria_rad ACGAATCGCATGGCCTG-GTAACGGGTGA????????????????????? [285]
+Gonium_pecto ACGAATCGTATGGCCTG-GTAACGGGTGA????????????????????? [283]
+Chlorella_kess ACGAATCGCATGGCCTT-GCGCCGGCGATGTTTCATTCAAATTTCTGCCC [287]
+Chlorella_vulg ACGAATCGCATGGCCTT-GTGCCGGCGATGTTTCATTCAAATTTCTGCCC [288]
+Protothec_wic ACGAATCGCATGGCCTTTGTGCCGGCGATGTTTCATTCAAATTTCTGCCC [284]
+Chlorella_prot ACGAATCGCATGGTCTCTGCACCGGCGATGTTTCATTCAAATTTCTGCCC [289]
+Chlorella_min ACGAATCGCATGGCCTC-GTGCCGGCGATGTTTCATTCAAATTTCTGCCC [287]
+Neochloris_aqu ACGAATCGCATGGCCTT-GTGCACGGCATGTTTCATTCAAATTTCTGCCC [286]
+Neochloris_vig ACGAATCGCATGGCCTT-GTG????CGATGTTTCATTCAAATTTCTGCCC [286]
+Pediastrum_dup ACGAATCGCATGGCCTT-GCGCCGGCGATGTTTCATTCAAATTTCTGCCC [287]
+Scenedesm_obl ACGAAGCGCATGGCCTT-GTGCCGGCGCTGTTCCATTCAAATTTCTGCCC [287]
+Characium_hin ACGAATCGCATAGCCTT-GTGCTAGCGA-GTTTCATTCAAATTTCTGCCC [284]
+Chlorella_fus ACGAAGCGCATGGCCTT-GCGCCGGCGCTGTTCCATTCAAATTTCTGCCC [287]
+Ankistrodesmus ACGAATCGCATAGCCTC-GTGCTGGCGATGTTTCATTCAAATTTCTGCCC [285]
+Pseudotreb_gig ACGAATCG--TAGCCTT-GTGCCGC????????????????????????? [275]
+Pleurastr_terr ACGAATCGCATGGCCTT-GC-CC??????????????????????????? [286]
+Characium_per ACGAATCGCACAGCCTT-GTGCTGGCGATGTTTCATTCAAATTTCTGCCC [285]
+Parietochl_pse ACGAATCGCAT-GCCTTCGTGCCGGCGATGTTTCATTCAAATTTCTGCCC [286]
+Friedmannia_is ACGAATCGCATGGCCTT-GTGCCGGCGATGTTTCATTCAAATTTCTGCCC [286]
+
+[ 310 320 330 340 350]
+[ . . . . .]
+
+Glycine_max TATCAACTTTCGATGGTAGGATAGTGGCCTACCATGGTGGTGACGGGTGA [340]
+Oryza_sativa TATCAACTTTCGATGGTAGGATAGGGGCCTACCATGGTGGTGACGGGTGA [340]
+Zamia_pumila TATCAACTTTCGATGGCAGGATAGAGGCCTACCATGGTGGTGACGGGTGA [341]
+Psilotum_n ?????????????????????????????????????TGGTGACGGGTGA [339]
+Equisetum_ar ?????????????????????????????????????????????????? [334]
+Atrichum_angus ?????????????????????????????????????????????????? [334]
+Notothylas_bre ?????????????????????????????????????????????????? [323]
+Phaeoceros_lae ?????????????????????????????????????????????????A [326]
+Porella_pi ?????????????????????????????????????????????????? [339]
+Conocephal_con ?????????????????????????????????????????????????? [336]
+Asterella_tene ?????????????????????????????????????????????????? [332]
+Riccia ?????????????????????????????????????????????????? [340]
+Klebsormid_fla ????????????????????????????????????????TAACGGGTGA [340]
+Coleochaet_nit ?????????????????????????????????????????????????? [323]
+Fissidens_taxi ????????????????????????????????????????TGACGGGTGA [325]
+Plagiomnium_cu ?????????????????????????????????????????????????? [331]
+Micromonas_pus ?????????????????????????????????????????????????? [322]
+Mantoniel_squa TATCAACTTTCGACGGTAGGATAGAGGCCTACCGTGGTGTTCACGGGTGA [306]
+Nephroselm_pyr ?????????????????????????????????????????????????? [325]
+Pedinomonas_mi ????????????????????????????????????????????CGGTGA [311]
+Tetraselm_cart TATCAATTTGCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGA [327]
+Enteromorpha ?????????????????????????????????????????????????? [330]
+Ulva_fasci ?????????????????????????????????????????????????? [329]
+Ulothrix_zo ?????????????????????????????????????????????????? [332]
+Cympolia_barba ?????????????????????????????????????????????????? [350]
+Batophora_oers ?????????????????????????????????????????????????? [350]
+Codium_decort ?????????????????????????????????????????????????? [350]
+Cladophoro ???????????????????????TTGGACTAC-A-CCT-T--ACG-GTAG [344]
+Blastophysa_rh ?????????????????????????GGCCTACCACGGTATCGACGGGTGA [334]
+Trentepohlia ?????????????????????????????????????????????????? [323]
+Cephaleuro_par ?????????????????????????????????????????????????? [311]
+Characium_vac TATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGA [335]
+Dunaliella_par TATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGA [334]
+Chlamyd_reinha TATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGA [336]
+Volvox_carteri TATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGA [336]
+Chlorococc_min TATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGA [335]
+Draparn_plum ?????????????????????????????????????????????????? [320]
+Uronema_belk ?????????????????????????????????????????????????? [311]
+Chlamydom_moew ??????????????????????????????????????????ACGGCTGA [338]
+Stephanos_pl ?????????????????????????????????????????????????? [334]
+Carteria_rad ?????????????????????????????????????????????????? [335]
+Gonium_pecto ?????????????????????????????????????????????????? [333]
+Chlorella_kess TATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGA [337]
+Chlorella_vulg TATCAACTTTTGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGA [338]
+Protothec_wic TATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGA [334]
+Chlorella_prot TATCAACTTT-GTCGGTAGGATAGAGGCCTACCGAGGTGTTCACGGGTGA [338]
+Chlorella_min TATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGA [337]
+Neochloris_aqu TATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGA [336]
+Neochloris_vig TATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGA [336]
+Pediastrum_dup TATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGA [337]
+Scenedesm_obl TATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGA [337]
+Characium_hin TATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGA [334]
+Chlorella_fus TATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGA [337]
+Ankistrodesmus TATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGA [335]
+Pseudotreb_gig ?????????????????????????????????????????????????? [325]
+Pleurastr_terr ?????????????????????????????????????????????????? [336]
+Characium_per TATCAACTTTCGATGGTAACGTAGTGGGTTACCATGGTGGTAACGGGTGA [335]
+Parietochl_pse TATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGA [336]
+Friedmannia_is TATCAACTTTCGATGGTTGGATAGAGGCCAACCATGGTGGTAACGGGTGA [336]
+
+[ 360 370 380 390 400]
+[ . . . . .]
+
+Glycine_max CGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA [390]
+Oryza_sativa CGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA [390]
+Zamia_pumila CGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCCGAGAAACGGCTACCA [391]
+Psilotum_n CGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA [389]
+Equisetum_ar CGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA [384]
+Atrichum_angus ???AGAATT----TTCGATTCCGGA-AGGGAGCCTGAGAA-CGGCTACCA [378]
+Notothylas_bre ????????????GTTCGATTCCGGAGAGGGA--C-GAGAAACGGCTACCA [370]
+Phaeoceros_lae CGGA-AATTAGGGTTCGATTCCGGA-A-GGAGCCTGAGAAACGGCTACCA [373]
+Porella_pi ??????????????????????????????????????AAACGGCTACCA [389]
+Conocephal_con ?????????????????????????????GAGCCTGAGAAACAGCTACCA [386]
+Asterella_tene ??????????????????????????AGGGAGCCTGAG?AACGGCTACCA [382]
+Riccia ?????????????????????????????????????????????????? [390]
+Klebsormid_fla CGGAGAATT?GGGTTCGATTCCGGAGA?GGAGCCTGAGAAACGGCTACCA [390]
+Coleochaet_nit ??????????????????????GGAGAGGGAGCCTGAGAAACGGCTACCA [373]
+Fissidens_taxi CGGA?AATTAGGGTTCGATTCCG-A-A-GGAGCCTGAG---CGGCTACCA [369]
+Plagiomnium_cu ???????????????????????GA-A-GGAGCCT-AG---CGGCTACCA [375]
+Micromonas_pus ?????????????????????????????????????????????????? [372]
+Mantoniel_squa CGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA [356]
+Nephroselm_pyr ?????????????????????????????????????????CGGCTACCA [375]
+Pedinomonas_mi CG??GAATT?GGGTTCGTTCCGG--GAGGGAGCCTGAGAAACGGCTACC- [358]
+Tetraselm_cart CGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA [377]
+Enteromorpha ??????ATTAGG?TTCGATTCCGGA?AGGGAGCCT?AGG--CGGCTACCA [378]
+Ulva_fasci ????GGATTAGGGTTCGATTCCGGAGA--GAGCCTGAG---CGGCTACCA [374]
+Ulothrix_zo ?GGAGTATTAGT?TTCTTTTCCGGAGA--CA-CCTGAG---C-GCTACCA [375]
+Cympolia_barba ???????TATGGGTTTGATTCCGGAGAGGGAGCTTGAGA-CTGGCTACCA [399]
+Batophora_oers ?GGAGGTTGAGGGTTTGATTCCGGATT-GGA-CCTGAGA--CGGC--CC- [393]
+Codium_decort ??????ATC-GGGTTTGGTTCCGGAGA--GAGCCTGAGGC-CGGCTACCA [396]
+Cladophoro CGGAGGATTAGGGTTCGGATTCCGGAGGGGAGCCTG-GA--CGGCTACCA [391]
+Blastophysa_rh CGGAGGATTAGGGTTCGATTCCGGAGGGGGAGCCTGAGA-ACGGCTACCA [383]
+Trentepohlia ?????????????????????????????????????????????????? [373]
+Cephaleuro_par ???????????????????????????GGGAGCCTGAGAAACGGCTACCA [361]
+Characium_vac CGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA [385]
+Dunaliella_par CGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA [384]
+Chlamyd_reinha CGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAGATGGCTACCA [386]
+Volvox_carteri CGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAGATGGCTACCA [386]
+Chlorococc_min CGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA [385]
+Draparn_plum CGGAGGATTAGGGTTCGGTTCCGGA-AGGGAGCCTGAGAAATGGCTACCA [369]
+Uronema_belk ?????????????TTCGATTCCGGAGA--GAGCCTGAGGAACGGCTACCA [359]
+Chlamydom_moew C----AATCAGGGTTCGATTCCGG-GAGGGAGCCT-AG---CGGCT-CCA [378]
+Stephanos_pl CGG-GGATTAGGGTTCGATTCCGG-GAGGGAGCCTGAGAAACGGCTACCA [382]
+Carteria_rad CGGAGGATTAGGGTTCGATTCCGGAGA-GGAGCCTGAGAGATGGCTACCA [384]
+Gonium_pecto CGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAGATGGCTACCA [383]
+Chlorella_kess CGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA [387]
+Chlorella_vulg CGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA [388]
+Protothec_wic CGGAGGATCAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA [384]
+Chlorella_prot CGGAGGATCAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA [388]
+Chlorella_min CGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA [387]
+Neochloris_aqu CGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA [386]
+Neochloris_vig CGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA [386]
+Pediastrum_dup CGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA [387]
+Scenedesm_obl CGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA [387]
+Characium_hin CGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA [384]
+Chlorella_fus CGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA [387]
+Ankistrodesmus CGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA [385]
+Pseudotreb_gig ????GGATTAGGGTTCG?TTCCGGAGAGGGAGCCTGAG---CGGCT-CCA [371]
+Pleurastr_terr ??????ATTAGGGTTCGATTCCGG-GAGGGAGCCTGAG---CGGCTACCA [382]
+Characium_per CGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA [385]
+Parietochl_pse CGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA [386]
+Friedmannia_is CGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAGACGGCTACCA [386]
+
+[ 410 420 430 440 450]
+[ . . . . .]
+
+Glycine_max -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACGGG [438]
+Oryza_sativa -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACGGG [438]
+Zamia_pumila -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACGGG [439]
+Psilotum_n -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCC-GAC-CGGG [435]
+Equisetum_ar -CATCCAAGGAAGGCAGCGGGCGCGCAAATTACCC-AATCC-GACACGGG [431]
+Atrichum_angus -CATCCA---AAGGCAG-?-??-?-?--ATT-CCC-AATCC-GAC--GGG [413]
+Notothylas_bre -CATCC--?--AGGCAG---????----ATTACCC-AATCC-GA---GGG [403]
+Phaeoceros_lae -CATCC-AG-AAGGCA-CA--CGCGC--ATTACCC-AATCC-GAC-CGGG [412]
+Porella_pi -CATCCAAGG-AGGCAGCCGG-GCG---ATTACCC-AATACCGACACAGG [432]
+Conocephal_con -CATCCAAGGA-GGCAGCAGGCGCG---ATTACCC-AATCCCGACACGGG [430]
+Asterella_tene -CATCC-AG-AAGGCAG-A---GC-C--ATTACCC-AATCC-GAC----- [415]
+Riccia ???????????????????????CGCAAATTACCC-A-TCC-GAC----- [432]
+Klebsormid_fla -CATCCAAGGAAGGCAGCAGGCGCGC--ATT-CCC-AATCCTG-T-CAGG [433]
+Coleochaet_nit -CATCCAAGGA?GGCAG--GGCGCG--GATTACCC-AATCCTGATACAGG [417]
+Fissidens_taxi -CATCC--GGAAGGCAGC--GCGCGC--ATTACCC-AATCC-GA---GGG [407]
+Plagiomnium_cu -CATCC-AGGAAGGC--C----------ATTACCC-AACTCCGA---GGG [407]
+Micromonas_pus ?????????????????????????????????????????????????? [422]
+Mantoniel_squa -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACAGG [404]
+Nephroselm_pyr -CATCCAA--AAGGC-GC--GCGCGC--ATTA-CC-AATCCTGAC-CAGG [414]
+Pedinomonas_mi -CATC-AAGGAAGGC-GCGGGCGCGC--ATTACCC-AATCC-GAGA--GG [399]
+Tetraselm_cart -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACAGG [425]
+Enteromorpha GCATCCGAGGAAGGCAGC-GGCGCGCAAATTACCC-AATCCTG--GCAGG [424]
+Ulva_fasci -CATCC-A--AAGGCAGCA-GCGCGCAAATTACCC-AATCCTGA---AGG [415]
+Ulothrix_zo --ATCC-GGAACGGCAG--GGCGC----AT--CCC-CTTCCT-----AG- [407]
+Cympolia_barba -CATCCAAGG-AGGCAGC-GGCGCGAAAATTACCC-AATCTAGATATTGT [445]
+Batophora_oers --YTTCC-GG--GGC-GC-GGCGC----ATY-CCC-AATC--GACATTGT [428]
+Codium_decort --CATCC-GGAAGGC-GC--GCGCGC-AATTACCC-AATCCCC--CGGGT [436]
+Cladophoro -CATCC-AGG-AGGCAGCAGGCGCGC--ATTACCC-AATCC-AAC--AGG [432]
+Blastophysa_rh -CAACCAAGGTAGG-AGCAGGCGCG---ATTACCC-AATCCTGAC-CGGG [426]
+Trentepohlia ?????????????????????????????????????????????????? [423]
+Cephaleuro_par -CATCCAAGGAA-GCAGCAGGCGCGC--ATTACCCAAATCCCAAGGT--G [405]
+Characium_vac -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCCGACACGGG [433]
+Dunaliella_par -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCCAACACGGG [432]
+Chlamyd_reinha -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCCGACACGGG [434]
+Volvox_carteri -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCCGACACGGG [434]
+Chlorococc_min -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCCGACACGGG [433]
+Draparn_plum -CATCCAAGGAAGGCAGC-GGCGCGC-AATTACCC-AATCCTGACA--GG [413]
+Uronema_belk -CATCC--GGAAGGC-GC---CGCGC--ATTACCC-AATCC-GA---GGG [395]
+Chlamydom_moew --ATCC--GGAAGGC-GC-?-CGCGT-AATTACCC-AATCC------GGG [413]
+Stephanos_pl -CATCC-AGGAAGGCAGCAGGCGCGC--ATTACCC-AATCCGAA---GGG [424]
+Carteria_rad -CATCCAAGGAAGGCAGCA-GCGCGC--ATTACCC-AATCCTAAC-CGGG [428]
+Gonium_pecto -CATC--AGGAAGGC----GGCGCGC--ATTACCC-AATCCGAC---GGG [420]
+Chlorella_kess -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACAGG [435]
+Chlorella_vulg -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACAGG [436]
+Protothec_wic -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACAGG [432]
+Chlorella_prot -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACAGG [436]
+Chlorella_min -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACAGG [435]
+Neochloris_aqu -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACGGG [434]
+Neochloris_vig -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACGGG [434]
+Pediastrum_dup -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGATACGGG [435]
+Scenedesm_obl -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGATACGGG [435]
+Characium_hin -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACGGG [432]
+Chlorella_fus -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGATACGGG [435]
+Ankistrodesmus -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGATACGGG [433]
+Pseudotreb_gig -CATC---GGAAGGCAGC--GCGC-C--ATTACCC-AATCCTG-T-CAGG [409]
+Pleurastr_terr -CATCCA-GGAAGGCAGC--GCGCGC--ATTACCC-AATCCTGA---GGG [422]
+Characium_per -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATACTGACACAGT [433]
+Parietochl_pse -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACAGG [434]
+Friedmannia_is -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACAGG [434]
+
+[ 460 470 480 490 500]
+[ . . . . .]
+
+Glycine_max GAGGTAGTGACAATAAATAACAATACCGGGCTC-ATTGAGTCTGGTAATT [487]
+Oryza_sativa GAGGTAGTGACAATAAATAACAATACCGGGCGCTTTAGTGTCTGGTAATT [488]
+Zamia_pumila GAGGTAGTGACAATAAATAACAATACTGGGCTCATC-GAGTCTGGTAATT [488]
+Psilotum_n GAGGTAGTGACAATAAATAA-AATACTGGGCTTTTCAAAGTCTGGTAATT [484]
+Equisetum_ar GAGGTAGTGACAATAAATAACAATACTGGGCTTTTACAAGTCTGGTAATT [481]
+Atrichum_angus GAGGTAGT-ACAATAAATAACAATACTGGGCTTTTACAAGTCTGGTAATT [462]
+Notothylas_bre GAGGTAGTGACAATAAATAACAATACTGGGCTTTTACAAGTCTGGTAATT [453]
+Phaeoceros_lae GAGGTAGTGACAATAAATAACAATACTGGGCTTTTACAAGTCTGGTAATT [462]
+Porella_pi ?AGGTAGTGACAATAAATAACAATACTGGGCTTTACCAAGTCTGGTAATT [482]
+Conocephal_con G-GGT-GTGACAATAAATAACAATACTGGGCTTTTACAAGTCTGGTAATT [478]
+Asterella_tene GAGG-AGTGACAATAAATAACAATACTGGGCT-TTACAAGTCTGGTAATT [463]
+Riccia GA--TAGTGACAATAAATAACAATAGTGGGCT-TTACAA-TC--GTAATT [476]
+Klebsormid_fla GAGGTAGTGAC-ATAAATAACAATGCTGGGCTTTTCAAAGTCTGGCAATT [482]
+Coleochaet_nit GAGGTAG--ACAATAAATAACA-TACTGGGCTTTTA-AAGTCTGGT?ATT [463]
+Fissidens_taxi GAGGTAGT-ACAATAAATAACAATACTGGGCTTTTACAAGTCTGGTAATT [456]
+Plagiomnium_cu GAGGTAGTGACAATAAATAACAATACTGGGC--TTACGGGCCCG---ATT [452]
+Micromonas_pus ?????????????????????????????????????????????????? [472]
+Mantoniel_squa GAGGTAGTGACAATAAATAACAATATCGGGGTTTTTCAA??????????? [454]
+Nephroselm_pyr GAGGTAGTGAC-ATAAATAACAATACCGGGCTTTTTCAAGTCTGGTAATT [463]
+Pedinomonas_mi GAGG-AGTGGACAGAAATATCGTGACTGTGCCCTTGTGGCAGAGTCTTCG [448]
+Tetraselm_cart GAGGTAGTGACAATAAATAACAATACCGGGCTTTT-CAA??????????? [474]
+Enteromorpha GAGGTAGTGACAATAAATATCA-TTCTGGGC-CACTTG-GTCCGGTAATT [471]
+Ulva_fasci GAGGTA-TGACAATAAATATCAATTCTGGGC-CACAT--GTCCGGTAATT [461]
+Ulothrix_zo -AGAT-GTGACAATA-AT-AC-ATACTGC-C-CA---G-GTCYGGT?ATT [446]
+Cympolia_barba GAGGTAGTGACAATAAATAACAATGTTGGACTTGTAAA-GTTTGGTAATT [494]
+Batophora_oers GAG-T-GTG-CGACAAATAACAATGCCGGGC-TTATCAAGTTTGGTAATT [474]
+Codium_decort GAGGT-GTGACGAGACATAACAACGACGTGC-TCAACGAGTGGG-TCGAT [483]
+Cladophoro GAGGT-GTG-C--GAAATAGCAAT--CGAGCATTT---CTCTG--CAATT [471]
+Blastophysa_rh GAGGTAGTGACAATAAATAACAGTATCTGGC-TCT-CAGTCCG-ATGCTT [473]
+Trentepohlia ?????????????????????????????????????????????????? [473]
+Cephaleuro_par GAGGTGGTGG???GAAATAACGATGCTCCGGCCTCTG-GTCGGG?TAATC [454]
+Characium_vac GAGGTAGTGACAATAAATAACAATACTGGGCATTT--ATGTCTGGTAATT [481]
+Dunaliella_par GAGGTAGTGACAATAAATAACAATACCGGGCATTT--TTGTCTGGTAATT [480]
+Chlamyd_reinha GAGGTAGTGACAATAAATAACAATACCGGGCGCTTC-GCGTCTGGTAATT [483]
+Volvox_carteri GAGGTAGTGACAATAAATAACAATACCGGGCGCTTA-GCGTCTGGTAATT [483]
+Chlorococc_min GAGGTAGTGACAATAAATAACAATGCGGGGCCTA---TGGTCTTGCAATT [480]
+Draparn_plum GAGGTAGT-ACAATAAATAACAATACCGGGCATTAA-ATGTCTGGTAATT [461]
+Uronema_belk G-GG--GTGACAATAAATAACAATACCGGGCATTT--ATGTCTGGT--TT [438]
+Chlamydom_moew GAGGT--TGACAATAAATAACAATA-TCGGGCATCCAATGTCTGATAATT [460]
+Stephanos_pl GAGGTAGTGA-AAT-AATAACAATACCGGGCATTT--ATGTCTGGTAATT [470]
+Carteria_rad GAGGTAGTGACAATAAATAACAATACTGGGCATTT--TTGTCTGGTAATT [476]
+Gonium_pecto GAGGTAGTGACAATAAATAACAATACCGG--TC----GCGTCTGGTAATT [464]
+Chlorella_kess GAGGTAGTGACAATAAATAACAATACCGGGCCTTTTCAGGTCTGGTAATT [485]
+Chlorella_vulg GAGGTAGTGACAATAAATAACAATACTGGGCCTTTTCAGGTCTGGTAATT [486]
+Protothec_wic GAGGTAGTGACAATAAATAACAATACCGGGCCT-CACAGGTCTGGTAATT [481]
+Chlorella_prot GAGGTAGTGACAATAAATAACAATACCGGGCCT-CACAGGTCTGGTAATT [485]
+Chlorella_min GAGGTAGTGACAATAAATAACAATACCGGGCCT-TTCAGGTCTGGTAATT [484]
+Neochloris_aqu GAGGTAGTGACAATAAATAACAATACCGGGCACATC-GTGTCTGGTAATT [483]
+Neochloris_vig GAGGTAGTGACAATAAATAACAATACCGGGCACATC-GTGTCTGGTAATT [483]
+Pediastrum_dup GAGGTAGTGACAATAAATAACAATACTGGGCACTTC-GTGTCTGGTAATT [484]
+Scenedesm_obl GAGGTAGTGACAATAAATAACAATACCGGGCATTTT-ATGTCTGGTAATT [484]
+Characium_hin GAGGTAGTGACAATAAATAACAATACCGGGCACATC-GTGTCTGGTAATT [481]
+Chlorella_fus GAGGTAGTGACAATAAATAACAATACCGGGCATTTC-ATGTCTGGTAATT [484]
+Ankistrodesmus GAGGTAGTGACAATAAATAACAATACCGGGCWTTCA-ATGTCTGGTAATT [482]
+Pseudotreb_gig GAGGTA-TGACAATAAATAACAATACCGGGCTTTTTCAAGTCTGGTAATT [458]
+Pleurastr_terr GAGGTAGTGACAATAAATAACAATACCGGGCATTTA-ATGTCTGGTAATT [471]
+Characium_per GAGGTAGTGACAAAAAATATCGATGGTGGGCTCTTTCGAGTTTGCCAATT [483]
+Parietochl_pse GAGGTAGTGACAATAAATAACTATGCTTGGCTC-TTCGAGTCGGGCAATA [483]
+Friedmannia_is GAGGTAGTGACAATAAATAACAATACCGGGCTTTTTCAAGTCTGGTAATT [484]
+
+[ 510 520 530 540 550]
+[ . . . . .]
+
+Glycine_max GGAATGAGTACAATCTAAATCCCTTAACGATGGATCCATTGAAGGGCAAG [537]
+Oryza_sativa GGAATGAGTACAATCTAAATCCCTTAACGA-GGATCCATTGGAGGGCAAG [537]
+Zamia_pumila GGAATGAGTACAATCTAAATCCCTTAACGA-GGATCCATTGGAGGGCAAG [537]
+Psilotum_n GGAATGAGTACAATCTAAACCC???????????????????????????? [534]
+Equisetum_ar GGAATGAGTACAATCTAAATCC???????????????????????????? [531]
+Atrichum_angus GGAATGAGTACAATCTAAATCCCTTAA--A???????????????????? [510]
+Notothylas_bre GGAATGAGTACAATCTAAATCCCTTAA--A???????????????????? [501]
+Phaeoceros_lae GGAATGA-TACAATCTAAATCCCTTAAC?????????????????????? [511]
+Porella_pi GGAATGAGTACAATCTAAATCC???????????????????????????? [532]
+Conocephal_con GGAATGAGAACAATCTAAATC????????????????????????????? [528]
+Asterella_tene GGAATGAGTACAATCTAAATCCC??????????????????????????? [513]
+Riccia GGAA--AGTACAATCTAAATCCCTTA???????????????????????? [524]
+Klebsormid_fla GGAATG???????????????????????????????????????????? [532]
+Coleochaet_nit GGAATGAGTACAATCTAAATCTC??????????????????????????? [513]
+Fissidens_taxi GGAATGAGTACAATCTAAATCCCTTAA--A???????????????????? [504]
+Plagiomnium_cu GG--TGAGTA?AATCT-AATCCCTTAA??????????????????????? [499]
+Micromonas_pus ?????????????????????????????????????????????????? [522]
+Mantoniel_squa ?????????????????????????????????????????????????? [504]
+Nephroselm_pyr GGAATG???????????????????????????????????????????? [513]
+Pedinomonas_mi ?????????????????????????????????????????????????? [498]
+Tetraselm_cart ?????????????????????????????????????????????????? [524]
+Enteromorpha GGAATG???????????????????????????????????????????? [521]
+Ulva_fasci GGAAT?AGTACAATGTAAA?CCCT-AAC-A???????????????????? [509]
+Ulothrix_zo GGAATGAGTACAATCTAAATCCCTTA???????????????????????? [496]
+Cympolia_barba GTAATG------GAGTAA-TCC-TTGAAC????????????????????? [536]
+Batophora_oers GGAATGAGT--AACGTAAAYGCCTTA???????????????????????? [522]
+Codium_decort GG--TG-GA--AACTTAAAATCCC-CA??????????????????????? [527]
+Cladophoro GAAATGAGAA-AATTTAAACCACTTAAC-A---ATC?????????????? [516]
+Blastophysa_rh GGAAT-A-TA-AATCTAAATCCCTTAAC-A???????????????????? [519]
+Trentepohlia ?????????????????????????????????????????????????? [523]
+Cephaleuro_par GGAATGAGAA--ATTTA??TCCCTTA???????????????????????? [502]
+Characium_vac GGAATGAGTACAATGTAAATATCTTAACGA-GTATCCATTGGAGGGCAAG [530]
+Dunaliella_par GGAATGAGTACAATCTAAATCCCTTAACGA-GTATCCATTGGAGGGCAAG [529]
+Chlamyd_reinha GGAATGAGTACAATCTAAATCCCTTAACGA-GGATCCATTGGAGGGCAAG [532]
+Volvox_carteri GGAATGAGTACAATCTAAATCCCTTAACGA-GGATCCATTGGAGGGCAAG [532]
+Chlorococc_min GGAATGAGAACAATGTAAATATCTTAACGA-GTATCCATTGGAGGGCAAG [529]
+Draparn_plum GGA??GA?TAC?ATCTAAATCC???????????????????????????? [511]
+Uronema_belk GGAATGAGTACAATCTAA??CCCTTAA??????????????????????? [488]
+Chlamydom_moew GGAATG???????????????????????????????????????????? [510]
+Stephanos_pl GGA-TGAGTACAATGTAAATAT???????????????????????????? [519]
+Carteria_rad GGAATGAGTACAATCTAAATCC???????????????????????????? [526]
+Gonium_pecto GGA?TGAGT?CAATCTAAATCC???????????????????????????? [514]
+Chlorella_kess GGAATGAGTACAATCTAAACCCCTTAACGA-GGATCAATTGGAGGGCAAG [534]
+Chlorella_vulg GGAATGAGTACAATCTAAACCCCTTAACGA-GGATCAATTGGAGGGCAAG [535]
+Protothec_wic GGAATGAGTACAACCTAAACACCTTAACGA-GGATCAATTGGAGGGCAAG [530]
+Chlorella_prot GGAATGAGTACAATCTAAACCCCTTAACGA-GGATCAATTGGAGGGCAAG [534]
+Chlorella_min GGAATGAGTACAATCTAAACCCCTTAACGA-GGATCAATTGGAGGGCAAG [533]
+Neochloris_aqu GGAATGAGTACAATCTAAATCCCTTAACGA-GTATCCATTGGAGGGCAAG [532]
+Neochloris_vig GGAATGAGTACAATCTAAATCCCTTAACGA-GTATCCATTGGAGGGCAAG [532]
+Pediastrum_dup GGAATGAGTACAATCTAAATCCCTTAACGA-GTATCCATTGGAGGGCAAG [533]
+Scenedesm_obl GGAATGAGTACAATCTAAATCCCTTAACGA-GGATCCATTGGAGGGCAAG [533]
+Characium_hin GGAATGAGTACAATCTAAATCCCTTAACGA-GTATCAATTGGAGGGCAAG [530]
+Chlorella_fus GGAATGAGTACAATCTAAATCCCTTAACGA-GGATCCATTGGAGGGCAAG [533]
+Ankistrodesmus GGAATGAGTACAATTTAAATCCCTTAACGA-GGATCCATTGGAGGGCAAG [531]
+Pseudotreb_gig GGAT?????????????????????????????????????????????? [508]
+Pleurastr_terr GGAATG???????????????????????????????????????????? [521]
+Characium_per GGAATGAGTACAATCTAAATCCCTTAACGA-GGATCAATTGGAGGGCAAG [532]
+Parietochl_pse GGAATGAGTACAATCTAAATCCCTTAACGA-GGATCAATTGGAGGGCAAG [532]
+Friedmannia_is GGAATGAGTACAATCTAAATCCCTTAACGA-GGATCAATTGGAGGGCAAG [533]
+
+[ 560 570 580 590 600]
+[ . . . . .]
+
+Glycine_max TCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAG [587]
+Oryza_sativa TCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAG [587]
+Zamia_pumila TCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAG [587]
+Psilotum_n ?????????????????????????????????????????????????? [584]
+Equisetum_ar ?????????????????????????????????????????????????? [581]
+Atrichum_angus ?????????????????????????????????????????????????? [560]
+Notothylas_bre ?????????????????????????????????????????????????? [551]
+Phaeoceros_lae ?????????????????????????????????????????????????? [561]
+Porella_pi ?????????????????????????????????????????????????? [582]
+Conocephal_con ?????????????????????????????????????????????????? [578]
+Asterella_tene ?????????????????????????????????????????????????? [563]
+Riccia ?????????????????????????????????????????????????? [574]
+Klebsormid_fla ?????????????????????????????????????????????????? [582]
+Coleochaet_nit ?????????????????????????????????????????????????? [563]
+Fissidens_taxi ?????????????????????????????????????????????????? [554]
+Plagiomnium_cu ?????????????????????????????????????????????????? [549]
+Micromonas_pus ?????????????????????????????????????????????????? [572]
+Mantoniel_squa ?????????????????????????????????????????????????? [554]
+Nephroselm_pyr ?????????????????????????????????????????????????? [563]
+Pedinomonas_mi ?????????????????????????????????????????????????? [548]
+Tetraselm_cart ?????????????????????????????????????????????????? [574]
+Enteromorpha ?????????????????????????????????????????????????? [571]
+Ulva_fasci ?????????????????????????????????????????????????? [559]
+Ulothrix_zo ?????????????????????????????????????????????????? [546]
+Cympolia_barba ?????????????????????????????????????????????????? [586]
+Batophora_oers ?????????????????????????????????????????????????? [572]
+Codium_decort ?????????????????????????????????????????????????? [577]
+Cladophoro ?????????????????????????????????????????????????? [566]
+Blastophysa_rh ?????????????????????????????????????????????????? [569]
+Trentepohlia ?????????????????????????????????????????????????? [573]
+Cephaleuro_par ?????????????????????????????????????????????????? [552]
+Characium_vac TCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAG [580]
+Dunaliella_par TCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAG [579]
+Chlamyd_reinha TCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAG [582]
+Volvox_carteri TCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAG [582]
+Chlorococc_min TCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAG [579]
+Draparn_plum ?????????????????????????????????????????????????? [561]
+Uronema_belk ?????????????????????????????????????????????????? [538]
+Chlamydom_moew ?????????????????????????????????????????????????? [560]
+Stephanos_pl ?????????????????????????????????????????????????? [569]
+Carteria_rad ?????????????????????????????????????????????????? [576]
+Gonium_pecto ?????????????????????????????????????????????????? [564]
+Chlorella_kess TCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAG [584]
+Chlorella_vulg TCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAG [585]
+Protothec_wic TCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAG [580]
+Chlorella_prot TCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAG [584]
+Chlorella_min TCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAG [583]
+Neochloris_aqu TCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAG [582]
+Neochloris_vig TCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAG [582]
+Pediastrum_dup TCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAG [583]
+Scenedesm_obl TCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAG [583]
+Characium_hin TCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAG [580]
+Chlorella_fus TCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAG [583]
+Ankistrodesmus TCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAG [581]
+Pseudotreb_gig ?????????????????????????????????????????????????? [558]
+Pleurastr_terr ?????????????????????????????????????????????????? [571]
+Characium_per TCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAG [582]
+Parietochl_pse TCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAG [582]
+Friedmannia_is TCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAG [583]
+
+[ 610 620 630 640 650]
+[ . . . . .]
+
+Glycine_max TTGTTGCAGTTAAAAAGCTCGTAGTTGGACCTTGGGTTGGGTCGATC-GG [636]
+Oryza_sativa TTGTTGCAGTTAAAAAGCTCGTAGTTGGACCTTGGGCGCGGCCGGGCCGG [637]
+Zamia_pumila TTGTTGCAGTTAAAAAGCTCGTAGTTGGATCTTGGGACGGCCCGGCC-GG [636]
+Psilotum_n ?????????????????????????????????????????????????? [634]
+Equisetum_ar ?????????????????????????????????????????????????? [631]
+Atrichum_angus ?????????????????????????????????????????????????? [610]
+Notothylas_bre ?????????????????????????????????????????????????? [601]
+Phaeoceros_lae ?????????????????????????????????????????????????? [611]
+Porella_pi ?????????????????????????????????????????????????? [632]
+Conocephal_con ?????????????????????????????????????????????????? [628]
+Asterella_tene ?????????????????????????????????????????????????? [613]
+Riccia ?????????????????????????????????????????????????? [624]
+Klebsormid_fla ?????????????????????????????????????????????????? [632]
+Coleochaet_nit ?????????????????????????????????????????????????? [613]
+Fissidens_taxi ?????????????????????????????????????????????????? [604]
+Plagiomnium_cu ?????????????????????????????????????????????????? [599]
+Micromonas_pus ?????????????????????????????????????????????????? [622]
+Mantoniel_squa ?????????????????????????????????????????????????? [604]
+Nephroselm_pyr ?????????????????????????????????????????????????? [613]
+Pedinomonas_mi ?????????????????????????????????????????????????? [598]
+Tetraselm_cart ?????????????????????????????????????????????????? [624]
+Enteromorpha ?????????????????????????????????????????????????? [621]
+Ulva_fasci ?????????????????????????????????????????????????? [609]
+Ulothrix_zo ?????????????????????????????????????????????????? [596]
+Cympolia_barba ?????????????????????????????????????????????????? [636]
+Batophora_oers ?????????????????????????????????????????????????? [622]
+Codium_decort ?????????????????????????????????????????????????? [627]
+Cladophoro ?????????????????????????????????????????????????? [616]
+Blastophysa_rh ?????????????????????????????????????????????????? [619]
+Trentepohlia ?????????????????????????????????????????????????? [623]
+Cephaleuro_par ?????????????????????????????????????????????????? [602]
+Characium_vac TTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGATGTGTTGTCGC-GG [629]
+Dunaliella_par TTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGTTGTAGC-GG [628]
+Chlamyd_reinha TTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGGTGGTGC-GG [631]
+Volvox_carteri TTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGGTGGTGC-GG [631]
+Chlorococc_min TTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGACCACGC-GG [628]
+Draparn_plum ?????????????????????????????????????????????????? [611]
+Uronema_belk ?????????????????????????????????????????????????? [588]
+Chlamydom_moew ?????????????????????????????????????????????????? [610]
+Stephanos_pl ?????????????????????????????????????????????????? [619]
+Carteria_rad ?????????????????????????????????????????????????? [626]
+Gonium_pecto ?????????????????????????????????????????????????? [614]
+Chlorella_kess TTGCTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGCGGGGCCTGCC-GG [633]
+Chlorella_vulg TTGCTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGACCTGCC-GG [634]
+Protothec_wic TTGCTGCAGTTAAAAAGCTCGTAGTTGGATTTCGAGGTCGTCCTGCT-GG [629]
+Chlorella_prot TTGCTGCAGTTAAAAAGCTCGTAGTCGAACTTCGGGGGGCCCGGGCC-GG [633]
+Chlorella_min TTGCTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGGCACGTC-GG [632]
+Neochloris_aqu TTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGTTCTAGC-GG [631]
+Neochloris_vig TTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGTTCTAGC-GG [631]
+Pediastrum_dup TTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGTTCTAGC-GG [632]
+Scenedesm_obl TTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGTTCTAGC-GG [632]
+Characium_hin TTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGTTCTAGC-GG [629]
+Chlorella_fus TTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGTTCTAGC-GG [632]
+Ankistrodesmus TTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTAGGTTCCATC-GG [630]
+Pseudotreb_gig ?????????????????????????????????????????????????? [608]
+Pleurastr_terr ?????????????????????????????????????????????????? [621]
+Characium_per TTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGCGGAGCC-GA [631]
+Parietochl_pse TTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGTCGCGCC-GG [631]
+Friedmannia_is TTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGCGCTACC-GG [632]
+
+[ 660 670 680 690 700]
+[ . . . . .]
+
+Glycine_max TCCGCC-TCC--GTGTGCACCGGTC-GGCT--GTCCCTTCTGCCGGCGAT [680]
+Oryza_sativa TCCGCC-TCACGGCAGGCACCGACCTGCT--CGACCCTTCTGCCGGCGAT [684]
+Zamia_pumila TCCGCT-TTTTTGGGTGTGCACCGGCCGTTTCGTCCCTTTTGTTGGCGGC [685]
+Psilotum_n ?????????????????????????????????????????????????? [684]
+Equisetum_ar ?????????????????????????????????????????????????? [681]
+Atrichum_angus ?????????????????????????????????????????????????? [660]
+Notothylas_bre ?????????????????????????????????????????????????? [651]
+Phaeoceros_lae ?????????????????????????????????????????????????? [661]
+Porella_pi ?????????????????????????????????????????????????? [682]
+Conocephal_con ?????????????????????????????????????????????????? [678]
+Asterella_tene ?????????????????????????????????????????????????? [663]
+Riccia ?????????????????????????????????????????????????? [674]
+Klebsormid_fla ?????????????????????????????????????????????????? [682]
+Coleochaet_nit ?????????????????????????????????????????????????? [663]
+Fissidens_taxi ?????????????????????????????????????????????????? [654]
+Plagiomnium_cu ?????????????????????????????????????????????????? [649]
+Micromonas_pus ?????????????????????????????????????????????????? [672]
+Mantoniel_squa ?????????????????????????????????????????????????? [654]
+Nephroselm_pyr ?????????????????????????????????????????????????? [663]
+Pedinomonas_mi ?????????????????????????????????????????????????? [648]
+Tetraselm_cart ?????????????????????????????????????????????????? [674]
+Enteromorpha ?????????????????????????????????????????????????? [671]
+Ulva_fasci ?????????????????????????????????????????????????? [659]
+Ulothrix_zo ?????????????????????????????????????????????????? [646]
+Cympolia_barba ?????????????????????????????????????????????????? [686]
+Batophora_oers ?????????????????????????????????????????????????? [672]
+Codium_decort ?????????????????????????????????????????????????? [677]
+Cladophoro ?????????????????????????????????????????????????? [666]
+Blastophysa_rh ?????????????????????????????????????????????????? [669]
+Trentepohlia ?????????????????????????????????????????????????? [673]
+Cephaleuro_par ?????????????????????????????????????????????????? [652]
+Characium_vac TCTGCC-TCT-GGTACGTACTGCGTTCGA---GCATCTTTCTGCTGGGGA [674]
+Dunaliella_par TCAGCC-TTT-GGTGAGTACTGCTACGGC---CCACCTTTCTGCCGGGGA [673]
+Chlamyd_reinha TCCGCC-TCT-GGTGTGCACTGCTCTGCT---CCACCTTCCTGCCGGGGA [676]
+Volvox_carteri TCCGCC-TCT-GGTGTGCACTGCTCTGCT---CCACCTTCCTGCCGGGGA [676]
+Chlorococc_min TCTGCC-TCT-GGTACGTACTGCGCCTGG---CCACCTTTCTGCTGGGGA [673]
+Draparn_plum ?????????????????????????????????????????????????? [661]
+Uronema_belk ?????????????????????????????????????????????????? [638]
+Chlamydom_moew ?????????????????????????????????????????????????? [660]
+Stephanos_pl ?????????????????????????????????????????????????? [669]
+Carteria_rad ?????????????????????????????????????????????????? [676]
+Gonium_pecto ?????????????????????????????????????????????????? [664]
+Chlorella_kess TCCGCCGTTTCGGTGTGCACTGGCAGGGC----CGCCTTGTTGCCGGGGA [679]
+Chlorella_vulg TCCGCCGTTTCGGTGTGCACTGGCAGGGC---TCACCTTGTTGCCGGGGA [681]
+Protothec_wic TCCGCCGTTTCGGTGTGCACTGGCGCGGC---GGTCTTTGTTGCTGGGGA [676]
+Chlorella_prot TCCCCCCGCCCTCTGCGCACTGGCATGGCG--CCCCCCTGTTGCTGGGGA [681]
+Chlorella_min TCCGCCGTTTCGGTGTGCACTGGCGGGGC---CCACCTTGTTGCCGGGGA [679]
+Neochloris_aqu TCCGCC-TAT-GGTGAGTACTGCTATGGC---CTTCCTTTCTGCCGGGGA [676]
+Neochloris_vig TCCGCC-TCT-GGTGAGTACTGCTATGGC---CTTCCTTTCTGCCGGGGA [676]
+Pediastrum_dup TCCGCC-TAT-GGTGAGTACTGCTACGGC---CTCCCTTTCTGCCGGGGA [677]
+Scenedesm_obl TCCGCC-TAT-GGTGAGTACTGCTATGGC---CTTCCTTTCTGTCGGGGA [677]
+Characium_hin TCCGCC-TAT-GGTGAGTACTGCTATGGC---CTTCCTTTCTGCCGGGGA [674]
+Chlorella_fus TCCGCC-TAT-GGTGAGTACTGCTATGGC---CTTCCTTTCTGTCGGGGA [677]
+Ankistrodesmus TCCGCC-TAT-GGTGAGTACTGCTGTGGC---CTTCCTTTTTGCCGGGGA [675]
+Pseudotreb_gig ?????????????????????????????????????????????????? [658]
+Pleurastr_terr ?????????????????????????????????????????????????? [671]
+Characium_per TCTGCCCTTTGGGTATGCATTGGCTTTGC---CTATCTTGCTGCCGGGGA [678]
+Parietochl_pse TCCGCCGTTTCGGTGTGCACTGGCGTGGC---CCACCTTGCTGCCGGGGA [678]
+Friedmannia_is TCCGCCGATTCGGTGTGCACTGGTCGCGC---CCATCTTGCTGCCGGGGA [679]
+
+[ 710 720 730 740 750]
+[ . . . . .]
+
+Glycine_max GCG---CTCCTGTCCTTAACTGGCCGGG-TCGTGCC-TCC-GGTGCTGTT [724]
+Oryza_sativa GCG---CTCCTGGCCTTAACTGGCCGGGTTCGTGCC-TCC-GGCGCCGTT [729]
+Zamia_pumila GCG---CACCTGGCCTTAACTGTCTGGG-TCGCGGT-TCC--ACGCTGTT [728]
+Psilotum_n ?????????????????????????????????????????????????? [734]
+Equisetum_ar ?????????????????????????????????????????????????? [731]
+Atrichum_angus ?????????????????????????????????????????????????? [710]
+Notothylas_bre ?????????????????????????????????????????????????? [701]
+Phaeoceros_lae ?????????????????????????????????????????????????? [711]
+Porella_pi ?????????????????????????????????????????????????? [732]
+Conocephal_con ?????????????????????????????????????????????????? [728]
+Asterella_tene ?????????????????????????????????????????????????? [713]
+Riccia ?????????????????????????????????????????????????? [724]
+Klebsormid_fla ?????????????????????????????????????????????????? [732]
+Coleochaet_nit ?????????????????????????????????????????????????? [713]
+Fissidens_taxi ?????????????????????????????????????????????????? [704]
+Plagiomnium_cu ?????????????????????????????????????????????????? [699]
+Micromonas_pus ?????????????????????????????????????????????????? [722]
+Mantoniel_squa ?????????????????????????????????????????????????? [704]
+Nephroselm_pyr ?????????????????????????????????????????????????? [713]
+Pedinomonas_mi ?????????????????????????????????????????????????? [698]
+Tetraselm_cart ?????????????????????????????????????????????????? [724]
+Enteromorpha ?????????????????????????????????????????????????? [721]
+Ulva_fasci ?????????????????????????????????????????????????? [709]
+Ulothrix_zo ?????????????????????????????????????????????????? [696]
+Cympolia_barba ?????????????????????????????????????????????????? [736]
+Batophora_oers ?????????????????????????????????????????????????? [722]
+Codium_decort ?????????????????????????????????????????????????? [727]
+Cladophoro ?????????????????????????????????????????????????? [716]
+Blastophysa_rh ?????????????????????????????????????????????????? [719]
+Trentepohlia ?????????????????????????????????????????????????? [723]
+Cephaleuro_par ?????????????????????????????????????????????????? [702]
+Characium_vac CGAG--CTCCTGGGCTTAATTGTCTGGG-ACTCGGAATC--AGCGAAGTG [719]
+Dunaliella_par CGTG--CTCCTGGGCTTAACTGTCCGGG-ACACGGAATC--GGCGAGGTT [718]
+Chlamyd_reinha CGGG--CTCCTGGGCTTCACTGTCTGGG-ACTCGGAGTC--GGCGAGGTT [721]
+Volvox_carteri CGGG--CTCCTGGGCTTCACTGTATGGG-ACTCGGAGTC--GGCGAGGTT [721]
+Chlorococc_min CG-C--CTCCTGGGCTTCACTGTCTGGGGGGTGGGAGTC--AGCGAAGTG [718]
+Draparn_plum ?????????????????????????????????????????????????? [711]
+Uronema_belk ?????????????????????????????????????????????????? [688]
+Chlamydom_moew ?????????????????????????????????????????????????? [710]
+Stephanos_pl ?????????????????????????????????????????????????? [719]
+Carteria_rad ?????????????????????????????????????????????????? [726]
+Gonium_pecto ?????????????????????????????????????????????????? [714]
+Chlorella_kess CGGG--CTCCTGGGCTTCACTGTCCGGG-ACTCGGAGTC--GGCGCTGTT [724]
+Chlorella_vulg CGGG--CTCCTGGGCTTCACTGTCCGGG-ACTCGGAGTC--GGCGCTGTT [726]
+Protothec_wic CGTG--CTCCTGGGCTTCACTGTCCGGG-ACTCGGAGTC--AGCGAGGTT [721]
+Chlorella_prot CGGCG-CTCCTGGGCTTTGCTGTCCGGG-GCCCGGAGTC--AGCGAGGTT [727]
+Chlorella_min CGGG--CTCCTGGGATTCA-TTTCCTGGGACTCGGAGTC--GGCGAGGTT [724]
+Neochloris_aqu CGGG--CTCCTGGGCTTAACTGTCCGGG-ACTCGGAGTC--GGCGTTGTT [721]
+Neochloris_vig CGG---CTCCTGGGCTTGACTGTCCGGG-ACTCGGAGTC--GGCGTTGTT [720]
+Pediastrum_dup CGAG--TTGCTGGGCTTCACTGTCCGGT-GCTTGGAGTC--GGCGTTGTT [722]
+Scenedesm_obl CGGG--CTTCTGGGCTTCACTGTCCGGG-ACTCGGAGTC--GACGTGGTT [722]
+Characium_hin CGGG--CTCCTGGGATTAACTTATCGGG-ACTCGGAGTC--GGCGTTGTT [719]
+Chlorella_fus CGGG--CTTCTGGGCTTAATTGTCCGGG-ACTCGGAGTC--GACGTGGTT [722]
+Ankistrodesmus CGGT--CTCCTGGGCTTCACTGTCCGGG-AATCGGAGTC--GGCGATGAT [720]
+Pseudotreb_gig ?????????????????????????????????????????????????? [708]
+Pleurastr_terr ?????????????????????????????????????????????????? [721]
+Characium_per -GGCG-CTCCTGGGCTTCATTGCTCGGG-ACGTTTAGTC--GGCGAGGTT [723]
+Parietochl_pse CGGG--CTCCTGGGCTTCACTGTCCGGG-ACTCGGAGTC--GGCGAGGTT [723]
+Friedmannia_is CAGG--CTGCTGGGCTTAACTGTCTGGC-ACCTGGAGTC--GGCGAGGTT [724]
+
+[ 760 770 780 790 800]
+[ . . . . .]
+
+Glycine_max ACTTTGAAGAAATTAGAGTGCTCAAAGCAAGC-CTACGCTCTGTATACAT [773]
+Oryza_sativa ACTTTGAAGAAATTAGAGTGCTCAAAGCAAGC-CATCGCTCTGGATACAT [778]
+Zamia_pumila ACTTTGAAAAAATTAGAGTGCTCAAAGCAAGC-TTATGCTCTGAATACAT [777]
+Psilotum_n ?????????????????????????????????????????????????? [784]
+Equisetum_ar ?????????????????????????????????????????????????? [781]
+Atrichum_angus ?????????????????????????????????????????????????? [760]
+Notothylas_bre ?????????????????????????????????????????????????? [751]
+Phaeoceros_lae ?????????????????????????????????????????????????? [761]
+Porella_pi ?????????????????????????????????????????????????? [782]
+Conocephal_con ?????????????????????????????????????????????????? [778]
+Asterella_tene ?????????????????????????????????????????????????? [763]
+Riccia ?????????????????????????????????????????????????? [774]
+Klebsormid_fla ?????????????????????????????????????????????????? [782]
+Coleochaet_nit ?????????????????????????????????????????????????? [763]
+Fissidens_taxi ?????????????????????????????????????????????????? [754]
+Plagiomnium_cu ?????????????????????????????????????????????????? [749]
+Micromonas_pus ?????????????????????????????????????????????????? [772]
+Mantoniel_squa ?????????????????????????????????????????????????? [754]
+Nephroselm_pyr ?????????????????????????????????????????????????? [763]
+Pedinomonas_mi ?????????????????????????????????????????????????? [748]
+Tetraselm_cart ?????????????????????????????????????????????????? [774]
+Enteromorpha ?????????????????????????????????????????????????? [771]
+Ulva_fasci ?????????????????????????????????????????????????? [759]
+Ulothrix_zo ?????????????????????????????????????????????????? [746]
+Cympolia_barba ?????????????????????????????????????????????????? [786]
+Batophora_oers ?????????????????????????????????????????????????? [772]
+Codium_decort ?????????????????????????????????????????????????? [777]
+Cladophoro ?????????????????????????????????????????????????? [766]
+Blastophysa_rh ?????????????????????????????????????????????????? [769]
+Trentepohlia ?????????????????????????????????????????????????? [773]
+Cephaleuro_par ?????????????????????????????????????????????????? [752]
+Characium_vac ACCTTGAGCAAACAAGAGTGTTCAAAGCAAGC-CTACGCTCTGAATTTTT [768]
+Dunaliella_par ACTTTGAGTAAATTAGAGTGTTCAAAGCAAGC-CTACGCTCTGAATACAT [767]
+Chlamyd_reinha ACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-CTACGCTCTGAATACAT [770]
+Volvox_carteri ACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-CTACGCTCTGAATACAT [770]
+Chlorococc_min ACCTTGAGCAAACAAGAGAGTTCAAAGCAAGC-CTACGCTCTGAATTTTT [767]
+Draparn_plum ?????????????????????????????????????????????????? [761]
+Uronema_belk ?????????????????????????????????????????????????? [738]
+Chlamydom_moew ?????????????????????????????????????????????????? [760]
+Stephanos_pl ?????????????????????????????????????????????????? [769]
+Carteria_rad ?????????????????????????????????????????????????? [776]
+Gonium_pecto ?????????????????????????????????????????????????? [764]
+Chlorella_kess ACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-CTACGCTCTGAATACAT [773]
+Chlorella_vulg ACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-CTACGCTCTGAATACAT [775]
+Protothec_wic ACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-TACCGCTCTGAATACAT [770]
+Chlorella_prot ACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-ATCCGCTCTGAATACAT [776]
+Chlorella_min ACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-CTACGCTCTGAATACAT [773]
+Neochloris_aqu ACTTTGAGTAAATTGGAGTGTTCAAAGCAAGC-CTGCGCTCTGAACATTT [770]
+Neochloris_vig ACTTTGAGTAAATTGGAGTGTTCAAAGCAAGC-CTGCGCTCTGAACATTT [769]
+Pediastrum_dup ACTTTGAGTAAATTAGAGTGTTCAAAGCAACG-ATACGCCCTGAATACTT [771]
+Scenedesm_obl ACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-TTACGCCA-GAATACTT [770]
+Characium_hin ACTTTGAGTAAATTAGAGTGTTCAAAGCAAGC-CTGCGCTCTGAATACTT [768]
+Chlorella_fus ACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-TTACGCCCTGAATACTT [771]
+Ankistrodesmus ACTTTGAGTAAATTAGAGTGTTCAAAGCAAGC-CTACGCTCTGAATACTT [769]
+Pseudotreb_gig ?????????????????????????????????????????????????? [758]
+Pleurastr_terr ?????????????????????????????????????????????????? [771]
+Characium_per ACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-CTACGCTTTGCATACAT [772]
+Parietochl_pse ACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-CTACGCTCTGAATACAT [772]
+Friedmannia_is ACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-CTACGCTCTGAATACAT [773]
+
+[ 810 820 830 840 850]
+[ . . . . .]
+
+Glycine_max TAGCATGGGATAACACCACAGGATTCTGATCCTATTGTGTTGGCCTTCGG [823]
+Oryza_sativa TAGCATGGGATAACATCATAGGATTCCGGTCCTATTGTGTTGGCCTTCGG [828]
+Zamia_pumila TAGCATGGAATAACGGTATAGGATTCTGGTCCTATTGCGTTGGCCTTCGG [827]
+Psilotum_n ?????????????????????????????????????????????????? [834]
+Equisetum_ar ?????????????????????????????????????????????????? [831]
+Atrichum_angus ?????????????????????????????????????????????????? [810]
+Notothylas_bre ?????????????????????????????????????????????????? [801]
+Phaeoceros_lae ?????????????????????????????????????????????????? [811]
+Porella_pi ?????????????????????????????????????????????????? [832]
+Conocephal_con ?????????????????????????????????????????????????? [828]
+Asterella_tene ?????????????????????????????????????????????????? [813]
+Riccia ?????????????????????????????????????????????????? [824]
+Klebsormid_fla ?????????????????????????????????????????????????? [832]
+Coleochaet_nit ?????????????????????????????????????????????????? [813]
+Fissidens_taxi ?????????????????????????????????????????????????? [804]
+Plagiomnium_cu ?????????????????????????????????????????????????? [799]
+Micromonas_pus ?????????????????????????????????????????????????? [822]
+Mantoniel_squa ?????????????????????????????????????????????????? [804]
+Nephroselm_pyr ?????????????????????????????????????????????????? [813]
+Pedinomonas_mi ?????????????????????????????????????????????????? [798]
+Tetraselm_cart ?????????????????????????????????????????????????? [824]
+Enteromorpha ?????????????????????????????????????????????????? [821]
+Ulva_fasci ?????????????????????????????????????????????????? [809]
+Ulothrix_zo ?????????????????????????????????????????????????? [796]
+Cympolia_barba ?????????????????????????????????????????????????? [836]
+Batophora_oers ?????????????????????????????????????????????????? [822]
+Codium_decort ?????????????????????????????????????????????????? [827]
+Cladophoro ?????????????????????????????????????????????????? [816]
+Blastophysa_rh ?????????????????????????????????????????????????? [819]
+Trentepohlia ?????????????????????????????????????????????????? [823]
+Cephaleuro_par ?????????????????????????????????????????????????? [802]
+Characium_vac TAGCATGGAATCACACGATAGGACTCTGG-CCTATCTTGTTGGTCTGTAG [817]
+Dunaliella_par TAGCATGGAATAACACGATAGGACTCTGG-CTTATCTTGTTGGTCTGTAA [816]
+Chlamyd_reinha TAGCATGGAATAACACGATAGGACTCTGG-CCTATCT-GTTGGTCTGTGG [818]
+Volvox_carteri TAGCATGGAATAACACGATAGGACTCTGG-CCTATCT-GTTGGTCTGTGG [818]
+Chlorococc_min TAGCATGGAATCACACGATAGGACTGTGG-CCTATCTTGTTGGTCTGTGG [816]
+Draparn_plum ?????????????????????????????????????????????????? [811]
+Uronema_belk ?????????????????????????????????????????????????? [788]
+Chlamydom_moew ?????????????????????????????????????????????????? [810]
+Stephanos_pl ?????????????????????????????????????????????????? [819]
+Carteria_rad ?????????????????????????????????????????????????? [826]
+Gonium_pecto ?????????????????????????????????????????????????? [814]
+Chlorella_kess TAGCATGGAATAACACGATAGGACTCTGG-CCTATCCTGTTGGTCTGTAG [822]
+Chlorella_vulg TAGCATGGAATAACACGATAGGACTCTGG-CCTATCCTGTTGGTCTGTAG [824]
+Protothec_wic TAGCATGGAATAACATGATAGGACTCTGG-CTTATCTTGTTGGTCTGTAA [819]
+Chlorella_prot TAGCATGGAATAACATGATAGGACTCTGG-CTTATCACGTTGGTCTGTAA [825]
+Chlorella_min TAGCATGGAATAACACGATAGGACTCTGG-CCTATCCTGTTGGTCTGTAG [822]
+Neochloris_aqu TAGCATGGAATAACACGATAGGACTCTGG-CCTATCCTGTTGGTCTGTAG [819]
+Neochloris_vig TAGCATGGAATAACACGATAGGACTCTGG-CCTATCCTGTTGGTCTGTAG [818]
+Pediastrum_dup TAGCATGGAATAACACGATAGGACTCTGG-CCTATCTTGTTGGTCTGTAG [820]
+Scenedesm_obl TAGCATGGAATAACACGATAGGACTCTGG-CCTATCTTGTTGGTCTGTAG [819]
+Characium_hin TAGCATGGAATAACACGATAGGACTCTGG-CCTATCTTGTTGGTCTGTAG [817]
+Chlorella_fus TAGCATGGAATAACACGATAGGACTCTGG-CCTATCTTGTTGGTCTGTAG [820]
+Ankistrodesmus TAGCATGGAATATCGCGATAGGACTCTGG-CCTATCTCGTTGGTCTGTAG [818]
+Pseudotreb_gig ?????????????????????????????????????????????????? [808]
+Pleurastr_terr ?????????????????????????????????????????????????? [821]
+Characium_per CAGCATGGAATATCACGAGAGGACTCTGG-CCTATCTTGTTGGTCTGTGG [821]
+Parietochl_pse TAGCATGGAATAACACGATAGGACTCTGG-CCTATCTTGTTGGTCTGTGG [821]
+Friedmannia_is TAGCATGGAATAACACGATAGGACTCTGG-CCTATCTCGTTGGTCTGTGG [822]
+
+[ 860 870 880 890 900]
+[ . . . . .]
+
+Glycine_max GATCGGA-GTAATGATTAACAGGGACAGTCGGGGGCATTCGTATTTCATA [872]
+Oryza_sativa GATCGGA-GTAATGATTAATAGGGACAGTCGGGGGCATTCGTATTTCATA [877]
+Zamia_pumila GACCGGA-GTAATGATTAACAGGGACGGTCGGGGGCATTCGTATTTCATT [876]
+Psilotum_n ?????????????????????????????????????????????????? [884]
+Equisetum_ar ?????????????????????????????????????????????????? [881]
+Atrichum_angus ?????????????????????????????????????????????????? [860]
+Notothylas_bre ?????????????????????????????????????????????????? [851]
+Phaeoceros_lae ?????????????????????????????????????????????????? [861]
+Porella_pi ?????????????????????????????????????????????????? [882]
+Conocephal_con ?????????????????????????????????????????????????? [878]
+Asterella_tene ?????????????????????????????????????????????????? [863]
+Riccia ?????????????????????????????????????????????????? [874]
+Klebsormid_fla ?????????????????????????????????????????????????? [882]
+Coleochaet_nit ?????????????????????????????????????????????????? [863]
+Fissidens_taxi ?????????????????????????????????????????????????? [854]
+Plagiomnium_cu ?????????????????????????????????????????????????? [849]
+Micromonas_pus ?????????????????????????????????????????????????? [872]
+Mantoniel_squa ?????????????????????????????????????????????????? [854]
+Nephroselm_pyr ?????????????????????????????????????????????????? [863]
+Pedinomonas_mi ?????????????????????????????????????????????????? [848]
+Tetraselm_cart ?????????????????????????????????????????????????? [874]
+Enteromorpha ?????????????????????????????????????????????????? [871]
+Ulva_fasci ?????????????????????????????????????????????????? [859]
+Ulothrix_zo ?????????????????????????????????????????????????? [846]
+Cympolia_barba ?????????????????????????????????????????????????? [886]
+Batophora_oers ?????????????????????????????????????????????????? [872]
+Codium_decort ?????????????????????????????????????????????????? [877]
+Cladophoro ?????????????????????????????????????????????????? [866]
+Blastophysa_rh ?????????????????????????????????????????????????? [869]
+Trentepohlia ?????????????????????????????????????????????????? [873]
+Cephaleuro_par ?????????????????????????????????????????????????? [852]
+Characium_vac GACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATT [866]
+Dunaliella_par GACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATT [865]
+Chlamyd_reinha GACCGGA-GTAATGATTAAGAGGGGTAGTCGGGGGCATTCGTATTCCGTT [867]
+Volvox_carteri GATCGGA-GTAATGATTAAGAGGGGTAGTCGGGGGCATTCGTATTCCGTT [867]
+Chlorococc_min GACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATT [865]
+Draparn_plum ?????????????????????????????????????????????????? [861]
+Uronema_belk ?????????????????????????????????????????????????? [838]
+Chlamydom_moew ?????????????????????????????????????????????????? [860]
+Stephanos_pl ?????????????????????????????????????????????????? [869]
+Carteria_rad ?????????????????????????????????????????????????? [876]
+Gonium_pecto ?????????????????????????????????????????????????? [864]
+Chlorella_kess GACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCGAT [871]
+Chlorella_vulg GACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATT [873]
+Protothec_wic GACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATT [868]
+Chlorella_prot GACCGGA-GTAATGATTGAGAGGGACAGTCGGGGGCATTCGTATTTCATT [874]
+Chlorella_min GACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATT [871]
+Neochloris_aqu GACCAGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATT [868]
+Neochloris_vig GACCAGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATT [867]
+Pediastrum_dup GACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATT [869]
+Scenedesm_obl GACCGGA-GTAATGATTAAGAG?GACAGTCGGGGGCATTCGTATTTCATT [868]
+Characium_hin GACCAGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATT [866]
+Chlorella_fus GACTGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATT [869]
+Ankistrodesmus GACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATT [867]
+Pseudotreb_gig ??????????????????????????????????????????????CATT [858]
+Pleurastr_terr ?????????????????????????????????????????????????? [871]
+Characium_per GACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATT [870]
+Parietochl_pse GACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATT [870]
+Friedmannia_is GACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATT [871]
+
+[ 910 920 930 940 950]
+[ . . . . .]
+
+Glycine_max GTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACAACTGCGAAAGCA [922]
+Oryza_sativa GTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACAACTGCGAAAGCA [927]
+Zamia_pumila GTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACCACTGCGAAAGCA [926]
+Psilotum_n ?????????????????????????????????????????????????? [934]
+Equisetum_ar ?????????????????????????????????????????????????? [931]
+Atrichum_angus ????????????????????????????????????CTTCTGCGAAAGCA [910]
+Notothylas_bre ?????????????????????????????????????????????????? [901]
+Phaeoceros_lae ?????????????????????????????????????????????????? [911]
+Porella_pi ?????????????????????????????????????????????????? [932]
+Conocephal_con ?????????????????????????????????????????????????? [928]
+Asterella_tene ????????????????????????????????????CTTCTGCGAAAGCA [913]
+Riccia ????????????????????????????????????????????AAAGCA [924]
+Klebsormid_fla ?????????????????????????????????????????????????? [932]
+Coleochaet_nit ?????????????????????????????????????????????????? [913]
+Fissidens_taxi ?????????????????????????????????????????????????? [904]
+Plagiomnium_cu ????????TGAAATTCTTGGATTTATGAAAGACGAACTTCTGCGAAAGCA [899]
+Micromonas_pus ?????????????????????????????????????????????????? [922]
+Mantoniel_squa ?????????????????????????????????????????????????? [904]
+Nephroselm_pyr ?????????????????????????????????????????????????? [913]
+Pedinomonas_mi ?????????????????????????????????????????????????? [898]
+Tetraselm_cart ???????????????????????????????????????????????GCA [924]
+Enteromorpha ?????????????????????????????????????????????????? [921]
+Ulva_fasci ?????????????????????????????????????????????????? [909]
+Ulothrix_zo ???????????????????????????????????????????????GCA [896]
+Cympolia_barba ????????????????????????????????????????????AAAGCA [936]
+Batophora_oers ???????????????????????????????GGATCCAACTGCGAAAGCA [922]
+Codium_decort ???????????????????????????????????CCTAAGCGAAAGCAG [927]
+Cladophoro ???????????????????????????????????????TGCGAAAGCA- [915]
+Blastophysa_rh ??????????????????????????CCGATAGACGAACCATCTGAAGAT [919]
+Trentepohlia ???????????????????????ACGGAAGACGAACTTCTGCGAAAGCAT [923]
+Cephaleuro_par ?????????????????????????????????????????????????? [902]
+Characium_vac GTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTTCTGCGAAAGCA [916]
+Dunaliella_par GTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTTCTGCGAAAGCA [915]
+Chlamyd_reinha GTCAGAGGTGAAATTCTTGGATTTACGGAAGACGAACATCTGCGAAAGCA [917]
+Volvox_carteri GTCAGAGGTGAAATTCTTGGATTTACGGAAGACGAACATCTGCGAAAGCA [917]
+Chlorococc_min GTCAGAGGTGAAATTCTTGGATTTATGAAACACGAACATCTGCGAAAGCA [915]
+Draparn_plum ?????????????????????????????????????????????????? [911]
+Uronema_belk ???????????????????????????????????????????GAAAGCA [888]
+Chlamydom_moew ????????TGAAATTCTTGGATTTCGGAAAGACCTACCACTGCGAA?GCA [910]
+Stephanos_pl ?????????????????????????????????????????????????? [919]
+Carteria_rad ?????????????????????????????????????????????????? [926]
+Gonium_pecto ?????????????????????????????????????????????????? [914]
+Chlorella_kess GTCAGAGGTGAAATTCTTGGATTTTCGAAAGACGAACTACTGCGAAAGCA [921]
+Chlorella_vulg GTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTACTGCGAAAGCA [923]
+Protothec_wic GTCAGAGGTGAAATTCTTGGATTTATGAAAGAC?AACTACTGCGAAAGCA [918]
+Chlorella_prot GTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTACTGCGAAAGCA [924]
+Chlorella_min GTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTACTGCGAAAGCA [921]
+Neochloris_aqu GTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTACTGCGAAAGCA [918]
+Neochloris_vig GTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTACTGCGAAAGCA [917]
+Pediastrum_dup GTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTACTGCGAAAGCA [919]
+Scenedesm_obl GTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTACTGCGAAAGCA [918]
+Characium_hin GTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTACTGCGAAAGCA [916]
+Chlorella_fus GTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTACTGCGAAAGCA [919]
+Ankistrodesmus GTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTACTGCGAAAGCA [917]
+Pseudotreb_gig GTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTTCTGCGAAAGCA [908]
+Pleurastr_terr ?????????????????????????????????????????????????? [921]
+Characium_per GTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTTCTGCGAAAGCA [920]
+Parietochl_pse GTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTACTGCGAAAGCA [920]
+Friedmannia_is GTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTTCTGCGAAAACG [921]
+
+[ 960 970 980 990 1000]
+[ . . . . .]
+
+Glycine_max TTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAG [972]
+Oryza_sativa TTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAG [977]
+Zamia_pumila TTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAG [976]
+Psilotum_n ?????????????????????????AAGAACGAAAGTTGGG--CTCGAAG [982]
+Equisetum_ar ?????????????????????????AAGAACGAAAGTTGG---CTCGAAG [978]
+Atrichum_angus TTTGCCAAGGATGTTTTCATTAATCAAG???GAAAGTTGGGGGCTCGAAG [960]
+Notothylas_bre ????????????????????????????????AAAGTTGGGG-CTCGAAG [950]
+Phaeoceros_lae ???????????????????????????????GAAAGTTGGG--CTCGAAG [959]
+Porella_pi ?????????????????????????AA?AAC?AAAGTTGGG--CTCGAA- [979]
+Conocephal_con ??????AAGGATGTTT--ATTAA--AA-AA-GAAA-TTG-------GAAG [964]
+Asterella_tene TTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAG [963]
+Riccia TTTGCCAAGGATGTTTTCATTAAT-AACAA--AAAGTTGG?GGCTCGAAG [971]
+Klebsormid_fla ??????AAGGATGTTTTCATTAAT---GA--GAAAGTTGGGGGCTCGAAG [977]
+Coleochaet_nit ?????????????????CATTAATCAAGAA-GAAAGTTGGGGGCTCGAAG [962]
+Fissidens_taxi ???????????????????????????????????????????CTCGAAG [954]
+Plagiomnium_cu TTTGCCAAGGATGTTTTCGTTAATCAA-AA-GAAAGTTGGGGGCTCGAAG [947]
+Micromonas_pus ????????????????????????????????AAAGTTGGGGGCTCGAAG [972]
+Mantoniel_squa ?????????????????????????????????????????????????G [954]
+Nephroselm_pyr ????????????????????????????????????????GGGCTCGGAG [963]
+Pedinomonas_mi ???????????????????????????????????????GGGGATCGAAG [948]
+Tetraselm_cart TTTGTCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAG [974]
+Enteromorpha ????????????????????????????????????????GGGCTCGAAG [971]
+Ulva_fasci ???????????????????????????????????????GGGGCTCGAAG [959]
+Ulothrix_zo TT-GCCAAGGATGTTTTCATTGATCAACAA-GAAAGTTGGGGGCTC---- [940]
+Cympolia_barba TTTGTCAAGGGTATCTTCATTGATCAAGAAC---AGTTGGGGGATCG--G [981]
+Batophora_oers TTCC----GGGCGCTCTCGTTGATCAAGAAC---AGTTGGGGGATCGAAG [965]
+Codium_decort TCGCCAAGGACACTTCCTTGTGATCAAGA-CGAAAGTT--GGGATCGAAG [974]
+Cladophoro TTGCCAAGGACGCTTTCATTA-GTCAAGGACGAAAGTCGGGGGATCGAAG [964]
+Blastophysa_rh TTGCCAAGGATCGTTTTCTTTGATC------GAAAGTTGGGGGCTCGAAG [963]
+Trentepohlia TTG-CAAGGATGTTTTCATT-GATCAAGAA-GAAAGTCGG-GGCTCGAAG [969]
+Cephaleuro_par ??????????????????????????????????GTCGG-GGGCTCG-CG [950]
+Characium_vac TTTGCCAAGGATGTTTTCATTGATCAAGAACGAAAGTTGGGGGCTCGAAG [966]
+Dunaliella_par TTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAG [965]
+Chlamyd_reinha TTGGCCAAGGATACTTTCATTGATCAAGAACGAAAGTTGGGGGCTCGAAG [967]
+Volvox_carteri TTTGCCAAGGATACTTTCATTGATCAAGAACGAAAGTTGGGGGCTCGAAG [967]
+Chlorococc_min TTTGCCAAGGATGTTTTCATTGATCAAGAACGAAAGTTGGGGGCTCGAAG [965]
+Draparn_plum ?????????????????????????AA???CGAAAGTT-GGGGCTCGAAG [960]
+Uronema_belk TTTGCCAAGT?TGTCTTCATTAATCAA-AA-GAAAGTTGGGGGCTCGAAG [936]
+Chlamydom_moew TTTGCCAAGGATGTTTTCATT?ATCAAGAA?GAAAGTAGGGGGCTCGAAG [960]
+Stephanos_pl ???????????????????????????????????????????CTCGAAG [969]
+Carteria_rad ?????????????????????????AA-A--GAAA-TTGG-GGCTCGAAG [971]
+Gonium_pecto ??????????????????????????????????????????GCTCGAAG [964]
+Chlorella_kess TTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAG [971]
+Chlorella_vulg TTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAG [973]
+Protothec_wic TTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAG [968]
+Chlorella_prot TTTGCCAAGGATGTTTTCATTGATCAAGAACGAAAGTTGGGGGCTCGAAG [974]
+Chlorella_min TTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAG [971]
+Neochloris_aqu TTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAG [968]
+Neochloris_vig TTTGCCAAGGATGTTT-CATTAATCAAGAACGAAAGTTGGGGGCTCGAAG [966]
+Pediastrum_dup TTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAG [969]
+Scenedesm_obl TTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAG [968]
+Characium_hin TTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAG [966]
+Chlorella_fus TTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAG [969]
+Ankistrodesmus TTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAG [967]
+Pseudotreb_gig TTTGCCAAGGATGTTTTCATTAATC--GAA-GAAAGTTGGGGGCTCGAAG [955]
+Pleurastr_terr ???????????????????????????????GAAAGTT-GGGGCTC-AAG [969]
+Characium_per TTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAG [970]
+Parietochl_pse TTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAG [970]
+Friedmannia_is TTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAG [971]
+
+[ 1010 1020 1030 1040 1050]
+[ . . . . .]
+
+Glycine_max ACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CCAGGG [1020]
+Oryza_sativa ACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CCAGGG [1025]
+Zamia_pumila ACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CCAGGG [1024]
+Psilotum_n ACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGG- [1029]
+Equisetum_ar AC-ATCA?ATACCG-TCCTAGTCTCAACCATAAACGA-GC?GA-CTAGGG [1024]
+Atrichum_angus ACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGG [1008]
+Notothylas_bre ACGATCAGATAC---TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGG [996]
+Phaeoceros_lae ACGAT-AG-TACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGG [1005]
+Porella_pi ACGAT-AGATACCG-TCCTAGTCTCAACCATAAACGATGCCGAGCTAGGG [1027]
+Conocephal_con ACGATCAGATACC---CCTAGTCTCAACCATAAACGATGCCGA-CTAG-- [1008]
+Asterella_tene ACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGG- [1010]
+Riccia ACGATCAGATACC--TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGG [1018]
+Klebsormid_fla ACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGG [1025]
+Coleochaet_nit ACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGACCTAGG- [1010]
+Fissidens_taxi ACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGG [1002]
+Plagiomnium_cu ACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGG [995]
+Micromonas_pus ATGATTAGATA--A-TCCTAGTCTCAACCATAAACGATGC?GA-CTAGGG [1018]
+Mantoniel_squa ATGATTA-ATAC-A-TC-TAGTCTC-ACCATAAACGGAYCYGA-CWA--G [996]
+Nephroselm_pyr ATGATTAG---CCA-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGG [1008]
+Pedinomonas_mi ACGATCAGATACC--TC-TAGTCTCTACCATAAACTAT-CCGA-CTAGGG [993]
+Tetraselm_cart ACGATTAGATACCG-TCCTAGTCTC-ACCAT-AACGA--CCGA-C-AGGG [1017]
+Enteromorpha ACGATTAGATACCG-TCGTAGTCTCAACCATAAACGAT-CCGA-CCAGGG [1018]
+Ulva_fasci ACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGG [1007]
+Ulothrix_zo ----TYAGATACCG-TCG-AG-C-CAACCATAA-CGAYGCC-A--TAGG- [977]
+Cympolia_barba ATGATTAGATACCA-TCCTAGTCTCAACCATAAACCATGCCAA-TTAGGG [1029]
+Batophora_oers ATGATTAGATACCA-TCCTAGTCTCAACCATAAACTATGCCAA-Y-AGGG [1012]
+Codium_decort ATGATT--ATACCG-TCGTAGTCCCAACTGTAAACTATGCCAT-CTGGGG [1020]
+Cladophoro ACGATTAGATA-CG-TCGTAGTCTCGACCATAAACGATGCCAA-TTAGGG [1011]
+Blastophysa_rh ATGATTAGATACCGGTCGTAGTCTCAACCATAAAC-ATGCCCA-CTA--G [1009]
+Trentepohlia ACGATTAGATACCG-TCGTAGTCTCGACCATAAACGATGCCGA-CTAGGG [1017]
+Cephaleuro_par -CGCTT-GGTACCG-TCGTAGTCTCGACCATAAACGATGCCG--CTAGGG [995]
+Characium_vac ACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGG [1014]
+Dunaliella_par ACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGG [1013]
+Chlamyd_reinha ACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGG [1015]
+Volvox_carteri ACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGG [1015]
+Chlorococc_min ACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGG [1013]
+Draparn_plum ACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGG- [1007]
+Uronema_belk ACGATTAGATACCG-T-GTAGTCTCAACCATAAACGATGCCGA-CTAGG- [982]
+Chlamydom_moew ACGATTAGATACCG-TCGTAGTCTCTACCATAAACGATGCCGA-CCAGGG [1008]
+Stephanos_pl ACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGG [1017]
+Carteria_rad ACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGG [1019]
+Gonium_pecto ACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGG [1012]
+Chlorella_kess ACGATTAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGG [1019]
+Chlorella_vulg ACGATTAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGG [1021]
+Protothec_wic ACGATTAGATACCG-TCCTAGTCTCAACCGTAAACGATGCCGA-CTAGGG [1016]
+Chlorella_prot ACGATTAGATACCG-TCCTAGTCTCAACCGTAAACGATGCCGA-CTCGGG [1022]
+Chlorella_min ACGATTAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGG [1019]
+Neochloris_aqu ACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGG [1016]
+Neochloris_vig ACGATTAGATACCG-TCGTAGACTCAACCATAAACGATGCCGA-CTAGGG [1014]
+Pediastrum_dup ACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGG [1017]
+Scenedesm_obl ACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGG [1016]
+Characium_hin ACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGG [1014]
+Chlorella_fus ACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGG [1017]
+Ankistrodesmus ACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGG [1015]
+Pseudotreb_gig ACGATTAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGG [1003]
+Pleurastr_terr WCGATT-GATACCG-T--TAGWCTCAAY--TA-WCGATGCC-A--TAGG- [1008]
+Characium_per ACGATTAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGG [1018]
+Parietochl_pse ACGATTAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGG [1018]
+Friedmannia_is ACGATTAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGG [1019]
+
+[ 1060 1070 1080 1090 1100]
+[ . . . . .]
+
+Glycine_max ATCAGCGGATGTTGCTTTTAGGACTCCGCTGGCACCTTAT-GAGAAATCG [1069]
+Oryza_sativa ATCGGCGGATGTTGCTTATAGGACTCCGCCGGCACCTTAT-GAGAAATCA [1074]
+Zamia_pumila ATCGGCGGATGTTGCTCTAAGGACTCCGCCGGCACCTTAT-GAGAAATCA [1073]
+Psilotum_n -TC-GCGGATGTTACCTTGATGACTCCGCCGGCACCTTAT--AGAAATC- [1074]
+Equisetum_ar ATT--CGGATGTTACTTCAATGACTCTGCCGGCACCTTAT-GAGAAATCA [1071]
+Atrichum_angus ATTTGCGGGTGTTAATTTGATGACCCCG-AAGCACCTTAT-GAGAAATC- [1055]
+Notothylas_bre ATTGGCGGGTGTTAATTAGATGACTCCGCCAGCACCTTAT-GAGAAATCA [1045]
+Phaeoceros_lae ATTGGCGGATGTTAATTAGATGACTCCGCCAGCACCTTAT-GAGAAATCA [1054]
+Porella_pi ATTG--GGATGTTAATTTGATGACTCCGC-AGCACCTTAT-GAGAAATCA [1073]
+Conocephal_con ATC--CGGATGT?CTTTTGATGACTCCGCCGGCACCTCCA-GAGAAATCA [1055]
+Asterella_tene ATCG--GGATGT?GATTAGATGACTCCGCCGGCACCTCCATGAGAAATCA [1058]
+Riccia ATCGGCGGATGT?GATTTGATGACTCCGCCGGCACCTCCT-GAGAAATCA [1067]
+Klebsormid_fla ATTGGCGGATGTTAATTTGATGACTCCGCCAGCACCTTAT-GAGAAATC- [1073]
+Coleochaet_nit ATCAACGGATGTTAATTTAATGACTCCGCCAGCACCTTAT--AGAAA-CA [1057]
+Fissidens_taxi ATTGGCGGGTGTTGATTTGATGACCCCGCCAGCACCTTGA-GAGAAAT-- [1049]
+Plagiomnium_cu ATTGGCGGGTGTTGATTCGATGACCCCGCCAGCACCTTAT-GAGAAATC- [1043]
+Micromonas_pus A--GGCGGATGTTAATT-GATGACTCCGC-AGCACCTTAT-GAGAAATCA [1063]
+Mantoniel_squa ATTCAC--ATCTTAAT---AT--CTC--CCA-CACCTTAT--A-AAATC- [1032]
+Nephroselm_pyr ATTGGCAGATGTTAGTTCGATGACTCTGCCAGCACCTTAT--AGAAATC- [1055]
+Pedinomonas_mi ATTGGTGGACGTT-GTTTT?CGACTCCATCAGCACCTTAT-GAGAAATCA [1041]
+Tetraselm_cart ATTGGCAGA--TT--TT--ATG--TCTGCCAGCACCTTAT-GAGAAAT-A [1057]
+Enteromorpha ATTGCCGGGTGTTTTTTTGATGACTCCGCCAGCACCTCAT-GAGAAATCA [1067]
+Ulva_fasci ATTGGCGGGGTGTTTTTTTATGACTCCGC-AGCACCTCAT-GAGAAATCA [1055]
+Ulothrix_zo AT-GGCGGGYGTTTTTTT--TG-CTCCGC-ACA-CCTTAT-GAGAAATCA [1020]
+Cympolia_barba ATCGTTGAGC-GTTGATTAGTGACCTCGTCGGCACCATAT-TAGAAATTA [1077]
+Batophora_oers ATCGGC-GGGGT-CTTTA-C-GTGTCCTCGTCGGCCCCTT-GAGAAA-CA [1056]
+Codium_decort ATCGG--GGCTG-ATGAATTGCCG-CCG-GCACCCTCCGA-GAAATTAAA [1064]
+Cladophoro ATTGGA-GGGCGGATAGATAT-CCTCCTCCAGCACCTTCC-GCGAAAGCA [1058]
+Blastophysa_rh ATCAGG-AG--ATTTAT-TTCGACTTCTCCGGCACTCCAT-GAGAAATCA [1054]
+Trentepohlia ATCGGA-GG-TTTTTTTTA-TGACCTCTCCGG-ACCT--A-CAGAAATCA [1060]
+Cephaleuro_par ATCGGA-GGTGGGTTTTTTATG-CCTCTCCGGGCACCTTC-GAGAAATCA [1042]
+Characium_vac ATTGGCAGGTGTTCAATTGATGACCCTGCCAGCACCTTAT-GAGAAATCA [1063]
+Dunaliella_par ATTGGCAGGTGTTTCGTTGATGACCCTGCCAGCACCTTAT-GAGAAATCA [1062]
+Chlamyd_reinha ATTGGCAGATGTTCTTTTGATGACTCTGCCAGCACCTTAT-GAGAAATCA [1064]
+Volvox_carteri ATTGGCAGATGTTCTTTTGATGACTCTGCCAGCACCTTAT-GAGAAATCA [1064]
+Chlorococc_min ATTGGCGGGCGTCCTTTTGATGACCCCGCCGGCACCTTAT-GAGAAATCA [1062]
+Draparn_plum ATCGGT?GGAGTTTTTTCGAT-ACTCCATGGGCACCTTAT-GAGAAATC- [1054]
+Uronema_belk ATCGGTGGA--TTTTTT-----ACTCCGTGGGCACCTTAT-GAGAAATC- [1023]
+Chlamydom_moew ATTGGCAGGTGTTCCTTTGATGACCCTGCCAGCACCTTGA-GAGAAATCA [1057]
+Stephanos_pl ATTGGCAGGTGTTTCGTTGATGACCCTGCCAGCACCTTAT-GAGAAATC- [1065]
+Carteria_rad ATTGGCAGGCGTTTTGTTAACGACCCTGC-AGCACCTTAT--AGAAATC- [1065]
+Gonium_pecto ATTGGCAGATGTTCCTTTGATGACTCTGCCAGCACCTTAT-GAGAAATCA [1061]
+Chlorella_kess ATCGGCGGATGTTTCTTCGATGACTCCGCCGGCACCTTAT-GAGAAATCA [1068]
+Chlorella_vulg ATCGGCGGATGTTTCTTCGATGACTCCGCCGGCACCTTAT-GAGAAATCA [1070]
+Protothec_wic ATCGGCGGACGTTCTATCGATGACTCCGCCGGCACCTTAT-GAGAAATCA [1065]
+Chlorella_prot ATCGGTGGTCGTTCATTCAATGACACCACCGGCACCTCAT-GAGAAATCA [1071]
+Chlorella_min ATCGGCGGGTGTTCTTTTGATGACCCCGCCGGCACCTTAT-GAGAAATCA [1068]
+Neochloris_aqu ATTGGCGGACGTTTCATTGATGACTCCGCCAGCACCTTAT-GAGAAATCA [1065]
+Neochloris_vig ATTTGCGGACGTTTCATTGATGACTCCGCCAGCACCTTGT-GAGAAATCA [1063]
+Pediastrum_dup ATTGGCGGATGTTTTTTTGATGACTCCGCCAGCACCTTAT-GAGAAATCA [1066]
+Scenedesm_obl ATTGGCGAATGTTTTTTTAATGACTTCGCCAGCACCTTAT-GAGAAATCA [1065]
+Characium_hin ATTGGCGAACGTTTCATTGATGACTTCGCCAGAACCTTAT-GAGAAATCA [1063]
+Chlorella_fus ATTGGCGAATGTTTTTTTAATGACTTCGCCAGCACCTTAT-GAGAAATCA [1066]
+Ankistrodesmus ATTGGAGGATGTTCTTTTGATGACTTCTCCAGCACCTTAT-GAGAAATCA [1064]
+Pseudotreb_gig ATTGGCGGGTGTTCTTTCGATGACCCCGCCAGCACCTTAT-GAGAAATC- [1051]
+Pleurastr_terr ATTGTGCCGATGTTTATTCAATTACTCCGCCACACCTYAT-GA-AAATC- [1055]
+Characium_per ATTGGCGGACGTTCATTCGATGACTCCGCCAGCACCTTAT-GAGAAATCA [1067]
+Parietochl_pse ATTGGCGGATGTTTTATCGATGACTCCGCCAGCACCTTAT-GAGAAATCA [1067]
+Friedmannia_is ATTGGCGGGTGTTCTATCGATGACCCCGCCAGCACCTTAT-GAGAAATCA [1068]
+
+[ 1110 1120 1130 1140 1150]
+[ . . . . .]
+
+Glycine_max AAGTCTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGG [1119]
+Oryza_sativa AAGTCTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGG [1124]
+Zamia_pumila AAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGG [1123]
+Psilotum_n AAGTCTTTGGGTTCCGGGGGGA???????????????????????????? [1124]
+Equisetum_ar AAGTCTTTGGGTTCC----GGA-T?????????????????????????? [1116]
+Atrichum_angus AAGTATTTGGGTTCCGGGGGGAGTATG??????????????????????? [1105]
+Notothylas_bre AAGTTTTTGGGTTCCGG????????????????????????????????? [1095]
+Phaeoceros_lae AAGTTTTTGGGTTCCGGGGGGAGTAT???????????????????????? [1104]
+Porella_pi AAGTTTTTGGGTTCC??????????????????????????????????? [1123]
+Conocephal_con AA-TTTTTGGGTTCC??????????????????????????????????? [1104]
+Asterella_tene AAGTTTTTGGGTTCCGGGGGGAG-ATG??????????????????????? [1107]
+Riccia AAGTTTTTGGGTTCCGGGGGGAGTAT???????????????????????? [1117]
+Klebsormid_fla -AGTTTTTGGGTTCCGGGGGGA-TATGGTC???????????????????? [1121]
+Coleochaet_nit AAGTTCTTGGGTTCC??????????????????????????????????? [1107]
+Fissidens_taxi AAGTTTTTGGGTTCCGGGGGGAGTATG??????????????????????? [1099]
+Plagiomnium_cu -AGTTTTTGGGTTCCGGGGGGAGTATG??????????????????????? [1092]
+Micromonas_pus AA-TTTTTGGGTTCCGGGA??????????????????????????????? [1112]
+Mantoniel_squa AA-TTTTT?????????????????????????????????????????? [1081]
+Nephroselm_pyr AAGTTTTTGGGTTCC??????????????????????????????????? [1105]
+Pedinomonas_mi AAGTCTTT?????????????????????????????????????????? [1091]
+Tetraselm_cart AAGTTTTTGGGTT????????????????????????????????????? [1107]
+Enteromorpha AAGTCTTTGGGTTCCGGGGGGAG?ATGG?????????????????????? [1117]
+Ulva_fasci AAGTTTTTGGGTTCCGGGGGGA?TATGGTC?CAA???????????????? [1105]
+Ulothrix_zo AAGTYTTTGGGYTCCGGGGAG??TATGGTC???????????????????? [1070]
+Cympolia_barba TAAATCTACAGGCTTGGGGGGGAA?????????????????????????? [1127]
+Batophora_oers TAAATTTGGGCTCCGGG???TAGTATGGT????????????????????? [1106]
+Codium_decort AGATCTTGGGCTTCCGGGGAGC?TAGTGCTCAGTGTGGTG?????????? [1114]
+Cladophoro AAATTTATG?CTTC?GGGGGGAGTAT???????????????????????? [1108]
+Blastophysa_rh AAGTCTTTGGGTTC???????????????????????????????????? [1104]
+Trentepohlia AAGTT--TGGGTTCC??????????????????????????????????? [1108]
+Cephaleuro_par AAGTTGTTGGGTTCC?GGGGGAGTATGG?????????????????????? [1092]
+Characium_vac AAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGG [1113]
+Dunaliella_par AAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGG [1112]
+Chlamyd_reinha AAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGG [1114]
+Volvox_carteri AAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGG [1114]
+Chlorococc_min AAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGG [1112]
+Draparn_plum AAGTCTTTGGGTTCCGGGGGGA???????????????????????????? [1104]
+Uronema_belk -A-TCTTTGGGTTCCGGGGGGA-TAT???????????????????????? [1070]
+Chlamydom_moew GAGTCTTTGGGTTCCGGGGGGAGTATGG?????????????????????? [1107]
+Stephanos_pl -AGTTTTTGGGTTCC?GGGGGA???????????????????????????? [1114]
+Carteria_rad -A-TTTTTGGGTTCCGGGGGGA???????????????????????????? [1113]
+Gonium_pecto AA-TTTTTGG-TTCCGGGGGGAGGA????????????????????????? [1109]
+Chlorella_kess AAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGG [1118]
+Chlorella_vulg AAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGG [1120]
+Protothec_wic AAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGG [1115]
+Chlorella_prot AAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGG [1121]
+Chlorella_min AAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGG [1118]
+Neochloris_aqu AAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGG [1115]
+Neochloris_vig AAGTTTTTGGGT--CGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGG [1111]
+Pediastrum_dup AAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGG [1116]
+Scenedesm_obl AAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGG [1115]
+Characium_hin AAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGG [1113]
+Chlorella_fus AAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGG [1116]
+Ankistrodesmus AAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGG [1114]
+Pseudotreb_gig -AGTTTTTGGGTTCCGGGGGGAGTATGG?????????????????????? [1100]
+Pleurastr_terr AAGWWTTT---TTCC??GGGGAGTATG??????????????????????? [1102]
+Characium_per AAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGG [1117]
+Parietochl_pse AAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGG [1117]
+Friedmannia_is AAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGG [1118]
+
+[ 1160 1170 1180 1190 1200]
+[ . . . . .]
+
+Glycine_max AATTGACGGAA-GGGCA-CCACCAGGAGTGGAGCCTGCGGCT-AATTTGA [1166]
+Oryza_sativa AATTGACGGAA-GGGCA-CCACCAGGCGTGGGGCCTGCGGCTTAATTTGA [1172]
+Zamia_pumila AATTGACGGAA-GGGCA-CCACCAGGAGTGGAGCCTGCGGCTTAATTTGA [1171]
+Psilotum_n ?????????????????????????????????????????????????? [1174]
+Equisetum_ar ?????????????????????????????????????????????????? [1166]
+Atrichum_angus ?????????????????????????????????????????????????? [1155]
+Notothylas_bre ?????????????????????????????????????????????????? [1145]
+Phaeoceros_lae ?????????????????????????????????????????????????? [1154]
+Porella_pi ?????????????????????????????????????????????????? [1173]
+Conocephal_con ?????????????????????????????????????????????????? [1154]
+Asterella_tene ?????????????????????????????????????????????????? [1157]
+Riccia ?????????????????????????????????????????????????? [1167]
+Klebsormid_fla ?????????????????????????????????????????????????? [1171]
+Coleochaet_nit ?????????????????????????????????????????????????? [1157]
+Fissidens_taxi ?????????????????????????????????????????????????? [1149]
+Plagiomnium_cu ?????????????????????????????????????????????????? [1142]
+Micromonas_pus ?????????????????????????????????????????????????? [1162]
+Mantoniel_squa ?????????????????????????????????????????????????? [1131]
+Nephroselm_pyr ?????????????????????????????????????????????????? [1155]
+Pedinomonas_mi ?????????????????????????????????????????????????? [1141]
+Tetraselm_cart ?????????????????????????????????????????????????? [1157]
+Enteromorpha ?????????????????????????????????????????????????? [1167]
+Ulva_fasci ?????????????????????????????????????????????????? [1155]
+Ulothrix_zo ?????????????????????????????????????????????????? [1120]
+Cympolia_barba ?????????????????????????????????????????????????? [1177]
+Batophora_oers ?????????????????????????????????????????????????? [1156]
+Codium_decort ?????????????????????????????????????????????????? [1164]
+Cladophoro ?????????????????????????????????????????????????? [1158]
+Blastophysa_rh ?????????????????????????????????????????????????? [1154]
+Trentepohlia ?????????????????????????????????????????????????? [1158]
+Cephaleuro_par ?????????????????????????????????????????????????? [1142]
+Characium_vac AATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGA [1161]
+Dunaliella_par AATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGA [1160]
+Chlamyd_reinha AATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGA [1162]
+Volvox_carteri AATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGA [1162]
+Chlorococc_min AATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGA [1160]
+Draparn_plum ?????????????????????????????????????????????????? [1154]
+Uronema_belk ?????????????????????????????????????????????????? [1120]
+Chlamydom_moew ?????????????????????????????????????????????????? [1157]
+Stephanos_pl ?????????????????????????????????????????????????? [1164]
+Carteria_rad ?????????????????????????????????????????????????? [1163]
+Gonium_pecto ?????????????????????????????????????????????????? [1159]
+Chlorella_kess AATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGA [1166]
+Chlorella_vulg AATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGA [1168]
+Protothec_wic AATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGA [1163]
+Chlorella_prot AATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGA [1169]
+Chlorella_min AATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGA [1166]
+Neochloris_aqu AATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGA [1163]
+Neochloris_vig AATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGA [1159]
+Pediastrum_dup AATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGA [1164]
+Scenedesm_obl AATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGA [1163]
+Characium_hin AATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGA [1161]
+Chlorella_fus AATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGA [1164]
+Ankistrodesmus AATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGA [1162]
+Pseudotreb_gig ?????????????????????????????????????????????????? [1150]
+Pleurastr_terr ?????????????????????????????????????????????????? [1152]
+Characium_per AATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGA [1165]
+Parietochl_pse AATTGACGGAAAGGGCAGCCACCAGGCGTGGAGCCTGCGGCTTAATTTGA [1167]
+Friedmannia_is AATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGA [1166]
+
+[ 1210 1220 1230 1240 1250]
+[ . . . . .]
+
+Glycine_max CTCAACACGGGGAAACTTACCAGGTCCAGACATAGTAAGG-TTGACAGAC [1215]
+Oryza_sativa CTCAACACGGGGAAACTTACCAGGTCCAGACATAGCAAGGATTGACAGAC [1222]
+Zamia_pumila CTCAACACGGGGAAACTTACCAGGTCCAGACATAGCAAGGATTGACAGAT [1221]
+Psilotum_n ??????????????????????????????????????GGATTGACAGAT [1224]
+Equisetum_ar ??????????????????????????????????????????TGACAGAT [1216]
+Atrichum_angus ?????????????????????????????????????????????????? [1205]
+Notothylas_bre ?????????????????????????????????????????????????? [1195]
+Phaeoceros_lae ?????????????????????????????????????????????????? [1204]
+Porella_pi ?????????????????????????????????????????????????? [1223]
+Conocephal_con ?????????????????????????????????????????????????? [1204]
+Asterella_tene ?????????????????????????????????????????????????? [1207]
+Riccia ????????????????????????????????????????????????AT [1217]
+Klebsormid_fla ?????????????????????????????????????????????????? [1221]
+Coleochaet_nit ?????????????????????????????????????????????????? [1207]
+Fissidens_taxi ?????????????????????????????????????????????????? [1199]
+Plagiomnium_cu ?????????????????????????????????????????????????? [1192]
+Micromonas_pus ?????????????????????????????????????????????????? [1212]
+Mantoniel_squa ?????????????????????????????????????????????????? [1181]
+Nephroselm_pyr ?????????????????????????????????????????????????? [1205]
+Pedinomonas_mi ?????????????????????????????????????????????????? [1191]
+Tetraselm_cart ?????????????????????????????????????????????????? [1207]
+Enteromorpha ????????????AAACTTACCAGGTCCAGACATGGA---GATTGACAGAT [1214]
+Ulva_fasci ?????????????????????????????????????????????????? [1205]
+Ulothrix_zo ?????????????????????????????????????????????????? [1170]
+Cympolia_barba ????????????????????????????????????????????????TT [1227]
+Batophora_oers ?????????????????????????????????????????????????? [1206]
+Codium_decort ?????????????????????????????????????????????????? [1214]
+Cladophoro ??????????????????????????????????????????????AGAT [1208]
+Blastophysa_rh ?????????????????????????????????????????????????? [1204]
+Trentepohlia ?????????????????????????????????????????????????? [1208]
+Cephaleuro_par ????????????AAACTTACCAGGTCCAGACATGGT-AG-AT-GACAGAT [1189]
+Characium_vac CTCAACACGGGGAAACTTACCAGGTCCAGACACGGGGAGGATTGACAGAT [1211]
+Dunaliella_par CTCAACACGGGAAAACTTACCAGGTCCAGACACGGGGAGGATTGACAGAT [1210]
+Chlamyd_reinha CTCAACACGGGGAAACTTACCAGGTCCAGACACGGGAAGGATTGACAGAT [1212]
+Volvox_carteri CTCAACACGGGGAAACTTACCAGGTCCAGACACGGGAAGGATTGACAGAT [1212]
+Chlorococc_min CTCAACACGGGGAAACTTACCAGGTCCAGACACGGGGAGGATTGACAGAT [1210]
+Draparn_plum ?????????????????????????????????????????????????? [1204]
+Uronema_belk ?????????????????????????????????????????????????? [1170]
+Chlamydom_moew ??????????????????????????????????????????????AGAT [1207]
+Stephanos_pl ?????????????????????????????????????????????????? [1214]
+Carteria_rad ????????????????????????????????????????????ACAGAT [1213]
+Gonium_pecto ??????????????????????????????????????????TGACAGAT [1209]
+Chlorella_kess CTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGAT [1216]
+Chlorella_vulg CTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGAT [1218]
+Protothec_wic CTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGAT [1213]
+Chlorella_prot CTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGAT [1219]
+Chlorella_min CTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGAT [1216]
+Neochloris_aqu CTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGAT [1213]
+Neochloris_vig CTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGAT [1209]
+Pediastrum_dup CTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGAT [1214]
+Scenedesm_obl CTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGAT [1213]
+Characium_hin CTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGAT [1211]
+Chlorella_fus CTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGAT [1214]
+Ankistrodesmus CTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGAT [1212]
+Pseudotreb_gig ?????????????????????????????????????????????????? [1200]
+Pleurastr_terr ?????????????????????????????????????????????????? [1202]
+Characium_per CTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGAT [1215]
+Parietochl_pse CTCAACACGGGAAAACTTACCAGGTCCAGACATGTGAAGGATTGACAGAT [1217]
+Friedmannia_is CTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGAT [1216]
+
+[ 1260 1270 1280 1290 1300]
+[ . . . . .]
+
+Glycine_max TGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCCTTCTTAGT [1265]
+Oryza_sativa TGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGT [1272]
+Zamia_pumila TGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGT [1271]
+Psilotum_n TGAGAGCTCTTTCTTGGTTCTATGGGTGGT---G-ATGGCCGTT---AGT [1267]
+Equisetum_ar TGAGAGCTCTTTCTTGATTCTATGGGTGGTAGTGCATGGCCGTTCTTAGT [1266]
+Atrichum_angus ??????CTCTTTCTTGATTCTATGGGTGGT-GTGCATGGCCGTT-TT-GT [1252]
+Notothylas_bre ??????????????????????????????????CA-GGCCGTT-TTAGT [1243]
+Phaeoceros_lae ?????????????????????????????T--TGCATGGCCGTT-TTAGT [1251]
+Porella_pi ???????????????????????????????????????CC-----TAGT [1268]
+Conocephal_con ??????CTCTTTCTT-ATTCTATGGGT--T--TGCAT---CGTTCTTAGT [1246]
+Asterella_tene ?????????????????????????????????????????????????? [1257]
+Riccia TGAGAGCTCTTTCTTGATTCTATGGGT--T--TGCATGGCCG-TCTTAGT [1262]
+Klebsormid_fla ?????????????????????????????????????????????????? [1271]
+Coleochaet_nit ???????????????????????????????????AT--CCAGTTTTCGT [1255]
+Fissidens_taxi ??????CTCTTTCTTGATTCTATGGGTG-T-GTGCATGGCCGTT-TTAGT [1246]
+Plagiomnium_cu ??AGAGCTCTTTCTTGGTTCTATGGGTGGT-GTGCATGGCCGTT-TTAGT [1240]
+Micromonas_pus ?????????????????????????????T-GTGCATGGCCGTTCTT-GT [1260]
+Mantoniel_squa ?????????????????????????????T-G-GCWTGGCCGTT-TT-GT [1227]
+Nephroselm_pyr ??????????????????????????????????CATGGCCGTTCTTAGT [1255]
+Pedinomonas_mi ?????????????????????????????????GCATGGCCGTTCTTAGT [1241]
+Tetraselm_cart ????????????????????TATGGGTG-T-GTGCATGGCCGTTCTTAGT [1255]
+Enteromorpha TGAGAGCTCTTTCTTGGTTCTATGGGTGGTGGTGCATGGCCGTTCTTAGT [1264]
+Ulva_fasci ???????????????????CTATGGGT-GTGGTGCATG-CCGTTCTTAGT [1253]
+Ulothrix_zo ?????????????????????ATGG-TAGTTG---ATGGCCGTTCT--GT [1214]
+Cympolia_barba TGAT-GC--TTTCTTGATTCT-TGGGTGGTGGTGCATGGCC-TTTTT-GT [1271]
+Batophora_oers ?????????TTTCTTGATT--A-GGGT--------ATGGCCATTCTTAGT [1245]
+Codium_decort ??????CTCTTTCTTGATTCC-TGA-TGGTG-TGCATGGCCGATCTCAGC [1261]
+Cladophoro TGATAGCTCTTT-AAGATTTTTTGGATGGTG--GCATGGCCGTTCTTAGT [1255]
+Blastophysa_rh ??????????????????????????????T-TGCATGGCCGTTCTTAGT [1253]
+Trentepohlia ??????????????????????????????TGTGCATGGCCGTTCTT-GT [1257]
+Cephaleuro_par TGATAGCTCTTTCTTGGTTCTATGGGTGTGGGGGCATGGCCGTTCTTAGT [1239]
+Characium_vac TGAGAGCTCTTTCTTGATTCTGTGGGTGGTGGTGCATGGCCGTTCTTAGT [1261]
+Dunaliella_par TGAGAGCTCTTTCTTGATTCTGTGGGTGGTGGTGCATGGC?GTTCTTAGT [1260]
+Chlamyd_reinha TGAGAGCTCTTTCTTGATTCTGTGGGTGGTGGTGCATGGCCGTTCTTAGT [1262]
+Volvox_carteri TGAGAGCTCTTTCTTGATTCTGTGGGTGGTGGTGCATGGCCGTTCTTAGT [1262]
+Chlorococc_min TGAGAGCTCTTTCTTGATTCTGTGGGTGGTGGTGCATGGCCGTTCTTAGT [1260]
+Draparn_plum ????????????????????????????????????TGGCCGTTCTTAGT [1254]
+Uronema_belk ?????????????????TTCTATGG-TGGTG?TG?ATGGCCGTTCTTAGT [1219]
+Chlamydom_moew T?AGAGCTCTTT?TTGATTCT-TGGGTGGTGGTGCATGGCCGTTCTTAGT [1256]
+Stephanos_pl ??????CTCTTTCTTGATTCT-TGGGTGGT-GTGC-TGGCCGTTCTTAGT [1261]
+Carteria_rad TGAGAGCTCTTTCTTGATTCT-TGGGTGGT--TGCATGGCCGTTCTTAGT [1260]
+Gonium_pecto TGAGAGCTCTTTCTTGATTCTGTGGGTG-T--TGCATGGCCGTTCTTAGT [1256]
+Chlorella_kess TGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGT [1266]
+Chlorella_vulg TGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGT [1268]
+Protothec_wic TGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGT [1263]
+Chlorella_prot TGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGT [1269]
+Chlorella_min TGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGT [1266]
+Neochloris_aqu TGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGT [1263]
+Neochloris_vig TGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGT [1259]
+Pediastrum_dup TGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATAGGCGTTCTTAGT [1264]
+Scenedesm_obl TGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGT [1263]
+Characium_hin TGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGT [1261]
+Chlorella_fus TGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGT [1264]
+Ankistrodesmus TGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGT [1262]
+Pseudotreb_gig ??????????????????????????????????????GCCGTTCTTAGT [1250]
+Pleurastr_terr ?????????????????????????????TGGTGCATGGCCGTTCTTAGT [1252]
+Characium_per TGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGT [1265]
+Parietochl_pse TGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGT [1267]
+Friedmannia_is TGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGT [1266]
+
+[ 1310 1320 1330 1340 1350]
+[ . . . . .]
+
+Glycine_max TGGTGGAGCGATTTGTCTGGTT-AATTCCGTTAACCAACGAGACCTCAGC [1314]
+Oryza_sativa TGGTGGAGCGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGC [1321]
+Zamia_pumila TGGTGGAGCGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCGGC [1320]
+Psilotum_n TGGTGGAG-G-TTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGC [1314]
+Equisetum_ar TGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGC [1315]
+Atrichum_angus TGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAAC-AACGAGACCTCAGC [1300]
+Notothylas_bre TGGTGGAGTGA-TTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGC [1291]
+Phaeoceros_lae TGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGC [1300]
+Porella_pi TGGTGGAG-G--TTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGC [1314]
+Conocephal_con TGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGC [1295]
+Asterella_tene TGGTGG-GTGATTTGTCTGGTT-AATTCCGTTAACGAAGGAGACCTCAGC [1305]
+Riccia TGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGC [1311]
+Klebsormid_fla ????????????????????????????????AACGAACGAGACCTCAGC [1321]
+Coleochaet_nit TCW-GGAGTGATTTGTCTG-TT-AATTC?G?TAACGAAGGAG?CCTCAGC [1302]
+Fissidens_taxi TGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGC [1295]
+Plagiomnium_cu TGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGC [1289]
+Micromonas_pus TGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGC [1309]
+Mantoniel_squa TGGTGGAGTGATT--TCTGGTT-AATTCCGTTAAC-AAC-AGACCTCWGC [1272]
+Nephroselm_pyr TGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGC [1304]
+Pedinomonas_mi TGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCGAC [1290]
+Tetraselm_cart TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC [1304]
+Enteromorpha TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAA-GAGACCTCAGC [1312]
+Ulva_fasci TGGTGGGTTGCCTTGTCAGGTT-GATTC-GGTAACGAACGAGACCTCAGC [1301]
+Ulothrix_zo TGATGGGTCTGGCCTTC---TT-GATTCCGGTAA----CGA-ACY-YA-C [1253]
+Cympolia_barba TCGTGGGTTGCCCTGTCTGGTT-GACTCCGTTAACGAACGAGATCTCAAC [1320]
+Batophora_oers TC-TGGGTTATCTTGTCTGGTT-GACTCCGTTAACCA---A-ACCTCAGC [1289]
+Codium_decort CG-TGGGTTGACCT-TCAGGTT-C-CTCCGGTAAY-Y-C-AGACCTCGAC [1304]
+Cladophoro TCGTGGATTGATTTGTCAGGTT-G-TTCCGG--ACGGA-G-GACCC--GC [1297]
+Blastophysa_rh TGGTGGGTTGGCTTGTCAGGTT-GATTCCGGT-ACGAACGAGACCTCCGC [1301]
+Trentepohlia TGGT-GGTTGGCTTGT---GTT-GATTCCGGTAACGAACGAGACCTCAGC [1302]
+Cephaleuro_par TGGTGGGTTGGCTTGTCGGGTT-GATTCCGGGAACGAACGAGACCTCAGC [1288]
+Characium_vac TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC [1310]
+Dunaliella_par TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC [1309]
+Chlamyd_reinha TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC [1311]
+Volvox_carteri TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC [1311]
+Chlorococc_min TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC [1309]
+Draparn_plum TGGTGGGTTGCCTTGTCAGGTT-GATTC-GG-AACGAACG-GACCTCAGC [1300]
+Uronema_belk TGGTGGGTTGCCTTGTCAGGTT-GATTC?GGTAACGAACGAGACC-CAGC [1267]
+Chlamydom_moew TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC [1305]
+Stephanos_pl TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC [1310]
+Carteria_rad TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC [1309]
+Gonium_pecto TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC [1305]
+Chlorella_kess TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC [1315]
+Chlorella_vulg TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC [1317]
+Protothec_wic TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC [1312]
+Chlorella_prot TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC [1318]
+Chlorella_min TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC [1315]
+Neochloris_aqu TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC [1312]
+Neochloris_vig TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC [1308]
+Pediastrum_dup TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC [1313]
+Scenedesm_obl TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC [1312]
+Characium_hin TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC [1310]
+Chlorella_fus TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC [1313]
+Ankistrodesmus TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC [1311]
+Pseudotreb_gig TGGTGGG-TGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC [1298]
+Pleurastr_terr TGGT?GGTTGCCTTGTCAGGTT-GATTCCGGTAACGAAGGAGACCTCAGC [1301]
+Characium_per TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC [1314]
+Parietochl_pse TGGTGGGTTGCCTTGTCAGGTTCGATTCCGGTAACGAACGAGACCTCAGC [1317]
+Friedmannia_is TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC [1315]
+
+[ 1360 1370 1380 1390 1400]
+[ . . . . .]
+
+Glycine_max CTGCTAAATAGCTAT--------------------------AGCTTCTTA [1338]
+Oryza_sativa CTGCTAACTAGCTATGCGGAGCCATCCCTCCGCAGCT----AGCTTCTTA [1367]
+Zamia_pumila CTGCTAACTAGCTACGCGGAGGGTTTCTTTCGTGGCC----AGCTTCTTA [1366]
+Psilotum_n CTGCTAACTAGTTACGCGAAGGATCCTCTTCGTGGCC----AACTT-TTA [1359]
+Equisetum_ar CTGCTAACTAGTTACGCGAAGACTTGTCTTCGTGGCC----AACTTCTTA [1361]
+Atrichum_angus CTGCTAACTAGTTACACGAAGAATC-TCTTTGTGGCC----AACTT-TTA [1344]
+Notothylas_bre CTGCTAACTAGTTACAC-AAGAACCTTCTTCGTGGCC----AACTTCTTA [1336]
+Phaeoceros_lae CTGCTAACTAGTTACACGAAGAACCTTCTTCGTGGCC----AACTTCTTA [1346]
+Porella_pi CTGCTAACTAGTTACACGAAGAATCTTCTTTGTGGCC----AACTT-TTA [1359]
+Conocephal_con CTGCTAACTA-CTACGCGAGTCCATTTTTTGTCCTGCGC--AGCTT-TTA [1341]
+Asterella_tene CTGCTAACTA-CTACGCGGGGGTWCTCCCCTGCGGCC----AGCTT-TTA [1349]
+Riccia CTGCTAACTAGCTACGCGGGGGTTCTCCCTGCGGCC-----AGCTT---A [1353]
+Klebsormid_fla CTGCTAACTAGTTACACGGAGATTCTTCTCCGTGGCC----AACTTCTTA [1367]
+Coleochaet_nit CTGCTAACTAGGCTAACGTTTTGTTGGGAC------------ACTTGTTA [1340]
+Fissidens_taxi CTGCTAACTAGTTACGCGAAGGATTTCTCTCCTTGGCGGCCAACTTCTTA [1345]
+Plagiomnium_cu CTGCTAACTAGTTACGCGAAGGATTTCCTCCTTTGCGGCC-AACTTC--A [1336]
+Micromonas_pus CTGCTAAATAGTCATACGCTACTCT-TAGCGCAGT------GACTTCTTA [1352]
+Mantoniel_squa CTGCTAAATAGTCATACGCTACTCT-TAGCGCAGT------GACTTCTTA [1315]
+Nephroselm_pyr CTGCTAAATAGTCACGCGATGCTCCTGCATGGCGGCG----GACTT-TTA [1349]
+Pedinomonas_mi CTGCTAAATAGGTTCAGTATCGATGCGTCGATGCTTG----GAGCTTTTA [1336]
+Tetraselm_cart CTGCTAAATAGTTACTCCTACTTTGGTAGGAGGTG------AACTT-TTA [1347]
+Enteromorpha CTGCTAAATAGTGACGATTGCTCGGCAGTCGCG--------CGCTT-TTA [1353]
+Ulva_fasci CTGCTAAATAGTGACGTCTGCTTCGGCAGTCGCG-------CGCTTGTTA [1344]
+Ulothrix_zo C-GCTAAA-AGTTCCYTYGGCAGTTGGCA------------CACTT-TTA [1288]
+Cympolia_barba CTACTAAATAGTATTACATCATTGTAGAAATATAT------ACCTTCTTA [1364]
+Batophora_oers CT-CTAAA-A-CGGCCTCTCCTTAGGAGTGC----------CCCYTCYTA [1326]
+Codium_decort CTGCCAAATAGCACCGGCCCTTCCGATGGC-----------ACCTTCTTG [1343]
+Cladophoro CTACTAACTAGCTCTACCTGAACTTCAGGTAGCC-------AGCTT-TTA [1339]
+Blastophysa_rh CTGCTAAATAGCCACTCCGGGGGCCC---------------GGCTTCTTA [1336]
+Trentepohlia CTGCTAAATAGTA-CTTTCGGTT---CCCA-GC--------AACTTCTTA [1339]
+Cephaleuro_par CTGCTAAATAGTTGCCCCCGCCTCGGTGGGGGTCGA-----GACTTGTTA [1333]
+Characium_vac CTGCTAAATAGTAAC--------------------------TACTTCTTA [1334]
+Dunaliella_par CTACTAAATAGTCAC--------------------------GACTTCTTA [1333]
+Chlamyd_reinha CTGCTAAATAGTCAG--------------------------GACTTCTTA [1335]
+Volvox_carteri CTGCTAAATAGTCAGCATGACTGCGGTGCGCA---------GACTTCTTA [1352]
+Chlorococc_min CTGCTAAATAGTCAC--------------------------GACTTCTTA [1333]
+Draparn_plum CTGCTAAATAGTCACCTTCTCGCGGCAGGC-----------CACTTC--A [1337]
+Uronema_belk CTGCTAAATAGTCACC-----GCGGCAGGA-----------GACTT-TTA [1300]
+Chlamydom_moew CTGCTAAATAGTCGGCGGTCCTTTCTGGATCGCCTC-----GACTTCTTA [1350]
+Stephanos_pl CTGCTAAATAGTCACGGGACCTTGGTACACGCTT-------GACTT-TTA [1352]
+Carteria_rad CTGCTAAATAGTCACGATTGCTTTTTGGCAGTCGGCA----GACTTCTTA [1355]
+Gonium_pecto CTGCTAAATAGTCAGCATCCTGCGGTGCGCA----------GACTT-TTA [1344]
+Chlorella_kess CTGCTAAATAGTCAC--------------------------GACTTCTTA [1339]
+Chlorella_vulg CTGCTAAATAGTCAC--------------------------GACTTCTTA [1341]
+Protothec_wic CTGCTAAATAGTGCT--------------------------TACTTCTTA [1336]
+Chlorella_prot CTGCTAAATAGTTTT--------------------------AACTTCTTA [1342]
+Chlorella_min CTGCTAAATAGTCAC--------------------------GACTTCTTA [1339]
+Neochloris_aqu CTGCTAAATAGTCAC--------------------------GACTTCTTA [1336]
+Neochloris_vig CTGCTAAATAGT???--------------------------GACTTCTTA [1332]
+Pediastrum_dup CTGCTAAATAGTCAC--------------------------GACTTCTTA [1337]
+Scenedesm_obl CTGCTAAATAGTCTC--------------------------GACTTCTTA [1336]
+Characium_hin CTGCTAAATAGTCCG--------------------------GACTTCTTA [1334]
+Chlorella_fus CTGCTAAATAGTCCT--------------------------GACTTCTTA [1337]
+Ankistrodesmus CTGCTAAATAGTCAC--------------------------GACTTCTTA [1335]
+Pseudotreb_gig CTGCTAAATAGTCACGGCTGCTTTYCAGTCGGCA-------GACTT-TTA [1340]
+Pleurastr_terr CTGCTAAATAGTC-CTAATCTTCTCGCGGTTAGCT------GACTT?TTA [1344]
+Characium_per CTGCTAAATAGTC-C--------------------------GACTTCTTA [1337]
+Parietochl_pse CTGCTAAATAGTCAC--------------------------GACTTCTTA [1341]
+Friedmannia_is CTGCTAAATAGTCAC--------------------------GACTTCTTA [1339]
+
+[ 1410 1420 1430 1440 1450]
+[ . . . . .]
+
+Glycine_max GAGGGACTATGGCCGCTTAGGCCAC----GGAAGTTTGAGGCAATAACAG [1384]
+Oryza_sativa GAGGGACTATGGCCGTTTAGGCCAC----GGAAGTTTGAGGCAATAACAG [1413]
+Zamia_pumila GAGGGACTATGGCCGTTTAGGCCAT----GGAAGTTTGAGGCAATAACAG [1412]
+Psilotum_n GAGGGACTATGGCCGCCTAGGCCAT----GGA?????????????????? [1405]
+Equisetum_ar GAGGGACTATGGCCGTCTAGGCCAT----GGA?????????????????? [1407]
+Atrichum_angus GAGGGACTATTGGCGTCT-GCCAAT----GGAA????????????????? [1389]
+Notothylas_bre GAGGGACTATTTGCGTCTA-CGAAT----GGAA????????????????? [1381]
+Phaeoceros_lae GAGGGACTATTTGCGTCTAGCGAAT----GGAA????????????????? [1392]
+Porella_pi GAGGGACTATT--CGTCTAGCCAAT----GGA?????????????????? [1403]
+Conocephal_con GAGGGACT---GG--TC--GCC-AC----GGAA????????????????? [1379]
+Asterella_tene GAGGGACTGTCGGCGTCTAGCCGA-----GGA?????????????????? [1394]
+Riccia GAGGGACT--CGG--TCTAGCCGAC----GGAA????????????????? [1395]
+Klebsormid_fla GAGGGACTATTTGGCGTCTACAGCCAAT-GGAA?TTTGA??????????? [1416]
+Coleochaet_nit GAGGGACTGTGAGGCGCTTAGCTCAT---GGA?????????????????? [1387]
+Fissidens_taxi GAGGGACTATCGGCGTCT-AGCCGAT---GGAA?TTT?A??????????? [1391]
+Plagiomnium_cu GAGGGACTATCGGCGTC---GCCGAT---GGAAG?TTGA??????????? [1380]
+Micromonas_pus GAGGGACTATGTGCGTTT-GCACAT----GGAA-TT?????????????? [1396]
+Mantoniel_squa GAGGGACTATGTGCGTTTWGCACAT----GGAA-TTTGA??????????? [1360]
+Nephroselm_pyr GAGGGACTATCGGTATT-A-CCGAT----GGA?????????????????? [1393]
+Pedinomonas_mi GAGGGACT-TCGGATCC-A-CCGGT----GGAAGT??????????????? [1379]
+Tetraselm_cart GAGGGACTATTGGCGTTT-GCCAAT----GGAAGTTA????????????? [1392]
+Enteromorpha GAGGGACTGTTGGCG-TCTAGCCAAT---GGAAGTAT????????????? [1399]
+Ulva_fasci GAGGGACTGTTGGCG-TCTAGCCAATT--GGAAGTATGA??????????? [1391]
+Ulothrix_zo GAGGGACT-TTGGCG-TCT-GCCAAT---GGAAGTAT-A??????????? [1331]
+Cympolia_barba GGGGAACTATC-AGTT-CAAACCGAT---GGAAG???????????????? [1409]
+Batophora_oers -A-GGAC--TCGGCG--CAA?????????????????????????????? [1370]
+Codium_decort GAGGGACTGGCGCGAGAGCCGGACGCG??????????????????????? [1393]
+Cladophoro GAGGGACTCTCGGAA-TGAAACCAA----GGAA????????????????? [1384]
+Blastophysa_rh GAGGGACTATGGCTCGAATAGGCCAT---GGAA????????????????? [1383]
+Trentepohlia -A---ACTATTACATCA????????????????????????????????? [1385]
+Cephaleuro_par GAGGGACTATTAGCG-ATTTTCA--CTAATT--AA-T????????????? [1377]
+Characium_vac GAGGGACTATTGGCG-TTTAGTCAAT---GGAAGTGTGAGGCAATAACAG [1380]
+Dunaliella_par GAGGGACTATTGGCG-TTTAGCCAAT---GGAAGTGTGAGGCAATAACAG [1379]
+Chlamyd_reinha GAGGGACTATTGGCG-TTTAGCCAAT---GGAAGTATGAGGCGATAACAG [1381]
+Volvox_carteri GAGGGACTATTGGCG-TTCAGCCAAT---GGAAGTATGAGGCGATAACAG [1398]
+Chlorococc_min GAGGGACTATTGGCG-TTTAGCCAGT---GGAAGTGTGAGGCAATAACAG [1379]
+Draparn_plum GAGGGACTATTGCCG-TTTAGGC??????????????????????????? [1386]
+Uronema_belk GAGGGACTATTGTC---TTAGGCAAT---GAAGTA??????????????? [1344]
+Chlamydom_moew GAGGGACTATTGACGTT-TAGTCAAT---GGAAG???????????????? [1396]
+Stephanos_pl GAGGGACTATTGGCGTTACAGTCAAT---GGA?????????????????? [1399]
+Carteria_rad GAGGGACTATTGTCG-TTTAGGCAG????????????????????????? [1404]
+Gonium_pecto GAGGGACTATTGGCG-TTCAGCCAAT---GGA?????????????????? [1390]
+Chlorella_kess GAGGGACTATTGGCG-A-TAGCCAAT---GGAAGCATGAGGCAATAACAG [1384]
+Chlorella_vulg GAGGGACTATTGGCG-A-TAGCCAAT---GGAAGCATGAGGCAATAACAG [1386]
+Protothec_wic GAGGGACTATTGGCG-A-TAGCCAAT---GGAAGCTTGAGGCAATAACAG [1381]
+Chlorella_prot GAGGGACTCTCGGCG-A-TAGCCGAG---GGAAGCTTGAGGCAATAACAG [1387]
+Chlorella_min GAGGGACTATTGGCG-A-TAGCCAGT---GGAAGCATGAGGCAATAACAG [1384]
+Neochloris_aqu GAGGGACTATTGGCG-TTTAGTCAAT---GGAAGTATGAGGCAATAACAG [1382]
+Neochloris_vig GAGGGACTATTGGCG--TTAGTCAATT--GGAAGTATGAGGCAATAACAG [1378]
+Pediastrum_dup GAGGGACTATTGGCG-TTTAGTCAAT---GGAAGTATGAGGCAATAACAG [1383]
+Scenedesm_obl GAGGGACTATTGGCG--TTAGTCAAT---GGAAGTATGAGGCAATAACAG [1381]
+Characium_hin GAGGGACTATTGACG-TTTAGTCAAT---GGAAGTATGAGGCAATAACAG [1380]
+Chlorella_fus GAGGGACTATTGGCG--TTAGTCAAT---GGAAGTATGAGGCAATAACAG [1382]
+Ankistrodesmus GAGGGACTGTTGGCG--TTAGCCAAC---GGAAGTATGAGGCAATAACAG [1380]
+Pseudotreb_gig GAGGGACTTTTGGCG-ACTAGCCAAA---GGAAGTGTG???????????? [1386]
+Pleurastr_terr GAGGGACTATTGGCG-TTT-GTCAAT---GGAA-TAT????????????? [1388]
+Characium_per GAGGGACTTTCGGCG-TTTAGCCGAA---GGAAGTGTGAGGCGATAACAG [1383]
+Parietochl_pse GAGGGACTCTCGGCG-ACTAGCCGAT---GGAAGTGTGAGGCGATAACAG [1387]
+Friedmannia_is GAGGGACTTTTGGCGCCTTAGCCAAA---GGAAGTGTGAGGCGATAACAG [1386]
+
+[ 1460 1470 1480 1490 1500]
+[ . . . . .]
+
+Glycine_max GTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATG [1433]
+Oryza_sativa GTCTGTGATGCCCTTAGATGTTCTGGG--CGCACGCGCGCTACACTGATG [1461]
+Zamia_pumila GTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATG [1461]
+Psilotum_n ?????????????????????????????????????????????????? [1455]
+Equisetum_ar ?????????????????????????????????????????????????? [1457]
+Atrichum_angus ?????????????????????????????????????????????????? [1439]
+Notothylas_bre ?????????????????????????????????????????????????? [1431]
+Phaeoceros_lae ?????????????????????????????????????????????????? [1442]
+Porella_pi ?????????????????????????????????????????????????? [1453]
+Conocephal_con ?????????????????????????????????????????????????? [1429]
+Asterella_tene ?????????????????????????????????????????????????? [1444]
+Riccia ?????????????????????????????????????????????????? [1445]
+Klebsormid_fla ?????????????????????????????????????????????????? [1466]
+Coleochaet_nit ?????????????????????????????????????????????????? [1437]
+Fissidens_taxi ?????????????????????????????????????????????????? [1441]
+Plagiomnium_cu ?????????????????????????????????????????????????? [1430]
+Micromonas_pus ?????????????????????????????????????????????????? [1446]
+Mantoniel_squa ?????????????????????????????????????????????????? [1410]
+Nephroselm_pyr ?????????????????????????????????????????????????? [1443]
+Pedinomonas_mi ?????????????????????????????????????????????????? [1429]
+Tetraselm_cart ?????????????????????????????????????????????????? [1442]
+Enteromorpha ?????????????????????????????????????????????????? [1449]
+Ulva_fasci ?????????????????????????????????????????????????? [1441]
+Ulothrix_zo ?????????????????????????????????????????????????? [1381]
+Cympolia_barba ?????????????????????????????????????????????????? [1459]
+Batophora_oers ?????????????????????????????????????????????????? [1420]
+Codium_decort ?????????????????????????????????????????????????? [1443]
+Cladophoro ?????????????????????????????????????????????????? [1434]
+Blastophysa_rh ?????????????????????????????????????????????????? [1433]
+Trentepohlia ?????????????????????????????????????????????????? [1435]
+Cephaleuro_par ?????????????????????????????CGCACGCGCGCTACACTGATG [1427]
+Characium_vac GTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATG [1429]
+Dunaliella_par GTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATG [1428]
+Chlamyd_reinha GTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGACG [1430]
+Volvox_carteri GTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGACG [1447]
+Chlorococc_min GTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATG [1428]
+Draparn_plum ?????????????????????????????????????????????????? [1436]
+Uronema_belk ?????????????????????????????????????????????????? [1394]
+Chlamydom_moew ?????????????????????????????????????????????????? [1446]
+Stephanos_pl ?????????????????????????????????????????????????? [1449]
+Carteria_rad ?????????????????????????????????????????????????? [1454]
+Gonium_pecto ?????????????????????????????????????????????????? [1440]
+Chlorella_kess GTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATG [1433]
+Chlorella_vulg GTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATG [1435]
+Protothec_wic GTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATG [1430]
+Chlorella_prot GTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACAATGATG [1436]
+Chlorella_min GTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATG [1433]
+Neochloris_aqu GTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATG [1431]
+Neochloris_vig GTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATG [1427]
+Pediastrum_dup GTCTGTGATGCCCTTAGATGTTCTGGGGCCGCACGTGCGCTACACTGATG [1433]
+Scenedesm_obl GTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATG [1430]
+Characium_hin GTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATG [1429]
+Chlorella_fus GTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATG [1431]
+Ankistrodesmus GTCTGTGATGCCCTTAGATGTTCTGGG-CCGCAC-CGCGCTACACTGACG [1428]
+Pseudotreb_gig ?????????????????????????????????????????????????? [1436]
+Pleurastr_terr ?????????????????????????????????????????????????? [1438]
+Characium_per GTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGACG [1432]
+Parietochl_pse GTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATG [1436]
+Friedmannia_is GTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATG [1435]
+
+[ 1510 1520 1530 1540 1550]
+[ . . . . .]
+
+Glycine_max TATTCAACGAGTCTATAGCCTTGGCCGACAGGTCCGGGTAATCTTTG-AA [1482]
+Oryza_sativa TATCCAACGAGTATATAGCCTGGTCCGACAGGCCCGGGTAATCTTGGGAA [1511]
+Zamia_pumila TATTCAACGAGTCTATAACCTGGGCCGGGAGGTCCGGGAAATCTGGCGAA [1511]
+Psilotum_n ?????????????????????????????????????????????????? [1505]
+Equisetum_ar ?????????????????????????????????????????????????? [1507]
+Atrichum_angus ?????????????????????????????????????????????????? [1489]
+Notothylas_bre ?????????????????????????????????????????????????? [1481]
+Phaeoceros_lae ????????????????????????????????????????ATCTTTG-AA [1491]
+Porella_pi ?????????????????????????????????????????????????? [1503]
+Conocephal_con ?????????????????????????????????????????????????? [1479]
+Asterella_tene ?????????????????????????????????????????????????? [1494]
+Riccia ?????????????????????????????????????????????????? [1495]
+Klebsormid_fla ?????????????????????????????????????????????????? [1516]
+Coleochaet_nit ?????????????????????????????????????????????????? [1487]
+Fissidens_taxi ???????????????????????????????????????AATCTTCTGAA [1491]
+Plagiomnium_cu ?????????????????????????????????????????????????? [1480]
+Micromonas_pus ?????????????????????????????????????????????????? [1496]
+Mantoniel_squa ?????????????????????????????????????????????????? [1460]
+Nephroselm_pyr ?????????????????????????????????????????????????? [1493]
+Pedinomonas_mi ?????????????????????????????????????????????????? [1479]
+Tetraselm_cart ?????????????????????????????????????????????????? [1492]
+Enteromorpha ?????????????????????????????????????????????????? [1499]
+Ulva_fasci ????????????????????????????ACAGAGTCGGGTAATCTT-G-A [1489]
+Ulothrix_zo ?????????????????????????????????????????????????? [1431]
+Cympolia_barba ????????????????????????????????????GG?AATCTATG-CA [1508]
+Batophora_oers ?????????????????????????????????????????????????? [1470]
+Codium_decort ?????????????????????????????????????????????????? [1493]
+Cladophoro ?????????????????????????????????????????????????? [1484]
+Blastophysa_rh ?????????????????????????????????????????????????? [1483]
+Trentepohlia ?????????????????????????????????????????????????? [1485]
+Cephaleuro_par TATTCAACGAGTCTATAGCCTTGGCCGACAGGTCCGGGTAATCTTTG-AA [1476]
+Characium_vac CATTCAACGAGCCTAT--CCTTGGCCGAGAGGTCCGGGTAATCTTTG-AA [1476]
+Dunaliella_par CATTCAACGAGCCTAT--CCTTGGCCGAGAGGTCCGGGTAATCTTTG-AA [1475]
+Chlamyd_reinha CGACCAACGAGCCTAT--CCTTGGCCGAGAGGCCCGGGTAATCTT-GTAA [1477]
+Volvox_carteri CGACCAACGAGCCTAT--CCTTGGCCGAGAGGCCCGGGTAATCTT-GTAA [1494]
+Chlorococc_min CATTCAACGAGCCTAT--CCTTGGCCGAGAGGCCCGGGTAATCTTTG-AA [1475]
+Draparn_plum ?????????????????????????????????????????????????? [1486]
+Uronema_belk ?????????????????????????????????????????????????? [1444]
+Chlamydom_moew ????????????????????????-????????????????????????? [1495]
+Stephanos_pl ?????????????????????????????????????????????????? [1499]
+Carteria_rad ?????????????????????????????????????????????????? [1504]
+Gonium_pecto ?????????????????????????????????????????????????? [1490]
+Chlorella_kess CAATCAACGAGCCTAG--CCTTGGCCGAGAGGCCCGGGTAATCTTTG-AA [1480]
+Chlorella_vulg CATTCAACGAGCCTAG--CCTTGGCCGAGAGGCCCGGGTAATCTTCG-AA [1482]
+Protothec_wic CATGCAACGAGCCTAG--CCTTGGCCGAGAGGCCCGGGTAATCTCAT-AA [1477]
+Chlorella_prot CGGTCAACGAGCCCAG--CCTTGGCCGACAGGCCCGGGTAATCTCGC-AA [1483]
+Chlorella_min CATTCAGCGAGCCTAG--CCTTGACCGAGAGGTCCGGGTAATCTTTG-AA [1480]
+Neochloris_aqu CGTTCAACAAGCCTAT--CCTTGACCGAGAGGTCCGGGTAATCTTTG-AA [1478]
+Neochloris_vig CGTTCAACAAGCCTAT--CCTTGACCGAGAG---CGGGTAATCTTTG-AA [1471]
+Pediastrum_dup CATTCAACGAGCCTAT--CCTTGACCGAGAGGTCCGGGTAATCTTTG-AA [1480]
+Scenedesm_obl CATTCAACAAGCCTAT--CCTTGACCGAAGGGTCTGGGTAATCTTTG-AA [1477]
+Characium_hin CATTCAACGAGCCTAT--CCTTGGCCGAGAGGTCCGGGTAATCTTTG-AA [1476]
+Chlorella_fus CATTCAACAAGCCTAT--CCTTGACCGAAAGGTCCGGGTAATCTTTG-AA [1478]
+Ankistrodesmus CATTCAACGAGCCTAT--CCTTGACCGAGAGGTCTGGGTAATCTGTG-AA [1475]
+Pseudotreb_gig ?????????????????????????????????????????????????? [1486]
+Pleurastr_terr ?????????????????????????????????????????????????? [1488]
+Characium_per CATTCAACGAGTCTAT--CCTTGGCCGAGAGGTCCGGGTAATCTGAG-AA [1479]
+Parietochl_pse CATTCAACGAGCCTAG--CCTTGGCCGACAGGCCCGGGTAATCTTGC-AA [1483]
+Friedmannia_is CAATCAACGAGCCTAT--CCTTGACCGACAGGTCCGGGTAATCTTTG-AA [1482]
+
+[ 1560 1570 1580 1590 1600]
+[ . . . . .]
+
+Glycine_max ATTTCATCGTGATGGGGATAGATCATTGCAATTGTTGGTCTTCAACGAGG [1532]
+Oryza_sativa ATTTCATCGTGATGGGGATAGATCATTGCAATTGTTGGTCTTCAACGAGG [1561]
+Zamia_pumila ATTTCATCGTGATGGGGATAGATCATTGCAATTATTGATCTTCAACGAGG [1561]
+Psilotum_n ?????????????????????????????????????GTCTTCAAC-A-G [1553]
+Equisetum_ar ??????????????????????????????????????TCTTCAACTAGG [1557]
+Atrichum_angus ?????????????????ATAGATCATTGC-ATTATTGATCTTCAA--A-G [1535]
+Notothylas_bre ???????????????GGA-AGATCATTGC-ATTATTGATCTTCAAC-AGG [1528]
+Phaeoceros_lae ATTTCATCGTGAT--GGATAGATCATTGCAATTATTGATCTT-AA----G [1534]
+Porella_pi ??????????????????????????????????????TCTTCAAC-AGG [1552]
+Conocephal_con ??????????????????TAGATCATT?C?ATT?TTGATCTTGAA----- [1524]
+Asterella_tene ?????????????????????????????????????????????????? [1544]
+Riccia ?????????????????????????TTGC?ATTATTGATCTTCAAC-A-G [1543]
+Klebsormid_fla ?????????????????????????????????????????????????? [1566]
+Coleochaet_nit ????????????????????????????????????G-TCTCGAACGA-G [1535]
+Fissidens_taxi ATTTCATCGTGAT--GGATAGATCATTGCAATTATTGATCTTCAAC-A-G [1537]
+Plagiomnium_cu ?????????????????????ATCATTGC-ATTATTGATCTTCAAC---G [1526]
+Micromonas_pus ???????????????????????????????????????????????AG- [1545]
+Mantoniel_squa ?????????????????????????????????????????????????? [1510]
+Nephroselm_pyr ???????????????????????????????????????????????AGG [1543]
+Pedinomonas_mi ?????????????????????????????????????????????????? [1529]
+Tetraselm_cart ?????????????????????????????????????????????????? [1542]
+Enteromorpha ?????????????????????????????????????????????????? [1549]
+Ulva_fasci AACT--ATCGT--TGGGA---AACATTGCAATTATTGTTCTTCAAC-AGG [1531]
+Ulothrix_zo ?????????????????????????????????????????????????? [1481]
+Cympolia_barba CATGCTTCGTGAT?AGGACGAATATTGGAATTGTT-ATTCTTTAACG--G [1555]
+Batophora_oers ??????????????????????????????????????????-??????? [1519]
+Codium_decort ?????????????????????????????????????????????????G [1543]
+Cladophoro ??????????????????????????????????????????C-ACGAGG [1533]
+Blastophysa_rh ??????????????????????AC-TGCAATT-T--GGTCT-CAACG--G [1526]
+Trentepohlia ??????????????????????????????????????????-??????? [1534]
+Cephaleuro_par ATTTCATCGTGATGGGGATAGATCATTGCAATTGTTGGTCTTCAACGAGG [1526]
+Characium_vac ACTGCATCGTGATGGGGATAGATTATTGCAATTATTAGTCTTCAACGAGG [1526]
+Dunaliella_par ACTGCATCGTGATGGGGATAGATTATTGCAATTATTAGTCTTCAACGAGG [1525]
+Chlamyd_reinha ACCGCGTCGTGATGGGGATAGATTATTGCAATTATTAGTCTTCAACGAGG [1527]
+Volvox_carteri ACCGCGTCGTGATGGGGATAGATTATTGCAATTATTAGTCTTCAACGAGG [1544]
+Chlorococc_min ACTGCATCGTGATGGGGATAGATTATTGCAATTATTAGTCTTCAACGAGG [1525]
+Draparn_plum ????????????????????????????????????????????????GG [1536]
+Uronema_belk ????????????????????????????????????AGTCTTCAAC-A-G [1492]
+Chlamydom_moew ????????????????????????????????????????????????GG [1545]
+Stephanos_pl ?????????????????????????????????????????????????G [1549]
+Carteria_rad ??????????????????????????????????????TCTT-AACGAGG [1553]
+Gonium_pecto ??????????????????????????????????????????????ACGG [1540]
+Chlorella_kess ACTGCATCGTGATGGGGATAGATTATTGCAATTATTAATCTTCAACGAGG [1530]
+Chlorella_vulg ACTGCATCGTGATGGGGATAGATTATTGCAATTATTAATCTTCAACGAGG [1532]
+Protothec_wic CCTGCATCGTGATGGGGATAGATTATTGCAATTATTAATCTTCAACGAGG [1527]
+Chlorella_prot CCCGCATCGTGATGGGGATAGATCATTGCAATTATTGATCTTCAACGAGG [1533]
+Chlorella_min TCTGCATCGTGATGGGGATAGATTATTGCAATTATTAATCTTCAACGAGG [1530]
+Neochloris_aqu ACCGCATCGTGATGGGGATAGATTATTGCAATTATTAGTCTTCAACGAGG [1528]
+Neochloris_vig ACCGCATCGTGATGGGGATAGATTATTGCAATTATTAGTCTTCAACGAGG [1521]
+Pediastrum_dup ACTGCATCGTGATGGGGATAGATTATTGCAATTATTAGTCTTCAACGAGG [1530]
+Scenedesm_obl ACTGCATCGTGATGGGGATAGATTATTGCAATTATTAGTCTTCAACGAGG [1527]
+Characium_hin ACTGCATCGTGATGGGGCTAGACTTTTGCAATTATTAGTCTTCAACGAGG [1526]
+Chlorella_fus ACTGCATCGTGATGGGGATAGATTATTGCAATTATTAGTCTTCAACGAGG [1528]
+Ankistrodesmus ACTGCGTCGTGATGGGGATAGATTATTGCAATTATTAGTCTTCAACGAGG [1525]
+Pseudotreb_gig ?????????????????????????????????????????????????? [1536]
+Pleurastr_terr ?????????????????????????????????????GTCTTCAACGAGG [1538]
+Characium_per ACTGCGTCGTGACGGGGCTAGATTATTGCAATTATTAATCTTCAACGAGG [1529]
+Parietochl_pse ACTGCATCGTGATGGGGCTAGATTATTGCAATTATTAATCTTCAACGAGG [1533]
+Friedmannia_is ACTGCATCGTGATGGGGATAGATTATTGCAATTATTAATCTTCAACGAGG [1532]
+
+[ 1610 1620 1630 1640 1650]
+[ . . . . .]
+
+Glycine_max AATTCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGACTAC-GTCCCTGCC [1581]
+Oryza_sativa AATGCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGACTAC-GTCCCTGCC [1610]
+Zamia_pumila AATTCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGACTAC-GTCCCTGCC [1610]
+Psilotum_n AATTCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGACTAC-GTCCCTGCC [1602]
+Equisetum_ar AATTCCTAGTAAGC-CGAGTCATCAGCTCGCGTTGACTA--GTCCCTGCC [1604]
+Atrichum_angus AATTCC-AGTAAGCGCGAGTCATCAGCTCGCGTTGATTAC-GTCCCTGCC [1583]
+Notothylas_bre AAT-CCT-GTAAGCGCGAGTCATCAGCTCGCGTT-ACTAC-GTCCCTGCC [1574]
+Phaeoceros_lae AATT--TAGTAAGCGCGAGTCATCAGCTCG-GTTGACTA--GTCCCTGCC [1579]
+Porella_pi AAT-CCTAGTAAGC-CGAGTCATCAGCTCGCGTTGACTAC-GTCCCTGCC [1599]
+Conocephal_con AATTCC--GTA--CGCGAGTC-T----TCGCGCTGATT-C-GTCCCTGCC [1563]
+Asterella_tene ?????????????????AGTCATCAGCTCGCGTTGACTAC-GTCCCTGCC [1593]
+Riccia AATTCC-AGTAA---CGAGTCGAACAGTCGCGCTGACTAC-GTCCCTGCC [1588]
+Klebsormid_fla ???????????????????????????TCGCGTTGATTTA-GTCCCTGCC [1615]
+Coleochaet_nit AATACCTAGTAAGCGCTCGTCATCAGCGTGCGCT-ACTAC-GTCCCTGCC [1583]
+Fissidens_taxi AATTCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGACTAC-GTCCCTGCC [1586]
+Plagiomnium_cu AATTCC-AGTAAGCGCGAGTCATCAGCTCG-GTTGACTAC--TCCCTGCC [1572]
+Micromonas_pus AATGCCT-GTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCC [1593]
+Mantoniel_squa ?????????????????????????????????????????????????? [1560]
+Nephroselm_pyr AATGCCT-GTAA--GCGAGTCATCAGCTCGCGTTGATTA--GTCCCTGCC [1588]
+Pedinomonas_mi ?????????????????????????????????????????GTCCCTGTC [1579]
+Tetraselm_cart ???????????????????TCATCAGATCGCGTTGATTA--GTCCCTGCC [1590]
+Enteromorpha ????CCTAGTAAGCGCGAGTCATCATCTCGCGTTGATTAC-GTCCCTGCC [1598]
+Ulva_fasci AATGCCTAGTAAG--CGAGTCATCATCTCGCGTTGATTAC-GTCCCTGCC [1578]
+Ulothrix_zo ?????????????????????????????G-GTT-ATTA---TCCCT-CC [1525]
+Cympolia_barba AATGCCTAGTAAGTACCAGTCATCAACCGGTGTTGATTAT-GTCCCTGCT [1604]
+Batophora_oers ????????????????????????AGCTTGCGTTGATTA----CCCTGCC [1565]
+Codium_decort AATGCCTAGTA---CCGGGT--GGATCCCGCGACGATTGC-GTCCCTGCC [1587]
+Cladophoro AATGC-T-GT-AGCGCGAGTCATCAACTCGCGTTGATTAC-GTCCCTGCC [1579]
+Blastophysa_rh AATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCC [1575]
+Trentepohlia ??????????????????????????????CGTTGATTAT---CCCTGCC [1581]
+Cephaleuro_par AATTCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGACTAC-GTCCCTGCC [1575]
+Characium_vac AATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCC [1575]
+Dunaliella_par AATGCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGATTAC-GTCCCTGCC [1574]
+Chlamyd_reinha AATGCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGATTAC-GTCCCTGCC [1576]
+Volvox_carteri AATGCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGATTAC-GTCCCTGCC [1593]
+Chlorococc_min AATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCC [1574]
+Draparn_plum AATGCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGATTACCGTCCCTGCC [1586]
+Uronema_belk AATGCCTAGTAAGCG--AGTCATCAGCTCGCGTTGATTAC-GTCCCTGCC [1539]
+Chlamydom_moew AATGCCTAGTAAGCGTGAGTCATCAGCTCGCGTTGATTAC-GTCCCTGCC [1594]
+Stephanos_pl AATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCC [1598]
+Carteria_rad AATGCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGATTAC-GTCCCTGCC [1602]
+Gonium_pecto AATGCCTAGTAAGCGCGAGTCATCAGCTCG-GTTGATTAC-GTCCCTGCC [1588]
+Chlorella_kess AATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCC [1579]
+Chlorella_vulg AATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCC [1581]
+Protothec_wic AATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCC [1576]
+Chlorella_prot AATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCC [1582]
+Chlorella_min AATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCC [1579]
+Neochloris_aqu AATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCC [1577]
+Neochloris_vig AATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCC [1570]
+Pediastrum_dup AATGCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGATTAC-GTCCCTGCC [1579]
+Scenedesm_obl AATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCC [1576]
+Characium_hin AATGCCTAGTAAGCGCGATTCATCAGATCGCGTTGATTAC-GTCCCTGCC [1575]
+Chlorella_fus AATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCC [1577]
+Ankistrodesmus AATGCCTAGTAGGCGCGATTCATCAGATCGCGCCGATTAC-GTCCCTGCC [1574]
+Pseudotreb_gig ????CCTAGTAAGCG--AGTCATCAGCTCGCGTTGATTAC-GTCCCTGCC [1583]
+Pleurastr_terr AATGCCTAGTAAGCG--AGTCATCAGCTCGCGTTGATTAC-GTCCCTGCC [1585]
+Characium_per AATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCC [1578]
+Parietochl_pse AATGCCTAGTAAGGCCGAGTCATCAGCTCGCGTTGATTAC-GTCCCTGCC [1582]
+Friedmannia_is AATGCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGATTAC-GTCCCTGCC [1581]
+
+[ 1660 1670 1680 1690 1700]
+[ . . . . .]
+
+Glycine_max CTTTGTACACACCGCCCGTCGCTCCTACCGATTGAATGGTCC---GGTGA [1628]
+Oryza_sativa CTTTGTACACACCGCCCGTCGCTCCTACCGATTGAATGGTCC---GGTGA [1657]
+Zamia_pumila CTTTGTACACACCGCCCGTCGCTCCTACCGATTGAATGATCC---GGTGA [1657]
+Psilotum_n CTTTGTACACACCGCCCGTCGCTCCTACCGATTGAATGGTCC---GGTGA [1649]
+Equisetum_ar CTTTGTACACACTGCCCGTCGCTCCTACCGATTGAATGGTCC---GGTGA [1651]
+Atrichum_angus CTTTGTACACACC-CCCGTCGCTCCTACCGATTGAATGGTCC---GGTGA [1629]
+Notothylas_bre CTTTGTACACAC-GCC-GTCGCTCCTACCGATTGAATGGTCC---GGTGA [1619]
+Phaeoceros_lae CTTTGTACACACCGCCCGTCGCTCCTACCGATTGAATGGTCC---GGTGA [1626]
+Porella_pi CTTTGTACACAC--CCCGTCGCTCCTACCGATTGAATGGTCC----GTGA [1643]
+Conocephal_con CTTTGT-C-C-CCGCCC--CGCTCCT-CCGATTGAATGGTCC---GGTGA [1604]
+Asterella_tene CTTTGTACACAC-GCCCGTCGCTCCTACCGATTGAATGGTCC---GGTGA [1639]
+Riccia CTTTGTACACACCGCCCGTCGCTCCTACCGATTGAATGGTCC---GGTGA [1635]
+Klebsormid_fla CTTTGTACACAC-GCCCGTCGCTCCTACCGATTGAATGATCC---GGTGA [1661]
+Coleochaet_nit CTTTGTACACAC-GCCCGTCGCTCCTACCGATAGAATGCTCC---GGTGA [1629]
+Fissidens_taxi CTTTGTACACAC--CCCGTCGCTCCTACCGATTGAATGGTCC---GGTGA [1631]
+Plagiomnium_cu CTTTGTACACAC--CCCGTCGCTCCTACCGATTGAATGGTCC---GGTGA [1617]
+Micromonas_pus CTTTGTACACACC-CCCGTCGCTCCTACCGATTGAATGGTCC---GGTGA [1639]
+Mantoniel_squa ?????????????????????????????????????????????????? [1610]
+Nephroselm_pyr CTTTGTACACAC--CCCGTCGCTCCTACCGATTGAATG-TGC--TGGT?A [1633]
+Pedinomonas_mi CTTTGTAC-CAC-GCCCGT-GCTACTACCGATTGAATC-TTT---GGTGA [1622]
+Tetraselm_cart CTTTGTACACAC--CCCGTCGCTCCTACCGATTGAATG-TG--TTGGTGA [1635]
+Enteromorpha CTTTGTACACACCGCCCGTCGCTCCTACCGATTGAACG-TGC--TG--GA [1643]
+Ulva_fasci CTTTGTACACAC-GCCCGTCGCTCCTACCGATTGAACG-TGC--TGGTGA [1624]
+Ulothrix_zo CTTTGTACA-AC--CCCGTC---CC--CCGATTGAATG--GC-GTAAAGA [1564]
+Cympolia_barba CTTTGT-CTCACCGCC-GTCGCTTGATCCGACGTTAC-AGT---TGGTGA [1648]
+Batophora_oers CTYT--AC-CAC--CC-GTCGCTTGATCCTGTCTTGC-A-T----YGTGA [1603]
+Codium_decort CTTTGTACACAC-GCC-GTCGCT-GATACTGATGGCAG-AAC--TGG--A [1629]
+Cladophoro GTTTGTACACACCGCCCGTCGCTCC-ACCGATTGGGTG-TGCG-T---GA [1623]
+Blastophysa_rh CTTTGT-C-C-CCGCC-GTCGCTCCTACC-ATT-GATG-TGC--TGGTGA [1616]
+Trentepohlia ----GTAC-C-CC-CCCGT-GCTCCTTCCGATTGGGTG-TGG--TGGTGA [1620]
+Cephaleuro_par CTTTGTACACACCGCCCGTCGCTCCTACCGATTGAATGGTCC---GGTGA [1622]
+Characium_vac CTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGA [1622]
+Dunaliella_par CTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGA [1621]
+Chlamyd_reinha CTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGA [1623]
+Volvox_carteri CTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGA [1640]
+Chlorococc_min CTTTGTACACAC-GCCCGTCGCTCCTACCGATTGAGTG-TGC--TGGTGA [1620]
+Draparn_plum CTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-T-C--TGGT-A [1631]
+Uronema_belk CTTTGTACACAC-GCCCGTCGCTCCT-CCGATTGGGTG-TGT--GGGTGA [1584]
+Chlamydom_moew CTTTGTACWYWC-GCCCGTYGCTCCTACCGATTGGGTG-TGC--TGGTGA [1640]
+Stephanos_pl CTTTGTACACACCGCCCGTCGCTCC-ACCGATTGGGTG-TGC--TGGTGA [1644]
+Carteria_rad CTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGA [1649]
+Gonium_pecto CTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGA [1635]
+Chlorella_kess CTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGA [1626]
+Chlorella_vulg CTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGA [1628]
+Protothec_wic CTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGA [1623]
+Chlorella_prot CTTTGTACACACCGCCCGTCGCTCCTACCGATTGAGTG-TGC--TGGTGA [1629]
+Chlorella_min CTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGA [1626]
+Neochloris_aqu CTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGA [1624]
+Neochloris_vig CTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGA [1617]
+Pediastrum_dup CTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGA [1626]
+Scenedesm_obl CTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGA [1623]
+Characium_hin CTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGA [1622]
+Chlorella_fus CTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGA [1624]
+Ankistrodesmus CTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGA [1621]
+Pseudotreb_gig CTTTGTACACAC-GCCCGTCGCTCCTACCGATTGGGTG-TGC--T-GTGA [1628]
+Pleurastr_terr CTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGA [1632]
+Characium_per CTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGA [1625]
+Parietochl_pse CTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGA [1629]
+Friedmannia_is CTTTGTACACACCGCCCGTCGCTCCTACCGATTGGATG-TGC--TGGTGA [1628]
+
+[ 1710 1720 1730 1740 1750]
+[ . . . . .]
+
+Glycine_max AGTGTTCGG--ATTGCGGT------------------------------- [1645]
+Oryza_sativa AGTGTTCGG--ATCGCGGCGACGGGGGCGGTTCGCCGCCCCCGACGTCGC [1705]
+Zamia_pumila AGTGTTCGG--ATCGTGCCGACGACGGCGGTTCGCTGGGCGCGACGTCGC [1705]
+Psilotum_n AGTTTTCGG--ATTGCGGCGAGCGGTCCGCCGGCACGTTGT--------- [1688]
+Equisetum_ar AGTTTTCGG--ATT-CGGCGACGCTGGCGGT-CGCCGGCGACGTTGT--- [1694]
+Atrichum_angus AGTTTTCGG--ATCG--GG-TG-ATCGGGTT-G-GTTCGG?GACTTGT-- [1669]
+Notothylas_bre AGTTTTCGG--ATTG-CGGCGACACCGGGTCACCGCCGGGGACGTT-T-- [1663]
+Phaeoceros_lae AGTTTTCGG--ATTG-CGGCG?ACA?CGGGT?ACCGCCGGGACGTTGT-- [1671]
+Porella_pi AGTTTTCGG--ATTGCGGCGACGCGGCGGTTCGCTGCCGGGACGTTGT-- [1689]
+Conocephal_con AGAGTTCGG--A-CG-CGGCG?ACGTGC?GTCGCCGCCGGGACGTTGT-- [1648]
+Asterella_tene -GAGTTCGG--ATCG-CGGCGACGCGCGGTTCGCCGCCGGGACGTTG--- [1682]
+Riccia -GAGTTCGG--ATCG----CGAC-----GTTCGCCGC-GGGACGTTGT-- [1670]
+Klebsormid_fla AGTTTTCGG--ATTGCGGCTACTGGTCCGCCGCCGAAGAAGCTGTGAG-- [1707]
+Coleochaet_nit AGCATTCGG--ATCGCCACCGGCGGGCAACTCCGGAGACGGCATG----- [1672]
+Fissidens_taxi AGTTTTCGG--ATTG-CG?CG?AC?GGGTTCGCCGCGCGCTGT------- [1671]
+Plagiomnium_cu AGTTTTCGG--ATCG-CG??A?C????GTTCGCCGC?GG?GACGTTGT-- [1662]
+Micromonas_pus AGCGTTCGG--ACCGT-GGCTTTCTGA??G?TTCG?CCGTCGGATGGCCT [1686]
+Mantoniel_squa ?????????????????????????????????????????????????? [1660]
+Nephroselm_pyr GGAGTCCGG--AT?AT???GCGGGTGGGTCC?GCCG?C?TCCGCCCGT-- [1679]
+Pedinomonas_mi GGCTCACGG--ACTGTCGTGCTTCCTTCCTCGTGTTGGTTGTACTTC--- [1667]
+Tetraselm_cart GGAGTT?GG--ATTGGCAGTTTGTGGTGG?TTCG?CCACTGCTTACAGCT [1683]
+Enteromorpha AGCGTTAGG--ACTGG--AACCTTGGGCCGGTCTCCTGCCCATGGTTTC- [1688]
+Ulva_fasci AGCGTTAGG--ACTGGAACTTTGGCCGGTCTCCTGCCCATTGTTTC---- [1668]
+Ulothrix_zo TTTGCGGAATTGCT-TTCACGTTAGTTCCAAGCTCTTACCAC-------- [1605]
+Cympolia_barba ACTGTTTGG--ATTATCCTTGTTCCGTGAAGACGTTACAGGTT------- [1689]
+Batophora_oers AAAGTTTGG--AT--GYCTTCCGAAA?CGGTTACGCCTA----------- [1638]
+Codium_decort A--CCGGGG--ACGC-GCC?TTT??TGGGAGCCCCGCT------------ [1662]
+Cladophoro AAT-TTCGG--ATTAGACAACCTACCGT?AGGG?GTCGT?T--------- [1661]
+Blastophysa_rh AGCA-ACG---ACT-TGGA?CACCCTCGGGT?ATTTGC------------ [1649]
+Trentepohlia AGAGTTCGG--ACTGGACCAGGCTAGCAATA--CCC--TTG--------G [1656]
+Cephaleuro_par AGTGTTCGG--ATTGCGGCGACGTGAGCGGTTCGCTGCCCGCGACGTTGT [1670]
+Characium_vac AGTGTTCGG--ACTGGCT-------------------------------- [1638]
+Dunaliella_par AGTGTTTGG--ACTG-GTT------------------------------- [1637]
+Chlamyd_reinha AGTGTTCGG--ATTGAGCT------------------------------- [1640]
+Volvox_carteri AGTGTTCGG--ATTGACTTTGACTGGGGCAACCTGGTCATGGTT------ [1682]
+Chlorococc_min AGTGTTCGG--ACTTGCG-------------------------------- [1636]
+Draparn_plum AGCGTTCGG--A-TGAAGCGGTGGGACTCTCCTGCCCTCCC--------- [1669]
+Uronema_belk AGCGCTCGG--AT?GGGGCGGTCGGAGTCTCCCACCCCCT---------- [1622]
+Chlamydom_moew AGTGTTCGG--ATTGGCTTTGAGGGG-TGG-CAACTCCCCAG-AGCC--- [1682]
+Stephanos_pl AGTGTTGGG--ATTGACTT--AGTGG-TGGGCA-CTCCA-TGTTGTT--- [1684]
+Carteria_rad AGTGTTCGG--ATCGGA-GTCCTTGGCTGG-CAACAGTTGAGGTTTCT-- [1693]
+Gonium_pecto AGTGTTCGG--ATTGATC--GGCTGG---GGCAACTCGGCCTTGATT--- [1675]
+Chlorella_kess AGTGTTCGG--ATTGGC???????????????????????????GC-C-- [1671]
+Chlorella_vulg AGTGTTCGG--ATTGGC???????????????????????????GC-C-- [1673]
+Protothec_wic AGTGTTCGG--ATTGGC???????????????????????????GC-C-- [1668]
+Chlorella_prot AGTGTTCGG--ATTGGC???????????????????????????GC-C-- [1674]
+Chlorella_min AGTGTTCGG--ATTGGC???????????????????????????GC-C-- [1671]
+Neochloris_aqu AGTGTTCGG--ATTGGCC??????????????????????????????-- [1670]
+Neochloris_vig AGTGTTCGG--ATTGGC???????????????????????????GC-C-- [1662]
+Pediastrum_dup AGTGTTCGG--ATTGGCC??????????????????????????????-- [1672]
+Scenedesm_obl AGTGTTCGG--ATTGGC???????????????????????????GC-C-- [1668]
+Characium_hin AGTGTTCGG--ATTGGCC??????????????????????????????-- [1668]
+Chlorella_fus AGTGTTCGG--ATTGGC???????????????????????????GC-C-- [1669]
+Ankistrodesmus AGTGTTCGG--ATTGGC???????????????????????????GC-C-- [1666]
+Pseudotreb_gig AGCGTTCGG--ATTGCGTTAGTCGGGTTTTCCGCCTCCTCTCACT----- [1671]
+Pleurastr_terr AAAGTTTGG--ACTGGCGGTAGGCGGGTGGTTCGCCATCTGCTGCTGCC- [1679]
+Characium_per AGTGTTCGG--ATCGGCT??????????????????????????????-- [1671]
+Parietochl_pse AGTGTTCGG--ATTGGCC??????????????????????????????-- [1675]
+Friedmannia_is AGTGTTCGG--ATTGGCC??????????????????????????????-- [1674]
+
+[ 1760 1770 1780 1790 1800]
+[ . . . . .]
+
+Glycine_max GAGAAGTCCACTGAACCTTATCATTTAGAGGAAGGAGAAGTCGTAACAAG [1695]
+Oryza_sativa GAGAAGTCCATTGAACCTTATCATTTAGAGGAAGGAGAAGTCGTAACAAG [1755]
+Zamia_pumila GAGAAGTTCATTGAACCTTATCATTTAGAGGAAGGAGAAGTCGTAACAAG [1755]
+Psilotum_n GAGAAGTTCATTAAACCTTATCATTTAGAGGAA????????????????? [1738]
+Equisetum_ar GAGAAGTTCATTGAACCTTACCATTTAGAG???????????????????? [1744]
+Atrichum_angus GAGAA-TTCATTAAA--TTATCATTTAGAGGAA????????????????? [1716]
+Notothylas_bre GA-AA-TTCATTAAACCTTATCATTTA?A????????????????????? [1711]
+Phaeoceros_lae GAGAAG-TCATTAAACCTTATC-TTTAGAGGAA????????????????? [1719]
+Porella_pi GAGAAGTTTATTAAACCTTATCATTTA?A????????????????????? [1739]
+Conocephal_con GAGAAGTTCTTT-AACCTTATCA-TTAGA????????????????????? [1696]
+Asterella_tene GA-AAGTTCTTTAAACCTTATCA??????????????????????????? [1731]
+Riccia GAGAAGTTCTTTAAACCTTATC-TTTAGA????????????????????? [1719]
+Klebsormid_fla GCAAGGTTCATTAAACCTTATCATTTAGAGGA?????????????????? [1757]
+Coleochaet_nit -AGAA-TT-GTTGAACCTTATCGTTTAGAGGA?????????????????? [1719]
+Fissidens_taxi GAGAAGTTCATTAAACCTTATCATTTAGA--A?????????????????? [1719]
+Plagiomnium_cu GAGAAG-TCATTAAACCTTATCATTTA-AG???????????????????? [1710]
+Micromonas_pus GGGAAGTTCGTT-AACCTTATCA??????????????????????????? [1735]
+Mantoniel_squa ?????????????????????????????????????????????????? [1710]
+Nephroselm_pyr CAGAAGTTCTTCAAACCCTCGCATTTAGAG???????????????????? [1729]
+Pedinomonas_mi GGGAAGT--ATACA--CCTGATGATTAGAGGA?????????????????? [1713]
+Tetraselm_cart GAGAAGTTCTCCAAACCCCCCCATT-AG?????????????????????? [1732]
+Enteromorpha --GAATTTCGTT-AACCCTC--GTTTAGAG-A?????????????????? [1732]
+Ulva_fasci GGGAATTTCGTT-AACCCTCCC???????????????????????????? [1717]
+Ulothrix_zo GAGAAGTT-ATT-AACCCTCCCA??????????????????????????? [1653]
+Cympolia_barba --GAAATTCGGTGAACC-----ACCTGTTAT??????????????????? [1732]
+Batophora_oers --GAA-TTCTCTTAACC-----ACCT-TTA???????????????????? [1679]
+Codium_decort AACCACTTTTCTAA???????????????????????????????????? [1712]
+Cladophoro GAGAAGTTCATTAACCCTTCACC?AGAG?AA??????????????????? [1711]
+Blastophysa_rh GGGAAATGTGTTAAACCCTCCCATCTA?A????????????????????? [1699]
+Trentepohlia GGAAGTCCGTTTAAACCCTCCCTA?????????????????????????? [1706]
+Cephaleuro_par GAGAAGTCCACTGAACCTTATCATTTAGAGGAAGGA?????????????? [1720]
+Characium_vac GGGAAGAACATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAG [1688]
+Dunaliella_par GGGAAGAACATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAG [1687]
+Chlamyd_reinha GAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAG [1690]
+Volvox_carteri GAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAG [1732]
+Chlorococc_min GGGAAGAACATTAAACCCTCCCACTTAGAGGAAGGAGAAGTCGTAACAAG [1686]
+Draparn_plum GAGAAGTTCGTTAAACCCTCCCACC????????????????????????? [1719]
+Uronema_belk GAGAAGTCCGTTAAACCCTCCCACCTA-AGGAA????????????????? [1671]
+Chlamydom_moew GAGAAGATCATTAAACCCTCCCACCTAGAG???????????????????? [1732]
+Stephanos_pl GAGAACAACATTAAACCCTCCCACCTAGA--??????????????????? [1732]
+Carteria_rad GAGAAGTTCATTAAACCCTCCC???????????????????????????? [1743]
+Gonium_pecto GAAAAGTTCATTAAACCCTCCCAC?????????????????????????? [1725]
+Chlorella_kess -AGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAG [1720]
+Chlorella_vulg GAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAG [1723]
+Protothec_wic GAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAG [1718]
+Chlorella_prot GAGAAGTTCATTAAACCCTCCCACTTAGAGGAAGGAGAAGTCGTAACAAG [1724]
+Chlorella_min GAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAG [1721]
+Neochloris_aqu AAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAG [1720]
+Neochloris_vig AACAAGT-CATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAG [1711]
+Pediastrum_dup GAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAG [1722]
+Scenedesm_obl GAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAG [1718]
+Characium_hin AAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAG [1718]
+Chlorella_fus GAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAG [1719]
+Ankistrodesmus GAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAG [1716]
+Pseudotreb_gig GAGAAGTTCGTTAAACCCTCCCACCT-GAG-A?????????????????? [1719]
+Pleurastr_terr GGGAAATTCTTTAAACCCTCCCACCTAGAG-AA????????????????? [1728]
+Characium_per GAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAG [1721]
+Parietochl_pse GAGAAGTTCATTAAACCCTCCCACCTAGAGTAAGCAGAAGTCGTAACAAG [1725]
+Friedmannia_is GAGAAGTTCTCTAAACCCTCCCATCTAGAGGAAGGAGAAGTCGTAACAAG [1724]
+
+[ 1810 1820 1830 1840 1850]
+[ . . . . .]
+
+Glycine_max GTTTCCGTAG???????????????????????????????????GACCC [1745]
+Oryza_sativa GTTTCCGTAG???????????????????????GCACCGCTGGCCGACCC [1805]
+Zamia_pumila GTTTCCGTAG???????????????????????????????????????? [1805]
+Psilotum_n ?????????????????????????????????????????????????? [1788]
+Equisetum_ar ?????????????????????????????????GCACCATCGACCGACCG [1794]
+Atrichum_angus ?????????????????????????????????GCAC?AT?GACCGACCG [1766]
+Notothylas_bre ???????????????????????????????????????????????CC? [1761]
+Phaeoceros_lae ?????????????????????????????????GCACCATCGACCGACCA [1769]
+Porella_pi ?????????????????????????????????????????????????? [1789]
+Conocephal_con ????????????????????????????????????CCAGCGACCATGAG [1746]
+Asterella_tene ?????????????????????????????????T?AACATCGACCGACCA [1781]
+Riccia ?????????????????????????????????????????????????? [1769]
+Klebsormid_fla ?????????????????????????????????????????????????? [1807]
+Coleochaet_nit ??????????????????????????????????CACCACGCGCCGATCC [1769]
+Fissidens_taxi ?????????????????????????????????????????????????? [1769]
+Plagiomnium_cu ?????????????????????????????????GCACCATCGACCGACCG [1760]
+Micromonas_pus ?????????????????????????????????????????????????? [1785]
+Mantoniel_squa ?????????????????????????????????????????????????? [1760]
+Nephroselm_pyr ?????????????????????????????????????????????????? [1779]
+Pedinomonas_mi ?????????????????????????????????????????????????? [1763]
+Tetraselm_cart ????????????????????????????????????CCATCGACCGACCA [1782]
+Enteromorpha ??????????????????????????????????????????ACC?ACCA [1782]
+Ulva_fasci ???????????????????????????????????????????????CCA [1767]
+Ulothrix_zo ?????????????????????????????????????????????????? [1703]
+Cympolia_barba ??????????????????????????????????TGTGTTAAGCACCGAG [1782]
+Batophora_oers ?????????????????????????????????????????????????? [1729]
+Codium_decort ?????????????????????????????????????????????????? [1762]
+Cladophoro ??????????????????????????????????????????GCCAACCA [1761]
+Blastophysa_rh ?????????????????????????????????????????GACCGACCA [1749]
+Trentepohlia ?????????????????????????????????????????????????? [1756]
+Cephaleuro_par ???????????????????????????????????????????GCTGCCA [1770]
+Characium_vac GTTTCCGTAG???????????????????????????????????????? [1738]
+Dunaliella_par GTTTCCGTAG???????????????????????????????????????? [1737]
+Chlamyd_reinha GTTTCCGTAG???????????????????????????????????????? [1740]
+Volvox_carteri GTTACCGTAGGTGAACCTGCGGAAGGATCATTG????????????????? [1782]
+Chlorococc_min GTTTCCGTAG???????????????????????????????????????? [1736]
+Draparn_plum ???????????????????????????????????????????????CC? [1769]
+Uronema_belk ?????????????????????????????????????????????????? [1721]
+Chlamydom_moew ???????????????????????????????????????TCGACCGACC? [1782]
+Stephanos_pl ?????????????????????????????????GCACCATCGACCGACCA [1782]
+Carteria_rad ?????????????????????????????????GCACCATCGACCGACCA [1793]
+Gonium_pecto ?????????????????????????????????GCACCATCGACCGACCA [1775]
+Chlorella_kess GTTTCCG??????????????????????????????????????????? [1770]
+Chlorella_vulg GTTTCCG??????????????????????????????????????????? [1773]
+Protothec_wic GTTTCCG??????????????????????????????????????????? [1768]
+Chlorella_prot GTTTCCG??????????????????????????????????????????? [1774]
+Chlorella_min GTTTCCG??????????????????????????????????????????? [1771]
+Neochloris_aqu GTTTCCGTAG???????????????????????????????????????? [1770]
+Neochloris_vig GTTTCCG??????????????????????????????????????????? [1761]
+Pediastrum_dup GTTTCCGTAG???????????????????????????????????????? [1772]
+Scenedesm_obl GTTTCCG??????????????????????????????????????????? [1768]
+Characium_hin GTTTCCGTAG???????????????????????????????????????? [1768]
+Chlorella_fus GTCTCCG??????????????????????????????????????????? [1769]
+Ankistrodesmus GTTTCCG??????????????????????????????????????????? [1766]
+Pseudotreb_gig ?????????????????????????????????????????????????? [1769]
+Pleurastr_terr ?????????????????????????????????????????????????? [1778]
+Characium_per GTTTCCGTAG???????????????????????????????????????? [1771]
+Parietochl_pse GTTTCCGTAG???????????????????????????????????????? [1775]
+Friedmannia_is GTTTCCGTAG???????????????????????????????????????? [1774]
+
+[ 1860 1870 1880 1890 1900]
+[ . . . . .]
+
+Glycine_max TGAT?CTTCT?TGAAGGGTTC?GAGTGAGAGCA?TACCTGTCGGGACCCG [1795]
+Oryza_sativa TGAT?CTTCTGTGAAGGGTTC?GAGTTGGAGCA?CGCCTGTCGGGACCCG [1855]
+Zamia_pumila ?????????????????????????????????????????????????? [1855]
+Psilotum_n ?????????????????????????????????????????????????? [1838]
+Equisetum_ar TGAT?CTTCTGTGAAAGGTTT?GAGTGAGAGCA?TACCTGCTGGGACCC? [1844]
+Atrichum_angus TGAT?CTTCTGTGAAAGGTTT?GAGTGTGAGC??T?CCTGCTGGGACCC? [1816]
+Notothylas_bre TGAT?CTTCTGTGA?AGGTTT?GAGTGTGAGCA?TACCTGCTGGGACCC? [1811]
+Phaeoceros_lae TGAT?CTTCTGTGAAAGGTTT??AGTGTGA??A?TACCTGCTGGGACCC? [1819]
+Porella_pi ?????????????????????????????????????????????????? [1839]
+Conocephal_con CATC?TCGATGCGAAAGGTT??GAGT??GAGCG?TGCCTGTTGGGACCC? [1796]
+Asterella_tene TGAT?CTTCTGTGAAAGGTTC?G?GT?GGAGCA?TGCCTGTTGGGACCC? [1831]
+Riccia ????????????A?AAGGTTCGGAGTAAGAGCAT?GCCT?TTGGGACCC? [1819]
+Klebsormid_fla ?????????????????????????????????????????????????? [1857]
+Coleochaet_nit GGAGA?ATGTCGGAAGGGTTC?GAGCTGAGA?A??GTATGTTGGGACCC? [1819]
+Fissidens_taxi ??????TTCTGTGAAAGGTTC?GAGTGTGAGCA?TACCTGTTGGGAC??? [1819]
+Plagiomnium_cu TGAT?CTTCTGTGAAAGGTTT?GAGTGTGAGCA?CACATGTTGGGACCC? [1810]
+Micromonas_pus ??????????????????????????????????????????GGGACC?? [1835]
+Mantoniel_squa ??????????????????????????????????????TGCTGGGACC?? [1810]
+Nephroselm_pyr TGAT?CTTCTGTGAAAGGTTT?GAGT?CGAGCA??ACCTGTTGGGACC?? [1829]
+Pedinomonas_mi ?????????????????????????????AGCA?GATATGTTGG??CCC? [1813]
+Tetraselm_cart TGAT?CTTTTGTGAAAGGTTT?GAGTACGAGCA?TACCTGTTGGGACCC? [1832]
+Enteromorpha T?AT?CTTCTGTGAAAGG?TC??A?TACGA??G?TACCTTTTGGGACCCT [1832]
+Ulva_fasci TGAT?C?TCTGTGAAAGGTT??GAGTACGAGCG?TACCTGTTGGGACC?? [1817]
+Ulothrix_zo ??AT?CTTCTGTGAT?GGTTC?GAGTACGAGCAGTACCT?TTGGGACCC? [1753]
+Cympolia_barba TTCT?CTTTTACGAAAAACTC?GAGTGTGAGCA?TGCCGTT?A?GATCT? [1832]
+Batophora_oers ?????????????????????????????????????????TGG?ACC?? [1779]
+Codium_decort ?????????????????????????????????????????????????? [1812]
+Cladophoro TGATGCTTTTGTG??AGGTTT?GAGC??GAGCG?CAGTCG?TAGGACCCG [1811]
+Blastophysa_rh TGAT?CTTCTGAGAAAGGTTC?GAGTTGGAGCG?TGCCT?TTGGGACCC? [1799]
+Trentepohlia ??TC?CTCACAT?ATATCTTT?T?ATTCATAAC?TACCT?TTGGGACCC? [1806]
+Cephaleuro_par TGAT?CTTCTGTG???GGTTC?GAGTAGGAGCG?G?CCTGTTGGGACCGG [1820]
+Characium_vac ?????????????????????????????????????????????????? [1788]
+Dunaliella_par ?????????????????????????????????????????????????? [1787]
+Chlamyd_reinha ?????????????????????????????????????????????????? [1790]
+Volvox_carteri ?????????????????????????????????????????????????? [1832]
+Chlorococc_min ?????????????????????????????????????????????????? [1786]
+Draparn_plum TGAT?CTTCTGTGAAAGGT???GAGTACGAGCA?TACCT?TTGGGACCC? [1819]
+Uronema_belk ??????????????????????GAGT?CGAGCA??ACCT?TTGGGACCC? [1771]
+Chlamydom_moew TAGAGCTTCTGCGAAAGGTTT?GAGTGCGAGCA?TA?ATGTTGGGACC?? [1832]
+Stephanos_pl TGAT?CTTCTGTGAAAGGTTT?GAGTGCGAGCA?TACCTGTTGGGACCC? [1832]
+Carteria_rad TGA?GCTTCTGC?AAAGGTTT?GAGTGCG?GTG?T?ACT?TTGGGACCC? [1843]
+Gonium_pecto TGTTGCTTTTGCGAAAGGTT??GAGTGCGAGCA?TACCTGTTGGGACCC? [1825]
+Chlorella_kess ?????????????????????????????????????????????????? [1820]
+Chlorella_vulg ?????????????????????????????????????????????????? [1823]
+Protothec_wic ?????????????????????????????????????????????????? [1818]
+Chlorella_prot ?????????????????????????????????????????????????? [1824]
+Chlorella_min ?????????????????????????????????????????????????? [1821]
+Neochloris_aqu ?????????????????????????????????????????????????? [1820]
+Neochloris_vig ?????????????????????????????????????????????????? [1811]
+Pediastrum_dup ?????????????????????????????????????????????????? [1822]
+Scenedesm_obl ?????????????????????????????????????????????????? [1818]
+Characium_hin ?????????????????????????????????????????????????? [1818]
+Chlorella_fus ?????????????????????????????????????????????????? [1819]
+Ankistrodesmus ?????????????????????????????????????????????????? [1816]
+Pseudotreb_gig ??????????????????????????????????????????GGG?CCC? [1819]
+Pleurastr_terr ?????????????????????????????????????????????????? [1828]
+Characium_per ?????????????????????????????????????????????????? [1821]
+Parietochl_pse ?????????????????????????????????????????????????? [1825]
+Friedmannia_is ?????????????????????????????????????????????????? [1824]
+
+[ 1910 1920 1930 1940 1950]
+[ . . . . .]
+
+Glycine_max AAAGATGGTGAACT?TGCCTGAGCGGGG?CGAAGCCAGAGGAAACTCTGG [1845]
+Oryza_sativa AAAGATGGTGAACTATGCCTGAGCGGGG?CGAAGCCAGAGGAAACTCTGG [1905]
+Zamia_pumila ?????????????????????????????????????????????????? [1905]
+Psilotum_n ?????????????????????????????????????????????????? [1888]
+Equisetum_ar AAAGATGGTGAACTATGCCTGAGCAGGG?CGAAGCCAGAGGAAACTCTGG [1894]
+Atrichum_angus ?AAGATGGTGAACTATGCCTGAGC?AGG?CGAAGCCAGAGGAAACTCTGG [1866]
+Notothylas_bre ???GATGGTGA?CTATGCCTGAGCAGGG?CGAAGCCAGAGGAAACTCTGG [1861]
+Phaeoceros_lae ?AAGATGGTGAACTATGCCTGAGTCAGG?CGAAGCCAGAGGAAACTCTGG [1869]
+Porella_pi ?????????????????????????????????????????????????? [1889]
+Conocephal_con ?AAGATGGTGA?CTATGC?TGAGCAGG??CGAAGCCGGAGGAAACTCCGG [1846]
+Asterella_tene ?AAGATGGTGAACTATGC?TGAGCAGGG?CGAAGTCAGAGGAAACTCTGG [1881]
+Riccia ?AAGATGGTGAACTAT???TGAG?A?GG?CGAAGCCAGAGGAAACTCTGG [1869]
+Klebsormid_fla ??AGATGGTGAACTATGCCTGAGGCAGG?CGAAGCCAGAGGAAACTCTGG [1907]
+Coleochaet_nit ??AGATGGTGAACTATGCCTGA??AGG??CGAAGCCAGAGGAAACTCTGG [1869]
+Fissidens_taxi ?AAGATGGTGAACTAT???TGA???AGG?CGAAGCCAGAGGAAACTCTGG [1869]
+Plagiomnium_cu ??AGATGGTGAACTATGCCTGAGCAGGG?CGAAGCCAGAGGAAACTCTGG [1860]
+Micromonas_pus ??AGATGGTGAACTATG??TGAGCA?GG?CGAAGCCAGAGGAAACTCTGG [1885]
+Mantoniel_squa ???GATGGTGAACTATG?CTGAGCA?GG?CGAAGCCAGAGGAAACTCTGG [1860]
+Nephroselm_pyr ???GATGGTGAACTATGCCTGAGCA?GG?CGAAGCCAGAGGAAACTCTGG [1879]
+Pedinomonas_mi ??AGATGGTGAACTATG?CTGAAC?GGG?TGAAGCCAGGGGAAACT?TGG [1863]
+Tetraselm_cart ??AGATGGTGAACTATGCCTGAGCA?GG?CGAAGCCAGAGGAAACTCTGG [1882]
+Enteromorpha TAAGATGGTGAACTATGCCTGA?CA?GG?CGAAGCCAGAGGAAACTCTGG [1882]
+Ulva_fasci AAAGATGGTGAACTATG?CTGAGCA?GG?CGAAGCCAGAGGAAACTC?GG [1867]
+Ulothrix_zo ?AAGATGGTGATCTATGCCTGAGCAGGG??GAAGCCAGAGGAAACTCTGG [1803]
+Cympolia_barba ??AGATGGTGA?CTATACTTGGGTAG?A?TGTAGC?AGGAGAAATTCTGG [1882]
+Batophora_oers ??AGATGGT???CTATGCTTGGGTAGGA?CGAAG?CTGGGGAAACTCTGA [1829]
+Codium_decort ?????????????????????????????????????????????????? [1862]
+Cladophoro G??GATGGTGAACTATGCCTGGTGCACGACGAAGCGC??GGAAACGCCGG [1861]
+Blastophysa_rh ?AAGATGGTGAACTATGCCTGAGCA?GG?CGAAGCCAGAGGAAACTCTGG [1849]
+Trentepohlia ?AAGATGGTGAACTATGCCTGATCAGG??CGAAGCCAGAGGAAACTCTGG [1856]
+Cephaleuro_par G??GATGGTGAACTATGCCTGATCAGG??CGAAGCCAGAGGAAACTCTGG [1870]
+Characium_vac ?????????????????????????????????????????????????? [1838]
+Dunaliella_par ?????????????????????????????????????????????????? [1837]
+Chlamyd_reinha ?????????????????????????????????????????????????? [1840]
+Volvox_carteri ?????????????????????????????????????????????????? [1882]
+Chlorococc_min ?????????????????????????????????????????????????? [1836]
+Draparn_plum AAAGATGGTGAACTATGCCTGAGCGAGG?CGAAGC?AGAGGAAACTCTGG [1869]
+Uronema_belk ?AAGATGGTGAACTATG?CTGAGCA?GG?CGAAGCCAGAGGAAACTCTGG [1821]
+Chlamydom_moew ??AGATGGTGAACTATGCCTGGGCAGGG?TGAAGCCAGAGGAAACTCTGG [1882]
+Stephanos_pl AAAGATGGTGAACTATGCCTGAGCAAGG?TGAAGCCAGAGGAAACTCTGG [1882]
+Carteria_rad ??AGATGGTGAACTATGCCTGAGCAGGG?TGAAGCCAGAGGAAACTCTGG [1893]
+Gonium_pecto ?AAGATGGTGAA?TATGCCTGAGCAAGA?TGAAGCCAGAGGAAACTCTGG [1875]
+Chlorella_kess ?????????????????????????????????????????????????? [1870]
+Chlorella_vulg ?????????????????????????????????????????????????? [1873]
+Protothec_wic ?????????????????????????????????????????????????? [1868]
+Chlorella_prot ?????????????????????????????????????????????????? [1874]
+Chlorella_min ?????????????????????????????????????????????????? [1871]
+Neochloris_aqu ?????????????????????????????????????????????????? [1870]
+Neochloris_vig ?????????????????????????????????????????????????? [1861]
+Pediastrum_dup ?????????????????????????????????????????????????? [1872]
+Scenedesm_obl ?????????????????????????????????????????????????? [1868]
+Characium_hin ?????????????????????????????????????????????????? [1868]
+Chlorella_fus ?????????????????????????????????????????????????? [1869]
+Ankistrodesmus ?????????????????????????????????????????????????? [1866]
+Pseudotreb_gig ???GATGGTG??CTATG?CTGAGC??GG?C?AAGCCAGAGGAAACTCTGG [1869]
+Pleurastr_terr ?????????????????????????????????????????????????? [1878]
+Characium_per ?????????????????????????????????????????????????? [1871]
+Parietochl_pse ?????????????????????????????????????????????????? [1875]
+Friedmannia_is ??AGATGGTG??CTATGCCTGAGC??GG?CGAAGC?AGAGGA???TCTGG [1874]
+
+[ 1960 1970 1980 1990 2000]
+[ . . . . .]
+
+Glycine_max TGGAGGCCC?GCAGCGATACTGACGTGCAAATCG?TTCGTCTGACTTGGG [1895]
+Oryza_sativa TGGAGGCTC?GAAGCGATACTGACGTGCAAATCG?TTCGTCTGACTTGGG [1955]
+Zamia_pumila ?????????????????????????????????????????????????? [1955]
+Psilotum_n ?????????????????????????????????????????????????? [1938]
+Equisetum_ar TGGAGGCTC?GTAGCGATACTGACGTGCAAATCG?TTCGTCAGACTTGGG [1944]
+Atrichum_angus TGGAGGCTC?G?AGC?ATACTGACGTGCAAATCG?TTCGTCAGACTTGGG [1916]
+Notothylas_bre TGGAGGCTC?GTAGCGATACTGA?GTGCAAATCG?TTCGTCAGACTTGGG [1911]
+Phaeoceros_lae TGGAGGCTC?GTAGCGATACTGA?GTGC?AATCG?TTCGTCAGACTTGGG [1919]
+Porella_pi ?????????????????????????????????????????????????? [1939]
+Conocephal_con TGGAGGCTC?GTAGCGATACTGACGTGCAAATCG?TTC?TCAGACTCGGG [1896]
+Asterella_tene TGGAGGCTC?GTAGCGATACTGACGTGCAAATCG?TTCGTCAGACTCGGG [1931]
+Riccia TGGAGGCTC?GTAGCGATACTGACGTGCAAATCG?TTCGTCAGACTTGGG [1919]
+Klebsormid_fla TGGAGGCTC?G?A?CGATACTGACGTGCAAATCG?TTCGTCAG?CTTGGG [1957]
+Coleochaet_nit TGGAAGATC?GCAGC?ATACTGACGTGCAAATCG?TTCGTCGGACTTG?G [1919]
+Fissidens_taxi TGGAGGCTC?GTAGCGATACTGACGTGCAAATCG??T?GT?AGACTTGGG [1919]
+Plagiomnium_cu TGGAGGCTC?GTAGCGATACTGACGTGCAAATCG?TTCGTCAGACTTGGG [1910]
+Micromonas_pus TGGAGGCTC?GTAGCGATACTGACGTGC?AATCG?TTCGTCGGACTTGGG [1935]
+Mantoniel_squa TGGA??CTC?GT?GCGATACTGACGTGC?AATCG?TTCGTCGGACTTGGG [1910]
+Nephroselm_pyr TGGA??CTC?GTA??G?TACTGACGTGCAAATCG?TTCGTCGGACTTGGG [1929]
+Pedinomonas_mi TGGAGGCTC?GTAGC?ATACTGACGAGC?AATCG?TTCGT?TGATTTGGG [1913]
+Tetraselm_cart TGGAGGCTC?GTAGATGTGCT?ACGTGCAAATCG?CTTTTCGGACTTGGG [1932]
+Enteromorpha TG?AGGCTC?GTAGATGTGCT?ACGTGCAAATCGCCTTTTCGGACTTGGG [1932]
+Ulva_fasci TGGAGGCTCGG?AGATGTGCT?ACGTGC?AATCG?CTTTTCGGACTTGGG [1917]
+Ulothrix_zo TGGAGGCTC?GTAGAT?TGCTG?CGTGC?AATCG?CTT?TCGGACTTGG? [1853]
+Cympolia_barba TGGATGTTC?GAAAGTGTGC?GA?GTGC?AATCG?CTTCTCAAACCTGAG [1932]
+Batophora_oers TGGAGGTCC?GAAGCT?TGCTGA?GTGCAAATCG?CTTCTCA?ACT?GAG [1879]
+Codium_decort ?????????????????????????????????????????????????? [1912]
+Cladophoro TGGAGGTCG?G?AGATGTGCT?ACGTGC?AATCG?CTTTTCAGACATGGG [1911]
+Blastophysa_rh TGGAGGCTC?GTAGATGTGCTGA?GTGCAAAT?G??T?TTCGGACTTGGG [1899]
+Trentepohlia TGGAGGCTC?GTA?ATGTGCT?ACGTGCAAATCG?CTTTTCGGAATTGG? [1906]
+Cephaleuro_par TGGAGGCTC?GTAGATGTGCT?ACGTGCAAATCG?CTTTTCGGAATTGGG [1920]
+Characium_vac ?????????????????????????????????????????????????? [1888]
+Dunaliella_par ?????????????????????????????????????????????????? [1887]
+Chlamyd_reinha ?????????????????????????????????????????????????? [1890]
+Volvox_carteri ?????????????????????????????????????????????????? [1932]
+Chlorococc_min ?????????????????????????????????????????????????? [1886]
+Draparn_plum T??AGGCTC?GTA?ATGTGCTGACGTGC?AATCG?CTTTTCGGACTTGGG [1919]
+Uronema_belk TGGAGGCTC?GTAGATGTGCTGACGTGCAAATCG?CTTTTCGGACTTGGG [1871]
+Chlamydom_moew TGGAGGCTC?GTAGATGTGCTGACGTGCAAATCG?CTTTTCTGACCTGGG [1932]
+Stephanos_pl TGGAGGCCT?GTAGATGTGCTGACGTGCAAATCG?CTTTTCTGACTTGGG [1932]
+Carteria_rad TGGAGGCTC?GTAGATGTGCTGACGTGCAAATCG?CTTTTCGGACTTGGG [1943]
+Gonium_pecto TGGAGGTCTGGTAGATGTGCTGACGTGC?AATCG?CTTTTCTGACTTGGG [1925]
+Chlorella_kess ?????????????????????????????????????????????????? [1920]
+Chlorella_vulg ?????????????????????????????????????????????????? [1923]
+Protothec_wic ?????????????????????????????????????????????????? [1918]
+Chlorella_prot ?????????????????????????????????????????????????? [1924]
+Chlorella_min ?????????????????????????????????????????????????? [1921]
+Neochloris_aqu ?????????????????????????????????????????????????? [1920]
+Neochloris_vig ?????????????????????????????????????????????????? [1911]
+Pediastrum_dup ?????????????????????????????????????????????????? [1922]
+Scenedesm_obl ?????????????????????????????????????????????????? [1918]
+Characium_hin ?????????????????????????????????????????????????? [1918]
+Chlorella_fus ?????????????????????????????????????????????????? [1919]
+Ankistrodesmus ?????????????????????????????????????????????????? [1916]
+Pseudotreb_gig TG?AGGCTC?G?AGATGTGCTGACGTGC??ATCG?CTTTTCGGACTTGGG [1919]
+Pleurastr_terr ?????????????????????????????????????????????????? [1928]
+Characium_per ?????????????????????????????????????????????????? [1921]
+Parietochl_pse ?????????????????????????????????????????????????? [1925]
+Friedmannia_is TGGAGGCTC?G?AGATGTGCTGACGTGC?AATCG?CTTTTC?GACTTGG? [1924]
+
+[ 2010 2020 2030 2040 2050]
+[ . . . . .]
+
+Glycine_max TATAGGGGCGAAAGACTAATCGAACCGTGCG?GG?GGCCCCGGAAAGAGT [1945]
+Oryza_sativa TATAGGGGCGAAAGACTAATCGAACCATGCG?GG?GGCCTCGGG?AGAGT [2005]
+Zamia_pumila ?????????????????????????????????????????????????? [2005]
+Psilotum_n ?????????????????????????????????????????????????? [1988]
+Equisetum_ar TATAGGGGCGAAAGACTAATCGAACCATGCG?GG?GGCCCTGGGAAGAGT [1994]
+Atrichum_angus ?ATA????C?AAAGACT?ATCGAACCATGCG?AG?GGCCCCGGGAAGAGT [1966]
+Notothylas_bre TATAGGGGCGAAAG?CTAATCG???????????????CCCCGGG?AGAGT [1961]
+Phaeoceros_lae TATA?GGGC???AGACTAATCGAACCATGCG??G?GGCCCCGGG?AGAGT [1969]
+Porella_pi ?????????????????????????????????????????????????? [1989]
+Conocephal_con ?ATA??????AAAGACT?ATCGAACCATGCG?G???GCCCCGGGAAGAGT [1946]
+Asterella_tene ?ATA??????AAAGACTAATCGAACCATGCG?GA?GGCCCCGGGAAGAGT [1981]
+Riccia ?ATAG??G??AAAGA?TAATCGAACCATCTAGTA?AGCCCCGGGAAGAGT [1969]
+Klebsormid_fla ??TA??GCGGAAAGACTAATCGAACCAT???????????????GAAGAGT [2007]
+Coleochaet_nit TATA????C?AAAGACT?ATC?AACCATGCG?GG?G?CTCCGGG?AGAGT [1969]
+Fissidens_taxi TATAGGGGC???AGACTAATCGAAC?AT?CG??G?GGCCCCTGGAAGAGT [1969]
+Plagiomnium_cu TATAGGGGC?AAAGACTAATCGAACCATGCG?AG?GGCCCCTGGAAGAGT [1960]
+Micromonas_pus TATA???????AAGACT?ATC?AA????GG????GAGCCCCGGG?AGAGT [1985]
+Mantoniel_squa TATA????C?AAAGACT?ATC?AACCAT?????????????????AGAGT [1960]
+Nephroselm_pyr TATA?GG?CGAAAGACT?ATC?AACCATGCG?GG?GGCCCCAGGAAGAGT [1979]
+Pedinomonas_mi ?ATAGGGGCG?AAGACTAATCGAACCAT??????????TCCGG???GAGT [1963]
+Tetraselm_cart ??TA????CGAAAGACT?ATC?AACCATGCG?AT?GGCCCTGGGAAGAGT [1982]
+Enteromorpha TATA??GGC?AAAGACTAATCGAACCAT???????GG???TGGAAAGAGT [1982]
+Ulva_fasci TATA??GG????A?ACT?ATCGAACCATCGA?T??GGC?CTGGAAAGAGT [1967]
+Ulothrix_zo ?ATAGGGG?G?AAGACT?ATCGAAC?AT?????????CCTT?GGAAGAGT [1903]
+Cympolia_barba TTTAGGGGC???AGACTAATC?AACCA??????????????????????? [1982]
+Batophora_oers TA?A?GGGC?AAA?ACTAA??????????????????????????????? [1929]
+Codium_decort ??????????????????????????????ACGGCGGCGGCGGG?AGAGT [1962]
+Cladophoro TATAGGGGC?AAAGACTAATCGAACCAT?GG?CA?TGGTCCGGG?AGAGT [1961]
+Blastophysa_rh TATA?GGGCGAAAGACT?ATC?AACCAT??????????????GGAAGAGT [1949]
+Trentepohlia ??CA??G?????A?A??AATCGAACCATGCG?AT?GGTCCCGGGTAGAGT [1956]
+Cephaleuro_par TGT?????CGAAAGACTAATCGA?CCATGAG?TG?GTC???GGGTAGAGT [1970]
+Characium_vac ?????????????????????????????????????????????????? [1938]
+Dunaliella_par ?????????????????????????????????????????????????? [1937]
+Chlamyd_reinha ?????????????????????????????????????????????????? [1940]
+Volvox_carteri ?????????????????????????????????????????????????? [1982]
+Chlorococc_min ?????????????????????????????????????????????????? [1936]
+Draparn_plum ?ATA????C???AGA?T?AT??AACCAT?????????????????????? [1969]
+Uronema_belk TATA???GCGAAA?ACT?ATC?AACCATGCA?TC?GGCCCTGGG?AGAGT [1921]
+Chlamydom_moew CATAGGGGCGAAAGACTAATCGAACCAT?CTAGTA??????????????? [1982]
+Stephanos_pl TATAGGGGCGAA?GACTAATCGAACCAT????????????TGGGAAGAGT [1982]
+Carteria_rad TATAGGGGCGAAAGACTAATCGAACCATG?T?C??G?CCCCAGGAAGAGT [1993]
+Gonium_pecto ?ATAGGGG????AGACT?ATCGAACCATGC??TC?GGCCCTGGG?AGAGT [1975]
+Chlorella_kess ?????????????????????????????????????????????????? [1970]
+Chlorella_vulg ?????????????????????????????????????????????????? [1973]
+Protothec_wic ?????????????????????????????????????????????????? [1968]
+Chlorella_prot ?????????????????????????????????????????????????? [1974]
+Chlorella_min ?????????????????????????????????????????????????? [1971]
+Neochloris_aqu ?????????????????????????????????????????????????? [1970]
+Neochloris_vig ?????????????????????????????????????????????????? [1961]
+Pediastrum_dup ?????????????????????????????????????????????????? [1972]
+Scenedesm_obl ?????????????????????????????????????????????????? [1968]
+Characium_hin ?????????????????????????????????????????????????? [1968]
+Chlorella_fus ?????????????????????????????????????????????????? [1969]
+Ankistrodesmus ?????????????????????????????????????????????????? [1966]
+Pseudotreb_gig ??TA??GGCG??AGACTAATCGAACCAT??????????????GG?AGAGT [1969]
+Pleurastr_terr ???????????????????????????????????GGCC?TGGG?AGAGT [1978]
+Characium_per ?????????????????????????????????????????????????? [1971]
+Parietochl_pse ?????????????????????????????????????????????????? [1975]
+Friedmannia_is ??TAGGGGCGAAAGACTCATC?AACCAT??????????????GG?AGAGT [1974]
+
+[ 2060 2070 2080 2090 2100]
+[ . . . . .]
+
+Glycine_max TATCTTTTCTGTTT?AACA?GCCT?GCCC?ACCCTGGAAA?GCCTCAGCC [1995]
+Oryza_sativa T?TCTTTTCTGCTT?AAC?GGCCC?GCCA?AC?CTGGAAACGGTTCAGCC [2055]
+Zamia_pumila ?????????????????????????????????????????????????? [2055]
+Psilotum_n ?????????????????????????????????????????????????? [2038]
+Equisetum_ar TCTCTTTTCTTTTT?AACA?ACTT?GCCC?ACCCTGAAATCGGATCAACC [2044]
+Atrichum_angus TCTCTTTTCT?TTT?AACA?GCCT?GCCT??CCCTGGAATCGGATTACC? [2016]
+Notothylas_bre TCTC?TTTCTTTTT?AACA?GCCT?GCCT?ACCCTGAAATCGGATTACCC [2011]
+Phaeoceros_lae TCTCTTTTCT?TTT?AACA???CT?GCCT?GCCCTGAAATCGGATTACCC [2019]
+Porella_pi ?????????????????????????????????????????????????? [2039]
+Conocephal_con TTTCTTTTCT?TTT??AC?GACCT?GCC??GCCCTGGAATCGCTTTATGC [1996]
+Asterella_tene TTTCTTTTCT??TT??AC?GACC??GCCG?GCCCTGAAATCGCATTACGC [2031]
+Riccia TTTCTT?TCTT?TT??AC?GACC??GCC??GCC?TG?AATCGCA?TACGC [2019]
+Klebsormid_fla TCTCTTTTCTTTTT?AACAGTCC??GCCC?ACCCTGGAATCAGATTAACT [2057]
+Coleochaet_nit TTT?TTTTCTTTTT?GACA?GTCG??AGC?GCCCTGGAATTGATT?C?CG [2019]
+Fissidens_taxi TCTCTTTTCT?TTT?AAC?GGCCT?GCCT???CCTGGAATCGGATTACCC [2019]
+Plagiomnium_cu TCTCT?TTCT?TTT??AC?GGCCC?GACG?ACCCTGGAATCGGTTCACCC [2010]
+Micromonas_pus TCTCTTTTCTTTTT?A?CA?GCCT??CGC?GCCCTGGAATCGGTTT?GCC [2035]
+Mantoniel_squa TCTCTTTTCTTTTT??ACA?GCCT?T?GC?GCCCTGGAATCGGTTT?GCC [2010]
+Nephroselm_pyr TCTCTTTTCTTTTT?AACA?GCCC?GCCC?ACCCTGGAATCGGATTATCC [2029]
+Pedinomonas_mi T?TCTTTTCTTTTT??ACA?GCCT?GTA??GCCCTGGAATCGGATT?CCC [2013]
+Tetraselm_cart TCTCTTTTCTTTTT?AACAGGCTC?GAAG?GCCCTGGAATCTAATCATTA [2032]
+Enteromorpha TCTC?TTTCTTTT??AACA?GCCC?CA?G?ACCCTGGAATCGAGTCATTC [2032]
+Ulva_fasci TCTCTTTTCTTTTC?AACCAGGGG??A?G?A?CCTGGAATCGAGTC?TTC [2017]
+Ulothrix_zo TCTCTTTTCTTTTT?AA?A?GCC???A?G?ACCC?GG?ATCG?GTC?TTC [1953]
+Cympolia_barba ?????????????????????????????????????????????????? [2032]
+Batophora_oers ?????????????????????????????????????????????????? [1979]
+Codium_decort TCTCTTTTCTTGTT?GACGAGCT??AAGG?ACCCTGGAA?C???TC??CG [2012]
+Cladophoro TGTCTTTTCTTTTT?AACA?GCTC?GCA???CCCTGGAATCAGATTATCT [2011]
+Blastophysa_rh TCTCTTTTCTTCTT?GA?GA?CCC?GAAG??CCCTGGAATCGGATCATCC [1999]
+Trentepohlia TATCTTTTCTACTT?AACGA?CCC?GAAG?GCCCT?GAATCGGATCATCC [2006]
+Cephaleuro_par T?TCTTTTCTGCTT?AACGAGCCC?GAAG?GC?CTGGAATCGGATCATCC [2020]
+Characium_vac ?????????????????????????????????????????????????? [1988]
+Dunaliella_par ?????????????????????????????????????????????????? [1987]
+Chlamyd_reinha ?????????????????????????????????????????????????? [1990]
+Volvox_carteri ?????????????????????????????????????????????????? [2032]
+Chlorococc_min ?????????????????????????????????????????????????? [1986]
+Draparn_plum ?????????????????????????????????????????????????? [2019]
+Uronema_belk TCTCTTTTCTTTTT?AAC?AGCT??GAAG?GCCCTGGAATCGAATCATTC [1971]
+Chlamydom_moew ????????????????CACCGCTC?GAAA?GCCCTGGAATCG?AT?ATTC [2032]
+Stephanos_pl TCTCTTTTCT?TTT?AAC?AGC?CGGAAG?GCCCTGGAATCGAATC?TTC [2032]
+Carteria_rad TCTCTTTTCTTTTTCAAC?A?C?C?GAAG?GCCCTGGAATCGAAT??TTC [2043]
+Gonium_pecto TCTCTTTTCT?TTT?AAC?A?CCC?GAAG?GC?CTGGAATCGAAT??TTC [2025]
+Chlorella_kess ?????????????????????????????????????????????????? [2020]
+Chlorella_vulg ?????????????????????????????????????????????????? [2023]
+Protothec_wic ?????????????????????????????????????????????????? [2018]
+Chlorella_prot ?????????????????????????????????????????????????? [2024]
+Chlorella_min ?????????????????????????????????????????????????? [2021]
+Neochloris_aqu ?????????????????????????????????????????????????? [2020]
+Neochloris_vig ?????????????????????????????????????????????????? [2011]
+Pediastrum_dup ?????????????????????????????????????????????????? [2022]
+Scenedesm_obl ?????????????????????????????????????????????????? [2018]
+Characium_hin ?????????????????????????????????????????????????? [2018]
+Chlorella_fus ?????????????????????????????????????????????????? [2019]
+Ankistrodesmus ?????????????????????????????????????????????????? [2016]
+Pseudotreb_gig TCTCTTTTCT?TTT??AC?AGCT??GAAG?GCCCTGGAATCGGCT?ATCC [2019]
+Pleurastr_terr TCTCTTTTCT?TTT??AC?AGC?C?GAAG?GCCCTGGAATCGAATC??TC [2028]
+Characium_per ?????????????????????????????????????????????????? [2021]
+Parietochl_pse ?????????????????????????????????????????????????? [2025]
+Friedmannia_is TCTCTTTTCTTCTT?AACAA?CCC?GAAG?G?CCTGGAATCGGCTCATCC [2024]
+
+[ 2110 2120 2130 2140 2150]
+[ . . . . .]
+
+Glycine_max GGAG??GTAGGGTCCAGCGGCTGGA?AGAGCACCGCACGTCGCGTGGTGT [2045]
+Oryza_sativa GGAG??GTAGGGTCCAGCGGC?GGAGAGA???GCACACGTCGCGCGGTGT [2105]
+Zamia_pumila ?????????????????????????????????????????????????? [2105]
+Psilotum_n ?????????????????????????????????????????????????? [2088]
+Equisetum_ar GGAG??ATAGGGTCCAGCGGTTGGT?AAAGCA?CGCAGGTC?TGCGGTGT [2094]
+Atrichum_angus GGAG??ATAGGGTCCAGCGGCTGGT?AAAGCACCGCAC?TCTTGCGG?GT [2066]
+Notothylas_bre GGAG??ATAGGGTCCAGCGGCTGGT?AAAGCACCACACG?CTTGCGGTGT [2061]
+Phaeoceros_lae GGA???ATAGGGTCCAGCGGCTGGT?AAAGCACCACACGTCTTGCGGTGT [2069]
+Porella_pi ?????????????????????????????????????????????????? [2089]
+Conocephal_con GGAG??ATAGGGCCCAGCGGTCGGT?AAAGCGTCGCAAGTCTTGCGG?GT [2046]
+Asterella_tene GGAG??ATAGGGCCCAGCGGTCGGC?AAAGCGTCGCA?GTCTTGCGG?GT [2081]
+Riccia ?GAG??ATAGGGCCCA?CGGTCGGC?AAAGCGTCGCA??TCT??CGGCGT [2069]
+Klebsormid_fla GGAG??ATAGGGTCCAGCGACTGGG?AAAGCATCGCACGTCTCGCGGTGT [2107]
+Coleochaet_nit GCG???GAGGGTGC?GAAAGCTGGC?AGAGCGCGCACTGGT???CGGTGT [2069]
+Fissidens_taxi GGAG??ATAGGGTCCAGCGGCCGGT?AAAG???CGCACGTCTTGCGG?GT [2069]
+Plagiomnium_cu GGAG??ATAGGGTCCAGCGGCCGGT?AAAGCACCGCACGTCTCGCGGTGT [2060]
+Micromonas_pus GGAG??ATA?GGCCCAACGGCTGGT?AAAGCACTGCACGT?TCGCAGTGT [2085]
+Mantoniel_squa GGAG??ATA?GGCCCAACGGCTGGT?AAAGCACTGCA?GT??CGCAGTGT [2060]
+Nephroselm_pyr GGAG??ATA?GGCCCAGCGGCTGGT?AAAG?C?CACT?CTTGCGG?GT?? [2079]
+Pedinomonas_mi GGA???ATAGGGTGATGTGGCTGGT?AAAGCACCTCACGTCTTGAGGTGT [2063]
+Tetraselm_cart GGAG??ATAGGGCTCAGAAGTCGGT?AAAGCACCGCACGTC?CGCGG?GT [2082]
+Enteromorpha GGAG??ATAGGGTTCAGTGCCTGGT?AAAGCACA??TC?T?T???GGTGT [2082]
+Ulva_fasci GGAG??ATAGGGTTC?GTGCCTGGT??AAGCACCACACGTCTCGTGGTGT [2067]
+Ulothrix_zo GGAG??ATAGGGTTCAGTGGCTGGT??AAGCATCGCACGTCT?GCGGT?T [2003]
+Cympolia_barba ?????????????????????????????????????????????????? [2082]
+Batophora_oers ?????????????????????????????????????????????????? [2029]
+Codium_decort GGA???ATAGGGTTTGACGGCAGGT??T?GCGCCGCCCC??G?TGCGC?G [2062]
+Cladophoro G?AG??AT?AGGGCTCAGAGCTGGT?AAAGCGTTGCAA??CTCGCAACGT [2061]
+Blastophysa_rh GGAG??ATAGGCCCAT?TGGTCGGT?AAAGCACCGCACGT?T?GCGGTGT [2049]
+Trentepohlia GGAG??ATAGGGCTCAGAGGTCGGT?ACAAGCGCCGCACATCACGTGCGT [2056]
+Cephaleuro_par GGAG??ATAGGGCTCAGAGGTGGGT??AGAGCGCCGCACATCACGTGC?T [2070]
+Characium_vac ?????????????????????????????????????????????????? [2038]
+Dunaliella_par ?????????????????????????????????????????????????? [2037]
+Chlamyd_reinha ?????????????????????????????????????????????????? [2040]
+Volvox_carteri ?????????????????????????????????????????????????? [2082]
+Chlorococc_min ?????????????????????????????????????????????????? [2036]
+Draparn_plum ?????????????????????????????????????????????????? [2069]
+Uronema_belk GGA???ATAGGGCTCAGCA?CTGGT?AAAGCACCGCACGTCTCGCGGTGT [2021]
+Chlamydom_moew GGAG??ATCGGGCTT?GCCGCTGGG?AAAGCCTCT?AGTTTTGA?GGTGT [2082]
+Stephanos_pl GGAG?AGTAGGGCCCAGCAGCTGGT?AAAGCACCGCACTTCTCGTGGTGT [2082]
+Carteria_rad GGAG??ATAGGGCTCAGAGGCTGGT??AAGCACCGCACTT?TCGCGGTGT [2093]
+Gonium_pecto GGAG??ATAGGGCTCAGAGGTTGGT?AAAGCACCGCAGTTCTCGCGGTGT [2075]
+Chlorella_kess ?????????????????????????????????????????????????? [2070]
+Chlorella_vulg ?????????????????????????????????????????????????? [2073]
+Protothec_wic ?????????????????????????????????????????????????? [2068]
+Chlorella_prot ?????????????????????????????????????????????????? [2074]
+Chlorella_min ?????????????????????????????????????????????????? [2071]
+Neochloris_aqu ?????????????????????????????????????????????????? [2070]
+Neochloris_vig ?????????????????????????????????????????????????? [2061]
+Pediastrum_dup ?????????????????????????????????????????????????? [2072]
+Scenedesm_obl ?????????????????????????????????????????????????? [2068]
+Characium_hin ?????????????????????????????????????????????????? [2068]
+Chlorella_fus ?????????????????????????????????????????????????? [2069]
+Ankistrodesmus ?????????????????????????????????????????????????? [2066]
+Pseudotreb_gig GGAG??A?AGGGCCCA?AAGCTGGT??AAGCACTGCACTTCTCGGCAGTG [2069]
+Pleurastr_terr GGAG??A?AGGGCTCAGAAGCTGGT?AAAG??C?GCA?GTCT?GCGGT?G [2078]
+Characium_per ?????????????????????????????????????????????????? [2071]
+Parietochl_pse ?????????????????????????????????????????????????? [2075]
+Friedmannia_is GGAG??ATAGGGCTC?GAGGTT?GT?AAAGCACTGCACT????GCAGT?T [2074]
+
+[ 2160 2170 2180 2190 2200]
+[ . . . . .]
+
+Glycine_max CCGGTGCCCC?C???GGC??GGCCCTTGA231011000110000001027
+Oryza_sativa CCGGTGCCCC?C???GGC??GGCCCTTGA231011000110000001027
+Zamia_pumila ?????????????????????????????231011000110000001027
+Psilotum_n ?????????????????????????????231011000110000001027
+Equisetum_ar CCGGTGCCCC?C???GGC??GGCCCTTGA231011000110000001027
+Atrichum_angus CCGGGGCCC??C???GGC??GGCCCGTGA231011000110000001027
+Notothylas_bre CCGGTG?CCC?????GGC??GGCCCGTG?231011000110000001027
+Phaeoceros_lae CCGGTGGCCC?CT??GGC??GGCCCGTGA231011000110000001027
+Porella_pi ?????????????????????????????231011000110000001027
+Conocephal_con CCGGTGCGCC?CCC?GAC??GGTCC??GA231011000110000001027
+Asterella_tene CCGGTG?GCC?CCC?GAC??GGCCCC?GA231011000110000001027
+Riccia CCGGTGCTCATCCCCTAAAA?CCAG?AGA231011000110000001027
+Klebsormid_fla CTGGTGCGCC?CT??GAC??GGCCCTTGA00001?000101001000001
+Coleochaet_nit C?GGTG?AC??CCG???T??T?CCCTAGA001011000111001001021
+Fissidens_taxi CAGGTGCCCT?C???GGC??GGCCCT?GA231011000110000001027
+Plagiomnium_cu CAGGTGGCCC?TC??GGC??GGCCCGTGA231011000110000001027
+Micromonas_pus CCGGTGC?CT?CC??GG???GGCCC?TGA1?000000000000101?0?0
+Mantoniel_squa CCGGTGCACT?CCC?GAC??GGCCC???A1?000000000000101?0?0
+Nephroselm_pyr CTGGTGCGCC?CTC?GAC??GGCCC??G?1?000000000000101?0?0
+Pedinomonas_mi ?C?GTGC?TC?TC???AC???C??CTTGA1?000000000000101?0?0
+Tetraselm_cart CCGGAGCGCC?ATT?GAC??GATCCTTGA1?000000000000101?0?0
+Enteromorpha CCGGCGCGCA?GTC?GAGTCGGTCCGTGA121011001000001000116
+Ulva_fasci CCGGCGCGCC?A?C?GA???GGTCCGTGA121011001000001000116
+Ulothrix_zo CTGGAGCGCT?ACC?A?C???GTCCTTGA031011000001001000106
+Cympolia_barba ?????????????????????????????111111110003000001117
+Batophora_oers ?????????????????????????????111111000?02001001107
+Codium_decort TCTGGCCC?C???C??????GGCGGTCC?111011110003000001117
+Cladophoro CCCGAGCGCC?TC??CAC??GGCCCTTAA12101110000200100110?
+Blastophysa_rh ???ACGTTGC??????A????CCCCTTAA12101110010200100110?
+Trentepohlia CCGGTGCGCC?ATC?GAC??GGTCCT???221011000102001001101
+Cephaleuro_par CGG?TGCGCC?ATC??AC????TCC???A221011000102001001101
+Characium_vac ?????????????????????????????00100000000001100010?
+Dunaliella_par ?????????????????????????????100000000000001010000
+Chlamyd_reinha ?????????????????????????????000000000000001010100
+Volvox_carteri ?????????????????????????????00002000000000011112?
+Chlorococc_min ?????????????????????????????00000000000000100010?
+Draparn_plum ?????????????????????????????001011000102101000106
+Uronema_belk ?C?GCGCGC??GAT?GA???GGTCC?TGA001011000101101000106
+Chlamydom_moew CCCGTGCGCC?GAT??AC??GATCCTT?A000000000000001010100
+Stephanos_pl CCGGCGCGCT?AGT?CAC??GGTCCGTGA000020000000000110102
+Carteria_rad CTGGCGCGTC?GAC?GAC??GGTCCTT?A000000000000001010100
+Gonium_pecto CCGGCGCGC??GTT?GA????GTCC??GA000020000000000110100
+Chlorella_kess ?????????????????????????????00000000000000010?1??
+Chlorella_vulg ?????????????????????????????00000000000000010?1?0
+Protothec_wic ?????????????????????????????00000000000000010?1??
+Chlorella_prot ?????????????????????????????00000000000000010?1??
+Chlorella_min ?????????????????????????????00000000000000010?1??
+Neochloris_aqu ?????????????????????????????00000010000000100010?
+Neochloris_vig ?????????????????????????????00000010000000100010?
+Pediastrum_dup ?????????????????????????????00002100000000100010?
+Scenedesm_obl ?????????????????????????????00002100000000010010?
+Characium_hin ?????????????????????????????00100010000001100010?
+Chlorella_fus ?????????????????????????????00000000000000010?1?0
+Ankistrodesmus ?????????????????????????????00000000000001010?1??
+Pseudotreb_gig TCCGGAGCCC?ACC?GAC??GGCCC?TGA00000000000000200?0??
+Pleurastr_terr TC?GCGCGC??GAT??AC??GGTCC?TGA00001100000100200?0??
+Characium_per ?????????????????????????????00100000000001100010?
+Parietochl_pse ?????????????????????????????00000000000000100010?
+Friedmannia_is CCGGAGCGCC?ATT?GAG?CGGCCCTTGA{02}000000000000020000??
+
+[ 2210 2220 2230 2240 2250]
+[ . . . . .]
+
+Glycine_max 0??0????0??010000110????0??10100??300000?000??0000
+Oryza_sativa 0??0????0??010000110????0??10100??300000?000??0000
+Zamia_pumila 0??0????0??010000110????0??10100?0300000?000000000
+Psilotum_n 0??0????0??010000110????0??10100??300000?000??0000
+Equisetum_ar 0??0????0??010000110????0??10100?0300000?000000000
+Atrichum_angus 0??0?0?10??010000110????0??101000?300000?000000000
+Notothylas_bre 1??000?10?1010000110????0??1010000300000?000000000
+Phaeoceros_lae 1??000?10?1010000110????0??1010000300000?000000000
+Porella_pi 0??000?10?1010000110????0??1010000300000?000000000
+Conocephal_con 0??000?10?1010000110????0??1010000300000?000000000
+Asterella_tene 0??000?10?1010000110????0??1010000300000?000000000
+Riccia 0??00??10?1010000110????0??1010000300000?000000000
+Klebsormid_fla 10000001001010000010????0??1110000?00?000000000000
+Coleochaet_nit 10000001001010000110????0??1110000?00000?001000000
+Fissidens_taxi 0??000?10?1010000110????0??1010000300000?000000000
+Plagiomnium_cu 0??000?10?1010000110????0??1010000300000?000000000
+Micromonas_pus 1021?000???01100000?????0???100000300000?000110000
+Mantoniel_squa 1021000000101100000?????0?1?100001300000?001110000
+Nephroselm_pyr 100101001?101100000?????0???100000210000?001101000
+Pedinomonas_mi 1021?0?01??01100000?????0???100001200000?000001000
+Tetraselm_cart 10112110100001111000????0???1000010100000000100000
+Enteromorpha 10101100101011000000????0?0011010??100000110101010
+Ulva_fasci 10101100101011000000??1?0?0011010??100000110101010
+Ulothrix_zo 10101100101011000000?0??0?00110101010000?011101010
+Cympolia_barba 10?0?10?1??011000000???????010000?310100?000???1?0
+Batophora_oers 1??0110?101011000000???????0100001310100?0?0001110
+Codium_decort 10401100101011000000????1?1010000?310000?000???0?0
+Cladophoro 101011001??011000000????0?0011000??10010?0?0???0?0
+Blastophysa_rh 10101100101011000000????1?1011000?310?10?00000?01?
+Trentepohlia 0?101100101011000?0?????0??0110000?11001?0???000?1
+Cephaleuro_par 0?101100101011000?0?????0??0110000?11001?0??0000?1
+Characium_vac 1100?10011001110100?????0??010001??10000?00010?010
+Dunaliella_par 1101?1?01100?????00?????0???10000?310000?000???010
+Chlamyd_reinha 11000100110011101001??1?0?011000110100001000101010
+Volvox_carteri 1?0???1011001110?00?????0???10101??10000?000???010
+Chlorococc_min 1100?10011001110100?????0??010001??10000?000100010
+Draparn_plum 10101100110011101010?1??0??11101010100001000101010
+Uronema_belk 10101100110011101010?1??0??1110101010000?000101010
+Chlamydom_moew 1?0001?01100?????00?????0??1100111010000?000???010
+Stephanos_pl 1101011011001110100?????0??1101111110000?000??1010
+Carteria_rad 111001001100?????00?????0??1100111010000?00010?010
+Gonium_pecto 110?211011001110100?????0??1101011010000?000101010
+Chlorella_kess 1??0???????????0100?0?1000??1000??3?000????0???0?0
+Chlorella_vulg 1??0???????????0100?1?0000??1000??3?000?1??0???0?0
+Protothec_wic 1??0???????????0100?????0???1000??3?000????0???0?0
+Chlorella_prot 1??0???????????0100?1?0000??1000??3?000????0???0?0
+Chlorella_min 1??0???????????0100?0?0000??1000??3?000????0???0?0
+Neochloris_aqu 1000?10012011110100?????0??010000??10000?000101010
+Neochloris_vig 1000??0012011110100?????0??010000??10000?00010?010
+Pediastrum_dup 1?001100120111101001????0??1100001?10000?010101010
+Scenedesm_obl 1?40???0????1110100???1101??10000???00001000???0?0
+Characium_hin 1000?100120?1110100?????0??010000??10000?00010?010
+Chlorella_fus 1??0???????????0100?1?1101??1000??3?000????0???0?0
+Ankistrodesmus 1??0???????????0100?????0???1000??3?000????0???0?0
+Pseudotreb_gig 1000?10010?001111000????0???10000?310000?000100010
+Pleurastr_terr 1000?10010?001111000????0???10000?310000?000100010
+Characium_per 1100?1001010?11?000?????0??010000??10000?00010?010
+Parietochl_pse 1100?1001010?11?000?????0??010000??10000?200100010
+Friedmannia_is 10001100101001111000????0???10000?310000?000100010
+
+[ 2260 2270 2280 ]
+[ . . . ]
+
+Glycine_max ?1111111??11?00011001111000011111111111
+Oryza_sativa ?1111111??11?00011001111000011111111111
+Zamia_pumila 111111111111?00011001111000011111111100
+Psilotum_n 111111111111?00011001111000011111000000
+Equisetum_ar 111111111111?00011001111000011110000000
+Atrichum_angus 111110111111?00011001111111000000000000
+Notothylas_bre 111110111111000011110000100000000000000
+Phaeoceros_lae 111110111111000011110000100000000000000
+Porella_pi 111111111111111100000000000000000000000
+Conocephal_con 111111111111111100000000000000000000000
+Asterella_tene 111111111111111100000000000000000000000
+Riccia 111111111111111100000000000000000000000
+Klebsormid_fla ?100000000000000?0000000000000000000000
+Coleochaet_nit 1111001100000000?0000000000000000000000
+Fissidens_taxi 111111111111000011001111111100000000000
+Plagiomnium_cu 111111111111000011001111111100000000000
+Micromonas_pus ?00000000000000000000000000000000000000
+Mantoniel_squa 000000000000000000000000000000000000000
+Nephroselm_pyr 000000000000000000000000000000000000000
+Pedinomonas_mi 000000000000000000000000000000000000000
+Tetraselm_cart 000000000000000000000000000000000000000
+Enteromorpha 0?0000000000000000000000000000000000000
+Ulva_fasci 0?0000000000000000000000000000000000000
+Ulothrix_zo 000000000000000000000000000000000000000
+Cympolia_barba 000000000000000000000000000000000000000
+Batophora_oers 000000000000000000000000000000000000000
+Codium_decort 000000000000000000000000000000000000000
+Cladophoro 000000000000000000000000000000000000000
+Blastophysa_rh 000000000000000000000000000000000000000
+Trentepohlia 1?0010000000000000000000000000000000000
+Cephaleuro_par 1?0010000000000000000000000000000000000
+Characium_vac 0?0000000000000000000000000000000000000
+Dunaliella_par 000000000000000000000000000000000000000
+Chlamyd_reinha 000000000000000000000000000000000000000
+Volvox_carteri 0?0000000000000000000000000000000000000
+Chlorococc_min 0?0000000000000000000000000000000000000
+Draparn_plum 0?0000000000000000000000000000000000000
+Uronema_belk 0?0000000000000000000000000000000000000
+Chlamydom_moew 0?0000000000000000000000000000000000000
+Stephanos_pl 0?0000000000000000000000000000000000000
+Carteria_rad 0?0000000000000000000000000000000000000
+Gonium_pecto 0?0000000000000000000000000000000000000
+Chlorella_kess ??0000000000000000000000000000000000000
+Chlorella_vulg ?00000000000000000000000000000000000000
+Protothec_wic ??0000000000000000000000000000000000000
+Chlorella_prot ??0000000000000000000000000000000000000
+Chlorella_min ??0000000000000000000000000000000000000
+Neochloris_aqu 0?0000000000000000000000000000000000000
+Neochloris_vig 0?0000000000000000000000000000000000000
+Pediastrum_dup 0?0000000000000000000000000000000000000
+Scenedesm_obl 000000000000000000000000000000000000000
+Characium_hin 0?0000000000000000000000000000000000000
+Chlorella_fus ??0000000000000000000000000000000000000
+Ankistrodesmus ??0000000000000000000000000000000000000
+Pseudotreb_gig 0?0000000000000000000000000000000000000
+Pleurastr_terr 0?0000000000000000000000000000000000000
+Characium_per 0?0000000000000000000000000000000000000
+Parietochl_pse 0?0000000000000000000000000000000000000
+Friedmannia_is 000000000000000000000000000000000000000
+;
+END;
+
+
+BEGIN CODONS;
+GENCODE UNIVNUC
+;
+END;
+
+BEGIN ASSUMPTIONS;
+ OPTIONS DEFTYPE=unord PolyTcount=MINSTEPS ;
+
+ EXSET gaps+unalignsites = 50-55 110-122 171-176 214-220 228-232 267-280 482-489 657-663 676-690 699-713 729-731 737-743 782-785 1362-1391 1416-1429 1691-1695 1709-1755;
+ EXSET LSU = 50-55 110-122 171-176 214-220 228-232 267-280 482-489 657-663 676-690 699-713 729-731 737-743 782-785 1362-1391 1416-1429 1691-1695 1709-1755 1834-2179;
+ EXSET SSU = 1-1833;
+EXSET MOLECULES = 1-2179;
+EXSET MORPHOLOGY = 2180-2289;
+
+
+END;
+
+
+
+BEGIN MACCLADE;
+v 3.0
+-1471374107
+1000&/0
+0
+0
+END;
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/GPCombined.nex
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/GPMolecular.nex
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/GPMolecular.nex 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/GPMolecular.nex 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,104 @@
+#NEXUS
+[MacClade 3.01 registered to Equator, UCMP]
+
+BEGIN DATA;
+DIMENSIONS NTAX=61 NCHAR=2179;
+FORMAT DATATYPE=DNA MISSING=? GAP=- ;
+OPTIONS MSTAXA=UNCERTAIN ;
+
+MATRIX
+[ 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250 260 270 280 290 300 310 320 330 340 350 360 370 380 390 400 410 420 430 440 450 460 470 480 490 500 510 520 530 540 550 560 570 580 590 600 610 620 630 640 650 660 670 680 690 700 710 720 730 740 750 760 770 780 790 800 810 820 830 840 850 860 870 880 890 900 910 920 930 940 950 960 970 980 990 1000 1010 1020 1030 1040 1050 1060 1070 1080 1090 1100 1110 1120 1130 1140 1150 1160 1170 1180 1190 1200 1210 1220 1230 1240 1250 1260 1270 1280 1290 1300 1310 1320 1330 1340 1350 1360 1370 1380 1390 1400 1410 1420 1430 1440 1450 1460 1470 1480 1490 1500 1510 1520 1530 1540 1550 1560 1570 1580 1590 1600 1610 1620 1630 1640 1650 1660 1670 1680 1690 1700 1710 1720 1730 1740 1750 1760 1770 1780 1790 1800 1810 1820 1830 1840 1850 1860 1870 1880 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980 1990 2000 2010 2020 2030 2040 2050 2060 2070 2080 2090 2100 2110 2120 2130 2140 2150 2160 2170 ]
+[ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ]
+
+Emilian_huxleyi TCATATGCT-GTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAGCGACT--A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATGGTTTATTTGATGGTACCTTGCTACTT---GGATAACCGTAGTAA-TTCTAGAGCTAATACATGCAGGAGTTCCCGACTCAC--GG-AGGGATGTATTTATTAGATAAGAAACCAAACCGG---TCT-CCGGTTGC-GTGCTGAGTCATAATAACTGCTCGAATCGCACGGCTC-TACGCCGGCGATGGTTCATTCAAATTTCTGCCCTATCAGCTTTCGATGGTAGGATAGAGGCCTACCATGGCGTTAACGGGTAACGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAATGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGTAAATTGCCCGAATCCTGACACAGGGAGGTAGTGACAAGAAATAACAATACAGGGCTATTT-TAGTCTTGTAATTGGAATGAGTACAATTTACATCTCTTCACGA-GGATCAATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTAAAGTTGTTGCAGTTAAAACGCTCGTAGTCGGATTTCGGGGCGGGCCGACC-GGTCTGCCGAT-GGGTATGCACTGGCCGGCGCGTCCTTCCACCCGGAGACCGCG------CCTACTCTTAACTGAGCGGGCGCGGGAGAC---GGGTCTTTTACTTTGAAAAAATCAGAGTGTTTCAAGCAGGCAGTCGCTCTTGCATGGATTAGCATGGGATAATGAAATAGGACTCTGGTGCTATTTTGTTGGTTTCGAACACCGGA-GTAATGATTAACAGGGACAGTCAGGGGCACTCGTATTCCGCCGAGAGAGGTGAAATTCTCAGACCAGCGGAAGACGAACCACTGCGAAAGCATTTGCCAGGGATGTTTTCACTGATCAAGAACGAAAGTTAGGGGATCGAAGACGATCAGATACCG-TCGTAGTCTTAACCATAAACCATGCCGA-CTAGGGATTGGAGGATGTTCCATTTGTGACTCCTTCAGCACCTTTC-GGGAAACTAAAGTCTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGAGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGGAAACTTACCAGGTCCAGACATTGTGAGGATTGACAGATTGAGAGCTCTTTCTTGATTCGATGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCGCAGCCTGCTAAATAGCGACGCGAACCCTCCGTTCGCTGG------AGCTTCTTAGAGGGACAACTTGTCTTCAACAAGT----GGAAGTTCGCGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATGCACTCAACGAGTCTATCACCTTGACCGAGAGGTCCGGGTAATCTTTTGAAATTGCATCGTGATGGGGATAGATTATTGCAACTATTAATCTTCAACGAGGAATTCCTAGTAAGCGTGTGTCATCAGCGCACGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGAATGATCCGGTGAGGCCCCCGGACTCGGGCGCCGCAGCTGGTTCTCCAGCCGCGACGCCGGGAAGCTGTCC-------GAACCTTATCATTTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCGTAGGTGAACCTGCAGAAGGATCAAGC?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? [2122]
+Anemonia_sulca TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAGC-ACTT--GTACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATCGTTTATTTGATTGTAC--GTTTACTACTTGGATAACCGTGGTAA-TTCTAGAGCTAATACATGCGAAGAGTCCCGACTTC--TGGAAGGGATGTATTTATTAGATTCAAAACCAATGCGGG-TTCTGCCCGGTGCTTTGGTGATTCATAGTAACTGATCGAATCGCATGGCCT-TGCGCTGGCGATGTTTCATTCAAATTTCTGCCCTATCAACTGTCGATGGTAAGGTGTTGGCTTACCATGGTTACAACGGGTGACGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACTCAGGGAGGTAGTGACAAGAACTAACAATACAGGGCTTTTGTAAGTCTTGTAATTGGAATGAGTACAACTTAAATCCTTTAACGA-GGATCCATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTAAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGACTTCGGGGTGGCACGGCC-GGTCCGCCGCA-AGTGTGTCACTGGCCGGGCCGCTCTTCTTCGCAAAGACCGCGTGT------GCTCTTGACTGAGTGTGCGCGGGAGTT---GCGACGTTTACTTTGAAAAAATTAGAGTGTTCAAAGCAGGC--CAGCGCTTGAATACATAAGCATGGAATAATGGAATAGGACTTGGGTTCTATTTTGTTGGTTTCTGGAACCTGAAGTAATGATTAAGAGGGACAGTTGGGGGCATTCGTATTC-GTTGTCAGAGGTGAAATTCTTGGATTTACGAAAGACGAACTACTGCGAAAGCATTTGCCAAGAATGTTTTCATTAATCAAGAACGAAAGTTAGAGGCTCGAAGACGATCAGATACCG-TCCTAGTTATAACCATAAACGATGCCGA-CTAGGGATCAGAGAGTGTT-ATTGGATGACCTCTTTGGCACCTTAG-GGGAAACCAAAGTTTTTGGGTTTCGGGGGGAGTATGGTTGCAAAGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGAGTGGAGCCTGCG-CTTAATTTGACTCAACACGGGGAAACTCACCAGGTCCAGACATAGGAAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTTAACCTGCTAAATAGTTACGCCCATCGCGATGGGCAACT------AACTTCTTAGAGGGACTGTTGGTGTTTAACCAAAGTCAGGAA------GGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGACGATGTCAACGAGTCTCT--CCTTGGCCGAAAGGTCTGGGTAATCTTCTCAAACATCGTCGTGCTGGGGATAGATCATTGCAATTTTTGATCTTGAACGAGGAATTCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTACTACCGATTGAATGGTTTAGTGAGGACTCCTGATTGGCGCCGCGCCCCGGCCACGGAGCAGCGGACTGCC------GAGAAGTTGTTCAAACTTGATCATTTAGAGGAAGTAAAAGTCGTAACAAGGTTTCCGTAGGTGAACCTGCGGAAGGATCATTA?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? [2122]
+Glycine_max TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTGTAAGTATGAACTAATTCA-GACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTGTTTGATGGTATC-TACTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGCAACAAACCCCGACTTC--TGGAAGGGATGCATTTATTAGATAAAAGGTCAACACAGGC-TCTGCCTGTGCT-TTGATGATTCATGATAACTCGTCGGATCGCACGGCCTTTGTGCCGGCGACGCATCATTCAAATTTCTGCCCTATCAACTTTCGATGGTAGGATAGTGGCCTACCATGGTGGTGACGGGTGACGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACGGGGAGGTAGTGACAATAAATAACAATACCGGGCTC-ATTGAGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAACGATGGATCCATTGAAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGACCTTGGGTTGGGTCGATC-GGTCCGCC-TCC--GTGTGCACCGGTC-GGCT--GTCCCTTCTGCCGGCGATGCG---CTCCTGTCCTTAACTGGCCGGG-TCGTGCC-TCC-GGTGCTGTTACTTTGAAGAAATTAGAGTGCTCAAAGCAAGC-CTACGCTCTGTATACATTAGCATGGGATAACACCACAGGATTCTGATCCTATTGTGTTGGCCTTCGGGATCGGA-GTAATGATTAACAGGGACAGTCGGGGGCATTCGTATTTCATAGTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACAACTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CCAGGGATCAGCGGATGTTGCTTTTAGGACTCCGCTGGCACCTTAT-GAGAAATCGAAGTCTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGAGTGGAGCCTGCGGCT-AATTTGACTCAACACGGGGAAACTTACCAGGTCCAGACATAGTAAGG-TTGACAGACTGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCCTTCTTAGTTGGTGGAGCGATTTGTCTGGTT-AATTCCGTTAACCAACGAGACCTCAGCCTGCTAAATAGCTAT--------------------------AGCTTCTTAGAGGGACTATGGCCGCTTAGGCCAC----GGAAGTTTGAGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATGTATTCAACGAGTCTATAGCCTTGGCCGACAGGTCCGGGTAATCTTTG-AAATTTCATCGTGATGGGGATAGATCATTGCAATTGTTGGTCTTCAACGAGGAATTCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGACTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGAATGGTCC---GGTGAAGTGTTCGG--ATTGCGGT-------------------------------GAGAAGTCCACTGAACCTTATCATTTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCGTAG???????????????????????????????????GACCCTGAT?CTTCT?TGAAGGGTTC?GAGTGAGAGCA?TACCTGTCGGGACCCGAAAGATGGTGAACT?TGCCTGAGCGGGG?CGAAGCCAGAGGAAACTCTGGTGGAGGCCC?GCAGCGATACTGACGTGCAAATCG?TTCGTCTGACTTGGGTATAGGGGCGAAAGACTAATCGAACCGTGCG?GG?GGCCCCGGAAAGAGTTATCTTTTCTGTTT?AACA?GCCT?GCCC?ACCCTGGAAA?GCCTCAGCCGGAG??GTAGGGTCCAGCGGCTGGA?AGAGCACCGCACGTCGCGTGGTGTCCGGTGCCCC?C???GGC??GGCCCTTGA [2074]
+Oryza_sativa TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTGCAAGTATGAACTAATTC-GAACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTGTTTGATGGTACG-TGCTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGCAACAAACCCCGACTTCC-GGG-AGGGGCGCATTTATTAGATAAAAGGCTGACGCGGGC-TCCGCCCGCGAT-CCGATGATTCATGATAACTCGACGGATCGCACGGCCCTCGTGCCGGCGACGCATCATTCAAATTTCTGCCCTATCAACTTTCGATGGTAGGATAGGGGCCTACCATGGTGGTGACGGGTGACGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACGGGGAGGTAGTGACAATAAATAACAATACCGGGCGCTTTAGTGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAACGA-GGATCCATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGACCTTGGGCGCGGCCGGGCCGGTCCGCC-TCACGGCAGGCACCGACCTGCT--CGACCCTTCTGCCGGCGATGCG---CTCCTGGCCTTAACTGGCCGGGTTCGTGCC-TCC-GGCGCCGTTACTTTGAAGAAATTAGAGTGCTCAAAGCAAGC-CATCGCTCTGGATACATTAGCATGGGATAACATCATAGGATTCCGGTCCTATTGTGTTGGCCTTCGGGATCGGA-GTAATGATTAATAGGGACAGTCGGGGGCATTCGTATTTCATAGTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACAACTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CCAGGGATCGGCGGATGTTGCTTATAGGACTCCGCCGGCACCTTAT-GAGAAATCAAAGTCTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGCGTGGGGCCTGCGGCTTAATTTGACTCAACACGGGGAAACTTACCAGGTCCAGACATAGCAAGGATTGACAGACTGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGAGCGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTAGCTATGCGGAGCCATCCCTCCGCAGCT----AGCTTCTTAGAGGGACTATGGCCGTTTAGGCCAC----GGAAGTTTGAGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG--CGCACGCGCGCTACACTGATGTATCCAACGAGTATATAGCCTGGTCCGACAGGCCCGGGTAATCTTGGGAAATTTCATCGTGATGGGGATAGATCATTGCAATTGTTGGTCTTCAACGAGGAATGCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGACTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGAATGGTCC---GGTGAAGTGTTCGG--ATCGCGGCGACGGGGGCGGTTCGCCGCCCCCGACGTCGCGAGAAGTCCATTGAACCTTATCATTTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCGTAG???????????????????????GCACCGCTGGCCGACCCTGAT?CTTCTGTGAAGGGTTC?GAGTTGGAGCA?CGCCTGTCGGGACCCGAAAGATGGTGAACTATGCCTGAGCGGGG?CGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GAAGCGATACTGACGTGCAAATCG?TTCGTCTGACTTGGGTATAGGGGCGAAAGACTAATCGAACCATGCG?GG?GGCCTCGGG?AGAGTT?TCTTTTCTGCTT?AAC?GGCCC?GCCA?AC?CTGGAAACGGTTCAGCCGGAG??GTAGGGTCCAGCGGC?GGAGAGA???GCACACGTCGCGCGGTGTCCGGTGCCCC?C???GGC??GGCCCTTGA [2134]
+Zamia_pumila TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTGTCAGTATGAACTATTTT-GGACGGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTCTTTGATGGTACTCTGCTACAC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGCACCAAATCCCGACTTTT-TG-AAGGGACGCATCTATTAGATAAAAGGCCGATGCGGGC-TTTGCCCGGCGT-TTGGTGAATCATGATACCTTGATGGATTGCATGGCCCTCGAGCCGGCGACGCTTCATTCAAATTTCTGCCCTATCAACTTTCGATGGCAGGATAGAGGCCTACCATGGTGGTGACGGGTGACGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCCGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACGGGGAGGTAGTGACAATAAATAACAATACTGGGCTCATC-GAGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAACGA-GGATCCATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGATCTTGGGACGGCCCGGCC-GGTCCGCT-TTTTTGGGTGTGCACCGGCCGTTTCGTCCCTTTTGTTGGCGGCGCG---CACCTGGCCTTAACTGTCTGGG-TCGCGGT-TCC--ACGCTGTTACTTTGAAAAAATTAGAGTGCTCAAAGCAAGC-TTATGCTCTGAATACATTAGCATGGAATAACGGTATAGGATTCTGGTCCTATTGCGTTGGCCTTCGGGACCGGA-GTAATGATTAACAGGGACGGTCGGGGGCATTCGTATTTCATTGTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACCACTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CCAGGGATCGGCGGATGTTGCTCTAAGGACTCCGCCGGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGAGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGGAAACTTACCAGGTCCAGACATAGCAAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGAGCGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCGGCCTGCTAACTAGCTACGCGGAGGGTTTCTTTCGTGGCC----AGCTTCTTAGAGGGACTATGGCCGTTTAGGCCAT----GGAAGTTTGAGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATGTATTCAACGAGTCTATAACCTGGGCCGGGAGGTCCGGGAAATCTGGCGAAATTTCATCGTGATGGGGATAGATCATTGCAATTATTGATCTTCAACGAGGAATTCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGACTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGAATGATCC---GGTGAAGTGTTCGG--ATCGTGCCGACGACGGCGGTTCGCTGGGCGCGACGTCGCGAGAAGTTCATTGAACCTTATCATTTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCGTAG????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? [2134]
+Psilotum_n ???????????????????????????????????????????????????????????????????GCGAATGGCTCATTAAATCAGTTATAGTTTCTTTGATGGTACCTTGCTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGCACCAACTCCCGACTTC--CGG-AGGGACGCATTTATTAGATAAAAGGCCGATGCGGGC-TT-GCCCGGTTATGC-GT-ATTCATGATAACTCTGCGAATCGCACGGCC????????????????????????????????????????????????????????????????????????TGGTGACGGGTGACGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCC-GAC-CGGGGAGGTAGTGACAATAAATAA-AATACTGGGCTTTTCAAAGTCTGGTAATTGGAATGAGTACAATCTAAACCC?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AAGAACGAAAGTTGGG--CTCGAAGACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGG--TC-GCGGATGTTACCTTGATGACTCCGCCGGCACCTTAT--AGAAATC-AAGTCTTTGGGTTCCGGGGGGA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GGATTGACAGATTGAGAGCTCTTTCTTGGTTCTATGGGTGGT---G-ATGGCCGTT---AGTTGGTGGAG-G-TTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTAGTTACGCGAAGGATCCTCTTCGTGGCC----AACTT-TTAGAGGGACTATGGCCGCCTAGGCCAT----GGA???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GTCTTCAAC-A-GAATTCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGACTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGAATGGTCC---GGTGAAGTTTTCGG--ATTGCGGCGAGCGGTCCGCCGGCACGTTGT---------GAGAAGTTCATTAAACCTTATCATTTAGAGGAA???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? [2117]
+Equisetum_ar ???????????????????????????????????????????????????????????????????GCGAATGGCTGATTAAATCAGTTATAGTTTCTTTGATGGTACCTTGCTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGCACCAACTCCCGACTTC--TGG--GGGA-GCATTTATTAGATAAAAGGCCGATGCGGGC-TGTGCCCGGTAA----CGGATTC--GATAACTTCCCGGATCGCACGGCCT????ACGGGTGA????????????????????????????????????????????????????????????????????????CGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCGGGCGCGCAAATTACCC-AATCC-GACACGGGGAGGTAGTGACAATAAATAACAATACTGGGCTTTTACAAGTCTGGTAATTGGAATGAGTACAATCTAAATCC?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AAGAACGAAAGTTGG---CTCGAAGAC-ATCA?ATACCG-TCCTAGTCTCAACCATAAACGA-GC?GA-CTAGGGATT--CGGATGTTACTTCAATGACTCTGCCGGCACCTTAT-GAGAAATCAAAGTCTTTGGGTTCC----GGA-T??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TGACAGATTGAGAGCTCTTTCTTGATTCTATGGGTGGTAGTGCATGGCCGTTCTTAGTTGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTAGTTACGCGAAGACTTGTCTTCGTGGCC----AACTTCTTAGAGGGACTATGGCCGTCTAGGCCAT----GGA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TCTTCAACTAGGAATTCCTAGTAAGC-CGAGTCATCAGCTCGCGTTGACTA--GTCCCTGCCCTTTGTACACACTGCCCGTCGCTCCTACCGATTGAATGGTCC---GGTGAAGTTTTCGG--ATT-CGGCGACGCTGGCGGT-CGCCGGCGACGTTGT---GAGAAGTTCATTGAACCTTACCATTTAGAG?????????????????????????????????????????????????????GCACCATCGACCGACCGTGAT?CTTCTGTGAAAGGTTT?GAGTGAGAGCA?TACCTGCTGGGACCC?AAAGATGGTGAACTATGCCTGAGCAGGG?CGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGCGATACTGACGTGCAAATCG?TTCGTCAGACTTGGGTATAGGGGCGAAAGACTAATCGAACCATGCG?GG?GGCCCTGGGAAGAGTTCTCTTTTCTTTTT?AACA?ACTT?GCCC?ACCCTGAAATCGGATCAACCGGAG??ATAGGGTCCAGCGGTTGGT?AAAGCA?CGCAGGTC?TGCGGTGTCCGGTGCCCC?C???GGC??GGCCCTTGA [2123]
+Atrichum_angus ??????????????????????????????????????????????????????????????????????????????ATTAAATCAGTTATAGTTTCTTT-ATGGTACCTTGCTACTC---GGATAACCGTAGTA--TTCTA-AGCTAATACGTGCACAAACTCCCGACCTC--TGGAAGGG-CG-TTTTATTAGATAAAAGGCCGATGC-GGC-TT-GCCCGGTAT-TCGGTGACTCA-GATAACTCGTCGAATCGCACGGCCTTA?????????????????????????????????????????????????????????????????????????????????????AGAATT----TTCGATTCCGGA-AGGGAGCCTGAGAA-CGGCTACCA-CATCCA---AAGGCAG-?-??-?-?--ATT-CCC-AATCC-GAC--GGGGAGGTAGT-ACAATAAATAACAATACTGGGCTTTTACAAGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAA--A??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CTTCTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAG???GAAAGTTGGGGGCTCGAAGACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTTGCGGGTGTTAATTTGATGACCCCG-AAGCACCTTAT-GAGAAATC-AAGTATTTGGGTTCCGGGGGGAGTATG?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CTCTTTCTTGATTCTATGGGTGGT-GTGCATGGCCGTT-TT-GTTGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAAC-AACGAGACCTCAGCCTGCTAACTAGTTACACGAAGAATC-TCTTTGTGGCC----AACTT-TTAGAGGGACTATTGGCGTCT-GCCAAT----GGAA??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????ATAGATCATTGC-ATTATTGATCTTCAA--A-GAATTCC-AGTAAGCGCGAGTCATCAGCTCGCGTTGATTAC-GTCCCTGCCCTTTGTACACACC-CCCGTCGCTCCTACCGATTGAATGGTCC---GGTGAAGTTTTCGG--ATCG--GG-TG-ATCGGGTT-G-GTTCGG?GACTTGT--GAGAA-TTCATTAAA--TTATCATTTAGAGGAA??????????????????????????????????????????????????GCAC?AT?GACCGACCGTGAT?CTTCTGTGAAAGGTTT?GAGTGTGAGC??T?CCTGCTGGGACCC??AAGATGGTGAACTATGCCTGAGC?AGG?CGAAGCCAGAGGAAACTCTGGTGGAGGCTC?G?AGC?ATACTGACGTGCAAATCG?TTCGTCAGACTTGGG?ATA????C?AAAGACT?ATCGAACCATGCG?AG?GGCCCCGGGAAGAGTTCTCTTTTCT?TTT?AACA?GCCT?GCCT??CCCTGGAATCGGATTACC?GGAG??ATAGGGTCCAGCGGCTGGT?AAAGCACCGCAC?TCTTGCGG?GTCCGGGGCCC??C???GGC??GGCCCGTGA [2095]
+Notothylas_bre ????????????????????????????????????????????????????????????????????????????????????????????????????????????CCTT-CTACTC---GGATAAC-G-AGTAA-TTCTA-AGCTAA-ACGTGCAACAACTCCCGACTC---TGGAAGG-AG--ATTTATTAGATAAAAG---GATG---GC-TT-GTCCCGTTT-A--CTGAATC-TGATAACTCCTCGAATCGCACGGCCCT???????????????????????????????????????????????????????????????????????????????????????????????GTTCGATTCCGGAGAGGGA--C-GAGAAACGGCTACCA-CATCC--?--AGGCAG---????----ATTACCC-AATCC-GA---GGGGAGGTAGTGACAATAAATAACAATACTGGGCTTTTACAAGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAA--A????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AAAGTTGGGG-CTCGAAGACGATCAGATAC---TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGGGTGTTAATTAGATGACTCCGCCAGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGG???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CA-GGCCGTT-TTAGTTGGTGGAGTGA-TTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTAGTTACAC-AAGAACCTTCTTCGTGGCC----AACTTCTTAGAGGGACTATTTGCGTCTA-CGAAT----GGAA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GGA-AGATCATTGC-ATTATTGATCTTCAAC-AGGAAT-CCT-GTAAGCGCGAGTCATCAGCTCGCGTT-ACTAC-GTCCCTGCCCTTTGTACACAC-GCC-GTCGCTCCTACCGATTGAATGGTCC---GGTGAAGTTTTCGG--ATTG-CGGCGACACCGGGTCACCGCCGGGGACGTT-T--GA-AA-TTCATTAAACCTTATCATTTA?A????????????????????????????????????????????????????????????????????CC?TGAT?CTTCTGTGA?AGGTTT?GAGTGTGAGCA?TACCTGCTGGGACCC????GATGGTGA?CTATGCCTGAGCAGGG?CGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGCGATACTGA?GTGCAAATCG?TTCGTCAGACTTGGGTATAGGGGCGAAAG?CTAATCG???????????????CCCCGGG?AGAGTTCTC?TTTCTTTTT?AACA?GCCT?GCCT?ACCCTGAAATCGGATTACCCGGAG??ATAGGGTCCAGCGGCTGGT?AAAGCACCACACG?CTTGCGGTGTCCGGTG?CCC?????GGC??GGCCCGTG? [2090]
+Phaeoceros_lae ?????????????????????????????????????????????????????????????????????????????????????????????????????GATGGTACCTTGCTACTC---GGATAACC--AGTAA-TTCTA-AGCTAAT-CGTGCAACAACTCCCGGCTTT--TGG-AGGG-TGT-TTT-TTAG-TAAAAG---GA-GCGG-C-TT-GTCCCGGTTTACGGTGAA-CW-GATAACTCCTCGGATCGCACGGCCCT??????????????????????????????????????????????????????????????????????????????????ACGGA-AATTAGGGTTCGATTCCGGA-A-GGAGCCTGAGAAACGGCTACCA-CATCC-AG-AAGGCA-CA--CGCGC--ATTACCC-AATCC-GAC-CGGGGAGGTAGTGACAATAAATAACAATACTGGGCTTTTACAAGTCTGGTAATTGGAATGA-TACAATCTAAATCCCTTAAC?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GAAAGTTGGG--CTCGAAGACGAT-AG-TACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGGATGTTAATTAGATGACTCCGCCAGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTAT?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????T--TGCATGGCCGTT-TTAGTTGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTAGTTACACGAAGAACCTTCTTCGTGGCC----AACTTCTTAGAGGGACTATTTGCGTCTAGCGAAT----GGAA???????????????????????????????????????????????????????????????????????????????????????????????????????????ATCTTTG-AAATTTCATCGTGAT--GGATAGATCATTGCAATTATTGATCTT-AA----GAATT--TAGTAAGCGCGAGTCATCAGCTCG-GTTGACTA--GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGAATGGTCC---GGTGAAGTTTTCGG--ATTG-CGGCG?ACA?CGGGT?ACCGCCGGGACGTTGT--GAGAAG-TCATTAAACCTTATC-TTTAGAGGAA??????????????????????????????????????????????????GCACCATCGACCGACCATGAT?CTTCTGTGAAAGGTTT??AGTGTGA??A?TACCTGCTGGGACCC??AAGATGGTGAACTATGCCTGAGTCAGG?CGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGCGATACTGA?GTGC?AATCG?TTCGTCAGACTTGGGTATA?GGGC???AGACTAATCGAACCATGCG??G?GGCCCCGGG?AGAGTTCTCTTTTCT?TTT?AACA???CT?GCCT?GCCCTGAAATCGGATTACCCGGA???ATAGGGTCCAGCGGCTGGT?AAAGCACCACACGTCTTGCGGTGTCCGGTGGCCC?CT??GGC??GGCCCGTGA [2098]
+Porella_pi ??????????????????????????????????????????????????????????????????????????????????????????????????TTTGATGGTACCTTGCTACTC---GGATAACC-TAGTAA-TTCTAGAGCTAATACGTGCACCAACTCCCGACTTC--TGGAAGGG-CGTATTTATTAGATAAAAGACCGATGCGGGC--T-GCCCGGTGTTGCGGTGAATCATGATAACTCGTCGAATCGCACGGCC???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AAACGGCTACCA-CATCCAAGG-AGGCAGCCGG-GCG---ATTACCC-AATACCGACACAGG?AGGTAGTGACAATAAATAACAATACTGGGCTTTACCAAGTCTGGTAATTGGAATGAGTACAATCTAAATCC?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AA?AAC?AAAGTTGGG--CTCGAA-ACGAT-AGATACCG-TCCTAGTCTCAACCATAAACGATGCCGAGCTAGGGATTG--GGATGTTAATTTGATGACTCCGC-AGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCC??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CC-----TAGTTGGTGGAG-G--TTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTAGTTACACGAAGAATCTTCTTTGTGGCC----AACTT-TTAGAGGGACTATT--CGTCTAGCCAAT----GGA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TCTTCAAC-AGGAAT-CCTAGTAAGC-CGAGTCATCAGCTCGCGTTGACTAC-GTCCCTGCCCTTTGTACACAC--CCCGTCGCTCCTACCGATTGAATGGTCC----GTGAAGTTTTCGG--ATTGCGGCGACGCGGCGGTTCGCTGCCGGGACGTTGT--GAGAAGTTTATTAAACCTTATCATTTA?A???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? [2118]
+Conocephal_con ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????ACGTGCACC-AGGCTCGAC----?TGGAAGGGG----TTTTTTAGATAAAAGACCGATGGGGGTGCT-GCC-GGTGATTC-GGGA-TC-TGATAACTCGACGAATCGCACGGCC??????????????????????????????????????????????????????????????????????????????????????????????????????????????????GAGCCTGAGAAACAGCTACCA-CATCCAAGGA-GGCAGCAGGCGCG---ATTACCC-AATCCCGACACGGGG-GGT-GTGACAATAAATAACAATACTGGGCTTTTACAAGTCTGGTAATTGGAATGAGAACAATCTAAATC???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AAGGATGTTT--ATTAA--AA-AA-GAAA-TTG-------GAAGACGATCAGATACC---CCTAGTCTCAACCATAAACGATGCCGA-CTAG--ATC--CGGATGT?CTTTTGATGACTCCGCCGGCACCTCCA-GAGAAATCAAA-TTTTTGGGTTCC?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CTCTTTCTT-ATTCTATGGGT--T--TGCAT---CGTTCTTAGTTGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTA-CTACGCGAGTCCATTTTTTGTCCTGCGC--AGCTT-TTAGAGGGACT---GG--TC--GCC-AC----GGAA???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TAGATCATT?C?ATT?TTGATCTTGAA-----AATTCC--GTA--CGCGAGTC-T----TCGCGCTGATT-C-GTCCCTGCCCTTTGT-C-C-CCGCCC--CGCTCCT-CCGATTGAATGGTCC---GGTGAAGAGTTCGG--A-CG-CGGCG?ACGTGC?GTCGCCGCCGGGACGTTGT--GAGAAGTTCTTT-AACCTTATCA-TTAGA?????????????????????????????????????????????????????????CCAGCGACCATGAGCATC?TCGATGCGAAAGGTT??GAGT??GAGCG?TGCCTGTTGGGACCC??AAGATGGTGA?CTATGC?TGAGCAGG??CGAAGCCGGAGGAAACTCCGGTGGAGGCTC?GTAGCGATACTGACGTGCAAATCG?TTC?TCAGACTCGGG?ATA??????AAAGACT?ATCGAACCATGCG?G???GCCCCGGGAAGAGTTTTCTTTTCT?TTT??AC?GACCT?GCC??GCCCTGGAATCGCTTTATGCGGAG??ATAGGGCCCAGCGGTCGGT?AAAGCGTCGCAAGTCTTGCGG?GTCCGGTGCGCC?CCC?GAC??GGTCC??GA [2075]
+Asterella_tene ?????????????????????????????????????????????????????????CTGTGAAACTGCGAATGGCTC-TTAAATC-GTTATAGTTTCTTTGATGGTGCCTT-CTACTC---GGATAACCG-AGTAA-TTCTAGAGCTAATACGTGCACCAACGCCCGACTTT-CCGGAAGGG--TGTTTTATTAGATAAAAGACCGATG---GC-TT-GCC-CGGTGATT-CGGAATCATGATAACTCGACGAATCGCACGGCCT??????????????????????????????????????????????????????????????????????????????????????????????????????????????AGGGAGCCTGAG?AACGGCTACCA-CATCC-AG-AAGGCAG-A---GC-C--ATTACCC-AATCC-GAC-----GAGG-AGTGACAATAAATAACAATACTGGGCT-TTACAAGTCTGGTAATTGGAATGAGTACAATCTAAATCCC?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CTTCTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGG-ATCG--GGATGT?GATTAGATGACTCCGCCGGCACCTCCATGAGAAATCAAAGTTTTTGGGTTCCGGGGGGAG-ATG?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TGGTGG-GTGATTTGTCTGGTT-AATTCCGTTAACGAAGGAGACCTCAGCCTGCTAACTA-CTACGCGGGGGTWCTCCCCTGCGGCC----AGCTT-TTAGAGGGACTGTCGGCGTCTAGCCGA-----GGA?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AGTCATCAGCTCGCGTTGACTAC-GTCCCTGCCCTTTGTACACAC-GCCCGTCGCTCCTACCGATTGAATGGTCC---GGTGA-GAGTTCGG--ATCG-CGGCGACGCGCGGTTCGCCGCCGGGACGTTG---GA-AAGTTCTTTAAACCTTATCA????????????????????????????????????????????????????????????T?AACATCGACCGACCATGAT?CTTCTGTGAAAGGTTC?G?GT?GGAGCA?TGCCTGTTGGGACCC??AAGATGGTGAACTATGC?TGAGCAGGG?CGAAGTCAGAGGAAACTCTGGTGGAGGCTC?GTAGCGATACTGACGTGCAAATCG?TTCGTCAGACTCGGG?ATA??????AAAGACTAATCGAACCATGCG?GA?GGCCCCGGGAAGAGTTTTCTTTTCT??TT??AC?GACC??GCCG?GCCCTGAAATCGCATTACGCGGAG??ATAGGGCCCAGCGGTCGGC?AAAGCGTCGCA?GTCTTGCGG?GTCCGGTG?GCC?CCC?GAC??GGCCCC?GA [2110]
+Riccia ?????????????????????????????????????????????????????????????????????????????????????????????????????????????TTTACTACTC---GGATAACC-TAGTAA-TTCTAG-GCTAATACGTGCACCAACGCCCGACTTCG-CGGAAGGGCTGTATTTATTGGATAAAAGGCCGATG-GGGC-TTGCCCCGGTGTTT-CGTGAATCATGATAACTCGACGAATCGCACGGCCCCC???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CGCAAATTACCC-A-TCC-GAC-----GA--TAGTGACAATAAATAACAATAGTGGGCT-TTACAA-TC--GTAATTGGAA--AGTACAATCTAAATCCCTTA??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AAAGCATTTGCCAAGGATGTTTTCATTAAT-AACAA--AAAGTTGG?GGCTCGAAGACGATCAGATACC--TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATCGGCGGATGT?GATTTGATGACTCCGCCGGCACCTCCT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTAT??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????ATTGAGAGCTCTTTCTTGATTCTATGGGT--T--TGCATGGCCG-TCTTAGTTGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTAGCTACGCGGGGGTTCTCCCTGCGGCC-----AGCTT---AGAGGGACT--CGG--TCTAGCCGAC----GGAA??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TTGC?ATTATTGATCTTCAAC-A-GAATTCC-AGTAA---CGAGTCGAACAGTCGCGCTGACTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGAATGGTCC---GGTGA-GAGTTCGG--ATCG----CGAC-----GTTCGCCGC-GGGACGTTGT--GAGAAGTTCTTTAAACCTTATC-TTTAGA???????????????????????????????????????????????????????????????????????????????????A?AAGGTTCGGAGTAAGAGCAT?GCCT?TTGGGACCC??AAGATGGTGAACTAT???TGAG?A?GG?CGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGCGATACTGACGTGCAAATCG?TTCGTCAGACTTGGG?ATAG??G??AAAGA?TAATCGAACCATCTAGTA?AGCCCCGGGAAGAGTTTTCTT?TCTT?TT??AC?GACC??GCC??GCC?TG?AATCGCA?TACGC?GAG??ATAGGGCCCA?CGGTCGGC?AAAGCGTCGCA??TCT??CGGCGTCCGGTGCTCATCCCCTAAAA?CCAG?AGA [2098]
+Klebsormid_fla ????????????????????????????????????????????????????????????????????????????????????????????????????????????CCTTA-TACTC---GGATAACCGTAGTAAGTTCTA-AGCTAATACGTGCACCAAATCCCGACTTC--TGGAAG?ACGTGATTTATTAGATAAAAGGCCAATGCGGGC-TT--CCCGGTATTGCGGTGAATCATGATAACTCGTCGAATCGCACGGCCTTTGCGCTG??????????????????????????????????????????????????????????????????TAACGGGTGACGGAGAATT?GGGTTCGATTCCGGAGA?GGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGC--ATT-CCC-AATCCTG-T-CAGGGAGGTAGTGAC-ATAAATAACAATGCTGGGCTTTTCAAAGTCTGGCAATTGGAATG??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AAGGATGTTTTCATTAAT---GA--GAAAGTTGGGGGCTCGAAGACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGGATGTTAATTTGATGACTCCGCCAGCACCTTAT-GAGAAATC--AGTTTTTGGGTTCCGGGGGGA-TATGGTC??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AACGAACGAGACCTCAGCCTGCTAACTAGTTACACGGAGATTCTTCTCCGTGGCC----AACTTCTTAGAGGGACTATTTGGCGTCTACAGCCAAT-GGAA?TTTGA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TCGCGTTGATTTA-GTCCCTGCCCTTTGTACACAC-GCCCGTCGCTCCTACCGATTGAATGATCC---GGTGAAGTTTTCGG--ATTGCGGCTACTGGTCCGCCGCCGAAGAAGCTGTGAG--GCAAGGTTCATTAAACCTTATCATTTAGAGGA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AGATGGTGAACTATGCCTGAGGCAGG?CGAAGCCAGAGGAAACTCTGGTGGAGGCTC?G?A?CGATACTGACGTGCAAATCG?TTCGTCAG?CTTGGG??TA??GCGGAAAGACTAATCGAACCAT???????????????GAAGAGTTCTCTTTTCTTTTT?AACAGTCC??GCCC?ACCCTGGAATCAGATTAACTGGAG??ATAGGGTCCAGCGACTGGG?AAAGCATCGCACGTCTCGCGGTGTCTGGTGCGCC?CT??GAC??GGCCCTTGA [2136]
+Coleochaet_nit ????????????????????????????????????????????????????????????????????????TGGCTCATTAAATCAGTTATAGTTT-TTTGATGGTAGCC---TACTC---GGATAACC-T-GTAA-TTCTAGAGCTATACCGTGC-CC--ATCC-GACTTC--TGGAAGG--GGTATTTGTTAGATAAAAGACCAAT----GC-TC-GCCCGGTGTT-CGGTGAATC--GATAACTCCTCG?ATCGCACGGCCT??????????????????????????????????????????????????????????????????????????????????????????????????????????GGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGA?GGCAG--GGCGCG--GATTACCC-AATCCTGATACAGGGAGGTAG--ACAATAAATAACA-TACTGGGCTTTTA-AAGTCTGGT?ATTGGAATGAGTACAATCTAAATCTC????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CATTAATCAAGAA-GAAAGTTGGGGGCTCGAAGACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGACCTAGG-ATCAACGGATGTTAATTTAATGACTCCGCCAGCACCTTAT--AGAAA-CAAAGTTCTTGGGTTCC??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AT--CCAGTTTTCGTTCW-GGAGTGATTTGTCTG-TT-AATTC?G?TAACGAAGGAG?CCTCAGCCTGCTAACTAGGCTAACGTTTTGTTGGGAC------------ACTTGTTAGAGGGACTGTGAGGCGCTTAGCTCAT---GGA??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????G-TCTCGAACGA-GAATACCTAGTAAGCGCTCGTCATCAGCGTGCGCT-ACTAC-GTCCCTGCCCTTTGTACACAC-GCCCGTCGCTCCTACCGATAGAATGCTCC---GGTGAAGCATTCGG--ATCGCCACCGGCGGGCAACTCCGGAGACGGCATG------AGAA-TT-GTTGAACCTTATCGTTTAGAGGA????????????????????????????????????????????????????CACCACGCGCCGATCCGGAGA?ATGTCGGAAGGGTTC?GAGCTGAGA?A??GTATGTTGGGACCC???AGATGGTGAACTATGCCTGA??AGG??CGAAGCCAGAGGAAACTCTGGTGGAAGATC?GCAGC?ATACTGACGTGCAAATCG?TTCGTCGGACTTG?GTATA????C?AAAGACT?ATC?AACCATGCG?GG?G?CTCCGGG?AGAGTTTT?TTTTCTTTTT?GACA?GTCG??AGC?GCCCTGGAATTGATT?C?CGGCG???GAGGGTGC?GAAAGCTGGC?AGAGCGCGCACTGGT???CGGTGTC?GGTG?AC??CCG???T??T?CCCTAGA [2098]
+Fissidens_taxi ???????????????????????????????????????????????????????????????????????????????????????GTTATAGTTTCTTT-ATGGTACCTTGCTACTC---GGATAACCGTAGTAA-TTCTA-AGCTAATACGTGCACAAACTCC-GACTCG-?TGGA-GGGACG-ATTTATTAGATAAAAGGC-GA-T-C-------GCC-GGTGTT---GCGAATCA-GATAAC?AGTCGAATCGACCC??????????????????????????????????????????????????????????????????????????????TGACGGGTGACGGA?AATTAGGGTTCGATTCCG-A-A-GGAGCCTGAG---CGGCTACCA-CATCC--GGAAGGCAGC--GCGCGC--ATTACCC-AATCC-GA---GGGGAGGTAGT-ACAATAAATAACAATACTGGGCTTTTACAAGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAA--A???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CTCGAAGACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGGGTGTTGATTTGATGACCCCGCCAGCACCTTGA-GAGAAAT--AAGTTTTTGGGTTCCGGGGGGAGTATG?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CTCTTTCTTGATTCTATGGGTG-T-GTGCATGGCCGTT-TTAGTTGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTAGTTACGCGAAGGATTTCTCTCCTTGGCGGCCAACTTCTTAGAGGGACTATCGGCGTCT-AGCCGAT---GGAA?TTT?A????????????????????????????????????????????????????????????????????????????????????????????????????AATCTTCTGAAATTTCATCGTGAT--GGATAGATCATTGCAATTATTGATCTTCAAC-A-GAATTCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGACTAC-GTCCCTGCCCTTTGTACACAC--CCCGTCGCTCCTACCGATTGAATGGTCC---GGTGAAGTTTTCGG--ATTG-CG?CG?AC?GGGTTCGCCGCGCGCTGT-------GAGAAGTTCATTAAACCTTATCATTTAGA--A??????????????????????????????????????????????????????????????????????????TTCTGTGAAAGGTTC?GAGTGTGAGCA?TACCTGTTGGGAC????AAGATGGTGAACTAT???TGA???AGG?CGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGCGATACTGACGTGCAAATCG??T?GT?AGACTTGGGTATAGGGGC???AGACTAATCGAAC?AT?CG??G?GGCCCCTGGAAGAGTTCTCTTTTCT?TTT?AAC?GGCCT?GCCT???CCTGGAATCGGATTACCCGGAG??ATAGGGTCCAGCGGCCGGT?AAAG???CGCACGTCTTGCGG?GTCAGGTGCCCT?C???GGC??GGCCCT?GA [2098]
+Plagiomnium_cu ????????????????????????????????TGTGTAAGTATAAACT-CTTTTGTACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTCTTTGATGGTACCTTGCTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGCACAAAATCCCGACTGG---G?AAGGGA??GATTTATTGGATAAAAGGCCGA-TGCGGGCT-TGCCCGGTTC-GCGG-GAC----GATAAC--GTCGAATCGCA-GGCCG???????????????????????????????????????????????????????????????????????????????????????????????????????????GA-A-GGAGCCT-AG---CGGCTACCA-CATCC-AGGAAGGC--C----------ATTACCC-AACTCCGA---GGGGAGGTAGTGACAATAAATAACAATACTGGGC--TTACGGGCCCG---ATTGG--TGAGTA?AATCT-AATCCCTTAA?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TGAAATTCTTGGATTTATGAAAGACGAACTTCTGCGAAAGCATTTGCCAAGGATGTTTTCGTTAATCAA-AA-GAAAGTTGGGGGCTCGAAGACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGGGTGTTGATTCGATGACCCCGCCAGCACCTTAT-GAGAAATC--AGTTTTTGGGTTCCGGGGGGAGTATG?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AGAGCTCTTTCTTGGTTCTATGGGTGGT-GTGCATGGCCGTT-TTAGTTGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTAGTTACGCGAAGGATTTCCTCCTTTGCGGCC-AACTTC--AGAGGGACTATCGGCGTC---GCCGAT---GGAAG?TTGA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????ATCATTGC-ATTATTGATCTTCAAC---GAATTCC-AGTAAGCGCGAGTCATCAGCTCG-GTTGACTAC--TCCCTGCCCTTTGTACACAC--CCCGTCGCTCCTACCGATTGAATGGTCC---GGTGAAGTTTTCGG--ATCG-CG??A?C????GTTCGCCGC?GG?GACGTTGT--GAGAAG-TCATTAAACCTTATCATTTA-AG?????????????????????????????????????????????????????GCACCATCGACCGACCGTGAT?CTTCTGTGAAAGGTTT?GAGTGTGAGCA?CACATGTTGGGACCC???AGATGGTGAACTATGCCTGAGCAGGG?CGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGCGATACTGACGTGCAAATCG?TTCGTCAGACTTGGGTATAGGGGC?AAAGACTAATCGAACCATGCG?AG?GGCCCCTGGAAGAGTTCTCT?TTCT?TTT??AC?GGCCC?GACG?ACCCTGGAATCGGTTCACCCGGAG??ATAGGGTCCAGCGGCCGGT?AAAGCACCGCACGTCTCGCGGTGTCAGGTGGCCC?TC??GGC??GGCCCGTGA [2089]
+Micromonas_pus ??????????????????????????????????????????????????????????????????????????????????????????AT-GTTTCTTTGGTGGTGTTTTACTACAT---GGATAACCGTAGTAA-TTCT-G-GCTAATACATGC-GTAAATCCCGACTTC---GGAAGGGACGTATTTATTAGAT-AAAGAC--AC----------CTC--GTCT-GCGGTGAATCATGATAACTTC-CGGATCGCATGGCTTCAA?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AAAGTTGGGGGCTCGAAGATGATTAGATA--A-TCCTAGTCTCAACCATAAACGATGC?GA-CTAGGGA--GGCGGATGTTAATT-GATGACTCCGC-AGCACCTTAT-GAGAAATCAAA-TTTTTGGGTTCCGGGA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????T-GTGCATGGCCGTTCTT-GTTGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGCCTGCTAAATAGTCATACGCTACTCT-TAGCGCAGT------GACTTCTTAGAGGGACTATGTGCGTTT-GCACAT----GGAA-TT?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AG-AATGCCT-GTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCCCTTTGTACACACC-CCCGTCGCTCCTACCGATTGAATGGTCC---GGTGAAGCGTTCGG--ACCGT-GGCTTTCTGA??G?TTCG?CCGTCGGATGGCCTGGGAAGTTCGTT-AACCTTATCA???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GGGACC????AGATGGTGAACTATG??TGAGCA?GG?CGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGCGATACTGACGTGC?AATCG?TTCGTCGGACTTGGGTATA???????AAGACT?ATC?AA????GG????GAGCCCCGGG?AGAGTTCTCTTTTCTTTTT?A?CA?GCCT??CGC?GCCCTGGAATCGGTTT?GCCGGAG??ATA?GGCCCAACGGCTGGT?AAAGCACTGCACGT?TCGCAGTGTCCGGTGC?CT?CC??GG???GGCCC?TGA [2114]
+Mantoniel_squa ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AA-TACATGCG-T-------------AATCCCGAC-TC---GG--GGG--GT-TTTATTAGAT--AAGACC-AC----------CTCG-TTCT-GCGGTGAATCA-GAT-ACTT--CGGATC-CATGGCTTCAA?GCCG?CGATGTTCCATTCAAATTTCTGCCCTATCAACTTTCGACGGTAGGATAGAGGCCTACCGTGGTGTTCACGGGTGACGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACAGGGAGGTAGTGACAATAAATAACAATATCGGGGTTTTTCAA??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GATGATTA-ATAC-A-TC-TAGTCTC-ACCATAAACGGAYCYGA-CWA--GATTCAC--ATCTTAAT---AT--CTC--CCA-CACCTTAT--A-AAATC-AA-TTTTT???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????T-G-GCWTGGCCGTT-TT-GTTGGTGGAGTGATT--TCTGGTT-AATTCCGTTAAC-AAC-AGACCTCWGCCTGCTAAATAGTCATACGCTACTCT-TAGCGCAGT------GACTTCTTAGAGGGACTATGTGCGTTTWGCACAT----GGAA-TTTGA?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TGCTGGGACC?????GATGGTGAACTATG?CTGAGCA?GG?CGAAGCCAGAGGAAACTCTGGTGGA??CTC?GT?GCGATACTGACGTGC?AATCG?TTCGTCGGACTTGGGTATA????C?AAAGACT?ATC?AACCAT?????????????????AGAGTTCTCTTTTCTTTTT??ACA?GCCT?T?GC?GCCCTGGAATCGGTTT?GCCGGAG??ATA?GGCCCAACGGCTGGT?AAAGCACTGCA?GT??CGCAGTGTCCGGTGCACT?CCC?GAC??GGCCC???A [2089]
+Nephroselm_pyr ????????????????????????????????????????????????????????????????????????????????????????????????????????????CCTT-CT-CTC---GGAT?ACCGTAGTA---TCT-G-GCTAATACGTGC-GCAACACCCGACTTC---GGAAGGGTTGT-TATATTAGATAAAAGACCGAC----CT-TCG-GCG-TTCT-TCGGTGAATCATGATATTTCCACGGATCGCAT--CTTCCC??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CGGCTACCA-CATCCAA--AAGGC-GC--GCGCGC--ATTA-CC-AATCCTGAC-CAGGGAGGTAGTGAC-ATAAATAACAATACCGGGCTTTTTCAAGTCTGGTAATTGGAATG????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GGGCTCGGAGATGATTAG---CCA-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCAGATGTTAGTTCGATGACTCTGCCAGCACCTTAT--AGAAATC-AAGTTTTTGGGTTCC?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CATGGCCGTTCTTAGTTGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGCCTGCTAAATAGTCACGCGATGCTCCTGCATGGCGGCG----GACTT-TTAGAGGGACTATCGGTATT-A-CCGAT----GGA?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AGGAATGCCT-GTAA--GCGAGTCATCAGCTCGCGTTGATTA--GTCCCTGCCCTTTGTACACAC--CCCGTCGCTCCTACCGATTGAATG-TGC--TGGT?AGGAGTCCGG--AT?AT???GCGGGTGGGTCC?GCCG?C?TCCGCCCGT--CAGAAGTTCTTCAAACCCTCGCATTTAGAG??????????????????????????????????????????????????????????????????????TGAT?CTTCTGTGAAAGGTTT?GAGT?CGAGCA??ACCTGTTGGGACC?????GATGGTGAACTATGCCTGAGCA?GG?CGAAGCCAGAGGAAACTCTGGTGGA??CTC?GTA??G?TACTGACGTGCAAATCG?TTCGTCGGACTTGGGTATA?GG?CGAAAGACT?ATC?AACCATGCG?GG?GGCCCCAGGAAGAGTTCTCTTTTCTTTTT?AACA?GCCC?GCCC?ACCCTGGAATCGGATTATCCGGAG??ATA?GGCCCAGCGGCTGGT?AAAG?C?CACT?CTTGCGG?GT??CTGGTGCGCC?CTC?GAC??GGCCC??G? [2108]
+Pedinomonas_mi ???????????????????????????????????????????????????????????????????????????????????????GAAATA-TTTCTTTGATGGTGAAAATCTACAC---GGATACCCGT-GTA--TTCT-GAGCTAATACGT-C-GTAA---CTCCATT----GG-AGG-T----TTT-TT-G-TCC-AACC-AGC-----C-TT-GGGG--TTT-TCTGTGAATC-TGATACTTTC??????????????????????????????????????????????????????????????????????????????????????????????CGGTGACG??GAATT?GGGTTCGTTCCGG--GAGGGAGCCTGAGAAACGGCTACC--CATC-AAGGAAGGC-GCGGGCGCGC--ATTACCC-AATCC-GAGA--GGGAGG-AGTGGACAGAAATATCGTGACTGTGCCCTTGTGGCAGAGTCTTCG?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GGGGATCGAAGACGATCAGATACC--TC-TAGTCTCTACCATAAACTAT-CCGA-CTAGGGATTGGTGGACGTT-GTTTT?CGACTCCATCAGCACCTTAT-GAGAAATCAAAGTCTTT???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GCATGGCCGTTCTTAGTTGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCGACCTGCTAAATAGGTTCAGTATCGATGCGTCGATGCTTG----GAGCTTTTAGAGGGACT-TCGGATCC-A-CCGGT----GGAAGT??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GTCCCTGTCCTTTGTAC-CAC-GCCCGT-GCTACTACCGATTGAATC-TTT---GGTGAGGCTCACGG--ACTGTCGTGCTTCCTTCCTCGTGTTGGTTGTACTTC---GGGAAGT--ATACA--CCTGATGATTAGAGGA?????????????????????????????????????????????????????????????????????????????????????????????????AGCA?GATATGTTGG??CCC???AGATGGTGAACTATG?CTGAAC?GGG?TGAAGCCAGGGGAAACT?TGGTGGAGGCTC?GTAGC?ATACTGACGAGC?AATCG?TTCGT?TGATTTGGG?ATAGGGGCG?AAGACTAATCGAACCAT??????????TCCGG???GAGTT?TCTTTTCTTTTT??ACA?GCCT?GTA??GCCCTGGAATCGGATT?CCCGGA???ATAGGGTGATGTGGCTGGT?AAAGCACCTCACGTCTTGAGGTGT?C?GTGC?TC?TC???AC???C??CTTGA [2092]
+Tetraselm_cart ??????????????????????????????????????????????????????????????????????????????????????????ATAGTTTATTTGATGGTACC-TACTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGC-GTAAATCCCGACTTC--TGGAAGGGACGTATTTATTAGATTTAAG-CGG-C---AGC-TTT-C---GTC---CGGTGAA-CA-GATAACTTCACGAATCGCATGGCCTCCGCGCCGGCGATGTTTCATTCAAATTTCTGCCCTATCAATTTGCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGACGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACAGGGAGGTAGTGACAATAAATAACAATACCGGGCTTTT-CAA??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GCATTTGTCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATTAGATACCG-TCCTAGTCTC-ACCAT-AACGA--CCGA-C-AGGGATTGGCAGA--TT--TT--ATG--TCTGCCAGCACCTTAT-GAGAAAT-AAAGTTTTTGGGTT?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TATGGGTG-T-GTGCATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTTACTCCTACTTTGGTAGGAGGTG------AACTT-TTAGAGGGACTATTGGCGTTT-GCCAAT----GGAAGTTA??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TCATCAGATCGCGTTGATTA--GTCCCTGCCCTTTGTACACAC--CCCGTCGCTCCTACCGATTGAATG-TG--TTGGTGAGGAGTT?GG--ATTGGCAGTTTGTGGTGG?TTCG?CCACTGCTTACAGCTGAGAAGTTCTCCAAACCCCCCCATT-AG??????????????????????????????????????????????????????????CCATCGACCGACCATGAT?CTTTTGTGAAAGGTTT?GAGTACGAGCA?TACCTGTTGGGACCC???AGATGGTGAACTATGCCTGAGCA?GG?CGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGATGTGCT?ACGTGCAAATCG?CTTTTCGGACTTGGG??TA????CGAAAGACT?ATC?AACCATGCG?AT?GGCCCTGGGAAGAGTTCTCTTTTCTTTTT?AACAGGCTC?GAAG?GCCCTGGAATCTAATCATTAGGAG??ATAGGGCTCAGAAGTCGGT?AAAGCACCGCACGTC?CGCGG?GTCCGGAGCGCC?ATT?GAC??GATCCTTGA [2111]
+Enteromorpha ??????????????????????????????????????????????????????????????????????????????ATTAAATCAGTTAGAGTTTATTTGATGGTACCACACTACTC---GGATAACCGTAGTAA-AGCTACAGCTAATACGTGC-GTAACTCCCGACYC---CG-AAGGGACGT-TTTATTAGATTC-AGACCGAC-CGTGC-TTGCCGTCTTT----GGTGAATCATGGTAACTTCACGAATCGCA-GG--TTTACCCCGG?????????????????????????????????????????????????????????????????????????????????ATTAGG?TTCGATTCCGGA?AGGGAGCCT?AGG--CGGCTACCAGCATCCGAGGAAGGCAGC-GGCGCGCAAATTACCC-AATCCTG--GCAGGGAGGTAGTGACAATAAATATCA-TTCTGGGC-CACTTG-GTCCGGTAATTGGAATG????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GGGCTCGAAGACGATTAGATACCG-TCGTAGTCTCAACCATAAACGAT-CCGA-CCAGGGATTGCCGGGTGTTTTTTTGATGACTCCGCCAGCACCTCAT-GAGAAATCAAAGTCTTTGGGTTCCGGGGGGAG?ATGG????????????????????????????????????????????????????????????????????????????????????AAACTTACCAGGTCCAGACATGGA---GATTGACAGATTGAGAGCTCTTTCTTGGTTCTATGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAA-GAGACCTCAGCCTGCTAAATAGTGACGATTGCTCGGCAGTCGCG--------CGCTT-TTAGAGGGACTGTTGGCG-TCTAGCCAAT---GGAAGTAT???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CCTAGTAAGCGCGAGTCATCATCTCGCGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGAACG-TGC--TG--GAAGCGTTAGG--ACTGG--AACCTTGGGCCGGTCTCCTGCCCATGGTTTC---GAATTTCGTT-AACCCTC--GTTTAGAG-A????????????????????????????????????????????????????????????ACC?ACCAT?AT?CTTCTGTGAAAGG?TC??A?TACGA??G?TACCTTTTGGGACCCTTAAGATGGTGAACTATGCCTGA?CA?GG?CGAAGCCAGAGGAAACTCTGGTG?AGGCTC?GTAGATGTGCT?ACGTGCAAATCGCCTTTTCGGACTTGGGTATA??GGC?AAAGACTAATCGAACCAT???????GG???TGGAAAGAGTTCTC?TTTCTTTT??AACA?GCCC?CA?G?ACCCTGGAATCGAGTCATTCGGAG??ATAGGGTTCAGTGCCTGGT?AAAGCACA??TC?T?T???GGTGTCCGGCGCGCA?GTC?GAGTCGGTCCGTGA [2111]
+Ulva_fasci ??????????????????????????????????????????????????????????????????????????????????????????AGAGTTTATTTGATGGTACCACACTACTC----GATAACCGTAGTAA-AGCTAC-GCTAATACGTGC-GTAACTCCCGACTTA--CG-AAGGGACG-ATTTATTAGATTCAAGGCCGAC-TGC---TTGACGTCTTT----GGTGAATCATGGTAACTTCACGAATCGCAGGG--TTTATC???????????????????????????????????????????????????????????????????????????????????GGATTAGGGTTCGATTCCGGAGA--GAGCCTGAG---CGGCTACCA-CATCC-A--AAGGCAGCA-GCGCGCAAATTACCC-AATCCTGA---AGGGAGGTA-TGACAATAAATATCAATTCTGGGC-CACAT--GTCCGGTAATTGGAAT?AGTACAATGTAAA?CCCT-AAC-A???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GGGGCTCGAAGACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGGGGTGTTTTTTTATGACTCCGC-AGCACCTCAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGA?TATGGTC?CAA???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CTATGGGT-GTGGTGCATG-CCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTC-GGTAACGAACGAGACCTCAGCCTGCTAAATAGTGACGTCTGCTTCGGCAGTCGCG-------CGCTTGTTAGAGGGACTGTTGGCG-TCTAGCCAATT--GGAAGTATGA?????????????????????????????????????????????????????????????????????????????????????????ACAGAGTCGGGTAATCTT-G-AAACT--ATCGT--TGGGA---AACATTGCAATTATTGTTCTTCAAC-AGGAATGCCTAGTAAG--CGAGTCATCATCTCGCGTTGATTAC-GTCCCTGCCCTTTGTACACAC-GCCCGTCGCTCCTACCGATTGAACG-TGC--TGGTGAAGCGTTAGG--ACTGGAACTTTGGCCGGTCTCCTGCCCATTGTTTC----GGGAATTTCGTT-AACCCTCCC???????????????????????????????????????????????????????????????????????????CCATGAT?C?TCTGTGAAAGGTT??GAGTACGAGCG?TACCTGTTGGGACC??AAAGATGGTGAACTATG?CTGAGCA?GG?CGAAGCCAGAGGAAACTC?GGTGGAGGCTCGG?AGATGTGCT?ACGTGC?AATCG?CTTTTCGGACTTGGGTATA??GG????A?ACT?ATCGAACCATCGA?T??GGC?CTGGAAAGAGTTCTCTTTTCTTTTC?AACCAGGGG??A?G?A?CCTGGAATCGAGTC?TTCGGAG??ATAGGGTTC?GTGCCTGGT??AAGCACCACACGTCTCGTGGTGTCCGGCGCGCC?A?C?GA???GGTCCGTGA [2096]
+Ulothrix_zo ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GATAACCGTAGTAA-TTCTAGA-CTAATACGTGT-GTAAATCCCGACT?A--CG-AAGGGACGTATTTATTA?ATCCAAGAC?GAC-CGC---TTG-CACCTTT----GGTGAATCATA-TAACTTCACGAATCGCATGG-CCTTGTGC-GGC???????????????????????????????????????????????????????????????????????????GGAGTATTAGT?TTCTTTTCCGGAGA--CA-CCTGAG---C-GCTACCA--ATCC-GGAACGGCAG--GGCGC----AT--CCC-CTTCCT-----AG--AGAT-GTGACAATA-AT-AC-ATACTGC-C-CA---G-GTCYGGT?ATTGGAATGAGTACAATCTAAATCCCTTA?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GCATT-GCCAAGGATGTTTTCATTGATCAACAA-GAAAGTTGGGGGCTC--------TYAGATACCG-TCG-AG-C-CAACCATAA-CGAYGCC-A--TAGG-AT-GGCGGGYGTTTTTTT--TG-CTCCGC-ACA-CCTTAT-GAGAAATCAAAGTYTTTGGGYTCCGGGGAG??TATGGTC?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????ATGG-TAGTTG---ATGGCCGTTCT--GTTGATGGGTCTGGCCTTC---TT-GATTCCGGTAA----CGA-ACY-YA-CC-GCTAAA-AGTTCCYTYGGCAGTTGGCA------------CACTT-TTAGAGGGACT-TTGGCG-TCT-GCCAAT---GGAAGTAT-A??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????G-GTT-ATTA---TCCCT-CCCTTTGTACA-AC--CCCGTC---CC--CCGATTGAATG--GC-GTAAAGATTTGCGGAATTGCT-TTCACGTTAGTTCCAAGCTCTTACCAC--------GAGAAGTT-ATT-AACCCTCCCA???????????????????????????????????????????????????????????????????????????????AT?CTTCTGTGAT?GGTTC?GAGTACGAGCAGTACCT?TTGGGACCC??AAGATGGTGATCTATGCCTGAGCAGGG??GAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGAT?TGCTG?CGTGC?AATCG?CTT?TCGGACTTGG??ATAGGGG?G?AAGACT?ATCGAAC?AT?????????CCTT?GGAAGAGTTCTCTTTTCTTTTT?AA?A?GCC???A?G?ACCC?GG?ATCG?GTC?TTCGGAG??ATAGGGTTCAGTGGCTGGT??AAGCATCGCACGTCT?GCGGT?TCTGGAGCGCT?ACC?A?C???GTCCTTGA [2032]
+Cympolia_barba ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TATGGGTTTGATTCCGGAGAGGGAGCTTGAGA-CTGGCTACCA-CATCCAAGG-AGGCAGC-GGCGCGAAAATTACCC-AATCTAGATATTGTGAGGTAGTGACAATAAATAACAATGTTGGACTTGTAAA-GTTTGGTAATTGTAATG------GAGTAA-TCC-TTGAAC???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AAAGCATTTGTCAAGGGTATCTTCATTGATCAAGAAC---AGTTGGGGGATCG--GATGATTAGATACCA-TCCTAGTCTCAACCATAAACCATGCCAA-TTAGGGATCGTTGAGC-GTTGATTAGTGACCTCGTCGGCACCATAT-TAGAAATTATAAATCTACAGGCTTGGGGGGGAA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TTTGAT-GC--TTTCTTGATTCT-TGGGTGGTGGTGCATGGCC-TTTTT-GTTCGTGGGTTGCCCTGTCTGGTT-GACTCCGTTAACGAACGAGATCTCAACCTACTAAATAGTATTACATCATTGTAGAAATATAT------ACCTTCTTAGGGGAACTATC-AGTT-CAAACCGAT---GGAAG??????????????????????????????????????????????????????????????????????????????????????????????????????GG?AATCTATG-CACATGCTTCGTGAT?AGGACGAATATTGGAATTGTT-ATTCTTTAACG--GAATGCCTAGTAAGTACCAGTCATCAACCGGTGTTGATTAT-GTCCCTGCTCTTTGT-CTCACCGCC-GTCGCTTGATCCGACGTTAC-AGT---TGGTGAACTGTTTGG--ATTATCCTTGTTCCGTGAAGACGTTACAGGTT---------GAAATTCGGTGAACC-----ACCTGTTAT?????????????????????????????????????????????????????TGTGTTAAGCACCGAGTTCT?CTTTTACGAAAAACTC?GAGTGTGAGCA?TGCCGTT?A?GATCT???AGATGGTGA?CTATACTTGGGTAG?A?TGTAGC?AGGAGAAATTCTGGTGGATGTTC?GAAAGTGTGC?GA?GTGC?AATCG?CTTCTCAAACCTGAGTTTAGGGGC???AGACTAATC?AACCA???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? [2111]
+Batophora_oers ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GGAGGTTGAGGGTTTGATTCCGGATT-GGA-CCTGAGA--CGGC--CC---YTTCC-GG--GGC-GC-GGCGC----ATY-CCC-AATC--GACATTGTGAG-T-GTG-CGACAAATAACAATGCCGGGC-TTATCAAGTTTGGTAATTGGAATGAGT--AACGTAAAYGCCTTA?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GGATCCAACTGCGAAAGCATTCC----GGGCGCTCTCGTTGATCAAGAAC---AGTTGGGGGATCGAAGATGATTAGATACCA-TCCTAGTCTCAACCATAAACTATGCCAA-Y-AGGGATCGGC-GGGGT-CTTTA-C-GTGTCCTCGTCGGCCCCTT-GAGAAA-CATAAATTTGGGCTCCGGG???TAGTATGGT??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TTTCTTGATT--A-GGGT--------ATGGCCATTCTTAGTTC-TGGGTTATCTTGTCTGGTT-GACTCCGTTAACCA---A-ACCTCAGCCT-CTAAA-A-CGGCCTCTCCTTAGGAGTGC----------CCCYTCYTA-A-GGAC--TCGGCG--CAA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????-???????????????????????????????AGCTTGCGTTGATTA----CCCTGCCCTYT--AC-CAC--CC-GTCGCTTGATCCTGTCTTGC-A-T----YGTGAAAAGTTTGG--AT--GYCTTCCGAAA?CGGTTACGCCTA-------------GAA-TTCTCTTAACC-----ACCT-TTA???????????????????????????????????????????????????????????????????????????????????????????????????????????????TGG?ACC????AGATGGT???CTATGCTTGGGTAGGA?CGAAG?CTGGGGAAACTCTGATGGAGGTCC?GAAGCT?TGCTGA?GTGCAAATCG?CTTCTCA?ACT?GAGTA?A?GGGC?AAA?ACTAA???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? [2058]
+Codium_decort ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????ATC-GGGTTTGGTTCCGGAGA--GAGCCTGAGGC-CGGCTACCA--CATCC-GGAAGGC-GC--GCGCGC-AATTACCC-AATCCCC--CGGGTGAGGT-GTGACGAGACATAACAACGACGTGC-TCAACGAGTGGG-TCGATGG--TG-GA--AACTTAAAATCCC-CA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CCTAAGCGAAAGCAGTCGCCAAGGACACTTCCTTGTGATCAAGA-CGAAAGTT--GGGATCGAAGATGATT--ATACCG-TCGTAGTCCCAACTGTAAACTATGCCAT-CTGGGGATCGG--GGCTG-ATGAATTGCCG-CCG-GCACCCTCCGA-GAAATTAAAAGATCTTGGGCTTCCGGGGAGC?TAGTGCTCAGTGTGGTG????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CTCTTTCTTGATTCC-TGA-TGGTG-TGCATGGCCGATCTCAGCCG-TGGGTTGACCT-TCAGGTT-C-CTCCGGTAAY-Y-C-AGACCTCGACCTGCCAAATAGCACCGGCCCTTCCGATGGC-----------ACCTTCTTGGAGGGACTGGCGCGAGAGCCGGACGCG????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GAATGCCTAGTA---CCGGGT--GGATCCCGCGACGATTGC-GTCCCTGCCCTTTGTACACAC-GCC-GTCGCT-GATACTGATGGCAG-AAC--TGG--AA--CCGGGG--ACGC-GCC?TTT??TGGGAGCCCCGCT------------AACCACTTTTCTAA??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????ACGGCGGCGGCGGG?AGAGTTCTCTTTTCTTGTT?GACGAGCT??AAGG?ACCCTGGAA?C???TC??CGGGA???ATAGGGTTTGACGGCAGGT??T?GCGCCGCCCC??G?TGCGC?GTCTGGCCC?C???C??????GGCGGTCC? [2091]
+Cladophoro ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TTGGACTAC-A-CCT-T--ACG-GTAGCGGAGGATTAGGGTTCGGATTCCGGAGGGGAGCCTG-GA--CGGCTACCA-CATCC-AGG-AGGCAGCAGGCGCGC--ATTACCC-AATCC-AAC--AGGGAGGT-GTG-C--GAAATAGCAAT--CGAGCATTT---CTCTG--CAATTGAAATGAGAA-AATTTAAACCACTTAAC-A---ATC???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TGCGAAAGCA-TTGCCAAGGACGCTTTCATTA-GTCAAGGACGAAAGTCGGGGGATCGAAGACGATTAGATA-CG-TCGTAGTCTCGACCATAAACGATGCCAA-TTAGGGATTGGA-GGGCGGATAGATAT-CCTCCTCCAGCACCTTCC-GCGAAAGCAAAATTTATG?CTTC?GGGGGGAGTAT????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AGATTGATAGCTCTTT-AAGATTTTTTGGATGGTG--GCATGGCCGTTCTTAGTTCGTGGATTGATTTGTCAGGTT-G-TTCCGG--ACGGA-G-GACCC--GCCTACTAACTAGCTCTACCTGAACTTCAGGTAGCC-------AGCTT-TTAGAGGGACTCTCGGAA-TGAAACCAA----GGAA???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????C-ACGAGGAATGC-T-GT-AGCGCGAGTCATCAACTCGCGTTGATTAC-GTCCCTGCCGTTTGTACACACCGCCCGTCGCTCC-ACCGATTGGGTG-TGCG-T---GAAAT-TTCGG--ATTAGACAACCTACCGT?AGGG?GTCGT?T---------GAGAAGTTCATTAACCCTTCACC?AGAG?AA?????????????????????????????????????????????????????????????GCCAACCATGATGCTTTTGTG??AGGTTT?GAGC??GAGCG?CAGTCG?TAGGACCCGG??GATGGTGAACTATGCCTGGTGCACGACGAAGCGC??GGAAACGCCGGTGGAGGTCG?G?AGATGTGCT?ACGTGC?AATCG?CTTTTCAGACATGGGTATAGGGGC?AAAGACTAATCGAACCAT?GG?CA?TGGTCCGGG?AGAGTTGTCTTTTCTTTTT?AACA?GCTC?GCA???CCCTGGAATCAGATTATCTG?AG??AT?AGGGCTCAGAGCTGGT?AAAGCGTTGCAA??CTCGCAACGTCCCGAGCGCC?TC??CAC??GGCCCTTAA [2090]
+Blastophysa_rh ??????????????????????????????????????????????????????????????????????????????????????????????????????????TAC-TTGCTACTT---GGATAACC--AGTAA-TTCAGAAGCTAATACAT-C-GCGGATCCCAGACTTC-TGGAAGGGACGTATTTATTAGATAAAAGGCYGAC-CGGGC-TT---CCCGAGTGCAGGTGACT-ATGATAGACATCACACGAATC?????????????????????????????????????????????????????????????????GGCCTACCACGGTATCGACGGGTGACGGAGGATTAGGGTTCGATTCCGGAGGGGGAGCCTGAGA-ACGGCTACCA-CAACCAAGGTAGG-AGCAGGCGCG---ATTACCC-AATCCTGAC-CGGGGAGGTAGTGACAATAAATAACAGTATCTGGC-TCT-CAGTCCG-ATGCTTGGAAT-A-TA-AATCTAAATCCCTTAAC-A????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CCGATAGACGAACCATCTGAAGATTTGCCAAGGATCGTTTTCTTTGATC------GAAAGTTGGGGGCTCGAAGATGATTAGATACCGGTCGTAGTCTCAACCATAAAC-ATGCCCA-CTA--GATCAGG-AG--ATTTAT-TTCGACTTCTCCGGCACTCCAT-GAGAAATCAAAGTCTTTGGGTTC??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????T-TGCATGGCCGTTCTTAGTTGGTGGGTTGGCTTGTCAGGTT-GATTCCGGT-ACGAACGAGACCTCCGCCTGCTAAATAGCCACTCCGGGGGCCC---------------GGCTTCTTAGAGGGACTATGGCTCGAATAGGCCAT---GGAA???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AC-TGCAATT-T--GGTCT-CAACG--GAATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCCCTTTGT-C-C-CCGCC-GTCGCTCCTACC-ATT-GATG-TGC--TGGTGAAGCA-ACG---ACT-TGGA?CACCCTCGGGT?ATTTGC------------GGGAAATGTGTTAAACCCTCCCATCTA?A??????????????????????????????????????????????????????????????GACCGACCATGAT?CTTCTGAGAAAGGTTC?GAGTTGGAGCG?TGCCT?TTGGGACCC??AAGATGGTGAACTATGCCTGAGCA?GG?CGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGATGTGCTGA?GTGCAAAT?G??T?TTCGGACTTGGGTATA?GGGCGAAAGACT?ATC?AACCAT??????????????GGAAGAGTTCTCTTTTCTTCTT?GA?GA?CCC?GAAG??CCCTGGAATCGGATCATCCGGAG??ATAGGCCCAT?TGGTCGGT?AAAGCACCGCACGT?T?GCGGTGT???ACGTTGC??????A????CCCCTTAA [2078]
+Trentepohlia ?????????????????????????????????????????????????????????CTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTC-ATTT-ATGGTGT-TT-CTACTC---GGATAACC--AGGAA-AACTAGAGCTAATACGTGC-GTAAATCCCGACCTCC---GAAGGGACGTATTTATTAGATAAGAGGCCGGAACGCGC-TTAGGCCCGCT--TCGGTGAATCATAATA-ACTTCAC--GAATCG---CTG-GTC---GAACYGA??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????ACGGAAGACGAACTTCTGCGAAAGCATTTG-CAAGGATGTTTTCATT-GATCAAGAA-GAAAGTCGG-GGCTCGAAGACGATTAGATACCG-TCGTAGTCTCGACCATAAACGATGCCGA-CTAGGGATCGGA-GG-TTTTTTTTA-TGACCTCTCCGG-ACCT--A-CAGAAATCAAAGTT--TGGGTTCC?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TGTGCATGGCCGTTCTT-GTTGGT-GGTTGGCTTGT---GTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTA-CTTTCGGTT---CCCA-GC--------AACTTCTTA-A---ACTATTACATCA???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????-?????????????????????????????????????CGTTGATTAT---CCCTGCC----GTAC-C-CC-CCCGT-GCTCCTTCCGATTGGGTG-TGG--TGGTGAAGAGTTCGG--ACTGGACCAGGCTAGCAATA--CCC--TTG--------GGGAAGTCCGTTTAAACCCTCCCTA??????????????????????????????????????????????????????????????????????????????TC?CTCACAT?ATATCTTT?T?ATTCATAAC?TACCT?TTGGGACCC??AAGATGGTGAACTATGCCTGATCAGG??CGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTA?ATGTGCT?ACGTGCAAATCG?CTTTTCGGAATTGG???CA??G?????A?A??AATCGAACCATGCG?AT?GGTCCCGGGTAGAGTTATCTTTTCTACTT?AACGA?CCC?GAAG?GCCCT?GAATCGGATCATCCGGAG??ATAGGGCTCAGAGGTCGGT?ACAAGCGCCGCACATCACGTGCGTCCGGTGCGCC?ATC?GAC??GGTCCT??? [2085]
+Cephaleuro_par ???????C-TGTCTCAAAGA-TAAGCCATGCATGTCTAAGTATAA---GCTTTA-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTT-ATTTGATGGTG-TTTGTTACTC---GGATAACCGTAGGA----CTAGAGCTAATACGTGC-GTAAATCCCGA--TC---GGAAGGGA-G-ATTTATTAGATAAGAGGC-GAC-CGGGC-TT-GTCCCGCT--TCGGTGA-TC-TGATAACTCAACGA-TCG------CTG-GTCCGTGAACCGC????????????????????????????????????????????????????????????????????????????????????????????????GGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAA-GCAGCAGGCGCGC--ATTACCCAAATCCCAAGGT--GGAGGTGGTGG???GAAATAACGATGCTCCGGCCTCTG-GTCGGG?TAATCGGAATGAGAA--ATTTA??TCCCTTA??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GTCGG-GGGCTCG-CG-CGCTT-GGTACCG-TCGTAGTCTCGACCATAAACGATGCCG--CTAGGGATCGGA-GGTGGGTTTTTTATG-CCTCTCCGGGCACCTTC-GAGAAATCAAAGTTGTTGGGTTCC?GGGGGAGTATGG????????????????????????????????????????????????????????????????????????????????????AAACTTACCAGGTCCAGACATGGT-AG-AT-GACAGATTGATAGCTCTTTCTTGGTTCTATGGGTGTGGGGGCATGGCCGTTCTTAGTTGGTGGGTTGGCTTGTCGGGTT-GATTCCGGGAACGAACGAGACCTCAGCCTGCTAAATAGTTGCCCCCGCCTCGGTGGGGGTCGA-----GACTTGTTAGAGGGACTATTAGCG-ATTTTCA--CTAATT--AA-T??????????????????????????????????????????CGCACGCGCGCTACACTGATGTATTCAACGAGTCTATAGCCTTGGCCGACAGGTCCGGGTAATCTTTG-AAATTTCATCGTGATGGGGATAGATCATTGCAATTGTTGGTCTTCAACGAGGAATTCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGACTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGAATGGTCC---GGTGAAGTGTTCGG--ATTGCGGCGACGTGAGCGGTTCGCTGCCCGCGACGTTGTGAGAAGTCCACTGAACCTTATCATTTAGAGGAAGGA?????????????????????????????????????????????????????????GCTGCCATGAT?CTTCTGTG???GGTTC?GAGTAGGAGCG?G?CCTGTTGGGACCGGG??GATGGTGAACTATGCCTGATCAGG??CGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGATGTGCT?ACGTGCAAATCG?CTTTTCGGAATTGGGTGT?????CGAAAGACTAATCGA?CCATGAG?TG?GTC???GGGTAGAGTT?TCTTTTCTGCTT?AACGAGCCC?GAAG?GC?CTGGAATCGGATCATCCGGAG??ATAGGGCTCAGAGGTGGGT??AGAGCGCCGCACATCACGTGC?TCGG?TGCGCC?ATC??AC????TCC???A [2099]
+Characium_vac TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGCTT-A-TACGGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATTTGATGGTACC-TCTTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGC-GTAAATCCCGACTTA--TGGAAGGGACGTATTTATTAGATAAAAGGCCAGC-CGGGC-T-TGCCCGACCC-TAGGCGAATCATGATAACTTCACGAATCGCATGCCCTC-GTGGCGGCGATGTTTCATTCAAATTTCTGCCCTATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGACGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCCGACACGGGGAGGTAGTGACAATAAATAACAATACTGGGCATTT--ATGTCTGGTAATTGGAATGAGTACAATGTAAATATCTTAACGA-GTATCCATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGATGTGTTGTCGC-GGTCTGCC-TCT-GGTACGTACTGCGTTCGA---GCATCTTTCTGCTGGGGACGAG--CTCCTGGGCTTAATTGTCTGGG-ACTCGGAATC--AGCGAAGTGACCTTGAGCAAACAAGAGTGTTCAAAGCAAGC-CTACGCTCTGAATTTTTTAGCATGGAATCACACGATAGGACTCTGG-CCTATCTTGTTGGTCTGTAGGACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATTGTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTTCTGCGAAAGCATTTGCCAAGGATGTTTTCATTGATCAAGAACGAAAGTTGGGGGCTCGAAGACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCAGGTGTTCAATTGATGACCCTGCCAGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGGAAACTTACCAGGTCCAGACACGGGGAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTGTGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTAAC--------------------------TACTTCTTAGAGGGACTATTGGCG-TTTAGTCAAT---GGAAGTGTGAGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATGCATTCAACGAGCCTAT--CCTTGGCCGAGAGGTCCGGGTAATCTTTG-AAACTGCATCGTGATGGGGATAGATTATTGCAATTATTAGTCTTCAACGAGGAATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGAAGTGTTCGG--ACTGGCT--------------------------------GGGAAGAACATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCGTAG????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? [2067]
+Dunaliella_par TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGCTT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATTTGATGGTACCTT--TACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGC-GTAAATCCCGACTTC--TGGAAGGGACGTATTTATTAGATAAAAGGCCAGC-CGGGC-T-TGCCCGACTC-TTGGCGAATCATGATAACTTCACGAATCGCACGGC-TTCGTGCCGGCGATGTTTCATTCAAATTTCTGCCCTATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGACGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCCAACACGGGGAGGTAGTGACAATAAATAACAATACCGGGCATTT--TTGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAACGA-GTATCCATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGTTGTAGC-GGTCAGCC-TTT-GGTGAGTACTGCTACGGC---CCACCTTTCTGCCGGGGACGTG--CTCCTGGGCTTAACTGTCCGGG-ACACGGAATC--GGCGAGGTTACTTTGAGTAAATTAGAGTGTTCAAAGCAAGC-CTACGCTCTGAATACATTAGCATGGAATAACACGATAGGACTCTGG-CTTATCTTGTTGGTCTGTAAGACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATTGTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTTCTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCAGGTGTTTCGTTGATGACCCTGCCAGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGAAAACTTACCAGGTCCAGACACGGGGAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTGTGGGTGGTGGTGCATGGC?GTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTACTAAATAGTCAC--------------------------GACTTCTTAGAGGGACTATTGGCG-TTTAGCCAAT---GGAAGTGTGAGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATGCATTCAACGAGCCTAT--CCTTGGCCGAGAGGTCCGGGTAATCTTTG-AAACTGCATCGTGATGGGGATAGATTATTGCAATTATTAGTCTTCAACGAGGAATGCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGAAGTGTTTGG--ACTG-GTT-------------------------------GGGAAGAACATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCGTAG????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? [2066]
+Chlamyd_reinha TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGCTT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATTTGATGGTACC-TACTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGC-GCACAACCCGACTTC--TGGAAGGGTCGTATTTATTAGATAAAAGGCCAGC-CGGGC-TCTGCCCGACCT-GCGGTGAATCATGATAACTTCACGAATCGTATGGGCTC-GTCCCGACGATGTTTCATTCAAATTTCTGCCCTATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGACGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAGATGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCCGACACGGGGAGGTAGTGACAATAAATAACAATACCGGGCGCTTC-GCGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAACGA-GGATCCATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGGTGGTGC-GGTCCGCC-TCT-GGTGTGCACTGCTCTGCT---CCACCTTCCTGCCGGGGACGGG--CTCCTGGGCTTCACTGTCTGGG-ACTCGGAGTC--GGCGAGGTTACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-CTACGCTCTGAATACATTAGCATGGAATAACACGATAGGACTCTGG-CCTATCT-GTTGGTCTGTGGGACCGGA-GTAATGATTAAGAGGGGTAGTCGGGGGCATTCGTATTCCGTTGTCAGAGGTGAAATTCTTGGATTTACGGAAGACGAACATCTGCGAAAGCATTGGCCAAGGATACTTTCATTGATCAAGAACGAAAGTTGGGGGCTCGAAGACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCAGATGTTCTTTTGATGACTCTGCCAGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGGAAACTTACCAGGTCCAGACACGGGAAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTGTGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTCAG--------------------------GACTTCTTAGAGGGACTATTGGCG-TTTAGCCAAT---GGAAGTATGAGGCGATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGACGCGACCAACGAGCCTAT--CCTTGGCCGAGAGGCCCGGGTAATCTT-GTAAACCGCGTCGTGATGGGGATAGATTATTGCAATTATTAGTCTTCAACGAGGAATGCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGAAGTGTTCGG--ATTGAGCT-------------------------------GAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCGTAG????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? [2069]
+Volvox_carteri TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGCTT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATTTGATGGTACC-TACTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGC-GCACAACCCGACTTC--TGGAAGGGTCGTATTTATTAGATAAAAGGCCAGC-CGGGC-TTTGCCCGTTGA-ATGGTGAATCATGATAACTTCACGAATCGTATGGCCAC-GTGCCGACGATGTTTCATTCAAATTTCTGCCCTATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGACGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAGATGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCCGACACGGGGAGGTAGTGACAATAAATAACAATACCGGGCGCTTA-GCGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAACGA-GGATCCATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGGTGGTGC-GGTCCGCC-TCT-GGTGTGCACTGCTCTGCT---CCACCTTCCTGCCGGGGACGGG--CTCCTGGGCTTCACTGTATGGG-ACTCGGAGTC--GGCGAGGTTACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-CTACGCTCTGAATACATTAGCATGGAATAACACGATAGGACTCTGG-CCTATCT-GTTGGTCTGTGGGATCGGA-GTAATGATTAAGAGGGGTAGTCGGGGGCATTCGTATTCCGTTGTCAGAGGTGAAATTCTTGGATTTACGGAAGACGAACATCTGCGAAAGCATTTGCCAAGGATACTTTCATTGATCAAGAACGAAAGTTGGGGGCTCGAAGACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCAGATGTTCTTTTGATGACTCTGCCAGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGGAAACTTACCAGGTCCAGACACGGGAAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTGTGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTCAGCATGACTGCGGTGCGCA---------GACTTCTTAGAGGGACTATTGGCG-TTCAGCCAAT---GGAAGTATGAGGCGATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGACGCGACCAACGAGCCTAT--CCTTGGCCGAGAGGCCCGGGTAATCTT-GTAAACCGCGTCGTGATGGGGATAGATTATTGCAATTATTAGTCTTCAACGAGGAATGCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGAAGTGTTCGG--ATTGACTTTGACTGGGGCAACCTGGTCATGGTT------GAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAGGTTACCGTAGGTGAACCTGCGGAAGGATCATTG?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? [2111]
+Chlorococc_min TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGCTT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATTTGATGGTACC-TATTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGC-GTAAATCCCGACTTC--TGGAAGGGACGTATTTATTAGATAAAAGGCCAGC-CGGGC-T-TGCCCGACCT-ATGGCGAATCATGATAACTTCACGGACCGCATGGCCTT-GTCGCGGCGGCGTTTCATTCAAATTTCTGCCCTATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGACGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCCGACACGGGGAGGTAGTGACAATAAATAACAATGCGGGGCCTA---TGGTCTTGCAATTGGAATGAGAACAATGTAAATATCTTAACGA-GTATCCATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGACCACGC-GGTCTGCC-TCT-GGTACGTACTGCGCCTGG---CCACCTTTCTGCTGGGGACG-C--CTCCTGGGCTTCACTGTCTGGGGGGTGGGAGTC--AGCGAAGTGACCTTGAGCAAACAAGAGAGTTCAAAGCAAGC-CTACGCTCTGAATTTTTTAGCATGGAATCACACGATAGGACTGTGG-CCTATCTTGTTGGTCTGTGGGACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATTGTCAGAGGTGAAATTCTTGGATTTATGAAACACGAACATCTGCGAAAGCATTTGCCAAGGATGTTTTCATTGATCAAGAACGAAAGTTGGGGGCTCGAAGACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGGGCGTCCTTTTGATGACCCCGCCGGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGGAAACTTACCAGGTCCAGACACGGGGAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTGTGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTCAC--------------------------GACTTCTTAGAGGGACTATTGGCG-TTTAGCCAGT---GGAAGTGTGAGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATGCATTCAACGAGCCTAT--CCTTGGCCGAGAGGCCCGGGTAATCTTTG-AAACTGCATCGTGATGGGGATAGATTATTGCAATTATTAGTCTTCAACGAGGAATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCCCTTTGTACACAC-GCCCGTCGCTCCTACCGATTGAGTG-TGC--TGGTGAAGTGTTCGG--ACTTGCG--------------------------------GGGAAGAACATTAAACCCTCCCACTTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCGTAG????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? [2065]
+Draparn_plum ????????????????????????????????????????????????????????????????????????????????????????????????????????????????CTTACTC---GGATAACTGTAGTAA-TTCTA-AGCTAATACGTGCTTCAAGTCCCAACTTC--TGGAAGGG---TGGTTATAAGA-GTAAGGCCAA--ACGCT---CTCCCGATTT---GA-GAC-----ATAAGTCCACG-ATCGCA--GCCT--GGTGACGGGTGA??????????????????????????????????????????????????????????????????????CGGAGGATTAGGGTTCGGTTCCGGA-AGGGAGCCTGAGAAATGGCTACCA-CATCCAAGGAAGGCAGC-GGCGCGC-AATTACCC-AATCCTGACA--GGGAGGTAGT-ACAATAAATAACAATACCGGGCATTAA-ATGTCTGGTAATTGGA??GA?TAC?ATCTAAATCC?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AA???CGAAAGTT-GGGGCTCGAAGACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGG-ATCGGT?GGAGTTTTTTCGAT-ACTCCATGGGCACCTTAT-GAGAAATC-AAGTCTTTGGGTTCCGGGGGGA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTC-GG-AACGAACG-GACCTCAGCCTGCTAAATAGTCACCTTCTCGCGGCAGGC-----------CACTTC--AGAGGGACTATTGCCG-TTTAGGC???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GGAATGCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGATTACCGTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-T-C--TGGT-AAGCGTTCGG--A-TGAAGCGGTGGGACTCTCCTGCCCTCCC---------GAGAAGTTCGTTAAACCCTCCCACC????????????????????????????????????????????????????????????????????????CC?TGAT?CTTCTGTGAAAGGT???GAGTACGAGCA?TACCT?TTGGGACCC?AAAGATGGTGAACTATGCCTGAGCGAGG?CGAAGC?AGAGGAAACTCTGGT??AGGCTC?GTA?ATGTGCTGACGTGC?AATCG?CTTTTCGGACTTGGG?ATA????C???AGA?T?AT??AACCAT??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? [2098]
+Uronema_belk ?????????????????????????????????????????????????????????????????????????????????????????????GTTTATTTGATGATACCTT--TCCTC----GATAACCGT-GTA--TTCTAGAGCTAATACGTGC-GCAACTCCCGACTTC--TGG--GGGA-GTGTT-ATTAGATCT-AGGC-A------GC----TCCCGACA----GGTGA-TCATG-TAACTCCACGAATCGC--GGCC---GCGC???????????????????????????????????????????????????????????????????????????????????????????TTCGATTCCGGAGA--GAGCCTGAGGAACGGCTACCA-CATCC--GGAAGGC-GC---CGCGC--ATTACCC-AATCC-GA---GGGG-GG--GTGACAATAAATAACAATACCGGGCATTT--ATGTCTGGT--TTGGAATGAGTACAATCTAA??CCCTTAA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GAAAGCATTTGCCAAGT?TGTCTTCATTAATCAA-AA-GAAAGTTGGGGGCTCGAAGACGATTAGATACCG-T-GTAGTCTCAACCATAAACGATGCCGA-CTAGG-ATCGGTGGA--TTTTTT-----ACTCCGTGGGCACCTTAT-GAGAAATC--A-TCTTTGGGTTCCGGGGGGA-TAT?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TTCTATGG-TGGTG?TG?ATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTC?GGTAACGAACGAGACC-CAGCCTGCTAAATAGTCACC-----GCGGCAGGA-----------GACTT-TTAGAGGGACTATTGTC---TTAGGCAAT---GAAGTA???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AGTCTTCAAC-A-GAATGCCTAGTAAGCG--AGTCATCAGCTCGCGTTGATTAC-GTCCCTGCCCTTTGTACACAC-GCCCGTCGCTCCT-CCGATTGGGTG-TGT--GGGTGAAGCGCTCGG--AT?GGGGCGGTCGGAGTCTCCCACCCCCT----------GAGAAGTCCGTTAAACCCTCCCACCTA-AGGAA?????????????????????????????????????????????????????????????????????????????????????????GAGT?CGAGCA??ACCT?TTGGGACCC??AAGATGGTGAACTATG?CTGAGCA?GG?CGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGATGTGCTGACGTGCAAATCG?CTTTTCGGACTTGGGTATA???GCGAAA?ACT?ATC?AACCATGCA?TC?GGCCCTGGG?AGAGTTCTCTTTTCTTTTT?AAC?AGCT??GAAG?GCCCTGGAATCGAATCATTCGGA???ATAGGGCTCAGCA?CTGGT?AAAGCACCGCACGTCTCGCGGTGT?C?GCGCGC??GAT?GA???GGTCC?TGA [2050]
+Chlamydom_moew ??????????????????????????????????????????????????????????????????????????????ATTAAATCAGTTATAATTTATTTGATGGTAC-TTACTACTT---GGATAACCGTAGTAA-TTCTAGAGCTAATACATGCGGATAATCCCAACTTC--TGGAAGGGACGTATTTATTAGATAAAAGGCCAGC-CGTGC-T-TGCACGATCC-TGGTTGATTCATGATAACTTCACGAATCGCATGGCCTT-GTGCCGGC??????????????????????????????????????????????????????????????????ACGGCTGAC----AATCAGGGTTCGATTCCGG-GAGGGAGCCT-AG---CGGCT-CCA--ATCC--GGAAGGC-GC-?-CGCGT-AATTACCC-AATCC------GGGGAGGT--TGACAATAAATAACAATA-TCGGGCATCCAATGTCTGATAATTGGAATG??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TGAAATTCTTGGATTTCGGAAAGACCTACCACTGCGAA?GCATTTGCCAAGGATGTTTTCATT?ATCAAGAA?GAAAGTAGGGGGCTCGAAGACGATTAGATACCG-TCGTAGTCTCTACCATAAACGATGCCGA-CCAGGGATTGGCAGGTGTTCCTTTGATGACCCTGCCAGCACCTTGA-GAGAAATCAGAGTCTTTGGGTTCCGGGGGGAGTATGG??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AGATT?AGAGCTCTTT?TTGATTCT-TGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTCGGCGGTCCTTTCTGGATCGCCTC-----GACTTCTTAGAGGGACTATTGACGTT-TAGTCAAT---GGAAG??????????????????????????????????????????????????????????????????????????????????????????-?????????????????????????????????????????????????????????????????????????GGAATGCCTAGTAAGCGTGAGTCATCAGCTCGCGTTGATTAC-GTCCCTGCCCTTTGTACWYWC-GCCCGTYGCTCCTACCGATTGGGTG-TGC--TGGTGAAGTGTTCGG--ATTGGCTTTGAGGGG-TGG-CAACTCCCCAG-AGCC---GAGAAGATCATTAAACCCTCCCACCTAGAG???????????????????????????????????????????????????????????TCGACCGACC?TAGAGCTTCTGCGAAAGGTTT?GAGTGCGAGCA?TA?ATGTTGGGACC????AGATGGTGAACTATGCCTGGGCAGGG?TGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGATGTGCTGACGTGCAAATCG?CTTTTCTGACCTGGGCATAGGGGCGAAAGACTAATCGAACCAT?CTAGTA???????????????????????????????CACCGCTC?GAAA?GCCCTGGAATCG?AT?ATTCGGAG??ATCGGGCTT?GCCGCTGGG?AAAGCCTCT?AGTTTTGA?GGTGTCCCGTGCGCC?GAT??AC??GATCCTT?A [2111]
+Stephanos_pl ???????????????????????????????????????????????????????????????????GCGAATGGCTCATTAAATCAGTTATAGTTTATTTGATGGTACCTT--TACTC---GGATAACCGTAGTAA-TTCTAG-GCTAATACGTGC-GTAAATCCCGACTTC--TGGAAGGGA-GTATTTATTAGATAAAAGGCCAGC-GAGGC-TTGCTCGACTCTT-GG-CGAATCATGATAACTTGACGAATCGCATGGCCTG-GTAACGGGTGA???????????????????????????????????????????????????????????????????????CGG-GGATTAGGGTTCGATTCCGG-GAGGGAGCCTGAGAAACGGCTACCA-CATCC-AGGAAGGCAGCAGGCGCGC--ATTACCC-AATCCGAA---GGGGAGGTAGTGA-AAT-AATAACAATACCGGGCATTT--ATGTCTGGTAATTGGA-TGAGTACAATGTAAATAT???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CTCGAAGACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCAGGTGTTTCGTTGATGACCCTGCCAGCACCTTAT-GAGAAATC--AGTTTTTGGGTTCC?GGGGGA??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CTCTTTCTTGATTCT-TGGGTGGT-GTGC-TGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTCACGGGACCTTGGTACACGCTT-------GACTT-TTAGAGGGACTATTGGCGTTACAGTCAAT---GGA???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GAATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCC-ACCGATTGGGTG-TGC--TGGTGAAGTGTTGGG--ATTGACTT--AGTGG-TGGGCA-CTCCA-TGTTGTT---GAGAACAACATTAAACCCTCCCACCTAGA--????????????????????????????????????????????????????GCACCATCGACCGACCATGAT?CTTCTGTGAAAGGTTT?GAGTGCGAGCA?TACCTGTTGGGACCC?AAAGATGGTGAACTATGCCTGAGCAAGG?TGAAGCCAGAGGAAACTCTGGTGGAGGCCT?GTAGATGTGCTGACGTGCAAATCG?CTTTTCTGACTTGGGTATAGGGGCGAA?GACTAATCGAACCAT????????????TGGGAAGAGTTCTCTTTTCT?TTT?AAC?AGC?CGGAAG?GCCCTGGAATCGAATC?TTCGGAG?AGTAGGGCCCAGCAGCTGGT?AAAGCACCGCACTTCTCGTGGTGTCCGGCGCGCT?AGT?CAC??GGTCCGTGA [2111]
+Carteria_rad ???????????????????????????????????????????????????????????????????GCGAATGGCTCATTAAATCAGTTATAGTTTATTTGATGGTAC-TTGGTACTC---GGATAACTGTACCAA-AG-TAGAGCTAATACGTGC-GTAAATCCCGACTCA--C-GAAGGGACGTATTTATTAGATAAAAGGCCAGC-CGGGC-T-TGCCCGACTTTT-GGCGACTCATGATAACTTCACGAATCGCATGGCCTG-GTAACGGGTGA???????????????????????????????????????????????????????????????????????CGGAGGATTAGGGTTCGATTCCGGAGA-GGAGCCTGAGAGATGGCTACCA-CATCCAAGGAAGGCAGCA-GCGCGC--ATTACCC-AATCCTAAC-CGGGGAGGTAGTGACAATAAATAACAATACTGGGCATTT--TTGTCTGGTAATTGGAATGAGTACAATCTAAATCC?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AA-A--GAAA-TTGG-GGCTCGAAGACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCAGGCGTTTTGTTAACGACCCTGC-AGCACCTTAT--AGAAATC--A-TTTTTGGGTTCCGGGGGGA??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????ACAGATTGAGAGCTCTTTCTTGATTCT-TGGGTGGT--TGCATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTCACGATTGCTTTTTGGCAGTCGGCA----GACTTCTTAGAGGGACTATTGTCG-TTTAGGCAG???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TCTT-AACGAGGAATGCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGAAGTGTTCGG--ATCGGA-GTCCTTGGCTGG-CAACAGTTGAGGTTTCT--GAGAAGTTCATTAAACCCTCCC?????????????????????????????????????????????????????????????GCACCATCGACCGACCATGA?GCTTCTGC?AAAGGTTT?GAGTGCG?GTG?T?ACT?TTGGGACCC???AGATGGTGAACTATGCCTGAGCAGGG?TGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGATGTGCTGACGTGCAAATCG?CTTTTCGGACTTGGGTATAGGGGCGAAAGACTAATCGAACCATG?T?C??G?CCCCAGGAAGAGTTCTCTTTTCTTTTTCAAC?A?C?C?GAAG?GCCCTGGAATCGAAT??TTCGGAG??ATAGGGCTCAGAGGCTGGT??AAGCACCGCACTT?TCGCGGTGTCTGGCGCGTC?GAC?GAC??GGTCCTT?A [2122]
+Gonium_pecto ??????????????????????????????????????????????????????????????????????????GCTCATTAAATCAG-TATAGTTTATTTGATGGTACC-TACTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGC-GCACAACCCGACTTC--TGGAAGGGTCGTATTTATTAGATAAAAGGCCAGC----GC-TTTGCCCGACT--GCGGTGAATCATGATAACTTCACGAATCGTATGGCCTG-GTAACGGGTGA???????????????????????????????????????????????????????????????????????CGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAGATGGCTACCA-CATC--AGGAAGGC----GGCGCGC--ATTACCC-AATCCGAC---GGGGAGGTAGTGACAATAAATAACAATACCGG--TC----GCGTCTGGTAATTGGA?TGAGT?CAATCTAAATCC??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GCTCGAAGACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCAGATGTTCCTTTGATGACTCTGCCAGCACCTTAT-GAGAAATCAAA-TTTTTGG-TTCCGGGGGGAGGA?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TGACAGATTGAGAGCTCTTTCTTGATTCTGTGGGTG-T--TGCATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTCAGCATCCTGCGGTGCGCA----------GACTT-TTAGAGGGACTATTGGCG-TTCAGCCAAT---GGA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????ACGGAATGCCTAGTAAGCGCGAGTCATCAGCTCG-GTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGAAGTGTTCGG--ATTGATC--GGCTGG---GGCAACTCGGCCTTGATT---GAAAAGTTCATTAAACCCTCCCAC???????????????????????????????????????????????????????????GCACCATCGACCGACCATGTTGCTTTTGCGAAAGGTT??GAGTGCGAGCA?TACCTGTTGGGACCC??AAGATGGTGAA?TATGCCTGAGCAAGA?TGAAGCCAGAGGAAACTCTGGTGGAGGTCTGGTAGATGTGCTGACGTGC?AATCG?CTTTTCTGACTTGGG?ATAGGGG????AGACT?ATCGAACCATGC??TC?GGCCCTGGG?AGAGTTCTCTTTTCT?TTT?AAC?A?CCC?GAAG?GC?CTGGAATCGAAT??TTCGGAG??ATAGGGCTCAGAGGTTGGT?AAAGCACCGCAGTTCTCGCGGTGTCCGGCGCGC??GTT?GA????GTCC??GA [2104]
+Chlorella_kess TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGCTTTA-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATTTGATGGTACCTTACTAC-C---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGC-GTAAATCCCGACTTC--TGGAAGGGACGTATTTATTAGATTTAAGGCCGAC-CCGGC-TCTGCCGGTCTC-GCGGTGAATCATGATAACTTCACGAATCGCATGGCCTT-GCGCCGGCGATGTTTCATTCAAATTTCTGCCCTATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGACGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACAGGGAGGTAGTGACAATAAATAACAATACCGGGCCTTTTCAGGTCTGGTAATTGGAATGAGTACAATCTAAACCCCTTAACGA-GGATCAATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGCTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGCGGGGCCTGCC-GGTCCGCCGTTTCGGTGTGCACTGGCAGGGC----CGCCTTGTTGCCGGGGACGGG--CTCCTGGGCTTCACTGTCCGGG-ACTCGGAGTC--GGCGCTGTTACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-CTACGCTCTGAATACATTAGCATGGAATAACACGATAGGACTCTGG-CCTATCCTGTTGGTCTGTAGGACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCGATGTCAGAGGTGAAATTCTTGGATTTTCGAAAGACGAACTACTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATTAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATCGGCGGATGTTTCTTCGATGACTCCGCCGGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTCAC--------------------------GACTTCTTAGAGGGACTATTGGCG-A-TAGCCAAT---GGAAGCATGAGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATGCAATCAACGAGCCTAG--CCTTGGCCGAGAGGCCCGGGTAATCTTTG-AAACTGCATCGTGATGGGGATAGATTATTGCAATTATTAATCTTCAACGAGGAATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGAAGTGTTCGG--ATTGGC???????????????????????????GC-C---AGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCG???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? [2099]
+Chlorella_vulg TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGCTTTA-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATTTGATGGTAC-TTACTACTC---GGATACCCGTAGTAA-ATCTAGAGCTAATACGTGC-GTAAATCCCGACTTC--TGGAAGGGACGTATTTATTAGATAAAAGGCCGAC-CGGGCTTCTGCCCGACTC-GCGGTGAATCATGATAACTTCACGAATCGCATGGCCTT-GTGCCGGCGATGTTTCATTCAAATTTCTGCCCTATCAACTTTTGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGACGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACAGGGAGGTAGTGACAATAAATAACAATACTGGGCCTTTTCAGGTCTGGTAATTGGAATGAGTACAATCTAAACCCCTTAACGA-GGATCAATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGCTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGACCTGCC-GGTCCGCCGTTTCGGTGTGCACTGGCAGGGC---TCACCTTGTTGCCGGGGACGGG--CTCCTGGGCTTCACTGTCCGGG-ACTCGGAGTC--GGCGCTGTTACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-CTACGCTCTGAATACATTAGCATGGAATAACACGATAGGACTCTGG-CCTATCCTGTTGGTCTGTAGGACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATTGTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTACTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATTAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATCGGCGGATGTTTCTTCGATGACTCCGCCGGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTCAC--------------------------GACTTCTTAGAGGGACTATTGGCG-A-TAGCCAAT---GGAAGCATGAGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATGCATTCAACGAGCCTAG--CCTTGGCCGAGAGGCCCGGGTAATCTTCG-AAACTGCATCGTGATGGGGATAGATTATTGCAATTATTAATCTTCAACGAGGAATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGAAGTGTTCGG--ATTGGC???????????????????????????GC-C--GAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCG???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? [2102]
+Protothec_wic TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAA--TGGTT-A-TACTATGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATTTGATGGTACC-TACTACTC---GGATACCCGTAGTAA-TTCTAGAGCTAATACGTGC-GCACATCCCGACTTC--TGGAAGGGACGTATTTATTAGATCCAAGGCCGAC-CGGGC-T-TGCCCGACTC-GCGGTGAATCATGATAACTTTACGAATCGCATGGCCTTTGTGCCGGCGATGTTTCATTCAAATTTCTGCCCTATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGACGGAGGATCAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACAGGGAGGTAGTGACAATAAATAACAATACCGGGCCT-CACAGGTCTGGTAATTGGAATGAGTACAACCTAAACACCTTAACGA-GGATCAATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGCTGCAGTTAAAAAGCTCGTAGTTGGATTTCGAGGTCGTCCTGCT-GGTCCGCCGTTTCGGTGTGCACTGGCGCGGC---GGTCTTTGTTGCTGGGGACGTG--CTCCTGGGCTTCACTGTCCGGG-ACTCGGAGTC--AGCGAGGTTACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-TACCGCTCTGAATACATTAGCATGGAATAACATGATAGGACTCTGG-CTTATCTTGTTGGTCTGTAAGACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATTGTCAGAGGTGAAATTCTTGGATTTATGAAAGAC?AACTACTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATTAGATACCG-TCCTAGTCTCAACCGTAAACGATGCCGA-CTAGGGATCGGCGGACGTTCTATCGATGACTCCGCCGGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTGCT--------------------------TACTTCTTAGAGGGACTATTGGCG-A-TAGCCAAT---GGAAGCTTGAGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATGCATGCAACGAGCCTAG--CCTTGGCCGAGAGGCCCGGGTAATCTCAT-AACCTGCATCGTGATGGGGATAGATTATTGCAATTATTAATCTTCAACGAGGAATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGAAGTGTTCGG--ATTGGC???????????????????????????GC-C--GAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCG???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? [2097]
+Chlorella_prot TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTGAGTATAACCTG-TTTACTACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATTTGATGGTACC-TGCTACTG---GGATACCCGTAGTAA-TTCTAGAGCTAATACCTGC-GCAAACCCCGACTTTGGTGGAAGGGGTGTATTTATTAGATCCAAGGCCGAC-CGGGC-TC-GCCCGACTC-GCGGTGACTCATGATAACTTTACGAATCGCATGGTCTCTGCACCGGCGATGTTTCATTCAAATTTCTGCCCTATCAACTTT-GTCGGTAGGATAGAGGCCTACCGAGGTGTTCACGGGTGACGGAGGATCAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACAGGGAGGTAGTGACAATAAATAACAATACCGGGCCT-CACAGGTCTGGTAATTGGAATGAGTACAATCTAAACCCCTTAACGA-GGATCAATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGCTGCAGTTAAAAAGCTCGTAGTCGAACTTCGGGGGGCCCGGGCC-GGTCCCCCCGCCCTCTGCGCACTGGCATGGCG--CCCCCCTGTTGCTGGGGACGGCG-CTCCTGGGCTTTGCTGTCCGGG-GCCCGGAGTC--AGCGAGGTTACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-ATCCGCTCTGAATACATTAGCATGGAATAACATGATAGGACTCTGG-CTTATCACGTTGGTCTGTAAGACCGGA-GTAATGATTGAGAGGGACAGTCGGGGGCATTCGTATTTCATTGTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTACTGCGAAAGCATTTGCCAAGGATGTTTTCATTGATCAAGAACGAAAGTTGGGGGCTCGAAGACGATTAGATACCG-TCCTAGTCTCAACCGTAAACGATGCCGA-CTCGGGATCGGTGGTCGTTCATTCAATGACACCACCGGCACCTCAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTTTT--------------------------AACTTCTTAGAGGGACTCTCGGCG-A-TAGCCGAG---GGAAGCTTGAGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACAATGATGCGGTCAACGAGCCCAG--CCTTGGCCGACAGGCCCGGGTAATCTCGC-AACCCGCATCGTGATGGGGATAGATCATTGCAATTATTGATCTTCAACGAGGAATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGAGTG-TGC--TGGTGAAGTGTTCGG--ATTGGC???????????????????????????GC-C--GAGAAGTTCATTAAACCCTCCCACTTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCG???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? [2103]
+Chlorella_min TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGCTTTA-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATTTGATGGTACC-TACTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGC-GCAAATCCCGACTTC--TGGAAGGGACGTATTTATTAGATATAAGGCCGAC-CGGGC-TCTGCCCGACTC-GCGGTGAATCATGATAACTTCACGAATCGCATGGCCTC-GTGCCGGCGATGTTTCATTCAAATTTCTGCCCTATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGACGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACAGGGAGGTAGTGACAATAAATAACAATACCGGGCCT-TTCAGGTCTGGTAATTGGAATGAGTACAATCTAAACCCCTTAACGA-GGATCAATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGCTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGGCACGTC-GGTCCGCCGTTTCGGTGTGCACTGGCGGGGC---CCACCTTGTTGCCGGGGACGGG--CTCCTGGGATTCA-TTTCCTGGGACTCGGAGTC--GGCGAGGTTACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-CTACGCTCTGAATACATTAGCATGGAATAACACGATAGGACTCTGG-CCTATCCTGTTGGTCTGTAGGACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATTGTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTACTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATTAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATCGGCGGGTGTTCTTTTGATGACCCCGCCGGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTCAC--------------------------GACTTCTTAGAGGGACTATTGGCG-A-TAGCCAGT---GGAAGCATGAGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATGCATTCAGCGAGCCTAG--CCTTGACCGAGAGGTCCGGGTAATCTTTG-AATCTGCATCGTGATGGGGATAGATTATTGCAATTATTAATCTTCAACGAGGAATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGAAGTGTTCGG--ATTGGC???????????????????????????GC-C--GAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCG???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? [2100]
+Neochloris_aqu TCATATGCTTGTCTCAAAGATTAACCCATGCATGTCTAAGTATAAACTGCTT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATTTGATGGTACC-TCCTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGC-GTAAAACCCGACTTC--TGGAAGGGTCGTATATATTAGATAAAAGACC-AG-CCGGAC-TTTGTCCGACCCGCGGTGACTCATGATATCTTCACGAATCGCATGGCCTT-GTGCACGGCATGTTTCATTCAAATTTCTGCCCTATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGACGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACGGGGAGGTAGTGACAATAAATAACAATACCGGGCACATC-GTGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAACGA-GTATCCATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGTTCTAGC-GGTCCGCC-TAT-GGTGAGTACTGCTATGGC---CTTCCTTTCTGCCGGGGACGGG--CTCCTGGGCTTAACTGTCCGGG-ACTCGGAGTC--GGCGTTGTTACTTTGAGTAAATTGGAGTGTTCAAAGCAAGC-CTGCGCTCTGAACATTTTAGCATGGAATAACACGATAGGACTCTGG-CCTATCCTGTTGGTCTGTAGGACCAGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATTGTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTACTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGGACGTTTCATTGATGACTCCGCCAGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTCAC--------------------------GACTTCTTAGAGGGACTATTGGCG-TTTAGTCAAT---GGAAGTATGAGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATGCGTTCAACAAGCCTAT--CCTTGACCGAGAGGTCCGGGTAATCTTTG-AAACCGCATCGTGATGGGGATAGATTATTGCAATTATTAGTCTTCAACGAGGAATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGAAGTGTTCGG--ATTGGCC??????????????????????????????--AAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCGTAG????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? [2099]
+Neochloris_vig TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGCTT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATTTGATGGTACC-TCCTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGC-GTAAAACCCGACTTC--TGGAAGGGTCGTATATATTAGATAAAAGACC-AG-CCGGAC-TTTG????GCCCGCGGTGACTCATGATATCTTCACGAATCGCATGGCCTT-GTG????CGATGTTTCATTCAAATTTCTGCCCTATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGACGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACGGGGAGGTAGTGACAATAAATAACAATACCGGGCACATC-GTGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAACGA-GTATCCATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGTTCTAGC-GGTCCGCC-TCT-GGTGAGTACTGCTATGGC---CTTCCTTTCTGCCGGGGACGG---CTCCTGGGCTTGACTGTCCGGG-ACTCGGAGTC--GGCGTTGTTACTTTGAGTAAATTGGAGTGTTCAAAGCAAGC-CTGCGCTCTGAACATTTTAGCATGGAATAACACGATAGGACTCTGG-CCTATCCTGTTGGTCTGTAGGACCAGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATTGTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTACTGCGAAAGCATTTGCCAAGGATGTTT-CATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATTAGATACCG-TCGTAGACTCAACCATAAACGATGCCGA-CTAGGGATTTGCGGACGTTTCATTGATGACTCCGCCAGCACCTTGT-GAGAAATCAAAGTTTTTGGGT--CGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGT???--------------------------GACTTCTTAGAGGGACTATTGGCG--TTAGTCAATT--GGAAGTATGAGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATGCGTTCAACAAGCCTAT--CCTTGACCGAGAG---CGGGTAATCTTTG-AAACCGCATCGTGATGGGGATAGATTATTGCAATTATTAGTCTTCAACGAGGAATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGAAGTGTTCGG--ATTGGC???????????????????????????GC-C--AACAAGT-CATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCG???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? [2090]
+Pediastrum_dup TCATATGCTTGTCTCAGAGATTAAGCCATGCATGTCTAAGTATAAACTGCTT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATTTGATGGTACCTT-CTACTC---GGATACCCGTAGTAA-TTCTAGAGCTAATACGTGC-GTAAAACCCGACTTC--TGGAAGGGTCGTATATATTAGATAAAAGGCCGAGCCG??C-TTTGTCCGACCC-GCGGTGAATCATGATATCTTCACGAATCGCATGGCCTT-GCGCCGGCGATGTTTCATTCAAATTTCTGCCCTATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGACGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGATACGGGGAGGTAGTGACAATAAATAACAATACTGGGCACTTC-GTGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAACGA-GTATCCATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGTTCTAGC-GGTCCGCC-TAT-GGTGAGTACTGCTACGGC---CTCCCTTTCTGCCGGGGACGAG--TTGCTGGGCTTCACTGTCCGGT-GCTTGGAGTC--GGCGTTGTTACTTTGAGTAAATTAGAGTGTTCAAAGCAACG-ATACGCCCTGAATACTTTAGCATGGAATAACACGATAGGACTCTGG-CCTATCTTGTTGGTCTGTAGGACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATTGTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTACTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGGATGTTTTTTTGATGACTCCGCCAGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATAGGCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTCAC--------------------------GACTTCTTAGAGGGACTATTGGCG-TTTAGTCAAT---GGAAGTATGAGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGGGCCGCACGTGCGCTACACTGATGCATTCAACGAGCCTAT--CCTTGACCGAGAGGTCCGGGTAATCTTTG-AAACTGCATCGTGATGGGGATAGATTATTGCAATTATTAGTCTTCAACGAGGAATGCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGAAGTGTTCGG--ATTGGCC??????????????????????????????--GAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCGTAG????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? [2101]
+Scenedesm_obl TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGCTT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATTTGGTGGTACCTTACTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGC-GTAAATCCCGACTTC--TGGAAGGGACGTATATATTAGATAAAAGGCCGAC-CGAGC-TTTGCTCGACCC-GCGGTGAATCATGATATCTTCACGAAGCGCATGGCCTT-GTGCCGGCGCTGTTCCATTCAAATTTCTGCCCTATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGACGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGATACGGGGAGGTAGTGACAATAAATAACAATACCGGGCATTTT-ATGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAACGA-GGATCCATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGTTCTAGC-GGTCCGCC-TAT-GGTGAGTACTGCTATGGC---CTTCCTTTCTGTCGGGGACGGG--CTTCTGGGCTTCACTGTCCGGG-ACTCGGAGTC--GACGTGGTTACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-TTACGCCA-GAATACTTTAGCATGGAATAACACGATAGGACTCTGG-CCTATCTTGTTGGTCTGTAGGACCGGA-GTAATGATTAAGAG?GACAGTCGGGGGCATTCGTATTTCATTGTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTACTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGAATGTTTTTTTAATGACTTCGCCAGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTCTC--------------------------GACTTCTTAGAGGGACTATTGGCG--TTAGTCAAT---GGAAGTATGAGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATGCATTCAACAAGCCTAT--CCTTGACCGAAGGGTCTGGGTAATCTTTG-AAACTGCATCGTGATGGGGATAGATTATTGCAATTATTAGTCTTCAACGAGGAATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGAAGTGTTCGG--ATTGGC???????????????????????????GC-C--GAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCG???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? [2097]
+Characium_hin TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGCTT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATTTGATGGTACCTT-CTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGC-GTAAAACCCGACTTC--TGGAAGGGTCGTATATATTAGATAAAAGGCCGAC-CGGGC-TTGCCCGACCC--GCGGTGAATCATGATATCTTCACGAATCGCATAGCCTT-GTGCTAGCGA-GTTTCATTCAAATTTCTGCCCTATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGACGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACGGGGAGGTAGTGACAATAAATAACAATACCGGGCACATC-GTGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAACGA-GTATCAATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGTTCTAGC-GGTCCGCC-TAT-GGTGAGTACTGCTATGGC---CTTCCTTTCTGCCGGGGACGGG--CTCCTGGGATTAACTTATCGGG-ACTCGGAGTC--GGCGTTGTTACTTTGAGTAAATTAGAGTGTTCAAAGCAAGC-CTGCGCTCTGAATACTTTAGCATGGAATAACACGATAGGACTCTGG-CCTATCTTGTTGGTCTGTAGGACCAGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATTGTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTACTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGAACGTTTCATTGATGACTTCGCCAGAACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTCCG--------------------------GACTTCTTAGAGGGACTATTGACG-TTTAGTCAAT---GGAAGTATGAGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATGCATTCAACGAGCCTAT--CCTTGGCCGAGAGGTCCGGGTAATCTTTG-AAACTGCATCGTGATGGGGCTAGACTTTTGCAATTATTAGTCTTCAACGAGGAATGCCTAGTAAGCGCGATTCATCAGATCGCGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGAAGTGTTCGG--ATTGGCC??????????????????????????????--AAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCGTAG????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? [2097]
+Chlorella_fus TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGCTT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATTTGGTGGTACCTTACTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGC-GTAAATCCCGACTTC--TGGAAGGGACGTATATATTAGATAAAAGGCCGAC-CGGGC-TT?GCCCGACCC-GCGGTGAATCATGATATCTTCACGAAGCGCATGGCCTT-GCGCCGGCGCTGTTCCATTCAAATTTCTGCCCTATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGACGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGATACGGGGAGGTAGTGACAATAAATAACAATACCGGGCATTTC-ATGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAACGA-GGATCCATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGTTCTAGC-GGTCCGCC-TAT-GGTGAGTACTGCTATGGC---CTTCCTTTCTGTCGGGGACGGG--CTTCTGGGCTTAATTGTCCGGG-ACTCGGAGTC--GACGTGGTTACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-TTACGCCCTGAATACTTTAGCATGGAATAACACGATAGGACTCTGG-CCTATCTTGTTGGTCTGTAGGACTGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATTGTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTACTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGAATGTTTTTTTAATGACTTCGCCAGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTCCT--------------------------GACTTCTTAGAGGGACTATTGGCG--TTAGTCAAT---GGAAGTATGAGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATGCATTCAACAAGCCTAT--CCTTGACCGAAAGGTCCGGGTAATCTTTG-AAACTGCATCGTGATGGGGATAGATTATTGCAATTATTAGTCTTCAACGAGGAATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGAAGTGTTCGG--ATTGGC???????????????????????????GC-C--GAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAGGTCTCCG???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? [2098]
+Ankistrodesmus TCATATGCTTRTCTCAAAGATTAAGCCATGCATGTC?AAGTATAAACTGCTT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATTTGATGGTACC--TCTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGC-GCAAATCCCGACTTC--TGGAAGGGACGTATTTATTAGATAAAAGGCCGAC-CGGGC-TCTGCCCGACCC-GCGGTGAATCATGATAACTTCACGAATCGCATAGCCTC-GTGCTGGCGATGTTTCATTCAAATTTCTGCCCTATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGACGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGATACGGGGAGGTAGTGACAATAAATAACAATACCGGGCWTTCA-ATGTCTGGTAATTGGAATGAGTACAATTTAAATCCCTTAACGA-GGATCCATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTAGGTTCCATC-GGTCCGCC-TAT-GGTGAGTACTGCTGTGGC---CTTCCTTTTTGCCGGGGACGGT--CTCCTGGGCTTCACTGTCCGGG-AATCGGAGTC--GGCGATGATACTTTGAGTAAATTAGAGTGTTCAAAGCAAGC-CTACGCTCTGAATACTTTAGCATGGAATATCGCGATAGGACTCTGG-CCTATCTCGTTGGTCTGTAGGACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATTGTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTACTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGAGGATGTTCTTTTGATGACTTCTCCAGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTCAC--------------------------GACTTCTTAGAGGGACTGTTGGCG--TTAGCCAAC---GGAAGTATGAGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCAC-CGCGCTACACTGACGCATTCAACGAGCCTAT--CCTTGACCGAGAGGTCTGGGTAATCTGTG-AAACTGCGTCGTGATGGGGATAGATTATTGCAATTATTAGTCTTCAACGAGGAATGCCTAGTAGGCGCGATTCATCAGATCGCGCCGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGAAGTGTTCGG--ATTGGC???????????????????????????GC-C--GAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCG???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? [2095]
+Pseudotreb_gig ??????????????????????????????????????????????????????????????????????????????????????????????????TTTGATGGTGCCTTACT-CTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGC-GCACATCCCGACTCC----GAAGGGA-G--TTTATTAGATAAAAGGC-GAG-CCGGG-GC--CCCGAGAC-GCGGTGAATCA-GATAAC--CACGAATCG--TAGCCTT-GTGCCGC???????????????????????????????????????????????????????????????????????????????GGATTAGGGTTCG?TTCCGGAGAGGGAGCCTGAG---CGGCT-CCA-CATC---GGAAGGCAGC--GCGC-C--ATTACCC-AATCCTG-T-CAGGGAGGTA-TGACAATAAATAACAATACCGGGCTTTTTCAAGTCTGGTAATTGGAT????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CATTGTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTTCTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATC--GAA-GAAAGTTGGGGGCTCGAAGACGATTAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGGGTGTTCTTTCGATGACCCCGCCAGCACCTTAT-GAGAAATC--AGTTTTTGGGTTCCGGGGGGAGTATGG????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GCCGTTCTTAGTTGGTGGG-TGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTCACGGCTGCTTTYCAGTCGGCA-------GACTT-TTAGAGGGACTTTTGGCG-ACTAGCCAAA---GGAAGTGTG??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CCTAGTAAGCG--AGTCATCAGCTCGCGTTGATTAC-GTCCCTGCCCTTTGTACACAC-GCCCGTCGCTCCTACCGATTGGGTG-TGC--T-GTGAAGCGTTCGG--ATTGCGTTAGTCGGGTTTTCCGCCTCCTCTCACT-----GAGAAGTTCGTTAAACCCTCCCACCT-GAG-A??????????????????????????????????????????????????????????????????????????????????????????????????????????????GGG?CCC????GATGGTG??CTATG?CTGAGC??GG?C?AAGCCAGAGGAAACTCTGGTG?AGGCTC?G?AGATGTGCTGACGTGC??ATCG?CTTTTCGGACTTGGG??TA??GGCG??AGACTAATCGAACCAT??????????????GG?AGAGTTCTCTTTTCT?TTT??AC?AGCT??GAAG?GCCCTGGAATCGGCT?ATCCGGAG??A?AGGGCCCA?AAGCTGGT??AAGCACTGCACTTCTCGGCAGTGTCCGGAGCCC?ACC?GAC??GGCCC?TGA [2098]
+Pleurastr_terr ????????????????????????????????????????????????????????????????????????????????????TCAGTTATAGTTTATTTGATGGTACACTACTACTC---GGATAACCGTAGTAA-TTCTAGGGCTAATACGTGC-GTAAATCCCGACTTC--TGGAAGGGACGTATTTATTAGATAAAAGGCCGAC-CGGACTC-G-TCCGACCC-GCGGTGAA-CCTGATAACTTCACGAATCGCATGGCCTT-GC-CC???????????????????????????????????????????????????????????????????????????????????ATTAGGGTTCGATTCCGG-GAGGGAGCCTGAG---CGGCTACCA-CATCCA-GGAAGGCAGC--GCGCGC--ATTACCC-AATCCTGA---GGGGAGGTAGTGACAATAAATAACAATACCGGGCATTTA-ATGTCTGGTAATTGGAATG???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GAAAGTT-GGGGCTC-AAGWCGATT-GATACCG-T--TAGWCTCAAY--TA-WCGATGCC-A--TAGG-ATTGTGCCGATGTTTATTCAATTACTCCGCCACACCTYAT-GA-AAATC-AAGWWTTT---TTCC??GGGGAGTATG????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TGGTGCATGGCCGTTCTTAGTTGGT?GGTTGCCTTGTCAGGTT-GATTCCGGTAACGAAGGAGACCTCAGCCTGCTAAATAGTC-CTAATCTTCTCGCGGTTAGCT------GACTT?TTAGAGGGACTATTGGCG-TTT-GTCAAT---GGAA-TAT??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GTCTTCAACGAGGAATGCCTAGTAAGCG--AGTCATCAGCTCGCGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGAAAAGTTTGG--ACTGGCGGTAGGCGGGTGGTTCGCCATCTGCTGCTGCC-GGGAAATTCTTTAAACCCTCCCACCTAGAG-AA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GGCC?TGGG?AGAGTTCTCTTTTCT?TTT??AC?AGC?C?GAAG?GCCCTGGAATCGAATC??TCGGAG??A?AGGGCTCAGAAGCTGGT?AAAG??C?GCA?GTCT?GCGGT?GTC?GCGCGC??GAT??AC??GGTCC?TGA [2107]
+Characium_per TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGCTT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATTTGATGGTACC-TACTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGC-GTAAATCCCGACTTC--TGGAAGGGACGTATTTATTAGATAAAAGGCCGAC-CGGGC-T-TGCCCGACTC-GCGGTGAATCATGATAACTTCACGAATCGCACAGCCTT-GTGCTGGCGATGTTTCATTCAAATTTCTGCCCTATCAACTTTCGATGGTAACGTAGTGGGTTACCATGGTGGTAACGGGTGACGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATACTGACACAGTGAGGTAGTGACAAAAAATATCGATGGTGGGCTCTTTCGAGTTTGCCAATTGGAATGAGTACAATCTAAATCCCTTAACGA-GGATCAATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGCGGAGCC-GATCTGCCCTTTGGGTATGCATTGGCTTTGC---CTATCTTGCTGCCGGGGA-GGCG-CTCCTGGGCTTCATTGCTCGGG-ACGTTTAGTC--GGCGAGGTTACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-CTACGCTTTGCATACATCAGCATGGAATATCACGAGAGGACTCTGG-CCTATCTTGTTGGTCTGTGGGACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATTGTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTTCTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATTAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGGACGTTCATTCGATGACTCCGCCAGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTC-C--------------------------GACTTCTTAGAGGGACTTTCGGCG-TTTAGCCGAA---GGAAGTGTGAGGCGATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGACGCATTCAACGAGTCTAT--CCTTGGCCGAGAGGTCCGGGTAATCTGAG-AAACTGCGTCGTGACGGGGCTAGATTATTGCAATTATTAATCTTCAACGAGGAATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGAAGTGTTCGG--ATCGGCT??????????????????????????????--GAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCGTAG????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? [2100]
+Parietochl_pse TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGCTT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATTTGATGGTACC-TACTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGC-GCACATCCCGACTTC--TGGAAGGGACGTATTTATTAGATTAAAGGCCGAC-CGGGC-TCTGCCCGACTC-GCGGTGACTCATGATAACTTCACGAATCGCAT-GCCTTCGTGCCGGCGATGTTTCATTCAAATTTCTGCCCTATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGACGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACAGGGAGGTAGTGACAATAAATAACTATGCTTGGCTC-TTCGAGTCGGGCAATAGGAATGAGTACAATCTAAATCCCTTAACGA-GGATCAATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGTCGCGCC-GGTCCGCCGTTTCGGTGTGCACTGGCGTGGC---CCACCTTGCTGCCGGGGACGGG--CTCCTGGGCTTCACTGTCCGGG-ACTCGGAGTC--GGCGAGGTTACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-CTACGCTCTGAATACATTAGCATGGAATAACACGATAGGACTCTGG-CCTATCTTGTTGGTCTGTGGGACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATTGTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTACTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATTAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGGATGTTTTATCGATGACTCCGCCAGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAAAGGGCAGCCACCAGGCGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGAAAACTTACCAGGTCCAGACATGTGAAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTTCGATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTCAC--------------------------GACTTCTTAGAGGGACTCTCGGCG-ACTAGCCGAT---GGAAGTGTGAGGCGATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATGCATTCAACGAGCCTAG--CCTTGGCCGACAGGCCCGGGTAATCTTGC-AAACTGCATCGTGATGGGGCTAGATTATTGCAATTATTAATCTTCAACGAGGAATGCCTAGTAAGGCCGAGTCATCAGCTCGCGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGAAGTGTTCGG--ATTGGCC??????????????????????????????--GAGAAGTTCATTAAACCCTCCCACCTAGAGTAAGCAGAAGTCGTAACAAGGTTTCCGTAG????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? [2104]
+Friedmannia_is TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGCTTTA-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATTTGATGGTACC--CTTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGC-GTAAACCCCGACTTC--TGGAAGGGGCGTATTTATTAGATAAAAGGCCGAC-CGGGC-TTTGCCCGACTC-GCGGTGAATCATGATAACTTCACGAATCGCATGGCCTT-GTGCCGGCGATGTTTCATTCAAATTTCTGCCCTATCAACTTTCGATGGTTGGATAGAGGCCAACCATGGTGGTAACGGGTGACGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAGACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACAGGGAGGTAGTGACAATAAATAACAATACCGGGCTTTTTCAAGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAACGA-GGATCAATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGCGCTACC-GGTCCGCCGATTCGGTGTGCACTGGTCGCGC---CCATCTTGCTGCCGGGGACAGG--CTGCTGGGCTTAACTGTCTGGC-ACCTGGAGTC--GGCGAGGTTACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-CTACGCTCTGAATACATTAGCATGGAATAACACGATAGGACTCTGG-CCTATCTCGTTGGTCTGTGGGACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATTGTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTTCTGCGAAAACGTTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATTAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGGGTGTTCTATCGATGACCCCGCCAGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTCAC--------------------------GACTTCTTAGAGGGACTTTTGGCGCCTTAGCCAAA---GGAAGTGTGAGGCGATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATGCAATCAACGAGCCTAT--CCTTGACCGACAGGTCCGGGTAATCTTTG-AAACTGCATCGTGATGGGGATAGATTATTGCAATTATTAATCTTCAACGAGGAATGCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGGATG-TGC--TGGTGAAGTGTTCGG--ATTGGCC??????????????????????????????--GAGAAGTTCTCTAAACCCTCCCATCTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCGTAG????????????????????????????????????????????????????????????????????????????????????????????AGATGGTG??CTATGCCTGAGC??GG?CGAAGC?AGAGGA???TCTGGTGGAGGCTC?G?AGATGTGCTGACGTGC?AATCG?CTTTTC?GACTTGG???TAGGGGCGAAAGACTCATC?AACCAT??????????????GG?AGAGTTCTCTTTTCTTCTT?AACAA?CCC?GAAG?G?CCTGGAATCGGCTCATCCGGAG??ATAGGGCTC?GAGGTT?GT?AAAGCACTGCACT????GCAGT?TCCGGAGCGCC?ATT?GAG?CGGCCCTTGA [2103]
+;
+END;
+
+
+BEGIN CODONS;
+GENCODE UNIVNUC
+;
+END;
+
+BEGIN ASSUMPTIONS;
+ OPTIONS DEFTYPE=unord PolyTcount=MINSTEPS ;
+
+ EXSET gaps+unalignsites = 50-55 110-122 171-176 214-220 228-232 267-280 482-489 657-663 676-690 699-713 729-731 737-743 782-785 1362-1391 1416-1429 1691-1695 1709-1755;
+ EXSET LSU = 50-55 110-122 171-176 214-220 228-232 267-280 482-489 657-663 676-690 699-713 729-731 737-743 782-785 1362-1391 1416-1429 1691-1695 1709-1755 1834-2179;
+ EXSET SSU = 1-1833;
+
+
+ TAXSET landplants=3-14 17 18;
+ TAXSET chlorophytes_s.l.=19-61;
+ TAXSET LSU_only=3-4 7-10 12-33 39-44 57 58 61;
+END;
+
+
+
+BEGIN MACCLADE;
+v 3.0
+-1322665249
+1000&/0
+0
+0
+END;
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/GPMolecular.nex
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/GPMorph.nex
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/GPMorph.nex 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/GPMorph.nex 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,337 @@
+#NEXUS
+[MacClade 3.01 registered to Equator, UCMP]
+
+BEGIN DATA;
+DIMENSIONS NTAX=60 NCHAR=110;
+FORMAT MISSING=? GAP=- SYMBOLS= " a b c d e f g h i j k l m n o p q r s t u v w x y z";
+OPTIONS MSTAXA=UNCERTAIN ;
+
+CHARLABELS
+ [1] habitat [2] life_history [3] attached_to_substrate? [4] radial_symmetry [5] growth_form
+ [6] veg._cells_contiguous [7] multinucleate_veg._cells [8] coenocytic [9] distromatic_foliar_thalli [10] plasmodesmata
+ [11] parenchyma [12] filaments [13] filaments_with_acuminate_tips [14] 'cells_spindle-shaped' [15] zoospores
+ [16] 'autospores/colonies' [17] vegetative_cell_w._flagella [18] gamete_production [19] 'multiple_sporulation/fission' [20] type_of_sex
+ [21] chloroplast_shape [22] pyrenoids [23] thylakoid_membranes_trav._pyr. [24] number_of_flagellae [25] ret._of_flagella_during_div.
+ [26] angle_of_basal_bodies [27] flagellar_beat [28] basal_bodies_distant_in_devel. [29] flagellae_extend_to_right [30] flag._app._with_180_deg._sym.
+ [31] absolute_orientation [32] BB_overlap_in_mot._cells [33] BB_core_connection [34] mitotic_spindle_type [35] mitotic_spindle_closed
+ [36] spindle_collapsing_at_telophase [37] cupping_microtubules [38] microtub._in_plane_of_cell_div. [39] phragmoplast [40] cell_plate_in_cytokinesis
+ [41] centrioles_bet._daughter_nucleu [42] lactate_fermentation [43] Chaeto._autolysin_lyses_sporang [44] hydrogenase [45] secondary_carotenoids
+ [46] siphonoxanthin [47] gelatin_liquifaction [48] photosyst._II [49] dormant_zygote_produced [50] sporulation
+ [51] 'Zellteilung[_vs._sporulation]' [52] common_matrix [53] papillae_on_veg._cells [54] crystalline_cell_wall [55] stigma
+ [56] #_of_contractile_vacuoles [57] apical_insertion_of_flagella [58] zoosporangia_abscise [59] zoosporangia_operculate [60] zoosporangial_exit_plug
+ [61] keeled_flagella [62] urea_amidolyase [63] terminal_cap [64] prominent_proximal_sheath [65] 'organic_scales/covering'
+ [66] transverse_septum [67] proximal_septum [68] SMAC [69] diaphasis [70] distal_fiber_in_motile_cell
+ [71] specialized_zoosporangia [72] MLS_present [73] glycollate_oxidase [74] oogonium_assoc._w._sterile_cell [75] eggs_retained_in_oogonium
+ [76] apical_cell_growth [77] flavonoids [78] zygote_retained [79] placental_transfer_cells [80] true_antheridia
+ [81] archegonia [82] embryo [83] cuticle [84] monoterpenes [85] lunularic_acid
+ [86] elaters [87] oil_bodies [88] 'D-Methionine' [89] stomata [90] vertical_division_of_zygote
+ [91] pseudoelaters [92] xylem [93] phloem [94] perine_on_spores [95] aerial_sporophyte_axis
+ [96] columella_in_sporangium [97] multicellular_rhizoids [98] leaves_on_gametophyte [99] articulated_peristome [100] independent_sporophyte
+ [101] branched_sporophyte [102] orn._tracheid_walls [103] true_lignin [104] megaphylls [105] trichomes
+ [106] vascular_cambium [107] eustele [108] seeds [109] axillary_branching [110] flowers
+ ;
+STATELABELS
+ 1 freshwater brackish_or_marine terrestrial,
+ 2 haplontic diplontic isomorphic_alt. heteromorphic_alt.,
+ 3 no yes,
+ 4 no yes,
+ 5 unicell._or_coccoid multicellular coenobic,
+ 6 no yes,
+ 7 no yes,
+ 8 no yes,
+ 9 absent present,
+ 10 absent present,
+ 11 absent present,
+ 12 no 'yes,_unbranched' 'yes,_branched' 'yes,multi-axial',
+ 13 no yes,
+ 14 no yes,
+ 15 absent present 'present,flattened',
+ 16 no yes,
+ 17 no yes,
+ 18 holocarpic heterocarpic,
+ 19 no yes,
+ 20 isogamy anisogamy oogamy,
+ 21 cup reticulated lateral_cup 'H-shaped' 'bi-polar' sets_of_comp.rings incomp._rings multiple_disks spiral stellate plate axile,
+ 22 absent present,
+ 23 no yes,
+ 24 2 4 1 4+ 0,
+ 25 no yes,
+ 26 angled perpendicular parallel,
+ 27 'trailing-undulating' breast_stroke,
+ 28 no yes,
+ 29 no yes,
+ 30 no yes,
+ 31 CCW CW DO,
+ 32 absent present,
+ 33 absent present,
+ 34 metacentri centric,
+ 35 absent present,
+ 36 absent present,
+ 37 no yes,
+ 38 absent present,
+ 39 no yes,
+ 40 no yes,
+ 41 no yes,
+ 42 absent present,
+ 43 no yes,
+ 44 no yes,
+ 45 no yes,
+ 46 absent present,
+ 47 no yes,
+ 48 low_molec._wt. high_molec._wt.,
+ 49 no yes,
+ 50 absent present,
+ 51 no yes,
+ 52 no yes,
+ 53 no yes,
+ 54 no yes,
+ 55 no yes,
+ 56 2 2+ 1 absent,
+ 57 no yes,
+ 58 no yes,
+ 59 no yes,
+ 60 no yes,
+ 61 no yes,
+ 62 no yes,
+ 63 absent bilobed 'plate-like',
+ 64 no yes,
+ 65 no yes,
+ 66 absent present,
+ 67 absent present,
+ 68 absent present,
+ 69 absent present,
+ 70 absent present,
+ 71 absent present,
+ 72 no yes,
+ 73 no yes,
+ 74 no yes,
+ 75 no yes,
+ 76 no yes,
+ 77 no yes,
+ 78 no yes,
+ 79 no yes,
+ 80 no yes,
+ 81 no yes,
+ 82 no yes,
+ 83 no yes,
+ 84 no yes,
+ 85 no yes,
+ 86 no yes,
+ 87 no yes,
+ 88 no yes,
+ 89 no yes,
+ 90 no yes,
+ 91 no yes,
+ 92 no yes,
+ 93 no yes,
+ 94 no yes,
+ 95 no yes,
+ 96 no yes,
+ 97 no yes,
+ 98 no yes,
+ 99 no yes,
+ 100 no yes,
+ 101 no yes,
+ 102 no yes,
+ 103 no yes,
+ 104 no yes,
+ 105 no yes,
+ 106 no yes,
+ 107 no yes,
+ 108 no yes,
+ 109 no yes,
+ 110 no yes,
+;
+
+MATRIX
+Glycine_max cdbabbaaabbaaaaaabacha??a????a??abaaaabba????a??babaa??daaaaa?aaa??aaaa?bbbbbbb??bb?aaabbaabbbbaaaabbbbbbbbbbb
+Oryza_sativa cdbabbaaabbaaaaaabacha??a????a??abaaaabba????a??babaa??daaaaa?aaa??aaaa?bbbbbbb??bb?aaabbaabbbbaaaabbbbbbbbbbb
+Zamia_pumila cdbabbaaabbaaaaaabacha??a????a??abaaaabba????a??babaa?adaaaaa?aaaaaaaaabbbbbbbbbbbb?aaabbaabbbbaaaabbbbbbbbbaa
+Psilotum cdbabbaaabbaaaaaabacha??a????a??abaaaabba????a??babaa??daaaaa?aaa??aaaabbbbbbbbbbbb?aaabbaabbbbaaaabbbbbaaaaaa
+Equisetum_arvense cdbabbaaabbaaaaaabacha??a????a??abaaaabba????a??babaa?adaaaaa?aaaaaaaaabbbbbbbbbbbb?aaabbaabbbbaaaabbbbaaaaaaa
+Atrichum cdbabbaaabbaaaaaabacha??a?a?ba??abaaaabba????a??babaaa?daaaaa?aaaaaaaaabbbbbabbbbbb?aaabbaabbbbbbbaaaaaaaaaaaa
+Fissidens_taxifolius cdbabbaaabbaaaaaabacha??aaa?ba?babaaaabba????a??babaaaadaaaaa?aaaaaaaaabbbbbbbbbbbbaaaabbaabbbbbbbbaaaaaaaaaaa
+Plagiomnium_cuspidatum cdbabbaaabbaaaaaabacha??aaa?ba?babaaaabba????a??babaaaadaaaaa?aaaaaaaaabbbbbbbbbbbbaaaabbaabbbbbbbbaaaaaaaaaaa
+Notothylas_breutellii cdbabbaaabbaaaaaabachb??aaa?ba?babaaaabba????a??babaaaadaaaaa?aaaaaaaaabbbbbabbbbbbaaaabbbbaaaabaaaaaaaaaaaaaa
+Phaeoceros_laevis cdbabbaaabbaaaaaabachb??aaa?ba?babaaaabba????a??babaaaadaaaaa?aaaaaaaaabbbbbabbbbbbaaaabbbbaaaabaaaaaaaaaaaaaa
+Porella_pinnata cdbabbaaabbaaaaaabacha??aaa?ba?babaaaabba????a??babaaaadaaaaa?aaaaaaaaabbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaa
+Conocephalum_conicum cdbabbaaabbaaaaaabacha??aaa?ba?babaaaabba????a??babaaaadaaaaa?aaaaaaaaabbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaa
+Asterella_tenella cdbabbaaabbaaaaaabacha??aaa?ba?babaaaabba????a??babaaaadaaaaa?aaaaaaaaabbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaa
+Riccia cdbabbaaabbaaaaaabacha??aa??ba?babaaaabba????a??babaaaadaaaaa?aaaaaaaaabbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaa
+Coleochaete_nitellarum aababbaaabbbaabaabacbbaaaaaabaababaaaabba????a??bbbaaaa?aaaaa?aabaaaaaabbbbaabbaaaaaaaa?aaaaaaaaaaaaaaaaaaaaaa
+Klebsormidium_flaccidum aaaab?aaababaabaaaaabbaaaaaabaababaaaaaba????a??bbbaaaa?aa?aaaaaaaaaaaa?baaaaaaaaaaaaaa?aaaaaaaaaaaaaaaaaaaaaa
+Micromonas_pusila b?aaaaaaaaaaaabab?a?abacb?aaa???abbaaaaa?????a???baaaaadaaaaa?aaabbaaaa?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Mantoniella_squamata b?aaaaaaaaaaaabab?a?abacbaaaaaababbaaaaa?????a?b?baaaabdaaaaa?aabbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Nephroselmis_pyriformis b?aaaaaaaaaaaabab?a?abaababaab?babbaaaaa?????a???baaaaacbaaaa?aabbabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Pedinomonas_minutissima b?aaaaaaaaaaaabab?a?abacb?a?ab??abbaaaaa?????a???baaaabcaaaaa?aaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Tetraselmis_carteriiformis b?aaaaaaaaaaaabab?a?ababbcbbabaaaabbbbaaa????a???baaaababaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Enteromorpha_intestinalis bcbabbaabaaaaabaaabbgbababbaabababbaaaaaa????a?aabbaba??baaaaabbabababaa?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Ulva_fasciata bcbabbaabaaaaabaaabbgbababbaabababbaaaaaa??b?a?aabbaba??baaaaabbabababaa?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Ulothrix_zonata adbabbaaaaabaabaaabagbababbaabababbaaaaaa?a??a?aabbabababaaaa?abbbababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Cymopolia_barbata bbbbbbbbaaadaaaaabbbhba?a?ba?b??abbaaaaaa???????abaaaa?dbabaa?aaa???b?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Batophora_oerstedtii bbbbbbaaa?acaabaabbahb??abba?bababbaaaaaa???????abaaaabdbabaa?a?aaabbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Codium_decorticatum bbbabbbbaaadaaaaabbbhbaeabbaabababbaaaaaa????b?babaaaa?dbaaaa?aaa???a?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Cladophoropsis_membranosa bcbabbbaaaacaabaabba?bababbaab??abbaaaaaa????a?aabbaaa??baaba?a?a???a?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Blastophysa_rhizopus bcbabbbaabacaabaabba?bababbaabababbaaaaaa????b?babbaaa?dba?ba?aaaaa?ab?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Trentepohlia_sp. ccbabbaaabacaabaabbaba?babbaabababbaaa?a?????a??abbaaaa?bbaab?a???aaa?bb?aabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Cephaleuros_parasiticus ccbabbaaabacaabaabbaba?babbaabababbaaa?a?????a??abbaaaa?bbaab?a??aaaa?bb?aabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Characium_vacuolatum aabaaaaaaaaaabbaaaba?bbaa?baabbaabbbabaa?????a??abaaab??baaaa?aaaba?abaa?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Dunaliella_parva baaaaaaaaaaaaababaaaabbab?b?abbaa?????aa?????a???baaaa?dbaaaa?aaa???abaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Chlamydomonas_reinhardtii aaaaaaaaaaaaaabababaabbaaabaabbaabbbabaab??b?a?abbaaabbabaaaabaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Volvox_carteri aaaacaaaaaaaaaabbbbc?b?a???babbaabbba?aa?????a???babab??baaaa?aaa???abaa?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Chlorococcopsis_min aaaaaaaaaaaaaabaaaba?bbaa?baabbaabbbabaa?????a??abaaab??baaaa?aaabaaabaa?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Draparnaldia_plumosa aababbaaabacbabaaabagbababbaabbaabbbababa?b??a??bbbabababaaaabaaabababaa?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Uronema_belkae aababbaaababbabaaabagbababbaabbaabbbababa?b??a??bbbabababaaaa?aaabababaa?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Chlamydomonas_moewusii aaaaaaaaaaaaaabababaab?aaab?abbaa?????aa?????a??bbaabbbabaaaa?aaa???abaa?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Stephanosphaera_pluvialis aaaacaaaaaaaaaabbabacbbababbabbaabbbabaa?????a??bbabbbbbbaaaa?aaa??babaa?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Carteria_radiosa aaaaaaaaaaaaaabababaabbbaabaabbaa?????aa?????a??bbaabbbabaaaa?aaaba?abaa?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Gonium_pectorale aaaacaaaaaaaaaabbabaabba?cbbabbaabbbabaa?????a??bbababbabaaaa?aaabababaa?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Chlorella_kessleri aaaaaaaaaaaaaaaba?b??b??a???????????abaa?a?baaa??baaa??d?aaa????a???a?a??aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Chlorella_vulgaris aaaaaaaaaaaaaaaba?b?ab??a???????????abaa?b?aaaa??baaa??d?aaa?b??a???a?a?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Prototheca_wickerhamii aaaaaaaaaaaaaaaba?b??b??a???????????abaa?????a???baaa??d?aaa????a???a?a??aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Chlorella_protothecoides aaaaaaaaaaaaaaaba?b??b??a???????????abaa?b?aaaa??baaa??d?aaa????a???a?a??aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Chlorella_minutissima aaaaaaaaaaaaaaaba?b??b??a???????????abaa?a?aaaa??baaa??d?aaa????a???a?a??aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Neochloris_aquaticus aaaaaabaaaaaaabaaaba?baaa?baabcabbbbabaa?????a??abaaaa??baaaa?aaabababaa?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Neochloris_vigenis aaaaaabaaaaaaabaaaba?baaa??aabcabbbbabaa?????a??abaaaa??baaaa?aaaba?abaa?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Pediastrum_duplex aaaacbaaaaaaaabaaaba?b?aabbaabcabbbbabaab????a??bbaaaab?baaaa?ababababaa?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Scenedesmus_obliquus aaaacbaaaaaaaaabaaba?b?ea???a????bbbabaa???bbab??baaaa???aaaabaaa???a?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Characium_hindakii aabaaabaaaaaabbaaaba?baaa?baabca?bbbabaa?????a??abaaaa??baaaa?aaaba?abaa?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Chlorella_fusca aaaaaaaaaaaaaaaba?b?ab??a???????????abaa?b?bbab??baaa??d?aaa????a???a?a??aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+'Ankistrodesmus_falcatus(sti)' aaaaaaaaaaaaababa?b??b??a???????????abaa?????a???baaa??d?aaa????a???a?a??aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Pseudotrebouxia_gigantea aaaaaaaaaaaaaacaa?a??baaa?baaba?aabbbbaaa????a???baaaa?dbaaaa?aaabaaabaa?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Pleurastrum_terrestre aaaabbaaaaabaacaa?a??baaa?baaba?aabbbbaaa????a???baaaa?dbaaaa?aaabaaabaa?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Characium_perforatum aabaaaaaaaaaabbaaaba?bbaa?baababa?bb?aaa?????a??abaaaa??baaaa?aaaba?abaa?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Parietochloris_pseudoalveolaris aaaaaaaaaaaaaabaaaba?bbaa?baababa?bb?aaa?????a??abaaaa??baaaa?caabaaabaa?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Friedmannia_israelensis {ac}aaaaaaaaaaaaacaaaa??baaabbaababaabbbbaaa????a???baaaa?dbaaaa?aaabaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Hypothetical_ancestor baaaaaaaaaaaaabababa?aaaaaaaaa?baaaaaaaaa????a?aabaaaaadaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+;
+END;
+
+BEGIN ASSUMPTIONS;
+ OPTIONS DEFTYPE=unord PolyTcount=MINSTEPS ;
+
+END;
+
+
+BEGIN NOTES;
+ TEXT CHARACTER=26 TEXT= 'relative_to_direction_of_motion_--_Mark''s_#21';
+ TEXT CHARACTER=14 TEXT= 'vegetative_cells_or_zoospores__Mark''s_#42';
+ TEXT CHARACTER=24 TEXT= 'on_vegetative_cells_or_zoospores__Mark''s_#43';
+ TEXT CHARACTER=5 TEXT= 'Mark''s_#1_(modified_c=coenobic)';
+ TEXT CHARACTER=18 TEXT= 'Mark''s_#3';
+ TEXT CHARACTER=20 TEXT= 'Mark''s_#6_(modified)';
+ TEXT CHARACTER=21 TEXT= 'Mark''s_#7-perhaps_omit?';
+ TEXT CHARACTER=43 TEXT= 'Mark''s_#15';
+ TEXT CHARACTER=25 TEXT= 'Mark''s_#18';
+ TEXT CHARACTER=28 TEXT= 'BB_in_motile_cells_distant_from_one_another_via_migration_in_development_--_Mark''s_#45';
+ TEXT CHARACTER=34 TEXT= 'Mark''s_#47';
+ TEXT CHARACTER=1 TEXT= 'of_free_living_vegetative_stage_--_Mark''s_#48';
+ TEXT CHARACTER=17 TEXT= 'Mark''s_#49';
+ TEXT CHARACTER=38 TEXT= 'microtubules_forming_in_plane_of_cell_division_--_Mark''s_#50';
+ TEXT CHARACTER=36 TEXT= 'Mark''s_#51';
+ TEXT CHARACTER=7 TEXT= 'Mark''s_#52-related_to_#8.';
+ TEXT CHARACTER=6 TEXT= 'in_multicellular_organism_--_Mark''s_#54';
+ TEXT CHARACTER=12 TEXT= 'veg._cells_form_filaments_--_Mark''s_#55_(modified_-_c=branched_filaments)';
+ TEXT CHARACTER=15 TEXT= 'Mark''s_#57-combine_with_16?';
+ TEXT CHARACTER=11 TEXT= 'Mark''s_#58';
+ TEXT CHARACTER=3 TEXT= 'veg._cell_or_thallus_attached_--_Mark''s_#60_(Modify_def_to_include_attachment_by_specialized_structure?)';
+ TEXT CHARACTER=10 TEXT= 'Mark''s_#62-are_all_of_these_structurally_similar?';
+ TEXT CHARACTER=2 TEXT= 'Mark''s_#63_(modified,_d_=_heteromorphic_alt.)_CHECK_CODING!';
+ TEXT CHARACTER=35 TEXT= 'with_distinct_membrane_--_Mark''s_#64';
+ TEXT CHARACTER=42 TEXT= 'in_veg._cell_--_Mark''s_#67';
+ TEXT CHARACTER=16 TEXT= 'produced_by_vegetative_thallus_or_cells_--_Mark''s_#68';
+ TEXT CHARACTER=44 TEXT= 'produced_by_veg._cells_--_Mark''s_#69';
+ TEXT CHARACTER=45 TEXT= 'produced_by_veg._cell_--_Mark''s_#70';
+ TEXT CHARACTER=47 TEXT= 'veg._cells_capable_--_Mark''s_#71';
+ TEXT CHARACTER=49 TEXT= 'Mark''s_#72';
+ TEXT CHARACTER=51 TEXT= 'in_veg._cells_--_Mark''s_#77';
+ TEXT CHARACTER=52 TEXT= 'surrounds_cells_--_Mark''s_#80';
+ TEXT CHARACTER=53 TEXT= 'Mark''s_#83-CHECK_if_includes_zoospores.';
+ TEXT CHARACTER=13 TEXT= 'Mark''s_#84';
+ TEXT CHARACTER=40 TEXT= 'in_veg_cells__-_Mark''s_#86';
+ TEXT CHARACTER=54 TEXT= 'in_veg_cells_or_zoospores_--_Mark''s_#87';
+ TEXT CHARACTER=41 TEXT= 'between_nucleus_and_plane_of_cleavage_--_Mark''s_#88';
+ TEXT CHARACTER=19 TEXT= 'in_veg._cells,_to_produce_zoospores_or_gametes_--_Mark''s_#89';
+ TEXT CHARACTER=55 TEXT= 'in_veg._cells_or_zoospores_--_Mark''s_#92';
+ TEXT CHARACTER=56 TEXT= 'in_veg_cells_or_zoospores_--_Mark''s_#93_(modified,_d=absent)';
+ TEXT CHARACTER=23 TEXT= 'thylakoid_membranes_traverse_pyrenoids_--Mark''s_#_98';
+ TEXT CHARACTER=37 TEXT= 'surround_centrioles_during_mitosis_--_Mark''s_#101';
+ TEXT CHARACTER=72 TEXT= 'multi-layered_structure_--_Mark''s_#102';
+ TEXT CHARACTER=29 TEXT= 'on_motile_cells_--_Mark''s_#107';
+ TEXT CHARACTER=73 TEXT= 'produced_by_veg._cells_--_Mark''s_#108';
+ TEXT CHARACTER=39 TEXT= 'microtubules_formed_during_cytokinesis_--_Mark''s_#110';
+ TEXT CHARACTER=74 TEXT= 'Mark''s_#111';
+ TEXT CHARACTER=4 TEXT= 'if_multicellular_(?)_--_Mark''s_#164';
+ TEXT CHARACTER=33 TEXT= 'basal_body_core_connection_--_Mark''s_#202';
+ TEXT CHARACTER=31 TEXT= 'Mark''s_#201';
+ TEXT CHARACTER=9 TEXT= 'Mark''s_#200';
+ TEXT CHARACTER=32 TEXT= 'basal_body_overlap_in_motile_cells_--_Mark''s_#195';
+ TEXT CHARACTER=50 TEXT= 'Mark''s_#194';
+ TEXT CHARACTER=71 TEXT= 'Mark''s_#192';
+ TEXT CHARACTER=48 TEXT= 'photosystem_II_light_harvesting_complex_--_Mark''s_#189';
+ TEXT CHARACTER=70 TEXT= 'Mark''s_#188';
+ TEXT CHARACTER=69 TEXT= 'Mark''s_#185';
+ TEXT CHARACTER=27 TEXT= 'Mark''s_#180';
+ TEXT CHARACTER=68 TEXT= 'or_system_1_fiber_--_Mark''s_#178';
+ TEXT CHARACTER=67 TEXT= 'Mark''s_#175';
+ TEXT CHARACTER=66 TEXT= 'Mark''s_#173';
+ TEXT CHARACTER=60 TEXT= 'zoosporangial_exit_aperature_possesses_plug_--_Mark''s_#170';
+ TEXT CHARACTER=46 TEXT= 'independent_of_environment_--_Mark''s_#169';
+ TEXT CHARACTER=65 TEXT= 'of_veg._or_motile_cells_--_Mark''s_#168';
+ TEXT CHARACTER=64 TEXT= 'Mark''s_#167';
+ TEXT CHARACTER=63 TEXT= 'Mark''s_#166';
+ TEXT CHARACTER=8 TEXT= 'Mark''s_#165';
+ TEXT CHARACTER=62 TEXT= 'Mark''s_#163-modified,_includes_plate-like';
+ TEXT CHARACTER=59 TEXT= 'Mark''s_#162';
+ TEXT CHARACTER=61 TEXT= 'Mark''s_#160';
+ TEXT CHARACTER=58 TEXT= 'Mark''s_#159';
+ TEXT CHARACTER=57 TEXT= 'Mark''s_#157';
+ TEXT CHARACTER=22 TEXT= 'Mark''s_#155';
+ TEXT CHARACTER=109 TEXT= 'Mark''s_#154';
+ TEXT CHARACTER=108 TEXT= 'Mark''s_#153';
+ TEXT CHARACTER=75 TEXT= 'Mark''s_#112';
+ TEXT CHARACTER=76 TEXT= 'Mark''s_#113';
+ TEXT CHARACTER=77 TEXT= 'Mark''s_#114';
+ TEXT CHARACTER=78 TEXT= 'Mark''s_#117';
+ TEXT CHARACTER=79 TEXT= 'Mark''s_#118';
+ TEXT CHARACTER=83 TEXT= 'Mark''s_#119';
+ TEXT CHARACTER=80 TEXT= 'Mark''s_#120';
+ TEXT CHARACTER=81 TEXT= 'Mark''s_#121';
+ TEXT CHARACTER=82 TEXT= 'Mark''s_#122-maybe_should_substitute_"sporic_meiosis"_as_in_Graham_et_al._1991.';
+ TEXT CHARACTER=84 TEXT= 'Mark''s_#123';
+ TEXT CHARACTER=87 TEXT= 'Mark''s_#124';
+ TEXT CHARACTER=86 TEXT= 'Mark''s_#125';
+ TEXT CHARACTER=85 TEXT= 'Mark''s_#126';
+ TEXT CHARACTER=89 TEXT= 'Mark''s_#127';
+ TEXT CHARACTER=88 TEXT= 'Mark''s_#128';
+ TEXT CHARACTER=96 TEXT= 'Mark''s_#129';
+ TEXT CHARACTER=91 TEXT= 'Mark''s_#130';
+ TEXT CHARACTER=93 TEXT= 'Mark''s_#133';
+ TEXT CHARACTER=92 TEXT= 'Mark''s_#134';
+ TEXT CHARACTER=30 TEXT= 'flagellar_apparatus_components_displaying_180_deg._rotational_symmetry_--_Mark''s_#135';
+ TEXT CHARACTER=94 TEXT= 'Mark''s_#136';
+ TEXT CHARACTER=95 TEXT= 'of_moss-tracheophyte_type_--_Mark''s_#137';
+ TEXT CHARACTER=98 TEXT= 'of_moss_type_--_Mark''s_#138';
+ TEXT CHARACTER=97 TEXT= 'Mark''s_#139';
+ TEXT CHARACTER=103 TEXT= 'Mark''s_#140';
+ TEXT CHARACTER=102 TEXT= 'Mark''s_#141';
+ TEXT CHARACTER=100 TEXT= 'Mark''s_#142';
+ TEXT CHARACTER=101 TEXT= 'Mark''s_#143';
+ TEXT CHARACTER=104 TEXT= 'Mark''s_#146';
+ TEXT CHARACTER=105 TEXT= 'Mark''s_#147';
+ TEXT CHARACTER=106 TEXT= 'Mark''s_#148';
+ TEXT CHARACTER=107 TEXT= 'Mark''s_#149';
+ TEXT TAXON=24 CHARACTER=2 TEXT= CHECK;
+ TEXT TAXON=26 CHARACTER=7 TEXT= check;
+ TEXT TAXON=26 CHARACTER=8 TEXT= CHECK;
+ TEXT TAXON=40 CHARACTER=57 TEXT= 'early_in_ontogeny,_flagella_are_apical';
+ TEXT TAXON=35 CHARACTER=57 TEXT= flagella_apical_in_early_ontogeny;
+END;
+
+BEGIN MACCLADE;
+v 3.0
+-1322665186
+1000&/0
+0
+0
+END;
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/GPMorph.nex
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/LPCombined.nex
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/LPCombined.nex 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/LPCombined.nex 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,49 @@
+#NEXUS
+[MacClade 3.01 registered to Equator, UCMP]
+
+BEGIN DATA;
+DIMENSIONS NTAX=9 NCHAR=2294;
+
+[!This is the final morphological matrix for land plants, plus selected
+data from the rDNAmaster alignment (contains both SSU and LSU]
+FORMAT MISSING=? GAP=- SYMBOLS= " 0 1 2 3 4 5 6 A C G T N";
+
+MATRIX
+[ 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250 260 270 280 290 300 310 320 330 340 350 360 370 380 390 400 410 420 430 440 450 460 470 480 490 500 510 520 530 540 550 560 570 580 590 600 610 620 630 640 650 660 670 680 690 700 710 720 730 740 750 760 770 780 790 800 810 820 830 840 850 860 870 880 890 900 910 920 930 940 950 960 970 980 990 1000 1010 1020 1030 1040 1050 1060 1070 1080 1090 1100 1110 1120 1130 1140 1150 1160 1170 1180 1190 1200 1210 1220 1230 1240 1250 1260 1270 1280 1290 1300 1310 1320 1330 1340 1350 1360 1370 1380 1390 1400 1410 1420 1430 1440 1450 1460 1470 1480 1490 1500 1510 1520 1530 1540 1550 1560 1570 1580 1590 1600 1610 1620 1630 1640 1650 1660 1670 1680 1690 1700 1710 1720 1730 1740 1750 1760 1770 1780 1790 1800 1810 1820 1830 1840 1850 1860 1870 1880 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980 1990 2000 2010 2020 2030 2040 2050 2060 2070 2080 2090 2100 2110 2120 2130 2140 2150 2160 2170 2180 2190 2200 2210 2220 2230 2240 2250 2260 2270 2280 2290 ]
+[ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ]
+
+COLEOCHAETE ????????????????????????????????????????????????????????????????????????TGGCTCATTAAATCAGTTATAGTTT-TTTGATGGTAGCC---TACTC---GGATAACC-T-GTAA-TTCTAGAGCTATACCGTGC-CC--ATCC-GACTTC--TGGAAGG--GGTATTTGTTAGATAAAAGACCAAT----GC-TC-GCCCGGTGTT-CGGTGAATC--GATAACTCCTCG?ATCGCACGGCCT??????????????????????????????????????????????????????????????????????????????????????????????????????????GGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGA?GGCAG--GGCGCG--GATTACCC-AATCCTGATACAGGGAGGTAG--ACAATAAATAACA-TACTGGGCTTTTA-AAGTCTGGT?ATTGGAATGAGTACAATCTAAATCTC????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CATTAATCAAGAA-GAAAGTTGGGGGCTCGAAGACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGACCTAGG-ATCAACGGATGTTAATTTAATGACTCCGCCAGCACCTTAT--AGAAA-CAAAGTTCTTGGGTTCC??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AT--CCAGTTTTCGTTC?-GGAGTGATTTGTCTG-TT-AATTC?G?TAACGAAGGAG?CCTCAGCCTGCTAACTAGGCTAACGTTTTGTTGGGAC------------ACTTGTTAGAGGGACTGTGAGGCGCTTAGCTCAT---GGA??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????G-TCTCGAACGA-GAATACCTAGTAAGCGCTCGTCATCAGCGTGCGCT-ACTAC-GTCCCTGCCCTTTGTACACAC-GCCCGTCGCTCCTACCGATAGAATGCTCC---GGTGAAGCATTCGG--ATCGCCACCGGCGGGCAACTCCGGAGACGGCATG------AGAA-TT-GTTGAACCTTATCGTTTAGAGGA????????????????????????????????????????????????????CACCACGCGCCGATCCGGAGA?ATGTCGGAAGGGTTC?GAGCTGAGA?A??GTATGTTGGGACCC???AGATGGTGAACTATGCCTGA??AGG??CGAAGCCAGAGGAAACTCTGGTGGAAGATC?GCAGC?ATACTGACGTGCAAATCG?TTCGTCGGACTTG?GTATA????C?AAAGACT?ATC?AACCATGCG?GG?G?CTCCGGG?AGAGTTTT?TTTTCTTTTT?GACA?GTCG??AGC?GCCCTGGAATTGATT?C?CGGCG???GAGGGTGC?GAAAGCTGGC?AGAGCGCGCACTGGT???CGGTGTC?GGTG?AC??CCG???T??T?CCCTAGA?????0??0000?00?0?0?000?000??0000000000?00?00???000000?1??0000?010000000000000000000000000?00000001000000?000111110
+PHAEOCEROS ?????????????????????????????????????????????????????????????????????????????????????????????????????GATGGTACCTTGCTACTC---GGATAACC--AGTAA-TTCTA-AGCTAAT-CGTGCAACAACTCCCGGCTTT--TGG-AGGG-TGT-TTT-TTAG-TAAAAG---GA-GCGG-C-TT-GTCCCGGTTTACGGTGAA-C?-GATAACTCCTCGGATCGCACGGCCCT??????????????????????????????????????????????????????????????????????????????????ACGGA-AATTAGGGTTCGATTCCGGA-A-GGAGCCTGAGAAACGGCTACCA-CATCC-AG-AAGGCA-CA--CGCGC--ATTACCC-AATCC-GAC-CGGGGAGGTAGTGACAATAAATAACAATACTGGGCTTTTACAAGTCTGGTAATTGGAATGA-TACAATCTAAATCCCTTAAC?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GAAAGTTGGG--CTCGAAGACGAT-AG-TACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGGATGTTAATTAGATGACTCCGCCAGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTAT?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????T--TGCATGGCCGTT-TTAGTTGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTAGTTACACGAAGAACCTTCTTCGTGGCC----AACTTCTTAGAGGGACTATTTGCGTCTAGCGAAT----GGAA???????????????????????????????????????????????????????????????????????????????????????????????????????????ATCTTTG-AAATTTCATCGTGAT--GGATAGATCATTGCAATTATTGATCTT-AA----GAATT--TAGTAAGCGCGAGTCATCAGCTCG-GTTGACTA--GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGAATGGTCC---GGTGAAGTTTTCGG--ATTG-CGGCG?ACA?CGGGT?ACCGCCGGGACGTTGT--GAGAAG-TCATTAAACCTTATC-TTTAGAGGAA??????????????????????????????????????????????????GCACCATCGACCGACCATGAT?CTTCTGTGAAAGGTTT??AGTGTGA??A?TACCTGCTGGGACCC??AAGATGGTGAACTATGCCTGAGTCAGG?CGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGCGATACTGA?GTGC?AATCG?TTCGTCAGACTTGGGTATA?GGGC???AGACTAATCGAACCATGCG??G?GGCCCCGGG?AGAGTTCTCTTTTCT?TTT?AACA???CT?GCCT?GCCCTGAAATCGGATTACCCGGA???ATAGGGTCCAGCGGCTGGT?AAAGCACCACACGTCTTGCGGTGTCCGGTGGCCC?CT??GGC??GGCCCGTGA0011003001101111100?200?101000010003001?11010011011110000110111021100011100001000000000000000000001000000?000101110
+NOTOTHYLAS ????????????????????????????????????????????????????????????????????????????????????????????????????????????CCTT-CTACTC---GGATAAC-G-AGTAA-TTCTA-AGCTAA-ACGTGCAACAACTCCCGACTC---TGGAAGG-AG--ATTTATTAGATAAAAG---GATG---GC-TT-GTCCCGTTT-A--CTGAATC-TGATAACTCCTCGAATCGCACGGCCCT???????????????????????????????????????????????????????????????????????????????????????????????GTTCGATTCCGGAGAGGGA--C-GAGAAACGGCTACCA-CATCC--N--AGGCAG---NNNN----ATTACCC-AATCC-GA---GGGGAGGTAGTGACAATAAATAACAATACTGGGCTTTTACAAGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAA--A????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AAAGTTGGGG-CTCGAAGACGATCAGATAC---TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGGGTGTTAATTAGATGACTCCGCCAGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGG???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CA-GGCCGTT-TTAGTTGGTGGAGTGA-TTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTAGTTACAC-AAGAACCTTCTTCGTGGCC----AACTTCTTAGAGGGACTATTTGCGTCTA-CGAAT----GGAA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GGA-AGATCATTGC-ATTATTGATCTTCAAC-AGGAAT-CCT-GTAAGCGCGAGTCATCAGCTCGCGTT-ACTAC-GTCCCTGCCCTTTGTACACAC-GCC-GTCGCTCCTACCGATTGAATGGTCC---GGTGAAGTTTTCGG--ATTG-CGGCGACACCGGGTCACCGCCGGGGACGTT-T--GA-AA-TTCATTAAACCTTATCATTTA?A????????????????????????????????????????????????????????????????????CC?TGAT?CTTCTGTGA?AGGTTT?GAGTGTGAGCA?TACCTGCTGGGACCC????GATGGTGA?CTATGCCTGAGCAGGG?CGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGCGATACTGA?GTGCAAATCG?TTCGTCAGACTTGGGTATAGGGGCGAAAG?CTAATCG???????????????CCCCGGG?AGAGTTCTC?TTTCTTTTT?AACA?GCCT?GCCT?ACCCTGAAATCGGATTACCCGGAG??ATAGGGTCCAGCGGCTGGT?AAAGCACCACACG?CTTGCGGTGTCCGGTG?CCC?????GGC??GGCCCGTG?0011003001101111100?200?101000010003001?11010011011110000110111021100011100001000000000000000000001000000?000101110
+MARCHANTIALES ?????????????????????????????????????????????????????????CTGTGAAACTGCGAATGGCTC-TTAAATC-GTTATAGTTTCTTTGATGGTGCCTT-CTACTC---GGATAACCG-AGTAA-TTCTAGAGCTAATACGTGCACCAACGCCCGACTTT-CCGGAAGGG--TGTTTTATTAGATAAAAGACCGATG---GC-TT-GCC-CGGTGATT-CGGAATCATGATAACTCGACGAATCGCACGGCCT??????????????????????????????????????????????????????????????????????????????????????????????????????????????AGGGAGCCTGAG?AACGGCTACCA-CATCC-AG-AAGGCAG-A---GC-C--ATTACCC-AATCC-GAC-----GAGG-AGTGACAATAAATAACAATACTGGGCT-TTACAAGTCTGGTAATTGGAATGAGTACAATCTAAATCCC?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CTTCTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGG-ATCG--GGATGTNGATTAGATGACTCCGCCGGCACCTCCATGAGAAATCAAAGTTTTTGGGTTCCGGGGGGAG-ATG?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TGGTGG-GTGATTTGTCTGGTT-AATTCCGTTAACGAAGGAGACCTCAGCCTGCTAACTA-CTACGCGGGGGT?CTCCCCTGCGGCC----AGCTT-TTAGAGGGACTGTCGGCGTCTAGCCGA-----GGA?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AGTCATCAGCTCGCGTTGACTAC-GTCCCTGCCCTTTGTACACAC-GCCCGTCGCTCCTACCGATTGAATGGTCC---GGTGA-GAGTTCGG--ATCG-CGGCGACGCGCGGTTCGCCGCCGGGACGTTG---GA-AAGTTCTTTAAACCTTATCA????????????????????????????????????????????????????????????T?AACATCGACCGACCATGAT?CTTCTGTGAAAGGTTC?G?GT?GGAGCA?TGCCTGTTGGGACCC??AAGATGGTGAACTATGC?TGAGCAGGG?CGAAGTCAGAGGAAACTCTGGTGGAGGCTC?GTAGCGATACTGACGTGCAAATCG?TTCGTCAGACTCGGG?ATA??????AAAGACTAATCGAACCATGCG?GA?GGCCCCGGGAAGAGTTTTCTTTTCT??TT??AC?GACC??GCCG?GCCCTGAAATCGCATTACGCGGAG??ATAGGGCCCAGCGGTCGGC?AAAGCGTCGCA?GTCTTGCGG?GTCCGGTG?GCC?CCC?GAC??GGCCCC?GA000100300110121001112011101100000003001?110000101100100000101011211111000000000000000100000000000011000000001101110
+JUNGERMANNIALES ??????????????????????????????????????????????????????????????????????????????????????????????????TTTGATGGTACCTTGCTACTC---GGATAACC-TAGTAA-TTCTAGAGCTAATACGTGCACCAACTCCCGACTTC--TGGAAGGG-CGTATTTATTAGATAAAAGACCGATGCGGGC--T-GCCCGGTGTTGCGGTGAATCATGATAACTCGTCGAATCGCACGGCC???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AAACGGCTACCA-CATCCAAGG-AGGCAGCCGG-GCG---ATTACCC-AATACCGACACAGGNAGGTAGTGACAATAAATAACAATACTGGGCTTTACCAAGTCTGGTAATTGGAATGAGTACAATCTAAATCC?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AA?AAC?AAAGTTGGG--CTCGAA-ACGAT-AGATACCG-TCCTAGTCTCAACCATAAACGATGCCGAGCTAGGGATTG--GGATGTTAATTTGATGACTCCGC-AGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCC??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CC-----TAGTTGGTGGAG-G--TTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTAGTTACACGAAGAATCTTCTTTGTGGCC----AACTT-TTAGAGGGACTATT--CGTCTAGCCAAT----GGA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TCTTCAAC-AGGAAT-CCTAGTAAGC-CGAGTCATCAGCTCGCGTTGACTAC-GTCCCTGCCCTTTGTACACAC--CCCGTCGCTCCTACCGATTGAATGGTCC----GTGAAGTTTTCGG--ATTGCGGCGACGCGGCGGTTCGCTGCCGGGACGTTGT--GAGAAGTTTATTAAACCTTATCATTTA?A????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????010100300110121001112011101000000003001?11001010110010000010101121111100000000000000101111000000000100000?001101110
+POLYTRICHALES ??????????????????????????????????????????????????????????????????????????????ATTAAATCAGTTATAGTTTCTTT-ATGGTACCTTGCTACTC---GGATAACCGTAGTA--TTCTA-AGCTAATACGTGCACAAACTCCCGACCTC--TGGAAGGG-CG-TTTTATTAGATAAAAGGCCGATGC-GGC-TT-GCCCGGTAT-TCGGTGACTCA-GATAACTCGTCGAATCGCACGGCCTTA?????????????????????????????????????????????????????????????????????????????????????AGAATT----TTCGATTCCGGA-AGGGAGCCTGAGAA-CGGCTACCA-CATCCA---AAGGCAG-N-NN-N-N--ATT-CCC-AATCC-GAC--GGGGAGGTAGT-ACAATAAATAACAATACTGGGCTTTTACAAGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAA--A??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CTTCTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAG???GAAAGTTGGGGGCTCGAAGACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTTGCGGGTGTTAATTTGATGACCCCG-AAGCACCTTAT-GAGAAATC-AAGTATTTGGGTTCCGGGGGGAGTATG?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CTCTTTCTTGATTCTATGGGTGGT-GTGCATGGCCGTT-TT-GTTGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAAC-AACGAGACCTCAGCCTGCTAACTAGTTACACGAAGAATC-TCTTTGTGGCC----AACTT-TTAGAGGGACTATTGGCGTCT-GCCAAT----GGAA??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????ATAGATCATTGC-ATTATTGATCTTCAA--A-GAATTCC-AGTAAGCGCGAGTCATCAGCTCGCGTTGATTAC-GTCCCTGCCCTTTGTACACACC-CCCGTCGCTCCTACCGATTGAATGGTCC---GGTGAAGTTTTCGG--ATCG--GG-TG-ATCGGGTT-G-GTTCGG?GACTTGT--GAGAA-TTCATTAAA--TTATCATTTAGAGGAA??????????????????????????????????????????????????GCAC?AT?GACCGACCGTGAT?CTTCTGTGAAAGGTTT?GAGTGTGAGC??T?CCTGCTGGGACCC??AAGATGGTGAACTATGCCTGAGC?AGG?CGAAGCCAGAGGAAACTCTGGTGGAGGCTC?G?AGC?ATACTGACGTGCAAATCG?TTCGTCAGACTTGGG?ATA????C?AAAGACT?ATCGAACCATGCG?AG?GGCCCCGGGAAGAGTTCTCTTTTCT?TTT?AACA?GCCT?GCCT??CCCTGGAATCGGATTACC?GGAG??ATAGGGTCCAGCGGCTGGT?AAAGCACCGCAC?TCTTGCGG?GTCCGGGGCCC??C???GGC??GGCCCGTGA110110311110121001112011101011011003001?11000122010110000010000021100011011111110000000000111111110100000?000101110
+BRYALES ????????????????????????????????TGTGTAAGTATAAACT-CTTTTGTACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTCTTTGATGGTACCTTGCTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGCACAAAATCCCGACTGG---GNAAGGGANNGATTTATTGGATAAAAGGCCGA-TGCGGGCT-TGCCCGGTTC-GCGG-GAC----GATAAC--GTCGAATCGCA-GGCCG???????????????????????????????????????????????????????????????????????????????????????????????????????????GA-A-GGAGCCT-AG---CGGCTACCA-CATCC-AGGAAGGC--C----------ATTACCC-AACTCCGA---GGGGAGGTAGTGACAATAAATAACAATACTGGGC--TTACGGGCCCG---ATTGG--TGAGTA?AATCT-AATCCCTTAA?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TGAAATTCTTGGATTTATGAAAGACGAACTTCTGCGAAAGCATTTGCCAAGGATGTTTTCGTTAATCAA-AA-GAAAGTTGGGGGCTCGAAGACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGGGTGTTGATTCGATGACCCCGCCAGCACCTTAT-GAGAAATC--AGTTTTTGGGTTCCGGGGGGAGTATG?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AGAGCTCTTTCTTGGTTCTATGGGTGGT-GTGCATGGCCGTT-TTAGTTGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTAGTTACGCGAAGGATTTCCTCCTTTGCGGCC-AACTTC--AGAGGGACTATCGGCGTC---GCCGAT---GGAAG?TTGA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????ATCATTGC-ATTATTGATCTTCAAC---GAATTCC-AGTAAGCGCGAGTCATCAGCTCG-GTTGACTAC--TCCCTGCCCTTTGTACACAC--CCCGTCGCTCCTACCGATTGAATGGTCC---GGTGAAGTTTTCGG--ATCG-CG??A?C????GTTCGCCGC?GG?GACGTTGT--GAGAAG-TCATTAAACCTTATCATTTA-AG?????????????????????????????????????????????????????GCACCATCGACCGACCGTGAT?CTTCTGTGAAAGGTTT?GAGTGTGAGCA?CACATGTTGGGACCC???AGATGGTGAACTATGCCTGAGCAGGG?CGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGCGATACTGACGTGCAAATCG?TTCGTCAGACTTGGGTATAGGGGC?AAAGACTAATCGAACCATGCG?AG?GGCCCCTGGAAGAGTTCTCT?TTCT?TTT??AC?GGCCC?GACG?ACCCTGGAATCGGTTCACCCGGAG??ATAGGGTCCAGCGGCCGGT?AAAGCACCGCACGTCTCGCGGTGTCAGGTGGCCC?TC??GGC??GGCCCGTGA110110311110121001112011101011010003001?110001220101100000100000211000110111111100000000001111111111000000001101110
+EQUISETUM ???????????????????????????????????????????????????????????????????GCGAATGGCTGATTAAATCAGTTATAGTTTCTTTGATGGTACCTTGCTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGCACCAACTCCCGACTTC--TGG--GGGA-GCATTTATTAGATAAAAGGCCGATGCGGGC-TGTGCCCGGTAA----CGGATTC--GATAACTTCCCGGATCGCACGGCCTNNNNACGGGTGA????????????????????????????????????????????????????????????????????????CGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCGGGCGCGCAAATTACCC-AATCC-GACACGGGGAGGTAGTGACAATAAATAACAATACTGGGCTTTTACAAGTCTGGTAATTGGAATGAGTACAATCTAAATCC?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AAGAACGAAAGTTGG---CTCGAAGAC-ATCA?ATACCG-TCCTAGTCTCAACCATAAACGA-GC?GA-CTAGGGATT--CGGATGTTACTTCAATGACTCTGCCGGCACCTTAT-GAGAAATCAAAGTCTTTGGGTTCC----GGA-T??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TGACAGATTGAGAGCTCTTTCTTGATTCTATGGGTGGTAGTGCATGGCCGTTCTTAGTTGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTAGTTACGCGAAGACTTGTCTTCGTGGCC----AACTTCTTAGAGGGACTATGGCCGTCTAGGCCAT----GGA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TCTTCAACTAGGAATTCCTAGTAAGC-CGAGTCATCAGCTCGCGTTGACTA--GTCCCTGCCCTTTGTACACACTGCCCGTCGCTCCTACCGATTGAATGGTCC---GGTGAAGTTTTCGG--ATT-CGGCGACGCTGGCGGT-CGCCGGCGACGTTGT---GAGAAGTTCATTGAACCTTACCATTTAGAG?????????????????????????????????????????????????????GCACCATCGACCGACCGTGAT?CTTCTGTGAAAGGTTT?GAGTGAGAGCA?TACCTGCTGGGACCC?AAAGATGGTGAACTATGCCTGAGCAGGG?CGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGCGATACTGACGTGCAAATCG?TTCGTCAGACTTGGGTATAGGGGCGAAAGACTAATCGAACCATGCG?GG?GGCCCTGGGAAGAGTTCTCTTTTCTTTTT?AACA?ACTT?GCCC?ACCCTGAAATCGGATCAACCGGAG??ATAGGGTCCAGCGGTTGGT?AAAGCA?CGCAGGTC?TGCGGTGTCCGGTGCCCC?C???GGC??GGCCCTTGA0?0000211111030?0100010?1110201001100011111000330100001110012?001110001101111000111100000000000000??00?001101101110
+ZAMIA TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTGTCAGTATGAACTATTTT-GGACGGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTCTTTGATGGTACTCTGCTACAC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGCACCAAATCCCGACTTTT-TG-AAGGGACGCATCTATTAGATAAAAGGCCGATGCGGGC-TTTGCCCGGCGT-TTGGTGAATCATGATACCTTGATGGATTGCATGGCCCTCGAGCCGGCGACGCTTCATTCAAATTTCTGCCCTATCAACTTTCGATGGCAGGATAGAGGCCTACCATGGTGGTGACGGGTGACGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCCGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACGGGGAGGTAGTGACAATAAATAACAATACTGGGCTCATC-GAGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAACGA-GGATCCATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGATCTTGGGACGGCCCGGCC-GGTCCGCT-TTTTTGGGTGTGCACCGGCCGTTTCGTCCCTTTTGTTGGCGGCGCG---CACCTGGCCTTAACTGTCTGGG-TCGCGGT-TCC--ACGCTGTTACTTTGAAAAAATTAGAGTGCTCAAAGCAAGC-TTATGCTCTGAATACATTAGCATGGAATAACGGTATAGGATTCTGGTCCTATTGCGTTGGCCTTCGGGACCGGA-GTAATGATTAACAGGGACGGTCGGGGGCATTCGTATTTCATTGTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACCACTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CCAGGGATCGGCGGATGTTGCTCTAAGGACTCCGCCGGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGAGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGGAAACTTACCAGGTCCAGACATAGCAAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGAGCGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCGGCCTGCTAACTAGCTACGCGGAGGGTTTCTTTCGTGGCC----AGCTTCTTAGAGGGACTATGGCCGTTTAGGCCAT----GGAAGTTTGAGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATGTATTCAACGAGTCTATAACCTGGGCCGGGAGGTCCGGGAAATCTGGCGAAATTTCATCGTGATGGGGATAGATCATTGCAATTATTGATCTTCAACGAGGAATTCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGACTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGAATGATCC---GGTGAAGTGTTCGG--ATCGTGCCGACGACGGCGGTTCGCTGGGCGCGACGTCGCGAGAAGTTCATTGAACCTTATCATTTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCGTAG??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????10011?1030?0100010?1?1020000110011020?02???00000112?0012?0001100011011?1000111100000000000000??110001111101110
+;
+END;
+
+BEGIN ASSUMPTIONS;
+ OPTIONS DEFTYPE=unord PolyTcount=MINSTEPS ;
+
+ TYPESET * order_two = unord: 1-2185 2187-2228 2230-2294, ord: 2186 2229;
+
+ EXSET gaps+unalignsites = 50-55 110-122 171-176 214-220 228-232 267-280 482-489 657-663 676-690 699-713 729-731 737-743 782-785 1362-1391 1416-1429 1691-1695 1709-1755;
+ EXSET LSU = 50-55 110-122 171-176 214-220 228-232 267-280 482-489 657-663 676-690 699-713 729-731 737-743 782-785 1362-1391 1416-1429 1691-1695 1709-1755 1834-2179;
+ EXSET SSU = 1-1833;
+ EXSET MOLECULES = 1-2179;
+ EXSET MORPHOLOGY = 50-55 110-122 171-176 214-220 228-232 267-280 482-489 657-663 676-690 699-713 729-731 737-743 782-785 1362-1391 1416-1429 1691-1695 1709-1755 2180-2294;
+ EXSET * SPERM = 50-55 110-122 171-176 214-220 228-232 267-280 482-489 657-663 676-690 699-713 729-731 737-743 782-785 1362-1391 1416-1429 1691-1695 1709-1755 2180-2244;
+
+END;
+
+
+
+BEGIN MACCLADE;
+v 3.0
+-1322665050
+1000&/0
+0
+0
+END;
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/LPCombined.nex
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/LPMolecular.nex
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/LPMolecular.nex 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/LPMolecular.nex 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,60 @@
+#NEXUS
+[MacClade 3.01 registered to Brent D. Mishler, Duke University]
+
+[**The final matrix LP-MOLEC used in the Ann .Mo. Bot. 81: 451-483 (Mishler et al. 1994)
+ green plant synthesis paper.]
+
+[This data set was realigned in reference to these land plants only,
+thus it represents a different data set than 'rDNAmastr']
+
+BEGIN DATA;
+DIMENSIONS NTAX=16 NCHAR=2148;
+FORMAT DATATYPE=DNA MISSING=? GAP=- ;
+OPTIONS MSTAXA=UNCERTAIN ;
+
+MATRIX
+[ 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250 260 270 280 290 300 310 320 330 340 350 360 370 380 390 400 410 420 430 440 450 460 470 480 490 500 510 520 530 540 550 560 570 580 590 600 610 620 630 640 650 660 670 680 690 700 710 720 730 740 750 760 770 780 790 800 810 820 830 840 850 860 870 880 890 900 910 920 930 940 950 960 970 980 990 1000 1010 1020 1030 1040 1050 1060 1070 1080 1090 1100 1110 1120 1130 1140 1150 1160 1170 1180 1190 1200 1210 1220 1230 1240 1250 1260 1270 1280 1290 1300 1310 1320 1330 1340 1350 1360 1370 1380 1390 1400 1410 1420 1430 1440 1450 1460 1470 1480 1490 1500 1510 1520 1530 1540 1550 1560 1570 1580 1590 1600 1610 1620 1630 1640 1650 1660 1670 1680 1690 1700 1710 1720 1730 1740 1750 1760 1770 1780 1790 1800 1810 1820 1830 1840 1850 1860 1870 1880 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980 1990 2000 2010 2020 2030 2040 2050 2060 2070 2080 2090 2100 2110 2120 2130 2140 ]
+[ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ]
+
+Glycine_max TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTGTAAGTATGAACTAATTCA-GACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTGTTTGATGGTATC-TACTACTCGGATAACCGTAGTAA-TTCTAGAGCTAATACGTGCAACAAACCCCGACTTC-TGGAAGGGATGCATTTATTAGATAAAAGGTCAACACAGGCTCTGCCTGTGCT-TTGATGATTCATGATAACTCGTCGGATCGCACGGCCTTTGTGCCGGCGACGCATCATTCAAATTTCTGCCCTATCAACTTTCGATGGTAGGATAGTGGCCTACCATGGTGGTGACGGGTGACGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCACATCCAAGGAAGGCAGCAGGCGCGCAAATTACCCAATCCTGACACGGGGAGGTAGTGACAATAAATAACAATACCGGGCTC-ATTGAGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAACGATGGATCCATTGAAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGACCTTGGGTTGGGTCGATC-GGTCCGCC-TCC--GTGTGCACCGGTC-GGCT--GTCCCTTCTGCCGGCGATGCG---CTCCTGTCCTTAACTGGCCGGG-TCGTGCC-TCC-GGTGCTGTTACTTTGAAGAAATTAGAGTGCTCAAAGCAAGC-CTACGCTCTGTATACATTAGCATGGGATAACACCACAGGATTCTGATCCTATTGTGTTGGCCTTCGGGATCGGA-GTAATGATTAACAGGGACAGTCGGGGGCATTCGTATTTCATAGTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACAACTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATCAGATACCGTCCTAGTCTCAACCATAAACGATGCCGA-CCAGGGATCAGCGGATGTTGCTTTTAGGACTCCGCTGGCACCTTAT-GAGAAATCGAAGTCTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGAGTGGAGCCTGCGGCT-AATTTGACTCAACACGGGGAAACTTACCAGGTCCAGACATAGTAAGG-TTGACAGACTGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCCTTCTTAGTTGGTGGAGCGATTTGTCTGGTTAATTCCGTTAACCAACGAGACCTCAGCCTGCTAAATAGCTAT--------------------------AGCTTCTTAGAGGGACTAT-GGCCGCTTAGGCCACGGAAGTTTGAGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATGTATTCAACGAGTCTATAGCCTTGGCCGACAGGTCCGGGTAATCTTTG-AAATTTCATCGTGATGGGGATAGATCATTGCAATTGTTGGTCTTCAACGAGGAATTCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGACTACGTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGAATGGTCCGGTGAAGTGTTCGGATTGCGGT-------------------------------GAGAAGTCCACTGAACCTTATCATTTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCGTAG???????????????????????????????????GACCCTGAT?CTTCT?TGAAGGGTTC?GAGTGAGAGCATACCTGTCGGGACCCGAAAGATGGTGAACT?TGCCTGAGCGGGGCGAAGCCAGAGGAAACTCTGGTGGAGGCCC?GCAGCGATACTGACGTGCAAATCG?TTCGTCTGACTTGGGTATAGGGGCGAAAGACTAATCGAACCGTGCGGGGGCCCCGGAAAGAGTTATCTTTTCTGTTTAACA?GCCTGCCCACCCTGGAAA?GCCTCAGCCGGAGGTAGGGTCCAGCGGCTGGA?AGAGCACCGCACGTCGCGTGGTGTCCGGTG--CCCCCGGCGGCCCTTGA [2059]
+Oryza_sativa TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTGCAAGTATGAACTAATTC-GAACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTGTTTGATGGTACG-TGCTACTCGGATAACCGTAGTAA-TTCTAGAGCTAATACGTGCAACAAACCCCGACTTCCGGG-AGGGGCGCATTTATTAGATAAAAGGCTGACGCGGGCTCCGCCCGCGAT-CCGATGATTCATGATAACTCGACGGATCGCACGGCCCTCGTGCCGGCGACGCATCATTCAAATTTCTGCCCTATCAACTTTCGATGGTAGGATAGGGGCCTACCATGGTGGTGACGGGTGACGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCACATCCAAGGAAGGCAGCAGGCGCGCAAATTACCCAATCCTGACACGGGGAGGTAGTGACAATAAATAACAATACCGGGCGCTTTAGTGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAACGA-GGATCCATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGACCTTGGGCGCGGCCGGGCCGGTCCGCC-TCACGGCAGGCACCGACCTGCT--CGACCCTTCTGCCGGCGATGCG---CTCCTGGCCTTAACTGGCCGGGTTCGTGCC-TCC-GGCGCCGTTACTTTGAAGAAATTAGAGTGCTCAAAGCAAGC-CATCGCTCTGGATACATTAGCATGGGATAACATCATAGGATTCCGGTCCTATTGTGTTGGCCTTCGGGATCGGA-GTAATGATTAATAGGGACAGTCGGGGGCATTCGTATTTCATAGTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACAACTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATCAGATACCGTCCTAGTCTCAACCATAAACGATGCCGA-CCAGGGATCGGCGGATGTTGCTTATAGGACTCCGCCGGCACCTTAT-GAGAAATCAAAGTCTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGCGTGGGGCCTGCGGCTTAATTTGACTCAACACGGGGAAACTTACCAGGTCCAGACATAGCAAGGATTGACAGACTGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGAGCGATTTGTCTGGTTAATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTAGCTATGCGGAGCC----ATCCCTCCGCAGCTAGCTTCTTAGAGGGACTAT-GGCCGTTTAGGCCACGGAAGTTTGAGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG--CGCACGCGCGCTACACTGATGTATCCAACGAGTATATAGCCTGGTCCGACAGGCCCGGGTAATCTTGGGAAATTTCATCGTGATGGGGATAGATCATTGCAATTGTTGGTCTTCAACGAGGAATGCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGACTACGTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGAATGGTCCGGTGAAGTGTTCGGATCGCGGCGACGGGGGCGGTTCGCCGCCCCCGACGTCGCGAGAAGTCCATTGAACCTTATCATTTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCGTAG???????????????????????GCACCGCTGGCCGACCCTGAT?CTTCTGTGAAGGGTTC?GAGTTGGAGCACGCCTGTCGGGACCCGAAAGATGGTGAACTATGCCTGAGCGGGGCGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GAAGCGATACTGACGTGCAAATCG?TTCGTCTGACTTGGGTATAGGGGCGAAAGACTAATCGAACCATGCGGGGGCCTCGGG?AGAGTT?TCTTTTCTGCTTAAC?GGCCCGCCAAC?CTGGAAACGGTTCAGCCGGAGGTAGGGTCCAGCGGC?GGAGAGA???GCACACGTCGCGCGGTGTCCGGTG--CCCCCGGCGGCCCTTGA [2119]
+Zamia_pumila TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTGTCAGTATGAACTATTTT-GGACGGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTCTTTGATGGTACTCTGCTACACGGATAACCGTAGTAA-TTCTAGAGCTAATACGTGCACCAAATCCCGACTTTTTG-AAGGGACGCATCTATTAGATAAAAGGCCGATGCGGGCTTTGCCCGGCGT-TTGGTGAATCATGATACCTTGATGGATTGCATGGCCCTCGAGCCGGCGACGCTTCATTCAAATTTCTGCCCTATCAACTTTCGATGGCAGGATAGAGGCCTACCATGGTGGTGACGGGTGACGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCCGAGAAACGGCTACCACATCCAAGGAAGGCAGCAGGCGCGCAAATTACCCAATCCTGACACGGGGAGGTAGTGACAATAAATAACAATACTGGGCTCATC-GAGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAACGA-GGATCCATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGATCTTGGGACGGCCCGGCC-GGTCCGCT-TTTTTGGGTGTGCACCGGCCGTTTCGTCCCTTTTGTTGGCGGCGCG---CACCTGGCCTTAACTGTCTGGG-TCGCGGT-TCC--ACGCTGTTACTTTGAAAAAATTAGAGTGCTCAAAGCAAGC-TTATGCTCTGAATACATTAGCATGGAATAACGGTATAGGATTCTGGTCCTATTGCGTTGGCCTTCGGGACCGGA-GTAATGATTAACAGGGACGGTCGGGGGCATTCGTATTTCATTGTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACCACTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATCAGATACCGTCCTAGTCTCAACCATAAACGATGCCGA-CCAGGGATCGGCGGATGTTGCTCTAAGGACTCCGCCGGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGAGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGGAAACTTACCAGGTCCAGACATAGCAAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGAGCGATTTGTCTGGTTAATTCCGTTAACGAACGAGACCTCGGCCTGCTAACTAGCTACGCGGAGGG----TTTCTTTCGTGGCCAGCTTCTTAGAGGGACTAT-GGCCGTTTAGGCCATGGAAGTTTGAGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATGTATTCAACGAGTCTATAACCTGGGCCGGGAGGTCCGGGAAATCTGGCGAAATTTCATCGTGATGGGGATAGATCATTGCAATTATTGATCTTCAACGAGGAATTCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGACTACGTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGAATGATCCGGTGAAGTGTTCGGATCGTGCCGACGACGGCGGTTCGCTGGGCGCGACGTCGCGAGAAGTTCATTGAACCTTATCATTTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCGTAG??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????-????????????????? [2120]
+Psilotum_n ???????????????????????????????????????????????????????????????????GCGAATGGCTCATTAAATCAGTTATAGTTTCTTTGATGGTACCTTGCTACTCGGATAACCGTAGTAA-TTCTAGAGCTAATACGTGCACCAACTCCCGACTTC-CGG-AGGGACGCATTTATTAGATAAAAGGCCGATGCGGGCTT-GCCCGGTTATGC-GT-ATTCATGATAACTCTGCGAATCGCACGGCC????????????????????????????????????????????????????????????????????????TGGTGACGGGTGACGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCACATCCAAGGAAGGCAGCAGGCGCGCAAATTACCCAATCC-GAC-CGGGGAGGTAGTGACAATAAATAA-AATACTGGGCTTTTCAAAGTCTGGTAATTGGAATGAGTACAATCTAAACCC?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AAGAACGAAAGTTGGG--CTCGAAGACGATCAGATACCGTCCTAGTCTCAACCATAAACGATGCCGA-CTAGG--TC-GCGGATGTTACCTTGATGACTCCGCCGGCACCTTAT--AGAAATC-AAGTCTTTGGGTTCCGGGGGGA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GGATTGACAGATTGAGAGCTCTTTCTTGGTTCTATGGGTGGT---G-ATGGCCGTT---AGTTGGTGGAG-G-TTTGTCTGGTTAATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTAGTTACGCGAAGGA----TCCTCTTCGTGGCCAACTT-TTAGAGGGACTAT-GGCCGCCTAGGCCATGGA???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GTCTTCAAC-A-GAATTCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGACTACGTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGAATGGTCCGGTGAAGTTTTCGGATTGCGGCGAGCGGTCCGCCGGCACGTTGT---------GAGAAGTTCATTAAACCTTATCATTTAGAGGAA?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????-????????????????? [2103]
+Equisetum_ar ???????????????????????????????????????????????????????????????????GCGAATGGCTGATTAAATCAGTTATAGTTTCTTTGATGGTACCTTGCTACTCGGATAACCGTAGTAA-TTCTAGAGCTAATACGTGCACCAACTCCCGACTTC-TGG--GGGA-GCATTTATTAGATAAAAGGCCGATGCGGGCTGTGCCCGGTAA----CGGATTC--GATAACTTCCCGGATCGCACGGCCT????ACGGGTGA????????????????????????????????????????????????????????????????????????CGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCACATCCAAGGAAGGCAGCGGGCGCGCAAATTACCCAATCC-GACACGGGGAGGTAGTGACAATAAATAACAATACTGGGCTTTTACAAGTCTGGTAATTGGAATGAGTACAATCTAAATCC?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AAGAACGAAAGTTGG---CTCGAAGAC-ATCA?ATACCGTCCTAGTCTCAACCATAAACGA-GC?GA-CTAGGGATT--CGGATGTTACTTCAATGACTCTGCCGGCACCTTAT-GAGAAATCAAAGTCTTTGGGTTCC----GGA-T??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TGACAGATTGAGAGCTCTTTCTTGATTCTATGGGTGGTAGTGCATGGCCGTTCTTAGTTGGTGGAGTGATTTGTCTGGTTAATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTAGTTACGCGAAGAC----TTGTCTTCGTGGCCAACTTCTTAGAGGGACTAT-GGCCGTCTAGGCCATGGA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TCTTCAACTAGGAATTCCTAGTAAGC-CGAGTCATCAGCTCGCGTTGACTA-GTCCCTGCCCTTTGTACACACTGCCCGTCGCTCCTACCGATTGAATGGTCCGGTGAAGTTTTCGGATT-CGGCGACGCTGGCGGT-CGCCGGCGACGTTGT---GAGAAGTTCATTGAACCTTACCATTTAGAG?????????????????????????????????????????????????????GCACCATCGACCGACCGTGAT?CTTCTGTGAAAGGTTT?GAGTGAGAGCATACCTGCTGGGACCC?AAAGATGGTGAACTATGCCTGAGCAGGGCGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGCGATACTGACGTGCAAATCG?TTCGTCAGACTTGGGTATAGGGGCGAAAGACTAATCGAACCATGCGGGGGCCCTGGGAAGAGTTCTCTTTTCTTTTTAACA?ACTTGCCCACCCTGAAATCGGATCAACCGGAGATAGGGTCCAGCGGTTGGT?AAAGCA?CGCAGGTC?TGCGGTGTCCGGTG--CCCCCGGCGGCCCTTGA [2108]
+Atrichum_angus ??????????????????????????????????????????????????????????????????????????????ATTAAATCAGTTATAGTTTCTTT-ATGGTACCTTGCTACTCGGATAACCGTAGTA--TTCTA-AGCTAATACGTGCACAAACTCCCGACCTC-TGGAAGGG-CGT-TTTATTAGATAAAAGGCCGATGC-GGCTT-GCCCGGTAT-TCGGTGACTCA-GATAACTCGTCGAATCGCACGGCCTTA?????????????????????????????????????????????????????????????????????????????????????AGAATT----TTCGATTCCGGA-AGGGAGCCTGAGAA-CGGCTACCACATCCA---AAGGCAG-?-??-?-?--ATT-CCCAATCC-GAC--GGGGAGGTAGT-ACAATAAATAACAATACTGGGCTTTTACAAGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAA--A??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CTTCTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAG???GAAAGTTGGGGGCTCGAAGACGATCAGATACCGTCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTTGCGGGTGTTAATTTGATGACCCCG-AAGCACCTTAT-GAGAAATC-AAGTATTTGGGTTCCGGGGGGAGTATG?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CTCTTTCTTGATTCTATGGGTGGT-GTGCATGGCCGTT-TT-GTTGGTGGAGTGATTTGTCTGGTTAATTCCGTTAAC-AACGAGACCTCAGCCTGCTAACTAGTTACACGAAGAA----TC-TCTTTGTGGCCAACTT-TTAGAGGGACTATTGGC-GTCT-GCCAATGGAA??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????ATAGATCATTGC-ATTATTGATCTTCAA--A-GAATTCC-AGTAAGCGCGAGTCATCAGCTCGCGTTGATTACGTCCCTGCCCTTTGTACACACC-CCCGTCGCTCCTACCGATTGAATGGTCCGGTGAAGTTTTCGGATCG-GGTGATCGGGTT----G-GTTCGG?GACTTGT--GAGAA-TTCATTAAA--TTATCATTTAGAGGAA??????????????????????????????????????????????????GCAC?AT?GACCGACCGTGAT?CTTCTGTGAAAGGTTT?GAGTGTGAGC?T?CCTGCTGGGACCC??AAGATGGTGAACTATGCCTGAGC?AGGCGAAGCCAGAGGAAACTCTGGTGGAGGCTC?G?AGC?ATACTGACGTGCAAATCG?TTCGTCAGACTTGGG?ATA????C?AAAGACT?ATCGAACCATGCGAGGGCCCCGGGAAGAGTTCTCTTTTCT?TTTAACA?GCCTGCCT?CCCTGGAATCGGATTACC?GGAGATAGGGTCCAGCGGCTGGT?AAAGCACCGCAC?TCTTGCGG?GTCCGG-G-GCCCC?GGCGGCCCGTGA [2080]
+Fissidens_taxi ???????????????????????????????????????????????????????????????????????????????????????GTTATAGTTTCTTT-ATGGTACCTTGCTACTCGGATAACCGTAGTAA-TTCTA-AGCTAATACGTGCACAAACTCC-GACTCG?TGGA-GGGACG-ATTTATTAGATAAAAGGC-GAT-C-------GCC-GGTGTT---GCGAATCA-GATAAC?AGTCGAATCGACCC??????????????????????????????????????????????????????????????????????????????TGACGGGTGACGGA?AATTAGGGTTCGATTCCG-A-A-GGAGCCTGAG---CGGCTACCACATCC--GGAAGGCAGC--GCGCGC--ATTACCCAATCC-GA---GGGGAGGTAGT-ACAATAAATAACAATACTGGGCTTTTACAAGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAA--A???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CTCGAAGACGATCAGATACCGTCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGGGTGTTGATTTGATGACCCCGCCAGCACCTTGA-GAGAAAT--AAGTTTTTGGGTTCCGGGGGGAGTATG?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CTCTTTCTTGATTCTATGGGTG-T-GTGCATGGCCGTT-TTAGTTGGTGGAGTGATTTGTCTGGTTAATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTAGTTACGCGAAGGATTTCTCTCCTTGGCGGCCAACTTCTTAGAGGGACTATCGGC-GTCTAGCCGATGGAA?TTT?A????????????????????????????????????????????????????????????????????????????????????????????????????AATCTTCTGAAATTTCATCGTGAT--GGATAGATCATTGCAATTATTGATCTTCAAC-A-GAATTCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGACTACGTCCCTGCCCTTTGTACACAC--CCCGTCGCTCCTACCGATTGAATGGTCCGGTGAAGTTTTCGGATTGCG?CGAC-?-GGGTTCG----CCGCGCGCTGT---GAGAAGTTCATTAAACCTTATCATTTAGA--A??????????????????????????????????????????????????????????????????????????TTCTGTGAAAGGTTC?GAGTGTGAGCATACCTGTTGGGAC????AAGATGGTGAACTAT???TGA???AGGCGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGCGATACTGACGTGCAAATCG??T?GT?AGACTTGGGTATAGGGGC???AGACTAATCGAAC?AT?CG?GGGCCCCTGGAAGAGTTCTCTTTTCT?TTTAAC?GGCCTGCCT??CCTGGAATCGGATTACCCGGAGATAGGGTCCAGCGGCCGGT?AAAG???CGCACGTCTTGCGG?GTCAGGTG--CCCTCGGCGGCCCT?GA [2082]
+Plagiomnium_cu ????????????????????????????????TGTGTAAGTATAAACT-CTTTTGTACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTCTTTGATGGTACCTTGCTACTCGGATAACCGTAGTAA-TTCTAGAGCTAATACGTGCACAAAATCCCGACTGG--G?AAGGGA?G-ATTTATTGGATAAAAGGCCGATGCGGGCTT-GCCCGGTTC-GCGG-GAC----GATAAC--GTCGAATCGCA-GGCCG???????????????????????????????????????????????????????????????????????????????????????????????????????????GA-A-GGAGCCT-AG---CGGCTACCACATCC-AGGAAGGC--C----------ATTACCCAACTCCGA---GGGGAGGTAGTGACAATAAATAACAATACTGGGC--TTACGGGCCCG---ATTGG--TGAGTA?AATCT-AATCCCTTAA?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TGAAATTCTTGGATTTATGAAAGACGAACTTCTGCGAAAGCATTTGCCAAGGATGTTTTCGTTAATCAA-AA-GAAAGTTGGGGGCTCGAAGACGATCAGATACCGTCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGGGTGTTGATTCGATGACCCCGCCAGCACCTTAT-GAGAAATC--AGTTTTTGGGTTCCGGGGGGAGTATG?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AGAGCTCTTTCTTGGTTCTATGGGTGGT-GTGCATGGCCGTT-TTAGTTGGTGGAGTGATTTGTCTGGTTAATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTAGTTACGCGAAGGATTTC-CTCCTTTGCGGCCAACTTC--AGAGGGACTATCGGC-GTC--GCCGATGGAAG?TTGA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????ATCATTGC-ATTATTGATCTTCAAC---GAATTCC-AGTAAGCGCGAGTCATCAGCTCG-GTTGACTAC-TCCCTGCCCTTTGTACACAC--CCCGTCGCTCCTACCGATTGAATGGTCCGGTGAAGTTTTCGGATCGCG??A?C????GTTCGCCGC?GG?GACGTTGT---GAGAAG-TCATTAAACCTTATCATTTA-AG?????????????????????????????????????????????????????GCACCATCGACCGACCGTGAT?CTTCTGTGAAAGGTTT?GAGTGTGAGCACACATGTTGGGACCC???AGATGGTGAACTATGCCTGAGCAGGGCGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGCGATACTGACGTGCAAATCG?TTCGTCAGACTTGGGTATAGGGGC?AAAGACTAATCGAACCATGCGAGGGCCCCTGGAAGAGTTCTCT?TTCT?TTT?AC?GGCCCGACGACCCTGGAATCGGTTCACCCGGAGATAGGGTCCAGCGGCCGGT?AAAGCACCGCACGTCTCGCGGTGTCAGGTG-GCCCTCGGCGGCCCGTGA [2074]
+Notothylas_bre ????????????????????????????????????????????????????????????????????????????????????????????????????????????CCTT-CTACTCGGATAAC-G-AGTAA-TTCTA-AGCTAA-ACGTGCAACAACTCCCGACT-C-TGGAAGG-A-G-ATTTATTAGATAAAAG---GATG---GCTT-GTCCCGTTT-A--CTGAATC-TGATAACTCCTCGAATCGCACGGCCCT???????????????????????????????????????????????????????????????????????????????????????????????GTTCGATTCCGGAGAGGGA--C-GAGAAACGGCTACCACATCC--?--AGGCAG---????----ATTACCCAATCC-GA---GGGGAGGTAGTGACAATAAATAACAATACTGGGCTTTTACAAGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAA--A????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AAAGTTGGGG-CTCGAAGACGATCAGATAC--TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGGGTGTTAATTAGATGACTCCGCCAGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGG???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CA-GGCCGTT-TTAGTTGGTGGAGTGA-TTGTCTGGTTAATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTAGTTACAC-AAGAA----CCTTCTTCGTGGCCAACTTCTTAGAGGGACTATTTGC-GTCTA-CGAATGGAA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GGA-AGATCATTGC-ATTATTGATCTTCAAC-AGGAAT-CCT-GTAAGCGCGAGTCATCAGCTCGCGTT-ACTACGTCCCTGCCCTTTGTACACAC-GCC-GTCGCTCCTACCGATTGAATGGTCCGGTGAAGTTTTCGGATTGCGGCGACACCGGGTCACCG-CCGGGGACGTT-T--GA-AA-TTCATTAAACCTTATCATTTA?A????????????????????????????????????????????????????????????????????CC?TGAT?CTTCTGTGA?AGGTTT?GAGTGTGAGCATACCTGCTGGGACCC????GATGGTGA?CTATGCCTGAGCAGGGCGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGCGATACTGA?GTGCAAATCG?TTCGTCAGACTTGGGTATAGGGGCGAAAG?CTAATCG?????????????CCCCGGG?AGAGTTCTC?TTTCTTTTTAACA?GCCTGCCTACCCTGAAATCGGATTACCCGGAGATAGGGTCCAGCGGCTGGT?AAAGCACCACACG?CTTGCGGTGTCCGGTG-?CCC??GGCGGCCCGTG? [2076]
+Phaeoceros_lae ?????????????????????????????????????????????????????????????????????????????????????????????????????GATGGTACCTTGCTACTCGGATAACC--AGTAA-TTCTA-AGCTAAT-CGTGCAACAACTCCCGGCTTT-TGG-AGGG-TGT-TTT-TTAG-TAAAAG---GA-GCGG-CTT-GTCCCGGTTTACGGTGAA-CW-GATAACTCCTCGGATCGCACGGCCCT??????????????????????????????????????????????????????????????????????????????????ACGGA-AATTAGGGTTCGATTCCGGA-A-GGAGCCTGAGAAACGGCTACCACATCC-AG-AAGGCA-CA--CGCGC--ATTACCCAATCC-GAC-CGGGGAGGTAGTGACAATAAATAACAATACTGGGCTTTTACAAGTCTGGTAATTGGAATGA-TACAATCTAAATCCCTTAAC?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GAAAGTTGGG--CTCGAAGACGAT-AG-TACCGTCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGGATGTTAATTAGATGACTCCGCCAGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTAT?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????T--TGCATGGCCGTT-TTAGTTGGTGGAGTGATTTGTCTGGTTAATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTAGTTACACGAAGAA----CCTTCTTCGTGGCCAACTTCTTAGAGGGACTATTTGC-GTCTAGCGAATGGAA???????????????????????????????????????????????????????????????????????????????????????????????????????????ATCTTTG-AAATTTCATCGTGAT--GGATAGATCATTGCAATTATTGATCTT-AA----GAATT--TAGTAAGCGCGAGTCATCAGCTCG-GTTGACTA-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGAATGGTCCGGTGAAGTTTTCGGATTGCGGCGACA-CGGGT?ACC--GCCGGGACGTTGT--GAGAAG-TCATTAAACCTTATC-TTTAGAGGAA??????????????????????????????????????????????????GCACCATCGACCGACCATGAT?CTTCTGTGAAAGGTTT??AGTGTGA??ATACCTGCTGGGACCC??AAGATGGTGAACTATGCCTGAGTCAGGCGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGCGATACTGA?GTGC?AATCG?TTCGTCAGACTTGGGTATA?GGGC???AGACTAATCGAACCATGCG?GGGCCCCGGG?AGAGTTCTCTTTTCT?TTTAACA???CTGCCTGCCCTGAAATCGGATTACCCGGA?ATAGGGTCCAGCGGCTGGT?AAAGCACCACACGTCTTGCGGTGTCCGGTG-GCCCCTGGCGGCCCGTGA [2082]
+Porella_pi ??????????????????????????????????????????????????????????????????????????????????????????????????TTTGATGGTACCTTGCTACTCGGATAACC-TAGTAA-TTCTAGAGCTAATACGTGCACCAACTCCCGACTTC-TGGAAGGG-CGTATTTATTAGATAAAAGACCGATGCGGGC-T-GCCCGGTGTTGCGGTGAATCATGATAACTCGTCGAATCGCACGGCC???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AAACGGCTACCACATCCAAGG-AGGCAGCCGG-GCG---ATTACCCAATACCGACACAGG?AGGTAGTGACAATAAATAACAATACTGGGCTTTACCAAGTCTGGTAATTGGAATGAGTACAATCTAAATCC?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AA?AAC?AAAGTTGGG--CTCGAA-ACGAT-AGATACCGTCCTAGTCTCAACCATAAACGATGCCGAGCTAGGGATTG--GGATGTTAATTTGATGACTCCGC-AGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCC??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CC-----TAGTTGGTGGAG-G--TTGTCTGGTTAATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTAGTTACACGAAGAA----TCTTCTTTGTGGCCAACTT-TTAGAGGGACTATT--C-GTCTAGCCAATGGA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TCTTCAAC-AGGAAT-CCTAGTAAGC-CGAGTCATCAGCTCGCGTTGACTACGTCCCTGCCCTTTGTACACAC--CCCGTCGCTCCTACCGATTGAATGGTCC-GTGAAGTTTTCGGATTGCGGCGACGCGGCGGTTCGCTGCCGGGACGTTGT--GAGAAGTTTATTAAACCTTATCATTTA?A??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? [2105]
+Conocephal_con ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????ACGTGCACC-AGGCTCGAC---?TGGAAGGG--G--TTTTTTAGATAAAAGACCGATGGGGGTGCTGCC-GGTGATTC-GGGA-TC-TGATAACTCGACGAATCGCACGGCC??????????????????????????????????????????????????????????????????????????????????????????????????????????????????GAGCCTGAGAAACAGCTACCACATCCAAGGA-GGCAGCAGGCGCG---ATTACCCAATCCCGACACGGGG-GGT-GTGACAATAAATAACAATACTGGGCTTTTACAAGTCTGGTAATTGGAATGAGAACAATCTAAATC???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AAGGATGTTT--ATTAA--AA-AA-GAAA-TTG-------GAAGACGATCAGATACC--CCTAGTCTCAACCATAAACGATGCCGA-CTAG--ATC--CGGATGT?CTTTTGATGACTCCGCCGGCACCTCCA-GAGAAATCAAA-TTTTTGGGTTCC?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CTCTTTCTT-ATTCTATGGGT--T--TGCAT---CGTTCTTAGTTGGTGGAGTGATTTGTCTGGTTAATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTA-CTACGCGAGTCCATTT--TTTGTCCTGCGCAGCTT-TTAGAGGGACT---GG---TC--GCC-ACGGAA???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TAGATCATT?C?ATT?TTGATCTTGAA-----AATTCC--GTA--CGCGAGTC-T----TCGCGCTGATT-CGTCCCTGCCCTTTGT-C-C-CCGCCC--CGCTCCT-CCGATTGAATGGTCCGGTGAAGAGTTCGGA-CGCGGCGACGTGC--?GTCGCCGCCGGGACGTTGT--GAGAAGTTCTTT-AACCTTATCA-TTAGA?????????????????????????????????????????????????????????CCAGCGACC??????????????TGCGAAAGGTT??GAGT??GAGCGTGCCTGTTGGGACCC??AAGATGGTGA?CTATGC?TGAGCAGG?CGAAGCCGGAGGAAACTCCGGTGGAGGCTC?GTAGCGATACTGACGTGCAAATCG?TTC?TCAGACTCGGG?ATA??????AAAGACT?ATCGAACCATGCGG??GCCCCGGGAAGAGTTTTCTTTTCT?TTT?AC?GACCTGCC?GCCCTGGAATCGCTTTATGCGGAGATAGGGCCCAGCGGTCGGT?AAAGCGTCGCAAGTCTTGCGG?GTCCGGTGCGCCCCCGACGGTCC??GA [2058]
+Asterella_tene ?????????????????????????????????????????????????????????CTGTGAAACTGCGAATGGCTC-TTAAATC-GTTATAGTTTCTTTGATGGTGCCTT-CTACTCGGATAACCG-AGTAA-TTCTAGAGCTAATACGTGCACCAACGCCCGACTTTCCGGAAGGG-TGT-TTTATTAGATAAAAGACCGATG---GCTT-GCCC-GGTGATT-CGGAATCATGATAACTCGACGAATCGCACGGCCT??????????????????????????????????????????????????????????????????????????????????????????????????????????????AGGGAGCCTGAG?AACGGCTACCACATCC-AG-AAGGCAG-A---GC-C--ATTACCCAATCC-GAC-----GAGG-AGTGACAATAAATAACAATACTGGGCT-TTACAAGTCTGGTAATTGGAATGAGTACAATCTAAATCCC?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CTTCTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATCAGATACCGTCCTAGTCTCAACCATAAACGATGCCGA-CTAGG-ATCG--GGATGT?GATTAGATGACTCCGCCGGCACCTCCATGAGAAATCAAAGTTTTTGGGTTCCGGGGGGAG-ATG?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TGGTGG-GTGATTTGTCTGGTTAATTCCGTTAACGAAGGAGACCTCAGCCTGCTAACTA-CTACGCGGGGGT----WCTCCCCTGCGGCCAGCTT-TTAGAGGGACTGTCGGC-GTCTAGCCGA-GGA?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AGTCATCAGCTCGCGTTGACTACGTCCCTGCCCTTTGTACACAC-GCCCGTCGCTCCTACCGATTGAATGGTCCGGTGA-GAGTTCGGATCGCGGCGACGCGCG-GTTCGCCGCCGGGACGTTG---GA-AAGTTCTTTAAACCTTATCA????????????????????????????????????????????????????????????T?AACATCGACCGACCATGAT?CTTCTGTGAAAGGTTC?G?GT?GGAGCATGCCTGTTGGGACCC??AAGATGGTGAACTATGC?TGAGCAGGGCGAAGTCAGAGGAAACTCTGGTGGAGGCTC?GTAGCGATACTGACGTGCAAATCG?TTCGTCAGACTCGGG?ATA??????AAAGACTAATCGAACCATGCGGAGGCCCCGGGAAGAGTTTTCTTTTCT??TT?AC?GACC?GCCGGCCCTGAAATCGCATTACGCGGAGATAGGGCCCAGCGGTCGGC?AAAGCGTCGCA?GTCTTGCGG?GTCCGGTG?GCCCCCGACGGCCCC?GA [2097]
+Riccia ?????????????????????????????????????????????????????????????????????????????????????????????????????????????TTTACTACTCGGATAACC-TAGTAA-TTCTAG-GCTAATACGTGCACCAACGCCCGACTTCGCGGAAGGGCTGTATTTATTGGATAAAAGGCCGATG-GGGCTTGCCCCGGTGTTT-CGTGAATCATGATAACTCGACGAATCGCACGGCCCCC??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CGCAAATTACCCA-TCC-GAC-----GA--TAGTGACAATAAATAACAATAGTGGGCT-TTACAA-TC--GTAATTGGAA--AGTACAATCTAAATCCCTTA??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AAAGCATTTGCCAAGGATGTTTTCATTAAT-AACAA--AAAGTTGG?GGCTCGAAGACGATCAGATACC-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATCGGCGGATGT?GATTTGATGACTCCGCCGGCACCTCCT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTAT??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????ATTGAGAGCTCTTTCTTGATTCTATGGGT--T--TGCATGGCCG-TCTTAGTTGGTGGAGTGATTTGTCTGGTTAATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTAGCTACGCGGGGGT----TCTCCC-TGCGGCCAGCTT---AGAGGGACT--CGG---TCTAGCCGACGGAA??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TTGC?ATTATTGATCTTCAAC-A-GAATTCC-AGTAA---CGAGTCGAACAGTCGCGCTGACTACGTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGAATGGTCCGGTGA-GAGTTCGGATCG---CGAC------GTTCGCCGC-GGGACGTTGT--GAGAAGTTCTTTAAACCTTATC-TTTAGA???????????????????????????????????????????????????????????????????????????????????A?AAGGTTCGGAGTAAGAGCATGCCT?TTGGGACCC??AAGATGGTGAACTAT???TGAG?A?GGCGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGCGATACTGACGTGCAAATCG?TTCGTCAGACTTGGG?ATAG??G??AAAGA?TAATCGAACCAT??????GCCCCGGGAAGAGTTTTCTT?TCTT?TT?AC?GACC?GCC?GCC?TG?AATCGCA?TACGC?GAGATAGGGCCCA?CGGTCGGC?AAAGCGTCGCA??TCT??CGGCGTCCGGTGC?????????????????? [2084]
+Klebsormid_fla ????????????????????????????????????????????????????????????????????????????????????????????????????????????CCTTA-TACTCGGATAACCGTAGTAAGTTCTA-AGCTAATACGTGCACCAAATCCCGACTTC-TGGAAG?ACGTGATTTATTAGATAAAAGGCCAATGCGGGCTT--CCCGGTATTGCGGTGAATCATGATAACTCGTCGAATCGCACGGCCTTTGCGCTG??????????????????????????????????????????????????????????????????TAACGGGTGACGGAGAATT?GGGTTCGATTCCGGAGA?GGAGCCTGAGAAACGGCTACCACATCCAAGGAAGGCAGCAGGCGCGC--ATT-CCCAATCCTG-T-CAGGGAGGTAGTGAC-ATAAATAACAATGCTGGGCTTTTCAAAGTCTGGCAATTGGAATG??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AAGGATGTTTTCATTAAT---GA--GAAAGTTGGGGGCTCGAAGACGATCAGATACCGTCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGGATGTTAATTTGATGACTCCGCCAGCACCTTAT-GAGAAATC--AGTTTTTGGGTTCCGGGGGGA-TATGGTC?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AACGAACGAGACCTCAGCCTGCTAACTAGTTACACGGAGAT----TCTTCTCCGTGGCCAACTTCTTAGAGGGACT??????????????????GGAA?TTTGA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TCGCGTTGATTTAGTCCCTGCCCTTTGTACACAC-GCCCGTCGCTCCTACCGATTGAATGATCCGGTGAAGTTTTCGGATTGCGGCTACTGGTCCGCCGCCGAAGAAGCTGTGAG--GCAAGGTTCATTAAACCTTATCATTTAGAGGA???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AGATGGTGAACTATGCCTGAGGCAGGCGAAGCCAGAGGAAACTCTGGTGGAGGCTC?G?A?CGATACTGACGTGCAAATCG?TTCGTCAG?CTTGGG??TA??GCGGAAAGACTAATCGAACCAT?????????????GAAGAGTTCTCTTTTCTTTTTAACAGTCC?GCCCACCCTGGAATCAGATTAACTGGAGATAGGGTCCAGCGACTGGG?AAAGCATCGCACGTCTCGCGGTGTCTGGTGCGCCCT?GACGGCCCTTGA [2120]
+Coleochaet_nit ????????????????????????????????????????????????????????????????????????TGGCTCATTAAATCAGTTATAGTTT-TTTGATGGTAGCC---TACTCGGATAACC-T-GTAA-TTCTAGAGCTATACCGTGC-CC--ATCC-GACTTC-TGGAAGG--GGTATTTGTTAGATAAAAGACCAAT----GCTC-GCCCGGTGTT-CGGTGAATC--GATAACTCCTCG?ATCGCACGGCCT??????????????????????????????????????????????????????????????????????????????????????????????????????????GGAGAGGGAGCCTGAGAAACGGCTACCACATCCAAGGA?GGCAG--GGCGCG--GATTACCCAATCCTGATACAGGGAGGTAG--ACAATAAATAACA-TACTGGGCTTTTA-AAGTCTGGT?ATTGGAATGAGTACAATCTAAATCTC????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CATTAATCAAGAA-GAAAGTTGGGGGCTCGAAGACGATCAGATACCGTCCTAGTCTCAACCATAAACGATGCCGACCTAGG-ATCAACGGATGTTAATTTAATGACTCCGCCAGCACCTTAT--AGAAA-CAAAGTTCTTGGGTTCC??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AT--CCAGTTTTCGTTCW-GGAGTGATTTGTCTG-TTAATTC?G?TAACGAAGGAG?CCTCAGCCTGCTAACTAGGCTAACG---------TTTTGTTGGGAC---ACTTGTTAGAGGGACT??????????????????GGA??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????G-TCTCGAACGA-GAATACCTAGTAAGCGCTCGTCATCAGCGTGCGCT-ACTACGTCCCTGCCCTTTGTACACAC-GCCCGTCGCTCCTACCGATAGAATGCTCCGGTGAAGCATTCGGATCGCCACCGGCGGGCAACTCCGGAGACGGCATG------AGAA-TT-GTTGAACCTTATCGTTTAGAGGA????????????????????????????????????????????????????CACCACGCGCCGATCC???????????GGAAGGGTTC?GAGCTGAGA?A?GTATGTTGGGACCC???AGATGGTGAACTATGCCTGA??AGG?CGAAGCCAGAGGAAACTCTGGTGGAAGATC?GCAGC?ATACTGACGTGCAAATCG?TTCGTCGGACTTG?GTATA????C?AAAGACT?ATC?AACCATGCGGGG?CTCCGGG?AGAGTTTT?TTTTCTTTTTGACA?GTC?GAGCGCCCTGGAATTGATT?C?CGGCG?GAGGGTGC?GAAAGCTGGC?AGAGCG-CGCACTGGT??CGGTGTC?GGTG?AC?CCG??TT?CCCTAGA [2084]
+;
+END;
+
+
+BEGIN CODONS;
+GENCODE UNIVNUC
+;
+END;
+
+BEGIN ASSUMPTIONS;
+ OPTIONS DEFTYPE=unord PolyTcount=MINSTEPS ;
+
+ EXSET * POOR = 1-32 221-229 261-335 524-901 1123-1230 1360-1382 1422-1527 1702-1732 1766-1815;
+
+END;
+
+
+
+
+BEGIN MACCLADE;
+v 3.0
+-1474214696
+0100&/0
+0
+0
+END;
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/LPMolecular.nex
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/LPMorph.nex
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/LPMorph.nex 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/LPMorph.nex 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,316 @@
+#NEXUS
+[MacClade 3.01 registered to Equator, UCMP]
+
+BEGIN DATA;
+DIMENSIONS NTAX=27 NCHAR=113;
+
+[!This is the final revised morphological matrix for land plants (LP-MORPH),
+corrected 12/93, per comments of co-authors.
+
+**used in the Ann .Mo. Bot. 81: 451-483 (Mishler et al. 1994) green plant synthesis paper.
+
+Characters are re-numbered as they are used in our text, but you can see Karen Renzaglia's old
+numbers (from the sperm data set, Garbary et al. 1993, Pl. Syst. & Evol.,
+which see for more details on characters), or reference to other literature
+(M&C = Mishler and Churchill, 1985, Cladistics 1:305-328) as footnotes to the characters.]
+FORMAT MISSING=? GAP=- SYMBOLS= " 0 1 2 3 4 5 6";
+[OPTIONS MSTAXA=UNCERTAIN ;]
+
+CHARLABELS
+ [1] apical_cell_in_antheridia [2] div._pat._in_young_antheridia [3] endogenous_antheridia [4] antheridial_stalk [5] operculum_cells
+ [6] sperm_in_pollen_tube [7] number_of_sperm_per_male_struc. [8] nascent_spermatids [9] diagonal_spindle_in_final_mitot [10] replication_of_the_centrioles
+ [11] time_of_origin_of_centrioles [12] basal_bodies_and_flagella [13] bicentrioles [14] basal_body_position [15] proximal_extension_A
+ [16] proximal_extension_B [17] stellate_transition [18] connect._fibers_betw._basal_bod [19] basal_body_structure [20] BB_staggering_assoc._w._MT_grow
+ [21] regression_of_LS [22] 'LS/AM_elongation_longit.' [23] spline_aperture [24] sline_aperture_location [25] position_of_developing_MLS
+ [26] plaque_stratified_betw._blephar [27] 'spline/LS_orientation' [28] posterior_notch_to_LS [29] LS_position [30] stray_spline_MT
+ [31] accessory_band_of_MTs [32] maturational_elongation_of_AM [33] spline_shank [34] osmiophilic_crest [35] anterior_osmiophilic_crest
+ [36] changes_in_BBs_at_mat. [37] matrix_around_BBs [38] posterior_of_the_stellate_patt. [39] flagellar_scales [40] late_blepharoplast_w._transient
+ [41] direction_of_flagellar_emergenc [42] nuclear_shape_at_maturity [43] nuclear_posterior_shape [44] median_constriction [45] splin_attached_to_nucleus
+ [46] spline_growth_assoc._w._nucl._s [47] direction_of_nuclear_compaction [48] condensed_chromatin_strands [49] diverticulum_during_shaping [50] number_of_gyres_of_nucleus
+ [51] dense_body_in_ant._mitochondrio [52] mit._assoc._w._plastids_in_sper [53] mit._assoc._w._plastids_in_sper [54] specialized_ant._mito. [55] specialized_posterior_mito.
+ [56] additional_mito._in_ant._of_cel [57] origin_of_AM [58] osmophilic_material_underneath [59] change_from_cristae_sacs_to_baf [60] monoplastidic_sperm
+ [61] plastid_determines_division_pol [62] starch_grains_in_single_plastid [63] sperm_plastid_contacting_nucleu [64] fibrillenscheide [65] cytoplasmic_loss
+ [66] embryo [67] cuticle [68] lunularic_acid [69] elaters [70] oil_bodies
+ [71] 'D-Methionine' [72] stomates [73] vert_div_of_zygote [74] xylem [75] phloem
+ [76] perine_layer_on_spores [77] 'aerial_sporophyte_axis_(persist' [78] columella [79] Multicellular_rhizoids [80] leaves_on_gam.
+ [81] independent_sporophyte [82] branched_sporophyte [83] tracheids [84] lignin [85] 'long_exserted_seta_(of_liv._typ'
+ [86] oil_body_cells [87] spore_mother_cells_lobed [88] 'capsule_2-4_valved' [89] 'caps_wall_cells_w/_trans_thick' [90] thick_caps._wall
+ [91] elongate_antheridia [92] aerial_calyptra [93] paraphyses [94] costate_leaves [95] peristome
+ [96] operculum [97] cylindical_sprogen_layer [98] transfer_cells_on_gam_side [99] transfer_cells_on_spor.__side [100] seed
+ [101] megaphyll [102] microphyll [103] 'lateral,_broad_sporangia' [104] exarch_maturation_of_xylem [105] cp_DNA_inversion
+ [106] sporangia_borne_on_leaves [107] trichomes [108] flavonoids [109] retention_of_zygote [110] sheathed_hairs
+ [111] polyphenolics_induced_by_sex [112] parenchyma [113] beaked_muscilage_papillae
+ ;
+STATELABELS
+ 1 absent present,
+ 2 'four-celled' 'two-celled',
+ 3 absent present,
+ 4 absent present,
+ 5 absent present,
+ 6 absent present,
+ 7 1000+ '100-1000' '16-24' 2,
+ 8 paired not_paired,
+ 9 absent present,
+ 10 present absent,
+ 11 always_present sperm._mother_cells sperm._moth._cell_progenitor earlier,
+ 12 two more_than_two,
+ 13 present absent,
+ 14 right_angles 'side-by-side' 'staggered_ant-post' staggered_continous,
+ 15 absent long short,
+ 16 'ventral_-_dorsal' ventral,
+ 17 present absent,
+ 18 present absent fine_filaments_w._centrin,
+ 19 monomorphic dimorphic,
+ 20 absent present,
+ 21 absent complete partial,
+ 22 parallel perpendicular,
+ 23 absent present,
+ 24 left_of_center right_of_center,
+ 25 adjacent_to_BBs beneath_BBs,
+ 26 absent present,
+ 27 90_deg. 45_deg.,
+ 28 absent present,
+ 29 under_all_BBs under_ABB_only under_some_BBs,
+ 30 absent present develops_late,
+ 31 absent present,
+ 32 absent posterior,
+ 33 wide less_than_4_tubules,
+ 34 absent present,
+ 35 absent present,
+ 36 absent dense_material_at_tip BB_cartwheel_w._plug BB_triplets_impreg._w._matrixma,
+ 37 homogenous mottled,
+ 38 extracell._or_partly entirely_intracell.,
+ 39 present absent,
+ 40 yes no,
+ 41 toward_side toward_rear toward_anterior,
+ 42 ovoid elongate,
+ 43 not_expanded expanded,
+ 44 absent present,
+ 45 yes detached_at_maturity never_attached,
+ 46 absent present,
+ 47 outer_shell anterior_to_posterior at_equal_rates_along_nucl. general_increase_in_density,
+ 48 'spaghetti-like' perpendicular_to_spline 'spiral-central_strand' general_compaction spikes irregular_plates solid_mass_from_ant._tip,
+ 49 absent present,
+ 50 not_coiled '0.5-3' greater_than_3,
+ 51 absent present,
+ 52 absent present,
+ 53 absent present,
+ 54 present absent,
+ 55 present absent,
+ 56 absent row_of_mito._behind_AM numerous_unspecialized,
+ 57 fusion elongation,
+ 58 absent present,
+ 59 absent present,
+ 60 present absent,
+ 61 'present_-_at_poles' 'present_-_asymmetrical' absent,
+ 62 more_than_one one,
+ 63 absent present,
+ 64 absent present,
+ 65 absent partial 'complete_(or_tiny_remn.)',
+ 66 absent present,
+ 67 absent present,
+ 68 absent present,
+ 69 absent present,
+ 70 absent present,
+ 71 not_recognize recognize,
+ 72 absent present,
+ 73 absent present,
+ 74 absent present,
+ 75 absent present,
+ 76 absent present,
+ 77 absent present,
+ 78 absent present,
+ 79 absent present,
+ 80 absent 'present_(of_moss_type)' 'present_(of_junger._type)',
+ 81 absent present,
+ 82 absent present,
+ 83 absent present,
+ 84 absent present,
+ 85 absent present,
+ 86 absent present,
+ 87 absent present,
+ 88 absent present,
+ 89 absent present,
+ 90 'absent_(unistrat.)' 'present_(2-10_strat.)',
+ 91 absent present,
+ 92 absent present,
+ 93 absent present,
+ 94 absent present,
+ 95 absent present,
+ 96 absent present,
+ 97 absent present,
+ 98 absent present,
+ 99 absent present,
+ 100 absent present,
+ 101 absent present,
+ 102 absent present,
+ 103 absent present,
+ 104 absent present,
+ 105 absent present,
+ 106 absent present,
+ 107 absent present,
+ 108 absent present,
+ 109 absent present,
+ 110 absent present,
+ 111 absent present,
+ 112 absent present,
+ 113 absent present,
+;
+
+MATRIX
+ [----+--10|----+--20|----+--30|----+--40|----+--50|----+--60|----+--70|----+--80|----+--90|----+-100|----+-110|---]
+CHARA ?????0??0030?00?020???0??0???00?0000000?11000000010??1?1?011201020000000000000000000000000?0000000000000?00100000
+NITELL ?????0??0030?00?020???0?000??00?0000000?11000000010001???0?1201020000000000000000000000000?0000000000000?00100000
+COLEOC_PUL ?????0???000?00?0?0?000?000??0000000000?00?00???000000?1??0000?010000000000000000000000000?0000000000000?00011100
+COLEOC_ORB ?????0??1000?00?0?0?000?000??0000000000?00?00???000000?1??0000?010000000000000000000000000?0000001000000?00011110
+PHAEOCEROS 0011000001101111100?200?101000010003001?1101001101111000011011102110001110000100000000000000000001000000?00010110
+NOTOTHYLAS 0011000001101111100?200?101000010003001?1101001101111000011011102110001110000100000000000000000001000000?00010110
+MARCHANTIA 000100000110121001112011101100000003001?1100001011001000001010112111110000000000000001000000000001100000000110110
+SPHAEROCARPOS 000100000110121001112011101100001003001?1100001011001000001010??211111000000000000000{01}000000000001100000?00110110
+PELLIA 010100000110121001112011101000000003001?1100101011001000001010112111110000000000000010111100000000000000?00110110
+BLASIA 0?0100000110121001112011101100000003001?1100001011001000001010112111110000000000000010111100000001100000?00110110
+JUNGERMANNIA 010100000110121001112011101000000003001?1100101011001000001010112111110000000002000010111100000000100000?00110110
+HAPLOMITRIUM 010100000110121?01112010101000?00?03001?11000015?10010000010?1??2111110000000000000010110000000001100000?00110110
+TREUBIA 01010000011012100111?010101000?00?03?01?11?0001???0??0000??0?0??211111000000000000001011110000000??00000?00110110
+SPHAGNUM 110100011110121011111011101012010003001?1100012201011000001001002110001100011111000000000001000100000000?00010110
+ANDREAEA 1101100111101210?1112011101010010003001?1100012201011000001000002110001001011111000000000011110000100000?00010111
+POLYTRICHUM 110110011110121001112011101011011003001?1100012201011000001000002110001101111111000000000011111110100000?00010110
+HYPNUM 110110011110121001112011101011010003001?1100012211011000001000002110001101111111000000000011111111100000000110110
+TAKAKIA 11011001111012100111?01110101??10?03?01?1100?????10?10000?1000??2110001001??11?10000000000110?0000100000?00110111
+LYCOPODIELLA 0?00001?1110140?020?010?1010000?0?00101?10?000??00001010?000?0001110001101111000111100000000000001100111000110110
+LYCOPODIUM 0?00001011101221020?010?101000010000101?10000?3310000010?0100010{12}110001101111000111100000000000001100111000110110
+SELAGINELLA 0??0?01??110?2210?0?200?101000010000101?110000?401001000?010?000211000110111100011110000000000000??00111000110110
+EQUISETUM 0?0000111111030?0100010?1110201001100011111000330100001110012?00111000110111100011110000000000000??00?00110110110
+PTERIDIUM 0?000021112103210?00010?111020100112?011111000330200001110012?001110001111111000111100000000000001101000111110110
+MARSILEA 0??0?0211121030?0100010?1110200000020011110000160200001010012?00111000111111100011110000000000000??01000?11110110
+OSMUNDA 0?000021112103210?00010?1110201001110011111000330100001110012?001110001111111000111100000000000001101000111110110
+GINKGO ?????13?11?1030?0100010?1?1020000110011020?02???00000112?0012?0001100011011?100011110000000000000??11000111110110
+ZAMIA ?????13?11?1030?0100010?1?1020000110011020?02???00000112?0012?0001100011011?100011110000000000000??11000111110110
+;
+END;
+
+BEGIN ASSUMPTIONS;
+ OPTIONS DEFTYPE=unord PolyTcount=MINSTEPS ;
+
+ TYPESET * order_two = unord: 1-6 8-49 51-113, ord: 7 50;
+
+ WTSET * CURRENT = 1: 1-113;
+
+ EXSET sperm_only = 1-65;
+ EXSET general_morph = 66-113;
+
+END;
+begin paup;
+ constraint moss+trach = (1,2,3,4,5,6,7,8,9,10,11,12,13,(14,15,16,17,18,19,20,21,22,23,24,25,26,27));
+ constraint horn+moss+trach = (1,2,3,4,7,8,9,10,11,12,13,(5,6,14,15,16,17,18,19,20,21,22,23,24,25,26,27));
+ constraint bryos = (1,2,3,4,(19,20,21,22,23,24,25,26,27,(5,6,7,8,9,10,11,12,13,14,15,16,17,18)));
+
+end;
+
+BEGIN NOTES;
+ TEXT CHARACTER=1 TEXT= 'KAREN''S_#2';
+ TEXT CHARACTER=2 TEXT= 'KAREN''S_#3';
+ TEXT CHARACTER=3 TEXT= 'KAREN''S_#5';
+ TEXT CHARACTER=4 TEXT= 'KAREN''S_#6';
+ TEXT CHARACTER=5 TEXT= 'KAREN''S_#7';
+ TEXT CHARACTER=6 TEXT= 'KAREN''S_#8';
+ TEXT CHARACTER=7 TEXT= 'KAREN''S_#10__!ORD';
+ TEXT CHARACTER=8 TEXT= 'KAREN''S_#12';
+ TEXT CHARACTER=9 TEXT= 'KAREN''S_#14';
+ TEXT TAXON=20 TEXT= 'Lycopodium_obscurum_added_from_Karen''s_notes_sent_3/1/93_--_note_that_the_old_Lycop_is_now_Lycopodiella_!';
+ TEXT CHARACTER=10 TEXT= 'KAREN''S_#15';
+ TEXT CHARACTER=11 TEXT= 'KAREN''S_#16';
+ TEXT CHARACTER=12 TEXT= 'KAREN''S_#17 ';
+ TEXT CHARACTER=13 TEXT= 'KAREN''S_#18';
+ TEXT CHARACTER=14 TEXT= 'KAREN''S_#19 ';
+ TEXT CHARACTER=15 TEXT= 'KAREN''S_#20';
+ TEXT CHARACTER=16 TEXT= 'KAREN''S_#21';
+ TEXT CHARACTER=17 TEXT= 'KAREN''S_#22';
+ TEXT CHARACTER=18 TEXT= 'KAREN''S_#24';
+ TEXT CHARACTER=19 TEXT= 'KAREN''S_#25';
+ TEXT CHARACTER=20 TEXT= 'KAREN''S_#26';
+ TEXT CHARACTER=21 TEXT= 'KAREN''S_#27';
+ TEXT CHARACTER=22 TEXT= 'KAREN''S_#28';
+ TEXT CHARACTER=23 TEXT= 'KAREN''S_#30';
+ TEXT CHARACTER=24 TEXT= 'KAREN''S_#31';
+ TEXT CHARACTER=25 TEXT= 'KAREN''S_#32';
+ TEXT CHARACTER=26 TEXT= 'KAREN''S_#34';
+ TEXT CHARACTER=27 TEXT= 'KAREN''S_#35';
+ TEXT CHARACTER=28 TEXT= 'KAREN''S_#37';
+ TEXT CHARACTER=29 TEXT= 'KAREN''S_#38';
+ TEXT CHARACTER=30 TEXT= 'KAREN''S_#39';
+ TEXT CHARACTER=31 TEXT= 'KAREN''S_#40';
+ TEXT CHARACTER=32 TEXT= 'KAREN''S_#44';
+ TEXT CHARACTER=33 TEXT= 'KAREN''S_#47';
+ TEXT CHARACTER=34 TEXT= 'KAREN''S_#49';
+ TEXT CHARACTER=35 TEXT= 'KAREN''S_#50';
+ TEXT CHARACTER=36 TEXT= 'KAREN''S_#51';
+ TEXT CHARACTER=37 TEXT= 'KAREN''S_#52';
+ TEXT CHARACTER=38 TEXT= 'KAREN''S_#53';
+ TEXT CHARACTER=39 TEXT= 'KAREN''S_#54';
+ TEXT CHARACTER=40 TEXT= 'KAREN''S_#55';
+ TEXT CHARACTER=41 TEXT= 'KAREN''S_#57';
+ TEXT CHARACTER=42 TEXT= 'KAREN''S_#58';
+ TEXT CHARACTER=43 TEXT= 'KAREN''S_#59';
+ TEXT CHARACTER=44 TEXT= 'KAREN''S_#61';
+ TEXT CHARACTER=45 TEXT= 'KAREN''S_#63';
+ TEXT CHARACTER=46 TEXT= 'KAREN''S_#64';
+ TEXT CHARACTER=47 TEXT= 'KAREN''S_#65';
+ TEXT CHARACTER=48 TEXT= 'KAREN''S_#66';
+ TEXT CHARACTER=49 TEXT= 'KAREN''S_#67 ';
+ TEXT CHARACTER=50 TEXT= 'KAREN''S_#69__ORD!';
+ TEXT CHARACTER=51 TEXT= 'KAREN''S_#70';
+ TEXT CHARACTER=52 TEXT= 'KAREN''S_#71';
+ TEXT CHARACTER=53 TEXT= 'KAREN''S_#72';
+ TEXT CHARACTER=54 TEXT= 'KAREN''S_#74';
+ TEXT CHARACTER=55 TEXT= 'new_character_added_by_Karen_3/1/93';
+ TEXT CHARACTER=56 TEXT= 'KAREN''S_#75';
+ TEXT CHARACTER=57 TEXT= 'KAREN''S_#76';
+ TEXT CHARACTER=58 TEXT= 'KAREN''S_#77';
+ TEXT CHARACTER=59 TEXT= 'KAREN''S_#79';
+ TEXT CHARACTER=60 TEXT= 'KAREN''S_#80';
+ TEXT CHARACTER=61 TEXT= 'KAREN''S_#81';
+ TEXT CHARACTER=62 TEXT= 'KAREN''S_#83';
+ TEXT CHARACTER=63 TEXT= 'KAREN''S_#84';
+ TEXT CHARACTER=64 TEXT= 'KAREN''S_#86';
+ TEXT CHARACTER=65 TEXT= 'KAREN''S_#89';
+ TEXT CHARACTER=77 TEXT= 'of_moss/tracheophyte_type';
+ TEXT CHARACTER=80 TEXT= unord.;
+ TEXT CHARACTER=85 TEXT= 'of_the_liverwort_type_(non-homologous_to_those_of_the_moss/tracheophyte_lineage)__--__M&C_char._#9';
+ TEXT CHARACTER=88 TEXT= 'on_a_regular_basis_(Andreaea_considered_non-homologous)_--_M&C_char._#14';
+ TEXT CHARACTER=108 TEXT= see_Markham_in_Zinsmeister_&_Mues;
+ TEXT CHARACTER=90 TEXT= 'caps._wall_2-10_cells_thick_--__M&C_char._#19_--_thick_caps._walls_in_horn.,_mosses,_and_tracheo._considered_non-nomologous';
+ TEXT CHARACTER=89 TEXT= M&C_char._#18;
+ TEXT CHARACTER=86 TEXT= M&C_char._#10;
+ TEXT CHARACTER=87 TEXT= M&C_char._#13;
+ TEXT TAXON=18 CHARACTER=80 TEXT= considered_homologous_with_mosses;
+ TEXT TAXON=15 CHARACTER=94 TEXT= assuming_loss_in_some_spp.;
+ TEXT TAXON=17 CHARACTER=94 TEXT= assuming_loss_in_some_spp.;
+ TEXT TAXON=15 CHARACTER=74 TEXT= possible_homology_in_Andreobryum_?;
+ TEXT CHARACTER=82 TEXT= with_multiple_sporangia;
+ TEXT CHARACTER=109 TEXT= through_sporogenesis;
+ TEXT TAXON=15 CHARACTER=72 TEXT= fide_Murray_1988;
+ TEXT TAXON=15 CHARACTER=93 TEXT= fide_Murray_1988;
+ TEXT TAXON=15 CHARACTER=113 TEXT= 'in_Andreaobryum_only_(fide_Murray_1988),_Andreaea_has_normal_moss-like_muscilage_papillae';
+ TEXT CHARACTER=113 TEXT= homology_accepted_from__Murray_1988;
+ TEXT CHARACTER=106 TEXT= Bremer_char._#_64;
+ TEXT CHARACTER=107 TEXT= Bremer_#_67;
+ TEXT CHARACTER=105 TEXT= from_Raubeson_and_Jansen_1992;
+ TEXT CHARACTER=103 TEXT= Crane;
+ TEXT CHARACTER=104 TEXT= Crane;
+ TEXT CHARACTER=102 TEXT= Crane;
+ TEXT TAXON=4 CHARACTER=9 TEXT= not_sure_of_homology_with_mosses_+_tracheophytes;
+ TEXT CHARACTER=74 TEXT= 'N.B.,_homology_between_mosses_and_tracheophytes_not_agreed_to_by_all_co-authors';
+ TEXT CHARACTER=75 TEXT= 'N.B.,_homology_between_mosses_and_tracheophytes_not_agreed_to_by_all_co-authors';
+ TEXT TAXON=8 CHARACTER=86 TEXT= 'polymorphic_in_order;__Riella_has_differentiated_cells';
+ TEXT TAXON=18 CHARACTER=94 TEXT= 'state_difficult_to_determine_--_maybe_all_costa!';
+ TEXT TAXON=22 CHARACTER=102 TEXT= not_sure_if_homologous_with_lycophytes;
+END;
+
+BEGIN MACCLADE;
+v 3.0
+-1322664995
+1100&/0
+0
+0
+END;
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/LPMorph.nex
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/P95morph.nex
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/P95morph.nex 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/P95morph.nex 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,1290 @@
+#NEXUS
+[MacClade 3.05 registered to Franois Lutzoni, ]
+
+BEGIN MacCladeStart;
+Extended;
+END;
+
+
+BEGIN DATA;
+DIMENSIONS NTAX=51 NCHAR=77;
+FORMAT SYMBOLS= " 0 1 2 3 4" MISSING=? GAP=- ;OPTIONS MSTAXA=VARIABLE ;
+
+CHARLABELS
+ [1] Circinnate_vernation
+ [2] 'F-S_leaf_differentiation'
+ [3] Blade_dissection
+ [4] Primary_vein_form
+ [5] Vein_orders
+ [6] Secondary_vein_form
+ [7] Vein_fusion
+ [8] Areoles
+ [9] Hydathodes
+ [10] Blade_hairs
+ [11] Blade_scales
+ [12] GMC_division
+ [13] GMC_subsid_cell_origin
+ [14] Dromy_at_base_of_blade
+ [15] Pulvini
+ [16] Pneumathodes
+ [17] Blade_articulation
+ [18] Trophopods
+ [19] Adaxial_outline_of_stipe|rachis
+ [20] Sclerenchyma_coloration
+ [21] Sclerenchyma_fibers
+ [22] Epipetiolar_branches
+ [23] 'Stipe_stele_number_(base->apex)'
+ [24] Xylem_configuration_in_stipe
+ [25] Primary_xylem_bordered_pits
+ [26] Rhizome_symmetry
+ [27] Rhizome_stele_type
+ [28] Rhizome_stele_cycles
+ [29] Vascular_cambium
+ [30] Rhizome_hairs
+ [31] Rhizome_scales
+ [32] Rhizome_scale_pattern
+ [33] Roots
+ [34] Root_hairs
+ [35] Root_anatomy
+ [36] Growth_habit
+ [37] 'Mucilage/latex_canals'
+ [38] True_vessels
+ [39] Intranuclear_paracrystals
+ [40] Hypodermis
+ [41] First_division_of_zygote
+ [42] Sporangial_wall_thickness
+ [43] Receptacle
+ [44] Sporangial_stalk_length
+ [45] Sporangial_stalk_width
+ [46] Spore_output
+ [47] Sori
+ [48] Sorus_outline
+ [49] Sporangial|soral_position
+ [50] 'Soral/sporangial_maturation'
+ [51] 'No._sporangia/sorus'
+ [52] Indusium
+ [53] Indusium_origin
+ [54] Indus_attach_to_sorus
+ [55] Indusium_opening
+ [56] Annulus
+ [57] Annulus_aspect
+ [58] Annulus_span
+ [59] Sporogenesis
+ [60] Spore_laesura
+ [61] Spores_chlorophyllous
+ [62] Spore__equatorial_flange
+ [63] Perispore_prominence
+ [64] Perispore_surface
+ [65] Exospore_structure
+ [66] Exospore_surface
+ [67] Spore_germination
+ [68] Gametophyte_form
+ [69] Gametophyte_hairs
+ [70] Gametophytes_green
+ [71] Gam._fungal_assoc.
+ [72] Dependent_gametophyte
+ [73] Antherdium_position
+ [74] Archegonium_position
+ [75] No._anth._wall_cells
+ [76] No._arch_neck_tiers
+ [77] Gemmae_producing_gametophytes
+ ;
+STATELABELS
+ 1 no yes,
+ 2 monomorphic 'hemi_-_at_tip' 'hemi_-_at_base' dimorphic,
+ 3 simple compound,
+ 4 dichotomous 'anisotomous_(pinnate)' solitary|unbranched,
+ 5 one two three four_or_more,
+ 6 dichotomous anisotomous,
+ 7 nonanastomosing anastomosing,
+ 8 without_free_included_veinlets with_free_included_veinlets,
+ 9 absent present,
+ 10 absent present,
+ 11 absent present,
+ 12 diameristic parameristic anomomeristic,
+ 13 perigenous mesogenous mesoperigenous,
+ 14 catadromous anadromous isodromous,
+ 15 absent present,
+ 16 absent present_scattered present_lines_patches,
+ 17 absent present,
+ 18 absent present,
+ 19 convex_to_flattened sulcate,
+ 20 'not_dark-pigmented' dark_pigmented,
+ 21 absent present,
+ 22 absent present,
+ 23 'monostele->polystele' monostele 'distele->monostele' polystele distele,
+ 24 'C,_U,_V,_O,_½,_arc)' 'solid_*,_T,_Æ' 'X_(sometimes_becoming_V)' 3_arches polycyclic,
+ 25 scalariform circular,
+ 26 radial dorsiventral,
+ 27 protostele solenostele dictyostele eustele,
+ 28 monocyclic polycyclic,
+ 29 absent present,
+ 30 absent present,
+ 31 absent present,
+ 32 uniformly_colored sharply_bicolored clathrate,
+ 33 absent present,
+ 34 absent present,
+ 35 '2-5-arch' polyarch,
+ 36 terrestrial epiphytic rooted_aquatic floating_aquatic,
+ 37 absent present,
+ 38 absent present,
+ 39 absent present,
+ 40 absent present,
+ 41 horizontal vertical 'free-nuclear_phase',
+ 42 single_cell_layer 2_or_more_cell_layers,
+ 43 '(nearly)_flat' convex elongate branched,
+ 44 sessile_to_short long,
+ 45 'massive_(>6_cell_rows_wide)' '4-6_cell_rows_wide' '1-3_cell_rows_wide',
+ 46 '1000+' '>100<1000' '<100',
+ 47 absent present,
+ 48 roundish elongate,
+ 49 marginal 'dorsal_(abaxial)' adaxial,
+ 50 ±_simultaneous gradate mixed,
+ 51 'few_(<12)' many,
+ 52 absent present,
+ 53 marginal adaxial,
+ 54 lateral basal central,
+ 55 introrse extrorse suprasoral circumsoral none,
+ 56 absent present,
+ 57 apical lateral oblique_to_transverse vert_to_slightly_oblique,
+ 58 continuous_bow interrupted_bow restricted_patch,
+ 59 homosporous anisosporous heterosporous,
+ 60 linear triradiate papillalike furrow circular,
+ 61 no yes,
+ 62 absent present,
+ 63 not_prominent prominent,
+ 64 '(nearly)_smooth' sculptured,
+ 65 '2-layers_(blechnoid)' '3-layers' '5-layers',
+ 66 '(nearly)_smooth' sculptured,
+ 67 equatorial polar amorphous,
+ 68 tuberous filamentous 'cordate-thalloid' 'elongate-thalloid' reduced,
+ 69 absent present,
+ 70 no yes,
+ 71 absent present,
+ 72 no yes,
+ 73 embedded exposed,
+ 74 embedded exposed,
+ 75 ³_5 '3-(rarely)_5',
+ 76 '>6' '1-5_(rarely)_6',
+ 77 no 'yes,_borne_from_thallus' 'yes,_borne_from_rhizoids',
+;
+
+MATRIX
+Anemia_mexicana 1211210?01001100001010100010010?110000??1000110??0?0???1000100000112110011110
+Asplenium_filipes 1011210?110021000111102201200012110000??1001221112111011310000110012?10011110
+Azolla_caroliniana 02100?0?01002?00000000110110000?110300??101(01)22(01)0?111?120??21001100140001?0110
+Blechnum_occidentale 1011210?11102100001010300020001(01)1100001?1001221112111001310000100112110011110
+Cheiropleuria_bicuspis 1300211100011?00000010000100010?110000??1000110?12?0???1300100001002011011000
+Cyathea_lepifera 1011310?111020021010103300210010110010??101012101110???1300100110002110011000
+Blotiella_pubescens 1011311011002102001011300020010?110000??1001221102110001310000110012010011110
+Dennstaedtia_punctilobula 1011310?11002002001011100111010?110000?0100022100101(01)1213101011?0012010011110
+Histiopteris_incisa 10113110111020000010113001100110110000??1001221102110001310000000112010011110
+Lindsaea_odorata 1011100?100021000010101001000010110000??1001221102?11011310000100012010011110
+Lonchitis_hirsuta 1011310?11002000001010300110010?110000??1000221102110001310100110012010011110
+Microlepia_strigosa 1011310?11002102001010100110010?1100000?1011221001111011310100010012010011110
+Monachosorum_henryi 1011310?110020000010102001(12)0010?110000??100122101010???1310100110113010011110
+Pteridium_aquilinum 1011310?01002002001011300111010?1100011(01)1001221102110001310100010012010011110
+Calochlaena_dubia 1011310?01011102001010100010010?110010??101012100111(01)121300100000102010011000
+Dicksonia_antarctica 1011310?01002102000010330020010?1100001?101112100111(01)121300100000102010011000
+Dipteris_conjugata 1010211101011?000010100001100010110000?0100112101210???1310000001002010011000
+Davallia_mariesii 1011310?10002102101010300120001(01)110100??1001221012111011310000000112110011110
+Elaphoglossum_hybridum 1301100?01102?02001010300?200010110000??1001220?12?0???131000011001{23}110011110
+Nephrolepis_cordifolia 1011210?1010220010101030002000101100001?1001221012111011310000110012110011110
+Onoclea_sensibilis 13113110111021000100102001200010110000?01011221011111011310010110012110011110
+Rumohra_adiantiformis 1011310?001021020010103001200010110000??1001221012111231310000110012110011110
+Diplopterygium_glaucum 1010310?001021000000101001000010110000??1000?1101000???1200100001002111011000
+Stromatopteris_moniliformis 1011100?01002100001110100?000110100000?0101011101010???12000000011?0001011000
+Micropolypodium_okuboi 1001110?110021000000101000100010110100??100122101210???13101100001{01}3110011111
+Cephalomanes_thysanostomum 1011310?010??1000000?0110000010?110000??1020?1100111(01)01120011000110101?0110?1
+Lygodium_japonicum 1111310?01002000000010110100010?110000?01000110?10?11011000100110112010011110
+Angiopteris_evecta 1011310?0012001100001034(01)0210010111010?1011000111000???0??0100101122011000010
+Marsilea_quadrifolia 12100?1001002?10000000100110010?11020110101(01)22110101(01)140??2(12)001000140001??110
+Matonia_pectinata 1011310?00002000001010100111010?110000??1000121010011231210100111022010011000
+Metaxya_rostrata 1011210?0101(12)102001011100110010?110000??100012101010???13001001100?2010011000
+Botrychium_strictum 0311310?010201000000003010(12)0100?100000??0100000??0?0???0??0100001110001001000
+Osmunda_cinnamomea 1311310?010200000010101000(12)0010?110000?01000110??0?0???1120110011112011011000
+Ceratopteris_thalictroides 13113110000020000000003000210010110200??1000?2110211000131010001011201?001110
+Plagiogyria_japonica 1311210?00002?02001010100020000?110000??1001121112110001300100110012010011000
+Loxogramme_grammitoides 1001111000002?000000?01101200012110000??100022111210???1310010000103?10011111
+Polypodium_australe 1001210?111022001000103001200010110000??100122101210???13100000001{01}2110011110
+Psilotum_nudum 030?????00020?0000?010??(01)0(01)0010?0??(01)000?01000010?000???0??0000001110001011012
+Acrostichum_aureum 11112110010021000010103400(12)10010110200?11001220?02?0???1310100010012010011110
+Adiantum_raddianum 1011310?000021000011102001(12)00010110000??1000221102110001310100110012010011110
+Coniogramme_japonica 1011311011102(012)000010101001(12)00010110000?1100022111210???1310100000?12010011110
+Platyzoma_microphyllum 1(03)11210?01002?00101110100110010?110000??100022111200???131110000011(13)010011110
+Pteris_fauriei 1011310?010021000010101000(12)10011110000??1000221102110001310101000112010011110
+Taenitis_blechnoides 1011211001002?00001010?001(12)0010?110000??100022111210???1310101010112010011110
+Salvinia_cucullata 0(23)01211001002?00000000110110010?0??300??103(01)2210?111?120??21001100140101?0110
+Actinostachys_digitata 11020???00002?00000010100010010?110000??1000110??0?10001000000000120001011110
+Thelypteris_beddomei 1011310?010022020010102000200010110000??1000221012111011310000110112110011110
+Vittaria_flexuosa 1001111000002?000011102001(12)00012110000??100022110210???1310000000013010011111
+Lycopodium_digitatum 03020?0?00020?0000??10??1000000?110010?00100000?2??0???0??0100000100001001000
+Equisetum_arvense 0?020?0?10011?0000??00??1010010?110001?10100?0???0?0???0??04100100?3010011010
+Cycas_circinalis 0311110?01020?000000?0301030110?1?1010??2100000?10?0???0??2300??20?40001?0?10
+;
+END;
+
+BEGIN ASSUMPTIONS;
+ OPTIONS DEFTYPE=unord PolyTcount=MINSTEPS ;
+END;
+
+BEGIN TREES;
+
+
+ UTREE Default_bush = [&U] (Anemia_mexicana,Asplenium_filipes,Azolla_caroliniana,Blechnum_occidentale,Cheiropleuria_bicuspis,Cyathea_lepifera,Blotiella_pubescens,Dennstaedtia_punctilobula,Histiopteris_incisa,Lindsaea_odorata,Lonchitis_hirsuta,Microlepia_strigosa,Monachosorum_henryi,Pteridium_aquilinum,Calochlaena_dubia,Dicksonia_antarctica,Dipteris_conjugata,Davallia_mariesii,Elaphoglossum_hybridum,Nephrolepis_cordifolia,Onoclea_sensibilis,Rumohra_adiantiformis,Diplopterygium_glaucum,Stromatopteris_moniliformis,Cephalomanes_thysanostomum,Lygodium_japonicum,Angiopteris_evecta,Marsilea_quadrifolia,Matonia_pectinata,Metaxya_rostrata,Botrychium_strictum,Osmunda_cinnamomea,Ceratopteris_thalictroides,Plagiogyria_japonica,Loxogramme_grammitoides,Polypodium_australe,Psilotum_nudum,Acrostichum_aureum,Adiantum_raddianum,Coniogramme_japonica,Platyzoma_microphyllum,Taenitis_blechnoides,Salvinia_cucullata,Actinostachys_digitata,Thelypteris_beddomei,Vittaria_flexuosa);
+ UTREE Default_bush = [&U] (Anemia_mexicana,Asplenium_filipes,Azolla_caroliniana,Blechnum_occidentale,Cheiropleuria_bicuspis,Cyathea_lepifera,Blotiella_pubescens,Dennstaedtia_punctilobula,Histiopteris_incisa,Lindsaea_odorata,Lonchitis_hirsuta,Microlepia_strigosa,Monachosorum_henryi,Pteridium_aquilinum,Calochlaena_dubia,Dicksonia_antarctica,Dipteris_conjugata,Davallia_mariesii,Elaphoglossum_hybridum,Nephrolepis_cordifolia,Onoclea_sensibilis,Rumohra_adiantiformis,Diplopterygium_glaucum,Stromatopteris_moniliformis,Cephalomanes_thysanostomum,Lygodium_japonicum,Angiopteris_evecta,Marsilea_quadrifolia,Matonia_pectinata,Metaxya_rostrata,Botrychium_strictum,Osmunda_cinnamomea,Ceratopteris_thalictroides,Plagiogyria_japonica,Loxogramme_grammitoides,Polypodium_australe,Psilotum_nudum,Acrostichum_aureum,Adiantum_raddianum,Coniogramme_japonica,Platyzoma_microphyllum,Taenitis_blechnoides,Salvinia_cucullata,Actinostachys_digitata,Thelypteris_beddomei,Vittaria_flexuosa);
+ UTREE Default_bush = [&U] (Anemia_mexicana,Asplenium_filipes,Azolla_caroliniana,Blechnum_occidentale,Cheiropleuria_bicuspis,Cyathea_lepifera,Blotiella_pubescens,Dennstaedtia_punctilobula,Histiopteris_incisa,Lindsaea_odorata,Lonchitis_hirsuta,Microlepia_strigosa,Monachosorum_henryi,Pteridium_aquilinum,Calochlaena_dubia,Dicksonia_antarctica,Dipteris_conjugata,Davallia_mariesii,Elaphoglossum_hybridum,Nephrolepis_cordifolia,Onoclea_sensibilis,Rumohra_adiantiformis,Diplopterygium_glaucum,Stromatopteris_moniliformis,Cephalomanes_thysanostomum,Lygodium_japonicum,Angiopteris_evecta,Marsilea_quadrifolia,Matonia_pectinata,Metaxya_rostrata,Botrychium_strictum,Osmunda_cinnamomea,Ceratopteris_thalictroides,Plagiogyria_japonica,Loxogramme_grammitoides,Polypodium_australe,Psilotum_nudum,Acrostichum_aureum,Adiantum_raddianum,Coniogramme_japonica,Platyzoma_microphyllum,Taenitis_blechnoides,Salvinia_cucullata,Actinostachys_digitata,Thelypteris_beddomei,Vittaria_flexuosa);
+ UTREE * Default_bush = [&U] (Anemia_mexicana,Asplenium_filipes,Azolla_caroliniana,Blechnum_occidentale,Cheiropleuria_bicuspis,Cyathea_lepifera,Blotiella_pubescens,Dennstaedtia_punctilobula,Histiopteris_incisa,Lindsaea_odorata,Lonchitis_hirsuta,Microlepia_strigosa,Monachosorum_henryi,Pteridium_aquilinum,Calochlaena_dubia,Dicksonia_antarctica,Dipteris_conjugata,Davallia_mariesii,Elaphoglossum_hybridum,Nephrolepis_cordifolia,Onoclea_sensibilis,Rumohra_adiantiformis,Diplopterygium_glaucum,Stromatopteris_moniliformis,Cephalomanes_thysanostomum,Lygodium_japonicum,Angiopteris_evecta,Marsilea_quadrifolia,Matonia_pectinata,Metaxya_rostrata,Botrychium_strictum,Osmunda_cinnamomea,Ceratopteris_thalictroides,Plagiogyria_japonica,Loxogramme_grammitoides,Polypodium_australe,Psilotum_nudum,Acrostichum_aureum,Adiantum_raddianum,Coniogramme_japonica,Platyzoma_microphyllum,Taenitis_blechnoides,Salvinia_cucullata,Actinostachys_digitata,Thelypteris_beddomei,Vittaria_flexuosa);
+
+END;
+
+
+BEGIN NOTES;
+ TEXT CHARACTER=4 TEXT= 'Vouchers_checked_for_all_and_Kubitizki_1990.___See_also_Alan''s_e-mail_05.26.94.__This_character_largely_modelled_after_Nixon_et_al._1994.';
+ TEXT TAXON=28 CHARACTER=15 TEXT= Camus_in_Kubitzki_1990;
+ TEXT TAXON=29 CHARACTER=15 TEXT= 'Johnson_1986,_p._10';
+ TEXT CHARACTER=16 TEXT= vouchers;
+ TEXT TAXON=8 CHARACTER=16 TEXT= 'not_seen_in_D._punctilobula,_but_well_documented_in_many_other_Dennstaedtia_spp.__Kubitzki_1990;_ARS_pers._obs.';
+ TEXT TAXON=14 CHARACTER=16 TEXT= 'Bower_1923,_p._169';
+ TEXT TAXON=15 CHARACTER=16 TEXT= Kubitzki_1990;
+ TEXT TAXON=16 CHARACTER=16 TEXT= 'D._Palmer_(pers._comm.)';
+ TEXT TAXON=17 CHARACTER=16 TEXT= 'Bower_1923,_p.168';
+ TEXT TAXON=18 CHARACTER=16 TEXT= Kubitzki_1990;
+ TEXT TAXON=19 CHARACTER=16 TEXT= 'ARS_12/13/94_e-mail_to_KMP:__In_Elaphoglossum,_the_ventilation_bands_are_not_visible_in_the_voucher,_but_may_be_there_in_living_material_(see_Mickel_&_Atehortua_1980;_also_Lloyd_1970,_and_Kubitzki_1990).';
+ TEXT TAXON=27 CHARACTER=16 TEXT= fresh_material;
+ TEXT TAXON=35 CHARACTER=16 TEXT= 'Bower_1923,_1926';
+ TEXT TAXON=10 CHARACTER=16 TEXT= 'Kramer_1957,_p._112';
+ TEXT TAXON=3 CHARACTER=50 TEXT= 'Eames_1936,_p._256';
+ TEXT CHARACTER=50 TEXT= vouchers_checked;
+ TEXT TAXON=5 CHARACTER=50 TEXT= 'Bower_1928,_p._205';
+ TEXT TAXON=8 CHARACTER=50 TEXT= 'Bower_1923,_p._215';
+ TEXT TAXON=9 CHARACTER=50 TEXT= voucher;
+ TEXT TAXON=11 CHARACTER=50 TEXT= voucher;
+ TEXT TAXON=12 CHARACTER=50 TEXT= 'Eames_1936;_"M._speluncae"';
+ TEXT TAXON=13 CHARACTER=50 TEXT= 'Kramer_1990:_±_simultaneously_maturing';
+ TEXT TAXON=14 CHARACTER=50 TEXT= 'Bower_1923,_Eames_1936';
+ TEXT TAXON=15 CHARACTER=50 TEXT= Kramer_1990;
+ TEXT TAXON=16 CHARACTER=50 TEXT= Kramer_1990;
+ TEXT TAXON=17 CHARACTER=50 TEXT= 'gradate_maturation_in_other_sp._of_Dipteris_---_Bower_1923';
+ TEXT TAXON=21 CHARACTER=50 TEXT= 'Bower,_Eames_1936;_Labouriau_1958,_p._131';
+ TEXT TAXON=23 CHARACTER=50 TEXT= Kramer_1990;
+ TEXT TAXON=24 CHARACTER=50 TEXT= Kramer_1990;
+ TEXT TAXON=27 CHARACTER=50 TEXT= 'sporangia_are_solitary,_but_mature_simultaneously_with_respect_to_adjacent_sporangia';
+ TEXT TAXON=29 CHARACTER=50 TEXT= 'Eames_1936,_p._213';
+ TEXT TAXON=30 CHARACTER=50 TEXT= Kramer_1990;
+ TEXT TAXON=31 CHARACTER=50 TEXT= 'Kramer_1990,_Qiu_et_al._1995';
+ TEXT TAXON=33 CHARACTER=50 TEXT= 'Kramer_1990:_±simultaneous';
+ TEXT TAXON=35 CHARACTER=50 TEXT= voucher;
+ TEXT TAXON=36 CHARACTER=50 TEXT= voucher;
+ TEXT TAXON=42 CHARACTER=50 TEXT= 'Tryon_1961,_p._95';
+ TEXT TAXON=45 CHARACTER=50 TEXT= 'Eames_1936,_p._256';
+ TEXT TAXON=7 CHARACTER=22 TEXT= Troop_&_Mickel_1968;
+ TEXT TAXON=8 CHARACTER=22 TEXT= 'Troop_&_Mickel_1968_-_citing_Conrad_(1908)_for_this_species';
+ TEXT TAXON=9 CHARACTER=22 TEXT= Troop_&_Mickel_1968;
+ TEXT TAXON=11 CHARACTER=22 TEXT= Troop_&_Mickel_1968;
+ TEXT TAXON=12 CHARACTER=22 TEXT= Kubitizki_1990;
+ TEXT TAXON=14 CHARACTER=22 TEXT= 'Troop_&_Mickel_1968_-_citing_Webster_1958_for_this_sp.';
+ TEXT TAXON=31 CHARACTER=22 TEXT= Troop_&_Mickel_1968;
+ TEXT TAXON=35 CHARACTER=22 TEXT= 'Kubitizki_1990:_"occasional_stolons_spring_from_a_leaf_base";_Ogura_1972:_"in_Plagiogyria_pycnophylla"';
+ TEXT CHARACTER=22 TEXT= 'vouchers;_Troop_&_Mickel_1968';
+ TEXT CHARACTER=26 TEXT= vouchers;
+ TEXT TAXON=24 CHARACTER=26 TEXT= 'N/A.___Kaplan_1977,_p._43';
+ TEXT TAXON=27 CHARACTER=26 TEXT= 'Holttum_1964,_p.478';
+ TEXT CHARACTER=60 TEXT= Tryon_and_Lugardon__1991;
+ TEXT TAXON=21 CHARACTER=61 TEXT= Kubitzki_1990;
+ TEXT TAXON=25 CHARACTER=61 TEXT= Kubitzki_1990;
+ TEXT TAXON=26 CHARACTER=61 TEXT= Kubitzki_1990;
+ TEXT TAXON=33 CHARACTER=61 TEXT= Kubitzki_1990;
+ TEXT TAXON=36 CHARACTER=61 TEXT= 'Kubitzki_1990;_green_at_time_of_dispersal';
+ TEXT CHARACTER=62 TEXT= Tryon_&_Lugardon_1991;
+ TEXT CHARACTER=59 TEXT= 'Bell_1979,_Sheffield_&_Bell_1987,_Tryon_&_Lugardon_1991';
+ TEXT CHARACTER=61 TEXT= 'Kubitzki_1990,_Tryon_&_Lugardon_1991';
+ TEXT CHARACTER=63 TEXT= 'Lloyd_1981:_Polypodium;_Tryon_&_Lugardon_1991_-_see_especially_the_family_and_generic_descriptions.';
+ TEXT TAXON=6 CHARACTER=63 TEXT= see_Sphaeropteris_in_Tryon_&Lugardon_1991;
+ TEXT CHARACTER=64 TEXT= 'Lloyd_1981:_Polypodium;_Tryon_&_Lugardon_1991_-_see_especially_family_and_generic_descriptions.';
+ TEXT TAXON=1 CHARACTER=64 TEXT= 'T&L_1991,_p._109,_Fig._11:_granulate';
+ TEXT TAXON=4 CHARACTER=64 TEXT= 'T&L_1991,_p._531,_Figs._1&2';
+ TEXT TAXON=5 CHARACTER=64 TEXT= 'T&L_1991,_p._80,_Fig._1,_3:_rugulate';
+ TEXT TAXON=9 CHARACTER=64 TEXT= 'T&L_1991,_pg._290,_text:_fine_irregular_surface';
+ TEXT TAXON=10 CHARACTER=64 TEXT= 'T&L_1991,_p._298-99,_Figs._15_and_17.__uniformly_granulate';
+ TEXT TAXON=11 CHARACTER=64 TEXT= 'T&L_1991,_p._291-293_and_Figs._1-6:_essentially_granulate_-_some_coarse_surface_deposits.__KMP_originally_scored_this_as_0.__ARS_changed_to_1_03/95,_deciding_that_the_coarse_surface_deposits_were_actually_part_of_the_perispore_sculpturing.';
+ TEXT TAXON=41 CHARACTER=64 TEXT= 'T&L_1991,_p._175_(text):_irregularly_rugulate,_papillate';
+ TEXT TAXON=8 CHARACTER=64 TEXT= 'KMP_had_originally_scored_as_1_based_on_T&L_1991,_p._271_text;_ARS_changed_to_?_03/95';
+ TEXT TAXON=16 CHARACTER=64 TEXT= 'KMP_had_originally_scored_as_1_based_on_T&L_1991_,_p._231_Fig._1;_ARS_changed_to_0__03/95.__See_also_Figs._10-12._Prob_ok_as_0.';
+ TEXT TAXON=6 CHARACTER=64 TEXT= see_Sphaeropteris_in_Tryon_&Lugardon_1991;
+ TEXT TAXON=6 CHARACTER=66 TEXT= see_Sphaeropteris_in_Tryon_&Lugardon_1991.__KMP_had_originally_scored_as_1_based_on_Cyathea_photos_in_T&L.__ARS_changed_to_0_based_on_Sphaeropteris.;
+ TEXT TAXON=42 CHARACTER=64 TEXT= 'KMP_had_originally_scored_as_1_based_on_T&L_1991,_p._123-;_ARS_changed_to_0__03/95.___See_Fig._5_-_perispore=_coalescent_granulate_material,_therefore_prob_better_as_0.';
+ TEXT CHARACTER=65 TEXT= '_Tryon_&_Lugardon_1991_-_see_especially_the_family_and_generic_descriptions._See_also_general_introductory_comments_to_book_where_T&L_define_a_2-layered_exospore_as_a_blechnoid_exospore.';
+ TEXT CHARACTER=66 TEXT= '_Tryon_&_Lugardon_1991_-_see_especially_the_family_and_generic_descriptions.';
+ TEXT TAXON=37 CHARACTER=64 TEXT= 'Close_relatives_P._vulgare_&_P._glycyrrhiza_are_smooth.__P._virginianum:_some_with_more_elaborate_perispore,_cf._T_&_L_131.15-17_with_131.18-19.__Also_131:21-22:_echinate_perispore.__UC_has_LM_picture_of_P._australe_spore_attached_to_specimen:_smooth';
+ TEXT TAXON=17 CHARACTER=58 TEXT= 'ARS_did_a_sporangial_mount:_interrupted_bow._See_Bierhorst_1971,_pgs._307_(top_of_2nd_column),_312_(Figs._16-15,_c,d)_and_p._313_(Figs._16-16,_a,b).';
+ TEXT TAXON=29 CHARACTER=54 TEXT= 'Eames_p._210-211,_Fig._137b.__Indusium_sealed_&_cup-shaped_(basal_attach?_each_sorus_surrounded_by_indusium,_which_originates_from_base_of__sorus).__See_also_Campbell_1893_&_Johnson_1898a,1898b,_1933_and_4/17/95_emails';
+ TEXT CHARACTER=52 TEXT= vouchers_seen_for_all;
+ TEXT TAXON=42 CHARACTER=52 TEXT= 'margin_of_pouch-like_segments_is_unmodified';
+ TEXT TAXON=46 CHARACTER=52 TEXT= 'ARS_email_4/18/95,_4:17:_indusiate:_has_reflexed_margin.__See_voucher_and_Bierhorst_(1971)_p._223_and_fig._14.6.';
+ TEXT TAXON=3 CHARACTER=53 TEXT= '_KP_email_4/21/95:_12:39.__Too_little_tissue_to_know_what_is_going_on.__Uncertain_where_the_indusia_originates_from_-_abaxial_or_adaxial_,_therefore_?__Eames_(1936):_sporocarps_(indusia=sporocarp_wall)_on_lower_lobe_are_borne_terminally.';
+ TEXT TAXON=29 CHARACTER=53 TEXT= 'Eames_p._210-211:_sorus_marginal.__Fig._137b:_indusium_partly_from_abaxial_leaf_surface_and_partly_from__leaf_margin._See_papers_by_Campbell_1893_&_Johnson_1898a,1898b.,_1933.__See_also_4/17/95_emails.';
+ TEXT TAXON=45 CHARACTER=53 TEXT= 'KP_email_4/21/95:_12:39.__Too_little_tissue_to_know_what_is_going_on.__Uncertain_where_indusium_originates_from_-_abaxial_or_adaxial_,_therefore_?__Eames_(1936):_sporocarps_(indusia=sporocarp_wall)__terminal_upon_a_branch_of_a_segment_of_submersed_leaf';
+ TEXT TAXON=46 CHARACTER=53 TEXT= '_See_voucher_and_Bierhorst_(1971)_p._223_and_fig._14.6.';
+ TEXT TAXON=21 CHARACTER=54 TEXT= 'Bower_1928,_p.155,_fig._681.__T&T_1982,_p.586,_fig._4,__-_looks_like_a_laterally_attached_hood-like_indusium;_is_supposed_to_be_same_as_Matteucia.__But_see_Bower_1928,_p._153,_fig._L_-_basal?__No_-_see_Labouriau_1958,_p._131';
+ TEXT TAXON=26 CHARACTER=54 TEXT= 'ARS_email_4/21/95,_1:58';
+ TEXT TAXON=45 CHARACTER=54 TEXT= Eames_1936;
+ TEXT TAXON=46 CHARACTER=54 TEXT= 'ARS_email_4/18/95,_4:17pm:_indusiate:_has_reflexed_margin.__See_voucher_and_Bierhorst_(1971)_p._223_and_fig._14.6.';
+ TEXT TAXON=3 CHARACTER=55 TEXT= 'distal_pore:_Bower_1928,_p.260.__Eames_1936,_P._245-246';
+ TEXT CHARACTER=53 TEXT= vouchers_seen_for_all;
+ TEXT CHARACTER=54 TEXT= vouchers_seen_for_all;
+ TEXT CHARACTER=55 TEXT= vouchers_seen_for_all;
+ TEXT TAXON=8 CHARACTER=55 TEXT= 'segment_margin_and_abaxial_cells_contribute_±_equally_to_the_formation_of_a_"cup".';
+ TEXT TAXON=15 CHARACTER=55 TEXT= '"cup"_is_bilobed,_"valves"_connate_ at _base';
+ TEXT TAXON=16 CHARACTER=55 TEXT= 'cup_is_bilobed,_"valves"_connate_ at _base';
+ TEXT TAXON=21 CHARACTER=55 TEXT= 'Bower_1928,_p.153-155,_figs._678_and_681.__T&T_1982,_p.586,_fig._4,__-_looks_like_a_laterally_attached_hood-like_indusium;_is_supposed_to_be_same_as_Matteucia_-_which_appears_extrorse.__Yes_see_Labouriau_1958,_p._131';
+ TEXT TAXON=26 CHARACTER=55 TEXT= 'ARS_email:_4/21/95,_10:15.';
+ TEXT TAXON=29 CHARACTER=55 TEXT= 'Eames_1936,_p._209-211,_p.214.__See_also_Gifford_and_Foster''s_figures_on_Marsilea_and_papers_by_Campbell_1893_&_Johnson_1898a,1898b,_1933';
+ TEXT TAXON=45 CHARACTER=55 TEXT= 'Eames_1936,_P._233,_fig._148.';
+ TEXT CHARACTER=27 TEXT= 'States_scored_mainly_from_Kubitizki_(1990)_and_Ogura_(1972).__Some_clarifications_taken_from_Schmid_(1982).__White_&_Turner_1988:_Calochlaena._Qiu_et_al_1995:_Metaxya.';
+ TEXT TAXON=1 CHARACTER=27 TEXT= 'Ogura_1972:_"mexicana"_=_typical_solenostele';
+ TEXT TAXON=3 CHARACTER=27 TEXT= 'Schmid_1982,_p._880-881:__not_protostele';
+ TEXT TAXON=14 CHARACTER=27 TEXT= 'Schmid_1982,_p._901-902:_not_a_dictyostele,_but_a_solenostele.';
+ TEXT TAXON=15 CHARACTER=27 TEXT= White_&_Turner_1988;
+ TEXT TAXON=20 CHARACTER=27 TEXT= 'See_also_Schmid_1982,_p._900.';
+ TEXT TAXON=25 CHARACTER=27 TEXT= 'Schmid_1982:_ectophloic_siphonostele.__Ogura_1972:_protostele_with_parenchymatous_pith.__Acc._to_Schmid,_p._890,_ectophloic_siphonosteles_lack_leaf_gaps,_therefore_I_scored_as_solenostele.';
+ TEXT TAXON=26 CHARACTER=27 TEXT= 'see_also_Schmid_1982,_p._881';
+ TEXT TAXON=28 CHARACTER=27 TEXT= Hill_&_Camus_1986;
+ TEXT TAXON=31 CHARACTER=27 TEXT= Qiu_et_al._1995;
+ TEXT TAXON=33 CHARACTER=27 TEXT= 'Schmid_1982,_p._889';
+ TEXT TAXON=38 CHARACTER=27 TEXT= 'See_also_Schmid_1982,_p._900_and_Kubitizki_1990_-_solenostele_between_rhizome_and_aerial_stem.';
+ TEXT TAXON=42 CHARACTER=27 TEXT= 'Schmid_1982:_ectophloic_siphonostele.__Ogura_1972:_medullated_protostele_with_parenchymatous_pith.__Acc._to_Schmid,_p._890,_ectophloic_siphonosteles_lack_leaf_gaps,_therefore_I_scored_as_solenostele.';
+ TEXT TAXON=45 CHARACTER=27 TEXT= 'Schmid_1982,_p._880-881:__not_protostele';
+ TEXT TAXON=46 CHARACTER=27 TEXT= 'Schmid_1982,_p._889:_ectophloic_siphonostele.__Ogura_1972:_medullated_protostele_with_parenchymatous_pith.__Acc._to_Schmid,_p._890,_ectophloic_siphonosteles_lack_leaf_gaps,_therefore_I_scored_as_solenostele.';
+ TEXT TAXON=48 CHARACTER=27 TEXT= 'See_also_Schmid_1982,_p._890';
+ TEXT CHARACTER=28 TEXT= 'polycyclic_includes_Ogura''s_(1972)_acyclostele_term,_and_the_IIB1c_and_IIB2c_terms_in_Schmid''s_(1983)_Table_1_-_see_pp._868-873.';
+ TEXT TAXON=6 CHARACTER=28 TEXT= 'Ogura_1972,_Kubitizki_1990,_Schmid_1982_(IIB2c)';
+ TEXT TAXON=8 CHARACTER=28 TEXT= 'Ogura_1972,_Kubitizki_1990,_Schmid_1982_(IIB1c)';
+ TEXT TAXON=14 CHARACTER=28 TEXT= 'Ogura_1972,_Kubitizki_1990,_Schmid_1982_(IIB1c)_-_see_also_p._902';
+ TEXT TAXON=28 CHARACTER=28 TEXT= 'Ogura_1972,_Hill_and_Camus_1986,_Schmid_1982_(IIB2c)';
+ TEXT TAXON=30 CHARACTER=28 TEXT= 'Ogura_1972,_Kubitizki_1990,_Schmid_1982_(IIB1c)';
+ TEXT TAXON=34 CHARACTER=28 TEXT= 'Ogura_1972_-_p._358,_Schmid_1982_(IIB2c)';
+ TEXT TAXON=39 CHARACTER=28 TEXT= 'Ogura_1972,_Schmid_1982_(IIB1c)';
+ TEXT TAXON=43 CHARACTER=28 TEXT= '_Kubitizki_1990,_Schmid_1982_(IIB1c)';
+ TEXT CHARACTER=23 TEXT= 'N.B._For_base->_apex_of_stipe,_NOT_the_rachis!___Used_mostly_the_following_references:__Kubitizki_1990,_Ogura_1972,_Lin_&_DeVol_1977,_1978,_Keating_1968.';
+ TEXT TAXON=3 CHARACTER=23 TEXT= 'Bierhorst_1971,_Warmbrodt_&_Evert_1978';
+ TEXT TAXON=7 CHARACTER=23 TEXT= 'Ogura_1972,_p._116_(as_Lonchitis_pubescens).__Voucher_(see_ARS_email_5/2/95).';
+ TEXT TAXON=13 CHARACTER=23 TEXT= 'Nair_&_Sen_1974,_Kubitizki_1990';
+ TEXT TAXON=15 CHARACTER=23 TEXT= White_&_Turner_1988;
+ TEXT TAXON=1 CHARACTER=23 TEXT= 'Kubitzi_1990,_Ogura_1972';
+ TEXT TAXON=2 CHARACTER=23 TEXT= 'Kubitzi_1990,_Ogura_1972';
+ TEXT TAXON=4 CHARACTER=23 TEXT= 'Kubitzi_1990,_Ogura_1972,_Lin_&_DeVol_1978';
+ TEXT TAXON=5 CHARACTER=23 TEXT= 'Kubitzi_1990,_Ogura_1972,_Lin_&_DeVol_1978';
+ TEXT TAXON=6 CHARACTER=23 TEXT= 'Kubitzi_1990,_Ogura_1972';
+ TEXT TAXON=8 CHARACTER=23 TEXT= 'Keating_1968,_Ogura_1972';
+ TEXT TAXON=9 CHARACTER=23 TEXT= 'Keating_1968,_Ogura_1972';
+ TEXT TAXON=10 CHARACTER=23 TEXT= _Ogura_1972;
+ TEXT TAXON=11 CHARACTER=23 TEXT= Keating_1968;
+ TEXT TAXON=12 CHARACTER=23 TEXT= 'Kubitzi_1990,_Ogura_1972';
+ TEXT TAXON=14 CHARACTER=23 TEXT= 'Keating_1968,_Ogura_1972';
+ TEXT TAXON=16 CHARACTER=23 TEXT= _Ogura_1972;
+ TEXT TAXON=17 CHARACTER=23 TEXT= Lin__&_DeVol_1978;
+ TEXT TAXON=18 CHARACTER=23 TEXT= 'Lin_&_DeVol_1978,_p._91';
+ TEXT TAXON=19 CHARACTER=23 TEXT= 'Ogura_1972,_p._378';
+ TEXT TAXON=20 CHARACTER=23 TEXT= 'Ogura_1972,_P._115,_Fig._114b.__Note_where_bundles_fuse=rachis,_not_stipe!';
+ TEXT TAXON=21 CHARACTER=23 TEXT= 'Ogura_1972,_p._378';
+ TEXT TAXON=22 CHARACTER=23 TEXT= Kubitzi_1990;
+ TEXT TAXON=23 CHARACTER=23 TEXT= _Ogura_1972;
+ TEXT TAXON=24 CHARACTER=23 TEXT= Ogura_1972;
+ TEXT TAXON=25 CHARACTER=23 TEXT= voucher;
+ TEXT TAXON=26 CHARACTER=23 TEXT= 'Kubitzi_1990,_Ogura_1972_-_p._345_and_pp._108-109';
+ TEXT TAXON=27 CHARACTER=23 TEXT= Lin_and_DeVol_1978._p._86;
+ TEXT TAXON=28 CHARACTER=23 TEXT= 'Ogura_1972,_p._300-301.__Polycyclic.';
+ TEXT TAXON=29 CHARACTER=23 TEXT= 'Ogura_1972,_p._108';
+ TEXT TAXON=30 CHARACTER=23 TEXT= 'Ogura_1972,_p._108_and_386';
+ TEXT TAXON=31 CHARACTER=23 TEXT= 'Ogura_1972,_p._372_"Amphidesmium",_Keating_1968';
+ TEXT TAXON=32 CHARACTER=23 TEXT= 'Ogura_1972,_p._288-289_and_p._112.__Bierhorst_1971,_fig._11-7F.';
+ TEXT TAXON=33 CHARACTER=23 TEXT= 'Ogura_1972,_p._108,_p._99';
+ TEXT TAXON=34 CHARACTER=23 TEXT= 'Ogura_1972,_p._359;_p._109,_Fig._110:C.';
+ TEXT TAXON=35 CHARACTER=23 TEXT= 'Kubitzi_1990,_Ogura_1972_-_p._364-366.';
+ TEXT TAXON=36 CHARACTER=23 TEXT= 'voucher_(see_ARS_email_5/2/95)';
+ TEXT TAXON=37 CHARACTER=23 TEXT= 'Kubitzi_1990,_Ogura_1972_-_p._391';
+ TEXT TAXON=38 CHARACTER=23 TEXT= 'N/A.__Gifford_&_Foster:__Psilotum_nudum_has_no_leaf_trace_(it_also_has_no_stipe!)';
+ TEXT TAXON=39 CHARACTER=23 TEXT= 'Ogura_1972,_p._356';
+ TEXT TAXON=40 CHARACTER=23 TEXT= 'living_material_-_no_voucher_-_see_ARS_email_5/2/95.';
+ TEXT TAXON=41 CHARACTER=23 TEXT= 'Lin_&_DeVol_1977,_p._97';
+ TEXT TAXON=42 CHARACTER=23 TEXT= 'Ogura_1972,_p._335,_Fig._379D';
+ TEXT TAXON=43 CHARACTER=23 TEXT= 'ARS_email_5/2/95';
+ TEXT TAXON=44 CHARACTER=23 TEXT= 'ARS_email_5/2/95';
+ TEXT TAXON=45 CHARACTER=23 TEXT= 'Bierhorst_1971,_p._341_"simple";_Ogura_1972,_p._401,_fig._452';
+ TEXT TAXON=46 CHARACTER=23 TEXT= 'Ogura_1972,_p._109';
+ TEXT TAXON=47 CHARACTER=23 TEXT= 'Lin_&_DeVol_1978,_p._87;_Kubitzki_1990';
+ TEXT TAXON=48 CHARACTER=23 TEXT= 'voucher_(see_ARS_email_5/2/95)';
+ TEXT CHARACTER=24 TEXT= 'Stipe,_NOT_rachis!__Though_state_0_seems_broad,_all_are_variations_on_the_horseshoe_shape.';
+ TEXT TAXON=1 CHARACTER=24 TEXT= 'Kubitizki_1990,_Ogura_1972';
+ TEXT TAXON=2 CHARACTER=24 TEXT= 'Kubitizki_1990,_Ogura_1972';
+ TEXT TAXON=3 CHARACTER=24 TEXT= 'Bierhorst_1971,_Warmbrodt_&_Evert_1978';
+ TEXT TAXON=4 CHARACTER=24 TEXT= 'Kubitizki_1990,_Ogura_1972,_Lin_&_DeVol_1978';
+ TEXT TAXON=5 CHARACTER=24 TEXT= 'Kubitizki_1990,_Ogura_1972_-_p._109,_Lin_&_DeVol_1978';
+ TEXT TAXON=6 CHARACTER=24 TEXT= 'Kubitizki_1990,_Ogura_1972,_p.111';
+ TEXT TAXON=7 CHARACTER=24 TEXT= 'voucher;_Ogura_1972,_p._116,_fig._115:C.';
+ TEXT TAXON=8 CHARACTER=24 TEXT= 'Keating_1968,_Ogura_1972';
+ TEXT TAXON=9 CHARACTER=24 TEXT= 'ARS_email_5/3/95;_Ogura_1972';
+ TEXT TAXON=10 CHARACTER=24 TEXT= Ogura_1972;
+ TEXT TAXON=11 CHARACTER=24 TEXT= Ogura_1972;
+ TEXT TAXON=12 CHARACTER=24 TEXT= 'Kubitizki_1990,_Ogura_1972';
+ TEXT TAXON=13 CHARACTER=24 TEXT= Kubitizki_1990;
+ TEXT TAXON=14 CHARACTER=24 TEXT= Keating_1968;
+ TEXT TAXON=15 CHARACTER=24 TEXT= White_&_Turner_1988;
+ TEXT TAXON=16 CHARACTER=24 TEXT= _Ogura_1972;
+ TEXT TAXON=17 CHARACTER=24 TEXT= Lin_&_DeVol_1978;
+ TEXT TAXON=18 CHARACTER=24 TEXT= 'Lin_&_DeVol_1978,_p._91';
+ TEXT TAXON=19 CHARACTER=24 TEXT= 'Ogura_1972,_p._378';
+ TEXT TAXON=20 CHARACTER=24 TEXT= '_Ogura_1972,_p._115,_fig._114b_(note_the_bundles_fuse_together_in_rachis,_NOT_stipe!).';
+ TEXT TAXON=21 CHARACTER=24 TEXT= '_Ogura_1972,_p._378';
+ TEXT TAXON=22 CHARACTER=24 TEXT= Kubitizki_1990;
+ TEXT TAXON=23 CHARACTER=24 TEXT= Kubitizki_1990;
+ TEXT TAXON=24 CHARACTER=24 TEXT= Kubitizki_1990;
+ TEXT TAXON=25 CHARACTER=24 TEXT= 'Ogura_1972,_p._108,_p._391';
+ TEXT TAXON=26 CHARACTER=24 TEXT= 'Kubitizki_1990,_Ogura_1972,_p._345_and_108-9.__See_ARS_email_5/2/95';
+ TEXT TAXON=27 CHARACTER=24 TEXT= '"T".__Kubitizki_1990,_Lin_&_DeVol_1978,_p._86';
+ TEXT TAXON=28 CHARACTER=24 TEXT= 'concentric_rings.__Ogura_1972,_p._300-301';
+ TEXT TAXON=29 CHARACTER=24 TEXT= 'ARS_email_5/2/95.__Bower_1926,_p._180;_Ogura_1972,_p._397,_figs._445,_447';
+ TEXT TAXON=30 CHARACTER=24 TEXT= 'Ogura_1972,_p._108,_p._386.__"semicircular"';
+ TEXT TAXON=31 CHARACTER=24 TEXT= 'Ogura_1972,_p._372.__"Amphidesmium"';
+ TEXT TAXON=32 CHARACTER=24 TEXT= 'Ogura_1972,_p._288-289,_p._112;_Bierhorst_1971,_fig._11-7F.';
+ TEXT TAXON=33 CHARACTER=24 TEXT= 'Ogura_1972,_p._108,_p._99';
+ TEXT TAXON=34 CHARACTER=24 TEXT= 'Ogura_1972,_p._359,_p._109_Fig._110:C';
+ TEXT TAXON=35 CHARACTER=24 TEXT= 'Kubitizki_1990,_Ogura_1972,_p._366_(top).';
+ TEXT TAXON=36 CHARACTER=24 TEXT= 'voucher;_ARS_email_5/2/95.';
+ TEXT TAXON=37 CHARACTER=24 TEXT= 'Ogura_1972,_p._391,_Kubitizki_1990';
+ TEXT TAXON=38 CHARACTER=24 TEXT= 'NA_(Gifford_&_Foster:_P._nudum_has_no_leaf_trace)';
+ TEXT TAXON=39 CHARACTER=24 TEXT= 'Ogura_1972,_p._356,_fig._404';
+ TEXT TAXON=40 CHARACTER=24 TEXT= 'Lin_&_DeVol_1978,_p._87,_Table_3';
+ TEXT TAXON=41 CHARACTER=24 TEXT= 'Lin_&_DeVol_1978,_p._87,_Table_3';
+ TEXT TAXON=42 CHARACTER=24 TEXT= 'Ogura_1972,_p._335,_Fig._379D';
+ TEXT TAXON=43 CHARACTER=24 TEXT= 'Lin_&_DeVol_1978,_p._87,_Table_3';
+ TEXT TAXON=44 CHARACTER=24 TEXT= 'ARS_email_5/2/95';
+ TEXT TAXON=45 CHARACTER=24 TEXT= 'Ogura_1972,_p._401,_Bierhorst_1971,_p._341_"simple"';
+ TEXT TAXON=46 CHARACTER=24 TEXT= 'Lin_&_DeVol_1978,_p.__86;_Ogura_1972,_p._329:_lines_7-8_from_bottom';
+ TEXT TAXON=47 CHARACTER=24 TEXT= 'Kubitizki_1990,_Lin_&_DeVol_1978';
+ TEXT TAXON=48 CHARACTER=24 TEXT= 'ARS_email_5/2/95';
+ TEXT TAXON=28 CHARACTER=25 TEXT= 'ARS_email_5/4/95.__Bierhorst_1960,_fig._52';
+ TEXT TAXON=32 CHARACTER=25 TEXT= 'Bierhorst_1960,_White_1963b,_Kim_et_al._1993';
+ TEXT TAXON=38 CHARACTER=25 TEXT= 'Bierhorst_1960;_1971_-_p._166';
+ TEXT TAXON=28 CHARACTER=41 TEXT= 'Bower_1923,_p.302;_Bierhorst_1971,_p.363';
+ TEXT TAXON=32 CHARACTER=41 TEXT= 'Bierhorst_1971,_p._147';
+ TEXT TAXON=38 CHARACTER=41 TEXT= 'Bierhorst_1971,_p._186';
+ TEXT CHARACTER=41 TEXT= 'Gifford_and_Foster_1988,_p._68';
+ TEXT CHARACTER=72 TEXT= 'All_homosporous_ferns_have_independent_gametophytes_(exosporic).__Heterosporous_ferns_have_gametophytes_that_are_dependent_on_the_sporophyte_(endosporic).';
+ TEXT TAXON=51 CHARACTER=41 TEXT= 'NA.__There_is_an_initial_free_nuclear_period_where_a_large_no._of_nuclei__aggregate_toward_inward-directed_end_of_embryo.__Cell_walls_form_progressively_in_upward_direction.__Not_comparable_to_horiz/vert_division_of_zygote_in_cellular_individuals.';
+ TEXT CHARACTER=15 TEXT= As_defined_in_text;
+ TEXT TAXON=8 CHARACTER=62 TEXT= 'Tryon_&_Lugardon_1991;_p._271,_fig.5';
+ TEXT TAXON=51 CHARACTER=15 TEXT= ARS_Fax_10_May_95;
+ TEXT TAXON=51 CHARACTER=16 TEXT= ARS_Fax_10_May_95;
+ TEXT TAXON=3 CHARACTER=66 TEXT= 'Tryon_&_Lugardon_1991:_"rugulate"';
+ TEXT TAXON=4 CHARACTER=66 TEXT= 'Tryon_&_Lugardon_1991:_"gemmulate"';
+ TEXT TAXON=5 CHARACTER=66 TEXT= 'Tryon_&_Lugardon_1991:_"slightly_rugulate"';
+ TEXT TAXON=14 CHARACTER=66 TEXT= 'Tryon_&_Lugardon_1991:_"finely_undulate"';
+ TEXT TAXON=17 CHARACTER=66 TEXT= 'Tryon_&_Lugardon_1991:_"rugulate"';
+ TEXT TAXON=20 CHARACTER=66 TEXT= 'Tryon_&_Lugardon_1991:_"slightly_undulate"';
+ TEXT TAXON=23 CHARACTER=66 TEXT= 'Tryon_&_Lugardon_1991:_"rugulate"';
+ TEXT TAXON=30 CHARACTER=66 TEXT= 'Tryon_&_Lugardon_1991:_p._73,_Fig._4';
+ TEXT TAXON=41 CHARACTER=66 TEXT= 'KMP_had_originally_scored_as_0;_ARS_changed_to_?_03/95:__can''t_really_tell_from_Tryon_&_Lugardon_1991.';
+ TEXT TAXON=42 CHARACTER=66 TEXT= 'See_Tryon_&Lugardon_1991,_Fig_32.5_"ridged_exospore"';
+ TEXT TAXON=51 CHARACTER=60 TEXT= 'Dehgan_&_Dehgan_1988.__This_score_is_for_free-sporing_microspores.__Megaspores_are_not_free-sporing.';
+ TEXT TAXON=51 CHARACTER=59 TEXT= 'spores_of_Cycadaceae_appear_to_be_more_or_less_the_same_size,_but_more_importantly,_they_are_not_of_the_same_behaviour.__Female_sporogenesis_entails_degeneration_of_three_megaspores_and_only_one_functional_megaspore_is_formed.';
+ TEXT TAXON=51 CHARACTER=61 TEXT= 'No_green_color_reported_(Dehgan_&_Dehgan_1988)';
+ TEXT TAXON=51 CHARACTER=62 TEXT= Dehgan_&_Dehgan_1988;
+ TEXT TAXON=51 CHARACTER=63 TEXT= 'NA;_no_perispore_in_Cycadales';
+ TEXT TAXON=51 CHARACTER=64 TEXT= 'NA;_no_perispore_in_Cycadales';
+ TEXT TAXON=51 TEXT= 'General_cycad_refs_used_for_scoring:__Gifford_&Foster_1988,_Bierhorst_1971,_Rothwell_&_Serbert_1994,_Kubitizki_1990,_Crane_1988,_Dehgan_&_Dehgan_1988,_Jones_1993,_Stevenson_1990';
+ TEXT TAXON=51 CHARACTER=65 TEXT= 'Dehgan_&_Dehgan_1988,_p._1502-1503';
+ TEXT TAXON=51 CHARACTER=66 TEXT= 'Dehgan_&_Dehgan_1988,_p._1507';
+ TEXT TAXON=51 CHARACTER=46 TEXT= 'Gifford_&_Foster_1988,_p._369.___Score_for_microspores_only.__Megaspores_are_not_free-sporing,_so_they_were_not_scored_(only_one_functional_megaspore_produced/megasporangium).';
+ TEXT CHARACTER=46 TEXT= 'See_"Spore-output"_table_in_Bower_1923,_p._262-263.';
+ TEXT TAXON=1 CHARACTER=46 TEXT= 'Bower_1923,_p._262-263';
+ TEXT TAXON=3 CHARACTER=46 TEXT= 'Megaspores_=_1/sporangium.__Microspores=32-64/sporangium.';
+ TEXT TAXON=5 CHARACTER=46 TEXT= 'Kubitizki_1990,_Bower_1923,_p._262-263';
+ TEXT TAXON=23 CHARACTER=46 TEXT= 'Bower_1923,_p._262-263';
+ TEXT TAXON=24 CHARACTER=46 TEXT= 'Bower_1923,_p._262-263;_Bierhorst_1971';
+ TEXT TAXON=25 CHARACTER=46 TEXT= Kubitizki_1990;
+ TEXT TAXON=26 CHARACTER=46 TEXT= 'Bower_1923,_p._262-263.__Score_reported_could_be_incorrect;_the_character_appears_to_be_polymorphic_for_the_family_(see_Vandenboschia,_also_Hymenophyllaceae);_literature_reports_may_be_incorrect,_in_part.';
+ TEXT TAXON=27 CHARACTER=46 TEXT= 'Bower_1923,_p._262-263';
+ TEXT TAXON=28 CHARACTER=46 TEXT= 'Bower_1923,_p._262-263';
+ TEXT TAXON=29 CHARACTER=46 TEXT= 'Microspores:_64/sporangium;_Megaspores:_1/sporangium';
+ TEXT TAXON=32 CHARACTER=46 TEXT= 'Bower_1923,_p._262-263';
+ TEXT TAXON=33 CHARACTER=46 TEXT= Bierhorst_1971;
+ TEXT TAXON=38 CHARACTER=46 TEXT= White_et._al_1977;
+ TEXT TAXON=46 CHARACTER=46 TEXT= 'Bower_1923,_p._262-263';
+ TEXT TAXON=45 CHARACTER=46 TEXT= 'Megaspores:_1/sporangium.__Microspores:_32/sporangium';
+ TEXT TAXON=51 CHARACTER=2 TEXT= Gifford_&_Foster_1988;
+ TEXT TAXON=42 CHARACTER=2 TEXT= see_KMP_files_for_drawings_and_reasoning;
+ TEXT TAXON=45 CHARACTER=2 TEXT= 'see_KMP_files_for_drawings_and_reasoning.__In_hemidimorphic_comparison,_sporangiferous_trusses_appear_to_be_initiated_ftom_the_base_of_dissected_leaf_(see_Bierhorst_1971)';
+ TEXT CHARACTER=2 TEXT= vouchers_looked_at_for_all;
+ TEXT TAXON=32 CHARACTER=2 TEXT= 'Bierhorst,_1971,_p._137,_beginning_about_line_9';
+ TEXT TAXON=51 CHARACTER=10 TEXT= both_branched_and_unbranched_hairs;
+ TEXT TAXON=51 CHARACTER=11 TEXT= ARS_Fax_10_May_95;
+ TEXT TAXON=51 CHARACTER=17 TEXT= 'eventually,_the_petioles_of_some_cycads_break_off_rather_cleanly,_e.g.,_Dioon,_but_Cycas_does_not_(Jones_1993,_p._124,_126);_also_pinna_of_some_genera_abscise,_e.g._Zamia,_but_not_in_Cycas.';
+ TEXT CHARACTER=10 TEXT= Vouchers_checked_for_all;
+ TEXT CHARACTER=11 TEXT= Vouchers_checked_for_all;
+ TEXT TAXON=39 CHARACTER=10 TEXT= hairs_very_short;
+ TEXT TAXON=45 CHARACTER=10 TEXT= 'Kubitizki_1990_-_papillae_-_usually_interpreted_as_4_fused_hairs_atop,_which_are_uniseriate_hairs';
+ TEXT TAXON=2 CHARACTER=10 TEXT= 'hairs_very_short,_appressed';
+ TEXT TAXON=3 CHARACTER=10 TEXT= 'see_FNA_1993_(1-2_celled_papillae)';
+ TEXT CHARACTER=17 TEXT= Vouchers_checked_for_all;
+ TEXT TAXON=6 CHARACTER=17 TEXT= 'Specimens_don''t_show_it,_but_many_spp._are_clearly_articulate';
+ TEXT CHARACTER=36 TEXT= Vouchers_checked_when_there_was_any_doubt;
+ TEXT TAXON=2 CHARACTER=36 TEXT= 'probably_on_wet_rocks_-_related_spp.';
+ TEXT TAXON=17 CHARACTER=36 TEXT= sometimes_epipetric;
+ TEXT TAXON=18 CHARACTER=36 TEXT= Voucher;
+ TEXT TAXON=19 CHARACTER=36 TEXT= 'moist_earth_banks;_wet_rock_faces_(Burrows_1990)';
+ TEXT TAXON=20 CHARACTER=36 TEXT= Voucher;
+ TEXT TAXON=24 CHARACTER=36 TEXT= Voucher;
+ TEXT TAXON=25 CHARACTER=36 TEXT= 'Voucher;_"on_mossy_tree_trunk"';
+ TEXT TAXON=26 CHARACTER=36 TEXT= 'or_on_wet_rocks_-_related_spp.';
+ TEXT TAXON=29 CHARACTER=36 TEXT= seasonally_dry_areas;
+ TEXT TAXON=36 CHARACTER=36 TEXT= 'Voucher_-_"on_rocky_bank"';
+ TEXT TAXON=37 CHARACTER=36 TEXT= 'Voucher_;_or_on_wet_rocks';
+ TEXT TAXON=38 CHARACTER=36 TEXT= 'Voucher_"high_up_on_tree",_but_also_know_to_occur_on_calcareous_cliffs,_therefore_not_always_epiphytic.__See_ARS_email_2/6/95_(10:21)';
+ TEXT TAXON=39 CHARACTER=36 TEXT= 'Voucher_"mangrove_swamp"';
+ TEXT TAXON=40 CHARACTER=36 TEXT= 'Voucher_"rupicolous"';
+ TEXT TAXON=42 CHARACTER=36 TEXT= Voucher;
+ TEXT TAXON=48 CHARACTER=36 TEXT= 'Voucher_"on_muddy_rock";_Note:_many_spp._(but_not_all)_of_Vittaria_are_epiphytic!';
+ TEXT TAXON=51 CHARACTER=36 TEXT= ARS_Fax_10_May_95;
+ TEXT TAXON=51 CHARACTER=3 TEXT= ARS_Fax_10_May_95;
+ TEXT CHARACTER=3 TEXT= Vouchers_checked_for_all;
+ TEXT TAXON=24 CHARACTER=3 TEXT= Voucher;
+ TEXT TAXON=51 CHARACTER=4 TEXT= ARS_Fax_10_May_95;
+ TEXT TAXON=23 CHARACTER=4 TEXT= Voucher;
+ TEXT TAXON=30 CHARACTER=4 TEXT= 'Wagner_1952.__The_leaf_of_Matonia_is_similar_to_the_pedate_leaves_of_Adiantum,_where_the_early_leaves_are_clearly_pinnate,_but_the_pinnae_of_mature_leaves_are_re-oriented_so_as_to_make_the_leaf_look_dichotomously_branched._See_also_Mickel_def''n_of_pedate';
+ TEXT TAXON=45 CHARACTER=4 TEXT= 'wet_mount_of_leaf_from_voucher_shows_a_main_vein_running_up_the_center_of_large,_sterile_leaf.';
+ TEXT CHARACTER=5 TEXT= 'Vouchers_checked_for_all_and_Kubitizki_1990.___See_also_Alan''s_e-mail_05.26.94.__This_character_largely_modelled_after_Nixon_et_al._1994.';
+ TEXT TAXON=51 CHARACTER=5 TEXT= 'Cycas_has_a_single,_unbranched_vein_per_pinna,_therefore_2_vein_orders';
+ TEXT TAXON=38 CHARACTER=5 TEXT= NA;
+ TEXT TAXON=38 CHARACTER=4 TEXT= NA;
+ TEXT CHARACTER=7 TEXT= 'Vouchers_checked_for_all_and_Kubitizki_1990.___See_also_Alan''s_e-mail_05.26.94.__This_character_largely_modelled_after_Nixon_et_al._1994.';
+ TEXT TAXON=51 CHARACTER=7 TEXT= _See_general_Cycas_references.__Scored_the_same_way_by_Nixon_et_al_1994;
+ TEXT TAXON=51 CHARACTER=8 TEXT= NA;
+ TEXT TAXON=38 CHARACTER=7 TEXT= NA;
+ TEXT TAXON=46 CHARACTER=7 TEXT= NA;
+ TEXT TAXON=1 CHARACTER=7 TEXT= Voucher;
+ TEXT TAXON=7 CHARACTER=7 TEXT= Voucher;
+ TEXT TAXON=9 CHARACTER=7 TEXT= Voucher;
+ TEXT TAXON=21 CHARACTER=7 TEXT= Voucher;
+ TEXT TAXON=30 CHARACTER=7 TEXT= Voucher.__Only_fertile_blades_have_vein_fusion_around_sori;
+ TEXT TAXON=41 CHARACTER=7 TEXT= Voucher;
+ TEXT CHARACTER=8 TEXT= 'Vouchers_checked_for_all_and_Kubitizki_1990.___See_also_Alan''s_e-mail_05.26.94.__This_character_largely_modelled_after_Nixon_et_al._1994.';
+ TEXT TAXON=1 CHARACTER=8 TEXT= NA;
+ TEXT TAXON=2 CHARACTER=8 TEXT= NA;
+ TEXT TAXON=3 CHARACTER=8 TEXT= NA;
+ TEXT TAXON=4 CHARACTER=8 TEXT= NA;
+ TEXT TAXON=6 CHARACTER=8 TEXT= NA;
+ TEXT TAXON=8 CHARACTER=8 TEXT= NA;
+ TEXT TAXON=10 CHARACTER=8 TEXT= NA;
+ TEXT TAXON=11 CHARACTER=8 TEXT= NA;
+ TEXT TAXON=12 CHARACTER=8 TEXT= NA;
+ TEXT TAXON=13 CHARACTER=8 TEXT= NA;
+ TEXT TAXON=14 CHARACTER=8 TEXT= NA;
+ TEXT TAXON=15 CHARACTER=8 TEXT= NA;
+ TEXT TAXON=16 CHARACTER=8 TEXT= NA;
+ TEXT TAXON=18 CHARACTER=8 TEXT= NA;
+ TEXT TAXON=19 CHARACTER=8 TEXT= NA;
+ TEXT TAXON=20 CHARACTER=8 TEXT= NA;
+ TEXT TAXON=22 CHARACTER=8 TEXT= NA;
+ TEXT TAXON=23 CHARACTER=8 TEXT= NA;
+ TEXT TAXON=24 CHARACTER=8 TEXT= NA;
+ TEXT TAXON=25 CHARACTER=8 TEXT= NA;
+ TEXT TAXON=26 CHARACTER=8 TEXT= NA;
+ TEXT TAXON=27 CHARACTER=8 TEXT= NA;
+ TEXT TAXON=28 CHARACTER=8 TEXT= NA;
+ TEXT TAXON=31 CHARACTER=8 TEXT= NA;
+ TEXT TAXON=32 CHARACTER=8 TEXT= NA;
+ TEXT TAXON=33 CHARACTER=8 TEXT= NA;
+ TEXT TAXON=35 CHARACTER=8 TEXT= NA;
+ TEXT TAXON=37 CHARACTER=8 TEXT= NA;
+ TEXT TAXON=38 CHARACTER=8 TEXT= NA;
+ TEXT TAXON=40 CHARACTER=8 TEXT= NA;
+ TEXT TAXON=42 CHARACTER=8 TEXT= NA;
+ TEXT TAXON=43 CHARACTER=8 TEXT= NA;
+ TEXT TAXON=46 CHARACTER=8 TEXT= NA;
+ TEXT TAXON=47 CHARACTER=8 TEXT= NA;
+ TEXT TAXON=30 CHARACTER=8 TEXT= NA;
+ TEXT TAXON=30 CHARACTER=5 TEXT= 'Scored_as_3_because_the_pseudodichotomous_blade_(trichotomous-pedate;_Kubitzki,_1990)_is_apparently_derived_by_repeated_development_of_successive_basal_basiscopic_pinnules,_creating_a_scorpioid_cymose_blade_pattern';
+ TEXT TAXON=51 CHARACTER=12 TEXT= 'stomata_haplocheilic_(Rothwell_&_Serbet_1994,_p._473,_char._12;_ring_of_subsidiary_cells_(Bierhorst_1971,_p._408).';
+ TEXT TAXON=51 CHARACTER=13 TEXT= 'Sen_&_De_1992,_p._256_-_perigenous_stomata_in_extant_cycads,_similar_to_ophioglossoids';
+ TEXT CHARACTER=12 TEXT= 'see_text_for_important_references.__Where_Sen_&_De_1992_had_a_predominance_of_type_shown,_I_scored_for_most_predominant_type.__If_Kondo_1962__and_Sen_&_De_conflicted_over_same_species,_I_followed_Kondo.';
+ TEXT CHARACTER=13 TEXT= 'see_text_for_important_references._Where_Sen_&_De_1992_had_a_predominance_of_type_shown,_I_scored_for_most_predominant_type.__If_Kondo_1962__and_Sen_&_De_conflicted_over_same_species,_I_followed_Kondo.';
+ TEXT TAXON=1 CHARACTER=12 TEXT= 'Kondo_1962_(specifies_mexicana),_Payne_1979,_Kubitzki_1990';
+ TEXT TAXON=2 CHARACTER=12 TEXT= 'Kondo_1962,_Payne_1979,_Kubitizki_1990_(principally_polocytic)';
+ TEXT TAXON=3 CHARACTER=12 TEXT= 'Sen_&_De_1991:_parameristic_infrequent;_Van_Cottem_1973';
+ TEXT TAXON=4 CHARACTER=12 TEXT= 'Kondo_1962_(specified_occidentale),_Sen_&_De_1992,_Van_Cottem_1973';
+ TEXT TAXON=5 CHARACTER=12 TEXT= Kondo_1962;
+ TEXT TAXON=6 CHARACTER=12 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+ TEXT TAXON=7 CHARACTER=12 TEXT= Sen_&_De_1992;
+ TEXT TAXON=8 CHARACTER=12 TEXT= 'Sen_&_De_1992,_Kondo_1962';
+ TEXT TAXON=9 CHARACTER=12 TEXT= 'Sen_&_De_1992,_Kondo_1962';
+ TEXT TAXON=10 CHARACTER=12 TEXT= Sen_&_De_1992;
+ TEXT TAXON=11 CHARACTER=12 TEXT= 'Thurston_1969;__guess_from_Van_Cottem_1973,_p._67';
+ TEXT TAXON=12 CHARACTER=12 TEXT= 'Sen_&_De_1992,_Kondo_1962';
+ TEXT TAXON=13 CHARACTER=12 TEXT= 'Sen_&_De_1992,_Kondo_1962';
+ TEXT TAXON=14 CHARACTER=12 TEXT= Kondo_1962;
+ TEXT TAXON=15 CHARACTER=12 TEXT= Kubitizki_1990;
+ TEXT TAXON=16 CHARACTER=12 TEXT= 'Sen_&_De_1992:_rarely_parameristic';
+ TEXT TAXON=17 CHARACTER=12 TEXT= Kondo_1962;
+ TEXT TAXON=18 CHARACTER=12 TEXT= Kondo_1962;
+ TEXT TAXON=19 CHARACTER=12 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+ TEXT TAXON=20 CHARACTER=12 TEXT= _Sen_&_De_1992;
+ TEXT TAXON=21 CHARACTER=12 TEXT= Kondo_1962;
+ TEXT TAXON=22 CHARACTER=12 TEXT= 'Sen_&_De_1992:_rarely_parameristic;_Kondo_1962';
+ TEXT TAXON=23 CHARACTER=12 TEXT= 'Sen_&_De_1992,_Van_Cottem_1973:_"uniformity_in_Gleicheniaceae"_-_see_Dicranopteris;_Thurston_1969:_subtype_a';
+ TEXT TAXON=24 CHARACTER=12 TEXT= Van_Cottem_1973?_White_1977?;
+ TEXT TAXON=25 CHARACTER=12 TEXT= 'Van_Cottem_1973,_Kondo_1962';
+ TEXT TAXON=26 CHARACTER=12 TEXT= 'NA,_Eames_1932';
+ TEXT TAXON=27 CHARACTER=12 TEXT= Kondo_1962;
+ TEXT TAXON=28 CHARACTER=12 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+ TEXT TAXON=29 CHARACTER=12 TEXT= 'Kubitizki_1990,_Mickel_&_Votava_1971';
+ TEXT TAXON=30 CHARACTER=12 TEXT= Kondo_1962;
+ TEXT TAXON=31 CHARACTER=12 TEXT= 'Sen_&_De_1992:_rarely_diameristic';
+ TEXT TAXON=32 CHARACTER=12 TEXT= 'Kondo_1962,_Sen_&_De_1992,_see_also_arguments_in_Payne_1979.';
+ TEXT TAXON=33 CHARACTER=12 TEXT= 'Kondo_1962,_Sen_&_De_1992,_see_also_arguments_in_Payne_1979.';
+ TEXT TAXON=34 CHARACTER=12 TEXT= 'Kondo_1962,_Sen_&_De_1992.__I_let_Kondo_override_Sen_&_De,_when_Kondo_has_our_exact_species';
+ TEXT TAXON=35 CHARACTER=12 TEXT= 'Kondo_1962,_Payne_1979';
+ TEXT TAXON=36 CHARACTER=12 TEXT= Kondo_1962;
+ TEXT TAXON=37 CHARACTER=12 TEXT= Kondo_1962;
+ TEXT TAXON=38 CHARACTER=12 TEXT= 'Pant_&_Khare_1971,_White_1977';
+ TEXT TAXON=39 CHARACTER=12 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+ TEXT TAXON=40 CHARACTER=12 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+ TEXT TAXON=41 CHARACTER=12 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+ TEXT TAXON=42 CHARACTER=12 TEXT= 'Kubitizki_1990,_see_Tryon_1961,_fig._9.';
+ TEXT TAXON=43 CHARACTER=12 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+ TEXT TAXON=44 CHARACTER=12 TEXT= 'Kondo_1962,_Sen_&_De_1992.__I_let_Kondo_override_Sen_&_De';
+ TEXT TAXON=45 CHARACTER=12 TEXT= 'Sen_&_De_1992:_rarely_parameristic';
+ TEXT TAXON=46 CHARACTER=12 TEXT= Kondo_1962;
+ TEXT TAXON=47 CHARACTER=12 TEXT= Sen_&_De_1992;
+ TEXT TAXON=48 CHARACTER=12 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+ TEXT TAXON=1 CHARACTER=13 TEXT= 'Kondo_1962_(specifies_mexicana),_Payne_1979,_Kubitzki_1990';
+ TEXT TAXON=2 CHARACTER=13 TEXT= 'Kondo_1962,_Payne_1979,_Kubitizki_1990_(principally_polocytic)';
+ TEXT TAXON=3 CHARACTER=13 TEXT= 'Van_Cottem_1973,_Sen_&_De_1992';
+ TEXT TAXON=4 CHARACTER=13 TEXT= 'Kondo_1962,_Sen_&_De_1992,_Van_Cottem_1973';
+ TEXT TAXON=5 CHARACTER=13 TEXT= Kondo_1962;
+ TEXT TAXON=6 CHARACTER=13 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+ TEXT TAXON=7 CHARACTER=13 TEXT= Sen_&_De_1992;
+ TEXT TAXON=8 CHARACTER=13 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+ TEXT TAXON=9 CHARACTER=13 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+ TEXT TAXON=10 CHARACTER=13 TEXT= Sen_&_De_1992;
+ TEXT TAXON=11 CHARACTER=13 TEXT= 'Thurston_1969;_guess_from_Van_Cottem_1973,_p._67';
+ TEXT TAXON=12 CHARACTER=13 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+ TEXT TAXON=13 CHARACTER=13 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+ TEXT TAXON=14 CHARACTER=13 TEXT= Kondo_1962;
+ TEXT TAXON=15 CHARACTER=13 TEXT= Kubitzki_1990;
+ TEXT TAXON=16 CHARACTER=13 TEXT= '_Sen_&_De_1992:_rarely_mesogenous';
+ TEXT TAXON=17 CHARACTER=13 TEXT= Kondo_1962;
+ TEXT TAXON=18 CHARACTER=13 TEXT= Kondo_1962;
+ TEXT TAXON=19 CHARACTER=13 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+ TEXT TAXON=20 CHARACTER=13 TEXT= Sen_&_De_1992;
+ TEXT TAXON=21 CHARACTER=13 TEXT= Kondo_1962;
+ TEXT TAXON=22 CHARACTER=13 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+ TEXT TAXON=23 CHARACTER=13 TEXT= 'Sen_&_De_1992,_Van_Cottem_1973,_Thurston_1969:_subtype_a';
+ TEXT TAXON=24 CHARACTER=13 TEXT= 'Van_Cottem_1973,_White_1977';
+ TEXT TAXON=25 CHARACTER=13 TEXT= 'Van_Cottem_1973,_Kondo_1962';
+ TEXT TAXON=26 CHARACTER=13 TEXT= 'NA,_Eames_1932';
+ TEXT TAXON=27 CHARACTER=13 TEXT= Kondo_1962;
+ TEXT TAXON=28 CHARACTER=13 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+ TEXT TAXON=29 CHARACTER=13 TEXT= 'Kubitizki_1990,_Mickel_&_Votava_1971';
+ TEXT TAXON=30 CHARACTER=13 TEXT= Kondo_1962;
+ TEXT TAXON=31 CHARACTER=13 TEXT= 'Kubitizki_1990,_Sen_&_De_1992,_Payne_1979';
+ TEXT TAXON=32 CHARACTER=13 TEXT= 'Kondo_1962,_Sen_&_De_1992,_see_Payne_1979_for_arguments';
+ TEXT TAXON=33 CHARACTER=13 TEXT= 'Sen_&_De_1992,_see_Payne_1979_for_arguments';
+ TEXT TAXON=34 CHARACTER=13 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+ TEXT TAXON=35 CHARACTER=13 TEXT= 'Kondo_1962,_Payne_1979';
+ TEXT TAXON=36 CHARACTER=13 TEXT= Kondo_1962;
+ TEXT TAXON=37 CHARACTER=13 TEXT= Kondo_1962;
+ TEXT TAXON=38 CHARACTER=13 TEXT= 'Pant_&_Khare_1971,_White_1977';
+ TEXT TAXON=39 CHARACTER=13 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+ TEXT TAXON=40 CHARACTER=13 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+ TEXT TAXON=41 CHARACTER=13 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+ TEXT TAXON=42 CHARACTER=13 TEXT= Kubitizki_1990;
+ TEXT TAXON=43 CHARACTER=13 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+ TEXT TAXON=44 CHARACTER=13 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+ TEXT TAXON=45 CHARACTER=13 TEXT= 'Sen_&_De_1992:_"rarely_mesogenous"';
+ TEXT TAXON=46 CHARACTER=13 TEXT= Kondo_1962;
+ TEXT TAXON=47 CHARACTER=13 TEXT= Sen_&_De_1992;
+ TEXT TAXON=48 CHARACTER=13 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+ TEXT CHARACTER=1 TEXT= Gifford_&_Foster_1988;
+ TEXT CHARACTER=6 TEXT= 'Vouchers_for_all.__Cf._char_28:_Nixon_et_al._(1994)';
+ TEXT TAXON=51 CHARACTER=6 TEXT= 'mous.__Hard_to_find_herbarium_specimen_with_basal_pinnae,_therefore_we_followed_Kubitizki_1990';
+ TEXT TAXON=41 CHARACTER=14 TEXT= 'often_2_states_on_same_frond!__Kubitizki_1990:_"variously_anadromous,_isodromous,_catadromous"';
+ TEXT TAXON=45 CHARACTER=14 TEXT= NA;
+ TEXT TAXON=46 CHARACTER=14 TEXT= NA;
+ TEXT TAXON=48 CHARACTER=14 TEXT= NA;
+ TEXT TAXON=5 CHARACTER=14 TEXT= 'NA_-_dichotomous_primary_venation';
+ TEXT TAXON=17 CHARACTER=14 TEXT= 'NA_-_dichotomous_primary_venation';
+ TEXT TAXON=51 CHARACTER=30 TEXT= Gen_refs;
+ TEXT CHARACTER=30 TEXT= 'vouchers;_Kubitizki_1990';
+ TEXT TAXON=3 CHARACTER=30 TEXT= FNA;
+ TEXT CHARACTER=31 TEXT= 'vouchers;_Kubitizki_1990';
+ TEXT TAXON=3 CHARACTER=31 TEXT= FNA;
+ TEXT TAXON=51 CHARACTER=31 TEXT= No_evidence_for_from_gen._refs.;
+ TEXT CHARACTER=32 TEXT= 'vouchers;_Kubitizki_1990';
+ TEXT TAXON=1 CHARACTER=32 TEXT= NA;
+ TEXT TAXON=3 CHARACTER=32 TEXT= NA;
+ TEXT TAXON=5 CHARACTER=32 TEXT= NA;
+ TEXT TAXON=7 CHARACTER=32 TEXT= NA;
+ TEXT TAXON=8 CHARACTER=32 TEXT= NA;
+ TEXT TAXON=11 CHARACTER=32 TEXT= NA;
+ TEXT TAXON=12 CHARACTER=32 TEXT= NA;
+ TEXT TAXON=13 CHARACTER=32 TEXT= NA;
+ TEXT TAXON=14 CHARACTER=32 TEXT= NA;
+ TEXT TAXON=15 CHARACTER=32 TEXT= NA;
+ TEXT TAXON=16 CHARACTER=32 TEXT= NA;
+ TEXT TAXON=26 CHARACTER=32 TEXT= NA;
+ TEXT TAXON=27 CHARACTER=32 TEXT= NA;
+ TEXT TAXON=29 CHARACTER=32 TEXT= NA;
+ TEXT TAXON=30 CHARACTER=32 TEXT= NA;
+ TEXT TAXON=31 CHARACTER=32 TEXT= NA;
+ TEXT TAXON=32 CHARACTER=32 TEXT= NA;
+ TEXT TAXON=33 CHARACTER=32 TEXT= NA;
+ TEXT TAXON=35 CHARACTER=32 TEXT= NA;
+ TEXT TAXON=38 CHARACTER=32 TEXT= NA;
+ TEXT TAXON=42 CHARACTER=32 TEXT= NA;
+ TEXT TAXON=44 CHARACTER=32 TEXT= NA;
+ TEXT TAXON=45 CHARACTER=32 TEXT= NA;
+ TEXT TAXON=46 CHARACTER=32 TEXT= NA;
+ TEXT TAXON=51 CHARACTER=32 TEXT= NA;
+ TEXT CHARACTER=37 TEXT= 'A_zero_score_indicates_no_mention_of_the_presence_of_canals_in_the_literature,_rather_than_a_positive_statement_that_they_do_not_occur_in_a_particular_taxon';
+ TEXT TAXON=3 CHARACTER=37 TEXT= 'Kubitizki_1990:_"has_mucilage"_-_prob_due_to_cyanobacteria_colonies_and_not_actial_canals.';
+ TEXT TAXON=6 CHARACTER=37 TEXT= 'Ogura_1972;_Mickel_1974,_p._476.__Cut_stems/petioles_of_Cyatheaceae_sometimes_exude_mucilage,_but_mucliage_canals_not_well-documented';
+ TEXT TAXON=15 CHARACTER=37 TEXT= 'White_and_Turner_1988:_mucilage_canals_in_petioles';
+ TEXT TAXON=28 CHARACTER=37 TEXT= 'Kubitizki_1990:_mucilage_ducts';
+ TEXT TAXON=35 CHARACTER=37 TEXT= 'Tryon_&_Tryon_1982:_has_mucilage_secreting_trichomes';
+ TEXT TAXON=51 CHARACTER=37 TEXT= Gen_refs;
+ TEXT CHARACTER=38 TEXT= 'Gifford_&_Foster_1988,_White_1961,_1963.';
+ TEXT TAXON=14 CHARACTER=38 TEXT= 'Gifford_&_Foster_1988:_in_rhizome,_petiole,_root';
+ TEXT TAXON=29 CHARACTER=38 TEXT= 'White_1961,_1963:_roots_only';
+ TEXT TAXON=51 CHARACTER=38 TEXT= Gen_cycad_refs;
+ TEXT CHARACTER=29 TEXT= 'Bierhorst_1971,_Gifford_and_Foster_1988';
+ TEXT TAXON=32 CHARACTER=29 TEXT= 'Most_gen_refs.__Unifacial_-_produces_secondary_xylem_centripetally_only.__See_also_G.W._Rothwell_&_E.E._Karrfalt.__1996.__Origin_and_ontogeny_of_tissues_in_the_ophioglossaceous_fern_Botrychium.__AJB_86_(6:Abstracts):48.';
+ TEXT TAXON=51 CHARACTER=29 TEXT= Gen_cycad_refs;
+ TEXT CHARACTER=39 TEXT= Fabbri_&_Menicanti_1970.__Data_unavailable_for_most_taxa.;
+ TEXT TAXON=51 CHARACTER=39 TEXT= Unknown;
+ TEXT CHARACTER=40 TEXT= Payne_and_Peterson_1973.__Information_available_only_for_a_few_taxa;
+ TEXT TAXON=14 CHARACTER=40 TEXT= 'Payne_and_Peterson_1973_reported_hypodermis_present_in_aquilinum_and_absent_in_latiusculum_(=aquilinum).__Therefore_it_is_prob._a_polymorphic_character_in_the_species';
+ TEXT TAXON=51 CHARACTER=40 TEXT= uncertain;
+ TEXT CHARACTER=21 TEXT= 'Ogura_1972,_p._92';
+ TEXT TAXON=32 CHARACTER=21 TEXT= 'Ogura_1972,_p._288:_"no_mechanical_tissue_[in_petiole]"';
+ TEXT TAXON=51 CHARACTER=22 TEXT= Gen_refs;
+ TEXT TAXON=45 CHARACTER=26 TEXT= 'Bower_1923,_p._68-69';
+ TEXT TAXON=51 CHARACTER=26 TEXT= Gen_refs;
+ TEXT TAXON=51 CHARACTER=27 TEXT= 'Gen_refs;_Schmid_1982,_Beck_et_al_1982.';
+ TEXT TAXON=51 CHARACTER=21 TEXT= 'No_mention_of_sclerenchyma_in_cycads_in_Stevensen,_G&F,_Bierhorst,_etc.__This_is_somewhat_surprising_and_perhaps_there_is_sclerenchyma,_so_leave_as_a_?_for_now.';
+ TEXT TAXON=51 CHARACTER=28 TEXT= Gen_refs;
+ TEXT CHARACTER=25 TEXT= 'Bierhorst_1960,_White_1963b,_Kim_et_al._1993';
+ TEXT TAXON=51 CHARACTER=25 TEXT= Gen_refs;
+ TEXT CHARACTER=33 TEXT= Vouchers;
+ TEXT TAXON=38 CHARACTER=33 TEXT= Kubitizki_1990;
+ TEXT TAXON=45 CHARACTER=33 TEXT= Kubitizki_1990;
+ TEXT TAXON=51 CHARACTER=33 TEXT= Gen_refs;
+ TEXT CHARACTER=34 TEXT= vouchers;
+ TEXT TAXON=51 CHARACTER=34 TEXT= Could_find_no_information_for_root_hairs;
+ TEXT TAXON=51 CHARACTER=35 TEXT= 'up_to_8_protoxylem_points_(Bierhorst_1971,_p._377);_branch_roots_mostly_diarch';
+ TEXT TAXON=38 CHARACTER=35 TEXT= NA;
+ TEXT TAXON=38 CHARACTER=34 TEXT= NA;
+ TEXT TAXON=45 CHARACTER=34 TEXT= NA;
+ TEXT TAXON=45 CHARACTER=35 TEXT= NA;
+ TEXT TAXON=23 CHARACTER=34 TEXT= Smith_&_Smith_13107_UC;
+ TEXT TAXON=24 CHARACTER=34 TEXT= 'rhizoids_on_stems_(how_it_absorbs);_Bierhorst_1971,_p._200';
+ TEXT TAXON=28 CHARACTER=34 TEXT= 'Hill_and_Camus_1986:_hairs_are_multicellular_(most_ferns_have_unicellular_hairs_on_roots)';
+ TEXT TAXON=29 CHARACTER=34 TEXT= 'Johnson_1986,_p._9';
+ TEXT TAXON=32 CHARACTER=34 TEXT= 'Hill_&_Camus_1986;_Bierhorst_1971,_p._132';
+ TEXT TAXON=39 CHARACTER=34 TEXT= 'Adams_and_Tomlinson_1979_-_Amer._Fern_J._69:_42-46';
+ TEXT CHARACTER=35 TEXT= 'Bierhorst_1971,_p._296_-_all_filicalean_ferns_have_2-4_protoxylem_points';
+ TEXT TAXON=1 CHARACTER=35 TEXT= 'Bierhotst_1971,_p._262';
+ TEXT TAXON=4 CHARACTER=35 TEXT= 'Bierhorst_1971,_p._296';
+ TEXT TAXON=24 CHARACTER=35 TEXT= 'Bierhorst_1971,_p._200';
+ TEXT TAXON=27 CHARACTER=35 TEXT= 'Bierhorst_1971,_p._262';
+ TEXT TAXON=28 CHARACTER=35 TEXT= 'Bierhorst_1971,_p._353';
+ TEXT TAXON=29 CHARACTER=35 TEXT= 'Johnson_1986,_p.9;_Bierhorst_1971,_p._330_(diarch)';
+ TEXT TAXON=32 CHARACTER=35 TEXT= 'Kubitizki_1990,_Bierhorst_1971,_p._132:_(2-5_arch)';
+ TEXT TAXON=33 CHARACTER=35 TEXT= 'Bierhorst_1971:_triarch';
+ TEXT TAXON=46 CHARACTER=35 TEXT= 'No_reference_explicitly_says_it_is_2-5_arch,_but_there_is_no_evidence_to_the_contrary.__Bierhorst_1971,_p._260_does_not_say_Schizeaceae_is_different_from_Anemia_and_Lygodium_in_this_way.';
+ TEXT TAXON=51 CHARACTER=42 TEXT= Gen_refs;
+ TEXT CHARACTER=42 TEXT= 'General_references_(G&F_1988,_Bierhorst_1971...)';
+ TEXT TAXON=51 CHARACTER=47 TEXT= 'Microsporangia_more_or_less_acrostichoid_in_Cycas_circinalis_(Bierhorst_1971,_p._379,_fig._20-7A);_in_some_other_cycads,_microsporangia_are_sometimes_in_discrete_sori';
+ TEXT CHARACTER=47 TEXT= 'Vouchers;_Tryon_&_Tryon_1982,_Kubitizki_1990,_Bierhorst_1971,_Eames_1936,_Hill_&_Camus_1986';
+ TEXT TAXON=3 CHARACTER=47 TEXT= 'In_juvenile_megasporocarps_micro-_and_megasporangia_begin_to_grow,_but_eventually_the_microsporangia_die_leaving_a_single_functional_megasporangium.__Hence,_the_megasporangia_do_not_form_sori,_but_the_microsporangia_do.';
+ TEXT TAXON=5 CHARACTER=47 TEXT= sporangia_uniformly_distributed_over_lower_surface;
+ TEXT TAXON=28 CHARACTER=47 TEXT= 'Hill_&_Camus_1986,_Bierhorst_1971:_sporangia_are_free_(not_fused)_but_clustered_in_sori';
+ TEXT TAXON=29 CHARACTER=47 TEXT= 'Eames_1936:_microsporangia_clustered_together_in_a_sorus.__Same_for_megasporangia.';
+ TEXT TAXON=34 CHARACTER=47 TEXT= 'ARS_email_1/10/95';
+ TEXT TAXON=35 CHARACTER=47 TEXT= Tryon_&_Tryon_1982;
+ TEXT TAXON=39 CHARACTER=47 TEXT= sporangia_spread_uniformly_on_undersurface_of_lamina;
+ TEXT TAXON=45 CHARACTER=47 TEXT= 'microsporangia_and_megasporangia_are_in_different_sori,_but_both_are_clustered_in_sori';
+ TEXT TAXON=46 CHARACTER=47 TEXT= sporangia_are_solitary_on_sporangiophores;
+ TEXT TAXON=51 CHARACTER=48 TEXT= NA;
+ TEXT CHARACTER=48 TEXT= 'Vouchers;_Bierhorst_1971,_Eames_1936,_Hill_&_Camus_1986,_Kubitizki_1990,_Tryon_&_Tryon_1982.__Round_sori_=_roughly_as_long_as_wide;_elongate_sori_=_longer_than_wide_-_discrete_or_confluent_sori.';
+ TEXT TAXON=1 CHARACTER=48 TEXT= NA;
+ TEXT TAXON=5 CHARACTER=48 TEXT= NA;
+ TEXT TAXON=19 CHARACTER=48 TEXT= NA;
+ TEXT TAXON=27 CHARACTER=48 TEXT= NA;
+ TEXT TAXON=32 CHARACTER=48 TEXT= NA;
+ TEXT TAXON=33 CHARACTER=48 TEXT= NA;
+ TEXT TAXON=34 CHARACTER=48 TEXT= 'ARS_email_1/10/95';
+ TEXT TAXON=35 CHARACTER=48 TEXT= 'Bower_1926,_p._277';
+ TEXT TAXON=39 CHARACTER=48 TEXT= NA;
+ TEXT TAXON=46 CHARACTER=48 TEXT= NA;
+ TEXT TAXON=51 CHARACTER=52 TEXT= General_references;
+ TEXT TAXON=51 CHARACTER=53 TEXT= NA;
+ TEXT TAXON=51 CHARACTER=54 TEXT= NA;
+ TEXT TAXON=51 CHARACTER=55 TEXT= NA;
+ TEXT TAXON=1 CHARACTER=53 TEXT= NA;
+ TEXT TAXON=5 CHARACTER=53 TEXT= NA;
+ TEXT TAXON=6 CHARACTER=53 TEXT= NA;
+ TEXT TAXON=17 CHARACTER=53 TEXT= NA;
+ TEXT TAXON=19 CHARACTER=53 TEXT= NA;
+ TEXT TAXON=23 CHARACTER=53 TEXT= NA;
+ TEXT TAXON=24 CHARACTER=53 TEXT= NA;
+ TEXT TAXON=25 CHARACTER=53 TEXT= NA;
+ TEXT TAXON=23 CHARACTER=54 TEXT= NA;
+ TEXT TAXON=24 CHARACTER=54 TEXT= NA;
+ TEXT TAXON=25 CHARACTER=54 TEXT= NA;
+ TEXT TAXON=23 CHARACTER=55 TEXT= NA;
+ TEXT TAXON=24 CHARACTER=55 TEXT= NA;
+ TEXT TAXON=25 CHARACTER=55 TEXT= NA;
+ TEXT TAXON=28 CHARACTER=53 TEXT= NA;
+ TEXT TAXON=28 CHARACTER=54 TEXT= NA;
+ TEXT TAXON=28 CHARACTER=55 TEXT= NA;
+ TEXT TAXON=31 CHARACTER=53 TEXT= NA;
+ TEXT TAXON=31 CHARACTER=54 TEXT= NA;
+ TEXT TAXON=31 CHARACTER=55 TEXT= NA;
+ TEXT TAXON=32 CHARACTER=53 TEXT= NA;
+ TEXT TAXON=32 CHARACTER=54 TEXT= NA;
+ TEXT TAXON=32 CHARACTER=55 TEXT= NA;
+ TEXT TAXON=33 CHARACTER=53 TEXT= NA;
+ TEXT TAXON=33 CHARACTER=54 TEXT= NA;
+ TEXT TAXON=33 CHARACTER=55 TEXT= NA;
+ TEXT TAXON=36 CHARACTER=53 TEXT= NA;
+ TEXT TAXON=37 CHARACTER=53 TEXT= NA;
+ TEXT TAXON=38 CHARACTER=53 TEXT= NA;
+ TEXT TAXON=39 CHARACTER=53 TEXT= NA;
+ TEXT TAXON=36 CHARACTER=54 TEXT= NA;
+ TEXT TAXON=37 CHARACTER=54 TEXT= NA;
+ TEXT TAXON=38 CHARACTER=54 TEXT= NA;
+ TEXT TAXON=39 CHARACTER=54 TEXT= NA;
+ TEXT TAXON=36 CHARACTER=55 TEXT= NA;
+ TEXT TAXON=37 CHARACTER=55 TEXT= NA;
+ TEXT TAXON=38 CHARACTER=55 TEXT= NA;
+ TEXT TAXON=39 CHARACTER=55 TEXT= NA;
+ TEXT TAXON=41 CHARACTER=53 TEXT= NA;
+ TEXT TAXON=41 CHARACTER=54 TEXT= NA;
+ TEXT TAXON=41 CHARACTER=55 TEXT= NA;
+ TEXT TAXON=42 CHARACTER=53 TEXT= NA;
+ TEXT TAXON=42 CHARACTER=54 TEXT= NA;
+ TEXT TAXON=42 CHARACTER=55 TEXT= NA;
+ TEXT TAXON=44 CHARACTER=53 TEXT= NA;
+ TEXT TAXON=44 CHARACTER=54 TEXT= NA;
+ TEXT TAXON=44 CHARACTER=55 TEXT= NA;
+ TEXT TAXON=48 CHARACTER=53 TEXT= NA;
+ TEXT TAXON=48 CHARACTER=54 TEXT= NA;
+ TEXT TAXON=48 CHARACTER=55 TEXT= NA;
+ TEXT TAXON=13 CHARACTER=53 TEXT= NA;
+ TEXT TAXON=13 CHARACTER=54 TEXT= NA;
+ TEXT TAXON=13 CHARACTER=55 TEXT= NA;
+ TEXT TAXON=1 CHARACTER=54 TEXT= NA;
+ TEXT TAXON=1 CHARACTER=55 TEXT= NA;
+ TEXT TAXON=5 CHARACTER=54 TEXT= NA;
+ TEXT TAXON=6 CHARACTER=54 TEXT= NA;
+ TEXT TAXON=5 CHARACTER=55 TEXT= NA;
+ TEXT TAXON=6 CHARACTER=55 TEXT= NA;
+ TEXT TAXON=17 CHARACTER=54 TEXT= NA;
+ TEXT TAXON=17 CHARACTER=55 TEXT= NA;
+ TEXT TAXON=19 CHARACTER=54 TEXT= NA;
+ TEXT TAXON=19 CHARACTER=55 TEXT= NA;
+ TEXT TAXON=20 CHARACTER=54 TEXT= 'sub-lateral:_see_ARS_email_4/21/95_ at _10:34';
+ TEXT TAXON=47 CHARACTER=54 TEXT= 'ARS_email_4/24/95_ at _8:42am';
+ TEXT CHARACTER=56 TEXT= 'Bierhorst_1971,_Bower_1923,_Tryon_and_Tryon_1982';
+ TEXT TAXON=51 CHARACTER=56 TEXT= 'cells_of_sporangium_wall_collectively_called_an_"annulus"_by_Jeffrey_(1971),_but_do_not_function_as_such_(Bierhorst_1971,_p._380)';
+ TEXT CHARACTER=57 TEXT= 'Kubitizki_1990,_Bower_1923,_1926,_1928,_Tryon_and_Tryon_1982,_Qiu_et_al_1995';
+ TEXT TAXON=51 CHARACTER=57 TEXT= NA;
+ TEXT TAXON=51 CHARACTER=58 TEXT= NA;
+ TEXT TAXON=3 CHARACTER=57 TEXT= NA;
+ TEXT TAXON=4 CHARACTER=57 TEXT= 'Bierhorst_1971,_p._314';
+ TEXT TAXON=1 CHARACTER=57 TEXT= Kubitizki_1990;
+ TEXT TAXON=2 CHARACTER=57 TEXT= T&T_1982;
+ TEXT TAXON=5 CHARACTER=57 TEXT= 'Kubitizki_1990,_Bower_1923,_p._254';
+ TEXT TAXON=6 CHARACTER=57 TEXT= 'Kubitizki_1990,_Bower_1926,_p._300';
+ TEXT TAXON=7 CHARACTER=57 TEXT= 'Bower_1926,_p._271.__N.B._for_Dennstaedtiaceae:__T&T_1982_say_"vertical_to_slightly_oblique,_at_least_the_indurated_portion_interrupted_by_the_stalk".__Bower_:_"these_sporangia_show_only_faint_traces_of_obliquity_of_the_annulus_-_it_is_almost_vertical"';
+ TEXT TAXON=17 CHARACTER=57 TEXT= 'Kubitizki_1990:_"slightly_oblique"';
+ TEXT TAXON=23 CHARACTER=57 TEXT= 'Bower_1926,_p._205';
+ TEXT TAXON=30 CHARACTER=57 TEXT= 'Kubitizki_1990,_Bower_1926,_p._224';
+ TEXT TAXON=31 CHARACTER=57 TEXT= 'Qiu_et_al._1995,_T&T_1982,_Kubitizki_1990';
+ TEXT TAXON=28 CHARACTER=57 TEXT= NA;
+ TEXT TAXON=29 CHARACTER=57 TEXT= NA;
+ TEXT TAXON=32 CHARACTER=57 TEXT= NA;
+ TEXT TAXON=33 CHARACTER=57 TEXT= Bower;
+ TEXT TAXON=34 CHARACTER=57 TEXT= 'Bower_1928,_p._71';
+ TEXT TAXON=35 CHARACTER=57 TEXT= 'Kubitizki_1990:_"slightly_oblique";_Bower_1926,_p._276-281';
+ TEXT TAXON=38 CHARACTER=57 TEXT= NA;
+ TEXT TAXON=45 CHARACTER=57 TEXT= NA;
+ TEXT CHARACTER=58 TEXT= 'Kubitizki_1990,_Bower_1923,_1926,_1928,_Tryon_and_Tryon_1982,_Qiu_et_al_1995';
+ TEXT TAXON=3 CHARACTER=58 TEXT= NA;
+ TEXT TAXON=4 CHARACTER=58 TEXT= 'Bierhorst_1971,_p._314';
+ TEXT TAXON=5 CHARACTER=58 TEXT= '_Bower_1923,_p._254';
+ TEXT TAXON=6 CHARACTER=58 TEXT= 'Bower_1926,_p._300';
+ TEXT TAXON=7 CHARACTER=58 TEXT= 'Bower_1926,_p._271._(For_all_dennstaedtioids)';
+ TEXT TAXON=23 CHARACTER=58 TEXT= 'Bower_1926,_p._205';
+ TEXT TAXON=24 CHARACTER=58 TEXT= 'Bower_1926,_p._205';
+ TEXT TAXON=28 CHARACTER=58 TEXT= NA;
+ TEXT TAXON=29 CHARACTER=58 TEXT= NA;
+ TEXT TAXON=30 CHARACTER=58 TEXT= 'Bower_1926,_p._224;_Kubitizki_1990';
+ TEXT TAXON=31 CHARACTER=58 TEXT= 'Qiu_et_al_1995,_Kubitizki_1990,_T&T_1982';
+ TEXT TAXON=32 CHARACTER=58 TEXT= NA;
+ TEXT TAXON=34 CHARACTER=58 TEXT= 'Bower_1928,_p._71';
+ TEXT TAXON=35 CHARACTER=58 TEXT= 'Bower_1926,_p._276';
+ TEXT TAXON=38 CHARACTER=58 TEXT= NA;
+ TEXT TAXON=45 CHARACTER=58 TEXT= NA;
+ TEXT CHARACTER=43 TEXT= 'Vouchers_checked_for_most;_Bierhorst_1971,_Bower_1923,_1926,_1928,_Kubitiaki_1990,_Qiu_et_al_1995,_T&T_1982.__See_also_ARS_e-mail_1/11/95_(10:02am)';
+ TEXT TAXON=51 CHARACTER=43 TEXT= Gen_refs;
+ TEXT TAXON=3 CHARACTER=43 TEXT= 'Bierhorst_1971,_p._346_(c),_Campbell_1918,_p._392';
+ TEXT TAXON=29 CHARACTER=43 TEXT= 'Eames_1936,_Gupta_1962,_Johnson_1986:_ridge,_Bierhorst_1971,_p._332,_Fig._A';
+ TEXT TAXON=45 CHARACTER=43 TEXT= 'branched:_Eames,_p._232;_Bierhorst_1971,_p._344-5;_Campbell_1918,_p._379';
+ TEXT CHARACTER=44 TEXT= 'Vouchers_checked_for_most;_Bierhorst_1971,_Campbell_1918,_Eames_1936,_Gupta_1962,_Kubitizki_1990,_Marschall_1925';
+ TEXT TAXON=51 CHARACTER=44 TEXT= Gen_refs;
+ TEXT TAXON=3 CHARACTER=44 TEXT= 'microsporangia_=_1;_megasporangia_=_0:_Bierhorst_1971,_p._344,_2nd_column_-_"eventually_microsporangial_initials_appear_on_the_stalk_below"_-_indicating_that_the_megasporangium_has_a_stalk.__Fig._18-5D_-_short_stalk;_Eames_1936';
+ TEXT TAXON=29 CHARACTER=44 TEXT= 'microsporangium_=_1;_megasporangium_=_0;_Gupta_1962,_p._66_"short_stalk"_and_p._55;_Bierhorst_1971,_p._334_&_336;_Eames_1936';
+ TEXT TAXON=30 CHARACTER=44 TEXT= Kubitizki_1990;
+ TEXT TAXON=35 CHARACTER=44 TEXT= yet_another_character_differentiating_this_taxon_from_Osmunda!;
+ TEXT TAXON=45 CHARACTER=44 TEXT= 'microsporangia_=_1:_Bierhorst_1971,_p._344_"stalks_of_microsporangia_are_longer,_thinner".__megasporangia_=_0:_Bierhorst_1971,_p._344,_1st_column:_"short_stalked_megasporangia";_Eames_1936,_p._233';
+ TEXT CHARACTER=45 TEXT= 'Vouchers;_Bierhorst_1968,_1971,_Campbell_1918,_Gupta_1962,_Eames_1936,_Kubitizki_1990,_Marschall_1925';
+ TEXT TAXON=3 CHARACTER=45 TEXT= 'both_microsporangia_and_megasporangia;_Eames_1936';
+ TEXT TAXON=5 CHARACTER=45 TEXT= 'Kubitizki_1990:_4-seriate';
+ TEXT TAXON=6 CHARACTER=45 TEXT= 'Kubitizki_1990:_4-seriate';
+ TEXT TAXON=7 CHARACTER=45 TEXT= 'Kubitizki_1990:_score=2_for_all_dennstaedtioids';
+ TEXT TAXON=15 CHARACTER=45 TEXT= 'Kubitizki_1990:_dicksonioids_to_6-seriate';
+ TEXT TAXON=17 CHARACTER=45 TEXT= 'Kubitizki_1990:_4-seriate';
+ TEXT TAXON=23 CHARACTER=45 TEXT= 'NA,_since_sporangia_are_sessile';
+ TEXT TAXON=24 CHARACTER=45 TEXT= Bierhorst_1968;
+ TEXT TAXON=26 CHARACTER=45 TEXT= 'NA,_sporangia_nearly_sessile';
+ TEXT TAXON=29 CHARACTER=45 TEXT= 'microsporangia_and_megasporangia_=_2;_Bierhorst_1971,_Gupta_1962,_p._55';
+ TEXT TAXON=30 CHARACTER=45 TEXT= Kubitzki_1990;
+ TEXT TAXON=31 CHARACTER=45 TEXT= 'Kubitizki_1990:_4-seriate';
+ TEXT TAXON=33 CHARACTER=45 TEXT= Kubitizki_1990;
+ TEXT TAXON=34 CHARACTER=45 TEXT= 'NA,_sporangia_are_sessile_-_there_is_no_stalk';
+ TEXT TAXON=35 CHARACTER=45 TEXT= 'Kubitizki_1990:_ca._6-seriate';
+ TEXT TAXON=36 CHARACTER=45 TEXT= 'Kubitizki_1990:_polypodioids=2';
+ TEXT TAXON=39 CHARACTER=45 TEXT= 'Kubitizki_1990:_pterids=2';
+ TEXT TAXON=45 CHARACTER=45 TEXT= 'Bierhorst_1971,_p._344;_Eames_1936,_p._234-235,_fig._149_&_151';
+ TEXT TAXON=51 CHARACTER=45 TEXT= Gen_refs;
+ TEXT CHARACTER=49 TEXT= 'See_text_for_explanation_of_scores_restricted_to_taxa_with_bladed_fertile_fronds/segments_only_and_for_references.';
+ TEXT TAXON=1 CHARACTER=49 TEXT= 'NA,_fertile_segments_without_leaf_blade';
+ TEXT TAXON=3 CHARACTER=49 TEXT= 'NA,_fertile_lobe_modified_to_have_no_leaf_blade;_sporangium_essentially_terminal_on_modified_submerged_lobe';
+ TEXT TAXON=21 CHARACTER=49 TEXT= 'Although_Onoclea_fertile_blade_segments_are_very_reduced_(see_Tryon_&_Tryon_1982,_p._588),_the_sori_are_clearly_arranged_on_the_dorsal_surface.';
+ TEXT TAXON=29 CHARACTER=49 TEXT= 'We_consider_the_sporocarp_wall_of_Marsileaceae_taxa_to_be_homologous_to_a_leaf_blade,_and_sori_borne_marginally_on_this_blade_(see_Eames_1936,_p._211_and_Gupta_1962)';
+ TEXT TAXON=32 CHARACTER=49 TEXT= 'NA,_fertile_segments_without_leaf_blade';
+ TEXT TAXON=33 CHARACTER=49 TEXT= 'NA,_fertile_segments_without_leaf_blade';
+ TEXT TAXON=38 CHARACTER=49 TEXT= 'NA,_in_axil_of_leaf:_terminal_on_axil?__Complex_situation_(see_Bierhorst_1971,_Eames_1936,_Ogura_1972,_Tryon_&_Tryon_1982,_Wagner_1977)';
+ TEXT TAXON=42 CHARACTER=49 TEXT= Kubitizki_1990;
+ TEXT TAXON=45 CHARACTER=49 TEXT= 'NA,_fertile_segments_without_leaf_blades';
+ TEXT TAXON=46 CHARACTER=49 TEXT= 'NA,_fertile_segments_without_leaf_blades';
+ TEXT TAXON=51 CHARACTER=49 TEXT= 'Microsporangia_are_arranged_on_dorsal_surface_of_microsporophyll.__Megasporangia_are_arranged_along_the_sporophyll_margin_(0),_but_I_scored_here_only_for_free-sporing_sporangial_tissues.__Only_microspores_are_free-sporing_in_Cycas.';
+ TEXT TAXON=51 CHARACTER=50 TEXT= Gen_refs;
+ TEXT CHARACTER=68 TEXT= 'Predominantly_sensu_Nayar_and_Kaur_1971_plus_some_primary_literature,_Bierhorst_1971,_Bower_1923,_1926,_1928,_Eames_1936,_Kubitizki_1990,__Tryon_and_Tryon_1982.';
+ TEXT TAXON=13 CHARACTER=68 TEXT= Nair_and_Sen_1974;
+ TEXT TAXON=51 CHARACTER=68 TEXT= Gen_refs;
+ TEXT CHARACTER=69 TEXT= Followed_Nayar_&_Kaur_1971_primarily.__See_text_for_other_gen_refs_that_were_checked;
+ TEXT TAXON=2 CHARACTER=69 TEXT= 'Both_naked_and_hairy_gametophytes_occur_in_this_genus.__Nayar_and_Kaur_mention_which_sub-groups_of_Asplenium_have_hairy_or_naked_gametophytes,_but_we_did_not_verify_subgroup_of_this_sp.__It_is_probably_hairy.';
+ TEXT TAXON=36 CHARACTER=69 TEXT= 'naked_and_hairy_gametophytes_occur_in_this_genus.__ARS_email_9:21_1/6/95_(prob._hairy)';
+ TEXT TAXON=51 CHARACTER=69 TEXT= Gen_refs;
+ TEXT CHARACTER=70 TEXT= See_text_for_gametophyte_refs;
+ TEXT TAXON=51 CHARACTER=70 TEXT= Gen_refs;
+ TEXT TAXON=3 CHARACTER=70 TEXT= Eames_1936;
+ TEXT CHARACTER=71 TEXT= 'Primary_refs:_Boullard_1957,_1979,_Campbell_1908,_Holloway_1930,_Bierhorst_1971,_Nayar_&_Kaur_1971';
+ TEXT TAXON=26 CHARACTER=71 TEXT= 'Boullard_1979;_also_checked_Holloway_1930_-_unclear,_Hymenophylls_may_be_susceptible_to_fungal_infection';
+ TEXT TAXON=33 CHARACTER=71 TEXT= Campbell_1908;
+ TEXT TAXON=34 CHARACTER=71 TEXT= 'Uncertain_-_Mahabale_1948;_Boullard_1957';
+ TEXT TAXON=46 CHARACTER=71 TEXT= 'Bierhorst_1971;_Nayar_&_Kaur_1971';
+ TEXT TAXON=23 CHARACTER=71 TEXT= Boullard_refs;
+ TEXT TAXON=51 CHARACTER=71 TEXT= Gen_refs;
+ TEXT TAXON=51 CHARACTER=72 TEXT= Gen_refs;
+ TEXT TAXON=42 CHARACTER=72 TEXT= Duckett_&_Pang_1985;
+ TEXT TAXON=51 CHARACTER=73 TEXT= 'NA_-_there_are_no_anterhidia_in_Cycadaceae';
+ TEXT CHARACTER=73 TEXT= 'Bierhorst_1971,_Eames_1936,_Gifford_&_Foster_1988,_Nayar_&_Kaur_1971.__See_text_for_comments_on_heterosporous_ferns';
+ TEXT CHARACTER=74 TEXT= 'Bierhorst_1971,_Eames_1936,_Gifford_&_Foster_1988,_Nayar_&_Kaur_1971.___See_text_for_comments_on_heterosporous_ferns';
+ TEXT TAXON=45 CHARACTER=74 TEXT= 'Eames_1936,_p._237:_"Archegonia_deeply_sunken".__Salvinia''s_female_gametophyte_undergoes_considerably_more_vegetative_growth_than_other_heterosporous_ferns,_though_this_is_much_less_than_homosporous_ferns';
+ TEXT TAXON=3 CHARACTER=73 TEXT= 'Ambiguous;_see_character_description';
+ TEXT TAXON=3 CHARACTER=74 TEXT= 'Eames,_p._254,_fig._166A:_cellular_gametophyte_-_archegonia_appear_deeply_embedded';
+ TEXT TAXON=29 CHARACTER=73 TEXT= 'Ambiguous;_see_character_description';
+ TEXT TAXON=29 CHARACTER=74 TEXT= 'Ambiguous;_see_character_description';
+ TEXT TAXON=32 CHARACTER=74 TEXT= 'Bierhorst_1971,_Eames_1936';
+ TEXT TAXON=45 CHARACTER=73 TEXT= 'Ambiguous;_see_character_description';
+ TEXT TAXON=51 CHARACTER=74 TEXT= Gen_refs;
+ TEXT CHARACTER=75 TEXT= 'Bierhorst_1971,_Campbell_1892,_Eames_1936,_Gifford_&_Foster_1988,_Nayar_&_Kaur_1971,_Stokey_&_Atkinson_1956,_M.D._Turner_(pers._comm._-_Metaxya).';
+ TEXT TAXON=1 CHARACTER=75 TEXT= '(3-rarely_5),_Nayar_&_Kaur_1971';
+ TEXT TAXON=2 CHARACTER=75 TEXT= '"3"_Tryon_&_Tryon_1982,_Nayar_&_Kaur_1971';
+ TEXT TAXON=3 CHARACTER=75 TEXT= '"few"';
+ TEXT TAXON=4 CHARACTER=75 TEXT= '"3"';
+ TEXT TAXON=5 CHARACTER=75 TEXT= '"numerous",_Nayar_&_Kaur_1971';
+ TEXT TAXON=6 CHARACTER=75 TEXT= '"5",_Tryon_&_Tryon_1982,_Nayar_&_Kaur_1971';
+ TEXT TAXON=7 CHARACTER=75 TEXT= '"3"_for_all_dennstaedtioids';
+ TEXT TAXON=15 CHARACTER=75 TEXT= '"5+"_for_all_dicksonioids,_Tryon_&_Tryon_1982,_Nayar_&_Kaur_1971';
+ TEXT TAXON=17 CHARACTER=75 TEXT= '"numerous",_Nayar_&_Kaur_1971';
+ TEXT TAXON=23 CHARACTER=75 TEXT= '"6-10"_for_gleichenioids,_Nayar_&_Kaur_1971,_Tryon_&_Tryon_1982';
+ TEXT TAXON=25 CHARACTER=75 TEXT= '"3",_Tryon_&_Tryon_1982';
+ TEXT TAXON=26 CHARACTER=75 TEXT= '"5+"_for_all_hymenophylls,_Tryon_&_Tryon_1982';
+ TEXT TAXON=27 CHARACTER=75 TEXT= '"3-rarely_5"';
+ TEXT TAXON=28 CHARACTER=75 TEXT= '"numerous",_Tryon_&_Tryon_1982';
+ TEXT TAXON=29 CHARACTER=75 TEXT= Campbell_1892;
+ TEXT TAXON=30 CHARACTER=75 TEXT= '"numerous",_Nayar_&_Kaur_1971';
+ TEXT TAXON=31 CHARACTER=75 TEXT= '"5+",_Tryon_&_Tryon_1982';
+ TEXT TAXON=32 CHARACTER=75 TEXT= '"numerous",_Tryon_&_Tryon_1982';
+ TEXT TAXON=33 CHARACTER=75 TEXT= '"8-25_cells",_Tryon_&_Tryon_1982,_Nayar_&_Kaur_1971';
+ TEXT TAXON=34 CHARACTER=75 TEXT= '"3"';
+ TEXT TAXON=35 CHARACTER=75 TEXT= '"numerous/variable"_,_Tryon_&_Tryon_1982';
+ TEXT TAXON=36 CHARACTER=75 TEXT= '"3"';
+ TEXT TAXON=37 CHARACTER=75 TEXT= '"3"';
+ TEXT TAXON=38 CHARACTER=75 TEXT= '"numerous",_Gifford_&_Foster_1988';
+ TEXT TAXON=39 CHARACTER=75 TEXT= '"3"_for_all_pteroids';
+ TEXT TAXON=45 CHARACTER=75 TEXT= Eames_1936;
+ TEXT TAXON=46 CHARACTER=75 TEXT= '"3-rarely_5"';
+ TEXT TAXON=47 CHARACTER=75 TEXT= '"3"';
+ TEXT TAXON=48 CHARACTER=75 TEXT= '"3"';
+ TEXT TAXON=51 CHARACTER=75 TEXT= 'NA_-_There_are_no_antheridia_in_Cycadaceae';
+ TEXT CHARACTER=76 TEXT= 'Bierhorst_1971,_Bower_1926,_Eames_1936,_Nayar_&_Kaur_1971_(p._321),_Stokey_&_Atkinson_1956,_M.D._Turner_(pers._comm.)';
+ TEXT TAXON=1 CHARACTER=76 TEXT= '4-5';
+ TEXT TAXON=2 CHARACTER=76 TEXT= '4-5';
+ TEXT TAXON=3 CHARACTER=76 TEXT= '3-4,_Eames_1936';
+ TEXT TAXON=4 CHARACTER=76 TEXT= '4-5';
+ TEXT TAXON=5 CHARACTER=76 TEXT= '6-8_(7-12)';
+ TEXT TAXON=6 CHARACTER=76 TEXT= '6-8';
+ TEXT TAXON=7 CHARACTER=76 TEXT= '4-5_for_all_dennstaedtioids';
+ TEXT TAXON=15 CHARACTER=76 TEXT= '6-8+_for_all_dicksonioids';
+ TEXT TAXON=17 CHARACTER=76 TEXT= '6-8';
+ TEXT TAXON=23 CHARACTER=76 TEXT= '8-10_for_all_gleichenioids';
+ TEXT TAXON=25 CHARACTER=76 TEXT= '4-5';
+ TEXT TAXON=26 CHARACTER=76 TEXT= 4?_7?_Nayar_&_Kaur_1971;
+ TEXT TAXON=27 CHARACTER=76 TEXT= '4-5';
+ TEXT TAXON=28 CHARACTER=76 TEXT= '2-3-4,_Nayar_&_Kaur_1971,_Eames_1936,_Bierhorst_1971';
+ TEXT TAXON=29 CHARACTER=76 TEXT= 2;
+ TEXT TAXON=30 CHARACTER=76 TEXT= '7-12';
+ TEXT TAXON=31 CHARACTER=76 TEXT= '6-8_(Mel_Turner,_pers._comm.)';
+ TEXT TAXON=32 CHARACTER=76 TEXT= '7-8,_Bower,_Eames_1936';
+ TEXT TAXON=33 CHARACTER=76 TEXT= '6,_Eames_1936';
+ TEXT TAXON=34 CHARACTER=76 TEXT= '4-5';
+ TEXT TAXON=35 CHARACTER=76 TEXT= '6-8,_Stokey_&_Atkinson_1956';
+ TEXT TAXON=36 CHARACTER=76 TEXT= 3;
+ TEXT TAXON=37 CHARACTER=76 TEXT= '3-5';
+ TEXT TAXON=38 CHARACTER=76 TEXT= '4-6';
+ TEXT TAXON=39 CHARACTER=76 TEXT= '4-5_for_all_pteroids';
+ TEXT TAXON=45 CHARACTER=76 TEXT= '3-4';
+ TEXT TAXON=46 CHARACTER=76 TEXT= 3;
+ TEXT TAXON=47 CHARACTER=76 TEXT= '4-5';
+ TEXT TAXON=48 CHARACTER=76 TEXT= '4-5';
+ TEXT TAXON=51 CHARACTER=76 TEXT= 'Apparently,_only_1_cell_high_in_Dioon';
+ TEXT CHARACTER=77 TEXT= 'Farrar_1967,_1974,_Nayar_&_Kaur_1971';
+ TEXT TAXON=25 CHARACTER=77 TEXT= 'Farrar_1967:_present_for_Grammitis_nimbata,_a_close_relative';
+ TEXT TAXON=26 CHARACTER=77 TEXT= 'Farrar_1974,_Nayar_&_Kaur_1971';
+ TEXT TAXON=36 CHARACTER=77 TEXT= 'present_in_L._involuta_and_L._lanceolata:_Nayar_&_Kaur_1971,_p._364,_365.__Quite_possibly_in_this_sp.';
+ TEXT TAXON=48 CHARACTER=77 TEXT= Farrar_1974;
+ TEXT TAXON=51 CHARACTER=77 TEXT= 'gametophytes_are_not_free-living';
+ TEXT CHARACTER=67 TEXT= 'Nayar_&_Kaur_1968,_1971.__See_text_for_other_refs';
+ TEXT TAXON=3 CHARACTER=67 TEXT= See_figs._in_Eames_1936;
+ TEXT TAXON=13 CHARACTER=67 TEXT= see_figs._in_Nair_&_Sen_1974;
+ TEXT TAXON=24 CHARACTER=67 TEXT= 'early_stages_not_known_-_becoming_spherical_mass_later_on';
+ TEXT TAXON=29 CHARACTER=67 TEXT= 'Prob_polar,_see_Campbell_1892_and_Eames_1936';
+ TEXT TAXON=31 CHARACTER=67 TEXT= Early_stages_not_known;
+ TEXT TAXON=32 CHARACTER=67 TEXT= Nayar_&_Kaur_1971_say_Botrychium_is_polar_and_then_say_that_early_stages_are_not_known.__Confusing?;
+ TEXT TAXON=37 CHARACTER=67 TEXT= 'Nayar_&_Kaur_1968,_1971';
+ TEXT TAXON=38 CHARACTER=67 TEXT= 'Bierhorst_1971,_p._187;_Darnell-Smith_1917,_fig._6;_Whittier_1975:__Looks_polar,_first_wall_parallel_to_equatorial_plane.';
+ TEXT TAXON=42 CHARACTER=67 TEXT= 'Tryon_1964,_Duckett_&_Pang_1984';
+ TEXT TAXON=51 CHARACTER=67 TEXT= 'free-nuclear_division_of_megaspore;_uncertain_about_megaspores';
+ TEXT TAXON=3 CHARACTER=6 TEXT= NA;
+ TEXT TAXON=29 CHARACTER=6 TEXT= NA;
+ TEXT TAXON=38 CHARACTER=6 TEXT= NA;
+ TEXT TAXON=46 CHARACTER=6 TEXT= NA;
+ TEXT CHARACTER=51 TEXT= Vouchers_checked_for_all;
+ TEXT TAXON=1 CHARACTER=51 TEXT= NA;
+ TEXT TAXON=5 CHARACTER=51 TEXT= NA;
+ TEXT TAXON=3 CHARACTER=51 TEXT= 'Microsporangia_form_sori.__Megasporangia_do_not_form_sori_-_one_megasporangium/megasporocarp';
+ TEXT TAXON=8 CHARACTER=51 TEXT= '5_sporangia/sorus_-_voucher';
+ TEXT TAXON=10 CHARACTER=51 TEXT= 'Some_Lindsaea_spp._have_more_that_12_sporangia/sorus.__Voucher_has_sori_broken_up_-_can''t_tell.';
+ TEXT TAXON=17 CHARACTER=51 TEXT= Herbarium_specimens;
+ TEXT TAXON=19 CHARACTER=51 TEXT= NA;
+ TEXT TAXON=23 CHARACTER=51 TEXT= 'Voucher;_Kubitizki_1990';
+ TEXT TAXON=24 CHARACTER=51 TEXT= 'Voucher_has_15-20_sporangia/sorus.__Kubitizki_1990';
+ TEXT TAXON=27 CHARACTER=51 TEXT= NA;
+ TEXT TAXON=28 CHARACTER=51 TEXT= Voucher;
+ TEXT TAXON=29 CHARACTER=51 TEXT= 'Johnson_1986,_p._35_species_description_for_quadrifolia:_12_microsporangia/sorus;_3-7_sporangia/sorus';
+ TEXT TAXON=30 CHARACTER=51 TEXT= 'Bower_1926:_6-9_sporangia/sorus';
+ TEXT TAXON=32 CHARACTER=51 TEXT= NA;
+ TEXT TAXON=33 CHARACTER=51 TEXT= NA;
+ TEXT TAXON=38 CHARACTER=51 TEXT= voucher;
+ TEXT TAXON=39 CHARACTER=51 TEXT= NA;
+ TEXT TAXON=42 CHARACTER=51 TEXT= 'Voucher:_hardly_room_for_12!__Tryon_1961,_p._95:__"sporangia_in_several_stages_of_development_are_found_along_a_single_vein_and_up_to_13_have_been_observed_on_a_single_pinna"';
+ TEXT TAXON=45 CHARACTER=51 TEXT= 'Eames_1936,_p._234_(top)';
+ TEXT TAXON=46 CHARACTER=51 TEXT= NA;
+ TEXT TAXON=51 CHARACTER=51 TEXT= NA;
+ TEXT TAXON=38 CHARACTER=77 TEXT= 'Bierhorst_1971,_p._186;__Farrar_&_Johnson-Groh_1990,_p._1168';
+ TEXT TAXON=32 CHARACTER=77 TEXT= 'there_are_"gemmae"_(brood_bodies)_borne_on_underground_stems;_no_gemmae_on_gametophytes';
+ TEXT TAXON=50 TEXT= 'Bierhorst_1971,_Boullard_1979,_Brown_1976,_Gifford_&_Foster_1988,_FNA_1992,_Kubitizki_1990,_Ogura_1972,_Schmid_1982,_Tryon_&_Lugardon_1990,_Tryon_&_Tryon_1982,_Brown_1976,_Duckett_1973,_Hauke_1957,_1979,_Johnson_1937,_Scagel_1984';
+ TEXT TAXON=50 CHARACTER=1 TEXT= Gen_refs;
+ TEXT TAXON=50 CHARACTER=2 TEXT= 'NA;_following_arguments_of_Bierhorst_1971_&_Ogura_1972_-_no-one_takes_stand_on_whether_the_sporangiophore_is_leaf_or_stem.__There_are_no_"fertile_leaves".__Sporangiophores_likely_of_stem_origin_with_sporangia_attached_directly_to_stems.';
+ TEXT TAXON=50 CHARACTER=3 TEXT= Gen_refs;
+ TEXT TAXON=50 CHARACTER=4 TEXT= Gen_refs;
+ TEXT TAXON=50 CHARACTER=5 TEXT= Gen_refs;
+ TEXT TAXON=50 CHARACTER=6 TEXT= NA;
+ TEXT TAXON=50 CHARACTER=7 TEXT= Gen_refs;
+ TEXT TAXON=50 CHARACTER=8 TEXT= NA;
+ TEXT TAXON=50 CHARACTER=9 TEXT= 'Ogura_1972,_pgs._124,_125,_248;_Scagel_et_al._1984,_p._441;_Johnson_1937';
+ TEXT TAXON=50 CHARACTER=10 TEXT= Gen_refs;
+ TEXT TAXON=50 CHARACTER=11 TEXT= Gen_refs;
+ TEXT TAXON=50 CHARACTER=12 TEXT= 'Parallel_to_preceding_wall:_see_Ogura_1972,_p._242,_Fig._269,_esp._269-4,_269-5.__See_also_email_to_ARS_June_1_1995.__See_also_Hauke_1957,_p._178';
+ TEXT TAXON=50 CHARACTER=13 TEXT= 'See_Hauke_1957,_p._178,_and_esp._Fig._2:__"Strasburger_pointed_out_that_the_2_outer_cells_were_subsidiary_cells";_Ogura_1972,_p._242,_Fig._269,_esp._Fig._269-4_and_269-5.__Mesogenous_origin_is_very_clear_for_subsidiary_cells.__See_email_to_ARS_6/1/95';
+ TEXT TAXON=50 CHARACTER=14 TEXT= NA;
+ TEXT TAXON=50 CHARACTER=15 TEXT= Gen_refs;
+ TEXT TAXON=50 CHARACTER=16 TEXT= Gen_refs;
+ TEXT TAXON=50 CHARACTER=17 TEXT= Gen_refs;
+ TEXT TAXON=50 CHARACTER=18 TEXT= Gen_refs;
+ TEXT TAXON=50 CHARACTER=19 TEXT= 'NA_(leaves_are_sessile)';
+ TEXT TAXON=50 CHARACTER=20 TEXT= NA;
+ TEXT TAXON=50 CHARACTER=21 TEXT= 'Ogura_1972,_p._242_"colorless_sclerenchyma";_Brown_1976:_"collenchyme_annulaire"_-_did_tests_showing_E._arvense_did_not_have_sclerenchyma,_but_collenchyma';
+ TEXT TAXON=50 CHARACTER=22 TEXT= Gen_refs;
+ TEXT TAXON=50 CHARACTER=23 TEXT= 'NA_(no_stipe)';
+ TEXT TAXON=50 CHARACTER=24 TEXT= 'NA_(no_stipe)';
+ TEXT TAXON=50 CHARACTER=25 TEXT= 'see_Bierhorst_1971,_p._85_and_Fig._27-8_(f-k)';
+ TEXT TAXON=50 CHARACTER=26 TEXT= Gen_refs;
+ TEXT TAXON=50 CHARACTER=27 TEXT= 'Schmid_1982,_p._905';
+ TEXT TAXON=50 CHARACTER=28 TEXT= Gen_refs;
+ TEXT TAXON=50 CHARACTER=29 TEXT= Gen_refs;
+ TEXT TAXON=50 CHARACTER=30 TEXT= 'herbarium_specimens;_Hauke_1979:_p._391;_Ogura_1972,_p._240;_Scagel_et_al._1984,_p._441';
+ TEXT TAXON=50 CHARACTER=31 TEXT= Gen_refs;
+ TEXT TAXON=50 CHARACTER=32 TEXT= NA;
+ TEXT TAXON=50 CHARACTER=33 TEXT= Gen_refs;
+ TEXT TAXON=50 CHARACTER=34 TEXT= herbarium_specimens;
+ TEXT TAXON=50 CHARACTER=35 TEXT= 'Gifford_&_Foster_1988,_p._187_"triarch_or_tetrarch".__Ogura_1972,_p._247,_249.';
+ TEXT TAXON=50 CHARACTER=36 TEXT= Gen_refs;
+ TEXT TAXON=50 CHARACTER=37 TEXT= Gen_refs;
+ TEXT TAXON=50 CHARACTER=38 TEXT= 'Bierhorst_1971,_p._87';
+ TEXT TAXON=50 CHARACTER=39 TEXT= not_mentionned_in_Fabbri_&_Menicanti_1970;
+ TEXT TAXON=50 CHARACTER=40 TEXT= 'Ogura_1972,_p._129:_"hypodermis_is_present_only_on_abaxial_side_of_leaf"';
+ TEXT TAXON=50 CHARACTER=41 TEXT= 'Gifford_&_Foster_1988,_p._68,_Fig._6-1';
+ TEXT TAXON=50 CHARACTER=42 TEXT= Gen_refs;
+ TEXT TAXON=50 CHARACTER=43 TEXT= Gen_refs;
+ TEXT TAXON=50 CHARACTER=44 TEXT= Gen_refs;
+ TEXT TAXON=50 CHARACTER=45 TEXT= NA;
+ TEXT TAXON=50 CHARACTER=46 TEXT= Gen_refs;
+ TEXT TAXON=50 CHARACTER=47 TEXT= NA;
+ TEXT TAXON=50 CHARACTER=48 TEXT= NA;
+ TEXT TAXON=50 CHARACTER=49 TEXT= 'NA_(since_the_sporangiophores_have_no_blades)';
+ TEXT TAXON=50 CHARACTER=51 TEXT= NA;
+ TEXT TAXON=50 CHARACTER=52 TEXT= Gen_refs;
+ TEXT TAXON=50 CHARACTER=53 TEXT= NA;
+ TEXT TAXON=50 CHARACTER=54 TEXT= NA;
+ TEXT TAXON=50 CHARACTER=50 TEXT= Gen_refs;
+ TEXT TAXON=50 CHARACTER=55 TEXT= NA;
+ TEXT TAXON=50 CHARACTER=56 TEXT= Gen_refs;
+ TEXT TAXON=50 CHARACTER=57 TEXT= NA;
+ TEXT TAXON=50 CHARACTER=58 TEXT= NA;
+ TEXT TAXON=50 CHARACTER=59 TEXT= Gen_refs;
+ TEXT TAXON=50 CHARACTER=60 TEXT= 'T&L_1991,_p._586:_"circular_aperture_with_large_subapertural_opturator_in_Equisetum_is_unique_in_pteridophytes"';
+ TEXT TAXON=50 CHARACTER=61 TEXT= Gen_refs;
+ TEXT TAXON=50 CHARACTER=62 TEXT= T&L_1991;
+ TEXT TAXON=50 CHARACTER=63 TEXT= 'see_T&L_1991,_p._587,_Fig._11,_to_see_how_thin_perispore_is_relative_to_exospore';
+ TEXT TAXON=50 CHARACTER=64 TEXT= 'abundant_spherules_seem_to_be_part_of_the_epispore_morphology_-_see_T&L_1991';
+ TEXT TAXON=50 CHARACTER=65 TEXT= 'T&L_1991,_p._586';
+ TEXT TAXON=50 CHARACTER=66 TEXT= 'T&L_1991,_p._587,__Figs._8_&_12:_exospore_looks_smooth';
+ TEXT TAXON=50 CHARACTER=67 TEXT= 'Bierhorst_1971,_p._94_shows_that_the_spore_sheds_its_outer_coat_before_dividing.__Therefore_it_is_impossible_to_determine_the_orientation_of_the_first_division_with_reference_to_the_aperture_since_it_is_no_longer_there_for_reference.';
+ TEXT TAXON=50 CHARACTER=68 TEXT= 'Duckett_1973:__looks_elongate-thalloid/branched_-_eventually_forming_a_pin-cushion_shape,_i.e._there_is_ultimately_more_dimensionality_here_than_in_other_ribbon-like_gametophytes.__T&T_1982_say_"thallose_strap-shaped,_branched".';
+ TEXT TAXON=50 CHARACTER=69 TEXT= Gen_refs;
+ TEXT TAXON=50 CHARACTER=70 TEXT= Gen_refs;
+ TEXT TAXON=50 CHARACTER=71 TEXT= Boullard_1979;
+ TEXT TAXON=50 CHARACTER=72 TEXT= Gen_refs;
+ TEXT TAXON=50 CHARACTER=73 TEXT= 'Duckett_1973,_Hauke_1979,_p._392';
+ TEXT TAXON=50 CHARACTER=74 TEXT= Duckett_1973;
+ TEXT TAXON=50 CHARACTER=75 TEXT= Gen_refs;
+ TEXT TAXON=50 CHARACTER=76 TEXT= Gen_refs;
+ TEXT TAXON=50 CHARACTER=77 TEXT= Gen_refs;
+ TEXT TAXON=49 TEXT= 'Bierhorst_1971,_Bruce_1979,_Eames_1936,_FNA_1992,_Gifford_&_Foster_1988,_Kubitizki_1990,_Ogura_1072,_Ollgaard_1987,_Pixley_1968,_Rolleri_1972,_Tryon_&_Lugardon_1991,_Tryon_&_Tryon_1982,_Wagner_&_Beitel_1992,_Whittier_1981';
+ TEXT TAXON=49 CHARACTER=1 TEXT= Gen_refs;
+ TEXT TAXON=49 CHARACTER=2 TEXT= 'Gifford_&_Foster_1988:_"the_sporophylls_may_be_aggregated_into_definite_strobili_and_may_be_quite_different_from_vegetative_leaves"_and_they_refer_to_a_photo_of_L._digitatum;_herbarium_specimens';
+ TEXT TAXON=49 CHARACTER=3 TEXT= Gen_refs;
+ TEXT TAXON=49 CHARACTER=4 TEXT= Gen_refs;
+ TEXT TAXON=49 CHARACTER=5 TEXT= Gen_refs;
+ TEXT TAXON=49 CHARACTER=6 TEXT= NA;
+ TEXT TAXON=49 CHARACTER=7 TEXT= Gen_refs;
+ TEXT TAXON=49 CHARACTER=8 TEXT= NA;
+ TEXT TAXON=49 CHARACTER=9 TEXT= 'no_mention_of_in_Ogura_1972,_p._124';
+ TEXT TAXON=49 CHARACTER=10 TEXT= Gen_refs;
+ TEXT TAXON=49 CHARACTER=11 TEXT= Gen_refs;
+ TEXT TAXON=49 CHARACTER=12 TEXT= 'Ogura_1972,_p._122:_compares_Lycopodium_with_Marattiaceae,_Osmundaceae,_and_Ophioglossaceae.__See_also_Rolleri_1972:_good_drawings_of_L._thyoides_(p._270)_a_closely_related_sp.,_that_shows_the_perigenous_pattern.';
+ TEXT TAXON=49 CHARACTER=13 TEXT= 'Ogura_1972,_p._122;_Rolleri_1972';
+ TEXT TAXON=49 CHARACTER=14 TEXT= NA;
+ TEXT TAXON=49 CHARACTER=15 TEXT= Gen_refs;
+ TEXT TAXON=49 CHARACTER=16 TEXT= Gen_refs;
+ TEXT TAXON=49 CHARACTER=17 TEXT= Gen_refs;
+ TEXT TAXON=49 CHARACTER=18 TEXT= Gen_refs;
+ TEXT TAXON=49 CHARACTER=19 TEXT= NA;
+ TEXT TAXON=49 CHARACTER=20 TEXT= NA;
+ TEXT TAXON=49 CHARACTER=21 TEXT= Ogura_1972;
+ TEXT TAXON=49 CHARACTER=22 TEXT= Gen_refs;
+ TEXT TAXON=49 CHARACTER=23 TEXT= NA;
+ TEXT TAXON=49 CHARACTER=24 TEXT= NA;
+ TEXT TAXON=49 CHARACTER=25 TEXT= 'Bierhorst_1971,_p._9';
+ TEXT TAXON=49 CHARACTER=26 TEXT= Gen_refs;
+ TEXT TAXON=49 CHARACTER=27 TEXT= Gen_refs;
+ TEXT TAXON=49 CHARACTER=28 TEXT= Gen_refs;
+ TEXT TAXON=49 CHARACTER=29 TEXT= Gen_refs;
+ TEXT TAXON=49 CHARACTER=30 TEXT= herbarium_specimens;
+ TEXT TAXON=49 CHARACTER=31 TEXT= herbarium_specimens;
+ TEXT TAXON=49 CHARACTER=32 TEXT= NA;
+ TEXT TAXON=49 CHARACTER=33 TEXT= Gen_refs;
+ TEXT TAXON=49 CHARACTER=34 TEXT= 'Ogura_1972,_p._135;_herbarium_specimens';
+ TEXT TAXON=49 CHARACTER=35 TEXT= 'See_original_notes_&__emails_on_the_topic_-_6/6-9/95.__Pixley_1968,_p._160:_"ontogeny_in_Ly._roots_with_crescentic_xylem_in_tr-sec__seen_to_involve_3_or_more_protoxylem_groups".__See_also_Bierhorst_1971,_p._12;_Gifford_&_Foster_1988,_p._114.__See_text';
+ TEXT TAXON=49 CHARACTER=36 TEXT= Gen_refs;
+ TEXT TAXON=49 CHARACTER=37 TEXT= 'Ogura_1972,_p._129_(leaves),_p._203_(stem),_p._211,_last_line_of_leaf_section.__Wagner_&_Beitel_1992,_p._680:_scored_mucilage_canals_present_for_Diphasiastrum';
+ TEXT TAXON=49 CHARACTER=38 TEXT= Gen_refs;
+ TEXT TAXON=49 CHARACTER=39 TEXT= no_mention_of_in_Fabbri_&_Menicanti_1970;
+ TEXT TAXON=49 CHARACTER=40 TEXT= 'Bierhorst_1971,_p._9_refers_to_hypodermis_in_stem.__Ogura_1972_does_not_mention_a_hypodermis_for_Lycopodium_leaves,_and_our_scores_are_for_leaves_only.';
+ TEXT TAXON=49 CHARACTER=41 TEXT= Gifford_&_Foster_1988;
+ TEXT TAXON=49 CHARACTER=42 TEXT= Gen_refs;
+ TEXT TAXON=49 CHARACTER=43 TEXT= 'Gifford_&_Foster_1988,_Fig._9-10B';
+ TEXT TAXON=49 CHARACTER=44 TEXT= Gen_refs;
+ TEXT TAXON=49 CHARACTER=45 TEXT= 'photos_in_Gifford_&_Foster_1988;_also_figs._in_Bierhorst_1971_-_looks_like_many_more_than_10_cells_wide.__From_herbarium_specimens,_it_appears_sporangia_have_short_stalk_or_pad_that_is_many_cells_wide';
+ TEXT TAXON=49 CHARACTER=46 TEXT= Gen_refs;
+ TEXT TAXON=49 CHARACTER=47 TEXT= Gen_refs;
+ TEXT TAXON=49 CHARACTER=48 TEXT= NA;
+ TEXT TAXON=49 CHARACTER=49 TEXT= Gen_refs;
+ TEXT TAXON=49 CHARACTER=50 TEXT= 'NA;_see_definition_in_text_-_since_there_is_only_one_sporangium_per_leaf,_then_NA.';
+ TEXT TAXON=49 CHARACTER=51 TEXT= NA;
+ TEXT TAXON=49 CHARACTER=52 TEXT= Gen_refs;
+ TEXT TAXON=49 CHARACTER=53 TEXT= NA;
+ TEXT TAXON=49 CHARACTER=54 TEXT= NA;
+ TEXT TAXON=49 CHARACTER=55 TEXT= NA;
+ TEXT TAXON=49 CHARACTER=56 TEXT= Gen_refs;
+ TEXT TAXON=49 CHARACTER=57 TEXT= NA;
+ TEXT TAXON=49 CHARACTER=58 TEXT= NA;
+ TEXT TAXON=49 CHARACTER=59 TEXT= Gen_refs;
+ TEXT TAXON=49 CHARACTER=60 TEXT= T&L_1991;
+ TEXT TAXON=49 CHARACTER=61 TEXT= Gen_refs;
+ TEXT TAXON=49 CHARACTER=62 TEXT= 'although_T&L_1991_talk_about_a_"flange-like_structure_near_the_equator"_in_Lycopodium_(p._596),_in_Wagner_&_Beitel_1992,_p._681,_equatorial_ridge_is_scored_as_absent_for_Diphasiastrum';
+ TEXT TAXON=49 CHARACTER=63 TEXT= T&L_1991;
+ TEXT TAXON=49 CHARACTER=64 TEXT= T&L_1991;
+ TEXT TAXON=49 CHARACTER=65 TEXT= 'See_original_notes_for_reasoning.__T&L_1991,_p._6_&_p._590:_main_layer_formed_by_lamellae_...as_spores_mature,__lamellae__scarcely_apparent_&_form_compact_layer._...characteristic_diffuse_inner_layer...provides_useful_recognition_feature_of_Ly._spores.';
+ TEXT TAXON=49 CHARACTER=66 TEXT= T&L_1991;
+ TEXT TAXON=49 CHARACTER=67 TEXT= 'Eames_1936,_p._13,_Fig._11.__Looks_like_equatorial_germination:_first_cell_wall_parallel_to_polar_axis_of_spore';
+ TEXT TAXON=49 CHARACTER=68 TEXT= Gen_refs;
+ TEXT TAXON=49 CHARACTER=69 TEXT= 'Whittier_1981:_no_evidence_of_hairs;_Bruce_1979:_"no_paraphyses_around_sex_organs";_no_indication_of_hairs';
+ TEXT TAXON=49 CHARACTER=70 TEXT= Gen_refs;
+ TEXT TAXON=49 CHARACTER=71 TEXT= Whittier_1981;
+ TEXT TAXON=49 CHARACTER=72 TEXT= Gen_refs;
+ TEXT TAXON=49 CHARACTER=73 TEXT= 'Whittier_1981:_"embedded";_Gifford_&_Foster_1988_drawings';
+ TEXT TAXON=49 CHARACTER=74 TEXT= 'Whittier_1981:_"necks_extend_well_above_the_gametophyte_surfaces";_Bruce_1979,_figs._36,_41:_shows_them_well_protruding;_figs._in_Gifford_&_Foster_also';
+ TEXT TAXON=49 CHARACTER=75 TEXT= Gen_refs;
+ TEXT TAXON=49 CHARACTER=76 TEXT= 'G&F_1988:_arch_with_6_or_more_neck_canal_cells;_from_figs._arch_neck_cell_tiers_seem_fewer_than_6.__Eames_1936,_fig._14_and_his_text:_4-6_cells_high.__However,_see_Bruce_1979,_figs._32,_36,_37,_and_41_esp.__Necks_look_at_least_7-10_cells_long.';
+ TEXT TAXON=49 CHARACTER=77 TEXT= Gen_refs;
+ TEXT TAXON=27 CHARACTER=2 TEXT= 'FNA:_fertile_pinnae_borne_toward_apex_of_fertile_leaves';
+ TEXT TAXON=29 CHARACTER=2 TEXT= 'Wagner_&_Wagner_1977,_p._254';
+ TEXT TAXON=38 CHARACTER=30 TEXT= 'Ogura_1972,_p._16';
+ TEXT TAXON=24 CHARACTER=33 TEXT= 'Bierhorst_1971,_p._196:_"limited_number_of_true_roots"';
+END;
+
+BEGIN MACCLADE;
+Version 3.05;
+LastModified -1350143145;
+Singles 1000&/0;
+END;
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/P95morph.nex
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/P95rbcl.nex
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/P95rbcl.nex 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/P95rbcl.nex 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,81 @@
+#NEXUS
+[MacClade 3.05 registered to Franois Lutzoni, ]
+
+BEGIN DATA;
+DIMENSIONS NTAX=51 NCHAR=1206;
+FORMAT DATATYPE=DNA MISSING=? GAP=- ;
+MATRIX
+[ 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250 260 270 280 290 300 310 320 330 340 350 360 370 380 390 400 410 420 430 440 450 460 470 480 490 500 510 520 530 540 550 560 570 580 590 600 610 620 630 640 650 660 670 680 690 700 710 720 730 740 750 760 770 780 790 800 810 820 830 840 850 860 870 880 890 900 910 920 930 940 950 960 970 980 990 1000 1010 1020 1030 1040 1050 1060 1070 1080 1090 1100 1110 1120 1130 1140 1150 1160 1170 1180 1190 1200 ]
+[ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ]
+
+Anemia_mexicana TATACTCCCCAGTATCAAACCAAAGATACTGATATATTGGCAGCCTTTCGAATGACTCCGCAACCGGGAGTACCTCCCGAGGAGGCTGGAGCTGCGGTCGCTGCTGAGTCCTCCACGGGTACATGGACCACGGTATGGACGGATGGACTTACCAGTCTTGATCGTTACAAGGGTCGGTGCTACGATATTGAACCCGTTGCCGGAGAGACAAATCAATATATCGCTTATGTAGCTTACCCCTTGGATTTATTTGAAGAAGGTTCTGTTACTAATTTGCTAACTTCTATTGTAGGTAACGTATTTGGATTCAAAGCCTTGCGTGCTCTACGCCTAGAGGATTTAAGAATTCCTCCTGCTTATTCAAAAACGTTCCTAGGGCCGCCCCACGGCATCCAGGTCGAAAGAGATAAATTAAATAAATATGGTCGTCCCTTATTAGGATGTACAATTAAGCCCAAACTAGGTTTATCCGCCAAAAATTATGGTAGAGCCGTTTATGAATGTCTTCGTGGCGGACTTGATTTTACCAAGGATGATGAGACCGTCAATTCCCAACCATTCATTCGTTGGCGCGATCGTTTCCTATTTGTAGCAGAAGCTCTTTTTAAATCCCAAGCCGAAACGGGCGAAATCAAGGGACATTACTTAAATGCTACTGCAGGTCACTGCGATGAAATGATAAAAAGGGCGGTCTTCGCTAGGGAATTGGGTGCGCCTATCGTTATGCACGACTACCTGACTGGAGGATATACCGCAAATACCAGCTTGGCCTTCTACTGCCGAGATAATGGATTGCTTTTACACATTCACCGCGCAATGCATGCCGTAATTGATAGACAAAAGAATCACGGCATGCATTTTCGTGTATTGGCTAAAACATTACGTATGTCCGGTGGAGATCATATCCATGCTGGGACTGTAGTCGGTAAACTCGAAGGAGAACGAGAAGTTACTTTAGGATTCGTTGATTTACTTCGCGACGATTATATTGAAAAAGATCGTAGTCGCGGTATCTACTTCACCCAGGACTGGGTATCTATGCCAGGAGTACTGCCCGTAGCTTCTGGAGGCATCCACGTATGGCACATGCCCGCTTTAACTGAAATATTCGGAGATGATTCTGTATTGCAATTCGGTGGAGGAACCTTAGGGCATCCCTGGGGAAATGCACCTGGAGCTGTTGCAAATCGAGTTGCATTGGAAGCT [1206]
+Asplenium_filipes TATACCCCCGAATACAAGACCAAAGATACTGACATCTCAGCAGCTTTCCGGATGACCCCACAACCCGGAGTACCGGCTGAAGAAGCCGGAGCTGCGGTAGCAGCGAAATCCTCCACAGGTACGTGGACCACTGTATGGACAGATGGGTTGACCAGCCTTGACCGTTACAAGGGCCGATGCTACGACATCGAGCCCGTCGCTGGGGAAGAAAACCAGTATATCGCGTATGTAGCTTATCCCTTGGACCTCTTCGAAGAAGGTTCCGTCACCAACTTATTTACTTCCATTGTAGGTAACGTTTTCGGATTTAAGGCTCTACGTGCCCTACGCTTGGAAGACCTTCGAATCCCCCCCGCTTACTCCAAAACTTTCCTTGGACCGCCTCATGGTATTCAGGTCGAAAGGGATAAATTGAACAAATATGGACGTCCTCTACTGGGATGTACGATCAAGCCAAAATTAGGCCTATCTGCTAAAAATTACGGTAGAGCTGTTTATGAATGCCTTCGTGGTGGACTTGATTTTACAAAAGATGATGAAAACGTAAACTCGCAACCATTCATGCGTTGGAGAGATCGTTTTTTATTTGTTGCAGAAGCTCTCTTCAAAGCCCAAGCTGAAACAGGCGAAATCAAGGGGCATTACTTAAACGCCACCGCAGGTACATGTGAAGAAATGTTAAAGAGAGCTGTTTTTGCTAGAGAATTGGGTGCACCGATTGTCATGCATGACTACCTGACCGGAGGGTTTACCGCAAATACCAGTTTAGCTTTTTATTGCAGAGACAATGGACTGCTTCTTCATATTCATCGCGCGATGCATGCTGTGATTGATAGACAACGAAATCACGGTATGCATTTTCGTGTACTGGCAAAAGCATTGCGCATGTCCGGTGGGGATCACGTACACGCTGGAACTGTAGTAGGTAAACTGGAAGGGGAAAGAGAAGTCACTTTGGGTTTCGTTGATTTACTCCGCGACGATTATATCGAGAAAGATCGTGCACGCGGTGTTTATTTCACCCAAGATTGGGTCTCCATGCCGGGTGTATTCCCCGTTGCTTCGGGGGGTATCCACGTATGGCACATGCCAGCTCTAACCGAAATCTTTGGGGACGACTCTGTCCTACAGTTCGGTGGAGGAACTTTGGGACATCCCTGGGGAAATGCACCCGGTGCGGTAGCCAACCGAGTCGCGTTAGAAGCT [1206]
+Azolla_caroliniana TACACTCCCGATTATGTTACCAAAGATACCGATATTTTGGCAGCTTTCCGAATGACCCCGCAACCCGGAGTCCCACCCGAAGAGGCTGGAGCTGCGGTAGCTGCGGAATCTTCTACAGGTACATGGACCACCGTATGGACAGATGGACTTACCAGTCTTGACCGTTACAAAGGTAGATGCTATGATATCGAACCTGTTGCTGGAGAAGACAACCAATACATCGCATACGTAGCTTACCCCCTAGATTTATTCGAAGAGGGTTCCGTTACCAACATGTTTACCTCCATCGTAGGTAATGTATTCGGATTTAAGGCTCTACGCGCTCTTCGCCTAGAAGATCTTCGAATTCCCCCTGCTTATTCCAAAACTTTCATCGGACCACCCCACGGTATCCAGGTTGAAAGGGACAAACTGAACAAATATGGACGTCCTCTACTAGGATGCACGATAAAGCCAAAATTGGGCTTATCTGCTAAGAATTATGGTAGAGCTGTTTATGAATGTCTCCGCGGTGGACTTGACTTTACCAAGGATGATGAAAACGTAAACTCTCAACCATTCATGCGTTGGAGAGACCGTTTCCTATTCGTAGCAGAAGCTCTATTCAAGTCTCTGGCCGAAACGGGCGAAATCAAAGGACATTACTTGAACGCCACTGCAGGTACATGCGAAGAAATGCTAAAAAGAGCTCAATTCGCTAGAGAGTTGGGTGCACCAATCGTCATGCATGACTACCTGACCGGAGGTTTTACTGCAAACACTAGCTTGGCTTTCTACTGCCGAGACAATGGGCTACTTCTTCACATTCACCGCGCAATGCATGCTGTCATCGATAGACAGAGAAATCATGGTATACATTTCCGCGTGTTAGCCAAAGCATTACGTATGTCTGGTGGGGACCATATCCACTCCGGAACCGTAGTAGGTAAACTAGAAGGAGAGCGAGAAGTAACTCTGGGTTTTGTCGATCTACTTCGCGACGATTACATTGAAAAGGACCGTAGCCGCGGTATCTATTTCACCCAAGATTGGGTATCTATGCCAGGAGTATTGCCTGTAGCTTCAGGTGGTATCCACGTATGGCACATGCCCGCTCTAACCGAGATTTTTGGGGACGATTCCGTATTACAATTTGGTGGAGGAACCCTAGGCCATCCTTGGGGGAACGCACCCGGTGCTGTAGCTAACAGAGTGGCTTTGGAGGCT [1206]
+Blechnum_occidentale TACACCCCCGAATACAAGACCAAAGATACCGATATCTTAGCAGCTTTCCGGATGACCCCACAACCCGGAGTACCGGCTGAGGAAGCCGGAGCTGCGGTGGCTGCGGAATCCTCCACAGGTACGTGGACTACTGTCTGGACAGATGGGTTGACCAGTCTCGACCGTTACAAGGGCCGATGCTACGACATTGAACCCGTTGCTGGAGAAGAAAACCAGTATATTGCGTATGTAGCTTATCCTTTGGATCTATTTGAGGAAGGTTCCGTCACCAATTTGTTCACTTCCATTGTAGGTAATGTTTTTGGATTTAAGGCTCTACGCGCCATACGCTTGGAAGATCTTCGAATCCCTCCTGCATATTCTAAAACTTTCATTGGACCGCCTCACGGTATTCAAGTCGAAAGGGATAAACTGAACAAATATGGACGTCCCTTATTGGGATGTACAATCAAGCCAAAATTAGGTCTGTCTGCTAAAAATTATGGTAGAGCCGTCTACGAATGCCTTCGTGGTGGACTTGATTTTACAAAAGATGATGAAAACGTAAATTCCCAACCATTCATGCGTTGGAGAGATCGTTTCTTATTTGTAGCGGAAGCTCTTTTCAAAGCCCAGGCTGAAACGGGCGAAATCAAAGGGCATTACTTAAATGCTACTGCAGGTACGTGTGAGGAAATGTTGAAGAGAGCTGTTTTTGCTAGAGAGTTGGGTGCACCGATAGTCATGCATGACTACCTGACCGGAGGGTTTACCGCAAATACCAGCTTAGCTTTTTACTGCCGAGACAATGGACTGCTTCTCCACATTCACCGTGCGATGCATGCTGTTATCGATAGACAGCGGAATCACGGTATGCATTTTCGCGTATTGGCCAAAGCATTACGCATGTCCGGTGGGGATCATAT?C?CGCCGGAACTGTAGTAGGCAAACTAGAAGGTGAACGAGAAGTCACTTTGGGTTTCGTCGATTTACTTCGTGAAGATTATATTGAAAAAGATCGTAGCCGTGGTATTTATTTCACCCAAGATTGGGTATCTATGCCGGGTGTAATCCCCGTAGCTTCAGGGGGTATCCACGTCTGGCATATGCCCGCTCTAACCGATATCTTTGGGGACGACGCCGTATTACAGTTCGGCGGAGGAACCTTGGGACATCCTTGGGGAAACGCACCCGGTGCAGTAGCCAACCGAGTCGCATTAGAAGCT [1206]
+Cheiropleuria_bicuspis TACACTCCCAAGTATGAGACCAAAGACACCGATATCTTAGCAGCCTTTCGAATGACCCCGCAACCCGGAGTACCGCCTGAGGAAGCTGGAGCTGCAGTAGCTGCGGAATCTTCCACAGGTACATGGACCACTGTATGGACGGATGGACTTACTAGTCTCGATCGCTACAAAGGCCGATGCTATGATATCGAACCTGTTGCTGGGGAGGATAATCAGTATATTGCATATGTAGCTTATCCTTTGGATTTATTTGAAGAAGGTTCCGTTACCAATATGTTCACTTCCATTGTAGGTAACGTTTTTGGATTCAAGGCCCTACGCGCTCTCGGCTTAGAAGACCTTCGAATTCCTCCTGCTTATTCTAAAACTTTCATTGGGCCGCCCCATGGTATCCAGGTTGAAAGGGATAAGCTGAACAAATATGGGCGCCCCTTATTGGGATGTACAATCAAGCCAAAATTGGGCTTATCTGCTAAAAACTATGGCAGGGCTGTTTACGAATGTCTCCGTGGCGGACTTGATTCTACGAAGGATGATGAGAACGTAAATTCTCAACCATTTATGCGTTGGAGGGACCGGTTCGTGTCTGTGGCGGAAGCTCTTTTCAAGGCTCAGGCCGAAACGGGCGAAATAAAAGGACATTATCTAAATGCCACTGCGGGTACGTGTGAGGAAATGATGAAAAGAGCAGCCTTTGCTAGAGAATCGGGAGTACCCATCACCATGCATGATTACTTGACAGGAGGCTTCACTGCAAATACTAGCTTGGCCTTTTATTGTCGAGATAATGGGCTACTGCTTCATATCCACCGCGCGATGCATGCTGTTATCGATAGACAGAGAAATCACGGTATCCATTTCCGTGTCCTGGCCAAAGCATTGCGTATGTCCGGTGGGGATCATGTCCACGCCGGGACGGTAGTGGGTAAACTGGAGGGAGAACGAGACGTCACATTGGGTTTCGTCGATTTGCTACGCGACGATTATATCGAGAAAGACCGAAGCCGGGGTATATATTTCACTCAGGATTGGGTATCCATGCCAGGTGTATTTCCCGTAGCCTCGGGAGGTATCCACGTCTGGCATATGCCCGCTCTAACTGAAATCTTCGGAGATGATTCTGTCTCACAGTTCGGCGGAGGAACCTTGGGACACCCTGGGGGAAACGCACCAGGCGCTGTAGCTAATCGAGTTGCATTGGAAGCT [1206]
+Cyathea_lepifera TACACTCCCAAGTATGAGACCAAAGACACCGATATCTTGGCAGCCTTTCGAATGACCCCGCAACCCGGAGTACCGCCTGAGGAAGCTGGAGCTGCAGTAGCTGCGGAATCTTCCACAGGTACATGGACCACTGTATGGACGGATGGACTTACTAGTCTCGATCGCTACAAAGGCCGATGCTATGATATCGAACCTGTTGCTGGGGAGGATAATCAGTATATTGCATATGTAGCTTATCCTTTGGATTTATTTGAAGAAGGTTCCGTTACCAATATGTTCACTTCCATTGTAGGTAACGTTTTTGGATTCAAGGCCTTACGCGCTCTCCGCTTAGAAGATCTTCGAATTCCTCCTGCTTATTCTAAAACTTTCATTGGGCCGCCCCATGGTATCCAGGTTGAAAGGGATAAGCTGAACAAATATGGGCGTCCCTTATTAGGATGTACAATCAAGCCAAAATTGGGCTTATCTGCTAAAAATTATGGGAGAGCCGTTTATGAATGTCTCCGCGGTGGACTTGACTTCACCAAGGATGATGAGAACGTAAATTCCCAACCATTCATGCGTTGGAGAGATCGTTTCTTATTCGTAGCAGAAGCTCTCTTCAAATCTCAGGCCGAAACAGGCGAAATTAAGGGACATTACTTAAACGCTACTGCGGGTACGTGTGAAGAAATGTTGAAAAGAGCCTGTTTTGCTAGAGAATTGGGGGCACCAATTGTAATGCATGACTATCTGACCGGAGGGTTTACCGCAAACACTAGCTTGGCCTTCTATTGCCGAGATAATGGGCTGCTTCTTCACATTCACCGTGCAATGCATGCTGTCATCGATAGACAGAAAAATCACGGTATACATTTTCGTGTATTAGCAAAAGCATTACGTATGTCCGGTGGGGATCATGTTCACTCTGGGACTGTAGTAGGCAAACTAGAGGGAGAACGAGAAGTCACTTTGGGTTTTGTCGATTTGCTTCGCGACGATTATATTGAAAAAGACCGTAGCCGCGGCATCTATTTCACCCAAGATTGGGTATCTATGCCGGGCGTACTTCCCGTAGCTTCGGGGGGTATCCACGTATGGCATATGCCTGCTCTAACCGAAATCTTCGGAGACGATTCTGTCTTACAGTTCGGCGGAGGAACCCTGGGACATCCTTGGGGAAATGCGCCCGGTGCCGTAGCTAATCGAGTCGCGTTAGAGGCT [1206]
+Blotiella_pubescens TACACTCCCCAATATCAGACCAAAGACACTGATATTTTAGCGGCCTTCCGAATGACCCCACAACCTGGAGTACCGGCTGAAGAAGCGGGAGCTGCGGTAGCTGCCGAATCCTCTACGGGGACGTGGACCACTGTATGGACAGATGGGCTTACCAGCCTTGATCGCTACAAGGGCCGCTGCTACGATATCGAACCCGTCGCTGGGGAAGAAAACCAGTATATTGCATATGTAGCTTATCCCTTGGATCTATTCGAAGAAGGTTCTGTAACCAATTTATTCACTTCAATTGTAGGTAATGTTTCCGGATTCAAGGCCCTACGCGCTCTACGACTAGAAGACCTTCGAATTCCTCCTTCTTATTCTAAAACTTTCATTGGACCACT?CACGGTATTCAGGTCGAAAGGGACAAACTGAACAAATATGGACGTCCTTTATTGGGATGTACAATCAAGCCAAAATTGGGCTTGTCTGCTAAGAATTATGGGAGAGCCGTCTATGAATGCCTTCGGGGCGGACTTGATTTTACAAAAGACGACGAGAACGTGAATTCCCAACCATTCATGCGTTGGAGAGATCGTTTCTTATTCGTAGCAGAAGCTCTTTTCAAATCTCAGGCTGAAACAGGTGAAATCAAGGGACATTACTTAAATGCCACTGCAGGTACGTGTGAAGAGATGATGAAGAGAGCTTATTTTGCTAGAGAATTGGGTGTACCAATTATCATGCATGACTATTTGACCGGGGGATTTACCGCAAATACCAGCTTAGCTTATTATTGCAGGGACAATGGGCTGCTTCTTCATATTCACCGTGCGATGCATGCTGTCATCGATAGACAACGAAATCATGGTATGCACTTCCGCGTATTGGCCAAAGCATTACGCATGTCCGGCGGAGACCACATCCACGCCGGAACCGTAGTAGGCAAACTAGAGGGGGAGCGAGAAGTCACCTTGGGTTTTGTCGATTTGCTTCGCGATGATTACATCGAAAAGGATCGTAGCCGCGGCATCTATTTCACGCAGGATTGGGTATCTATGCCGGGTGTACTTCCCGTAGCTTCGGGGGGTATCCACGTCTGGCACATGCCCGCCCTAACCGAAATCTTCGGCGACGAT?CTGTCTTACAGTTCGGTGGCGGAACTTTGGGACATCCCTGGGGAAATGCACCCGGTGCCGTAGCTAACCGAGTTGCATTAGAAGCT [1206]
+Dennstaedtia_punctilobula TACACCCCCGGGTATAAGACCAAAGACACTGATATCTCAGCAGCCTTCCGCATGACCCCACAACCCGAAGTACCAGCTGAAGAAGCAGGAGCTGCGGTAGCTGCCGAATCCTCCACGGGTACATGGACCACTGTATGGACAGATGGACTTACCAGTCTTGATCGGTACAAGGGCCGGTGCTACGATATCGAACCCGTCGCTGGAGAGGAAAACCAGTATATCGCATATGTAGCTTATCCCTTGGATCTATTCGAGGAAGGTTCCGTCACTAATTTGTTCACGTCCATTGTAGGTAACGTTTTCGGATTTAAGGCCCTACGCGCTCTACGCCTAGAAGACCTTCGAATTCCCCCCGCTTATTCCAAAACTTTCATTGGACCACCTCATGGTATTCAGGTCGAAAGGGACAAACTGAACAAATATGGACGTCCCTTATTGGGATGTACAATCAAGCCAAAATTGGGCTTGTCCGCTAAGAATTATGGTAGAGCCGTCTATGAATGCCTTCGTGGTGGACTTGATTTCACAAAAGATGATGAGAACGTAAATTCCCAACCATTCATGCGTTGGAGGGATCGCTTCTTATTCGTGGCAGAAGCTCTTTTCAAATCCCAGGCTGAAACAGGCGAAATCAGGGGACATTACTTGAATGCCACTGCAGGTACATGTGAAGAGATGTTGAAGAGAGCTGTTTTTGCTAGAGAATTGGGTGTACCAATTGTCATGCACGACTACCTGACCGGAGGGTTTACCGCAAATACCAGCCTAGCTTTCTATTGCAGAGACAATGGGCTGCTTCTTCATATTCACCGCGCGATGCATGCTGCTATCGATAGACAACGAAATCACGGCATACATTTCCGCGTATTAGCCAAAGCATTACGGATGTCCGCCGGGGATCATATCCACGCCGGAACTGTAGTAGGCAAATTAGAGGGAGAACGAGAAGTCACTTTGGGTTTCGTTGATTTACTCCGCGATGATTACATCGAAAAAGATCGTAGCCGCGGTATCTATTTCACGCAAGATTGGGTGTCTATGCCGGGTGTACTCCCCGTAGCTTCAGGGGGTATCCACGTCTGGCACATGCCTGCCCTAACCGAAATCTTCGGGGACGATTCCGTCTTACAATTCGGTGGCGGAACTTTGGGACATCCCTGGGGGAACGCGCCCGGTGCCGTAGCTAACCGAGTCGCATTAGAAGCT [1206]
+Histiopteris_incisa TACACTCCCGAATATAAGACCAAGGACACTGATATTTTAGCAGCCTTCCGAATGACCCCACAACCTGGAGTACCAGCTGAGGAAGCCGGAGCTGCGGTAGCTGCGGAATCCTCCACGGGTACATGGACCACTGTATGGACAGATGGGCTTACCAGTCTCGATCGTTACAAGGGCCGGTGCTACGATATCGAACCCGTCGCTGGAGAAGAAAACCAGTATATTGCATATGTAGCTTATCCCTTGGATCTATTCGAAGAAGGTTCTGTAACCAATTTGTTCACTTCAATTGTAGGTAATGTTTTCGGATTCAAGGCCCTACGCGCTCTACGCCTAGAAGACCTTCGAATTCCCCCCGCTTATTCTAAAACTTTCATTGGACCGCCTCACGGTATTCAGGTCGAAAGGGATAAACTGAACAAATATGGACGTCCCTTATTGGGGTGTACAATCAAGCCAAAATTGGGCTTGTCTGCTAAGAATTATGGTAGAGCCGTCTATGAATGCCTTCGTGGTGGACTTGATTTCACAAAAGACGATGAAAACGTAAATTCCCAACCATTCATGCGTTGGAGAGATCGCTTCTTATTCGTAGCAGAAGCTCTTTTCAAATCCCAGGCTGAAACAGGTGAAATCAAGGGACATTACTTAAATGCCACTGCAGGTACGTGTGAAGAAATGATGAAGAGAGCTGTTTTTGCTAGAGAATTGGGTGCACCAATTGCCATGCATGACTACCTGACCGGGGGATTTACCGCAAATACCAGCTTAGCTTATTATTGCAGAGACAATGGGCTGCTTCTTCATATTCACCGTGCAATGCATGCTGTCATCGATAGACAACGGAATCATGGTATGCACTTCCGTGTATTGGCCAAAGCGTTACGCATGTCCGGCGGAGACCACATCCACGCCGGAACCGTAGTAGGCAAACTAGAGGGGGAGCGAGACGTCACCTTGGGTTTTGTCGATTTGCTTCGCGATGATTACATCGAAAAAGATCGTAGCCGCGGCATCTATTTCACGCAGGATTGGGTATCTATGCCGGGTGTACTCCCCGTAGCTTCAGGGGGTATCCACGTCTGGCACATGCCCGCCCTAACCGAAATCTTCGGGGACGATTCTGTCTTACAGTTCGGTGGCGGAACTTTGGGACATCCCTGGGGAAATGCGCCCGGTGCCGTAGCTAACCGAGTCGCATTAGAAGCT [1206]
+Lindsaea_odorata TATACTCCCGATTACAAAACCAAAGACACCGATATCCTAGCAGCCTTTCGAATGACCCCGCAGCCTGATGTGCCGGCTGAAGAAGCCGGAGCTGCCGTAGCTGCAGAGTCTTCAACGGGTACTTGGACTACTGTATGGACGGATGGCCTTACCAGTCTTGATCGTTACAAAGGCCGGTGCTACGATATTGAACCCGTTGCCGGAGAAGAAAATCAATATATTGCATATGTAGCATACCCTTTGGATTTATTCGAAGAAGGTTCTGTTACCAATTTATTCACTTCGATTGTAGGTAACGTGTTTGGGTTTAAAGCCCTACGTGCCCTACGGTTAGAAGATCTTCGAATCCCCCCAGCTTATTCCAAAACTTTTATTGGACCACCCCACGGTATTCAGGTTGAAAGGGATAAACTGAACAAATATGGACGTCCCTTATTGGGATGTACAATCAAGCCGAAACTGGGCTTATCTGCTAAAAACTACGGTAGGGCTGTTTACGAATGTCTACGCGGCGGCCTTGATTTCACAAAAGATGATGAGAACGTGAACTCCCAACCATTCATGCGTTGGAGAGATCGTTTTCTTTTCGTAGCAGAAGCTCTTTTTAAATCCCAGGCTGAAACAGGTGAAATTAAGGGGCATTACTTAAATGCTACTGCAGGTACGTGTGAGGAAATGATAAAAAGAGCGGTTTTTGCCAGAGAGTTGGGAGCACCAATTGTTATGCATGACTACCTAACCGGAGGTTTTACGGCTAATACTAGTTTAGCTTTTTATTGTAGAGACAATGGGCTGCTTCTCCACATTCACCGTGCAATGCATGCTGTTATCGATAGACAACGAAATCACGGGATGCATTTCCGCGTATTAGCTAAAGCATTGCGTATGTCCGGTGGGGATCATATACACGCTGGAACTGTAGTAGGCAAATTAGAAGGTGAACGAGAAGTTACTTTGGGTTTTGTCGATTTGCTGCGCGATGATTATATTGAAAAAGACCGTAATCGCGGCATCTATTTCACCCAAGATTGGGTATCTATGCCAGGTGTACTTCCCGTAGCTTCTGGGGGTATCCACGTTTGGCACATGCCCGCCTTGACTGAAATTTTCGGAGATGACTCTGTATTGCAGTTTGGCGGAGGAACTTTGGGACACCCCTGGGGAAATGCGCCTGGTGCTGTAGCCAACCGAGTTGCATTAGAGGCT [1206]
+Lonchitis_hirsuta TACACCCCCGATTATAAGACAAAAGATACTGATATCTTAGCAGCCTTTCGGATGACTCCGCAACCCGGGGTACCGGCCGAAGAAGCCGGAGCTGCGGTAGCTGCCGAATCTTCCACGGGTACGTGGACTACTGTATGGACGGATGGACTTACAAGCCTCGATCGATACAAGGGTCGGTGCTACGATATTGAACCTGTCGCTGGAGAGGAAAACCAATACATCGCATATGTAGCTTATCCCTTGGATCTATTCGAAGAAGGCTCCGTTACTAATTTATTTACCTCCATCGTAGGTAACGTATTCGGGTTCAAAGCCCTGCGCGCTCTACGGCTAGAAGACCTTCGGATTCCTCCCGCTTATTCTAAAACTTTTATTGGCCCCCCCCATGGCATTCAGGTCGAAAGGGATAAACTGAACAAATACGGACGTCCCCTATTGGGCTGTACAATCAAGCCAAAATTAGGATTATCCGCCAAGAATTACGGTAGAGCCGTCTATGAATGTCTCCGTGGTGGACTTGACTTCACAAAAGATGATGAAAACGTAAATTCTCAACCATTCATGCGTTGGAGAGATCGCTTCCTATTCGTAGCAGAAGCCCTTTTCAAATCCCAGGCGGAAACGGGTGAAATCAAAGGACACTACTTAAATGCCACCGCAGGTACATGTGAAGAAATGATGAAGAGGGCTGTTTTTGCCAGAGAATTGGGGGCACCAATTGTCATGCATGACTACCTTACCGGGGGGTTCACCGCAAATACTAGTTTAGCCCATTATTGTAGAGATAATGGGCTGCTTCTTCACATTCACCGCGCAATGCACGCTGTCATTGACAGACAACGAAATCACGGTATGCATTTCCGTGTATTAGCCAAAGCATTACGCATGTCCGGTGGAGATCATATCCACGCCGGAACTGTAGTAGGCAAACTAGAAGGGGAAAGAGAAGTCACCTTAGGTTTTGTCGATTTGCTCCGTGACGACTACATCGAAAAAGATCGTAGCCGTGGTATTTATTTCACCCAAGATTGGGTATCTATGCCAGGTGTCCTTCCCGTAGCTTCCGGGGGTATTCACGTCTGGCATATGCCCGCCCTAACCGAAATCTTTGGAGACGACTCCGTCTTACAATTCGGTGGAGGAACCTTAGGACACCCTTGGGGAAATGCGCCTGGTGCTGTAGCTAACCGAGTCGCATTAGAGGCT [1206]
+Microlepia_strigosa TACACTCCCGGATATAAGACTAAAGATACTGATATCTTAGCAGCCTTCCG?ATGACTCCTCAACCTGGAGTTCCACCTGAGGGAGCAGGGGCCGC?GTAGCTGCCGAATCTTCTACTGGTACATGGACCACTGTGTGGACCGATGGACTTACCAGCCTTAT?CGTTACAAAGGGCGCTGCTACGATATCGAACCCGTTGCTGGAGAAGAAAACCAGTATATCGCATATGTAGCTTATCCCCTGGATCTATTCGAGGAAGGTTCCGTTACTAATTTGTTCACTTCCAT?GTAGGTAATGTTTTCGGATTTAAGGCCCTACGCGCTCTACGCCTAGAAGACCTTCGAATTCCCCCTGCCTATTCCAAAACTTTCATTGGACCACCTCATGGTATTCAGGTCGAAAGAGACAAACTGAACAAATATGGACGTCCTTTATTGGGATGTACAATCAAGCCAAAATTGGGCTTGTCCGCTAAGAATTATGGTAGAGCTGTCTATGAATGCCTTCGTGGTGGACTTGATTTCACAAAAGATGATGAGAACGTAAATTCCCAACCATTCATGCGTTGGAGGGATCGTTTCTTATTCGTGGCAGAAGCTCTTTTCAAATCCCAGGCTGAAACAGGCGAAATCAAGGGACATTACTTAAATGCCACCGCAGGTACATGTGAAGAGATGATGAAGAGAGCTGTTTTTGCTAGAGAATTGGGTGCACCAATTGTCATGCACGACTACCTGACCGGAGGGTTCACTGCAAATACCAGCTTAGCTTATTATTGCAGAGACAATGGGCTACTTCTTCATATTCACCGCGCGATGCATGCTGTCATTGATAGACAACGAAATCACGGTATGCATTTCCGCGTATTGGCTAAAGCATTACGCATGTCCGGCGGAGATCATATCCATGCCGGAACTGTGGTAGGCAAATTAGAGGGGGAGCGAGACGTCACCTTGGGTTTCGTTGATTTACTCCGCGACGATTACATCGAAAAAGATCGTAGCCGCGGTATCTATTTCACGCAAGATTGGGTGTCTATGCCGGGTGTACTCCCCGTAGCTTCGGGGGGTATCCACGTCTGGCATATGCC?GCCCTAACCGAAATCTTCGGGGACGACTCTGTCTTACAATTCGGTGGCGGAACCTTGGGACATCCCTGGGGGAATGCGCCCGGTGCCGTAGCTAATCGAGTCGCATTAGAAGCT [1206]
+Monachosorum_henryi TACACTCCCGGATATAAGACCAAAGACACTGATATCTTAGCAGCCTCTCGAATGACTCCACAACCCGGAGTGCCGGCTGAAGAGGCGGGAGCTGCGGTAGCTGCGGAATCCTCCACGGGTACATGGACCACTGTATGGACAGACGG?CTTACCAGCCTCGATCGCTACAGGGCCCGGTGCTACGATATCGAACCCGTCGCTGGAGAGGAAAACCAGTATATCGCGTATGTAGCTTATCCCTTGGATCTATTCGAAGAAGGTTCCGTCACCAATTCGTTCACTTCTATTGTAGGTAACGTTTTCGGATTCAAGGCCCTACGCGCTCTACGCCTAGAAGACCTTCGAATTCCTCCTGCTTATTCCAAAACTTTCCAAGGACCGCCTCATGGTATTCAGGTCGAAAGGGACAAATTGAACAAATATGGACGTCCCTTTTT?GGATGTACAATCAAGCCAAAATTGGGCTTGTCTGCCAAGAATTATGGTAGAGCCGTCTACGAATGCCTTCGCGCCGGACTTGATTTCACAAAAGATGATGAAAACGTAAATTCCCAACCATTCATGCGTTGGAGAGACCGCTTCTTATTCGTAGCAGAAGCTCTCTTCAAAGCCCAGGCTGAAACGGGCGAAATCAAAGGACATTACTTAAACGCTACTGCAGGTACGTGTGAAGAAATGATGAAGAGAGCTGTTTTTGCTAGAGAATTGGGTGCACCGATTGTCATGCATGACTACTTAACCGGAGGGTTCACCGCAAATACCAGCTTAGCTTTATATTGCAGAGACAATGGGCTGCTTCTTCATATTCACCGCGCAACGCATGCTGTCATCGATAGACAGCGGAATCACGGCATGCACTTTCGCGTATTGGCCAAAGCATTACGCATGTCCGGTGGGGATCATATCCACGCCGGAACTGTAGTAGGCAAACTAGAGGGAGAACGAGAAGTCACCTTGGGTTTCGTCGATTTGCTTCGCGATGACTATATCGAAAAAGATCGTAGCCGCGGCATCTACTTTACCCAAGATTGGGTGTCTATGCCGGGTGTCATCCCCGTAGCTTCGGGGGGTATCCACGTCTGGCACATGCCCGCCCTAACCGAGATCTTCGGGGACGATTCTGTCTTGCAGTTCGGTGGCGGAACCTTGGGACATCCTTGGGGAAACGCGCCCGGTGCCGTAGCTACCCGAGTCGCATTAGAAGCT [1206]
+Pteridium_aquilinum TACACCCCCGAATATAAGACCAAAGACACTGATATCTTAGCAGCCTTCCGAATGACCCCACAACCCGGAGTACCGGCTGAGGAAGCAGGAGCTGCGGTAGCTGCAGAATCCTCCACGGGTACATGGACCACTGTATGGACAGACGGGCTTACCAGTCTTGATCGCTACAAGGGCCGATGCTACGATATTGAACCCGTCGCTGGAGAAGAAAACCAGTATATCGCATATGTAGCTTATCCCTTGGATCTATTTGAAGAAGGTTCTGTAACCAATTTGTTCACTTCAATTGTAGGTAATGTTTTCGGATTTAAGGCCCTACGCGCTCTACGCCTAGAAGACCTTCGAATTCCTCCCGCTTATTCTAAAACTTTCATTGGACCGCCTCACGGTATTCAGGTCGAAAGAGACAAACTGAACAAATATGGACGTCCCTTATTGGGATGTACAAACAAGCCAAAATTGGGCTTGTCTGCTAAAAATTACGGTAGAGCCGTCTATGAATGCCTTCGTGGTGGACTTGATTTCACAAAAGATGATGAAAACGTAAATTGCCAACCATTCATGCGTTGGAGAAATCGCTTCTTATTCGTATCAGAAGCTCTTTTCAAAGCCCAGGCTGAAACCGGCGAAATCAAGGGACATTACTTAAATGCCACTGCTGGTACGTGTGAAGAAATGATGAAGAGAGCTGCTTTTGCATACGAATTGGGTGTACCAATCGTCATGCATGACTACCTGACCGGGGGATTTACTGCAAATACCAGCTTAGCTTTTTATTGCAGAGACCATGGGCTGCTTCTCCACATTCACCGTGCAATGCATGCTGTCATCGATAGACAACGAAATCACGGTATACAATTCCGTGTATTGGCCAAAGCATTACGCATGTCCGGTGGAGACCACATTCACGCCGGAACTGTAGTAGGCAAACTAGAGGGAGAACGAGAAGTCACCTTGGGTTTTGTCGATTTTCTTCGCGATGATTACATCGAGAAAGATCGTAGCCGTGGCATCTATTTCACGCAGGATTGGGTATCTATGCCGGGTGTACTCCCCGTAGCCTCAGGGGGTATCCACGTCTGGCACATGCCCGCTCTAACCGAAATCTTCGGGGACGATTCTGTCTTGCAGTTCGGTGGCGGAACTTTAGGACATCCATGGGGAAATGCGCCTGGTGCCGTAGCTAACCGAGTCGCATTAGAAGCT [1206]
+Calochlaena_dubia TACACTCCCGATTATGTAACCAAAGACACCGATATATTGGCGGCCTTTCGAATGACCCCGCAACCCGGAGTACCGCCCGAGGAAGCTGGAGCTGCAGTAGCTGCGGAATCTTCCACAGGTACATGGACCACTGTATGGACGGATGGACTTACTAGTCTCGATCGCTACAAAGGTCGATGCTATGATATCGAACCTGTTTCTGGAGAGGAGAATCAGTATATTGCATATGTAGCTTATCCTTTGGATCTATTTGAAGAAGGTTCCGTTACCAATATGTTCACTTCCATTGTAGGTAATGTTTTCGGATTCAAAGCCCTACGCGCTCTCCGCTTAGAAGATCTTCGAATTCCTCCTGCTTATTCTAAGACTTTCATTGGACCGCCCCACGGCATCCAGGTTGAAAGAGATAAGCTGAACAAATATGGGCGTCCCTTATTAGGATGTACAATCAAACCGAAATTGGGCTTATCTGCTAAGAATTATGGGAGAGCCGTTTATGAATGTCTCCGTGGTGGACTTGACTTCACCAAGGATGATGAGAACGTAAATTCACAACCATTCATGCGTTGGAGAGATCGTTTCTTATTCGTAGCAGAAGCTCTCTTCAAAGCTCAAGCCGAAACAGGCGAAATTAAGGGACATTACTTAAACGCTACTGCAGGTACTTGTGAAGAGATGTTGAAAAGAGCCGTTTTTGCTAGAGAATTGGGGGTACCCATAGTCATGCATGACTATTTGACCGGAGGTTTTACCGCAAATACGAGCTTGGCTTTTTATTGTCGAGACAATGGGCTGCTTCTTCACATTCACCGTGCGATGCATGCTGTCATCGATAGACAAAAAAATCACGGTATACATTTCCGTGTATTAGCCAAAGCTTTACGTATGTCCGGTGGAGATCATATTCACGCTGGGACTGTAGTAGGCAAACTAGAGGGAGAACGAGAAGTTACTTTGGGCTTTGTCGATTTGCTTCGCGATGATTACATCGAAAAAGACCGTAGCCGCGGCATCTATTTCACCCAAGATTGGGTATCTATGCCGGGCGTACTTCCTGTAGCTTCGGGGGGTATCCATGTCTGGCATATGCCTGCTCTAACCGAAATATTCGGAGACGATTCCGTCTTACAGTTCGGCGGCGGAACTTTGGGACATCCTTGGGGAAATGCGCCCGGTGCCGTAGCTAATCGAGTCGCGTCAGAGGCT [1206]
+Dicksonia_antarctica TACACTCCCGATTATGCGACCAAAGACACCGATATCTTGGCGGCCTTTCGAATGACCCCGCAACCCGGAGTACCGCCTGAGGGAGCTGGAGCTGCAGTAGCTGCGGAATCTTCCACAGGTACATGGACCACTGTATGGACGGATGGACTTACTAGTCTCGATCGCTACAAAGGTCGATGCTATGATATCGAACCTGTTTCTGGAGAGGATAATCAGTATATTGCATATGTAGCCTATCCTTTGGATCTATTTGAAGAAGGTTCCGTTACCAATTTGTTCACTTCCATTGTAGGTAATGTTTTTGGATTCAAAGCCCTACGCGCTCTCCGCTTAGAAGATCTTCGAATTCCTCCTGCTTATTCTAAGACTTTCATTGGACCGCCCCACGGTATCCAGGTTGAAAGGGATAAGCTGAACAAATATGGGCGTCCCTTATTAGGATGTACAATCAAACCAAAATTGGGCTTATCTGCTAAGAATTATGGCAGAGCTGTTTATGAATGTCTCCGTGGTGGACTTGACTTCACCAAGGATGATGAGAACGTAAATTCCCAACCATTCATGCGTTGGAGAGATCGCTTCTTATTCGTAGCAGAAGCTCTCTTCAAAGCTCAGGCTGAAACAGGCGAAATTAAGGGACATTACCTAAATGCTACTGCAGGTACTTGTGAAGAAATGATGAAAAGAGCCGTTTTTGCTAGAGAATTGGGGGCACCAATTGTAATGCATGACTATCTGACCGGAGGGTTTACCGCAAACACTAGCTTGGCTTTTTACTGTCGAGACAATGGGCTGCTTCTTCACATTCACCGTGCGATGCATGCTGTCATCGATAGACAGAGAAATCACGGTATACATTTTCGTGTATTAGCCAAAGCATTACGTATGTCCGGTGGAGATCATATTCACGCTGGGACTGTAGTAGGCAAACTAGAGGGAGAACGAGAAGTCACTTTGGGCTTTGTCGATTTGCTTCGCGACGATTATATTGAAAAAGACCGTAGCCGCGGCATCTATTTCACCCAAGATTGGGTATCGATGCCAGGCGTACTTCCCGTAGCTTCGGGGGGTATCCATGTCTGGCATATGCCTGCTCTAACCGAAATCTTCGGAGACGATTCCGTGTTACAGTTCGGCGGAGGAACCTTGGGACATCCTTGGGGAAATGCGCCCGGTGCTGTAGCTAATCGAGTCGCGTCAGAGGCG [1206]
+Dipteris_conjugata TATACTCCCGATTATGAGACCAAAGATACTGACATCTTGGCAGCCTTCCGGATGACTCCGCAACCCGGGTTACCGCCTGAGGAAGCTGGAGCTGCAGTAGCTGCAGAATCTTCCACAGGTACGTGGACCACTGTGTGGACGGATGGACTGACTAGTCTCGATCGTTACAAGGGTCGATGCTACGACATCGAACCTGTTGCTGGGGAAGAGAATCAATATATCGCATATGTAGCTTATCCTTTGGATCTATTTGAAGAGGGTTCCGTCACCAATATGTTCACTTCCATTGTAGGTAACGTATTTGGATTTAAAGCCCCACGAGCTCTACGTTTGGAGGATCTGAGAATTCCTCCTGCTTATTCCAAGACTTTCATTGGGCCGCCTCACGGTATCCAAGTCGAAAGGGATAAACTGAACAAATATGGTCGTCCCTTGCTGGGATGTACAATCAAGCCAAAATTGGGCTTATCTGCTAAAAACTATGGCAGGGCTGTTTACGAATGTCTCCGTGGCGGACTTGATTTTACGAAGGATGATGAGAACGTAAATTCTCAACCATTCATGCGTTGGAGGGACCGGTTCCTGTTTGTGGCAGAAGCTCTTTTCAAGGCTCAGGCCGAAACGGGCGAAATAAAAGGACATTATCTAAATGCCACTGCGGGTACGTGTGAGGAAATGATGAAAAGAGCAATCTTTGCTAGAGAATCGGGAGCACCCATCGTCATGCATGATTATTTGACGGGAGGCTTCACTGCAAATACTAGCTTGGCCTTTTATTGTCGAGATAATGGGCTACTGCTTCATATCCACCGCGCGATGCATGCTGTTATCGATAGACAGAGAAATCACGGTATCCATTTTCGTGTCCTAGCCAAAGCATTGCGTATGAGCGGCGGGGATCATATCCACGTCGGGACCGTAGTGGGTAAACTGGAGGGAGAACGAGACGTCACACTGGGTTTCGTCGATTTGCTACGCGACGATTATATCGAGAAAGACCGAAGCCGTGGTATATATTTCACTCAGGATTGGGTATCCATGCCAGGTGTATTTCCCGTAGCCTCGGGAGGTATCCATGTCTGGCATATGCCCGCTCTAACTGAAATCCTCGGAGATGATTCTGTCTCACAGTTCGGCGGAGGAACCTTGGGACACCCCTGGGGAAACGCACCAGGCGCCGTAGCTAATCGAGTTGCATCGGAGGCT [1206]
+Davallia_mariesii TATACACCTGAATACAAGACCAAAGATACCGATATCTTAGCAGCATTTCGAATGACCCCACAACCTGGAGTACCAGCTGAGGAAGCTGGAGCTGCGGTAGCTGCAGAATCCTCCACAGGTACGTGGACCACTGTATGGACAGATGGGTTGACCAGCCTTGACCGTTACAAGGGCCGATGCTACGACATCGAACCCGTCGCTGGAGAAGAAAACCAGTATATCGCGTATGTAGCTTATCCTTTGGATCTATTTGAAGAAGGTTCTGTGACCAATTTATTCACCTCCATAGTAGGTAATGTCTTTGGATTTAAGGCTCTACGCGCTCTACGCTTGGAAGACCTTCGAATTCCTCCCGCTTATTCTAAAACTTTCCAGGGACCGCCTCATGGTATTCAGGTTGAAAGGGATAAACTGAACAAGTATGGACGCCCTTTATTGGGATGTACAATCAAGCCAAAATTGGGCCTGTCCGCTAAAAATTATGGTAGAGCCGTTTACGAATGCCTTCGTGGTGGACTTGATTTCACAAAAGATGATGAAAATGTGAATTCGCAGCCATTCATGCGTTGGAGAGATCGCTTCCTATTCGTGGCGGAAGCTCCTTTCAAATCCCAGGCTGAAACAGGGGAAATCAAAGGCCATTACTTAAATGCTACTGCAGGTACATCTGAAGAGATGTTGAAAAGAGCTGTTTTTGCTAGAGAGTTGGGTGCACCAATTGTCATGCATGACTATCTGACCGGAGGTTTTACCGCAAATACCAGCTTAGCTTTCTATTGCAGAGATAATGGACTGCTTCTTCATATTCACCGCGCGATGCATGCTGTAATCGATAGGCAGCGAAATCATGGTATGCATTTCCGTGTATTGGCCAAAGCGTTACGCATGTCCGGCGGGGATCATATACACGCTGGAACTGTAGTAGGCAAACTAGAAGGGGAGCGAGAAGTCACCCTTGGTTTCGTCGATTTACTTCGCGACGATTACATTGAAAAAGATCGTAGCCGTGGTATCTATTTCACGCAAGATTGGGTATCTATGCCAGGTGTACTTCCCGTAGCTTCGGGGGGTATCCACGTTTGGCACATGCCTGCTCTAACCGAAATCTTTGGGGACGATTCCGTATTACAGTTTGGCGGAGGAACCTTAGGACATCCTTGGGGAAATGCGCCAGGTGCGGTAGCTAACCGAGTTGCATTAGAAGCT [1206]
+Elaphoglossum_hybridum TACACCCCTGAGTACAAGACCTTAGATACCGATATATTAGCAGCGTTCAGAATGACCCCACAACCCGGAGTACCAGCTGAGGAAGCTGGAGCTGCGGTAGCTGCAGAATCCTCTACGGGTACGTGGACCACCGTATGGACAGATGGGTTGACTAGTCTTGATCGTTACAAGGGCCGATGCTACGATATCGAACCCGTTGCTGGAGAAGAAAACCAGTATATTGCATATGTAGCTTATCCTTTGGATCTCTTCGAAGAAGGTTCTGTCACCAATTTGTTCACTTCCATTGTAGGTAATGTTTTCGGATTTAAAGCCCTACGCGCTTTACGCTTAGAAGACCTTCGAATTCCTCCCGCTTATTCTAAAACCTTTATGGGACCGCCTCATGGTATTCAGGTCGAAAGGGATAAATTGAACAAATATGGACGTCCCTTATTAGGATGTACAATCAAGCCAAAGTTAGGTCTGTCTGCTAAAAATTATGGTAGAGCTGTCTACGAATGTCTCCGTGGTGGACTCGATTTCACAAAAGATGATGAAAATGTGAATTCTCAGCCATTCATGCGTTGGAGAGATCGCTTCCTATTTGTGGCGGAAGCTCTTTTCAAATCTCAGGCTGAAACAGGCGAAATCAAGGGACACTACTTAAATGCTACCGCAGGTACGTGTGAAGAGATGATGAAGAGAGCTGTTTTTGCTAGAGAATTAGGTGCACCAATTGTCATGCATGACTACTTGACCGGAGGGTTTACCGCAAATACCAGCTTAGCTCATTATTGTAGAGACAATGGGTTGCTTCTTCATATTCACCGCGCTATGCATGCTGTGATTGATAGACAACGAAATCACGGTATGCATTTTCGTGTATTGGCCAAAGCATTACGGATGTCCGGTGGAGATCATGTACACGCCGGAACCGTAGTGGGTAAACTAGAGGGGGAACGAGAAGTAACCCTGGGTTTCGTTGATTTACTTCGCGACGATTATATTGATAAAGATCGTAGTCGTGGTGTGTACTTCACACAAGATTGGGTGTCTATGCCGGGTGTAATCCCTGTAGCTTCGGGGGGTATACACGTCTGGCATATGCCTGCTCTAACCGAAATTTTTGGGGACGATTCCGTATTACAGTTTGGTGGAGGAACCTTGGGACATCCTTGGGGAAATGCACCCGGTGCGGTCGCTAACCGAGTTGCATTAGAAGCT [1206]
+Nephrolepis_cordifolia TACACCCCCGACTACCAAACCAAAGATACCGATATCTTAGCAGCATTCCGAATGACCCCACAACCCGGCGTACCGGCTGAGGAAGCCGGAGCTGCGGTAGCTGCAGAGTCATCCACGGGTACGTGGACCACTGTATGGACAGATGGATTGACCAGTCTTGATCGTTACAAGGGCCGATGCTACGACATCGAACCCGTCGCTGGAGAAGAAAACCAGTATATCGCTTATGTAGCTTATCCTTTGGATCTATTTGAAGAAGGTTCTGTCACCAATCTGTTCACCTCCATTGTAGGTAATGTTTTTGGGTTTAAGGCTCTACGCGCTCTACGCTTAGAAGACCTTCGAATTCCTCCTGCTTATTCTAAAACTTTCATTGGACCGCCTCATGGTATTCAGGTCGAAAGAGATAAACTGAATAAATATGGACGTCCTTTATTGGGATGTACAATCAAGCCCAAATTAGGCTTGTCTGCTAAAAATTATGGTCGAGCCGTCTACGAATGCCTTCGTGGGGGACTTGATTTCACAAAAGATGATGAAAATGTTAATTCCCAGCCATTCATGCGTTGGAGAGATCGATCCTTATTTGATGCAGAAGCTCTTTTTAAATCTCAGGCTGAAACAGGGGAAATCAAGGGGCATTACTTAAATGCTACTGCAGGTACATGTGAAGAAATGTTGAAAAGAGCTGTTTTCGCTAGAGAATTGGGTGCACCAATTGTCATGCATGACTACCTGACCGGAGGGTTTACCGCAAATACCAGCTTAGCTTTTTATTGTAGAGATAATTGGCTGCTTCTTCATATTCACCGTGCGATGCATGCTGTAATCGATAGACAACGAAATCACGGTATGCATTTCCGTGTATTGCCAAAAGCATTACGCATGTCCGGCGGAGATCATATACACGCCGGAACTGTAGTAGGCAAACTAGAAGGGGAACGAGAAGTCACTCTTGGTTTCGTCGATTTACTTCGCGACGATTACATCGAAAAAGATCGTAGCCGTGGTATCTATTTCACCCAAGATTGGGTATCTATGCCAGGTGTACTCCCCGTAGCTTCGGGGGGTATCCACGTATGGCACATGCCTGCTCTAACCGAAATCTTTGGGGACGATTCTGTATTACAGTTCGGTGGAGGAACCTTAGGACATCCTTGGGGAAATGCACCTGGTGCGGTAGCCAACCGAGTCGCATTAGAAGCT [1206]
+Onoclea_sensibilis TACACCCCCGAATACAAGACCAAAGATACCGACATCTTAGCAGCCTTTCGAATGACCCCACAACCCGGGGTACCGGCTGAGGAAGCCGGAGCTGCGGTAGCTGCGGAATCCTCCACGGGTACGTGGACCACTGTATGGACAGATGGGTTGACCAGCCTTGACCGTTACAAGGGCCGATGCTACGACATTGAACCCGTCGTTGGAGAAGAAAACCAGTATATCGCGTATGTAGCTTATCCCTTGGATCTATTCGAAGAAGGTTCCGTCACCAATTTGTTCACCTCCATTGTAGGTAATGTTTTCGGATTTAAGGCTCTACGCGCCCTACGCCTGGAAGACCTTCGAATCCCTCCTGCTTATTCCAAAACTTTCATTGGACCGCCTCATGGTATTCAGGTCGAAAGGGATAAACTGAACAAATACGGACGTCCCTTATTGGGATGTACAATCAAACCAAAATTAGGTCTGTCTGCTAAAAATTACGGTAGAGCCGTCTACGAATGCCTCCGTGGTGGACTTGATTTTACAAAAGATGATGAAAACGTAAATTCCCAGCCATTCATGCGTTGGAGAGATCGCTTCTTATTTGTAGCAGAAGCTCTTTTCAAATCCCAGGCTGAAACGGGCGAAATCAAGGGGCATTACCTAAATGCTACTGCAGGTACGTGTGAGGAAATGTTGAAGAGAGCTGTCTTTGCTAGAGAGTTGGGTGTACCGATAGTCATGCATGACTACCTGACCGGAGGGTTTACCGCAAATACCAGCTTAGCTTTTTATTGCCGAGACAATGGACTGCTTCTTCATATCCACCGTGCGATGCATGCTGTTATCGATAGACAACGAAATCACGGTATGCATTTTCGTGTATTGGCCAAAGCGTTGCGCATGTCTGGCGGAGACCATATACACGCCGGAACTGTAGTAGGCAAACTAGAAGGGGAACGGGAAGTGACTTTGGGTTTCGTCGATTTACTTCGCGACGATTATATTGAAAAAGATCGTAGCCGTGGTATCTATTTCACCCAAGATTGGGTATCTATGCCGGGTGTACTCCCCGTAGCTTCAGGGGGTATCCACGTCTGGCACATGCCCGCCCTAACTGAAATCTTTGGGGATGACTCTGTCTTACAGTTCGGTGGAGGAACCTTGGGACATCCTTGGGGAAATGCACCCGGTGCAGTAGCCAACCGAGTCGCGTTAGAAGCT [1206]
+Rumohra_adiantiformis TACACCCCCGAGTACCAAGACAAAGATACCGATATATTAGCAGCCTTCAGAATGACCCCACAACCCGGAGTACCGCCTGAGGAAGCCGGAGCTGCGGTGGCTGCAGAATCCTCCACGGGTACGTGGACCACTGTATGGACAGATGGGTTGACCAATCTTGACCGTTACAAGGGCCGATGCTACGACATCGAACCCGTCGCTGGAGAAGAAAATCAGTATATCGCGTACGTAGCTTATCCTTTGGATCTATTCGAAGAAGGTTCCGTCAACAATCTGTTCACCTCCATTGTAGGTAATGTTTTTGGATTTAAAGCTCTACGCGCTTTACGCTTGGAAGACCTTCGAATTCCTCCCGCTTATTCTAAAACTTTCATTGGACCGCCTCACGGTATTCAGGTCGAAAGGGATAAACTGAACAAATATGGACGTCCCTTATTGGGATGTACAATCAAGCCAAAATTAGGTCTGTCTGCTTTAAATTATGGTAGAGCCGTCTACGAATGCCTTCGCGGTGGACTTGATTTCACAAAAGATGATGAGAATGTGAATTCCCAGCCATTCATGCGTTGGAGAGATCGCTTCCTATTCGTAGCAGAGGCTCTTTTCAAATCCCAGGCTGAAACAGGCGAAATCAAGGGGCATTACTTAAATGCTACTGCAGGTACGTGTGAAGAAATGCTCAAGAGAGCTGTTTTCGCTAGAGAATTGGGTGCACCAATTGTCATGCATGACTACCTGACCGGAGGGTTTACTGCAAATACCACCTTAGCTTTTTATTGTAGAGACAATGGGCTGCTTCTCCATATTCACCGTGCGATGCATGCTGTGATTGATAGACAACGAAATCACGGTATACATTTTCGTGTATTGGCCAAAGCATTACGCATGTCCGGTGGAGATCATATACACGCCGGAACTGTAGTAGGCAAACTAGAGGGGGAGCGAGAAGTAACCCTAGGTTTCGTCGATTTGCTTCGCGATGATTACATTGAAAAAGATCGTAGCCGTGGTATCTATTTCACACAAGATTGGGTCTCTATGCCGGGTGTATTCCCCGTAGCTTCGGGTGGTATCCATGTCTGGCACATGCCTGCTCTAACCGAAATTTTCGGGGATGATTCCATATTACAGTTCGGTGGAGGAACCTTGGGACATCCTTGGGGAAATGCACCTGGTGCGGTAGCCAACCGAGTCGCATTAGAAGCT [1206]
+Diplopterygium_glaucum TATACTCCCGATTATGATACGAAAGATACTGATATCTTGGCAGCATTCCGAATGACTCCGCAACCTGGAGTACCGCCTGAGGAAGCTGGAGCTGCGGGAGCTGCGGAATCTTCCACAGGGACATGGACCACTGTATGGACTGATGGACTTACTAGTCTTGATCGTTATAAGGGTCGCTGTCATGATATCGAACCCGTCGCTGGAGAAGTAAATCAATATATTGCGTATGTAGCCTACCCCTTGGATTTATTCGAAGAAGGGTCCGTTACTAATATGTTCACCTCCATCGTAGGTAATGTTTTCGGATTCAAAGCCTTACGCGCTCTACGTTTGGAAGATCTGAGAATTCCTCCCGCTTATTCTAAGACTTTCATCGGCCCACCTCACGGTATCCAGGTCGAAAGAGATAAACTAAACAAATATGGTCGTCCTTTATTGGGATGTACAATCAAGCCAAAATTGGGCTTATCTGCGAAGAATTACGGCAGGGCTGTTTATGAATGTCTCCGCGGTGGACTTGATTTTACCAAGGATGACGAGAACGTAAATTCTCAGCCATTCATGCGTTGGAGAGATCGTTTCTTGTTTGTAGCAGAAGCTCTTTTCAAAGCTCAGGCTGAGACGGGCGAGATCAAGGGACATTACCTAAATGCTACTGCAGGTACGTGTGAGGAAATGTTGAAAAGAGCAATCTTTGCCAGAGAATTGGGAGCACCCATTGTCATGCACGACTATCTGACAGGAGGCTTTACCGCAAATACCAGCCTGGCTTTTTATTGTCGGGATAATGGACTACTGCTTCATATTCACCGTGCAATGCATGCTGTTATTGATAGACAGAGAAATCACGGTATACATTTTCGCGTATTGGCCAAAGCATTGCGTATGTCCGGTGGAGATCATATCCACGCCGGGACTGTAGTGGGTAAACTTGAGGGAGAACGAGAAGTTACCCTAGGTTTTGTCGATCTACTTCGTGATGATTATATTGAGAAAGACAGAAGTCGCGGGATCTATTTCACTCAAGATTGGGTATCTATGCCGGGTGTATTGCCTGTAGCTTCGGGGGGTATCCATGTCTGGCATATGCCCGCCCTAACTGAAATATTCGGCGATGATTCCGTCCTACAGTTCGGTGGGGGAACCTTGGGACATCCCTGGGGAAATGCACCAGGTGCTGTGGCTAATCGAGTCGCTCTAGAAGCT [1206]
+Stromapteris_moniliformis TATACTCCCGATTATGAGACCAAAGATACTGATATCTTGGCAGCATTCCGAATGACTCCGCAACCTGGAGTACCGCCTGAGGAAGCTGGAGCTGCAGTAGCTGCGGAATCTTCCACAGGTACATGGACCACTGTATGGACGGATGGACTTACTAGTCTTGATCGTTATAAGGGTCGGTGTCATGATATCGAACCTGTCGCTGGGGAGGAAAATCAATATATTGTGTATGTAGCTTACCCCCTGGATTTATTCGAAGAGGGTTCTGTTACTAATATGTTTACCTCCATCGTAGGCAACGTTTTCGGATTCAAAGCCTTACGCGCTCCACGTCTGGAAGATCTGAGAATTCCTCCCGCCTATTCTAAGACTTTCATCGGCCCGCCTCACGGTATCCAGGTCGAGAGAGATAAGCTAAACAAATATGGTCGTCCCCTGCTGGGATGTACAATCAAGCCGAAATTGGGCTTATCTGCCAAGAATTACGGTAGGGCTGTTTACGAATGTCTCCGTGGTGGACTTGATTTTACCAAGGATGACGAGAACGTAAATTCCCAGCCATTCATGCGTTGGAGGGATCGTTTCTTGTTTGTAGCAGAAGCTCTTTTCAAAGCTCAAGCTGAGACGGGCGAGTTCAAGGGACATTACCTAAACGCTACTGCAGGTACGTGTGAGGAAATGTTGAAAAGAGCAATCTTCGCCAGAGAATTGGGAGTACCCATCGTTATGCACGATTATTTGACAGGAGGCTTCACCGCAAATACCAGCCTGGCCTTCTACTGCCGGGATAATGGACTACTGCTTCATATTCACCGTGCGATGCATGCTGTTATTGATAGACAGAGAAATCACGGTATACATCTCCGCGTATTGGCCAAAGCATTACGCATGTCCGGTGGAGATCATATACACTCCGGGACCGTAGTAGGTAAACTTGAGGGAGAACGAGAAGTTACCTTAGGTTTCGTCGATTTGCTTCGTGATGATTATATTGAGAAAGATAGAAGTCGCGGTATCTATTTCACCCAAGATTGGGTATCTATGCCGGGTGTATTGCCCGTAGCTTCGGGAGGTATCCATGTCTGGCATATGCCCGCTCTAACTGAAATATTCGGGGATGACTCCGTCTTACAGTTCGGTGGGGGAACCTTGGGCCATCCCTGGGGAAATGCACCAGGTGCTGTGGCTAATCGAGTCGCCTTAGAGGCT [1206]
+Micropolypodium_okuboi TACACCCCCGAATACAAAACTAAAGATACCGACATCTTAGCAGCATTTCGAATGACCCCACAACCTGGAGTACCGGCTGAAGAAGCTGGAGCTGCGGTAGCTGCAGAATCCTCCACAGGTACGTGGACAACTGTATGGACAGATGGGTTGACTAGTCTTGACCGTTATAAGGGTCGATGCTACGACATTGAACCCGTCGCTGGAGAAGACAACCAGTATATCGCATATGTAGCTTATCCTTTGGATCTATTCGAAGAAGGTTCTGTTACTAATCTGTTTACCTCCATAGTTGGTAATGTATTTGGATTTAAGGCTCTACGTGCTATACGCTTGGAAGACCTTCGAATTCCTCCCGCTTATTCTAAAACTTTCATTGGACCGCCCCATGGTATTCAGGTTGAAAGAGATAAATTGAACAAATATGGACGTCCTTTATTAGGATGTACAATCAAGCCAAAATTGGGTCTGTCTGCTAAAAATTATGGTAGAGCCGTCTACGAATGTCTTCGTGGTGGACTTGATTTCACAAAAGATGATGAAAATTTGAATTCCCAGCCATTCATGCGTTGGAGAGATCGTTTCTTATTTTGTGCAGAAGCTCTTTTCAAATCCCAAGCTGAAACAGGGGAAATCAAAGGGCATTACTTAAACGCTACTGCAGGTACATGTGAAGAGATGTTCAAAAGAGCTGCTTTTGCTAGGGAATTGGGTGTACCAATTGTCATGCATGATTATCTAACCGGAGGGTTTACTGCAAATACCAGCTTAGCCTATTATTGCAGAGATAATGGACTGCTTCTTCATATTCACCGCGCAATGCATGCTGTTATCGATAGACAACGAAATCACGGTATGCATTTCCGTGTGCTGGCCAAAGCATTACGATTGCCCGGCGGAGATCATGTACATGCTGGAACTGTAGTAGGTCAATTAGAAGGAGAACGGGAAGTTACTCTCGGTTTCGTTGATTTGCTCCGTGACGATTTAATTGTAAAAGATCGGAGCCGTGGTGTTTATTTCACCCAAGATTGGGTATCTATGCCGGGTGTATTACCCGTAGCTTCAGGAGGTATCCATGTCTGGCACATGCCCGCTCTAACCGAGATCTTTGGGGATGATTCCGTATTACAGTTTGGCGGAGGAACCTTAGGTCATCCTTGGGGAAATGCGCCAGGTGCGGTAGCCAACCGAGTCGCATTGGAAGCT [1206]
+Cephalomanes_thysanostomum TATACTCCTGATTATCAAACCGCAGACACTGATATCTTGGCAGCGTTCCGAATGACTCCGCAACCTGGAGTACCACCAGAGGAAGCTGGAGCTGCAGTAGCTGCGGAATCTTCCACAGGTACATGGACCACAGTATGGACAGATGGGCTTACTAGCCTTGATCGTTATAAGGGTCGATGCTACGATATCGAACCTGTTCCTGGAAGCGATAATCAATATATTGCATATGTAGCTTATCCTTTAGATCTCTTTGAAGAAGGATCTGTTACGAATCTATTCACTTCGATTGTAGGTAACGTTTTTGGATTTAAAGCCTTACGTGCCCTACGGTTGGAAGATATAAGGGTTCCACCTGCTTATTCTAAAACATTCTCAGGACCACCTCATGGTATCCAAGTTGAAAGAGATAAACTGAACAAGTATGGTCGTCCTTTTTTAGGATGTACAATCAAACCAAAATTGGGTTTATCGGCTAAGAATTATGGTAGAGCTGTTTATGAATGTCTCCGTGGGGGGCTCGATTTTACTAAGGATGATGAGAACCGTAACTCTCAACCATTCATGCGTTGGCGGGATCGTTCCCTGTTTGTAGCAGAAGCTCTCTTTAAAGCTCAATCGGAAACAGGTGAAATCAAAGGGCATTATCTAAATGCTACTGCAGGTACGTGTGACGAGATGTTAAAGAGAGCATACTGTGCAAGAGAATTGGGAGTCCCTATTATTATGCATGATTACCTTACAGGAGGTTTTACTGCAAATACTACCCTAGCTTTGTACTGCCGAGATAATGGTCTACTCCTTCATATTCACCGCGCAATGCATGCTGTTATTGATAGACAGAAAAACCATGGTATGCACTTCCGTGTATTGGCCAAAGCCTTACGTATGTCTGGTGGAGATCATGTCCATGCTGGGACTGTAGTGGGTAAACTCGAAGGAGAACGAGAAATCACTCTAGGCTTCGTTGATTTGCTTCGTGACGATTATGTCGAGAAAGATCGAAGCCGTGGTATCTTTTTCACTCAATTTTGGGCATCTATGCCTGGTGTATTGCCTGTAGCGTCAGGAGGTATTCATGTTTGGCATATGCCTGCTCTGACTGAAATATTTGGAGATGATTCTGTCTTACAGTTCGGTGGTGGAACCTTAGGGCATCCTTGGGGAAATGCACCGGGTGCCGTGGCTAATAGAGTTGCATCGGAAGCC [1206]
+Lygodium_japonicum TACACTCCCGAATATGAAACAAAAGATACTGATATCTTAGCAGCTTTTCGAATGACCCCACAACCCGGAGTACCTCCCGAAGAAGCTGGAGCTGCAGTAGCTGCAGAATCTTCTACAGGTACGTGGACCACAGTCTGGACTGATGGGCTCACCAGTCTTGATCGTTACAAAGGTCGATGCTACGATATTGAACCCGTTGCTGGGGAGGAAAATCAATACATAGCCTATGTAGCTTATCCTTTGGATTTGTTTGAAGAAGGTTCCGTTACTAATATGTTCACCTCCATTGTAGGTAATGTATTCGGATTCAAAGCCTTACGGGCCTTACGCTTAGAAGATCTGAGAATCCCTCCTGCTTATTCAAAAACCTTCATGGGTCCTCCTCATGGTATCCAAGTCGAAAGGGACAAATTGAACAAATATGGTCGCCCCTTATTAGGATGTACGATTAAGCCCAAGTTGGGACTATCTGCCAAAAATTATGGTAGAGCTGTCTATGAATGCCTCCGTGGCGGACTGGATTTCACCAAGGATGATGAAAACGTTAATTCCCAACCGTTTATGCGTTGGAGGGATCGTTTCTTGTTCGTAGCAGAAGCTCTTTTCAAGTCTCAGGCTGAAACTGGCGAAATCAAGGGGCATTACTTAAACGCCACTGCGGGAACTTGCGAGGAAATGATGAAAAGAGCAGTCTTCGCTAGGGAACTAGGGGCGCCCATTGTCATGCACGACTATCTGACTGGAGGATTCACCGCAAATACTAGTTTGGCTTTTTACTGTAGAGATAATGGATTGCTTTTACATATTCACCGTGCAATGCATGCCGTTATCGACAGACAAAAAAACCACGGTATGCATTTCCGCGTATTGGCTAAAGGTCTACGCATGTCTGGTGGGGACCACATCCATGCAGGAACCGTAGTCGGAAAACTCGAAGGAGAACGAGAAGTCACTTTGGGGTTTGTCGATTTACTTCGTGACGATTATATCGAGAAAGACCGGAGTCGTGGTATCTACTTCACCCAGGATTGGGTATCCATGCCAGGCGTGATACCCGTAGCCTCCGGGGGTATACATGTTTGGCACATGCCCGCACTAACAGAAATCTTCGGGGACGATTCTGTCCTACAGTTTGGTGGAGGAACTTTGGGGCATCCTTGGGGAAACGCACCGGGCGCTGTTGCTAATCGAGTTGCTCTAGAAGCT [1206]
+Angiopteris_evecta TACACTCCTGAGTATGATACTAAGGATACTGATATCCTGGCAGCATTCCGAATGACTCCTCAACCTGGAGTACCGCCTGAAGAAGCGGGAGCTGCAGTAGCTGCCGAATCTTCTACCGGTACTTGGACTACTGTATGGACAGATGGGCTTACTAGCCTTGATCGTTACAAAGGTCGATGCTATGATATCGAACCTGTTGCTGGCGAAGAAAATCAATATATTGCTTATGTAGCTTATCCTTTGGATCTATTCGAAGAAGGTTCTGTCACCAATATGTTTACCTCTATCGTAGGTAACGTATTCGGATTCAAAGCTTTACGAGCTTTGCGATTAGAGGACTTAAGAATTCCTCCTGCTTATTCGAAAACTTTCCAAGGTCCGCCTCACGGTATCCAAGCTGAAAGAGATAAATTAAACAAGTATGGTCGTCCACTACTAGGATGTACTATCAAACCAAAATTAGGTTTATCTGCTAAAAACTATGGTAGAGCTGTTTATGAATGTCTTCGTGGTGGACTTGATTTTACGAAAGATGATGAGAACGTCAATTCTCAACCATTTATGCGTTGGAGAGATCGTTTCTTATTCGTAGCAGAAGCTCTTTTTAAGTCTCAAGCTGAGACAGGCGAAGTAAAAGGGCACTACTTAAATGCTACTGCAGGTACGTGTGAAGAAATGATGAAAAGAGCAATCTTTGCTAGAGAATTGGGCGCACCCATTGTCATGCACGACTATCTGACAGGAGGATTTACTGCAAATACTTCATTGGCTCATTATTGTAGAGATAATGGTCTTCTTCTTCATATTCACCGTGCAATGCATGCTGTTATTGACAGACAACGAAATCACGGTATGCATTTCCGTGTATTAGCTAAAGCTTTGCGTATGTCCGGTGGAGATCATGTTCACGCCGGTACGGTAGTGGGTAAACTTGAGGGAGAACGTGAAGTAACTTTAGGCTTCGTTGATTCACTTCGTGATGACTATATCGAAAAAGATCGAAGTCGTGGTATCTATTTCACTCAGGATTGGGTATCTATGCCGGGTGTATTCCCCGTAGCTTCAGGTGGTATTCATGTCTGGCATATGCCTGCTCTAACTGAGATTTTCGGAGATGATTCTGTATTACAATTTGGTGGAGGAACTCTAGGACACCCTTGGGGGAATGCACCTGGTGCAGTAGCTAATCGAGTTGCTTCAGAGGCT [1206]
+Marsilea_quadrifolia TACACTCCCGAATATCAGACCTCACCCCATGATATCTTGGCAGCCTTTAGAATGACCCCGCAACCCGGAGTACCACCTGAGGAAGCTGGAGCTGCAGTAGCTGCAGAATCTTCTACAGGTACATGGACTACCGTATGGACGGACGGACTTACCAGTCTTGACCGTTACAAAGGTCGTTGCTACGATATCGAACCCGTTCCCGGAGAGGAAAACCAATACATTGCATATGTAGCTTACCCCTTAGATTTATTTGAAGAGGGTTCTGTTACCAACATGTTCACCTCTATTGTAGGTAACGTATTTGGATTCAAGGCTCTACGTGCTCTTCGACTAGAAGATCTTCGAATCCCTCCTGCTTATTCCAAAACTTTCATTGGACCCCCTCACGGTATCCAGGTTGAAAGAGATAAACTGAACAAATACGGACGTCCTTTATTAGGATGTACCATCAAGCCAAAACTAGGCTTATCTGCTAAAAACTACGGTAGAGCTGTTTACGAATGTCTTCGTGGTGGACTTGACTTCACCAAGGATGATGAGAACGTAAACTCCCAACCATTCATGCGTTGGAGAGACCGTTTCTTATTCGTAGCAGAAGCTCTTTTCAAGTCTCAAGCTGAAACCGGCGAAATCAAGGGACACTACTTAAACGCTACTGCGGGTACTTGTGAAGAGATGCTGAAAAGAGCTGTTTTCGCAAGAGAGCTGGGAGCGCCTATTGTTATGCACGACTACCTGACCGGAGGGTTTACTGCAAATACTAGCTTAGCTTTCTACTGTCGAGACAACGGGTTGCTTCTTCACATTCACCGTGCAATGCATGCTGTTATCGATAGACAGAAAAACCACGGTATCCACTTCCGTGTATTAGCTAAAGCATTACGTATGTCTGGTGGGGACCACATCCACTCTGGAACCGTAGTAGGTAAACTAGAAGGTGAACGAGAAGTAACTTTGGGCTTCGTCGATTTGCTTCGCGACGATTACATTGAAAAAGATCGTAGCCGTGGTATCTACTTCACCCAAGATTGGGTATCTATGCCAGGGGTACTGCCCGTAGCTTCTGGAGGTATCCACGTATGGCACATGCCTGCTCTAACCGAAATCTTCGGAGACGATTCCGTCTTACAGTTCGGTGGAGGAACTCTGGGCCACCCTTGGGGAAATGCACCTGGAGCTGTAGCTAACAGAGTTGCGTTAGAGGCT [1206]
+Matonia_pectinata TATACCCCCAACTATCAAGTCAAAGATACAGATATCTTGGCAGCCTTCCGAATGACTCCGCAACCTGGGGTACCGCCTGAGGAAGCTGGAGCTGCAGTAGCTGCGGAATCTTCCACAGGTACCTGGACCACTGTATGGACAGATGGATTAACTAGTCTCGATCGTTACAAGGGTCGATGTTACGACATTGAGCCTGTTGCTGGGGAAGAAAATCAATATATTGCATATGTAGCTTATCCTTTAGATCTATTTGAAGAAGGTTCTGTTACTAATATGTTCACTTCCATCGTAGGTAACGTATTTGGATTCAAAGCCTTACGCGCCCTACGTTTAGAAGATCTGAGAATTCCTCCTGCTTATTCTAAGACTTTCATGGGGCCTCCCCACGGTATCCAAGTCGAAAGGGATAAATTGAACAAATACGGCCGTCCTCTACTGGGATGTACAATCAAACCGAAACTAGGTTTATCTGCCAAAAACTACGGTAGGGCAGTTTACGAATGTTTACGCGGTGGACTTGATTTTACGAAGGATGATGAAAACGTAAATCCCCAACCAATCATTCGTTGGAGAGATCGTTTCTTATTCGTAGCAGAAGCTCTTTTTAAATCCCAAGCGGAGACAGGGGAGATAAAGGGACATTATCTAAACGCTACCGCAGGTACATCTGAGGAAATGTTGAAAAGAGCCGTCTTCGCTAGGGAATTGGGAGTACCCATTGTCATGCATGAATATTTGACGGGAGGCTTCACTGCAAATACTAGTTTGGCCTTCTATTGCCGAGATAATGGTTTACTGCTTCATATTCACCGTGCAATGCATGCTGTTATCGATAGACAGAGAAATCATGGTATCCATTTCCGCGTATTGGCCAAAGCATTACGGACGTCCGGCGGGGATCACATACACGCCGGGACTGTAGTAGGTAAACTGGAGGGAGAACGAGAAGTCACGTTGGGTTTCGTCGATCTGCTTCGTGATGATTATATCGAAAAAGACCGAAGTCGTGGTATCTACTTCACCCAAGATTGGGTATCCATGCCAGGTGTACTGCCCGTAGCTTCGGGGGGCATTCATGTTTGGCACATGCCTGCTCTAACTGAAATCTTCGGAGACGATTCCGTCTTACAATTCGGTGGAGGAACCTTGGGACATCCCTGGGGAAATGCACCAGGTGCTGTAGCTAATCGAGTTGCCTTAGAGGCT [1206]
+Metaxya_rostrata TACACTCCCGATTACGTAACCAAAGACACCGATATCTTGGCGGCCTTTCGGATGACCCCGCAACCCGGAGTACCGGCTGAGGAAGCCGGAGCCGCGGTAGCAGCGGAATCCTCCACGGGTACATGGACCACTGTATGGACGGATGGGCTTACCAGTCTCGATCGCTACAAAGGTCGATGCTATGATATTGAACCCGTTGCCGGAGAAGATAATCAGTATATTGCATATGTAGCTTATCCTTTGGATCTATTTGAAGAAGGTTCGGTTACCAATATGTTCACTTCCATTGTAGGTAATGTTTTTGGATTCAAAGGCCTACGTGCTCTCCGCTTAGAAGATCTCCGAATTCCTCCTGCTTATTCTAAGACTTTTATTGGACCGCCTCACGGTATCCAAGTTGAAAGAGATAAGCTGAACAAATATGGGCGTCCCTTCTTAGGATGTACGATTAAGCCAAAATTGGGTTTATCCGCTAAGAACTATGGGAGAGCCGTTTATGAATGTCTCCGTGGTGGACTTGACTTCACCAAGGATGATGAGAACGTAAATTCCCAACCATTCATGCGATGGAGAGATCGCTTCTTATTTGTAGCGGAAGCTCTCTTCAAAGCTCAGGCTGAAACGGGCGAAATTAAGGGGCATTACTTAAATGCTACTGCAGGTACATGTGAAGAAATGTTGAAAAGAGCCGTTTTTGCTAGAGAATTGGGGGGCACAATTGTAATGCATGACTATCTAACCGAGGGTTTTACTGCAAATACTAGTTTGGCTTTTTACTGTCGAGACAATGGACTGCTTCTTCACATTCACCGTGCAATGCATGCTGTCATCGATAGACAGAGAAATCACGGTATACATTTTCGTGTATTAGCCAAAGCATTACGCATGTCTGGTGGAGACCATATCCACGCTGGAACTGTAGTGGGTAAATTAGAGGGAGAACGAGACGTCACTTTGGGATTTGTTGATTTGCTCCGCGAGGATTATGTCGAAAAAGATCGTAGCCGTGGCATCTATTTCACTCAAGATTGGGTATCTATGCCGGGCGTAATTCCCGTAGCTTCGGGGGGTATTCACGTTTGGCATATGCCCGCTCTAACCGAGATTTTCGGGGACGATTCCGTCTTACAGTTCGGGGGAGGAACCTTGGGACATCCTTGGGGAAATGCGCCCGGTGCCGTAGCCAATCGAGTCGCATCAGAGGCT [1206]
+Botrychium_strictum TACACTCCCGATTATGAAACCAAGGATACTGATATCCTAGCAGCTTTTCGAATGACTCCCCAACCTGGAGTGCCAGCTGCAGAAGCGGGAGCCGCGGTAGCTGCTGAATCTTCCACCGGTACGTGGACCACCGTATGGACCGATGGACTTACCAGCCTTGATCGTTATAAGGGTCGATGCTATGAAATCGAACCTGTTCCCGGGGAGGAAAATCAATTCATTGCTTATGTGGCGTATCCTCCAGATCTTTCTGAGGAAGGTTCTGTCACCAACATGTTCACTTCCATTGTAGGTAACGTATTCGGATTCAAGGCATTGAGAGCTTTACGGTTGGAAGATTCAAGAATTCCCCCTGCTTATTCTAAGACTTTCATGGGTCCGCCTCACGGTATTCAAGTCGAGAGGGATAAATTAAACAAATACGGTCGCCCCTTACTAGGATGTACCATCAAACCCAAATTGGGATTATCTGCCAAAAATTATGGTAGAGCTGTTTATGAATGTTTACGCGGTGGGCTCGATTTCACCAAGGATGATGAAAACGTAAATTCCCAACCGTTTATGCGTTGGAGAGATCGTTTCTTATTCGTGGCAGAAGCCCTTTTCAAATCTCAAGCTGAAACGGGTGAAATTAAGGGACATTACTCAAATGCTACCGCGGGTACTTGTGAGGAAATGCTAAAAAGAGCAGTATTTGCTCGAGAATTGGGAGTACCCATTGTCATGCACGATTATTTGACAGGAGGATTCACTGCAAATACTAGCTTAGCCTTCTACTGTTGGGATAATGGTCTACTCCTTCACATTCATCGTGCAATGCATGCTGTTATTGATAGACAAAAGAATCATGGTATCCACTTCCGTGTATTGGCCAAAGCATTGCGTATGTCCAGCGGGGATCATATTCATTCCGGTACTGTAGTGGGTAAACTTGAGGGAGAACGCGACATAACTCTAGGCTTCGTTGATCTACTCCGTGACGATTATATCGAGAAAGATCGAAGCCGCGGCATCTATTTCACCCAAGATTGGGTATCTATGCCGGGTGTACTGCCTGTAGCTTCAGGAGGCATCCACGTTTGGCATATGCCCGCTTTAACTGAGATCTTCGGGGACGATTCCGTACTCCAATTTGGTGGAGGAACTTTGGGACACCCATGGGGTAATGCACCTGGTGCAGTGGCTAATCGAGTTGCTCCGGAAGCT [1206]
+Osmunda_cinnamomea TATACTCCCGATTATGAGACCAAGGATACTGATATTTTGGCAGCATTCCGAATGACTCCCCAACCCGGAGTACCGGCTGAGGAAGCTGGAGCTGCAGTAGCTGCGGAATCTTCTACAGGTACGTGGACCACTGTATGGACGGATGGACTTACCAGTCTTGATCGTTATAAGGGTCGATGCTACGATATTGAACCTGTTGCTGGGGAAGAAAATCAATATATTGCTTATGTAGCTTATCCTCTGGACCTATTCGAAGAAGGTTCTGTTACCAATATGTTCACTTCCATTGTAGGTAACGTGTTCGGATTCAAAGCATTACGCGCTCTACGTTCGGAAGATTCGAGAATTCCTCCCGCGTATTCTAAGACTTTCATCGGGCCGCCTCACGGTATCCAGGTCGAAAGGGATAAATTGAACAAATATGGTCGTCCTTTGTTGGGATGTACGATTAAACCCAAATTGGGTTTATCTGCTAAGAATTATGGTAGAGCTGTTTATGAATGTCTTCGTGGTGGGCTTGATTTTACCAAAGATGATGAGAACGTGAATTCTCAACCATTCATGCGTTGGAGAGATCGTTTCTTGTTCGTAGCAGAAGCTCTTTTTAAAGCTCAAGCTGAAACCGGCGAGATTAAGGGACATTACTCGAATGCTACTGCAGGTACATGTGAAGAAATGATGAAAAGAGCAGTATTTGCTAGGGAATCGGGCGCACCTATTGTCATGCATGATTATTCGACGGGAGGCTTTACTGCAAATACTAGCTTGGCTTTTTATTGTCGAGATAATGGTCTACTTCTCCACATTCACCGTGCAATGCATGCCGTTATCGATAGGCAAAGGAATCACGGTATACACTTCCGTGTATTGGCTAAAGCATTGCGTATGTCTGGTGGAGATCATATTCATTCCGGTACTGTAGTGGGTAAACTTGAAGGGGAACGAGAAGTAACTTTGGGTTTTGTCGATTTACTCCGTGATGACTATATCGAAAAAGACCGAAGTCGCGGTATCTATTTCACTCAGGATTGGGTATCCATGCCGGGTGTATTTCCTGTAGCTTCCGGAGGTATCCATGTTTGGCATATGCCCGCTCTAACGGAAATTTTTGGGGATGATTCTGTATTACAGTTTGGTGGAGGGACCTTGGGACACCCTTGGGGAAATGCACCTGGTGCTGTAGCTAACCGAGTTGCTTTAGAGGCT [1206]
+Ceratopteris_thalictroides TACACTCCCGAGTATAAGGTCAAAGATACTGATATCTTAGCCGCTTTTCGAATGACCCCACAACCCGGAGTACCAGCTGAAGAGGCCGGAGCTGCGGTGGCTGCGGAATCCTCTACAGGTACATGGACCACAGTATGGACAGACGGACTTACTAGTCTTGATCGATACAAAGGTCGGTGCTACGATATTGAACCCGTTGCCGGGGAGGAAAACCAGTATATTGCATATGTAGCGTACCCCTTGGATTTATTTGAGGAAGGGTCCGTCACCAATATGCTGACTTCTATTGTAGGTAATGTTTTTGGATTCAAGGCCTTACGCGCTCTGCGCCTGGAAGACCTACGGATTCCTCCTGCTTATTCCAAGACTTTTCTTGGGCCTCCTCACGGTATTCAGGTCGAAAGAGATAAATTAAACAAATATGGTCGTCCTCTATTGGGATGTACAATCAAGCCAAAATTGGGCTTGTCTGCTAAAAATTATGGTAGAGCAGTTTACGAATGCCTTCGTGGTGGACTTGATTTCACAAAAGATGATGAAAACGTTAATTCCCAACCGTTTATGCGTTGGAGAGATCGCTTTTGCTTCGTAGCCGAAGCTCTTTATAAAGCCCAGAATGAAACCGGTGAAATTAAGGGACATTATTTAAATGCCACCGCGGGCACAACTGAAGAAATGCTTAGAAGAGCTGACTATGCCAGTGAATTGGGTGCACCAATCATCATGCATGACTATCTGACTGGTGGTTTTACCGCAAATACTAGTTTAGCTATCTATTCTAGAAACAAAGGTCTACTTCTTCATATTCACCGAGCCATGCATGCTGTTATTGATAGACAAAGAAATCATGGTATGCATTTCCGTGTTTTAGCCAAAGCCTTACGTATGTCTGGTGGAGATCATATCCATGCAGGAACTGTGGTGGGCAAATTAGAAGGTGAACGAGAAGTTACCCTGGGATTTGTCGATTTACTTCGCGACGACTACATTGAAAAAGATCGTAAGCGTGGTATATACTTCACCCAAGATTGGGTATCTATGCCTGGTGTAATTCCCGTAGCTTCAGGGGGTATTCACGTATGGCATATGCCCGCCCTAACCGAAATTTTTGGGGACGATTCTGTCTTACAATTTGGCGGGGGAACATTGGGACATCCTTGGGGAAATGCCCCTGGTGCCGTTGCTAACCGCGTAGCATTGGAGGCT [1206]
+Plagiogyria_japonica TACACTCCCGATTATGCGACCAAAGACACTGATATCTCGGCAGCTTTCGGAATGACCCCGCAACCCGGAGTGCCACCTGAGGAAGCTGGAGCTGCAGTAGCCGCGGAATCTTCCACGGGTACATGGACCACTGTATGGACGGATGGACTTACTAGTCTCGATCGCTACAACGGTCGATGCTACGATATCGAACCTGTTTCTGGGGAGGAAAATCAATATATTGCATATGTAGCTTACCCTCCGGATCTATTTGAAGAAGGGTCCGTTACCAATTCGTTCACTTCCATTGTAGGTAATGTATTTGGATTCAAAGCCCTACGCGCTCTCCGCCTAGAAGATCCTCGAATTCCTCCTGCTTATCCTAAGACTTTCATTGGACCGCCCCACGGTATTCAGGTCGAAAGGGATAAACTGAACAAATACGGGCGTCCCTTATTGGGATGTACAATCAAGCCAAATTTGGGCTTATCTGCTAAGAATTATGGTAGAGCCGTTTATGAGTGTCTCCGTGGTGGACTTGACTTCACCAAGGATGATGAGAACGTCAATTCCCAACCATTCATTCGTTGGAGAGATCGCTTCTTATTCGTAGCAGAAGCCCTCTTCAAAGCTCAGGCCGAAACAGGCGAAATCAAGGGACATTACTTGAATGCTACTGCAGGTACGTGTGAAGAACCGTCGAAAAGAGCTGTTTTTGCTAGGGAATTGGGAGCACCAATTGTAATGCATGACTACCTGACCGGAGGGTTCACCGCAAATACTAGCTTGGCCTTTTATTGTCGAGACAATGGGCTGCTTCTTCACATTCACCGTGCGATGCATGCCGTCATTGATAGACAAAAAAACCACGGTATGCATTTTCGTGTATTAGCCAAAGCATTACGTATGTCCGGTGGAGATCATGTTCACGCCGGGACTGTAGTAGGTAAACTGGAGGGAGAACGAGAAGTCACTTTGGGCTTTGTCGATTTTCTTCGCGACGATTATATAGAAAAAGACCGTAGCCGCGGTGTCTATTTCACCCAAGACTGGGTCTCTATGCCGGGTGTACTTCCCGTAGCTTCGGGGGGTATCCACGTCTGGCATATGCCCGCTCTAACCGAAATCTTCGGAGACGATTCCGTCTTACAGTTTGGCGGGGGAACCCTCGGACATCCCTGGGGAAATGCGCCCGGTGCCGTAGCTAATCGAGTCGCGTTAGAGGCT [1206]
+Loxogramme_grammitoides TACACCCCCGACTACAAGACCAAAGATACCGATATCTTAGCGGCGTTTCGAATGACCCCACAACCTGGAGTACCGGCTGAGGAAGCTGGAGCTGCGGTAGCTGCAGAATCCTCCACAGGTACATGGACCACTGTATGGACAGATGGGTTGACTAGTCTTGACCGTTACAAAGGACGATGCTACGACATCGAGCCTGTCGCTGGGGAGGAAAACCAGTATATCGCGTATGTAGCTTATCCTTTGGATCTATTTGAAGAAGGTTCTGTGACTAATTTATTCACCTCCATAGTAGGTAATGTCTCTGGATTTAAAGCTCCGCGCTCTCTGCGCCTGGAAGACCTTCGAATTCCTCCCGCTTATTCTAAAACTTTCATTGGACCACCTCATGGTATTCAGGTTGAAAGGGATAAACTGAACAAATATGGACGTCCCTTATTGGGATGTACAATCAAGCCAAAATTAGGTCTGTCTGCTAAAAATTATGGTAGAGCCGTCTACGAATGCCTCCGCGGTGGACTTGATTTCACAAAAGATGATGAAAATGTGAATTCCCAGCCATTCATGCGTTGGAGAGATCGCTTCCTATTTGTGGCAGAAGCTCTTTTCAAATCCCAGGCTGAAACAGGTGAAATCAAAGGGCATTACTTAAATGCTACCGCAGGTACATGTGAAGAAATGATGAAGAGAGCTATTTTTGCTAGGGAGTTGGGCGCACCAATCGTCATGCATGACTACTTGACCGGAGGGTTTACCGCAAATACCAGCTTAGCTTATTATTGCAGAGATAATGGACTACTTCTTCATATTCACCGCGCGATGCATGCTGTGATTGATAGGCAACGAAATCACGGCATGCATTTTCGTGTATTGGCCAAAGCGTTACGCATGTCCGGCGGGGATCATGTACACGCTGGAACTGTAGTAGGCAAACTAGAAGGGGAACGAGAAGTTACCCTTGGTTTTGTCGATTTACTTCGCGACGATTACATTGAGAAAGATCGTAACCGCGGCGTCTATTTCACCCAAGATTGGGTATCTATGCCGGGTGTACTACCCGTAGCTTCGGGGGGTATCCACGTATGGCACATGCCTGCTTTAACCGAAATCTTTGGGGACGATTCCGTATTACAATTTGGCGGAGGAACCTTAGGACATCCTTGGGGAAATGCGCCAGGTGCGGTAGCCAACCGAGTCGCATTGGAAGCT [1206]
+Polypodium_australe TACACCCCCGAATACAAAACCAAAGATACCGATATCTTAGCAGCATTTCGAATGACCCCACAACCTGGAGTACCGGCTGAGGAAGCTGGAGCTGCGGTAGCTGCAGAATCCTCCACAGGTACGTGGACAACTGTATGGACAGATGGGTTGACTAGCCTTGACCGTTACAAGGGCCGATGCTACGACATCGAACCCGTCGCTGGAGAAGAAAACCAGTATATCGCGTATGTAGCTTATCCTTTGGATCTATTCGAAGAAGGTTCCGTTACTAATTTGTTCACCTCTATAGTAGGTAATGTCTTTGGATTTAAGGCTCTACGCGCTCTACGCTTGGAAGACCTTCGAATTCCTCCCGCTTATTCTAAAACTTTCATGGGACCGCCTCATGGTATTCAGGTTGAAAGGGATAAATTGAACAAATATGGACGTCCTTTATTGGGATGTACAATCAAGCCAAAATTGGGTCTGTCTGCTAAAAATTACGGTAGAGCCGTCTACGAATGCCTTCGTGGTGGACTTGATTTCACAAAAGATGATGAAAATGTGAATTCCCAGCCATTCATGCGTTGGAGAGATCGTTTCCTATTTGTGGCAGAAGCTCTTTTCAAATCCCAAGCTGAAACAGGGGAAATCAAAGGACATTACTTAAACGCTACTGCAGGTACATGTGAAGAGATGATGAAAAGAGCTGTTTTTGCTAGGGAGTTGGGTGCACCAATTGTCATGCATGACTATCTAACCGGAGGGTTTACTGCAAATACCAGCTTAGCTTTTTATTGCAGAGATAATGGACTGCTTCTTCATATTCACCGCGCAATGCATGCTGTGATTGATAGGCAACGAAATCACGGTATGCATTTTCGTGTATTGGCCAAAGCGTTACGCATGTCCGGCGGAGATCATATACATGCTGGAACTGTAGTAGGCAAACTAGAAGGGGAACGAGATGTTACCCTTGGTTTCGTCGATTTACTTCGCGACGATTACATTGAAAAAGATCGTAGCCGCGGTATTTATTTCACCCAAGATTGGGTATCTATGCCGGGTGTATTCCCTGTAGCTTCAGGAGGTATCCACGTCTGGCACATGCCTGCTCTAACCGAAATCTTTGGGGACGATTCCGTATTACAGTTCGGCGGAGGAACCTTAGGACATCCTTGGGGAAATGCGCCAGGTGCAGTAGCCAACCGAGTCGCATTGGAAGCT [1206]
+Psilotum_nudum TATACCCCTGATTATAAAGTCAGTGATACTGATATCCTAGCAGCATTTCGAATGACTCCTCAACCTGGAGTACCACCTGAGGAAGCAGGAGCTGCAGTAGCTGCTGAGTCTTCCACCGGTACGTGGACCACTGTATGGACTGATGGACTTACCAGCCTGGATCGTTACAAGGGTCGATGTTATGGTATCGAACCTGTTGCTGGGGAAGAAAATCAATATATTGCCTATGTAGCATATCCATTGGATCTATTTGAGGAAGGTTCTGTTACCAACATGTTCACTTCCATTGTAGGTAATGTATTCGGATTCAAAGCATTGAGAGCTCTACGTCTGGAAGATTTAAGAATTCCCCCTGCTTATTCGAAGACCTTCATGGGTCCACCTCACGGTATCCAAGTTGAAAGAGATAAATTGAACAAATATGGACGTCCTTTATTGGGATGTACCATCAAACCTAAATTAGGTTTATCTGCTAAAAACTACGGTAGAGCGGTTTATGAATGTCTTCGTGGTGGACTTGATTTTACTAAAGATGATGAGAATGTCAATTCTCAACCTTTTATGCGTTGGAGAGATCGTTTCTTATTTGTAGCAGAAGCTCTTTTCAAATCCCAAGCTGAAACAGGTGAAATTAAGGGACATTATTTGAACGCCACTGCAGGTACTTGCGAAGAAATGATGAAAAGAGCAGTCTTCGCTCGAGAATTAGGAGCCCCCATTGTTATGCACGACTATTTGACAGGAGGATTTACTGCAAATACTAGTCTGGCTTTCTATTGTCGAGATAATGGTCTACTTCTTCATATTCACCGTGCCATGCATGCTGTTATTGATAGACAAAGAAATCATGGTATGCACTTCCGTGTATTGGCTAAAGCATTGCGTATGTCGGGTGGAGATCATGTCCATGCTGGTACTGTAGTAGGTAAGCTTGAAGGGGAACGAGACGTCACTCTGGGATTTGTTGATTTACTTCGTGATGATTATATTGAGAAGGACCGGAGCCGCGGCGTCTATTTCACTCAAGATTGGGTTTCTATGCCAGGTGTACTGCCTGTTGCTTCGGGGGGTATTCATGTTTGGCACATGCCAGCTTTAACTGAGATCTTTGGGGATGATTCTGTATTACAGTTCGGTGGAGGAACCTTGGGACATCCTTGGGGAAATGCACCAGGTGCTGTGGCTAATCGAGTTGCGTTGGAAGCC [1206]
+Acrostichum_aureum TATACTCCCGAATATCAGACCAAAGACACTGATATCTTAGCCGCTTTCCGAATGACCCCACAACCTGGAGTACCGGCTGAGGAGGCCGGGGCTGCAGTGGCTGCGGAATCCTCGACAGGTACATGGACAACAGTATGGACAGACGGACTTACTACTCTCGATCGCTACAAAGGCCGGTGCTACGATATTGAACCCGTTCCTGGGGAGGAAAATCAGTATATTGCATATGTAGCTTATCCTTTGGATTTATTTGAAGAAGGTTCCGTTACTAATATGTTCACTTCGATCGTAGGTAATGTTTTTGGATTCAAGGCCCTACGTGCTCTGCGTCTGGAAGACCTACGAATCCCTCCTGCCTATCCAAAAACTTTTATTGGACCTCCCCACGGTATCCAGGTAGAAAGGGATAAACTAAACAAATATGGCCGTCCTTTATTGGGATGTACAATCAAACCAAAATTGGGCTTGTCTGCTAAAAATTATGGTAGAGCAGTTTATGAATGCCTTCGTGGCGGACTTGATTTCACAAAAGATGATGAAAACGTTAATTCCCAACCGTTTATGCGTTGGAGAGATCGCTTTTTATTTGTAGCAGAAGCACTTTTCAAAGCCCTGGCTGAGACGGGTGAAATCAAGGGGCATTATTTAAATGCCACTGCAGGCACGTCTGAAGAAATGATGAAGAGAGCTCGTTTTGCCCGAGAATTGGGGGCACCAATCGTCATGCATGACTACCTAACTGGGGGATTTACCGCCAATACCAGCTTAGCTTTTTATTGTAGAGACAACGGATTGCTTCTTCATATTCACCGGGCAATGCATGCTGTCATCGATAGACAACGGAATCACGGTATGCATTTCCGTGTATTAGCCAAAGCCTTACGTATGTCTGGTGGGGATCATATTCATGCGGGAACTGTAGTAGGCAAACTAGAGGGCGAACGAGAAGTTACTCTGGGATTTGTCGACTTACTTCGCGACGACTACATTGAAAAAGATCGTAGCCGTGGTATCTACTTTACCCAAGATTGGGTATCTATGCCAGGTGTAATTCCCGTAGCTTCAGGGGGTATTCACGTATGGCACATGCCAGCTCTAACCGAAATCTTTGGGGACGATGCTGTCTTACAGTTCTGCGGAGGAACTTTGGGACATCCCTGGGGTAATGCACCCGGTGCTGTTGCTAACCGAGTTGCCTTGGAAGCT [1206]
+Adiantum_raddianum TACACTCCCGAATACGTGACCCTAGACACTGATATCTTAGCGGCTTTCCGAATGACTCCACAACCTGGAGTACCGGCTGAGGAAGCCGGAGCTGCAGTAGCTGCGGAATCTTCCACGGGTACATGGACTACTGTATGGACAGATGGACTTACTAGTCTTGATCGATATAAAGGCCGGTGCTATGATATTGAGCCTGTAGCTGGGGAAGAAAATCAGTATAT?GCATATGTAG?TTATCCTCTGGATTTATTCGAGGAAGGTTCTGTCACTAATATGCTGACTTATATTGTAGGTAATGTTTTTGGATTTAAGGCTCTACGGCCTCTGCGTCTGGAAGACTTACGAATCCCCCCCGCTTATTCCAAAACTTTTCTTGGACCCCCTCACGGTATTCAGGTGGAAAGGGATAAACTAAACAAATATGGCCGTCCCCTATTGGGATGTACAATCAAGCCAAAATTAGGCTTGTCTGCCAAGAATTATGGTAGAGCAGTTTATGAATGCCTTCGTGGTGGACTTGACTTTACAAAAGATGATGAAAACGTAAATTCCCAACCGTTTATGCGTTGGAGAGATCGGTTCCTATTCGTAGCAGAAGCCCTTTTCAAATCTCAGGCTGAAACGGGTGAAATCAAGGGGCATTACTTGAATGCCACTGCAGGTACGTGTGAAGAGATGATGAAGAGAGCTATTTTCGCCAGGGAATTGGGTGCGCCGATTGTCATGCATGACTATCTAACCGGGGGGTTTACCGCAAATACTAGCTTAGCCTTCTACTGCAGAGACAATGGGCTACTTCTGCATATTCACCGGGCGATACATGCTGTCATCGATAGACAGAAAAATCACGGTATGCATTTCCGTGTATTAGCCAAAGGATTACGGATGTCCGGTGGGGATCATATTCATGCCGGAACTGTAGTGGGCAAATTGGAAGGTGAACGAGAAGTTACCCTAGGATTTGTCGATTTACTCCGCGATGATTACATTGAAAAGGATCGTAGCCGTGGTATTTATTTCACCCAAGATTGGGTATCTATGCCGGGTGTCTTTCCCGTAGCTTCGGGAGGTATTCACGTCTGGCACATG?CCGCCTTAACCGAAATTTTCGGGGATGATGCCGTCCTACAATTTGGTGGAGGAACTTTGGGCCATCCTTGGGGAAATGCACCCGGTGCTGTAGCTAACCGAGTTGCATTAGAGGCT [1206]
+Coniogramme_japonica TACACTCCCGAATACAAGACCAAAGACACTGATATCTTAGCAGCTTTCCGAATGACCCCACAACCTGGAGTGCCGGCTGAGGAAGCCGGAGCTGCGGTAGCTGCGGAATCTTCCACGGGTACATGGACCACGGTATGGACAGATGGGCTTACTAATCTTGATCGCTATAAGGGCCGGTGCTACGATATCGAGCCCGTCGCTGGAGAGGAAAATCAGTATATTGCATATGTAGCTTATCCCTTGGATTTATTCGAGGAAGGTTCCGTCACCAATATGCTGACTTCTATTGTAGGTAATGTTTTCGGATTTAAGGCCCTACGCGCTCTGCGTCTGGAAGACCTGCGAATTCCCCCCGCTTATTCAAAAACTTTTATCGGACCCCCCCACGGTATTCAGGTGGAAAGGGATAAACTAAACAAATATGGACGTCCTCTATTGGGATGTACGATCAAGCCGAAGTTAGGCTTATCTGCTAAGAATTATGGTCGAGCAGTTTACGAATGCCTCCGTGGCGGACTTGATTTCACAAAAGATGATGAAAACGTAAATTCCCAACCGTTCATGCGTTGGAGAGATCGCTTCCTATTCGTAGCAGAAGCCCTTTTCAAATCCCAGGCTGAAACGGGTGAAATCAAGGGGCACTATTTAAATGCCACTGCAGGTACGTGTGAGGAGATGATGAAGAGAGCTGTTTTTGCCAGAGAATTGGGTGCACCAATCGTCATGCATGACTACCTGACCGGGGGTTTCACCGCAAATACCAGCTTAGCCTTTTATTGCAGAGACAATGGACTGCTTCTCCATATTCACCGGGCAATGCATGCTGTCATCGATAGGCAACGGAATCACGGTATACATTTCCGTGTATTAGCCAAGGCATTACGCATGTCTGGTGGGGATCACGTCCACGCCGGAACCGTAGTGGGCAAATTAGAAGGCGAACGGGAAGTCACCCTGGGATTTGTCGACCTACTTCGCGACGATTACATCGAGAAAGATCGTAGCCGCGGCGTCTATTTCACCCAAGATTGGGTATCCATGCCGGGTGTACTTCCCGTAGCTTCGGGGGGTATCCACGTCTGGCACATGCCTGCCCTAACCGAAATTTTCGGGGACGACTCCGTCTTACAATTCGGCGGTGGAACATTGGGACATCCCTGGGGAAACGCACCCGGTGCCGTGGCTAACCGAGTCGCATTAGAGGCT [1206]
+Platyzoma_microphyllum TACACTCCCGAATACAAGACCAAAGATACTGATATCTTAGCGGCTTTCCGAATGACCCCACAACCCGGAGTACCAGCTGAGGAGGCCGGAGCTGCAGTAGCTGCGGAATCGTCTACGGGTACATGGACCACGGTATGGACAGACGGACTTACCAGCCTCGATCGATACAAGGGCCGGTGTTATGATATTGAGCCCGTCGCTGGGGAGGAAAATCAATATATTGCGTATGTAGCTTATCCCCTGGATTTATTCGAGGAAGGTTCCGTCACGAATATGCTGACTTCCATTGTAGGTAATGTTTTTGGATTCAAGGCCCTACGCGCTCTGCGTCTCGAAGACCTACGAATTCCTCCTGCATATTCCAAAACTTTTATAGGACCCCCCCACGGTATTCAGGTAGAGAGGGATAAACTAAACAAATATGGACGCCCTCTACTGGGATGTACAATCAAGCCAAAATTAGGCTTGTCTGCCAAAAATTATGGTAGAGCAGTTTATGAATGCCTTCGCGGTGGACTTGATTTCACAAAAGATGATGAAAACGTGAATTCCAACCCGTTCATGCGTTGGAGAGATCGCTTTGTATTCGTAGCAGAGGCCCTATTTAAAGCTCAGGCCGAAACGGGTGAAATCAAGGGACATTATTTAAATGCCACTGCAGGCACCTGTGAAGAGATGTTGAAGAGAGCTGCTTTCGCCAGAGAATTGGGTGCACCAATTATCATGCATGACTACCTAACTGGAGGGTTTACCGCAAATACCAGCTTAGCTTTTTATTGCAGAGACAACGGACTACTTCTTCACATTCACCGGGCGATGCATGCTGTCATCGATAGACAACGGAATCACGGTATGCATTTCCGTGTATTAGCTAAAGGATTACGCATGTCTGGCGGGGATCATATCCATGCCGGAACTGTAGTGGGCAAATTAGAAGGCGAACGAGAAGTTACCCTGGGATTTGTCGACTTACTTCGCGACGATTATATTGAAAAGGATCGTAGCCGCGGTATCTATTTTACCCAAGACTGGGTATCCATGCCGGGTGTACTGCCCGTAGCCTCGGGCGGTATTCACGTATGGCACATGCCTGCTCTAACCGAAATTTTTGGGGACGATGCCGTCTTACAATTTGGTGGGGGAACGTTGGGACATCCATGGGGAAATGCACCCGGTGCTGTAGCGAACCGAGTTGCATTGGAAGCT [1206]
+Pteris_fauriei TACACTCCCGAATACAAAACCAAAGATACTGATATATTAGCGGCTTTCCGAATGACCCCACAACCTGGAGTACCGCCTGAGGAGGCCGGAGCTGCAGTAGCTGCTGAATCCTCTACGGGTACCTGGACCACGGTATGGACAGACGGACTTACCAGTCTCGATCGCTACAAGGGCCGGTGTTACGATATTGAGCCTGTTGCTGGGGAGGAAAATCAGTATATTGCGTATGTAGCTTATCCTCTGGACCTATTTGAGGAAGGTTCCGTCACCAATATGCTGACTTCCATTGTAGGTAATGTTTTTGGCTTCAAGGCCCTACGCGCTCTGCGTCTGGAAGACCTACGAATCCCTCCTGCGTATTCCAAAACTTTTATAGGACCCCCACACGGCATTCAGGTAGAAAGGGATAAACTAAACAAATATGGACGTCCCCTACTGGGATGTACAATCAAGCCAAAATTGGGCTTGTCTGCCAAAAATTATGGTAGAGCAGTTTATGAATGCCTTCGTGGTGGACTTGATTTCACGAAAGATGATGAAAACGTGAATTCCCAACCTTTCATGCGTTGGAGAGACCGCTTCTTATTTGTAGCAGAAGCCCTTTTTAAAGCCCAAGCAGAAACGGGTGAAGTCAAGGGACATTATTTAAATGCCACTGCAGGCACCTGTGAAGAGATGTTGAAGAGAGCTGTTTTCGCCAGAGAATTGGGTGCACCAATTGTCATGCATGACTACTTGACTGGGGGTTTTACCGCAAATACCAGCTTAGCTTTTTATTGCAGAGACAACGGACTACTTCTTCACATTCACCGGGCGATGCATGCTGTCATCGATAGACAACGGAATCACGGTATGCATTTCCGTGTATTAGCCAAAGCATTACGCATGTCTGGTGGGGATCATATCCATGCCGGAACTGTAGTGGGCAAATTAGAAGGCGAACGAGAAGTTACCCTGGGATTTGTCGACTTACTTCGCGACGATTATATTGAAAAGGATCGTAGTCGTGGCATCTATTTTACCCAAGATTGGGTATCCATGCCAGGTGTACTGCCCGTAGCTTCGGGTGGTATTCACGTCTGGCACATGCCTGCCCTAACCGAAATATTCGGGGACGATTCTGTCTTACAATTTGGCGGGGGAACGTTGGGACATCCCTGGGGAAATGCACCCGGTGCTGTAGCTAACCGAGTTGCGTCGGAAGCT [1206]
+Taenitis_blechnoides TACACTCCCGAATACAAGACCCTAGATACTGATATCTTAGCTGCTTTCCGAATGACCCCGCAACCTGGAGTACCAGCTGAGGAGGCCGGAGCTGCAGTAGCTGCGGAATCCTCTACGGGTACATGGACCACGGTATGGACAGACGGACTTACCAGTCTCGATCGATACAAGGGCCGGTGTTACGATGTCGAGCCCGTCGCTAGGGAGAAAAATCAGTATATTGCGTATGTAGCTTATCCCCTGGATTTATTCGAGGAAGGTTCCGTCACCAATATGCTGACTTCCATTGTAGGTAATGTTTTTGGATTCAAGGCCTTACGCGCTCTGCGTCTGGAAGACCTACGGATTCCTCCTGCGTATTCCAAAACTTTTATAGGACCCCCTCACGGTATTCAGGTAGAAAGGGATAAACTAAACAAATACGGACGTCCTCTACTGGGATGTACAATCAAGCCAAAATTAGGCTTGTCTGCCAAAAATTATGGTAGGGCAGTCTATGAATGCCTTCGTGGTGGACTTAATTTCACGAAAGATGATGAAAACGTAAATTCCCAACCGTTCATGCGTTGGAGAGATCGCCTCGTATTCGTAGCAGAAGCTCTTAATAAAGCCGTGTCCGAAACAGGTGAAATCAAGGGGCATTATTTAAATGCCACTGCAGGCAATTGTGAAGAGATGATGAAGAGAGCTGCGTTTGCCAGAGAATTGGGTGTACCAATCGTCATGCATGACTACCTCACTGGCGGGTTTACCGCAAATACTACCTTAGCATCTTATTGCAGAGACAATGGATTACTTCTTCATATTCACCGGGCGATGCATGCTGTCATCTCTAGACAACGGAATCATGGTATGCATTTCCGTGTATTAGCCAAAGCATTACGCATGTCCGGCGGGGATCATGTCCATGCCGGAACTGTAGTAGGCAAATTAGAAGGCGAACGAGAAGTTACTTTAGGATTCGTCGATTTACTTCGCGACGATTATATCGAAAAGGATCGTAATCGCGGCGTCTATTTTACCCAATATTGGGTTTCCATGCCGGGTGTACTGCCCGTAGCTTCGGGTGGTATTCACGTTTGGCACATGCCTGCCCTAACTGAAATTTTTGGGGACGATTCTGTCTTACAGTTTGGCGGGGGAACGTTGGGACATCCCTGGGGAAATGCACCCGGTGCTGTAGCTAACCCGGGTGCTTCGGAGGCT [1206]
+Salvinia_cucullata TACACTCCCGATTATGTGACCAAAGACACCGATATTTTGGCAGCTTTCCGAATGACTCCGCAACCTGGAGTACCACCTGAAGAGGCTGGAGCAGCTGTAGCTCCGGAATCTTCTACAGGTACATGGACCACCGTATGGACGGACGGACTTACCAGTCTTGATCGTTACAAAGGTAGATGCTACGATATCGAACCTGTTGCTGGGGAAGAAAACCAATACATCGCATATGTAGCTTACCCCCTAGATCTATTTGAAGAGGGTTCCGTTACCAACATGTTTACCTCTATCGTAGGTAATGTATTCGGATTTAAGGCTCTACGCGCCCTTCGCCTAGAAGACCTTCGAATTCCTCCTGCTTATTCCAAAACTTTCGAGGGACCGCCCCACGGTATCCAGGTTGAGAGGGACAAGCTGAACAAATACGGACGTCCTCTACTAGGATGCACGATCAAACCAAAATTGGGCTTATCCGCCAAGAATTATGGTAGAGCTGTTTACGAATGTCTTCGTGGAGGACTTGACTTTACCAAGGATGATGAAAACGTAAACTCACAGCCTTTCATGCGTTGGAGAGACCGTTTCCTATTCGTAGCAGAAGCTTTGTTCAAGGCTCAGGCCGAAACGGGCGAAGTCAAGGGACATTACTTGAACGCCACTGCAGGTAACAACGAGGAAATGATTAAAAGGGCTGTTTTTGCTAGAGAATTGGGCGCACCAATTGTCATGCATGACTACCTGACCGGAGGGTTTACTGCAAATACTAGCTTGTCTCATTACTGCCGAGACAACGGTCTACTTCTTCACATTCACCGCGCTATGCATGCTGTCATCGATAGACAGAGAAATCACGGTATACACTTCCGCGTGTTAGCTAAGGCATTACGTATGTCTGGTGGGGACCATATTCACGCTGGACCCGTAGTAGGTAAACTAGAGGGAGAGCGAGAAGTAACTCTGGGTTTCGTTGATCTGCTTCGCGATGATTTCATTGAAAAGGACCGTAGCCGCGGTATCTATTTCACCCAAGATTGGGTATCTATGCCAGGAGTACTGCCCGTAGCTTCAGGGGGTATCCACGTCTGGCACATGCCTGCTCTAACCGAGATTTTCGGAGATGACTCCGTATTACAATTCGGTGGAGGAACCCTAGGCCATCCTTGGGGGAATGCACCCGGCGCTGCAGCTAACAGAGTTGCTTTGGAAGCT [1206]
+Actinostachys_digitata TATACTCCTGACTACAAGACCAAAGACACTGATATCTTAGCAGCATTCCGAATGACTCCACAACCTGGGGTCCCGCCTGAGGAAGCCGGCGCTGCGGTAGCTGCTGAATCTTCCACTGGTACATGGACCACGGTATGGACAGACGGACTTACTAGTCTTGATCGGTACAAAGGGCGGTGCTACGACATCGAGCCCGTAGCTGGGGAGAAGAATCAATATATTGCATATGTAGCTTATCCTTTAGACCTATTTGAGGAAGGGTCCGTAACTAACATGTTTACTTCCATTGTAGGTAATGTATTTGGATTCAAGGCCTTACGGGCTTTACGCTTGGAAGATCTAAGAATTCCGCCTGCGTATTCAAAGACCTTTATTGGTCCGCCCCATGGTATCCAGGTCGAACGGGATAAATTGAACAAATATGGACGCCCCTTATTGGGATGTACAATTAAGCCAAAATTGGGATTATCTGCCAAAAATTATGGTAGAGCAGTTTATGAATGCCTCCGTGGTTTACTTGACCTCACGAAGGATGATGAGAATGTTAATTCCCAACTATTTATGGGTTGGCGTGATCGCTTCCCCTTCGTGACAGAAGCTCTTTCCAAATCTCAAGCCGAGACAGGTGAAATTAAAGGACATTACCTAAATGCCACTGCAGGTACTTGCGAGGAAATGCTAAAAAGGGCTCGGTTCGCTAGAGAACTCGGCGCACCCATAGTCATGCATGATTATTTGACAGGGGGGTTTACTGCAAATACCAGCTTGGCCTTTTATTGCCGCGATAACGGCTTACTTCTACACATTCACCGCGCAATGCATGCCGTAATCGATAGACAGAAAATTCACGGCATGCATTTCCGTGTATTAGCTAAGGGATTACGTATGCCCGGCGGGGATCACGTCCACGCTGGGACTGTAGTCGGTAAATTGGAGGGTGAACGAGAAGTTACTCGAGGATTTGTTGATTTACTTCGCGACGATTATATAGAGAAAGATCGTAGTCGCGGCATATACTTCACCCAGGACTGGGTATCCATGCCGGGGGTACTGCCCGTAGCTTCTGGGGGCATTCACGTATGGCACATGCCCGCCTTAACTGAAATATTTGGAGATGATGCCGTATTACAATTTGGTGGAGGAACCTTGGGTCATCCTTGGGGAAACGCCCCAGGAGCAGTTGCAAATCGCGTCGCTTTGGAAGCC [1206]
+Thelypteris_beddomei TACACCCCCGAATACAAGACCAAAGATACGGATATCTTAGCAGCCTTCCGAATGACCCCACAACCCGGAGTACCAGCTGAGGAAGCCGGAGCTGCGGTAGCTGCGGAATCCTCCACGGGTACGTGGACCACCGTATGGACAGACGGGTTGACCAGCCTCGACCGTTACAAGGGCCGATGCTACGACATTGAACCCGTCGCTGGAGAGGAAAACCAGTATATCGCGTATGTAGCTTATCCTTTGGATCTATTCGAAGAAGGTTCCGTCACTAATTTGTTCACCTCCATTGTAGGTAATGTTTTCGGATTTAAGGCTCTACGCGCTCTACGCTTGGAAGACCTTCGAATCCCTCCTGCTTATTCTAAAACTTTCATTGGACCGCCTCATGGTATTCAGGTCGAAAGGGATAAACTGAACAAATATGGACGTCCCTTATTGGGATGTACAATCAAGCCAAAATTAGGTCTGTCTGCTAAGAATTATGGTAGAGCCGTCTACGAATGCCTTCGTGGTGGACTTGATTTTACAAAGGATGATGAAAACGTAAATTCCCAGCCATTCATGCGTTGGAGAGATCGCTTCTTATTTGTAGCAGAAGCTCTTTTCAAATCCCAGGCTGAAACAGGCGAAATCAAAGGGCACTATTTAAATGCTACTGCAGGTACGTGTGAAGAAATGTTGAAGAGAGCTGTCTTTGCTAGGGAGTTGGGTGCACCAATAGTCATGCATGACTATCTGACTGGGGGGTTTACCGCAAATACCAGCTTAGCTATTTACTGCAGAGACAATGGACTGCTTCTTCATATTCACCGTGCGATGCATGCCGTGATCGATAGGCAACGAAATCACGGTATACATTTTCGTGTACTAGCCAAAGCATTACGCATGTCCGGTGGGGATCATATACACTCCGGAACTGTAGTAGGCAAACTAGAAGGGGAACGAGAAGTCACTTTGGGTTTCGTCGATTTACTTCGCGACGATTACATCGAGAAAGATCGTAGCCGTGGTATATATTTCACACAAGATTGGGTATCTATGCCGGGTGTACTCCCCGTAGCTTCCGGGGGTATCCACGTCTGGCACATGCCCGCTCTAACCGAAATCTTTGGGGACGACTCCGTCTTACAGTTCGGCGGAGGAACCTTGGGACATCCTTGGGGAAATGCACCCGGTGCGGTAGCCAACCGAGTCGCATTAGAAGCT [1206]
+Vittaria_flexuosa TACACTCCCGAATACAAGACTCTAGACACTGATATCCTAGCAGCTTCACGAATGACTCCACAACCTGGCGTACCGGCTGAGGAAGCTGGAGCTGCAGTAGCTGCGGAATCTTCCACGGGTACGTGGACCACGGTATGGACAGACGGGCTTACTAGTCTTGATCGATATAAGGGACGATGCTATGATATTGAGCCGGTAGCTGGGGAGGAAAATCAGTATATCGCATATGTAGCTTACCCTCTGGATTTATTTGAGGAAGGTTCCGTTACGAATATGTTCACTTCGATCGTAGGAAACGTTTTTGGGTTTAAGGCTCTACGCGCGTTGCGTCTGGAAGACTTGCGAATTCCTCCTGCTTATTCCAAAACCTTTGCAGGACCCCCTCATGGGATTCAAGTGGAAAGGGATAAACTAAATAAATATGGACGTCCCTTATTAGGATGTACAATCAAGCCAAAATTGGGCTTATCTGCCAAAAATTATGGTAGAGCGGTTTACGAGTGCCTTCGGGGTGGACTTGATTTCACAAAAGATGATGAAAATGTCAATTCCCAACCATTTATGCGGTGGAGAGATCGATTCTTATTCGTATTAGAAGCTCTTAATAAAGCCGTGGCTGAAACCGGTGAGGTCAAGGGCCATTACTTGAATGCTACTGCAGGTACATGTGAAGAGATGATGAAAAGAGCTGCGTGTGCAAGAGAATTGGGTGCACCAATCGTCATGCATGACTACTTGACGGGAGGGTTTACTGCAAATACCAGTTTAGCCCTTTATTGCAGAGATAATGGATTACTTCTACACATTCACAGGGCAATGCATGCCGTTATCGATAGACAGAAAATTCACGGTATGCATTTCCGTGTATTAGCTAAAGGATTACGTATGTCTGGCGGAGATCACATCCATGCCGGAACCGTAGTGGGCAAATTGGAAGGGGAACGAGAGGTTACCCTAGGATTTGTTGACTTACTTCGCGAGGATTCGATTGAAAAGGATCGTAACCGTGGCATCTATTTCTCGCAAGATTGGGTCTCTATGCCGGGTGTTATACCCGTAGCTTCAGGCGGTATCCATGCTTGGCATATGCCTGCCCTTACCGAACCTTTTGGGGATGACTCTGTCCTACAATTTGGTGGGGGAACCCTGGGACACCATTGGGGGAATGCACCCTGTGCCGTGGCTAACCGAGTCGCAGTGGAAGCG [1206]
+Equisetum_arvense TTTACTCCAGATTATGAAACCAAAGATACCGATATTTTAGCAGCATTCCGTATGACTCCTCAACCGGGAGTACCACCGGAAGAAGCAGGAGCAGCCGTAGCTGCTGAATCGTCCACGGGCACCTGGACTACCGTATGGACAGATGGACTTACTAGTCTTGATCGATATAAAGGTCGATGCTATAATATTGAACCTGTTGCTGGAGAAGATAATCAATTCATAGCTTATGTAGCCTACCCTTTAGATCTTTTTGAAGAAGGTTCTGTTACCAATCTTTTTACTTCAATTGTTGGTAATGTTTTCGGCTTCAAAGCTCTACGTGCTTTACGTTTAGAAGATTTAAGAATTCCTCCTGCTTACTCCAAAACTTTTATAGGACCACCCCACGGTATCCAGGTTGAAAGAGATAAGTTAAACAAATACGGTCGTCCTTTATTAGGTTGTACAATTAAACCAAAATTGGGACTATCTGCTAAAAACTATGGTAGAGCTGTTTATGAATGTCTTCGTGGTGGGCTTGATTTCACCAAAGATGATGAGAATGTAAACTCTCAACCCTTTATGCGTTGGAGAGATCGTTTCTTATTCGTAGCAGAAGCTCTTTTTAAATCCCAAGCTGAGACAGGTGAAATTAAAGGACATTACTTAAACGCTACTGCAGGTACATGTGAAGAAATGTTAAAAAGAGCAGTCTTCGCCAGAGAATTAGGAGCTCCTATTGTTATGCATGACTACCTAACAGGTGGTTTTACTGCAAATACTAGTCTAGCTTTTTACTGTCGAGATAATGGTTTACTTCTTCATATTCACCGAGCAATGCATGCTGTTATCGATAGACAAAAAAATCATGGTATTCACTTTCGTGTACTAGCTAAAGCATTACGTATGTCTGGAGGAGATCATATTCATACTGGTACTGTTGTTGGTAAACTTGAAGGTGAAAGAGACTTAACTTTAGGATTTGTTGATTTACTTCGCGACGACTTTATCGAAAAAGATCGAAGTCGCGGAATTTATTTCACTCAAGACTGGGTATCTATGCCTGGTGTACTTCCTGTAGCTTCGGGTGGTATTCACGTTTGGCACATGCCAGCTTTGACTGAAATTTTTGGAGATGACTCTGTATTACAATTTGGTGGAGGAACCTTAGGACACCCTTGGGGTAATGCACCAGGTGCTGTCGCTAATAGAGTTGCTGTCGAGGCT [1206]
+Lycopodium_digitatum TACACTCCTGATTATAAGACCAAAGAAACCGATATTCTGGCAGCATTTCGAATGACTCCTCAACTTGGAGTACCACCCGAGGAAGCGGGAGCCGCAGTAGCTGCTGAATCTTCCACTGGTACATGGACTACTGTTTGGACCGATGGACTTACCAGTCTCGATCGCTACAAAGGTCGGTGCTATGAAATTGAACCTGTTGCTGGAGAAAAAAATCAATATATTGCTTATGTAGCTTATCCTCTGGATCTGTTTGAGGAAGGTTCCGTTACTAACTTGTTCACTTCCATTGTAGGTAATGTATTTGGATTCAAAGCCTTACGAGCTTTACGTTTAGAAGATTTGCGAATTCCTCCTGCTTATTCCAAAACTTTCATGGGTCCGCCCCATGGTATCCAAGTCGAAAGAGACAAATTGAACAAATATGGCCGTCCTTTATTAGGATGTACTATTAAACCAAAATTAGGTTTATCCGCTAAAAACTATGGTAGAGCTGTTTATGAATGTCTTCGTGGTGGACTTGATTTCACTAAGGATGATGAAAACGTGAATTCTCAACCGTTTATGCGTTGGAGAGACCGTTTCTTATTCGTAGCAGAAGCTCTTTATAAAGCTCAAGCCGAAACAGGCGAAATTAAGGGTCATTACTTGAATGCTACCGCGGGTACATATGAAGAAATGCTTAAAAGGGCACATTGTGCTAAAGAATTAGGAGTGCCTATCGTAATGCATGACTATTTGACGGGAGGTTTCACCGCAAATACTAGTTTAGCCCATTATTGTCGAGACAATGGTCCACTGCTTCACATTCACCGCGCGATGCATGCAGTTATTGACAGACAAAAGAATCATGGTATTCACTTCCGTGTATTAGCTAAAGCATTACGTATGTCTGGTGGAGATCACATACACTCCGGTACTGTAGTAGGTAAACTCGAAGGAGAACGCCAAATAACTTTAGGTTTTGTTGATCTACTTCGTGATGACTATATCGAGAAGGACCGAAGCCGTGGTATTTATTTCACTCAAGATTGGGTATCTATGCCTGGTGTTTCGCCCGTAGCTTCGGGAGGTATTCATGTCTGGCACATGCCTGCTCTGACTGAAATCTTTGGAGATGATTCTGTATCACAATTCGGTGGGGGAACTTTGGGACACCCTTGGGGGAATGCACCCGGTGCAGTAGCAAACCGAGTTGCTTTAGAAGCT [1206]
+Cycas_circinalis TACACTCCTGAATATCAAACCAAAGATACCGATATCTTGGCAGCGTTCCGAGTAACTCCTCAACCTGGAGTGCCGCCTGAGGAAGCGGGAGCTGCAGTAGCCGCTGAATCTTCCACTGGTACATGGACCACTGTTTGGACCGATGGACTTACCAGTCTCGATCGTTACAAGGGGCGATGCTATGACATCGAGCCCGTTCCTGGGGAGAAAAATCAATTTATTGCCTATGTAGCTTACCCCTTAGACCTCTTTGAAGAAGGTTCTGTTACTAACATGTTCACTTCCATTGTAGGTAATGTATTTGGATTCAAAGCCCTACGAGCTCTACGCCTAGAAGATTTGCGAGTTCCTCCTGCTTATTCCAAAACTTTCCAAGGTCCACCTCATGGTATCCAAGTTGAAAGAGATAAATTAAACAAATATGGCCGTCCTCTATTGGGATGTACTATTAAACCCAAATTGGGTTTATCTGCCAAAAACTATGGTAGAGCAGTTTATGAATGTCTTCGTGGTGGACTTGATTTTACCAAAGATGATGAGAACGTAAATTCCCAACCATTTATGCGCTGGAGAGATCGTTTCTGCTTCTGTGCAGAAGCAATTTATAAAGCTCAGGCTGAGACGGGTGAAATTAAGGGACATTACTTGAATGCTACTGCAGGTACATGCGAAGAAATGATCAAAAGGGCAGTATTTGCCAGAGAATTGGGGGTTCCTATCGTCATGCATGACTACCTGACGGGAGGATTTACTGCAAATACCAGCTTGGCTCATTATTGCCGAGACAATGGCCTACTTCTTCACATTCACCGCGCAATGCATGCAGTTATTGACAGACAAAGAAATCATGGTATGCACTTCCGTGTGCTAGCTAAAGCATTGCGAATGTCCGGTGGAGATCATATTCACGGCGGTACTGTAGTAGGTAAACTTGAAGGAGAACGAGACGTAACTTTGGGTTTTGTTGATCTACTGCGTGACGATTTTATTGAAAGAGACCGAAGTCGTGGTATTTATTTCACCCAAGATTGGGTATCTATGCCAGGTGTTCTGCCCGTAGCTTCGGGGGGTATTCACGTTTGGCATATGCCTGCTCTAACCGAGATCTTTGGGGATGATTCCGTACTACAGTTCGGTGGGGGAACTTTGGGACACCCTTGGGGAAATGCACCTGGTGCAGTAGCGAATCGAGTTGCCTTAGAAGCT [1206]
+;
+END;
+
+
+BEGIN CODONS;
+CODESET * UNTITLED = Universal.ext: all ;
+END;
+
+BEGIN ASSUMPTIONS;
+ OPTIONS DEFTYPE=unord PolyTcount=MINSTEPS ;
+END;
+
+
+
+BEGIN MACCLADE;
+Version 3.05;
+LastModified -1350304765;
+Singles 1000&/0;
+END;
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/P95rbcl.nex
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/W98morph.nex
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/W98morph.nex 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/W98morph.nex 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,528 @@
+#NEXUS
+[MacClade 3.05 registered to Franois Lutzoni, ]
+
+BEGIN MacCladeStart;
+Extended;
+END;
+
+
+BEGIN DATA;
+DIMENSIONS NTAX=12 NCHAR=77;
+FORMAT SYMBOLS= " 0 1 2 3 4" MISSING=? GAP=- ;OPTIONS MSTAXA=POLYMORPH ;
+
+CHARLABELS
+ [1] Circinnate_vernation
+ [2] 'F-S_leaf_differentiation'
+ [3] Blade_dissection
+ [4] Primary_vein_form
+ [5] Vein_orders
+ [6] Secondary_vein_form
+ [7] Vein_fusion
+ [8] Areoles
+ [9] Hydathodes
+ [10] Blade_hairs
+ [11] Blade_scales
+ [12] GMC_division
+ [13] GMC_subsid_cell_origin
+ [14] Dromy_at_base_of_blade
+ [15] Pulvini
+ [16] Pneumathodes
+ [17] Blade_articulation
+ [18] Trophopods
+ [19] Adaxial_outline_of_stipe|rachis
+ [20] Sclerenchyma_coloration
+ [21] Sclerenchyma_fibers
+ [22] Epipetiolar_branches
+ [23] 'Stipe_stele_number_(base->apex)'
+ [24] Xylem_configuration_in_stipe
+ [25] Primary_xylem_bordered_pits
+ [26] Rhizome_symmetry
+ [27] Rhizome_stele_type
+ [28] Rhizome_stele_cycles
+ [29] Vascular_cambium
+ [30] Rhizome_hairs
+ [31] Rhizome_scales
+ [32] Rhizome_scale_pattern
+ [33] Roots
+ [34] Root_hairs
+ [35] Root_anatomy
+ [36] Growth_habit
+ [37] 'Mucilage/latex_canals'
+ [38] True_vessels
+ [39] Intranuclear_paracrystals
+ [40] Hypodermis
+ [41] First_division_of_zygote
+ [42] Sporangial_wall_thickness
+ [43] Receptacle
+ [44] Sporangial_stalk_length
+ [45] Sporangial_stalk_width
+ [46] Spore_output
+ [47] Sori
+ [48] Sorus_outline
+ [49] Sporangial|soral_position
+ [50] 'Soral/sporangial_maturation'
+ [51] 'No._sporangia/sorus'
+ [52] Indusium
+ [53] Indusium_origin
+ [54] Indus_attach_to_sorus
+ [55] Indusium_opening
+ [56] Annulus
+ [57] Annulus_aspect
+ [58] Annulus_span
+ [59] Sporogenesis
+ [60] Spore_laesura
+ [61] Spores_chlorophyllous
+ [62] Spore__equatorial_flange
+ [63] Perispore_prominence
+ [64] Perispore_surface
+ [65] Exospore_structure
+ [66] Exospore_surface
+ [67] Spore_germination
+ [68] Gametophyte_form
+ [69] Gametophyte_hairs
+ [70] Gametophytes_green
+ [71] Gam._fungal_assoc.
+ [72] Dependent_gametophyte
+ [73] Antherdium_position
+ [74] Archegonium_position
+ [75] No._anth._wall_cells
+ [76] No._arch_neck_tiers
+ [77] Gemmae_producing_gametophytes
+ ;
+STATELABELS
+ 1 no yes,
+ 2 monomorphic 'hemi_-_at_tip' 'hemi_-_at_base' dimorphic,
+ 3 simple compound,
+ 4 dichotomous 'anisotomous_(pinnate)' solitary|unbranched,
+ 5 one two three four_or_more,
+ 6 dichotomous anisotomous,
+ 7 nonanastomosing anastomosing,
+ 8 without_free_included_veinlets with_free_included_veinlets,
+ 9 absent present,
+ 10 absent present,
+ 11 absent present,
+ 12 diameristic parameristic anomomeristic,
+ 13 perigenous mesogenous mesoperigenous,
+ 14 catadromous anadromous isodromous,
+ 15 absent present,
+ 16 absent present_scattered present_lines_patches,
+ 17 absent present,
+ 18 absent present,
+ 19 convex_to_flattened sulcate,
+ 20 'not_dark-pigmented' dark_pigmented,
+ 21 absent present,
+ 22 absent present,
+ 23 'monostele->polystele' monostele 'distele->monostele' polystele distele,
+ 24 'C,_U,_V,_O,_½,_arc)' 'solid_*,_T,_Æ' 'X_(sometimes_becoming_V)' 3_arches polycyclic,
+ 25 scalariform circular,
+ 26 radial dorsiventral,
+ 27 protostele solenostele dictyostele eustele,
+ 28 monocyclic polycyclic,
+ 29 absent present,
+ 30 absent present,
+ 31 absent present,
+ 32 uniformly_colored sharply_bicolored clathrate,
+ 33 absent present,
+ 34 absent present,
+ 35 '2-5-arch' polyarch,
+ 36 terrestrial epiphytic rooted_aquatic floating_aquatic,
+ 37 absent present,
+ 38 absent present,
+ 39 absent present,
+ 40 absent present,
+ 41 horizontal vertical 'free-nuclear_phase',
+ 42 single_cell_layer 2_or_more_cell_layers,
+ 43 '(nearly)_flat' convex elongate branched,
+ 44 sessile_to_short long,
+ 45 'massive_(>6_cell_rows_wide)' '4-6_cell_rows_wide' '1-3_cell_rows_wide',
+ 46 '1000+' '>100<1000' '<100',
+ 47 absent present,
+ 48 roundish elongate,
+ 49 marginal 'dorsal_(abaxial)' adaxial,
+ 50 ±_simultaneous gradate mixed,
+ 51 'few_(<12)' many,
+ 52 absent present,
+ 53 marginal adaxial,
+ 54 lateral basal central,
+ 55 introrse extrorse suprasoral circumsoral none,
+ 56 absent present,
+ 57 apical lateral oblique_to_transverse vert_to_slightly_oblique,
+ 58 continuous_bow interrupted_bow restricted_patch,
+ 59 homosporous anisosporous heterosporous,
+ 60 linear triradiate papillalike furrow circular,
+ 61 no yes,
+ 62 absent present,
+ 63 not_prominent prominent,
+ 64 '(nearly)_smooth' sculptured,
+ 65 '2-layers_(blechnoid)' '3-layers' '5-layers',
+ 66 '(nearly)_smooth' sculptured,
+ 67 equatorial polar amorphous,
+ 68 tuberous filamentous 'cordate-thalloid' 'elongate-thalloid' reduced,
+ 69 absent present,
+ 70 no yes,
+ 71 absent present,
+ 72 no yes,
+ 73 embedded exposed,
+ 74 embedded exposed,
+ 75 ³_5 '3-(rarely)_5',
+ 76 '>6' '1-5_(rarely)_6',
+ 77 no 'yes,_borne_from_thallus' 'yes,_borne_from_rhizoids',
+;
+
+MATRIX
+Blechnum_occidentale 1011210?11102100001010300020001(01)1100001?1001221112111001310000100112110011110
+Lonchitis_hirsuta 1011310?11002000001010300110010?110000??1000221102110001310100110012010011110
+Pteridium_aquilinum 1011310?01002002001011300111010?1100011(01)1001221102110001310100010012010011110
+Dicksonia_antarctica 1011310?01002102000010330020010?1100001?101112100111(01)121300100000102010011000
+Osmunda_cinnamomea 1311310?010200000010101000(12)0010?110000?01000110??0?0???1120110011112011011000
+Psilotum_nudum 030?????00020?0000?010??(01)0(01)0010?0??(01)000?01000010?000???0??0000001110001011012
+Adiantum_raddianum 1011310?000021000011102001(12)00010110000??1000221102110001310100110012010011110
+Vandenboschia_davallioides 1011310?010??100000010110100010?110100??1020?2100111(01)01120011000110101?0110?1
+Ophioglossum 03??????00020?00000000301020000?100000??0100000??0?0???0??01000?1110001001000
+Huperzia 0(03)020?0?00020?00000010??1000000?110(01)10?00100000?2??0???0??0100??01?0001001010
+Equisetum_arvense 0?020?0?10011?0000??00??1010010?110001?10100?0???0?0???0??04100100?3010011010
+Ginkgo_biloba 0?00100?01020?001000104?1030100?1??010??2100000????0???0??2300??10?40001?0?10
+;
+END;
+
+BEGIN ASSUMPTIONS;
+ OPTIONS DEFTYPE=unord PolyTcount=MINSTEPS ;
+END;
+
+BEGIN TREES;
+
+
+ UTREE Default_bush = [&U] (Blechnum_occidentale,Lonchitis_hirsuta,Pteridium_aquilinum,Dicksonia_antarctica,Osmunda_cinnamomea,Psilotum_nudum,Adiantum_raddianum);
+ UTREE Default_bush = [&U] (Blechnum_occidentale,Lonchitis_hirsuta,Pteridium_aquilinum,Dicksonia_antarctica,Osmunda_cinnamomea,Psilotum_nudum,Adiantum_raddianum);
+ UTREE Default_bush = [&U] (Blechnum_occidentale,Lonchitis_hirsuta,Pteridium_aquilinum,Dicksonia_antarctica,Osmunda_cinnamomea,Psilotum_nudum,Adiantum_raddianum);
+ UTREE * Default_bush = [&U] (Blechnum_occidentale,Lonchitis_hirsuta,Pteridium_aquilinum,Dicksonia_antarctica,Osmunda_cinnamomea,Psilotum_nudum,Adiantum_raddianum);
+
+END;
+
+
+BEGIN NOTES;
+ TEXT CHARACTER=4 TEXT= 'Vouchers_checked_for_all_and_Kubitizki_1990.___See_also_Alan''s_e-mail_05.26.94.__This_character_largely_modelled_after_Nixon_et_al._1994.';
+ TEXT CHARACTER=16 TEXT= vouchers;
+ TEXT TAXON=3 CHARACTER=16 TEXT= 'Bower_1923,_p._169';
+ TEXT TAXON=4 CHARACTER=16 TEXT= 'D._Palmer_(pers._comm.)';
+ TEXT CHARACTER=50 TEXT= vouchers_checked;
+ TEXT TAXON=2 CHARACTER=50 TEXT= voucher;
+ TEXT TAXON=3 CHARACTER=50 TEXT= 'Bower_1923,_Eames_1936';
+ TEXT TAXON=4 CHARACTER=50 TEXT= Kramer_1990;
+ TEXT TAXON=5 CHARACTER=50 TEXT= 'Kramer_1990:_±simultaneous';
+ TEXT TAXON=2 CHARACTER=22 TEXT= Troop_&_Mickel_1968;
+ TEXT TAXON=3 CHARACTER=22 TEXT= 'Troop_&_Mickel_1968_-_citing_Webster_1958_for_this_sp.';
+ TEXT CHARACTER=22 TEXT= 'vouchers;_Troop_&_Mickel_1968';
+ TEXT CHARACTER=26 TEXT= vouchers;
+ TEXT CHARACTER=60 TEXT= Tryon_and_Lugardon__1991;
+ TEXT TAXON=5 CHARACTER=61 TEXT= Kubitzki_1990;
+ TEXT CHARACTER=62 TEXT= Tryon_&_Lugardon_1991;
+ TEXT CHARACTER=59 TEXT= 'Bell_1979,_Sheffield_&_Bell_1987,_Tryon_&_Lugardon_1991';
+ TEXT CHARACTER=61 TEXT= 'Kubitzki_1990,_Tryon_&_Lugardon_1991';
+ TEXT CHARACTER=63 TEXT= 'Lloyd_1981:_Polypodium;_Tryon_&_Lugardon_1991_-_see_especially_the_family_and_generic_descriptions.';
+ TEXT CHARACTER=64 TEXT= 'Lloyd_1981:_Polypodium;_Tryon_&_Lugardon_1991_-_see_especially_family_and_generic_descriptions.';
+ TEXT TAXON=1 CHARACTER=64 TEXT= 'T&L_1991,_p._531,_Figs._1&2';
+ TEXT TAXON=2 CHARACTER=64 TEXT= 'T&L_1991,_p._291-293_and_Figs._1-6:_essentially_granulate_-_some_coarse_surface_deposits.__KMP_originally_scored_this_as_0.__ARS_changed_to_1_03/95,_deciding_that_the_coarse_surface_deposits_were_actually_part_of_the_perispore_sculpturing.';
+ TEXT TAXON=4 CHARACTER=64 TEXT= 'KMP_had_originally_scored_as_1_based_on_T&L_1991_,_p._231_Fig._1;_ARS_changed_to_0__03/95.__See_also_Figs._10-12._Prob_ok_as_0.';
+ TEXT CHARACTER=65 TEXT= '_Tryon_&_Lugardon_1991_-_see_especially_the_family_and_generic_descriptions._See_also_general_introductory_comments_to_book_where_T&L_define_a_2-layered_exospore_as_a_blechnoid_exospore.';
+ TEXT CHARACTER=66 TEXT= '_Tryon_&_Lugardon_1991_-_see_especially_the_family_and_generic_descriptions.';
+ TEXT CHARACTER=52 TEXT= vouchers_seen_for_all;
+ TEXT CHARACTER=53 TEXT= vouchers_seen_for_all;
+ TEXT CHARACTER=54 TEXT= vouchers_seen_for_all;
+ TEXT CHARACTER=55 TEXT= vouchers_seen_for_all;
+ TEXT TAXON=4 CHARACTER=55 TEXT= 'cup_is_bilobed,_"valves"_connate_ at _base';
+ TEXT CHARACTER=27 TEXT= 'States_scored_mainly_from_Kubitizki_(1990)_and_Ogura_(1972).__Some_clarifications_taken_from_Schmid_(1982).__White_&_Turner_1988:_Calochlaena._Qiu_et_al_1995:_Metaxya.';
+ TEXT TAXON=3 CHARACTER=27 TEXT= 'Schmid_1982,_p._901-902:_not_a_dictyostele,_but_a_solenostele.';
+ TEXT TAXON=5 CHARACTER=27 TEXT= 'Schmid_1982,_p._889';
+ TEXT TAXON=6 CHARACTER=27 TEXT= 'See_also_Schmid_1982,_p._900_and_Kubitizki_1990_-_solenostele_between_rhizome_and_aerial_stem.';
+ TEXT CHARACTER=28 TEXT= 'polycyclic_includes_Ogura''s_(1972)_acyclostele_term,_and_the_IIB1c_and_IIB2c_terms_in_Schmid''s_(1983)_Table_1_-_see_pp._868-873.';
+ TEXT TAXON=3 CHARACTER=28 TEXT= 'Ogura_1972,_Kubitizki_1990,_Schmid_1982_(IIB1c)_-_see_also_p._902';
+ TEXT CHARACTER=23 TEXT= 'N.B._For_base->_apex_of_stipe,_NOT_the_rachis!___Used_mostly_the_following_references:__Kubitizki_1990,_Ogura_1972,_Lin_&_DeVol_1977,_1978,_Keating_1968.';
+ TEXT TAXON=1 CHARACTER=23 TEXT= 'Kubitzi_1990,_Ogura_1972,_Lin_&_DeVol_1978';
+ TEXT TAXON=2 CHARACTER=23 TEXT= Keating_1968;
+ TEXT TAXON=3 CHARACTER=23 TEXT= 'Keating_1968,_Ogura_1972';
+ TEXT TAXON=4 CHARACTER=23 TEXT= _Ogura_1972;
+ TEXT TAXON=5 CHARACTER=23 TEXT= 'Ogura_1972,_p._108,_p._99';
+ TEXT TAXON=6 CHARACTER=23 TEXT= 'N/A.__Gifford_&_Foster:__Psilotum_nudum_has_no_leaf_trace_(it_also_has_no_stipe!)';
+ TEXT TAXON=7 CHARACTER=23 TEXT= 'living_material_-_no_voucher_-_see_ARS_email_5/2/95.';
+ TEXT CHARACTER=24 TEXT= 'Stipe,_NOT_rachis!__Though_state_0_seems_broad,_all_are_variations_on_the_horseshoe_shape.';
+ TEXT TAXON=1 CHARACTER=24 TEXT= 'Kubitizki_1990,_Ogura_1972,_Lin_&_DeVol_1978';
+ TEXT TAXON=2 CHARACTER=24 TEXT= Ogura_1972;
+ TEXT TAXON=3 CHARACTER=24 TEXT= Keating_1968;
+ TEXT TAXON=4 CHARACTER=24 TEXT= _Ogura_1972;
+ TEXT TAXON=5 CHARACTER=24 TEXT= 'Ogura_1972,_p._108,_p._99';
+ TEXT TAXON=6 CHARACTER=24 TEXT= 'NA_(Gifford_&_Foster:_P._nudum_has_no_leaf_trace)';
+ TEXT TAXON=7 CHARACTER=24 TEXT= 'Lin_&_DeVol_1978,_p._87,_Table_3';
+ TEXT TAXON=6 CHARACTER=25 TEXT= 'Bierhorst_1960;_1971_-_p._166';
+ TEXT TAXON=6 CHARACTER=41 TEXT= 'Bierhorst_1971,_p._186';
+ TEXT CHARACTER=41 TEXT= 'Gifford_and_Foster_1988,_p._68';
+ TEXT CHARACTER=72 TEXT= 'All_homosporous_ferns_have_independent_gametophytes_(exosporic).__Heterosporous_ferns_have_gametophytes_that_are_dependent_on_the_sporophyte_(endosporic).';
+ TEXT CHARACTER=15 TEXT= As_defined_in_text;
+ TEXT TAXON=1 CHARACTER=66 TEXT= 'Tryon_&_Lugardon_1991:_"gemmulate"';
+ TEXT TAXON=3 CHARACTER=66 TEXT= 'Tryon_&_Lugardon_1991:_"finely_undulate"';
+ TEXT CHARACTER=46 TEXT= 'See_"Spore-output"_table_in_Bower_1923,_p._262-263.';
+ TEXT TAXON=5 CHARACTER=46 TEXT= Bierhorst_1971;
+ TEXT TAXON=6 CHARACTER=46 TEXT= White_et._al_1977;
+ TEXT CHARACTER=2 TEXT= vouchers_looked_at_for_all;
+ TEXT CHARACTER=10 TEXT= Vouchers_checked_for_all;
+ TEXT CHARACTER=11 TEXT= Vouchers_checked_for_all;
+ TEXT CHARACTER=17 TEXT= Vouchers_checked_for_all;
+ TEXT CHARACTER=36 TEXT= Vouchers_checked_when_there_was_any_doubt;
+ TEXT TAXON=6 CHARACTER=36 TEXT= 'Voucher_"high_up_on_tree",_but_also_know_to_occur_on_calcareous_cliffs,_therefore_not_always_epiphytic.__See_ARS_email_2/6/95_(10:21)';
+ TEXT TAXON=7 CHARACTER=36 TEXT= 'Voucher_"rupicolous"';
+ TEXT CHARACTER=3 TEXT= Vouchers_checked_for_all;
+ TEXT CHARACTER=5 TEXT= 'Vouchers_checked_for_all_and_Kubitizki_1990.___See_also_Alan''s_e-mail_05.26.94.__This_character_largely_modelled_after_Nixon_et_al._1994.';
+ TEXT TAXON=6 CHARACTER=5 TEXT= NA;
+ TEXT TAXON=6 CHARACTER=4 TEXT= NA;
+ TEXT CHARACTER=7 TEXT= 'Vouchers_checked_for_all_and_Kubitizki_1990.___See_also_Alan''s_e-mail_05.26.94.__This_character_largely_modelled_after_Nixon_et_al._1994.';
+ TEXT TAXON=6 CHARACTER=7 TEXT= NA;
+ TEXT CHARACTER=8 TEXT= 'Vouchers_checked_for_all_and_Kubitizki_1990.___See_also_Alan''s_e-mail_05.26.94.__This_character_largely_modelled_after_Nixon_et_al._1994.';
+ TEXT TAXON=1 CHARACTER=8 TEXT= NA;
+ TEXT TAXON=2 CHARACTER=8 TEXT= NA;
+ TEXT TAXON=3 CHARACTER=8 TEXT= NA;
+ TEXT TAXON=4 CHARACTER=8 TEXT= NA;
+ TEXT TAXON=5 CHARACTER=8 TEXT= NA;
+ TEXT TAXON=6 CHARACTER=8 TEXT= NA;
+ TEXT TAXON=7 CHARACTER=8 TEXT= NA;
+ TEXT CHARACTER=12 TEXT= 'see_text_for_important_references.__Where_Sen_&_De_1992_had_a_predominance_of_type_shown,_I_scored_for_most_predominant_type.__If_Kondo_1962__and_Sen_&_De_conflicted_over_same_species,_I_followed_Kondo.';
+ TEXT CHARACTER=13 TEXT= 'see_text_for_important_references._Where_Sen_&_De_1992_had_a_predominance_of_type_shown,_I_scored_for_most_predominant_type.__If_Kondo_1962__and_Sen_&_De_conflicted_over_same_species,_I_followed_Kondo.';
+ TEXT TAXON=1 CHARACTER=12 TEXT= 'Kondo_1962_(specified_occidentale),_Sen_&_De_1992,_Van_Cottem_1973';
+ TEXT TAXON=2 CHARACTER=12 TEXT= 'Thurston_1969;__guess_from_Van_Cottem_1973,_p._67';
+ TEXT TAXON=3 CHARACTER=12 TEXT= Kondo_1962;
+ TEXT TAXON=4 CHARACTER=12 TEXT= 'Sen_&_De_1992:_rarely_parameristic';
+ TEXT TAXON=5 CHARACTER=12 TEXT= 'Kondo_1962,_Sen_&_De_1992,_see_also_arguments_in_Payne_1979.';
+ TEXT TAXON=6 CHARACTER=12 TEXT= 'Pant_&_Khare_1971,_White_1977';
+ TEXT TAXON=7 CHARACTER=12 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+ TEXT TAXON=1 CHARACTER=13 TEXT= 'Kondo_1962,_Sen_&_De_1992,_Van_Cottem_1973';
+ TEXT TAXON=2 CHARACTER=13 TEXT= 'Thurston_1969;_guess_from_Van_Cottem_1973,_p._67';
+ TEXT TAXON=3 CHARACTER=13 TEXT= Kondo_1962;
+ TEXT TAXON=4 CHARACTER=13 TEXT= '_Sen_&_De_1992:_rarely_mesogenous';
+ TEXT TAXON=5 CHARACTER=13 TEXT= 'Sen_&_De_1992,_see_Payne_1979_for_arguments';
+ TEXT TAXON=6 CHARACTER=13 TEXT= 'Pant_&_Khare_1971,_White_1977';
+ TEXT TAXON=7 CHARACTER=13 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+ TEXT CHARACTER=1 TEXT= Gifford_&_Foster_1988;
+ TEXT CHARACTER=6 TEXT= 'Vouchers_for_all.__Cf._char_28:_Nixon_et_al._(1994)';
+ TEXT CHARACTER=9 TEXT= vouchers;
+ TEXT CHARACTER=18 TEXT= vouchers;
+ TEXT CHARACTER=19 TEXT= vouchers_and_Kubitizki_1990_checked;
+ TEXT CHARACTER=20 TEXT= Vouchers_checked;
+ TEXT TAXON=6 CHARACTER=19 TEXT= NA;
+ TEXT CHARACTER=14 TEXT= 'vouchers;_Kubitizki_1990';
+ TEXT TAXON=1 CHARACTER=14 TEXT= 'weakly_anadromous,_nearly_isodromous';
+ TEXT TAXON=4 CHARACTER=14 TEXT= 'Kubitizki_1990_says_"catadromous"';
+ TEXT TAXON=6 CHARACTER=14 TEXT= NA;
+ TEXT CHARACTER=30 TEXT= 'vouchers;_Kubitizki_1990';
+ TEXT CHARACTER=31 TEXT= 'vouchers;_Kubitizki_1990';
+ TEXT CHARACTER=32 TEXT= 'vouchers;_Kubitizki_1990';
+ TEXT TAXON=2 CHARACTER=32 TEXT= NA;
+ TEXT TAXON=3 CHARACTER=32 TEXT= NA;
+ TEXT TAXON=4 CHARACTER=32 TEXT= NA;
+ TEXT TAXON=5 CHARACTER=32 TEXT= NA;
+ TEXT TAXON=6 CHARACTER=32 TEXT= NA;
+ TEXT CHARACTER=37 TEXT= 'A_zero_score_indicates_no_mention_of_the_presence_of_canals_in_the_literature,_rather_than_a_positive_statement_that_they_do_not_occur_in_a_particular_taxon';
+ TEXT CHARACTER=38 TEXT= 'Gifford_&_Foster_1988,_White_1961,_1963.';
+ TEXT TAXON=3 CHARACTER=38 TEXT= 'Gifford_&_Foster_1988:_in_rhizome,_petiole,_root';
+ TEXT CHARACTER=29 TEXT= 'Bierhorst_1971,_Gifford_and_Foster_1988';
+ TEXT CHARACTER=39 TEXT= Fabbri_&_Menicanti_1970.__Data_unavailable_for_most_taxa.;
+ TEXT CHARACTER=40 TEXT= Payne_and_Peterson_1973.__Information_available_only_for_a_few_taxa;
+ TEXT TAXON=3 CHARACTER=40 TEXT= 'Payne_and_Peterson_1973_reported_hypodermis_present_in_aquilinum_and_absent_in_latiusculum_(=aquilinum).__Therefore_it_is_prob._a_polymorphic_character_in_the_species';
+ TEXT CHARACTER=21 TEXT= 'Ogura_1972,_p._92';
+ TEXT CHARACTER=25 TEXT= 'Bierhorst_1960,_White_1963b,_Kim_et_al._1993';
+ TEXT CHARACTER=33 TEXT= Vouchers;
+ TEXT TAXON=6 CHARACTER=33 TEXT= Kubitizki_1990;
+ TEXT CHARACTER=34 TEXT= vouchers;
+ TEXT TAXON=6 CHARACTER=35 TEXT= NA;
+ TEXT TAXON=6 CHARACTER=34 TEXT= NA;
+ TEXT CHARACTER=35 TEXT= 'Bierhorst_1971,_p._296_-_all_filicalean_ferns_have_2-4_protoxylem_points';
+ TEXT TAXON=1 CHARACTER=35 TEXT= 'Bierhorst_1971,_p._296';
+ TEXT TAXON=5 CHARACTER=35 TEXT= 'Bierhorst_1971:_triarch';
+ TEXT CHARACTER=42 TEXT= 'General_references_(G&F_1988,_Bierhorst_1971...)';
+ TEXT CHARACTER=47 TEXT= 'Vouchers;_Tryon_&_Tryon_1982,_Kubitizki_1990,_Bierhorst_1971,_Eames_1936,_Hill_&_Camus_1986';
+ TEXT CHARACTER=48 TEXT= 'Vouchers;_Bierhorst_1971,_Eames_1936,_Hill_&_Camus_1986,_Kubitizki_1990,_Tryon_&_Tryon_1982.__Round_sori_=_roughly_as_long_as_wide;_elongate_sori_=_longer_than_wide_-_discrete_or_confluent_sori.';
+ TEXT TAXON=5 CHARACTER=48 TEXT= NA;
+ TEXT TAXON=5 CHARACTER=53 TEXT= NA;
+ TEXT TAXON=5 CHARACTER=54 TEXT= NA;
+ TEXT TAXON=5 CHARACTER=55 TEXT= NA;
+ TEXT TAXON=6 CHARACTER=53 TEXT= NA;
+ TEXT TAXON=6 CHARACTER=54 TEXT= NA;
+ TEXT TAXON=6 CHARACTER=55 TEXT= NA;
+ TEXT CHARACTER=56 TEXT= 'Bierhorst_1971,_Bower_1923,_Tryon_and_Tryon_1982';
+ TEXT CHARACTER=57 TEXT= 'Kubitizki_1990,_Bower_1923,_1926,_1928,_Tryon_and_Tryon_1982,_Qiu_et_al_1995';
+ TEXT TAXON=1 CHARACTER=57 TEXT= 'Bierhorst_1971,_p._314';
+ TEXT TAXON=5 CHARACTER=57 TEXT= Bower;
+ TEXT TAXON=6 CHARACTER=57 TEXT= NA;
+ TEXT CHARACTER=58 TEXT= 'Kubitizki_1990,_Bower_1923,_1926,_1928,_Tryon_and_Tryon_1982,_Qiu_et_al_1995';
+ TEXT TAXON=1 CHARACTER=58 TEXT= 'Bierhorst_1971,_p._314';
+ TEXT TAXON=6 CHARACTER=58 TEXT= NA;
+ TEXT CHARACTER=43 TEXT= 'Vouchers_checked_for_most;_Bierhorst_1971,_Bower_1923,_1926,_1928,_Kubitiaki_1990,_Qiu_et_al_1995,_T&T_1982.__See_also_ARS_e-mail_1/11/95_(10:02am)';
+ TEXT CHARACTER=44 TEXT= 'Vouchers_checked_for_most;_Bierhorst_1971,_Campbell_1918,_Eames_1936,_Gupta_1962,_Kubitizki_1990,_Marschall_1925';
+ TEXT CHARACTER=45 TEXT= 'Vouchers;_Bierhorst_1968,_1971,_Campbell_1918,_Gupta_1962,_Eames_1936,_Kubitizki_1990,_Marschall_1925';
+ TEXT TAXON=5 CHARACTER=45 TEXT= Kubitizki_1990;
+ TEXT CHARACTER=49 TEXT= 'See_text_for_explanation_of_scores_restricted_to_taxa_with_bladed_fertile_fronds/segments_only_and_for_references.';
+ TEXT TAXON=5 CHARACTER=49 TEXT= 'NA,_fertile_segments_without_leaf_blade';
+ TEXT TAXON=6 CHARACTER=49 TEXT= 'NA,_in_axil_of_leaf:_terminal_on_axil?__Complex_situation_(see_Bierhorst_1971,_Eames_1936,_Ogura_1972,_Tryon_&_Tryon_1982,_Wagner_1977)';
+ TEXT CHARACTER=68 TEXT= 'Predominantly_sensu_Nayar_and_Kaur_1971_plus_some_primary_literature,_Bierhorst_1971,_Bower_1923,_1926,_1928,_Eames_1936,_Kubitizki_1990,__Tryon_and_Tryon_1982.';
+ TEXT CHARACTER=69 TEXT= Followed_Nayar_&_Kaur_1971_primarily.__See_text_for_other_gen_refs_that_were_checked;
+ TEXT CHARACTER=70 TEXT= See_text_for_gametophyte_refs;
+ TEXT CHARACTER=71 TEXT= 'Primary_refs:_Boullard_1957,_1979,_Campbell_1908,_Holloway_1930,_Bierhorst_1971,_Nayar_&_Kaur_1971';
+ TEXT TAXON=5 CHARACTER=71 TEXT= Campbell_1908;
+ TEXT CHARACTER=73 TEXT= 'Bierhorst_1971,_Eames_1936,_Gifford_&_Foster_1988,_Nayar_&_Kaur_1971.__See_text_for_comments_on_heterosporous_ferns';
+ TEXT CHARACTER=74 TEXT= 'Bierhorst_1971,_Eames_1936,_Gifford_&_Foster_1988,_Nayar_&_Kaur_1971.___See_text_for_comments_on_heterosporous_ferns';
+ TEXT CHARACTER=75 TEXT= 'Bierhorst_1971,_Campbell_1892,_Eames_1936,_Gifford_&_Foster_1988,_Nayar_&_Kaur_1971,_Stokey_&_Atkinson_1956,_M.D._Turner_(pers._comm._-_Metaxya).';
+ TEXT TAXON=1 CHARACTER=75 TEXT= '"3"';
+ TEXT TAXON=5 CHARACTER=75 TEXT= '"8-25_cells",_Tryon_&_Tryon_1982,_Nayar_&_Kaur_1971';
+ TEXT TAXON=6 CHARACTER=75 TEXT= '"numerous",_Gifford_&_Foster_1988';
+ TEXT CHARACTER=76 TEXT= 'Bierhorst_1971,_Bower_1926,_Eames_1936,_Nayar_&_Kaur_1971_(p._321),_Stokey_&_Atkinson_1956,_M.D._Turner_(pers._comm.)';
+ TEXT TAXON=1 CHARACTER=76 TEXT= '4-5';
+ TEXT TAXON=5 CHARACTER=76 TEXT= '6,_Eames_1936';
+ TEXT TAXON=6 CHARACTER=76 TEXT= '4-6';
+ TEXT CHARACTER=77 TEXT= 'Farrar_1967,_1974,_Nayar_&_Kaur_1971';
+ TEXT CHARACTER=67 TEXT= 'Nayar_&_Kaur_1968,_1971.__See_text_for_other_refs';
+ TEXT TAXON=6 CHARACTER=67 TEXT= 'Bierhorst_1971,_p._187;_Darnell-Smith_1917,_fig._6;_Whittier_1975:__Looks_polar,_first_wall_parallel_to_equatorial_plane.';
+ TEXT TAXON=6 CHARACTER=6 TEXT= NA;
+ TEXT CHARACTER=51 TEXT= Vouchers_checked_for_all;
+ TEXT TAXON=5 CHARACTER=51 TEXT= NA;
+ TEXT TAXON=6 CHARACTER=51 TEXT= voucher;
+ TEXT TAXON=6 CHARACTER=77 TEXT= 'Bierhorst_1971,_p._186;__Farrar_&_Johnson-Groh_1990,_p._1168';
+ TEXT TAXON=11 TEXT= 'Bierhorst_1971,_Boullard_1979,_Brown_1976,_Gifford_&_Foster_1988,_FNA_1992,_Kubitizki_1990,_Ogura_1972,_Schmid_1982,_Tryon_&_Lugardon_1990,_Tryon_&_Tryon_1982,_Brown_1976,_Duckett_1973,_Hauke_1957,_1979,_Johnson_1937,_Scagel_1984';
+ TEXT TAXON=11 CHARACTER=1 TEXT= Gen_refs;
+ TEXT TAXON=11 CHARACTER=2 TEXT= 'NA;_following_arguments_of_Bierhorst_1971_&_Ogura_1972_-_no-one_takes_stand_on_whether_the_sporangiophore_is_leaf_or_stem.__There_are_no_"fertile_leaves".__Sporangiophores_likely_of_stem_origin_with_sporangia_attached_directly_to_stems.';
+ TEXT TAXON=11 CHARACTER=3 TEXT= Gen_refs;
+ TEXT TAXON=11 CHARACTER=4 TEXT= Gen_refs;
+ TEXT TAXON=11 CHARACTER=5 TEXT= Gen_refs;
+ TEXT TAXON=11 CHARACTER=6 TEXT= NA;
+ TEXT TAXON=11 CHARACTER=7 TEXT= Gen_refs;
+ TEXT TAXON=11 CHARACTER=8 TEXT= NA;
+ TEXT TAXON=11 CHARACTER=9 TEXT= 'Ogura_1972,_pgs._124,_125,_248;_Scagel_et_al._1984,_p._441;_Johnson_1937';
+ TEXT TAXON=11 CHARACTER=10 TEXT= Gen_refs;
+ TEXT TAXON=11 CHARACTER=11 TEXT= Gen_refs;
+ TEXT TAXON=11 CHARACTER=12 TEXT= 'Parallel_to_preceding_wall:_see_Ogura_1972,_p._242,_Fig._269,_esp._269-4,_269-5.__See_also_email_to_ARS_June_1_1995.__See_also_Hauke_1957,_p._178';
+ TEXT TAXON=11 CHARACTER=13 TEXT= 'See_Hauke_1957,_p._178,_and_esp._Fig._2:__"Strasburger_pointed_out_that_the_2_outer_cells_were_subsidiary_cells";_Ogura_1972,_p._242,_Fig._269,_esp._Fig._269-4_and_269-5.__Mesogenous_origin_is_very_clear_for_subsidiary_cells.__See_email_to_ARS_6/1/95';
+ TEXT TAXON=11 CHARACTER=14 TEXT= NA;
+ TEXT TAXON=11 CHARACTER=15 TEXT= Gen_refs;
+ TEXT TAXON=11 CHARACTER=16 TEXT= Gen_refs;
+ TEXT TAXON=11 CHARACTER=17 TEXT= Gen_refs;
+ TEXT TAXON=11 CHARACTER=18 TEXT= Gen_refs;
+ TEXT TAXON=11 CHARACTER=19 TEXT= 'NA_(leaves_are_sessile)';
+ TEXT TAXON=11 CHARACTER=20 TEXT= NA;
+ TEXT TAXON=11 CHARACTER=21 TEXT= 'Ogura_1972,_p._242_"colorless_sclerenchyma";_Brown_1976:_"collenchyme_annulaire"_-_did_tests_showing_E._arvense_did_not_have_sclerenchyma,_but_collenchyma';
+ TEXT TAXON=11 CHARACTER=22 TEXT= Gen_refs;
+ TEXT TAXON=11 CHARACTER=23 TEXT= 'NA_(no_stipe)';
+ TEXT TAXON=11 CHARACTER=24 TEXT= 'NA_(no_stipe)';
+ TEXT TAXON=11 CHARACTER=25 TEXT= 'see_Bierhorst_1971,_p._85_and_Fig._27-8_(f-k)';
+ TEXT TAXON=11 CHARACTER=26 TEXT= Gen_refs;
+ TEXT TAXON=11 CHARACTER=27 TEXT= 'Schmid_1982,_p._905';
+ TEXT TAXON=11 CHARACTER=28 TEXT= Gen_refs;
+ TEXT TAXON=11 CHARACTER=29 TEXT= Gen_refs;
+ TEXT TAXON=11 CHARACTER=30 TEXT= 'herbarium_specimens;_Hauke_1979:_p._391;_Ogura_1972,_p._240;_Scagel_et_al._1984,_p._441';
+ TEXT TAXON=11 CHARACTER=31 TEXT= Gen_refs;
+ TEXT TAXON=11 CHARACTER=32 TEXT= NA;
+ TEXT TAXON=11 CHARACTER=33 TEXT= Gen_refs;
+ TEXT TAXON=11 CHARACTER=34 TEXT= herbarium_specimens;
+ TEXT TAXON=11 CHARACTER=35 TEXT= 'Gifford_&_Foster_1988,_p._187_"triarch_or_tetrarch".__Ogura_1972,_p._247,_249.';
+ TEXT TAXON=11 CHARACTER=36 TEXT= Gen_refs;
+ TEXT TAXON=11 CHARACTER=37 TEXT= Gen_refs;
+ TEXT TAXON=11 CHARACTER=38 TEXT= 'Bierhorst_1971,_p._87';
+ TEXT TAXON=11 CHARACTER=39 TEXT= not_mentionned_in_Fabbri_&_Menicanti_1970;
+ TEXT TAXON=11 CHARACTER=40 TEXT= 'Ogura_1972,_p._129:_"hypodermis_is_present_only_on_abaxial_side_of_leaf"';
+ TEXT TAXON=11 CHARACTER=41 TEXT= 'Gifford_&_Foster_1988,_p._68,_Fig._6-1';
+ TEXT TAXON=11 CHARACTER=42 TEXT= Gen_refs;
+ TEXT TAXON=11 CHARACTER=43 TEXT= Gen_refs;
+ TEXT TAXON=11 CHARACTER=44 TEXT= Gen_refs;
+ TEXT TAXON=11 CHARACTER=45 TEXT= NA;
+ TEXT TAXON=11 CHARACTER=46 TEXT= Gen_refs;
+ TEXT TAXON=11 CHARACTER=47 TEXT= NA;
+ TEXT TAXON=11 CHARACTER=48 TEXT= NA;
+ TEXT TAXON=11 CHARACTER=49 TEXT= 'NA_(since_the_sporangiophores_have_no_blades)';
+ TEXT TAXON=11 CHARACTER=51 TEXT= NA;
+ TEXT TAXON=11 CHARACTER=52 TEXT= Gen_refs;
+ TEXT TAXON=11 CHARACTER=53 TEXT= NA;
+ TEXT TAXON=11 CHARACTER=54 TEXT= NA;
+ TEXT TAXON=11 CHARACTER=50 TEXT= Gen_refs;
+ TEXT TAXON=11 CHARACTER=55 TEXT= NA;
+ TEXT TAXON=11 CHARACTER=56 TEXT= Gen_refs;
+ TEXT TAXON=11 CHARACTER=57 TEXT= NA;
+ TEXT TAXON=11 CHARACTER=58 TEXT= NA;
+ TEXT TAXON=11 CHARACTER=59 TEXT= Gen_refs;
+ TEXT TAXON=11 CHARACTER=60 TEXT= 'T&L_1991,_p._586:_"circular_aperture_with_large_subapertural_opturator_in_Equisetum_is_unique_in_pteridophytes"';
+ TEXT TAXON=11 CHARACTER=61 TEXT= Gen_refs;
+ TEXT TAXON=11 CHARACTER=62 TEXT= T&L_1991;
+ TEXT TAXON=11 CHARACTER=63 TEXT= 'see_T&L_1991,_p._587,_Fig._11,_to_see_how_thin_perispore_is_relative_to_exospore';
+ TEXT TAXON=11 CHARACTER=64 TEXT= 'abundant_spherules_seem_to_be_part_of_the_epispore_morphology_-_see_T&L_1991';
+ TEXT TAXON=11 CHARACTER=65 TEXT= 'T&L_1991,_p._586';
+ TEXT TAXON=11 CHARACTER=66 TEXT= 'T&L_1991,_p._587,__Figs._8_&_12:_exospore_looks_smooth';
+ TEXT TAXON=11 CHARACTER=67 TEXT= 'Bierhorst_1971,_p._94_shows_that_the_spore_sheds_its_outer_coat_before_dividing.__Therefore_it_is_impossible_to_determine_the_orientation_of_the_first_division_with_reference_to_the_aperture_since_it_is_no_longer_there_for_reference.';
+ TEXT TAXON=11 CHARACTER=68 TEXT= 'Duckett_1973:__looks_elongate-thalloid/branched_-_eventually_forming_a_pin-cushion_shape,_i.e._there_is_ultimately_more_dimensionality_here_than_in_other_ribbon-like_gametophytes.__T&T_1982_say_"thallose_strap-shaped,_branched".';
+ TEXT TAXON=11 CHARACTER=69 TEXT= Gen_refs;
+ TEXT TAXON=11 CHARACTER=70 TEXT= Gen_refs;
+ TEXT TAXON=11 CHARACTER=71 TEXT= Boullard_1979;
+ TEXT TAXON=11 CHARACTER=72 TEXT= Gen_refs;
+ TEXT TAXON=11 CHARACTER=73 TEXT= 'Duckett_1973,_Hauke_1979,_p._392';
+ TEXT TAXON=11 CHARACTER=74 TEXT= Duckett_1973;
+ TEXT TAXON=11 CHARACTER=75 TEXT= Gen_refs;
+ TEXT TAXON=11 CHARACTER=76 TEXT= Gen_refs;
+ TEXT TAXON=11 CHARACTER=77 TEXT= Gen_refs;
+ TEXT TAXON=6 CHARACTER=30 TEXT= 'Ogura_1972,_p._16';
+ TEXT TAXON=8 TEXT= 'Voucher:_Higashino_1270,_from_Hawaii_(UC).__Unless_otherwise_specified,_sources_(for_the_most_part)_for_character_state_scores_are_the_same_as_those_used_in_Pryer_et_al._1995_(see_Table_1_and_Appendix_2_for_additional_information).';
+ TEXT TAXON=9 TEXT= 'Based_on_O._reticulatum,petiolatum,engelmanii_to_match_rbcL,18S,atpB_data_sets_(no_polymorphisms)._Voucher=Steyermark_97526,_from_Venezuela_(UC)._Sources_for_character_state_scores_same_as_in_Pryer_et_al._1995_(see_Table_1_&_Appendix_2_for_more_info).';
+ TEXT TAXON=10 TEXT= 'Based_on_lucidula_&_campiana_to_match_rbcL,atpB,18S_data_sets._Some_polymorphisms,_e.g.,_character_2._Voucher=Rolland-Germain_s.n.,_Quebec_(UC)._Sources_same_as_Pryer_et_al._1995_(also_Table_1_&_Appendix_2);_see_also_Whittier&Webster,_1986,_AFJ_76:48-55.';
+ TEXT TAXON=12 TEXT= 'Voucher=Chien_5175,_China_(UC);_living_material_from_UC_campus._General_Ginkgo_refs_used_for_scoring:_Gifford_&Foster_1988,_Bierhorst_1971,_Kubitizki_1990,_Arnott_1959_(AJB_46),_Fryns-Claussens_&_van_Cotthem_1973_(Bot_Rev_39),_Rohr_1977_(Cytologia_42).';
+ TEXT TAXON=10 CHARACTER=2 TEXT= 'H._lucidula_has_nearly_monomorphic_leaves;_H._campiana_has_dimorphic_leaves,_therefore,_scored_as_polymorphism.';
+ TEXT TAXON=9 CHARACTER=2 TEXT= 'Wagner_(in_Kubitzki,_1990):"_leaf_blade..appears_to_be_phyllodial..results_from..loss_of..morphological_blade_&_retention_of_only..axis_which_becomes_expanded_laterally"_We_score_as_dimorphic,_presuming_dimorphism_(as_in_Botrychium)_before_loss_of_blade.';
+ TEXT TAXON=12 CHARACTER=2 TEXT= 'The_homologies_of_the_"fertile_blade"_are_still_in_dispute.__It_is_unclear_what_would_be_homologous_to_"fertile_leaves"_in_Ginkgo.';
+ TEXT TAXON=9 CHARACTER=3 TEXT= 'Blades_lost_in_Ophioglossum_-_see_footnotes_under_character_2_"fertile-sterile_leaf_differentiation"';
+ TEXT TAXON=9 CHARACTER=4 TEXT= 'N/A';
+ TEXT TAXON=9 CHARACTER=5 TEXT= 'N/A';
+ TEXT TAXON=9 CHARACTER=6 TEXT= 'N/A';
+ TEXT TAXON=9 CHARACTER=7 TEXT= 'N/A';
+ TEXT TAXON=9 CHARACTER=8 TEXT= 'N/A';
+ TEXT TAXON=12 CHARACTER=7 TEXT= 'Scored_as_non-anastomosing,_even_though_occasional_and_sporadic_vein_unions_occur_in_about_10%_of_the_leaves_(Arnott,_1959:_AJB_46).';
+ TEXT TAXON=12 CHARACTER=12 TEXT= 'Ginkgo_scored_same_as_Cycas,_largely_on_basis_of_Fryns-Claussens_&_van_Cotthem_(1973:_Bot._Rev._39:71-138)._In_Ginkgo,_guard_cells_are_formed_by_longitud._division_of_GMC;_all_subsid._cells_are_produced_by_unequal_divisions_of_adjacent_epidermal_cells.';
+ TEXT TAXON=12 CHARACTER=13 TEXT= 'Ginkgo_scored_same_as_Cycas,_largely_on_basis_of_Fryns-Claussens_&_van_Cotthem_(1973:_Bot._Rev._39:71-138)._In_Ginkgo,_guard_cells_are_formed_by_longitud._division_of_GMC;_all_subsid._cells_are_produced_by_unequal_divisions_of_adjacent_epidermal_cells.';
+ TEXT TAXON=8 CHARACTER=12 TEXT= 'N/A';
+ TEXT TAXON=8 CHARACTER=13 TEXT= 'N/A';
+ TEXT TAXON=8 CHARACTER=21 TEXT= Vandenboschia_has_sclerenchyma_fibers_in_the_cortex_of_the_rhizome_and_probably_also_in_the_periphery_of_the_petiole.;
+ TEXT TAXON=9 CHARACTER=23 TEXT= 'Ophioglossum_scored_as_in_O._vulgatum_(see_Bierhorst,_1971,_p._139).';
+ TEXT TAXON=9 CHARACTER=24 TEXT= 'Ophioglossum_scored_as_in_O._vulgatum_(Bierhorst,_1971,_p._139).';
+ TEXT TAXON=12 CHARACTER=24 TEXT= '2_vascular_bundles_run_length_of_petiole_to_blade_base._Score_as_different_character_state_in_future_analyses_since_it_is_clear_what_state_is?_(see_Foster_&_Gifford,_1974:_449;_Bierhorst,_1971:_420).__Could_it_be_a_"broken"_C_-_needs_checking...';
+ TEXT TAXON=9 CHARACTER=25 TEXT= 'Ophioglossum_is_scored_as_having_circular_bordered_pits,_as_in_O._vulgatum_(Kim_et_al.,_1993).';
+ TEXT TAXON=10 CHARACTER=25 TEXT= 'Huperzia_(and_species_of_the_H._selago_group)_apparently_has_circular_bordered_pits_(Bierhorst,_1971:_9,_12,_504,_fig._27-8D).';
+ TEXT TAXON=12 CHARACTER=25 TEXT= 'Ginkgo_has_circular_bordered_pits_(Bierhorst,_1971:_420,_505).';
+ TEXT TAXON=8 CHARACTER=26 TEXT= 'Vandenboschia_has_dorsiventral_symmetry_in_the_rhizome_(a_polymorphism_in_the_family).';
+ TEXT TAXON=9 CHARACTER=27 TEXT= 'Most_spp._of_Ophioglossum_have_a_distinct_dictyostele_(M._Gewirtz_&_A._Fahn.__1960.__The_anatomy_of_the_sporophyte_and_gametophyte_of_Ophioglossum_lusitanicum_L.__Phytomorphology_10:_342-351).';
+ TEXT TAXON=9 CHARACTER=29 TEXT= 'Ophioglossum_has_not_been_reported_to_have_secondary_xylem._(This_score_was_recorded_as_"1"_for_the_analyses_in_Wolf_et_al._in_Soltis_et_al._1998).';
+ TEXT TAXON=12 CHARACTER=34 TEXT= No_information_located;
+ TEXT TAXON=12 CHARACTER=35 TEXT= No_information_located;
+ TEXT TAXON=10 CHARACTER=36 TEXT= 'H._lucidula_is_terrestrial;_H._campiana_is_epiphytic';
+ TEXT TAXON=8 CHARACTER=36 TEXT= 'V._davallioides_is_epiphytic_(a_polymorphism_in_the_family).';
+ TEXT TAXON=12 CHARACTER=37 TEXT= 'Mucilage_canals_abundant_throughout_pith,_cortex,_and_between_leaf_veins_in_Ginkgo_(Kubitzki_1990:_284).';
+ TEXT TAXON=10 CHARACTER=41 TEXT= '(This_score_was_recorded_as_"?"_for_the_analyses_in_Wolf_et_al._in_Soltis_et_al._1998).';
+ TEXT TAXON=12 CHARACTER=41 TEXT= 'There_is_a_free-nuclear_phase_in_Ginkgo,_as_in_Cycas_(Foster_and_Gifford,_1974:_456).';
+ TEXT TAXON=12 CHARACTER=46 TEXT= '>1000_microspores/male_sporangium;_linear_tetrad_of_megaspores_in_female_sporangium_(Foster_&_Gifford,_1974:_452-453);_scored_as_0&2_in_analyses_for_Wolf_et_al_in_Soltis_et_al._1998._Scored_for_microspores_only_here._Megaspores_not_free-sporing.';
+ TEXT TAXON=8 CHARACTER=46 TEXT= 'Actual__voucher_count_ca._60_(probably_64)_spores/sporangium._Score_reported_for_Cephalomanes_(also_Hymenophyllaceae)_could_be_incorrect,_or_character_may_be_polymorphic_for_family;_literature_reports_may_be_incorrect,_in_part._See_Bower_1923,_p._262-263';
+ TEXT TAXON=12 CHARACTER=48 TEXT= NA;
+ TEXT TAXON=12 CHARACTER=49 TEXT= 'Microsporangia_and_megasporangia_not_obviously_associated_with_leaves._Homologies_of_fertile_appendages_in_microstrobilus_unknown._Homologies_of_ovuliferous_structure_uncertain_and_speculative_(collar=vestigial_sporophyll?)._See_Foster&Gifford_1974:453.';
+ TEXT TAXON=12 CHARACTER=60 TEXT= 'Erdtman_1957:_21.__This_score_is_for_free-sporing_microspores.__Megaspores_are_not_free-sporing.';
+ TEXT TAXON=10 CHARACTER=64 TEXT= 'Huperzia_apparently_lacks_a_perispore_(Tryon_and_Lugardon,_1991:589),_therefore_scored_as_missing_data.';
+ TEXT TAXON=10 CHARACTER=63 TEXT= 'Huperzia_apparently_lacks_a_perispore_(Tryon_and_Lugardon,_1991:589),_therefore_scored_as_missing_data.__(Score_incorrectly_recorded_as_0_for_analyses_in_Wolf_et_al._in_Soltis_&_Soltis_1997).';
+ TEXT TAXON=9 CHARACTER=64 TEXT= 'Ophioglossum_s.s._variable_with_regard_to_perispore_patterning._O._vulgatum:_T&L,_1991:_36,_fig._12_=_echinate;_O._lusitanicum:T&L,_1991:37,_fig_16_=_unornamented_(at_least_in_immature_spores).';
+ TEXT TAXON=12 CHARACTER=65 TEXT= 'Pollen_wall_of_Ginkgo_essentially_3-layered:_fairly_uniform_sexine_(tectum+poorly_developed_baculae),_+_2_nexine_layers_(Rohr,_1977)._One_could_interpret__sexine_as_2-layered_(making_exine_4-layered),_but_baculae_not_nearly_as_well_developed_as_in_cycads';
+ TEXT TAXON=12 CHARACTER=66 TEXT= Rohr_1977;
+ TEXT TAXON=9 CHARACTER=67 TEXT= 'Appears_polar,_insofar_as_first_cell_division_(Nayar&Kaur,_1971,_p.324;_Whittier&Moyroud,_1993,_AFJ_83:41-46;_Whittier,_1981,_AFJ_71:_13-19)._NB:_Nayar&Kaur_(1971,_p._301)_considered_that_amorphous_germination_might_occur_in_Ophioglossaceae.';
+ TEXT TAXON=10 CHARACTER=67 TEXT= 'Unable_to_find_information_on_spore_germination_pattern_for_Huperzia;_early_stages_not_seen_by_Whittier_&_Webster,_1986,_AFJ_76:_48-55.';
+ TEXT TAXON=12 CHARACTER=68 TEXT= 'Male_gametophyte_is_4-celled_upon_release_of_pollen,_ultimately_5-celled.__Female_gametophyte_is_multicellular_(like_cycads),_much_larger,_and_at_first_free-nuclear;_later_there_is_a_cellular_stage_and_the_archegonia_are_produced.__Reword_character?';
+ TEXT TAXON=12 CHARACTER=73 TEXT= 'NA.__Ginkgo_lacks_antheridia;_the_male_gametophyte_is_completely_contained_within_the_pollen_grain.';
+ TEXT TAXON=12 CHARACTER=74 TEXT= 'Ginkgo_has_deeply_embedded_archegonia_(Foster_&_Gifford,_1974:_458;_Bierhorst,_1971:_421.';
+ TEXT TAXON=10 CHARACTER=74 TEXT= 'Huperzia_has_deeply_embedded_archegonia_(Whittier_&_Webster,_1986,_AFJ__76:_48-55),_but_neck_cells_extend_beyond_surface_for_a_least_4_tiers_(was_scored_as_"0"_in_Wolf_et_al._in_Soltis_et_al._1998).';
+ TEXT TAXON=12 CHARACTER=76 TEXT= 'Archegonial_neck_in_Ginkgo_is_a_tier_only_2_cells_high_(Foster_&_Gifford,_1974:_458).';
+ TEXT TAXON=10 CHARACTER=76 TEXT= 'Difficult_to_judge_(Whittier_&_Webster,_1986,_AFJ__76:_48-55,_fig._11);__scored_here_as_"1",_1-5_cells.';
+ TEXT TAXON=10 CHARACTER=77 TEXT= 'Vegetative_reproductive_bodies_are_said_to_be_produced_from_gametophytes_of_Lycopodium_phlegmaria_(=Huperzia),_Bierhorst,_1971:_19,_citing_Treub,_1884.__We_decided_these_were_not_homologous_to_"gemmae"_in_the_usual_sense.';
+ TEXT TAXON=12 CHARACTER=50 TEXT= 'Presumably_microsporangia_mature_simultaneously,_and_so_do_megasporangia?';
+END;
+
+BEGIN MACCLADE;
+Version 3.05;
+LastModified -1350142544;
+Singles 1000&/0;
+END;
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/W98morph.nex
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/characters.nex
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/characters.nex 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/characters.nex 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,151 @@
+#nexus
+
+[!
+***************************************************
+* This NEXUS file is designed to test the NCL by *
+* presenting it with several different variants *
+* of the CHARACTERS block. After each variant, *
+* a special 'showall' comment directs the nexus *
+* reader to spit out the contents of all blocks *
+* currently stored. The file reference.txt holds *
+* the output expected (use the DOS command fc or *
+* the UNIX command diff to compare your output to *
+* reference.txt to see if your implementation is *
+* working correctly. *
+***************************************************
+]
+
+begin taxa;
+ dimensions ntax=6;
+ taxlabels
+ 'P. fimbriata'
+ 'P. robusta'
+ 'P. americana'
+ 'P. myriophylla'
+ 'P. polygama'
+ 'P. macrophylla'
+ ;
+end;
+
+[!
+*************
+* Standard *
+*************
+]
+begin characters;
+ dimensions nchar=45;
+ format datatype=dna missing=? gap=-;
+ matrix
+ P._fimbriata acctcggcttaacgaacctcggcttaacgaacctcggcttaacga
+ P._robusta acctcggcttaaccaacctcggcttaacgaacctcggcttaacga
+ P._americana acgtcgctttca---acgtcgctttcaccaacgtcgctttcacca
+ P._myriophylla acgtcgctttca---acgtcgctttcaccaacgtc?ctttcacca
+ P._polygama acgtcgctctcaccaacgtcgctttcaccaacgtc?ctttcacca
+ P._macrophylla acgtcgctctcaccaacgtcgctttcaccaacgtcgctttcacca
+ ;
+end;
+
+[&showall]
+
+[!
+**********
+* Tokens *
+**********
+]
+begin characters;
+ dimensions nchar=3;
+ charstatelabels
+ 1 'leaf margins' / entire fimbriate,
+ 2 'flower color' / 'white to cream' crimson,
+ 3 'breeding system' / hermaphroditic gynomonoecious gynodioecious dioecious
+ ;
+ format tokens;
+ matrix
+ P._fimbriata fimbriate crimson gynomonoecious
+ P._robusta fimbriate crimson gynomonoecious
+ P._americana entire white_to_cream hermaphroditic
+ P._myriophylla entire white_to_cream hermaphroditic
+ P._polygama entire white_to_cream dioecious
+ P._macrophylla entire crimson gynodioecious
+ ;
+end;
+
+[&showall]
+
+[!
+***********
+* Symbols *
+***********
+]
+begin characters;
+ dimensions nchar=3;
+ charstatelabels
+ 1 'leaf margins' / entire fimbriate,
+ 2 'flower color' / 'white to cream' crimson,
+ 3 'breeding system' / hermaphroditic gynomonoecious gynodioecious dioecious
+ ;
+ format notokens symbols="0123";
+ matrix
+ P._fimbriata 111
+ P._robusta 111
+ P._americana 000
+ P._myriophylla 000
+ P._polygama 003
+ P._macrophylla 012
+ ;
+end;
+
+[&showall]
+
+[!
+*****************************
+* Interleaved, missing taxa *
+*****************************
+]
+begin characters;
+ dimensions ntax=4 nchar=15;
+ format datatype=dna interleave;
+ matrix
+ P._fimbriata acctcggc
+ P._robusta acctcggc
+ P._americana acgtcgct
+ P._myriophylla acgtcgct
+
+ P._fimbriata ttaacga
+ P._robusta ttaacca
+ P._americana ctcacca
+ P._myriophylla ttcacca
+ ;
+end;
+
+[&showall]
+
+[!
+****************
+** transposed **
+****************
+]
+
+begin characters;
+ dimensions nchar=15;
+ format datatype=dna transpose;
+ matrix
+ site_1 aaaaaa
+ site_2 cccccc
+ site_3 ccggcc
+ site_4 tttttt
+ site_5 cccccc
+ site_6 gggggg
+ site_7 ggcccc
+ site_8 cctttt
+ site_9 ttcttt
+ site_10 tttttt
+ site_11 aacccc
+ site_12 aaaaaa
+ site_13 cccccc
+ site_14 gcccgg
+ site_15 aaaaaa
+ ;
+end;
+
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/characters.nex
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/characters.ref.txt
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/characters.ref.txt 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/characters.ref.txt 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,302 @@
+
+***************************************************
+* This NEXUS file is designed to test the NCL by *
+* presenting it with several different variants *
+* of the CHARACTERS block. After each variant, *
+* a special 'showall' comment directs the nexus *
+* reader to spit out the contents of all blocks *
+* currently stored. The file reference.txt holds *
+* the output expected (use the DOS command fc or *
+* the UNIX command diff to compare your output to *
+* reference.txt to see if your implementation is *
+* working correctly. *
+***************************************************
+
+Reading "TAXA" block...
+Finished with "TAXA" block.
+
+*************
+* Standard *
+*************
+
+Reading "CHARACTERS" block...
+Finished with "CHARACTERS" block.
+
+********** Contents of the TAXA block **********
+
+TAXA block contains 6 taxa
+ 1 P. fimbriata
+ 2 P. robusta
+ 3 P. americana
+ 4 P. myriophylla
+ 5 P. polygama
+ 6 P. macrophylla
+
+********** Contents of the CHARACTERS block **********
+
+CHARACTERS block contains 6 taxa and 45 characters
+ Data type is "DNA"
+ Ignoring case
+ Data matrix entries are expected to be single symbols
+ Taxon labels are expected on left side of matrix
+ Matrix neither transposed nor interleaved
+ Missing data symbol is '?'
+ No match character specified
+ Gap character specified is '-'
+ Valid symbols are: ACGT
+ Equate macros in effect:
+ B = {CGT}
+ D = {AGT}
+ H = {ACT}
+ K = {GT}
+ M = {AC}
+ N = {ACGT}
+ R = {AG}
+ S = {CG}
+ V = {ACG}
+ W = {AT}
+ X = {ACGT}
+ Y = {CT}
+ No characters were eliminated
+ The following characters have been excluded:
+ (no characters excluded)
+ The following taxa have been deleted:
+ (no taxa deleted)
+ Data matrix:
+ P. fimbriata ACCTCGGCTTAACGAACCTCGGCTTAACGAACCTCGGCTTAACGA
+ P. robusta ACCTCGGCTTAACCAACCTCGGCTTAACGAACCTCGGCTTAACGA
+ P. americana ACGTCGCTTTCA---ACGTCGCTTTCACCAACGTCGCTTTCACCA
+ P. myriophylla ACGTCGCTTTCA---ACGTCGCTTTCACCAACGTC?CTTTCACCA
+ P. polygama ACGTCGCTCTCACCAACGTCGCTTTCACCAACGTC?CTTTCACCA
+ P. macrophylla ACGTCGCTCTCACCAACGTCGCTTTCACCAACGTCGCTTTCACCA
+
+**********
+* Tokens *
+**********
+
+Reading "CHARACTERS" block...
+Finished with "CHARACTERS" block.
+
+********** Contents of the TAXA block **********
+
+TAXA block contains 6 taxa
+ 1 P. fimbriata
+ 2 P. robusta
+ 3 P. americana
+ 4 P. myriophylla
+ 5 P. polygama
+ 6 P. macrophylla
+
+********** Contents of the CHARACTERS block **********
+
+CHARACTERS block contains 6 taxa and 3 characters
+ Data type is "standard"
+ Ignoring case
+ Multicharacter tokens allowed in data matrix
+ Taxon labels are expected on left side of matrix
+ Character and character state labels:
+ 1 leaf margins
+ entire
+ fimbriate
+ 2 flower color
+ white to cream
+ crimson
+ 3 breeding system
+ hermaphroditic
+ gynomonoecious
+ gynodioecious
+ dioecious
+ Matrix neither transposed nor interleaved
+ Missing data symbol is '?'
+ No match character specified
+ No gap character specified
+ Valid symbols are: 01
+ No equate macros have been defined
+ No characters were eliminated
+ The following characters have been excluded:
+ (no characters excluded)
+ The following taxa have been deleted:
+ (no taxa deleted)
+ Data matrix:
+ P. fimbriata fimbriate crimson gynomonoecious
+ P. robusta fimbriate crimson gynomonoecious
+ P. americana entire white to cream hermaphroditic
+ P. myriophylla entire white to cream hermaphroditic
+ P. polygama entire white to cream dioecious
+ P. macrophylla entire crimson gynodioecious
+
+***********
+* Symbols *
+***********
+
+Reading "CHARACTERS" block...
+Finished with "CHARACTERS" block.
+
+********** Contents of the TAXA block **********
+
+TAXA block contains 6 taxa
+ 1 P. fimbriata
+ 2 P. robusta
+ 3 P. americana
+ 4 P. myriophylla
+ 5 P. polygama
+ 6 P. macrophylla
+
+********** Contents of the CHARACTERS block **********
+
+CHARACTERS block contains 6 taxa and 3 characters
+ Data type is "standard"
+ Ignoring case
+ Data matrix entries are expected to be single symbols
+ Taxon labels are expected on left side of matrix
+ Character and character state labels:
+ 1 leaf margins
+ entire
+ fimbriate
+ 2 flower color
+ white to cream
+ crimson
+ 3 breeding system
+ hermaphroditic
+ gynomonoecious
+ gynodioecious
+ dioecious
+ Matrix neither transposed nor interleaved
+ Missing data symbol is '?'
+ No match character specified
+ No gap character specified
+ Valid symbols are: 0123
+ No equate macros have been defined
+ No characters were eliminated
+ The following characters have been excluded:
+ (no characters excluded)
+ The following taxa have been deleted:
+ (no taxa deleted)
+ Data matrix:
+ P. fimbriata 111
+ P. robusta 111
+ P. americana 000
+ P. myriophylla 000
+ P. polygama 003
+ P. macrophylla 012
+
+*****************************
+* Interleaved, missing taxa *
+*****************************
+
+Reading "CHARACTERS" block...
+Finished with "CHARACTERS" block.
+
+********** Contents of the TAXA block **********
+
+TAXA block contains 6 taxa
+ 1 P. fimbriata
+ 2 P. robusta
+ 3 P. americana
+ 4 P. myriophylla
+ 5 P. polygama
+ 6 P. macrophylla
+
+********** Contents of the CHARACTERS block **********
+
+CHARACTERS block contains 4 taxa and 15 characters
+ Data type is "DNA"
+ Ignoring case
+ Data matrix entries are expected to be single symbols
+ Taxon labels are expected on left side of matrix
+ Matrix interleaved but not transposed
+ Missing data symbol is '?'
+ No match character specified
+ No gap character specified
+ Valid symbols are: ACGT
+ Equate macros in effect:
+ B = {CGT}
+ D = {AGT}
+ H = {ACT}
+ K = {GT}
+ M = {AC}
+ N = {ACGT}
+ R = {AG}
+ S = {CG}
+ V = {ACG}
+ W = {AT}
+ X = {ACGT}
+ Y = {CT}
+ No characters were eliminated
+ The following characters have been excluded:
+ (no characters excluded)
+ The following taxa have been deleted:
+ (no taxa deleted)
+ Data matrix:
+ P. fimbriata ACCTCGGCTTAACGA
+ P. robusta ACCTCGGCTTAACCA
+ P. americana ACGTCGCTCTCACCA
+ P. myriophylla ACGTCGCTTTCACCA
+
+****************
+** transposed **
+****************
+
+Reading "CHARACTERS" block...
+Finished with "CHARACTERS" block.
+
+TAXA block contains 6 taxa
+ 1 P. fimbriata
+ 2 P. robusta
+ 3 P. americana
+ 4 P. myriophylla
+ 5 P. polygama
+ 6 P. macrophylla
+
+CHARACTERS block contains 6 taxa and 15 characters
+ Data type is "DNA"
+ Ignoring case
+ Data matrix entries are expected to be single symbols
+ Character labels are expected on left side of matrix
+ Character and character state labels:
+ 1 site 1
+ 2 site 2
+ 3 site 3
+ 4 site 4
+ 5 site 5
+ 6 site 6
+ 7 site 7
+ 8 site 8
+ 9 site 9
+ 10 site 10
+ 11 site 11
+ 12 site 12
+ 13 site 13
+ 14 site 14
+ 15 site 15
+ Matrix transposed but not interleaved
+ Missing data symbol is '?'
+ No match character specified
+ No gap character specified
+ Valid symbols are: ACGT
+ Equate macros in effect:
+ B = {CGT}
+ D = {AGT}
+ H = {ACT}
+ K = {GT}
+ M = {AC}
+ N = {ACGT}
+ R = {AG}
+ S = {CG}
+ V = {ACG}
+ W = {AT}
+ X = {ACGT}
+ Y = {CT}
+ No characters were eliminated
+ The following characters have been excluded:
+ (no characters excluded)
+ The following taxa have been deleted:
+ (no taxa deleted)
+ Data matrix:
+ P. fimbriata ACCTCGGCTTAACGA
+ P. robusta ACCTCGGCTTAACCA
+ P. americana ACGTCGCTCTCACCA
+ P. myriophylla ACGTCGCTTTCACCA
+ P. polygama ACCTCGCTTTCACGA
+ P. macrophylla ACCTCGCTTTCACGA
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/characters.ref.txt
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/distances.nex
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/distances.nex 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/distances.nex 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,264 @@
+#nexus
+
+begin taxa;
+ dimensions ntax=8;
+ taxlabels taxon_1 taxon_2 taxon_3 taxon_4 taxon_5 taxon_6 taxon_7 taxon_8;
+end;
+
+[!
+***************************************************
+* Non-interleaved, lower-triangular, no diagonals *
+***************************************************
+]
+begin distances;
+ format nodiagonal;
+ matrix
+ taxon_1
+ taxon_2 1
+ taxon_3 2 3
+ taxon_4 4 5 6
+ taxon_5 7 8 9 10
+ taxon_6 11 12 13 14 15
+ taxon_7 16 17 18 19 20 21
+ taxon_8 22 23 24 25 26 27 28;
+end;
+
+[&showall]
+
+[!
+************************************************
+* Non-interleaved, lower-triangular, diagonals *
+************************************************
+]
+begin distances;
+ matrix
+ taxon_1 0
+ taxon_2 1 0
+ taxon_3 2 3 0
+ taxon_4 4 5 6 0
+ taxon_5 7 8 9 10 0
+ taxon_6 11 12 13 14 15 0
+ taxon_7 16 17 18 19 20 21 0
+ taxon_8 22 23 24 25 26 27 28 0;
+end;
+
+[&showall]
+
+[!
+***************************************************
+* Non-interleaved, upper-triangular, no diagonals *
+***************************************************
+]
+begin distances;
+ format triangle=upper nodiagonal;
+ matrix
+ taxon_1 1 2 3 4 5 6 7
+ taxon_2 8 9 10 11 12 13
+ taxon_3 14 15 16 17 18
+ taxon_4 19 20 21 22
+ taxon_5 23 24 25
+ taxon_6 26 27
+ taxon_7 28
+ taxon_8;
+end;
+
+[&showall]
+
+[!
+************************************************
+* Non-interleaved, upper-triangular, diagonals *
+************************************************
+]
+begin distances;
+ format triangle=upper;
+ matrix
+ taxon_1 0 1 2 3 4 5 6 7
+ taxon_2 0 8 9 10 11 12 13
+ taxon_3 0 14 15 16 17 18
+ taxon_4 0 19 20 21 22
+ taxon_5 0 23 24 25
+ taxon_6 0 26 27
+ taxon_7 0 28
+ taxon_8 0;
+end;
+
+[&showall]
+
+[!
+*******************************************
+* Non-interleaved, rectangular, diagonals *
+*******************************************
+]
+begin distances;
+ format triangle=both;
+ matrix
+ taxon_1 0 1 2 3 4 5 6 7
+ taxon_2 1 0 8 9 10 11 12 13
+ taxon_3 2 3 0 14 15 16 17 18
+ taxon_4 4 5 6 0 19 20 21 22
+ taxon_5 7 8 9 10 0 23 24 25
+ taxon_6 11 12 13 14 15 0 26 27
+ taxon_7 16 17 18 19 20 21 0 28
+ taxon_8 22 23 24 25 26 27 28 0;
+end;
+
+[&showall]
+
+[!
+***********************************************
+* Interleaved, lower-triangular, no diagonals *
+***********************************************
+]
+begin distances;
+ format nodiagonal interleave;
+ matrix
+ taxon_1
+ taxon_2 1
+ taxon_3 2 3
+ taxon_4 4 5
+ taxon_5 7 8
+ taxon_6 11 12
+ taxon_7 16 17
+ taxon_8 22 23
+
+ taxon_3
+ taxon_4 6
+ taxon_5 9 10
+ taxon_6 13 14 15
+ taxon_7 18 19 20
+ taxon_8 24 25 26
+
+ taxon_6
+ taxon_7 21
+ taxon_8 27 28;
+end;
+
+[&showall]
+
+[!
+********************************************
+* Interleaved, lower-triangular, diagonals *
+********************************************
+]
+begin distances;
+ format interleave;
+ matrix
+ taxon_1 0
+ taxon_2 1 0
+ taxon_3 2 3
+ taxon_4 4 5
+ taxon_5 7 8
+ taxon_6 11 12
+ taxon_7 16 17
+ taxon_8 22 23
+
+ taxon_3 0
+ taxon_4 6 0
+ taxon_5 9 10 0
+ taxon_6 13 14 15
+ taxon_7 18 19 20
+ taxon_8 24 25 26
+
+ taxon_6 0
+ taxon_7 21 0
+ taxon_8 27 28 0;
+end;
+
+[&showall]
+
+[!
+***********************************************
+* Interleaved, upper-triangular, no diagonals *
+***********************************************
+]
+begin distances;
+ format nodiagonal triangle=upper interleave;
+ matrix
+ taxon_1 1 2
+ taxon_2 8
+ taxon_3
+
+ taxon_1 3 4
+ taxon_2 9 10
+ taxon_3 14 15
+ taxon_4 19
+ taxon_5
+
+ taxon_1 5 6 7
+ taxon_2 11 12 13
+ taxon_3 16 17 18
+ taxon_4 20 21 22
+ taxon_5 23 24 25
+ taxon_6 26 27
+ taxon_7 28
+ taxon_8;
+end;
+
+[&showall]
+
+[!
+********************************************
+* Interleaved, upper-triangular, diagonals *
+********************************************
+]
+begin distances;
+ format triangle=upper interleave;
+ matrix
+ taxon_1 0 1 2
+ taxon_2 0 8
+ taxon_3 0
+
+ taxon_1 3 4
+ taxon_2 9 10
+ taxon_3 14 15
+ taxon_4 0 19
+ taxon_5 0
+
+ taxon_1 5 6 7
+ taxon_2 11 12 13
+ taxon_3 16 17 18
+ taxon_4 20 21 22
+ taxon_5 23 24 25
+ taxon_6 0 26 27
+ taxon_7 0 28
+ taxon_8 0;
+end;
+
+[&showall]
+
+[!
+******************************************
+* Interleaved, rectangular, no diagonals *
+******************************************
+]
+begin distances;
+ format interleave triangle=both;
+ matrix
+ taxon_1 0 1 2 3
+ taxon_2 1 0 8 9
+ taxon_3 2 3 0 14
+ taxon_4 4 5 6 0
+ taxon_5 7 8 9 10
+ taxon_6 11 12 13 14
+ taxon_7 16 17 18 19
+ taxon_8 22 23 24 25
+
+ taxon_1 4 5
+ taxon_2 10 11
+ taxon_3 15 16
+ taxon_4 19 20
+ taxon_5 0 23
+ taxon_6 15 0
+ taxon_7 20 21
+ taxon_8 26 27
+
+ taxon_1 6 7
+ taxon_2 12 13
+ taxon_3 17 18
+ taxon_4 21 22
+ taxon_5 24 25
+ taxon_6 26 27
+ taxon_7 0 28
+ taxon_8 28 0;
+end;
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/distances.nex
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/kenrickcrane.nex
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/kenrickcrane.nex 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/kenrickcrane.nex 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,87 @@
+#nexus
+
+[!
+Data from Table A2.2 in Appendix 2 of:
+Kenrick, Paul, and Peter r. Crane. 1997. The origin and early diversification
+of land plants: a cladistic study. Smithsonian Institution Press, Washington.
+(ISBN 1-56098-729-4)
+]
+
+begin taxa;
+ dimension ntax=15;
+ taxlabels
+ Andreaea
+ Andreaeobryum
+ Anthoceros
+ Chara
+ Coleochaete
+ Equisetum
+ Haplomitrium
+ Horneophyton
+ Huperzia
+ Monoclea
+ Notothylas
+ Polytrichum
+ Sphaerocarpos
+ Sphagnum
+ Takakia
+ ;
+end;
+
+begin characters;
+ dimensions nchar=34;
+ format missing=? symbols="012";
+ charstatelabels
+ 1 'Sporophyte cellularity' / unicellular multicellular,
+ 2 'Sporophyte independence or dependence' / dependent independent,
+ 3 'Well-developed sporangiophore' / absent present,
+ 4 'Sporophyte branching' / absent present,
+ 5 'Intercalary meristem' / absent present,
+ 6 'Foot form' / bulbous tapering,
+ 7 'Xylem-cell thickenings' / absent present,
+ 8 'Sporangium' / absent present,
+ 9 'Sporangium dehiscence' / linear operculate,
+ 10 'Columella' / absent present,
+ 11 'Elaters and pseudoelaters' / absent present,
+ 12 'Zoospore flagella' / present absent,
+ 13 'Perine' / absent present,
+ 14 'Cuticle' / absent present,
+ 15 'Stomates' / absent present,
+ 16 'Gametophyte form' / thalloid axial,
+ 17 'Gametophyte leaves' / absent present,
+ 18 'Archegonium' / absent present,
+ 19 'Anteridium morphology' / naked jacket,
+ 20 'Antheridium development' / exogenous endogenous,
+ 21 'Archegonium position' / superficial sunken,
+ 22 'Gametangia distribution' / nonterminal terminal,
+ 23 'Paraphyses' / absent present,
+ 24 'Rhizoid cellularity' / unicellular multicellular,
+ 25 'Protonema type' / nonfilamentous filamentous,
+ 26 'Oil bodies' / absent present,
+ 27 'Mucilage clefts' / absent present,
+ 28 'Pseudopodium' / absent present,
+ 29 'Pyrenoids' / present absent,
+ 30 'Bicentriolar centrosomes' / orthogonal bicentriolar peripheral,
+ 31 'Orientation of lamellae in multilayered structure' / '90 degrees' '40-45 degrees',
+ 32 'Preprophase bands in mitosis' / absent present,
+ 33 'Lunularic acid' / absent present,
+ 34 'D-methionine' / 'not distinguished' distinguished
+ ;
+ matrix
+ Andreaea 1000010101011101111001111001?11??1
+ Andreaeobryum 1010010101011101111001111000??????
+ Anthoceros 100010010111011001111000001001??01
+ Chara 00????????01?0?1000000000000?000??
+ Coleochaete 00????????0000?00000000000000000??
+ Equisetum 1111001100011110011010000000?21?01
+ Haplomitrium 10000001001101011110010?0100111?1?
+ Horneophyton 11110?01?101?11101??1100??00??????
+ Huperzia 1111001100011111011011100000?????1
+ Monoclea 1000000100110100011000000100????1?
+ Notothylas 10001001011101100111100000100111??
+ Polytrichum 1010010111011111111001111000?11?01
+ Sphaerocarpos 1000000100110100011000000100111?10
+ Sphagnum 1000000111011111111001010001111101
+ Takakia 101001010101?1011110010??000111???
+ ;
+end;
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/kenrickcrane.nex
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/html/NexusClassLibrary.html
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/html/NexusClassLibrary.html 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/html/NexusClassLibrary.html 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,956 @@
+<html>
+<body bgcolor=white>
+<h1>NEXUS Class Library (NCL) Release 2</h1>
+<dl><dd><b>Author: Paul O. Lewis</b>
+<dd><b>Copyright © 1999. All Rights Reserved.</b>
+<dd>Last modified: <i>October 14, 1999</i>
+</dl>
+
+<hr>
+
+<h2>Contents</h2>
+<ul>
+<li><a href="#introduction">What is the NCL?</a>
+<li><a href="#download">Obtaining the NCL?</a>
+<li><a href="#characterisitics">Characteristics of the NCL</a>
+ <ul>
+ <li><a href="#portability">Portability</a>
+ <li><a href="#crossplatform">Cross-platform features</a>
+ <li><a href="#extensibility">Extensibility</a>
+ </ul>
+<li><a href="#limitations">Current limitations</a>
+<li><a href="#reader">Building a NEXUS File Reader</a>
+ <ul>
+ <li><a href="#readermain">The Main Function</a>
+ <li><a href="#readernexus">Deriving From the NEXUS Class</a>
+ <li><a href="#readertoken">Deriving From the NexusToken Class</a>
+ <li><a href="#readerall">Putting It All Together</a>
+ <li><a href="#readerdata">A Sample Data File</a>
+ </ul>
+<li><a href="#rollown">Creating Your Own NEXUS Block</a>
+ <ul>
+ <li><a href="#classheadercomment">Class header comment</a>
+ <li><a href="#enumcomment">Enumeration comment</a>
+ <li><a href="#constructorcomment">Constructor comment</a>
+ <li><a href="#destructorcomment">Destructor comment</a>
+ <li><a href="#noparamscomment">Method comment (no parameters)</a>
+ <li><a href="#paramscomment">Method comment (with parameters)</a>
+ <li><a href="#throwcomment">Method comment (throws exceptions)</a>
+ <li><a href="#operatorcomment">Operator comment</a>
+ <li><a href="#castcomment">Cast operator comment</a>
+ <li><a href="#manipcomment">Manipulator comment</a>
+ </ul>
+<li><a href="#advice">General Advice</a>
+<li><a href="#whatyoucando">What You Can Do For Me</a>
+<li><a href="#future">Future Of The NCL Project</a>
+<li><a href="#index">Index of NCL Classes</a>
+</ul>
+
+<a name="introduction">
+<h2>What is the NCL?</h2>
+</a>
+
+The NEXUS Class Library (NCL) is an integrated collection of C++ classes designed to
+provide a NEXUS data file reader that is both easy to implement and easily
+extensible.
+
+<p>A word about the intended audience is in order before we get too far along (no
+need to waste your time if the NCL will not be helpful to you).
+The intended audience for both this documentation and the
+accompanying class library comprises <i>computer programmers</i> who wish to endow
+their C++ programs with the ability to read NEXUS data files. If you are not a
+programmer and simply use NEXUS files as a means of inputting data to the programs
+you use for analyzing your data, the NCL is not something that will be useful to you.
+The NCL is also not for you if you are a programmer but do not use the C++ language,
+since the NCL depends heavily on the object oriented programming features built into C++.
+
+<p>The NEXUS data file format was specified in the publication cited below.
+Please read this paper for further information about the format specification
+itself; the documentation for the NCL does not attempt to explain this.
+
+<p>
+<b>Maddison, D. R., D. L. Swofford, and Wayne P. Maddison.</b>
+1997. NEXUS: an extensible file format for systematic information.
+<i>Systematic Biology</i> <b>46</b>(4): 590-621.
+
+<p>
+The basic goal of the NCL is to provide a relatively easy way to endow a C++
+program with the ability to read NEXUS data files. The steps
+necessary to use the NCL to create a bare-bones program that can read a NEXUS
+data file are simple and few (see below), and it is hoped that the availability
+of this class library will encourage the use of the NEXUS format. This will
+in turn encourage consistency in how programs read NEXUS files and how programs
+respond to errors in data files.
+
+<p>
+A further benefit can be seen by looking at the large number of special
+data file formats that are out there. This places an extra burden on the
+end user, who must deal with an increasing number of file formats all differing
+in a number of ways. To port one's data to another file format often involves
+manual manipulation of the data, an activity that is inherently dangerous and
+probably has resulted in the corruption of many data files. At the very least,
+the large number of formats in existance has led to a proliferation of data
+file variants. With many copies of a given data file on a hard disk, each
+formatted differently for various analysis programs, it becomes very easy to
+change one (say, correct a datum found to be in error) and fail to correct the
+other versions. The NEXUS file format provides a means for keeping one master
+copy of the data and using it with several programs without modification. The
+NCL provides a means for encouraging programmers to use the NEXUS file format
+in future programs they write.
+
+<a name="download">
+<h2>Obtaining the NCL?</h2>
+</a>
+The current version of the NCL is available by anonymous ftp from
+<code>alleyn.eeb.uconn.edu</code> (137.99.27.148) in the directory <code>pub/ncl2</code>.
+The NCL is available in two archive formats: compressed tar archive or
+zip format. Download the compressed tar archive if you plan to develop
+only for the Unix platform; the zip file contains everything in the tar
+file as well as project files for both the Borland and Metrowerks IDEs.
+
+<p>The links below are provided to make the anonymous ftp access easier:
+<p><strong><a href="ftp://137.99.27.148/pub/ncl/ncl.tar.Z">Compressed tar file</a></strong>
+<br><strong><a href="ftp://137.99.27.148/pub/ncl/ncl.zip">Zip file</a></strong>
+<br><strong><a href="ftp://137.99.27.148/pub/ncl/readme.txt">README file</a></strong>
+
+<a name="characterisitics">
+<h2>Characteristics of the NCL</h2>
+</a>
+
+<a name="portability">
+<h3>Portability</h3>
+</a>
+The NCL has been designed to be as portable as possible for a C++ class library.
+The NCL <i>does</i> make use of the ANSI Standard C++ Library, which may cause problems
+if the compiler you are using is a couple of years old or older. The standard
+library has been adopted by all modern compilers, including the most recent versions
+of Metrowerks CodeWarrier Pro and Borland C++, as well as the EGCS compiler (a
+free compiler available for most unix platforms). Thus, if your compiler chokes
+on the template-based container classes used in the NCL (such as vector, list, map, string, etc.)
+then you will need to upgrade your compiler in order to use the NCL. Assuming
+you have a modern compiler, however, the NCL is fully portable across Mac, Windows,
+and most Unix platforms.
+
+<a name="crossplatform">
+<h3>Cross-platform features</h3>
+</a>
+I have attempted to create the NCL in such a way that one is not limited in the
+type of platform targeted. For example, NEXUS files can contain "output comments"
+that are supposed to be displayed in the output of the program reading the NEXUS
+file. Such comments are handled automatically by the NCL, and are sent
+to a virtual function that can be overridden by you in a derived class.
+This provides a means for you to tailor the output of such comments to the platform
+of your choice. For example, if you are writing a standard Unix console application
+(i.e., not a graphical X-Windows application), you might want such output comments
+to simply be sent to standard output or to an ofstream object. For a graphical
+Windows, MacIntosh or X-Windows application, you might deem it more user-friendly to pop up
+a message box with the output comment as the message. This would ensure that the
+user noticed the output comment. You also have the option of having your program
+completely ignore such comments in the data file.
+
+<p>
+The NCL provides similar hooks for noting the progress in reading the data file.
+For example, a virtual function called EnteringBlock is called and provided with
+the name of the block about to be read. You can override EnteringBlock in your
+derived class to allow, for example, a message to be displayed in a status bar
+at the bottom of your program's main window (in a graphical application) indicating
+which block is currently being read. Other such virtual functions include
+SkippingBlock (to allow users to be warned that your program is ignoring a block
+in the data file), SkippingCommand (to allow users to be warned about particular
+commands being skipped within a block), and NexusError, which is the function
+called whenever anything unexpected happens when reading the file.
+
+<a name="extensibility">
+<h3>Extensibility</h3>
+</a>
+The basic tools provided in the NCL allow you to create your own NEXUS blocks
+and use them in your program. This makes it easy to define a private block
+to contain commands that only your program recognizes, allowing your users to
+run your program in batch mode (see the section below entitled <a href="#advice">
+General Advice</a> for more information on this topic).
+
+<a name="limitations">
+<h2>Current limitations</h2>
+</a>
+
+The main current limitation is that the NCL is incomplete. Some standard NEXUS
+blocks have been provided with this distribution, but because the NEXUS format
+is so extensive, I have not had the time to write code implementing even all of
+the standard blocks described in the paper cited above (or even all of the standard
+blocks I have included!). Here is a summary table showing what has been implemented
+thus far:
+<table width=600>
+<tr>
+<th align="left" valign="bottom">Block<br><hr>
+<th align="left" valign="bottom">Current Limitations<br><hr>
+
+<tr>
+<td valign="top">ASSUMPTIONS
+<td valign="top">Only TAXSETS, CHARSETS, and EXSETS have been implemented thus far.
+
+<tr>
+<td valign="top">ALLELES
+<td valign="top">Cannot yet handle transposed MATRIX, and only DATAPOINT=STANDARD
+is implemented (however, as far as I know, no other program in existance handles anything
+but standard datapoints so this is not a great limitation at the moment).
+
+<tr>
+<td valign="top">CHARACTERS
+<td valign="top">Only ITEMS=STATES and STATESFORMAT=STATESPRESENT has been implemented
+thus far, and DATATYPE=CONTINUOUS has not been implemented.
+
+<tr>
+<td valign="top">DISTANCES
+<td valign="top">No limitations, completely implemented
+
+<tr>
+<td valign="top">DATA
+<td valign="top">Since the DATA block is essentially the same as a CHARACTERS block,
+the same limitations apply.
+
+<tr>
+<td valign="top">TAXA
+<td valign="top">No limitations, completely implemented
+
+<tr>
+<td valign="top">TREES
+<td valign="top">No limitations, completely implemented
+
+</table>
+
+While the limitations for the CHARACTERS block may seem a bit extreme, this
+block is nevertheless implemented to the point where almost all existing
+morphological and molecular data sets can be read. This is because most
+existing programs (including MacClade and PAUP) are limited in the same
+ways. In order to put my efforts where they are most needed, I have
+delayed finishing the work on the CHARACTERS block until it becomes
+apparent that someone wishes to write a program with the capability to
+read data files having other ITEMS or STATESFORMAT options, or a data
+file containing continuous data. If you fall into this category, by all
+means contact me and I will consider pushing ahead!
+
+<p>
+The NCL is written in C++ and designed for use in a C++ program. It is not
+available in a C version (or any other language for that matter), which will
+represent a limitation if you are not a C++ programmer. I do intend to produce
+a Java version eventually (once the bugs are worked out of the C++ version).
+I have written the NCL in a style that mimics Java (i.e., no operators are
+defined, objects are passed by reference whenever possible, etc.) so that this
+conversion, when it happens, will be as easy as possible.
+
+<p>
+The NCL has been designed to be portable, easy-to-use, and informative in the
+error messages produced. It will be apparent to anyone who looks very closely
+at the code that efficiency has been sacrificed to meet these goals.
+You can expect the minimum size of an executable handling only the reading of
+TAXA and TREES blocks to be at least 92 KB (94208 bytes). Adding the ability
+to read the CHARACTERS block pushes this up to 135 KB (138752 bytes). These
+figures are based on compiling a Win32 console program with Borland C++ 5.02
+compiler with no optimizations. Speed has also been sacrificed, however I
+think it can be argued that speed in reading a data file is not all that
+important compared to the NCL's other benefits.
+
+<a name="reader">
+<h2>Building a NEXUS File Reader</h2>
+</a>
+
+This section illustrates how you could build a simple NEXUS file reader application
+capable of reading in a TAXA and a TREES block. Note that the application NCLTEST,
+for which you have the source code, is essentially an expanded version of this
+sample program that can read all of the NEXUS blocks incorporated to date into the
+NCL. To keep things simple, we will just write output to an ofstream object
+(nothing graphical here).
+
+<p>
+As you work through this example, feel free to look into the NCL classes in more
+detail. Each class has its own documentation in the form of a web page having a
+name of the form NCLClassName.html, where NCLClassName is replaced by
+the name of the class. For example, the NexusBlock class is described in the file
+NexusBlock.html. An <a href="#index">index</a> to all classes in the NCL is
+provided at the end of this document for quick access to the full range of
+class-specific web pages.
+
+<a name="readermain">
+<h3>The Main Function</h3>
+</a>
+
+<pre>
+int main()
+{
+ taxa = new TaxaBlock();
+ trees = new TreesBlock(*taxa);
+
+ MyNexus nexus( "testfile.nex", "output.txt" );
+ nexus.Add( taxa );
+ nexus.Add( trees );
+
+ MyToken token( nexus.inf, nexus.outf );
+ nexus.Execute( token );
+
+ taxa->Report( nexus.outf );
+ trees->Report( nexus.outf );
+
+ return 0;
+}
+</pre>
+
+<p>
+<b>Creating block objects.</b>
+The first two lines of main involve the creation of objects corresponding to
+the two types of NEXUS blocks we want our program to recognize. TaxaBlock
+is declared in the header file "taxablock.h" and defined in the source code
+file "taxablock.cpp", whereas the TreesBlock class is declared in "treesblock.h"
+and defined in "treesblock.cpp". Note that the TreesBlock constructor requires
+a reference to an object of type TaxaBlock. This is because a TREES block in
+a NEXUS data file requires the number of taxa and the taxon labels to have been
+previously definined earlier in the data file. In the NCL, any block that defines
+taxon labels stores this information in the TaxaBlock object, and any block that
+needs such information requires a reference to the TaxaBlock object in its
+constructor.
+
+<p>
+<b>Adding the block objects to the NEXUS object.</b>
+The next three lines involve creating a NEXUS object and adding our
+two block objects to a linked list maintained by the NEXUS object. The MyNexus
+class is derived from the Nexus class, which is declared in "nexus.h" and
+defined in "nexus.cpp". Objects cannot be created from the Nexus class alone,
+as it contains pure virtual functions that must be overridden in a derived class.
+Examples of pure virtual functions in Nexus that must be overridden are:
+EnteringBlock, SkippingBlock, and NexusError. The reason the Nexus object must
+maintain a list of block ojects is so that it can figure out who is responsible
+for reading each block found in the data file. The block objects taxa and trees
+have each inherited an id variable of type char* that stores their block name
+(i.e., "TAXA" for the TaxaBlock and "TREES" for the TreesBlock). When the Nexus
+object's Execute method encounters a block name, it searches its linked list of block
+objects until it finds one whose id variable is identical to the name of the block
+encountered. It then calls the Read function of that block object to do the work
+of reading the block from the data file and storing its contents. It is possible
+of course that a block name will appear in a data file for which there is no
+corresponding block object. In this case, the Nexus Execute method calls the
+SkippingBlock method to report the fact that it is skipping over the contents of
+the unknown block.
+
+<p>
+<b>Reading the data file.</b>
+The next two lines create a token object (MyToken is derived from the NexusToken
+class), and initiate the reading of the NEXUS data file using the Nexus Execute
+function. The input and output files are created within the MyNexus class.
+While this is not required, it facilitates handling messages generated while
+the data file is being read. The NexusToken class has one virtual member
+function - OutputComment - which enables you to control how output comments
+are displayed. The NexusToken version of OutputComment does nothing, so you
+must derive your own token class from NexusToken and override the OutputComment
+method in order for the output comments in the data file to be displayed.
+The main function of the NexusToken class is to provide a means for grabbing
+NEXUS tokens one by one from the data file. Calling the GetNextToken function
+reads and stores the next token found in the data file, correctly handling any
+comments found along the way. This greatly simplifies reading a NEXUS data file.
+
+<p>
+<b>Reporting on block objects' contents.</b>
+The last two lines call the Report functions of each of the blocks. This just
+spits out a summary of any data contained in these objects that has been
+read from the data file.
+
+<a name="readernexus">
+<h3>Deriving From the Nexus Class</h3>
+</a>
+Note that the ifstream is opened in binary mode. You should always open your
+input file in binary mode so that the file can be read properly regardless of
+the platform on which it was created. For example, suppose someone created a NEXUS
+data file on a MacIntosh and wanted to read it with your program, which is
+running on a Windows 95 machine. Opening the file in binary mode allows the
+NexusToken object you are using to recognize the newline character in the Mac
+file as such, even though MacIntosh computers use a different symbol (ASCII 13)
+to represent the newline character than computers running Windows (which use
+the ASCII 13, ASCII 10 combination for newlines).
+
+<p>Also, note the special version of one line in the NexusError method that is
+necessary when using the Metrowerks CodeWarrior Professional (Release 4) compiler.
+Metrowerks uses a class called streampos to keep track of the file position
+rather than typedefing streampos to a simple long value. You must call the
+streampos object's offset() member function to obtain a value that you can
+use (no automatic conversions from streampos to long). If you are using
+CoeWarrior Pro Release 5, the special handling is not necessary (there was
+apparently a bug in Release 4 that has since been fixed).
+
+<pre>
+class MyNexus : public Nexus
+{
+ public:
+ ifstream inf;
+ ofstream outf;
+
+ MyNexus( char* infname, char* outfname ) : Nexus() {
+ inf.open( infname, ios::binary );
+ outf.open( outfname );
+ }
+
+ ~MyNexus() {
+ inf.close();
+ outf.close();
+ }
+
+ void EnteringBlock( char* blockName ) {
+ cout << "Reading \"" << blockName << "\" block..." << endl;
+ outf << "Reading \"" << blockName << "\" block..." << endl;
+ }
+
+ void SkippingBlock( char* blockName ) {
+ cout << "Skipping unknown block (" << blockName << ")..." << endl;
+ outf << "Skipping unknown block (" << blockName << ")..." << endl;
+ }
+
+ void OutputComment( char* msg ) {
+ outf << msg;
+ }
+
+ void NexusError( char* msg, streampos pos, long line, long col ) {
+ cerr << endl;
+ cerr << "Error found at line " << line;
+ cerr << ", column " << col;
+#if defined( __MWERKS__ )
+ // if using MetroWerks CodeWarrior Pro 5, use other (normal) version
+ cerr << " (file position " << pos.offset() << "):" << endl;
+#else
+ cerr << " (file position " << pos << "):" << endl;
+#endif
+ cerr << msg << endl;
+
+ outf << endl;
+ outf << "Error found at line " << line;
+ outf << ", column " << col;
+#if defined( __MWERKS__ )
+ // if using MetroWerks CodeWarrior Pro 5, use other (normal) version
+ outf << " (file position " << pos.offset() << "):" << endl;
+#else
+ outf << " (file position " << pos << "):" << endl;
+#endif
+ outf << msg << endl;
+
+ exit(0);
+ }
+};
+</pre>
+
+<a name="readertoken">
+<h3>Deriving From the NexusToken Class</h3>
+</a>
+We derive our own token reader from the NexusToken class in order to display
+the output comments present in the data file (if any). The virtual function
+OutputComment in the base class is overridden to accomplish this.
+<pre>
+class MyToken : public NexusToken
+{
+ ostream& out;
+
+ public:
+ MyToken( istream& is, ostream& os ) : out(os), NexusToken(is) {}
+ void OutputComment( char* msg ) {
+ cout << msg << endl;
+ out << msg << endl;
+ }
+};
+</pre>
+
+<a name="readerall">
+<h3>Putting It All Together</h3>
+</a>
+Here is the entire program. Note that in order for this to link properly, you
+will need to also compile the following files included with the NCL (and instruct
+your linker to link them into your main executable): nexustoken.cpp,
+labellist.cpp, nexus.cpp, nexusblock.cpp, taxablock.cpp, and treesblock.cpp.
+The documentation for individual classes within the NCL provides a "See also"
+section for each class. The classes listed in this "See also" section indicate
+which other NCL classes the class being documented depends on. Use the "See also"
+lists to figure out which files you will need to compile for any particular project.
+<pre>
+#include <stdlib.h>
+#include <fstream.h>
+
+#include "nexustoken.h"
+#include "labellist.h"
+#include "nexus.h"
+#include "taxablock.h"
+#include "treesblock.h"
+
+TaxaBlock* taxa;
+TreesBlock* trees;
+
+class MyToken : public NexusToken
+{
+ ostream& out;
+
+ public:
+ MyToken( istream& is, ostream& os ) : out(os), NexusToken(is) {}
+ void OutputComment( char* msg ) {
+ cout << msg << endl;
+ out << msg << endl;
+ }
+};
+
+class MyNexus : public Nexus
+{
+ public:
+ ifstream inf;
+ ofstream outf;
+
+ MyNexus( char* infname, char* outfname ) : Nexus() {
+ inf.open( infname, ios::binary );
+ outf.open( outfname );
+ }
+
+ ~MyNexus() {
+ inf.close();
+ outf.close();
+ }
+
+ void EnteringBlock( char* blockName ) {
+ cout << "Reading \"" << blockName << "\" block..." << endl;
+ outf << "Reading \"" << blockName << "\" block..." << endl;
+ }
+
+ void SkippingBlock( char* blockName ) {
+ cout << "Skipping unknown block (" << blockName << ")..." << endl;
+ outf << "Skipping unknown block (" << blockName << ")..." << endl;
+ }
+
+ void OutputComment( char* msg ) {
+ outf << msg;
+ }
+
+ void NexusError( char* msg, streampos pos, long line, long col ) {
+ cerr << endl;
+ cerr << "Error found at line " << line;
+ cerr << ", column " << col;
+#if defined( __MWERKS__ )
+ cerr << " (file position " << pos.offset() << "):" << endl;
+#else
+ cerr << " (file position " << pos << "):" << endl;
+#endif
+ cerr << msg << endl;
+
+ outf << endl;
+ outf << "Error found at line " << line;
+ outf << ", column " << col;
+#if defined( __MWERKS__ )
+ outf << " (file position " << pos.offset() << "):" << endl;
+#else
+ outf << " (file position " << pos << "):" << endl;
+#endif
+ outf << msg << endl;
+
+ exit(0);
+ }
+};
+
+int main()
+{
+ taxa = new TaxaBlock();
+ trees = new TreesBlock(*taxa);
+
+ MyNexus nexus( "testfile.nex", "output.txt" );
+ nexus.Add( taxa );
+ nexus.Add( trees );
+
+ MyToken token( nexus.inf, nexus.outf );
+ nexus.Execute( token );
+
+ taxa->Report( nexus.outf );
+ trees->Report( nexus.outf );
+
+ return 0;
+}
+</pre>
+
+<a name="readerdata">
+<h3>A Sample Data File</h3>
+</a>
+Here is a sample data file that exercises a lot of the features of the
+NEXUS file reader we have just created. First, there are both output
+and regular comments scattered around. Some are between tokens, some
+occur at the beginning of a token, and still others begin right after
+a token. Some comments even have nested within them words surrounded by
+square brackets. There are also blocks in this data file (i.e., the
+gdadata block) that are not recognized by the NEXUS file reader we have
+created. The NEXUS reader handles all of these situations without
+needing any code from you!
+
+<p>Feel free to introduce various sorts of errors (e.g., delete semicolons,
+misspell keywords, etc.) into the the sample data file to get a feel for
+what types of error messages the NEXUS file reader generates.
+
+<pre>
+#nexus
+
+[!Output comment before first block]
+
+begin gdadata; [this is an unknown block]
+ dimensions npops=2 nloci=3;
+end;
+
+[!Let's see if we can deal with [nested] comments]
+
+[!
+What happens if we do this!
+]
+
+begin [comment at beginning of token]taxa;
+ dimensions[comment at end of token] ntax=11;
+ taxlabels [comment between tokens]
+ P._fimbriata
+ 'P. robusta'
+ 'P. americana'
+ 'P. myriophylla'
+ 'P. articulata'
+ 'P. parksii'
+ 'P. gracilis'
+ 'P. macrophylla'
+ 'P. polygama'
+ 'P. basiramia'
+ 'P. ciliata'
+ [!output comment in TAXLABELS command]
+ ;
+end;
+
+begin trees;
+ translate
+ 1 P._fimbriata,
+ 2 P._robusta,
+ 3 P._americana,
+ 4 P._myriophylla,
+ 5 P._articulata,
+ 6 P._parksii,
+ 7 P._polygama,
+ 8 P._macrophylla,
+ 9 P._gracilis,
+ 10 P._basiramia,
+ 11 P._ciliata
+ ;
+ tree alpha = (1,2,((((3,4),5),6),((7,8),(9,(10,11)))));
+ tree beta = (1,2,((((3,4),5),6),(7,(8,(9,(10,11))))));
+end;
+</pre>
+
+<a name="rollown">
+<h2>Creating Your Own NEXUS Block</h2>
+</a>
+
+Creating your own NEXUS block involves deriving a class from the NexusBlock
+base class and overriding the three pure virtual functions Read, Reset, and
+Report. Use the files emptyblock.cpp and emptyblock.h as templates for your
+own source code and header files. While creating your own block class is
+not a complicated endeavor, here are some things to nevertheless watch out for:
+<ul>
+<li> Be sure to document your class in the way I have done for the other blocks.
+I have employed a system of documentation similar to that used for the Java
+Development Kit. The program makedoc was supplied with your copy of NCL. This
+program reads the special tags in the source code comments of the NCL source
+files and creates HTML documentation automatically. Because the documentation
+is actually inside the source code files, this system makes it relatively
+easy both to document your source code when you write it, and also keep it up
+to date as you make changes later on. Some examples of the special comment
+style you must use to make this system work are given at the end of this section.
+<li> Be sure to write the Reset function in such a way that all heap memory is
+cleaned up (deleted). This means whenever you use the "new" keyword to allocate
+memory for an object that will potentially persist until the Reset method is
+called, you need to put code in the Reset function to delete it. Also, it is
+important to delete such objects in the destructor for the class as well.
+<li> When writing the Read function, put assert macros whereever you make an
+assumption, however insignificant this assumption seems at the time of writing.
+This tremendously speeds up the task of finding bugs when one of your assumptions
+turns out to not always be true!
+<li> When writing the Read function, put in lots of tests of the form:
+<pre>
+if( !token.Equals(";") ) {
+ sprintf( errormsg, "Expecting ';' but found %s instead", token.GetToken() );
+ throw XNexus(errormsg);
+}
+</pre>
+Such checks will give your users some hope of finding where they have made a
+mistake in constructing their data file. We all know how frustrating it can
+be to have a program exit with an uninformative error message.
+<li> Don't forget to update your main class comment if you add variables to
+your class's header file. This is easy to forget, since the header file
+does not contain any of the special documentation comments.
+</ul>
+
+To use makedoc, compile makedoc for your operating system and then simply type
+
+<pre>
+makedoc myblock.cpp
+</pre>
+
+at the system prompt to create a help file for the class defined in myblock.
+Note that there can be only one class defined per source code file to use this
+system, and all of the special comments must be in the same file for a particular
+class. Here are some examples of source code comments for use with the
+makedoc program. Feel free to look through the NCL source code files for other
+examples.
+
+<a name="classheadercomment">
+<h3>Class header comment</h3>
+</a>
+<pre>
+/**
+ * @class TaxaBlock
+ * @file taxablock.h
+ * @file taxablock.cpp
+ * @author Paul O. Lewis
+ * @copyright Copyright © 1999. All Rights Reserved.
+ * @variable ntax [int:private] number of taxa (set from NTAX specification)
+ * @variable taxonLabels [LabelList:private] storage for list of taxon labels
+ * @see LabelList
+ * @see Nexus
+ * @see NexusBlock
+ * @see NexusToken
+ * @see XNexus
+ *
+ * This class handles reading and storage for the NEXUS block TAXA.
+ * It overrides the member functions Read and Reset, which are abstract
+ * virtual functions in the base class NexusBlock. The taxon names are
+ * stored in an array of strings (taxonLabels) that is accessible through
+ * the member functions GetTaxonLabel, AddTaxonLabel, ChangeTaxonLabel,
+ * and GetNumTaxonLabels.
+ */
+</pre>
+
+<a name="enumcomment">
+<h3>Enumeration comment</h3>
+</a>
+<pre>
+/**
+ * @enumeration
+ * @enumitem saveCommandComment [0x0001] if set, command comments expected and will be saved
+ * @enumitem parentheticalToken [0x0002] if set, parenthetical token expected
+ *
+ * For use with the variable labileFlags.
+ */
+</pre>
+
+<a name="constructorcomment">
+<h3>Constructor comment</h3>
+</a>
+<pre>
+/**
+ * @constructor
+ *
+ * Default constructor. Initializes id to "TAXA" and ntax to 0.
+ */
+</pre>
+
+<a name="destructorcomment">
+<h3>Destructor comment</h3>
+</a>
+<pre>
+/**
+ * @destructor
+ *
+ * Deletes the memory used by id and flushes taxonLabels.
+ */
+</pre>
+
+<a name="noparamscomment">
+<h3>Method comment (no parameters)</h3>
+</a>
+<pre>
+/**
+ * @method Reset [void:protected]
+ *
+ * Flushes taxonLabels and sets ntax to 0 in preparation for reading a
+ * new TAXA block.
+ */
+</pre>
+
+<a name="paramscomment">
+<h3>Method comment (with parameters)</h3>
+</a>
+<pre>
+/**
+ * @method ChangeTaxonLabel [void:public]
+ * @param i [int] the taxon label number to change
+ * @param s [char*] the string used to replace label i
+ *
+ * Changes the label for taxon i to s. Deletes the old
+ * label and reallocates enough memory to store the new
+ * label.
+ */
+</pre>
+
+<a name="throwcomment">
+<h3>Method comment (throws exceptions)</h3>
+</a>
+<pre>
+/**
+ * @method Read [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @param in [istream&] the input stream from which to read
+ * @throws XNexus
+ *
+ * This function provides the ability to read everything following the block name
+ * (which is read by the Nexus object) to the end or endblock statement.
+ * Characters are read from the input stream in. Overrides the
+ * abstract virtual function in the base class.
+ */
+</pre>
+
+<a name="operatorcomment">
+<h3>Operator comment</h3>
+</a>
+<pre>
+/**
+ * @operator = [NxsGDADataBlock&:public]
+ * @param gdaData [const NxsGDADataBlock&] the NxsGDADataBlock to be copied
+ *
+ * Copies the information from gdaData to this object.
+ */
+</pre>
+
+<a name="castcomment">
+<h3>Cast operator comment</h3>
+</a>
+<pre>
+/**
+ * @castoperator () [double:public]
+ *
+ * Casts value of cell to a double.
+ */
+</pre>
+
+<a name="manipcomment">
+<h3>Manipulator comment</h3>
+</a>
+<pre>
+/**
+ * @manipulator setleft
+ *
+ * Specifies the left boundary of the Table body.
+ * All columns added before this point are considered
+ * row headers and will be repeated for each output
+ * page.
+ */
+</pre>
+
+<a name="advice">
+<h2>General Advice</h2>
+</a>
+
+A typical program making use of this library might have the following two general characteristics:
+<ul>
+<li> Structured so that it can be compiled either as a command-line driven, Unix-style program
+or as a graphical application (with a Windows, MacIntosh, or XWindows Graphical User Interface, or GUI)
+<li> Handles a private NEXUS block that contains commands identical to those
+that can be entered on the command line, enabling the program to be run in batch mode
+</ul>
+
+The program PAUP is perhaps the most well-known example of this type of program.
+
+<p>After developing several programs like this, I have come up with the following strategy that
+make efficient use of the object-oriented nature of the NCL. I will assume your non-graphical program will
+be called simply "foo" and will read a private NEXUS block named "FOO". I will assume
+that the GUI version will be targeted for the Windows platform, and will be colled "winfoo".
+<ul>
+<li> Create a class (call it <b>FooBase</b>) that encapsulates the kernel of the program.
+Be careful not to place any GUI code in this class. This class should be derived (publicly) from
+the <b>NexusBlock</b> class (this class will encapsulate your program's private NEXUS block).
+<li> In class FooBase, override the NexusBlock virtual functions <b>Read</b>, <b>Reset</b>, <b>Report</b>, and <b>HandleEndblock</b>,
+and any other handler functions needed to process the commands in the private block.
+<li> Now create a class <b>WinFoo</b> that handles the Windows GUI interface. Derive this class from
+both <b>Nexus</b> (so that it can serve as the Nexus reader) and from FooBase (so that it can also
+serve as the private block object as well as handle all the core functionality). In the WinFoo
+constructor, create all the NEXUS block objects needed (i.e., a CharactersBlock object and TaxaBlock object)
+and add these to the nexus reader using the Add function. Don't forget to "Add(this)" too so that
+your program can read the private block. Note that "this" is both a Nexus object as well as a
+NexusBlock object, so it is able to add itself to the list of blocks processed upon execution of
+a NEXUS data file.
+<li> In class WinFoo, override the Nexus virtual functions <b>EnteringBlock</b>, <b>SkippingBlock</b>, and
+<b>NexusError</b>. For instance, within NexusError, you might put up a MessageBox telling the
+user about an error encountered in the data file.
+<li> For the Unix, command-driven version, create a class <b>foo</b> that is derived from FooBase,
+overrides the Nexus and NexusBlock virtual functions (like its GUI counterpart, WinFoo), and provides
+a means for users to enter commands (you should create a mechanism in FooBase so that you can
+use the same macbinery to process commands typed in from the keyboard as you use to process
+commands contained in a private block).
+</ul>
+
+<a name="whatyoucando">
+<h2>What You Can Do For Me</h2>
+</a>
+
+I hope this library is useful to you, and it is offered free of charge so long
+as you don't sell it or make it part of a commercial software package. If you
+include the NCL as part of a program that you sell, please contact me at the
+address below to discuss license fees.
+<p>
+Although you are not obligated in any way to me as a result of using this
+package to improve your programs, there are a few things that you can do to
+help encourage me to continue improving this library. Please make use of any
+of the following means of support that you feel comfortable with:
+<ul>
+<li> Cite me! If you publish an announcement of a program of yours that
+includes the NCL, please acknowledge that your program includes the NCL.
+<li> Advertise me! If your program produces output either on the screen or
+in the form of a file, mention that your program includes the NCL in your
+program's output.
+<li> Help me fix bugs. If you discover a bug in the NCL, please let me know
+about it so that I can get it fixed.
+<li> Give me suggestions. I welcome suggestions for improving the library
+and making it more convenient to use.
+</ul>
+
+<a name="future">
+<h2>Future Of The NCL Project</h2>
+</a>
+The current capabilities of the NCL are best illustrated by taking a look at
+some of the data files that it can successfully read.
+Most of these example NEXUS data files are from the
+<a href="http://ucjeps.herb.berkeley.edu/bryolab/greenplantpage.html">"Green
+Plant Phylogeny Research Coordination Group"</a> website; the two remaining
+data files contain multiple DISTANCES blocks (distances.nex) or multiple
+CHARACTERS blocks (characters.nex) to illustrate some of the formatting
+options available with these two NEXUS block types. These examples amply
+demonstrate the capabilities of the NCL as it now stands, however the NCL
+will continue to grow as code for recognizing more and more NEXUS
+blocks are added. I welcome both suggestions for improvement as well as
+bug reports, of course.
+
+<p>My current mail and email addresses as well as my phone and fax numbers
+are given below:
+
+<pre>
+Paul O. Lewis, Assistant Professor
+Department of Ecology and Evolutionary Biology
+The University of Connecticut
+U-43, 75 North Eagleville Road
+Storrs, CT 06269-3043
+
+Ph: +1-860-486-2069
+FAX: +1-860-486-6364 (the departmental fax machine)
+Email: <a href="mailto:plewis at uconnvm.uconn.edu">plewis at uconnvm.uconn.edu</a>
+URL: <a href="http://www.eeb.uconn.edu/faculty/plewis.htm">http://www.eeb.uconn.edu/faculty/plewis.htm</a>
+</pre>
+
+<a name="index">
+<h2>Index To NCL Classes</h2>
+</a>
+<ul>
+<li><a href="AllelesBlock.html"> AllelesBlock class </a>
+<li><a href="AssumptionsBlock.html"> AssumptionsBlock class </a>
+<li><a href="CharactersBlock.html"> CharactersBlock class </a>
+<li><a href="DataBlock.html"> DataBlock class </a>
+<li><a href="DiscreteDatum.html"> DiscreteDatum class </a>
+<li><a href="DiscreteMatrix.html"> DiscreteMatrix class </a>
+<li><a href="DistanceDatum.html"> DistanceDatum class </a>
+<li><a href="DistancesBlock.html"> DistancesBlock class </a>
+<li><a href="Nexus.html"> Nexus class </a>
+<li><a href="NexusBlock.html"> NexusBlock class </a>
+<li><a href="NexusToken.html"> NexusToken class </a>
+<li><a href="SetReader.html"> SetReader class </a>
+<li><a href="TaxaBlock.html"> TaxaBlock class </a>
+<li><a href="TreesBlock.html"> TreesBlock class </a>
+<li><a href="XNexus.html"> XNexus class </a>
+</ul>
+
+</body>
+</html>
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/html/NexusClassLibrary.html
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/Makefile.am
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/Makefile.am 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/Makefile.am 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,10 @@
+noinst_LIBRARIES = libncl.a
+libncl_a_SOURCES = allelesblock.cpp assumptionsblock.cpp charactersblock.cpp \
+ datablock.cpp discretedatum.cpp discretematrix.cpp distancedatum.cpp \
+ distancesblock.cpp nexus.cpp nexusblock.cpp nexustoken.cpp setreader.cpp \
+ nxsstring.cpp nxsdate.cpp taxablock.cpp treesblock.cpp xnexus.cpp \
+ allelesblock.h assumptionsblock.h charactersblock.h \
+ datablock.h discretedatum.h discretematrix.h distancedatum.h \
+ distancesblock.h nexus.h nexusdefs.h nexustoken.h setreader.h \
+ nxsstring.h nxsdate.h taxablock.h treesblock.h xnexus.h
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/Makefile.am
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/Makefile.in
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/Makefile.in 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/Makefile.in 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,407 @@
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+SOURCES = $(libncl_a_SOURCES)
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+subdir = ncl-2.0/src
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_CLEAN_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+AR = ar
+ARFLAGS = cru
+libncl_a_AR = $(AR) $(ARFLAGS)
+libncl_a_LIBADD =
+am_libncl_a_OBJECTS = allelesblock.$(OBJEXT) \
+ assumptionsblock.$(OBJEXT) charactersblock.$(OBJEXT) \
+ datablock.$(OBJEXT) discretedatum.$(OBJEXT) \
+ discretematrix.$(OBJEXT) distancedatum.$(OBJEXT) \
+ distancesblock.$(OBJEXT) nexus.$(OBJEXT) nexusblock.$(OBJEXT) \
+ nexustoken.$(OBJEXT) setreader.$(OBJEXT) nxsstring.$(OBJEXT) \
+ nxsdate.$(OBJEXT) taxablock.$(OBJEXT) treesblock.$(OBJEXT) \
+ xnexus.$(OBJEXT)
+libncl_a_OBJECTS = $(am_libncl_a_OBJECTS)
+DEFAULT_INCLUDES = -I. -I$(srcdir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+ -o $@
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(libncl_a_SOURCES)
+DIST_SOURCES = $(libncl_a_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+ENT_FALSE = @ENT_FALSE@
+ENT_TRUE = @ENT_TRUE@
+EXEEXT = @EXEEXT@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+WX_CONFIG = @WX_CONFIG@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build_alias = @build_alias@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host_alias = @host_alias@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+noinst_LIBRARIES = libncl.a
+libncl_a_SOURCES = allelesblock.cpp assumptionsblock.cpp charactersblock.cpp \
+ datablock.cpp discretedatum.cpp discretematrix.cpp distancedatum.cpp \
+ distancesblock.cpp nexus.cpp nexusblock.cpp nexustoken.cpp setreader.cpp \
+ nxsstring.cpp nxsdate.cpp taxablock.cpp treesblock.cpp xnexus.cpp \
+ allelesblock.h assumptionsblock.h charactersblock.h \
+ datablock.h discretedatum.h discretematrix.h distancedatum.h \
+ distancesblock.h nexus.h nexusdefs.h nexustoken.h setreader.h \
+ nxsstring.h nxsdate.h taxablock.h treesblock.h xnexus.h
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ncl-2.0/src/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu ncl-2.0/src/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+clean-noinstLIBRARIES:
+ -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+libncl.a: $(libncl_a_OBJECTS) $(libncl_a_DEPENDENCIES)
+ -rm -f libncl.a
+ $(libncl_a_AR) libncl.a $(libncl_a_OBJECTS) $(libncl_a_LIBADD)
+ $(RANLIB) libncl.a
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/allelesblock.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/assumptionsblock.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/charactersblock.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/datablock.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/discretedatum.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/discretematrix.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/distancedatum.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/distancesblock.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/nexus.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/nexusblock.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/nexustoken.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/nxsdate.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/nxsstring.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/setreader.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/taxablock.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/treesblock.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/xnexus.Po at am__quote@
+
+.cpp.o:
+ at am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+ at am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ at am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+ at am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+uninstall-info-am:
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-noinstLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-exec install-exec-am install-info \
+ install-info-am install-man install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/allelesblock.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/allelesblock.cpp 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/allelesblock.cpp 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,2401 @@
+// OPEN ISSUES:
+// - variable alleles_fixed currently is not being used
+// - alleles_fixed should be an array of bool, since user can specify
+// allele labels for some loci and not others
+// - HandleTransposedMatrix function still needs to be written
+
+#include <iostream>
+#include <cstdio>
+
+#include "nexusdefs.h"
+#include "xnexus.h"
+#include "nexustoken.h"
+#include "nexus.h"
+#include "setreader.h"
+#include "taxablock.h"
+#include "discretedatum.h"
+#include "discretematrix.h"
+#include "charactersblock.h"
+#include "allelesblock.h"
+#include "assumptionsblock.h"
+
+using namespace std;
+
+/**
+ * @class AllelesBlock
+ * @file allelesblock.h
+ * @file allelesblock.cpp
+ * @author Paul O. Lewis
+ * @copyright Copyright © 1999. All Rights Reserved.
+ * @variable alleles_fixed [bool:private] if alleles_fixed is true, new alleles cannot be added
+ * @variable datapoint [datapoints:private] see enum datapoints for details
+ * @variable haploid [IntSet:protected] set of loci that are haploid
+ * @variable indivCount [int*:private] indivCount[i] is index of first individual in population i+1
+ * @see Nexus
+ * @see NexusBlock
+ * @see NexusReader
+ * @see NexusToken
+ * @see XNexus
+ *
+ * This class handles reading and storage for the Nexus block ALLELES.
+ * It is derived from CharactersBlock, and overrides the member functions
+ * Read and Reset, which are virtual functions in the base class.
+ *
+ * Because it is derived from the class CharactersBlock, this block
+ * uses the DiscreteMatrix class for storing the data, and this
+ * requires a little explanation. The DiscreteMatrix class is designed for
+ * storing an r X c array of integers. The way it is used here, the rows
+ * represent individuals and the columns loci. In order to store data for
+ * both genes at a given locus for diploid individuals, the integer stored
+ * is broken up into a higher-order word and a lower-order word. The macros
+ * HIWORD and LOWORD can be used to extract these two components from the
+ * integer value stored in the DiscreteMatrix structure. Note that this
+ * technique assumes integers are 4 bytes (or greater) in size, allowing
+ * 2 bytes of storage for each of the two allelic states stored. The maximum
+ * integer that can be stored in 2 bytes is 0xFF, or 255, which is thus
+ * the maximum number of alleles that can be defined for each locus.
+ *
+ * <p>The variable <b>gap</b> from the underlying CharactersBlock class
+ * has been reassigned to function as the separator character.
+ *
+ * <p>The array <b>indivCount</b> is used to store the row number of the
+ * first individual in the <i>next</i> population. Thus, the standard
+ * way to loop through all individuals in population i is:
+ * <pre>
+ * int numIndivs = ( i > 0 ? indivCount[i] - indivCount[i-1] : indivCount[i] );
+ * for( j = 0; j < numIndivs; j++ )
+ * {
+ * gene = GetGene( i, j, locus, 0 );
+ * if( gene < MAX_ALLELES ) {
+ * // do something with gene 0
+ * }
+ * else {
+ * // do nothing since gene 0 was missing data
+ * }
+ *
+ * if( !IsHaploid(locus) )
+ * {
+ * gene = GetGene( i, j, locus, 1 );
+ * if( gene < MAX_ALLELES ) {
+ * // do something with gene 1
+ * }
+ * else {
+ * // do nothing since gene 1 was missing data
+ * }
+ * }
+ * }
+ * </pre>
+ *
+ * <P> Below is a table showing the correspondence between the elements of
+ * an ALLELES block and the variables and member functions that can be used
+ * to access each piece of information stored.
+ *
+ * <p><table border=1>
+ * <tr>
+ * <th> Nexus command
+ * <th> Nexus subcommand
+ * <th> Data Members
+ * <th> Member Functions
+ * <tr>
+ * <td rowspan=3> DIMENSIONS
+ * <td> NEWPOPS
+ * <td> bool <a href="CharactersBlock.html#newtaxa">newtaxa</a>
+ * <td>
+ * <tr>
+ * <td> NPOP
+ * <td> int <a href="CharactersBlock.html#ntax">ntax</a> (see also <a href="CharactersBlock.html#ntaxTotal">ntaxTotal</a>)
+ * <td> int <a href="CharactersBlock.html#GetNTax">GetNTax()</a> (see also <a href="CharactersBlock.html#GetNumMatrixRows">GetNumMatrixRows()</a>)
+ * <tr>
+ * <td> NLOCI
+ * <td> int <a href="CharactersBlock.html#nchar">nchar</a> (see also <a href="CharactersBlock.html#ncharTotal">ncharTotal</a>)
+ * <td> int <a href="CharactersBlock.html#GetNChar">GetNChar()</a> (see also <a href="CharactersBlock.html#GetNumMatrixCols">GetNumMatrixCols()</a>)
+ * <tr>
+ * <td rowspan=9> FORMAT
+ * <td> DATAPOINT
+ * <td> datapoints <a href="#datapoint">datapoint</a>
+ * <td> int <a href="#GetDataPoint">GetDataPoint()</a>
+ * <tr>
+ * <td> RESPECTCASE
+ * <td> int <a href="CharactersBlock.html#respectingCase">respectingCase</a>
+ * <td> int <a href="CharactersBlock.html#IsRespectCase">IsRespectCase()</a>
+ * <tr>
+ * <td> MISSING
+ * <td> char <a href="CharactersBlock.html#missing">missing</a>
+ * <td> char <a href="CharactersBlock.html#GetMissingSymbol">GetMissingSymbol()</a>
+ * <tr>
+ * <td> SEPARATOR
+ * <td> char <a href="CharactersBlock.html#gap">gap</a>
+ * <td> char <a href="#GetSeparatorSymbol">GetSeparatorSymbol()</a>
+ * <tr>
+ * <td> EQUATE
+ * <td> AssocList <a href="CharactersBlock.html#equates">equates</a>
+ * <td> char* <a href="CharactersBlock.html#GetEquateKey">GetEquateKey( int k )</a>
+ * <br> char* <a href="CharactersBlock.html#GetEquateValue">GetEquateValue( int k )</a>
+ * <br> int <a href="CharactersBlock.html#GetNumEquates">GetNumEquates()</a>
+ * <tr>
+ * <td> (NO)LABELS
+ * <td> int <a href="CharactersBlock.html#labels">labels</a>
+ * <td> int <a href="CharactersBlock.html#IsLabels">IsLabels()</a>
+ * <tr>
+ * <td> TRANSPOSE
+ * <td> int <a href="CharactersBlock.html#transposing">transposing</a>
+ * <td> int <a href="CharactersBlock.html#IsTranspose">IsTranspose()</a>
+ * <tr>
+ * <td> INTERLEAVE
+ * <td> int <a href="CharactersBlock.html#interleaving">interleaving</a>
+ * <td> int <a href="CharactersBlock.html#IsInterleave">IsInterleave()</a>
+ * <tr>
+ * <td> (NO)TOKENS
+ * <td> int <a href="CharactersBlock.html#tokens">tokens</a>
+ * <td> int <a href="CharactersBlock.html#IsTokens">IsTokens()</a>
+ * <tr>
+ * <td rowspan=1 colspan=2 align=left> ELIMINATE
+ * <td> int* <a href="CharactersBlock.html#eliminated">eliminated</a>
+ * <td> int <a href="CharactersBlock.html#IsEliminated">IsEliminated( int origCharIndex )</a>
+ * <br> int <a href="CharactersBlock.html#GetNumEliminated">GetNumEliminated()</a>
+ * <tr>
+ * <td rowspan=1 colspan=2 align=left> MATRIX
+ * <td> DiscreteMatrix* <a href="CharactersBlock.html#matrix">matrix</a>
+ * <td> char <a href="#GetState">GetState( int i, int j, int k = 0 )</a>
+ * <br> int <a href="#GetInternalRepresentation">GetInternalRepresentation( int i, int j, int k = 0 )</a>
+ * <br> int <a href="#GetNumStates">GetNumStates( int i, int j )</a>
+ * <br> int <a href="#GetNumMatrixRows">GetNumMatrixRows()</a>
+ * <br> int <a href="#GetNumMatrixCols">GetNumMatrixCols()</a>
+ * <br> int <a href="#IsPolymorphic">IsPolymorphic( int i, int j )</a>
+ * </table>
+ */
+
+/**
+ * @enumeration
+ * @enumitem standard [1] means standard datapoint
+ * @enumitem fraglen [2] means fraglen datapoint
+ *
+ * For use with the variable datapoint. Default is 1 (standard datapoint).
+ */
+
+/**
+ * @constructor
+ *
+ * Performs the following initializations:
+ * <table>
+ * <tr><th align="left">Variable <th> <th align="left"> Initial Value
+ * <tr><td> alleles_fixed <td>= <td> false
+ * <tr><td> datapoint <td>= <td> AllelesBlock::standard
+ * <tr><td> gap <td>= <td> '/'
+ * <tr><td> id <td>= <td> "ALLELES"
+ * <tr><td> indivCount <td>= <td> NULL
+ * <tr><td> labels <td>= <td> false
+ * <tr><td> respectingCase <td>= <td> true
+ * <tr><td> tokens <td>= <td> true
+ * </table>
+ */
+AllelesBlock::AllelesBlock( TaxaBlock& tb, AssumptionsBlock& ab )
+ : CharactersBlock( tb, ab )
+{
+ // Thinking of changing any of these defaults?
+ // If so, do it also in the Reset function.
+ //
+ alleles_fixed = false;
+ datapoint = standard;
+ gap = '/';
+ id = "ALLELES";
+ labels = false;
+ respectingCase = true;
+ tokens = true;
+ indivCount = NULL;
+}
+
+/**
+ * @destructor
+ *
+ * Frees memory allocated for the indivCount array.
+ */
+AllelesBlock::~AllelesBlock()
+{
+ if( indivCount != NULL )
+ delete [] indivCount;
+}
+
+/**
+ * @method AlleleCount [int:public]
+ * @param allele [int] the allele in question
+ * @param locus [int] the locus in question, in range [0..nloci)
+ * @param pop [int] the population in question, in range [0..npops) (default value -1)
+ *
+ * Returns the number of genes that are identical to allele.
+ * Assumes locus has not been excluded. If no population is
+ * supplied, sums across all active populations. If population
+ * is supplied, count will only be for that population. Assumes
+ * that if population is specified, that population is not one
+ * currently deleted by the user.
+ *
+ * Note: this is a relatively slow function because an allele count
+ * is performed for each call.
+ */
+int AllelesBlock::AlleleCount( int allele, int locus, int pop /* = -1 */ )
+{
+ assert( locus >= 0 && locus < nchar );
+ assert( pop > -2 && pop < ntax );
+ assert( !IsExcluded(locus) );
+
+ bool do_one_pop = ( pop >= 0 );
+ assert( !( do_one_pop && IsDeleted(pop) ) );
+
+ int i, j, gene;
+ int allele_count = 0;
+
+ i = ( do_one_pop ? pop : 0 );
+ for( ; i < ntax; i++ )
+ {
+ if( do_one_pop && i > pop )
+ break;
+ if( IsDeleted(i) ) continue;
+ int numIndivs = ( i > 0 ? indivCount[i] - indivCount[i-1] : indivCount[i] );
+ for( j = 0; j < numIndivs; j++ )
+ {
+ gene = GetGene( i, j, locus, 0 );
+ if( gene < MAX_ALLELES ) {
+ if( gene == allele )
+ allele_count++;
+ }
+
+ if( !IsHaploid(locus) )
+ {
+ gene = GetGene( i, j, locus, 1 );
+ if( gene < MAX_ALLELES ) {
+ if( gene == allele )
+ allele_count++;
+ }
+ }
+ }
+ }
+
+ return allele_count;
+}
+
+/**
+ * @method AlleleFrequency [double:public]
+ * @param allele [int] the allele in question
+ * @param locus [int] the locus in question, in range (0..nchar]
+ * @param pop [int] the population in question, in range (0..ntax] (default is -1)
+ * @throws XAllMissingData
+ *
+ * Returns observed frequency (expressed as a proportion)
+ * of the allele specified at the specified locus in the specified
+ * population. Assumes locus has not been excluded. If population
+ * not specified, allele frequency over all populations except
+ * those currently deleted will be returned. Assumes
+ * that if population is specified, that population is not one
+ * currently deleted by the user. Throws an XAllMissingData
+ * exception if the total number of alleles of all types is zero.
+ *
+ * Note: this is a relatively slow function because an allele count
+ * is performed for each call.
+ */
+double AllelesBlock::AlleleFrequency( int allele, int locus, int pop /* = -1 */ )
+{
+ assert( locus >= 0 && locus < nchar );
+ assert( pop > -2 && pop < ntax );
+ assert( !IsExcluded(locus) );
+
+ bool do_one_pop = ( pop >= 0 );
+ assert( !( do_one_pop && IsDeleted(pop) ) );
+
+ int i, j, gene;
+ int total = 0;
+ int allele_count = 0;
+
+ i = ( do_one_pop ? pop : 0 );
+ for( i; i < ntax; i++ )
+ {
+ if( do_one_pop && i > pop )
+ break;
+ if( IsDeleted(i) ) continue;
+ int numIndivs = ( i > 0 ? indivCount[i] - indivCount[i-1] : indivCount[i] );
+ for( j = 0; j < numIndivs; j++ )
+ {
+ gene = GetGene( i, j, locus, 0 );
+ if( gene < MAX_ALLELES ) {
+ total++;
+ if( gene == allele )
+ allele_count++;
+ }
+
+ if( !IsHaploid(locus) )
+ {
+ gene = GetGene( i, j, locus, 1 );
+ if( gene < MAX_ALLELES ) {
+ total++;
+ if( gene == allele )
+ allele_count++;
+ }
+ }
+ }
+ }
+
+ if( total == 0 )
+ throw XAllMissingData();
+
+ double freq = (double)allele_count / (double)total;
+
+ return freq;
+}
+
+/**
+ * @method DebugShowMatrix [int:protected]
+ * @param out [ostream&] output stream on which to print matrix
+ * @param marginText [char*] nxsstring to print first on each line
+ *
+ * Provides a dump of the contents of the matrix variable. Useful for testing
+ * whether data is being read as expected. The default for marginText is NULL,
+ * which has the effect of placing the matrix output flush left. If each line
+ * of output should be prefaced with a tab character, specify marginText = "\t".
+ */
+void AllelesBlock::DebugShowMatrix( std::ostream& out, char* marginText /* = NULL */ )
+{
+ int pop, indiv, locus;
+
+ for( pop = 0; pop < ntax; pop++ )
+ {
+ if( marginText != NULL )
+ out << marginText;
+
+ int origPopIndex = GetOrigTaxonIndex(pop); // this function still needs to be written
+ nxsstring currTaxonLabel = taxa.GetTaxonLabel( origPopIndex );
+ out << currTaxonLabel << ":" << endl;
+
+ int last = indivCount[pop];
+ if( pop > 0 )
+ last -= indivCount[pop-1];
+ for( indiv = 0; indiv < last; indiv++ )
+ {
+ if( marginText != NULL )
+ out << marginText;
+ out << setw(5) << (indiv+1);
+
+ for( locus = 0; locus < nchar; locus++ )
+ {
+ int gene0 = GetGene( pop, indiv, locus, 0 );
+ out << " ";
+ if( gene0 == 0xff )
+ out << "?";
+ else
+ out << gene0;
+
+ if( !IsHaploid(locus) )
+ {
+ int gene1 = GetGene( pop, indiv, locus, 1 );
+ out << "/";
+ if( gene1 == 0xff )
+ out << "?";
+ else
+ out << gene1;
+ }
+ }
+ out << endl;
+ }
+ }
+}
+
+/**
+ * @method FocalAlleleCount [void:public]
+ * @param focal_allele [int] the allele to focus on (i.e., A)
+ * @param locus [int] the locus in question, in range (0..nchar]
+ * @param pop [int] the population in question, in range (0..ntax]
+ * @param n_AA [int&] the place to store the count of AA genotypes
+ * @param n_Aa [int&] the place to store the count of Aa genotypes
+ * @param n_aa [int&] the place to store the count of aa genotypes
+ * @throws XAllMissingData
+ *
+ * If the focal_allele is "A", then this function counts up the
+ * number of "AA", "Aa", and "aa" genotypes and returns these counts
+ * in n_AA, n_Aa, and n_aa, respectively. It is assumed that locus
+ * is not excluded and pop is not deleted. It is also assumed that
+ * the data for locus are diploid.
+ *
+ * Note: this is a relatively slow function because genotypes are counted
+ * anew each time this function is called.
+ */
+void AllelesBlock::FocalAlleleCount( int focal_allele, int locus, int pop
+ , int& n_AA, int& n_Aa, int& n_aa )
+{
+ assert( locus >= 0 && locus < nchar );
+ assert( pop >= 0 && pop < ntax );
+ assert( !IsDeleted(pop) );
+ assert( !IsExcluded(locus) );
+ assert( !IsHaploid(locus) );
+
+ int j, gene0, gene1;
+ n_AA = n_Aa = n_aa = 0;
+
+ int numIndivs = ( pop > 0 ? indivCount[pop] - indivCount[pop-1] : indivCount[pop] );
+ for( j = 0; j < numIndivs; j++ )
+ {
+ gene0 = GetGene( pop, j, locus, 0 );
+ gene1 = GetGene( pop, j, locus, 1 );
+ if( gene0 == MAX_ALLELES || gene1 == MAX_ALLELES )
+ continue;
+ if( gene0 == focal_allele && gene1 == focal_allele )
+ n_AA++;
+ else if( gene0 == focal_allele && gene1 != focal_allele )
+ n_Aa++;
+ else if( gene0 != focal_allele && gene1 == focal_allele )
+ n_Aa++;
+ else
+ n_aa++;
+ }
+}
+
+/**
+ * @method GenotypeCount [int:public]
+ * @param allele1 [int] one of the two alleles in question
+ * @param allele2 [int] the other of the alleles in question
+ * @param locus [int] the locus in question, in range (0..nchar]
+ * @param pop [int] the population in question, in range (0..ntax] (default is -1)
+ * @throws XAllMissingData
+ *
+ * Returns the number of genotypes for which one gene is
+ * the same as allele1 and the other is the same as allele2.
+ * The order in which alleles are supplied does not matter
+ * (i.e., the number of heterozygotes having genotype 1/2
+ * could be queried in either of the following ways:
+ * <pre>
+ * GenotypeCount( 1, 2, pop, locus )
+ * GenotypeCount( 2, 1, pop, locus )
+ * </pre>
+ * <p>Assumes locus has not been excluded and data is
+ * diploid (for haploid data use AlleleCount instead).
+ * If population is not specified, returns count over all
+ * populations not currently deleted, otherwise returns count for
+ * specified population only. Assumes that if population is specified,
+ * that population is not one currently deleted by the user.
+ * Throws XAllMissingData if only missing data encountered
+ * in the populations considered for the specified locus.
+ *
+ * Note: this is a relatively slow function because a genotype count
+ * is performed for each call.
+ */
+int AllelesBlock::GenotypeCount( int allele1, int allele2, int locus, int pop /* = -1 */ )
+{
+ assert( locus >= 0 && locus < nchar );
+ assert( pop > -2 && pop < ntax );
+ assert( !IsExcluded(locus) );
+ assert( !IsHaploid(locus) );
+
+ bool do_one_pop = ( pop >= 0 );
+ assert( !( do_one_pop && IsDeleted(pop) ) );
+
+ int i, j, gene0, gene1;
+ int genotype_count = 0;
+
+ i = ( do_one_pop ? pop : 0 );
+ for( ; i < ntax; i++ )
+ {
+ if( do_one_pop && i > pop )
+ break;
+ if( IsDeleted(i) ) continue;
+ int numIndivs = ( i > 0 ? indivCount[i] - indivCount[i-1] : indivCount[i] );
+ for( j = 0; j < numIndivs; j++ )
+ {
+ gene0 = GetGene( i, j, locus, 0 );
+ gene1 = GetGene( i, j, locus, 1 );
+ if( gene0 < MAX_ALLELES && gene1 < MAX_ALLELES )
+ {
+ if( gene0 == allele1 && gene1 == allele2 )
+ genotype_count++;
+ else if( gene0 == allele2 && gene1 == allele1 )
+ genotype_count++;
+ }
+ }
+ }
+
+ return genotype_count;
+}
+
+/**
+ * @method GetLocusLabel [int:public]
+ * @param locus [int] the locus in the range [0..nloci)
+ *
+ * Returns the nxsstring label for the locus requested.
+ */
+nxsstring AllelesBlock::GetLocusLabel( int locus )
+{
+ assert( locus >= 0 );
+ assert( locus < nchar );
+ return charLabels[locus];
+}
+
+/**
+ * @method GetAlleleLabel [int:public]
+ * @param locus [int] the locus in the range [0..nloci)
+ * @param allele [int] the allele
+ *
+ * Returns the nxsstring label for the allele requested.
+ */
+nxsstring AllelesBlock::GetAlleleLabel( int locus, int allele )
+{
+ nxsstring allele_label = "no-name";
+ LabelListBag::const_iterator cib = charStates.find(locus);
+ if( cib != charStates.end() )
+ {
+ int ns = (*cib).second.size();
+ if( allele >= 0 && allele < ns )
+ allele_label = (*cib).second[allele];
+ }
+ return allele_label;
+}
+
+/**
+ * @method GetIndivCount [int:public]
+ * @param pop [int] the population
+ *
+ * Returns value of indivCount[pop], which is the row number of
+ * the first individual in population pop+1.
+ */
+int AllelesBlock::GetIndivCount( int pop )
+{
+ return indivCount[pop];
+}
+
+/**
+ * @method GetGene [int:public]
+ * @param pop [int] the population
+ * @param indiv [int] the individual (0-offset relative to first individual in population)
+ * @param locus [int] the locus
+ * @param gene [int] if 0, low-order word returned; high-order word returned otherwise
+ *
+ * Gets the low-order 2-byte word (if last parameter is 0) or
+ * the high-order 2-byte word (if last parameter is 1) and
+ * returns this as an int value. If the word returned is
+ * exactly 0xff (= 255), this should be interpreted as missing
+ * data. The macro MAX_ALLELES (defined in the allelesblock.h header file)
+ * equals 0xff and can thus be used to test the return value.
+ */
+int AllelesBlock::GetGene( int pop, int indiv, int locus, int gene )
+{
+ //typedef long LONG;
+ //typedef unsigned long DWORD;
+ //typedef unsigned short WORD;
+ //#define LOWORD(l) ((WORD)(l))
+ //#define HIWORD(l) ((WORD)(((DWORD)(l) >> 16) & 0xFFFF))
+ //int szWORD = sizeof(unsigned short);
+ //int szDWORD = sizeof(unsigned long);
+ //int szLONG = sizeof(long);
+ //int sz_int = sizeof(int);
+ //cerr << szWORD << "," << szDWORD << "," << szLONG << "," << sz_int << endl;
+ int gene_val;
+ int row = indiv + ( pop > 0 ? indivCount[pop-1] : 0 );
+ assert( !matrix->IsGap( row, locus ) );
+ if( matrix->IsMissing( row, locus ) )
+ gene_val = 0xff;
+ else {
+ if( gene == 0 )
+ gene_val = (unsigned short)( matrix->GetState( row, locus ) );
+ else
+ gene_val = (unsigned short)( ( (unsigned long)( matrix->GetState( row, locus ) ) >> 16 ) & 0xFFFF );
+ }
+ return gene_val;
+}
+
+/**
+ * @method GetNumHaploid [int:public]
+ *
+ * Returns number of items in haploid vector. Number returned does
+ * take account of eliminated loci (i.e., eliminated haploid loci are
+ * not included in the tally) but not excluded ones.
+ */
+int AllelesBlock::GetNumHaploid()
+{
+ if( haploid.empty() )
+ return 0;
+
+ if( GetNumEliminated() == 0 )
+ return haploid.size();
+
+ // Some loci have been eliminated, so must check each
+ // one listed in haploid vector to make sure it was not
+ // eliminated
+ //
+ int n = 0;
+ IntSet::const_iterator i = haploid.begin();
+ for( ; i != haploid.end(); ++i ) {
+ int origIndex = (*i);
+ if( IsEliminated(origIndex) )
+ continue;
+ n++;
+ }
+ return n;
+}
+
+/**
+ * @method HandleAllele [int:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @param j [int] the locus index, in range [0..nchar)
+ * @throws XNexus
+ *
+ * Called from HandleNextGenotype to read in the next state when 'tokens'
+ * is in effect.
+ * If a LOCUSALLELELABELS or ALLELELABELS command was included in the ALLELES
+ * block, HandleTokenState looks up the token in charStates to make
+ * sure it is a valid state, then returns the allele's value (0, 1, 2, ...).
+ * If no list of valid allelic states was prespecified, HandleTokenState has
+ * no way to check the validity of the allele and simply adds it to charStates,
+ * returning the allele's value (0, 1, 2, ...).
+ * Note: HandleTokenState does NOT handle adding the allele's value to the
+ * matrix. Save the return value, let's call it x, and use the following
+ * command to add it to matrix: matrix->AddState( i, j, x ).
+ */
+int AllelesBlock::HandleAllele( NexusToken& token, int j )
+{
+ int k = 0;
+
+ // First check to see if token equals the missing data symbol.
+ // If so, return 0xFF to indicate that missing data was specified.
+ //
+ if( token.GetTokenLength() == 1 && token.GetToken()[0] == missing )
+ return 0xff;
+
+ // If alleles were prespecified in ALLELELABELS or LOCUSALLELELABELS command,
+ // check the current token against the list of valid allele labels
+ // If alleles were not prespecified, so go ahead and add current token to the
+ // list of valid alleles for locus j, obtaining the allele's integer designation
+ // in the process to return to the calling function.
+ //
+
+ // Check to see if any alleles are listed for locus j in charStates
+ //
+ if( charStates.find(j) == charStates.end() )
+ {
+ if( alleles_fixed ) {
+ errormsg = "No alleles were defined for character ";
+ errormsg += ( 1 + GetOrigCharIndex(j) );
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ else {
+ charStates[j].push_back( token.GetToken() );
+ return 0; // first allele in the list
+ }
+ }
+
+ // Some alleles have already been added to the list of alleles stored in
+ // charStates for locus j. Check to see if token is one of these.
+ //
+ LabelListBag::const_iterator bagIter = charStates.find(j);
+ int nAlleles = (*bagIter).second.size();
+ LabelList::const_iterator ci_begin = (*bagIter).second.begin();
+ LabelList::const_iterator ci_end = (*bagIter).second.end();
+ nxsstring t = token.GetToken( respectingCase );
+ LabelList::const_iterator cit;
+ if( respectingCase )
+ cit = find( ci_begin, ci_end, t );
+ else
+ cit = find_if( ci_begin, ci_end, bind2nd( stri_equal(), t ) );
+
+ if( cit == ci_end )
+ {
+ if( alleles_fixed ) {
+ errormsg = "Allele ";
+ errormsg += t;
+ errormsg += " not defined for locus ";
+ errormsg += ( 1 + GetOrigCharIndex(j) );
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ else {
+ charStates[j].push_back( token.GetToken() );
+ return nAlleles;
+ }
+ }
+
+ // ok, the allele has been identified, so return the alleles's internal
+ // representation. That is, if the list of allele labels was
+ // "fast medium slow" and "slow" was specified in the data file,
+ // state saved in matrix would be 2 (it would be 1 if "medium" were
+ // specified in the data file, and 0 if "fast" were specified in the
+ // data file).
+ k = ( cit - ci_begin );
+
+ return k;
+}
+
+/**
+ * @method HandleFormat [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * Called when FORMAT command needs to be parsed from within the
+ * DIMENSIONS block. Deals with everything after the token FORMAT
+ * up to and including the semicolon that terminates the FORMAT
+ * command.
+ */
+void AllelesBlock::HandleFormat( NexusToken& token )
+{
+ bool standardDataTypeAssumed = false;
+ bool ignoreCaseAssumed = false;
+
+ for(;;)
+ {
+ token.GetNextToken();
+
+ if( token.Equals("DATAPOINT") )
+ {
+
+ // this should be an equals sign
+ token.GetNextToken();
+ if( !token.Equals("=") ) {
+ errormsg = "Expecting '=' after keyword DATAPOINT but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // this should be one of the following: STANDARD, FRAGLEN
+ token.GetNextToken();
+ if( token.Equals("STANDARD") )
+ datapoint = standard;
+ else if( token.Equals("FRAGLEN") )
+ datapoint = fraglen;
+ else {
+ errormsg = token.GetToken();
+ errormsg += " is not a valid DATAPOINT within a ";
+ errormsg += id;
+ errormsg += " block";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ if( standardDataTypeAssumed && datapoint != standard ) {
+ errormsg = "DATAPOINT must be specified first in FORMAT command";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ if( datapoint == fraglen )
+ tokens = true;
+ }
+
+ else if( token.Equals("RESPECTCASE") )
+ {
+ if( ignoreCaseAssumed ) {
+ errormsg = "RESPECTCASE must be specified before MISSING and SEPARATOR in FORMAT command";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ standardDataTypeAssumed = true;
+ respectingCase = true;
+ }
+
+ else if( token.Equals("MISSING") )
+ {
+ // this should be an equals sign
+ token.GetNextToken();
+ if( !token.Equals("=") ) {
+ errormsg = "Expecting '=' after keyword MISSING but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // this should be the missing data symbol (single character)
+ token.GetNextToken();
+ if( token.GetTokenLength() != 1 ) {
+ errormsg = "MISSING symbol should be a single character, but ";
+ errormsg += token.GetToken();
+ errormsg += " was specified";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ else if( token.IsPunctuationToken() && !token.IsPlusMinusToken() ) {
+ errormsg = "MISSING symbol specified cannot be a punctuation token (";
+ errormsg += token.GetToken();
+ errormsg += " was specified)";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ else if( token.IsWhitespaceToken() ) {
+ errormsg = "MISSING symbol specified cannot be a whitespace character (";
+ errormsg += token.GetToken();
+ errormsg += " was specified)";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ missing = token.GetToken()[0];
+
+ ignoreCaseAssumed = true;
+ standardDataTypeAssumed = true;
+ }
+
+ else if( token.Equals("NOSEPARATOR") )
+ {
+ gap = '\0';
+ }
+
+ else if( token.Equals("SEPARATOR") )
+ {
+ // this should be an equals sign
+ token.GetNextToken();
+ if( !token.Equals("=") ) {
+ errormsg = "Expecting '=' after keyword SEPARATOR but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // this should be the separator symbol (single character)
+ token.GetNextToken();
+ if( token.GetTokenLength() != 1 ) {
+ errormsg = "SEPARATOR symbol should be a single character, but ";
+ errormsg += token.GetToken();
+ errormsg += " was specified";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ else if( token.IsPunctuationToken() && !token.IsPlusMinusToken() && !token.Equals("/") ) {
+ errormsg = "SEPARATOR symbol specified cannot be a punctuation token (";
+ errormsg += token.GetToken();
+ errormsg += " was specified)";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ else if( token.IsWhitespaceToken() ) {
+ errormsg = "SEPARATOR symbol specified cannot be a whitespace character (";
+ errormsg += token.GetToken();
+ errormsg += " was specified)";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ gap = token.GetToken()[0];
+
+ ignoreCaseAssumed = true;
+ standardDataTypeAssumed = true;
+ }
+
+ else if( token.Equals("EQUATE") )
+ {
+ // this should be an equals sign
+ token.GetNextToken();
+ if( !token.Equals("=") ) {
+ errormsg = "Expecting '=' after keyword EQUATE but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // this should be a double-quote character
+ token.GetNextToken();
+ if( !token.Equals("\"") ) {
+ errormsg = "Expecting '\"' after keyword EQUATE but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // loop until second double-quote character is encountered
+ for(;;)
+ {
+ token.GetNextToken();
+ if( token.Equals("\"") )
+ break;
+
+ // if token is not a double-quote character, then it must be
+ // an equate token (i.e., the token to be replaced in
+ // the data matrix)
+
+ // check for bad choice of equate symbol
+ if( token.GetTokenLength() == 1 )
+ {
+ nxsstring t = token.GetToken();
+ char ch = t[0];
+ bool badEquateSymbol = false;
+
+ // the character '^' cannot be an equate symbol
+ if( ch == '^' )
+ badEquateSymbol = true;
+
+ // equate symbols cannot be punctuation (except for + and -)
+ if( token.IsPunctuationToken() && !token.IsPlusMinusToken() )
+ badEquateSymbol = true;
+
+ // equate symbols cannot be same as missing or separator
+ if( ch == missing || ch == gap )
+ badEquateSymbol = true;
+
+ if( badEquateSymbol ) {
+ errormsg = "EQUATE symbol specified (";
+ errormsg += token.GetToken();
+ errormsg += ") is not valid; must not be same as missing, \nseparator, or any of the following: ()[]{}/\\,;:=*'\"`<>^";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ }
+
+ nxsstring k = token.GetToken();
+
+ // this should be an equals sign
+ token.GetNextToken();
+ if( !token.Equals("=") ) {
+ errormsg = "Expecting '=' in EQUATE definition but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // this should be the token to be substituted in for the equate symbol
+ token.SetLabileFlagBit( NexusToken::parentheticalToken );
+ token.SetLabileFlagBit( NexusToken::curlyBracketedToken );
+ token.GetNextToken();
+ nxsstring v = token.GetToken();
+
+ // add the new equate association to the equates list
+ equates[k] = v;
+ }
+
+ standardDataTypeAssumed = true;
+ }
+
+ else if( token.Equals("LABELS") )
+ {
+ labels = true;
+ standardDataTypeAssumed = true;
+ }
+
+ else if( token.Equals("NOLABELS") )
+ {
+ labels = false;
+ standardDataTypeAssumed = true;
+ }
+
+ else if( token.Equals("TRANSPOSE") )
+ {
+ transposing = true;
+ standardDataTypeAssumed = true;
+ }
+
+ else if( token.Equals("INTERLEAVE") )
+ {
+ interleaving = true;
+ standardDataTypeAssumed = true;
+ }
+
+ else if( token.Equals("TOKENS") )
+ {
+ tokens = true;
+ standardDataTypeAssumed = true;
+ }
+
+ else if( token.Equals("NOTOKENS") )
+ {
+ tokens = false;
+ standardDataTypeAssumed = true;
+ }
+
+ else if( token.Equals(";") ) {
+ break;
+ }
+
+ else {
+ errormsg = "Unrecognized keyword (";
+ errormsg += token.GetToken();
+ errormsg += ") encountered in FORMAT command";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ }
+}
+
+/**
+ * @method HandleHaploid [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ *
+ * Called when HAPLOID command needs to be parsed from within the
+ * ALLELES block. Deals with everything after the token HAPLOID
+ * up to and including the semicolon that terminates the HAPLOID
+ * command. Any character numbers or ranges of character numbers
+ * specified are stored in the IntSet haploid, which is empty
+ * until a HAPLOID command is encountered, if ever. Note that
+ * like all sets the character ranges are adjusted so that their
+ * offset is 0. For example, given "haploid 4-7;" in the data
+ * file, the haploid list would contain the values 3, 4, 5,
+ * and 6 (not 4, 5, 6, and 7).
+ */
+void AllelesBlock::HandleHaploid( NexusToken& token )
+{
+ // construct an object of type SetReader, then call its run function
+ // to store the set in the haploid set
+ //
+ SetReader( token, ncharTotal, haploid, *this, SetReader::charset ).Run();
+
+ //OPEN ISSUE: perhaps it is better to just create a local
+ // haploid set, fill it using the above line, then translate
+ // that to a bool array for use from this point on
+}
+
+/**
+ * @method HandleMatrix [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * Called when MATRIX command needs to be parsed from within the
+ * ALLELES block. Deals with everything after the token MATRIX
+ * up to and including the semicolon that terminates the MATRIX
+ * command.
+ */
+void AllelesBlock::HandleMatrix( NexusToken& token )
+{
+ int i, j, k;
+
+ if( transposing ) {
+ errormsg = "Sorry, transposed ALLELES block matrix not supported at this time";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ if( datapoint == fraglen ) {
+ errormsg = "Sorry, fraglen datapoint in ALLELES block not supported at this time";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ if( ntaxTotal == 0 )
+ ntaxTotal = taxa.GetNumTaxonLabels();
+
+ if( ntax == 0 ) {
+ errormsg = "Cannot create ALLELES block matrix: there are 0 populations specified";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ if( nchar == 0 ) {
+ errormsg = "Cannot create ALLELES block matrix: there are 0 loci specified";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // create a matrix to begin with, we will need to expand it as we go
+ // since there will almost always be more than one individual per population
+ if( matrix != NULL )
+ delete matrix;
+ matrix = new DiscreteMatrix( ntax, nchar );
+
+ // Allocate memory for (and initialize) the arrays activeTaxon and activeChar.
+ // All loci (i.e., "characters") and all populations (i.e., "taxa") are initially active.
+ //
+ activeTaxon = new bool[ntax];
+ for( i = 0; i < ntax; i++ )
+ activeTaxon[i] = true;
+
+ activeChar = new bool[nchar];
+ for( j = 0; j < nchar; j++ )
+ activeChar[j] = true;
+
+ // Allocate memory for (and initialize) the array indivCount
+ //
+ indivCount = new int[ntax];
+ for( i = 0; i < ntax; i++ )
+ indivCount[i] = 0;
+
+ // The value of ncharTotal is normally identical to the value of nchar specified
+ // in the ALLELES block DIMENSIONS command. If an ELIMINATE command is
+ // processed, however, nchar < ncharTotal. Note that the ELIMINATE command
+ // will have already been read by now, and the ELIMINATEd locus numbers
+ // will be stored in the array eliminated.
+ //
+ if( charPos != NULL )
+ delete [] charPos;
+ charPos = new int[ncharTotal];
+
+ k = 0;
+ for( j = 0; j < ncharTotal; j++ ) {
+ if( IsEliminated(j) )
+ charPos[j] = -1;
+ else
+ charPos[j] = k++;
+ }
+
+ // The value of ntaxTotal equals the number of taxa specified in the
+ // TAXA block, whereas ntax equals the number of taxa specified in
+ // the DIMENSIONS command of the ALLELES block. These two numbers
+ // will be identical unless some taxa have been left out of the MATRIX
+ // command of the ALLELES block, in which case ntax < ntaxTotal. We
+ // haven't yet read the MATRIX however, so for now we just initialize
+ // the taxonPos array to -1.
+ //
+ if( taxonPos != NULL )
+ delete [] taxonPos;
+ taxonPos = new int[ntaxTotal];
+ for( i = 0; i < ntaxTotal; i++ )
+ taxonPos[i] = -1;
+
+ // HandleTransposedMatrix and HandleStdMatrix both take care of
+ // reading the semicolon that terminates the MATRIX command
+ //
+ if( transposing )
+ HandleTransposedMatrix( token );
+ else
+ HandleStdMatrix( token );
+
+ // If we've gotten this far, presumably it is safe to
+ // tell the ASSUMPTIONS block that were ready to take on
+ // the responsibility of being the current character-containing
+ // block (to be consulted if characters are excluded or included)
+ assumptionsBlock.SetCallback(this);
+}
+
+/**
+ * @method HandleNextGenotype [bool:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @param i [int] the index of the row of the data matrix where this genotype should be stored
+ * @param locus [int] the (original) locus index, in range [0..ncharTotal)
+ * @param stopOnNewline [bool] if interleaving, stop on encountering newline character (true by default)
+ * @throws XNexus
+ *
+ * Called from HandleStdMatrix or HandleTransposedMatrix function
+ * to read in the next genotype. Always returns true except in the
+ * following cases, in which case it returns false:
+ * <ul>
+ * <li>if in interleave mode and a newline character is encountered
+ * before any characters of the next token are read (unless
+ * stopOnNewline is false)
+ * <li>if a comma, colon or semicolon is encountered before any
+ * characters of the next token are read
+ * </ul>
+ * The row index (i) is the absolute row number into the matrix. The row
+ * number into the matrix is indivCount[i-1] + j (if i > 0), where j is the
+ * position of an individual relative to the first individual in population
+ * i (j = 0, 1, ...).
+ */
+bool AllelesBlock::HandleNextGenotype( NexusToken& token, int i, int locus
+ , bool stopOnNewline /* = true */ )
+{
+ int x, y;
+
+ // It is possible that locus currChar has been ELIMINATEd, in
+ // which case we need to go through the motions of reading in the
+ // data but we don't store it. The variable k will be our guide
+ // when it comes time to store data since k will be -1 for
+ // characters that were ELIMINATEd and will be set to the correct
+ // row for characters that have not been ELIMINATEd.
+ //
+ int k = charPos[locus];
+
+ // This should be the genotype for population i, individual j, and locus k
+ // Note that if this is the first individual (i.e., j == 0) and the matrix
+ // is interleaved, we need to ignore leading newline characters since
+ // the population label is normally placed on the line above the data
+ // for the first individual.
+ //
+ token.SetSpecialPunctuationCharacter( gap );
+ if( gap != '\0' )
+ token.SetLabileFlagBit( NexusToken::useSpecialPunctuation );
+ if( interleaving && stopOnNewline )
+ token.SetLabileFlagBit( NexusToken::newlineIsToken );
+ if( !tokens )
+ token.SetLabileFlagBit( NexusToken::singleCharacterToken );
+ token.SetLabileFlagBit( NexusToken::parentheticalToken );
+ token.SetLabileFlagBit( NexusToken::curlyBracketedToken );
+ token.GetNextToken();
+
+ if( interleaving && token.AtEOL() )
+ return false;
+
+ if( token.Equals(",") || token.Equals(";") || token.Equals(":") )
+ return false;
+
+ // Allele should not be a punctuation character
+ //
+ if( token.IsPunctuationToken() ) {
+ errormsg = "Punctuation character (";
+ errormsg += token.GetToken();
+ errormsg += ") found where allele name expected";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // Make sure we didn't run out of file
+ //
+ if( token.AtEOF() ) {
+ errormsg = "Unexpected end of file encountered";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // If we didn't run out of file, I see no reason why we should
+ // have a zero-length token on our hands
+ assert( token.GetTokenLength() > 0 );
+
+ // We've read in the allele now, so if this locus has been
+ // ELIMINATEd, we want to skip the part that actually saves it
+ //
+ if( k >= 0 )
+ {
+ // see if any equate macros apply
+ //
+ nxsstring skey = nxsstring( token.GetToken( respectingCase ) );
+ AssocList::iterator p = equates.find( skey );
+ if( p != equates.end() ) {
+ nxsstring sval = (*p).second;
+ token.ReplaceToken( sval.c_str() );
+ }
+
+ // token should be in one of the following forms: "{" "a" "bb"
+ //
+ int polymorphism = token.Equals("(");
+ int uncertainty = token.Equals("{");
+
+ if( !uncertainty && !polymorphism )
+ {
+ x = HandleAllele( token, k );
+ if( x > MAX_ALLELES ) {
+ errormsg = "Number of alleles for locus ";
+ errormsg += (k+1);
+ errormsg += " has exceeded limit of ";
+ errormsg += MAX_ALLELES;
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ matrix->SetState( i, k, x );
+ }
+ else
+ {
+ // borrow material from CharactersBlock::HandleNextState if and when
+ // ambiguity and polymorphism are implemented for the ALLELES block
+ //
+ errormsg = "Ambiguity and polymorphism not yet supported in ALLELES block";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ }
+
+ // Bail out here if data is haploid
+ //
+ if( IsHaploid(locus) )
+ return true;
+
+ // Now read in the separator character, if one was supplied
+ //
+ if( gap != '\0' )
+ {
+ token.SetSpecialPunctuationCharacter( gap );
+ token.SetLabileFlagBit( NexusToken::useSpecialPunctuation );
+ token.SetLabileFlagBit( NexusToken::singleCharacterToken );
+ if( interleaving )
+ token.SetLabileFlagBit( NexusToken::newlineIsToken );
+ token.GetNextToken();
+
+ if( interleaving && token.AtEOL() ) {
+ errormsg = "Unexpected end of line encountered (within a genotype specification)";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ if( token.Equals(",") ) {
+ errormsg = "Unexpected comma encountered (within a genotype specification)";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ }
+
+ // same song, second verse...
+ //
+ if( gap != '\0' ) {
+ token.SetSpecialPunctuationCharacter( gap );
+ token.SetLabileFlagBit( NexusToken::useSpecialPunctuation );
+ }
+ if( interleaving )
+ token.SetLabileFlagBit( NexusToken::newlineIsToken );
+ if( !tokens )
+ token.SetLabileFlagBit( NexusToken::singleCharacterToken );
+ token.SetLabileFlagBit( NexusToken::parentheticalToken );
+ token.SetLabileFlagBit( NexusToken::curlyBracketedToken );
+ token.GetNextToken();
+
+ if( interleaving && token.AtEOL() ) {
+ errormsg = "Unexpected end of line encountered (reading second half of genotype specification)";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ if( token.Equals(",") ) {
+ errormsg = "Unexpected comma encountered (reading second half of genotype specification)";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // Allele should not be a punctuation character
+ //
+ if( token.IsPunctuationToken() ) {
+ errormsg = "Punctuation character (";
+ errormsg += token.GetToken();
+ errormsg += ") found where allele name expected";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // Make sure we didn't run out of file
+ //
+ if( token.AtEOF() ) {
+ errormsg = "Unexpected end of file encountered";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // If we didn't run out of file, I see no reason why we should
+ // have a zero-length token on our hands
+ assert( token.GetTokenLength() > 0 );
+
+ // We've read in the allele now, so if this locus has been
+ // ELIMINATEd, we want to skip the part that actually saves it
+ //
+ if( k >= 0 )
+ {
+ // see if any equate macros apply
+ //
+ nxsstring skey = nxsstring( token.GetToken( respectingCase ) );
+ AssocList::iterator p = equates.find( skey );
+ if( p != equates.end() ) {
+ nxsstring sval = (*p).second;
+ token.ReplaceToken( sval.c_str() );
+ }
+
+ // token should be in one of the following forms: "{" "a" "bb"
+ //
+ int polymorphism = token.Equals("(");
+ int uncertainty = token.Equals("{");
+
+ if( !uncertainty && !polymorphism )
+ {
+ y = HandleAllele( token, k );
+ if( y > MAX_ALLELES ) {
+ errormsg = "Number of alleles for locus ";
+ errormsg += (k+1);
+ errormsg += " has exceeded limit of ";
+ errormsg += MAX_ALLELES;
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ int value = SplitInt( x, y );
+ matrix->SetState( i, k, value );
+ }
+ else
+ {
+ // borrow material from CharactersBlock::HandleNextState if and when
+ // ambiguity and polymorphism are implemented for the ALLELES block
+ //
+ errormsg = "Ambiguity and polymorphism not yet supported in ALLELES block";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ }
+
+ return true;
+}
+
+/**
+ * @method HandleStdMatrix [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * Called from HandleMatrix function to read in a standard
+ * (i.e., non-transposed) matrix. Interleaving, if applicable,
+ * is dealt with herein.
+ */
+void AllelesBlock::HandleStdMatrix( NexusToken& token )
+{
+ int i, j, currChar;
+ int firstChar = 0;
+ int lastChar = ncharTotal;
+ int lastCharInSet = ncharTotal;
+ int nextFirst;
+ int page = 0;
+ int lastIndiv = 0;
+ int rowsInMatrix = ntax;
+ int rowsToAdd = 25;
+ bool comma = false;
+ bool colon = false;
+ bool semicolon = false;
+ bool skipLocusLoop = false;
+
+ for(;;)
+ {
+ j = 0;
+
+ //*******************************************************
+ //******** Beginning of loop through populations ********
+ //*******************************************************
+
+ for( i = 0; i < ntax; i++ )
+ {
+ // This should be the population label
+ //
+ token.GetNextToken();
+
+ errormsg = " Population ";
+ errormsg += token.GetToken();
+ nexus->OutputComment( errormsg );
+
+#if 1
+ if( page == 0 && newtaxa )
+ {
+ // This section:
+ // - on first (or only) interleave page
+ // - no previous TAXA block
+
+ // check for duplicate taxon names
+ //
+ if( taxa.IsAlreadyDefined( token.GetToken() ) ) {
+ errormsg = "Data for this population (";
+ errormsg += token.GetToken();
+ errormsg += ") has already been saved";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // Labels provided and not already stored in the taxa block with
+ // the TAXLABELS command; taxa.Reset() and taxa.SetNTax()
+ // were already called, however, when the NTAX subcommand was
+ // processed.
+ //
+ taxa.AddTaxonLabel( token.GetToken() );
+
+ // order of occurrence in TAXA block same as row in matrix
+ //
+ taxonPos[i] = i;
+ }
+ else
+ {
+ // This section:
+ // - TAXA block provided or has been created already
+ // - may be on any (interleave) page
+
+ // Cannot assume taxon in same position in
+ // taxa block. Set up taxonPos array so that we can look up
+ // the correct row in matrix for any given taxon
+ //
+ int positionInTaxaBlock;
+ try {
+ positionInTaxaBlock = taxa.FindTaxon( token.GetToken() );
+ }
+ catch( std::out_of_range ) {
+ errormsg = "Could not find population named ";
+ errormsg += token.GetToken();
+ errormsg += " among stored population labels";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ if( page == 0 )
+ {
+ // make sure user has not duplicated data for a single taxon
+ //
+ if( taxonPos[positionInTaxaBlock] != -1 ) {
+ errormsg = "Data for this population (";
+ errormsg += token.GetToken();
+ errormsg += ") has already been saved";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // make sure user has kept same relative ordering of taxa in both the TAXA
+ // block and the CHARACTERS block
+ //
+ if( positionInTaxaBlock >= i ) {
+ errormsg = "Relative order of population must be the same in both the TAXA and CHARACTERS blocks";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ taxonPos[i] = positionInTaxaBlock; // was --> taxonPos[positionInTaxaBlock] = i;
+ }
+ else
+ {
+ // make sure user has kept the ordering of taxa the same from
+ // one interleave page to the next
+ //
+ if( taxonPos[positionInTaxaBlock] != i ) {
+ errormsg = "Ordering of population must be identical to that in first interleave page";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ }
+ }
+#else
+ // If no TAXA block previously specified (i.e., newtaxa = true)
+ // and we're on page 0, need to add population names as we
+ // encounter them to the TAXA block
+ //
+ if( page == 0 && newtaxa )
+ {
+ // check for duplicate population names
+ //
+ if( taxa.IsAlreadyDefined( token.GetToken() ) ) {
+ errormsg = "Data for this population (";
+ errormsg += token.GetToken();
+ errormsg += ") has already been saved";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // population labels not already stored in the taxa block with
+ // the TAXLABELS command; taxa.Reset() and taxa.SetNTax()
+ // were already called, however, when the NTAX subcommand was
+ // processed.
+ //
+ taxa.AddTaxonLabel( token.GetToken() );
+
+ // order of occurrence in TAXA block same as row in matrix
+ //
+ taxonPos[i] = i;
+ }
+
+ // we go here if either (1) a TAXA block was previously specified
+ // or (2) we have already built up a TAXA block because we are
+ // beyond the first page of an interleaved file. In either of
+ // these cases, we must check to see whether the populations
+ // are encountered in the same order as specified in the TAXA block.
+ else
+ {
+ int positionInTaxaBlock;
+ try {
+ positionInTaxaBlock = taxa.FindTaxon( token.GetToken() );
+ }
+ catch( out_of_range ) {
+ errormsg = "Could not find taxon named ";
+ errormsg += token.GetToken();
+ errormsg += " among stored taxon labels";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ if( positionInTaxaBlock != i )
+ {
+ if( page == 0 ) {
+ // user has either duplicated data for a single taxon
+ // or the order of taxa is not the same as in the
+ // predefined TAXA block
+ errormsg = "This taxon (";
+ errormsg += token.GetToken();
+ errormsg += ") either (1) has already been saved";
+ errormsg += "\nor (2) is out of order";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ else {
+ // user has not kept the ordering of taxa the same from
+ // one interleave page to the next
+ if( positionInTaxaBlock != i ) {
+ errormsg = "Ordering of taxa must be identical to that in first interleave page";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ }
+ }
+
+ taxonPos[i] = positionInTaxaBlock; // was --> taxonPos[positionInTaxaBlock] = i;
+ }
+#endif
+
+ // read in the colon following the population label
+ token.GetNextToken();
+ if( !token.Equals(":") ) {
+ errormsg = "Expecting ':' after population label but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ //*******************************************************
+ //******** Beginning of loop through individuals ********
+ //*******************************************************
+ for(;;)
+ {
+ // Read in individual label if necessary
+ // These are not stored, so all we need to do is call
+ // NexusToken::GetNextToken
+ //
+ if( labels )
+ {
+
+ token.GetNextToken();
+
+ if( token.Equals(":") ) {
+ colon = true;
+ skipLocusLoop = true;
+ }
+ else if( token.Equals(",") ) {
+ comma = true;
+ break;
+ }
+ else if( token.Equals(";") ) {
+ semicolon = true;
+ break;
+ }
+ }
+
+ // Increase number of rows in data matrix, if necessary
+ //
+ assert( lastIndiv <= rowsInMatrix );
+ if( page == 0 && lastIndiv == rowsInMatrix ) {
+ matrix->AddRows( rowsToAdd );
+ rowsInMatrix += rowsToAdd;
+ }
+
+ //************************************************
+ //******** Beginning of loop through loci ********
+ //************************************************
+ for( currChar = firstChar; currChar < lastChar; currChar++ )
+ {
+ if( skipLocusLoop )
+ break;
+
+ // HandleNextState will return false only if a newline OR comma
+ // character is encountered before locus k is processed.
+ // If a comma is encountered, it means it is time to break from
+ // the loop over individuals; if a newline is encountered, we
+ // either ignore it (if not interleave format) or, if reading
+ // an interleaved matrix, break out of the loop over loci by
+ // setting lastChar equal to currChar.
+ // The base class version of HandleNextState is overridden
+ // in AllelesBlock to read in and store and entire genotype
+ // (e.g., "slow/fast")
+ //
+ bool stopOnNewline = ( currChar > firstChar );
+ bool ok = HandleNextGenotype( token, j, currChar, stopOnNewline );
+
+ comma = token.Equals(",");
+ semicolon = token.Equals(";");
+ colon = token.Equals(":");
+ if( !ok && interleaving )
+ {
+ if( !comma && !colon && lastCharInSet < ncharTotal && charPos[currChar] != lastCharInSet ) {
+ errormsg = "Each line within an interleave page must comprise the same number of loci";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // currChar should be firstChar in next go around
+ //
+ nextFirst = currChar;
+
+ // set lastChar to currChar so that we can check to make sure the
+ // remaining lines in this interleave page end at the same place
+ //
+ lastCharInSet = currChar;
+
+ break;
+ }
+ else if( !ok && ( comma || colon || semicolon ) )
+ break;
+ } // innermost loop (over loci)
+
+ skipLocusLoop = false;
+
+ // Handle here the case of a repeat count.
+ // Note: if interleaving, colon will have already been eaten
+ // and the boolean variable "color" will reflect this. If
+ // not interleaving, colon will not be seen until we begin
+ // reading the data for the next individual (thus, decrement
+ // lastIndiv before proceeding since it has already been
+ // incremented.
+ //
+ int count = 1;
+ if( ( colon || comma || semicolon ) && !interleaving ) {
+ j--;
+ if( page == 0 )
+ lastIndiv--;
+ }
+ if( colon )
+ {
+ // Get the repeat count itself
+ //
+ token.SetLabileFlagBit( NexusToken::newlineIsToken );
+ token.GetNextToken();
+ count = atoi( token.GetToken().c_str() );
+ if( count < 1 ) {
+ errormsg = "Could not convert specified repeat count ";
+ if( token.GetTokenLength() > 0 ) {
+ errormsg += "(";
+ errormsg += token.GetToken();
+ errormsg += ")";
+ }
+ errormsg +=" to a positive integer";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // Instruct matrix to duplicate last row count times.
+ // Matrix itself handles the allocation of additional
+ // rows (if necessary) to accommodate the duplication
+ //
+ int extraRows;
+ if( interleaving )
+ extraRows = matrix->DuplicateRow( j, count, firstChar, lastCharInSet-1 );
+ else
+ extraRows = matrix->DuplicateRow( j, count );
+ if( extraRows > 0 ) {
+ if( page == 0 )
+ rowsInMatrix += extraRows;
+ else {
+ errormsg = "Repeat counts specify more individuals in later interleave pages than in first";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ }
+
+ }
+
+ j += count;
+ if( page == 0 )
+ lastIndiv += count;
+
+
+ if( comma || semicolon )
+ break;
+
+ } // inner loop over individuals
+
+ // Update rowsToAdd to more accurately reflect the number of
+ // rows needing to be added for each new population. For example,
+ // if population samples are on the order of 200 individuals,
+ // it is more efficient to add 200 new rows each time matrix is
+ // resized rather than the default of 25.
+ //
+ if( page == 0 ) {
+ rowsToAdd = (lastIndiv+1) / (i+1);
+ if( rowsToAdd < 25 )
+ rowsToAdd = 25;
+ }
+
+ if( page == 0 ) {
+ // indivCount holds the _first_ row in matrix where the
+ // data for individuals in the _next_ population (i.e.,
+ // population i+1) are kept.
+ //
+ indivCount[i] = lastIndiv;
+ }
+
+ } // middle loop (over populations)
+
+ // if semicolon is true, then we've just finished reading the last
+ // interleave page and thus should break from the outer loop
+ //
+ if( semicolon )
+ break;
+
+ firstChar = nextFirst;
+ lastChar = ncharTotal;
+ lastCharInSet = ncharTotal;
+
+ page++;
+
+ } // outer loop (over interleave pages)
+}
+
+/**
+ * @method HandleTransposedMatrix [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * Called from HandleMatrix function to read in a transposed
+ * matrix. Interleaving, if applicable, is dealt with herein.
+ */
+void AllelesBlock::HandleTransposedMatrix( NexusToken& /* token */ )
+{
+ // obviously, not yet written
+}
+
+/**
+ * @method IsHaploid [bool:public]
+ * @param i [int] the locus in question (in range [0..nchar))
+ *
+ * Returns true if character indexed by i was declared to be
+ * haploid, false otherwise. Returns false immediately if "haploid"
+ * list is empty.
+ */
+bool AllelesBlock::IsHaploid( int i )
+{
+ if( haploid.empty() )
+ return false;
+
+ int origLocusIndex =GetOrigCharIndex(i);
+ IntSet::const_iterator found = haploid.find(origLocusIndex);
+ if( found == haploid.end() )
+ return false;
+
+ return true;
+}
+
+/**
+ * @method IsHaploidOrig [bool:public]
+ * @param origLocusIndex [int] the locus in question (in range [0..ncharTotal))
+ *
+ * Returns true if character number origLocusIndex was declared to be
+ * haploid, false otherwise. Returns false immediately if "haploid"
+ * list is empty.
+ */
+bool AllelesBlock::IsHaploidOrig( int origLocusIndex )
+{
+ if( haploid.empty() )
+ return false;
+
+ IntSet::const_iterator found = haploid.find(origLocusIndex);
+ if( found == haploid.end() )
+ return false;
+
+ return true;
+}
+
+/**
+ * @method MostCommonAllele [int:public]
+ * @param locus [int] the locus in question in range [0..nchar)
+ * @throws XAllMissingData
+ *
+ * Returns internal representation of allele that is most
+ * common (across all active populations) for the specified locus.
+ * Assumes locus has not been excluded. If no population is
+ * supplied, considers all active populations. If population
+ * is supplied, the allele returned will be the one most common
+ * for that population only. Assumes that if population is
+ * specified, that population is not one currently deleted by
+ * the user. Throws XAllMissingData exception if only missing
+ * data are encountered.
+ *
+ * Note: this is a relatively slow function because an allele count
+ * is performed for each call.
+ */
+int AllelesBlock::MostCommonAllele( int locus, int pop /* = -1 */ )
+{
+ assert( locus >= 0 && locus < nchar );
+ assert( pop > -2 && pop < ntax );
+ assert( !IsExcluded(locus) );
+
+ // Make sure calling function doesn't expect us to find the
+ // MostCommonAllele for a specific population that has been
+ // deleted by the user.
+ //
+ bool do_one_pop = ( pop >= 0 );
+ assert( !( do_one_pop && IsDeleted(pop) ) );
+
+ int numAlleles = matrix->GetObsNumStates(locus);
+ int counts[MAX_ALLELES];
+
+ int i, j, gene;
+ for( i = 0; i < MAX_ALLELES; i++ )
+ counts[i] = 0;
+
+ // Fill the counts array; counts[j] will hold the number of genes
+ // corresponding to allele j at the focal locus over all active
+ // populations (or just in population pop if pop is not -1)
+ //
+ i = ( do_one_pop ? pop : 0 );
+ for( ; i < ntax; i++ )
+ {
+ if( do_one_pop && i > pop )
+ break;
+ if( IsDeleted(i) ) continue;
+ int numIndivs = ( i > 0 ? indivCount[i] - indivCount[i-1] : indivCount[i] );
+ for( j = 0; j < numIndivs; j++ )
+ {
+ gene = GetGene( i, j, locus, 0 );
+ assert( gene == MAX_ALLELES || gene < numAlleles );
+ if( gene < MAX_ALLELES )
+ counts[gene]++;
+
+ if( !IsHaploid(locus) )
+ {
+ gene = GetGene( i, j, locus, 1 );
+ assert( gene == MAX_ALLELES || gene < numAlleles );
+ if( gene < MAX_ALLELES )
+ counts[gene]++;
+ }
+ }
+ }
+
+ int max = 0;
+ int which = 0;
+ bool bad = true;
+
+ for( i = 0; i < numAlleles; i++ )
+ {
+ if( counts[i] > 0 )
+ bad = false;
+
+ if( counts[i] <= max ) continue;
+
+ which = i;
+ max = counts[i];
+ }
+
+ if(bad)
+ throw XAllMissingData();
+
+ return which;
+}
+
+/**
+ * @method NumberOfAlleles [int:public]
+ * @param locus [int] the locus in question in range [0..ntax)
+ *
+ * Returns the number of alleles observed for locus. If no population is
+ * supplied, sums across all active populations. If population
+ * is supplied, count will only be for that population.
+ * Assumes locus has not been excluded. Assumes that if population is
+ * specified, that population is not one currently deleted by
+ * the user.
+ *
+ * Note: this is a relatively slow function because an enumeration
+ * is performed for each call.
+ */
+int AllelesBlock::NumberOfAlleles( int locus, int pop /* = -1 */ )
+{
+ assert( locus >= 0 && locus < nchar );
+ assert( pop > -2 && pop < ntax );
+ assert( !IsExcluded(locus) );
+
+ bool do_one_pop = ( pop >= 0 );
+ assert( !( do_one_pop && IsDeleted(pop) ) );
+
+ int i, j, gene;
+
+ // A std::set is used here to simplify tallying the number of
+ // distinct alleles found (i.e., no matter how many times we
+ // insert allele 1 into the set, it will end up being represented
+ // by only one entry in the set at the end).
+ //
+ std::set<int> alleleSet;
+
+ i = ( do_one_pop ? pop : 0 );
+ for( ; i < ntax; i++ )
+ {
+ if( do_one_pop && i > pop )
+ break;
+ if( IsDeleted(i) ) continue;
+
+ int numIndivs = ( i > 0 ? indivCount[i] - indivCount[i-1] : indivCount[i] );
+ for( j = 0; j < numIndivs; j++ )
+ {
+ gene = GetGene( i, j, locus, 0 );
+ if( gene < MAX_ALLELES )
+ alleleSet.insert(gene);
+
+ if( !IsHaploid(locus) )
+ {
+ gene = GetGene( i, j, locus, 1 );
+ if( gene < MAX_ALLELES )
+ alleleSet.insert(gene);
+ }
+ }
+ }
+
+ return alleleSet.size();
+
+ // old way
+ // LabelListBag::const_iterator i = charStates.find(locus);
+ // return (*i).second.size();
+}
+
+/**
+ * @method Read [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * This function provides the ability to read everything following
+ * the block name (which is read by the Nexus object) to the end or
+ * endblock statement. Characters are read from the input stream
+ * in. Overrides the pure virtual function in the base class.
+ */
+void AllelesBlock::Read( NexusToken& token )
+{
+ isEmpty = false;
+
+ // this should be the semicolon after the block name
+ //
+ token.GetNextToken();
+ if( !token.Equals(";") ) {
+ errormsg = "Expecting ';' after ";
+ errormsg += id;
+ errormsg += " block name, but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ ntax = taxa.GetNumTaxonLabels();
+
+ for(;;)
+ {
+ token.GetNextToken();
+
+ if( token.Equals("DIMENSIONS") ) {
+ HandleDimensions( token, "NEWPOPS", "NPOPS", "NLOCI" );
+ }
+ else if( token.Equals("FORMAT") ) {
+ HandleFormat( token );
+ }
+ else if( token.Equals("ELIMINATE") ) {
+ HandleEliminate( token );
+ }
+ else if( token.Equals("HAPLOID") ) {
+ HandleHaploid( token );
+ }
+ else if( token.Equals("TAXLABELS") ) {
+ HandleTaxlabels( token );
+ }
+ else if( token.Equals("LOCUSALLELELABELS") ) {
+ HandleCharstatelabels( token );
+ }
+ else if( token.Equals("LOCUSLABELS") ) {
+ HandleCharlabels( token );
+ }
+ else if( token.Equals("ALLELELABELS") ) {
+ HandleStatelabels( token );
+ }
+ else if( token.Equals("MATRIX") ) {
+ HandleMatrix( token );
+ }
+ else if( token.Equals("END") ) {
+ HandleEndblock( token, "Locus" );
+ break;
+ }
+ else if( token.Equals("ENDBLOCK") ) {
+ HandleEndblock( token, "Locus" );
+ break;
+ }
+ else
+ {
+ SkippingCommand( token.GetToken() );
+ do {
+ token.GetNextToken();
+ } while( !token.AtEOF() && !token.Equals(";") );
+
+ if( token.AtEOF() ) {
+ errormsg = "Unexpected end of file encountered";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ }
+ }
+}
+
+/**
+ * @method Report [void:public]
+ * @param out [ostream&] the output stream to which to write the report
+ *
+ * This function outputs a brief report of the contents of this ALLELES block.
+ * Overrides the pure virtual function in the base class.
+ */
+void AllelesBlock::Report( std::ostream& out )
+{
+ int i;
+
+ out << endl;
+ out << id << " block contains data for ";
+ if( ntax == 1 )
+ out << " 1 population and ";
+ else
+ out << ntax << " populations ";
+ out << "(" << indivCount[ntax-1] << " total individuals)";
+ if( nchar == 1 )
+ out << " and 1 locus";
+ else
+ out << " and " << nchar << " loci";
+ out << endl;
+
+ out.flush();
+
+ out << " Datapoint: ";
+ switch( datapoint ) {
+ case fraglen:
+ out << "fraglen" << endl;
+ break;
+ default:
+ out << "standard" << endl;
+ }
+
+ out.flush();
+
+ if( transposing && interleaving )
+ out << " Matrix transposed and interleaved" << endl;
+ else if( transposing && !interleaving )
+ out << " Matrix transposed but not interleaved" << endl;
+ else if( !transposing && interleaving )
+ out << " Matrix interleaved but not transposed" << endl;
+ else
+ out << " Matrix neither transposed nor interleaved" << endl;
+
+ if( tokens )
+ out << " Multicharacter allele names allowed in data matrix" << endl;
+ else
+ out << " Allele names are expected to be single character symbols" << endl;
+
+ if( labels )
+ out << " Labels for individuals provided" << endl;
+ else
+ out << " Labels for individuals not provided" << endl;
+
+ if( respectingCase )
+ out << " Allele labels in matrix case-sensitive" << endl;
+ else
+ out << " Allele labels in matrix not case-sensitive" << endl;
+
+ if( newtaxa )
+ out << " Population labels defined in matrix" << endl;
+ else
+ out << " Population labels defined in TAXA block" << endl;
+
+ out << " Missing data symbol is " << missing << endl;
+
+ out.flush();
+
+ if( haploid.empty() )
+ out << " All loci are diploid" << endl;
+ else if( haploid.size() == 1 ) {
+ out << " The following locus is haploid:" << endl;
+ IntSet::const_iterator k = haploid.begin();
+ out << " " << ( (*k) + 1 ) << endl;
+ }
+ else {
+ out << " The following loci are haploid:" << endl;
+ out << " ";
+ IntSet::const_iterator k;
+ for( k = haploid.begin(); k != haploid.end(); k++ )
+ out << ( (*k) + 1 ) << " ";
+ out << endl;
+ }
+
+ out.flush();
+
+ if( gap == ' ' )
+ out << " No separator character defined" << endl;
+ else
+ out << " Separator character is " << gap << endl;
+
+ out.flush();
+
+ int numEquateMacros = equates.size();
+ if( numEquateMacros > 0 ) {
+ out << " Equate macros in effect:" << endl;
+ typedef AssocList::const_iterator CI;
+ for( CI i = equates.begin(); i != equates.end(); ++i) {
+ out << " " << (*i).first << " = " << (*i).second << endl;
+ }
+ }
+ else
+ out << " No equate macros have been defined" << endl;
+
+ out.flush();
+
+ out << " Contents of the charLabels LabelList:" << endl;
+ LabelList::const_iterator lli = charLabels.begin();
+ while( lli != charLabels.end() )
+ {
+ out << "\t" << (*lli) << endl;
+ ++lli;
+ }
+ out.flush();
+
+ out << " Contents of the charStates LabelListBag:" << endl;
+ LabelListBag::const_iterator cib = charStates.begin();
+ while( cib != charStates.end() )
+ {
+ out << "\t" << (*cib).first << ": ";
+ LabelList::const_iterator lli = (*cib).second.begin();
+ while( lli != (*cib).second.end() ) {
+ out << (*lli) << " ";
+ ++lli;
+ }
+ out << endl;
+ ++cib;
+ }
+ out.flush();
+
+ if( charLabels.size() > 0 )
+ {
+ out << " Locus and allele labels:" << endl;
+ for( int k = 0; k < nchar; k++ ) {
+ if( charLabels[k].size() == 0 )
+ out << '\t' << ( 1 + GetOrigCharIndex(k) ) << '\t' << "(no label provided for this locus)" << endl;
+ else
+ out << '\t' << ( 1 + GetOrigCharIndex(k) ) << '\t' << charLabels[k] << endl;
+
+ // output allele names if any are defined for this locus
+ LabelListBag::const_iterator cib = charStates.find(k);
+ if( cib != charStates.end() )
+ {
+ int ns = (*cib).second.size();
+ for( int m = 0; m < ns; m++ ) {
+ out << "\t\t" << (*cib).second[m] << endl;
+ }
+ }
+ }
+ }
+
+ out.flush();
+
+ if( ncharTotal == nchar )
+ out << " No loci were eliminated" << endl;
+ else {
+ out << " The following loci were eliminated:" << endl;
+ IntSet::const_iterator list_iter;
+ for( list_iter = eliminated.begin(); list_iter != eliminated.end(); list_iter++ ) {
+ out << " " << ((*list_iter)+1) << endl;
+ }
+ }
+
+ out.flush();
+
+ out << " The following loci have been excluded:" << endl;
+ int k;
+ int nx = 0;
+ for( k = 0; k < nchar; k++ ) {
+ if( activeChar[k] ) continue;
+ out << " " << (k+1) << endl;
+ nx++;
+ }
+ if( nx == 0 )
+ out << " (no loci excluded)" << endl;
+
+ out.flush();
+
+ out << " The following populations have been deleted:" << endl;
+ nx = 0;
+ for( k = 0; k < ntax; k++ ) {
+ if( activeTaxon[k] ) continue;
+ out << " " << (k+1) << endl;
+ nx++;
+ }
+ if( nx == 0 )
+ out << " (no populations deleted)" << endl;
+
+ out.flush();
+
+ if( alleles_fixed )
+ out << " Only alleles specified in ALLELELABELS command will be considered valid." << endl;
+ else
+ out << " All alleles encountered in matrix will be considered valid." << endl;
+
+ out << " Data matrix:" << endl;
+ DebugShowMatrix( out, " " );
+
+ out.flush();
+
+ out << endl;
+ out << "Most common allele for each locus:" << endl;
+ out << setw(20) << " ";
+ out << setw(20) << "number of";
+ out << setw(20) << "dominant";
+ out << setw(20) << " ";
+ out << endl;
+ out << setw(20) << "locus";
+ out << setw(20) << "alleles";
+ out << setw(20) << "allele";
+ out << setw(20) << "frequency";
+ out << endl;
+ out.setf( std::ios::fixed, std::ios::floatfield );
+ out.setf( std::ios::showpoint );
+ nxsstring s;
+ for( i = 0; i < nchar; i++ ) {
+ if( IsExcluded(i) ) continue;
+
+ s = "";
+ s += i;
+ s += " (";
+ s += charLabels[i];
+ s += ")";
+ out << setw(20) << s;
+
+ int k = NumberOfAlleles(i);
+ out << setw(20) << k;
+
+ int j = MostCommonAllele(i);
+ s = "";
+ s += j;
+ LabelListBag::const_iterator cib = charStates.find(i);
+ if( cib != charStates.end() )
+ {
+ s += " (";
+ s += (*cib).second[j];
+ s += ")";
+ }
+ out << setw(20) << s;
+
+ double frq = AlleleFrequency( j, i );
+ out << setw(20) << setprecision(6) << frq;
+ out << endl;
+ }
+}
+
+/**
+ * @method Reset [void:protected]
+ *
+ * Sets npops and nloci to 0 in preparation for reading a new ALLELES block.
+ * Overrides the pure virtual function in the base class. Also performs
+ * the initializations done in the constructor, as well as erasing the
+ * vector haploid and freeing memory allocated previously for the indivCount
+ * array.
+ */
+void AllelesBlock::Reset()
+{
+ CharactersBlock::Reset();
+
+ // Thinking of changing any of these defaults?
+ // If so, do it also in the constructor
+ //
+ alleles_fixed = false;
+ datapoint = standard;
+ gap = '/';
+ labels = false;
+ respectingCase = true;
+ tokens = true;
+
+ haploid.erase( haploid.begin(), haploid.end() );
+
+ if( indivCount != NULL ) {
+ delete [] indivCount;
+ indivCount = NULL;
+ }
+}
+
+/**
+ * @method SampleSize [int:public]
+ * @param locus [int] the locus in question, in range (0..nchar]
+ * @param pop [int] the population in question, in range (0..ntax] (default is -1)
+ *
+ * Returns the number of individuals (if data is diploid)
+ * for which both genes are non-missing. If data is haploid,
+ * returns number of genes that are non-missing.
+ * Assumes locus has not been excluded. If no population is
+ * supplied, sums across all active populations. If
+ * population is supplied, count will only be for that
+ * population. It is assumed that if a population is specified,
+ * that population is not one currently deleted by the user.
+ */
+int AllelesBlock::SampleSize( int locus, int pop /* = -1 */ )
+{
+ assert( !IsExcluded(locus) );
+ bool locus_haploid = IsHaploid(locus);
+
+ bool do_one_pop = ( pop >= 0 );
+ assert( !( do_one_pop && IsDeleted(pop) ) );
+
+ int i, j, gene0, gene1;
+ int total_genes = 0;
+ int total_indivs = 0;
+
+ i = ( do_one_pop ? pop : 0 );
+ for( ; i < ntax; i++ )
+ {
+ if( do_one_pop && i > pop )
+ break;
+ if( IsDeleted(pop) ) continue;
+
+ int numIndivs = ( i > 0 ? indivCount[i] - indivCount[i-1] : indivCount[i] );
+ for( j = 0; j < numIndivs; j++ )
+ {
+ gene0 = GetGene( i, j, locus, 0 );
+ if( gene0 < MAX_ALLELES )
+ total_genes++;
+
+ if( !locus_haploid )
+ {
+ gene1 = GetGene( i, j, locus, 1 );
+ if( gene1 < MAX_ALLELES )
+ {
+ total_genes++;
+ if( gene0 < MAX_ALLELES )
+ total_indivs++;
+ }
+ }
+ }
+ }
+
+ return ( locus_haploid ? total_genes : total_indivs );
+}
+
+/**
+ * @method SplitInt [int:protected]
+ * @param x [int] to be placed in the low-order word
+ * @param y [int] to be placed in the high-order word
+ *
+ * Places x in the low-order word (least-significant 2 bytes)
+ * and y in the high-order word (most-significant 2 bytes)
+ * of the 4-byte int returned. Note that because x and y
+ * both have to fit in 2 bytes instead of 4, the maximum
+ * value for each is 255 = 0xff. The value 255 itself is
+ * specifically reserved for use as the missing data value.
+ */
+int AllelesBlock::SplitInt( int x, int y )
+{
+ //typedef long LONG;
+ //typedef unsigned long DWORD;
+ //typedef unsigned short WORD;
+ //#define MAKELONG(a, b) ((LONG)( ((WORD)(a)) | ( ((DWORD)((WORD)(b))) << 16) ))
+ assert( x >= 0 && x <= MAX_ALLELES );
+ assert( y >= 0 && y <= MAX_ALLELES );
+ int z_low = (unsigned short)x;
+ int z_high = ( (unsigned int)( (unsigned short)y ) ) << 16;
+ int z = ( z_low | z_high );
+ return z;
+}
+
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/allelesblock.cpp
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/allelesblock.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/allelesblock.h 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/allelesblock.h 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,76 @@
+#ifndef __ALLELESBLOCK_H
+#define __ALLELESBLOCK_H
+
+#define MAX_ALLELES 255
+
+class AllelesBlock : public CharactersBlock
+{
+ // Adding a new data member? Don't forget to:
+ // 1. Describe it in the class header comment at the top of "allelesblock.cpp"
+ // 2. Initialize it (unless it is self-initializing) in the constructor
+ // and reinitialize it in the Reset function
+ // 3. Describe the initial state in the constructor documentation
+ // 4. Delete memory allocated to it in both the destructor and Reset function
+ // 5. Report it in some way in the Report function
+protected:
+ virtual void Read( NexusToken& token );
+ virtual void Reset();
+
+public:
+ enum datapoints { standard = 1, fraglen };
+
+public:
+ class XAllMissingData {};
+
+protected:
+ IntSet haploid;
+
+private:
+ bool alleles_fixed;
+ int* indivCount;
+ datapoints datapoint;
+
+protected:
+ virtual void DebugShowMatrix( std::ostream& out, char* marginText = NULL );
+ virtual void HandleFormat( NexusToken& token );
+ virtual bool HandleNextGenotype( NexusToken& token, int i, int k
+ , bool stopOnNewline = true );
+ virtual int HandleAllele( NexusToken& token, int c );
+ void HandleHaploid( NexusToken& token );
+ virtual void HandleStdMatrix( NexusToken& token );
+ virtual void HandleTransposedMatrix( NexusToken& token );
+ virtual void HandleMatrix( NexusToken& token );
+ int SplitInt( int x, int y );
+
+public:
+ AllelesBlock( TaxaBlock& tb, AssumptionsBlock& ab );
+ ~AllelesBlock();
+
+ virtual void Report( std::ostream& out );
+
+ // Methods for reporting the data
+ //
+ nxsstring GetLocusLabel( int locus );
+ nxsstring GetAlleleLabel( int locus, int allele );
+
+ // Methods for obtaining information about the data
+ //
+ void FocalAlleleCount( int focal_allele, int locus, int pop
+ , int& n_AA, int& n_Aa, int& n_aa );
+ int MostCommonAllele( int locus, int pop = -1 );
+ int AlleleCount( int allele, int locus, int pop = -1 );
+ double AlleleFrequency( int allele, int locus, int pop = -1 );
+ int GenotypeCount( int allele1, int allele2, int locus, int pop = -1 );
+
+ int GetNumHaploid();
+ bool IsHaploid( int i );
+ bool IsHaploidOrig( int origLocusIndex );
+
+ int NumberOfAlleles( int locus, int pop = -1 );
+ int SampleSize( int locus, int pop = -1 );
+ int GetIndivCount( int pop );
+ int GetGene( int pop, int indiv, int locus, int gene );
+};
+
+#endif
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/allelesblock.h
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/assumptionsblock.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/assumptionsblock.cpp 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/assumptionsblock.cpp 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,577 @@
+#include <iostream>
+#include <cstdio>
+
+#include "nexusdefs.h"
+#include "xnexus.h"
+#include "nexustoken.h"
+#include "nexus.h"
+#include "setreader.h"
+#include "taxablock.h"
+#include "discretedatum.h"
+#include "discretematrix.h"
+#include "charactersblock.h"
+#include "assumptionsblock.h"
+
+using namespace std;
+
+/**
+ * @class AssumptionsBlock
+ * @file assumptionsblock.h
+ * @file assumptionsblock.cpp
+ * @author Paul O. Lewis
+ * @copyright Copyright © 1999. All Rights Reserved.
+ * @variable taxa [TaxaBlock&:private] reference to the TaxaBlock object
+ * @variable charBlockPtr [CharactersBlock*:private] pointer to the CharactersBlock-derived object to be notified in the event of exset changes
+ * @variable charsets [IntSetMap:protected] the variable storing charsets
+ * @variable taxsets [IntSetMap:protected] the variable storing taxsets
+ * @variable exsets [IntSetMap:protected] the variable storing exsets
+ * @see CharactersBlock
+ * @see Nexus
+ * @see NexusBlock
+ * @see NexusToken
+ * @see SetReader
+ * @see TaxaBlock
+ * @see XNexus
+ *
+ * This class handles reading and storage for the Nexus block ASSUMPTIONS.
+ * It overrides the member functions Read and Reset, which are abstract
+ * virtual functions in the base class NexusBlock.
+ */
+
+/**
+ * @constructor
+ *
+ * Performs the following initializations:
+ * <table>
+ * <tr><th align="left">Variable <th> <th align="left"> Initial Value
+ * <tr><td> id <td>= <td> "ASSUMPTIONS"
+ * </table>
+ */
+AssumptionsBlock::AssumptionsBlock( TaxaBlock& t )
+ : taxa(t), charBlockPtr(NULL)
+{
+ id = "ASSUMPTIONS";
+}
+
+/**
+ * @destructor
+ *
+ * Nothing needs to be done.
+ */
+AssumptionsBlock::~AssumptionsBlock()
+{
+}
+
+/**
+ * @method GetNumCharSets [int:public]
+ *
+ * Returns the number of character sets stored.
+ */
+int AssumptionsBlock::GetNumCharSets()
+{
+ return (int)charsets.size();
+}
+
+/**
+ * @method GetCharSetNames [void:public]
+ * @param names [LabelList&] the vector in which to store the names
+ *
+ * Erases names, then fills names with the names of all stored
+ * character sets.
+ */
+void AssumptionsBlock::GetCharSetNames( LabelList& names )
+{
+ names.erase( names.begin(), names.end() );
+ IntSetMap::const_iterator i;
+ for( i = charsets.begin(); i != charsets.end(); i++ )
+ names.push_back( (*i).first );
+}
+
+/**
+ * @method GetCharSet [IntSet&:public]
+ * @param nm [nxsstring] the name of the character set to return
+ *
+ * Returns reference to character set having name nm.
+ */
+IntSet& AssumptionsBlock::GetCharSet( nxsstring nm )
+{
+ return charsets[nm];
+}
+
+/**
+ * @method GetDefCharSetName [nxsstring:public]
+ *
+ * Returns name of default character set. If returned
+ * string has zero length, then no default character set
+ * was defined in the data set.
+ */
+nxsstring AssumptionsBlock::GetDefCharSetName()
+{
+ return def_charset;
+}
+
+/**
+ * @method GetNumTaxSets [int:public]
+ *
+ * Returns the number of taxon sets stored.
+ */
+int AssumptionsBlock::GetNumTaxSets()
+{
+ return (int)taxsets.size();
+}
+
+/**
+ * @method GetTaxSetNames [void:public]
+ * @param names [LabelList&] the vector in which to store the names
+ *
+ * Erases names, then fills names with the names of all stored
+ * taxon sets.
+ */
+void AssumptionsBlock::GetTaxSetNames( LabelList& names )
+{
+ names.erase( names.begin(), names.end() );
+ IntSetMap::const_iterator i;
+ for( i = taxsets.begin(); i != taxsets.end(); i++ )
+ names.push_back( (*i).first );
+}
+
+/**
+ * @method GetTaxSet [IntSet&:public]
+ * @param nm [nxsstring] the name of the taxon set to return
+ *
+ * Returns reference to taxon set having name nm.
+ */
+IntSet& AssumptionsBlock::GetTaxSet( nxsstring nm )
+{
+ return taxsets[nm];
+}
+
+/**
+ * @method GetDefTaxSetName [nxsstring:public]
+ *
+ * Returns name of default taxon set. If returned
+ * string has zero length, then no default taxon set
+ * was defined in the data set.
+ */
+nxsstring AssumptionsBlock::GetDefTaxSetName()
+{
+ return def_taxset;
+}
+
+/**
+ * @method GetNumExSets [int:public]
+ *
+ * Returns the number of exclusion sets stored.
+ */
+int AssumptionsBlock::GetNumExSets()
+{
+ return (int)exsets.size();
+}
+
+/**
+ * @method GetExSetNames [void:public]
+ * @param names [LabelList&] the vector in which to store the names
+ *
+ * Erases names, then fills names with the names of all stored
+ * exclusion sets.
+ */
+void AssumptionsBlock::GetExSetNames( LabelList& names )
+{
+ names.erase( names.begin(), names.end() );
+ IntSetMap::const_iterator i;
+ for( i = exsets.begin(); i != exsets.end(); i++ )
+ names.push_back( (*i).first );
+}
+
+/**
+ * @method GetExSet [IntSet&:public]
+ * @param nm [nxsstring] the name of the exclusion set to return
+ *
+ * Returns reference to exclusion set having name nm.
+ */
+IntSet& AssumptionsBlock::GetExSet( nxsstring nm )
+{
+ return exsets[nm];
+}
+
+/**
+ * @method GetDefExSetName [nxsstring:public]
+ *
+ * Returns name of default exclusion set. If returned
+ * string has zero length, then no default exclusion set
+ * was defined in the data set.
+ */
+nxsstring AssumptionsBlock::GetDefExSetName()
+{
+ return def_exset;
+}
+
+/**
+ * @method ApplyExSet [void:public]
+ * @param nm [nxsstring] the name of the exclusion set to apply
+ *
+ * Applies exclusion set having name nm by calling the
+ * ApplyExset method of the CharactersBlock or
+ * CharactersBlock-derived object stored in the charBlockPtr
+ * pointer (which will be whichever block last called
+ * the AssumptionsBlock::SetCallback method).
+ */
+void AssumptionsBlock::ApplyExSet( nxsstring nm )
+{
+ assert( charBlockPtr != NULL );
+ charBlockPtr->ApplyExset( exsets[nm] );
+}
+
+/**
+ * @method HandleCharset [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * Reads and stores information contained in the command
+ * CHARSET within an ASSUMPTIONS block.
+ */
+void AssumptionsBlock::HandleCharset( NexusToken& token )
+{
+ bool asterisked = false;
+
+ // Next token should be either an asterisk or the name of a charset
+ token.GetNextToken();
+
+ if( token.Equals("*") ) {
+ asterisked = true;
+ token.GetNextToken();
+ }
+
+ // Token now stored should be the name of a charset
+ nxsstring charset_name = token.GetToken();
+
+ // Now grab the equals sign
+ token.GetNextToken();
+ if( !token.Equals("=") ) {
+ errormsg = "Expecting '=' in CHARSET definition but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ assert( charBlockPtr != NULL );
+ CharactersBlock& charBlock = *charBlockPtr;
+ IntSet s;
+ int totalChars = charBlock.GetNCharTotal();
+ SetReader( token, totalChars, s, charBlock, SetReader::charset ).Run();
+
+ charsets[charset_name] = s;
+
+ if( asterisked )
+ def_charset = charset_name;
+}
+
+/**
+ * @method HandleEndblock [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * Called when the END or ENDBLOCK command needs to be parsed
+ * from within the ASSUMPTIONS block. Basically just checks to make
+ * sure the next token in the data file is a semicolon.
+ */
+void AssumptionsBlock::HandleEndblock( NexusToken& token )
+{
+ // get the semicolon following END or ENDBLOCK token
+ //
+ token.GetNextToken();
+
+ if( !token.Equals(";") ) {
+ errormsg = "Expecting ';' to terminate the END or ENDBLOCK command, but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+}
+
+/**
+ * @method HandleExset [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * Reads and stores information contained in the command
+ * EXSET within an ASSUMPTIONS block. If EXSET keyword is
+ * followed by an asterisk, last read CharactersBlock or
+ * CharactersBlock-derived object is notified of the
+ * characters to be excluded (its ApplyExset function
+ * is called).
+ */
+void AssumptionsBlock::HandleExset( NexusToken& token )
+{
+ bool asterisked = false;
+
+ // Next token should be either an asterisk or the name of an exset
+ token.GetNextToken();
+
+ if( token.Equals("*") ) {
+ asterisked = true;
+ token.GetNextToken();
+ }
+
+ // Token now stored should be the name of an exset
+ nxsstring exset_name = token.GetToken();
+
+ // Now grab the equals sign
+ token.GetNextToken();
+ if( !token.Equals("=") ) {
+ errormsg = "Expecting '=' in EXSET definition but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ assert( charBlockPtr != NULL );
+ CharactersBlock& charBlock = *charBlockPtr;
+ IntSet s;
+ int totalChars = charBlock.GetNCharTotal();
+ SetReader( token, totalChars, s, charBlock, SetReader::charset ).Run();
+
+ exsets[exset_name] = s;
+
+ if( asterisked ) {
+ def_exset = exset_name;
+ charBlock.ApplyExset(s);
+ }
+}
+
+/**
+ * @method HandleTaxset [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * ?
+ */
+void AssumptionsBlock::HandleTaxset( NexusToken& token )
+{
+ bool asterisked = false;
+
+ // Next token should be either an asterisk or the name of a taxset
+ token.GetNextToken();
+
+ if( token.Equals("*") ) {
+ asterisked = true;
+ token.GetNextToken();
+ }
+
+ // Token now stored should be the name of a taxset
+ nxsstring taxset_name = token.GetToken();
+
+ // Now grab the equals sign
+ token.GetNextToken();
+ if( !token.Equals("=") ) {
+ errormsg = "Expecting '=' in TAXSET definition but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ IntSet s;
+ int totalTaxa = taxa.GetNumTaxonLabels();
+ SetReader( token, totalTaxa, s, *this, SetReader::taxset ).Run();
+
+ taxsets[taxset_name] = s;
+
+ if( asterisked )
+ def_taxset = taxset_name;
+}
+
+/**
+ * @method Read [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * This function provides the ability to read everything following
+ * the block name (which is read by the Nexus object) to the end or
+ * endblock statement. Characters are read from the input stream
+ * in. Overrides the pure virtual function in the base class.
+ */
+void AssumptionsBlock::Read( NexusToken& token )
+{
+ isEmpty = false;
+
+ // this should be the semicolon after the block name
+ //
+ token.GetNextToken();
+ if( !token.Equals(";") ) {
+ errormsg = "Expecting ';' after ";
+ errormsg += id;
+ errormsg += " block name, but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ for(;;)
+ {
+ token.GetNextToken();
+
+ if( token.Equals("EXSET") ) {
+ HandleExset( token );
+ }
+ else if( token.Equals("TAXSET") ) {
+ HandleTaxset( token );
+ }
+ else if( token.Equals("CHARSET") ) {
+ HandleCharset( token );
+ }
+ else if( token.Equals("END") ) {
+ HandleEndblock( token );
+ break;
+ }
+ else if( token.Equals("ENDBLOCK") ) {
+ HandleEndblock( token );
+ break;
+ }
+ else
+ {
+ SkippingCommand( token.GetToken() );
+ do {
+ token.GetNextToken();
+ } while( !token.AtEOF() && !token.Equals(";") );
+
+ if( token.AtEOF() ) {
+ errormsg = "Unexpected end of file encountered";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ }
+ }
+}
+
+/**
+ * @method Reset [void:protected]
+ *
+ * Prepares for reading a new ASSUMPTIONS block.
+ * Overrides the pure virtual function in the base class.
+ */
+void AssumptionsBlock::Reset()
+{
+ isEmpty = true;
+ exsets.erase( exsets.begin(), exsets.end() );
+ taxsets.erase( taxsets.begin(), taxsets.end() );
+ charsets.erase( charsets.begin(), charsets.end() );
+ def_taxset = "";
+ def_charset = "";
+ def_exset = "";
+}
+
+/**
+ * @method Report [void:public]
+ * @param out [ostream&] the output stream to which to write the report
+ *
+ * This function outputs a brief report of the contents of this ASSUMPTIONS block.
+ * Overrides the pure virtual function in the base class.
+ */
+void AssumptionsBlock::Report( std::ostream& out )
+{
+ out << endl;
+ out << id << " block contains the following:" << endl;
+
+ if( charsets.empty() )
+ out << " No character sets were defined" << endl;
+ else {
+ IntSetMap::const_iterator charsets_iter = charsets.begin();
+ if( charsets.size() == 1 ) {
+ out << " 1 character set defined:" << endl;
+ out << " " << (*charsets_iter).first << endl;
+ }
+ else {
+ out << " " << charsets.size() << " character sets defined:" << endl;
+ for( ; charsets_iter != charsets.end(); charsets_iter++ ) {
+ nxsstring nm = (*charsets_iter).first;
+ out << " " << nm;
+ if( nm == def_charset )
+ out << " (default)";
+ out << endl;
+ }
+ }
+ }
+
+ if( taxsets.empty() )
+ out << " No taxon sets were defined" << endl;
+ else {
+ IntSetMap::const_iterator taxsets_iter = taxsets.begin();
+ if( taxsets.size() == 1 ) {
+ out << " 1 taxon set defined:" << endl;
+ out << " " << (*taxsets_iter).first << endl;
+ }
+ else {
+ out << " " << taxsets.size() << " taxon sets defined:" << endl;
+ for( ; taxsets_iter != taxsets.end(); taxsets_iter++ ) {
+ nxsstring nm = (*taxsets_iter).first;
+ out << " " << nm;
+ if( nm == def_taxset )
+ out << " (default)";
+ out << endl;
+ }
+ }
+ }
+
+ if( exsets.empty() )
+ out << " No exclusion sets were defined" << endl;
+ else {
+ IntSetMap::const_iterator exsets_iter = exsets.begin();
+ if( exsets.size() == 1 ) {
+ out << " 1 exclusion set defined:" << endl;
+ out << " " << (*exsets_iter).first << endl;
+ }
+ else {
+ out << " " << exsets.size() << " exclusion sets defined:" << endl;
+ for( ; exsets_iter != exsets.end(); exsets_iter++ ) {
+ nxsstring nm = (*exsets_iter).first;
+ out << " " << nm;
+ if( nm == def_exset )
+ out << " (default)";
+ out << endl;
+ }
+ }
+ }
+
+ out << endl;
+}
+
+/**
+ * @method SetCallback [void:public]
+ * @param p [CharactersBlock*] the object to be called in the event of a change in character status
+ *
+ * A CHARACTERS, DATA, or ALLELES block can call this function to specify that
+ * it is to receive notification when the current taxon or character set
+ * changes (e.g., an "EXSET *" command is read or a program requests that
+ * one of the predefined taxon sets, character sets, or exsets be applied).
+ * Normally, a CharactersBlock-derived object calls this function upon
+ * entering its MATRIX command, since when that happens it becomes the
+ * primary data-containing block.
+ */
+void AssumptionsBlock::SetCallback( CharactersBlock* p )
+{
+ charBlockPtr = p;
+}
+
+/**
+ * @method TaxonLabelToNumber [void:protected]
+ * @param s [nxsstring&] the taxon label to convert
+ *
+ * Converts a taxon label to a number corresponding to
+ * the taxon's position within the list maintained by
+ * the TaxaBlock object. This method overrides the
+ * virtual function of the same name in the NexusBlock
+ * base class. If s is not a valid taxon label, returns
+ * the value 0.
+ */
+int AssumptionsBlock::TaxonLabelToNumber( nxsstring s )
+{
+ int i;
+ try {
+ i = 1 + taxa.FindTaxon(s);
+ }
+ catch( TaxaBlock::nosuchtaxon ) {
+ i = 0;
+ }
+ return i;
+}
+
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/assumptionsblock.cpp
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/assumptionsblock.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/assumptionsblock.h 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/assumptionsblock.h 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,63 @@
+#ifndef __ASSUMPTIONSBLOCK_H
+#define __ASSUMPTIONSBLOCK_H
+
+class CharactersBlock;
+
+class AssumptionsBlock : public NexusBlock
+{
+ // Adding a new data member? Don't forget to:
+ // 1. Describe it in the class header comment at the top of "emptyblock.cpp"
+ // 2. Initialize it (unless it is self-initializing) in the constructor
+ // and reinitialize it in the Reset function
+ // 3. Describe the initial state in the constructor documentation
+ // 4. Delete memory allocated to it in both the destructor and Reset function
+ // 5. Report it in some way in the Report function
+
+ TaxaBlock& taxa;
+ CharactersBlock* charBlockPtr;
+
+protected:
+ IntSetMap charsets;
+ IntSetMap taxsets;
+ IntSetMap exsets;
+
+ nxsstring def_charset;
+ nxsstring def_taxset;
+ nxsstring def_exset;
+
+protected:
+ void HandleCharset( NexusToken& token );
+ void HandleEndblock( NexusToken& token );
+ void HandleExset( NexusToken& token );
+ void HandleTaxset( NexusToken& token );
+ virtual void Read( NexusToken& token );
+ virtual void Reset();
+ virtual int TaxonLabelToNumber( nxsstring s );
+
+public:
+ AssumptionsBlock( TaxaBlock& t );
+ virtual ~AssumptionsBlock();
+
+ void SetCallback( CharactersBlock* p );
+
+ int GetNumCharSets();
+ void GetCharSetNames( LabelList& names );
+ IntSet& GetCharSet( nxsstring nm );
+ nxsstring GetDefCharSetName();
+
+ int GetNumTaxSets();
+ void GetTaxSetNames( LabelList& names );
+ IntSet& GetTaxSet( nxsstring nm );
+ nxsstring GetDefTaxSetName();
+
+ int GetNumExSets();
+ void GetExSetNames( LabelList& names );
+ IntSet& GetExSet( nxsstring nm );
+ nxsstring GetDefExSetName();
+ void ApplyExSet( nxsstring nm );
+
+ virtual void Report( std::ostream& out );
+};
+
+#endif
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/assumptionsblock.h
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/charactersblock.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/charactersblock.cpp 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/charactersblock.cpp 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,3646 @@
+#include "nexusdefs.h"
+#include "xnexus.h"
+#include "nexustoken.h"
+#include "nexus.h"
+#include "setreader.h"
+#include "taxablock.h"
+#include "discretedatum.h"
+#include "discretematrix.h"
+#include "assumptionsblock.h"
+#include "charactersblock.h"
+
+using namespace std;
+
+/**
+ * @class CharactersBlock
+ * @file charactersblock.h
+ * @file charactersblock.cpp
+ * @author Paul O. Lewis
+ * @copyright Copyright © 1999. All Rights Reserved.
+ * @variable activeChar [bool*:private] activeChar[i] is true if character i not excluded; i is in range [0..nchar)
+ * @variable activeTaxon [bool*:private] activeTaxon[i] is true if taxon i not deleted; i is in range [0..ntax)
+ * @variable charLabels [LabelList:private] storage for character labels (if provided)
+ * @variable charStates [LabelListBag:private] storage for character state labels (if provided)
+ * @variable datatype [int:private] flag variable (see enum starting with standard)
+ * @variable deleted [IntSet:private] set of (0-offset) numbers for taxa that have been deleted
+ * @variable eliminated [IntSet:private] array of (0-offset) character numbers that have been ELIMINATEd (will remain empty if no ELIMINATE command encountered)
+ * @variable equates [AssocList:private] list of associations defined by EQUATE subcommand of FORMAT command
+ * @variable gap [char:private] gap symbol for use with molecular data
+ * @variable interleaving [bool:private] indicates matrix will be in interleaved format
+ * @variable labels [bool:private] indicates whether or not labels will appear on left side of matrix
+ * @variable matchchar [char:private] match symbol to use in matrix
+ * @variable matrix [DiscreteMatrix*:private] storage for discrete data
+ * @variable missing [char:private] missing data symbol
+ * @variable nchar [int:private] number of columns in matrix (same as ncharTotal unless some characters were ELIMINATEd, in which case ncharTotal > nchar)
+ * @variable ncharTotal [int:private] total number of characters (same as nchar unless some characters were ELIMINATEd, in which case ncharTotal > nchar)
+ * @variable newchar [bool:private] true unless CHARLABELS or CHARSTATELABELS command read
+ * @variable newtaxa [bool:private] true if NEWTAXA keyword encountered in DIMENSIONS command
+ * @variable ntax [int:private] number of rows in matrix (same as ntaxTotal unless fewer taxa appeared in CHARACTERS MATRIX command than were specified in the TAXA block, in which case ntaxTotal > ntax)
+ * @variable ntaxTotal [int:private] total number of taxa (same as ntax unless fewer taxa appeared in CHARACTERS MATRIX command than were specified in the TAXA block, in which case ntaxTotal > ntax)
+ * @variable respectingCase [bool:private] if true, RESPECTCASE keyword specified in FORMAT command
+ * @variable symbols [char*:private] list of valid character state symbols
+ * @variable charPos [int*:private] maps character numbers in the data file to column numbers in matrix (necessary if some characters have been ELIMINATEd)
+ * @variable taxa [TaxaBlock&:protected] reference to the TAXA block in which taxon labels are stored
+ * @variable taxonPos [int*:private] maps taxon numbers in the data file to row numbers in matrix (necessary if fewer taxa appear in CHARACTERS block MATRIX command than are specified in the TAXA block)
+ * @variable tokens [bool:private] if false, data matrix entries must be single symbols; if true, multicharacter entries are allows
+ * @variable transposing [bool:private] indicates matrix will be in transposed format
+ * @see DiscreteDatum
+ * @see DiscreteMatrix
+ * @see LabelListAssoc
+ * @see Nexus
+ * @see NexusBlock
+ * @see NexusReader
+ * @see NexusToken
+ * @see SetReader
+ * @see TaxaBlock
+ * @see XNexus
+ *
+ * This class handles reading and storage for the Nexus block CHARACTERS.
+ * It overrides the member functions Read and Reset, which are abstract
+ * virtual functions in the base class NexusBlock.
+ *
+ * <P>The issue of bookkeeping demands a careful explanation. Users are
+ * allowed to control the number of characters analyzed either by "eliminating"
+ * or "excluding" characters. Characters can be <b>eliminated</b> (by using the
+ * ELIMINATE command) at the time of execution of the data file, but not
+ * thereafter. Characters can, however, be <b>excluded</b> at any time after the
+ * data are read. No storage is provided for eliminated characters, whereas
+ * excluded characters must be stored because at any time they could be restored
+ * to active status. Because one can depend on eliminated characters continuing
+ * to be eliminated, it would be inefficient to constantly have to check
+ * whether a character has been eliminated. Hence, the characters are renumbered
+ * so that one can efficiently traverse the entire range of non-eliminated
+ * characters. The original range of characters will be hereafter denoted
+ * [0..ncharTotal), whereas the new, reduced range will be denoted [0..nchar).
+ * The two ranges exactly coincide if ncharTotal = nchar (i.e., no ELIMINATE
+ * command was specified in the CHARACTERS block.
+ *
+ * <P>The possibility for eliminating and excluding characters creates a very
+ * confusing situation that is exacerbated by the fact that character <i>indices</i>
+ * used in the code begin at 0 whereas character <i>numbers</i> in the data file
+ * begin at 1. The convention used hereafter will be to specify "character number k"
+ * when discussing 1-offset character numbers in the data file and either "character index k"
+ * or simply "character k" when discussing 0-offset character indices.
+ *
+ * There are several functions (and data structures) that provide services related to
+ * keeping track of the correspondence between character indices in the stored data matrix
+ * compared to character numbers in the original data file. The array <b>charPos</b> can
+ * be used to find the index of one of the original characters in the matrix. The
+ * function <b>GetCharPos</b> provides public access to the protected charPos array. For
+ * example, if character 9 (= character number 10) was the only one ELIMINATEd,
+ * GetCharPos(9) would return -1 indicating that that character 9 does not now exist.
+ * GetCharPos(10) returns 9 indicating that character 10 in the data file corresponds
+ * to character 9 in the stored data matrix. All public functions in which a
+ * character number must be supplied (such as GetInternalRepresentation) assume
+ * that the character number is the <i>current</i> position of the character in
+ * the data matrix. This allows one to quickly traverse the data matrix without having to
+ * constantly check whether or not a character was eliminated. Note that
+ * <b>GetNChar</b> returns nchar, not ncharTotal, and this function should be used
+ * to obtain the endpoint for a traversal of characters in the matrix.
+ * Other functions requiring a (current) character index are listed below:
+ *
+ * <pre>
+ * int GetInternalRepresentation( int i, int j, int k = 0 );
+ * int GetNumStates( int i, int j );
+ * virtual int GetObsNumStates( int j );
+ * int GetOrigCharIndex( int j );
+ * int GetOrigCharNumber( int j );
+ * char GetState( int i, int j, int k = 0 );
+ * bool HandleNextState( NexusToken& token, int i, int j );
+ * int HandleTokenState( token, j );
+ * bool IsGapState( int i, int j );
+ * bool IsMissingState( int i, int j );
+ * bool IsPolymorphic( int i, int j );
+ * void ShowStateLabels( ostream& out, int i, int j );
+ * </pre>
+ *
+ * <p>The following function is exceptional in requiring (by necessity) the original
+ * character index:
+ *
+ * <pre>
+ * bool IsEliminated( int origCharIndex );
+ * </pre>
+ *
+ * <p>The function <b>GetOrigCharIndex</b> returns the original character index for any
+ * current character index. This is useful only when outputting information that
+ * will be seen by the user, and in this case, it is really the character <i>number</i>
+ * that should be output. To get the original character number, either
+ * add 1 to GetOrigCharIndex or call <b>GetOrigCharNumber</b> function (which simply returns
+ * GetOrigCharIndex + 1).
+ *
+ * <p>Now we must deal with the issue of character <i>exclusion</i>. A character may be
+ * excluded by calling the function <b>ExcludeCharacter</b> and providing the <i>current</i> character index.
+ * or by calling the function <b>ApplyExset</b> and supplying an exclusion set comprising <i>original</i>
+ * character indices. These functions manipulate a bool array, <b>activeChar</b>, which can be
+ * queried using one of two functions: <b>IsActiveChar</b> or <b>IsExcluded</b>. The array activeChar is
+ * nchar elements long, so IsActiveChar and IsExcluded both accept only current character
+ * indices. Thus, a normal loop through all characters in the data matrix should look
+ * something like this:
+ * <pre>
+ * for( int j = 0; j < nchar; j++ ) {
+ * if( IsExcluded(j) ) continue;
+ * .
+ * .
+ * .
+ * }
+ * </pre>
+ *
+ * A corresponding set of data structures and functions exists to provide the same
+ * services for taxa. Thus, <b>ntax</b> holds the current number of taxa, whereas <b>ntaxTotal</b>
+ * holds the number of taxa specified in the TAXA block. If data is provided in
+ * the MATRIX command for all taxa listed in the TAXA block, ntax will be equal to
+ * ntaxTotal. If data is not provided for some of the taxa, the ones left out
+ * are treated just like eliminated characters. The function <b>GetTaxonPos</b> can be
+ * used to query the <b>taxonPos</b> array, which behaves like the charPos array does
+ * for characters: -1 for element i means that the taxon whose original index
+ * was i has been "eliminated" and no data is stored for it in the matrix. Otherwise,
+ * <b>GetTaxonPos(i)</b> returns the current index corresponding to the taxon with an
+ * original index of i. The function <b>GetNTax</b> returns ntax, whereas <b>GetNTaxTotal</b>
+ * must be used to gain access to ntaxTotal (but this is seldom necessary).
+ * The functions <b>GetOrigTaxonIndex</b> and <b>GetOrigTaxonNumber</b> behave like their
+ * character counterparts, GetOrigCharIndex and GetOrigCharNumber. Like characters,
+ * taxa can be temporarily inactivated so that they do not participate in any
+ * analyses.until they are reactivated by the user. Inactivation of a taxon is
+ * refered to as "deleting" the taxon, whereas "restoring" a taxon means reactivating
+ * it. Thus, the <b>ApplyDelset</b>, <b>DeleteTaxon</b>, and <b>RestoreTaxon</b> functions correspond
+ * to the ApplyExset, ExcludeCharacter, and IncludeCharacter functions for characters.
+ * To query whether a taxon is currently deleted, use either <b>IsActiveTaxon</b> or
+ * <b>IsDeleted</b>. A normal loop across all active taxa can be constructed as follows:
+ * <pre>
+ * for( int i = 0; i < ntax; i++ ) {
+ * if( IsDeleted(i) ) continue;
+ * .
+ * .
+ * .
+ * }
+ * </pre>
+ *
+ * <P> Below is a table showing the correspondence between the elements of a
+ * CHARACTERS block and the variables and member functions that can be used
+ * to access each piece of information stored.
+ *
+ * <p><table border=1>
+ * <tr>
+ * <th> Nexus command
+ * <th> Nexus subcommand
+ * <th> Data Members
+ * <th> Member Functions
+ * <tr>
+ * <td rowspan=3> DIMENSIONS
+ * <td> NEWTAXA
+ * <td> bool <a href="#newtaxa">newtaxa</a>
+ * <td>
+ * <tr>
+ * <td> NTAX
+ * <td> int <a href="#ntax">ntax</a> (see also <a href="#ntaxTotal">ntaxTotal</a>)
+ * <td> int <a href="#GetNTax">GetNTax()</a> (see also <a href="#GetNumMatrixRows">GetNumMatrixRows()</a>)
+ * <tr>
+ * <td> NCHAR
+ * <td> int <a href="#nchar">nchar</a> (see also <a href="#ncharTotal">ncharTotal</a>)
+ * <td> int <a href="#GetNChar">GetNChar()</a> (see also <a href="#GetNumMatrixCols">GetNumMatrixCols()</a>)
+ * <tr>
+ * <td rowspan=13> FORMAT
+ * <td> DATATYPE
+ * <td> datatypes <a href="#datatype">datatype</a>
+ * <td> int <a href="#GetDataType">GetDataType()</a>
+ * <tr>
+ * <td> RESPECTCASE
+ * <td> bool <a href="#respectingCase">respectingCase</a>
+ * <td> bool <a href="#IsRespectCase">IsRespectCase()</a>
+ * <tr>
+ * <td> MISSING
+ * <td> char <a href="#missing">missing</a>
+ * <td> char <a href="#GetMissingSymbol">GetMissingSymbol()</a>
+ * <tr>
+ * <td> GAP
+ * <td> char <a href="#gap">gap</a>
+ * <td> char <a href="#GetGapSymbol">GetGapSymbol()</a>
+ * <tr>
+ * <td> SYMBOLS
+ * <td> char* <a href="#symbols">symbols</a>
+ * <td> char* <a href="#GetSymbols">GetSymbols()</a>
+ * <tr>
+ * <td> EQUATE
+ * <td> AssocList <a href="#equates">equates</a>
+ * <td> char* <a href="#GetEquateKey">GetEquateKey( int k )</a>
+ * <br> char* <a href="#GetEquateValue">GetEquateValue( int k )</a>
+ * <br> int <a href="#GetNumEquates">GetNumEquates()</a>
+ * <tr>
+ * <td> MATCHCHAR
+ * <td> char <a href="#matchchar">matchchar</a>
+ * <td> char <a href="#GetMatchcharSymbol">GetMatchcharSymbol()</a>
+ * <tr>
+ * <td> (NO)LABELS
+ * <td> bool <a href="#labels">labels</a>
+ * <td> bool <a href="#IsLabels">IsLabels()</a>
+ * <tr>
+ * <td> TRANSPOSE
+ * <td> bool <a href="#transposing">transposing</a>
+ * <td> bool <a href="#IsTranspose">IsTranspose()</a>
+ * <tr>
+ * <td> INTERLEAVE
+ * <td> bool <a href="#interleaving">interleaving</a>
+ * <td> bool <a href="#IsInterleave">IsInterleave()</a>
+ * <tr>
+ * <td> ITEMS
+ * <td colspan=2> Only ITEMS=STATES implemented
+ * <tr>
+ * <td> STATESFORMAT
+ * <td colspan=2> Only STATESFORMAT=STATESPRESENT implemented
+ * <tr>
+ * <td> (NO)TOKENS
+ * <td> bool <a href="#tokens">tokens</a>
+ * <td> bool <a href="#IsTokens">IsTokens()</a>
+ * <tr>
+ * <td rowspan=1 colspan=2 align=left> ELIMINATE
+ * <td> IntSet <a href="#eliminated">eliminated</a>
+ * <td> bool <a href="#IsEliminated">IsEliminated( int origCharIndex )</a>
+ * <br> int <a href="#GetNumEliminated">GetNumEliminated()</a>
+ * <tr>
+ * <td rowspan=1 colspan=2 align=left> MATRIX
+ * <td> DiscreteMatrix* <a href="#matrix">matrix</a>
+ * <td> char <a href="#GetState">GetState( int i, int j, int k = 0 )</a>
+ * <br> int <a href="#GetInternalRepresentation">GetInternalRepresentation( int i, int j, int k = 0 )</a>
+ * <br> int <a href="#GetNumStates">GetNumStates( int i, int j )</a>
+ * <br> int <a href="#GetNumMatrixRows">GetNumMatrixRows()</a>
+ * <br> int <a href="#GetNumMatrixCols">GetNumMatrixCols()</a>
+ * <br> bool <a href="#IsPolymorphic">IsPolymorphic( int i, int j )</a>
+ * </table>
+ */
+
+/**
+ * @enumeration
+ * @enumitem standard [0] means standard data type
+ * @enumitem dna [1] means dna data type
+ * @enumitem rna [2] means rna data type
+ * @enumitem nucleotide [3] means nucleotide data type
+ * @enumitem protein [4] means protein data type
+ * @enumitem continuous [5] means continuous data type
+ *
+ * For use with the variable datatype. Default is 0 (standard data type).
+ */
+
+/**
+ * @constructor
+ * @param tb [TaxaBlock&] the taxa block object to consult for taxon labels
+ * @param ab [AssumptionsBlock&] the assumptions block object to consult for exclusion sets
+ *
+ * Performs the following initializations:
+ * <table>
+ * <tr><th align="left">Variable <th> <th align="left"> Initial Value
+ * <tr><td> id <td>= <td> "CHARACTERS"
+ * <tr><td> datatype <td>= <td> standard
+ * <tr><td> gap <td>= <td> '\0'
+ * <tr><td> interleaving <td>= <td> false
+ * <tr><td> labels <td>= <td> true
+ * <tr><td> matchchar <td>= <td> '\0'
+ * <tr><td> matrix <td>= <td> NULL
+ * <tr><td> missing <td>= <td> '?'
+ * <tr><td> nchar <td>= <td> 0
+ * <tr><td> ncharTotal <td>= <td> 0
+ * <tr><td> newchar <td>= <td> true
+ * <tr><td> newtaxa <td>= <td> false
+ * <tr><td> ntax <td>= <td> 0
+ * <tr><td> ntaxTotal <td>= <td> 0
+ * <tr><td> respectingCase <td>= <td> false
+ * <tr><td> symbols <td>= <td> "01"
+ * <tr><td> taxa <td>= <td> tb
+ * <tr><td> charPos <td>= <td> NULL
+ * <tr><td> taxonPos <td>= <td> NULL
+ * <tr><td> tokens <td>= <td> false
+ * <tr><td> transposing <td>= <td> false
+ * </table>
+ */
+CharactersBlock::CharactersBlock( TaxaBlock& tb, AssumptionsBlock& ab )
+ : taxa(tb), assumptionsBlock(ab), NexusBlock()
+{
+ id = "CHARACTERS";
+
+ symbols = new char[NCL_MAX_STATES+1];
+ symbols[0] = '0';
+ symbols[1] = '1';
+ symbols[2] = '\0';
+
+ ntax = 0;
+ ntaxTotal = 0;
+ nchar = 0;
+ ncharTotal = 0;
+ newchar = true;
+ newtaxa = false;
+ interleaving = false;
+ transposing = false;
+ respectingCase = false;
+ labels = true;
+ tokens = false;
+ datatype = standard;
+ missing = '?';
+ gap = '\0';
+ matchchar = '\0';
+ matrix = NULL;
+ charPos = NULL;
+ taxonPos = NULL;
+ activeTaxon = NULL;
+ activeChar = NULL;
+}
+
+/**
+ * @destructor
+ *
+ * Deletes any memory allocated to the arrays symbols, charPos, taxonPos,
+ * activeChar, and activeTaxon. Flushes the containers charLabels, eliminated,
+ * and deleted. Also deletes memory allocated to matrix.
+ */
+CharactersBlock::~CharactersBlock()
+{
+ // Free memory allocated for the DiscreteMatrix object matrix
+ //
+ if( matrix != NULL )
+ delete matrix;
+
+ // Free memory allocated for the arrays symbols, charPos, taxonPos,
+ // activeChar and activeTaxon
+ //
+ if( symbols != NULL )
+ delete [] symbols;
+ if( charPos != NULL )
+ delete [] charPos;
+ if( taxonPos != NULL )
+ delete [] taxonPos;
+ if( activeChar != NULL )
+ delete [] activeChar;
+ if( activeTaxon != NULL )
+ delete [] activeTaxon;
+
+ // Flush the containers eliminated, equates, charStates, and charLabels
+ //
+ charLabels.erase( charLabels.begin(), charLabels.end() );
+ charStates.erase( charStates.begin(), charStates.end() );
+ equates.erase( equates.begin(), equates.end() );
+ eliminated.erase( eliminated.begin(), eliminated.end() );
+}
+
+/**
+ * @method ApplyDelset [void:protected]
+ * @param delset [IntSet&] set of taxon indices to delete in range [0..ntaxTotal)
+ *
+ * Deletes (i.e., excludes from further analyses) taxa
+ * whose indices are contained in the set delset. The
+ * taxon indices refer to original taxon indices, not current
+ * indices (originals will equal current ones iff number of
+ * taxa in TAXA block equals number of taxa in MATRIX command).
+ * Returns the number of taxa actually deleted (some may have
+ * already been deleted)
+ */
+int CharactersBlock::ApplyDelset( IntSet& delset )
+{
+ assert( activeTaxon != NULL );
+ int num_deleted = 0;
+ int k;
+ //for( k = 0; k < ntax; k++ )
+ // activeTaxon[k] = true;
+
+ IntSet::const_iterator i;
+ for( i = delset.begin(); i != delset.end(); i++ ) {
+ k = taxonPos[*i];
+ if( k < 0 ) continue;
+
+ // k greater than -1 means data was supplied for
+ // this taxon and therefore it can be deleted
+ //
+ if( activeTaxon[k] == true )
+ num_deleted++;
+ activeTaxon[k] = false;
+ }
+ return num_deleted;
+}
+
+/**
+ * @method ApplyExset [void:protected]
+ * @param exset [IntSet&] set of character indices to exclude in range [0..ncharTotal)
+ *
+ * Excludes characters whose indices are contained in the set exset. The indices supplied
+ * should refer to the original character indices, not current character indices.
+ * Returns number of characters actually excluded (some may have already been
+ * excluded).
+ */
+int CharactersBlock::ApplyExset( IntSet& exset )
+{
+ assert( activeChar != NULL );
+ int num_excluded = 0;
+ int k;
+ //for( k = 0; k < nchar; k++ )
+ // activeChar[k] = true;
+
+ IntSet::const_iterator i;
+ for( i = exset.begin(); i != exset.end(); i++ ) {
+ k = charPos[*i];
+ if( k < 0 ) continue;
+
+ // k greater than -1 means character was not eliminated
+ // and therefore can be excluded
+ //
+ if( activeChar[k] == true )
+ num_excluded++;
+ activeChar[k] = false;
+ }
+ return num_excluded;
+}
+
+/**
+ * @method ApplyIncludeset [void:protected]
+ * @param inset [IntSet&] set of character indices to include in range [0..ncharTotal)
+ *
+ * Includes characters whose indices are contained in the set inset. The indices supplied
+ * should refer to the original character indices, not current character indices.
+ */
+int CharactersBlock::ApplyIncludeset( IntSet& inset )
+{
+ assert( activeChar != NULL );
+ int num_included = 0;
+ int k;
+ //for( k = 0; k < nchar; k++ )
+ // activeChar[k] = true;
+
+ IntSet::const_iterator i;
+ for( i = inset.begin(); i != inset.end(); i++ ) {
+ k = charPos[*i];
+ if( k < 0 ) continue;
+
+ // k greater than -1 means character was not eliminated
+ // and therefore can be excluded
+ //
+ if( activeChar[k] == false )
+ num_included++;
+ activeChar[k] = true;
+ }
+ return num_included;
+}
+
+/**
+ * @method ApplyRestoreset [void:protected]
+ * @param restoreset [IntSet&] set of taxon indices to restore in range [0..ntaxTotal)
+ *
+ * Restores (i.e., includes in further analyses) taxa
+ * whose indices are contained in the set restoreset. The
+ * taxon indices refer to original taxon indices, not current
+ * indices (originals will equal current ones iff number of
+ * taxa in TAXA block equals number of taxa in MATRIX command).
+ */
+int CharactersBlock::ApplyRestoreset( IntSet& restoreset )
+{
+ assert( activeTaxon != NULL );
+ int num_restored = 0;
+ int k;
+ //for( k = 0; k < ntax; k++ )
+ // activeTaxon[k] = true;
+
+ IntSet::const_iterator i;
+ for( i = restoreset.begin(); i != restoreset.end(); i++ ) {
+ k = taxonPos[*i];
+ if( k < 0 ) continue;
+
+ // k greater than -1 means data was supplied for
+ // this taxon and therefore it can be restored
+ //
+ if( activeTaxon[k] == false )
+ num_restored++;
+ activeTaxon[k] = true;
+ }
+ return num_restored;
+}
+
+/**
+ * @method BuildCharPosArray [void:protected]
+ * @param check_eliminated [void] if true, eliminated set has something in it and should be consulted (default is false)
+ *
+ * Use to allocate memory for (and initialize) charPos array, which keeps track
+ * of the original character index in cases where characters have been eliminated.
+ * This function is called by HandleEliminate in response to encountering an ELIMINATE
+ * command in the data file, and this is probably the only place where BuildCharPosArray
+ * should be called with check_eliminated = true. BuildCharPosArray is also called
+ * in HandleMatrix, HandleCharstatelabels, HandleStatelabels, and HandleCharlabels.
+ */
+void CharactersBlock::BuildCharPosArray( bool check_eliminated /* = false */ )
+{
+ assert( charPos == NULL );
+
+ charPos = new int[ncharTotal];
+
+ int k = 0;
+ for( int j = 0; j < ncharTotal; j++ ) {
+ if( check_eliminated && IsEliminated(j) )
+ charPos[j] = -1;
+ else
+ charPos[j] = k++;
+ }
+}
+
+/**
+ * @method CharLabelToNumber [int:protected]
+ *
+ * Converts a character label to a number corresponding to
+ * the character's position within charLabels.
+ * This method overrides the virtual function of the
+ * same name in the NexusBlock base class. If s is
+ * not a valid character label, returns the value 0.
+ */
+int CharactersBlock::CharLabelToNumber( nxsstring s )
+{
+ LabelList::const_iterator iter
+ = find( charLabels.begin(), charLabels.end(), s );
+
+ int k = 1;
+ if( iter != charLabels.end() )
+ k += ( iter - charLabels.begin() );
+ else
+ k = 0;
+
+ return k;
+}
+
+/**
+ * @method DebugShowMatrix [int:protected]
+ * @param out [ostream&] output stream on which to print matrix
+ * @param marginText [char*] nxsstring to print first on each line
+ *
+ * Provides a dump of the contents of the matrix variable. Useful for testing
+ * whether data is being read as expected. The default for marginText is NULL,
+ * which has the effect of placing the matrix output flush left. If each line
+ * of output should be prefaced with a tab character, specify marginText = "\t".
+ */
+void CharactersBlock::DebugShowMatrix( std::ostream& out, char* marginText /* = NULL */ )
+{
+ int i, k;
+ int width = taxa.GetMaxTaxonLabelLength();
+
+ for( i = 0; i < ntaxTotal; i++ )
+ {
+ // Grab taxon name from taxa block
+ // Taxa may not have been presented in the matrix in the same order
+ // as they were stored in the taxa block, so use taxonPos array to
+ // spit them out in the order they appeared in the TAXA command.
+ // If the taxonPos cell is -1, then that means there is no row of
+ // the data matrix corresponding to that taxon
+ //
+ if( taxonPos[i] < 0 )
+ continue;
+ else
+ {
+ if( marginText != NULL )
+ out << marginText;
+ nxsstring currTaxonLabel = taxa.GetTaxonLabel( taxonPos[i] );
+ out << currTaxonLabel;
+
+ // print out enough spaces to even up the left edge of the matrix output
+ int currTaxonLabelLen = currTaxonLabel.size();
+ int diff = width - currTaxonLabelLen;
+ for( k = 0; k < diff+5; k++ )
+ out << ' ';
+ }
+
+ for( int currChar = 0; currChar < ncharTotal; currChar++ ) {
+ int j = charPos[currChar];
+ if( j < 0 ) continue;
+ ShowStateLabels( out, i, j );
+ }
+
+ out << endl;
+ }
+}
+
+/**
+ * @method DeleteTaxon [void:protected]
+ * @param i [int] index of taxon to delete in range [0..ntax)
+ *
+ * Deletes taxon whose 0-offset current index is i. If taxon
+ * has already been deleted, this function has no effect.
+ */
+void CharactersBlock::DeleteTaxon( int i )
+{
+ activeTaxon[i] = false;
+}
+
+/**
+ * @method ExcludeCharacter [void:protected]
+ * @param i [int] index of character to exclude in range [0..nchar)
+ *
+ * Excludes character whose 0-offset current index is i. If character
+ * has already been excluded, this function has no effect.
+ */
+void CharactersBlock::ExcludeCharacter( int i )
+{
+ activeChar[i] = false;
+}
+
+/**
+ * @method GetActiveCharArray [bool*:public]
+ *
+ * Returns activeChar data member (pointer to first element of the activeChar array).
+ * Access to this protected data member is necessary in certain circumstances, such as
+ * when a CharactersBlock object is stored in another class, and that other class
+ * needs direct access to the activeChar array even though it is not derived from
+ * CharactersBlock.
+ */
+bool* CharactersBlock::GetActiveCharArray()
+{
+ return activeChar;
+}
+
+/**
+ * @method GetActiveTaxonArray [bool*:public]
+ *
+ * Returns activeTaxon data member (pointer to first element of the activeTaxon array).
+ * Access to this protected data member is necessary in certain circumstances, such as
+ * when a CharactersBlock object is stored in another class, and that other class
+ * needs direct access to the activeTaxon array even though it is not derived from
+ * CharactersBlock.
+ */
+bool* CharactersBlock::GetActiveTaxonArray()
+{
+ return activeTaxon;
+}
+
+/**
+ * @method GetCharLabel [nxsstring:public]
+ * @param i [int] the character in range [0..nchar)
+ *
+ * Returns label for character i, if a label has been specified.
+ * If no label was specified, returns string containing a single blank (i.e., " ").
+ */
+nxsstring CharactersBlock::GetCharLabel( int i )
+{
+ nxsstring s = " ";
+ if( i < charLabels.size() )
+ s = charLabels[i];
+ return s;
+}
+
+/**
+ * @method GetCharPos [int:public]
+ * @param origCharIndex [int] original index of character in range [0..ncharTotal-1)
+ *
+ * Returns current index of character in matrix. This may
+ * differ from the original index if some characters were
+ * removed using an ELIMINATE command. For example, character
+ * number 9 in the original data matrix may now be at position
+ * 8 if the original character 8 was ELIMINATEd.
+ * The parameter origCharIndex is assumed to range from 0 to
+ * ncharTotal-1.
+ */
+int CharactersBlock::GetCharPos( int origCharIndex )
+{
+ assert( charPos != NULL );
+ assert( origCharIndex >= 0 );
+ assert( origCharIndex < ncharTotal );
+
+ return charPos[origCharIndex];
+}
+
+/**
+ * @method GetGapSymbol [char:protected]
+ *
+ * Returns the gap symbol currently in effect. If no gap
+ * symbol specified, returns '\0'.
+ */
+char CharactersBlock::GetGapSymbol()
+{
+ return gap;
+}
+
+/**
+ * @method GetTaxPos [int:public]
+ * @param origTaxonIndex [int] original index of taxon
+ *
+ * Returns current index of taxon in matrix. This may
+ * differ from the original index if some taxa were listed in
+ * the TAXA block but not in the DATA or CHARACTERS block.
+ * The parameter origTaxonIndex is assumed to range from 0 to
+ * ntaxTotal-1.
+ */
+int CharactersBlock::GetTaxPos( int origTaxonIndex )
+{
+ assert( taxonPos != NULL );
+ assert( origTaxonIndex >= 0 );
+ assert( origTaxonIndex < ntaxTotal );
+
+ return taxonPos[origTaxonIndex];
+}
+
+/**
+ * @method GetDataType [int:public]
+ *
+ * Returns value of datatype.
+ */
+int CharactersBlock::GetDataType()
+{
+ return (int)datatype;
+}
+
+/**
+ * @method GetMatchcharSymbol [char:protected]
+ *
+ * Returns the matchchar symbol currently in effect. If no matchchar
+ * symbol specified, returns '\0'.
+ */
+char CharactersBlock::GetMatchcharSymbol()
+{
+ return matchchar;
+}
+
+/**
+ * @method GetMaxObsNumStates [int:public virtual]
+ *
+ * Returns the maximum observed number of states for any character.
+ * Note: this function is rather slow, as it must walk through
+ * each row of each column, adding the states encountered to a set,
+ * then finally returning the size of the set. Thus, if this
+ * function is called often, it would be advisable to initialize
+ * an array using this function, then refer to the array subsequently.
+ */
+int CharactersBlock::GetMaxObsNumStates()
+{
+ int max = 2;
+ for( int j = 0; j < nchar; j++ ) {
+ int ns = GetObsNumStates(j);
+ if( ns <= max ) continue;
+ max = ns;
+ }
+ return max;
+}
+
+/**
+ * @method GetInternalRepresentation [int:protected]
+ * @param i [int] the taxon in range [0..ntax)
+ * @param j [int] the character in range [0..nchar)
+ * @param k [int] the state to return (use default of 0 if only one state present)
+ *
+ * Returns internal representation of the state for taxon i, character j.
+ * The default for k is 0, which corresponds to the normal
+ * situation in which there is only one state with no uncertainty or polymorphism.
+ * If there are multiple states, specify a number in the range [0..n) where
+ * n is the number of states returned by the GetNumStates function. Use the
+ * IsPolymorphic function to determine whether the multiple states correspond to
+ * uncertainty in state assignment or polymorphism in the taxon.
+ *
+ * <p> The value returned from this function is one of the following:
+ * <ul>
+ * <li> -3 means gap state (see note below)
+ * <li> -2 means missing state (see note below)
+ * <li> an integer 0 or greater is internal representation of a state
+ * </ul>
+ * Note: gap and missing states are actually represented internally in a
+ * different way; for a description of the actual internal representation of
+ * states, see <a href="DiscreteDatum.html">DiscreteDatum</a>
+ */
+int CharactersBlock::GetInternalRepresentation( int i, int j, int k /* = 0 */ )
+{
+ if( IsGapState( i, j ) )
+ return -3;
+ else if( IsMissingState( i, j ) )
+ return -2;
+ else
+ return matrix->GetState( i, j, k );
+}
+
+/**
+ * @method GetMissingSymbol [char:protected]
+ *
+ * Returns the missing data symbol currently in effect. If no missing
+ * data symbol specified, returns '\0'.
+ */
+char CharactersBlock::GetMissingSymbol()
+{
+ return missing;
+}
+
+/**
+ * @method GetNChar [int:public]
+ *
+ * Returns the value of nchar.
+ */
+int CharactersBlock::GetNChar()
+{
+ return nchar;
+}
+
+/**
+ * @method GetNCharTotal [int:public]
+ *
+ * Returns the value of ncharTotal.
+ */
+int CharactersBlock::GetNCharTotal()
+{
+ return ncharTotal;
+}
+
+/**
+ * @method GetNTax [int:public]
+ *
+ * Returns the value of ntax.
+ */
+int CharactersBlock::GetNTax()
+{
+ return ntax;
+}
+
+/**
+ * @method GetNTaxTotal [int:public]
+ *
+ * Returns the value of ntaxTotal.
+ */
+int CharactersBlock::GetNTaxTotal()
+{
+ return ntaxTotal;
+}
+
+/**
+ * @method GetNumActiveChar [int:public]
+ *
+ * Performs a count of the number of characters for which activeChar
+ * array reports true.
+ */
+int CharactersBlock::GetNumActiveChar()
+{
+ int num_active_char = 0;
+ for( int i = 0; i < nchar; i++ ) {
+ if( activeChar[i] == false )
+ continue;
+ num_active_char++;
+ }
+ return num_active_char;
+}
+
+/**
+ * @method GetNumActiveTaxa [int:public]
+ *
+ * Performs a count of the number of taxa for which activeTaxon
+ * array reports true.
+ */
+int CharactersBlock::GetNumActiveTaxa()
+{
+ int num_active_taxa = 0;
+ for( int i = 0; i < ntax; i++ ) {
+ if( activeTaxon[i] == false )
+ continue;
+ num_active_taxa++;
+ }
+ return num_active_taxa;
+}
+
+/**
+ * @method GetNumEliminated [int:protected]
+ *
+ * Returns the number of characters eliminated with the ELIMINATE command.
+ */
+int CharactersBlock::GetNumEliminated()
+{
+ return ( ncharTotal - nchar );
+}
+
+/**
+ * @method GetNumEquates [int:protected]
+ *
+ * Returns the number of stored equate associations.
+ */
+int CharactersBlock::GetNumEquates()
+{
+ return equates.size();
+}
+
+/**
+ * @method GetNumMatrixCols [int:public]
+ *
+ * Returns the number of actual columns in matrix. This number is equal
+ * to nchar, but can be smaller than ncharTotal since the user could have
+ * ELIMINATEd some of the characters.
+ */
+int CharactersBlock::GetNumMatrixCols()
+{
+ return nchar;
+}
+
+/**
+ * @method GetNumMatrixRows [int:public]
+ *
+ * Returns the number of actual rows in matrix. This number is equal
+ * to ntax, but can be smaller than ntaxTotal since the user did not
+ * have to provide data for all taxa specified in the TAXA block.
+ */
+int CharactersBlock::GetNumMatrixRows()
+{
+ return ntax;
+}
+
+/**
+ * @method GetNumStates [int:public]
+ * @param i [int] the taxon in range [0..ntax)
+ * @param j [int] the character in range [0..nchar)
+ *
+ * Returns the number of states for taxon i, character j.
+ */
+int CharactersBlock::GetNumStates( int i, int j )
+{
+ return matrix->GetNumStates( i, j );
+}
+
+/**
+ * @method GetObsNumStates [int:public virtual]
+ * @param j [int] the character in range [0..nchar)
+ *
+ * Returns the number of states for character j over all taxa.
+ * Note: this function is rather slow, as it must walk through
+ * each row, adding the states encountered to a set, then finally
+ * returning the size of the set. Thus, if this function is called
+ * often, it would be advisable to initialize an array using this
+ * function, then refer to the array subsequently.
+ */
+int CharactersBlock::GetObsNumStates( int j )
+{
+ return matrix->GetObsNumStates( j );
+}
+
+/**
+ * @method GetOrigCharIndex [int:public]
+ * @param j [int] the character in range [0..nchar)
+ *
+ * Returns the original character index in the
+ * range [0..ncharTotal). Will be equal to j unless some
+ * characters were ELIMINATEd.
+ */
+int CharactersBlock::GetOrigCharIndex( int j )
+{
+ int k = j;
+ while( k < ncharTotal && charPos[k] < j )
+ k++;
+
+ assert( k < ncharTotal );
+
+ return k;
+}
+
+/**
+ * @method GetOrigCharNumber [int:public]
+ * @param j [int] the character in range [0..nchar)
+ *
+ * Returns the original character number (used in the
+ * NEXUS data file) in the range [1..ncharTotal].
+ * Will be equal to j+1 unless some characters were ELIMINATEd.
+ */
+int CharactersBlock::GetOrigCharNumber( int j )
+{
+ return ( 1 + GetOrigCharIndex(j) );
+}
+
+/**
+ * @method GetOrigTaxonIndex [int:public]
+ * @param i [int] the taxon in range [0..ntax)
+ *
+ * Returns the original taxon index in the
+ * range [0..ntaxTotal). Will be equal to i unless
+ * data was not provided for some taxa listed in
+ * a preceding TAXA block.
+ */
+int CharactersBlock::GetOrigTaxonIndex( int i )
+{
+ int k = i;
+ while( k < ntaxTotal && taxonPos[k] < i )
+ k++;
+
+ assert( k < ntaxTotal );
+
+ return k;
+}
+
+/**
+ * @method GetOrigTaxonNumber [int:public]
+ * @param i [int] the character in range [0..ntax)
+ *
+ * Returns the original taxon number (used in the
+ * NEXUS data file) in the range [1..ntaxTotal].
+ * Will be equal to i+1 unless data was not provided
+ * for some taxa listed in a preceding TAXA block.
+ */
+int CharactersBlock::GetOrigTaxonNumber( int i )
+{
+ return ( 1 + GetOrigTaxonIndex(i) );
+}
+
+/**
+ * @method GetState [char:public]
+ * @param i [int] the taxon in range [0..ntax)
+ * @param j [int] the character in range [0..nchar)
+ * @param k [int] the state to return (use default of 0 if only one state present)
+ *
+ * Returns symbol from symbols list representing the state for taxon i
+ * and character j. The default for k is 0, which corresponds to the normal
+ * situation in which there is only one state with no uncertainty or polymorphism.
+ * If there are multiple states, specify a number in the range [0..n) where
+ * n is the number of states returned by the GetNumStates function. Use the
+ * IsPolymorphic function to determine whether the multiple states correspond to
+ * uncertainty in state assignment or polymorphism in the taxon.
+ * Assumes symbols is not equal to NULL.
+ */
+char CharactersBlock::GetState( int i, int j, int k /* = 0 */ )
+{
+ assert( symbols != NULL );
+ char state_char = '\0';
+
+ int symbolsLen = strlen(symbols);
+ int p = matrix->GetState( i, j, k );
+ assert( p < symbolsLen );
+ state_char = *(symbols + p);
+
+ return state_char;
+}
+
+/**
+ * @method GetStateLabel [nxsstring:public]
+ * @param i [int] the locus in range [0..nchar)
+ * @param j [int] the state
+ *
+ * Returns label for character state j at character i, if a label has been specified.
+ * If no label was specified, returns string containing a single blank (i.e., " ").
+ */
+nxsstring CharactersBlock::GetStateLabel( int i, int j )
+{
+ nxsstring s = " ";
+ LabelListBag::const_iterator cib = charStates.find(i);
+ if( cib != charStates.end() && j < (*cib).second.size() )
+ s = (*cib).second[j];
+ return s;
+}
+
+/**
+ * @method GetSymbols [char*:public]
+ *
+ * Returns data member symbols. Warning: returned value may be NULL.
+ */
+char* CharactersBlock::GetSymbols()
+{
+ return symbols;
+}
+
+/**
+ * @method GetTaxonLabel [nxsstring:public]
+ * @param i [int] the taxon's position in the taxa block
+ *
+ * Returns label for taxon number i (i ranges from 0 to ntax-1).
+ */
+nxsstring CharactersBlock::GetTaxonLabel( int i )
+{
+ nxsstring s = taxa.GetTaxonLabel(i);
+ return s;
+}
+
+/**
+ * @method IncludeCharacter [void:protected]
+ * @param i [int] index of character to include in range [0..nchar)
+ *
+ * Includes character whose 0-offset current index is i. If character
+ * is already active, this function has no effect.
+ */
+void CharactersBlock::IncludeCharacter( int i )
+{
+ activeChar[i] = true;
+}
+
+/**
+ * @method IsActiveChar [bool:public]
+ * @param j [int] the character in question, in the range [0..nchar)
+ *
+ * Returns true if character j is active. If character j has been
+ * excluded, returns false. Note that it is irrelevant whether or
+ * not this character has been eliminated, since it is assumed that j
+ * refers to a non-eliminated character!
+ */
+bool CharactersBlock::IsActiveChar( int j )
+{
+ assert( j >= 0 );
+ assert( j < nchar );
+ return activeChar[j];
+}
+
+/**
+ * @method IsActiveTaxon [bool:public]
+ * @param i [int] the taxon in question, in the range [0..ntax)
+ *
+ * Returns true if taxon i is active. If taxon i has been
+ * deleted, returns false.
+ */
+bool CharactersBlock::IsActiveTaxon( int i )
+{
+ assert( i >= 0 );
+ assert( i < ntax );
+ return activeTaxon[i];
+}
+
+/**
+ * @method IsDeleted [bool:public]
+ * @param i [int] the taxon in question, in the range [0..ntax)
+ *
+ * Returns true if taxon number i has been deleted, false otherwise.
+ */
+bool CharactersBlock::IsDeleted( int i )
+{
+ return !IsActiveTaxon(i);
+}
+
+/**
+ * @method IsEliminated [bool:public]
+ * @param origCharIndex [int] the character in question
+ *
+ * Returns true if character number origCharIndex was ELIMINATEd, false otherwise.
+ * Returns false immediately if "eliminated" set is empty.
+ */
+bool CharactersBlock::IsEliminated( int origCharIndex )
+{
+ // Note: it is tempting to try to streamline this method
+ // by just looking up character j in charPos to see if it
+ // has been eliminated, but this temptation should be
+ // resisted since this function is used in setting up
+ // charPos in the first place!
+
+ if( eliminated.empty() )
+ return false;
+
+ IntSet::const_iterator found = eliminated.find(origCharIndex);
+ if( found == eliminated.end() )
+ return false;
+
+ return true;
+}
+
+/**
+ * @method IsExcluded [bool:public]
+ * @param j [int] the character in question, in the range [0..nchar)
+ *
+ * Returns true if character j has been excluded. If character j is
+ * active, returns false. Note that it is irrelevant whether or
+ * not this character has been eliminated, since it is assumed that j
+ * refers to a non-eliminated character!
+ */
+bool CharactersBlock::IsExcluded( int j )
+{
+ return !IsActiveChar(j);
+}
+
+/**
+ * @method IsGapState [bool:public]
+ * @param i [int] the taxon, in range [0..ntax)
+ * @param j [int] the character, in range [0..nchar)
+ *
+ * Returns 1 if the state at taxon i, character j is the gap state.
+ */
+bool CharactersBlock::IsGapState( int i, int j )
+{
+ return matrix->IsGap( i, j );
+}
+
+/**
+ * @method IsInterleave [bool:public]
+ *
+ * Returns true if INTERLEAVE was specified in the FORMAT command, false otherwise.
+ */
+bool CharactersBlock::IsInterleave()
+{
+ return interleaving;
+}
+
+/**
+ * @method IsLabels [bool:public]
+ *
+ * Returns true if LABELS was specified in the FORMAT command, false otherwise.
+ */
+bool CharactersBlock::IsLabels()
+{
+ return labels;
+}
+
+/**
+ * @method IsMissingState [bool:public]
+ * @param i [int] the taxon, in range [0..ntax)
+ * @param j [int] the character, in range [0..nchar)
+ *
+ * Returns 1 if the state at taxon i, character j is the missing state.
+ */
+bool CharactersBlock::IsMissingState( int i, int j )
+{
+ return matrix->IsMissing( i, j );
+}
+
+/**
+ * @method IsPolymorphic [bool:protected]
+ * @param i [int] the taxon in range [0..ntax)
+ * @param j [int] the character in range [0..nchar)
+ *
+ * Returns 1 if taxon i is polymorphic for character j, 0 otherwise.
+ * Note that return value will be 0 if there is only one state (i.e.,
+ * one cannot tell whether there is uncertainty using this function).
+ */
+bool CharactersBlock::IsPolymorphic( int i, int j )
+{
+ return matrix->IsPolymorphic( i, j );
+}
+
+/**
+ * @method IsRespectCase [bool:public]
+ *
+ * Returns 1 if RESPECTCASE was specified in the FORMAT command, 0 otherwise.
+ */
+bool CharactersBlock::IsRespectCase()
+{
+ return respectingCase;
+}
+
+/**
+ * @method IsTokens [bool:public]
+ *
+ * Returns true if TOKENS was specified in the FORMAT command, false otherwise.
+ */
+bool CharactersBlock::IsTokens()
+{
+ return tokens;
+}
+
+/**
+ * @method IsTranspose [bool:public]
+ *
+ * Returns true if TRANSPOSE was specified in the FORMAT command, false otherwise.
+ */
+bool CharactersBlock::IsTranspose()
+{
+ return transposing;
+}
+
+/**
+ * @method IsInSymbols [int:protected]
+ * @param ch [int] the symbol character to search for
+ *
+ * Returns 1 if ch can be found in symbols array. The value of respectingCase
+ * is used to determine whether the search should be case sensitive or not.
+ * Assumes symbols != NULL.
+ */
+int CharactersBlock::IsInSymbols( char ch )
+{
+ assert( symbols != NULL );
+ int symbolsLength = strlen(symbols);
+ int found = 0;
+ for( int i = 0; i < symbolsLength; i++ )
+ {
+ char char_in_symbols = ( respectingCase ? symbols[i] : (char)toupper(symbols[i]) );
+ char char_in_question = ( respectingCase ? ch : (char)toupper(ch) );
+ if( char_in_symbols != char_in_question ) continue;
+ found = 1;
+ break;
+ }
+ return found;
+}
+
+/**
+ * @method HandleCharlabels [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * Called when CHARLABELS command needs to be parsed from within the
+ * DIMENSIONS block. Deals with everything after the token CHARLABELS
+ * up to and including the semicolon that terminates the CHARLABELS
+ * command. If an ELIMINATE command has been processed, labels
+ * for eliminated characters will not be stored.
+ */
+void CharactersBlock::HandleCharlabels( NexusToken& token )
+{
+ int num_labels_read = 0;
+ charLabels.erase( charLabels.begin(), charLabels.end() );
+
+ if( charPos == NULL )
+ BuildCharPosArray();
+
+ for(;;)
+ {
+ token.GetNextToken();
+
+ // token should either be ';' or the name of a character
+ // (an isolated '_' character is converted automatically by
+ // token.GetNextToken() into a space, which is then stored
+ // as the character label)
+ //
+ if( token.Equals(";") ) {
+ break;
+ }
+ else {
+ num_labels_read++;
+
+ // check to make sure user is not trying to read in more
+ // character labels than there are characters
+ //
+ if( num_labels_read > (unsigned)ncharTotal ) {
+ errormsg = "Number of character labels exceeds NCHAR specified in DIMENSIONS command";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ if( !IsEliminated( num_labels_read - 1 ) )
+ charLabels.push_back( token.GetToken() );
+ }
+ }
+
+ newchar = false;
+}
+
+/**
+ * @method HandleCharstatelabels [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * Called when CHARSTATELABELS command needs to be parsed from within the
+ * CHARACTERS block. Deals with everything after the token CHARSTATELABELS
+ * up to and including the semicolon that terminates the CHARSTATELABELS
+ * command. Resulting charLabels vector will store labels only for
+ * characters that have not been ELIMINATEd, and likewise for charStates.
+ * Specifically, charStates[0] refers to the vector of character state
+ * labels for the first non-eliminated character.
+ */
+void CharactersBlock::HandleCharstatelabels( NexusToken& token )
+{
+ int currChar = 0;
+ bool semicolonFoundInInnerLoop = false;
+ bool tokenAlreadyRead = false;
+ bool save = true;
+
+ charStates.erase( charStates.begin(), charStates.end() );
+ charLabels.erase( charLabels.begin(), charLabels.end() );
+
+ if( charPos == NULL )
+ BuildCharPosArray();
+
+ for(;;)
+ {
+ save = true;
+
+ if( semicolonFoundInInnerLoop )
+ break;
+
+ if( tokenAlreadyRead )
+ tokenAlreadyRead = false;
+ else
+ token.GetNextToken();
+
+ if( token.Equals(";") )
+ break;
+
+ // token should be the character number; create a new association
+ //
+ int n = atoi( token.GetToken().c_str() );
+
+ if( n < 1 || n > ncharTotal || n <= currChar ) {
+ errormsg = "Invalid character number (";
+ errormsg += token.GetToken();
+ errormsg += ") found in CHARSTATELABELS command (either out of range or not interpretable as an integer)";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // If n is not the next character after currChar, need to add some dummy
+ // labels to charLabels list
+ //
+ while( n - currChar > 1 )
+ {
+ currChar++;
+ if( !IsEliminated( currChar - 1 ) )
+ charLabels.push_back(" ");
+ }
+
+ // If n refers to a character that has been ELIMINATEd, go through the motions of
+ // reading in the information but don't actually save any of it
+ //
+ currChar++;
+ assert( n == currChar );
+ if( IsEliminated(currChar-1) )
+ save = false;
+
+ token.GetNextToken();
+
+ // token should be the character label
+ //
+ if( save )
+ charLabels.push_back( token.GetToken() );
+
+ token.GetNextToken();
+
+ // token should be a slash character if state labels were provided
+ // for this character; otherwise, token should be one of the following:
+ // 1) the comma separating information for different characters, in
+ // which case we read in the next token (which should be the next
+ // character number)
+ // 2) the semicolon indicating the end of the command
+ //
+ if( !token.Equals("/") ) {
+ if( !token.Equals(",") && !token.Equals(";") ) {
+ errormsg = "Expecting a comma or semicolon here, but found (";
+ errormsg += token.GetToken();
+ errormsg += ") instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ if( token.Equals(",") )
+ token.GetNextToken();
+ tokenAlreadyRead = true;
+ continue;
+ }
+
+ // now create a new association for the character states list
+
+ for(;;)
+ {
+ token.GetNextToken();
+
+ if( token.Equals(";") ) {
+ semicolonFoundInInnerLoop = true;
+ break;
+ }
+
+ if( token.Equals(",") ) {
+ break;
+ }
+
+ if( save )
+ {
+ // token should be a character state label; add it to the list
+ //
+ nxsstring cslabel = token.GetToken();
+ int k = GetCharPos(n-1);
+ charStates[k].push_back( cslabel );
+ }
+
+ } // inner loop (grabbing state labels for character n)
+
+ } // outer loop
+
+ newchar = false;
+}
+
+/**
+ * @method HandleDimensions [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @param newtaxaLabel [nxsstring] the label used in data file for newtaxa
+ * @param ntaxLabel [nxsstring] the label used in data file for ntax
+ * @param ncharLabel [nxsstring] the label used in data file for nchar
+ * @throws XNexus
+ *
+ * Called when DIMENSIONS command needs to be parsed from within the
+ * CHARACTERS block. Deals with everything after the token DIMENSIONS
+ * up to and including the semicolon that terminates the DIMENSIONs
+ * command. newtaxaLabel, ntaxLabel and ncharLabel are simply "NEWTAXA",
+ * "NTAX" and "NCHAR" for this class, but may be different for derived
+ * classes that use newtaxa, ntax and nchar for other things (e.g.,
+ * ntax is number of populations in an ALLELES block)
+ */
+void CharactersBlock::HandleDimensions( NexusToken& token
+ , nxsstring newtaxaLabel, nxsstring ntaxLabel, nxsstring ncharLabel )
+{
+ for(;;)
+ {
+ token.GetNextToken();
+
+ if( token.Equals(newtaxaLabel) ) {
+ newtaxa = true;
+ taxa.Reset();
+ }
+ else if( token.Equals(ntaxLabel) ) {
+
+ // this should be the equals sign
+ token.GetNextToken();
+ if( !token.Equals("=") ) {
+ errormsg = "Expecting '=' after ";
+ errormsg += ntaxLabel;
+ errormsg += " in DIMENSIONS command, but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // this should be the number of taxa
+ token.GetNextToken();
+ ntax = atoi( token.GetToken().c_str() );
+ if( ntax <= 0 ) {
+ errormsg = ntaxLabel;
+ errormsg += " must be a number greater than 0";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ if( newtaxa )
+ ntaxTotal = ntax;
+ else {
+ ntaxTotal = taxa.GetNumTaxonLabels();
+ if( ntaxTotal < ntax ) {
+ errormsg = ntaxLabel;
+ errormsg += " in ";
+ errormsg += id;
+ errormsg += " block must be less than or equal to NTAX in TAXA block";
+ errormsg += "\nNote: one circumstance that can cause this error is ";
+ errormsg += "\nforgetting to specify ";
+ errormsg += ntaxLabel;
+ errormsg += " in DIMENSIONS command when ";
+ errormsg += "\na TAXA block has not been provided";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ }
+ }
+ else if( token.Equals(ncharLabel) ) {
+
+ // this should be the equals sign
+ token.GetNextToken();
+ if( !token.Equals("=") ) {
+ errormsg = "Expecting '=' after ";
+ errormsg += ncharLabel;
+ errormsg += " in DIMENSIONS command, but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // this should be the number of characters
+ token.GetNextToken();
+ nchar = atoi( token.GetToken().c_str() );
+ if( nchar <= 0 ) {
+ errormsg = ncharLabel;
+ errormsg += " must be a number greater than 0";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ ncharTotal = nchar;
+
+ }
+ else if( token.Equals(";") ) {
+ break;
+ }
+
+ }
+}
+
+/**
+ * @method HandleEliminate [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ *
+ * Called when ELIMINATE command needs to be parsed from within the
+ * CHARACTERS block. Deals with everything after the token ELIMINATE
+ * up to and including the semicolon that terminates the ELIMINATE
+ * command. Any character numbers or ranges of character numbers
+ * specified are stored in the IntSet eliminated, which remains empty
+ * until an ELIMINATE command is processed. Note that like all sets
+ * the character ranges are adjusted so that their offset is 0. For
+ * example, given "eliminate 4-7;" in the data file, the eliminate
+ * array would contain the values 3, 4, 5, and 6 (not 4, 5, 6, and 7).
+ * It is assumed that the ELIMINATE command comes before character labels
+ * and/or character state labels have been specified; an error message
+ * is generated if the user attempts to use ELIMINATE after a CHARLABELS,
+ * CHARSTATELABELS, or STATELABELS command.
+ */
+void CharactersBlock::HandleEliminate( NexusToken& token )
+{
+ // construct an object of type SetReader, then call its run function
+ // to store the set in the eliminated set
+ //
+ SetReader( token, ncharTotal, eliminated, *this, SetReader::charset ).Run();
+
+ nchar = ncharTotal - eliminated.size();
+
+ if( nchar != ncharTotal && ( charLabels.size() > 0 || charStates.size() > 0 ) )
+ {
+ errormsg = "The ELIMINATE command must appear before character\n(or character state) labels are specified";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ if( charPos != NULL )
+ {
+ errormsg = "Only one ELIMINATE command is allowed, and it must appear before the MATRIX command";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ BuildCharPosArray( true );
+}
+
+/**
+ * @method HandleEndblock [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * Called when the END or ENDBLOCK command needs to be parsed from within the
+ * CHARACTERS block. Does two things: 1) checks to make sure the next token in
+ * the data file is a semicolon and 2) eliminates character labels and character
+ * state labels for characters that have been ELIMINATEd.
+ */
+void CharactersBlock::HandleEndblock( NexusToken& token, nxsstring charToken )
+{
+ // get the semicolon following END or ENDBLOCK token
+ token.GetNextToken();
+ if( !token.Equals(";") ) {
+ errormsg = "Expecting ';' to terminate the END or ENDBLOCK command, but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ if( charLabels.empty() && !charStates.empty() ) {
+ // make up labels for characters since user has provided labels
+ // for character states; that way, we know that charLabels
+ // and charStates are either both empty or both full
+ for( int k = 0; k < ncharTotal; k++ )
+ {
+ nxsstring nm = charToken;
+ nm += " ";
+ nm += (k+1);
+ charLabels.push_back( nm.c_str() );
+ }
+ }
+
+#if 0
+ // This part is not necessary now that ELIMINATE is restricted to
+ // being used before CHARLABELS, CHARSTATELABELS, and STATELABELS
+ //
+ if( nchar < ncharTotal && !charLabels.empty() )
+ {
+ // first, make copies of charLabels and charStates
+ LabelList tmp_charLabels = charLabels;
+ LabelListBag tmp_charStates = charStates;
+
+ // second, erase contents of charLabels and charStates
+ charLabels.erase( charLabels.begin(), charLabels.end() );
+ charStates.erase( charStates.begin(), charStates.end() );
+
+ // third, copy only information from non-ELIMINATEd characters back
+ // into charLabels and charStates
+ for( int k = 0; k < ncharTotal; k++ ) {
+ int j = charPos[k];
+ if( j < 0 ) continue;
+ charLabels.push_back( tmp_charLabels[k] );
+ int n = tmp_charStates[k].size();
+ for( int kk = 0; kk < n; kk++ )
+ charStates[j].push_back( tmp_charStates[k][kk] );
+ }
+ }
+#endif
+}
+
+/**
+ * @method HandleFormat [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * Called when FORMAT command needs to be parsed from within the
+ * DIMENSIONS block. Deals with everything after the token FORMAT
+ * up to and including the semicolon that terminates the FORMAT
+ * command.
+ */
+void CharactersBlock::HandleFormat( NexusToken& token )
+{
+ int standardDataTypeAssumed = 0;
+ int ignoreCaseAssumed = 0;
+
+ for(;;)
+ {
+ token.GetNextToken();
+
+ if( token.Equals("DATATYPE") )
+ {
+
+ // this should be an equals sign
+ token.GetNextToken();
+ if( !token.Equals("=") ) {
+ errormsg = "Expecting '=' after keyword DATATYPE but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // this should be one of the following: STANDARD, DNA, RNA, NUCLEOTIDE, PROTEIN, or CONTINUOUS
+ token.GetNextToken();
+ if( token.Equals("STANDARD") )
+ datatype = standard;
+ else if( token.Equals("DNA") )
+ datatype = dna;
+ else if( token.Equals("RNA") )
+ datatype = rna;
+ else if( token.Equals("NUCLEOTIDE") )
+ datatype = nucleotide;
+ else if( token.Equals("PROTEIN") )
+ datatype = protein;
+ else if( token.Equals("CONTINUOUS") )
+ datatype = continuous;
+ else {
+ errormsg = token.GetToken();
+ errormsg += " is not a valid DATATYPE within a ";
+ errormsg += id;
+ errormsg += " block";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ if( standardDataTypeAssumed && datatype != standard ) {
+ errormsg = "DATATYPE must be specified first in FORMAT command";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ ResetSymbols();
+ if( datatype == continuous )
+ tokens = true;
+
+ }
+
+ else if( token.Equals("RESPECTCASE") )
+ {
+ if( ignoreCaseAssumed ) {
+ errormsg = "RESPECTCASE must be specified before MISSING, GAP, SYMBOLS, and MATCHCHAR in FORMAT command";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ standardDataTypeAssumed = 1;
+ respectingCase = true;
+ }
+
+ else if( token.Equals("MISSING") )
+ {
+
+ // this should be an equals sign
+ token.GetNextToken();
+ if( !token.Equals("=") ) {
+ errormsg = "Expecting '=' after keyword MISSING but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // this should be the missing data symbol (single character)
+ token.GetNextToken();
+ if( token.GetTokenLength() != 1 ) {
+ errormsg = "MISSING symbol should be a single character, but ";
+ errormsg += token.GetToken();
+ errormsg += " was specified";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ else if( token.IsPunctuationToken() && !token.IsPlusMinusToken() ) {
+ errormsg = "MISSING symbol specified cannot be a punctuation token (";
+ errormsg += token.GetToken();
+ errormsg += " was specified)";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ else if( token.IsWhitespaceToken() ) {
+ errormsg = "MISSING symbol specified cannot be a whitespace character (";
+ errormsg += token.GetToken();
+ errormsg += " was specified)";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ missing = token.GetToken()[0];
+
+ ignoreCaseAssumed = 1;
+ standardDataTypeAssumed = 1;
+ }
+
+ else if( token.Equals("GAP") )
+ {
+
+ // this should be an equals sign
+ token.GetNextToken();
+ if( !token.Equals("=") ) {
+ errormsg = "Expecting '=' after keyword GAP but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // this should be the gap symbol (single character)
+ token.GetNextToken();
+ if( token.GetTokenLength() != 1 ) {
+ errormsg = "GAP symbol should be a single character, but ";
+ errormsg += token.GetToken();
+ errormsg += " was specified";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ else if( token.IsPunctuationToken() && !token.IsPlusMinusToken() ) {
+ errormsg = "GAP symbol specified cannot be a punctuation token (";
+ errormsg += token.GetToken();
+ errormsg += " was specified)";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ else if( token.IsWhitespaceToken() ) {
+ errormsg = "GAP symbol specified cannot be a whitespace character (";
+ errormsg += token.GetToken();
+ errormsg += " was specified)";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ gap = token.GetToken()[0];
+
+ ignoreCaseAssumed = 1;
+ standardDataTypeAssumed = 1;
+ }
+
+ else if( token.Equals("SYMBOLS") )
+ {
+ if( datatype == continuous ) {
+ errormsg = "SYMBOLS subcommand not allowed for DATATYPE=CONTINUOUS";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ int numDefStates;
+ int maxNewStates;
+ switch( datatype )
+ {
+ case dna:
+ case rna:
+ case nucleotide:
+ numDefStates = 4;
+ maxNewStates = NCL_MAX_STATES-4;
+ break;
+ case protein:
+ numDefStates = 21;
+ maxNewStates = NCL_MAX_STATES-21;
+ break;
+ default:
+ numDefStates = 0; // replace symbols list for standard datatype
+ symbols[0] = '\0';
+ maxNewStates = NCL_MAX_STATES;
+ }
+
+ // this should be an equals sign
+ token.GetNextToken();
+ if( !token.Equals("=") ) {
+ errormsg = "Expecting '=' after keyword SYMBOLS but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // this should be the symbols list
+ token.SetLabileFlagBit( NexusToken::doubleQuotedToken );
+ token.GetNextToken();
+ token.StripWhitespace();
+ int numNewSymbols = token.GetTokenLength();
+ if( numNewSymbols > maxNewStates ) {
+ errormsg = "SYMBOLS defines ";
+ errormsg += numNewSymbols;
+ errormsg += " new states but only ";
+ errormsg += maxNewStates;
+ errormsg += " new states allowed for this DATATYPE";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ nxsstring t = token.GetToken();
+ int tlen = t.size();
+
+ // check to make sure user has not used any symbols already in the
+ // default symbols list for this data type
+ for( int i = 0; i < tlen; i++ )
+ {
+ if( IsInSymbols( t[i] ) ) {
+ errormsg = "The character ";
+ errormsg += t[i];
+ errormsg += " defined in SYMBOLS has already been predefined for this DATATYPE";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ }
+
+ // if we've made it this far, go ahead and add the user-defined
+ // symbols to the end of the list of predefined symbols
+ strcpy( symbols+numDefStates, t.c_str() );
+
+ ignoreCaseAssumed = 1;
+ standardDataTypeAssumed = 1;
+ }
+
+ else if( token.Equals("EQUATE") )
+ {
+
+ // this should be an equals sign
+ token.GetNextToken();
+ if( !token.Equals("=") ) {
+ errormsg = "Expecting '=' after keyword EQUATE but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // this should be a double-quote character
+ token.GetNextToken();
+ if( !token.Equals("\"") ) {
+ errormsg = "Expecting '\"' after keyword EQUATE but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // loop until second double-quote character is encountered
+ for(;;)
+ {
+ token.GetNextToken();
+ if( token.Equals("\"") )
+ break;
+
+ // if token is not a double-quote character, then it must be
+ // the equate symbol (i.e., the character to be replaced in
+ // the data matrix)
+ if( token.GetTokenLength() != 1 ) {
+ errormsg = "Expecting single-character EQUATE symbol but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // check for bad choice of equate symbol
+ nxsstring t = token.GetToken();
+ char ch = t[0];
+ int badEquateSymbol = 0;
+ // the character '^' cannot be an equate symbol
+ if( ch == '^' )
+ badEquateSymbol = 1;
+ // equate symbols cannot be punctuation (except for + and -)
+ if( token.IsPunctuationToken() && !token.IsPlusMinusToken() )
+ badEquateSymbol = 1;
+ // equate symbols cannot be same as matchchar, missing, or gap
+ if( ch == missing || ch == matchchar || ch == gap )
+ badEquateSymbol = 1;
+ // equate symbols cannot be one of the state symbols currently defined
+ if( IsInSymbols(ch) )
+ badEquateSymbol = 1;
+ if( badEquateSymbol ) {
+ errormsg = "EQUATE symbol specified (";
+ errormsg += token.GetToken();
+ errormsg += ") is not valid; must not be same as missing, \nmatchchar, gap, state symbols, or any of the following: ()[]{}/\\,;:=*'\"`<>^";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ nxsstring k = token.GetToken();
+
+ // this should be an equals sign
+ token.GetNextToken();
+ if( !token.Equals("=") ) {
+ errormsg = "Expecting '=' in EQUATE definition but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // this should be the token to be substituted in for the equate symbol
+ token.SetLabileFlagBit( NexusToken::parentheticalToken );
+ token.SetLabileFlagBit( NexusToken::curlyBracketedToken );
+ token.GetNextToken();
+ nxsstring v = token.GetToken();
+
+
+ // add the new equate association to the equates list
+ equates[k] = v;
+ }
+
+ standardDataTypeAssumed = 1;
+ }
+
+ else if( token.Equals("MATCHCHAR") )
+ {
+
+ // this should be an equals sign
+ token.GetNextToken();
+ if( !token.Equals("=") ) {
+ errormsg = "Expecting '=' after keyword MATCHCHAR but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // this should be the matchchar symbol (single character)
+ token.GetNextToken();
+ if( token.GetTokenLength() != 1 ) {
+ errormsg = "MATCHCHAR symbol should be a single character, but ";
+ errormsg += token.GetToken();
+ errormsg += " was specified";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ else if( token.IsPunctuationToken() && !token.IsPlusMinusToken() ) {
+ errormsg = "MATCHCHAR symbol specified cannot be a punctuation token (";
+ errormsg += token.GetToken();
+ errormsg += " was specified) ";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ else if( token.IsWhitespaceToken() ) {
+ errormsg = "MATCHCHAR symbol specified cannot be a whitespace character (";
+ errormsg += token.GetToken();
+ errormsg += " was specified)";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ matchchar = token.GetToken()[0];
+
+ ignoreCaseAssumed = 1;
+ standardDataTypeAssumed = 1;
+ }
+
+ else if( token.Equals("LABELS") )
+ {
+ labels = true;
+ standardDataTypeAssumed = 1;
+ }
+
+ else if( token.Equals("NOLABELS") )
+ {
+ labels = false;
+ standardDataTypeAssumed = 1;
+ }
+
+ else if( token.Equals("TRANSPOSE") )
+ {
+ transposing = true;
+ standardDataTypeAssumed = 1;
+ }
+
+ else if( token.Equals("INTERLEAVE") )
+ {
+ interleaving = true;
+ standardDataTypeAssumed = 1;
+ }
+
+ else if( token.Equals("ITEMS") )
+ {
+
+ // this should be an equals sign
+ token.GetNextToken();
+ if( !token.Equals("=") ) {
+ errormsg += "Expecting '=' after keyword ITEMS but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // this should be STATES (no other item is supported at this time)
+ token.GetNextToken();
+ if( !token.Equals("STATES") ) {
+ errormsg = "Sorry, only ITEMS=STATES supported at this time";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ standardDataTypeAssumed = 1;
+ }
+
+ else if( token.Equals("STATESFORMAT") )
+ {
+
+ // this should be an equals sign
+ token.GetNextToken();
+ if( !token.Equals("=") ) {
+ errormsg = "Expecting '=' after keyword STATESFORMAT but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // this should be STATESPRESENT (no other statesformat is supported at this time)
+ token.GetNextToken();
+ if( !token.Equals("STATESPRESENT") ) {
+ errormsg = "Sorry, only STATESFORMAT=STATESPRESENT supported at this time";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ standardDataTypeAssumed = 1;
+ }
+
+ else if( token.Equals("TOKENS") )
+ {
+ tokens = true;
+ standardDataTypeAssumed = 1;
+ }
+
+ else if( token.Equals("NOTOKENS") )
+ {
+ tokens = false;
+ standardDataTypeAssumed = 1;
+ }
+
+ else if( token.Equals(";") ) {
+ break;
+ }
+ }
+
+ // perform some last checks before leaving the FORMAT command
+ if( !tokens && datatype == continuous ) {
+ errormsg = "TOKENS must be defined for DATATYPE=CONTINUOUS";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ if( tokens && ( datatype == dna || datatype == rna || datatype == nucleotide ) ) {
+ errormsg = "TOKENS not allowed for the DATATYPEs DNA, RNA, or NUCLEOTIDE";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+}
+
+/**
+ * @method HandleNextState [bool:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @param i [int] the taxon index, in range [0..ntax)
+ * @param j [int] the character index, in range [0..nchar)
+ * @throws XNexus
+ *
+ * Called from HandleStdMatrix or HandleTransposedMatrix function
+ * to read in the next state. Always returns 1 except in the special
+ * case of an interleaved matrix, in which case it returns 0 if a
+ * newline character is encountered before the next token.
+ */
+bool CharactersBlock::HandleNextState( NexusToken& token, int i, int j )
+{
+ // this should be the state for taxon i and character j
+ //
+ if( !tokens ) {
+ token.SetLabileFlagBit( NexusToken::parentheticalToken );
+ token.SetLabileFlagBit( NexusToken::curlyBracketedToken );
+ token.SetLabileFlagBit( NexusToken::singleCharacterToken );
+ }
+ if( interleaving )
+ token.SetLabileFlagBit( NexusToken::newlineIsToken );
+ token.GetNextToken();
+
+ if( interleaving && token.AtEOL() )
+ return false;
+
+ // make sure we didn't run out of file
+ //
+ if( token.AtEOF() ) {
+ errormsg = "Unexpected end of file encountered";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // if we didn't run out of file, I see no reason why we should
+ // have a zero-length token on our hands
+ assert( token.GetTokenLength() > 0 );
+
+ // we've read in the state now, so if this character has been
+ // ELIMINATEd, we don't want to go any further with it
+ //
+ if( j < 0 ) return true;
+
+ // see if any equate macros apply
+ //
+ nxsstring skey = nxsstring( token.GetToken( respectingCase ) );
+ AssocList::iterator p = equates.find( skey );
+ if( p != equates.end() ) {
+ nxsstring sval = (*p).second;
+ token.ReplaceToken( sval.c_str() );
+ }
+
+ // handle case of single-character state symbol
+ //
+ if( !tokens && token.GetTokenLength() == 1 )
+ {
+ char ch = token.GetToken()[0];
+
+ // check for missing data symbol
+ //
+ if( ch == missing ) {
+ matrix->SetMissing( i, j );
+ }
+
+ // check for matchchar symbol
+ //
+ else if( matchchar != '\0' && ch == matchchar ) {
+#if 0
+ int maxk = matrix->GetNumStates( i, j );
+ for( int k = 0; k < maxk; k++ ) {
+ int stateOfFirstTaxon = matrix->GetState( 0, j, k );
+ matrix->AddState( i, j, stateOfFirstTaxon );
+ }
+#else
+ matrix->CopyStatesFromFirstTaxon( i, j );
+#endif
+ }
+
+ // check for gap symbol
+ //
+ else if( gap != '\0' && ch == gap ) {
+ matrix->SetGap( i, j );
+ }
+
+ // look up the position of this state in the symbols array
+ //
+ else {
+ int p = PositionInSymbols(ch);
+ if( p < 0 ) {
+ errormsg = "State specified (";
+ errormsg += token.GetToken();
+ errormsg += ") for taxon ";
+ errormsg += (i+1);
+ errormsg += ", character ";
+ errormsg += (j+1);
+ errormsg += ", not found in list of valid symbols";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ matrix->AddState( i, j, p );
+ matrix->SetPolymorphic( i, j, 0 );
+ }
+ }
+
+ // handle case of state sets when tokens is not in effect
+ //
+ else if( !tokens && token.GetTokenLength() > 1 )
+ {
+ // token should be in one of the following forms: {acg} {a~g} {a c g} (acg) (a~g) (a c g)
+ nxsstring t = token.GetToken();
+ int tlen = t.size();
+ int poly = ( t[0] == '(' );
+ assert( poly || t[0] == '{' );
+ assert( ( poly && t[tlen-1] == ')' ) || ( !poly && t[tlen-1] == '}' ) );
+
+ int first_nonblank = 1;
+ while( t[first_nonblank] == ' ' || t[first_nonblank] == '\t' )
+ first_nonblank++;
+
+ int last_nonblank = tlen-2;
+ while( t[last_nonblank] == ' ' || t[last_nonblank] == '\t' )
+ last_nonblank--;
+
+ if( t[first_nonblank] == '~' || t[last_nonblank] == '~' ) {
+ errormsg = token.GetToken();
+ errormsg += " does not represent a valid range of states";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ int k = 1;
+ char* pFirst = symbols;
+ int tildeFound = 0;
+ for(;;)
+ {
+ if( t[k] == ')' || t[k] == '}' )
+ break;
+
+ if( t[k] == ' ' || t[k] == '\t' ) {
+ k++;
+ continue;
+ }
+
+ // t[k] should be either '~' or one of the state symbols
+ if( t[k] == '~' ) {
+ tildeFound = 1;
+ }
+ else
+ {
+ // add state symbol and record if it is the first or last one
+ // in case we encounter a tilde
+ //
+ if( tildeFound )
+ {
+ // add all states from firstState to t[k]
+ // then set tildeFound to 0 again
+ pFirst++;
+ while( *pFirst != '\0' && *pFirst != t[k] )
+ {
+ int p = PositionInSymbols(*pFirst);
+ if( p < 0 ) {
+ errormsg = "State specified (";
+ errormsg += *pFirst;
+ errormsg += ") for taxon ";
+ errormsg += (i+1);
+ errormsg += ", character ";
+ errormsg += (j+1);
+ errormsg += ", not found in list of valid symbols";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ matrix->AddState( i, j, p );
+ pFirst++;
+ }
+
+ tildeFound = 0;
+ }
+ else
+ {
+ int p = PositionInSymbols(t[k]);
+ if( p < 0 ) {
+ errormsg = "State specified (";
+ errormsg += t[k];
+ errormsg += ") for taxon ";
+ errormsg += (i+1);
+ errormsg += ", character ";
+ errormsg += (j+1);
+ errormsg += ", not found in list of valid symbols";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ pFirst = ( symbols + p );
+ matrix->AddState( i, j, p );
+ }
+
+ } // if( t[k] == '~' ) ... else ... loop
+
+ k++;
+ } // for(;;) loop
+
+ matrix->SetPolymorphic( i, j, poly );
+ }
+
+ // handle case in which TOKENS was specified in the FORMAT command
+ //
+ else
+ {
+ // token should be in one of the following forms: "{" "a" "bb"
+ int polymorphism = token.Equals("(");
+ int uncertainty = token.Equals("{");
+
+ if( !uncertainty && !polymorphism ) {
+ int k = HandleTokenState( token, j );
+ matrix->AddState( i, j, k );
+ }
+ else {
+ int tildeFound = 0;
+ int first = -1;
+ int last;
+ for(;;)
+ {
+ // OPEN ISSUE: What about newlines if interleaving? I'm assuming
+ // that the newline must come between characters to count.
+
+ token.SetLabileFlagBit( NexusToken::tildeIsPunctuation );
+ token.GetNextToken();
+
+ if( polymorphism && token.Equals(")") ) {
+ if( tildeFound ) {
+ errormsg = "Range of states still being specified when ')' encountered";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ break;
+ }
+
+ else if( uncertainty && token.Equals("}") ) {
+ if( tildeFound ) {
+ errormsg = "Range of states still being specified when '}' encountered";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ break;
+ }
+
+ else if( token.Equals("~") ) {
+ if( first == -1 ) {
+ errormsg = "Tilde character ('~') cannot precede token indicating beginning of range";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ tildeFound = 1;
+ }
+
+ else if( tildeFound ) {
+ // Add all states from first+1 to last, then reset tildeFound to 0
+ //
+ last = HandleTokenState( token, j );
+
+ if( last <= first) {
+ errormsg = "Last state in specified range (";
+ errormsg += token.GetToken();
+ errormsg += ") must be greater than the first";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ for( int k = first+1; k <= last; k++ )
+ matrix->AddState( i, j, k );
+
+ tildeFound = 0;
+ first = -1;
+ }
+
+ else {
+ // Add current state, then set first to that state's value
+ // State's value is its position within the list of states
+ // for that character
+ //
+ first = HandleTokenState( token, j );
+ matrix->AddState( i, j, first );
+ }
+
+ }
+
+ if( polymorphism )
+ matrix->SetPolymorphic( i, j, 1 );
+ }
+ }
+
+ return true;
+}
+
+/**
+ * @method HandleTokenState [int:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @param j [int] the character index, in range [0..nchar)
+ * @throws XNexus
+ *
+ * Called from HandleNextState to read in the next state when 'tokens' is in effect.
+ * Looks up state in character states listed for the character to make
+ * sure it is a valid state, and returns state's value (0, 1, 2, ...).
+ * Note: does NOT handle adding the state's value to matrix. Save the return
+ * value, let's call it k, and use the following command to add it to matrix:
+ * matrix->AddState( i, j, k );
+ */
+int CharactersBlock::HandleTokenState( NexusToken& token, int j )
+{
+ // token should be one of the character states listed for character j
+ // in charStates
+ //
+ if( charStates.find(j) == charStates.end() ) {
+ errormsg = "No states were defined for character ";
+ errormsg += ( 1 + GetOrigCharIndex(j) );
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // TO DO: this section is very UGLY - need to find some cleaner way of comparing
+ // the token nxsstring to the strings representing valid characters states
+ // in the LabelList associated with character j
+ //
+ LabelListBag::const_iterator bagIter = charStates.find(j);
+ LabelList::const_iterator ci_begin = (*bagIter).second.begin();
+ LabelList::const_iterator ci_end = (*bagIter).second.end();
+ nxsstring t = token.GetToken( respectingCase );
+ LabelList::const_iterator cit;
+ if( respectingCase )
+ cit = find( ci_begin, ci_end, t );
+ else
+ cit = find_if( ci_begin, ci_end, bind2nd( stri_equal(), t ) );
+
+ if( cit == ci_end ) {
+ errormsg = "Character state ";
+ errormsg += t;
+ errormsg += " not defined for character ";
+ errormsg += ( 1 + GetOrigCharIndex(j) );
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // ok, the state has been identified, so return the state's internal
+ // representation. That is, if the list of state labels was
+ // "small medium large" and "small" was specified in the data file,
+ // state saved in matrix would be 0 (it would be 1 if "medium" were
+ // specified in the data file, and 2 if "large" were specified in the
+ // data file).
+ int k = ( cit - ci_begin );
+ return k;
+}
+
+/**
+ * @method HandleStdMatrix [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * Called from HandleMatrix function to read in a standard
+ * (i.e., non-transposed) matrix. Interleaving, if applicable,
+ * is dealt with herein.
+ */
+void CharactersBlock::HandleStdMatrix( NexusToken& token )
+{
+ int i, j, currChar;
+ int firstChar = 0;
+ int lastChar = ncharTotal;
+ int nextFirst;
+ int page = 0;
+
+ for(;;)
+ {
+ //************************************************
+ //******** Beginning of loop through taxa ********
+ //************************************************
+
+ for( i = 0; i < ntax; i++ )
+ {
+ if( labels )
+ {
+ // This should be the taxon label
+ //
+ token.GetNextToken();
+
+ if( page == 0 && newtaxa )
+ {
+ // This section:
+ // - labels provided
+ // - on first (or only) interleave page
+ // - no previous TAXA block
+
+ // check for duplicate taxon names
+ //
+ if( taxa.IsAlreadyDefined( token.GetToken() ) ) {
+ errormsg = "Data for this taxon (";
+ errormsg += token.GetToken();
+ errormsg += ") has already been saved";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // labels provided and not already stored in the taxa block with
+ // the TAXLABELS command; taxa.Reset() and taxa.SetNTax() have
+ // were already called, however, when the NTAX subcommand was
+ // processed.
+ //
+ taxa.AddTaxonLabel( token.GetToken() );
+
+ // order of occurrence in TAXA block same as row in matrix
+ //
+ taxonPos[i] = i;
+ }
+ else
+ {
+ // This section:
+ // - labels provided
+ // - TAXA block provided or has been created already
+ // - may be on any (interleave) page
+
+ // Cannot assume taxon in same position in
+ // taxa block. Set up taxonPos array so that we can look up
+ // the correct row in matrix for any given taxon
+ //
+ int positionInTaxaBlock;
+ try {
+ positionInTaxaBlock = taxa.FindTaxon( token.GetToken() );
+ }
+ catch( std::out_of_range ) {
+ errormsg = "Could not find taxon named ";
+ errormsg += token.GetToken();
+ errormsg += " among stored taxon labels";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ if( page == 0 )
+ {
+ // make sure user has not duplicated data for a single taxon
+ //
+ if( taxonPos[positionInTaxaBlock] != -1 ) {
+ errormsg = "Data for this taxon (";
+ errormsg += token.GetToken();
+ errormsg += ") has already been saved";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // make sure user has kept same relative ordering of taxa in both the TAXA
+ // block and the CHARACTERS block
+ //
+ if( positionInTaxaBlock != i ) { //POL 11-12-99: was --> positionInTaxaBlock >= i
+ errormsg = "Relative order of taxa must be the same in both the TAXA and CHARACTERS blocks";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ taxonPos[i] = positionInTaxaBlock; // was --> taxonPos[positionInTaxaBlock] = i;
+ }
+ else
+ {
+ // make sure user has kept the ordering of taxa the same from
+ // one interleave page to the next
+ //
+ if( taxonPos[positionInTaxaBlock] != i ) {
+ errormsg = "Ordering of taxa must be identical to that in first interleave page";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ }
+ }
+ }
+ else {
+ // no labels provided, assume taxon position same as in taxa block
+ if( page == 0 )
+ taxonPos[i] = i;
+ }
+
+ //******************************************************
+ //******** Beginning of loop through characters ********
+ //******************************************************
+
+ for( currChar = firstChar; currChar < lastChar; currChar++ )
+ {
+ // it is possible that character currChar has been ELIMINATEd, in
+ // which case we need to go through the motions of reading in the
+ // data but we don't store it. The variable j will be our guide
+ // when it comes time to store data since j will be -1 for
+ // characters that were ELIMINATEd and will be set to the correct
+ // row for characters that have not been ELIMINATEd.
+ //
+ j = charPos[currChar];
+
+ // ok will be 0 only if a newline character is encountered before
+ // character j processed
+ //
+ bool ok = HandleNextState( token, i, j );
+ if( interleaving && !ok )
+ {
+ if( lastChar < ncharTotal && j != lastChar ) {
+ errormsg = "Each line within an interleave page must comprise the same number of characters";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // currChar should be firstChar in next go around
+ nextFirst = currChar;
+
+ // set lastChar to currChar so that we can check to make sure the
+ // remaining lines in this interleave page end at the same place
+ lastChar = currChar;
+
+ // since j is now equal to lastChar, we are done with this innermost loop
+ }
+ } // innermost loop (over characters)
+
+ } // middle loop (over taxa)
+
+ firstChar = nextFirst;
+ lastChar = ncharTotal;
+
+ // if currChar equals ncharTotal, then we've just finished reading the last
+ // interleave page and thus should break from the outer loop
+ // Note that if we are not interleaving, this will still work since
+ // lastChar is initialized to ncharTotal and never changed
+ //
+ if( currChar == ncharTotal )
+ break;
+
+ page++;
+
+ } // outer loop (over interleave pages)
+
+}
+
+/**
+ * @method HandleTransposedMatrix [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * Called from HandleMatrix function to read in a transposed
+ * matrix. Interleaving, if applicable, is dealt with herein.
+ */
+void CharactersBlock::HandleTransposedMatrix( NexusToken& token )
+{
+ int i, j, currChar;
+ int firstTaxon = 0;
+ int lastTaxon = ntaxTotal;
+ int nextFirst;
+ int page = 0;
+
+ for(;;)
+ {
+ //******************************************************
+ //******** Beginning of loop through characters ********
+ //******************************************************
+
+ for( currChar = 0; currChar < ncharTotal; currChar++ )
+ {
+ // it is possible that character currChar has been ELIMINATEd, in
+ // which case we need to go through the motions of reading in the
+ // data but we don't store it. The variable j will be our guide
+ // when it comes time to store data since j will be -1 for
+ // characters that were ELIMINATEd and will be set to the correct
+ // row for characters that have not been ELIMINATEd.
+ //
+ j = charPos[currChar];
+
+ if( labels )
+ {
+ // this should be the character label
+ //
+ token.GetNextToken();
+
+ if( page == 0 && newchar )
+ {
+ // check for duplicate character names
+ //
+ nxsstring s = token.GetToken();
+ LabelList::const_iterator iter = find( charLabels.begin(), charLabels.end(), s );
+ int charLabelFound = ( iter != charLabels.end() );
+ if( charLabelFound ) {
+ errormsg = "Data for this character (";
+ errormsg += token.GetToken();
+ errormsg += ") has already been saved";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // Labels provided, need to add them to charLabels list.
+ // We're not supposed to save anything for this character since it
+ // has been ELIMINATEd, but the labels must be saved for purposes of
+ // numbering. Otherwise a more complicated system would be needed
+ // wherein an association is set up between character number and
+ // character label. Since this is not done in the case of taxa
+ // that are effectively ELIMINATEd when they are included in the
+ // TAXA block but not in the CHARACTERS MATRIX command, I see no
+ // reason to not save the full character labels here even for those
+ // that have been ELIMINATEd. Also, for interleaved matrices, it
+ // is necessary to have the full labels saved somewhere so that
+ // it is possible to detect characters out of order or duplicated.
+ //
+ charLabels.push_back( token.GetToken() );
+ }
+ else // either not first interleaved page or character labels not previously defined
+ {
+ nxsstring s = token.GetToken();
+ LabelList::const_iterator iter = find( charLabels.begin(), charLabels.end(), s );
+ if( iter == charLabels.end() ) {
+ errormsg = "Could not find character named ";
+ errormsg += token.GetToken();
+ errormsg += " among stored character labels";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ int positionInCharLabelsList = ( iter - charLabels.begin() );
+
+ // make sure user has not duplicated data for a single character or
+ // changed the order in which characters appear in different interleave
+ // pages
+ //
+ if( positionInCharLabelsList != currChar )
+ {
+ if( page == 0 ) {
+ errormsg = "Data for this character (";
+ errormsg += token.GetToken();
+ errormsg += ") has already been saved";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ else {
+ errormsg = "Ordering of characters must be identical to that in first interleave page";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ }
+
+ }
+
+ } // if labels conditional
+
+ //************************************************
+ //******** Beginning of loop through taxa ********
+ //************************************************
+
+ for( i = firstTaxon; i < lastTaxon; i++ )
+ {
+ if( page == 0 )
+ {
+ // We are forced to assume that the user did not leave out any
+ // taxa, since without taxon labels in the matrix we would
+ // have no way of detecting which were left out; thus,
+ // ntax == ntaxTotal in this case. Order of occurrence in
+ // TAXA block is the same as the row in matrix.
+ //
+ taxonPos[i] = i;
+ }
+
+ // ok will be 0 only if a newline character is encountered before
+ // taxon i processed
+ //
+ bool ok = HandleNextState( token, i, j );
+ if( interleaving && !ok )
+ {
+ if( lastTaxon < ntaxTotal && i != lastTaxon ) {
+ errormsg = "Each line within an interleave page must comprise the same number of taxa";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // i should be firstChar in next go around
+ nextFirst = i;
+
+ // set lastTaxon to i so that we can check to make sure the
+ // remaining lines in this interleave page end at the same
+ // place
+ lastTaxon = i;
+
+ // since i is now equal to lastTaxon, we are done with this innermost loop
+ }
+ } // innermost loop (over taxa)
+
+ } // middle loop (over characters)
+
+ firstTaxon = nextFirst;
+ lastTaxon = ntaxTotal;
+
+ // if i equals ncharTotal, then we've just finished reading the last
+ // interleave page and thus should break from the outer loop
+ // Note that if we are not interleaving, this will still work since
+ // lastTaxon is initialized to ntaxTotal and never changed
+ //
+ if( i == ntaxTotal )
+ break;
+
+ page++;
+
+ } // outer loop (over interleave pages)
+}
+
+/**
+ * @method HandleMatrix [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * Called when MATRIX command needs to be parsed from within the
+ * CHARACTERS block. Deals with everything after the token MATRIX
+ * up to and including the semicolon that terminates the MATRIX
+ * command.
+ */
+void CharactersBlock::HandleMatrix( NexusToken& token )
+{
+ int i, j;
+
+ if( ntax == 0 ) {
+ errormsg = "Must precede ";
+ errormsg += id;
+ errormsg += " block with a TAXA block or specify NEWTAXA and NTAX in the DIMENSIONS command";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ if( ntaxTotal == 0 )
+ ntaxTotal = taxa.GetNumTaxonLabels();
+
+ // We use >= rather than just > below because someone might have ELIMINATEd
+ // all characters, and we should allow that (even though it is absurd)
+ assert( nchar >= 0 );
+
+ if( datatype == continuous ) {
+ errormsg = "Sorry, continuous character matrices have not yet been implemented";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ if( matrix != NULL )
+ delete matrix;
+ matrix = new DiscreteMatrix( ntax, nchar );
+
+ // Allocate memory for (and initialize) the arrays activeTaxon and activeChar.
+ // All characters and all taxa are initially active.
+ //
+ activeTaxon = new bool[ntax];
+ for( i = 0; i < ntax; i++ )
+ activeTaxon[i] = true;
+
+ activeChar = new bool[nchar];
+ for( j = 0; j < nchar; j++ )
+ activeChar[j] = true;
+
+ // The value of ncharTotal is normally identical to the value of nchar specified
+ // in the CHARACTERS block DIMENSIONS command. If an ELIMINATE command is
+ // processed, however, nchar < ncharTotal. Note that the ELIMINATE command
+ // will have already been read by now, and the ELIMINATEd character numbers
+ // will be stored in the IntSet eliminated.
+ //
+ // Note that if an ELIMINATE command has been read, charPos will have already
+ // been created; thus, we only need to allocate and initialize charPos if user
+ // did not specify an ELIMINATE command
+ //
+ if( charPos == NULL )
+ BuildCharPosArray();
+
+ // The value of ntaxTotal equals the number of taxa specified in the
+ // TAXA block, whereas ntax equals the number of taxa specified in
+ // the DIMENSIONS command of the CHARACTERS block. These two numbers
+ // will be identical unless some taxa were left out of the MATRIX
+ // command of the CHARACTERS block, in which case ntax < ntaxTotal.
+ //
+ if( taxonPos != NULL )
+ delete [] taxonPos;
+ taxonPos = new int[ntaxTotal];
+ for( i = 0; i < ntaxTotal; i++ )
+ taxonPos[i] = -1;
+
+ if( transposing )
+ HandleTransposedMatrix( token );
+ else
+ HandleStdMatrix( token );
+
+ // If we've gotten this far, presumably it is safe to
+ // tell the ASSUMPTIONS block that were ready to take on
+ // the responsibility of being the current character-containing
+ // block (to be consulted if characters are excluded or included
+ // or if taxa are deleted or restored)
+ assumptionsBlock.SetCallback(this);
+
+ // this should be the terminating semicolon at the end of the matrix command
+ token.GetNextToken();
+ if( !token.Equals(";") ) {
+ errormsg = "Expecting ';' at the end of the MATRIX command; found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+}
+
+/**
+ * @method HandleStatelabels [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * Called when STATELABELS command needs to be parsed from within the
+ * DIMENSIONS block. Deals with everything after the token STATELABELS
+ * up to and including the semicolon that terminates the STATELABELS
+ * command. Note that the numbers of states are shifted back one before
+ * being stored so that the character numbers in the LabelListAssoc objects
+ * are 0-offset rather than being 1-offset as in the Nexus data file.
+ */
+void CharactersBlock::HandleStatelabels( NexusToken& token )
+{
+ bool semicolonFoundInInnerLoop = false;
+
+ charStates.erase( charStates.begin(), charStates.end() );
+
+ if( charPos == NULL )
+ BuildCharPosArray();
+
+ for(;;)
+ {
+ if( semicolonFoundInInnerLoop )
+ break;
+
+ token.GetNextToken();
+
+ if( token.Equals(";") )
+ break;
+
+ // token should be the character number; create a new association
+ //
+ int n = atoi( token.GetToken().c_str() );
+ if( n < 1 || n > ncharTotal ) {
+ errormsg = "Invalid character number (";
+ errormsg += token.GetToken();
+ errormsg += ") found in STATELABELS command (either out of range or not interpretable as an integer)";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ for(;;)
+ {
+ token.GetNextToken();
+
+ if( token.Equals(";") ) {
+ semicolonFoundInInnerLoop = true;
+ break;
+ }
+
+ if( token.Equals(",") ) {
+ break;
+ }
+
+ // token should be a character state label; add it to the list
+ //
+ if( !IsEliminated(n-1) ) {
+ int k = GetCharPos(n-1);
+ charStates[k].push_back( token.GetToken() );
+ }
+
+ } // inner loop (grabbing state labels for character n)
+
+ } // outer loop
+}
+
+/**
+ * @method HandleTaxlabels [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * Called when TAXLABELS command needs to be parsed from within the
+ * CHARACTERS block. Deals with everything after the token TAXLABELS
+ * up to and including the semicolon that terminates the TAXLABELS
+ * command.
+ */
+void CharactersBlock::HandleTaxlabels( NexusToken& token )
+{
+ if( !newtaxa ) {
+ errormsg = "NEWTAXA must have been specified in DIMENSIONS command to use the TAXLABELS command in a ";
+ errormsg += id;
+ errormsg += " block";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ for(;;)
+ {
+ token.GetNextToken();
+
+ // token should either be ';' or the name of a taxon
+ //
+ if( token.Equals(";") ) {
+ break;
+ }
+ else {
+ // check to make sure user is not trying to read in more
+ // taxon labels than there are taxa
+ //
+ if( taxa.GetNumTaxonLabels() > ntaxTotal ) {
+ errormsg = "Number of taxon labels exceeds NTAX specified in DIMENSIONS command";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ taxa.AddTaxonLabel( token.GetToken() );
+ }
+ }
+
+ // OPEN ISSUE: Some may object to setting newtaxa to false here, because then the
+ // fact that new taxa were specified in this CHARACTERS block rather than in
+ // a preceding TAXA block is lost. This will only be important if we wish to
+ // recreate the original data file, which I don't anticipate anyone doing with
+ // this code (too difficult to remember all comments, the order of blocks in
+ // the file, etc.)
+
+ newtaxa = false;
+
+}
+
+/**
+ * @method PositionInSymbols [int:protected]
+ * @param ch [int] the symbol character to search for
+ *
+ * Returns position of ch in symbols array. The value of respectingCase
+ * is used to determine whether the search should be case sensitive or not.
+ * Assumes symbols != NULL. Returns -1 if ch is not found in symbols.
+ */
+int CharactersBlock::PositionInSymbols( char ch )
+{
+ assert( symbols != NULL );
+ int symbolsLength = strlen(symbols);
+ int found = 0;
+ int i;
+ for( i = 0; i < symbolsLength; i++ )
+ {
+ char char_in_symbols = ( respectingCase ? symbols[i] : (char)toupper(symbols[i]) );
+ char char_in_question = ( respectingCase ? ch : (char)toupper(ch) );
+ if( char_in_symbols != char_in_question ) continue;
+ found = 1;
+ break;
+ }
+ return ( found ? i : -1 );
+}
+
+/**
+ * @method Read [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @param in [istream&] the input stream from which to read
+ * @throws XNexus
+ *
+ * This function provides the ability to read everything following the block name
+ * (which is read by the Nexus object) to the end or endblock statement.
+ * Characters are read from the input stream in. Overrides the
+ * abstract virtual function in the base class.
+ */
+void CharactersBlock::Read( NexusToken& token )
+{
+ isEmpty = false;
+ token.GetNextToken(); // this should be the semicolon after the block name
+ if( !token.Equals(";") ) {
+ errormsg = "Expecting ';' after ";
+ errormsg += id;
+ errormsg += " block name, but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ ntax = taxa.GetNumTaxonLabels();
+
+ for(;;)
+ {
+ token.GetNextToken();
+
+ if( token.Equals("DIMENSIONS") ) {
+ HandleDimensions( token, "NEWTAXA", "NTAX", "NCHAR" );
+ }
+ else if( token.Equals("FORMAT") ) {
+ HandleFormat( token );
+ }
+ else if( token.Equals("ELIMINATE") ) {
+ HandleEliminate( token );
+ }
+ else if( token.Equals("TAXLABELS") ) {
+ HandleTaxlabels( token );
+ }
+ else if( token.Equals("CHARSTATELABELS") ) {
+ HandleCharstatelabels( token );
+ }
+ else if( token.Equals("CHARLABELS") ) {
+ HandleCharlabels( token );
+ }
+ else if( token.Equals("STATELABELS") ) {
+ HandleStatelabels( token );
+ }
+ else if( token.Equals("MATRIX") ) {
+ HandleMatrix( token );
+ }
+ else if( token.Equals("END") ) {
+ HandleEndblock( token, "Character" );
+ break;
+ }
+ else if( token.Equals("ENDBLOCK") ) {
+ HandleEndblock( token, "Character" );
+ break;
+ }
+ else {
+ SkippingCommand( token.GetToken() );
+ do {
+ token.GetNextToken();
+ } while( !token.AtEOF() && !token.Equals(";") );
+ if( token.AtEOF() ) {
+ errormsg = "Unexpected end of file encountered";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ }
+ }
+}
+
+/**
+ * @method Report [void:public]
+ * @param out [ostream&] the output stream to which to write the report
+ *
+ * This function outputs a brief report of the contents of this
+ * CHARACTERS block. Overrides the abstract virtual function
+ * in the base class.
+ */
+void CharactersBlock::Report( std::ostream& out )
+{
+ out << endl;
+ out << id << " block contains ";
+ if( ntax == 0 )
+ out << "no taxa";
+ else if( ntax == 1 )
+ out << "one taxon";
+ else
+ out << ntax << " taxa";
+ out << " and ";
+ if( nchar == 0 )
+ out << "no characters";
+ else if( nchar == 1 )
+ out << "one character";
+ else
+ out << nchar << " characters";
+ out << endl;
+
+ switch( datatype )
+ {
+ case dna:
+ out << " Data type is \"DNA\"" << endl;
+ break;
+ case rna:
+ out << " Data type is \"RNA\"" << endl;
+ break;
+ case nucleotide:
+ out << " Data type is \"nucleotide\"" << endl;
+ break;
+ case protein:
+ out << " Data type is \"protein\"" << endl;
+ break;
+ case continuous:
+ out << " Data type is \"continuous\"" << endl;
+ break;
+ default:
+ out << " Data type is \"standard\"" << endl;
+ }
+
+ if( respectingCase )
+ out << " Respecting case" << endl;
+ else
+ out << " Ignoring case" << endl;
+
+ if( tokens )
+ out << " Multicharacter tokens allowed in data matrix" << endl;
+ else
+ out << " Data matrix entries are expected to be single symbols" << endl;
+
+ if( labels && transposing )
+ out << " Character labels are expected on left side of matrix" << endl;
+ else if( labels && !transposing )
+ out << " Taxon labels are expected on left side of matrix" << endl;
+ else
+ out << " No labels are expected on left side of matrix" << endl;
+
+ if( charLabels.size() > 0 )
+ {
+ out << " Character and character state labels:" << endl;
+ for( int k = 0; k < nchar; k++ )
+ {
+ if( charLabels[k].length() == 0 )
+ out << '\t' << ( 1 + GetOrigCharIndex(k) ) << '\t' << "(no label provided for this character)" << endl;
+ else
+ out << '\t' << ( 1 + GetOrigCharIndex(k) ) << '\t' << charLabels[k] << endl;
+
+ // output state labels if any are defined for this character
+ LabelListBag::const_iterator cib = charStates.find(k);
+ if( cib != charStates.end() )
+ {
+ int ns = (*cib).second.size();
+ for( int m = 0; m < ns; m++ ) {
+ out << "\t\t" << (*cib).second[m] << endl;
+ }
+ }
+ }
+ }
+
+ if( transposing && interleaving )
+ out << " Matrix transposed and interleaved" << endl;
+ else if( transposing && !interleaving )
+ out << " Matrix transposed but not interleaved" << endl;
+ else if( !transposing && interleaving )
+ out << " Matrix interleaved but not transposed" << endl;
+ else
+ out << " Matrix neither transposed nor interleaved" << endl;
+
+ out << " Missing data symbol is '" << missing << '\'' << endl;
+
+ if( matchchar != '\0' )
+ out << " Match character is '" << matchchar << '\'' << endl;
+ else
+ out << " No match character specified" << endl;
+
+ if( gap != '\0' )
+ out << " Gap character specified is '" << gap << '\'' << endl;
+ else
+ out << " No gap character specified" << endl;
+
+ out << " Valid symbols are: " << symbols << endl;
+
+ int numEquateMacros = equates.size();
+ if( numEquateMacros > 0 ) {
+ out << " Equate macros in effect:" << endl;
+ typedef AssocList::const_iterator CI;
+ for( CI i = equates.begin(); i != equates.end(); ++i) {
+ out << " " << (*i).first << " = " << (*i).second << endl;
+ }
+ }
+ else
+ out << " No equate macros have been defined" << endl;
+
+ if( ncharTotal == nchar )
+ out << " No characters were eliminated" << endl;
+ else {
+ out << " The following characters were eliminated:" << endl;
+ IntSet::const_iterator k;
+ for( k = eliminated.begin(); k != eliminated.end(); k++ ) {
+ out << " " << ((*k)+1) << endl;
+ }
+ }
+
+ out << " The following characters have been excluded:" << endl;
+ int k;
+ int nx = 0;
+ for( k = 0; k < nchar; k++ ) {
+ if( activeChar[k] ) continue;
+ out << " " << (k+1) << endl;
+ nx++;
+ }
+ if( nx == 0 )
+ out << " (no characters excluded)" << endl;
+
+ out << " The following taxa have been deleted:" << endl;
+ nx = 0;
+ for( k = 0; k < ntax; k++ ) {
+ if( activeTaxon[k] ) continue;
+ out << " " << (k+1) << endl;
+ nx++;
+ }
+ if( nx == 0 )
+ out << " (no taxa deleted)" << endl;
+
+ out << " Data matrix:" << endl;
+ DebugShowMatrix( out, " " );
+}
+
+/**
+ * @method Reset [void:protected]
+ *
+ * Sets ntax and nchar to 0 in preparation for reading a new
+ * CHARACTERS block.
+ */
+void CharactersBlock::Reset()
+{
+ isEmpty = true;
+ ntax = 0;
+ nchar = 0;
+ newchar = true;
+ newtaxa = false;
+ interleaving = false;
+ transposing = false;
+ respectingCase = false;
+ labels = true;
+ datatype = standard;
+ missing = '?';
+ gap = '\0';
+ matchchar = '\0';
+
+ charLabels.erase( charLabels.begin(), charLabels.end() );
+ charStates.erase( charStates.begin(), charStates.end() );
+ equates.erase( equates.begin(), equates.end() );
+
+ ResetSymbols();
+
+ if( matrix != NULL ) {
+ delete matrix;
+ matrix = NULL;
+ }
+
+ if( charPos != NULL ) {
+ delete [] charPos;
+ charPos = NULL;
+ }
+
+ if( taxonPos != NULL ) {
+ delete [] taxonPos;
+ taxonPos = NULL;
+ }
+
+ if( activeTaxon != NULL ) {
+ delete [] activeTaxon;
+ activeTaxon = NULL;
+ }
+
+ if( activeChar != NULL ) {
+ delete [] activeChar;
+ activeChar = NULL;
+ }
+
+ if( !eliminated.empty() ) {
+ eliminated.erase( eliminated.begin(), eliminated.end() );
+ }
+}
+
+/**
+ * @method ResetSymbols [void:protected]
+ *
+ * Resets standard symbol set after a change in datatype is made. Also
+ * flushes equates list and installs standard equate macros for the
+ * current datatype.
+ */
+void CharactersBlock::ResetSymbols()
+{
+ // define the standard symbols
+ switch( datatype )
+ {
+ case dna:
+ strcpy( symbols, "ACGT" );
+ break;
+ case rna:
+ strcpy( symbols, "ACGU" );
+ break;
+ case nucleotide:
+ strcpy( symbols, "ACGT" );
+ break;
+ case protein:
+ strcpy( symbols, "ACDEFGHIKLMNPQRSTVWY*" );
+ break;
+ default:
+ strcpy( symbols, "01" );
+ }
+
+ // setup standard equates
+ equates.erase( equates.begin(), equates.end() );
+//trash Association* newEquate;
+ if( datatype == dna || datatype == rna || datatype == nucleotide )
+ {
+#if 1
+ equates[ nxsstring("R") ] = nxsstring("{AG}");
+ equates[ nxsstring("Y") ] = nxsstring("{CT}");
+ equates[ nxsstring("M") ] = nxsstring("{AC}");
+ equates[ nxsstring("K") ] = nxsstring("{GT}");
+ equates[ nxsstring("S") ] = nxsstring("{CG}");
+ equates[ nxsstring("W") ] = nxsstring("{AT}");
+ equates[ nxsstring("H") ] = nxsstring("{ACT}");
+ equates[ nxsstring("B") ] = nxsstring("{CGT}");
+ equates[ nxsstring("V") ] = nxsstring("{ACG}");
+ equates[ nxsstring("D") ] = nxsstring("{AGT}");
+ equates[ nxsstring("N") ] = nxsstring("{ACGT}");
+ equates[ nxsstring("X") ] = nxsstring("{ACGT}");
+#else
+ newEquate = new Association();
+ newEquate->SetKey("R");
+ newEquate->SetValue("{AG}");
+ equates.AddAssociation( newEquate );
+
+ newEquate = new Association();
+ newEquate->SetKey("Y");
+ newEquate->SetValue("{CT}");
+ equates.AddAssociation( newEquate );
+
+ newEquate = new Association();
+ newEquate->SetKey("M");
+ newEquate->SetValue("{AC}");
+ equates.AddAssociation( newEquate );
+
+ newEquate = new Association();
+ newEquate->SetKey("K");
+ newEquate->SetValue("{GT}");
+ equates.AddAssociation( newEquate );
+
+ newEquate = new Association();
+ newEquate->SetKey("S");
+ newEquate->SetValue("{CG}");
+ equates.AddAssociation( newEquate );
+
+ newEquate = new Association();
+ newEquate->SetKey("W");
+ newEquate->SetValue("{AT}");
+ equates.AddAssociation( newEquate );
+
+ newEquate = new Association();
+ newEquate->SetKey("H");
+ newEquate->SetValue("{ACT}");
+ equates.AddAssociation( newEquate );
+
+ newEquate = new Association();
+ newEquate->SetKey("B");
+ newEquate->SetValue("{CGT}");
+ equates.AddAssociation( newEquate );
+
+ newEquate = new Association();
+ newEquate->SetKey("V");
+ newEquate->SetValue("{ACG}");
+ equates.AddAssociation( newEquate );
+
+ newEquate = new Association();
+ newEquate->SetKey("D");
+ newEquate->SetValue("{AGT}");
+ equates.AddAssociation( newEquate );
+
+ newEquate = new Association();
+ newEquate->SetKey("N");
+ newEquate->SetValue("{ACGT}");
+ equates.AddAssociation( newEquate );
+
+ newEquate = new Association();
+ newEquate->SetKey("X");
+ newEquate->SetValue("{ACGT}");
+ equates.AddAssociation( newEquate );
+#endif
+ }
+ else if( datatype == protein )
+ {
+#if 1
+ equates[ nxsstring("B") ] = nxsstring("{DN}");
+ equates[ nxsstring("Z") ] = nxsstring("{EQ}");
+#else
+ newEquate = new Association();
+ newEquate->SetKey("B");
+ newEquate->SetValue("{DN}");
+ equates.AddAssociation( newEquate );
+
+ newEquate = new Association();
+ newEquate->SetKey("Z");
+ newEquate->SetValue("{EQ}");
+ equates.AddAssociation( newEquate );
+#endif
+ }
+}
+
+/**
+ * @method RestoreTaxon [void:protected]
+ * @param i [int] index of taxon to restore in range [0..ntax)
+ *
+ * Restores taxon whose 0-offset current index is i. If taxon
+ * is already active, this function has no effect.
+ */
+void CharactersBlock::RestoreTaxon( int i )
+{
+ activeTaxon[i] = true;
+}
+
+/**
+ * @method ShowStateLabels [void:protected]
+ * @param out [ostream&] the output stream on which to write
+ * @param i [int] the taxon, in range [0..ntax)
+ * @param j [int] the character, in range [0..nchar)
+ *
+ * Looks up the state(s) at row i, column j of matrix and writes it (or them)
+ * to out. If there is uncertainty or polymorphism, the list of states is
+ * surrounded by the appropriate set of symbols (i.e., parentheses for polymorphism,
+ * curly brackets for uncertainty). If 'tokens' is in effect, the output takes
+ * the form of the defined state labels; otherwise, the correct symbol is
+ * looked up in symbols and output.
+ */
+void CharactersBlock::ShowStateLabels( std::ostream& out, int i, int j )
+{
+ if( tokens )
+ {
+ int n = matrix->GetNumStates( i, j );
+ if( n == 0 && matrix->IsGap( i, j ) )
+ out << gap;
+ else if( n == 0 && matrix->IsMissing( i, j ) )
+ out << missing;
+ else if( n == 1 ) {
+ int s = matrix->GetState( i, j );
+ LabelListBag::const_iterator ci = charStates.find(j);
+ // OPEN ISSUE: need to eliminate state labels for characters that have
+ // been eliminated
+ if( ci == charStates.end() )
+ out << " " << s << "[<-no label found]";
+ else {
+ // show label at index number s in LabelList at ci
+ out << " " << (*ci).second[s];
+ }
+ }
+ else {
+ if( matrix->IsPolymorphic( i, j ) )
+ out << " (";
+ else
+ out << " {";
+ for( int k = 0; k < n; k++ ) {
+ int s = matrix->GetState( i, j, k );
+ LabelListBag::const_iterator ci = charStates.find(j);
+ if( ci == charStates.end() )
+ out << " " << s << "[<-no label found]";
+ else {
+ // show label at index number s in LabelList at ci
+ out << " " << (*ci).second[s];
+ }
+ }
+ if( matrix->IsPolymorphic( i, j ) )
+ out << ')';
+ else
+ out << '}';
+ }
+
+ }
+ else
+ ShowStates( out, i, j );
+}
+
+/**
+ * @method ShowStates [char*:public]
+ * @param out [ostream&] the stream on which to show the state(s)
+ * @param i [int] the (0-offset) index of the taxon in question
+ * @param j [int] the (0-offset) index of the character in question
+ *
+ * Shows the states for taxon i, character j, on the stream out. Uses
+ * symbols array to translate the states from the way they are stored (as
+ * integers) to the symbol used in the original data matrix.
+ * Assumes i is in the range [0..nrows) and j is in the range [0..ncols).
+ * Also assumes both symbols and data are non-NULL.
+ */
+void CharactersBlock::ShowStates( std::ostream& out, int i, int j )
+{
+ assert( i >= 0 );
+ assert( i < ntax );
+ assert( j >= 0 );
+ assert( j < nchar );
+
+ char s[NCL_MAX_STATES+3];
+ WriteStates( matrix->GetDiscreteDatum( i, j ), s, NCL_MAX_STATES+3 );
+
+ out << s;
+}
+
+/**
+ * @method TaxonLabelToNumber [void:protected]
+ * @param s [nxsstring&] the taxon label to convert
+ *
+ * Converts a taxon label to a number corresponding to
+ * the taxon's position within the list maintained by
+ * the TaxaBlock object. This method overrides the
+ * virtual function of the same name in the NexusBlock
+ * base class. If s is not a valid taxon label, returns
+ * the value 0.
+ */
+int CharactersBlock::TaxonLabelToNumber( nxsstring s )
+{
+ int i;
+ try {
+ i = 1 + taxa.FindTaxon(s);
+ }
+ catch( TaxaBlock::nosuchtaxon ) {
+ i = 0;
+ }
+ return i;
+}
+
+/**
+ * @method WriteStates [void:public]
+ * @param d [DiscreteDatum&] the datum to be queried
+ * @param s [char*] the buffer to which to print
+ * @param slen [int] the length of the buffer s
+ *
+ * Writes out the state (or states) stored in this DiscreteDatum object
+ * to the buffer s using the symbols array to do the necessary
+ * translation of the numeric state values to state symbols. In the
+ * case of polymorphism or uncertainty, the list of states will be
+ * surrounded by brackets or parentheses (respectively). Assumes
+ * s is long enough to hold everything printed.
+ */
+void CharactersBlock::WriteStates( DiscreteDatum& d, char* s, int slen )
+{
+
+ assert( s != NULL );
+ assert( slen > 1 );
+
+ if( matrix->IsMissing(d) ) {
+ s[0] = missing;
+ s[1] = '\0';
+ }
+ else if( matrix->IsGap(d) ) {
+ s[0] = gap;
+ s[1] = '\0';
+ }
+ else
+ {
+ assert( symbols != NULL );
+ int symbolListLen = strlen( symbols );
+
+ int numStates = matrix->GetNumStates(d);
+ int numCharsNeeded = numStates;
+ if( numStates > 1 )
+ numCharsNeeded += 2;
+ assert( slen > numCharsNeeded );
+
+ if( numStates == 1 ) {
+ int v = matrix->GetState( d );
+ assert( v < symbolListLen );
+ s[0] = symbols[v];
+ s[1] = '\0';
+ }
+ else {
+ // numStates must be greater than 1
+ //
+ int i = 0;
+ if( matrix->IsPolymorphic(d) )
+ s[i++] = '(';
+ else
+ s[i++] = '{';
+ for( int k = 0; k < numStates; k++ ) {
+ int v = matrix->GetState( d, k );
+ assert( v < symbolListLen );
+ s[i++] = symbols[v];
+ s[i] = '\0';
+ }
+ if( matrix->IsPolymorphic(d) )
+ s[i++] = ')';
+ else
+ s[i++] = '}';
+ s[i] = '\0';
+ }
+ }
+}
+
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/charactersblock.cpp
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/charactersblock.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/charactersblock.h 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/charactersblock.h 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,156 @@
+#ifndef __CHARACTERSBLOCK_H
+#define __CHARACTERSBLOCK_H
+
+class AssumptionsBlock;
+
+//
+// CharactersBlock class
+//
+class CharactersBlock : public NexusBlock
+{
+ // Adding a new data member? Don't forget to:
+ // 1. Describe it in the class header comment at the top of "charactersblock.cpp"
+ // 2. Initialize it (unless it is self-initializing) in the constructor
+ // and reinitialize it in the Reset function
+ // 3. Describe the initial state in the constructor documentation
+ // 4. Delete memory allocated to it in both the destructor and Reset function
+ // 5. Report it in some way in the Report function
+
+friend class AssumptionsBlock;
+
+protected:
+ TaxaBlock& taxa;
+ AssumptionsBlock& assumptionsBlock;
+
+ int ntax;
+ int ntaxTotal;
+ int nchar;
+ int ncharTotal;
+
+ bool newtaxa;
+ bool newchar;
+
+ bool respectingCase;
+ bool transposing;
+ bool interleaving;
+ bool tokens;
+ bool labels;
+
+ char missing;
+ char gap;
+ char matchchar;
+
+ char* symbols;
+
+ AssocList equates;
+
+ DiscreteMatrix* matrix;
+ int* charPos;
+ int* taxonPos;
+ IntSet eliminated;
+
+ bool* activeChar;
+ bool* activeTaxon;
+
+ LabelList charLabels;
+ LabelListBag charStates;
+
+public:
+ enum datatypes { standard = 1, dna, rna, nucleotide, protein, continuous };
+
+private:
+ datatypes datatype;
+
+protected:
+ void BuildCharPosArray( bool check_eliminated = false );
+ int IsInSymbols( char ch );
+ void HandleCharlabels( NexusToken& token );
+ void HandleCharstatelabels( NexusToken& token );
+ void HandleDimensions( NexusToken& token, nxsstring newtaxaLabel, nxsstring ntaxLabel, nxsstring ncharLabel );
+ void HandleEliminate( NexusToken& token );
+ void HandleEndblock( NexusToken& token, nxsstring charToken );
+ virtual void HandleFormat( NexusToken& token );
+ virtual void HandleMatrix( NexusToken& token );
+ virtual bool HandleNextState( NexusToken& token, int i, int c );
+ void HandleStatelabels( NexusToken& token );
+ virtual void HandleStdMatrix( NexusToken& token );
+ void HandleTaxlabels( NexusToken& token );
+ virtual int HandleTokenState( NexusToken& token, int c );
+ virtual void HandleTransposedMatrix( NexusToken& token );
+ int PositionInSymbols( char ch );
+ virtual void Read( NexusToken& token );
+ virtual void Reset();
+ void ResetSymbols();
+ void ShowStates( std::ostream& out, int i, int j );
+ void WriteStates( DiscreteDatum& d, char* s, int slen );
+
+public:
+ CharactersBlock( TaxaBlock& tb, AssumptionsBlock& ab );
+ virtual ~CharactersBlock();
+
+ int ApplyDelset( IntSet& delset );
+ int ApplyExset( IntSet& exset );
+ int ApplyIncludeset( IntSet& inset );
+ int ApplyRestoreset( IntSet& restoreset );
+ virtual int CharLabelToNumber( nxsstring s );
+ virtual int TaxonLabelToNumber( nxsstring s );
+
+ virtual void DebugShowMatrix( std::ostream& out, char* marginText = NULL );
+ nxsstring GetCharLabel( int i );
+ int GetCharPos( int origCharIndex );
+ int GetTaxPos( int origTaxonIndex );
+ int GetDataType();
+ char GetGapSymbol();
+ int GetInternalRepresentation( int i, int j, int k = 0 );
+ char GetMatchcharSymbol();
+ virtual int GetMaxObsNumStates();
+ char GetMissingSymbol();
+ int GetNTax();
+ int GetNChar();
+ int GetNCharTotal();
+ int GetNTaxTotal();
+ int GetNumActiveChar();
+ int GetNumActiveTaxa();
+ int GetNumEliminated();
+ int GetNumEquates();
+ int GetNumMatrixCols();
+ int GetNumMatrixRows();
+ int GetNumStates( int i, int j );
+ virtual int GetObsNumStates( int j );
+ int GetOrigCharIndex( int j );
+ int GetOrigCharNumber( int j );
+ int GetOrigTaxonIndex( int j );
+ int GetOrigTaxonNumber( int j );
+ char GetState( int i, int j, int k = 0 );
+ nxsstring GetStateLabel( int i, int j );
+ char* GetSymbols();
+ nxsstring GetTaxonLabel( int i );
+ bool IsGapState( int i, int j );
+ bool IsInterleave();
+ bool IsLabels();
+ bool IsMissingState( int i, int j );
+ bool IsPolymorphic( int i, int j );
+ bool IsRespectCase();
+ bool IsTokens();
+ bool IsTranspose();
+
+ bool IsEliminated( int origCharIndex );
+
+ void ExcludeCharacter( int i );
+ void IncludeCharacter( int i );
+ bool IsActiveChar( int j );
+ bool IsExcluded( int j );
+
+ void DeleteTaxon( int i );
+ void RestoreTaxon( int i );
+ bool IsActiveTaxon( int i );
+ bool IsDeleted( int i );
+
+ bool* GetActiveTaxonArray();
+ bool* GetActiveCharArray();
+
+ virtual void Report( std::ostream& out );
+ void ShowStateLabels( std::ostream& out, int i, int c );
+};
+
+#endif
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/charactersblock.h
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/datablock.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/datablock.cpp 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/datablock.cpp 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,67 @@
+#include "nexusdefs.h"
+#include "discretedatum.h"
+#include "discretematrix.h"
+#include "nexustoken.h"
+#include "nexus.h"
+#include "taxablock.h"
+#include "charactersblock.h"
+#include "datablock.h"
+
+/**
+ * @class DataBlock
+ * @file datablock.h
+ * @file datablock.cpp
+ * @author Paul O. Lewis
+ * @copyright Copyright © 1999. All Rights Reserved.
+ * @see Association
+ * @see AssocList
+ * @see CharactersBlock
+ * @see DiscreteDatum
+ * @see DiscreteMatrix
+ * @see LabelList
+ * @see LabelListAssoc
+ * @see LabelListBag
+ * @see Nexus
+ * @see NexusBlock
+ * @see NexusReader
+ * @see NexusToken
+ * @see SetReader
+ * @see TaxaBlock
+ *
+ * This class handles reading and storage for the Nexus block DATA.
+ * It is derived from the CharactersBlock class, and differs from
+ * CharactersBlock only in name and the fact that newtaxa is initially
+ * true rather than false.
+ */
+
+/**
+ * @constructor
+ *
+ * Performs the following initializations:
+ * <table>
+ * <tr><th align="left">Variable <th> <th align="left"> Initial Value
+ * <tr><td> id <td>= <td> "DATA"
+ * <tr><td> newtaxa <td>= <td> true
+ * </table>
+ */
+DataBlock::DataBlock( TaxaBlock& tb, AssumptionsBlock& ab )
+ : CharactersBlock( tb, ab )
+{
+ id = "DATA";
+ newtaxa = true;
+}
+
+/**
+ * @method Reset [void:protected]
+ *
+ * Calls Reset function of the parent class (CharactersBlock) and
+ * resets newtaxa to true in preparation for reading another DATA block.
+ */
+void DataBlock::Reset()
+{
+ CharactersBlock::Reset();
+ newtaxa = true;
+ taxa.Reset();
+}
+
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/datablock.cpp
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/datablock.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/datablock.h 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/datablock.h 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,16 @@
+#ifndef __DATABLOCK_H
+#define __DATABLOCK_H
+
+//
+// DataBlock class
+//
+class DataBlock : public CharactersBlock
+{
+ protected:
+ void Reset();
+
+ public:
+ DataBlock( TaxaBlock& tb, AssumptionsBlock& ab );
+};
+
+#endif
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/datablock.h
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/discretedatum.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/discretedatum.cpp 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/discretedatum.cpp 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,118 @@
+#include "nexusdefs.h"
+#include "discretedatum.h"
+
+/**
+ * @class DiscreteDatum
+ * @file discretedatum.h
+ * @file discretedatum.cpp
+ * @author Paul O. Lewis
+ * @copyright Copyright © 1999. All Rights Reserved.
+ * @variable polymorphic [int:public] if true, additional states represent polymorphism rather than uncertainty
+ * @variable states [int*:public] holds information about state
+ * @see DiscreteMatrix
+ * @see NexusReader
+ *
+ * Class for holding discrete states in a matrix. Note that there is no way to access
+ * the variables of this class since they are all private and there are no public
+ * access functions. This class is designed to be manipulated by the class
+ * <a href="DiscreteMatrix.html">DiscreteMatrix</a>, which is the only class that
+ * has been designated a friend of DiscreteDatum.
+ *
+ * <p>The variable states is NULL if there is missing data, and non-NULL for any other state.
+ * If states is non-NULL, the first cell is used to store the number of states. This will
+ * be 0 if the state is the gap state, 1 if the state is unambiguous and nonpolymorphic
+ * (and not the gap state of course), and 2 or higher if there is either polymorphism or
+ * uncertainty. If polymorphism or uncertainty apply, it becomes necessary to store information
+ * about which of these two situations holds. Thus, the last cell in the array is set to
+ * either 1 (polymorphism) or 0 (uncertainty). While a little complicated, this scheme has
+ * the following benefits:
+ * <ol>
+ * <li> if the state is missing, the only memory allocated is for a pointer (states)
+ * <li> if the state is unambiguous and not polymorphic, no storage is used for keeping
+ * track of whether polymorphism or uncertainty holds
+ * <li> it allows for a virtually unlimited number of states, which is important if it is
+ * to be general enough to store microsatellite data for an AllelesBlock object, for
+ * example.
+ * </ol>
+ *
+ * <p>Supposing the gap symbol is '-', the missing data symbol is '?', and the
+ * symbols list is "ACGT", the following table shows the status of the states
+ * variable under several different possible data matrix entries:
+ * <table>
+ * <tr> <th> Matrix entry <th> contents of states
+ * <tr> <td align="center"> ? <td align="center"> NULL
+ * <tr> <td align="center"> - <td align="center"> <table border=1> <tr> <td>0</td> </table>
+ * <tr> <td align="center"> G <td align="center"> <table border=1> <tr> <td>1</td> <td>2</td> </table>
+ * <tr> <td align="center"> (AG) polymorphic <td align="center"> <table border=1> <tr> <td>2</td> <td>0</td> <td>2</td> <td>1</td> </table>
+ * <tr> <td align="center"> {AG} ambiguous <td align="center"> <table border=1> <tr> <td>2</td> <td>0</td> <td>2</td> <td>0</td> </table>
+ * </table>
+ */
+
+/**
+ * @constructor
+ *
+ * Sets states to NULL and polymorphic to 0.
+ */
+DiscreteDatum::DiscreteDatum()
+{
+ states = NULL;
+}
+
+/**
+ * @destructor
+ *
+ * Deletes memory associated with states (if any was allocated).
+ */
+DiscreteDatum::~DiscreteDatum()
+{
+ if( states != NULL )
+ delete [] states;
+}
+
+/**
+ * @method CopyFrom [int:public]
+ * @param other [const DiscreteDatum&] the source DiscreteDatum object
+ *
+ * Makes this DiscreteDatum object an exact copy of other. Useful for
+ * dealing with matchchar symbols in a matrix.
+ */
+void DiscreteDatum::CopyFrom( const DiscreteDatum& other )
+{
+ if( states != NULL ) {
+ delete [] states;
+ states = NULL;
+ }
+
+ if( other.states == NULL )
+ return;
+
+ int sz = other.states[0];
+ if( sz == 0 )
+ {
+ // other.states indicates the 'gap' state is present
+ //
+ states = new int[1];
+ states[0] = 0;
+ }
+ else if( sz == 1 )
+ {
+ // other.states indicates state is unambiguous and non-polymorphic
+ //
+ states = new int[2];
+ states[0] = 1;
+ states[1] = other.states[1];
+ }
+ else
+ {
+ // other.states indicates ambiguity or polymorphism is present
+ //
+ states = new int[sz+2];
+ states[0] = sz;
+ for( int i = 1; i <= sz; i++ )
+ states[i] = other.states[i];
+
+ // copy the polymorphism indicator element
+ //
+ states[sz+1] = other.states[sz+1];
+ }
+}
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/discretedatum.cpp
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/discretedatum.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/discretedatum.h 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/discretedatum.h 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,21 @@
+#ifndef __DISCRETEDATUM_H
+#define __DISCRETEDATUM_H
+
+//
+// DiscreteDatum class
+//
+class DiscreteDatum
+{
+ int* states;
+
+ friend class DiscreteMatrix;
+
+public:
+
+ DiscreteDatum();
+ ~DiscreteDatum();
+
+ void CopyFrom( const DiscreteDatum& other );
+};
+
+#endif
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/discretedatum.h
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/discretematrix.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/discretematrix.cpp 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/discretematrix.cpp 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,716 @@
+#include "nexusdefs.h"
+#include "discretedatum.h"
+#include "discretematrix.h"
+
+using namespace std;
+
+/**
+ * @class DiscreteMatrix
+ * @file discretematrix.h
+ * @file discretematrix.cpp
+ * @author Paul O. Lewis
+ * @copyright Copyright © 1999. All Rights Reserved.
+ * @variable data [Datum**:public] storage for the data
+ * @variable ncols [int:public] number of rows (taxa) in the data matrix
+ * @variable nrows [int:public] number of columns (characters) in the data matrix
+ * @see AllelesBlock
+ * @see CharactersBlock
+ * @see DataBlock
+ * @see DiscreteDatum
+ * @see NexusReader
+ *
+ * Class providing storage for the discrete data types (dna, rna, nucleotide,
+ * standard, and protein) inside a DATA or CHARACTERS block. This class is
+ * also used to store the data for an ALLELES block. Maintains a matrix in
+ * which each cell is an object of the class DiscreteDatum. DiscreteDatum
+ * stores the state for a particular combination of taxon and character as
+ * an integer. Ordinarily, there will be a single state recorded for each
+ * taxon/character combination, but exceptions exist if there is polymorphism
+ * for this taxon/character or if there is uncertainty about the state (e.g.,
+ * in dna data, the data file might have contained an R or Y entry). Please
+ * consult the documentation for the <a href="DiscreteDatum.html">DiscreteDatum</a>
+ * class for the details about how states are stored.
+ *
+ * <p>For data stored in an ALLELES block, rows of the matrix correspond to
+ * individuals and columns to loci. Each DiscreteDatum int must therefore
+ * store information about both genes at a single locus for a single individual
+ * in the case of diploid data. To do this, two macros HIWORD and LOWORD are
+ * used to divide up the int value into two words. A maximum of 255 distinct
+ * allelic forms can be accommodated by this scheme, assuming at minimum a
+ * 32-bit architecture. Because it is not known in advance how many rows are
+ * going to be necessary, The DiscreteMatrix class provides the AddRows
+ * method, which expands the number of rows allocated for the matrix while
+ * preserving data already stored.
+ */
+
+/**
+ * @constructor
+ *
+ * Performs the following initializations:
+ * <table>
+ * <tr><th align="left">Variable <th> <th align="left"> Initial Value
+ * <tr><td> nrows <td>= <td> rows
+ * <tr><td> ncols <td>= <td> cols
+ * </table>
+ * <p> In addition, memory is allocated for data (each element of the matrix
+ * data is a DiscreteDatum object which can do its own initialization).
+ */
+DiscreteMatrix::DiscreteMatrix( int rows, int cols ) : nrows(rows), ncols(cols)
+{
+ int i;
+
+ data = new DiscreteDatum*[nrows];
+ for( i = 0; i < nrows; i++ )
+ data[i] = new DiscreteDatum[ncols];
+}
+
+/**
+ * @destructor
+ *
+ * Deletes memory allocated in the constructor for data and symbols.
+ */
+DiscreteMatrix::~DiscreteMatrix()
+{
+ int i;
+
+ if( data != NULL ) {
+ for( i = 0; i < nrows; i++ )
+ delete [] data[i];
+ delete [] data;
+ }
+}
+
+/**
+ * @method AddRows [void:private]
+ * @param nAddRows [int] the number of additional rows to allocate
+ *
+ * Allocates memory for nAddRows additional rows and updates the variable
+ * nrows. Data already stored in data is not destroyed; the newly-allocated
+ * rows are added at the bottom of the existing matrix.
+ */
+void DiscreteMatrix::AddRows( int nAddRows )
+{
+ int i;
+ int new_nrows = nrows + nAddRows;
+ DiscreteDatum** new_data = new DiscreteDatum*[new_nrows];
+ for( i = 0; i < nrows; i++ )
+ new_data[i] = data[i];
+ delete [] data;
+ data = new_data;
+ for( i = nrows; i < new_nrows; i++ )
+ data[i] = new DiscreteDatum[ncols];
+ nrows = new_nrows;
+}
+
+/**
+ * @method AddState [void:public]
+ * @param i [int] the (0-offset) index of the taxon in question
+ * @param j [int] the (0-offset) index of the character in question
+ * @param value [int] the state to be added
+ *
+ * Adds state directly to the DiscreteDatum object at data[i][j].
+ * Assumes i is in the range [0..nrows) and j is in the range [0..ncols).
+ * The value parameter is assumed to be either zero or a positive integer.
+ * Calls private member function AddState to do the real work; look at
+ * the documentation for that function for additional details.
+ */
+void DiscreteMatrix::AddState( int i, int j, int value )
+{
+ assert( i >= 0 );
+ assert( i < nrows );
+ assert( j >= 0 );
+ assert( j < ncols );
+ assert( data != NULL );
+ assert( value >= 0 );
+
+ AddState( data[i][j], value );
+}
+
+/**
+ * @method AddState [void:private]
+ * @param d [DiscreteDatum&] the DiscreteDatum object affected
+ * @param value [int] the additional state to be added
+ *
+ * Adds an additional state to the array states of d. If states is NULL,
+ * allocates memory for two integers and assigns 1 to the first and value
+ * to the second. If states is non-NULL, allocates a new int array long
+ * enough to hold states already present plus the new one being added here,
+ * then deletes the old states array. Assumes that we are not trying to
+ * set either the missing state or the gap state here; the functions
+ * SetMissing or SetGap, respectively, should be used for those purposes.
+ * Also assumes that we do not want to "overwrite" the state. This function
+ * adds states to those already present; use SetState to overwrite the state.
+ */
+void DiscreteMatrix::AddState( DiscreteDatum& d, int value )
+{
+ int oldns = GetNumStates(d);
+ int k, newlen;
+
+ int* tmp = d.states;
+
+ if( IsMissing(d) ) {
+ d.states = new int[2];
+ d.states[0] = 1;
+ d.states[1] = value;
+ }
+ else if( IsGap(d) ) {
+ d.states = new int[2];
+ d.states[0] = 1;
+ d.states[1] = value;
+ }
+ else if( oldns == 1 ) {
+ d.states = new int[4];
+ d.states[0] = 2;
+ d.states[1] = tmp[1];
+ d.states[2] = value;
+ d.states[3] = 0; // assume not polymorphic unless told otherwise
+ }
+ else {
+ newlen = oldns + 3;
+ d.states = new int[newlen];
+ d.states[0] = oldns+1;
+ for( k = 1; k < oldns+1; k++ )
+ d.states[k] = tmp[k];
+ d.states[newlen-2] = value;
+ d.states[newlen-1] = 0; // assume not polymorphic unless told otherwise
+ }
+
+ if( tmp != NULL )
+ delete [] tmp;
+}
+
+/**
+ * @method CopyStatesFromFirstTaxon [long:public]
+ * @param i [int] the (0-offset) index of the taxon in question
+ * @param j [int] the (0-offset) index of the character in question
+ *
+ * Sets state of taxon i and character j to state of first taxon for character j.
+ * Assumes i is in the range [0..nrows) and j is in the range [0..ncols).
+ * Also assumes both data and symbols are non-NULL.
+ */
+void DiscreteMatrix::CopyStatesFromFirstTaxon( int i, int j )
+{
+ assert( i >= 0 );
+ assert( i < nrows );
+ assert( j >= 0 );
+ assert( j < ncols );
+ assert( data != NULL );
+
+ data[i][j].CopyFrom( data[0][j] );
+}
+
+/**
+ * @method DebugSaveMatrix [int:public]
+ * @param out [ostream&] the stream on which to dump the matrix contents
+ *
+ * Performs a dump of the current contents of the data matrix stored in
+ * the variable "data"
+ */
+void DiscreteMatrix::DebugSaveMatrix( std::ostream& out, int colwidth /* = 12 */ )
+{
+ out << endl;
+ out << "nrows = " << nrows << endl;
+ out << "ncols = " << ncols << endl;
+ for( int i = 0; i < nrows; i++ ) {
+ for( int j = 0; j < ncols; j++ ) {
+ if( IsMissing(i, j) )
+ out << setw(colwidth) << '?';
+ else if( IsGap(i, j) )
+ out << setw(colwidth) << '-';
+ else
+ out << setw(colwidth) << GetState(i, j);
+ }
+ out << endl;
+ }
+}
+
+/**
+ * @method DuplicateRow [int:public]
+ * @param row [int] the row to be duplicated
+ * @param count [int] the total number of copies needed
+ * @param startCol [int] the starting column (inclusive) in the range of columns to be duplicated
+ * @param endCol [int] the ending column (inclusive) in the range of columns to be duplicated
+ *
+ * Duplicates columns startCol to endCol in row row of the matrix. If additional
+ * storage is needed to accommodate the duplication, this is done automatically
+ * through the use of the AddRows method. Note that count includes the row already
+ * present, so if count is 10, then 9 more rows will actually be added to the matrix
+ * to make a total of 10 identical rows. The parameters startCol and endCol default
+ * to 0 and ncols, so if duplication of the entire row is needed, these need not
+ * be explicitly specified in the call to DuplicateRow.
+ *
+ * <p>Return value is number of additional rows allocated to matrix (0 if no
+ * rows needed to be allocated).
+ */
+int DiscreteMatrix::DuplicateRow( int row, int count
+ , int startCol /* = 0 */, int endCol /* = -1 */ )
+{
+ assert( data != NULL );
+ assert( row >= 0 );
+ assert( row < nrows );
+ assert( startCol >= 0 );
+ assert( startCol < ncols );
+ if( endCol == -1 )
+ endCol = ncols-1;
+ assert( endCol > startCol );
+ assert( endCol < ncols );
+
+ // expand matrix (if necessary) to accommodate additional rows
+ //
+ int nNewRows = 0;
+ if( row + count > nrows ) {
+ nNewRows = row + count - nrows;
+ AddRows( nNewRows );
+ }
+
+ for( int i = 1; i < count; i++ ) {
+ for( int col = startCol; col <= endCol; col++ ) {
+ data[row+i][col] = data[row][col];
+ }
+ }
+
+ return nNewRows;
+}
+
+/**
+ * @method Flush [void:public]
+ *
+ * Deletes all cells of data and resets nrows and ncols to 0.
+ */
+void DiscreteMatrix::Flush()
+{
+ // delete what is there now
+ if( data != NULL )
+ {
+ int i;
+ for( i = 0; i < nrows; i++ )
+ delete [] data[i];
+ delete [] data;
+ }
+
+ nrows = 0;
+ ncols = 0;
+}
+
+/**
+ * @method GetDiscreteDatum [DiscreteDatum&:private]
+ * @param i [int] the row of the matrix
+ * @param j [int] the column of the matrix
+ *
+ * Assumes that i is in the range [0..nrows) and j is in the range [0..ncols).
+ * Returns reference to the DiscreteDatum object at row i, column j of matrix.
+ */
+DiscreteDatum& DiscreteMatrix::GetDiscreteDatum( int i, int j )
+{
+ assert( i >= 0 );
+ assert( i < nrows );
+ assert( j >= 0 );
+ assert( j < ncols );
+ assert( data != NULL );
+
+ return data[i][j];
+}
+
+/**
+ * @method GetNumStates [int:public]
+ * @param i [int] the (0-offset) index of the taxon in question
+ * @param j [int] the (0-offset) index of the character in question
+ *
+ * Returns number of states for taxon i and character j.
+ * Assumes i is in the range [0..nrows) and j is in the range [0..ncols).
+ */
+int DiscreteMatrix::GetNumStates( int i, int j )
+{
+ assert( i >= 0 );
+ assert( i < nrows );
+ assert( j >= 0 );
+ assert( j < ncols );
+ assert( data != NULL );
+
+ return GetNumStates( data[i][j] );
+}
+
+/**
+ * @method GetNumStates [int:private]
+ * @param d [DiscreteDatum&] the datum in question
+ *
+ * Returns total number of states assigned to d. This function will return
+ * 0 for both gap and missing states.
+ */
+int DiscreteMatrix::GetNumStates( DiscreteDatum& d )
+{
+ if( d.states == NULL )
+ return 0;
+
+ return d.states[0];
+}
+
+/**
+ * @method GetObsNumStates [int:public]
+ * @param j [int] the (0-offset) index of the character in question
+ *
+ * Returns number of states for character j over all taxa.
+ * Note: this function is rather slow, as it must walk through
+ * each row, adding the states encountered to a set, then finally
+ * returning the size of the set. Thus, if this function is called
+ * often, it would be advisable to initialize an array using this
+ * function, then refer to the array subsequently.
+ * Assumes j is in the range [0..ncols).
+ */
+int DiscreteMatrix::GetObsNumStates( int j )
+{
+ assert( j >= 0 );
+ assert( j < ncols );
+ assert( data != NULL );
+
+ std::set< int, std::less<int> > stateset;
+ for( int i = 0; i < nrows; i++ ) {
+ DiscreteDatum& d = data[i][j];
+ int ns = GetNumStates(d);
+ if( ns == 0 ) continue;
+ for( int k = 0; k < ns; k++ )
+ stateset.insert( GetState( d, k ) );
+ }
+
+ return stateset.size();
+}
+
+/**
+ * @method GetState [int:private]
+ * @param i [int] the row of the matrix
+ * @param j [int] the column of the matrix
+ * @param k [int] the state to return (use default of 0 if only one state present)
+ *
+ * Assumes that i is in the range [0..nrows) and j is in the range [0..ncols).
+ * Also assumes that cell i, j holds at least one state (i.e., it is not the
+ * gap or missing states). Use the function GetNumStates to determine the
+ * number of states present (k must be less than this number).
+ */
+int DiscreteMatrix::GetState( int i, int j, int k /* = 0 */ )
+{
+ assert( i >= 0 );
+ assert( i < nrows );
+ assert( j >= 0 );
+ assert( j < ncols );
+ assert( data != NULL );
+
+ return GetState( data[i][j], k );
+}
+
+/**
+ * @method GetState [int:private]
+ * @param d [DiscreteDatum&] the datum in question
+ * @param i [int] the number of the state
+ *
+ * Returns the internal int representation of the state stored in d
+ * at position i of the array states. Assumes that the state is not the
+ * missing or gap state. Use IsMissing and IsGap prior to calling
+ * this function to ensure this function will succeed. The default
+ * value for i is 0, so calling GetState(d) will return the first
+ * state, whether or not there are multiple states stored. Assumes
+ * that i is in the range [ 0 .. d.states[0] ).
+ */
+int DiscreteMatrix::GetState( DiscreteDatum& d, int i /* = 0 */ )
+{
+ assert( !IsMissing(d) );
+ assert( !IsGap(d) );
+ assert( i >= 0 );
+ assert( i < d.states[0] );
+ return d.states[i+1];
+}
+
+/**
+ * @method IsGap [int:public]
+ * @param i [int] the (0-offset) index of the taxon in question
+ * @param j [int] the (0-offset) index of the character in question
+ *
+ * Returns 1 if the state for taxon i, character j, is set to the
+ * gap symbol, 0 otherwise. Assumes i is in the range [0..nrows) and j is
+ * in the range [0..ncols).
+ */
+int DiscreteMatrix::IsGap( int i, int j )
+{
+ assert( i >= 0 );
+ assert( i < nrows );
+ assert( j >= 0 );
+ assert( j < ncols );
+ assert( data != NULL );
+
+ return IsGap( data[i][j] );
+}
+
+/**
+ * @method IsGap [int:private]
+ * @param d [DiscreteDatum&] the datum in question
+ *
+ * Returns 1 if the gap state is stored, 0 otherwise.
+ */
+int DiscreteMatrix::IsGap( DiscreteDatum& d )
+{
+ if( d.states == NULL || d.states[0] > 0 )
+ return 0;
+ else
+ return 1;
+}
+
+/**
+ * @method IsMissing [int:public]
+ * @param i [int] the (0-offset) index of the taxon in question
+ * @param j [int] the (0-offset) index of the character in question
+ *
+ * Returns 1 if the state for taxon i, character j, is set to the
+ * missing data symbol, 0 otherwise. Assumes i is in the range [0..nrows)
+ * and j is in the range [0..ncols).
+ */
+int DiscreteMatrix::IsMissing( int i, int j )
+{
+ assert( i >= 0 );
+ assert( i < nrows );
+ assert( j >= 0 );
+ assert( j < ncols );
+ assert( data != NULL );
+
+ return IsMissing( data[i][j] );
+}
+
+/**
+ * @method IsMissing [int:private]
+ * @param d [DiscreteDatum&] the datum in question
+ *
+ * Returns 1 if the missing state is stored, 0 otherwise.
+ */
+int DiscreteMatrix::IsMissing( DiscreteDatum& d )
+{
+ if( d.states == NULL )
+ return 1;
+ else
+ return 0;
+}
+
+/**
+ * @method IsPolymorphic [int:public]
+ * @param i [int] the (0-offset) index of the taxon in question
+ * @param j [int] the (0-offset) index of the character in question
+ *
+ * Returns 1 if character j is polymorphic in taxon i, 0 otherwise. Assumes
+ * i is in the range [0..nrows) and j is in the range [0..ncols).
+ */
+int DiscreteMatrix::IsPolymorphic( int i, int j )
+{
+ assert( i >= 0 );
+ assert( i < nrows );
+ assert( j >= 0 );
+ assert( j < ncols );
+ assert( data != NULL );
+
+ return IsPolymorphic( data[i][j] );
+}
+
+/**
+ * @method IsPolymorphic [int:private]
+ * @param d [DiscreteDatum&] the datum in question
+ *
+ * Returns 1 if the number of states is greater than 1 and polymorphism
+ * has been specified. Returns 0 if the state stored is the missing state,
+ * the gap state, or if the number of states is 1.
+ */
+int DiscreteMatrix::IsPolymorphic( DiscreteDatum& d )
+{
+ if( d.states == NULL || d.states[0] < 2 )
+ return 0;
+
+ int nstates = d.states[0];
+ int ncells = nstates + 2;
+ return d.states[ncells-1];
+}
+
+/**
+ * @method Reset [void:public]
+ * @param rows [int] the new number of rows (taxa)
+ * @param cols [int] the new number of columns (characters)
+ *
+ * Deletes all cells of data and flags and reallocates memory to create
+ * a new matrix object with nrows = rows and ncols = cols.
+ */
+void DiscreteMatrix::Reset( int rows, int cols )
+{
+ int i;
+
+ assert( rows > 0 );
+ assert( cols > 0 );
+
+ // delete what is there now
+ if( data != NULL ) {
+ for( i = 0; i < nrows; i++ )
+ delete [] data[i];
+ delete [] data;
+ }
+
+ nrows = rows;
+ ncols = cols;
+
+ // create new data matrix
+ data = new DiscreteDatum*[nrows];
+ for( i = 0; i < nrows; i++ ) {
+ data[i] = new DiscreteDatum[ncols];
+ }
+}
+
+/**
+ * @method SetGap [void:public]
+ * @param i [int] the (0-offset) index of the taxon in question
+ * @param j [int] the (0-offset) index of the character in question
+ *
+ * Sets state stored at data[i][j] to the gap state.
+ * Assumes i is in the range [0..nrows) and j is in the range
+ * [0..ncols).
+ */
+void DiscreteMatrix::SetGap( int i, int j )
+{
+ assert( i >= 0 );
+ assert( i < nrows );
+ assert( j >= 0 );
+ assert( j < ncols );
+ assert( data != NULL );
+
+ SetGap( data[i][j] );
+}
+
+/**
+ * @method SetGap [void:private]
+ * @param d [DiscreteDatum&] the datum in question
+ *
+ * Assigns the gap state to d, erasing any previously stored information.
+ * The gap state is designated internally as a states array one element
+ * long, with the single element set to the value 0.
+ */
+void DiscreteMatrix::SetGap( DiscreteDatum& d )
+{
+ if( d.states != NULL )
+ delete [] d.states;
+ d.states = new int[1];
+ d.states[0] = 0;
+}
+
+/**
+ * @method SetMissing [void:public]
+ * @param i [int] the (0-offset) index of the taxon in question
+ * @param j [int] the (0-offset) index of the character in question
+ *
+ * Sets state stored at data[i][j] to the missing state.
+ * Assumes i is in the range [0..nrows) and j is in the range
+ * [0..ncols).
+ */
+void DiscreteMatrix::SetMissing( int i, int j )
+{
+ assert( i >= 0 );
+ assert( i < nrows );
+ assert( j >= 0 );
+ assert( j < ncols );
+ assert( data != NULL );
+
+ SetMissing( data[i][j] );
+}
+
+/**
+ * @method SetMissing [void:private]
+ * @param d [DiscreteDatum&] the datum in question
+ *
+ * Assigns the missing state to d, erasing any previously stored information.
+ * The missing state is stored internally as a NULL value for the states array.
+ */
+void DiscreteMatrix::SetMissing( DiscreteDatum& d )
+{
+ if( d.states != NULL )
+ delete [] d.states;
+ d.states = NULL;
+}
+
+/**
+ * @method SetPolymorphic [void:public]
+ * @param value [int] specify 1 if taxon at row i is polymorphic at character in column j, 0 if uncertain which state applies
+ *
+ * Sets polymorphism state of taxon i and character j to value. Value is
+ * 1 by default, so calling SetPolymorphic(i, j) with no value specified
+ * will set polymorphic to 1 in data[i][j]. Assumes i is in the range [0..nrows)
+ * and j is in the range [0..ncols). Also assumes that the number of states
+ * stored is greater than 1.
+ */
+void DiscreteMatrix::SetPolymorphic( int i, int j, int value /* = 1 */ )
+{
+ assert( i >= 0 );
+ assert( i < nrows );
+ assert( j >= 0 );
+ assert( j < ncols );
+ assert( data != NULL );
+ assert( value == 0 || value == 1 );
+
+ SetPolymorphic( data[i][j], value );
+}
+
+/**
+ * @method SetPolymorphic [void:private]
+ * @param d [DiscreteDatum&] the datum in question
+ * @param value [int] specify 1 if polymorphic, 0 if uncertain
+ *
+ * Sets the polymorphism cell (last cell in d.states) to value.
+ * Warning: has no effect if there are fewer than 2 states stored!
+ */
+void DiscreteMatrix::SetPolymorphic( DiscreteDatum& d, int value )
+{
+ if( d.states == NULL || d.states[0] < 2 )
+ return;
+
+ int nstates = d.states[0];
+ int ncells = nstates + 2;
+ d.states[ncells-1] = value;
+}
+
+/**
+ * @method SetState [long:public]
+ * @param i [int] the (0-offset) index of the taxon in question
+ * @param j [int] the (0-offset) index of the character in question
+ * @param stateSymbol [char] the state to assign
+ *
+ * Sets state of taxon row and character col to stateSymbol.
+ * Assumes i is in the range [0..nrows) and j is in the range [0..ncols).
+ * Also assumes both data and symbols are non-NULL. Finally, it is also
+ * assumed that this function will not be called if stateSymbol represents
+ * the missing or gap state, in which case the functions SetMissing or
+ * SetGap, respectively, should be called instead.
+ */
+void DiscreteMatrix::SetState( int i, int j, int value )
+{
+ assert( i >= 0 );
+ assert( i < nrows );
+ assert( j >= 0 );
+ assert( j < ncols );
+ assert( data != NULL );
+
+ SetState( data[i][j], value );
+}
+
+/**
+ * @method SetState [void:private]
+ * @param d [DiscreteDatum&] the datum in question
+ * @param value [int] the value to assign for the state
+ *
+ * Assigns value to the 2nd cell in states (1st cell in states
+ * array set to 1 to indicate that there is only one state).
+ * Warning: if there are already one or more states (including
+ * the gap state) assigned to d, they will be forgotten. Use
+ * the function AddState if you want to preserve states already
+ * stored in d. Assumes state being set is not the missing state
+ * nor the gap state; use SetMissing or SetGap, respectively, to
+ * do this.
+ */
+void DiscreteMatrix::SetState( DiscreteDatum& d, int value )
+{
+ if( d.states != NULL )
+ delete [] d.states;
+ d.states = new int[2];
+ d.states[0] = 1;
+ d.states[1] = value;
+}
+
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/discretematrix.cpp
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/discretematrix.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/discretematrix.h 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/discretematrix.h 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,54 @@
+#ifndef __DISCRETEMATRIX_H
+#define __DISCRETEMATRIX_H
+
+//
+// DiscreteMatrix class
+//
+class DiscreteMatrix
+{
+ int nrows;
+ int ncols;
+
+ DiscreteDatum** data;
+
+ friend class CharactersBlock;
+ friend class AllelesBlock;
+
+private:
+ void AddState( DiscreteDatum& d, int value );
+ int IsGap( DiscreteDatum& d );
+ int IsMissing( DiscreteDatum& d );
+ int IsPolymorphic( DiscreteDatum& d );
+ DiscreteDatum& GetDiscreteDatum( int i, int j );
+ int GetNumStates( DiscreteDatum& d );
+ int GetState( DiscreteDatum& d, int i = 0 );
+ void SetGap( DiscreteDatum& d );
+ void SetMissing( DiscreteDatum& d );
+ void SetPolymorphic( DiscreteDatum& d, int value );
+ void SetState( DiscreteDatum& d, int value );
+
+public:
+ DiscreteMatrix( int rows, int cols );
+ ~DiscreteMatrix();
+
+ void AddRows( int nAddRows );
+ void AddState( int i, int j, int value );
+ void CopyStatesFromFirstTaxon( int i, int j );
+ void DebugSaveMatrix( std::ostream& out, int colwidth = 12 );
+ int DuplicateRow( int row, int count, int startCol = 0, int endCol = -1 );
+ void Flush();
+ int GetState( int i, int j, int k = 0 );
+ int GetNumStates( int i, int j );
+ int GetObsNumStates( int j );
+ int IsGap( int i, int j );
+ int IsMissing( int i, int j );
+ int IsPolymorphic( int i, int j );
+ void Reset( int rows, int cols );
+ void SetGap( int i, int j );
+ void SetMissing( int i, int j );
+ void SetPolymorphic( int i, int j, int value = 1 );
+ void SetState( int i, int j, int value );
+};
+
+
+#endif
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/discretematrix.h
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/distancedatum.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/distancedatum.cpp 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/distancedatum.cpp 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,34 @@
+#include "distancedatum.h"
+
+/**
+ * @class DistanceDatum
+ * @file distancedatum.h
+ * @file distancedatum.cpp
+ * @author Paul O. Lewis
+ * @copyright Copyright © 1999. All Rights Reserved.
+ * @variable value [double:private] the pairwise distance value stored
+ * @see DistancesBlock
+ *
+ * This class stores pairwise distance values. It has no public access functions,
+ * reflecting the fact that it is manipulated strictly by its only friend class,
+ * the DistancesBlock class.
+ */
+
+/**
+ * @constructor
+ *
+ * Default constructor. Initializes value to 0.0 and distanceFlags to 0.
+ */
+DistanceDatum::DistanceDatum() : missing(1), value(0.0)
+{
+}
+
+/**
+ * @destructor
+ *
+ * Does nothing.
+ */
+DistanceDatum::~DistanceDatum()
+{
+}
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/distancedatum.cpp
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/distancedatum.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/distancedatum.h 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/distancedatum.h 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,16 @@
+#ifndef __DISTANCEDATUM_H
+#define __DISTANCEDATUM_H
+
+class DistanceDatum
+{
+ double value;
+ int missing;
+
+ friend class DistancesBlock;
+
+public:
+ DistanceDatum();
+ ~DistanceDatum();
+};
+
+#endif
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/distancedatum.h
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/distancesblock.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/distancesblock.cpp 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/distancesblock.cpp 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,919 @@
+#include "nexusdefs.h"
+#include "xnexus.h"
+#include "nexustoken.h"
+#include "nexus.h"
+#include "taxablock.h"
+#include "distancedatum.h"
+#include "distancesblock.h"
+
+using namespace std;
+
+/**
+ * @class DistancesBlock
+ * @file distancesblock.h
+ * @file distancesblock.cpp
+ * @author Paul O. Lewis
+ * @copyright Copyright © 1999. All Rights Reserved.
+ * @variable diagonal [int:private] indicates whether the diagonal elements of the matrix will be provided
+ * @variable interleave [int:private] indicates whether the matrix will be interleaved
+ * @variable labels [int:private] indicates whether taxon labels are provided in the matrix
+ * @variable matrix [DistanceDatum**:private] array holding distance data
+ * @variable missing [char:private] symbol used to indicate missing data
+ * @variable nchar [int:private] the number of characters used in generating the pairwise distances
+ * @variable newtaxa [int:private] if 1, new taxa will be defined in the matrix
+ * @variable ntax [int:private] the number of taxa (determines dimensions of the matrix)
+ * @variable taxa [TaxaBlock&:private] reference to a TaxaBlock object
+ * @variable taxonPos [int*:private] array holding 0-offset index into taxa's list of taxon labels
+ * @variable triangle [int:private] indicates whether matrix is upper triangular, lower triangular, or rectangular
+ * @see NexusReader
+ * @see NexusToken
+ * @see XNexus
+ *
+ * This class handles reading and storage for the Nexus block DISTANCES.
+ * It overrides the member functions Read and Reset, which are abstract
+ * virtual functions in the base class NexusBlock.
+ *
+ * <P> Below is a table showing the correspondence between the elements of a
+ * DISTANCES block and the variables and member functions that can be used
+ * to access each piece of information stored.
+ *
+ * <p><table border=1>
+ * <tr>
+ * <th> Nexus command
+ * <th> Nexus subcommand
+ * <th> Data Members
+ * <th> Member Functions
+ * <tr>
+ * <td rowspan=3 align=left> DIMENSIONS
+ * <td> NEWTAXA
+ * <td> int <a href="#newtaxa">newtaxa</a>
+ * <td>
+ * <tr>
+ * <td> NTAX
+ * <td> int <a href="#ntax">ntax</a>
+ * <td> int <a href="#GetNtax">GetNtax()</a>
+ * <tr>
+ * <td> NCHAR
+ * <td> int <a href="#ntax">nchar</a>
+ * <td> int <a href="#GetNchar">GetNchar()</a>
+ * <tr>
+ * <td rowspan=5 align=left> FORMAT
+ * <td> TRIANGLE
+ * <td> int <a href="#triangle">triangle</a>
+ * <td> int <a href="#GetTriangle">GetTriangle()</a>
+ * <br> int <a href="#IsUpperTriangular">IsUpperTriangular()</a>
+ * <br> int <a href="#IsLowerTriangular">IsLowerTriangular()</a>
+ * <br> int <a href="#IsBoth">IsBoth()</a>
+ * <tr>
+ * <td> [NO]DIAGONAL
+ * <td> int <a href="#diagonal">diagonal</a>
+ * <td> int <a href="#IsDiagonal">IsDiagonal()</a>
+ * <tr>
+ * <td> [NO]LABELS
+ * <td> int <a href="#labels">labels</a>
+ * <td> int <a href="#IsLabels">IsLabels()</a>
+ * <tr>
+ * <td> MISSING
+ * <td> char <a href="#missing">missing</a>
+ * <td> char <a href="#GetMissingSymbol">GetMissingSymbol()</a>
+ * <tr>
+ * <td> INTERLEAVE
+ * <td> int <a href="#interleave">interleave</a>
+ * <td> int <a href="#IsInterleave">IsInterleave()</a>
+ * <tr>
+ * <td colspan=2 align=left> TAXLABELS
+ * <td> (stored in TaxaBlock object)
+ * <td> (access through taxa)
+ * <tr>
+ * <td colspan=2 align=left> MATRIX
+ * <td> DistanceDatum** <a href="#matrix">matrix</a>
+ * <td> double <a href="#GetDistance">GetDistance( i, j )</a>
+ * <br> int <a href="#IsMissing">IsMissing( i, j )</a>
+ * <br> void <a href="#SetMissing">SetMissing( i, j )</a>
+ * <br> void <a href="#SetDistance">SetDistance( i, j, double d )</a>
+ * </table>
+ */
+
+/**
+ * @enumeration
+ * @enumitem upper [1] matrix is upper-triangular
+ * @enumitem lower [2] matrix is lower-triangular
+ * @enumitem both [3] matrix is rectangular
+ *
+ * For use with the variable triangle.
+ */
+
+/**
+ * @constructor
+ *
+ * Default constructor. Performs the following initializations:
+ * <table>
+ * <tr><th align="left">Variable <th> <th align="left"> Initial Value
+ * <tr><td> id <td>= <td> "DISTANCES"
+ * <tr><td> diagonal <td>= <td> 1
+ * <tr><td> interleave <td>= <td> 0
+ * <tr><td> labels <td>= <td> 1
+ * <tr><td> matrix <td>= <td> NULL
+ * <tr><td> missing <td>= <td> '?'
+ * <tr><td> nchar <td>= <td> 0
+ * <tr><td> newtaxa <td>= <td> 0
+ * <tr><td> ntax <td>= <td> 0
+ * <tr><td> taxonPos <td>= <td> NULL
+ * <tr><td> triangle <td>= <td> lower
+ * </table>
+ */
+DistancesBlock::DistancesBlock( TaxaBlock& t ) : taxa(t), NexusBlock()
+{
+ id = "DISTANCES";
+
+ newtaxa = 0;
+ ntax = 0;
+ nchar = 0;
+ diagonal = 1;
+ triangle = lower;
+ interleave = 0;
+ labels = 1;
+ missing = '?';
+ matrix = NULL;
+ taxonPos = NULL;
+}
+
+/**
+ * @destructor
+ *
+ * Deletes the memory used by id and flushes taxonLabels.
+ */
+DistancesBlock::~DistancesBlock()
+{
+ if( matrix != NULL )
+ delete matrix;
+ if( taxonPos != NULL )
+ delete [] taxonPos;
+}
+
+/**
+ * @method HandleDimensionsCommand [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * Called when DIMENSIONS command needs to be parsed from within the
+ * DISTANCES block. Deals with everything after the token DIMENSIONS
+ * up to and including the semicolon that terminates the DIMENSIONS
+ * command.
+ */
+void DistancesBlock::HandleDimensionsCommand( NexusToken& token )
+{
+ for(;;)
+ {
+ token.GetNextToken();
+
+ // token should either be ';' or the name of a subcommand
+ //
+ if( token.Equals(";") ) {
+ break;
+ }
+ else if( token.Equals("NEWTAXA") ) {
+ ntax = 0;
+ newtaxa = 1;
+ }
+ else if( token.Equals("NTAX") ) {
+ if( !newtaxa ) {
+ errormsg = "Must specify NEWTAXA before NTAX if new taxa are being defined";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // this should be the equals sign
+ token.GetNextToken();
+ if( !token.Equals("=") ) {
+ errormsg = "Expecting '=' but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // this should be the number of taxa
+ token.GetNextToken();
+ ntax = atoi( token.GetToken().c_str() );
+ }
+ else if( token.Equals("NCHAR") ) {
+ // this should be the equals sign
+ token.GetNextToken();
+ if( !token.Equals("=") ) {
+ errormsg = "Expecting '=' but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // this should be the number of characters
+ token.GetNextToken();
+ nchar = atoi( token.GetToken().c_str() );
+ }
+ }
+
+ if( ntax == 0 )
+ ntax = taxa.GetNumTaxonLabels();
+}
+
+/**
+ * @method HandleFormatCommand [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * Called when FORMAT command needs to be parsed from within the
+ * DISTANCES block. Deals with everything after the token FORMAT
+ * up to and including the semicolon that terminates the FORMAT
+ * command.
+ */
+void DistancesBlock::HandleFormatCommand( NexusToken& token )
+{
+ for(;;)
+ {
+ token.GetNextToken();
+
+ // token should either be ';' or the name of a subcommand
+ //
+ if( token.Equals(";") ) {
+ break;
+ }
+ else if( token.Equals("TRIANGLE") ) {
+
+ // this should be the equals sign
+ token.GetNextToken();
+ if( !token.Equals("=") ) {
+ errormsg = "Expecting '=' but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // this should be LOWER, UPPER, or BOTH
+ token.GetNextToken();
+ if( token.Equals("LOWER") )
+ triangle = lower;
+ else if( token.Equals("UPPER") )
+ triangle = upper;
+ else if( token.Equals("BOTH") )
+ triangle = both;
+ else {
+ errormsg = "Expecting UPPER, LOWER, or BOTH but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ }
+ else if( token.Equals("DIAGONAL") ) {
+ diagonal = 1;
+ }
+ else if( token.Equals("NODIAGONAL") ) {
+ diagonal = 0;
+ }
+ else if( token.Equals("LABELS") ) {
+ labels = 1;
+ }
+ else if( token.Equals("NOLABELS") ) {
+ labels = 0;
+ }
+ else if( token.Equals("INTERLEAVE") ) {
+ interleave = 1;
+ }
+ else if( token.Equals("NOINTERLEAVE") ) {
+ interleave = 0;
+ }
+ else if( token.Equals("MISSING") ) {
+
+ // this should be the equals sign
+ token.GetNextToken();
+ if( !token.Equals("=") ) {
+ errormsg = "Expecting '=' but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // this should be the missing data symbol
+ token.GetNextToken();
+ if( token.GetTokenLength() != 1 ) {
+ errormsg = "Missing data symbol specified (";
+ errormsg += token.GetToken();
+ errormsg += ") is invalid (must be a single character)";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ missing = token.GetToken()[0];
+ }
+ else {
+ errormsg = "Token specified (";
+ errormsg += token.GetToken();
+ errormsg += ") is an invalid subcommand for the FORMAT command";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ }
+}
+
+/**
+ * @method HandleNextPass [int:protected]
+ * @param token [NexusToken&] the token we are using for reading the data file
+ * @param offset [int&] the offset (see below)
+ *
+ * Called from within HandleMatrix, this function is used to deal with interleaved
+ * matrices. It is called once for each pass through the taxa.
+ *
+ * <P>The local variable jmax records the number of columns read in the current
+ * interleaved page and is used to determine the offset used for j in subsequent
+ * pages.
+ */
+int DistancesBlock::HandleNextPass( NexusToken& token, int& offset )
+{
+ int i, j, k, jmax = 0, done = 0;
+
+ int i_first = 0;
+ if( triangle == lower )
+ i_first = offset;
+
+ int i_last = ntax;
+
+ for( i = i_first; i < i_last; i++ )
+ {
+ // Deal with taxon label if provided
+ //
+ if( labels && ( !newtaxa || offset>0 ) )
+ {
+ do {
+ token.SetLabileFlagBit( NexusToken::newlineIsToken );
+ token.GetNextToken();
+ } while( token.AtEOL() );
+ try {
+ k = taxa.FindTaxon( token.GetToken() );
+ if( taxonPos[i]==-1 )
+ taxonPos[i] = k;
+ else if( taxonPos[i] != k ) {
+ errormsg = "Taxon labeled ";
+ errormsg += token.GetToken();
+ errormsg += " is out of order compared to previous interleave pages";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ }
+ catch (std::out_of_range) {
+ errormsg = "Could not find ";
+ errormsg += token.GetToken();
+ errormsg += " among taxa previously defined";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ }
+ else if( labels && newtaxa ) {
+ do {
+ token.SetLabileFlagBit( NexusToken::newlineIsToken );
+ token.GetNextToken();
+ } while( token.AtEOL() );
+ taxa.AddTaxonLabel( token.GetToken() );
+ taxonPos[i] = i;
+ }
+
+ // Now deal with the row of distance values
+ //
+ int true_j = 0;
+ for( j = 0; j < ntax; j++ )
+ {
+ if( i == ntax-1 && j == ntax-1 ) {
+ done = 1;
+ }
+
+ if( i == ntax-1 && true_j == ntax-1 ) {
+ done = 1;
+ break;
+ }
+
+ if( i == ntax-1 && !diagonal && triangle==upper ) {
+ done = 1;
+ break;
+ }
+
+ if( !diagonal && triangle==lower && j == ntax-offset-1) {
+ done = 1;
+ break;
+ }
+
+ token.SetLabileFlagBit( NexusToken::newlineIsToken );
+ token.GetNextToken();
+
+ if( token.AtEOL() ) {
+ if( j > jmax ) {
+ jmax = j;
+ if( !diagonal && triangle == upper && i >= offset )
+ jmax++;
+ if( interleave && triangle == upper )
+ i_last = jmax + offset;
+ }
+ break;
+ }
+
+ true_j = j+offset;
+ if( triangle==upper && i > offset )
+ true_j += ( i - offset );
+ if( !diagonal && triangle==upper && i >= offset )
+ true_j++;
+
+ if( true_j == ntax ) {
+ errormsg = "Too many distances specified in row just read in";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ std::string t = token.GetToken();
+ if( token.GetTokenLength() == 1 && t[0] == missing )
+ SetMissing( i, true_j );
+ else
+ SetDistance( i, true_j, atof( t.c_str() ) );
+ }
+
+ }
+
+ offset += jmax;
+
+ if( done )
+ return 1;
+ else
+ return 0;
+}
+
+/**
+ * @method HandleMatrixCommand [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * Called when MATRIX command needs to be parsed from within the
+ * DISTANCES block. Deals with everything after the token MATRIX
+ * up to and including the semicolon that terminates the MATRIX
+ * command.
+ */
+void DistancesBlock::HandleMatrixCommand( NexusToken& token )
+{
+ int i;
+
+ if( ntax == 0 )
+ ntax = taxa.GetNumTaxonLabels();
+ if( ntax == 0 ) {
+ errormsg = "MATRIX command cannot be read if NTAX is zero";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ if( triangle == both && !diagonal ) {
+ errormsg = "Cannot specify NODIAGONAL and TRIANGLE=BOTH at the same time";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ if( newtaxa )
+ taxa.Reset();
+
+ // allocate memory to hold the taxonPos array
+ //
+ if( taxonPos != NULL )
+ delete [] taxonPos;
+ taxonPos = new int[ntax];
+ for( i = 0; i < ntax; i++ )
+ taxonPos[i] = -1;
+
+ // allocate memory to hold the matrix
+ //
+ if( matrix != NULL )
+ delete matrix;
+ matrix = new DistanceDatum*[ntax];
+ for( i = 0; i < ntax; i++ )
+ matrix[i] = new DistanceDatum[ntax];
+
+ int offset = 0;
+ int done = 0;
+ while( !done ) {
+ done = HandleNextPass( token, offset );
+ }
+
+ // token should be equal to the terminating semicolon
+ token.GetNextToken();
+ if( !token.Equals(";") ) {
+ errormsg = "Expecting ';' to terminate MATRIX command, but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+}
+
+/**
+ * @method HandleTaxlabelsCommand [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * Called when TAXLABELS command needs to be parsed from within the
+ * DISTANCES block. Deals with everything after the token TAXLABELS
+ * up to and including the semicolon that terminates the TAXLABELS
+ * command.
+ */
+void DistancesBlock::HandleTaxlabelsCommand( NexusToken& token )
+{
+ if( !newtaxa ) {
+ errormsg = "NEWTAXA must have been specified in DIMENSIONS command to use the TAXLABELS command in a ";
+ errormsg += id;
+ errormsg += " block";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ if( ntax == 0 ) {
+ errormsg = "NTAX must be specified before TAXLABELS command";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ for( int i = 0; i < ntax; i++ ) {
+ token.GetNextToken();
+ taxa.AddTaxonLabel( token.GetToken() );
+ }
+
+ token.GetNextToken(); // this should be terminating semicolon
+ if( !token.Equals(";") ) {
+ errormsg = "Expecting ';' to terminate TAXLABELS command, but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // OPEN ISSUE: Some may object to setting newtaxa to 0 here, because then the
+ // fact that new taxa were specified in this DISTANCES block rather than in
+ // a preceding TAXA block is lost. This will only be important if we wish to
+ // recreate the original data file, which I don't anticipate anyone doing with
+ // this code (too difficult to remember all comments, the order of blocks in
+ // the file, etc.)
+
+ newtaxa = 0;
+}
+
+/**
+ * @method Read [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * This function provides the ability to read everything following the block name
+ * (which is read by the Nexus object) to the end or endblock statement.
+ * Characters are read from the input stream in. Overrides the
+ * abstract virtual function in the base class.
+ */
+void DistancesBlock::Read( NexusToken& token )
+{
+ isEmpty = false;
+ token.GetNextToken(); // this should be the semicolon after the block name
+ if( !token.Equals(";") ) {
+ errormsg = "Expecting ';' after ";
+ errormsg += id;
+ errormsg += " block name, but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ for(;;)
+ {
+ token.GetNextToken();
+
+ if( token.Equals("DIMENSIONS") ) {
+ HandleDimensionsCommand( token );
+ }
+ else if( token.Equals("FORMAT") ) {
+ HandleFormatCommand( token );
+ }
+ else if( token.Equals("TAXLABELS") ) {
+ HandleTaxlabelsCommand( token );
+ }
+ else if( token.Equals("MATRIX") ) {
+ HandleMatrixCommand( token );
+ }
+ else if( token.Equals("END") ) {
+ // get the semicolon following END
+ token.GetNextToken();
+ if( !token.Equals(";") ) {
+ errormsg = "Expecting ';' to terminate the END command, but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ break;
+ }
+ else if( token.Equals("ENDBLOCK") ) {
+ // get the semicolon following ENDBLOCK
+ token.GetNextToken();
+ if( !token.Equals(";") ) {
+ errormsg = "Expecting ';' to terminate the ENDBLOCK command, but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ break;
+ }
+ else {
+ SkippingCommand( token.GetToken() );
+ do {
+ token.GetNextToken();
+ } while( !token.AtEOF() && !token.Equals(";") );
+ if( token.AtEOF() ) {
+ errormsg = "Unexpected end of file encountered";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ }
+ }
+}
+
+/**
+ * @method Report [void:public]
+ * @param out [ostream&] the output stream to which to write the report
+ *
+ * This function outputs a brief report of the contents of this taxa block.
+ * Overrides the abstract virtual function in the base class.
+ */
+void DistancesBlock::Report( std::ostream& out )
+{
+ int ntaxTotal = ntax;
+ if( ntaxTotal == 0 )
+ ntaxTotal = taxa.GetNumTaxonLabels();
+
+ out << endl;
+ out << id << " block contains ";
+ if( ntaxTotal == 0 ) {
+ out << "no taxa" << endl;
+ }
+ else if( ntaxTotal == 1 )
+ out << "one taxon" << endl;
+ else
+ out << ntaxTotal << " taxa" << endl;
+
+ if( IsLowerTriangular() )
+ out << " Matrix is lower-triangular" << endl;
+ else if( IsUpperTriangular() )
+ out << " Matrix is upper-triangular" << endl;
+ else
+ out << " Matrix is rectangular" << endl;
+
+ if( IsInterleave() )
+ out << " Matrix is interleaved" << endl;
+ else
+ out << " Matrix is non-interleaved" << endl;
+
+ if( IsLabels() )
+ out << " Taxon labels provided" << endl;
+ else
+ out << " No taxon labels provided" << endl;
+
+ if( IsDiagonal() )
+ out << " Diagonal elements specified" << endl;
+ else
+ out << " Diagonal elements not specified" << endl;
+
+ out << " Missing data symbol is " << missing << endl;
+
+ if( ntax == 0 ) return;
+
+ out.setf( ios::floatfield, ios::fixed );
+ out.setf( ios::showpoint );
+ for( int i = 0; i < ntax; i++ )
+ {
+ if( labels )
+ out << setw(20) << taxa.GetTaxonLabel(i);
+ else
+ out << "\t\t";
+ for( int j = 0; j < ntax; j++ )
+ {
+ if( triangle==upper && j < i ) {
+ out << setw(12) << " ";
+ }
+ else if( triangle==lower && j > i )
+ continue;
+ else if( !diagonal && i == j ) {
+ out << setw(12) << " ";
+ }
+ else if( IsMissing( i, j ) )
+ out << setw(12) << missing;
+ else
+ out << setw(12) << setprecision(5) << GetDistance( i, j );
+ }
+ out << endl;
+ }
+}
+
+/**
+ * @method Reset [void:protected]
+ *
+ * Flushes taxonLabels and sets ntax to 0 in preparation for reading a
+ * new TAXA block.
+ */
+void DistancesBlock::Reset()
+{
+ isEmpty = true;
+ newtaxa = 0;
+ ntax = 0;
+ nchar = 0;
+ diagonal = 1;
+ triangle = lower;
+ interleave = 0;
+ labels = 1;
+ missing = '?';
+
+ if( matrix != NULL )
+ delete matrix;
+ matrix = NULL;
+
+ if( taxonPos != NULL )
+ delete taxonPos;
+ taxonPos = NULL;
+}
+
+/**
+ * @method GetNtax [int:public]
+ *
+ * Returns the value of ntax.
+ */
+int DistancesBlock::GetNtax()
+{
+ return ntax;
+}
+
+/**
+ * @method GetNchar [int:public]
+ *
+ * Returns the value of nchar.
+ */
+int DistancesBlock::GetNchar()
+{
+ return nchar;
+}
+
+/**
+ * @method GetDistance [double:public]
+ * @param i [int] the row
+ * @param j [int] the column
+ *
+ * Returns the value of the (i, j)th element of matrix.
+ * Assumes i and j are both in the range [0..ntax)
+ * and the distance stored at matrix[i][j] is not
+ * missing. Also assumes matrix is not NULL.
+ */
+double DistancesBlock::GetDistance( int i, int j )
+{
+ assert( i >= 0 );
+ assert( i < ntax );
+ assert( j >= 0 );
+ assert( j < ntax );
+ assert( matrix != NULL );
+
+ return matrix[i][j].value;
+}
+
+/**
+ * @method GetMissingSymbol [char:public]
+ *
+ * Returns the value of missing.
+ */
+char DistancesBlock::GetMissingSymbol()
+{
+ return missing;
+}
+
+/**
+ * @method GetTriangle [int:public]
+ *
+ * Returns the value of triangle.
+ */
+int DistancesBlock::GetTriangle()
+{
+ return triangle;
+}
+
+/**
+ * @method IsBoth [int:public]
+ *
+ * Returns 1 if the value of triangle is both, 0 otherwise.
+ */
+int DistancesBlock::IsBoth()
+{
+ return ( triangle == both ? 1 : 0 );
+}
+
+/**
+ * @method IsUpperTriangular [int:public]
+ *
+ * Returns 1 if the value of triangle is upper, 0 otherwise.
+ */
+int DistancesBlock::IsUpperTriangular()
+{
+ return ( triangle == upper ? 1 : 0 );
+}
+
+/**
+ * @method IsLowerTriangular [int:public]
+ *
+ * Returns 1 if the value of triangle is lower, 0 otherwise.
+ */
+int DistancesBlock::IsLowerTriangular()
+{
+ return ( triangle == lower ? 1 : 0 );
+}
+
+/**
+ * @method IsDiagonal [int:public]
+ *
+ * Returns the value of diagonal.
+ */
+int DistancesBlock::IsDiagonal()
+{
+ return diagonal;
+}
+
+/**
+ * @method IsInterleave [int:public]
+ *
+ * Returns the value of interleave.
+ */
+int DistancesBlock::IsInterleave()
+{
+ return interleave;
+}
+
+/**
+ * @method IsLabels [int:public]
+ *
+ * Returns the value of labels.
+ */
+int DistancesBlock::IsLabels()
+{
+ return labels;
+}
+
+/**
+ * @method IsMissing [int:public]
+ * @param i [int] the row
+ * @param j [int] the column
+ *
+ * Returns 1 if the (i,j)th distance is missing.
+ * Assumes i and j are both in the range [0..ntax)
+ * and matrix is not NULL.
+ */
+int DistancesBlock::IsMissing( int i, int j )
+{
+ assert( i >= 0 );
+ assert( i < ntax );
+ assert( j >= 0 );
+ assert( j < ntax );
+ assert( matrix != NULL );
+
+ return ( matrix[i][j].missing );
+}
+
+/**
+ * @method SetDistance [void:public]
+ * @param i [int] the row
+ * @param j [int] the column
+ * @param d [double] the distance value
+ *
+ * Sets the value of the (i,j)th matrix element to d
+ * and the missing flag to 0.
+ * Assumes i and j are both in the range [0..ntax)
+ * and matrix is not NULL.
+ */
+void DistancesBlock::SetDistance( int i, int j, double d )
+{
+ assert( i >= 0 );
+ assert( i < ntax );
+ assert( j >= 0 );
+ assert( j < ntax );
+ assert( matrix != NULL );
+
+ matrix[i][j].value = d;
+ matrix[i][j].missing = 0;
+}
+
+/**
+ * @method SetMissing [void:public]
+ * @param i [int] the row
+ * @param j [int] the column
+ *
+ * Sets the value of the (i,j)th matrix element to missing.
+ * Assumes i and j are both in the range [0..ntax)
+ * and matrix is not NULL.
+ */
+void DistancesBlock::SetMissing( int i, int j )
+{
+ assert( i >= 0 );
+ assert( i < ntax );
+ assert( j >= 0 );
+ assert( j < ntax );
+ assert( matrix != NULL );
+
+ matrix[i][j].missing = 1;
+ matrix[i][j].value = 0.0;
+}
+
+/**
+ * @method SetNchar [void:private]
+ * @param n [int] the number of characters
+ *
+ * Sets nchar to n.
+ */
+void DistancesBlock::SetNchar( int n )
+{
+ nchar = n;
+}
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/distancesblock.cpp
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/distancesblock.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/distancesblock.h 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/distancesblock.h 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,56 @@
+#ifndef __DISTANCESBLOCK_H
+#define __DISTANCESBLOCK_H
+
+class DistancesBlock : public NexusBlock
+{
+ TaxaBlock& taxa;
+
+ int newtaxa;
+ int ntax;
+ int nchar;
+
+ int diagonal;
+ int interleave;
+ int labels;
+
+ int triangle;
+ enum { upper = 1, lower = 2, both = 3 };
+
+ char missing;
+
+ DistanceDatum** matrix;
+ int* taxonPos;
+
+protected:
+ void HandleDimensionsCommand( NexusToken& token );
+ void HandleFormatCommand( NexusToken& token );
+ void HandleMatrixCommand( NexusToken& token );
+ int HandleNextPass( NexusToken& token, int& offset );
+ void HandleTaxlabelsCommand( NexusToken& token );
+ void Read( NexusToken& token );
+ void Reset();
+
+public:
+ DistancesBlock( TaxaBlock& t );
+ virtual ~DistancesBlock();
+
+ double GetDistance( int i, int j );
+ char GetMissingSymbol();
+ int GetNchar();
+ int GetNtax();
+ int GetTriangle();
+ int IsBoth();
+ int IsDiagonal();
+ int IsInterleave();
+ int IsLabels();
+ int IsLowerTriangular();
+ int IsMissing( int i, int j );
+ int IsUpperTriangular();
+ void Report( std::ostream& out );
+ void SetDistance( int i, int j, double d );
+ void SetMissing( int i, int j );
+ void SetNchar( int i );
+};
+
+#endif
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/distancesblock.h
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexus.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexus.cpp 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexus.cpp 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,398 @@
+#include "nexusdefs.h"
+#include "xnexus.h"
+#include "nexustoken.h"
+#include "nexus.h"
+
+#define NCL_NAME_AND_VERSION "NCL version 2.01"
+#define NCL_COPYRIGHT "Copyright (c) 2000 by Paul O. Lewis"
+#ifdef __BORLANDC__
+ #define NCL_HOMEPAGEURL "http:\/\/lewis.eeb.uconn.edu\/lewishome\/software.html"
+#else
+ #define NCL_HOMEPAGEURL "http://lewis.eeb.uconn.edu/lewishome/software.html"
+#endif
+
+/**
+ * @class Nexus
+ * @file nexus.h
+ * @file nexus.cpp
+ * @author Paul O. Lewis
+ * @copyright Copyright © 1999. All Rights Reserved.
+ * @variable blockList [NexusBlock*:protected] pointer to first block in list of blocks
+ * @see NexusBlock
+ * @see NexusReader
+ * @see NexusToken
+ * @see XNexus
+ *
+ * This is the class that orchestrates the reading of a Nexus data file.
+ * An object of this class should be created, and objects of any block classes
+ * that are expected to be needed should be added to blockList using the Add
+ * member function. The Execute member function is then called, which reads the
+ * data file until encountering a block name, at which point the correct block
+ * is looked up in blockList and that object's Read method called.
+ */
+
+/**
+ * @constructor
+ *
+ * Default constructor
+ * Initializes the blockList data member to NULL.
+ */
+Nexus::Nexus() : blockList(NULL)
+{
+}
+
+/**
+ * @destructor
+ *
+ * Does nothing.
+ */
+Nexus::~Nexus()
+{
+}
+
+/**
+ * @method Add [void:public]
+ * @param newBlock [NexusBlock*] a pointer to an existing block object
+ *
+ * Adds newBlock to the end of the list of NexusBlock objects growing
+ * from blockList. If blockList points to NULL, this function sets
+ * blockList to point to newBlock. Calls SetNexus method of newBlock
+ * to inform newBlock of the Nexus object that now owns it. This
+ * is useful when the newBlock object needs to communicate with the
+ * outside world through the Nexus object, such as when it issues
+ * progress reports as it is reading the contents of its block.
+ */
+void Nexus::Add( NexusBlock* newBlock )
+{
+ assert( newBlock != NULL );
+
+ newBlock->SetNexus(this);
+ if( !blockList )
+ blockList = newBlock;
+ else {
+ // add new block to end of list
+ NexusBlock* curr;
+ for( curr = blockList; curr && curr->next; )
+ curr = curr->next;
+ assert( curr && !curr->next );
+ curr->next = newBlock;
+ }
+}
+
+/**
+ * @method BlockListEmpty [bool:public]
+ *
+ * If blockList data member still equals NULL, returns true;
+ * otherwise, returns false. The blockList will not be equal
+ * to NULL if the Add function has been called to add a block
+ * object to the list.
+ */
+bool Nexus::BlockListEmpty()
+{
+ return ( blockList == NULL ? true : false );
+}
+
+/**
+ * @method DebugReportBlock [virtual void:protected]
+ * @param nexusBlock [NexusBlock&] the block that should be reported
+ *
+ * This function was created for purposes of debugging a new NexusBlock.
+ * This version does nothing; to create an active DebugReportBlock function,
+ * override this version in the derived class and call the Report function
+ * of nexusBlock. This function is called whenever the main Nexus Execute function
+ * encounters the [&spillall] command comment between blocks in the data file.
+ * The Execute function goes through all blocks and passes them, in turn, to this
+ * DebugReportBlock function so that their contents are displayed. Placing the
+ * [&spillall] command comment between different versions of a block allows
+ * multiple blocks of the same type to be tested using one long data file.
+ * Say you are interested in testing whether the normal, transpose, and
+ * interleave format of a matrix can all be read correctly. If you put three
+ * versions of the block in the data file one after the other, the second one
+ * will wipe out the first, and the third one will wipe out the second, unless
+ * you have a way to report on each one before the next one is read. This
+ * function provides that ability.
+ */
+void Nexus::DebugReportBlock( NexusBlock& /* nexusBlock */ )
+{
+ // Derive me and uncomment the following line in the derived version
+ // nexusBlock.Report(out);
+ // Note that your derived Nexus object must have its own ostream object (out)
+}
+
+/**
+ * @method Detach [void:public]
+ * @param oldBlock [NexusBlock*] a pointer to an existing block object
+ *
+ * Detaches oldBlock from the list of NexusBlock objects growing
+ * from blockList. If blockList itself points to oldBlock, this
+ * function sets blockList to point to oldBlock->next.
+ * Note: oldBlock is not deleted, it is simple detached from the
+ * linked list. No harm is done in Detaching a block pointer
+ * that has already been detached previously; if oldBlock is
+ * not found in the block list, Detach simply returns quietly.
+ * If oldBlock is found, its SetNexus object is called to set
+ * the Nexus pointer to NULL, indicating that it is no longer
+ * owned by (i.e., attached to) a Nexus object.
+ */
+void Nexus::Detach( NexusBlock* oldBlock )
+{
+ assert( oldBlock != NULL );
+
+ // Should call BlockListEmpty function first to make sure
+ // there are blocks to detach
+ //
+ assert( blockList != NULL );
+
+ if( blockList == oldBlock ) {
+ blockList = oldBlock->next;
+ oldBlock->SetNexus(NULL);
+ }
+ else {
+ // try to find oldBlock in list and detach if found
+ NexusBlock* curr = blockList;
+ NexusBlock* currNext = blockList->next;
+ for( ; currNext != NULL && currNext != oldBlock; ) {
+ currNext = currNext->next;
+ }
+ if( currNext == oldBlock ) {
+ curr->next = currNext->next;
+ currNext->next = NULL;
+ oldBlock->SetNexus(NULL);
+ }
+ }
+}
+
+/**
+ * @method EnteringBlock [virtual void:public]
+ * @param blockName [char*] the name of the block being entered
+ *
+ * This function is called when a block named blockName has just
+ * been entered and is about to be read. Override this pure virtual
+ * function to provide an indication of progress as the Nexus file
+ * is being read.
+ */
+// virtual void EnteringBlock( char* blockName ) = 0;
+
+/**
+ * @method Execute [void:public]
+ * @param token [NexusToken&] the token object used to grab Nexus tokens
+ * @param notifyStartStop [bool] if true, ExecuteStarting and ExecuteStopping will be called (true by default)
+ *
+ * Reads the Nexus data file from the input stream provided by token. This function
+ * is responsible for reading through the name of a each block. Once
+ * it has read a block name, it searches blockList for a block object
+ * to handle reading the remainder of the block's contents. The block
+ * object is responsible for reading the end or endblock command as well
+ * as the trailing semicolon. This function also handles reading
+ * comments that are outside of blocks, as well as the initial #NEXUS
+ * keyword. The notifyStartStop argument is provided in case you do not
+ * wish the ExecuteStart and ExecuteStop functions to be called. These functions
+ * are primarily used for creating and destroying a dialog box to show progress,
+ * and nested Execute calls can thus cause problems (e.g., a dialog box is
+ * destroyed when the inner Execute calls ExecuteStop and the outer Execute
+ * still expects the dialog box to be available). Specifying notifyStartStop
+ * false for all the nested Execute calls thus allows the outermost Execute call
+ * to control creation and destruction of the dialog box.
+ */
+void Nexus::Execute( NexusToken& token, bool notifyStartStop /* = true */ )
+{
+ char id_str[256];
+
+ bool disabledBlock = false;
+ nxsstring errormsg;
+
+ try {
+ token.GetNextToken();
+ }
+ catch( XNexus x ) {
+ NexusError( token.errormsg, 0, 0, 0 );
+ return;
+ }
+
+ if( !token.Equals("#NEXUS") ) {
+ errormsg = "Expecting #NEXUS to be the first token in the file, but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ NexusError( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ return;
+ }
+
+ if( notifyStartStop )
+ ExecuteStarting();
+
+ for(;;)
+ {
+ token.SetLabileFlagBit( NexusToken::saveCommandComments );
+
+ token.GetNextToken();
+
+ if( token.AtEOF() )
+ break;
+
+ if( token.Equals("BEGIN") )
+ {
+ disabledBlock = false;
+ token.GetNextToken();
+
+ NexusBlock* curr;
+ for( curr = blockList; curr != NULL; curr = curr->next )
+ {
+ if( !token.Equals( curr->GetID() ) )
+ continue;
+
+ if( !curr->IsEnabled() ) {
+ disabledBlock = true;
+ SkippingDisabledBlock( token.GetToken() );
+ continue;
+ }
+
+ strcpy( id_str, curr->GetID().c_str() );
+ EnteringBlock( id_str /*curr->GetID()*/ );
+ curr->Reset();
+ try {
+ curr->Read( token );
+ }
+ catch( XNexus x ) {
+ NexusError( curr->errormsg, x.pos, x.line, x.col );
+ curr->Reset();
+ return;
+ }
+ ExitingBlock( id_str /*curr->GetID()*/ );
+ break;
+ }
+
+ if( curr == NULL )
+ {
+ token.BlanksToUnderscores();
+ nxsstring currBlock = token.GetToken();
+ if( !disabledBlock )
+ SkippingBlock( currBlock );
+ for(;;)
+ {
+ token.GetNextToken();
+ if( token.Equals("END") || token.Equals("ENDBLOCK") ) {
+ token.GetNextToken();
+ if( !token.Equals(";") ) {
+ errormsg = "Expecting ';' after END or ENDBLOCK command, but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ NexusError( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ return;
+ }
+ break;
+ }
+ if( token.AtEOF() ) {
+ errormsg = "Encountered end of file before END or ENDBLOCK in block ";
+ errormsg += currBlock;
+ NexusError( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ return;
+ }
+ }
+ } // if token not found amongst known block IDs
+ } // if token equals BEGIN
+
+ else if( token.Equals("&SHOWALL") ) {
+
+ NexusBlock* curr;
+ for( curr = blockList; curr != NULL; curr = curr->next )
+ {
+ DebugReportBlock(*curr);
+ }
+
+ }
+
+ else if( token.Equals("&LEAVE") ) {
+ break;
+ }
+
+ } // for(;;)
+
+ if( notifyStartStop )
+ ExecuteStopping();
+}
+
+/**
+ * @method NCLCopyrightNotice [char*:public]
+ *
+ * Returns a string containing the copyright notice
+ * for the Nexus Class Library, useful for
+ * reporting the use of this library by programs
+ * that interact with the user.
+ */
+char* Nexus::NCLCopyrightNotice()
+{
+ return NCL_COPYRIGHT;
+}
+
+/**
+ * @method NCLHomePageURL [char*:public]
+ *
+ * Returns a string containing the URL for the
+ * Nexus Class Library Home Page on the World
+ * Wide Web.
+ */
+char* Nexus::NCLHomePageURL()
+{
+ return NCL_HOMEPAGEURL;
+}
+
+/**
+ * @method NCLNameAndVersion [char*:public]
+ *
+ * Returns a string containing the name and current
+ * version of the Nexus Class Library, useful for
+ * reporting the use of this library by programs
+ * that interact with the user.
+ */
+char* Nexus::NCLNameAndVersion()
+{
+ return NCL_NAME_AND_VERSION;
+}
+
+/**
+ * @method NexusError [virtual void:public]
+ * @param msg [nxsstring&] the error message to be displayed
+ * @param pos [streampos] the current file position
+ * @param line [long] the current file line
+ * @param col [long] the current column within the current file line
+ *
+ * This function is called whenever there is an error detected while reading
+ * a Nexus file. Override this pure virtual function to display the error
+ * message in the most appropriate way for the platform you are supporting.
+ */
+// virtual void NexusError( nxsstring& msg, std::streampos pos, long line, long col ) = 0;
+
+/**
+ * @method OutputComment [virtual void:public]
+ * @param comment [nxsstring] a comment to be shown on the output
+ *
+ * This function may be used to report progess while reading through
+ * a file. For example, the AllelesBlock class uses this function to
+ * report the name of the population it is currently reading so the
+ * user doesn't think the program has hung on large data sets.
+ */
+// virtual void OutputComment( nxsstring comment ) = 0;
+
+/**
+ * @method SkippingBlock [virtual void:public]
+ * @param blockName [nxsstring] the name of the block being skipped
+ *
+ * This function is called when an unknown block named blockName is
+ * about to be skipped. Override this pure virtual function to
+ * provide an indication of progress as the Nexus file is being read.
+ */
+// virtual void SkippingBlock( nxsstring blockName ) = 0;
+
+/**
+ * @method SkippingDisabledBlock [virtual void:public]
+ * @param blockName [nxsstring] the name of the disabled block being skipped
+ *
+ * This function is called when a disabled block named blockName is
+ * encountered in a NEXUS data file being executed. Override this pure
+ * virtual function to handle this event in an appropriate manner. For
+ * example, the program may wish to inform the user that a data block
+ * was encountered in what is supposed to be a tree file.
+ */
+// virtual void SkippingDisabledBlock( nxsstring blockName ) = 0;
+
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexus.cpp
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexus.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexus.h 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexus.h 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,81 @@
+#ifndef __NEXUS_H
+#define __NEXUS_H
+
+class Nexus;
+
+//
+// NexusBlock class
+//
+class NexusBlock
+{
+ friend class Nexus;
+
+protected:
+ bool isEmpty;
+ bool isEnabled;
+ Nexus* nexus;
+ NexusBlock* next;
+ nxsstring id;
+
+ virtual void Read( NexusToken& token ) = 0;
+ virtual void Reset() = 0;
+
+public:
+ nxsstring errormsg;
+
+ NexusBlock();
+ virtual ~NexusBlock();
+
+ void SetNexus( Nexus* nxsptr );
+
+ nxsstring GetID();
+ bool IsEmpty();
+
+ void Enable();
+ void Disable();
+ bool IsEnabled();
+
+ virtual int CharLabelToNumber( nxsstring s );
+ virtual int TaxonLabelToNumber( nxsstring s );
+
+ virtual void SkippingCommand( nxsstring commandName );
+ virtual void Report( std::ostream& out ) = 0;
+};
+
+//
+// Nexus class
+//
+class Nexus
+{
+
+protected:
+ NexusBlock* blockList;
+
+public:
+ Nexus();
+ virtual ~Nexus();
+
+ bool BlockListEmpty();
+ void Add( NexusBlock* newBlock );
+ void Detach( NexusBlock* newBlock );
+ void Execute( NexusToken& token, bool notifyStartStop = true );
+
+ virtual void DebugReportBlock( NexusBlock& nexusBlock );
+
+ char* NCLNameAndVersion();
+ char* NCLCopyrightNotice();
+ char* NCLHomePageURL();
+
+ // hooks implemented as pure virtual functions
+ virtual void ExecuteStarting() = 0;
+ virtual void ExecuteStopping() = 0;
+ virtual void EnteringBlock( nxsstring blockName ) = 0;
+ virtual void ExitingBlock( nxsstring blockName ) = 0;
+ virtual void OutputComment( nxsstring comment ) = 0;
+ virtual void NexusError( nxsstring& msg, std::streampos pos, long line, long col ) = 0;
+ virtual void SkippingDisabledBlock( nxsstring blockName ) = 0;
+ virtual void SkippingBlock( nxsstring blockName ) = 0;
+};
+
+#endif
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexus.h
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexusblock.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexusblock.cpp 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexusblock.cpp 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,206 @@
+#include "nexusdefs.h"
+#include "nexustoken.h"
+#include "nexus.h"
+
+/**
+ * @class NexusBlock
+ * @file nexus.h
+ * @file nexusblock.cpp
+ * @author Paul O. Lewis
+ * @copyright Copyright © 1999. All Rights Reserved.
+ * @variable isDisabled [bool:private] true if this block is currently disabled
+ * @variable isEmpty [bool:private] true if this object is currently storing data
+ * @variable next [NexusBlock*:protected] pointer to next block in list
+ * @variable id [nxsstring:protected] holds name of block (e.g., "DATA", "TREES", etc.)
+ * @see Nexus
+ * @see NexusReader
+ * @see NexusToken
+ *
+ * This is the base class from which all Nexus block classes are derived.
+ * The abstract virtual function Read must be overridden for each derived
+ * class to provide the ability to read everything following the block name
+ * (which is read by the Nexus object) to the end or endblock statement.
+ * Derived classes must provide their own data storage and access functions.
+ */
+
+/**
+ * @constructor
+ *
+ * Default constructor
+ * Initializes 'next' and 'nexus' data members to NULL, and 'isEmpty' and
+ * 'isEnabled' to true.
+ */
+NexusBlock::NexusBlock() : next(NULL), nexus(NULL), isEmpty(true), isEnabled(true)
+{
+}
+
+/**
+ * @destructor
+ *
+ * Does nothing.
+ */
+NexusBlock::~NexusBlock()
+{
+}
+
+/**
+ * @method CharLabelToNumber [int:protected]
+ * @param s [nxsstring] the character label to be translated to character number
+ *
+ * This base class version simply returns -1, but a derived class should
+ * override this function if it needs to construct and run a SetReader
+ * object to read a set involving characters. The SetReader object may
+ * need to use this function to look up a character label encountered in
+ * the set. A class that overrides this method should return the
+ * character index in the range [1..nchar]; i.e., add one to the 0-offset
+ * index.
+ */
+int NexusBlock::CharLabelToNumber( nxsstring /*s*/ )
+{
+ return 0;
+}
+
+/**
+ * @method Disable [void:public]
+ *
+ * Sets the value of isEnabled to false. A NexusBlock
+ * can be disabled (by calling this method) if blocks of that type
+ * are to be skipped during execution of the nexus file.
+ * If a disabled block is encountered, the virtual
+ * Nexus::SkippingDisabledBlock function is called.
+ */
+void NexusBlock::Disable()
+{
+ isEnabled = false;
+}
+
+/**
+ * @method Enable [void:public]
+ *
+ * Sets the value of isEnabled to true. A NexusBlock
+ * can be disabled (by calling Disable) if blocks of that type
+ * are to be skipped during execution of the nexus file.
+ * If a disabled block is encountered, the virtual
+ * Nexus::SkippingDisabledBlock function is called.
+ */
+void NexusBlock::Enable()
+{
+ isEnabled = true;
+}
+
+/**
+ * @method IsEnabled [bool:public]
+ *
+ * Returns value of isEnabled, which can be controlled through
+ * use of the Enable and Disable member functions. A NexusBlock
+ * should be disabled if blocks of that type are to be skipped
+ * during execution of the nexus file. If a disabled block is
+ * encountered, the virtual Nexus::SkippingDisabledBlock function
+ * is called.
+ */
+bool NexusBlock::IsEnabled()
+{
+ return isEnabled;
+}
+
+/**
+ * @method IsEmpty [bool:public]
+ *
+ * Returns true if Read function has not been called since the last Reset.
+ * This base class version simply returns the value of the data member
+ * isEmpty. If you derive a new block class from NexusBlock, be sure
+ * to set isEmpty to true in your Reset function and isEmpty to false in your
+ * Read function.
+ */
+bool NexusBlock::IsEmpty()
+{
+ return isEmpty;
+}
+
+/**
+ * @method Read [virtual void:protected]
+ * @param token [NexusToken&] the NexusToken to use for reading block
+ * @param in [istream&] the input stream from which to read
+ *
+ * This abstract virtual function must be overridden for each derived
+ * class to provide the ability to read everything following the block name
+ * (which is read by the Nexus object) to the end or endblock statement.
+ * Characters are read from the input stream in. Note that to get output
+ * comments displayed, you must derive a class from NexusToken, override
+ * the member function OutputComment to display a supplied comment, and
+ * then pass a reference to an object of the derived class to this function.
+ */
+// virtual void Read( NexusToken& token, istream& in ) = 0;
+
+/**
+ * @method Reset [virtual void:protected]
+ *
+ * This abstract virtual function must be overridden for each derived
+ * class to completely reset the block object in preparation for reading
+ * in another block of this type. This function is called by the Nexus
+ * object just prior to calling the block object's Read function.
+ */
+// virtual void Reset() = 0;
+
+/**
+ * @method GetID [nxsstring:public]
+ *
+ * Returns the id nxsstring.
+ */
+nxsstring NexusBlock::GetID()
+{
+ return id;
+}
+
+/**
+ * @method Report [virtual void:public]
+ * @param out [ostream&] the output stream to which the report is sent
+ *
+ * Provides a brief report of the contents of the block.
+ */
+// virtual void Report( ostream& out ) = 0;
+
+/**
+ * @method SetNexus [virtual void:public]
+ * @param nxsptr [Nexus*] pointer to a Nexus object
+ *
+ * Sets the nexus data member of the NexusBlock object to
+ * nxsptr.
+ */
+void NexusBlock::SetNexus( Nexus* nxsptr )
+ {
+ nexus = nxsptr;
+ }
+
+/**
+ * @method SkippingCommand [virtual void:public]
+ * @param commandName [nxsstring] the name of the command being skipped
+ *
+ * This function is called when an unknown command named commandName is
+ * about to be skipped. This version of the function does nothing (i.e.,
+ * no warning is issued that a command was unrecognized. Override this
+ * virtual function in a derived class to provide such warnings to the
+ * user.
+ */
+void NexusBlock::SkippingCommand( nxsstring /* commandName */ )
+{
+}
+
+/**
+ * @method TaxonLabelToNumber [int:protected]
+ * @param s [nxsstring] the taxon label to be translated to a taxon number
+ *
+ * This base class version simply returns 0, but a derived class should
+ * override this function if it needs to construct and run a SetReader
+ * object to read a set involving taxa. The SetReader object may
+ * need to use this function to look up a taxon label encountered in
+ * the set. A class that overrides this method should return the
+ * taxon index in the range [1..ntax]; i.e., add one to the 0-offset
+ * index.
+ */
+int NexusBlock::TaxonLabelToNumber( nxsstring /*s*/ )
+{
+ return 0;
+}
+
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexusblock.cpp
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexusdefs.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexusdefs.h 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexusdefs.h 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,75 @@
+#ifndef __NEXUSDEFS_H
+#define __NEXUSDEFS_H
+
+// maximum number of states that can be stored; the only limitation is that this
+// number be less than the maximum size of an int (not likely to be a problem).
+// A good number for this is 76, which is 96 (the number of distinct symbols
+// able to be input from a standard keyboard) less 20 (the number of symbols
+// symbols disallowed by the Nexus standard for use as state symbols)
+//
+#define NCL_MAX_STATES 76
+
+#ifdef __BORLANDC__
+ #if __BORLANDC__ < 0x550
+ #ifdef __MINMAX_DEFINED
+ #undef __MINMAX_DEFINED
+ #endif
+ #pragma warn -pch
+ #pragma warn .pch
+ #endif
+#endif
+
+#include <stdexcept>
+#include <algorithm>
+#include <string>
+#include <vector>
+#include <set>
+#include <map>
+#include <iostream>
+#include <fstream>
+#include <stdlib.h>
+#include <stdio.h>
+#include <math.h>
+#include <iomanip>
+#include <assert.h>
+
+// lines below needed for access function
+#if defined( __BORLANDC__ )
+# include <io.h>
+#else
+# include <unistd.h>
+#endif
+
+#if (defined __BORLANDC__ || defined __MWERKS__)
+ using namespace std;
+#endif
+
+
+
+
+#include "nxsstring.h"
+
+typedef std::vector<bool> BoolVect;
+typedef std::vector<int> IntVect;
+typedef std::vector<nxsstring> LabelList;
+typedef std::set< int,std::less<int> > IntSet;
+typedef std::map< int, LabelList, std::less<int> > LabelListBag;
+typedef std::map< nxsstring, nxsstring, std::less<nxsstring> > AssocList;
+typedef std::map< nxsstring, IntSet, std::less<nxsstring> > IntSetMap;
+typedef std::vector<LabelList> AllelesVect;
+
+struct stri_equal : public std::binary_function<nxsstring,nxsstring,bool> {
+ bool operator()(const nxsstring& x, const nxsstring& y) const;
+};
+
+#if __BORLANDC__ < 0x550
+ // Redefine __MINMAX_DEFINED so Windows header files compile
+ #ifndef __MINMAX_DEFINED
+ #define __MINMAX_DEFINED
+ #endif
+#endif
+
+#endif
+
+
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexusdefs.h
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexustoken.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexustoken.cpp 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexustoken.cpp 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,1098 @@
+#include "nexusdefs.h"
+#include "xnexus.h"
+#include "nexustoken.h"
+
+using namespace std;
+
+/**
+ * @class NexusToken
+ * @file nexustoken.h
+ * @file nexustoken.cpp
+ * @author Paul O. Lewis
+ * @copyright Copyright © 1999. All Rights Reserved.
+ * @variable atEOF [bool:private] true if last character read resulted in eof() returning true for input stream
+ * @variable atEOL [bool:private] true if newline encountered while newlineIsToken labile flag set
+ * @variable comment [nxsstring:private] temporary buffer used to store output comments while they are being built
+ * @variable filecol [long:private] current column in current line (refers to column immediately following token just read)
+ * @variable fileline [long:private] current file line
+ * @variable filepos [long:private] current file position (for Metrowerks compiler, type is streampos rather than long)
+ * @variable in [istream&:private] reference to input stream from which tokens will be read
+ * @variable labileFlags [int:private] storage for labile flags (see labile enum)
+ * @variable saved [char:private] either '\0' or is last character read from input stream
+ * @variable special [char:private] ad hoc punctuation character; default value is '\0'
+ * @variable token [nxsstring:private] the character buffer used to store the current token
+ * @see NexusReader
+ * @see XNexus
+ *
+ * This class is used to read tokens from a Nexus data file. If the token
+ * object is not attached to an input stream, calls to GetNextToken will have no
+ * effect. If the token object is not attached to an output stream, output
+ * comments will be discarded (i.e., not output anywhere) and calls to Write
+ * or Writeln will be ineffective. If input and output streams have been
+ * attached to the token object, however, tokens are read one at a time from
+ * the input stream, and comments are correctly read and either written to
+ * the output stream (if an output comment) or ignored (if not an output
+ * comment). Sequences of characters surrounded by single quotes are read in
+ * as single tokens. A pair of adjacent single quotes are stored as a single
+ * quote, and underscore characters are stored as blanks.
+ */
+
+/**
+ * @enumeration
+ * @enumitem saveCommandComment [0x0001] if set, command comments of the form [&X] are not ignored but are instead saved as regular tokens (without the square brackets, however)
+ * @enumitem parentheticalToken [0x0002] if set, and if next character encountered is a left parenthesis, token will include everything up to the matching right parenthesis
+ * @enumitem curlyBracketedToken [0x0004] if set, and if next character encountered is a left curly bracket, token will include everything up to the matching right curly bracket
+ * @enumitem doubleQuotedToken [0x0008] if set, grabs entire phrase surrounded by double quotes
+ * @enumitem singleCharacterToken [0x0010] if set, next non-whitespace character returned as token
+ * @enumitem newlineIsToken [0x0020] if set, newline character treated as a token and atEOL set if newline encountered
+ * @enumitem tildeIsPunctuation [0x0040] if set, tilde character treated as punctuation and returned as a separate token
+ * @enumitem useSpecialPunctuation [0x0080] if set, "special" character treated as punctuation and returned as a separate token
+ *
+ * For use with the variable labileFlags.
+ */
+
+/**
+ * @constructor
+ * @param i [istream&] the istream object to which the token is to be associated
+ *
+ * Performs the following initializations:
+ * <table>
+ * <tr><th align="left">Variable <th> <th align="left"> Initial Value
+ * <tr><td> atEOF <td>= <td> false
+ * <tr><td> atEOL <td>= <td> false
+ * <tr><td> comment <td>= <td> ""
+ * <tr><td> filecol <td>= <td> 1L
+ * <tr><td> fileline <td>= <td> 1L
+ * <tr><td> filepos <td>= <td> 0L
+ * <tr><td> in <td>= <td> i
+ * <tr><td> labileFlags <td>= <td> 0
+ * <tr><td> saved <td>= <td> '\0'
+ * <tr><td> special <td>= <td> '\0'
+ * <tr><td> token <td>= <td> ""
+ * </table>
+ */
+NexusToken::NexusToken( std::istream& i ) : in(i)
+{
+ atEOF = false;
+ atEOL = false;
+ comment = "";
+ filecol = 1L;
+ fileline = 1L;
+ filepos = 0L;
+ labileFlags = 0;
+ saved = '\0';
+ special = '\0';
+ token = "";
+}
+
+/**
+ * @destructor
+ *
+ * Nothing needs to be done, since all objects take care of that delete themselves.
+ */
+NexusToken::~NexusToken()
+{
+}
+
+/**
+ * @method AppendToComment [void:protected]
+ * @param ch [char] character to be appended to comment
+ *
+ * Adds ch to end of comment nxsstring.
+ */
+void NexusToken::AppendToComment( char ch )
+{
+ comment += ch;
+}
+
+/**
+ * @method AppendToToken [void:protected]
+ * @param ch [char] character to be appended to token
+ *
+ * Adds ch to end of current token.
+ */
+void NexusToken::AppendToToken( char ch )
+{
+ // first three lines proved necessary to keep
+ // Borland's implementation of STL from crashing
+ // under some circumstances
+ char s[2];
+ s[0] = ch;
+ s[1] = '\0';
+
+ token += s;
+}
+
+/**
+ * @method GetNextChar [char:protected]
+ * @throws XNexus
+ *
+ * Reads next character from in and does all of the following before
+ * returning it to the calling function:
+ * <ul>
+ * <li> if character read is either a carriage return or line feed,
+ * the variable line is incremented by one and the variable col is
+ * reset to zero
+ * <li> if character read is a carriage return, and a peek at the next
+ * character to be read reveals that it is a line feed, then the
+ * next (line feed) character is read
+ * <li> if either a carriage return or line feed is read, the character
+ * returned to the calling function is '\n'
+ * <li> if character read is neither a carriage return nor a line feed,
+ * col is incremented by one and the character is returned as is to the
+ * calling function
+ * <li> in all cases, the variable filepos is updated using a call to
+ * the tellg function of istream.
+ * </ul>
+ */
+char NexusToken::GetNextChar()
+{
+ int ch;
+ ch = in.get();
+ int failed = in.bad();
+ if( failed ) {
+ errormsg = "Unknown error reading data file (check to make sure file exists)";
+ throw XNexus( errormsg );
+ }
+
+ if( ch == 13 || ch == 10 )
+ {
+ fileline++;
+ filecol = 1L;
+
+ if( ch == 13 && (int)in.peek() == 10 )
+ ch = in.get();
+
+ atEOL = 1;
+ }
+ else if( ch == EOF )
+ atEOF = 1;
+ else {
+ filecol++;
+ atEOL = 0;
+ }
+
+ filepos = in.tellg();
+
+ if( atEOF )
+ return '\0';
+ else if( atEOL )
+ return '\n';
+ else
+ return (char)ch;
+}
+
+/**
+ * @method GetComment [void:protected]
+ *
+ * Reads rest of comment (starting '[' already input) and acts accordingly.
+ * If comment is an output comment, and if an output stream has been attached,
+ * writes the output comment to the output stream. Otherwise, output comments
+ * are simply ignored like regular comments. If the labileFlag bit saveCommandComments
+ * is in effect, the comment (without the square brackets) will be stored in token.
+ */
+void NexusToken::GetComment()
+{
+ // Set comment level to 1 initially. Every ']' encountered reduces
+ // level by one, so that we know we can stop when level becomes 0.
+ int level = 1;
+
+ // get first character
+ char ch = GetNextChar();
+ if( atEOF ) {
+ errormsg = "Unexpected end of file inside comment";
+ throw XNexus( errormsg, GetFilePosition(), GetFileLine(), GetFileColumn() );
+ }
+
+ // see if first character is the output comment symbol ('!')
+ // or command comment symbol (&)
+ int printing = 0;
+ int command = 0;
+ if( ch == '!' )
+ printing = 1;
+ else if( ch == '&' && labileFlags & saveCommandComments ) {
+ command = 1;
+ AppendToToken(ch);
+ }
+
+ // now read the rest of the comment
+ for(;;)
+ {
+ ch = GetNextChar();
+ if( atEOF ) break;
+
+ if( ch == ']' )
+ level--;
+ else if( ch == '[' )
+ level++;
+
+ if( level == 0 )
+ break;
+
+ if( printing )
+ AppendToComment(ch);
+ else if( command )
+ AppendToToken(ch);
+ }
+
+ if( printing ) {
+ // allow output comment to be printed or displayed in most appropriate
+ // manner for target operating system
+ OutputComment( comment );
+
+ // now that we are done with it, free the memory used to store the comment
+ comment = "";
+ }
+}
+
+/**
+ * @method GetCurlyBracketedToken [void:protected]
+ *
+ * Reads rest of a token surrounded with curly brackets (the starting '{'
+ * has already been input) up to and including the matching '}' character.
+ * All nested curly-bracketed phrases will be included.
+ */
+void NexusToken::GetCurlyBracketedToken()
+{
+ // Set level to 1 initially. Every '}' encountered reduces
+ // level by one, so that we know we can stop when level becomes 0.
+ int level = 1;
+
+ char ch;
+ for(;;)
+ {
+ ch = GetNextChar();
+ if( atEOF ) break;
+
+ if( ch == '}' )
+ level--;
+ else if( ch == '{' )
+ level++;
+
+ AppendToToken(ch);
+
+ if( level == 0 )
+ break;
+ }
+}
+
+/**
+ * @method GetDoubleQuotedToken [void:protected]
+ *
+ * Gets remainder of a double-quoted Nexus word (the first double quote character
+ * was read in already by GetNextToken). This function reads characters until
+ * the next double quote is encountered. Tandem double quotes within
+ * a double-quoted Nexus word are not allowed and will be treated as the end
+ * of the first word and the beginning of the next double-quoted Nexus word.
+ * Tandem single quotes inside a double-quoted Nexus word are saved as two
+ * separate single quote characters; to embed a single quote inside a
+ * double-quoted Nexus word, simply use the single quote by itself (not
+ * paired with another tandem single quote).
+ */
+void NexusToken::GetDoubleQuotedToken()
+{
+ char ch;
+
+ for(;;)
+ {
+ ch = GetNextChar();
+ if( atEOF ) break;
+
+ if( ch == '\"' ) {
+ break;
+ }
+ else if( ch == '_' ) {
+ ch = ' ';
+ AppendToToken(ch);
+ }
+ else
+ AppendToToken(ch);
+
+ }
+}
+
+/**
+ * @method GetQuoted [void:protected]
+ *
+ * Gets remainder of a quoted Nexus word (the first single quote character
+ * was read in already by GetNextToken). This function reads characters until
+ * the next single quote is encountered. An exception occurs if two single
+ * quotes occur one after the other, in which case the function continues
+ * to gather characters until an isolated single quote is found. The tandem
+ * quotes are stored as a single quote character in the token nxsstring.
+ */
+void NexusToken::GetQuoted()
+{
+ char ch;
+
+ for(;;)
+ {
+ ch = GetNextChar();
+ if( atEOF ) break;
+
+ if( ch == '\'' && saved == '\'' ) {
+ // paired single quotes, save as one single quote
+ AppendToToken(ch);
+ saved = '\0';
+ }
+ else if( ch == '\'' && saved == '\0' )
+ {
+ // save the single quote to see if it is followed by another
+ saved = '\'';
+ }
+ else if( saved == '\'' )
+ {
+ // previously read character was single quote but this is
+ // something else, save current character so that it will
+ // be the first character in the next token read
+ saved = ch;
+ break;
+ }
+ else if( ch == '_' )
+ {
+ //JAC 19/04/2005 - for proper Nexus compatability in quoted identifiers
+ // (in nexus, HELLO_TEST == 'HELLO TEST' != 'HELLO_TEST'.. wierdly).
+ ch = '_';
+ AppendToToken(ch);
+ }
+ else
+ AppendToToken(ch);
+
+ }
+}
+
+/**
+ * @method GetParentheticalToken [void:protected]
+ *
+ * Reads rest of parenthetical token (starting '(' already input) up to and
+ * including the matching ')' character. All nested parenthetical phrases
+ * will be included.
+ */
+void NexusToken::GetParentheticalToken()
+{
+ // Set level to 1 initially. Every ')' encountered reduces
+ // level by one, so that we know we can stop when level becomes 0.
+ int level = 1;
+
+ char ch;
+ for(;;)
+ {
+ ch = GetNextChar();
+ if( atEOF ) break;
+
+ if( ch == ')' )
+ level--;
+ else if( ch == '(' )
+ level++;
+
+ AppendToToken(ch);
+
+ if( level == 0 )
+ break;
+ }
+
+ // rdmp
+ if (labileFlags & toEndOfTree)
+ {
+ // This method is used to read Newick tree decsriptions, but these may extend beyond the
+ // last ')' (e.g., information on branch length for the root node). This next hack keeps
+ // reading until we hit the semicolon
+ while (in.peek() != ';')
+ {
+ ch = in.get();
+ AppendToToken (ch);
+ }
+ }
+
+}
+
+/**
+ * @method IsPunctuation [bool:protected]
+ * @param ch [char] the character in question
+ *
+ * Returns true if character supplied is considered a punctuation character.
+ * The following twenty characters are considered punctuation characters unless
+ * otherwise indicated below: '(', ')', '[', ']', '{', '}', '/', '\\', ',', ';',
+ * ':', '=', '*', '\'', '"', '`', '+', '-', '<' and '>'.
+ * <p>Exceptions:
+ * <ul>
+ * <li> The tilde character ('~') is also considered punctuation if the
+ * tildeIsPunctuation labile flag is set
+ * <li> The special punctuation character (specified using the
+ * SetSpecialPunctuationCharacter) is also considered punctuation if the
+ * useSpecialPunctuation labile flag is set
+ * <li> The hyphen (i.e., minus sign) character ('-') is <i>not</i> considered
+ * punctuation if the hyphenNotPunctuation labile flag is set
+ * </ul>
+ * Use the SetLabileFlagBit method to set one or more labile flags.
+ */
+bool NexusToken::IsPunctuation( char ch )
+{
+ char punctuation[21];
+ punctuation[0] = '(';
+ punctuation[1] = ')';
+ punctuation[2] = '[';
+ punctuation[3] = ']';
+ punctuation[4] = '{';
+ punctuation[5] = '}';
+ punctuation[6] = '/';
+ punctuation[7] = '\\';
+ punctuation[8] = ',';
+ punctuation[9] = ';';
+ punctuation[10] = ':';
+ punctuation[11] = '=';
+ punctuation[12] = '*';
+ punctuation[13] = '\'';
+ punctuation[14] = '"';
+ punctuation[15] = '`';
+ punctuation[16] = '+';
+ punctuation[17] = '-';
+ punctuation[18] = '<';
+ punctuation[19] = '>';
+ punctuation[20] = '\0';
+
+ bool is_punctuation = false;
+ if( strchr( punctuation, ch ) != NULL )
+ is_punctuation = true;
+ if( labileFlags & tildeIsPunctuation && ch == '~' )
+ is_punctuation = true;
+ if( labileFlags & useSpecialPunctuation && ch == special )
+ is_punctuation = true;
+ if( labileFlags & hyphenNotPunctuation && ch == '-' )
+ is_punctuation = false;
+ return is_punctuation;
+}
+
+/**
+ * @method IsWhitespace [bool:protected]
+ * @param ch [char] the character in question
+ *
+ * Returns true if character supplied is considered a whitespace character.
+ * Note: treats '\n' as darkspace if labile flag newlineIsToken is in effect.
+ */
+bool NexusToken::IsWhitespace( char ch )
+{
+ char whitespace[4];
+ whitespace[0] = ' ';
+ whitespace[1] = '\t';
+ whitespace[2] = '\n';
+ whitespace[3] = '\0';
+
+ bool ws = false;
+
+ // if ch is found in the whitespace array, it's whitespace
+ //
+ if( strchr( whitespace, ch ) != NULL )
+ ws = true;
+
+ // unless of course ch is the newline character and we're currently
+ // treating newlines as darkspace!
+ //
+ if( labileFlags & newlineIsToken && ch == '\n' )
+ ws = false;
+
+ return ws;
+}
+
+/**
+ * @method Abbreviation [bool:public]
+ * @param s [nxsstring] the comparison string
+ *
+ * Returns true if token begins with the capitalized portion of s
+ * and, if token is longer than s, the remaining characters match
+ * those in the lower-case portion of s. The comparison is case
+ * insensitive. This function should be used instead of the
+ * Begins function if you wish to allow for abbreviations of commands
+ * and also want to ensure that user does not type in a word that
+ * does not correspond to any command.
+ */
+bool NexusToken::Abbreviation( nxsstring s )
+{
+ int k;
+ int slen = s.size();
+ int tlen = token.size();
+ char tokenChar, otherChar;
+
+ // The variable mlen refers to the "mandatory" portion
+ // that is the upper-case portion of s
+ //
+ int mlen;
+ for( mlen = 0; mlen < slen; mlen++ ) {
+ if( !isupper(s[mlen]) ) break;
+ }
+
+ // User must have typed at least mlen characters in
+ // for there to even be a chance at a match
+ //
+ if( tlen < mlen )
+ return false;
+
+ // If user typed in more characters than are contained in s,
+ // then there must be a mismatch
+ //
+ if( tlen > slen )
+ return false;
+
+ // Check the mandatory portion for mismatches
+ //
+ for( k = 0; k < mlen; k++ )
+ {
+ tokenChar = (char)toupper( token[k] );
+ otherChar = s[k];
+ if( tokenChar != otherChar )
+ return false;
+ }
+
+ // Check the auxiliary portion for mismatches (if necessary)
+ //
+ for( k = mlen; k < tlen; k++ )
+ {
+ tokenChar = (char)toupper( token[k] );
+ otherChar = (char)toupper( s[k] );
+ if( tokenChar != otherChar )
+ return false;
+ }
+
+ return true;
+}
+
+/**
+ * @method AtEOF [bool:public]
+ *
+ * Returns true if and only if last call to GetNextToken
+ * encountered the end-of-file character (or for some reason
+ * the input stream is now out of commission).
+ */
+bool NexusToken::AtEOF()
+{
+ return atEOF;
+}
+
+/**
+ * @method AtEOL [bool:public]
+ *
+ * Returns true if and only if last call to GetNextToken
+ * encountered the newline character while the newlineIsToken
+ * labile flag was in effect
+ */
+bool NexusToken::AtEOL()
+{
+ return atEOL;
+}
+
+/**
+ * @method BlanksToUnderscores [void:public]
+ *
+ * Converts all blanks in token to underscore characters. Normally,
+ * underscores found in the tokens read from a NEXUS file are converted
+ * to blanks automatically as they are read; this function reverts
+ * the blanks back to underscores.
+ */
+void NexusToken::BlanksToUnderscores()
+{
+ char tmp[256];
+ int len = token.length();
+ assert( len < 256 );
+ strcpy( tmp, token.c_str() );
+ for( int i = 0; i < len; i++ ) {
+ if( tmp[i] == ' ' )
+ tmp[i] = '_';
+ }
+ token = tmp;
+}
+
+/**
+ * @method Begins [bool:public]
+ * @param s [nxsstring] the comparison string
+ * @param respect_case [bool] determines whether comparison is case sensitive (false by default)
+ *
+ * Returns true if token nxsstring begins with the nxsstring s.
+ * The comparison is case insensitive by default. This function should
+ * be used instead of the Equals function if you wish to
+ * allow for abbreviations of commands.
+ */
+bool NexusToken::Begins( nxsstring s, bool respect_case /* = false */ )
+{
+ int k;
+ char tokenChar, otherChar;
+
+ int slen = s.size();
+ if( slen > token.size() )
+ return false;
+
+ for( k = 0; k < slen; k++ )
+ {
+ if( respect_case ) {
+ tokenChar = token[k];
+ otherChar = s[k];
+ }
+ else {
+ tokenChar = (char)toupper( token[k] );
+ otherChar = (char)toupper( s[k] );
+ }
+ if( tokenChar != otherChar )
+ return false;
+ }
+
+ return true;
+}
+
+/**
+ * @method Equals [bool:public]
+ * @param s [nxsstring] the comparison string
+ * @param respect_case [bool] determines whether or not comparison is case sensitive (default is false)
+ *
+ * Returns true if token nxsstring exactly equals s. The comparison
+ * is case insensitive by default. If abbreviations are to be allowed,
+ * either Begins or Abbreviation should be used instead of Equals.
+ */
+bool NexusToken::Equals( nxsstring s, bool respect_case /* = false */ )
+{
+ int k;
+ char tokenChar, otherChar;
+
+ int slen = s.size();
+ if( slen != token.size() )
+ return false;
+
+ for( k = 0; k < token.size(); k++ )
+ {
+ if( respect_case ) {
+ tokenChar = token[k];
+ otherChar = s[k];
+ }
+ else {
+ tokenChar = (char)toupper( token[k] );
+ otherChar = (char)toupper( s[k] );
+ }
+ if( tokenChar != otherChar )
+ return false;
+ }
+
+ return true;
+}
+
+/**
+ * @method GetFileColumn [void:public]
+ *
+ * Returns value stored in filecol, which keeps track of the current
+ * column in the data file (i.e., number of characters since the last
+ * new line was encountered).
+ */
+long NexusToken::GetFileColumn()
+{
+ return filecol;
+}
+
+/**
+ * @method GetFilePosition [streampos:public]
+ *
+ * Returns value stored in filepos, which keeps track of the current
+ * position in the data file (i.e., number of characters since the
+ * beginning of the file). Note: for Metrowerks compiler, you must use the
+ * offset() method of the streampos class to use the value returned.
+ */
+std::streampos NexusToken::GetFilePosition()
+{
+ return filepos;
+}
+
+/**
+ * @method GetFileLine [long:public]
+ *
+ * Returns value stored in fileline, which keeps track of the current
+ * line in the data file (i.e., number of new lines encountered thus far).
+ */
+long NexusToken::GetFileLine()
+{
+ return fileline;
+}
+
+/**
+ * @method GetNextToken [void:public]
+ * @throws XNexus
+ *
+ * Reads characters from in until a complete token has been read and
+ * stored in token.
+ * <p>GetNextToken performs a number of useful operations in the process
+ * of retrieving tokens:
+ * <ul>
+ * <li> any underscore characters encountered are stored as blank spaces
+ * <li> if the first character of the next token is an isolated single
+ * quote, then the entire quoted nxsstring is saved as the next token
+ * <li> paired single quotes are automatically converted to single quotes
+ * before being stored
+ * <li> comments are handled automatically (normal comments are treated as
+ * whitespace and output comments are passed to the function OutputComment
+ * which does nothing in the NexusToken class but can be overridden in a
+ * derived class to handle these in an appropriate fashion)
+ * <li> leading whitespace (including comments) is automatically skipped
+ * <li> if the end of the file is reached on reading this token, the
+ * atEOF flag is set and may be queried using the AtEOF member function
+ * <li> punctuation characters are always returned as individual tokens
+ * (see the Maddison, Swofford, and Maddison paper for the definition of
+ * punctuation characters)
+ * </ul>
+ * <p>The behavior of GetNextToken may be altered by using labile flags.
+ * For example, the labile flag saveCommandComments can be set using
+ * the member function SetLabileFlagBit. This will cause comments
+ * of the form [&X] to be saved as tokens (without the square brackets),
+ * but only for the aquisition of the next token. Labile flags are cleared
+ * after each application.
+ */
+void NexusToken::GetNextToken()
+{
+ ResetToken();
+
+ char ch = ' ';
+ if( saved == '\0' || IsWhitespace(saved) )
+ {
+ // skip leading whitespace
+ while( IsWhitespace(ch) && !atEOF )
+ ch = GetNextChar();
+ saved = ch;
+ }
+
+ for(;;)
+ {
+ // break now if singleCharacterToken mode on and token length > 0
+ if( labileFlags & singleCharacterToken && token.size() > 0 )
+ break;
+
+ // get next character either from saved or from input stream
+ if( saved != '\0' ) {
+ ch = saved;
+ saved = '\0';
+ }
+ else
+ ch = GetNextChar();
+
+ // break now if we've hit EOF
+ if( atEOF ) break;
+
+ if( ch == '\n' && labileFlags & newlineIsToken ) {
+ if( token.size() > 0 ) {
+ // newline came after token, save newline until
+ // next time when it will be reported as a separate
+ // token
+ atEOL = 0;
+ saved = ch;
+ }
+ else {
+ atEOL = 1;
+ AppendToToken(ch);
+ }
+ break;
+ }
+
+ else if( IsWhitespace(ch) )
+ {
+ // break only if we've begun adding to token
+ // (remember, if we hit a comment before a token,
+ // there might be further white space between the comment and
+ // the next token)
+ if( token.size() > 0 )
+ break;
+ }
+
+ else if( ch == '_' )
+ {
+ ch = ' ';
+ AppendToToken(ch);
+ }
+
+ else if( ch == '[' )
+ {
+ // get rest of comment and deal with it, but notice
+ // that we only break if the comment ends a token,
+ // not if it starts one (comment counts as whitespace)
+ //
+ // in the case of command comments (if saveCommandComment) GetComment will
+ // add to the token nxsstring, causing us to break because
+ // token.size() will be greater than 0
+ GetComment();
+ if( token.size() > 0 )
+ break;
+ }
+
+ else if( ch == '(' && labileFlags & parentheticalToken )
+ {
+ AppendToToken(ch);
+
+ // get rest of parenthetical token
+ GetParentheticalToken();
+ break;
+ }
+
+ else if( ch == '{' && labileFlags & curlyBracketedToken )
+ {
+ AppendToToken(ch);
+
+ // get rest of curly-bracketed token
+ GetCurlyBracketedToken();
+ break;
+ }
+
+ else if( ch == '\"' && labileFlags & doubleQuotedToken )
+ {
+ // get rest of double-quoted token
+ GetDoubleQuotedToken();
+ break;
+ }
+
+ else if( ch == '\'' )
+ {
+ if( token.size() > 0 ) {
+ // we've encountered a single quote after a token has
+ // already begun to be read; should be another tandem
+ // single quote character immediately following
+ ch = GetNextChar();
+ if( ch == '\'' )
+ AppendToToken(ch);
+ else {
+ errormsg = "Expecting second single quote character";
+ throw XNexus( errormsg, GetFilePosition(), GetFileLine(), GetFileColumn() );
+ }
+ }
+ else {
+ // get rest of quoted Nexus word and break, since
+ // we will have eaten one token after calling GetQuoted
+ GetQuoted();
+ }
+ break;
+ }
+
+ else if( IsPunctuation(ch) )
+ {
+ if( token.size() > 0 )
+ {
+ // if we've already begun reading the token, encountering
+ // a punctuation character means we should stop, saving
+ // the punctuation character for the next token
+ saved = ch;
+ break;
+ }
+
+ else
+ {
+ // if we haven't already begun reading the token, encountering
+ // a punctuation character means we should stop and return
+ // the punctuation character as this token (i.e., the token
+ // is just the single punctuation character
+ AppendToToken(ch);
+ break;
+ }
+ }
+
+ else
+ {
+ AppendToToken(ch);
+ }
+
+ }
+
+ labileFlags = 0;
+}
+
+/**
+ * @method GetToken [nxsstring:public]
+ * @param respect_case [bool] determines whether token is converted to upper case before being returned
+ *
+ * Returns the token nxsstring. Specifying false for respect_case parameter causes all
+ * characters in token to be converted to upper case before token nxsstring is returned. Specifying
+ * true (default) results in GetToken returning exactly what it read from the file.
+ */
+nxsstring NexusToken::GetToken( bool respect_case /* = true */ )
+{
+ if( !respect_case )
+ ToUpper();
+ return token;
+}
+
+/**
+ * @method GetTokenLength [int:public]
+ *
+ * Returns token.size().
+ */
+int NexusToken::GetTokenLength()
+{
+ return token.size();
+}
+
+/**
+ * @method IsPlusMinusToken [bool:public]
+ *
+ * Returns true if current token is a single character and this character
+ * is either '+' or '-'.
+ */
+bool NexusToken::IsPlusMinusToken()
+{
+ if( token.size() == 1 && ( token[0] == '+' || token[0] == '-' ) )
+ return true;
+ else
+ return false;
+}
+
+/**
+ * @method IsPunctuationToken [bool:public]
+ *
+ * Returns true if current token is a single character and this character
+ * is a punctuation character (as defined in IsPunctuation function).
+ */
+bool NexusToken::IsPunctuationToken()
+{
+ if( token.size() == 1 && IsPunctuation( token[0] ) )
+ return true;
+ else
+ return false;
+}
+
+/**
+ * @method IsWhitespaceToken [bool:public]
+ *
+ * Returns true if current token is a single character and this character
+ * is a whitespace character (as defined in IsWhitespace function).
+ */
+bool NexusToken::IsWhitespaceToken()
+{
+ if( token.size() == 1 && IsWhitespace( token[0] ) )
+ return true;
+ else
+ return false;
+}
+
+/**
+ * @method ReplaceToken [void:public]
+ * @param s [const nxsstring] nxsstring to replace current token nxsstring
+ *
+ * Replaces current token nxsstring with s.
+ */
+void NexusToken::ReplaceToken( const nxsstring s )
+{
+ token = s;
+}
+
+/**
+ * @method ResetToken [void:public]
+ *
+ * Sets token to the empty nxsstring ("").
+ */
+void NexusToken::ResetToken()
+{
+ token = "";
+}
+
+/**
+ * @method SetSpecialPunctuationCharacter [void:public]
+ * @param c [char] the character to which special is set
+ *
+ * Sets the special punctuation character to c. If the labile bit
+ * useSpecialPunctuation is set, this character will be added to the
+ * standard list of punctuation symbols, and will be returned as a
+ * separate token like the other punctuation characters.
+ */
+void NexusToken::SetSpecialPunctuationCharacter( char c )
+{
+ special = c;
+}
+
+/**
+ * @method SetLabileFlagBit [void:public]
+ * @param bit [int] the bit (see enum) to set in labileFlags
+ *
+ * Sets the bit specified in the variable labileFlags. The available
+ * bits are specified in the enumeration starting with saveCommandComments.
+ * All bits in labileFlags are cleared after each token is read.
+ */
+void NexusToken::SetLabileFlagBit( int bit )
+{
+ labileFlags |= bit;
+}
+
+/**
+ * @method StoppedOn [void:public]
+ * @param ch [char] the character to compare with saved character
+ *
+ * Checks character stored in the variable saved to see if it
+ * matches supplied character ch. Good for checking such things
+ * as whether token stopped reading characters because it encountered
+ * a newline (and labileFlags bit newlineIsToken was set):
+ * <p>StoppedOn('\n');
+ * <p>or whether token stopped reading characters because of a
+ * punctuation character such as a comma:
+ * <p>StoppedOn(',');
+ */
+bool NexusToken::StoppedOn( char ch )
+{
+ if( saved == ch )
+ return true;
+ else
+ return false;
+}
+
+/**
+ * @method StripWhitespace [void:public]
+ *
+ * Strips whitespace from currently-stored token. Removes leading,
+ * trailing, and embedded whitespace characters.
+ */
+void NexusToken::StripWhitespace()
+{
+ nxsstring s = "";
+ for( int j = 0; j < token.size(); j++ ) {
+ if( IsWhitespace( token[j] ) ) continue;
+ s += token[j];
+ }
+ token = s;
+}
+
+/**
+ * @method ToUpper [void:public]
+ *
+ * Converts all alphabetical characters in token to upper case.
+ */
+void NexusToken::ToUpper()
+{
+ for( int i = 0; i < token.size(); i++ )
+ token[i] = (char)toupper( token[i] );
+}
+
+/**
+ * @method Write [void:public]
+ * @param out [ostream&] the output stream to which to write token nxsstring
+ *
+ * Simply outputs the current nxsstring stored in token to the output
+ * stream out. Does not send a newline to the output stream afterwards.
+ */
+void NexusToken::Write( std::ostream& out )
+{
+ out << token;
+}
+
+/**
+ * @method Writeln [void:public]
+ * @param out [ostream&] the output stream to which to write token nxsstring
+ *
+ * Simply outputs the current nxsstring stored in token to the output
+ * stream out. Sends a newline to the output stream afterwards.
+ */
+void NexusToken::Writeln( std::ostream& out )
+{
+ out << token << endl;
+}
+
+/**
+ * @method OutputComment [virtual void:public]
+ * @param msg [nxsstring&] the output comment to be displayed
+ *
+ * This function is called whenever an output comment (i.e., a comment
+ * beginning with an exclamation point) is found in the data file.
+ * This version of OutputComment does nothing; override this virtual
+ * function to display the output comment in the most appropriate way
+ * for the platform you are supporting.
+ */
+void NexusToken::OutputComment( nxsstring& /* msg */ )
+{
+}
+
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexustoken.cpp
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexustoken.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexustoken.h 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexustoken.h 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,93 @@
+#ifndef __NEXUSTOKEN_H
+#define __NEXUSTOKEN_H
+
+//
+// NexusToken class
+//
+class NexusToken
+{
+ std::istream& in;
+ int newlineType;
+
+#if defined( __MWERKS__ )
+ long filepos;
+#else
+ std::streampos filepos;
+#endif
+
+ long fileline;
+ long filecol;
+
+ nxsstring token;
+ nxsstring comment;
+
+ char saved;
+ bool atEOF;
+ bool atEOL;
+
+ char special;
+
+ int labileFlags;
+
+protected:
+
+ void AppendToComment( char ch );
+ void AppendToToken( char ch );
+ char GetNextChar();
+ void GetComment();
+ void GetCurlyBracketedToken();
+ void GetDoubleQuotedToken();
+ void GetQuoted();
+ void GetParentheticalToken();
+ bool IsPunctuation( char ch );
+ bool IsWhitespace( char ch );
+
+public:
+ enum {
+ saveCommandComments = 0x0001,
+ parentheticalToken = 0x0002,
+ curlyBracketedToken = 0x0004,
+ doubleQuotedToken = 0x0008,
+ singleCharacterToken = 0x0010,
+ newlineIsToken = 0x0020,
+ tildeIsPunctuation = 0x0040,
+ useSpecialPunctuation = 0x0080,
+ hyphenNotPunctuation = 0x0100,
+ toEndOfTree = 0x0200
+ };
+
+ nxsstring errormsg;
+
+ NexusToken( std::istream& i );
+ virtual ~NexusToken();
+
+ bool AtEOF();
+ bool AtEOL();
+ bool Abbreviation( nxsstring s );
+ bool Begins( nxsstring s, bool respect_case = false );
+ void BlanksToUnderscores();
+ bool Equals( nxsstring s, bool respect_case = false );
+ long GetFileColumn();
+ std::streampos GetFilePosition();
+ long GetFileLine();
+ void GetNextToken();
+ nxsstring GetToken( bool respect_case = true );
+ int GetTokenLength();
+ bool IsPlusMinusToken();
+ bool IsPunctuationToken();
+ bool IsWhitespaceToken();
+ void ReplaceToken( const nxsstring s );
+ void ResetToken();
+ void SetSpecialPunctuationCharacter( char c );
+ void SetLabileFlagBit( int bit );
+ bool StoppedOn( char ch );
+ void StripWhitespace();
+ void ToUpper();
+ void Write( std::ostream& out );
+ void Writeln( std::ostream& out );
+
+ // virtual function that should be overridden in derived classes
+ virtual void OutputComment( nxsstring& msg );
+};
+
+#endif
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexustoken.h
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nxsdate.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nxsdate.cpp 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nxsdate.cpp 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,228 @@
+// nxsdate.cpp
+// Copyright (C) 1999 Paul O. Lewis.
+//
+// This file defines a class useful for obtaining and displaying the current date
+//
+// This file is part of SimpleNxs. SimpleNxs is free software; you can
+// redistribute it and/or modify it under the terms of the GNU General
+// Public License as published by the Free Software Foundation;
+// either version 2 of the License, or (at your option) any later version.
+//
+// SimpleNxs is distributed in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// SimpleNxs; see the file COPYING. If not, write to the Free Software Foundation,
+// Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+//
+// Author contact information:
+//
+// Paul O. Lewis, Ph.D.
+// Assistant Professor
+// Department of Ecology and Evolutionary Biology (U-43)
+// University of Connecticut
+// 75 North Eagleville Road
+// Storrs, CT 06269-3043
+//
+// Office: 166A Torrey Life Sciences
+// Phone: (860) 486-2069
+// FAX: (860) 486-6364 (not private)
+// email: paul.lewis at uconn.edu
+
+/**
+ * @class NxsDate
+ * @file nxsdate.h
+ * @file nxsdate.cpp
+ * @author Paul O. Lewis
+ * @copyright Copyright © 1999. All Rights Reserved.
+ * @variable secs [time_t] current time
+ * @variable ts [tm] time structure
+ *
+ */
+
+#include <assert.h>
+#include <ctype.h>
+#if (defined __MWERKS__) || (defined __GNUC__)
+ #include <string.h>
+#endif
+
+#include "nxsdate.h"
+
+/**
+ * @constructor
+ *
+ * Calls GetCurrentDate method.
+ */
+NxsDate::NxsDate()
+{
+ GetCurrentDate();
+}
+
+/**
+ * @constructor
+ * @param day [int] the day
+ * @param month [const char*] the month (no abbreviation allowed)
+ * @param year [int] the year (supply all four digits)
+ * @param hours [int] default is 0
+ * @param minutes [int] default is 0
+ * @param seconds [int] default is 1
+ * @throws XTime
+ *
+ * Sets secs and fills ts based on day, month, year, hours, minutes,
+ * and seconds provided. Throws XTime exception if parameters
+ * supplied do not represent a valid date/time.
+ */
+NxsDate::NxsDate( int day, const char* month, int year
+ , int hours /* = 0 */, int minutes /* = 0 */
+ , int seconds /* = 1 */ )
+{
+ assert( month != NULL );
+ char mstr[10];
+ int n = strlen(month);
+ for( int i = 0; i < n; i++ )
+ mstr[i] = toupper( month[i] );
+ mstr[n] = '\0';
+
+ ts.tm_mday = day;
+ if( strcmp( month, "JANUARY" ) == 0 )
+ ts.tm_mon = 0;
+ else if( strcmp( month, "FEBRUARY" ) == 0 )
+ ts.tm_mon = 1;
+ else if( strcmp( month, "MARCH" ) == 0 )
+ ts.tm_mon = 2;
+ else if( strcmp( month, "APRIL" ) == 0 )
+ ts.tm_mon = 3;
+ else if( strcmp( month, "MAY" ) == 0 )
+ ts.tm_mon = 4;
+ else if( strcmp( month, "JUNE" ) == 0 )
+ ts.tm_mon = 5;
+ else if( strcmp( month, "JULY" ) == 0 )
+ ts.tm_mon = 6;
+ else if( strcmp( month, "AUGUST" ) == 0 )
+ ts.tm_mon = 7;
+ else if( strcmp( month, "SEPTEMBER" ) == 0 )
+ ts.tm_mon = 8;
+ else if( strcmp( month, "OCTOBER" ) == 0 )
+ ts.tm_mon = 9;
+ else if( strcmp( month, "NOVEMBER" ) == 0 )
+ ts.tm_mon = 10;
+ else if( strcmp( month, "DECEMBER" ) == 0 )
+ ts.tm_mon = 11;
+ else
+ ts.tm_mon = -1;
+ ts.tm_year = year - 1900;
+
+ ts.tm_hour = hours;
+ ts.tm_min = minutes;
+ ts.tm_sec = seconds;
+
+ ts.tm_wday = -1;
+ ts.tm_yday = -1;
+ ts.tm_isdst = -1;
+
+ // ensure that the date is correct (and compute tm_wday and tm_yday)
+ secs = mktime(&ts);
+ if( secs == -1 ) throw XTime();
+}
+
+/**
+ * @method c_str [char*:public]
+ *
+ * Calls asctime to convert currently stored date and time to
+ * a string.
+ */
+char* NxsDate::c_str()
+{
+ return asctime(&ts);
+}
+
+/**
+ * @method GetCurrentDate [void:public]
+ *
+ * Sets secs and fills ts. Called by the NxsDate default constructor.
+ */
+void NxsDate::GetCurrentDate()
+{
+ secs = time(NULL);
+ tm* time_structure;
+ time_structure = localtime(&secs);
+#if 1
+ ts = *time_structure;
+#else
+ ts.tm_mday = time_structure->tm_mday; // day of the month (1 to 31)
+ ts.tm_mon = time_structure->tm_mon; // month (0 to 11)
+ ts.tm_year = time_structure->tm_year; // year
+
+ ts.tm_hour = time_structure->tm_hour; // hours (24 hour clock)
+ ts.tm_min = time_structure->tm_min; // minutes
+ ts.tm_sec = time_structure->tm_sec; // seconds
+
+ ts.tm_wday = time_structure->tm_wday; // day of the week (0 is Sunday)
+ ts.tm_yday = time_structure->tm_yday; // day of the year (0 to 365)
+ ts.tm_isdst = time_structure->tm_isdst; // is daylight savings time
+#endif
+}
+
+/**
+ * @operator = [void:public]
+ * @param other_date [const NxsDate&] the object being copied
+ *
+ * Copies secs and ts from other_date object.
+ */
+void NxsDate::operator=( const NxsDate& other_date )
+{
+ secs = other_date.secs;
+ ts = other_date.ts;
+}
+
+/**
+ * @operator - [long:public]
+ * @param other_date [const NxsDate&] the object being copied
+ *
+ * Returns secs minus other_date.secs.
+ */
+long NxsDate::operator-( const NxsDate& other_date ) const
+{
+ return ( secs - other_date.secs );
+}
+
+/**
+ * @operator < [int:public]
+ * @param other_date [const NxsDate&] the other NxsDate object
+ *
+ * Returns 1 if secs is less than other_date.secs; otherwise,
+ * returns 0.
+ */
+int NxsDate::operator<( const NxsDate& other_date ) const
+{
+ return ( secs < other_date.secs ? 1 : 0 );
+}
+
+/**
+ * @operator > [int:public]
+ * @param other_date [const NxsDate&] the other NxsDate object
+ *
+ * Returns 1 if secs is greater than other_date.secs; otherwise,
+ * returns 0.
+ */
+int NxsDate::operator>( const NxsDate& other_date ) const
+{
+ return ( secs > other_date.secs ? 1 : 0 );
+}
+
+/**
+ * @operator << [ostream&:public]
+ * @param o [ostream&] the output stream
+ * @param d [const NxsDate&] the NxsDate object
+ *
+ * Outputs the current date and time in the form of a string.
+ * This function is a friend, not a member function.
+ */
+std::ostream& operator<<( std::ostream& o, const NxsDate& d )
+{
+ o << asctime(&d.ts);
+ return o;
+}
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nxsdate.cpp
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nxsdate.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nxsdate.h 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nxsdate.h 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,36 @@
+// nxsdate.h
+// Copyright (C) 1999 Paul O. Lewis.
+
+#ifndef __NXSDATE_H
+#define __NXSDATE_H
+
+#if defined( __BORLANDC__ )
+# include <dos.h>
+#endif
+
+#include <time.h>
+#include <iostream>
+
+class NxsDate
+{
+ time_t secs;
+ tm ts;
+ public:
+ NxsDate();
+ NxsDate( int day, const char* month, int year
+ , int hours = 0, int minutes = 0, int seconds = 1 );
+
+ char* c_str();
+ void GetCurrentDate();
+
+ void operator=( const NxsDate& other_date );
+ long operator-( const NxsDate& other_date ) const;
+ int operator<( const NxsDate& other_date ) const;
+ int operator>( const NxsDate& other_date ) const;
+ friend std::ostream& operator<<( std::ostream& o, const NxsDate& d );
+
+ class XTime {};
+};
+
+#endif
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nxsdate.h
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nxsstring.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nxsstring.cpp 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nxsstring.cpp 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,120 @@
+#ifdef __BORLANDC__
+ // Undefine __MINMAX_DEFINED so that min and max are correctly defined
+ #ifdef __MINMAX_DEFINED
+ #undef __MINMAX_DEFINED
+ #endif
+#endif
+
+#include <vector>
+#include <string>
+
+#ifdef __BORLANDC__
+ // Redefine __MINMAX_DEFINED so Windows header files compile
+ #ifndef __MINMAX_DEFINED
+ #define __MINMAX_DEFINED
+ #endif
+#endif
+
+using namespace std;
+
+#include <stdio.h>
+#include <assert.h>
+#include <math.h>
+#include "nxsstring.h"
+
+nxsstring& nxsstring::operator+=( const double d )
+{
+ char tmp[81];
+ sprintf( tmp, "%#3.6f", d );
+ int tmplen = strlen(tmp);
+ for(;;) {
+ if( tmplen < 3 || tmp[tmplen-1] != '0' || tmp[tmplen-2] == '.' )
+ break;
+ tmp[tmplen-1] = '\0';
+ tmplen--;
+ }
+ append(tmp);
+ return *this;
+}
+
+/**
+ * @method RightJustifyLong [void:public]
+ * @param x [long] long value to right justify
+ * @param w [int] width of field
+ * @param clear_first [bool] if true, initialize string first to empty string
+ *
+ * Right-justifies x in a field w characters wide, using blank spaces
+ * to fill in unused portions on the left-hand side of the field.
+ * Specify third argument true to first empty the string.
+ */
+void nxsstring::RightJustifyLong( long x, int w, bool clear_first /* = false */ )
+{
+ if( clear_first )
+ *this = "";
+
+ int num_spaces = w - 1;
+ if( x > 0L )
+ num_spaces -= (int)log10( (double)x );
+ if( num_spaces < 0 )
+ num_spaces = 0;
+
+ for( int k = 0; k < num_spaces; k++ )
+ *this += ' ';
+
+ *this += x;
+}
+
+/**
+ * @method RightJustifyDbl [void:public]
+ * @param x [long] long value to right justify
+ * @param w [int] width of field
+ * @param p [int] precision to use
+ * @param clear_first [bool] if true, initialize string first to empty string
+ *
+ * Right-justifies x in a field w characters wide with precision p, using blank spaces
+ * to fill in unused portions on the left-hand side of the field.
+ * Specify fourth argument true to first empty the string.
+ */
+void nxsstring::RightJustifyDbl( double x, int w, int p, bool clear_first /* = false */ )
+{
+ if( clear_first )
+ *this = "";
+
+ char tmpstr[81];
+ char fmtstr[81];
+ sprintf( fmtstr, "%%.%df", p );
+ sprintf( tmpstr, fmtstr, x );
+
+ int num_spaces = w - strlen(tmpstr);
+ if( num_spaces < 0 )
+ num_spaces = 0;
+ for( int k = 0; k < num_spaces; k++ )
+ *this += ' ';
+
+ *this += tmpstr;
+}
+
+/**
+ * @method ShortenTo [void:public]
+ * @param n [int] maximum number of characters
+ *
+ * Shortens string to n-3 characters, making the last
+ * three characters "...". If string is already less
+ * than n character in length, has no effect. The
+ * parameter n should be at least 4.
+ */
+void nxsstring::ShortenTo( int n )
+{
+ if( length() <= n )
+ return;
+
+ assert( n > 3 );
+
+ char* s = new char[n+1];
+ strncpy( s, this->c_str(), n-3 );
+ s[n-3] = '.';
+ s[n-2] = '.';
+ s[n-1] = '.';
+ s[n] = '\0';
+ *this = s;
+}
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nxsstring.cpp
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nxsstring.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nxsstring.h 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nxsstring.h 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,55 @@
+#ifndef __NXSSTRING_H
+#define __NXSSTRING_H
+
+class nxsstring : public std::string
+{
+ public:
+ nxsstring() {}
+ nxsstring( const char* s ) {
+ assign(s);
+ }
+ nxsstring( const nxsstring& s ) {
+ assign(s);
+ }
+ nxsstring& operator=( const char* s ) {
+ assign(s);
+ return *this;
+ }
+ nxsstring& operator=( const nxsstring& s ) {
+ assign(s);
+ return *this;
+ }
+ nxsstring& operator+=( const nxsstring& s ) {
+ append(s);
+ return *this;
+ }
+ nxsstring& operator+=( const char c ) {
+ char s[2];
+ s[0] = c;
+ s[1] = '\0';
+ append(s);
+ return *this;
+ }
+ nxsstring& operator+=( const int i ) {
+ char tmp[81];
+ sprintf( tmp, "%d", i );
+ append(tmp);
+ return *this;
+ }
+ nxsstring& operator+=( const long l ) {
+ char tmp[81];
+ sprintf( tmp, "%ld", l );
+ append(tmp);
+ return *this;
+ }
+ nxsstring& operator+=( const double d );
+
+ void RightJustifyLong( long x, int w, bool clear_first = false );
+ void RightJustifyDbl( double x, int w, int p, bool clear_first = false );
+ void ShortenTo( int n );
+};
+
+#endif
+
+
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nxsstring.h
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/setreader.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/setreader.cpp 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/setreader.cpp 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,266 @@
+#include "nexusdefs.h"
+#include "xnexus.h"
+#include "nexustoken.h"
+#include "nexus.h"
+#include "setreader.h"
+
+/**
+ * @class SetReader
+ * @file setreader.h
+ * @file setreader.cpp
+ * @author Paul O. Lewis
+ * @copyright Copyright © 1999. All Rights Reserved.
+ * @variable block [NexusBlock&] the NexusBlock used for looking up labels
+ * @variable max [int] maximum number of elements in the set
+ * @variable settype [int] the type of set being read (see enum)
+ * @variable nxsset [IntSet&] reference to the set being read
+ * @variable token [NexusToken&] the token object to use in reading the file
+ * @see NexusReader
+ * @see NexusToken
+ * @see XNexus
+ *
+ * A class for reading Nexus set objects and storing them in a set of int values.
+ * The IntSet nxsset will be flushed if it is not empty, and nxsset will be built
+ * up as the set is read, with each element in the list storing a member of
+ * the set (ranges are stored as individual elements).
+ *
+ * <p>This class handles set descriptions of the following form:
+ * <pre>
+ * 4-7 15 20-.\3;
+ * </pre>
+ * The above set includes all numbers from 4 to 100 (inclusive) as well as
+ * 105 and every third number from 110 to max. If max were 30, the array
+ * stored would look like this:
+ * <table border=1>
+ * <tr> <td>4</td> <td>5</td> <td>6</td> <td>7</td> <td>15</td> <td>20</td>
+ * <td>23</td> <td>26</td> <td>29</td>
+ * </table>
+ */
+
+/**
+ * @enumeration
+ * @enumitem generic [1] means expect a generic set (say, characters weights)
+ * @enumitem charset [2] means expect a character set
+ * @enumitem taxsert [3] means expect a taxon set
+ *
+ * For use with the variable settype. Default is 1 (generic).
+ */
+
+/**
+ * @constructor
+ *
+ * Initializes token to t and nxsset to iset, then
+ * erases nxsset (if it is nonempty).
+ */
+SetReader::SetReader( NexusToken& t, int maxValue, IntSet& iset
+ , NexusBlock& nxsblk, int type )
+ : token(t), nxsset(iset), max(maxValue), block(nxsblk), settype(type)
+{
+ if( !nxsset.empty() )
+ nxsset.erase( nxsset.begin(), nxsset.end() );
+}
+
+/**
+ * @method AddRange [bool:protected]
+ * @param first [int] the first member of the range (inclusive)
+ * @param last [int] the last member of the range (inclusive)
+ * @param modulus [int] the modulus to use (if non-zero)
+ *
+ * Adds the range specified by first, last, and modulus to the set. If
+ * modulus is zero (the default value) it is ignored. The parameters
+ * first and last are from the data file and thus have range [1..max].
+ * We store them with offset = 0 in nxsset (i.e., subtract 1 from every
+ * value stored).
+ */
+bool SetReader::AddRange( int first, int last, int modulus /* = 0 */ )
+{
+ if( last > max || first < 1 || first > last )
+ return false;
+ for( int i = first-1; i < last; i++ ) {
+ int diff = i-first+1;
+ if( modulus > 0 && diff % modulus != 0 )
+ continue;
+ nxsset.insert(i);
+ }
+ return true;
+}
+
+/**
+ * @method GetTokenValue [int:private]
+ * @throws XNexus
+ *
+ * Tries to interpret token as a number. Failing that,
+ * tries to interpret token as a character or taxon
+ * label, which it then converts to a number. Failing
+ * that, it throws an XNexus exception.
+ */
+int SetReader::GetTokenValue()
+{
+ int v = atoi( token.GetToken().c_str() );
+
+ if( v == 0 && settype != SetReader::generic )
+ {
+ if( settype == SetReader::charset )
+ v = block.CharLabelToNumber( token.GetToken() );
+ else if( settype == SetReader::taxset )
+ v = block.TaxonLabelToNumber( token.GetToken() );
+ }
+
+ if( v == 0 )
+ {
+ block.errormsg = "Set element (";
+ block.errormsg += token.GetToken();
+ block.errormsg += ") not a number ";
+ if( settype == SetReader::charset )
+ block.errormsg += "and not a valid character label";
+ else if( settype == SetReader::taxset )
+ block.errormsg += "and not a valid taxon label";
+ throw XNexus( block.errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ return v;
+}
+
+/**
+ * @method Run [bool:public]
+ * @throws XNexus
+ *
+ * Reads in a set from a NEXUS data file. Returns true if the set was
+ * terminated by a semicolon, false otherwise.
+ */
+bool SetReader::Run()
+{
+ bool ok;
+ bool retval = false;
+
+ int rangeBegin = -1;
+ int rangeEnd = rangeBegin;
+ bool insideRange = false;
+ int modValue = 0;
+ for(;;)
+ {
+ // next token should be one of the following:
+ // ';' --> set definition finished
+ // '-' --> range being defined
+ // int --> member of set (or beginning or end of a range)
+ // '.' --> signifies the number max
+ // '\' --> signifies modulus value coming next
+ //
+ token.GetNextToken();
+
+ if( token.Equals("-") )
+ {
+ // We should not be inside a range when we encounter a hyphenation symbol.
+ // The hyphen is what _puts_ us inside a range!
+ if( insideRange ) {
+ block.errormsg = "The symbol '-' is out of place here";
+ throw XNexus( block.errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ insideRange = true;
+ }
+
+ else if( token.Equals(".") )
+ {
+ // We _should_ be inside a range if we encounter a period, as this
+ // is a range termination character
+ if( !insideRange ) {
+ block.errormsg = "The symbol '.' can only be used to specify the end of a range";
+ throw XNexus( block.errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ rangeEnd = max;
+ }
+
+ else if( token.Equals("\\") )
+ {
+ // The backslash character is used to specify a modulus to a range, and
+ // thus should only be encountered if currently inside a range
+ if( !insideRange ) {
+ block.errormsg = "The symbol '\\' can only be used after the end of a range has been specified";
+ throw XNexus( block.errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ token.GetNextToken();
+ modValue = atoi( token.GetToken().c_str() );
+ if( modValue <= 0 ) {
+ block.errormsg = "The modulus value specified (";
+ block.errormsg += token.GetToken();
+ block.errormsg += ") is invalid; must be greater than 0";
+ throw XNexus( block.errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ }
+
+ else if( insideRange && rangeEnd == -1 )
+ {
+ // The beginning of the range and the hyphen symbol have been read
+ // already, just need to store the end of the range at this point
+ rangeEnd = GetTokenValue();
+ }
+
+ else if( insideRange )
+ {
+ // If insideRange is true, we must have already stored the beginning
+ // of the range and read in the hyphen character. We would not have
+ // made it this far if we had also not already stored the range end.
+ // Thus, we can go ahead and add the range.
+ ok = AddRange( rangeBegin, rangeEnd, modValue );
+ if( !ok ) {
+ block.errormsg = "Character number out of range (or range incorrectly specified) in set specification";
+ throw XNexus( block.errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // We have actually already read in the next token, so deal with it
+ // now so that we don't end up skipping a token
+ if( token.Equals(";") ) {
+ retval = true;
+ break;
+ }
+ else if( token.Equals(",") )
+ break;
+ rangeBegin = GetTokenValue();
+ rangeEnd = -1;
+ insideRange = false;
+ }
+ else if( rangeBegin != -1 )
+ {
+ // If we were inside a range, we would have not gotten this far.
+ // If not in a range, we are either getting ready to begin a new
+ // range or have previously read in a single value. Handle the
+ // latter possibility here.
+ ok = AddRange( rangeBegin, rangeBegin, modValue );
+ if( !ok ) {
+ block.errormsg = "Character number out of range (or range incorrectly specified) in set specification";
+ throw XNexus( block.errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ if( token.Equals(";") ) {
+ retval = true;
+ break;
+ }
+ else if( token.Equals(",") )
+ break;
+ rangeBegin = GetTokenValue();
+ rangeEnd = -1;
+ }
+ else if( token.Equals(";") ) {
+ retval = true;
+ break;
+ }
+ else if( token.Equals(",") ) {
+ break;
+ }
+ else if( token.Equals("ALL") ) {
+ rangeBegin = 1;
+ rangeEnd = max;
+ ok = AddRange( rangeBegin, rangeEnd );
+ }
+ else {
+ // Can only get here if rangeBegin still equals -1 and thus we
+ // are reading in the very first token and that token is neither
+ // the word "all" nor is it a semicolon
+ rangeBegin = GetTokenValue();
+ rangeEnd = -1;
+ }
+ }
+
+ return retval;
+}
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/setreader.cpp
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/setreader.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/setreader.h 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/setreader.h 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,27 @@
+#ifndef __SETREADER_H
+#define __SETREADER_H
+
+class SetReader
+{
+ NexusBlock& block;
+ NexusToken& token;
+ IntSet& nxsset;
+ int max;
+ int settype;
+
+public:
+ enum { generic = 1, charset, taxset }; // used for settype
+
+private:
+ int GetTokenValue();
+
+protected:
+ bool AddRange( int first, int last, int modulus = 0 );
+
+public:
+ SetReader( NexusToken& t, int maxValue, IntSet& iset, NexusBlock& nxsblk, int type );
+
+ bool Run();
+};
+
+#endif
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/setreader.h
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/taxablock.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/taxablock.cpp 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/taxablock.cpp 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,344 @@
+#include "nexusdefs.h"
+#include "xnexus.h"
+#include "nexustoken.h"
+#include "nexus.h"
+#include "taxablock.h"
+
+using namespace std;
+
+/**
+ * @class TaxaBlock
+ * @file taxablock.h
+ * @file taxablock.cpp
+ * @author Paul O. Lewis
+ * @copyright Copyright © 1999. All Rights Reserved.
+ * @variable ntax [int:private] number of taxa (set from NTAX specification)
+ * @variable taxonLabels [LabelList:private] storage for list of taxon labels
+ * @see LabelList
+ * @see Nexus
+ * @see NexusBlock
+ * @see NexusReader
+ * @see NexusToken
+ * @see XNexus
+ *
+ * This class handles reading and storage for the Nexus block TAXA.
+ * It overrides the member functions Read and Reset, which are abstract
+ * virtual functions in the base class NexusBlock. The taxon names are
+ * stored in an array of strings (taxonLabels) that is accessible through
+ * the member functions GetTaxonLabel, AddTaxonLabel, ChangeTaxonLabel,
+ * and GetNumTaxonLabels.
+ *
+ * <P> Below is a table showing the correspondence between the elements of a
+ * TAXA block and the variables and member functions that can be used
+ * to access each piece of information stored.
+ *
+ * <p><table border=1>
+ * <tr>
+ * <th> Nexus command
+ * <th> Nexus subcommand
+ * <th> Data Members
+ * <th> Member Functions
+ * <tr>
+ * <td> DIMENSIONS
+ * <td> NTAX
+ * <td> int <a href="#ntax">ntax</a>
+ * <td> int <a href="#GetNumTaxonLabels">GetNumTaxonLabels()</a>
+ * <tr>
+ * <td colspan=2 align=left> TAXLABELS
+ * <td> LabelList <a href="#taxonLabels">taxonLabels</a>
+ * <td> nxsstring <a href="#GetTaxonLabel">GetTaxonLabel( int i )</a>
+ * <br> int <a href="#FindTaxon">FindTaxon( nxsstring label )</a>
+ * <br> int <a href="#GetMaxTaxonLabelLength">GetMaxTaxonLabelLength()</a>
+ * </table>
+ */
+
+/**
+ * @constructor
+ *
+ * Default constructor. Initializes id to "TAXA" and ntax to 0.
+ */
+TaxaBlock::TaxaBlock() : ntax(0), NexusBlock()
+{
+ id = "TAXA";
+}
+
+/**
+ * @destructor
+ *
+ * Flushes taxonLabels.
+ */
+TaxaBlock::~TaxaBlock()
+{
+ taxonLabels.erase( taxonLabels.begin(), taxonLabels.end() );
+}
+
+/**
+ * @method Read [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * This function provides the ability to read everything following the block name
+ * (which is read by the Nexus object) to the end or endblock statement.
+ * Characters are read from the input stream in. Overrides the
+ * abstract virtual function in the base class.
+ */
+void TaxaBlock::Read( NexusToken& token )
+{
+ isEmpty = false;
+ token.GetNextToken(); // this should be the semicolon after the block name
+ if( !token.Equals(";") ) {
+ errormsg = "Expecting ';' after TAXA block name, but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ for(;;)
+ {
+ token.GetNextToken();
+
+ if( token.Equals("DIMENSIONS") ) {
+ token.GetNextToken(); // this should be the NTAX keyword
+ if( !token.Equals("NTAX") ) {
+ errormsg = "Expecting NTAX keyword, but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ token.GetNextToken(); // this should be the equals sign
+ if( !token.Equals("=") ) {
+ errormsg = "Expecting '=', but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ token.GetNextToken(); // this should be the number of taxa
+ ntax = atoi( token.GetToken().c_str() );
+ if( ntax <= 0 ) {
+ errormsg = "NTAX should be greater than zero (";
+ errormsg += token.GetToken();
+ errormsg += " was specified)";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ token.GetNextToken(); // this should be the terminating semicolon
+ if( !token.Equals(";") ) {
+ errormsg = "Expecting ';' to terminate DIMENSIONS command, but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ }
+ else if( token.Equals("TAXLABELS") ) {
+ if( ntax <= 0 ) {
+ errormsg = "NTAX must be specified before TAXLABELS command";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ for( int i = 0; i < ntax; i++ ) {
+ token.GetNextToken();
+ taxonLabels.push_back( token.GetToken() );
+ }
+
+ token.GetNextToken(); // this should be terminating semicolon
+ if( !token.Equals(";") ) {
+ errormsg = "Expecting ';' to terminate TAXLABELS command, but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ }
+ else if( token.Equals("END") ) {
+ // get the semicolon following END
+ token.GetNextToken();
+ if( !token.Equals(";") ) {
+ errormsg = "Expecting ';' to terminate the END command, but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ break;
+ }
+ else if( token.Equals("ENDBLOCK") ) {
+ // get the semicolon following ENDBLOCK
+ token.GetNextToken();
+ if( !token.Equals(";") ) {
+ errormsg = "Expecting ';' to terminate the ENDBLOCK command, but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ break;
+ }
+ else {
+ SkippingCommand( token.GetToken() );
+ do {
+ token.GetNextToken();
+ } while( !token.AtEOF() && !token.Equals(";") );
+ if( token.AtEOF() ) {
+ errormsg = "Unexpected end of file encountered";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ }
+ }
+}
+
+/**
+ * @method Report [void:public]
+ * @param out [ostream&] the output stream to which to write the report
+ *
+ * This function outputs a brief report of the contents of this taxa block.
+ * Overrides the abstract virtual function in the base class.
+ */
+void TaxaBlock::Report( std::ostream& out )
+{
+ out << endl;
+ out << id << " block contains ";
+ if( ntax == 0 ) {
+ out << "no taxa" << endl;
+ }
+ else if( ntax == 1 )
+ out << "one taxon" << endl;
+ else
+ out << ntax << " taxa" << endl;
+
+ if( ntax == 0 ) return;
+
+ for( int k = 0; k < ntax; k++ )
+ out << '\t' << (k+1) << '\t' << taxonLabels[k] << endl;
+}
+
+/**
+ * @method Reset [void:protected]
+ *
+ * Flushes taxonLabels and sets ntax to 0 in preparation for reading a
+ * new TAXA block.
+ */
+void TaxaBlock::Reset()
+{
+ isEmpty = true;
+ taxonLabels.erase( taxonLabels.begin(), taxonLabels.end() );
+ ntax = 0;
+}
+
+/**
+ * @method AddTaxonLabel [void:public]
+ * @param s [nxsstring] the taxon label to add
+ *
+ * Adds taxon label s to end of list of taxon labels and increments
+ * ntax by 1.
+ */
+void TaxaBlock::AddTaxonLabel( nxsstring s )
+{
+ isEmpty = false;
+ taxonLabels.push_back(s);
+ ntax++;
+}
+
+/**
+ * @method ChangeTaxonLabel [void:public]
+ * @param i [int] the taxon label number to change
+ * @param s [nxsstring] the string used to replace label i
+ *
+ * Changes the label for taxon i to s.
+ */
+void TaxaBlock::ChangeTaxonLabel( int i, nxsstring s )
+{
+ assert( i < (int)taxonLabels.size() );
+ taxonLabels[i] = s;
+}
+
+/**
+ * @method GetMaxTaxonLabelLength [char*:public]
+ *
+ * Returns the length of the longest taxon label stored. Useful for
+ * formatting purposes in outputting the data matrix (i.e., you want the
+ * left edge of the matrix to line up).
+ */
+int TaxaBlock::GetMaxTaxonLabelLength()
+{
+ assert( ntax == (int)taxonLabels.size() );
+ int maxlen = 0;
+ for( int i = 0; i < ntax; i++ ) {
+ int thislen = taxonLabels[i].size();
+ if( thislen > maxlen )
+ maxlen = thislen;
+ }
+ return maxlen;
+}
+
+/**
+ * @method GetTaxonLabel [char*:public]
+ * @param i [int] the taxon label number to return
+ *
+ * Returns the label for taxon i.
+ */
+nxsstring TaxaBlock::GetTaxonLabel( int i )
+{
+ assert( i < (int)taxonLabels.size() );
+ return taxonLabels[i];
+}
+
+/**
+ * @method IsAlreadyDefined [bool:public]
+ * @param s [nxsstring] the s to attempt to find in the taxonLabels list
+ *
+ * Calls IsAlreadyDefined function of taxonLabels, which returns 0
+ * if a taxon label equal to s is already stored in taxonLabels.
+ * Returns 0 if no taxon label equal to s can be found in the
+ * taxonLabels list.
+ */
+bool TaxaBlock::IsAlreadyDefined( nxsstring s )
+{
+ LabelList::const_iterator iter = find( taxonLabels.begin(), taxonLabels.end(), s );
+ int taxonLabelFound = ( iter != taxonLabels.end() );
+ return taxonLabelFound;
+}
+
+/**
+ * @method FindTaxon [int:public]
+ * @param s [nxsstring] the string to attempt to find in the taxonLabels list
+ * @throws TaxaBlock::nosuchtaxon
+ *
+ * Returns index of taxon named s in taxonLabels list. If taxon named
+ * s cannot be found, or if there are no labels currently stored in
+ * the taxonLabels list, throws nosuchtaxon exception.
+ */
+int TaxaBlock::FindTaxon( nxsstring s )
+{
+ int k = 0;
+ LabelList::const_iterator i;
+ for( i = taxonLabels.begin(); i != taxonLabels.end(); ++i ) {
+ if( *i == s ) break;
+ k++;
+ }
+
+ if( i == taxonLabels.end() )
+ throw TaxaBlock::nosuchtaxon();
+
+ return k;
+}
+
+/**
+ * @method GetNumTaxonLabels [int:public]
+ *
+ * Returns number of taxon labels currently stored.
+ */
+int TaxaBlock::GetNumTaxonLabels()
+{
+ return taxonLabels.size();
+}
+
+/**
+ * @method SetNtax [void:private]
+ * @param n [int] the number of taxa
+ *
+ * Sets ntax to n.
+ */
+void TaxaBlock::SetNtax( int n )
+{
+ ntax = n;
+}
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/taxablock.cpp
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/taxablock.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/taxablock.h 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/taxablock.h 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,49 @@
+#ifndef __TAXABLOCK_H
+#define __TAXABLOCK_H
+
+//
+// TaxaBlock class
+//
+class TaxaBlock : public NexusBlock
+{
+ friend class DataBlock;
+ friend class AllelesBlock;
+ friend class CharactersBlock;
+ friend class DistancesBlock;
+
+ // Adding a new data member? Don't forget to:
+ // 1. Describe it in the class header comment at the top of "taxablock.cpp"
+ // 2. Initialize it (unless it is self-initializing) in the constructor
+ // and reinitialize it in the Reset function
+ // 3. Describe the initial state in the constructor documentation
+ // 4. Delete memory allocated to it in both the destructor and Reset function
+ // 5. Report it in some way in the Report function
+
+ int ntax;
+ LabelList taxonLabels;
+
+public:
+ class nosuchtaxon {}; // exception potentially thrown by FindTaxon
+
+private:
+ void SetNtax( int n );
+
+protected:
+ void Read( NexusToken& token );
+ void Reset();
+
+public:
+ TaxaBlock();
+ virtual ~TaxaBlock();
+
+ void AddTaxonLabel( nxsstring s );
+ void ChangeTaxonLabel( int i, nxsstring s );
+ int FindTaxon( nxsstring label );
+ bool IsAlreadyDefined( nxsstring label );
+ int GetMaxTaxonLabelLength();
+ int GetNumTaxonLabels();
+ nxsstring GetTaxonLabel( int i );
+ void Report( std::ostream& out );
+};
+
+#endif
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/taxablock.h
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/treesblock.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/treesblock.cpp 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/treesblock.cpp 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,572 @@
+#include "nexusdefs.h"
+#include "xnexus.h"
+#include "nexustoken.h"
+#include "nexus.h"
+#include "taxablock.h"
+#include "treesblock.h"
+
+using namespace std;
+
+/**
+ * @class TreesBlock
+ * @file taxablock.h
+ * @file taxablock.cpp
+ * @author Paul O. Lewis
+ * @copyright Copyright © 1999. All Rights Reserved.
+ * @variable translateList [AssocList:private] storage for translation table (if any)
+ * @variable treeName [LabelList:private] storage for tree names
+ * @variable treeDescription [LabelList:private] storage for tree descriptions
+ * @variable rooted [BoolVect:private] stores information about rooting for each tree
+ * @variable ntrees [int:private] number of trees stored
+ * @see Nexus
+ * @see NexusBlock
+ * @see NexusReader
+ * @see NexusToken
+ * @see TaxaBlock
+ * @see XNexus
+ *
+ * This class handles reading and storage for the Nexus block TREES.
+ * It overrides the member functions Read and Reset, which are abstract
+ * virtual functions in the base class NexusBlock. The translation table
+ * (if one is supplied) is stored in the AssocList translateList. The
+ * tree names are stored in the LabelList treeName and the tree descriptions
+ * in the LabelList treeDescription. Information about rooting of trees
+ * is stored in the BoolVect rooted.
+ *
+ * <P> Below is a table showing the correspondence between the elements of a
+ * TREES block and the variables and member functions that can be used
+ * to access each piece of information stored.
+ *
+ * <p><table border=1>
+ * <tr>
+ * <th> Nexus command
+ * <th> Data Members
+ * <th> Member Functions
+ * <tr>
+ * <td> TRANSLATE
+ * <td> AssocList <a href="#translateList">translateList</a>
+ * <td> No access functions defined
+ * <tr>
+ * <td> TREE
+ * <td> LabelList <a href="#treeName">treeName</a>
+ * <br> BoolVect <a href="#rooted">rooted</a>
+ * <td> nxsstring <a href="#GetTreeName">GetTreeName()</a>
+ * <br> nxsstring <a href="#GetTreeDescription">GetTreeDescription()</a>
+ * <br> int <a href="#GetNumTrees">GetNumTrees()</a>
+ * <br> int <a href="#GetNumDefaultTree">GetNumDefaultTree()</a>
+ * <br> int <a href="#IsDefaultTree">IsDefaultTree()</a>
+ * <br> int <a href="#IsRootedTree">IsRootedTree()</a>
+ * </table>
+ */
+
+/**
+ * @constructor
+ *
+ * Initializes id to "TREES" and ntrees and defaultTrees to 0.
+ */
+TreesBlock::TreesBlock( TaxaBlock& tb ) : ntrees(0), defaultTree(0), taxa(tb), NexusBlock()
+{
+ id = "TREES";
+}
+
+/**
+ * @destructor
+ *
+ * Flushes translateList, rooted, and treeList.
+ */
+TreesBlock::~TreesBlock()
+{
+ translateList.erase( translateList.begin(), translateList.end() );
+ rooted.erase( rooted.begin(), rooted.end() );
+ treeName.erase( treeName.begin(), treeName.end() );
+ treeDescription.erase( treeDescription.begin(), treeDescription.end() );
+}
+
+/**
+ * @method Read [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * This function provides the ability to read everything following the block name
+ * (which is read by the Nexus object) to the end or endblock statement.
+ * Characters are read from the input stream in. Overrides the
+ * abstract virtual function in the base class.
+ */
+void TreesBlock::Read( NexusToken& token )
+{
+ isEmpty = false;
+ token.GetNextToken(); // this should be the semicolon after the block name
+ if( !token.Equals(";") ) {
+ errormsg = "Expecting ';' after TREES block name, but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ for(;;)
+ {
+ token.GetNextToken();
+
+ if( token.Equals("TRANSLATE") ) {
+
+ int numEntries = taxa.GetNumTaxonLabels();
+
+
+ // rdmp
+
+ if (numEntries == 0)
+ {
+ // Stand alone TREES block
+ do {
+ // get the key
+ token.GetNextToken();
+ nxsstring skey = token.GetToken();
+
+ // get the value
+ token.GetNextToken();
+ nxsstring sval = token.GetToken();
+
+ // add the Association object to the translate list
+ translateList[ skey ] = sval;
+
+ token.GetNextToken();
+ if (!token.Equals (";") && !token.Equals (","))
+ {
+ errormsg = "Expecting ',' or ';' in TRANSLATE command, but found ";
+ errormsg +=token.GetToken();
+ errormsg += " instead.";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ } while (!token.Equals (";"));
+ }
+ else
+ {
+
+
+
+ for( int k = 0; k < numEntries; k++ ) {
+ // create the Association
+
+ // get the key
+ token.GetNextToken();
+ nxsstring skey = token.GetToken();
+
+ // get the value
+ token.GetNextToken();
+ nxsstring sval = token.GetToken();
+
+ // add the Association object to the translate list
+ translateList[ skey ] = sval;
+
+ // this should be a comma, unless we are at the last pair, in
+ // which case it should be a semicolon
+ token.GetNextToken();
+ if( k < numEntries-1 )
+ {
+ if( !token.Equals(",") ) {
+ errormsg = "Expecting ',' to terminate each number/name pair in TRANSLATE command, but found ";
+ errormsg +=token.GetToken();
+ errormsg += " instead\nPerhaps there are fewer taxa in the tree file than in the stored data.";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ }
+ else
+ {
+ if( !token.Equals(";") ) {
+ errormsg = "Expecting ';' to terminate the TRANSLATE command, but found ";
+ errormsg +=token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ }
+
+ }
+
+ } // rdmp1c
+
+ }
+ else if( token.Equals("TREE") ) {
+
+ // this should be either an asterisk or a tree name
+ token.GetNextToken();
+ if( token.Equals("*") ) {
+ defaultTree = ntrees; // ntrees is not incremented until entire tree command has been read
+
+ // this should be tree name
+ token.GetNextToken();
+ }
+
+ // save the tree name as the key
+ nxsstring skey = token.GetToken();
+
+ // this should be an equals sign
+ token.GetNextToken();
+ if( !token.Equals("=") ) {
+ errormsg = "Expecting '=' after tree name in TREE command, but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // this should be either a tree description or a command comment specifying
+ // whether this tree is to be rooted ([&R]) or unrooted ([&U]).
+ token.SetLabileFlagBit( NexusToken::saveCommandComments );
+ token.SetLabileFlagBit( NexusToken::parentheticalToken );
+ token.SetLabileFlagBit( NexusToken::toEndOfTree );
+ token.GetNextToken();
+
+ // Paul Lewis' original code just looked for the [&R] command comment, but we want the weight as well
+ nxsstring s = token.GetToken();
+ if( s.size() < 2 ) {
+ errormsg = "Expecting command comment or tree description in TREE command, but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ while (s[0] == '&')
+ {
+ // command comment found
+ if( s[1] == 'R' || s[1] == 'r' )
+ rooted.push_back(true);
+ else if( s[1] == 'U' || s[1] == 'u' )
+ rooted.push_back(false);
+ else if (s[1] == 'W' || s[1] == 'u') // rdmp
+ {
+ // weight of tree
+ double weight = -1.0;
+
+ int pos = s.find ("/", 2);
+ nxsstring num;
+ if (pos > 0 && pos < s.length())
+ {
+ // fractional weighting
+ float numerator, denominator;
+
+ num.assign (s, 2, s.size() - pos);
+ numerator = atof( num.c_str() );
+ num.assign (s, pos + 1, s.size() - pos);
+ denominator = atof( num.c_str() );
+
+ weight = numerator / denominator;
+
+ }
+ else
+ {
+ num.assign (s, 2, s.size() - 2);
+ weight = atof( num.c_str() );
+ }
+
+ treeWeight.push_back (weight);
+
+ }
+ else {
+ errormsg = "[";
+ errormsg += token.GetToken();
+ errormsg += "] is not a valid command comment in a TREE command";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ // Get next token
+ token.SetLabileFlagBit( NexusToken::saveCommandComments );
+ token.SetLabileFlagBit( NexusToken::parentheticalToken );
+ token.SetLabileFlagBit( NexusToken::toEndOfTree );
+ token.GetNextToken();
+ if( s.size() < 2 )
+ {
+ errormsg = "Expecting command comment or tree description in TREE command, but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ s = token.GetToken();
+ }
+
+ // Tree description
+ nxsstring sval = token.GetToken();
+
+ // this should be a semicolon
+ token.GetNextToken();
+ if( !token.Equals(";") ) {
+ errormsg = "Expecting ';' to terminate the TREE command, but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+
+ ntrees++;
+ treeName.push_back( skey );
+ treeDescription.push_back( sval );
+ if( rooted.size() < ntrees )
+ rooted.push_back(false);
+
+ // rdmpc
+ if( treeWeight.size() < ntrees )
+ treeWeight.push_back(1.0);
+
+ }
+ else if( token.Equals("END") ) {
+ // get the semicolon following END
+ token.GetNextToken();
+ if( !token.Equals(";") ) {
+ errormsg = "Expecting ';' to terminate the END command, but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ break;
+ }
+ else if( token.Equals("ENDBLOCK") ) {
+ // get the semicolon following ENDBLOCK
+ token.GetNextToken();
+ if( !token.Equals(";") ) {
+ errormsg = "Expecting ';' to terminate the ENDBLOCK command, but found ";
+ errormsg += token.GetToken();
+ errormsg += " instead";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ break;
+ }
+ else {
+ SkippingCommand( token.GetToken() );
+ do {
+ token.GetNextToken();
+ } while( !token.AtEOF() && !token.Equals(";") );
+ if( token.AtEOF() ) {
+ errormsg = "Unexpected end of file encountered";
+ throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+ }
+ }
+ }
+}
+
+/**
+ * @method Reset [void:protected]
+ *
+ * Flushes treeList, translateList and rooted, and sets ntrees to 0
+ * in preparation for reading a new TREES block.
+ */
+void TreesBlock::Reset()
+{
+ isEmpty = true;
+ treeName.erase( treeName.begin(), treeName.end() );
+ treeDescription.erase( treeDescription.begin(), treeDescription.end() );
+ translateList.erase( translateList.begin(), translateList.end() );
+ rooted.erase( rooted.begin(), rooted.end() );
+ ntrees = 0;
+}
+
+/**
+ * @method GetNumDefaultTree [int:public]
+ *
+ * Returns the 0-offset index of the default tree, which will be 0 if there is
+ * only one tree stored or no trees stored. If more than one tree is stored,
+ * the default tree will be the one specifically indicated by the user
+ * (using an asterisk in the data file) to be the default tree (or 0 if the
+ * user failed to specify.
+ */
+int TreesBlock::GetNumDefaultTree()
+{
+ return defaultTree;
+}
+
+/**
+ * @method GetNumTrees [int:public]
+ *
+ * Returns the number of trees stored in this TreesBlock object.
+ */
+int TreesBlock::GetNumTrees()
+{
+ return ntrees;
+}
+
+/**
+ * @method GetTreeName [char*:public]
+ * @param i [int] the index of the tree for which the name is to be returned
+ *
+ * Returns the name of the tree stored at position i in treeList. Assumes
+ * that i will be in the range 0...ntrees-1.
+ */
+nxsstring TreesBlock::GetTreeName( int i )
+{
+ assert( i >= 0 );
+ assert( i < ntrees );
+ return treeName[i];
+//trash return treeList.GetKey(i);
+}
+
+static nxsstring& blanks_to_underscores( nxsstring& s )
+{
+ int len = s.length();
+ for( int k = 0; k < len; k++ ) {
+ if( s[k] == ' ' )
+ s[k] = '_';
+ }
+ return s;
+}
+
+/**
+ * @method GetTreeWeight [double:public]
+ * @param i [int] the index of the tree for which the weight is to be returned
+ *
+ * Returns the weight of the tree stored at position i in treeList. Assumes
+ * that i will be in the range 0...ntrees-1.
+ */
+double TreesBlock::GetTreeWeight ( int i)
+{
+ assert( i >= 0 );
+ assert( i < ntrees );
+ return treeWeight[i];
+}
+
+
+
+/**
+ * @method GetTranslatedTreeDescription [nxsstring:public]
+ * @param i [int] the index of the tree for which the description is to be returned
+ *
+ * Returns the description of the tree stored at position i in treeList. Assumes
+ * that i will be in the range 0...ntrees-1. Node numbers will be translated to
+ * names in the resulting tree description. Use GetTreeDescription if translation
+ * is not desired. When translating, blank spaces in names are converted to
+ * underscores.
+ */
+nxsstring TreesBlock::GetTranslatedTreeDescription( int i )
+{
+ assert( i >= 0 );
+ assert( i < ntrees );
+ nxsstring s = treeDescription[i];
+ nxsstring x;
+ x += s[0];
+ int slen = s.size();
+ assert( slen > 1 );
+ for( int k = 1; k < slen; k++ )
+ {
+ char prev = s[k-1];
+ char curr = s[k];
+ if( isdigit(curr) && ( prev == '(' || prev == ',' ) ) {
+ nxsstring ns;
+ ns += curr;
+ for(;;) {
+ curr = s[k+1];
+ prev = s[k++];
+ if( isdigit(curr) )
+ ns += curr;
+ else {
+ --k;
+ break;
+ }
+ }
+ nxsstring nss = translateList[ns];
+ // rdmp
+ // Hack: surround name in single quotes so that my parsing code
+ // will work. For example, we need to ensure that a name like 'a-b'
+ // is parsed correctly. Without single quotes the hyphen will
+ // generate a syntax error.
+ x += "'";
+ x += blanks_to_underscores( nss );
+ x += "'";
+ }
+ else
+ x += curr;
+ }
+ return x;
+}
+
+/**
+ * @method GetTreeDescription [nxsstring:public]
+ * @param i [int] the index of the tree for which the description is to be returned
+ *
+ * Returns the description of the tree stored at position i in treeList. Assumes
+ * that i will be in the range 0...ntrees-1.
+ */
+nxsstring TreesBlock::GetTreeDescription( int i )
+{
+ assert( i >= 0 );
+ assert( i < ntrees );
+ return treeDescription[i];
+//trash return treeList.GetValue(i);
+}
+
+/**
+ * @method IsDefaultTree [int:public]
+ * @param i [int] the index of the tree in question
+ *
+ * Returns true if the ith tree (0-offset) is the default tree, 0 otherwise.
+ * Assumes that i will be in the range 0...ntrees-1.
+ */
+int TreesBlock::IsDefaultTree( int i )
+{
+ assert( i >= 0 );
+ assert( i < ntrees );
+ if( i == GetNumDefaultTree() )
+ return 1;
+ else
+ return 0;
+}
+
+/**
+ * @method IsRootedTree [int:public]
+ * @param i [int] the index of the tree in question
+ *
+ * Returns true if the ith tree (0-offset) is rooted, 0 otherwise.
+ * Assumes that i will be in the range 0...ntrees-1.
+ */
+int TreesBlock::IsRootedTree( int i )
+{
+ assert( i >= 0 );
+ assert( i < ntrees );
+ return (int)rooted[i];
+}
+
+/**
+ * @method Report [void:public]
+ * @param out [ostream&] the output stream to which to write the report
+ *
+ * This function outputs a brief report of the contents of this taxa block.
+ * Overrides the abstract virtual function in the base class.
+ */
+void TreesBlock::Report( std::ostream& out )
+{
+ out << endl;
+ out << id << " block contains ";
+ if( ntrees == 0 ) {
+ out << "no trees" << endl;
+ }
+ else if( ntrees == 1 )
+ out << "one tree" << endl;
+ else
+ out << ntrees << " trees" << endl;
+
+ if( ntrees == 0 ) return;
+
+ for( int k = 0; k < ntrees; k++ ) {
+ out << '\t' << (k+1) << '\t' << treeName[k];
+ out << "\t(";
+ if( rooted[k] )
+ out << "rooted";
+ else
+ out << "unrooted";
+ out << ", weight = " << treeWeight[k]; // rdmp
+ if( defaultTree == k )
+ out << ",default tree)" << endl;
+ else
+ out << ')' << endl;
+ }
+}
+
+// rdmp
+// Return translated token. We need this because the code for
+// GetTranslatedTreeDescription is brain dead. It assumes
+// user will only have numbers to translate.
+// Need better testing (what happens if label is missing?).
+nxsstring TreesBlock::GetTranslatedLabel (std::string skey)
+{
+ nxsstring s (skey.c_str());
+ nxsstring result = translateList[s];
+ return result;
+}
+
+
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/treesblock.cpp
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/treesblock.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/treesblock.h 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/treesblock.h 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,51 @@
+#ifndef __TREESBLOCK_H
+#define __TREESBLOCK_H
+
+//
+// TreesBlock class
+//
+class TreesBlock : public NexusBlock
+{
+ // Adding a new data member? Don't forget to:
+ // 1. Describe it in the class header comment at the top of "treesblock.cpp"
+ // 2. Initialize it (unless it is self-initializing) in the constructor
+ // and reinitialize it in the Reset function
+ // 3. Describe the initial state in the constructor documentation
+ // 4. Delete memory allocated to it in both the destructor and Reset function
+ // 5. Report it in some way in the Report function
+
+ AssocList translateList;
+ LabelList treeName;
+ LabelList treeDescription;
+ BoolVect rooted;
+// TaxaBlock& taxa;
+ int ntrees;
+ int defaultTree;
+ std::vector <float> treeWeight;
+
+protected:
+ void Read( NexusToken& token );
+ void Reset();
+ TaxaBlock& taxa;
+
+public:
+ TreesBlock( TaxaBlock& tb );
+ virtual ~TreesBlock();
+
+ int GetNumDefaultTree();
+ int GetNumTrees();
+ nxsstring GetTreeName( int i );
+ nxsstring GetTreeDescription( int i );
+ double GetTreeWeight ( int i);
+ nxsstring GetTranslatedTreeDescription( int i );
+ bool HasTranslationTable () { return (translateList.size() > 0); };
+ int IsDefaultTree( int i );
+ int IsRootedTree( int i );
+ void Report( std::ostream& out );
+
+ // rdmp
+ // Return the translation of the token
+ nxsstring GetTranslatedLabel (std::string skey);
+};
+
+#endif
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/treesblock.h
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/xnexus.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/xnexus.cpp 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/xnexus.cpp 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,41 @@
+#include "nexusdefs.h"
+#include "xnexus.h"
+
+bool stri_equal::operator()(const nxsstring& x, const nxsstring& y) const
+{
+ nxsstring::const_iterator px = x.begin();
+ nxsstring::const_iterator py = y.begin();
+ while( px != x.end() && py != y.end() ) {
+ if( toupper(*px) != toupper(*py) ) return false;
+ ++px;
+ ++py;
+ }
+
+ return ( x.size() == y.size() ) ? true : false;
+}
+
+/**
+ * @class XNexus
+ * @file xnexus.h
+ * @file xnexus.cpp
+ * @author Paul O. Lewis
+ * @copyright Copyright © 1999. All Rights Reserved.
+ * @variable col [long:public] column of current line
+ * @variable line [long:public] current line in file
+ * @variable msg [nxsstring&:public] nxsstring to hold message
+ * @variable pos [long:public] current file position (for Metrowerks compiler, type is streampos rather than long)
+ * @see NexusReader
+ *
+ * Exception class that conveys a message specific to the problem encountered.
+ */
+
+/**
+ * @constructor
+ *
+ * Copies s to msg. Note: for Metrowerks compiler, type of pos is streampos rather than long.
+ */
+XNexus::XNexus( nxsstring s, std::streampos fp, long fl /* = 0L */, long fc /* = 0L */ )
+ : pos(fp), line(fl), col(fc)
+{
+ msg = s;
+}
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/xnexus.cpp
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/xnexus.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/xnexus.h 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/xnexus.h 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,18 @@
+#ifndef __XNEXUS_H
+#define __XNEXUS_H
+
+//
+// XNexus exception class
+//
+class XNexus
+{
+public:
+ nxsstring msg;
+ std::streampos pos;
+ long line;
+ long col;
+
+ XNexus( nxsstring s, std::streampos fp = 0, long fl = 0L, long fc = 0L );
+};
+
+#endif
Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/xnexus.h
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/tdoc.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/tdoc.cpp 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/tdoc.cpp 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,85 @@
+/*
+ * TreeView
+ * A phylogenetic tree viewer.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+ // $Id: tdoc.cpp,v 1.6 2001/07/25 10:37:06 rdmp1c Exp $
+
+#ifdef __GNUG__
+// #pragma implementation
+#endif
+
+#include "tdoc.h"
+#include "tview.h"
+
+// For compilers that support precompilation, includes "wx/wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+#pragma hdrstop
+#endif
+
+#ifndef WX_PRECOMP
+#include "wx/wx.h"
+#endif
+
+#if !wxUSE_DOC_VIEW_ARCHITECTURE
+#error You must set wxUSE_DOC_VIEW_ARCHITECTURE to 1 in setup.h!
+#endif
+
+
+IMPLEMENT_DYNAMIC_CLASS(TDocument, wxDocument)
+
+TDocument::TDocument(void)
+{
+}
+
+TDocument::~TDocument(void)
+{
+}
+
+
+
+
+// Since text windows have their own method for saving to/loading from files,
+// we override OnSave/OpenDocument instead of Save/LoadObject
+bool TDocument::OnSaveDocument(const wxString& filename)
+{
+ TView *view = (TView *)GetFirstView();
+ if (!view->WriteTrees (filename))
+ return FALSE;
+ Modify(FALSE);
+ return TRUE;
+}
+
+bool TDocument::OnOpenDocument(const wxString& filename)
+{
+ TView *view = (TView *)GetFirstView();
+ if (!view->ReadTrees (filename))
+ return FALSE;
+
+ SetFilename(filename, TRUE);
+
+ Modify(FALSE);
+ UpdateAllViews();
+ view->Activate(TRUE); // Ensures TView::OnActivate is called
+ return TRUE;
+}
+
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/tdoc.cpp
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/tdoc.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/tdoc.h 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/tdoc.h 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,57 @@
+/*
+ * TreeView
+ * A phylogenetic tree viewer.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+ // $Id: tdoc.h,v 1.4 2001/07/24 10:49:48 rdmp1c Exp $
+
+#ifdef __GNUG__
+// #pragma interface
+#endif
+
+#ifndef __DOCSAMPLEH__
+#define __DOCSAMPLEH__
+
+#include "profile.h"
+
+#include "wx/docview.h"
+
+
+
+
+
+class TDocument: public wxDocument
+{
+ DECLARE_DYNAMIC_CLASS(TDocument)
+private:
+ public:
+/*
+ ostream& SaveObject(ostream& stream);
+ istream& LoadObject(istream& stream);
+*/
+ virtual bool OnSaveDocument(const wxString& filename);
+ virtual bool OnOpenDocument(const wxString& filename);
+
+
+ TDocument(void);
+ ~TDocument(void);
+};
+
+
+#endif
Property changes on: trunk/packages/treeviewx/branches/upstream/current/tdoc.h
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/tproject.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/tproject.h 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/tproject.h 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,111 @@
+/*
+ * TreeView
+ * A phylogenetic tree viewer.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+ // $Id: tproject.h,v 1.9 2005/08/31 08:55:25 rdmp1c Exp $
+
+#ifndef TPROJECTH
+#define TPROJECTH
+
+#include "profile.h"
+
+/**
+ * @class TProject
+ * Encapsulates a profile of trees and operations on those trees. This is basically
+ * a wrapper around the Profile class, and is designed for use in GUI programs.
+ *
+ * @see Profile
+ *
+ */
+
+template <class T> class TProject
+{
+public:
+ /**
+ * Constructor
+ */
+ TProject () { CurrentTree = 0; };
+ /**
+ * Destructor
+ */
+ virtual ~TProject () {};
+ /**
+ * True if the current tree has edge lengths
+ */
+ virtual bool CurrentTreeHasEdgeLengths () { return GetCurrentTree().GetHasEdgeLengths(); };
+ /**
+ * True if the current tree has internal node labels
+ */
+ virtual bool CurrentTreeHasInternallabels () { return GetCurrentTree().GetHasInternalLabels(); };
+ /**
+ * Get the current tree object
+ * @return The tree
+ */
+
+ virtual T GetCurrentTree () { return p.GetIthTree (CurrentTree); };
+ /**
+ * Get the index of the current tree
+ * @return The index
+ */
+ virtual int GetCurrentTreeNumber () const { return CurrentTree; };
+ /**
+ * @return The number of trees in the profile
+ */
+ virtual int GetNumTrees() { return p.GetNumTrees (); };
+ /**
+ * @brief The name of the ith tree in the profile
+ *
+ * @param i the index of the tree in the range 0 - (n-1)
+ * @return The tree
+ */
+ virtual std::string GetIthTreeName (int i) { return p.GetIthTreeName (i); };
+ /**
+ * Read one or more trees from an input stream
+ * @param f an input stream
+ * @return True if trees read in successfully
+ */
+ virtual bool ReadTrees (std::istream &f) { return p.ReadTrees (f); };
+ /**
+ * Set the index of the current tree
+ * @param i the index of the tree in the range 0 - (n-1)
+ */
+ virtual void SetCurrentTreeNumber (const int i) { CurrentTree = i; };
+ /**
+ * Write trees to output stream
+ * @param f an output stream
+ * @return True if trees written successfully
+ */
+ virtual bool WriteTrees (std::ostream &f, const int format = 0, const char *endOfLine = "\n")
+ { return p.WriteTrees (f, format, endOfLine); };
+
+protected:
+ /**
+ * The index of the current tree
+ */
+ int CurrentTree;
+ /**
+ * The profile of trees
+ */
+ Profile <T> p;
+};
+
+
+
+#endif
Property changes on: trunk/packages/treeviewx/branches/upstream/current/tproject.h
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/treeorder_dialog.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/treeorder_dialog.cpp 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/treeorder_dialog.cpp 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,70 @@
+/*
+ * TreeView
+ * A phylogenetic tree viewer.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+// $Id: treeorder_dialog.cpp,v 1.2 2005/02/21 19:41:24 rdmp1c Exp $
+
+#include "treeorder_dialog.h"
+
+TreeOrderDlg::TreeOrderDlg (wxWindow *parent): wxDialog (parent, -1, wxT("Tree Order"),wxDefaultPosition, wxSize(185,185))
+{
+ // Top sizer
+ wxBoxSizer *topsizer = new wxBoxSizer( wxVERTICAL );
+
+ // Radiobuttons
+ wxString *choices = new wxString[4];
+ choices[0] = wxT("Default");
+ choices[1] = wxT("Alphabetical");
+ choices[2] = wxT("\"Ladderise\" left");
+ choices[3] = wxT("\"Ladderise\" right");
+
+ radio_buttons = new wxRadioBox (this, -1, wxT("Order"),
+ wxDefaultPosition, wxDefaultSize, 4, choices, 1, wxRA_SPECIFY_COLS);
+ topsizer->Add (radio_buttons,
+ 0,
+ wxALIGN_CENTER);
+
+ // Bottom panel has OK and Cancel buttons
+ wxBoxSizer *okcancel_sizer = new wxBoxSizer( wxHORIZONTAL );
+ wxButton *ok_button = new wxButton( this, wxID_OK, wxT("OK") );
+ ok_button->SetDefault();
+ okcancel_sizer->Add (ok_button,
+ 0,
+ wxALL,
+ 10 );
+
+ okcancel_sizer->Add(
+ new wxButton( this, wxID_CANCEL, wxT("Cancel") ),
+ 0,
+ wxALL,
+ 10 );
+
+ topsizer->Add(
+ okcancel_sizer,
+ 0,
+ wxALIGN_CENTER );
+
+ SetAutoLayout( TRUE );
+ SetSizer( topsizer );
+
+ topsizer->Fit( this );
+ topsizer->SetSizeHints( this );
+}
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/treeorder_dialog.cpp
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/treeorder_dialog.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/treeorder_dialog.h 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/treeorder_dialog.h 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,39 @@
+/*
+ * TreeView
+ * A phylogenetic tree viewer.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+// $Id: treeorder_dialog.h,v 1.2 2003/10/22 16:46:26 rdmp1c Exp $
+
+#ifndef TREEORDER_DIALOGH
+#define TREEORDER_DIALOGH
+
+#include <wx/wx.h>
+
+class TreeOrderDlg : public wxDialog
+{
+public:
+ TreeOrderDlg (wxWindow *parent);
+ int GetTreeOrder () { return radio_buttons->GetSelection(); };
+ void SetTreeOrder (int n) { radio_buttons->SetSelection(n); };
+private:
+ wxRadioBox *radio_buttons;
+};
+
+#endif
Property changes on: trunk/packages/treeviewx/branches/upstream/current/treeorder_dialog.h
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/tv.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/tv.cpp 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/tv.cpp 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,579 @@
+/*
+ * TreeView
+ * A phylogenetic tree viewer.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+ // $Id: tv.cpp,v 1.41 2005/03/23 13:30:32 rdmp1c Exp $
+
+#ifdef __GNUG__
+// #pragma implementation "docview.h"
+#endif
+
+// hack because gcc 2.95 on my Solaris box can't handle the VERSION flag passed as -DVERSION=\"0.3\"
+#ifdef VERSION
+ #define TV_VERSION VERSION
+#else
+ #define TV_VERSION "0.5.0"
+#endif
+
+/*
+ * Purpose: Document/view architecture demo for wxWindows class library - MDI
+ */
+
+
+#include "tdoc.h"
+#include "tview.h"
+
+
+// For compilers that support precompilation, includes "wx/wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+
+#ifndef WX_PRECOMP
+ #include "wx/wx.h"
+#endif
+
+#if !wxUSE_DOC_VIEW_ARCHITECTURE
+ #error You must set wxUSE_DOC_VIEW_ARCHITECTURE to 1 in setup.h!
+#endif
+
+#if !wxUSE_MDI_ARCHITECTURE
+ #error You must set wxUSE_MDI_ARCHITECTURE to 1 in setup.h!
+#endif
+
+
+
+#include <wx/toolbar.h>
+
+#if defined(__WXGTK__) || defined(__WXMOTIF__) || defined (__WXX11__)
+// For Unix use 24x24 xpm files modelled on GNOME
+// #include "mondrian.xpm"
+ #include "bitmaps/new.xpm"
+ #include "bitmaps/open.xpm"
+// #include "bitmaps/save.xpm"
+ #include "bitmaps/saveas.xpm"
+ #include "bitmaps/copy.xpm"
+// #include "bitmaps/cut.xpm"
+// #include "bitmaps/paste.xpm"
+ #include "bitmaps/print_preview.xpm"
+ #include "bitmaps/print.xpm"
+// #include "bitmaps/help.xpm"
+ #include "bitmaps/previous.xpm"
+ #include "bitmaps/next.xpm"
+ #include "bitmaps/slanttree.xpm"
+ #include "bitmaps/rectangletree.xpm"
+ #include "bitmaps/phylogram.xpm"
+ #include "bitmaps/paste.xpm"
+ #include "bitmaps/zoomin.xpm"
+ #include "bitmaps/zoomout.xpm"
+ #include "bitmaps/internal.xpm"
+
+#elif defined(__WXMAC__)
+// For MacOS we use 16x15 xpm files modelled on Windows
+ #include "bitmaps/mac/new.xpm"
+ #include "bitmaps/mac/open.xpm"
+// #include "bitmaps/save.xpm"
+ #include "bitmaps/mac/saveas.xpm"
+ #include "bitmaps/mac/copy.xpm"
+// #include "bitmaps/cut.xpm"
+// #include "bitmaps/paste.xpm"
+ #include "bitmaps/mac/print_preview.xpm"
+ #include "bitmaps/mac/print.xpm"
+// #include "bitmaps/help.xpm"
+ #include "bitmaps/mac/previous.xpm"
+ #include "bitmaps/mac/next.xpm"
+ #include "bitmaps/mac/slanttree.xpm"
+ #include "bitmaps/mac/rectangletree.xpm"
+ #include "bitmaps/mac/phylogram.xpm"
+ #include "bitmaps/mac/paste.xpm"
+ #include "bitmaps/mac/zoomin.xpm"
+ #include "bitmaps/mac/zoomout.xpm"
+ #include "bitmaps/internal.xpm"
+
+
+#endif
+
+#include "tv.h"
+
+
+#if wxUSE_DRAG_AND_DROP
+
+// Handle dropping files
+#include "wx/dnd.h"
+
+class DnDFile : public wxFileDropTarget
+{
+public:
+ DnDFile(wxDocManager *pOwner) { m_pOwner = pOwner; }
+
+ virtual bool OnDropFiles(wxCoord x, wxCoord y,
+ const wxArrayString& filenames);
+
+private:
+ wxDocManager *m_pOwner;
+};
+
+bool DnDFile::OnDropFiles(wxCoord, wxCoord, const wxArrayString& filenames)
+{
+ size_t nFiles = filenames.GetCount();
+
+ for ( size_t n = 0; n < nFiles; n++ )
+ m_pOwner->CreateDocument (filenames[n].c_str(), wxDOC_SILENT);
+
+ return TRUE;
+}
+#endif // wxUSE_DRAG_AND_DROP
+
+MyFrame *frame = (MyFrame *) NULL;
+
+IMPLEMENT_APP(MyApp)
+
+MyApp::MyApp(void)
+{
+ m_docManager = (wxDocManager *) NULL;
+}
+
+#ifdef __WXMAC__
+void MyApp::MacOpenFile(const wxString &fileName)
+{
+ m_docManager->CreateDocument (fileName, wxDOC_SILENT);
+}
+#endif
+
+bool MyApp::OnInit(void)
+{
+ // Optional command line argument is name of file to open
+#if wxUSE_UNICODE
+ wchar_t *InputFile = NULL;
+#else
+ char *InputFile = NULL;
+#endif
+ // Read input/output files
+ if (argc > 1)
+ {
+ InputFile = argv[1];
+ }
+
+ //// Create a document manager
+ m_docManager = new wxDocManager;
+
+ //// Create a template relating drawing documents to their views
+ (void) new wxDocTemplate((wxDocManager *) m_docManager, wxT("NEXUS tree file"), wxT("*.tre"), wxT(""), wxT("tre"), wxT("Tree Doc"), wxT("Tree View"),
+ CLASSINFO(TDocument), CLASSINFO(TView));
+ (void) new wxDocTemplate((wxDocManager *) m_docManager, wxT("NEXUS tree file"), wxT("*.trees"), wxT(""), wxT("trees"), wxT("Tree Doc"), wxT("Tree View"),
+ CLASSINFO(TDocument), CLASSINFO(TView));
+ (void) new wxDocTemplate((wxDocManager *) m_docManager, wxT("NEXUS file"), wxT("*.nex"), wxT(""), wxT("nex"), wxT("Tree Doc"), wxT("Tree View"),
+ CLASSINFO(TDocument), CLASSINFO(TView));
+ (void) new wxDocTemplate((wxDocManager *) m_docManager, wxT("TreeBASE"), wxT("*.acgi"), wxT(""), wxT("acgi"), wxT("Tree Doc"), wxT("Tree View"),
+ CLASSINFO(TDocument), CLASSINFO(TView));
+ (void) new wxDocTemplate((wxDocManager *) m_docManager, wxT("MrBayes consensus"), wxT("*.con"), wxT(""), wxT("con"), wxT("Tree Doc"), wxT("Tree View"),
+ CLASSINFO(TDocument), CLASSINFO(TView));
+ (void) new wxDocTemplate((wxDocManager *) m_docManager, wxT("MrBayes tree file"), wxT("*.t"), wxT(""), wxT("t"), wxT("Tree Doc"), wxT("Tree View"),
+ CLASSINFO(TDocument), CLASSINFO(TView));
+ (void) new wxDocTemplate((wxDocManager *) m_docManager, wxT("CLUSTALX tree"), wxT("*.ph"), wxT(""), wxT("ph"), wxT("Tree Doc"), wxT("Tree View"),
+ CLASSINFO(TDocument), CLASSINFO(TView));
+ (void) new wxDocTemplate((wxDocManager *) m_docManager, wxT("CLUSTALX bootstrap tree"), wxT("*.phb"), wxT(""), wxT("phb"), wxT("Tree Doc"), wxT("Tree View"),
+ CLASSINFO(TDocument), CLASSINFO(TView));
+ (void) new wxDocTemplate((wxDocManager *) m_docManager, wxT("CLUSTALX guide tree"), wxT("*.dnd"), wxT(""), wxT("dnd"), wxT("Tree Doc"), wxT("Tree View"),
+ CLASSINFO(TDocument), CLASSINFO(TView));
+ (void) new wxDocTemplate((wxDocManager *) m_docManager, wxT("PHYLIP tree"), wxT("*.*"), wxT(""), wxT(""), wxT("Tree Doc"), wxT("Tree View"),
+ CLASSINFO(TDocument), CLASSINFO(TView));
+ (void) new wxDocTemplate((wxDocManager *) m_docManager, wxT("Any document"), wxT("*"), wxT(""), wxT(""), wxT("Tree Doc"), wxT("Tree View"),
+ CLASSINFO(TDocument), CLASSINFO(TView));
+
+ //// Create the main frame window
+#ifdef __WXMAC__
+ // Create the frame window off screen (5000, 5000) so we don't see it.
+ frame = new MyFrame((wxDocManager *) m_docManager, (wxFrame *) NULL, (const wxString) wxT("Toolbar"),
+ wxPoint(5000,5000), wxSize(400, 400),
+ wxDEFAULT_FRAME_STYLE);
+#else
+ frame = new MyFrame((wxDocManager *) m_docManager, (wxFrame *) NULL, (const wxString) wxT("TreeViewX"),
+ wxPoint(0, 0), wxSize(500, 400), wxDEFAULT_FRAME_STYLE);
+#endif
+
+ //// Give it an icon (this is ignored in MDI mode: uses resources)
+#ifdef __WXMSW__
+ frame->SetIcon(wxIcon("app")); // use the name of the icon in the resource file
+#endif
+#if defined(__WXGTK__) || defined(__WXMOTIF__)
+ frame->SetIcon(wxIcon(wxT("bitmaps/treeview.xbm")));
+#endif
+
+#ifdef __WXMAC__
+ wxApp::s_macAboutMenuItemId = DOCVIEW_ABOUT;
+#endif
+
+ //// Make a menubar
+ wxMenu *file_menu = new wxMenu;
+ wxMenu *edit_menu = (wxMenu *) NULL;
+
+ file_menu->Append(wxID_NEW, wxT("&New...\tCtrl-N"));
+ file_menu->Append(wxID_OPEN, wxT("&Open...\tCtrl-O"));
+
+#ifndef __WXMAC__
+ file_menu->AppendSeparator();
+ file_menu->Append(wxID_EXIT, wxT("E&xit\tAlt-X"));
+#endif
+
+ // A nice touch: a history of files visited. Use this menu.
+ m_docManager->FileHistoryUseMenu(file_menu);
+
+ wxMenu *help_menu = new wxMenu;
+ help_menu->Append(DOCVIEW_ABOUT, wxT("&About\tF1"));
+
+ wxMenuBar *menu_bar = new wxMenuBar;
+
+ menu_bar->Append(file_menu, wxT("&File"));
+ if (edit_menu)
+ menu_bar->Append(edit_menu, wxT("&Edit"));
+ menu_bar->Append(help_menu, wxT("&Help"));
+
+ //// Associate the menu bar with the frame
+ frame->SetMenuBar(menu_bar);
+
+ // Application window status bar
+ frame->CreateStatusBar();
+
+#if wxUSE_DRAG_AND_DROP
+ // Frame window is a drop target
+ frame->SetDropTarget(new DnDFile(m_docManager));
+#endif
+
+#ifndef __WXMAC__
+ // If we don't centre the frame we don't see the it under MacOS X (which is good because
+ // the MDI model on the Mac should not show a frame).
+ frame->Centre(wxBOTH);
+#endif
+ frame->Show(TRUE);
+
+ SetTopWindow(frame);
+
+ // Open file passed on command line
+ if (InputFile)
+ m_docManager->CreateDocument (InputFile, wxDOC_SILENT);
+
+ return TRUE;
+}
+
+int MyApp::OnExit(void)
+{
+ delete m_docManager;
+ return 0;
+}
+
+/*
+ * Centralised code for creating a document frame.
+ * Called from view.cpp, when a view is created.
+ */
+
+wxMDIChildFrame *MyApp::CreateChildFrame(wxDocument *doc, wxView *view, bool isCanvas)
+{
+ //// Make a child frame
+ wxDocMDIChildFrame *subframe = new wxDocMDIChildFrame(doc, view, GetMainFrame(), -1, wxT("Child Frame"),
+ wxPoint(10, 10), wxSize(300, 300), wxDEFAULT_FRAME_STYLE);
+
+#ifdef __WXMSW__
+ subframe->SetIcon(wxString("doc"));
+#endif
+#ifdef __X__
+ subframe->SetIcon(wxIcon("bitmaps/doc.xbm"));
+#endif
+
+ //// Make a menubar
+ wxMenu *file_menu = new wxMenu;
+
+ file_menu->Append(wxID_NEW, wxT("&New...\tCtrl-N"));
+ file_menu->Append(wxID_OPEN, wxT("&Open...\tCtrl-O"));
+ file_menu->Append(wxID_CLOSE, wxT("&Close\tCtrl-W"));
+ file_menu->Append(wxID_SAVE, wxT("&Save\tCtrl-S"));
+ file_menu->Append(wxID_SAVEAS, wxT("Save &As...\tShift-Ctrl-S"));
+
+ if (isCanvas)
+ {
+#ifdef __WXMSW__
+ file_menu->AppendSeparator();
+ file_menu->Append(SAVEAS_PICTURE_CMD, "Save As Picture..."), wxT("Save picture of tree to metafile");
+#else
+ #ifdef USE_SVG
+ file_menu->AppendSeparator();
+ file_menu->Append(SAVEAS_PICTURE_CMD, "Save As Picture..."), wxT("Save picture of tree to SVG file");
+ #endif
+#endif
+ file_menu->AppendSeparator();
+ file_menu->Append(wxID_PRINT, wxT("&Print...\tCtrl-P"));
+ file_menu->Append(wxID_PRINT_SETUP, wxT("Page &Setup...\tShift-Ctrl-P"));
+ file_menu->Append(wxID_PREVIEW, wxT("Print Pre&view"));
+ }
+
+#ifndef __WXMAC__
+ file_menu->AppendSeparator();
+ file_menu->Append(wxID_EXIT, wxT("E&xit"));
+#endif
+
+ wxMenu *edit_menu = (wxMenu *) NULL;
+
+ edit_menu = new wxMenu;
+ edit_menu->Append(wxID_UNDO, wxT("&Undo\tCtrl-Z"));
+ edit_menu->Append(wxID_REDO, wxT("&Redo\tShift-Ctrl-Z"));
+ edit_menu->AppendSeparator();
+ edit_menu->Append(wxID_CUT, wxT("Cu&t\tCtrl+X"));
+ edit_menu->Append(wxID_COPY, wxT("&Copy\tCtrl+C"), wxT("Copy tree picture to clipboard"));
+ edit_menu->Append(COPY_AS_TEXT_CMD, wxT("&Copy As Text"), wxT("Copy tree description to clipboard"));
+ edit_menu->Append(wxID_PASTE, wxT("&Paste\tCtrl+V"), wxT("Paste tree from clipboard"));
+ edit_menu->Append(wxID_CLEAR, wxT("&Delete"));
+
+ edit_menu->Enable (wxID_UNDO, FALSE);
+ edit_menu->Enable (wxID_REDO, FALSE);
+ edit_menu->Enable (wxID_CUT, FALSE);
+ edit_menu->Enable (wxID_COPY, FALSE);
+ edit_menu->Enable (COPY_AS_TEXT_CMD, FALSE);
+ edit_menu->Enable (wxID_PASTE, FALSE);
+ edit_menu->Enable (wxID_CLEAR, FALSE);
+
+ wxMenu *tree_menu = (wxMenu *) NULL;
+
+ if (isCanvas)
+ {
+ tree_menu = new wxMenu;
+ // These next three items are checkable
+ tree_menu->Append(SLANTED_TREE_CMD, wxT("&Slanted Cladogram"), wxT("Draw tree as a slanted cladogram"), TRUE);
+ tree_menu->Append(RECTANGULAR_TREE_CMD, wxT("&Rectangular Cladogram"), wxT("Draw tree as a rectangular cladogram"), TRUE);
+ tree_menu->Append(PHYLOGRAM_CMD, wxT("&Phylogram"), wxT("Draw tree as a phylogram"), TRUE);
+ tree_menu->AppendSeparator();
+ tree_menu->Append(INTERNAL_LABELS_CMD, wxT("&Show internal node labels"), wxT("Show internal node labels"), TRUE);
+ tree_menu->Append(LEAF_FONT_CMD, wxT("&Leaf Font..."), wxT("Set font for displaying leaves"));
+ tree_menu->AppendSeparator();
+ tree_menu->Append(CHOOSE_TREE_CMD, wxT("&Choose tree..."), wxT("Choose a tree"));
+ tree_menu->AppendSeparator();
+ tree_menu->Append(ORDER_TREE_CMD, wxT("&Order tree..."), wxT("Order the tree"));
+ tree_menu->AppendSeparator();
+ tree_menu->Append(ZOOM_IN_CMD, wxT("Zoom in\tCtrl+["), wxT("Zoom in"));
+ tree_menu->Append(ZOOM_OUT_CMD, wxT("Zoom out\tCtrl+]"), wxT("Zoom out"));
+ tree_menu->Append(ZOOM_TO_FIT_CMD, wxT("Zoom to fit"), wxT("View whole tree"));
+ }
+
+ wxMenu *help_menu = new wxMenu;
+
+ help_menu->Append(DOCVIEW_ABOUT, wxT("&About"));
+
+ wxMenuBar *menu_bar = new wxMenuBar;
+
+ menu_bar->Append(file_menu, wxT("&File"));
+ menu_bar->Append(edit_menu, wxT("&Edit"));
+ if (isCanvas)
+ menu_bar->Append(tree_menu, wxT("&Trees"));
+ menu_bar->Append(help_menu, wxT("&Help"));
+
+ //// Associate the menu bar with the frame
+ subframe->SetMenuBar(menu_bar);
+
+#if defined(__WXMSW__) || defined(__WXMAC__)
+ // Status bar for the view window
+ subframe->CreateStatusBar();
+#endif
+
+#ifdef __WXMAC__
+ // Create a toolbar in the view window
+ subframe->CreateToolBar(wxNO_BORDER | wxTB_FLAT | wxTB_HORIZONTAL);
+ frame->InitToolBar(subframe->GetToolBar());
+#endif
+
+
+ return subframe;
+}
+
+/*
+ * This is the top-level window of the application.
+ */
+
+IMPLEMENT_CLASS(MyFrame, wxDocMDIParentFrame)
+BEGIN_EVENT_TABLE(MyFrame, wxDocMDIParentFrame)
+ EVT_MENU(DOCVIEW_ABOUT, MyFrame::OnAbout)
+END_EVENT_TABLE()
+
+MyFrame::MyFrame(wxDocManager *manager, wxFrame *frame, const wxString& title,
+ const wxPoint& pos, const wxSize& size, long type):
+ wxDocMDIParentFrame(manager, frame, -1, title, pos, size, type, wxT("myFrame"))
+{
+// editMenu = (wxMenu *) NULL;
+
+ // Toolbar
+ CreateToolBar(wxNO_BORDER | wxTB_FLAT | wxTB_HORIZONTAL);
+ InitToolBar(GetToolBar());
+
+
+ // Accelerators
+ wxAcceleratorEntry entries[3];
+ entries[0].Set(wxACCEL_CTRL, (int) 'N', wxID_NEW);
+ entries[1].Set(wxACCEL_CTRL, (int) 'O', wxID_OPEN);
+ entries[2].Set(wxACCEL_CTRL, (int) 'X', wxID_EXIT);
+ wxAcceleratorTable accel(3, entries);
+ SetAcceleratorTable(accel);
+
+}
+
+#ifdef __WXMSW__
+ #define NUM_BITMAPS 15
+#else
+ #define NUM_BITMAPS 15
+#endif
+
+void MyFrame::InitToolBar(wxToolBar* toolBar)
+{
+ wxBitmap* bitmaps[NUM_BITMAPS];
+
+ #ifdef __WXMSW__
+ bitmaps[0] = new wxBitmap("open", wxBITMAP_TYPE_RESOURCE);
+ bitmaps[1] = new wxBitmap("saveas", wxBITMAP_TYPE_RESOURCE);
+ bitmaps[2] = new wxBitmap("copy", wxBITMAP_TYPE_RESOURCE);
+ bitmaps[3] = new wxBitmap("print_preview", wxBITMAP_TYPE_RESOURCE);
+ bitmaps[4] = new wxBitmap("print", wxBITMAP_TYPE_RESOURCE);
+ bitmaps[5] = new wxBitmap("previous", wxBITMAP_TYPE_RESOURCE);
+ bitmaps[6] = new wxBitmap("next", wxBITMAP_TYPE_RESOURCE);
+ bitmaps[7] = new wxBitmap("slanttree", wxBITMAP_TYPE_RESOURCE);
+ bitmaps[8] = new wxBitmap("rectangletree", wxBITMAP_TYPE_RESOURCE);
+ bitmaps[9] = new wxBitmap("phylogram", wxBITMAP_TYPE_RESOURCE);
+ bitmaps[10] = new wxBitmap("paste", wxBITMAP_TYPE_RESOURCE);
+ bitmaps[11] = new wxBitmap("new", wxBITMAP_TYPE_RESOURCE);
+ bitmaps[12] = new wxBitmap("zoomin", wxBITMAP_TYPE_RESOURCE);
+ bitmaps[13] = new wxBitmap("zoomout", wxBITMAP_TYPE_RESOURCE);
+ bitmaps[14] = new wxBitmap("internal", wxBITMAP_TYPE_RESOURCE);
+ #else
+ bitmaps[0] = new wxBitmap( open_xpm );
+ bitmaps[1] = new wxBitmap( saveas_xpm );
+ bitmaps[2] = new wxBitmap( copy_xpm );
+ bitmaps[3] = new wxBitmap( print_preview_xpm );
+ bitmaps[4] = new wxBitmap( print_xpm );
+ bitmaps[5] = new wxBitmap( previous_xpm );
+ bitmaps[6] = new wxBitmap( next_xpm );
+ bitmaps[7] = new wxBitmap( slanttree_xpm );
+ bitmaps[8] = new wxBitmap( rectangletree_xpm );
+ bitmaps[9] = new wxBitmap( phylogram_xpm );
+ bitmaps[10] = new wxBitmap( paste_xpm);
+ bitmaps[11] = new wxBitmap( new_xpm);
+ bitmaps[12] = new wxBitmap( zoomin_xpm);
+ bitmaps[13] = new wxBitmap( zoomout_xpm);
+ bitmaps[14] = new wxBitmap( internal_xpm);
+ #endif
+
+#ifdef __WXMSW__
+ int width = 24;
+#else
+ int width = 16;
+#endif
+ int currentX = 5;
+
+#ifdef __WXMAC__
+ // The toolbar for the Mac is associated with each document window, not the MDI frame,
+ // so we don't display Open and Save as buttons
+#else
+ toolBar->AddTool( wxID_NEW, *(bitmaps[11]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, wxT("New document"));
+ currentX += width + 5;
+ toolBar->AddTool( wxID_OPEN, *(bitmaps[0]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, wxT("Open document"));
+ currentX += width + 5;
+ toolBar->AddTool(wxID_SAVEAS, *bitmaps[1], wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, wxT("Save document"));
+ currentX += width + 5;
+#endif
+ toolBar->AddTool(wxID_COPY, *bitmaps[2], wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, wxT("Copy tree to clipboard"));
+ currentX += width + 5;
+ toolBar->AddTool(wxID_PASTE, *bitmaps[10], wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, wxT("Paste tree descriiption from clipboard"));
+ currentX += width + 5;
+ // --
+ toolBar->AddSeparator();
+ toolBar->AddTool(wxID_PREVIEW, *bitmaps[3], wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, wxT("Print preview"));
+ toolBar->AddTool(wxID_PRINT, *bitmaps[4], wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, wxT("Print"));
+ //--
+ toolBar->AddSeparator();
+ toolBar->AddTool(PREVIOUS_TREE_CMD, *bitmaps[5], wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, wxT("Previous tree"));
+ toolBar->AddTool(NEXT_TREE_CMD, *bitmaps[6], wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, wxT("Next tree"));
+ //--
+ toolBar->AddSeparator();
+ toolBar->AddTool(SLANTED_TREE_CMD, *bitmaps[7], wxNullBitmap, TRUE, currentX, -1, (wxObject *) NULL, wxT("Slanted cladogram"));
+ toolBar->AddTool(RECTANGULAR_TREE_CMD, *bitmaps[8], wxNullBitmap, TRUE, currentX, -1, (wxObject *) NULL, wxT("Rectangular cladogram"));
+ toolBar->AddTool(PHYLOGRAM_CMD, *bitmaps[9], wxNullBitmap, TRUE, currentX, -1, (wxObject *) NULL, wxT("Phylogram"));
+ //--
+ toolBar->AddSeparator();
+ toolBar->AddTool(INTERNAL_LABELS_CMD, *bitmaps[14], wxNullBitmap, TRUE, currentX, -1, (wxObject *) NULL, wxT("Show internal node labels"));
+ //--
+ toolBar->AddSeparator();
+ toolBar->AddTool(ZOOM_IN_CMD, *bitmaps[12], wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, wxT("Zoom in"));
+ toolBar->AddTool(ZOOM_OUT_CMD, *bitmaps[13], wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, wxT("Zoom out"));
+
+ toolBar->Realize();
+
+ toolBar->EnableTool (wxID_COPY, false);
+ toolBar->EnableTool (wxID_PASTE, false);
+ toolBar->EnableTool (PREVIOUS_TREE_CMD, false);
+ toolBar->EnableTool (NEXT_TREE_CMD, false);
+ toolBar->EnableTool (PREVIOUS_TREE_CMD, false);
+ toolBar->EnableTool (SLANTED_TREE_CMD, false);
+ toolBar->EnableTool (RECTANGULAR_TREE_CMD, false);
+ toolBar->EnableTool (PHYLOGRAM_CMD, false);
+ toolBar->EnableTool (ZOOM_IN_CMD, false);
+ toolBar->EnableTool (ZOOM_OUT_CMD, false);
+ toolBar->EnableTool (INTERNAL_LABELS_CMD, false);
+
+ for (int i = 0; i < NUM_BITMAPS; i++)
+ delete bitmaps[i];
+}
+
+void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event) )
+{
+ wxString msg;
+ msg = wxT("TreeViewX ");
+ msg += wxT("Version ");
+ msg += wxT(TV_VERSION);
+ msg += wxT("\n\nby Roderic D. M. Page (r.page at bio.gla.ac.uk)");
+ msg += wxT("\n\nBuilt using ");
+ msg += wxVERSION_STRING;
+ msg += wxT(" for ");
+#ifdef __WXMAC__
+ msg += wxT("Macintosh");
+#else
+ msg += wxGetOsDescription();
+#endif
+ (void)wxMessageBox(msg, wxT("About TreeViewX"));
+}
+
+// Creates a canvas. Called from view.cpp when a new drawing
+// view is created.
+MyCanvas *MyFrame::CreateCanvas(wxView *view, wxMDIChildFrame *parent)
+{
+ int width, height;
+ parent->GetClientSize(&width, &height);
+
+ // Non-retained canvas
+ MyCanvas *canvas = new MyCanvas(view, parent, wxPoint(0, 0), wxSize(width, height), 0);
+ // canvas->SetCursor(wxCursor(wxCURSOR_PENCIL));
+
+ // Give it scrollbars
+ canvas->SetScrollbars(0, 0, 0, 0);
+
+ return canvas;
+}
+
+MyFrame *GetMainFrame(void)
+{
+ return frame;
+}
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/tv.cpp
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/tv.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/tv.h 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/tv.h 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,79 @@
+/*
+ * TreeView
+ * A phylogenetic tree viewer.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+ // $Id: tv.h,v 1.4 2004/08/05 15:55:26 rdmp1c Exp $
+
+ #ifdef __GNUG__
+// #pragma interface "docview.h"
+#endif
+
+#ifndef __DOCVIEWSAMPLEH__
+#define __DOCVIEWSAMPLEH__
+
+#include "wx/docmdi.h"
+
+class wxDocManager;
+
+// Define a new application
+class MyApp: public wxApp
+{
+public:
+ MyApp(void);
+ bool OnInit(void);
+ int OnExit(void);
+
+ wxMDIChildFrame *CreateChildFrame(wxDocument *doc, wxView *view, bool isCanvas);
+
+#ifdef __WXMAC__
+ virtual void MacOpenFile(const wxString &fileName);
+#endif
+
+protected:
+ wxDocManager* m_docManager;
+};
+
+DECLARE_APP(MyApp)
+
+// Define a new frame
+class MyCanvas;
+class MyFrame: public wxDocMDIParentFrame
+{
+ DECLARE_CLASS(MyFrame)
+ public:
+// wxMenu *editMenu;
+
+ MyFrame(wxDocManager *manager, wxFrame *frame, const wxString& title, const wxPoint& pos, const wxSize& size,
+ long type);
+ void InitToolBar(wxToolBar* toolBar);
+ void OnAbout(wxCommandEvent& event);
+ MyCanvas *CreateCanvas(wxView *view, wxMDIChildFrame *parent);
+
+DECLARE_EVENT_TABLE()
+};
+
+extern MyFrame *GetMainFrame(void);
+
+#define DOCVIEW_CUT 1
+#define DOCVIEW_ABOUT 2
+
+extern bool singleWindowMode;
+
+#endif
Property changes on: trunk/packages/treeviewx/branches/upstream/current/tv.h
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/tv.pbproj/project.pbxproj
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/tv.pbproj/project.pbxproj 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/tv.pbproj/project.pbxproj 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,1453 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 38;
+ objects = {
+ 0249A665FF388DC511CA2CEA = {
+ isa = PBXApplicationReference;
+ path = "TreeView X.app";
+ refType = 3;
+ };
+ 0249A669FF388E3911CA2CEA = {
+ isa = PBXFileReference;
+ name = "libstdc++.a";
+ path = "/usr/lib/libstdc++.a";
+ refType = 0;
+ };
+ 0249A66AFF388E3911CA2CEA = {
+ fileRef = 0249A669FF388E3911CA2CEA;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+//020
+//021
+//022
+//023
+//024
+//040
+//041
+//042
+//043
+//044
+ 04313892FE3035C9C02AAC07 = {
+ buildActionMask = 2147483647;
+ files = (
+ B3D725A407EF0F1600D12E3F,
+ );
+ isa = PBXRezBuildPhase;
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+//040
+//041
+//042
+//043
+//044
+//050
+//051
+//052
+//053
+//054
+ 05952DFCFFF02D1B11CA0E50 = {
+ buildRules = (
+ );
+ buildSettings = {
+ COPY_PHASE_STRIP = NO;
+ OPTIMIZATION_CFLAGS = "-O0";
+ };
+ isa = PBXBuildStyle;
+ name = Development;
+ };
+ 05952DFDFFF02D1B11CA0E50 = {
+ buildRules = (
+ );
+ buildSettings = {
+ COPY_PHASE_STRIP = YES;
+ };
+ isa = PBXBuildStyle;
+ name = Deployment;
+ };
+//050
+//051
+//052
+//053
+//054
+//060
+//061
+//062
+//063
+//064
+ 0640BAA4FFF0323A11CA0E50 = {
+ isa = PBXFrameworkReference;
+ name = ApplicationServices.framework;
+ path = /System/Library/Frameworks/ApplicationServices.framework;
+ refType = 0;
+ };
+ 0640BAA5FFF0323A11CA0E50 = {
+ isa = PBXFrameworkReference;
+ name = CoreServices.framework;
+ path = /System/Library/Frameworks/CoreServices.framework;
+ refType = 0;
+ };
+//060
+//061
+//062
+//063
+//064
+//190
+//191
+//192
+//193
+//194
+ 195DF8C9FE9D4F0611CA2CBB = {
+ children = (
+ 0249A665FF388DC511CA2CEA,
+ );
+ isa = PBXGroup;
+ name = Products;
+ refType = 4;
+ };
+//190
+//191
+//192
+//193
+//194
+//200
+//201
+//202
+//203
+//204
+ 20286C28FDCF999611CA2CEA = {
+ buildStyles = (
+ 05952DFCFFF02D1B11CA0E50,
+ 05952DFDFFF02D1B11CA0E50,
+ );
+ hasScannedForEncodings = 1;
+ isa = PBXProject;
+ mainGroup = 20286C29FDCF999611CA2CEA;
+ projectDirPath = "";
+ targets = (
+ 20286C34FDCF999611CA2CEA,
+ );
+ };
+ 20286C29FDCF999611CA2CEA = {
+ children = (
+ F51C3E0A03C77CB501E7B49E,
+ F51C3DDC03C77A2301E7B49E,
+ 20286C2AFDCF999611CA2CEA,
+ 20286C2CFDCF999611CA2CEA,
+ 20286C32FDCF999611CA2CEA,
+ 195DF8C9FE9D4F0611CA2CBB,
+ );
+ isa = PBXGroup;
+ name = "«PROJECTNAME»";
+ path = "";
+ refType = 4;
+ };
+ 20286C2AFDCF999611CA2CEA = {
+ children = (
+ F53CB89103CB2010012A40F8,
+ F51C3E4B03C77F0C01E7B49E,
+ F51C3E4C03C77F0C01E7B49E,
+ F51C3E4D03C77F0C01E7B49E,
+ F51C3E4E03C77F0C01E7B49E,
+ F51C3E4F03C77F0C01E7B49E,
+ F51C3E5003C77F0C01E7B49E,
+ F51C3E5103C77F0C01E7B49E,
+ );
+ isa = PBXGroup;
+ name = Sources;
+ path = "";
+ refType = 4;
+ };
+ 20286C2CFDCF999611CA2CEA = {
+ children = (
+ F5E2F10005F77C4601A80003,
+ F5E2F10505F7EAD201A80003,
+ F5E2F10605F7EAD201A80003,
+ B3D725A307EF0F1600D12E3F,
+ );
+ isa = PBXGroup;
+ name = Resources;
+ path = "";
+ refType = 4;
+ };
+ 20286C32FDCF999611CA2CEA = {
+ children = (
+ 20286C33FDCF999611CA2CEA,
+ 0249A669FF388E3911CA2CEA,
+ 0640BAA4FFF0323A11CA0E50,
+ 0640BAA5FFF0323A11CA0E50,
+ F5E2F0FE05F777E801A80003,
+ B3D725A507EF0F4D00D12E3F,
+ B3D725A607EF0F4D00D12E3F,
+ B3D725A707EF0F4D00D12E3F,
+ B3D725A807EF0F4D00D12E3F,
+ B3D725A907EF0F4D00D12E3F,
+ B3D725AA07EF0F4D00D12E3F,
+ B3D725AB07EF0F4D00D12E3F,
+ B3D725AC07EF0F4D00D12E3F,
+ B3D725AD07EF0F4D00D12E3F,
+ B3D725AE07EF0F4D00D12E3F,
+ B3D725B907EF198700D12E3F,
+ B3D725BB07EF19DC00D12E3F,
+ );
+ isa = PBXGroup;
+ name = "External Frameworks and Libraries";
+ path = "";
+ refType = 4;
+ };
+ 20286C33FDCF999611CA2CEA = {
+ isa = PBXFrameworkReference;
+ name = Carbon.framework;
+ path = /System/Library/Frameworks/Carbon.framework;
+ refType = 0;
+ };
+ 20286C34FDCF999611CA2CEA = {
+ buildPhases = (
+ 20286C35FDCF999611CA2CEA,
+ 20286C36FDCF999611CA2CEA,
+ 20286C38FDCF999611CA2CEA,
+ 20286C3BFDCF999611CA2CEA,
+ 04313892FE3035C9C02AAC07,
+ );
+ buildSettings = {
+ FRAMEWORK_SEARCH_PATHS = /usr/local/lib;
+ HEADER_SEARCH_PATHS = "TreeLib/gport /usr/local/lib/wx/include/mac-ansi-release-static-2.5 /usr/local/include/wx-2.5";
+ INSTALL_PATH = "$(HOME)/Applications";
+ LIBRARY_SEARCH_PATHS = /usr/local/lib;
+ OTHER_CFLAGS = "-Wno-deprecated -D__WXMAC__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -DUSE_WXWINDOWS -DNO_GCC_PRAGMA";
+ OTHER_LDFLAGS = "";
+ OTHER_REZFLAGS = Carbon.r;
+ PRODUCT_NAME = "TreeView X";
+ SECTORDER_FLAGS = "";
+ WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas";
+ WRAPPER_EXTENSION = app;
+ };
+ dependencies = (
+ );
+ isa = PBXApplicationTarget;
+ name = tv;
+ productInstallPath = "$(HOME)/Applications";
+ productName = "«PROJECTNAME»";
+ productReference = 0249A665FF388DC511CA2CEA;
+ productSettingsXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
+<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
+<plist version=\"1.0\">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundleDocumentTypes</key>
+ <array>
+ <dict>
+ <key>CFBundleTypeExtensions</key>
+ <array>
+ <string>tre</string>
+ </array>
+ <key>CFBundleTypeIconFile</key>
+ <string>doc.icns</string>
+ <key>CFBundleTypeName</key>
+ <string>TreeViewX document</string>
+ <key>CFBundleTypeOSTypes</key>
+ <array>
+ <string>TEXT</string>
+ </array>
+ <key>CFBundleTypeRole</key>
+ <string>Viewer</string>
+ </dict>
+ </array>
+ <key>CFBundleExecutable</key>
+ <string>TreeView X</string>
+ <key>CFBundleGetInfoString</key>
+ <string>TreeView X (c) 2004 Roderic D. M. Page</string>
+ <key>CFBundleIconFile</key>
+ <string>app.icns</string>
+ <key>CFBundleIdentifier</key>
+ <string>uk.ac.gla.zoology.treeviewx</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>TreeView X</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleShortVersionString</key>
+ <string>0.4.1</string>
+ <key>CFBundleSignature</key>
+ <string>TreX</string>
+ <key>CFBundleVersion</key>
+ <string>0.5.0</string>
+ <key>CSResourcesFileMapped</key>
+ <true/>
+</dict>
+</plist>
+";
+ };
+ 20286C35FDCF999611CA2CEA = {
+ buildActionMask = 2147483647;
+ files = (
+ F51C3DF203C77A7801E7B49E,
+ F51C3DF303C77A7801E7B49E,
+ F51C3DF403C77A7801E7B49E,
+ F51C3DF503C77A7801E7B49E,
+ F51C3DF603C77A7801E7B49E,
+ F51C3DF703C77A7801E7B49E,
+ F51C3DF803C77A7801E7B49E,
+ F51C3DF903C77A7801E7B49E,
+ F51C3E0703C77AF401E7B49E,
+ F51C3E2B03C77CE101E7B49E,
+ F51C3E2C03C77CE101E7B49E,
+ F51C3E2D03C77CE101E7B49E,
+ F51C3E2E03C77CE101E7B49E,
+ F51C3E2F03C77CE101E7B49E,
+ F51C3E3003C77CE101E7B49E,
+ F51C3E3103C77CE101E7B49E,
+ F51C3E3203C77CE101E7B49E,
+ F51C3E3303C77CE101E7B49E,
+ F51C3E3403C77CE101E7B49E,
+ F51C3E3503C77CE101E7B49E,
+ F51C3E3603C77CE101E7B49E,
+ F51C3E3703C77CE101E7B49E,
+ F51C3E3803C77CE101E7B49E,
+ F51C3E3903C77CE101E7B49E,
+ F51C3E3A03C77CE101E7B49E,
+ F51C3E5203C77F0C01E7B49E,
+ F51C3E5403C77F0C01E7B49E,
+ F51C3E5503C77F0C01E7B49E,
+ F53CB88903CB0666012A40F8,
+ F53CB88B03CB09B3012A40F8,
+ F5E2F10A05F7EFFC01A80003,
+ );
+ isa = PBXHeadersBuildPhase;
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 20286C36FDCF999611CA2CEA = {
+ buildActionMask = 2147483647;
+ files = (
+ F5E2F10705F7EAD201A80003,
+ F5E2F10805F7EAD201A80003,
+ );
+ isa = PBXResourcesBuildPhase;
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 20286C38FDCF999611CA2CEA = {
+ buildActionMask = 2147483647;
+ files = (
+ F51C3DFC03C77A7801E7B49E,
+ F51C3DFD03C77A7801E7B49E,
+ F51C3DFE03C77A7801E7B49E,
+ F51C3DFF03C77A7801E7B49E,
+ F51C3E0003C77A7801E7B49E,
+ F51C3E0103C77A7801E7B49E,
+ F51C3E0203C77A7801E7B49E,
+ F51C3E3B03C77CE101E7B49E,
+ F51C3E3C03C77CE101E7B49E,
+ F51C3E3D03C77CE101E7B49E,
+ F51C3E3E03C77CE101E7B49E,
+ F51C3E3F03C77CE101E7B49E,
+ F51C3E4003C77CE101E7B49E,
+ F51C3E4103C77CE101E7B49E,
+ F51C3E4203C77CE101E7B49E,
+ F51C3E4303C77CE101E7B49E,
+ F51C3E4403C77CE101E7B49E,
+ F51C3E4503C77CE101E7B49E,
+ F51C3E4603C77CE101E7B49E,
+ F51C3E4703C77CE101E7B49E,
+ F51C3E4803C77CE101E7B49E,
+ F51C3E4903C77CE101E7B49E,
+ F51C3E4A03C77CE101E7B49E,
+ F51C3E5603C77F0C01E7B49E,
+ F51C3E5703C77F0C01E7B49E,
+ F5FAAF5503C9DF66011CDE4E,
+ F53CB88F03CB0A26012A40F8,
+ );
+ isa = PBXSourcesBuildPhase;
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 20286C3BFDCF999611CA2CEA = {
+ buildActionMask = 2147483647;
+ files = (
+ 20286C3CFDCF999611CA2CEA,
+ 0249A66AFF388E3911CA2CEA,
+ B3D725AF07EF0F4D00D12E3F,
+ B3D725B007EF0F4D00D12E3F,
+ B3D725B107EF0F4D00D12E3F,
+ B3D725B207EF0F4D00D12E3F,
+ B3D725B307EF0F4D00D12E3F,
+ B3D725B407EF0F4D00D12E3F,
+ B3D725B507EF0F4D00D12E3F,
+ B3D725B607EF0F4D00D12E3F,
+ B3D725B707EF0F4D00D12E3F,
+ B3D725B807EF0F4D00D12E3F,
+ B3D725BA07EF198700D12E3F,
+ B3D725BC07EF19DC00D12E3F,
+ );
+ isa = PBXFrameworksBuildPhase;
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 20286C3CFDCF999611CA2CEA = {
+ fileRef = 20286C33FDCF999611CA2CEA;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+//200
+//201
+//202
+//203
+//204
+//B30
+//B31
+//B32
+//B33
+//B34
+ B3D725A307EF0F1600D12E3F = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = "libwx_mac-2.5.4.r";
+ path = "/usr/local/lib/libwx_mac-2.5.4.r";
+ refType = 0;
+ };
+ B3D725A407EF0F1600D12E3F = {
+ fileRef = B3D725A307EF0F1600D12E3F;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B3D725A507EF0F4D00D12E3F = {
+ isa = PBXFileReference;
+ name = "libwx_base_carbon_net-2.5.a";
+ path = "/usr/local/lib/libwx_base_carbon_net-2.5.a";
+ refType = 0;
+ };
+ B3D725A607EF0F4D00D12E3F = {
+ isa = PBXFileReference;
+ name = "libwx_base_carbon_xml-2.5.a";
+ path = "/usr/local/lib/libwx_base_carbon_xml-2.5.a";
+ refType = 0;
+ };
+ B3D725A707EF0F4D00D12E3F = {
+ isa = PBXFileReference;
+ name = "libwx_base_carbon-2.5.a";
+ path = "/usr/local/lib/libwx_base_carbon-2.5.a";
+ refType = 0;
+ };
+ B3D725A807EF0F4D00D12E3F = {
+ isa = PBXFileReference;
+ name = "libwx_mac_adv-2.5.a";
+ path = "/usr/local/lib/libwx_mac_adv-2.5.a";
+ refType = 0;
+ };
+ B3D725A907EF0F4D00D12E3F = {
+ isa = PBXFileReference;
+ name = "libwx_mac_core-2.5.a";
+ path = "/usr/local/lib/libwx_mac_core-2.5.a";
+ refType = 0;
+ };
+ B3D725AA07EF0F4D00D12E3F = {
+ isa = PBXFileReference;
+ name = "libwx_mac_html-2.5.a";
+ path = "/usr/local/lib/libwx_mac_html-2.5.a";
+ refType = 0;
+ };
+ B3D725AB07EF0F4D00D12E3F = {
+ isa = PBXFileReference;
+ name = "libwx_mac_xrc-2.5.a";
+ path = "/usr/local/lib/libwx_mac_xrc-2.5.a";
+ refType = 0;
+ };
+ B3D725AC07EF0F4D00D12E3F = {
+ isa = PBXFileReference;
+ name = "libwxjpeg-2.5.a";
+ path = "/usr/local/lib/libwxjpeg-2.5.a";
+ refType = 0;
+ };
+ B3D725AD07EF0F4D00D12E3F = {
+ isa = PBXFileReference;
+ name = "libwxpng-2.5.a";
+ path = "/usr/local/lib/libwxpng-2.5.a";
+ refType = 0;
+ };
+ B3D725AE07EF0F4D00D12E3F = {
+ isa = PBXFileReference;
+ name = "libwxtiff-2.5.a";
+ path = "/usr/local/lib/libwxtiff-2.5.a";
+ refType = 0;
+ };
+ B3D725AF07EF0F4D00D12E3F = {
+ fileRef = B3D725A507EF0F4D00D12E3F;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B3D725B007EF0F4D00D12E3F = {
+ fileRef = B3D725A607EF0F4D00D12E3F;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B3D725B107EF0F4D00D12E3F = {
+ fileRef = B3D725A707EF0F4D00D12E3F;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B3D725B207EF0F4D00D12E3F = {
+ fileRef = B3D725A807EF0F4D00D12E3F;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B3D725B307EF0F4D00D12E3F = {
+ fileRef = B3D725A907EF0F4D00D12E3F;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B3D725B407EF0F4D00D12E3F = {
+ fileRef = B3D725AA07EF0F4D00D12E3F;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B3D725B507EF0F4D00D12E3F = {
+ fileRef = B3D725AB07EF0F4D00D12E3F;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B3D725B607EF0F4D00D12E3F = {
+ fileRef = B3D725AC07EF0F4D00D12E3F;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B3D725B707EF0F4D00D12E3F = {
+ fileRef = B3D725AD07EF0F4D00D12E3F;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B3D725B807EF0F4D00D12E3F = {
+ fileRef = B3D725AE07EF0F4D00D12E3F;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B3D725B907EF198700D12E3F = {
+ isa = PBXFileReference;
+ name = "libwx_mac_svg-2.5.a";
+ path = "/usr/local/lib/libwx_mac_svg-2.5.a";
+ refType = 0;
+ };
+ B3D725BA07EF198700D12E3F = {
+ fileRef = B3D725B907EF198700D12E3F;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B3D725BB07EF19DC00D12E3F = {
+ isa = PBXFileReference;
+ name = libz.dylib;
+ path = /usr/lib/libz.dylib;
+ refType = 0;
+ };
+ B3D725BC07EF19DC00D12E3F = {
+ fileRef = B3D725BB07EF19DC00D12E3F;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+//B30
+//B31
+//B32
+//B33
+//B34
+//F50
+//F51
+//F52
+//F53
+//F54
+ F51C3DDC03C77A2301E7B49E = {
+ children = (
+ F51C3E0303C77AF401E7B49E,
+ F51C3DDD03C77A7801E7B49E,
+ F51C3DDE03C77A7801E7B49E,
+ F51C3DE103C77A7801E7B49E,
+ F51C3DE203C77A7801E7B49E,
+ F51C3DE303C77A7801E7B49E,
+ F51C3DE403C77A7801E7B49E,
+ F51C3DE503C77A7801E7B49E,
+ F51C3DE603C77A7801E7B49E,
+ F51C3DE703C77A7801E7B49E,
+ F51C3DE803C77A7801E7B49E,
+ F51C3DE903C77A7801E7B49E,
+ F51C3DEA03C77A7801E7B49E,
+ F51C3DEB03C77A7801E7B49E,
+ F51C3DEC03C77A7801E7B49E,
+ F51C3DED03C77A7801E7B49E,
+ F51C3DEE03C77A7801E7B49E,
+ F51C3DEF03C77A7801E7B49E,
+ F5E2F10905F7EFFC01A80003,
+ );
+ isa = PBXGroup;
+ name = TreeLib;
+ refType = 4;
+ };
+ F51C3DDD03C77A7801E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = gtree.cpp;
+ path = TreeLib/gtree.cpp;
+ refType = 2;
+ };
+ F51C3DDE03C77A7801E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = gtree.h;
+ path = TreeLib/gtree.h;
+ refType = 2;
+ };
+ F51C3DE103C77A7801E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = Parse.cpp;
+ path = TreeLib/Parse.cpp;
+ refType = 2;
+ };
+ F51C3DE203C77A7801E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = Parse.h;
+ path = TreeLib/Parse.h;
+ refType = 2;
+ };
+ F51C3DE303C77A7801E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = profile.h;
+ path = TreeLib/profile.h;
+ refType = 2;
+ };
+ F51C3DE403C77A7801E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = tokeniser.cpp;
+ path = TreeLib/tokeniser.cpp;
+ refType = 2;
+ };
+ F51C3DE503C77A7801E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = tokeniser.h;
+ path = TreeLib/tokeniser.h;
+ refType = 2;
+ };
+ F51C3DE603C77A7801E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = treedrawer.cpp;
+ path = TreeLib/treedrawer.cpp;
+ refType = 2;
+ };
+ F51C3DE703C77A7801E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = treedrawer.h;
+ path = TreeLib/treedrawer.h;
+ refType = 2;
+ };
+ F51C3DE803C77A7801E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = TreeLib.cpp;
+ path = TreeLib/TreeLib.cpp;
+ refType = 2;
+ };
+ F51C3DE903C77A7801E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = TreeLib.h;
+ path = TreeLib/TreeLib.h;
+ refType = 2;
+ };
+ F51C3DEA03C77A7801E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = treeorder.cpp;
+ path = TreeLib/treeorder.cpp;
+ refType = 2;
+ };
+ F51C3DEB03C77A7801E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = treeorder.h;
+ path = TreeLib/treeorder.h;
+ refType = 2;
+ };
+ F51C3DEC03C77A7801E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = treereader.cpp;
+ path = TreeLib/treereader.cpp;
+ refType = 2;
+ };
+ F51C3DED03C77A7801E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = treereader.h;
+ path = TreeLib/treereader.h;
+ refType = 2;
+ };
+ F51C3DEE03C77A7801E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = treewriter.cpp;
+ path = TreeLib/treewriter.cpp;
+ refType = 2;
+ };
+ F51C3DEF03C77A7801E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = treewriter.h;
+ path = TreeLib/treewriter.h;
+ refType = 2;
+ };
+ F51C3DF203C77A7801E7B49E = {
+ fileRef = F51C3DE203C77A7801E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3DF303C77A7801E7B49E = {
+ fileRef = F51C3DE303C77A7801E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3DF403C77A7801E7B49E = {
+ fileRef = F51C3DE503C77A7801E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3DF503C77A7801E7B49E = {
+ fileRef = F51C3DE703C77A7801E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3DF603C77A7801E7B49E = {
+ fileRef = F51C3DE903C77A7801E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3DF703C77A7801E7B49E = {
+ fileRef = F51C3DEB03C77A7801E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3DF803C77A7801E7B49E = {
+ fileRef = F51C3DED03C77A7801E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3DF903C77A7801E7B49E = {
+ fileRef = F51C3DEF03C77A7801E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3DFC03C77A7801E7B49E = {
+ fileRef = F51C3DE103C77A7801E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3DFD03C77A7801E7B49E = {
+ fileRef = F51C3DE403C77A7801E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3DFE03C77A7801E7B49E = {
+ fileRef = F51C3DE603C77A7801E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3DFF03C77A7801E7B49E = {
+ fileRef = F51C3DE803C77A7801E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3E0003C77A7801E7B49E = {
+ fileRef = F51C3DEA03C77A7801E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3E0103C77A7801E7B49E = {
+ fileRef = F51C3DEC03C77A7801E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3E0203C77A7801E7B49E = {
+ fileRef = F51C3DEE03C77A7801E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3E0303C77AF401E7B49E = {
+ children = (
+ F51C3E0403C77AF401E7B49E,
+ );
+ isa = PBXGroup;
+ name = gport;
+ refType = 4;
+ };
+ F51C3E0403C77AF401E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = gdefs.h;
+ path = TreeLib/gport/gdefs.h;
+ refType = 4;
+ };
+ F51C3E0703C77AF401E7B49E = {
+ fileRef = F51C3E0403C77AF401E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3E0A03C77CB501E7B49E = {
+ children = (
+ F51C3E0B03C77CE101E7B49E,
+ F51C3E0C03C77CE101E7B49E,
+ F51C3E0D03C77CE101E7B49E,
+ F51C3E0E03C77CE101E7B49E,
+ F51C3E0F03C77CE101E7B49E,
+ F51C3E1003C77CE101E7B49E,
+ F51C3E1103C77CE101E7B49E,
+ F51C3E1203C77CE101E7B49E,
+ F51C3E1303C77CE101E7B49E,
+ F51C3E1403C77CE101E7B49E,
+ F51C3E1503C77CE101E7B49E,
+ F51C3E1603C77CE101E7B49E,
+ F51C3E1703C77CE101E7B49E,
+ F51C3E1803C77CE101E7B49E,
+ F51C3E1903C77CE101E7B49E,
+ F51C3E1A03C77CE101E7B49E,
+ F51C3E1B03C77CE101E7B49E,
+ F51C3E1C03C77CE101E7B49E,
+ F51C3E1D03C77CE101E7B49E,
+ F51C3E1E03C77CE101E7B49E,
+ F51C3E1F03C77CE101E7B49E,
+ F51C3E2003C77CE101E7B49E,
+ F51C3E2103C77CE101E7B49E,
+ F51C3E2203C77CE101E7B49E,
+ F51C3E2303C77CE101E7B49E,
+ F51C3E2403C77CE101E7B49E,
+ F51C3E2503C77CE101E7B49E,
+ F51C3E2603C77CE101E7B49E,
+ F51C3E2703C77CE101E7B49E,
+ F51C3E2803C77CE101E7B49E,
+ F51C3E2903C77CE101E7B49E,
+ F51C3E2A03C77CE101E7B49E,
+ );
+ isa = PBXGroup;
+ name = "ncl-2.0";
+ refType = 4;
+ };
+ F51C3E0B03C77CE101E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = assumptionsblock.cpp;
+ path = "ncl-2.0/src/assumptionsblock.cpp";
+ refType = 2;
+ };
+ F51C3E0C03C77CE101E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = assumptionsblock.h;
+ path = "ncl-2.0/src/assumptionsblock.h";
+ refType = 2;
+ };
+ F51C3E0D03C77CE101E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = charactersblock.cpp;
+ path = "ncl-2.0/src/charactersblock.cpp";
+ refType = 2;
+ };
+ F51C3E0E03C77CE101E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = charactersblock.h;
+ path = "ncl-2.0/src/charactersblock.h";
+ refType = 2;
+ };
+ F51C3E0F03C77CE101E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = datablock.cpp;
+ path = "ncl-2.0/src/datablock.cpp";
+ refType = 2;
+ };
+ F51C3E1003C77CE101E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = datablock.h;
+ path = "ncl-2.0/src/datablock.h";
+ refType = 2;
+ };
+ F51C3E1103C77CE101E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = discretedatum.cpp;
+ path = "ncl-2.0/src/discretedatum.cpp";
+ refType = 2;
+ };
+ F51C3E1203C77CE101E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = discretedatum.h;
+ path = "ncl-2.0/src/discretedatum.h";
+ refType = 2;
+ };
+ F51C3E1303C77CE101E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = discretematrix.cpp;
+ path = "ncl-2.0/src/discretematrix.cpp";
+ refType = 2;
+ };
+ F51C3E1403C77CE101E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = discretematrix.h;
+ path = "ncl-2.0/src/discretematrix.h";
+ refType = 2;
+ };
+ F51C3E1503C77CE101E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = distancedatum.cpp;
+ path = "ncl-2.0/src/distancedatum.cpp";
+ refType = 2;
+ };
+ F51C3E1603C77CE101E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = distancedatum.h;
+ path = "ncl-2.0/src/distancedatum.h";
+ refType = 2;
+ };
+ F51C3E1703C77CE101E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = distancesblock.cpp;
+ path = "ncl-2.0/src/distancesblock.cpp";
+ refType = 2;
+ };
+ F51C3E1803C77CE101E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = distancesblock.h;
+ path = "ncl-2.0/src/distancesblock.h";
+ refType = 2;
+ };
+ F51C3E1903C77CE101E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = nexus.cpp;
+ path = "ncl-2.0/src/nexus.cpp";
+ refType = 2;
+ };
+ F51C3E1A03C77CE101E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = nexus.h;
+ path = "ncl-2.0/src/nexus.h";
+ refType = 2;
+ };
+ F51C3E1B03C77CE101E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = nexusblock.cpp;
+ path = "ncl-2.0/src/nexusblock.cpp";
+ refType = 2;
+ };
+ F51C3E1C03C77CE101E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = nexusdefs.h;
+ path = "ncl-2.0/src/nexusdefs.h";
+ refType = 2;
+ };
+ F51C3E1D03C77CE101E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = nexustoken.cpp;
+ path = "ncl-2.0/src/nexustoken.cpp";
+ refType = 2;
+ };
+ F51C3E1E03C77CE101E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = nexustoken.h;
+ path = "ncl-2.0/src/nexustoken.h";
+ refType = 2;
+ };
+ F51C3E1F03C77CE101E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = nxsdate.cpp;
+ path = "ncl-2.0/src/nxsdate.cpp";
+ refType = 2;
+ };
+ F51C3E2003C77CE101E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = nxsdate.h;
+ path = "ncl-2.0/src/nxsdate.h";
+ refType = 2;
+ };
+ F51C3E2103C77CE101E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = nxsstring.cpp;
+ path = "ncl-2.0/src/nxsstring.cpp";
+ refType = 2;
+ };
+ F51C3E2203C77CE101E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = nxsstring.h;
+ path = "ncl-2.0/src/nxsstring.h";
+ refType = 2;
+ };
+ F51C3E2303C77CE101E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = setreader.cpp;
+ path = "ncl-2.0/src/setreader.cpp";
+ refType = 2;
+ };
+ F51C3E2403C77CE101E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = setreader.h;
+ path = "ncl-2.0/src/setreader.h";
+ refType = 2;
+ };
+ F51C3E2503C77CE101E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = taxablock.cpp;
+ path = "ncl-2.0/src/taxablock.cpp";
+ refType = 2;
+ };
+ F51C3E2603C77CE101E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = taxablock.h;
+ path = "ncl-2.0/src/taxablock.h";
+ refType = 2;
+ };
+ F51C3E2703C77CE101E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = treesblock.cpp;
+ path = "ncl-2.0/src/treesblock.cpp";
+ refType = 2;
+ };
+ F51C3E2803C77CE101E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = treesblock.h;
+ path = "ncl-2.0/src/treesblock.h";
+ refType = 2;
+ };
+ F51C3E2903C77CE101E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = xnexus.cpp;
+ path = "ncl-2.0/src/xnexus.cpp";
+ refType = 2;
+ };
+ F51C3E2A03C77CE101E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = xnexus.h;
+ path = "ncl-2.0/src/xnexus.h";
+ refType = 2;
+ };
+ F51C3E2B03C77CE101E7B49E = {
+ fileRef = F51C3E0C03C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3E2C03C77CE101E7B49E = {
+ fileRef = F51C3E0E03C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3E2D03C77CE101E7B49E = {
+ fileRef = F51C3E1003C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3E2E03C77CE101E7B49E = {
+ fileRef = F51C3E1203C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3E2F03C77CE101E7B49E = {
+ fileRef = F51C3E1403C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3E3003C77CE101E7B49E = {
+ fileRef = F51C3E1603C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3E3103C77CE101E7B49E = {
+ fileRef = F51C3E1803C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3E3203C77CE101E7B49E = {
+ fileRef = F51C3E1A03C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3E3303C77CE101E7B49E = {
+ fileRef = F51C3E1C03C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3E3403C77CE101E7B49E = {
+ fileRef = F51C3E1E03C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3E3503C77CE101E7B49E = {
+ fileRef = F51C3E2003C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3E3603C77CE101E7B49E = {
+ fileRef = F51C3E2203C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3E3703C77CE101E7B49E = {
+ fileRef = F51C3E2403C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3E3803C77CE101E7B49E = {
+ fileRef = F51C3E2603C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3E3903C77CE101E7B49E = {
+ fileRef = F51C3E2803C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3E3A03C77CE101E7B49E = {
+ fileRef = F51C3E2A03C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3E3B03C77CE101E7B49E = {
+ fileRef = F51C3E0B03C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3E3C03C77CE101E7B49E = {
+ fileRef = F51C3E0D03C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3E3D03C77CE101E7B49E = {
+ fileRef = F51C3E0F03C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3E3E03C77CE101E7B49E = {
+ fileRef = F51C3E1103C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3E3F03C77CE101E7B49E = {
+ fileRef = F51C3E1303C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3E4003C77CE101E7B49E = {
+ fileRef = F51C3E1503C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3E4103C77CE101E7B49E = {
+ fileRef = F51C3E1703C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3E4203C77CE101E7B49E = {
+ fileRef = F51C3E1903C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3E4303C77CE101E7B49E = {
+ fileRef = F51C3E1B03C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3E4403C77CE101E7B49E = {
+ fileRef = F51C3E1D03C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3E4503C77CE101E7B49E = {
+ fileRef = F51C3E1F03C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3E4603C77CE101E7B49E = {
+ fileRef = F51C3E2103C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3E4703C77CE101E7B49E = {
+ fileRef = F51C3E2303C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3E4803C77CE101E7B49E = {
+ fileRef = F51C3E2503C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3E4903C77CE101E7B49E = {
+ fileRef = F51C3E2703C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3E4A03C77CE101E7B49E = {
+ fileRef = F51C3E2903C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3E4B03C77F0C01E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ path = tdoc.cpp;
+ refType = 2;
+ };
+ F51C3E4C03C77F0C01E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ path = tdoc.h;
+ refType = 2;
+ };
+ F51C3E4D03C77F0C01E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ path = tproject.h;
+ refType = 2;
+ };
+ F51C3E4E03C77F0C01E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ path = tv.cpp;
+ refType = 2;
+ };
+ F51C3E4F03C77F0C01E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ path = tv.h;
+ refType = 2;
+ };
+ F51C3E5003C77F0C01E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ path = tview.cpp;
+ refType = 2;
+ };
+ F51C3E5103C77F0C01E7B49E = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ path = tview.h;
+ refType = 2;
+ };
+ F51C3E5203C77F0C01E7B49E = {
+ fileRef = F51C3E4C03C77F0C01E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3E5403C77F0C01E7B49E = {
+ fileRef = F51C3E4F03C77F0C01E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3E5503C77F0C01E7B49E = {
+ fileRef = F51C3E5103C77F0C01E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3E5603C77F0C01E7B49E = {
+ fileRef = F51C3E4B03C77F0C01E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51C3E5703C77F0C01E7B49E = {
+ fileRef = F51C3E4E03C77F0C01E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F53CB88903CB0666012A40F8 = {
+ fileRef = F51C3E4D03C77F0C01E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F53CB88A03CB09B3012A40F8 = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ path = treeorder_dialog.h;
+ refType = 4;
+ };
+ F53CB88B03CB09B3012A40F8 = {
+ fileRef = F53CB88A03CB09B3012A40F8;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F53CB88D03CB0A26012A40F8 = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ path = treeorder_dialog.cpp;
+ refType = 4;
+ };
+ F53CB88F03CB0A26012A40F8 = {
+ fileRef = F53CB88D03CB0A26012A40F8;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F53CB89103CB2010012A40F8 = {
+ children = (
+ F53CB88A03CB09B3012A40F8,
+ F53CB88D03CB0A26012A40F8,
+ );
+ isa = PBXGroup;
+ name = Dialogs;
+ path = "";
+ refType = 2;
+ };
+ F5E2F0FE05F777E801A80003 = {
+ isa = PBXFileReference;
+ name = "libwx_mac-2.4.0.dylib";
+ path = "/usr/local/lib/libwx_mac-2.4.0.dylib";
+ refType = 0;
+ };
+ F5E2F10005F77C4601A80003 = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = "libwx_mac-2.4.0.r";
+ path = "/usr/local/lib/libwx_mac-2.4.0.r";
+ refType = 0;
+ };
+ F5E2F10505F7EAD201A80003 = {
+ isa = PBXFileReference;
+ name = app.icns;
+ path = bitmaps/mac/app.icns;
+ refType = 2;
+ };
+ F5E2F10605F7EAD201A80003 = {
+ isa = PBXFileReference;
+ name = doc.icns;
+ path = bitmaps/mac/doc.icns;
+ refType = 2;
+ };
+ F5E2F10705F7EAD201A80003 = {
+ fileRef = F5E2F10505F7EAD201A80003;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F5E2F10805F7EAD201A80003 = {
+ fileRef = F5E2F10605F7EAD201A80003;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F5E2F10905F7EFFC01A80003 = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ name = nodeiterator.h;
+ path = TreeLib/nodeiterator.h;
+ refType = 2;
+ };
+ F5E2F10A05F7EFFC01A80003 = {
+ fileRef = F5E2F10905F7EFFC01A80003;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F5FAAF5503C9DF66011CDE4E = {
+ fileRef = F51C3E5003C77F0C01E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ };
+ rootObject = 20286C28FDCF999611CA2CEA;
+}
Property changes on: trunk/packages/treeviewx/branches/upstream/current/tv.pbproj/project.pbxproj
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/tv.pbproj/rpage.pbxuser
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/tv.pbproj/rpage.pbxuser 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/tv.pbproj/rpage.pbxuser 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,955 @@
+// !$*UTF8*$!
+{
+ 20286C28FDCF999611CA2CEA = {
+ activeBuildStyle = 05952DFCFFF02D1B11CA0E50;
+ activeExecutable = F5731A4F03C71AF8018DF32A;
+ activeTarget = 20286C34FDCF999611CA2CEA;
+ addToTargets = (
+ 20286C34FDCF999611CA2CEA,
+ );
+ breakpoints = (
+ F53CB89003CB1EC9012A40F8,
+ );
+ executables = (
+ F5731A4F03C71AF8018DF32A,
+ );
+ perUserDictionary = {
+ PBXPerProjectTemplateStateSaveDate = 132771138;
+ "PBXTemplateGeometry-F5CA7ECB015C094F0DCA290F" = {
+ ContentSize = "{668, 621}";
+ LeftSlideOut = {
+ Collapsed = NO;
+ Frame = "{{0, 0}, {668, 621}}";
+ Split0 = {
+ Collapsed = NO;
+ Frame = "{{0, 0}, {668, 621}}";
+ Split0 = {
+ Frame = "{{0, 0}, {668, 621}}";
+ };
+ SplitCount = 1;
+ Tab0 = {
+ Frame = "{{0, 0}, {484, 208}}";
+ };
+ Tab1 = {
+ Debugger = {
+ Collapsed = NO;
+ Frame = "{{0, 0}, {664, 208}}";
+ Split0 = {
+ Frame = "{{0, 24}, {664, 184}}";
+ Split0 = {
+ Frame = "{{0, 0}, {325, 184}}";
+ };
+ Split1 = {
+ DebugVariablesTableConfiguration = (
+ Name,
+ 123,
+ Value,
+ 85,
+ Summary,
+ 96.123,
+ );
+ Frame = "{{334, 0}, {330, 184}}";
+ };
+ SplitCount = 2;
+ };
+ SplitCount = 1;
+ Tab0 = {
+ Frame = "{{0, 0}, {100, 50}}";
+ };
+ Tab1 = {
+ Frame = "{{0, 0}, {100, 50}}";
+ };
+ TabCount = 2;
+ TabsVisible = YES;
+ };
+ Frame = "{{0, 0}, {664, 208}}";
+ LauncherConfigVersion = 7;
+ };
+ Tab2 = {
+ Frame = "{{0, 0}, {664, 50}}";
+ LauncherConfigVersion = 3;
+ Runner = {
+ Frame = "{{0, 0}, {664, 50}}";
+ };
+ };
+ Tab3 = {
+ BuildMessageFrame = "{{0, 0}, {614, 203}}";
+ BuildTranscriptFrame = "{{0, 212}, {614, 85}}";
+ BuildTranscriptFrameExpanded = YES;
+ Frame = "{{0, 0}, {612, 295}}";
+ };
+ Tab4 = {
+ Frame = "{{0, 0}, {612, 295}}";
+ };
+ TabCount = 5;
+ TabsVisible = NO;
+ };
+ SplitCount = 1;
+ Tab0 = {
+ Frame = "{{0, 0}, {313, 531}}";
+ GroupTreeTableConfiguration = (
+ TargetStatusColumn,
+ 18,
+ MainColumn,
+ 280,
+ );
+ };
+ Tab1 = {
+ ClassesFrame = "{{0, 0}, {280, 398}}";
+ ClassesTreeTableConfiguration = (
+ PBXBookColumnIdentifier,
+ 20,
+ PBXClassColumnIdentifier,
+ 237,
+ );
+ Frame = "{{0, 0}, {278, 659}}";
+ MembersFrame = "{{0, 407}, {280, 252}}";
+ MembersTreeTableConfiguration = (
+ PBXBookColumnIdentifier,
+ 20,
+ PBXMethodColumnIdentifier,
+ 236,
+ );
+ };
+ Tab2 = {
+ Frame = "{{0, 0}, {200, 100}}";
+ };
+ Tab3 = {
+ Frame = "{{0, 0}, {200, 557}}";
+ TargetTableConfiguration = (
+ ActiveObject,
+ 16,
+ ObjectNames,
+ 202.296,
+ );
+ };
+ Tab4 = {
+ BreakpointsTreeTableConfiguration = (
+ breakpointColumn,
+ 197,
+ enabledColumn,
+ 31,
+ );
+ Frame = "{{0, 0}, {250, 100}}";
+ };
+ TabCount = 5;
+ TabsVisible = NO;
+ };
+ NavBarShownByDefault = YES;
+ StatusViewVisible = NO;
+ Template = F5CA7ECB015C094F0DCA290F;
+ ToolbarVisible = NO;
+ WindowLocation = "{334, 179}";
+ };
+ PBXWorkspaceContents = (
+ {
+ LeftSlideOut = {
+ Split0 = {
+ Split0 = {
+ NavContent0 = {
+ bookmark = B3D725CD07EF206500D12E3F;
+ history = (
+ F5E2F10B05F7F86201A80003,
+ F5E2F10F05F7F86201A80003,
+ F5E2F11005F7F86201A80003,
+ F5F3B9A406013AFC01A80002,
+ F5F3B9A506013AFC01A80002,
+ F5F3B9A606013AFC01A80002,
+ F5F3B9A706013AFC01A80002,
+ B3D725BD07EF206500D12E3F,
+ B3D725BE07EF206500D12E3F,
+ B3D725BF07EF206500D12E3F,
+ B3D725C007EF206500D12E3F,
+ B3D725C107EF206500D12E3F,
+ B3D725C207EF206500D12E3F,
+ B3D725C307EF206500D12E3F,
+ F585386F06117B1901A80002,
+ );
+ prevStack = (
+ F5E2F11205F7F86201A80003,
+ F5E2F11305F7F86201A80003,
+ F5E2F11405F7F86201A80003,
+ F5E2F11505F7F86201A80003,
+ F5E2F11605F7F86201A80003,
+ F5E2F11805F7F86201A80003,
+ F5E2F11A05F7F86201A80003,
+ F5E2F11B05F7F86201A80003,
+ F5E2F11C05F7F86201A80003,
+ F5E2F11E05F7F86201A80003,
+ F5E2F11F05F7F86201A80003,
+ F5E2F12105F7F86201A80003,
+ F5E2F12205F7F86201A80003,
+ F5F3B9A906013AFC01A80002,
+ F5F3B9AA06013AFC01A80002,
+ F5F3B9AB06013AFC01A80002,
+ F5F3B9AC06013AFC01A80002,
+ F5F3B9AD06013AFC01A80002,
+ F5F3B9AE06013AFC01A80002,
+ F5F3B9AF06013AFC01A80002,
+ F5F3B9B006013AFC01A80002,
+ F585387006117B1901A80002,
+ B3D725C407EF206500D12E3F,
+ B3D725C507EF206500D12E3F,
+ B3D725C607EF206500D12E3F,
+ B3D725C707EF206500D12E3F,
+ B3D725C807EF206500D12E3F,
+ B3D725C907EF206500D12E3F,
+ B3D725CA07EF206500D12E3F,
+ B3D725CB07EF206500D12E3F,
+ B3D725CC07EF206500D12E3F,
+ );
+ };
+ NavCount = 1;
+ NavGeometry0 = {
+ Frame = "{{0, 0}, {684, 488}}";
+ NavBarVisible = YES;
+ };
+ NavSplitVertical = NO;
+ };
+ SplitCount = 1;
+ Tab1 = {
+ Debugger = {
+ Split0 = {
+ SplitCount = 2;
+ };
+ SplitCount = 1;
+ TabCount = 2;
+ };
+ LauncherConfigVersion = 7;
+ };
+ Tab2 = {
+ LauncherConfigVersion = 3;
+ Runner = {
+ };
+ };
+ TabCount = 5;
+ };
+ SplitCount = 1;
+ Tab1 = {
+ OptionsSetName = "Hierarchy, all classes";
+ };
+ TabCount = 5;
+ };
+ },
+ );
+ PBXWorkspaceGeometries = (
+ {
+ ContentSize = "{1070, 800}";
+ LeftSlideOut = {
+ ActiveTab = 0;
+ ActiveTabName = PBXGroupTreeModule;
+ Collapsed = NO;
+ Frame = "{{0, 23}, {1070, 777}}";
+ Split0 = {
+ ActiveTab = 2;
+ ActiveTabName = PBXBuildResultsModule;
+ Collapsed = NO;
+ Frame = "{{386, 0}, {684, 777}}";
+ Split0 = {
+ Frame = "{{0, 289}, {684, 488}}";
+ };
+ SplitCount = 1;
+ Tab0 = {
+ Frame = "{{0, 0}, {572, 214}}";
+ };
+ Tab1 = {
+ Debugger = {
+ Collapsed = NO;
+ Frame = "{{0, 0}, {572, 150}}";
+ Split0 = {
+ Frame = "{{0, 24}, {572, 126}}";
+ Split0 = {
+ Frame = "{{0, 0}, {279, 126}}";
+ };
+ Split1 = {
+ DebugVariablesTableConfiguration = (
+ Name,
+ 123,
+ Value,
+ 85,
+ Summary,
+ 62.123,
+ );
+ Frame = "{{288, 0}, {284, 126}}";
+ };
+ SplitCount = 2;
+ };
+ SplitCount = 1;
+ Tab0 = {
+ Frame = "{{0, 0}, {100, 50}}";
+ };
+ Tab1 = {
+ Frame = "{{0, 0}, {100, 50}}";
+ };
+ TabCount = 2;
+ TabsVisible = YES;
+ };
+ Frame = "{{0, 0}, {572, 125}}";
+ LauncherConfigVersion = 7;
+ };
+ Tab2 = {
+ Frame = "{{0, 0}, {560, 253}}";
+ LauncherConfigVersion = 3;
+ Runner = {
+ Frame = "{{0, 0}, {560, 253}}";
+ };
+ };
+ Tab3 = {
+ BuildMessageFrame = "{{0, 0}, {686, 37}}";
+ BuildTranscriptFrame = "{{0, 46}, {686, 197}}";
+ BuildTranscriptFrameExpanded = YES;
+ Frame = "{{0, 0}, {684, 265}}";
+ };
+ Tab4 = {
+ Frame = "{{0, 0}, {612, 295}}";
+ };
+ TabCount = 5;
+ TabsVisible = YES;
+ };
+ SplitCount = 1;
+ Tab0 = {
+ Frame = "{{0, 0}, {362, 777}}";
+ GroupTreeTableConfiguration = (
+ SCMStatusColumn,
+ 22,
+ TargetStatusColumn,
+ 18,
+ MainColumn,
+ 307,
+ );
+ };
+ Tab1 = {
+ ClassesFrame = "{{0, 0}, {247, 330}}";
+ ClassesTreeTableConfiguration = (
+ PBXBookColumnIdentifier,
+ 20,
+ PBXClassColumnIdentifier,
+ 204,
+ );
+ Frame = "{{0, 0}, {245, 549}}";
+ MembersFrame = "{{0, 339}, {247, 210}}";
+ MembersTreeTableConfiguration = (
+ PBXBookColumnIdentifier,
+ 20,
+ PBXMethodColumnIdentifier,
+ 203,
+ );
+ };
+ Tab2 = {
+ Frame = "{{0, 0}, {226, 549}}";
+ };
+ Tab3 = {
+ Frame = "{{0, 0}, {191, 803}}";
+ TargetTableConfiguration = (
+ ActiveObject,
+ 16,
+ ObjectNames,
+ 202.296,
+ );
+ };
+ Tab4 = {
+ BreakpointsTreeTableConfiguration = (
+ breakpointColumn,
+ 138,
+ enabledColumn,
+ 31,
+ );
+ Frame = "{{0, 0}, {191, 549}}";
+ };
+ TabCount = 5;
+ TabsVisible = YES;
+ };
+ NavBarShownByDefault = YES;
+ StatusViewVisible = YES;
+ Template = F5F68CF101725D4C0D7A8F4C;
+ ToolbarVisible = YES;
+ WindowLocation = "{103, 92}";
+ },
+ );
+ PBXWorkspaceStateSaveDate = 132771138;
+ };
+ perUserProjectItems = {
+ B3D725BD07EF206500D12E3F = B3D725BD07EF206500D12E3F;
+ B3D725BE07EF206500D12E3F = B3D725BE07EF206500D12E3F;
+ B3D725BF07EF206500D12E3F = B3D725BF07EF206500D12E3F;
+ B3D725C007EF206500D12E3F = B3D725C007EF206500D12E3F;
+ B3D725C107EF206500D12E3F = B3D725C107EF206500D12E3F;
+ B3D725C207EF206500D12E3F = B3D725C207EF206500D12E3F;
+ B3D725C307EF206500D12E3F = B3D725C307EF206500D12E3F;
+ B3D725C407EF206500D12E3F = B3D725C407EF206500D12E3F;
+ B3D725C507EF206500D12E3F = B3D725C507EF206500D12E3F;
+ B3D725C607EF206500D12E3F = B3D725C607EF206500D12E3F;
+ B3D725C707EF206500D12E3F = B3D725C707EF206500D12E3F;
+ B3D725C807EF206500D12E3F = B3D725C807EF206500D12E3F;
+ B3D725C907EF206500D12E3F = B3D725C907EF206500D12E3F;
+ B3D725CA07EF206500D12E3F = B3D725CA07EF206500D12E3F;
+ B3D725CB07EF206500D12E3F = B3D725CB07EF206500D12E3F;
+ B3D725CC07EF206500D12E3F = B3D725CC07EF206500D12E3F;
+ B3D725CD07EF206500D12E3F = B3D725CD07EF206500D12E3F;
+ F585386F06117B1901A80002 = F585386F06117B1901A80002;
+ F585387006117B1901A80002 = F585387006117B1901A80002;
+ F5E2F10B05F7F86201A80003 = F5E2F10B05F7F86201A80003;
+ F5E2F10F05F7F86201A80003 = F5E2F10F05F7F86201A80003;
+ F5E2F11005F7F86201A80003 = F5E2F11005F7F86201A80003;
+ F5E2F11205F7F86201A80003 = F5E2F11205F7F86201A80003;
+ F5E2F11305F7F86201A80003 = F5E2F11305F7F86201A80003;
+ F5E2F11405F7F86201A80003 = F5E2F11405F7F86201A80003;
+ F5E2F11505F7F86201A80003 = F5E2F11505F7F86201A80003;
+ F5E2F11605F7F86201A80003 = F5E2F11605F7F86201A80003;
+ F5E2F11805F7F86201A80003 = F5E2F11805F7F86201A80003;
+ F5E2F11A05F7F86201A80003 = F5E2F11A05F7F86201A80003;
+ F5E2F11B05F7F86201A80003 = F5E2F11B05F7F86201A80003;
+ F5E2F11C05F7F86201A80003 = F5E2F11C05F7F86201A80003;
+ F5E2F11E05F7F86201A80003 = F5E2F11E05F7F86201A80003;
+ F5E2F11F05F7F86201A80003 = F5E2F11F05F7F86201A80003;
+ F5E2F12105F7F86201A80003 = F5E2F12105F7F86201A80003;
+ F5E2F12205F7F86201A80003 = F5E2F12205F7F86201A80003;
+ F5F3B9A406013AFC01A80002 = F5F3B9A406013AFC01A80002;
+ F5F3B9A506013AFC01A80002 = F5F3B9A506013AFC01A80002;
+ F5F3B9A606013AFC01A80002 = F5F3B9A606013AFC01A80002;
+ F5F3B9A706013AFC01A80002 = F5F3B9A706013AFC01A80002;
+ F5F3B9A906013AFC01A80002 = F5F3B9A906013AFC01A80002;
+ F5F3B9AA06013AFC01A80002 = F5F3B9AA06013AFC01A80002;
+ F5F3B9AB06013AFC01A80002 = F5F3B9AB06013AFC01A80002;
+ F5F3B9AC06013AFC01A80002 = F5F3B9AC06013AFC01A80002;
+ F5F3B9AD06013AFC01A80002 = F5F3B9AD06013AFC01A80002;
+ F5F3B9AE06013AFC01A80002 = F5F3B9AE06013AFC01A80002;
+ F5F3B9AF06013AFC01A80002 = F5F3B9AF06013AFC01A80002;
+ F5F3B9B006013AFC01A80002 = F5F3B9B006013AFC01A80002;
+ };
+ projectwideBuildSettings = {
+ };
+ wantsIndex = 1;
+ wantsSCM = -1;
+ };
+ 20286C34FDCF999611CA2CEA = {
+ activeExec = 0;
+ executables = (
+ F5731A4F03C71AF8018DF32A,
+ );
+ };
+ B3D725BD07EF206500D12E3F = {
+ fRef = F51C3DDD03C77A7801E7B49E;
+ isa = PBXTextBookmark;
+ name = "gtree.cpp: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 1097;
+ vrLoc = 0;
+ };
+ B3D725BE07EF206500D12E3F = {
+ fRef = F51C3DE603C77A7801E7B49E;
+ isa = PBXTextBookmark;
+ name = "treedrawer.cpp: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 1177;
+ vrLoc = 0;
+ };
+ B3D725BF07EF206500D12E3F = {
+ fRef = F51C3E0B03C77CE101E7B49E;
+ isa = PBXTextBookmark;
+ name = "assumptionsblock.cpp: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 1117;
+ vrLoc = 0;
+ };
+ B3D725C007EF206500D12E3F = {
+ fRef = F51C3E1D03C77CE101E7B49E;
+ isa = PBXTextBookmark;
+ name = "nexustoken.cpp: 1097";
+ rLen = 0;
+ rLoc = 30389;
+ rType = 0;
+ vrLen = 2012;
+ vrLoc = 0;
+ };
+ B3D725C107EF206500D12E3F = {
+ fRef = B3D725CE07EF206500D12E3F;
+ isa = PBXTextBookmark;
+ name = "defs.h: 21";
+ rLen = 25;
+ rLoc = 659;
+ rType = 0;
+ vrLen = 1233;
+ vrLoc = 0;
+ };
+ B3D725C207EF206500D12E3F = {
+ fRef = B3D725D207EF206500D12E3F;
+ isa = PBXTextBookmark;
+ name = "platform.h: 260";
+ rLen = 22;
+ rLoc = 6931;
+ rType = 0;
+ vrLen = 917;
+ vrLoc = 6564;
+ };
+ B3D725C307EF206500D12E3F = {
+ isa = PBXTargetBookmark;
+ trg = 20286C34FDCF999611CA2CEA;
+ uiCtxt = {
+ TOCViewDetailVisibleRect = "{{0, 38}, {468, 434}}";
+ TOCViewExpandedItems = (
+ "com.apple.target-editor-pane.settings",
+ "com.apple.target-editor-pane.settings.simple",
+ "com.apple.target-editor-pane.info-plist",
+ "com.apple.target-editor-pane.info-plist.simple",
+ "com.apple.target-editor-pane.buildphases",
+ );
+ TOCViewMasterVisibleRect = "{{0, 0}, {177, 434}}";
+ TOCViewSelectedItems = (
+ PBXTargetGccCompilerSettingsModule,
+ );
+ };
+ };
+ B3D725C407EF206500D12E3F = {
+ isa = PBXTargetBookmark;
+ trg = 20286C34FDCF999611CA2CEA;
+ uiCtxt = {
+ TOCViewDetailVisibleRect = "{{0, 0}, {420, 207}}";
+ TOCViewExpandedItems = (
+ "com.apple.target-editor-pane.settings",
+ "com.apple.target-editor-pane.settings.simple",
+ "com.apple.target-editor-pane.info-plist",
+ "com.apple.target-editor-pane.info-plist.simple",
+ "com.apple.target-editor-pane.buildphases",
+ );
+ TOCViewMasterVisibleRect = "{{0, 0}, {159, 459}}";
+ TOCViewSelectedItems = (
+ PBXProductURLTypesSettingsModule,
+ );
+ };
+ };
+ B3D725C507EF206500D12E3F = {
+ fRef = F51C3DDD03C77A7801E7B49E;
+ isa = PBXTextBookmark;
+ name = "gtree.cpp: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 1097;
+ vrLoc = 0;
+ };
+ B3D725C607EF206500D12E3F = {
+ fRef = F51C3DE603C77A7801E7B49E;
+ isa = PBXTextBookmark;
+ name = "treedrawer.cpp: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 1177;
+ vrLoc = 0;
+ };
+ B3D725C707EF206500D12E3F = {
+ fRef = F51C3E0B03C77CE101E7B49E;
+ isa = PBXTextBookmark;
+ name = "assumptionsblock.cpp: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 1117;
+ vrLoc = 0;
+ };
+ B3D725C807EF206500D12E3F = {
+ fRef = F51C3E1D03C77CE101E7B49E;
+ isa = PBXTextBookmark;
+ name = "nexustoken.cpp: 1097";
+ rLen = 0;
+ rLoc = 30389;
+ rType = 0;
+ vrLen = 2012;
+ vrLoc = 0;
+ };
+ B3D725C907EF206500D12E3F = {
+ fRef = B3D725CF07EF206500D12E3F;
+ isa = PBXTextBookmark;
+ name = "platform.h: 260";
+ rLen = 22;
+ rLoc = 6931;
+ rType = 0;
+ vrLen = 894;
+ vrLoc = 0;
+ };
+ B3D725CA07EF206500D12E3F = {
+ fRef = B3D725D007EF206500D12E3F;
+ isa = PBXTextBookmark;
+ name = "defs.h: 21";
+ rLen = 25;
+ rLoc = 659;
+ rType = 0;
+ vrLen = 1233;
+ vrLoc = 0;
+ };
+ B3D725CB07EF206500D12E3F = {
+ fRef = B3D725D107EF206500D12E3F;
+ isa = PBXTextBookmark;
+ name = "platform.h: 260";
+ rLen = 22;
+ rLoc = 6931;
+ rType = 0;
+ vrLen = 917;
+ vrLoc = 6564;
+ };
+ B3D725CC07EF206500D12E3F = {
+ isa = PBXTargetBookmark;
+ trg = 20286C34FDCF999611CA2CEA;
+ uiCtxt = {
+ TOCViewDetailVisibleRect = "{{0, 38}, {468, 434}}";
+ TOCViewExpandedItems = (
+ "com.apple.target-editor-pane.settings",
+ "com.apple.target-editor-pane.settings.simple",
+ "com.apple.target-editor-pane.info-plist",
+ "com.apple.target-editor-pane.info-plist.simple",
+ "com.apple.target-editor-pane.buildphases",
+ );
+ TOCViewMasterVisibleRect = "{{0, 0}, {177, 434}}";
+ TOCViewSelectedItems = (
+ PBXTargetGccCompilerSettingsModule,
+ );
+ };
+ };
+ B3D725CD07EF206500D12E3F = {
+ fRef = F51C3E4E03C77F0C01E7B49E;
+ isa = PBXTextBookmark;
+ name = "tv.cpp: 573";
+ rLen = 0;
+ rLoc = 19657;
+ rType = 0;
+ vrLen = 1163;
+ vrLoc = 0;
+ };
+ B3D725CE07EF206500D12E3F = {
+ isa = PBXFileReference;
+ name = defs.h;
+ path = "/usr/local/include/wx-2.5/wx/defs.h";
+ refType = 0;
+ };
+ B3D725CF07EF206500D12E3F = {
+ isa = PBXFileReference;
+ name = platform.h;
+ path = "/usr/local/include/wx-2.5/wx/platform.h";
+ refType = 0;
+ };
+ B3D725D007EF206500D12E3F = {
+ isa = PBXFileReference;
+ name = defs.h;
+ path = "/usr/local/include/wx-2.5/wx/defs.h";
+ refType = 0;
+ };
+ B3D725D107EF206500D12E3F = {
+ isa = PBXFileReference;
+ name = platform.h;
+ path = "/usr/local/include/wx-2.5/wx/platform.h";
+ refType = 0;
+ };
+ B3D725D207EF206500D12E3F = {
+ isa = PBXFileReference;
+ name = platform.h;
+ path = "/usr/local/include/wx-2.5/wx/platform.h";
+ refType = 0;
+ };
+ F51C3E1D03C77CE101E7B49E = {
+ uiCtxt = {
+ sepNavWindowFrame = "{{15, 71}, {750, 502}}";
+ };
+ };
+ F51C3E4D03C77F0C01E7B49E = {
+ uiCtxt = {
+ sepNavWindowFrame = "{{38, 50}, {750, 502}}";
+ };
+ };
+ F51C3E4E03C77F0C01E7B49E = {
+ uiCtxt = {
+ sepNavWindowFrame = "{{15, 71}, {750, 502}}";
+ };
+ };
+ F51C3E4F03C77F0C01E7B49E = {
+ uiCtxt = {
+ sepNavWindowFrame = "{{15, 71}, {750, 502}}";
+ };
+ };
+ F51C3E5003C77F0C01E7B49E = {
+ uiCtxt = {
+ sepNavWindowFrame = "{{23, 56}, {750, 502}}";
+ };
+ };
+ F51C3E5103C77F0C01E7B49E = {
+ uiCtxt = {
+ sepNavWindowFrame = "{{15, 71}, {750, 502}}";
+ };
+ };
+ F53CB88A03CB09B3012A40F8 = {
+ uiCtxt = {
+ sepNavWindowFrame = "{{38, 50}, {750, 502}}";
+ };
+ };
+ F53CB88D03CB0A26012A40F8 = {
+ uiCtxt = {
+ sepNavWindowFrame = "{{15, 71}, {750, 502}}";
+ };
+ };
+ F53CB89003CB1EC9012A40F8 = {
+ fileReference = F51C3E5103C77F0C01E7B49E;
+ isa = PBXFileBreakpoint;
+ lineNumber = 49;
+ state = 2;
+ };
+ F5731A4F03C71AF8018DF32A = {
+ activeArgIndex = 2147483647;
+ activeArgIndices = (
+ );
+ argumentStrings = (
+ );
+ configStateDict = {
+ };
+ debuggerPlugin = GDBDebugging;
+ dylibVariantSuffix = "";
+ enableDebugStr = 1;
+ environmentEntries = (
+ );
+ isa = PBXExecutable;
+ name = tv;
+ shlibInfoDictList = (
+ );
+ sourceDirectories = (
+ );
+ };
+ F585386F06117B1901A80002 = {
+ fRef = F51C3E4E03C77F0C01E7B49E;
+ isa = PBXTextBookmark;
+ name = "tv.cpp: __HAVE_BUILTIN_SETJMP__";
+ rLen = 0;
+ rLoc = 88;
+ rType = 0;
+ vrLen = 633;
+ vrLoc = 0;
+ };
+ F585387006117B1901A80002 = {
+ fRef = F51C3E4E03C77F0C01E7B49E;
+ isa = PBXTextBookmark;
+ name = "tv.cpp: __HAVE_BUILTIN_SETJMP__";
+ rLen = 0;
+ rLoc = 88;
+ rType = 0;
+ vrLen = 633;
+ vrLoc = 0;
+ };
+ F5E2F10B05F7F86201A80003 = {
+ fRef = F51C3E4F03C77F0C01E7B49E;
+ isa = PBXTextBookmark;
+ name = "tv.h: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 1051;
+ vrLoc = 0;
+ };
+ F5E2F10F05F7F86201A80003 = {
+ fRef = F5E2F10505F7EAD201A80003;
+ isa = PBXBookmark;
+ };
+ F5E2F11005F7F86201A80003 = {
+ fRef = F5E2F10605F7EAD201A80003;
+ isa = PBXBookmark;
+ };
+ F5E2F11205F7F86201A80003 = {
+ isa = PBXTargetBookmark;
+ trg = 20286C34FDCF999611CA2CEA;
+ };
+ F5E2F11305F7F86201A80003 = {
+ fRef = F51C3E4E03C77F0C01E7B49E;
+ isa = PBXTextBookmark;
+ name = "tv.cpp: __GNUC__";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 1128;
+ vrLoc = 0;
+ };
+ F5E2F11405F7F86201A80003 = {
+ fRef = F51C3E4F03C77F0C01E7B49E;
+ isa = PBXTextBookmark;
+ name = "tv.h: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 1051;
+ vrLoc = 0;
+ };
+ F5E2F11505F7F86201A80003 = {
+ fRef = F51C3E4E03C77F0C01E7B49E;
+ isa = PBXTextBookmark;
+ name = "tv.cpp: __GNUC__";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 1128;
+ vrLoc = 0;
+ };
+ F5E2F11605F7F86201A80003 = {
+ isa = PBXTargetBookmark;
+ trg = 20286C34FDCF999611CA2CEA;
+ };
+ F5E2F11805F7F86201A80003 = {
+ isa = PBXTargetBookmark;
+ trg = 20286C34FDCF999611CA2CEA;
+ };
+ F5E2F11A05F7F86201A80003 = {
+ isa = PBXTargetBookmark;
+ trg = 20286C34FDCF999611CA2CEA;
+ };
+ F5E2F11B05F7F86201A80003 = {
+ fRef = F5E2F10505F7EAD201A80003;
+ isa = PBXBookmark;
+ };
+ F5E2F11C05F7F86201A80003 = {
+ fRef = F5E2F10605F7EAD201A80003;
+ isa = PBXBookmark;
+ };
+ F5E2F11E05F7F86201A80003 = {
+ fRef = F51C3E4E03C77F0C01E7B49E;
+ isa = PBXTextBookmark;
+ name = "tv.cpp: __GNUC__";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 857;
+ vrLoc = 0;
+ };
+ F5E2F11F05F7F86201A80003 = {
+ fRef = F51C3DDD03C77A7801E7B49E;
+ isa = PBXTextBookmark;
+ name = "gtree.cpp: __GNUC__";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 875;
+ vrLoc = 0;
+ };
+ F5E2F12105F7F86201A80003 = {
+ fRef = F5E2F10505F7EAD201A80003;
+ isa = PBXBookmark;
+ };
+ F5E2F12205F7F86201A80003 = {
+ fRef = F5E2F10605F7EAD201A80003;
+ isa = PBXBookmark;
+ };
+ F5F3B9A406013AFC01A80002 = {
+ fRef = F51C3E5103C77F0C01E7B49E;
+ isa = PBXTextBookmark;
+ name = "tview.h: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 514;
+ vrLoc = 1138;
+ };
+ F5F3B9A506013AFC01A80002 = {
+ fRef = F51C3E4D03C77F0C01E7B49E;
+ isa = PBXTextBookmark;
+ name = "tproject.h: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 605;
+ vrLoc = 1585;
+ };
+ F5F3B9A606013AFC01A80002 = {
+ fRef = F51C3E4C03C77F0C01E7B49E;
+ isa = PBXTextBookmark;
+ name = "tdoc.h: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 857;
+ vrLoc = 0;
+ };
+ F5F3B9A706013AFC01A80002 = {
+ fRef = F51C3DE303C77A7801E7B49E;
+ isa = PBXTextBookmark;
+ name = "profile.h: 414";
+ rLen = 0;
+ rLoc = 11594;
+ rType = 0;
+ vrLen = 467;
+ vrLoc = 11306;
+ };
+ F5F3B9A906013AFC01A80002 = {
+ isa = PBXTargetBookmark;
+ trg = 20286C34FDCF999611CA2CEA;
+ };
+ F5F3B9AA06013AFC01A80002 = {
+ fRef = F51C3E5103C77F0C01E7B49E;
+ isa = PBXTextBookmark;
+ name = "tview.h: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 514;
+ vrLoc = 1138;
+ };
+ F5F3B9AB06013AFC01A80002 = {
+ fRef = F51C3E4D03C77F0C01E7B49E;
+ isa = PBXTextBookmark;
+ name = "tproject.h: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 605;
+ vrLoc = 1585;
+ };
+ F5F3B9AC06013AFC01A80002 = {
+ fRef = F51C3DE303C77A7801E7B49E;
+ isa = PBXTextBookmark;
+ name = "profile.h: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 453;
+ vrLoc = 11245;
+ };
+ F5F3B9AD06013AFC01A80002 = {
+ fRef = F51C3E4D03C77F0C01E7B49E;
+ isa = PBXTextBookmark;
+ name = "tproject.h: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 605;
+ vrLoc = 1585;
+ };
+ F5F3B9AE06013AFC01A80002 = {
+ fRef = F51C3E4C03C77F0C01E7B49E;
+ isa = PBXTextBookmark;
+ name = "tdoc.h: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 857;
+ vrLoc = 0;
+ };
+ F5F3B9AF06013AFC01A80002 = {
+ fRef = F51C3E4E03C77F0C01E7B49E;
+ isa = PBXTextBookmark;
+ name = "tv.cpp: __GNUC__";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 857;
+ vrLoc = 0;
+ };
+ F5F3B9B006013AFC01A80002 = {
+ fRef = F51C3DE303C77A7801E7B49E;
+ isa = PBXTextBookmark;
+ name = "profile.h: 414";
+ rLen = 0;
+ rLoc = 11594;
+ rType = 0;
+ vrLen = 467;
+ vrLoc = 11306;
+ };
+}
Property changes on: trunk/packages/treeviewx/branches/upstream/current/tv.pbproj/rpage.pbxuser
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/tv.spec.in
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/tv.spec.in 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/tv.spec.in 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,57 @@
+%define name tv
+%define version @VERSION@
+%define release 1
+
+Summary: TreeView X.
+Name: %{name}
+Version: %{version}
+Release: %{release}
+Source: http://darwin.zoology.gla.ac.uk/~rpage/treeviewx/%{name}-%{version}.tar.gz
+Vendor: Roderic D. M. Page
+URL: http://darwin.zoology.gla.ac.uk/~rpage/treeviewx/
+License: GPL
+Group: Sciences/Biology
+BuildRoot: %{_builddir}/%{name}-buildroot
+Prefix: %{_prefix}
+Requires: wxGTK >= 2.4.0
+BuildRequires: wxGTK-devel >= 2.4.0
+
+
+%description
+Phylogenetic tree viewer.
+
+
+%prep
+%setup -q
+
+%build
+if [ -x ./configure ]; then
+ CFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=%{_prefix}
+else
+ CFLAGS="$RPM_OPT_FLAGS" ./autogen.sh --prefix=%{_prefix}
+fi
+make
+
+%install
+rm -rf $RPM_BUILD_ROOT
+make DESTDIR=$RPM_BUILD_ROOT install
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%post -p /sbin/ldconfig
+
+%postun -p /sbin/ldconfig
+
+%files
+%defattr(-,root,root)
+%doc AUTHORS ChangeLog COPYING INSTALL NEWS README
+%{_bindir}/*
+
+
+
+
+
+%changelog
+* Wed May 21 2003 R. D. M. Page
+- First draft of the spec file
Property changes on: trunk/packages/treeviewx/branches/upstream/current/tv.spec.in
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/tv.xcode/project.pbxproj
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/tv.xcode/project.pbxproj 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/tv.xcode/project.pbxproj 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,1915 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 39;
+ objects = {
+ 0249A669FF388E3911CA2CEA = {
+ isa = PBXFileReference;
+ lastKnownFileType = archive.ar;
+ name = "libstdc++.a";
+ path = "/usr/lib/libstdc++.a";
+ refType = 0;
+ sourceTree = "<absolute>";
+ };
+//020
+//021
+//022
+//023
+//024
+//050
+//051
+//052
+//053
+//054
+ 05952DFCFFF02D1B11CA0E50 = {
+ buildSettings = {
+ COPY_PHASE_STRIP = NO;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_ENABLE_FIX_AND_CONTINUE = YES;
+ GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ OPTIMIZATION_CFLAGS = "-O0";
+ OTHER_CPLUSPLUSFLAGS = "-D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -DUSE_WXWINDOWS -D__WXMAC__ -DWX_PRECOMP -DNO_GCC_PRAGMA -I/usr/local/lib/wx/include/mac-ansi-release-2.5 -I/usr/local/include/wx-2.5";
+ ZERO_LINK = YES;
+ };
+ isa = PBXBuildStyle;
+ name = Development;
+ };
+ 05952DFDFFF02D1B11CA0E50 = {
+ buildSettings = {
+ COPY_PHASE_STRIP = YES;
+ GCC_ENABLE_FIX_AND_CONTINUE = NO;
+ ZERO_LINK = NO;
+ };
+ isa = PBXBuildStyle;
+ name = Deployment;
+ };
+//050
+//051
+//052
+//053
+//054
+//190
+//191
+//192
+//193
+//194
+ 195DF8C9FE9D4F0611CA2CBB = {
+ children = (
+ B30D63B007E1CF2B00F1DA33,
+ );
+ isa = PBXGroup;
+ name = Products;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+//190
+//191
+//192
+//193
+//194
+//200
+//201
+//202
+//203
+//204
+ 20286C28FDCF999611CA2CEA = {
+ buildSettings = {
+ };
+ buildStyles = (
+ 05952DFCFFF02D1B11CA0E50,
+ 05952DFDFFF02D1B11CA0E50,
+ );
+ hasScannedForEncodings = 0;
+ isa = PBXProject;
+ mainGroup = 20286C29FDCF999611CA2CEA;
+ projectDirPath = "";
+ targets = (
+ B30D635D07E1CF2B00F1DA33,
+ );
+ };
+ 20286C29FDCF999611CA2CEA = {
+ children = (
+ B382849307CA955F006079D9,
+ F51C3E0A03C77CB501E7B49E,
+ F51C3DDC03C77A2301E7B49E,
+ 20286C2AFDCF999611CA2CEA,
+ 20286C2CFDCF999611CA2CEA,
+ 20286C32FDCF999611CA2CEA,
+ 195DF8C9FE9D4F0611CA2CBB,
+ );
+ isa = PBXGroup;
+ name = "«PROJECTNAME»";
+ path = "";
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ 20286C2AFDCF999611CA2CEA = {
+ children = (
+ F53CB89103CB2010012A40F8,
+ F51C3E4B03C77F0C01E7B49E,
+ F51C3E4C03C77F0C01E7B49E,
+ F51C3E4D03C77F0C01E7B49E,
+ F51C3E4E03C77F0C01E7B49E,
+ F51C3E4F03C77F0C01E7B49E,
+ F51C3E5003C77F0C01E7B49E,
+ F51C3E5103C77F0C01E7B49E,
+ );
+ isa = PBXGroup;
+ name = Sources;
+ path = "";
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ 20286C2CFDCF999611CA2CEA = {
+ children = (
+ B33EB36C07E6A58700855069,
+ B38284AC07CA9648006079D9,
+ F5E2F10505F7EAD201A80003,
+ F5E2F10605F7EAD201A80003,
+ );
+ isa = PBXGroup;
+ name = Resources;
+ path = "";
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ 20286C32FDCF999611CA2CEA = {
+ children = (
+ B3F0ECCB07E5CBF30092E9FE,
+ B3F0ECBF07E5CB8F0092E9FE,
+ B30D63BC07E1DA3100F1DA33,
+ B382870807CA9A4B006079D9,
+ B382870907CA9A4B006079D9,
+ B382870A07CA9A4B006079D9,
+ B382870B07CA9A4B006079D9,
+ 20286C33FDCF999611CA2CEA,
+ 0249A669FF388E3911CA2CEA,
+ );
+ isa = PBXGroup;
+ name = "External Frameworks and Libraries";
+ path = "";
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ 20286C33FDCF999611CA2CEA = {
+ isa = PBXFileReference;
+ lastKnownFileType = wrapper.framework;
+ name = Carbon.framework;
+ path = /System/Library/Frameworks/Carbon.framework;
+ refType = 0;
+ sourceTree = "<absolute>";
+ };
+//200
+//201
+//202
+//203
+//204
+//B30
+//B31
+//B32
+//B33
+//B34
+ B30D635D07E1CF2B00F1DA33 = {
+ buildPhases = (
+ B30D635E07E1CF2B00F1DA33,
+ B30D637F07E1CF2B00F1DA33,
+ B30D638207E1CF2B00F1DA33,
+ B30D639F07E1CF2B00F1DA33,
+ B30D63AE07E1CF2B00F1DA33,
+ );
+ buildSettings = {
+ FRAMEWORK_SEARCH_PATHS = "";
+ HEADER_SEARCH_PATHS = "TreeLib/gport /usr/local/lib/wx/include/mac-2.4";
+ INSTALL_PATH = "$(HOME)/Applications";
+ LIBRARY_SEARCH_PATHS = "/usr/local/lib /Users/rpage/development/tv";
+ OTHER_CFLAGS = "-Wno-deprecated -D__WXMAC__ -DWXMAKINGDLL -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -DUSE_WXWINDOWS";
+ OTHER_LDFLAGS = "";
+ OTHER_REZFLAGS = Carbon.r;
+ PREBINDING = NO;
+ PRODUCT_NAME = "TreeView X";
+ SECTORDER_FLAGS = "";
+ WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas";
+ WRAPPER_EXTENSION = app;
+ };
+ dependencies = (
+ );
+ isa = PBXApplicationTarget;
+ name = "tv static";
+ productInstallPath = "$(HOME)/Applications";
+ productName = "«PROJECTNAME»";
+ productReference = B30D63B007E1CF2B00F1DA33;
+ productSettingsXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
+<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
+<plist version=\"1.0\">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundleDocumentTypes</key>
+ <array>
+ <dict>
+ <key>CFBundleTypeExtensions</key>
+ <array>
+ <string>tre</string>
+ </array>
+ <key>CFBundleTypeIconFile</key>
+ <string>doc.icns</string>
+ <key>CFBundleTypeName</key>
+ <string>TreeView X document</string>
+ <key>CFBundleTypeOSTypes</key>
+ <array>
+ <string>TEXT</string>
+ </array>
+ <key>CFBundleTypeRole</key>
+ <string>Viewer</string>
+ </dict>
+ <dict>
+ <key>CFBundleTypeExtensions</key>
+ <array>
+ <string>tree</string>
+ </array>
+ <key>CFBundleTypeIconFile</key>
+ <string>doc.icns</string>
+ <key>CFBundleTypeName</key>
+ <string>TreeView X document</string>
+ <key>CFBundleTypeOSTypes</key>
+ <array>
+ <string>TEXT</string>
+ </array>
+ <key>CFBundleTypeRole</key>
+ <string>Viewer</string>
+ </dict>
+ <dict>
+ <key>CFBundleTypeExtensions</key>
+ <array>
+ <string>*</string>
+ </array>
+ <key>CFBundleTypeName</key>
+ <string>Plain text</string>
+ <key>CFBundleTypeOSTypes</key>
+ <array>
+ <string>****</string>
+ </array>
+ <key>CFBundleTypeRole</key>
+ <string>Viewer</string>
+ </dict>
+ </array>
+ <key>CFBundleExecutable</key>
+ <string>TreeView X</string>
+ <key>CFBundleGetInfoString</key>
+ <string>TreeView X (c) 2004 Roderic D. M. Page</string>
+ <key>CFBundleIconFile</key>
+ <string>app.icns</string>
+ <key>CFBundleIdentifier</key>
+ <string>uk.ac.gla.zoology.treeviewx</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>TreeView X</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleShortVersionString</key>
+ <string>0.4.1</string>
+ <key>CFBundleSignature</key>
+ <string>TreX</string>
+ <key>CFBundleVersion</key>
+ <string>0.4.1</string>
+ <key>CSResourcesFileMapped</key>
+ <true/>
+</dict>
+</plist>
+";
+ };
+ B30D635E07E1CF2B00F1DA33 = {
+ buildActionMask = 2147483647;
+ files = (
+ B30D635F07E1CF2B00F1DA33,
+ B30D636007E1CF2B00F1DA33,
+ B30D636107E1CF2B00F1DA33,
+ B30D636207E1CF2B00F1DA33,
+ B30D636307E1CF2B00F1DA33,
+ B30D636407E1CF2B00F1DA33,
+ B30D636507E1CF2B00F1DA33,
+ B30D636607E1CF2B00F1DA33,
+ B30D636707E1CF2B00F1DA33,
+ B30D636807E1CF2B00F1DA33,
+ B30D636907E1CF2B00F1DA33,
+ B30D636A07E1CF2B00F1DA33,
+ B30D636B07E1CF2B00F1DA33,
+ B30D636C07E1CF2B00F1DA33,
+ B30D636D07E1CF2B00F1DA33,
+ B30D636E07E1CF2B00F1DA33,
+ B30D636F07E1CF2B00F1DA33,
+ B30D637007E1CF2B00F1DA33,
+ B30D637107E1CF2B00F1DA33,
+ B30D637207E1CF2B00F1DA33,
+ B30D637307E1CF2B00F1DA33,
+ B30D637407E1CF2B00F1DA33,
+ B30D637507E1CF2B00F1DA33,
+ B30D637607E1CF2B00F1DA33,
+ B30D637707E1CF2B00F1DA33,
+ B30D637807E1CF2B00F1DA33,
+ B30D637907E1CF2B00F1DA33,
+ B30D637A07E1CF2B00F1DA33,
+ B30D637B07E1CF2B00F1DA33,
+ B30D637C07E1CF2B00F1DA33,
+ B30D637D07E1CF2B00F1DA33,
+ B30D637E07E1CF2B00F1DA33,
+ );
+ isa = PBXHeadersBuildPhase;
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ B30D635F07E1CF2B00F1DA33 = {
+ fileRef = F51C3DDE03C77A7801E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D636007E1CF2B00F1DA33 = {
+ fileRef = F51C3DE203C77A7801E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D636107E1CF2B00F1DA33 = {
+ fileRef = F51C3DE303C77A7801E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D636207E1CF2B00F1DA33 = {
+ fileRef = F51C3DE503C77A7801E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D636307E1CF2B00F1DA33 = {
+ fileRef = F51C3DE703C77A7801E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D636407E1CF2B00F1DA33 = {
+ fileRef = F51C3DE903C77A7801E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D636507E1CF2B00F1DA33 = {
+ fileRef = F51C3DEB03C77A7801E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D636607E1CF2B00F1DA33 = {
+ fileRef = F51C3DED03C77A7801E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D636707E1CF2B00F1DA33 = {
+ fileRef = F51C3DEF03C77A7801E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D636807E1CF2B00F1DA33 = {
+ fileRef = F51C3E0403C77AF401E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D636907E1CF2B00F1DA33 = {
+ fileRef = F51C3E0C03C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D636A07E1CF2B00F1DA33 = {
+ fileRef = F51C3E0E03C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D636B07E1CF2B00F1DA33 = {
+ fileRef = F51C3E1003C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D636C07E1CF2B00F1DA33 = {
+ fileRef = F51C3E1203C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D636D07E1CF2B00F1DA33 = {
+ fileRef = F51C3E1403C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D636E07E1CF2B00F1DA33 = {
+ fileRef = F51C3E1603C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D636F07E1CF2B00F1DA33 = {
+ fileRef = F51C3E1803C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D637007E1CF2B00F1DA33 = {
+ fileRef = F51C3E1A03C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D637107E1CF2B00F1DA33 = {
+ fileRef = F51C3E1C03C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D637207E1CF2B00F1DA33 = {
+ fileRef = F51C3E1E03C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D637307E1CF2B00F1DA33 = {
+ fileRef = F51C3E2003C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D637407E1CF2B00F1DA33 = {
+ fileRef = F51C3E2203C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D637507E1CF2B00F1DA33 = {
+ fileRef = F51C3E2403C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D637607E1CF2B00F1DA33 = {
+ fileRef = F51C3E2603C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D637707E1CF2B00F1DA33 = {
+ fileRef = F51C3E2803C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D637807E1CF2B00F1DA33 = {
+ fileRef = F51C3E2A03C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D637907E1CF2B00F1DA33 = {
+ fileRef = F51C3E4C03C77F0C01E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D637A07E1CF2B00F1DA33 = {
+ fileRef = F51C3E4F03C77F0C01E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D637B07E1CF2B00F1DA33 = {
+ fileRef = F51C3E5103C77F0C01E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D637C07E1CF2B00F1DA33 = {
+ fileRef = F51C3E4D03C77F0C01E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D637D07E1CF2B00F1DA33 = {
+ fileRef = F53CB88A03CB09B3012A40F8;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D637E07E1CF2B00F1DA33 = {
+ fileRef = F5E2F10905F7EFFC01A80003;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D637F07E1CF2B00F1DA33 = {
+ buildActionMask = 2147483647;
+ files = (
+ B30D638007E1CF2B00F1DA33,
+ B30D638107E1CF2B00F1DA33,
+ B33EB36E07E6A5BF00855069,
+ B33EB37D07E6A5FE00855069,
+ B33EB37E07E6A5FE00855069,
+ B33EB37F07E6A5FE00855069,
+ B33EB38007E6A5FE00855069,
+ B33EB38107E6A5FE00855069,
+ B33EB38207E6A5FE00855069,
+ B33EB38307E6A5FE00855069,
+ B33EB38407E6A5FE00855069,
+ B33EB38507E6A5FE00855069,
+ B33EB38607E6A5FE00855069,
+ B33EB38707E6A5FE00855069,
+ B33EB38807E6A5FE00855069,
+ B33EB38907E6A5FE00855069,
+ B33EB38A07E6A5FE00855069,
+ );
+ isa = PBXResourcesBuildPhase;
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ B30D638007E1CF2B00F1DA33 = {
+ fileRef = F5E2F10505F7EAD201A80003;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D638107E1CF2B00F1DA33 = {
+ fileRef = F5E2F10605F7EAD201A80003;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D638207E1CF2B00F1DA33 = {
+ buildActionMask = 2147483647;
+ files = (
+ B30D638307E1CF2B00F1DA33,
+ B30D638407E1CF2B00F1DA33,
+ B30D638507E1CF2B00F1DA33,
+ B30D638607E1CF2B00F1DA33,
+ B30D638707E1CF2B00F1DA33,
+ B30D638807E1CF2B00F1DA33,
+ B30D638907E1CF2B00F1DA33,
+ B30D638A07E1CF2B00F1DA33,
+ B30D638B07E1CF2B00F1DA33,
+ B30D638C07E1CF2B00F1DA33,
+ B30D638D07E1CF2B00F1DA33,
+ B30D638E07E1CF2B00F1DA33,
+ B30D638F07E1CF2B00F1DA33,
+ B30D639007E1CF2B00F1DA33,
+ B30D639107E1CF2B00F1DA33,
+ B30D639207E1CF2B00F1DA33,
+ B30D639307E1CF2B00F1DA33,
+ B30D639407E1CF2B00F1DA33,
+ B30D639507E1CF2B00F1DA33,
+ B30D639607E1CF2B00F1DA33,
+ B30D639707E1CF2B00F1DA33,
+ B30D639807E1CF2B00F1DA33,
+ B30D639907E1CF2B00F1DA33,
+ B30D639A07E1CF2B00F1DA33,
+ B30D639B07E1CF2B00F1DA33,
+ B30D639C07E1CF2B00F1DA33,
+ B30D639D07E1CF2B00F1DA33,
+ B30D639E07E1CF2B00F1DA33,
+ );
+ isa = PBXSourcesBuildPhase;
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ B30D638307E1CF2B00F1DA33 = {
+ fileRef = F51C3DDD03C77A7801E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D638407E1CF2B00F1DA33 = {
+ fileRef = F51C3DE103C77A7801E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D638507E1CF2B00F1DA33 = {
+ fileRef = F51C3DE403C77A7801E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D638607E1CF2B00F1DA33 = {
+ fileRef = F51C3DE603C77A7801E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D638707E1CF2B00F1DA33 = {
+ fileRef = F51C3DE803C77A7801E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D638807E1CF2B00F1DA33 = {
+ fileRef = F51C3DEA03C77A7801E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D638907E1CF2B00F1DA33 = {
+ fileRef = F51C3DEC03C77A7801E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D638A07E1CF2B00F1DA33 = {
+ fileRef = F51C3DEE03C77A7801E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D638B07E1CF2B00F1DA33 = {
+ fileRef = F51C3E0B03C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D638C07E1CF2B00F1DA33 = {
+ fileRef = F51C3E0D03C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D638D07E1CF2B00F1DA33 = {
+ fileRef = F51C3E0F03C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D638E07E1CF2B00F1DA33 = {
+ fileRef = F51C3E1103C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D638F07E1CF2B00F1DA33 = {
+ fileRef = F51C3E1303C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D639007E1CF2B00F1DA33 = {
+ fileRef = F51C3E1503C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D639107E1CF2B00F1DA33 = {
+ fileRef = F51C3E1703C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D639207E1CF2B00F1DA33 = {
+ fileRef = F51C3E1903C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D639307E1CF2B00F1DA33 = {
+ fileRef = F51C3E1B03C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D639407E1CF2B00F1DA33 = {
+ fileRef = F51C3E1D03C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D639507E1CF2B00F1DA33 = {
+ fileRef = F51C3E1F03C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D639607E1CF2B00F1DA33 = {
+ fileRef = F51C3E2103C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D639707E1CF2B00F1DA33 = {
+ fileRef = F51C3E2303C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D639807E1CF2B00F1DA33 = {
+ fileRef = F51C3E2503C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D639907E1CF2B00F1DA33 = {
+ fileRef = F51C3E2703C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D639A07E1CF2B00F1DA33 = {
+ fileRef = F51C3E2903C77CE101E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D639B07E1CF2B00F1DA33 = {
+ fileRef = F51C3E4B03C77F0C01E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D639C07E1CF2B00F1DA33 = {
+ fileRef = F51C3E4E03C77F0C01E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D639D07E1CF2B00F1DA33 = {
+ fileRef = F51C3E5003C77F0C01E7B49E;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D639E07E1CF2B00F1DA33 = {
+ fileRef = F53CB88D03CB0A26012A40F8;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D639F07E1CF2B00F1DA33 = {
+ buildActionMask = 2147483647;
+ files = (
+ B30D63A007E1CF2B00F1DA33,
+ B30D63A107E1CF2B00F1DA33,
+ B30D63A207E1CF2B00F1DA33,
+ B30D63A307E1CF2B00F1DA33,
+ B30D63A407E1CF2B00F1DA33,
+ B30D63A507E1CF2B00F1DA33,
+ B30D63BF07E1DA5A00F1DA33,
+ B30D63CA07E1DA6900F1DA33,
+ B30D63CD07E1DA6900F1DA33,
+ B30D63CE07E1DA6900F1DA33,
+ B30D63CF07E1DA6900F1DA33,
+ B30D63D107E1DA6900F1DA33,
+ B30D63D207E1DA6900F1DA33,
+ B30D63D707E1DAC800F1DA33,
+ B3F0ECC007E5CB8F0092E9FE,
+ B3F0ECC607E5CBD00092E9FE,
+ B3F0ECC707E5CBD00092E9FE,
+ B3F0ECC807E5CBD00092E9FE,
+ B3F0ECCC07E5CBF30092E9FE,
+ );
+ isa = PBXFrameworksBuildPhase;
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ B30D63A007E1CF2B00F1DA33 = {
+ fileRef = 20286C33FDCF999611CA2CEA;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D63A107E1CF2B00F1DA33 = {
+ fileRef = 0249A669FF388E3911CA2CEA;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D63A207E1CF2B00F1DA33 = {
+ fileRef = B382870807CA9A4B006079D9;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D63A307E1CF2B00F1DA33 = {
+ fileRef = B382870907CA9A4B006079D9;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D63A407E1CF2B00F1DA33 = {
+ fileRef = B382870A07CA9A4B006079D9;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D63A507E1CF2B00F1DA33 = {
+ fileRef = B382870B07CA9A4B006079D9;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D63AE07E1CF2B00F1DA33 = {
+ buildActionMask = 2147483647;
+ files = (
+ B30D63AF07E1CF2B00F1DA33,
+ );
+ isa = PBXRezBuildPhase;
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ B30D63AF07E1CF2B00F1DA33 = {
+ fileRef = B38284AC07CA9648006079D9;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D63B007E1CF2B00F1DA33 = {
+ explicitFileType = wrapper.application;
+ includeInIndex = 0;
+ isa = PBXFileReference;
+ path = "TreeView X.app";
+ refType = 3;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ B30D63BC07E1DA3100F1DA33 = {
+ children = (
+ B3F0ECC307E5CBD00092E9FE,
+ B3F0ECC407E5CBD00092E9FE,
+ B3F0ECC507E5CBD00092E9FE,
+ B30D63D607E1DAC800F1DA33,
+ B30D63C107E1DA6800F1DA33,
+ B30D63C407E1DA6800F1DA33,
+ B30D63C507E1DA6800F1DA33,
+ B30D63C607E1DA6800F1DA33,
+ B30D63C807E1DA6900F1DA33,
+ B30D63C907E1DA6900F1DA33,
+ B30D63BE07E1DA5A00F1DA33,
+ );
+ isa = PBXGroup;
+ name = "wxWidgets static";
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ B30D63BE07E1DA5A00F1DA33 = {
+ isa = PBXFileReference;
+ lastKnownFileType = archive.ar;
+ name = "libwx_mac_xrc-2.5.a";
+ path = "/usr/local/lib/libwx_mac_xrc-2.5.a";
+ refType = 0;
+ sourceTree = "<absolute>";
+ };
+ B30D63BF07E1DA5A00F1DA33 = {
+ fileRef = B30D63BE07E1DA5A00F1DA33;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D63C107E1DA6800F1DA33 = {
+ isa = PBXFileReference;
+ lastKnownFileType = archive.ar;
+ path = "libwx_mac_adv-2.5.a";
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ B30D63C407E1DA6800F1DA33 = {
+ isa = PBXFileReference;
+ lastKnownFileType = archive.ar;
+ path = "libwx_base_carbon-2.5.a";
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ B30D63C507E1DA6800F1DA33 = {
+ isa = PBXFileReference;
+ lastKnownFileType = archive.ar;
+ path = "libwx_base_carbon_xml-2.5.a";
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ B30D63C607E1DA6800F1DA33 = {
+ isa = PBXFileReference;
+ lastKnownFileType = archive.ar;
+ path = "libwx_mac_html-2.5.a";
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ B30D63C807E1DA6900F1DA33 = {
+ isa = PBXFileReference;
+ lastKnownFileType = archive.ar;
+ path = "libwx_base_carbon_net-2.5.a";
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ B30D63C907E1DA6900F1DA33 = {
+ isa = PBXFileReference;
+ lastKnownFileType = archive.ar;
+ path = "libwx_mac_core-2.5.a";
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ B30D63CA07E1DA6900F1DA33 = {
+ fileRef = B30D63C107E1DA6800F1DA33;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D63CD07E1DA6900F1DA33 = {
+ fileRef = B30D63C407E1DA6800F1DA33;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D63CE07E1DA6900F1DA33 = {
+ fileRef = B30D63C507E1DA6800F1DA33;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D63CF07E1DA6900F1DA33 = {
+ fileRef = B30D63C607E1DA6800F1DA33;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D63D107E1DA6900F1DA33 = {
+ fileRef = B30D63C807E1DA6900F1DA33;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D63D207E1DA6900F1DA33 = {
+ fileRef = B30D63C907E1DA6900F1DA33;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B30D63D607E1DAC800F1DA33 = {
+ isa = PBXFileReference;
+ lastKnownFileType = archive.ar;
+ path = "libwx_mac_svg-2.5.a";
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ B30D63D707E1DAC800F1DA33 = {
+ fileRef = B30D63D607E1DAC800F1DA33;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B33EB36C07E6A58700855069 = {
+ children = (
+ B33EB36F07E6A5FE00855069,
+ B33EB37007E6A5FE00855069,
+ B33EB37107E6A5FE00855069,
+ B33EB37207E6A5FE00855069,
+ B33EB37307E6A5FE00855069,
+ B33EB37407E6A5FE00855069,
+ B33EB37507E6A5FE00855069,
+ B33EB37607E6A5FE00855069,
+ B33EB37707E6A5FE00855069,
+ B33EB37807E6A5FE00855069,
+ B33EB37907E6A5FE00855069,
+ B33EB37A07E6A5FE00855069,
+ B33EB37B07E6A5FE00855069,
+ B33EB37C07E6A5FE00855069,
+ B33EB36D07E6A5BF00855069,
+ );
+ isa = PBXGroup;
+ name = Bitmaps;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ B33EB36D07E6A5BF00855069 = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ lastKnownFileType = text;
+ name = copy.xpm;
+ path = bitmaps/mac/copy.xpm;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ B33EB36E07E6A5BF00855069 = {
+ fileRef = B33EB36D07E6A5BF00855069;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B33EB36F07E6A5FE00855069 = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ lastKnownFileType = text;
+ name = internal.xpm;
+ path = bitmaps/mac/internal.xpm;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ B33EB37007E6A5FE00855069 = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ lastKnownFileType = text;
+ name = new.xpm;
+ path = bitmaps/mac/new.xpm;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ B33EB37107E6A5FE00855069 = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ lastKnownFileType = text;
+ name = next.xpm;
+ path = bitmaps/mac/next.xpm;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ B33EB37207E6A5FE00855069 = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ lastKnownFileType = text;
+ name = open.xpm;
+ path = bitmaps/mac/open.xpm;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ B33EB37307E6A5FE00855069 = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ lastKnownFileType = text;
+ name = paste.xpm;
+ path = bitmaps/mac/paste.xpm;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ B33EB37407E6A5FE00855069 = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ lastKnownFileType = text;
+ name = phylogram.xpm;
+ path = bitmaps/mac/phylogram.xpm;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ B33EB37507E6A5FE00855069 = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ lastKnownFileType = text;
+ name = previous.xpm;
+ path = bitmaps/mac/previous.xpm;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ B33EB37607E6A5FE00855069 = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ lastKnownFileType = text;
+ name = print_preview.xpm;
+ path = bitmaps/mac/print_preview.xpm;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ B33EB37707E6A5FE00855069 = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ lastKnownFileType = text;
+ name = print.xpm;
+ path = bitmaps/mac/print.xpm;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ B33EB37807E6A5FE00855069 = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ lastKnownFileType = text;
+ name = rectangletree.xpm;
+ path = bitmaps/mac/rectangletree.xpm;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ B33EB37907E6A5FE00855069 = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ lastKnownFileType = text;
+ name = saveas.xpm;
+ path = bitmaps/mac/saveas.xpm;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ B33EB37A07E6A5FE00855069 = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ lastKnownFileType = text;
+ name = slanttree.xpm;
+ path = bitmaps/mac/slanttree.xpm;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ B33EB37B07E6A5FE00855069 = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ lastKnownFileType = text;
+ name = zoomin.xpm;
+ path = bitmaps/mac/zoomin.xpm;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ B33EB37C07E6A5FE00855069 = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ lastKnownFileType = text;
+ name = zoomout.xpm;
+ path = bitmaps/mac/zoomout.xpm;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ B33EB37D07E6A5FE00855069 = {
+ fileRef = B33EB36F07E6A5FE00855069;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B33EB37E07E6A5FE00855069 = {
+ fileRef = B33EB37007E6A5FE00855069;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B33EB37F07E6A5FE00855069 = {
+ fileRef = B33EB37107E6A5FE00855069;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B33EB38007E6A5FE00855069 = {
+ fileRef = B33EB37207E6A5FE00855069;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B33EB38107E6A5FE00855069 = {
+ fileRef = B33EB37307E6A5FE00855069;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B33EB38207E6A5FE00855069 = {
+ fileRef = B33EB37407E6A5FE00855069;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B33EB38307E6A5FE00855069 = {
+ fileRef = B33EB37507E6A5FE00855069;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B33EB38407E6A5FE00855069 = {
+ fileRef = B33EB37607E6A5FE00855069;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B33EB38507E6A5FE00855069 = {
+ fileRef = B33EB37707E6A5FE00855069;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B33EB38607E6A5FE00855069 = {
+ fileRef = B33EB37807E6A5FE00855069;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B33EB38707E6A5FE00855069 = {
+ fileRef = B33EB37907E6A5FE00855069;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B33EB38807E6A5FE00855069 = {
+ fileRef = B33EB37A07E6A5FE00855069;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B33EB38907E6A5FE00855069 = {
+ fileRef = B33EB37B07E6A5FE00855069;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B33EB38A07E6A5FE00855069 = {
+ fileRef = B33EB37C07E6A5FE00855069;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B382849307CA955F006079D9 = {
+ children = (
+ );
+ isa = PBXGroup;
+ name = Headers;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ B38284AC07CA9648006079D9 = {
+ fileEncoding = 30;
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.rez;
+ name = "libwx_mac-2.5.3.r";
+ path = "/usr/local/lib/libwx_mac-2.5.3.r";
+ refType = 0;
+ sourceTree = "<absolute>";
+ };
+ B382870807CA9A4B006079D9 = {
+ isa = PBXFileReference;
+ lastKnownFileType = wrapper.framework;
+ name = Cocoa.framework;
+ path = /System/Library/Frameworks/Cocoa.framework;
+ refType = 0;
+ sourceTree = "<absolute>";
+ };
+ B382870907CA9A4B006079D9 = {
+ isa = PBXFileReference;
+ lastKnownFileType = wrapper.framework;
+ name = IOKit.framework;
+ path = /System/Library/Frameworks/IOKit.framework;
+ refType = 0;
+ sourceTree = "<absolute>";
+ };
+ B382870A07CA9A4B006079D9 = {
+ isa = PBXFileReference;
+ lastKnownFileType = wrapper.framework;
+ name = QuickTime.framework;
+ path = /System/Library/Frameworks/QuickTime.framework;
+ refType = 0;
+ sourceTree = "<absolute>";
+ };
+ B382870B07CA9A4B006079D9 = {
+ isa = PBXFileReference;
+ lastKnownFileType = wrapper.framework;
+ name = System.framework;
+ path = /System/Library/Frameworks/System.framework;
+ refType = 0;
+ sourceTree = "<absolute>";
+ };
+ B3F0ECBF07E5CB8F0092E9FE = {
+ isa = PBXFileReference;
+ lastKnownFileType = "compiled.mach-o.dylib";
+ name = libiconv.dylib;
+ path = /usr/lib/libiconv.dylib;
+ refType = 0;
+ sourceTree = "<absolute>";
+ };
+ B3F0ECC007E5CB8F0092E9FE = {
+ fileRef = B3F0ECBF07E5CB8F0092E9FE;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B3F0ECC307E5CBD00092E9FE = {
+ isa = PBXFileReference;
+ lastKnownFileType = archive.ar;
+ name = "libwxtiff-2.5.a";
+ path = "/usr/local/lib/libwxtiff-2.5.a";
+ refType = 0;
+ sourceTree = "<absolute>";
+ };
+ B3F0ECC407E5CBD00092E9FE = {
+ isa = PBXFileReference;
+ lastKnownFileType = archive.ar;
+ name = "libwxpng-2.5.a";
+ path = "/usr/local/lib/libwxpng-2.5.a";
+ refType = 0;
+ sourceTree = "<absolute>";
+ };
+ B3F0ECC507E5CBD00092E9FE = {
+ isa = PBXFileReference;
+ lastKnownFileType = archive.ar;
+ name = "libwxjpeg-2.5.a";
+ path = "/usr/local/lib/libwxjpeg-2.5.a";
+ refType = 0;
+ sourceTree = "<absolute>";
+ };
+ B3F0ECC607E5CBD00092E9FE = {
+ fileRef = B3F0ECC307E5CBD00092E9FE;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B3F0ECC707E5CBD00092E9FE = {
+ fileRef = B3F0ECC407E5CBD00092E9FE;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B3F0ECC807E5CBD00092E9FE = {
+ fileRef = B3F0ECC507E5CBD00092E9FE;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ B3F0ECCB07E5CBF30092E9FE = {
+ isa = PBXFileReference;
+ lastKnownFileType = "compiled.mach-o.dylib";
+ name = libz.dylib;
+ path = /usr/lib/libz.dylib;
+ refType = 0;
+ sourceTree = "<absolute>";
+ };
+ B3F0ECCC07E5CBF30092E9FE = {
+ fileRef = B3F0ECCB07E5CBF30092E9FE;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+//B30
+//B31
+//B32
+//B33
+//B34
+//F50
+//F51
+//F52
+//F53
+//F54
+ F51C3DDC03C77A2301E7B49E = {
+ children = (
+ F51C3E0303C77AF401E7B49E,
+ F51C3DDD03C77A7801E7B49E,
+ F51C3DDE03C77A7801E7B49E,
+ F51C3DE103C77A7801E7B49E,
+ F51C3DE203C77A7801E7B49E,
+ F51C3DE303C77A7801E7B49E,
+ F51C3DE403C77A7801E7B49E,
+ F51C3DE503C77A7801E7B49E,
+ F51C3DE603C77A7801E7B49E,
+ F51C3DE703C77A7801E7B49E,
+ F51C3DE803C77A7801E7B49E,
+ F51C3DE903C77A7801E7B49E,
+ F51C3DEA03C77A7801E7B49E,
+ F51C3DEB03C77A7801E7B49E,
+ F51C3DEC03C77A7801E7B49E,
+ F51C3DED03C77A7801E7B49E,
+ F51C3DEE03C77A7801E7B49E,
+ F51C3DEF03C77A7801E7B49E,
+ F5E2F10905F7EFFC01A80003,
+ );
+ isa = PBXGroup;
+ name = TreeLib;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3DDD03C77A7801E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.cpp.cpp;
+ name = gtree.cpp;
+ path = TreeLib/gtree.cpp;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3DDE03C77A7801E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.c.h;
+ name = gtree.h;
+ path = TreeLib/gtree.h;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3DE103C77A7801E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.cpp.cpp;
+ name = Parse.cpp;
+ path = TreeLib/Parse.cpp;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3DE203C77A7801E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.c.h;
+ name = Parse.h;
+ path = TreeLib/Parse.h;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3DE303C77A7801E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.c.h;
+ name = profile.h;
+ path = TreeLib/profile.h;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3DE403C77A7801E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.cpp.cpp;
+ name = tokeniser.cpp;
+ path = TreeLib/tokeniser.cpp;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3DE503C77A7801E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.c.h;
+ name = tokeniser.h;
+ path = TreeLib/tokeniser.h;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3DE603C77A7801E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.cpp.cpp;
+ name = treedrawer.cpp;
+ path = TreeLib/treedrawer.cpp;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3DE703C77A7801E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.c.h;
+ name = treedrawer.h;
+ path = TreeLib/treedrawer.h;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3DE803C77A7801E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.cpp.cpp;
+ name = TreeLib.cpp;
+ path = TreeLib/TreeLib.cpp;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3DE903C77A7801E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.c.h;
+ name = TreeLib.h;
+ path = TreeLib/TreeLib.h;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3DEA03C77A7801E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.cpp.cpp;
+ name = treeorder.cpp;
+ path = TreeLib/treeorder.cpp;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3DEB03C77A7801E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.c.h;
+ name = treeorder.h;
+ path = TreeLib/treeorder.h;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3DEC03C77A7801E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.cpp.cpp;
+ name = treereader.cpp;
+ path = TreeLib/treereader.cpp;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3DED03C77A7801E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.c.h;
+ name = treereader.h;
+ path = TreeLib/treereader.h;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3DEE03C77A7801E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.cpp.cpp;
+ name = treewriter.cpp;
+ path = TreeLib/treewriter.cpp;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3DEF03C77A7801E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.c.h;
+ name = treewriter.h;
+ path = TreeLib/treewriter.h;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3E0303C77AF401E7B49E = {
+ children = (
+ F51C3E0403C77AF401E7B49E,
+ );
+ isa = PBXGroup;
+ name = gport;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3E0403C77AF401E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.c.h;
+ name = gdefs.h;
+ path = TreeLib/gport/gdefs.h;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3E0A03C77CB501E7B49E = {
+ children = (
+ F51C3E0B03C77CE101E7B49E,
+ F51C3E0C03C77CE101E7B49E,
+ F51C3E0D03C77CE101E7B49E,
+ F51C3E0E03C77CE101E7B49E,
+ F51C3E0F03C77CE101E7B49E,
+ F51C3E1003C77CE101E7B49E,
+ F51C3E1103C77CE101E7B49E,
+ F51C3E1203C77CE101E7B49E,
+ F51C3E1303C77CE101E7B49E,
+ F51C3E1403C77CE101E7B49E,
+ F51C3E1503C77CE101E7B49E,
+ F51C3E1603C77CE101E7B49E,
+ F51C3E1703C77CE101E7B49E,
+ F51C3E1803C77CE101E7B49E,
+ F51C3E1903C77CE101E7B49E,
+ F51C3E1A03C77CE101E7B49E,
+ F51C3E1B03C77CE101E7B49E,
+ F51C3E1C03C77CE101E7B49E,
+ F51C3E1D03C77CE101E7B49E,
+ F51C3E1E03C77CE101E7B49E,
+ F51C3E1F03C77CE101E7B49E,
+ F51C3E2003C77CE101E7B49E,
+ F51C3E2103C77CE101E7B49E,
+ F51C3E2203C77CE101E7B49E,
+ F51C3E2303C77CE101E7B49E,
+ F51C3E2403C77CE101E7B49E,
+ F51C3E2503C77CE101E7B49E,
+ F51C3E2603C77CE101E7B49E,
+ F51C3E2703C77CE101E7B49E,
+ F51C3E2803C77CE101E7B49E,
+ F51C3E2903C77CE101E7B49E,
+ F51C3E2A03C77CE101E7B49E,
+ );
+ isa = PBXGroup;
+ name = "ncl-2.0";
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3E0B03C77CE101E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.cpp.cpp;
+ name = assumptionsblock.cpp;
+ path = "ncl-2.0/src/assumptionsblock.cpp";
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3E0C03C77CE101E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.c.h;
+ name = assumptionsblock.h;
+ path = "ncl-2.0/src/assumptionsblock.h";
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3E0D03C77CE101E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.cpp.cpp;
+ name = charactersblock.cpp;
+ path = "ncl-2.0/src/charactersblock.cpp";
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3E0E03C77CE101E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.c.h;
+ name = charactersblock.h;
+ path = "ncl-2.0/src/charactersblock.h";
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3E0F03C77CE101E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.cpp.cpp;
+ name = datablock.cpp;
+ path = "ncl-2.0/src/datablock.cpp";
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3E1003C77CE101E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.c.h;
+ name = datablock.h;
+ path = "ncl-2.0/src/datablock.h";
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3E1103C77CE101E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.cpp.cpp;
+ name = discretedatum.cpp;
+ path = "ncl-2.0/src/discretedatum.cpp";
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3E1203C77CE101E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.c.h;
+ name = discretedatum.h;
+ path = "ncl-2.0/src/discretedatum.h";
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3E1303C77CE101E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.cpp.cpp;
+ name = discretematrix.cpp;
+ path = "ncl-2.0/src/discretematrix.cpp";
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3E1403C77CE101E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.c.h;
+ name = discretematrix.h;
+ path = "ncl-2.0/src/discretematrix.h";
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3E1503C77CE101E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.cpp.cpp;
+ name = distancedatum.cpp;
+ path = "ncl-2.0/src/distancedatum.cpp";
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3E1603C77CE101E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.c.h;
+ name = distancedatum.h;
+ path = "ncl-2.0/src/distancedatum.h";
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3E1703C77CE101E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.cpp.cpp;
+ name = distancesblock.cpp;
+ path = "ncl-2.0/src/distancesblock.cpp";
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3E1803C77CE101E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.c.h;
+ name = distancesblock.h;
+ path = "ncl-2.0/src/distancesblock.h";
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3E1903C77CE101E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.cpp.cpp;
+ name = nexus.cpp;
+ path = "ncl-2.0/src/nexus.cpp";
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3E1A03C77CE101E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.c.h;
+ name = nexus.h;
+ path = "ncl-2.0/src/nexus.h";
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3E1B03C77CE101E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.cpp.cpp;
+ name = nexusblock.cpp;
+ path = "ncl-2.0/src/nexusblock.cpp";
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3E1C03C77CE101E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.c.h;
+ name = nexusdefs.h;
+ path = "ncl-2.0/src/nexusdefs.h";
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3E1D03C77CE101E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.cpp.cpp;
+ name = nexustoken.cpp;
+ path = "ncl-2.0/src/nexustoken.cpp";
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3E1E03C77CE101E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.c.h;
+ name = nexustoken.h;
+ path = "ncl-2.0/src/nexustoken.h";
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3E1F03C77CE101E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.cpp.cpp;
+ name = nxsdate.cpp;
+ path = "ncl-2.0/src/nxsdate.cpp";
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3E2003C77CE101E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.c.h;
+ name = nxsdate.h;
+ path = "ncl-2.0/src/nxsdate.h";
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3E2103C77CE101E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.cpp.cpp;
+ name = nxsstring.cpp;
+ path = "ncl-2.0/src/nxsstring.cpp";
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3E2203C77CE101E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.c.h;
+ name = nxsstring.h;
+ path = "ncl-2.0/src/nxsstring.h";
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3E2303C77CE101E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.cpp.cpp;
+ name = setreader.cpp;
+ path = "ncl-2.0/src/setreader.cpp";
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3E2403C77CE101E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.c.h;
+ name = setreader.h;
+ path = "ncl-2.0/src/setreader.h";
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3E2503C77CE101E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.cpp.cpp;
+ name = taxablock.cpp;
+ path = "ncl-2.0/src/taxablock.cpp";
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3E2603C77CE101E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.c.h;
+ name = taxablock.h;
+ path = "ncl-2.0/src/taxablock.h";
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3E2703C77CE101E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.cpp.cpp;
+ name = treesblock.cpp;
+ path = "ncl-2.0/src/treesblock.cpp";
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3E2803C77CE101E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.c.h;
+ name = treesblock.h;
+ path = "ncl-2.0/src/treesblock.h";
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3E2903C77CE101E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.cpp.cpp;
+ name = xnexus.cpp;
+ path = "ncl-2.0/src/xnexus.cpp";
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3E2A03C77CE101E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.c.h;
+ name = xnexus.h;
+ path = "ncl-2.0/src/xnexus.h";
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3E4B03C77F0C01E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.cpp.cpp;
+ path = tdoc.cpp;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3E4C03C77F0C01E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.c.h;
+ path = tdoc.h;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3E4D03C77F0C01E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.c.h;
+ path = tproject.h;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3E4E03C77F0C01E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.cpp.cpp;
+ path = tv.cpp;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3E4F03C77F0C01E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.c.h;
+ path = tv.h;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3E5003C77F0C01E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.cpp.cpp;
+ path = tview.cpp;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F51C3E5103C77F0C01E7B49E = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.c.h;
+ path = tview.h;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F53CB88A03CB09B3012A40F8 = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.c.h;
+ path = treeorder_dialog.h;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F53CB88D03CB0A26012A40F8 = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.cpp.cpp;
+ path = treeorder_dialog.cpp;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F53CB89103CB2010012A40F8 = {
+ children = (
+ F53CB88A03CB09B3012A40F8,
+ F53CB88D03CB0A26012A40F8,
+ );
+ isa = PBXGroup;
+ name = Dialogs;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F5E2F10505F7EAD201A80003 = {
+ isa = PBXFileReference;
+ lastKnownFileType = image.icns;
+ name = app.icns;
+ path = bitmaps/mac/app.icns;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F5E2F10605F7EAD201A80003 = {
+ isa = PBXFileReference;
+ lastKnownFileType = image.icns;
+ name = doc.icns;
+ path = bitmaps/mac/doc.icns;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ F5E2F10905F7EFFC01A80003 = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.c.h;
+ name = nodeiterator.h;
+ path = TreeLib/nodeiterator.h;
+ refType = 4;
+ sourceTree = "<group>";
+ };
+ };
+ rootObject = 20286C28FDCF999611CA2CEA;
+}
Property changes on: trunk/packages/treeviewx/branches/upstream/current/tv.xcode/project.pbxproj
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/tv.xcode/rpage.pbxuser
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/tv.xcode/rpage.pbxuser 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/tv.xcode/rpage.pbxuser 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,1108 @@
+// !$*UTF8*$!
+{
+ 20286C28FDCF999611CA2CEA = {
+ activeBuildStyle = 05952DFCFFF02D1B11CA0E50;
+ activeExecutable = B30D63B107E1CF2B00F1DA33;
+ activeTarget = B30D635D07E1CF2B00F1DA33;
+ addToTargets = (
+ B30D635D07E1CF2B00F1DA33,
+ );
+ breakpoints = (
+ );
+ codeSenseManager = B382848E07CA934E006079D9;
+ executables = (
+ B30D63B107E1CF2B00F1DA33,
+ );
+ perUserDictionary = {
+ PBXConfiguration.PBXFileTableDataSource3.PBXErrorsWarningsDataSource = {
+ PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
+ PBXFileTableDataSourceColumnSortingKey = PBXErrorsWarningsDataSource_LocationID;
+ PBXFileTableDataSourceColumnWidthsKey = (
+ 20,
+ 298.8799,
+ 171.2085,
+ );
+ PBXFileTableDataSourceColumnsKey = (
+ PBXErrorsWarningsDataSource_TypeID,
+ PBXErrorsWarningsDataSource_MessageID,
+ PBXErrorsWarningsDataSource_LocationID,
+ );
+ };
+ PBXConfiguration.PBXFileTableDataSource3.PBXExecutablesDataSource = {
+ PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
+ PBXFileTableDataSourceColumnSortingKey = PBXExecutablesDataSource_NameID;
+ PBXFileTableDataSourceColumnWidthsKey = (
+ 22,
+ 304.7974,
+ 163.5835,
+ );
+ PBXFileTableDataSourceColumnsKey = (
+ PBXExecutablesDataSource_ActiveFlagID,
+ PBXExecutablesDataSource_NameID,
+ PBXExecutablesDataSource_CommentsID,
+ );
+ };
+ PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
+ PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
+ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
+ PBXFileTableDataSourceColumnWidthsKey = (
+ 20,
+ 275,
+ 20,
+ 54,
+ 43,
+ 43,
+ 20,
+ );
+ PBXFileTableDataSourceColumnsKey = (
+ PBXFileDataSource_FiletypeID,
+ PBXFileDataSource_Filename_ColumnID,
+ PBXFileDataSource_Built_ColumnID,
+ PBXFileDataSource_ObjectSize_ColumnID,
+ PBXFileDataSource_Errors_ColumnID,
+ PBXFileDataSource_Warnings_ColumnID,
+ PBXFileDataSource_Target_ColumnID,
+ );
+ };
+ PBXConfiguration.PBXFileTableDataSource3.PBXFindDataSource = {
+ PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
+ PBXFileTableDataSourceColumnSortingKey = PBXFindDataSource_LocationID;
+ PBXFileTableDataSourceColumnWidthsKey = (
+ 245.2974,
+ 248.2085,
+ );
+ PBXFileTableDataSourceColumnsKey = (
+ PBXFindDataSource_MessageID,
+ PBXFindDataSource_LocationID,
+ );
+ };
+ PBXConfiguration.PBXFileTableDataSource3.PBXSymbolsDataSource = {
+ PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
+ PBXFileTableDataSourceColumnSortingKey = PBXSymbolsDataSource_SymbolNameID;
+ PBXFileTableDataSourceColumnWidthsKey = (
+ 16,
+ 129.8008,
+ 159.0356,
+ 136.2085,
+ );
+ PBXFileTableDataSourceColumnsKey = (
+ PBXSymbolsDataSource_SymbolTypeIconID,
+ PBXSymbolsDataSource_SymbolNameID,
+ PBXSymbolsDataSource_SymbolTypeID,
+ PBXSymbolsDataSource_ReferenceNameID,
+ );
+ };
+ PBXConfiguration.PBXFileTableDataSource3.XCSCMDataSource = {
+ PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
+ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
+ PBXFileTableDataSourceColumnWidthsKey = (
+ 20,
+ 20,
+ 259,
+ 20,
+ 45,
+ 43,
+ 43,
+ 20,
+ );
+ PBXFileTableDataSourceColumnsKey = (
+ PBXFileDataSource_SCM_ColumnID,
+ PBXFileDataSource_FiletypeID,
+ PBXFileDataSource_Filename_ColumnID,
+ PBXFileDataSource_Built_ColumnID,
+ PBXFileDataSource_ObjectSize_ColumnID,
+ PBXFileDataSource_Errors_ColumnID,
+ PBXFileDataSource_Warnings_ColumnID,
+ PBXFileDataSource_Target_ColumnID,
+ );
+ };
+ PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = {
+ PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
+ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
+ PBXFileTableDataSourceColumnWidthsKey = (
+ 20,
+ 239,
+ 55,
+ 20,
+ 55,
+ 43,
+ 43,
+ );
+ PBXFileTableDataSourceColumnsKey = (
+ PBXFileDataSource_FiletypeID,
+ PBXFileDataSource_Filename_ColumnID,
+ PBXTargetDataSource_PrimaryAttribute,
+ PBXFileDataSource_Built_ColumnID,
+ PBXFileDataSource_ObjectSize_ColumnID,
+ PBXFileDataSource_Errors_ColumnID,
+ PBXFileDataSource_Warnings_ColumnID,
+ );
+ };
+ PBXPerProjectTemplateStateSaveDate = 132664769;
+ PBXPrepackagedSmartGroups_v2 = (
+ {
+ PBXTransientLocationAtTop = bottom;
+ absolutePathToBundle = "";
+ activationKey = OldTargetSmartGroup;
+ clz = PBXTargetSmartGroup;
+ description = "Displays all targets of the project.";
+ globalID = 1C37FABC04509CD000000102;
+ name = Targets;
+ preferences = {
+ image = Targets;
+ };
+ },
+ {
+ PBXTransientLocationAtTop = bottom;
+ absolutePathToBundle = "";
+ clz = PBXTargetSmartGroup2;
+ description = "Displays all targets of the project as well as nested build phases.";
+ globalID = 1C37FBAC04509CD000000102;
+ name = Targets;
+ preferences = {
+ image = Targets;
+ };
+ },
+ {
+ PBXTransientLocationAtTop = bottom;
+ absolutePathToBundle = "";
+ clz = PBXExecutablesSmartGroup;
+ description = "Displays all executables of the project.";
+ globalID = 1C37FAAC04509CD000000102;
+ name = Executables;
+ preferences = {
+ image = Executable;
+ };
+ },
+ {
+ " PBXTransientLocationAtTop " = bottom;
+ absolutePathToBundle = "";
+ clz = PBXErrorsWarningsSmartGroup;
+ description = "Displays files with errors or warnings.";
+ globalID = 1C08E77C0454961000C914BD;
+ name = "Errors and Warnings";
+ preferences = {
+ fnmatch = "";
+ image = WarningsErrors;
+ recursive = 1;
+ regex = "";
+ root = "<PROJECT>";
+ };
+ },
+ {
+ PBXTransientLocationAtTop = bottom;
+ absolutePathToBundle = "";
+ clz = PBXFilenameSmartGroup;
+ description = "Filters items in a given group (potentially recursively) based on matching the name with the regular expression of the filter.";
+ globalID = 1CC0EA4004350EF90044410B;
+ name = "Implementation Files";
+ preferences = {
+ canSave = 1;
+ fnmatch = "";
+ image = SmartFolder;
+ isLeaf = 0;
+ recursive = 1;
+ regex = "?*\\.[mcMC]";
+ root = "<PROJECT>";
+ };
+ },
+ {
+ PBXTransientLocationAtTop = bottom;
+ absolutePathToBundle = "";
+ clz = PBXFilenameSmartGroup;
+ description = "This group displays Interface Builder NIB Files.";
+ globalID = 1CC0EA4004350EF90041110B;
+ name = "NIB Files";
+ preferences = {
+ canSave = 1;
+ fnmatch = "*.nib";
+ image = SmartFolder;
+ isLeaf = 0;
+ recursive = 1;
+ regex = "";
+ root = "<PROJECT>";
+ };
+ },
+ {
+ PBXTransientLocationAtTop = no;
+ absolutePathToBundle = "";
+ clz = PBXFindSmartGroup;
+ description = "Displays Find Results.";
+ globalID = 1C37FABC05509CD000000102;
+ name = "Find Results";
+ preferences = {
+ image = spyglass;
+ };
+ },
+ {
+ PBXTransientLocationAtTop = no;
+ absolutePathToBundle = "";
+ clz = PBXBookmarksSmartGroup;
+ description = "Displays Project Bookmarks.";
+ globalID = 1C37FABC05539CD112110102;
+ name = Bookmarks;
+ preferences = {
+ image = Bookmarks;
+ };
+ },
+ {
+ PBXTransientLocationAtTop = bottom;
+ absolutePathToBundle = "";
+ clz = XCSCMSmartGroup;
+ description = "Displays files with interesting SCM status.";
+ globalID = E2644B35053B69B200211256;
+ name = SCM;
+ preferences = {
+ image = PBXRepository;
+ isLeaf = 0;
+ };
+ },
+ {
+ PBXTransientLocationAtTop = bottom;
+ absolutePathToBundle = "";
+ clz = PBXSymbolsSmartGroup;
+ description = "Displays all symbols for the project.";
+ globalID = 1C37FABC04509CD000100104;
+ name = "Project Symbols";
+ preferences = {
+ image = ProjectSymbols;
+ isLeaf = 1;
+ };
+ },
+ {
+ PBXTransientLocationAtTop = bottom;
+ absolutePathToBundle = "";
+ clz = PBXFilenameSmartGroup;
+ description = "Filters items in a given group (potentially recursively) based on matching the name with the regular expression of the filter.";
+ globalID = PBXTemplateMarker;
+ name = "Simple Filter SmartGroup";
+ preferences = {
+ canSave = 1;
+ fnmatch = "*.nib";
+ image = SmartFolder;
+ isLeaf = 0;
+ recursive = 1;
+ regex = "";
+ root = "<PROJECT>";
+ };
+ },
+ {
+ PBXTransientLocationAtTop = bottom;
+ absolutePathToBundle = "";
+ clz = PBXFilenameSmartGroup;
+ description = "Filters items in a given group (potentially recursively) based on matching the name with the regular expression of the filter.";
+ globalID = PBXTemplateMarker;
+ name = "Simple Regular Expression SmartGroup";
+ preferences = {
+ canSave = 1;
+ fnmatch = "";
+ image = SmartFolder;
+ isLeaf = 0;
+ recursive = 1;
+ regex = "?*\\.[mcMC]";
+ root = "<PROJECT>";
+ };
+ },
+ {
+ PBXTransientLocationAtTop = bottom;
+ clz = XDDesignSmartGroup;
+ description = "Displays Xdesign models";
+ globalID = 2E4A936305E6979E00701470;
+ name = Design;
+ preferences = {
+ image = Design;
+ isLeaf = 0;
+ };
+ },
+ );
+ PBXWorkspaceContents = (
+ {
+ LeftSlideOut = {
+ Split0 = {
+ Split0 = {
+ NavContent0 = {
+ bookmark = F585387106117B1901A80002;
+ history = (
+ F5E2F10B05F7F86201A80003,
+ F5E2F10D05F7F86201A80003,
+ F5E2F10E05F7F86201A80003,
+ F5E2F10F05F7F86201A80003,
+ F5E2F11005F7F86201A80003,
+ F5F3B9A406013AFC01A80002,
+ F5F3B9A506013AFC01A80002,
+ F5F3B9A606013AFC01A80002,
+ F5F3B9A706013AFC01A80002,
+ F585386F06117B1901A80002,
+ F5F3B9A306013AFC01A80002,
+ );
+ prevStack = (
+ F5E2F11205F7F86201A80003,
+ F5E2F11305F7F86201A80003,
+ F5E2F11405F7F86201A80003,
+ F5E2F11505F7F86201A80003,
+ F5E2F11605F7F86201A80003,
+ F5E2F11705F7F86201A80003,
+ F5E2F11805F7F86201A80003,
+ F5E2F11905F7F86201A80003,
+ F5E2F11A05F7F86201A80003,
+ F5E2F11B05F7F86201A80003,
+ F5E2F11C05F7F86201A80003,
+ F5E2F11D05F7F86201A80003,
+ F5E2F11E05F7F86201A80003,
+ F5E2F11F05F7F86201A80003,
+ F5E2F12005F7F86201A80003,
+ F5E2F12105F7F86201A80003,
+ F5E2F12205F7F86201A80003,
+ F5F3B9A906013AFC01A80002,
+ F5F3B9AA06013AFC01A80002,
+ F5F3B9AB06013AFC01A80002,
+ F5F3B9AC06013AFC01A80002,
+ F5F3B9AD06013AFC01A80002,
+ F5F3B9AE06013AFC01A80002,
+ F5F3B9AF06013AFC01A80002,
+ F5F3B9B006013AFC01A80002,
+ F585387006117B1901A80002,
+ );
+ };
+ NavCount = 1;
+ NavGeometry0 = {
+ Frame = "{{0, 0}, {560, 216}}";
+ NavBarVisible = YES;
+ };
+ };
+ SplitCount = 1;
+ Tab0 = {
+ Debugger = {
+ Split0 = {
+ SplitCount = 2;
+ };
+ SplitCount = 1;
+ TabCount = 2;
+ };
+ LauncherConfigVersion = 7;
+ };
+ Tab1 = {
+ LauncherConfigVersion = 3;
+ Runner = {
+ };
+ };
+ TabCount = 4;
+ };
+ SplitCount = 1;
+ Tab1 = {
+ OptionsSetName = "Hierarchy, all classes";
+ };
+ TabCount = 5;
+ };
+ },
+ );
+ PBXWorkspaceGeometries = (
+ {
+ ContentSize = "{775, 516}";
+ LeftSlideOut = {
+ ActiveTab = 3;
+ Collapsed = NO;
+ Frame = "{{0, 23}, {775, 493}}";
+ Split0 = {
+ ActiveTab = 2;
+ Collapsed = NO;
+ Frame = "{{215, 0}, {560, 493}}";
+ Split0 = {
+ Frame = "{{0, 277}, {560, 216}}";
+ };
+ SplitCount = 1;
+ Tab0 = {
+ Debugger = {
+ Collapsed = NO;
+ Frame = "{{0, 0}, {572, 214}}";
+ Split0 = {
+ Frame = "{{0, 24}, {572, 190}}";
+ Split0 = {
+ Frame = "{{0, 0}, {279, 190}}";
+ };
+ Split1 = {
+ DebugVariablesTableConfiguration = (
+ Name,
+ 123,
+ Value,
+ 85,
+ Summary,
+ 62.123,
+ );
+ Frame = "{{288, 0}, {284, 190}}";
+ };
+ SplitCount = 2;
+ };
+ SplitCount = 1;
+ Tab0 = {
+ Frame = "{{0, 0}, {100, 50}}";
+ };
+ Tab1 = {
+ Frame = "{{0, 0}, {100, 50}}";
+ };
+ TabCount = 2;
+ TabsVisible = YES;
+ };
+ Frame = "{{0, 0}, {572, 214}}";
+ LauncherConfigVersion = 7;
+ };
+ Tab1 = {
+ Frame = "{{0, 0}, {572, 125}}";
+ LauncherConfigVersion = 3;
+ Runner = {
+ Frame = "{{0, 0}, {572, 125}}";
+ };
+ };
+ Tab2 = {
+ BuildMessageFrame = "{{0, 0}, {562, 65}}";
+ BuildTranscriptFrame = "{{0, 74}, {562, 181}}";
+ Frame = "{{0, 0}, {560, 253}}";
+ };
+ Tab3 = {
+ Frame = "{{0, 0}, {572, 265}}";
+ };
+ TabCount = 4;
+ TabsVisible = YES;
+ };
+ SplitCount = 1;
+ Tab0 = {
+ Frame = "{{0, 0}, {260, 493}}";
+ GroupTreeTableConfiguration = (
+ SCMStatusColumn,
+ 22,
+ TargetStatusColumn,
+ 18,
+ MainColumn,
+ 205,
+ );
+ };
+ Tab1 = {
+ ClassesFrame = "{{0, 0}, {247, 330}}";
+ ClassesTreeTableConfiguration = (
+ PBXBookColumnIdentifier,
+ 20,
+ PBXClassColumnIdentifier,
+ 204,
+ );
+ Frame = "{{0, 0}, {245, 549}}";
+ MembersFrame = "{{0, 339}, {247, 210}}";
+ MembersTreeTableConfiguration = (
+ PBXBookColumnIdentifier,
+ 20,
+ PBXMethodColumnIdentifier,
+ 203,
+ );
+ };
+ Tab2 = {
+ Frame = "{{0, 0}, {226, 549}}";
+ };
+ Tab3 = {
+ Frame = "{{0, 0}, {191, 493}}";
+ TargetTableConfiguration = (
+ ActiveObject,
+ 16,
+ ObjectNames,
+ 202.296,
+ );
+ };
+ Tab4 = {
+ BreakpointsTreeTableConfiguration = (
+ breakpointColumn,
+ 138,
+ enabledColumn,
+ 31,
+ );
+ Frame = "{{0, 0}, {191, 549}}";
+ };
+ TabCount = 5;
+ TabsVisible = YES;
+ };
+ StatusViewVisible = YES;
+ Template = F5F68CF101725D4C0D7A8F4C;
+ ToolbarVisible = YES;
+ WindowLocation = "{-1, 168}";
+ },
+ );
+ PBXWorkspaceStateSaveDate = 132664769;
+ };
+ perUserProjectItems = {
+ B33EB38C07E6A61C00855069 = B33EB38C07E6A61C00855069;
+ B33EB38D07E6A61C00855069 = B33EB38D07E6A61C00855069;
+ B33EB38E07E6A61C00855069 = B33EB38E07E6A61C00855069;
+ B33EB38F07E6A61C00855069 = B33EB38F07E6A61C00855069;
+ B33EB39007E6A61C00855069 = B33EB39007E6A61C00855069;
+ B33EB39107E6A61C00855069 = B33EB39107E6A61C00855069;
+ B33EB39207E6A61C00855069 = B33EB39207E6A61C00855069;
+ B33EB39307E6A61C00855069 = B33EB39307E6A61C00855069;
+ B33EB39607E6A61C00855069 = B33EB39607E6A61C00855069;
+ B33EB39707E6A61C00855069 = B33EB39707E6A61C00855069;
+ B33EB39807E6A61C00855069 = B33EB39807E6A61C00855069;
+ B33EB39907E6A61C00855069 = B33EB39907E6A61C00855069;
+ B33EB39A07E6A61C00855069 = B33EB39A07E6A61C00855069;
+ B33EB39B07E6A61C00855069 = B33EB39B07E6A61C00855069;
+ B33EB39C07E6A61C00855069 = B33EB39C07E6A61C00855069;
+ B33EB39D07E6A61C00855069 = B33EB39D07E6A61C00855069;
+ B33EB39E07E6A61C00855069 = B33EB39E07E6A61C00855069;
+ B33EB3A007E6A68A00855069 = B33EB3A007E6A68A00855069;
+ B33EB3AA07E6F7C300855069 = B33EB3AA07E6F7C300855069;
+ B33EB3AB07E6F7C300855069 = B33EB3AB07E6F7C300855069;
+ B33EB3BC07E6FA1B00855069 = B33EB3BC07E6FA1B00855069;
+ B33EB3BD07E6FA1B00855069 = B33EB3BD07E6FA1B00855069;
+ B33EB3BE07E6FA1B00855069 = B33EB3BE07E6FA1B00855069;
+ B33EB3C107E6FA1B00855069 = B33EB3C107E6FA1B00855069;
+ B352DCF207E61CC400F87D4E = B352DCF207E61CC400F87D4E;
+ B359F62907CB9D5000F7069F = B359F62907CB9D5000F7069F;
+ B359F62F07CB9D5000F7069F = B359F62F07CB9D5000F7069F;
+ B359F63307CB9D5000F7069F = B359F63307CB9D5000F7069F;
+ B385B8CD07CE139B00E7D8EF = B385B8CD07CE139B00E7D8EF;
+ B3D7925D07E84E0700B56D1B = B3D7925D07E84E0700B56D1B;
+ B3D7925F07E84E0700B56D1B = B3D7925F07E84E0700B56D1B;
+ B3D7926507E8609F00B56D1B = B3D7926507E8609F00B56D1B;
+ B3D7926607E8609F00B56D1B = B3D7926607E8609F00B56D1B;
+ B3D7929007EAF31600B56D1B = B3D7929007EAF31600B56D1B;
+ B3F0ECAF07E5C9860092E9FE = B3F0ECAF07E5C9860092E9FE;
+ };
+ sourceControlManager = B382848D07CA934E006079D9;
+ userBuildSettings = {
+ };
+ };
+ B30D635D07E1CF2B00F1DA33 = {
+ activeExec = 0;
+ executables = (
+ B30D63B107E1CF2B00F1DA33,
+ );
+ };
+ B30D63B107E1CF2B00F1DA33 = {
+ activeArgIndex = 2147483647;
+ activeArgIndices = (
+ );
+ argumentStrings = (
+ );
+ configStateDict = {
+ };
+ cppStopOnCatchEnabled = 0;
+ cppStopOnThrowEnabled = 0;
+ customDataFormattersEnabled = 1;
+ debuggerPlugin = GDBDebugging;
+ disassemblyDisplayState = 0;
+ dylibVariantSuffix = "";
+ enableDebugStr = 1;
+ environmentEntries = (
+ );
+ isa = PBXExecutable;
+ libgmallocEnabled = 0;
+ name = "tv static";
+ savedGlobals = {
+ };
+ shlibInfoDictList = (
+ );
+ sourceDirectories = (
+ );
+ };
+ B33EB36D07E6A5BF00855069 = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {479, 364}}";
+ sepNavSelRange = "{0, 0}";
+ sepNavVisRect = "{{0, 0}, {479, 253}}";
+ };
+ };
+ B33EB36F07E6A5FE00855069 = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {479, 433}}";
+ sepNavSelRange = "{0, 0}";
+ sepNavVisRect = "{{0, 0}, {479, 253}}";
+ };
+ };
+ B33EB37007E6A5FE00855069 = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {479, 349}}";
+ sepNavSelRange = "{0, 0}";
+ sepNavVisRect = "{{0, 0}, {479, 253}}";
+ };
+ };
+ B33EB37107E6A5FE00855069 = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {479, 350}}";
+ sepNavSelRange = "{0, 0}";
+ sepNavVisRect = "{{0, 0}, {479, 253}}";
+ };
+ };
+ B33EB37207E6A5FE00855069 = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {479, 391}}";
+ sepNavSelRange = "{0, 0}";
+ sepNavVisRect = "{{0, 0}, {479, 253}}";
+ };
+ };
+ B33EB37307E6A5FE00855069 = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {479, 433}}";
+ sepNavSelRange = "{0, 0}";
+ sepNavVisRect = "{{0, 0}, {479, 253}}";
+ };
+ };
+ B33EB37407E6A5FE00855069 = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {479, 336}}";
+ sepNavSelRange = "{0, 0}";
+ sepNavVisRect = "{{0, 0}, {479, 253}}";
+ };
+ };
+ B33EB37507E6A5FE00855069 = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {479, 336}}";
+ sepNavSelRange = "{0, 0}";
+ sepNavVisRect = "{{0, 0}, {479, 253}}";
+ };
+ };
+ B33EB38C07E6A61C00855069 = {
+ fRef = F51C3E4C03C77F0C01E7B49E;
+ isa = PBXTextBookmark;
+ name = "tdoc.h: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 853;
+ vrLoc = 0;
+ };
+ B33EB38D07E6A61C00855069 = {
+ fRef = B33EB36D07E6A5BF00855069;
+ isa = PBXTextBookmark;
+ name = "copy.xpm: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 362;
+ vrLoc = 0;
+ };
+ B33EB38E07E6A61C00855069 = {
+ fRef = B33EB36F07E6A5FE00855069;
+ isa = PBXTextBookmark;
+ name = "internal.xpm: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 459;
+ vrLoc = 0;
+ };
+ B33EB38F07E6A61C00855069 = {
+ fRef = B33EB37007E6A5FE00855069;
+ isa = PBXTextBookmark;
+ name = "new.xpm: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 365;
+ vrLoc = 0;
+ };
+ B33EB39007E6A61C00855069 = {
+ fRef = B33EB37107E6A5FE00855069;
+ isa = PBXTextBookmark;
+ name = "next.xpm: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 372;
+ vrLoc = 0;
+ };
+ B33EB39107E6A61C00855069 = {
+ fRef = B33EB37207E6A5FE00855069;
+ isa = PBXTextBookmark;
+ name = "open.xpm: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 358;
+ vrLoc = 0;
+ };
+ B33EB39207E6A61C00855069 = {
+ fRef = B33EB37407E6A5FE00855069;
+ isa = PBXTextBookmark;
+ name = "phylogram.xpm: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 513;
+ vrLoc = 0;
+ };
+ B33EB39307E6A61C00855069 = {
+ fRef = B33EB37507E6A5FE00855069;
+ isa = PBXTextBookmark;
+ name = "previous.xpm: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 512;
+ vrLoc = 0;
+ };
+ B33EB39607E6A61C00855069 = {
+ fRef = F51C3E4C03C77F0C01E7B49E;
+ isa = PBXTextBookmark;
+ name = "tdoc.h: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 853;
+ vrLoc = 0;
+ };
+ B33EB39707E6A61C00855069 = {
+ fRef = B33EB36D07E6A5BF00855069;
+ isa = PBXTextBookmark;
+ name = "copy.xpm: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 362;
+ vrLoc = 0;
+ };
+ B33EB39807E6A61C00855069 = {
+ fRef = B33EB36F07E6A5FE00855069;
+ isa = PBXTextBookmark;
+ name = "internal.xpm: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 459;
+ vrLoc = 0;
+ };
+ B33EB39907E6A61C00855069 = {
+ fRef = B33EB37007E6A5FE00855069;
+ isa = PBXTextBookmark;
+ name = "new.xpm: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 365;
+ vrLoc = 0;
+ };
+ B33EB39A07E6A61C00855069 = {
+ fRef = B33EB37107E6A5FE00855069;
+ isa = PBXTextBookmark;
+ name = "next.xpm: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 372;
+ vrLoc = 0;
+ };
+ B33EB39B07E6A61C00855069 = {
+ fRef = B33EB37207E6A5FE00855069;
+ isa = PBXTextBookmark;
+ name = "open.xpm: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 358;
+ vrLoc = 0;
+ };
+ B33EB39C07E6A61C00855069 = {
+ fRef = B33EB37307E6A5FE00855069;
+ isa = PBXTextBookmark;
+ name = "paste.xpm: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 326;
+ vrLoc = 0;
+ };
+ B33EB39D07E6A61C00855069 = {
+ fRef = B33EB37407E6A5FE00855069;
+ isa = PBXTextBookmark;
+ name = "phylogram.xpm: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 513;
+ vrLoc = 0;
+ };
+ B33EB39E07E6A61C00855069 = {
+ fRef = B33EB37507E6A5FE00855069;
+ isa = PBXTextBookmark;
+ name = "previous.xpm: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 512;
+ vrLoc = 0;
+ };
+ B33EB3A007E6A68A00855069 = {
+ fRef = B33EB37307E6A5FE00855069;
+ isa = PBXTextBookmark;
+ name = "paste.xpm: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 326;
+ vrLoc = 0;
+ };
+ B33EB3AA07E6F7C300855069 = {
+ fRef = F5E2F10505F7EAD201A80003;
+ isa = PBXBookmark;
+ };
+ B33EB3AB07E6F7C300855069 = {
+ fRef = F5E2F10605F7EAD201A80003;
+ isa = PBXBookmark;
+ };
+ B33EB3BC07E6FA1B00855069 = {
+ fRef = F51C3E4E03C77F0C01E7B49E;
+ isa = PBXTextBookmark;
+ name = "MyApp::CreateChildFrame";
+ rLen = 23;
+ rLoc = 8990;
+ rType = 0;
+ vrLen = 401;
+ vrLoc = 12632;
+ };
+ B33EB3BD07E6FA1B00855069 = {
+ fRef = F51C3E4F03C77F0C01E7B49E;
+ isa = PBXTextBookmark;
+ name = "tv.h: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 853;
+ vrLoc = 0;
+ };
+ B33EB3BE07E6FA1B00855069 = {
+ fRef = F5E2F10505F7EAD201A80003;
+ isa = PBXBookmark;
+ };
+ B33EB3C107E6FA1B00855069 = {
+ fRef = F51C3E4F03C77F0C01E7B49E;
+ isa = PBXTextBookmark;
+ name = "tv.h: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 853;
+ vrLoc = 0;
+ };
+ B352DCF207E61CC400F87D4E = {
+ fRef = F51C3E5003C77F0C01E7B49E;
+ isa = PBXTextBookmark;
+ name = "tview.cpp: 1039";
+ rLen = 0;
+ rLoc = 27314;
+ rType = 0;
+ vrLen = 427;
+ vrLoc = 16741;
+ };
+ B359F62907CB9D5000F7069F = {
+ fRef = F51C3E4D03C77F0C01E7B49E;
+ isa = PBXTextBookmark;
+ name = "tproject.h: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 764;
+ vrLoc = 0;
+ };
+ B359F62F07CB9D5000F7069F = {
+ fRef = F51C3E5003C77F0C01E7B49E;
+ isa = PBXTextBookmark;
+ name = "tview.cpp: 723";
+ rLen = 0;
+ rLoc = 17146;
+ rType = 0;
+ vrLen = 464;
+ vrLoc = 16994;
+ };
+ B359F63307CB9D5000F7069F = {
+ fRef = F51C3E4D03C77F0C01E7B49E;
+ isa = PBXTextBookmark;
+ name = "tproject.h: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 764;
+ vrLoc = 0;
+ };
+ B382848D07CA934E006079D9 = {
+ fallbackIsa = XCSourceControlManager;
+ isSCMEnabled = 1;
+ isa = PBXSourceControlManager;
+ scmConfiguration = {
+ };
+ scmType = scm.cvs;
+ };
+ B382848E07CA934E006079D9 = {
+ indexTemplatePath = "";
+ isa = PBXCodeSenseManager;
+ usesDefaults = 1;
+ wantsCodeCompletion = 1;
+ wantsCodeCompletionAutoSuggestions = 0;
+ wantsCodeCompletionCaseSensitivity = 1;
+ wantsCodeCompletionListAlways = 1;
+ wantsCodeCompletionOnlyMatchingItems = 1;
+ wantsCodeCompletionParametersIncluded = 1;
+ wantsCodeCompletionPlaceholdersInserted = 1;
+ wantsCodeCompletionTabCompletes = 1;
+ wantsIndex = 1;
+ };
+ B38284AC07CA9648006079D9 = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {555, 2085}}";
+ sepNavSelRange = "{0, 0}";
+ sepNavVisRect = "{{0, 0}, {555, 564}}";
+ sepNavWindowFrame = "{{150, 99}, {750, 558}}";
+ };
+ };
+ B385B8CD07CE139B00E7D8EF = {
+ fRef = F51C3E4E03C77F0C01E7B49E;
+ isa = PBXTextBookmark;
+ name = picture;
+ rLen = 7;
+ rLoc = 10567;
+ rType = 0;
+ vrLen = 775;
+ vrLoc = 9826;
+ };
+ B3D7925D07E84E0700B56D1B = {
+ fRef = F5E2F10605F7EAD201A80003;
+ isa = PBXBookmark;
+ };
+ B3D7925F07E84E0700B56D1B = {
+ fRef = F5E2F10605F7EAD201A80003;
+ isa = PBXBookmark;
+ };
+ B3D7926507E8609F00B56D1B = {
+ isa = PBXTargetBookmark;
+ trg = B30D635D07E1CF2B00F1DA33;
+ uiCtxt = {
+ TOCViewDetailVisibleRect = "{{0, 236}, {346, 236}}";
+ TOCViewExpandedItems = (
+ "com.apple.target-editor-pane.settings",
+ "com.apple.target-editor-pane.settings.simple",
+ "com.apple.target-editor-pane.info-plist",
+ "com.apple.target-editor-pane.info-plist.simple",
+ "com.apple.target-editor-pane.buildphases",
+ );
+ TOCViewMasterVisibleRect = "{{0, 0}, {133, 236}}";
+ TOCViewSelectedItems = (
+ "com.apple.target-editor-pane.settings.compiler.gcc",
+ );
+ };
+ };
+ B3D7926607E8609F00B56D1B = {
+ isa = PBXTargetBookmark;
+ trg = B30D635D07E1CF2B00F1DA33;
+ uiCtxt = {
+ TOCViewDetailVisibleRect = "{{0, 236}, {346, 236}}";
+ TOCViewExpandedItems = (
+ "com.apple.target-editor-pane.settings",
+ "com.apple.target-editor-pane.settings.simple",
+ "com.apple.target-editor-pane.info-plist",
+ "com.apple.target-editor-pane.info-plist.simple",
+ "com.apple.target-editor-pane.buildphases",
+ );
+ TOCViewMasterVisibleRect = "{{0, 0}, {133, 236}}";
+ TOCViewSelectedItems = (
+ "com.apple.target-editor-pane.settings.compiler.gcc",
+ );
+ };
+ };
+ B3D7929007EAF31600B56D1B = {
+ fRef = F51C3E4E03C77F0C01E7B49E;
+ isa = PBXTextBookmark;
+ name = "MyApp::CreateChildFrame";
+ rLen = 23;
+ rLoc = 8990;
+ rType = 0;
+ vrLen = 401;
+ vrLoc = 12632;
+ };
+ B3F0ECAF07E5C9860092E9FE = {
+ isa = PBXTargetBookmark;
+ trg = B30D635D07E1CF2B00F1DA33;
+ };
+ F51C3DDD03C77A7801E7B49E = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {692, 8231}}";
+ sepNavSelRange = "{8606, 33}";
+ sepNavVisRect = "{{0, 4676}, {459, 183}}";
+ };
+ };
+ F51C3DDE03C77A7801E7B49E = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {512, 2099}}";
+ sepNavSelRange = "{1196, 23}";
+ sepNavVisRect = "{{0, 420}, {459, 183}}";
+ };
+ };
+ F51C3DE303C77A7801E7B49E = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {842, 11787}}";
+ sepNavSelRange = "{7266, 0}";
+ sepNavVisRect = "{{0, 3671}, {711, 428}}";
+ sepNavWindowFrame = "{{188, 154}, {750, 558}}";
+ };
+ };
+ F51C3E1D03C77CE101E7B49E = {
+ uiCtxt = {
+ sepNavWindowFrame = "{{15, 71}, {750, 502}}";
+ };
+ };
+ F51C3E4B03C77F0C01E7B49E = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {711, 1203}}";
+ sepNavSelRange = "{0, 0}";
+ sepNavVisRect = "{{0, 0}, {711, 428}}";
+ sepNavWindowFrame = "{{58, 183}, {750, 558}}";
+ };
+ };
+ F51C3E4D03C77F0C01E7B49E = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {626, 1581}}";
+ sepNavSelRange = "{0, 0}";
+ sepNavVisRect = "{{0, 0}, {433, 225}}";
+ sepNavWindowFrame = "{{38, 50}, {750, 502}}";
+ };
+ };
+ F51C3E4E03C77F0C01E7B49E = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {986, 8021}}";
+ sepNavSelRange = "{8990, 23}";
+ sepNavVisRect = "{{0, 5306}, {479, 253}}";
+ sepNavWindowFrame = "{{90, 165}, {750, 558}}";
+ };
+ };
+ F51C3E4F03C77F0C01E7B49E = {
+ uiCtxt = {
+ sepNavWindowFrame = "{{15, 71}, {750, 502}}";
+ };
+ };
+ F51C3E5003C77F0C01E7B49E = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {764, 14559}}";
+ sepNavSelRange = "{2116, 0}";
+ sepNavVisRect = "{{0, 4793}, {711, 428}}";
+ sepNavWindowFrame = "{{73, 122}, {750, 558}}";
+ };
+ };
+ F51C3E5103C77F0C01E7B49E = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {711, 2212}}";
+ sepNavSelRange = "{4061, 0}";
+ sepNavVisRect = "{{0, 1783}, {711, 428}}";
+ sepNavWindowFrame = "{{127, 120}, {750, 558}}";
+ };
+ };
+ F53CB88A03CB09B3012A40F8 = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {711, 559}}";
+ sepNavSelRange = "{1256, 0}";
+ sepNavVisRect = "{{0, 131}, {711, 428}}";
+ sepNavWindowFrame = "{{122, 120}, {750, 558}}";
+ };
+ };
+ F53CB88D03CB0A26012A40F8 = {
+ uiCtxt = {
+ sepNavWindowFrame = "{{15, 71}, {750, 502}}";
+ };
+ };
+ F5E2F10505F7EAD201A80003 = {
+ uiCtxt = {
+ sepNavWindowFrame = "{{81, 162}, {750, 558}}";
+ };
+ };
+}
Property changes on: trunk/packages/treeviewx/branches/upstream/current/tv.xcode/rpage.pbxuser
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/tview.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/tview.cpp 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/tview.cpp 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,1039 @@
+/*
+ * TreeView
+ * A phylogenetic tree viewer.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+ // $Id: tview.cpp,v 1.37 2005/08/31 08:55:13 rdmp1c Exp $
+
+#ifdef __GNUG__
+// #pragma implementation
+#endif
+
+// TreeLib (must go before any wx stuff to avoid clash between STL and Windows min/max)
+#include "TreeLib.h"
+#include "Parse.h"
+#include "treedrawer.h"
+#include "treeorder.h"
+
+// For compilers that support precompilation, includes "wx/wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+#pragma hdrstop
+#endif
+
+#ifndef WX_PRECOMP
+#include "wx/wx.h"
+#endif
+
+#if !wxUSE_DOC_VIEW_ARCHITECTURE
+#error You must set wxUSE_DOC_VIEW_ARCHITECTURE to 1 in setup.h!
+#endif
+
+#include <wx/clipbrd.h>
+#include <wx/fontdlg.h>
+#include <wx/metafile.h>
+#include <wx/filename.h>
+
+// Use the native Mac OS X font dialog
+#ifdef __WXMAC__
+ #undef wxFontDialog
+ #include "wx/mac/fontdlg.h"
+#endif
+
+// Pictures
+
+#ifdef __WXMSW__
+#else
+#ifdef USE_SVG
+ #include <wx/svg/dcsvg.h>
+#endif
+#endif
+
+// GUI interface
+#include "tv.h"
+#include "tdoc.h"
+#include "tview.h"
+
+// Dialogs
+#include "treeorder_dialog.h"
+
+#if wxUSE_PRINTING_ARCHITECTURE
+class WXDLLEXPORT wxTVPrintout : public wxDocPrintout
+{
+public:
+ wxTVPrintout (wxView *view = (wxView *) NULL, const wxString& title = wxT("Printout")) : wxDocPrintout (view, title) {};
+ bool OnPrintPage(int page);
+};
+#endif // wxUSE_PRINTING_ARCHITECTURE
+
+//------------------------------------------------------------------------------
+// The wxWindows Printing Framework scales the printout to the screen image,
+// whereas I want to print the tree on the whole page, regardless of how it looks
+// on screen. To do this we extend wxDocPrintout to compute the size of the page
+// and to set the flag "printing" in the associated TView window before calling
+// the ancestral OnPrintPage. This lets TView:OnDraw know whether to scale the tree
+// for the screen or for the printed page.
+bool wxTVPrintout::OnPrintPage(int page)
+{
+ bool result = false;
+
+ TView *t = (TView *)GetView();
+ if (t)
+ {
+ int w_mm, h_mm;
+ GetPageSizeMM (&w_mm, &h_mm);
+
+ // Page size in points
+ t->page_width = (int) ((float)(w_mm * 72.0) / 25.4);
+ t->page_height = (int) ((float)(h_mm * 72.0) / 25.4);
+ t->printing = true;
+ }
+
+ result = wxDocPrintout::OnPrintPage (page);
+
+ if (t)
+ {
+ t->printing = false;
+ }
+
+ return result;
+}
+
+
+
+
+IMPLEMENT_DYNAMIC_CLASS(TView, wxView)
+
+/*
+BEGIN_EVENT_TABLE(DrawingView, wxView)
+ EVT_MENU(DOODLE_CUT, DrawingView::OnCut)
+END_EVENT_TABLE() */
+
+
+
+
+
+
+//------------------------------------------------------------------------------
+TView::TView ()
+{
+ canvas = (MyCanvas *) NULL;
+ frame = (wxMDIChildFrame *) NULL;
+ TreeStyleCmd = SLANTED_TREE_CMD;
+ Order = DEFAULT_ORDER;
+
+ LeafFont = *wxSWISS_FONT;
+
+ printing = false;
+
+ magnification = 1;
+ mShowInternalLabels = false;
+}
+
+//------------------------------------------------------------------------------
+wxPrintout *TView::OnCreatePrintout()
+{
+ wxDocPrintout *p = new wxTVPrintout (this);
+ return p;
+}
+
+//------------------------------------------------------------------------------
+// What to do when a view is created. Creates actual
+// windows for displaying the view.
+bool TView::OnCreate(wxDocument *doc, long WXUNUSED(flags) )
+{
+ frame = wxGetApp().CreateChildFrame(doc, this, TRUE);
+ frame->SetTitle(wxT("TView"));
+
+ canvas = GetMainFrame()->CreateCanvas(this, frame);
+#ifdef __X__
+ // X seems to require a forced resize
+ int x, y;
+ frame->GetSize(&x, &y);
+ frame->SetSize(-1, -1, x, y);
+#endif
+ frame->Show(TRUE);
+ Activate(TRUE);
+
+ return TRUE;
+}
+
+
+//------------------------------------------------------------------------------
+void TView::OnSavePicture (wxCommandEvent& WXUNUSED(event))
+{
+#ifdef __WXMSW__
+ // Use metafiles for Windows
+ wxString pictureFileName = GetFrame()->GetTitle();
+ pictureFileName += wxT(".emf");
+ wxFrame *f = GetMainFrame();
+ wxFileDialog dialog((wxWindow *)f, "Save Picture as", "", pictureFileName,
+ "Enhanced metafile (*.emf)|*.emf",
+ wxSAVE|wxOVERWRITE_PROMPT);
+
+ if (dialog.ShowModal() == wxID_OK)
+ {
+ wxMetafileDC pictureDC (dialog.GetPath(), 600, 650) ;
+ OnDraw (&pictureDC);
+ pictureDC.Close();
+ }
+#else
+#ifdef USE_SVG
+ wxString pictureFileName = frame->GetTitle();
+ // Use SVG on other platforms
+ pictureFileName += wxT(".svg");
+ #ifdef __WXMAC__
+ wxFrame *f = GetFrame();
+ #else
+ wxFrame *f = GetMainFrame();
+ #endif
+ wxFileDialog dialog((wxWindow *)f, "Save Picture as", "", pictureFileName,
+ "SVG vector picture files (*.svg)|*.svg",
+ wxSAVE|wxOVERWRITE_PROMPT);
+
+ if (dialog.ShowModal() == wxID_OK)
+ {
+ wxSVGFileDC pictureDC (dialog.GetPath(), 600, 650) ;
+ OnDraw (&pictureDC);
+ }
+#endif
+#endif
+}
+
+
+//------------------------------------------------------------------------------
+// Sneakily gets used for default print/preview
+// as well as drawing on the screen.
+void TView::OnDraw(wxDC *dc)
+{
+ if (p.GetNumTrees() > 0)
+ {
+ dc->SetFont(LeafFont);
+ wxPen pen (*wxBLACK_PEN);
+ pen.SetCap (wxCAP_PROJECTING);
+ dc->SetPen(pen);
+
+ Tree t = p.GetCurrentTree();
+ t.Update();
+
+ int width, height;
+ if (printing)
+ {
+ width = page_width;
+ height = page_height;
+#if defined(__WXGTK__) || defined(__WXMOTIF__)
+ height -= 72;
+#endif
+ }
+ else
+ if (magnification == 1)
+ {
+ canvas->GetClientSize (&width, &height);
+ }
+ else
+ {
+ int ignore;
+ canvas->GetVirtualSize (&ignore, &height);
+ canvas->GetClientSize (&width, &ignore);
+ } wxRect r (0, 0, width, height);
+
+#if defined(__WXGTK__) || defined(__WXMOTIF__)
+ if (printing)
+ {
+ r.Offset (0, 72);
+ }
+#endif
+
+
+ // Ensure a little space around the tree
+ r.Inflate (-20, -20);
+
+ t.MakeNodeList();
+ int maxlen = 0;
+ for (int i = 0; i < t.GetNumLeaves(); i++)
+ {
+ wxCoord w, h;
+ Node *p;
+ p = t[i];
+ wxString s;
+#if wxUSE_UNICODE
+ char buf[256];
+ strcpy (buf, p->GetLabel().c_str());
+ wchar_t wbuf[256];
+ mbstowcs (wbuf, buf, size_t(wbuf));
+ s << wbuf;
+#else
+ s << p->GetLabel().c_str();
+#endif
+ dc->GetTextExtent (s, &w, &h);
+ if (w > maxlen)
+ maxlen = w;
+ }
+ r.SetWidth (r.GetWidth() - maxlen);
+
+ if (Order != DEFAULT_ORDER)
+ {
+ TreeOrder *order = NULL;
+ switch (Order)
+ {
+ case ALPHA_ORDER:
+ order = new AlphaOrder (&t);
+ break;
+ case LEFT_ORDER:
+ order = new LeftOrder (&t);
+ break;
+ case RIGHT_ORDER:
+ order = new RightOrder (&t);
+ break;
+ }
+ order->Order ();
+ delete order;
+ }
+
+
+ TreeDrawer *td = NULL;
+ switch (TreeStyleCmd)
+ {
+ case SLANTED_TREE_CMD:
+ td = new TreeDrawer (&t);
+ break;
+ case RECTANGULAR_TREE_CMD:
+ td = new RectangleTreeDrawer (&t);
+ break;
+ case PHYLOGRAM_CMD:
+ td = new PhylogramDrawer (&t);
+ break;
+ }
+ td->SetDC (dc);
+ td->SetRect (r.GetLeft(), r.GetTop(), r.GetRight(), r.GetBottom());
+ td->CalcCoordinates ();
+ td->SetPenWidth (2);
+ td->SetDrawInternalLabels (mShowInternalLabels);
+ td->Draw ();
+ delete td;
+ }
+}
+
+//------------------------------------------------------------------------------
+void TView::OnUpdate(wxView *WXUNUSED(sender), wxObject *WXUNUSED(hint))
+{
+ if (canvas)
+ canvas->Refresh();
+
+/* Is the following necessary?
+#ifdef __WXMSW__
+ if (canvas)
+ canvas->Refresh();
+#else
+ if (canvas)
+ {
+ wxClientDC dc(canvas);
+ dc.Clear();
+ OnDraw(& dc);
+ }
+#endif
+*/
+}
+
+//------------------------------------------------------------------------------
+// Clean up windows used for displaying the view.
+bool TView::OnClose(bool deleteWindow)
+{
+ if (!GetDocument()->Close())
+ return FALSE;
+
+ // Clear the canvas in case we're in single-window mode,
+ // and the canvas stays.
+#if (wxMINOR_VERSION > 4) // from 2.5 Clear is deprecated
+ canvas->ClearBackground();
+#else
+ canvas->Clear();
+#endif
+
+ canvas->view = (wxView *) NULL;
+ canvas = (MyCanvas *) NULL;
+
+ wxString s(wxTheApp->GetAppName());
+ if (frame)
+ frame->SetTitle(s);
+
+ SetFrame((wxFrame*)NULL);
+
+ Activate(FALSE);
+
+ if (deleteWindow)
+ {
+ delete frame;
+ return TRUE;
+ }
+ return TRUE;
+}
+
+//------------------------------------------------------------------------------
+bool TView::ReadTrees (const wxString &filename)
+{
+ bool result = false;
+ ifstream f;
+ f.open (filename.mb_str(), ios::binary | ios::in);
+ if (p.ReadTrees (f))
+ {
+ // Set window name to that of file
+ wxFileName fn (filename);
+ wxString title = fn.GetName();
+ if (fn.HasExt())
+ {
+ title += wxT(".");
+ title += fn.GetExt();
+ }
+ frame->SetTitle(title);
+
+ result = true;
+ }
+ else
+ {
+ wxMessageBox(wxT("Failed to read trees"), wxT("ReadTrees"), wxICON_EXCLAMATION | wxOK);
+ result = false;
+ }
+ f.close();
+ return result;
+}
+
+//------------------------------------------------------------------------------
+bool TView::WriteTrees (const wxString &filename)
+{
+ bool result = false;
+ ofstream f (filename.mb_str());
+ if (p.WriteTrees (f))
+ {
+ // Set window name to that of file
+ wxFileName fn (filename);
+ wxString title = fn.GetName();
+ if (fn.HasExt())
+ {
+ title += wxT(".");
+ title += fn.GetExt();
+ }
+ frame->SetTitle(title);
+
+ result = true;
+ }
+ else
+ {
+ wxMessageBox(wxT("Failed to write trees"), wxT("TreeView X"), wxICON_EXCLAMATION | wxOK);
+ result = false;
+ }
+ f.close();
+ return result;
+}
+
+//------------------------------------------------------------------------------
+void TView::OnActivateView (bool activate, wxView *activeView, wxView *deactiveView)
+{
+ if (activate)
+ {
+#ifdef __WXMAC__
+ wxToolBar* toolBar = frame->GetToolBar();
+#else
+ wxToolBar* toolBar = GetMainFrame()->GetToolBar();
+#endif
+ wxMenuBar* menuBar = frame->GetMenuBar();
+
+ if (p.GetNumTrees() > 0)
+ {
+ toolBar->EnableTool (PREVIOUS_TREE_CMD, (p.GetCurrentTreeNumber() > 0));
+ toolBar->EnableTool (NEXT_TREE_CMD, (p.GetCurrentTreeNumber() < (p.GetNumTrees() - 1)));
+ toolBar->EnableTool (SLANTED_TREE_CMD, true);
+ toolBar->EnableTool (RECTANGULAR_TREE_CMD, true);
+ toolBar->EnableTool (PHYLOGRAM_CMD, p.CurrentTreeHasEdgeLengths());
+ toolBar->ToggleTool (SLANTED_TREE_CMD, FALSE );
+ toolBar->ToggleTool (RECTANGULAR_TREE_CMD, FALSE );
+ toolBar->ToggleTool (PHYLOGRAM_CMD, FALSE );
+
+#ifndef __WXMOTIF__
+ menuBar->Enable (COPY_AS_TEXT_CMD, true);
+#endif
+
+ menuBar->Enable (SLANTED_TREE_CMD, true);
+ menuBar->Enable (RECTANGULAR_TREE_CMD, true);
+ menuBar->Enable (PHYLOGRAM_CMD, p.CurrentTreeHasEdgeLengths());
+ menuBar->Check (SLANTED_TREE_CMD, false );
+ menuBar->Check (RECTANGULAR_TREE_CMD, false );
+ menuBar->Check (PHYLOGRAM_CMD, false );
+ menuBar->Enable (CHOOSE_TREE_CMD, (p.GetNumTrees() > 1));
+
+ menuBar->Enable (INTERNAL_LABELS_CMD, p.CurrentTreeHasInternallabels());
+ menuBar->Check (INTERNAL_LABELS_CMD, mShowInternalLabels );
+ toolBar->EnableTool (INTERNAL_LABELS_CMD, p.CurrentTreeHasInternallabels());
+ toolBar->ToggleTool (INTERNAL_LABELS_CMD, mShowInternalLabels );
+
+
+ ShowTreeName ();
+ TreeStyleMenu (TreeStyleCmd);
+ }
+ else
+ {
+ toolBar->EnableTool (PREVIOUS_TREE_CMD, false);
+ toolBar->EnableTool (NEXT_TREE_CMD, false);
+ toolBar->EnableTool (PREVIOUS_TREE_CMD, false);
+ toolBar->EnableTool (SLANTED_TREE_CMD, false);
+ toolBar->EnableTool (RECTANGULAR_TREE_CMD, false);
+ toolBar->EnableTool (PHYLOGRAM_CMD, false);
+
+ menuBar->Enable (COPY_AS_TEXT_CMD, false);
+ menuBar->Enable (SLANTED_TREE_CMD, false);
+ menuBar->Enable (RECTANGULAR_TREE_CMD, false);
+ menuBar->Enable (PHYLOGRAM_CMD, false);
+ menuBar->Enable (INTERNAL_LABELS_CMD, false );
+
+ }
+ }
+}
+
+//------------------------------------------------------------------------------
+void TView::PreviousTree (wxCommandEvent& WXUNUSED(event))
+{
+#ifdef __WXMAC__
+ wxToolBar* toolBar = frame->GetToolBar();
+#else
+ wxToolBar* toolBar = GetMainFrame()->GetToolBar();
+#endif
+ int n = p.GetCurrentTreeNumber ();
+ if (n >= 0)
+ {
+ n--;
+ p.SetCurrentTreeNumber (n);
+ if (n == 0)
+ toolBar->EnableTool (PREVIOUS_TREE_CMD, false);
+ toolBar->EnableTool (NEXT_TREE_CMD, true);
+ TreeStyleMenu(TreeStyleCmd);
+ ShowTreeName ();
+ OnUpdate (this, NULL); // Ensure we redraw window
+ }
+}
+
+//------------------------------------------------------------------------------
+void TView::NextTree (wxCommandEvent& WXUNUSED(event))
+{
+#ifdef __WXMAC__
+ wxToolBar* toolBar = frame->GetToolBar();
+#else
+ wxToolBar* toolBar = GetMainFrame()->GetToolBar();
+#endif
+ int n = p.GetCurrentTreeNumber ();
+
+ if (n < p.GetNumTrees () - 1)
+ {
+ n++;
+ p.SetCurrentTreeNumber (n);
+ if (n == (p.GetNumTrees () - 1))
+ toolBar->EnableTool (NEXT_TREE_CMD, false);
+ toolBar->EnableTool (PREVIOUS_TREE_CMD, true);
+ TreeStyleMenu(TreeStyleCmd);
+ ShowTreeName ();
+ OnUpdate (this, NULL); // Ensure we redraw window
+ }
+}
+
+//------------------------------------------------------------------------------
+void TView::ShowTreeName ()
+{
+ wxString txt = wxT("");
+ Tree t = p.GetCurrentTree ();
+ if (t.GetName() != "")
+ {
+#if wxUSE_UNICODE
+ char buf[256];
+ strcpy (buf, t.GetName().c_str());
+ wchar_t wbuf[256];
+ mbstowcs (wbuf, buf, size_t(wbuf));
+ txt << wbuf;
+#else
+ txt << t.GetName().c_str();
+#endif
+
+ txt << wxT(" ");
+ }
+
+ txt << wxT("(") << (p.GetCurrentTreeNumber() + 1) << wxT("/") << p.GetNumTrees() << wxT(")");
+#if defined(__WXMSW__) || defined(__WXMAC__)
+ // Status bar for the view window
+ frame->SetStatusText (txt, 0);
+#else
+ GetMainFrame()->SetStatusText (txt, 0);
+#endif
+}
+
+//------------------------------------------------------------------------------
+void TView::TreeStyleMenu (int style)
+{
+#ifdef __WXMAC__
+ wxToolBar* toolBar = frame->GetToolBar();
+#else
+ wxToolBar* toolBar = GetMainFrame()->GetToolBar();
+#endif
+ wxMenuBar* menuBar = frame->GetMenuBar();
+
+ toolBar->ToggleTool( TreeStyleCmd, FALSE );
+ menuBar->Check (TreeStyleCmd, FALSE);
+
+ // Ensure style is consistent with this tree (we may have a mix of trees with and without
+ // branch lengths and/or internal labels)
+ if (!p.CurrentTreeHasEdgeLengths() && (style == PHYLOGRAM_CMD))
+ {
+ menuBar->Enable (PHYLOGRAM_CMD, FALSE);
+ toolBar->EnableTool ( PHYLOGRAM_CMD, FALSE );
+ style = RECTANGULAR_TREE_CMD;
+ }
+ else if (p.CurrentTreeHasEdgeLengths())
+ {
+ menuBar->Enable (PHYLOGRAM_CMD, TRUE);
+ toolBar->EnableTool ( PHYLOGRAM_CMD, TRUE );
+ }
+ menuBar->Enable (INTERNAL_LABELS_CMD, p.CurrentTreeHasInternallabels());
+ menuBar->Check (INTERNAL_LABELS_CMD, mShowInternalLabels );
+ toolBar->EnableTool (INTERNAL_LABELS_CMD, p.CurrentTreeHasInternallabels());
+ toolBar->ToggleTool (INTERNAL_LABELS_CMD, mShowInternalLabels );
+
+ toolBar->ToggleTool( style, TRUE );
+ menuBar->Check (TreeStyleCmd, FALSE);
+ menuBar->Check (style, TRUE);
+ TreeStyleCmd = style;
+}
+
+
+//------------------------------------------------------------------------------
+void TView::OnSlant (wxCommandEvent& WXUNUSED(event))
+{
+ TreeStyleMenu (SLANTED_TREE_CMD);
+ OnUpdate (this, NULL); // Ensure we redraw window
+}
+
+//------------------------------------------------------------------------------
+void TView::OnRectangle (wxCommandEvent& WXUNUSED(event))
+{
+ TreeStyleMenu (RECTANGULAR_TREE_CMD);
+ OnUpdate (this, NULL); // Ensure we redraw window
+}
+
+//------------------------------------------------------------------------------
+void TView::OnPhylogram (wxCommandEvent& WXUNUSED(event))
+{
+ TreeStyleMenu (PHYLOGRAM_CMD);
+ OnUpdate (this, NULL); // Ensure we redraw window
+}
+
+//------------------------------------------------------------------------------
+void TView::OnOrderTree (wxCommandEvent& WXUNUSED(event))
+{
+#ifdef __WXMAC__
+ TreeOrderDlg dialog((wxWindow *)GetFrame());
+#else
+ TreeOrderDlg dialog((wxWindow *)GetMainFrame());
+#endif
+ dialog.SetTreeOrder(Order);
+ dialog.Centre (wxBOTH);
+ if (dialog.ShowModal() == wxID_OK)
+ {
+ // Get data
+ Order = dialog.GetTreeOrder();
+ OnUpdate (this, NULL); // Ensure we redraw window
+ }
+}
+
+//------------------------------------------------------------------------------
+void TView::OnInternalLabels (wxCommandEvent& WXUNUSED(event))
+{
+ mShowInternalLabels = !mShowInternalLabels;
+
+#ifdef __WXMAC__
+ wxToolBar* toolBar = frame->GetToolBar();
+#else
+ wxToolBar* toolBar = GetMainFrame()->GetToolBar();
+#endif
+ toolBar->ToggleTool( INTERNAL_LABELS_CMD, mShowInternalLabels );
+
+ wxMenuBar* menuBar = frame->GetMenuBar();
+ menuBar->Check (INTERNAL_LABELS_CMD, mShowInternalLabels);
+
+ OnUpdate (this, NULL); // Ensure we redraw window
+}
+
+
+//------------------------------------------------------------------------------
+void TView::OnLeafFont (wxCommandEvent& WXUNUSED(event))
+{
+#if 0
+ TreeOrderDlg *dlg = new TreeOrderDlg(frame);
+ dlg->ShowModal();
+#else
+ wxFontData data;
+ data.SetInitialFont (LeafFont);
+
+#ifdef __WXMAC__
+ wxFontDialog dialog((wxWindow *)GetFrame(), data);
+#else
+ wxFontDialog dialog((wxWindow *)GetMainFrame(), &data);
+#endif
+ if ( dialog.ShowModal() == wxID_OK )
+ {
+ wxFontData retData = dialog.GetFontData();
+ LeafFont = retData.GetChosenFont();
+ OnUpdate (this, NULL); // Ensure we redraw window
+ }
+#endif
+}
+
+//------------------------------------------------------------------------------
+void TView::OnChooseTree (wxCommandEvent& WXUNUSED(event))
+{
+ wxString *choices = new wxString[p.GetNumTrees()];
+
+ for (int i = 0; i < p.GetNumTrees(); i++)
+ {
+#if wxUSE_UNICODE
+ char buf[256];
+ strcpy (buf, p.GetIthTreeName(i).c_str());
+ wchar_t wbuf[256];
+ mbstowcs (wbuf, buf, size_t(wbuf));
+
+ std::wstring tname = wbuf;
+
+ // If tree has no name create one from it's place in the profile
+ if (tname == L"")
+ {
+ wchar_t buf[32];
+ swprintf (buf, wcslen(buf), L"%d", int (i+1));
+ tname += buf;
+ }
+ choices[i] = tname.c_str();
+#else
+ std::string tname = p.GetIthTreeName(i);
+
+ // If tree has no name create one from it's place in the profile
+ if (tname == "")
+ {
+ char buf[32];
+ sprintf (buf, "%d", (i+1));
+ tname += buf;
+ }
+ choices[i] = tname.c_str();
+#endif
+ }
+
+ wxSingleChoiceDialog dialog(frame, wxT("Tree names"),
+ wxT("Choose a tree"), p.GetNumTrees(), choices);
+
+ dialog.SetSelection(p.GetCurrentTreeNumber());
+
+ if (dialog.ShowModal() == wxID_OK)
+ {
+ int j = dialog.GetSelection ();
+#ifdef __WXMAC__
+ wxToolBar* toolBar = frame->GetToolBar();
+#else
+ wxToolBar* toolBar = GetMainFrame()->GetToolBar();
+#endif
+ toolBar->EnableTool (PREVIOUS_TREE_CMD, (j != 0));
+ toolBar->EnableTool (NEXT_TREE_CMD, (j < p.GetNumTrees()-1));
+ p.SetCurrentTreeNumber (j);
+ TreeStyleMenu(TreeStyleCmd);
+ ShowTreeName ();
+ OnUpdate (this, NULL); // Ensure we redraw window
+ }
+
+ delete [] choices;
+}
+
+#ifndef __WXMOTIF__
+// ----------------------------------------------------------------------------
+void TView::OnUpdateCopyCommand(wxUpdateUIEvent& event)
+{
+ wxMenuBar* menuBar = frame->GetMenuBar();
+ menuBar->Enable (wxID_COPY, (p.GetNumTrees() > 0));
+ menuBar->Enable (COPY_AS_TEXT_CMD, (p.GetNumTrees() > 0));
+#ifdef __WXMAC__
+ wxToolBar* toolBar = frame->GetToolBar();
+#else
+ wxToolBar* toolBar = GetMainFrame()->GetToolBar();
+#endif
+ toolBar->EnableTool (wxID_COPY, (p.GetNumTrees() > 0));
+
+}
+
+// ----------------------------------------------------------------------------
+void TView::OnUpdatePasteCommand(wxUpdateUIEvent& event)
+{
+ wxMenuBar* menuBar = frame->GetMenuBar();
+ menuBar->Enable (wxID_PASTE, (p.GetNumTrees() == 0) && wxTheClipboard->IsSupported( wxDF_TEXT ));
+#ifdef __WXMAC__
+ wxToolBar* toolBar = frame->GetToolBar();
+#else
+ wxToolBar* toolBar = GetMainFrame()->GetToolBar();
+#endif
+ toolBar->EnableTool (wxID_PASTE, (p.GetNumTrees() == 0) && wxTheClipboard->IsSupported( wxDF_TEXT ));
+}
+
+// ----------------------------------------------------------------------------
+void TView::OnCopy (wxCommandEvent& WXUNUSED(event))
+{
+#if defined(__WXMAC__) || defined(__WXMSW__)
+
+ // Get current tree
+ Tree t = p.GetCurrentTree();
+ t.Update();
+
+ // Write tree to clipboard as a metafile
+ wxMetafileDC dc;
+ if (dc.Ok())
+ {
+ OnDraw (&dc);
+ wxMetafile *mf = dc.Close();
+ if (mf)
+ {
+ bool success = mf->SetClipboard((int)(dc.MaxX() + 10), (int)(dc.MaxY() + 10));
+ delete mf;
+ }
+ }
+#endif
+}
+
+// ----------------------------------------------------------------------------
+void TView::OnCopyAsText (wxCommandEvent& WXUNUSED(event))
+{
+ // Get current tree
+ Tree t = p.GetCurrentTree();
+ t.Update();
+
+ // Write tree to a string stream
+ ostrstream f;
+ NewickTreeWriter tw (&t);
+ tw.SetStream (&f);
+ tw.Write();
+ f << '\0';
+
+ // Store on clipboard
+ if (wxTheClipboard->Open())
+ {
+ // Data objects are held by the clipboard,
+ // so do not delete them in the app.
+ string str = f.str();
+ wxTheClipboard->SetData( new wxTextDataObject( wxString(str.c_str(), *wxConvCurrent)) );
+ wxTheClipboard->Close();
+ }
+}
+
+
+
+// ----------------------------------------------------------------------------
+void TView::OnPaste (wxCommandEvent& WXUNUSED(event))
+{
+ // Paste tree description from clipboard into this window -- duh! need to make this a call to the main frame too
+
+ if (wxTheClipboard->Open())
+ {
+ if (wxTheClipboard->IsSupported( wxDF_TEXT ))
+ {
+ wxTextDataObject data;
+ wxTheClipboard->GetData( data );
+
+ // Temporary stream to hold clipbard text
+ istrstream f (data.GetText().mb_str());
+ if (p.ReadTrees (f))
+ {
+ Activate (TRUE); // ensure menus are set correctly
+ OnUpdate (this, NULL); // ensure tree is drawn
+ GetDocument()->Modify (TRUE); // tell document that content has changed
+ }
+
+ }
+ wxTheClipboard->Close();
+ }
+}
+#endif
+
+//------------------------------------------------------------------------------
+void TView::ZoomToFit (wxCommandEvent& WXUNUSED(event))
+{
+ magnification = 1;
+ Resize();
+}
+
+
+//------------------------------------------------------------------------------
+void TView::ZoomIn (wxCommandEvent& WXUNUSED(event))
+{
+ magnification++;
+ Resize();
+}
+
+//------------------------------------------------------------------------------
+void TView::ZoomOut (wxCommandEvent& WXUNUSED(event))
+{
+ magnification--;
+ Resize();
+}
+
+//------------------------------------------------------------------------------
+void TView::Resize ()
+{
+ canvas->SetMagnification (magnification);
+ canvas->Resize ();
+ OnUpdate (this, NULL); // Ensure we redraw window
+}
+
+// ----------------------------------------------------------------------------
+void TView::OnUpdateZoomToFitCommand (wxUpdateUIEvent& event)
+{
+ wxMenuBar* menuBar = frame->GetMenuBar();
+ menuBar->Enable (ZOOM_TO_FIT_CMD, (magnification != 1));
+#ifdef __WXMAC__
+ wxToolBar* toolBar = frame->GetToolBar();
+#else
+ wxToolBar* toolBar = GetMainFrame()->GetToolBar();
+#endif
+ //toolBar->EnableTool (ZOOM_TO_FIT_CMD, (magnification != 1));
+}
+
+
+// ----------------------------------------------------------------------------
+void TView::OnUpdateZoomInCommand (wxUpdateUIEvent& event)
+{
+ wxMenuBar* menuBar = frame->GetMenuBar();
+ menuBar->Enable (ZOOM_IN_CMD, (magnification < MAX_MAGNIFICATION));
+#ifdef __WXMAC__
+ wxToolBar* toolBar = frame->GetToolBar();
+#else
+ wxToolBar* toolBar = GetMainFrame()->GetToolBar();
+#endif
+ toolBar->EnableTool (ZOOM_IN_CMD, (magnification < MAX_MAGNIFICATION));
+}
+
+// ----------------------------------------------------------------------------
+void TView::OnUpdateZoomOutCommand (wxUpdateUIEvent& event)
+{
+ wxMenuBar* menuBar = frame->GetMenuBar();
+ menuBar->Enable (ZOOM_OUT_CMD, (magnification > 1));
+#ifdef __WXMAC__
+ wxToolBar* toolBar = frame->GetToolBar();
+#else
+ wxToolBar* toolBar = GetMainFrame()->GetToolBar();
+#endif
+ toolBar->EnableTool (ZOOM_OUT_CMD, (magnification > 1));
+}
+
+
+//------------------------------------------------------------------------------
+// Map commands to methods in TView
+
+BEGIN_EVENT_TABLE(TView, wxView)
+ EVT_MENU(NEXT_TREE_CMD, TView::NextTree)
+ EVT_MENU(PREVIOUS_TREE_CMD, TView::PreviousTree)
+ EVT_MENU(SLANTED_TREE_CMD, TView::OnSlant)
+ EVT_MENU(RECTANGULAR_TREE_CMD, TView::OnRectangle)
+ EVT_MENU(PHYLOGRAM_CMD, TView::OnPhylogram)
+ EVT_MENU(INTERNAL_LABELS_CMD, TView::OnInternalLabels)
+ EVT_MENU(LEAF_FONT_CMD, TView::OnLeafFont)
+ EVT_MENU(CHOOSE_TREE_CMD, TView::OnChooseTree)
+ EVT_MENU(ORDER_TREE_CMD, TView::OnOrderTree)
+
+#if defined __WXMSW__ || defined USE_SVG
+ EVT_MENU(SAVEAS_PICTURE_CMD, TView::OnSavePicture)
+#endif
+
+#ifndef __WXMOTIF__
+ EVT_MENU(wxID_COPY, TView::OnCopy)
+ EVT_MENU(COPY_AS_TEXT_CMD, TView::OnCopyAsText)
+ EVT_MENU(wxID_PASTE, TView::OnPaste)
+#endif
+
+ EVT_MENU(ZOOM_TO_FIT_CMD, TView::ZoomToFit)
+ EVT_MENU(ZOOM_IN_CMD, TView::ZoomIn)
+ EVT_MENU(ZOOM_OUT_CMD, TView::ZoomOut)
+
+
+#ifndef __WXMOTIF__
+ EVT_UPDATE_UI(wxID_COPY, TView::OnUpdateCopyCommand)
+ EVT_UPDATE_UI(COPY_AS_TEXT_CMD, TView::OnUpdateCopyCommand)
+ EVT_UPDATE_UI(wxID_PASTE, TView::OnUpdatePasteCommand)
+#endif
+
+ EVT_UPDATE_UI(ZOOM_TO_FIT_CMD, TView::OnUpdateZoomToFitCommand)
+ EVT_UPDATE_UI(ZOOM_IN_CMD, TView::OnUpdateZoomInCommand)
+ EVT_UPDATE_UI(ZOOM_OUT_CMD, TView::OnUpdateZoomOutCommand)
+
+
+END_EVENT_TABLE()
+
+/*
+ * Window implementations
+ */
+
+BEGIN_EVENT_TABLE(MyCanvas, wxScrolledWindow)
+ EVT_MOUSE_EVENTS(MyCanvas::OnMouseEvent)
+ EVT_SIZE(MyCanvas::OnSize)
+END_EVENT_TABLE()
+
+// Define a constructor for my canvas
+MyCanvas::MyCanvas(wxView *v, wxMDIChildFrame *frame, const wxPoint& pos, const wxSize& size, long style):
+ wxScrolledWindow(frame, -1, pos, size, style)
+{
+ SetBackgroundColour(wxColour("WHITE"));
+ view = v;
+ magnification = 1;
+}
+
+//------------------------------------------------------------------------------
+// Define the repainting behaviour
+void MyCanvas::OnDraw(wxDC& dc)
+{
+ if (view)
+ view->OnDraw(& dc);
+}
+
+// ----------------------------------------------------------------------------
+void MyCanvas::OnSize(wxSizeEvent& event)
+{
+ Resize ();
+ event.Skip();
+}
+
+
+// ----------------------------------------------------------------------------
+void MyCanvas::Resize()
+{
+ int width, height;
+ GetClientSize (&width, &height);
+ int range = height * magnification;
+ int steps = range / 50;
+ SetScrollbars(0, steps, 0, 50);
+}
+
+
+//------------------------------------------------------------------------------
+// This implements a tiny doodling program. Drag the mouse using
+// the left button.
+void MyCanvas::OnMouseEvent(wxMouseEvent& event)
+{
+ if (!view)
+ return;
+}
+
+
+
Property changes on: trunk/packages/treeviewx/branches/upstream/current/tview.cpp
___________________________________________________________________
Name: svn:executable
+
Added: trunk/packages/treeviewx/branches/upstream/current/tview.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/tview.h 2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/tview.h 2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,157 @@
+/*
+ * TreeView
+ * A phylogenetic tree viewer.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+ // $Id: tview.h,v 1.21 2005/08/31 08:55:01 rdmp1c Exp $
+
+#ifdef __GNUG__
+// #pragma interface
+#endif
+
+#include "tproject.h"
+
+#ifndef __VIEWSAMPLEH__
+#define __VIEWSAMPLEH__
+
+#include "wx/docview.h"
+
+#define PREVIOUS_TREE_CMD 100
+#define NEXT_TREE_CMD 101
+#define SLANTED_TREE_CMD 102
+#define RECTANGULAR_TREE_CMD 103
+#define PHYLOGRAM_CMD 104
+#define LEAF_FONT_CMD 105
+#define CHOOSE_TREE_CMD 106
+#define ORDER_TREE_CMD 107
+#define SAVEAS_PICTURE_CMD 108
+#define COPY_AS_TEXT_CMD 109
+
+#define ZOOM_IN_CMD 110
+#define ZOOM_OUT_CMD 111
+#define ZOOM_TO_FIT_CMD 112
+
+#define INTERNAL_LABELS_CMD 113
+
+const int DEFAULT_ORDER = 0;
+const int ALPHA_ORDER = 1;
+const int LEFT_ORDER = 2;
+const int RIGHT_ORDER = 3;
+
+#define MAX_MAGNIFICATION 5
+
+class MyCanvas: public wxScrolledWindow
+{
+public:
+ wxView *view;
+
+ MyCanvas(wxView *v, wxMDIChildFrame *frame, const wxPoint& pos, const wxSize& size, long style);
+ virtual void OnDraw(wxDC& dc);
+ virtual void OnSize(wxSizeEvent& event);
+ void OnMouseEvent(wxMouseEvent& event);
+ void Resize ();
+ void SetMagnification (int m) { magnification = m; };
+
+protected:
+ int magnification;
+
+private:
+ DECLARE_EVENT_TABLE()
+};
+
+
+class TView: public wxView
+{
+public:
+ wxMDIChildFrame *frame;
+ MyCanvas *canvas;
+
+ TView();
+ ~TView() {}
+
+ void OnActivateView (bool activate, wxView *activeView, wxView *deactiveView);
+ bool OnCreate(wxDocument *doc, long flags);
+ void OnDraw(wxDC *dc);
+ void OnUpdate(wxView *sender, wxObject *hint = (wxObject *) NULL);
+ bool OnClose(bool deleteWindow = TRUE);
+ virtual wxPrintout *OnCreatePrintout();
+
+ void OnSlant (wxCommandEvent& WXUNUSED(event) );
+ void OnRectangle (wxCommandEvent& WXUNUSED(event) );
+ void OnPhylogram (wxCommandEvent& WXUNUSED(event) );
+
+ void OnInternalLabels (wxCommandEvent& WXUNUSED(event) );
+
+ void OnLeafFont (wxCommandEvent& WXUNUSED(event) );
+
+ void OnChooseTree (wxCommandEvent& WXUNUSED(event) );
+
+ void OnOrderTree (wxCommandEvent& WXUNUSED(event) );
+
+ void OnSavePicture (wxCommandEvent& WXUNUSED(event) );
+
+ void NextTree (wxCommandEvent& WXUNUSED(event) );
+ void PreviousTree (wxCommandEvent& WXUNUSED(event) );
+ void ShowTreeName ();
+
+ void TreeStyleMenu (int style);
+
+ // Clipboard
+#ifndef __WXMOTIF__
+ void OnUpdateCopyCommand(wxUpdateUIEvent& event);
+ void OnUpdatePasteCommand(wxUpdateUIEvent& event);
+ void OnCopy (wxCommandEvent& event);
+ void OnCopyAsText (wxCommandEvent& event);
+ void OnPaste(wxCommandEvent& event);
+#endif
+
+ // Zoom
+ void ZoomToFit (wxCommandEvent& WXUNUSED(event) );
+ void ZoomIn (wxCommandEvent& WXUNUSED(event) );
+ void ZoomOut (wxCommandEvent& WXUNUSED(event) );
+ void Resize ();
+ void OnUpdateZoomToFitCommand (wxUpdateUIEvent& event);
+ void OnUpdateZoomInCommand (wxUpdateUIEvent& event);
+ void OnUpdateZoomOutCommand (wxUpdateUIEvent& event);
+
+ TProject <Tree> p;
+ unsigned int TreeFlags;
+ int TreeStyleCmd;
+ wxFont LeafFont;
+ bool mShowInternalLabels;
+
+ int page_width;
+ int page_height;
+ bool printing;
+
+ int magnification;
+
+ bool ReadTrees (const wxString &filename);
+ bool WriteTrees (const wxString &filename);
+
+protected:
+ int Order;
+
+private:
+ DECLARE_DYNAMIC_CLASS(TView)
+ DECLARE_EVENT_TABLE()
+};
+
+
+#endif
Property changes on: trunk/packages/treeviewx/branches/upstream/current/tview.h
___________________________________________________________________
Name: svn:executable
+
More information about the debian-med-commit
mailing list