[med-svn] r9247 - trunk/packages/phylographer/trunk
Andreas Tille
tille at alioth.debian.org
Wed Jan 11 10:24:08 UTC 2012
Author: tille
Date: 2012-01-11 10:24:08 +0000 (Wed, 11 Jan 2012)
New Revision: 9247
Added:
trunk/packages/phylographer/trunk/README.status
Removed:
trunk/packages/phylographer/trunk/Database/
trunk/packages/phylographer/trunk/Group/
trunk/packages/phylographer/trunk/Images/
trunk/packages/phylographer/trunk/LICENSE
trunk/packages/phylographer/trunk/Matrix/
trunk/packages/phylographer/trunk/PhyloGrapher_April_03_2003_Linux.tcl
trunk/packages/phylographer/trunk/PhyloGrapher_April_03_2003_Windows.tcl
trunk/packages/phylographer/trunk/QUICK_START.txt
trunk/packages/phylographer/trunk/README.status
trunk/packages/phylographer/trunk/README.txt
trunk/packages/phylographer/trunk/Saved_Work/
trunk/packages/phylographer/trunk/Scripts/
trunk/packages/phylographer/trunk/Temp/
trunk/packages/phylographer/trunk/adjacency_data.txt
trunk/packages/phylographer/trunk/debian/
trunk/packages/phylographer/trunk/phylo_P450_coords.txt
trunk/packages/phylographer/trunk/phylo_PK_LRR_coords.txt
trunk/packages/phylographer/trunk/phylo_RGenes_coords.txt
trunk/packages/phylographer/trunk/phylo_coords.txt
trunk/packages/phylographer/trunk/phylo_coords_r.txt
Log:
Removed trunk and dropped README.status
Deleted: trunk/packages/phylographer/trunk/LICENSE
===================================================================
--- trunk/packages/phylographer/trunk/LICENSE 2012-01-11 10:21:36 UTC (rev 9246)
+++ trunk/packages/phylographer/trunk/LICENSE 2012-01-11 10:24:08 UTC (rev 9247)
@@ -1,340 +0,0 @@
- 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.
Deleted: trunk/packages/phylographer/trunk/PhyloGrapher_April_03_2003_Linux.tcl
===================================================================
--- trunk/packages/phylographer/trunk/PhyloGrapher_April_03_2003_Linux.tcl 2012-01-11 10:21:36 UTC (rev 9246)
+++ trunk/packages/phylographer/trunk/PhyloGrapher_April_03_2003_Linux.tcl 2012-01-11 10:24:08 UTC (rev 9247)
@@ -1,3935 +0,0 @@
-#!/usr/bin/wish
-#
-######################################
-# #
-# PhyloGrapher by Alexander Kozik #
-# version: April 03 2003 #
-# #
-# Graph Visualisation Tool #
-# #
-######################################
-
-######################################
-# LIST OF PROCEDURES #
-######################################
-
-# About_PhyloGrapher
-# Add_Graphics_to_Canvas
-# Adj_List_Extraction
-# Adjacency_List
-# Build_Adjacency_List
-# Canvas_Editor
-# Change_Node_Color1
-# Change_Node_Color2
-# Change_Node_Color3
-# Change_Node_Color4
-# Change_Node_Color5
-# Change_Node_Color6
-# Create_Graph_A
-# Create_Graph_from_Data
-# Destroy_Alignment
-# Display_Alignment
-# Dots_Coord_Generator
-# Dots_Coord_Restore
-# Dummy_Color_Movie
-# Edge_Counter
-# Edge_Degree_Counter
-# Edge_Degree_Counter_Movie
-# Events_Binding
-# Fasta_Save_As
-# Fasta_Search_Parser
-# Fruchterman_Rheingold
-# Gene_ID_Window
-# Generate_Graph_From_Matrix
-# Global_XY_Coords
-# HTML_Image_Map_Generator
-# HighLightEdge
-# HighLightEdge_Back
-# HighLight_Adjacent_Nodes
-# HighLight_Adjacent_Nodes_All
-# HighLight_Adjacent_Nodes_All_Loop
-# HowTo_Count_Edges
-# HowTo_Paint_Nodes
-# HowTo_PhyloWebify
-# How_To_Edit_Canvas
-# How_To_Save
-# Html_ScreenShot
-# Move_Graph_Label
-# Move_Text_Label
-# Node_Painter
-# Nodes_Coord_Dialog
-# PhyloGrapher_Canvas
-# Place_Text_on_Canvas
-# Plot_Genes_on_Canvas
-# Print_Edge_Weight
-# Print_Gene_ID
-# Save_Current_Fasta_Graph
-# Scrolled_Canvas
-# Scrolled_Canvas_Alignment
-# Scrolled_Text
-# Scrolled_Text_Fasta
-# Self_Organize
-# Shake_the_Node
-# Show_Alignment
-# Show_Extras
-# Smith_Waterman
-# clearName
-# clearWeight
-# highLightGene
-# highLightGene_Back
-# make_HTML
-# make_Nodes_Coords
-# mkEdge
-# mkNode
-# moveNode
-# moveNode_Slow
-# moveNode_Slow_Edges
-# showDegree
-# showName
-# showWeight
-
-######################################
-# GLOBAL VARIABLES #
-######################################
-
-# abc_tag
-# adj_highlight_color
-# adj_highlight_outline
-# adjacency_data_file
-# adjacency_data_file_open
-# already_done_nodes
-# attraction_random_step
-# canvas_background
-# canvas_editor_font_size
-# canvas_editor_font_style
-# canvas_editor_font_type
-# canvas_editor_text
-# color_group1
-# color_group2
-# color_group3
-# color_group4
-# color_group5
-# color_group6
-# color_of_similarity_1
-# color_of_similarity_2
-# color_of_similarity_3
-# color_of_similarity_4
-# color_of_similarity_5
-# color_of_similarity_6
-# curX
-# curY
-# current_adjacent_node
-# custom_node_counter
-# database_dir
-# database_ext
-# dots_coord_file
-# dots_coord_file_restore
-# dummy_adjacency_counter
-# edgeCounter
-# edgeFirst
-# edgeSecond
-# edge_color_label
-# edge_wight_coefficient
-# edges_data_file
-# entropy_factor
-# fake_identity_counter
-# fasta_to_run
-# font_color_canvas
-# font_color_label
-# frucht_gold_limit
-# frucht_gold_precision
-# genes_id_data_file
-# genes_range
-# graphX1
-# graphX2
-# graphY1
-# graphY2
-# graph_data_file
-# graph_fill_color
-# graph_outline_color
-# graph_radius
-# graph_style
-# graph_tag
-# horizontal_size
-# html_image_map
-# level_of_similarity_1
-# level_of_similarity_2
-# level_of_similarity_3
-# level_of_similarity_4
-# level_of_similarity_5
-# level_of_similarity_6
-# matrix_data_file
-# nodeX
-# nodeY
-# node_color_label
-# nodes_group1
-# nodes_group2
-# nodes_group3
-# nodes_group4
-# nodes_group5
-# nodes_group6
-# object_fill_color
-# object_fill_color_connect
-# object_outline
-# object_outline_connect
-# object_shape
-# object_x_size
-# object_y_size
-# random_step_value
-# repulsion_distance
-# selected_canvas
-# sim_curX
-# sim_curY
-# smith_waterman_counter
-# sw_node_A
-# sw_node_B
-# text_tag
-# thickness_of_similarity_1
-# thickness_of_similarity_2
-# thickness_of_similarity_3
-# thickness_of_similarity_4
-# thickness_of_similarity_5
-# thickness_of_similarity_6
-# vertical_size
-
-##########################
-# GNU LICENSE #
-##########################
-proc About_PhyloGrapher {} {
-
- set phylo_logo [image create photo -file ./Images/PhyloGrapherLogo.gif]
- set phylo_text "PhyloGrapher (Graph Visualization Tool)
-
-Copyright (C) 2001, 2002, 2003 University of California at Davis,
- Alexander Kozik
-
-This program is free software. You can redistribute it and/or modify it
-under the terms of the GNU General Public License ( http://www.gnu.org )
-as published by the Free Software Foundation; either version 2 of the
-License, or (at your option) any later version.
-
-In other words, you are free to modify, copy, or redistribute this source
-code and its documentation in any way you like, but you must distribute
-all derivative versions as free software under the same terms that we
-provided our code to you (i.e. the GNU General Public License). This
-precludes any use of the code in proprietary or commercial software
-unless your source code is made freely available.
-
-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 PhyloGrapher release, in the file LICENSE; if not, write to the
-Free Software Foundation, Inc., 675 Mass. Ave, Cambridge, MA 02139 USA."
-
- destroy .phylo_about
- toplevel .phylo_about
- wm transient .phylo_about .
- wm title .phylo_about "About PhyloGrapher"
- wm protocol .phylo_about WM_DELETE_WINDOW "destroy .phylo_about"
-
- label .phylo_about.image -image $phylo_logo
- label .phylo_about.text -text $phylo_text -justify center
- button .phylo_about.ok -text "OK" -command "destroy .phylo_about"
- grid .phylo_about.image -padx 7 -pady 7
- grid .phylo_about.text -padx 2 -pady 2
- grid .phylo_about.ok -padx 2 -pady 2
-}
-
-proc HowTo_PhyloWebify {} {
-
- destroy .fly
- set t [Scrolled_Text .fly -width 70 -height 40]
- set in [open "README.txt" r]
- $t insert end [read $in]
- close $in
- wm title .fly "HowTo PhyloWebify"
- wm protocol .fly WM_DELETE_WINDOW "destroy .fly"
-}
-
-############ Scrolled Canvas ################
-# --------------- #
-# Create Scrolled Canvas #
-# #
-#############################################
-proc Scrolled_Canvas { phylo args } {
- toplevel $phylo
-
- wm title $phylo "PhyloGrapher Canvas"
- wm protocol $phylo WM_DELETE_WINDOW "destroy $phylo .geneid"
-
- eval {canvas $phylo.canvas -xscrollcommand [list $phylo.xscroll set] \
- -yscrollcommand [list $phylo.yscroll set] \
- -highlightthickness 0 -borderwidth 0} $args
-
- scrollbar $phylo.xscroll -orient horizontal \
- -command [list $phylo.canvas xview]
- scrollbar $phylo.yscroll -orient vertical \
- -command [list $phylo.canvas yview]
-
- grid $phylo.canvas $phylo.yscroll -sticky news
- grid $phylo.xscroll -sticky ew
- grid rowconfigure $phylo 0 -weight 1
- grid columnconfigure $phylo 0 -weight 1
- return $phylo.canvas
-}
-
-proc Scrolled_Canvas_Alignment { phylo sw_node_A sw_node_A_w sw_node_B sw_node_B_w fly args } {
-
- global fasta_to_run
- global smith_waterman_counter
-
- destroy .fasta_save_as_$smith_waterman_counter
- toplevel .fasta_save_as_$smith_waterman_counter
- .fasta_save_as_$smith_waterman_counter config -bg black
- wm transient .fasta_save_as_$smith_waterman_counter $fly$sw_node_A_w$sw_node_B_w.text
- wm title .fasta_save_as_$smith_waterman_counter "Alignment of $sw_node_A vs $sw_node_B"
- wm protocol .fasta_save_as_$smith_waterman_counter WM_DELETE_WINDOW "destroy .fasta_save_as_$smith_waterman_counter"
-
- eval {canvas $phylo.canvas -xscrollcommand [list $phylo.xscroll set] \
- -yscrollcommand [list $phylo.yscroll set] \
- -highlightthickness 0 -borderwidth 0} $args
-
- scrollbar $phylo.xscroll -orient horizontal \
- -command [list $phylo.canvas xview]
- scrollbar $phylo.yscroll -orient vertical \
- -command [list $phylo.canvas yview]
-
- grid $phylo.canvas $phylo.yscroll -sticky news
- grid $phylo.xscroll -sticky ew
- grid rowconfigure $phylo 0 -weight 1
- grid columnconfigure $phylo 0 -weight 1
- return $phylo.canvas
-}
-
-proc Scrolled_Text_Fasta { fly sw_node_A sw_node_A_w sw_node_B sw_node_B_w args} {
-
- global smith_waterman_counter
-
- toplevel $fly$sw_node_A_w$sw_node_B_w
- eval {text $fly$sw_node_A_w$sw_node_B_w.text -wrap none \
- -xscrollcommand [list $fly$sw_node_A_w$sw_node_B_w.xscroll set] \
- -yscrollcommand [list $fly$sw_node_A_w$sw_node_B_w.yscroll set]} $args
- scrollbar $fly$sw_node_A_w$sw_node_B_w.xscroll -orient horizontal \
- -command [list $fly$sw_node_A_w$sw_node_B_w.text xview]
- scrollbar $fly$sw_node_A_w$sw_node_B_w.yscroll -orient vertical \
- -command [list $fly$sw_node_A_w$sw_node_B_w.text yview]
- grid $fly$sw_node_A_w$sw_node_B_w.text $fly$sw_node_A_w$sw_node_B_w.yscroll -sticky news
- grid $fly$sw_node_A_w$sw_node_B_w.xscroll -sticky news
- grid rowconfigure $fly$sw_node_A_w$sw_node_B_w 0 -weight 1
- grid columnconfigure $fly$sw_node_A_w$sw_node_B_w 0 -weight 1
- Fasta_Search_Parser $fly $sw_node_A $sw_node_A_w $sw_node_B $sw_node_B_w
- return $fly$sw_node_A_w$sw_node_B_w.text
-}
-
-proc Fasta_Search_Parser {fly sw_node_A sw_node_A_w sw_node_B sw_node_B_w} {
-
- global smith_waterman_counter
-
- global database_dir
- global database_ext
-
- set fasta_to_parse "./Temp/ssearch_alignment_$smith_waterman_counter.tmp"
- set fasta_to_parse_open [open $fasta_to_parse "r"]
-
- set id_A_pattern "$database_dir$sw_node_A\.$database_ext\: "
- set id_B_pattern "^\>\>$sw_node_B"
- set aa_pattern " aa"
- set smith_waterman_pattern "Smith-Waterman score\: "
-
- while {[gets $fasta_to_parse_open current_line_fasta] >= 0} {
-
- if [regexp $id_A_pattern $current_line_fasta] {
- set id_A_aa_size $current_line_fasta
- regsub $id_A_pattern $id_A_aa_size "" id_A_aa_size
- regsub $aa_pattern $id_A_aa_size "" id_A_aa_size
- # puts ""
- # puts "$sw_node_A\t$id_A_aa_size"
- }
- if [regexp $id_B_pattern $current_line_fasta] {
- set id_B_aa_size $current_line_fasta
- regsub {\s+} $id_B_aa_size "" id_B_aa_size
- regsub $id_B_pattern $id_B_aa_size "" id_B_aa_size
- regsub {.*\(} $id_B_aa_size "" id_B_aa_size
- regsub { aa\)} $id_B_aa_size "" id_B_aa_size
- # puts "$sw_node_B\t$id_B_aa_size"
- }
- if [regexp $smith_waterman_pattern $current_line_fasta] {
- set smith_waterman_score $current_line_fasta
- set identity_score $current_line_fasta
- set overlap_value $current_line_fasta
- set overlap_seq_A_left $current_line_fasta
- set overlap_seq_A_right $current_line_fasta
- set overlap_seq_B_left $current_line_fasta
- set overlap_seq_B_right $current_line_fasta
- ####################
- regsub {Smith-Waterman score: } $smith_waterman_score "" smith_waterman_score
- regsub {;.*\)} $smith_waterman_score "" smith_waterman_score
- ####################
- regsub {% identity.*\)} $identity_score "" identity_score
- regsub {Smith-Waterman score:.*;} $identity_score "" identity_score
- regsub -all { } $identity_score "" identity_score
- ####################
- regsub { aa overlap.*\)} $overlap_value "" overlap_value
- regsub {Smith-Waterman score.*\) in } $overlap_value "" overlap_value
- regsub -all { } $overlap_value "" overlap_value
- ####################
- regsub {Smith-Waterman score.*\(} $overlap_seq_A_left "" overlap_seq_A_left
- regsub {\-.*} $overlap_seq_A_left "" overlap_seq_A_left
- regsub {Smith-Waterman score.*\(} $overlap_seq_A_right "" overlap_seq_A_right
- regsub {\:.*} $overlap_seq_A_right "" overlap_seq_A_right
- regsub {.*\-} $overlap_seq_A_right "" overlap_seq_A_right
- ####################
- regsub {Smith-Waterman score.*\:} $overlap_seq_B_left "" overlap_seq_B_left
- regsub {\-.*} $overlap_seq_B_left "" overlap_seq_B_left
- regsub {Smith-Waterman score.*\:} $overlap_seq_B_right "" overlap_seq_B_right
- regsub {.*\-} $overlap_seq_B_right "" overlap_seq_B_right
- regsub {\)} $overlap_seq_B_right "" overlap_seq_B_right
- }
- }
- Fasta_Save_As $fly $sw_node_A $sw_node_A_w $sw_node_B $sw_node_B_w $id_A_aa_size $id_B_aa_size \
- $smith_waterman_score $identity_score $overlap_value \
- $overlap_seq_A_left $overlap_seq_A_right $overlap_seq_B_left $overlap_seq_B_right
-}
-
-proc Fasta_Save_As {fly sw_node_A sw_node_A_w sw_node_B sw_node_B_w id_A_aa_size id_B_aa_size smith_waterman_score identity_score overlap_value overlap_seq_A_left overlap_seq_A_right overlap_seq_B_left overlap_seq_B_right} {
-
- global fasta_to_run
- global smith_waterman_counter
-
- Scrolled_Canvas_Alignment .fasta_save_as_$smith_waterman_counter $sw_node_A $sw_node_A_w \
- $sw_node_B $sw_node_B_w $fly -width 550 -height 210 \
- -scrollregion "0 0 1200 400" -bg black ; # -bg $canvas_background
-
- # black background on canvas
-
- .fasta_save_as_$smith_waterman_counter.canvas create rect 0 0 1200 400 -fill black -outline black
-
- # text labels on canvas
-
- .fasta_save_as_$smith_waterman_counter.canvas create text 10 20 -text \
- "$sw_node_A\ - $id_A_aa_size aa \($overlap_seq_A_left \- $overlap_seq_A_right\)" -anchor sw -fill white
-
- .fasta_save_as_$smith_waterman_counter.canvas create text 10 40 -text \
- "$sw_node_B\ - $id_B_aa_size aa \($overlap_seq_B_left \- $overlap_seq_B_right\)" -anchor sw -fill white
-
- .fasta_save_as_$smith_waterman_counter.canvas create text 10 60 -text \
- "SW: $smith_waterman_score\; identity: $identity_score\; overlap: $overlap_value" -anchor sw -fill white
-
- # graphical info
- .fasta_save_as_$smith_waterman_counter.canvas create rect \
- 340 10 350 60 -fill gray50 -outline white
-
- .fasta_save_as_$smith_waterman_counter.canvas create rect \
- 340 [expr 60 - ($identity_score/2)] 350 60 -fill gold -outline white
-
- .fasta_save_as_$smith_waterman_counter.canvas create text 355 20 \
- -text "100%" -anchor sw -fill gray
-
- .fasta_save_as_$smith_waterman_counter.canvas create text 355 43 \
- -text "50%" -anchor sw -fill gray
-
- .fasta_save_as_$smith_waterman_counter.canvas create text 355 66 \
- -text "0%" -anchor sw -fill gray
-
- .fasta_save_as_$smith_waterman_counter.canvas create text 327 80 \
- -text "identity" -anchor sw -fill gold
-
- ##
-
- .fasta_save_as_$smith_waterman_counter.canvas create rect \
- 270 10 280 60 -fill gray50 -outline white
-
- set smith_waterman_bar [expr $smith_waterman_score/20]
-
- if {$smith_waterman_bar > 50} {
- set smith_waterman_bar 50
- }
-
- .fasta_save_as_$smith_waterman_counter.canvas create rect \
- 270 [expr 60 - $smith_waterman_bar] 280 60 -fill violet -outline white
-
- .fasta_save_as_$smith_waterman_counter.canvas create text 285 20 \
- -text ">1000" -anchor sw -fill gray
-
- .fasta_save_as_$smith_waterman_counter.canvas create text 285 43 \
- -text "500" -anchor sw -fill gray
-
- .fasta_save_as_$smith_waterman_counter.canvas create text 285 66 \
- -text "100" -anchor sw -fill gray
-
- .fasta_save_as_$smith_waterman_counter.canvas create text 262 80 \
- -text "S-W" -anchor sw -fill violet
-
- ##
-
- .fasta_save_as_$smith_waterman_counter.canvas create rect \
- 410 10 420 60 -fill gray50 -outline white
-
- set overlap_bar [expr $overlap_value/20]
-
- if {$overlap_bar > 50} {
- set overlap_bar 50
- }
-
- .fasta_save_as_$smith_waterman_counter.canvas create rect \
- 410 [expr 60 - $overlap_bar] 420 60 -fill lightblue -outline white
-
- .fasta_save_as_$smith_waterman_counter.canvas create text 425 20 \
- -text ">1000" -anchor sw -fill gray
-
- .fasta_save_as_$smith_waterman_counter.canvas create text 425 43 \
- -text "500" -anchor sw -fill gray
-
- .fasta_save_as_$smith_waterman_counter.canvas create text 425 66 \
- -text "10" -anchor sw -fill gray
-
- .fasta_save_as_$smith_waterman_counter.canvas create text 397 80 \
- -text "overlap" -anchor sw -fill lightblue
-
- # graphical alignment on canvas
- set drawing_scale 3
-
- .fasta_save_as_$smith_waterman_counter.canvas create rect \
- 10 100 [expr $id_A_aa_size/$drawing_scale + 10] 106 \
- -fill blue -outline green
-
- .fasta_save_as_$smith_waterman_counter.canvas create rect \
- [expr $overlap_seq_A_left/$drawing_scale + 10] 100 \
- [expr $overlap_seq_A_right/$drawing_scale + 10] 106 \
- -fill green -outline yellow
-
- .fasta_save_as_$smith_waterman_counter.canvas create rect \
- [expr ($overlap_seq_A_left/$drawing_scale + $overlap_seq_B_left/$drawing_scale)/2 + 10] 135 \
- [expr $overlap_value/$drawing_scale + [expr ($overlap_seq_A_left/$drawing_scale + $overlap_seq_B_left/$drawing_scale)/2 + 10]] 141 \
- -fill red -outline orange
-
- .fasta_save_as_$smith_waterman_counter.canvas create rect \
- 10 170 [expr $id_B_aa_size/$drawing_scale + 10] 176 \
- -fill blue -outline green
-
- .fasta_save_as_$smith_waterman_counter.canvas create rect \
- [expr $overlap_seq_B_left/$drawing_scale + 10] 170 \
- [expr $overlap_seq_B_right/$drawing_scale + 10] 176 \
- -fill green -outline yellow
-
- # lines connecting alignment
- .fasta_save_as_$smith_waterman_counter.canvas create line \
- [expr $overlap_seq_A_left/$drawing_scale + 10] 106 \
- [expr ($overlap_seq_A_left/$drawing_scale + $overlap_seq_B_left/$drawing_scale)/2 + 10] 135 -fill white
-
- .fasta_save_as_$smith_waterman_counter.canvas create line \
- [expr $overlap_seq_A_right/$drawing_scale + 10] 106 \
- [expr $overlap_value/$drawing_scale + [expr ($overlap_seq_A_left/$drawing_scale + $overlap_seq_B_left/$drawing_scale)/2 + 10]] 135 -fill white
-
- .fasta_save_as_$smith_waterman_counter.canvas create line \
- [expr ($overlap_seq_A_left/$drawing_scale + $overlap_seq_B_left/$drawing_scale)/2 + 10] \
- 141 [expr $overlap_seq_B_left/$drawing_scale + 10] 170 -fill white
-
- .fasta_save_as_$smith_waterman_counter.canvas create line \
- [expr $overlap_value/$drawing_scale + [expr ($overlap_seq_A_left/$drawing_scale + $overlap_seq_B_left/$drawing_scale)/2 + 10]] \
- 141 [expr $overlap_seq_B_right/$drawing_scale + 10] 170 -fill white
-
- # text over alignment
- .fasta_save_as_$smith_waterman_counter.canvas create text \
- [expr $id_A_aa_size/$drawing_scale + 20] 110 -text \
- "$sw_node_A" -anchor sw -fill white
-
- .fasta_save_as_$smith_waterman_counter.canvas create text \
- [expr $overlap_value/$drawing_scale + [expr ($overlap_seq_A_left/$drawing_scale + $overlap_seq_B_left/$drawing_scale)/2 + 20]] 145 -text \
- "Alignment" -anchor sw -fill white
-
- .fasta_save_as_$smith_waterman_counter.canvas create text \
- [expr $id_B_aa_size/$drawing_scale + 20] 180 -text \
- "$sw_node_B" -anchor sw -fill white
-
- # puts ""
- # puts [expr $id_A_aa_size/$drawing_scale]
- # puts [expr $id_B_aa_size/$drawing_scale]
-
- grid .fasta_save_as_$smith_waterman_counter.canvas
-
- # buttons
- button .fasta_save_as_$smith_waterman_counter.dismiss -text "Dismiss" \
- -command "Destroy_Alignment $fly $sw_node_A_w $sw_node_B_w $smith_waterman_counter"
- button .fasta_save_as_$smith_waterman_counter.saveas -text "Save as: $sw_node_A\_vs_$sw_node_B\.$fasta_to_run" \
- -command \
- "Save_Current_Fasta_Graph $smith_waterman_counter $sw_node_A $sw_node_A_w $sw_node_B $sw_node_B_w $fasta_to_run"
- label .fasta_save_as_$smith_waterman_counter.saveas_label -text \
- "$sw_node_A\_vs_$sw_node_B\.$fasta_to_run"
- # grid .fasta_save_as_$smith_waterman_counter.saveas .fasta_save_as_$smith_waterman_counter.saveas_label \
- # -padx 2 -pady 4
- grid .fasta_save_as_$smith_waterman_counter.saveas -padx 2 -pady 4
- grid .fasta_save_as_$smith_waterman_counter.dismiss -padx 2 -pady 4
-}
-
-proc Save_Current_Fasta_Graph {smith_waterman_counter sw_node_A sw_node_A_w sw_node_B sw_node_B_w fasta_to_run} {
-
- file copy -force ./Temp/ssearch_alignment_$smith_waterman_counter.tmp \
- ./Saved_Work/$sw_node_A\_vs_$sw_node_B\.$fasta_to_run
-
- .fasta_save_as_$smith_waterman_counter.canvas postscript -file \
- ./Saved_Work/$sw_node_A\_vs_$sw_node_B\.$fasta_to_run.ps
- bell
-}
-
-proc Destroy_Alignment {fly sw_node_A_w sw_node_B_w smith_waterman_counter} {
-
- destroy .fasta_save_as_$smith_waterman_counter
- destroy $fly$sw_node_A_w$sw_node_B_w
-}
-
-proc Scrolled_Text { fly args } {
-
- toplevel $fly
- eval {text $fly.text -wrap none \
- -xscrollcommand [list $fly.xscroll set] \
- -yscrollcommand [list $fly.yscroll set]} $args
- scrollbar $fly.xscroll -orient horizontal \
- -command [list $fly.text xview]
- scrollbar $fly.yscroll -orient vertical \
- -command [list $fly.text yview]
- grid $fly.text $fly.yscroll -sticky news
- grid $fly.xscroll -sticky news
- grid rowconfigure $fly 0 -weight 1
- grid columnconfigure $fly 0 -weight 1
- button $fly.dismiss -text "Dismiss" -command "destroy $fly"
- grid $fly.dismiss
-
- return $fly.text
-}
-
-proc mkNode {x y current_gene_ID} {
-
- global abc_tag
- global sw_node_A
- global sw_node_B
- global nodeX
- global nodeY
- global edgeFirst
- global edgeSecond
- global fake_identity_counter
-
- global object_fill_color
- global object_outline
- global object_shape
- global object_x_size
- global object_y_size
-
- global input_type
- global fake_edge_color
-
- set fill_color $object_fill_color
- set outline_color $object_outline
- set node_type "node"
-
- if [regexp "Custom_Node" $current_gene_ID] {
- set fill_color white
- set outline_color red
- set node_type "removable"
- }
- .phylo.canvas create $object_shape [expr $x-$object_x_size] [expr $y-$object_y_size] \
- [expr $x+$object_x_size] [expr $y+$object_y_size] -fill $fill_color \
- -outline $outline_color -tag $abc_tag$current_gene_ID
-
- .phylo.canvas addtag $node_type withtag $abc_tag$current_gene_ID
-
- set nodeX($abc_tag$current_gene_ID) $x
- set nodeY($abc_tag$current_gene_ID) $y
-
- set edgeFirst($abc_tag$current_gene_ID) {}
- set edgeSecond($abc_tag$current_gene_ID) {}
-
- .phylo.canvas bind $abc_tag$current_gene_ID <Button-1> {
- set curX %x
- set curY %y
- }
- .phylo.canvas bind $abc_tag$current_gene_ID <B1-Motion> {
- moveNode [.phylo.canvas find withtag current] [expr %x-$curX] [expr %y-$curY]
- set curX %x
- set curY %y
- }
- bind .geneid.entry <Return> {
- Shake_the_Node $abc_tag$current_gene_ID
- showName $current_gene_ID .geneid.entry
- }
- # ON WINDOWS CHANGE TO <Double-1> #
- # .phylo.canvas bind $abc_tag$current_gene_ID <Double-1>
- .phylo.canvas bind $abc_tag$current_gene_ID <Button-2> {
- set curX [.phylo.canvas canvasx %x]
- set curX [expr int(round($curX))]
- set curY [.phylo.canvas canvasy %y]
- set curY [expr int(round($curY))]
- Print_Gene_ID $current_gene_ID $curX $curY
- }
- #################
- bind .phylo.canvas <Control-a> {
- .phylo.canvas find withtag $abc_tag$current_gene_ID
- set sw_node_A $current_gene_ID
- }
- bind .phylo.canvas <Control-s> {
- .phylo.canvas find withtag $abc_tag$current_gene_ID
- set sw_node_B $current_gene_ID
- }
- #################
- bind .phylo.canvas w {
- .phylo.canvas find withtag $abc_tag$current_gene_ID
- .phylo.canvas itemconfigure $abc_tag$current_gene_ID -fill white
- }
- bind .phylo.canvas b {
- .phylo.canvas find withtag $abc_tag$current_gene_ID
- .phylo.canvas itemconfigure $abc_tag$current_gene_ID -fill blue
- }
- bind .phylo.canvas c {
- .phylo.canvas find withtag $abc_tag$current_gene_ID
- .phylo.canvas itemconfigure $abc_tag$current_gene_ID -fill cyan
- }
- bind .phylo.canvas s {
- .phylo.canvas find withtag $abc_tag$current_gene_ID
- .phylo.canvas itemconfigure $abc_tag$current_gene_ID -fill blue4
- }
- bind .phylo.canvas g {
- .phylo.canvas find withtag $abc_tag$current_gene_ID
- .phylo.canvas itemconfigure $abc_tag$current_gene_ID -fill green
- }
- bind .phylo.canvas o {
- .phylo.canvas find withtag $abc_tag$current_gene_ID
- .phylo.canvas itemconfigure $abc_tag$current_gene_ID -fill orange
- }
- bind .phylo.canvas r {
- .phylo.canvas find withtag $abc_tag$current_gene_ID
- .phylo.canvas itemconfigure $abc_tag$current_gene_ID -fill red
- }
- bind .phylo.canvas v {
- .phylo.canvas find withtag $abc_tag$current_gene_ID
- .phylo.canvas itemconfigure $abc_tag$current_gene_ID -fill violet
- }
- bind .phylo.canvas p {
- .phylo.canvas find withtag $abc_tag$current_gene_ID
- .phylo.canvas itemconfigure $abc_tag$current_gene_ID -fill purple
- }
- bind .phylo.canvas y {
- .phylo.canvas find withtag $abc_tag$current_gene_ID
- .phylo.canvas itemconfigure $abc_tag$current_gene_ID -fill yellow
- }
- if { $node_type == "removable" && $input_type == "MANUAL" } {
- bind .phylo.canvas 1 {
- set firstNode $current_gene_ID
- set tag_list [.phylo.canvas gettags $firstNode]
- set removable_tag [lindex $tag_list 1]
- puts $removable_tag
- set current_gene_ID_A $current_gene_ID
- .phylo.canvas itemconfigure $abc_tag$current_gene_ID_A -fill purple
- }
- }
- if { $node_type == "removable" && $input_type == "MANUAL" } {
- bind .phylo.canvas 2 {
- set curNode [.phylo.canvas find withtag $abc_tag$current_gene_ID]
- set tag_list [.phylo.canvas gettags $curNode]
- set removable_tag [lindex $tag_list 1]
- puts $removable_tag
- set curNode $current_gene_ID
- set current_gene_ID_B $current_gene_ID
- set fill_color $fake_edge_color
- set line_thickness 2
- set fake_identity "fake_identity"
- set fake_identity_value "0"
- if { ($firstNode != "") && ($curNode != "") } {
- mkEdge $firstNode $curNode $fill_color $line_thickness $current_gene_ID_A $current_gene_ID_B \
- $fake_identity\_$fake_identity_counter $fake_identity_value
- .phylo.canvas itemconfigure $abc_tag$current_gene_ID_B -fill purple
- incr fake_identity_counter
- }
- }
- }
- .phylo.canvas bind $abc_tag$current_gene_ID <Enter> "showName $current_gene_ID .geneid.entry"
- .phylo.canvas bind $abc_tag$current_gene_ID <Leave> "clearName .geneid.entry .geneid.degree_entry"
- .phylo.canvas bind $abc_tag$current_gene_ID <Button-3> {
- set curX %x
- set curY %y
- Shake_the_Node $abc_tag$current_gene_ID
- }
-}
-
-proc mkEdge {first second fill_color line_thickness current_gene_ID_A current_gene_ID_B edge_tag current_gene_similarity} {
-
- global abc_tag
- global nodeX
- global nodeY
- global edgeFirst
- global edgeSecond
- global edgeCounter
-
- set edge_type "real_edge"
- if { $current_gene_similarity == 0 } {
- set edge_type "removable"
- }
-
- set current_gene_similarity [expr int(round($current_gene_similarity*100))]
- set edge [.phylo.canvas create line $nodeX($abc_tag$first) $nodeY($abc_tag$first) \
- $nodeX($abc_tag$second) $nodeY($abc_tag$second) -fill $fill_color -width $line_thickness \
- -tags "$edge_tag\_$current_gene_similarity $edge_type"]
-
- .phylo.canvas lower $edge
-
- .phylo.canvas bind $edge_tag\_$current_gene_similarity <Enter> \
- "HighLightEdge .phylo.canvas $edge_tag\_$current_gene_similarity $current_gene_similarity"
- ###########################
- .phylo.canvas bind $edge_tag\_$current_gene_similarity <Leave> \
- "HighLightEdge_Back .phylo.canvas $edge_tag\_$current_gene_similarity $fill_color"
- ###########################
- # ON WINDOWS CHANGE TO <Double-1> #
- # .phylo.canvas bind $edge_tag\_$current_gene_similarity <Double-1> "Print_Edge_Weight $current_gene_similarity"
- .phylo.canvas bind $edge_tag\_$current_gene_similarity <Button-2> "Print_Edge_Weight $current_gene_similarity"
- ###########################
- lappend edgeFirst($abc_tag$first) $edge
- lappend edgeSecond($abc_tag$second) $edge
- update
- .phylo.canvas lower dummy_ps_background
- incr edgeCounter
-}
-
-proc moveNode_Slow {node xDist yDist} {
-
- global abc_tag
- global nodeX
- global nodeY
- global edgeFirst
- global edgeSecond
-
- global tcl_precision
-
- if {$node != "" && $node != $abc_tag} {
- .phylo.canvas move $node $xDist $yDist
- incr nodeX($node) $xDist
- incr nodeY($node) $yDist
- set edge_counter 0
- foreach edge $edgeFirst($node) {
- .phylo.canvas coords $edge $nodeX($node) $nodeY($node) \
- [lindex [.phylo.canvas coords $edge] 2] \
- [lindex [.phylo.canvas coords $edge] 3]
- incr edge_counter
- }
- foreach edge $edgeSecond($node) {
- .phylo.canvas coords $edge [lindex [.phylo.canvas coords $edge] 0] \
- [lindex [.phylo.canvas coords $edge] 1] \
- $nodeX($node) $nodeY($node)
- incr edge_counter
- }
- showDegree $edge_counter .geneid.degree_entry
- }
-}
-
-proc moveNode {node xDist yDist} {
-
- global nodeX
- global nodeY
- global edgeFirst
- global edgeSecond
-
- global tcl_precision
-
- .phylo.canvas raise $node
-
- set tag_list [.phylo.canvas gettags $node]
- set id_tag [lindex $tag_list 0]
- # puts $id_tag
- set node $id_tag
-
- .phylo.canvas move $node $xDist $yDist
- if {[info exists nodeX($node)] == 1 && [info exists nodeY($node)] == 1} {
- incr nodeX($node) $xDist
- incr nodeY($node) $yDist
- foreach edge $edgeFirst($node) {
- .phylo.canvas coords $edge $nodeX($node) $nodeY($node) \
- [lindex [.phylo.canvas coords $edge] 2] \
- [lindex [.phylo.canvas coords $edge] 3]
- }
- foreach edge $edgeSecond($node) {
- .phylo.canvas coords $edge [lindex [.phylo.canvas coords $edge] 0] \
- [lindex [.phylo.canvas coords $edge] 1] \
- $nodeX($node) $nodeY($node)
- }
- }
-}
-
-proc Plot_Genes_on_Canvas { genes_range graph_radius } {
-
- global nodes_array
- global edges_array
- global list_of_nodes
- global list_of_edges
- global object_x_size
- global object_y_size
- global error_status
- global tcl_precision
-
- puts "Tcl precision: $tcl_precision"
-
- set tick 1
- set radians_per_degree [expr 3.1416/180]
- # set radians_per_degree [expr 3.141593/180]
-
- if {[info exists list_of_nodes] != 1 || [info exists list_of_edges] != 1} {
- puts "Load Data into Memory first, then click \"Run\" again"
- .phylo.canvas create text 100 100 -text "Load Data into Memory first, then click \"Run\" again" -anchor sw -fill white
- update
- bell
- set error_status 1
- }
-
- if {[info exists list_of_nodes] == 1 && [info exists list_of_edges] == 1} {
- foreach current_node $list_of_nodes {
- set angle [expr $tick*(360.0001/$genes_range)]
- # set angle [expr $tick*(360.000001/$genes_range)]
- set current_gene_ID $current_node
- set pointX($tick) [expr int(round($graph_radius*sin($angle*$radians_per_degree))) \
- + $graph_radius + 35 + $object_x_size]
- set pointY($tick) [expr int(round($graph_radius*cos($angle*$radians_per_degree))) \
- + $graph_radius + 35 + $object_y_size]
-
- set dot_pointX($tick) [expr $pointX($tick) + 2]
- set dot_pointY($tick) [expr $pointY($tick) + 2]
-
- mkNode $dot_pointX($tick) $dot_pointY($tick) $current_gene_ID
- update
- incr tick
- }
- }
-}
-
-proc Create_Graph_from_Data_MEMORY {} {
-
- ##### COMMENT ON WINDOWS CURSOR CONFIG #####
- . config -cursor {watch white black}
-
- global genes_id_data_file
- global matrix_data_file
- global genes_range
- global nodes_array
- global edges_array
- global list_of_nodes
- global list_of_edges
-
- set genes_range 0
- if {[info exists list_of_nodes] == 1} {
- unset list_of_nodes
- }
-
- set input_file_to_open_nodes [open "$genes_id_data_file" "r"]
- set input_file_to_open_edges [open "$matrix_data_file" "r"]
-
- while {[gets $input_file_to_open_nodes current_line] >= 0} {
-
- set current_seq_ID [lindex [split $current_line] 0]
- puts "$current_seq_ID"
- if {$genes_range == 0} {
- set list_of_nodes [lappend list_of_nodes $current_seq_ID]
- set nodes_array($current_seq_ID) $current_seq_ID
- incr genes_range
- } else {
- set already_done [lsearch -exact $list_of_nodes $current_seq_ID]
- if {$already_done < 0 && $current_seq_ID != ""} {
- set list_of_nodes [lappend list_of_nodes $current_seq_ID]
- set nodes_array($current_seq_ID) $current_seq_ID
- incr genes_range
- }
- if {$already_done >= 0 && $current_seq_ID != ""} {
- puts "WARNING: $current_seq_ID duplicated"
- bell
- after 1500
- }
- }
- update
- }
- close $input_file_to_open_nodes
- puts "Total Number of Nodes: $genes_range"
- puts "Processing Matrix File"
- after 100
-
- set matrix_counter 0
-
- if {[info exists list_of_edges] == 1} {
- unset list_of_edges
- }
-
- while {[gets $input_file_to_open_edges current_line] >= 0} {
-
- set id_A [lindex $current_line 0]
- set id_B [lindex $current_line 1]
- set idnt [lindex $current_line 2]
-
- set query1 [info exists matrix_array($id_A,$id_B)]
- # puts $query1
- set query2 [info exists matrix_array($id_B,$id_A)]
- # puts $query2
- if {$query1 == 0 && $query2 == 0} {
- set matrix_array($id_A,$id_B) "$id_A\t$id_B\t$idnt"
- set list_of_edges [lappend list_of_edges $matrix_array($id_A,$id_B)]
- incr matrix_counter
- puts $matrix_counter
- } else {
- puts "WARNING: $current_line duplicated"
- bell
- after 1500
- }
- }
- close $input_file_to_open_edges
- bell
- # puts $list_of_edges
-
- ##### COMMENT ON WINDOWS CURSOR CONFIG #####
- . config -cursor {top_left_arrow black white}
-}
-
-proc Create_Graph_from_Data_CANVAS {} {
-
- # puts "I am here ... "
-
- global main_cursor_color
-
- ##### COMMENT ON WINDOWS CURSOR CONFIG #####
- .phylo.canvas config -cursor {watch white}
-
- global abc_tag
- global tcl_precision
- global genes_range
- global nodes_array
- global edges_array
- global list_of_nodes
- global list_of_edges
- global edgeCounter
- global level_of_similarity_1
- global level_of_similarity_2
- global level_of_similarity_3
- global level_of_similarity_4
- global level_of_similarity_5
- global level_of_similarity_6
- global color_of_similarity_1
- global color_of_similarity_2
- global color_of_similarity_3
- global color_of_similarity_4
- global color_of_similarity_5
- global color_of_similarity_6
- global thickness_of_similarity_1
- global thickness_of_similarity_2
- global thickness_of_similarity_3
- global thickness_of_similarity_4
- global thickness_of_similarity_5
- global thickness_of_similarity_6
-
- global object_fill_color_connect
- global object_outline_connect
- global edge_label_counter
-
- set edge_label_counter 0
-
- foreach current_edge $list_of_edges {
-
- set current_edge [split $current_edge]
- set current_gene_ID_A [lindex $current_edge 0]
- set current_gene_ID_B [lindex $current_edge 1]
- set current_gene_similarity [lindex $current_edge 2]
- # puts "$current_gene_ID_A\t$current_gene_ID_B\t$current_gene_similarity"
-
- set fill_color white
-
- if {$current_gene_similarity >= $level_of_similarity_1} {
- set fill_color $color_of_similarity_1
- set line_thickness $thickness_of_similarity_1
- }
- if {$current_gene_similarity >= $level_of_similarity_2 && $current_gene_similarity < $level_of_similarity_1} {
- set fill_color $color_of_similarity_2
- set line_thickness $thickness_of_similarity_2
- }
- if {$current_gene_similarity >= $level_of_similarity_3 && $current_gene_similarity < $level_of_similarity_2} {
- set fill_color $color_of_similarity_3
- set line_thickness $thickness_of_similarity_3
- }
- if {$current_gene_similarity >= $level_of_similarity_4 && $current_gene_similarity < $level_of_similarity_3} {
- set fill_color $color_of_similarity_4
- set line_thickness $thickness_of_similarity_4
- }
- if {$current_gene_similarity >= $level_of_similarity_5 && $current_gene_similarity < $level_of_similarity_4} {
- set fill_color $color_of_similarity_5
- set line_thickness $thickness_of_similarity_5
- }
- if {$current_gene_similarity >= $level_of_similarity_6 && $current_gene_similarity < $level_of_similarity_5} {
- set fill_color $color_of_similarity_6
- set line_thickness $thickness_of_similarity_6
- }
- if {$current_gene_similarity >= $level_of_similarity_6} {
-
- set firstNode $current_gene_ID_A
- set curNode $current_gene_ID_B
-
- if {($firstNode != "") && ($curNode != "")} {
- set edge_tag "$edgeCounter"
- mkEdge $firstNode $curNode $fill_color $line_thickness \
- $current_gene_ID_A $current_gene_ID_B \
- $edge_tag $current_gene_similarity
- .phylo.canvas itemconfigure $abc_tag$curNode -fill $object_fill_color_connect \
- -outline $object_outline_connect
- .phylo.canvas itemconfigure $abc_tag$firstNode -fill $object_fill_color_connect \
- -outline $object_outline_connect
- unset current_gene_ID_B
- }
- }
- }
- bell
- ##### COMMENT ON WINDOWS CURSOR CONFIG #####
- .phylo.canvas config -cursor "tcross $main_cursor_color"
-}
-
-proc showWeight {current_edge_weight layer3} {
- set is_it_there [winfo exists .geneid]
- if {$is_it_there == "0"} {
- Gene_ID_Window
- }
- $layer3 delete 0 end
- $layer3 insert end $current_edge_weight
-}
-
-proc showName {current_gene_ID layer1} {
-
- global current_adjacent_node
- global main_cursor_color
-
- set is_it_there [winfo exists .geneid]
- if {$is_it_there == "0"} {
- Gene_ID_Window
- }
- set adj_there [winfo exists .adjacency_list]
- if {$adj_there == 1} {
- set current_adjacent_node $current_gene_ID
- }
- ##### COMMENT ON WINDOWS CURSOR CONFIG #####
- .phylo.canvas config -cursor "plus $main_cursor_color"
- $layer1 delete 0 end
- $layer1 insert end $current_gene_ID
-}
-
-proc highLightGene { w tn } {
-
- global abc_tag
- global adj_highlight_color
- global adj_highlight_outline
-
- set old_node_colour [lindex [$w itemconfig $abc_tag$tn -fill] 4]
- set old_node_fill [lindex [$w itemconfig $abc_tag$tn -outline] 4]
- $w itemconfigure $abc_tag$tn -fill "$adj_highlight_color" -outline "$adj_highlight_outline"
-}
-
-proc highLightGene_Back { w tn old_node_colour old_node_fill } {
-
- global abc_tag
-
- $w itemconfigure $abc_tag$tn -fill $old_node_colour -outline $old_node_fill
-}
-
-proc HighLightEdge { w current current_gene_similarity} {
-
- ##### COMMENT ON WINDOWS CURSOR CONFIG #####
- $w config -cursor {cross cyan}
- $w itemconfigure $current -fill "red"
- Global_XY_Coords $current
- showWeight $current_gene_similarity .geneid.weight_entry
-
-}
-
-proc Global_XY_Coords {current} {
-
- global sim_curX
- global sim_curY
-
- .phylo.canvas bind $current <Motion> {
- set sim_curX [.phylo.canvas canvasx %x]
- set sim_curX [expr int(round($sim_curX))]
- set sim_curY [.phylo.canvas canvasy %y]
- set sim_curY [expr int(round($sim_curY))]
- }
-}
-
-proc HighLightEdge_Back { w current fill_color} {
-
- global main_cursor_color
-
- ##### COMMENT ON WINDOWS CURSOR CONFIG #####
- $w config -cursor "tcross $main_cursor_color"
-
- clearWeight .geneid.weight_entry
- $w itemconfigure $current -fill $fill_color
-}
-
-proc clearName { layer1 layer2 } {
-
- global main_cursor_color
-
- ##### COMMENT ON WINDOWS CURSOR CONFIG #####
- .phylo.canvas config -cursor "tcross $main_cursor_color"
- $layer1 delete 0 end
- $layer2 delete 0 end
-}
-
-proc clearWeight { layer3 } {
-
- $layer3 delete 0 end
-}
-
-proc showDegree {edge_counter layer2} {
-
- global main_cursor_color
-
- set is_it_there [winfo exists .geneid]
- if {$is_it_there == "0"} {
- Gene_ID_Window
- }
- ##### COMMENT ON WINDOWS CURSOR CONFIG #####
- .phylo.canvas config -cursor "plus $main_cursor_color"
- $layer2 delete 0 end
- $layer2 insert end $edge_counter
-}
-
-proc Dots_Coord_Generator {} {
-
- global list_of_nodes
- global dots_coord_file
-
- set nodes_coord_open [open $dots_coord_file "w"]
-
- foreach current_gene_ID $list_of_nodes {
- set the_Node $current_gene_ID
- if {$the_Node == ""} {
- continue
- }
- make_Nodes_Coords $the_Node $nodes_coord_open $current_gene_ID
- }
- close $nodes_coord_open
- bell
-}
-
-proc make_Nodes_Coords {the_Node nodes_coord_open current_gene_ID} {
-
- global abc_tag
- global nodeX
- global nodeY
-
- puts -nonewline $nodes_coord_open $current_gene_ID\t$nodeX($abc_tag$the_Node)\t$nodeY($abc_tag$the_Node)\n
-}
-
-proc Nodes_Coord_Dialog {} {
-
- destroy .node_xy
- toplevel .node_xy
-
- wm title .node_xy "Node Coordinates"
- wm protocol .node_xy WM_DELETE_WINDOW "destroy .node_xy"
- wm minsize .node_xy 360 150
-
- global dots_coord_file
- global dots_coord_file_restore
- global restore_speed
-
- #####
- label .node_xy.f_to_save_label -text "Save Coords to:" -width 14 -bg gray
- place .node_xy.f_to_save_label -x 20 -y 20
-
- entry .node_xy.f_to_save_entry -relief sunken \
- -textvariable dots_coord_file -bg lightyellow -width 17
- place .node_xy.f_to_save_entry -x 130 -y 20
-
- button .node_xy.save -text "Save" -bg yellow3 \
- -width 6 -command {Dots_Coord_Generator}
- place .node_xy.save -x 270 -y 18
- #####
- label .node_xy.f_restore_label -text "Restore Coords:" -width 14 -bg gray
- place .node_xy.f_restore_label -x 20 -y 55
-
- entry .node_xy.f_restore_entry -relief sunken \
- -textvariable dots_coord_file_restore -bg lightyellow -width 17
- place .node_xy.f_restore_entry -x 130 -y 55
-
- label .node_xy.sp_restore_label -text "Restore Speed:" -width 14 -bg gray
- place .node_xy.sp_restore_label -x 20 -y 90
-
- radiobutton .node_xy.sp_restore_F -relief sunken -variable restore_speed \
- -text " FAST " -value "FAST"
- radiobutton .node_xy.sp_restore_S -relief sunken -variable restore_speed \
- -text " SLOW " -value "SLOW"
- place .node_xy.sp_restore_F -x 130 -y 90
- place .node_xy.sp_restore_S -x 130 -y 120
-
- button .node_xy.restore -text "Restore" -bg yellow3 \
- -width 6 -command {Dots_Coord_Restore}
- place .node_xy.restore -x 270 -y 58
- #####
- button .node_xy.howto -text "HowTo" -bg gray -command {How_To_Save}
- place .node_xy.howto -x 40 -y 150
-
- button .node_xy.dismiss -text "Dismiss" -bg gray -command {destroy .node_xy}
- place .node_xy.dismiss -x 250 -y 150
-}
-
-proc How_To_Save {} {
-
- destroy .how_to_save
- toplevel .how_to_save
- wm title .how_to_save "HowTo Save and Restore"
- wm protocol .how_to_save WM_DELETE_WINDOW "destroy .how_to_save"
-
- label .how_to_save.text -text "
-You may save coordinates of nodes for current
-project and restore those coordinates when
-you re-run new project with the same node's
-ID set.
-WARNING! Only coordinates and node IDs are
-saved. Labels or other graphics added
-on canvas by hand are not saved in
-\"phylo_coords.txt\" file.
-"
- button .how_to_save.dismiss -text "Dismiss" \
- -command "destroy .how_to_save" -bg gray -width 8
-
- pack .how_to_save.text -padx 7 -pady 7
- pack .how_to_save.dismiss -padx 3 -pady 3
-}
-
-proc Dots_Coord_Restore {} {
-
- global abc_tag
- global nodeX
- global nodeY
- global dots_coord_file_restore
- global restore_speed
-
- set f_open_restore [open $dots_coord_file_restore "r"]
-
- while {[gets $f_open_restore current_line_coord] >= 0 } {
- set current_gene_ID [lindex [split $current_line_coord] 0]
- set coordinates_x [lindex [split $current_line_coord] 1]
- set coordinates_y [lindex [split $current_line_coord] 2]
- set the_Node $abc_tag$current_gene_ID
- if {$the_Node == ""} {
- continue
- }
- set move_me_X [expr $coordinates_x - $nodeX($the_Node)]
- set move_me_Y [expr $coordinates_y - $nodeY($the_Node)]
- if {$move_me_X == 0 && $move_me_Y == 0} {
- continue
- }
- if { $restore_speed == "SLOW" } {
- if {$move_me_X > 0} {
- while {$move_me_X > 0} {
- moveNode $the_Node 1 0
- incr move_me_X -1
- update
- }
- }
- if {$move_me_X < 0} {
- while {$move_me_X < 0} {
- moveNode $the_Node -1 0
- incr move_me_X 1
- update
- }
- }
- if {$move_me_Y > 0} {
- while {$move_me_Y > 0} {
- moveNode $the_Node 0 1
- incr move_me_Y -1
- update
- }
- }
- if {$move_me_Y < 0} {
- while {$move_me_Y < 0} {
- moveNode $the_Node 0 -1
- incr move_me_Y 1
- update
- }
- }
- } else {
- moveNode $the_Node $move_me_X $move_me_Y
- update
- }
- }
- close $f_open_restore
- bell
-}
-
-proc HTML_Image_Map_Generator {} {
-
- global abc_tag
- global html_image_map
- global list_of_nodes
-
- set html_image_map_open [open $html_image_map "w"]
-
- puts $html_image_map_open "<!doctype html public \"-//w3c//dtd html 4.0//en\">
-<html>
-<head>
-<title>
-Web Page Title
-</title>
-</head>
-<body text=\"#fffccc\" bgcolor=\"#000077\" \
-link=\"#ffffcc\" vlink=\"#ffff55\" alink=\"#ffffff\">
-<font face=\"Arial, Helvetica\">
-<center>
-<h2>
-<font color = \"#ffffff\">
-Web Page Title
-</font>
-</h2>
-</center>
-<p>
-<br>
-<center>
-Web Page Description
-</center>
-<br>
-<center>
-
-<!-- Created with PhyloGrapher -->
-
-<img src=\"phylographer_image_01.gif\" vspace=\"10\" hspace=\"10\" \
-align=\"middle\" usemap=\"#phylographer\">
-
-<map name=\"phylographer\">
-"
-
- foreach current_gene_ID $list_of_nodes {
- set xy_node_coords [.phylo.canvas coords $abc_tag$current_gene_ID]
- if {$xy_node_coords == ""} {
- continue
- }
- make_HTML $xy_node_coords $html_image_map_open $current_gene_ID
- }
-
- puts $html_image_map_open "
-</map>
-</center>
-<br>
-<br>
-Web Page Content Here
-<br>
-<br>
-</body>
-</html>
-"
- close $html_image_map_open
- bell
-}
-
-proc make_HTML {xy_node_coords html_image_map_open current_gene_ID} {
-
- global url_prefix
- global url_suffix
-
- puts -nonewline $html_image_map_open "<area title=\"$current_gene_ID\" "
- puts -nonewline $html_image_map_open "shape=\"RECT\" coords=\""
- puts -nonewline $html_image_map_open "$xy_node_coords\" "
- puts -nonewline $html_image_map_open "HREF=\"http\:\/\/$url_prefix\/"
- puts -nonewline $html_image_map_open "$current_gene_ID"
- puts -nonewline $html_image_map_open "$url_suffix"
- puts -nonewline $html_image_map_open "\" target=\"_blank\">\n"
-}
-
-proc Print_Gene_ID {current_gene_ID curX curY} {
-
- global node_color_label
- global canvas_editor_font_type
- global canvas_editor_font_size
- global canvas_editor_font_style
-
- set label_tag "label"
-
- .phylo.canvas create text [expr $curX+3] [expr $curY-3] -text $current_gene_ID \
- -font "$canvas_editor_font_type $canvas_editor_font_size $canvas_editor_font_style" \
- -anchor sw -fill $node_color_label -tags "$current_gene_ID\_$label_tag removable"
-
- .phylo.canvas bind $current_gene_ID\_$label_tag <Button-1> {
- set curX %x
- set curY %y
- }
- .phylo.canvas bind $current_gene_ID\_$label_tag <B1-Motion> {
- moveNode [.phylo.canvas find withtag current] [expr %x-$curX] [expr %y-$curY]
- set curX %x
- set curY %y
- }
-}
-
-proc Print_Edge_Weight {edge_tag} {
-
- global edge_color_label
- global canvas_editor_font_type
- global canvas_editor_font_size
- global canvas_editor_font_style
- global edge_label_counter
-
- global sim_curX
- global sim_curY
-
- set curX $sim_curX
- set curY $sim_curY
-
- set label_tag "label"
-
- global nodeX
- global nodeY
- global edgeFirst
- global edgeSecond
-
- .phylo.canvas create text [expr $curX+3] [expr $curY-3] -text "$edge_tag" \
- -font "$canvas_editor_font_type $canvas_editor_font_size $canvas_editor_font_style" \
- -anchor sw -fill $edge_color_label \
- -tag "$edge_tag\_$label_tag\_$edge_label_counter removable"
-
- .phylo.canvas bind $edge_tag\_$label_tag\_$edge_label_counter <Button-1> {
- set curX %x
- set curY %y
- }
- .phylo.canvas bind $edge_tag\_$label_tag\_$edge_label_counter <B1-Motion> {
- moveNode [.phylo.canvas find withtag current] [expr %x-$curX] [expr %y-$curY]
- set curX %x
- set curY %y
- }
- incr edge_label_counter
-}
-
-proc Gene_ID_Window {} {
-
- destroy .geneid
- toplevel .geneid
- .geneid config -bg black
- wm transient .geneid .phylo.canvas
- wm title .geneid "Graph Info"
- wm protocol .geneid WM_DELETE_WINDOW "destroy .geneid"
-
- label .geneid.label -text "Node ID: " -bg black -fg lightblue
- entry .geneid.entry -relief sunken -textvariable current_gene_ID \
- -bg blue4 -fg yellow -insertbackground lightyellow
- grid .geneid.label .geneid.entry
-
- label .geneid.degree_label -text "Degree: " -bg black -fg lightblue
- entry .geneid.degree_entry -relief sunken -textvariable current_gene_degree \
- -bg blue4 -fg yellow -insertbackground lightyellow
- grid .geneid.degree_label .geneid.degree_entry
-
- label .geneid.empty -text "" -bg black -fg lightblue
- grid .geneid.empty
-
- label .geneid.weight_label -text "Edge Weight: " -bg black -fg lightblue
- entry .geneid.weight_entry -relief sunken -textvariable current_edge_weight \
- -bg blue4 -fg yellow -insertbackground lightyellow
- grid .geneid.weight_label .geneid.weight_entry
-}
-
-proc Shake_the_Node {current_gene_ID} {
-
- set k 20
- set l 20
- set m 20
- set n 20
- set o 20
- set p 20
-
- set old_node_colour [lindex [.phylo.canvas itemconfig $current_gene_ID -fill] 4]
- set old_node_fill [lindex [.phylo.canvas itemconfig $current_gene_ID -outline] 4]
- .phylo.canvas itemconfigure $current_gene_ID -fill "red" -outline "yellow"
-
- while {$k >= 0} {
- moveNode_Slow $current_gene_ID 0 -1
- update
- incr k -1
- }
- while {$l >= 0} {
- moveNode_Slow $current_gene_ID 1 1
- update
- incr l -1
- }
- while {$m >= 0} {
- moveNode_Slow $current_gene_ID -1 1
- update
- incr m -1
- }
- while {$n >= 0} {
- moveNode_Slow $current_gene_ID -1 -1
- update
- incr n -1
- }
- while {$o >= 0} {
- moveNode_Slow $current_gene_ID 1 -1
- update
- incr o -1
- }
- while {$p >= 0} {
- moveNode_Slow $current_gene_ID 0 1
- update
- incr p -1
- }
- bell
- .phylo.canvas itemconfigure $current_gene_ID -fill $old_node_colour -outline $old_node_fill
- clearName .geneid.entry .geneid.degree_entry
-}
-
-proc Edge_Counter {} {
-
- global edges_data_file
-
- destroy .edge_counter_win
- toplevel .edge_counter_win
- wm title .edge_counter_win "Edge Counter"
- wm protocol .edge_counter_win WM_DELETE_WINDOW "destroy .edge_counter_win"
- wm minsize .edge_counter_win 300 200
-
- label .edge_counter_win.input_file_label -text "output file:" -bg gray -width 12
- place .edge_counter_win.input_file_label -x 20 -y 20
-
- entry .edge_counter_win.input_file_entry -relief sunken \
- -textvariable edges_data_file -bg lightyellow -width 20
- place .edge_counter_win.input_file_entry -x 115 -y 20
-
- button .edge_counter_win.howto -text "HowTo" -bg gray -width 8 -command {HowTo_Count_Edges}
- place .edge_counter_win.howto -x 60 -y 150
-
- button .edge_counter_win.dismiss -text "Dismiss" -bg gray -width 8 -command {destroy .edge_counter_win}
- place .edge_counter_win.dismiss -x 160 -y 150
-
- button .edge_counter_win.doit -text "Count Edges" -bg orange -width 12 -command {Edge_Degree_Counter}
- place .edge_counter_win.doit -x 140 -y 50
-
-}
-
-proc HowTo_Count_Edges {} {
-
- destroy .how_to_edges
- toplevel .how_to_edges
- wm title .how_to_edges "HowTo Count Edges"
- wm protocol .how_to_edges WM_DELETE_WINDOW "destroy .how_to_edges"
-
- label .how_to_edges.text -text "
-Each vertex may have some number of edges.
-Number of edges for given vertex is a
-vertex degree. To generate file with the
-list of vertex degree for all elements in
-your graph file just click \"Count Edges\".
-Program will examine the current canvas
-and generate a new file you specify.
-"
- button .how_to_edges.dismiss -text "Dismiss" \
- -command "destroy .how_to_edges" -bg gray -width 8
-
- pack .how_to_edges.text -padx 7 -pady 7
- pack .how_to_edges.dismiss -padx 3 -pady 3
-
-}
-
-proc Edge_Degree_Counter {} {
-
- global abc_tag
- global list_of_nodes
- global edges_data_file
-
- set edges_data_file_open [open $edges_data_file "w"]
-
- foreach current_gene_ID $list_of_nodes {
- set the_Node $current_gene_ID
- if {$the_Node == ""} {
- continue
- }
- Edge_Degree_Counter_Movie $abc_tag$the_Node $edges_data_file_open $current_gene_ID
- }
- close $edges_data_file_open
- bell
- after 100
- bell
-}
-
-proc Edge_Degree_Counter_Movie {the_Node edges_data_file_open current_gene_ID} {
-
- global abc_tag
-
- set k 0
- set l 0
- set m 0
- set n 0
- set o 0
- set p 0
-
- set old_node_colour [lindex [.phylo.canvas itemconfig $abc_tag$current_gene_ID -fill] 4]
- set old_node_fill [lindex [.phylo.canvas itemconfig $abc_tag$current_gene_ID -outline] 4]
- .phylo.canvas itemconfigure $abc_tag$current_gene_ID -fill "red" -outline "yellow"
-
- while {$k >= 0} {
- moveNode_Slow $the_Node 0 -1
- update
- incr k -1
- }
- while {$l >= 0} {
- moveNode_Slow $the_Node 1 1
- update
- incr l -1
- }
- while {$m >= 0} {
- moveNode_Slow $the_Node -1 1
- update
- incr m -1
- }
- while {$n >= 0} {
- moveNode_Slow $the_Node -1 -1
- update
- incr n -1
- }
- while {$o >= 0} {
- moveNode_Slow $the_Node 1 -1
- update
- incr o -1
- }
- while {$p >= 0} {
- moveNode_Slow_Edges $the_Node 0 1 $edges_data_file_open $current_gene_ID
- update
- incr p -1
- }
- .phylo.canvas itemconfigure $abc_tag$current_gene_ID -fill $old_node_colour -outline $old_node_fill
- clearName .geneid.entry .geneid.degree_entry
-}
-
-proc moveNode_Slow_Edges {node xDist yDist edges_data_file_open current_gene_ID} {
-
- global abc_tag
- global nodeX
- global nodeY
- global edgeFirst
- global edgeSecond
-
- global tcl_precision
-
- .phylo.canvas move $node $xDist $yDist
- incr nodeX($node) $xDist
- incr nodeY($node) $yDist
- set edge_counter 0
- foreach edge $edgeFirst($node) {
- .phylo.canvas coords $edge $nodeX($node) $nodeY($node) \
- [lindex [.phylo.canvas coords $edge] 2] \
- [lindex [.phylo.canvas coords $edge] 3]
- incr edge_counter
- }
- foreach edge $edgeSecond($node) {
- .phylo.canvas coords $edge [lindex [.phylo.canvas coords $edge] 0] \
- [lindex [.phylo.canvas coords $edge] 1] \
- $nodeX($node) $nodeY($node)
- incr edge_counter
- }
- showDegree $edge_counter .geneid.degree_entry
- puts $edges_data_file_open $current_gene_ID\t$edge_counter
-}
-
-proc Events_Binding {} {
-
- global list_of_nodes
- global custom_node_counter
- global edge_label_counter
- global genes_range
- global input_type
-
- if { $input_type == "MANUAL" } {
- set custom_node_counter 1
- set edge_label_counter 0
- bind .phylo.canvas <n> {
- set new_node "Custom_Node_$custom_node_counter"
- mkNode [expr int(round([.phylo.canvas canvasx %x]))] \
- [expr int(round([.phylo.canvas canvasy %y]))] $new_node
- set list_of_nodes [lappend list_of_nodes "Custom_Node_$custom_node_counter"]
- incr custom_node_counter
- incr genes_range
- }
- }
-
- bind .phylo.canvas <Control-d> {
- set curX %x
- set curY %y
- .phylo.canvas find withtag current
- set current_tags_list [.phylo.canvas gettags "current"]
- set delete_me_current [lindex $current_tags_list 1]
- set third_tag [lindex $current_tags_list 2]
- puts "$delete_me_current $third_tag"
- if { $delete_me_current == "removable" } {
- .phylo.canvas delete current
- }
- clearName .geneid.entry .geneid.degree_entry
- }
-}
-
-proc PhyloGrapher_Canvas {} {
-
- destroy .phylo .geneid
-
- global horizontal_size
- global vertical_size
- global canvas_background
- global font_color_canvas
- global genes_range
- global graph_radius
- global edgeCounter
- global object_x_size
- global object_y_size
- global error_status
- global input_type
-
- set error_status 0
-
- global main_cursor_color
-
- set edgeCounter 0
-
- set vertical_size $horizontal_size
- set graph_radius [expr $horizontal_size/2 - 45]
-
- set scrollmax_x [expr $horizontal_size + 15 + $object_x_size]
- set scrollmax_y [expr $vertical_size + 15 + $object_y_size]
-
- Scrolled_Canvas .phylo -width 700 -height 700 \
- -scrollregion "0 0 $scrollmax_x $scrollmax_y" -bg white ; # -bg $canvas_background
-
- Dummy_Color_Movie
-
- Gene_ID_Window
-
- Html_ScreenShot $horizontal_size $vertical_size
-
- puts "$input_type"
-
- if { $input_type == "MANUAL" } {
- set genes_range 0
- focus .phylo.canvas
- }
-
- if { $input_type == "DATA" } {
- Plot_Genes_on_Canvas $genes_range $graph_radius
- }
-
- if {$error_status == 0} {
-
- Events_Binding
-
- if { $input_type == "DATA" } {
- Create_Graph_from_Data_CANVAS
- }
-
- focus .phylo.canvas
-
- ##### COMMENT ON WINDOWS CURSOR CONFIG #####
- .phylo.canvas config -cursor "tcross $main_cursor_color"
-
- .phylo.canvas create rect 0 0 $scrollmax_x $scrollmax_y \
- -fill $canvas_background -outline $canvas_background -tag dummy_ps_background
- .phylo.canvas lower dummy_ps_background
- }
-}
-
-proc Dummy_Color_Movie {} {
-
- global canvas_background
-
- .phylo.canvas create text 240 300 -fill black -text "PhyloGrapher" \
- -font "helvetica 32 bold" -anchor sw -tag phylo_banner
-
- set q 100
- while {$q >= 0} {
- .phylo.canvas configure -bg gray$q
- after 1
- incr q -1
- update
- }
- .phylo.canvas delete phylo_banner
- .phylo.canvas configure -bg $canvas_background
-}
-
-proc Html_ScreenShot { horizontal_size vertical_size } {
-
- global object_x_size
- global object_y_size
-
- .phylo.canvas create line 0 0 [expr $horizontal_size + $object_x_size + 5] 0 -fill gray50
- .phylo.canvas create line 0 0 0 [expr $vertical_size + $object_y_size] -fill gray50
- .phylo.canvas create line [expr $horizontal_size + $object_x_size + 5] 0 \
- [expr $horizontal_size + $object_x_size + 5]\
- [expr $vertical_size + $object_y_size] -fill gray50
- .phylo.canvas create line 0 [expr $vertical_size + $object_y_size] \
- [expr $horizontal_size + $object_x_size +5]\
- [expr $vertical_size + $object_y_size] -fill gray50
-}
-
-proc Show_Extras {} {
-
- destroy .extras_win
- toplevel .extras_win
- wm title .extras_win "Extras"
- wm protocol .extras_win WM_DELETE_WINDOW "destroy .extras_win"
- wm minsize .extras_win 330 200
- .extras_win config -bg black
-
- button .extras_win.canvas_ed -text "Canvas\nEditor" -command {Canvas_Editor} \
- -bg blue4 -fg lightblue -width 9 -height 2
- place .extras_win.canvas_ed -x 20 -y 20
-
- button .extras_win.node_ed -text "Node\nPainter" -command {Node_Painter} \
- -bg blue4 -fg lightblue -width 9 -height 2
- place .extras_win.node_ed -x 120 -y 20
-
- button .extras_win.node_coord -text "Node\nCoords" -command {Nodes_Coord_Dialog} \
- -bg blue4 -fg lightblue -width 9 -height 2
- place .extras_win.node_coord -x 220 -y 20
-
- button .extras_win.edges -text "Edge\nCounter" -command {Edge_Counter} \
- -bg blue4 -fg lightblue -width 9 -height 2
- place .extras_win.edges -x 20 -y 70
-
- button .extras_win.ssearch -text "Smith\nWaterman" -command {Smith_Waterman} \
- -bg blue4 -fg lightblue -width 9 -height 2
- place .extras_win.ssearch -x 120 -y 70
-
- button .extras_win.fruchterman -text "Fruchterman\nRheingold" -command {Fruchterman_Rheingold} \
- -bg blue4 -fg lightblue -width 9 -height 2
- place .extras_win.fruchterman -x 220 -y 70
-
- button .extras_win.adj_list -text "Adjacency\nList" -command {Adjacency_List} \
- -bg blue4 -fg lightblue -width 9 -height 2
- place .extras_win.adj_list -x 20 -y 120
-
- button .extras_win.dismiss -text "Dismiss" -command {destroy .extras_win} \
- -bg gray30 -fg gray75 -width 9 -height 2
- place .extras_win.dismiss -x 220 -y 140
-
-}
-
-proc Adjacency_List {} {
- destroy .adjacency_list
- toplevel .adjacency_list
- wm title .adjacency_list "Adjacency List"
- wm protocol .adjacency_list WM_DELETE_WINDOW "destroy .adjacency_list"
- wm minsize .adjacency_list 460 270
- .adjacency_list config -bg black
-
- global current_adjacent_node
- global adjacency_data_file
- global adj_highlight_color
- global adj_highlight_outline
-
- set adjacency_data_file "adjacency_data.txt"
- set adj_highlight_color "green3"
- set adj_highlight_outline "yellow"
-
- label .adjacency_list.node_label -width 7 -text "Node:" -fg blue4
- place .adjacency_list.node_label -x 10 -y 10
-
- entry .adjacency_list.node_entry -width 15 -bg lightyellow -textvariable current_adjacent_node
- place .adjacency_list.node_entry -x 70 -y 10
-
- label .adjacency_list.fill_label -width 7 -text "fill:"
- place .adjacency_list.fill_label -x 10 -y 40
-
- entry .adjacency_list.highlight_colour -width 15 -bg lightyellow -textvariable adj_highlight_color
- place .adjacency_list.highlight_colour -x 70 -y 40
-
- label .adjacency_list.outline_label -width 7 -text "outline:"
- place .adjacency_list.outline_label -x 10 -y 70
-
- entry .adjacency_list.highlight_outline -width 15 -bg lightyellow -textvariable adj_highlight_outline
- place .adjacency_list.highlight_outline -x 70 -y 70
-
- button .adjacency_list.show -text "Highlight\nAdjacent Nodes" -bg orange \
- -command {HighLight_Adjacent_Nodes}
- place .adjacency_list.show -x 30 -y 100
-
- button .adjacency_list.show_all -text "Highlight All\nNodes in Group" -bg orange \
- -command {HighLight_Adjacent_Nodes_All}
- place .adjacency_list.show_all -x 30 -y 150
-
- label .adjacency_list.dsf -bg blue4 -fg yellow \
- -justify left -text \
-"By clicking on \"Highlight All Nodes in Group\"
-PhyloGrapher performs DFS algorithm for a
-given node and highlights all connected
-nodes in a group (connected graph)."
-
- place .adjacency_list.dsf -x 10 -y 200
-
- button .adjacency_list.build -text "Build Adjacency\nList" -bg lightblue \
- -command {Build_Adjacency_List}
- place .adjacency_list.build -x 300 -y 185
-
- button .adjacency_list.dismiss -text "Dismiss" -command {destroy .adjacency_list}
- place .adjacency_list.dismiss -x 330 -y 235
-
- label .adjacency_list.howto -bg blue4 -fg yellow \
- -justify left -text \
-" About Adjacency List:
-To analyze adjacent nodes you need to
-create adjacency list file first with
-info about adjacent nodes to any given
-node. As soon as the list is available,
-by pointing a mouse cursor over any node
-and clicking on \"Highlight Adjacent Nodes\"
-you can highlight adjacent nodes."
-
- place .adjacency_list.howto -x 200 -y 10
-
- entry .adjacency_list.data_file -width 32 -bg lightyellow -textvariable adjacency_data_file
- place .adjacency_list.data_file -x 200 -y 155
-}
-
-proc HighLight_Adjacent_Nodes {} {
-
- global adjacency_data_file
- global current_adjacent_node
- global adj_highlight_color
- global adj_highlight_outline
-
- set found_the_id "NO"
-
- set adjacency_data_file_open [open $adjacency_data_file "r"]
- while {[gets $adjacency_data_file_open current_line] >= 0 && $found_the_id == "NO"} {
- set current_first_id [lindex [split $current_line "|"] 0]
- if {$current_first_id == $current_adjacent_node} {
- set found_the_id "YES"
- # puts $found_the_id
- # puts $current_adjacent_node
- # puts $current_line
- set current_line_length [llength [split $current_line "|"]]
- set k 0
- while {$k <= $current_line_length} {
- set current_some_id [lindex [split $current_line "|"] $k]
- if {$current_some_id != ""} {
- # puts $current_some_id
- highLightGene .phylo.canvas $current_some_id
- update
- }
- incr k
- }
- # puts $current_line_length
- }
- }
- close $adjacency_data_file_open
- bell
-}
-
-proc HighLight_Adjacent_Nodes_All {} {
-
- global dummy_adjacency_counter
- global already_done_nodes
- global current_adjacent_node
-
- set already_done_nodes {}
- set already_done_nodes [lappend already_done_nodes $current_adjacent_node]
- set dummy_adjacency_counter 1
- HighLight_Adjacent_Nodes_All_Loop
- bell
-}
-
-proc HighLight_Adjacent_Nodes_All_Loop {} {
-
- global dummy_adjacency_counter
- global adjacency_data_file
- global current_adjacent_node
- global adj_highlight_color
- global adj_highlight_outline
- global already_done_nodes
-
- set found_the_id "NO"
-
- set adjacency_data_file_open [open $adjacency_data_file "r"]
- while {[gets $adjacency_data_file_open current_line] >= 0 && $found_the_id == "NO"} {
- set current_first_id [lindex [split $current_line "|"] 0]
- if {$current_first_id == $current_adjacent_node} {
- set found_the_id "YES"
- # puts $found_the_id
- # puts $current_adjacent_node
- # puts $current_line
- set current_line_length [llength [split $current_line "|"]]
- set k 0
- while {$k <= $current_line_length} {
- set current_some_id [lindex [split $current_line "|"] $k]
- set already_done_status [lsearch -exact $already_done_nodes $current_some_id]
- if {$already_done_status == -1} {
- set already_done_nodes [lappend already_done_nodes $current_some_id]
- }
- if {$current_some_id != ""} {
- # puts $current_some_id
- highLightGene .phylo.canvas $current_some_id
- update
- if {$already_done_status == -1} {
- set current_adjacent_node $current_some_id
- HighLight_Adjacent_Nodes_All_Loop
- puts "message from inner loop $dummy_adjacency_counter times"
- incr dummy_adjacency_counter
- }
- }
- incr k
- }
- # puts $current_line_length
- }
- }
- close $adjacency_data_file_open
-}
-
-proc Build_Adjacency_List {} {
-
- global level_of_similarity_6
- global adjacency_data_file
- global adjacency_data_file_open
-
- global list_of_nodes
-
- set adjacency_data_file_open [open $adjacency_data_file "w"]
-
- set k 1
- foreach current_id $list_of_nodes {
- puts -nonewline $adjacency_data_file_open $current_id\|
- puts $k
- .adjacency_list.build config -bg blue -fg lightblue -text "Processing...\n$k"
- Adj_List_Extraction $current_id
- puts -nonewline $adjacency_data_file_open \n
- incr k
- update
- }
- close $adjacency_data_file_open
- puts "Adjacency List Done!\n"
- .adjacency_list.build config -bg lightblue -fg black -text "Build Adjacency\nList"
- bell
-}
-
-proc Adj_List_Extraction {current_id} {
-
- global edges_array
- global list_of_edges
-
- global adjacency_data_file_open
- global level_of_similarity_6
-
- foreach current_matrix_line $list_of_edges {
- set current_matrix_line [split $current_matrix_line]
- set matrix_id_A [lindex $current_matrix_line 0]
- set matrix_id_B [lindex $current_matrix_line 1]
- set current_sim_value [lindex $current_matrix_line 2]
- if {$current_id == $matrix_id_A && $current_sim_value >= $level_of_similarity_6} {
- puts -nonewline $adjacency_data_file_open $matrix_id_B\|
- }
- if {$current_id == $matrix_id_B && $current_sim_value >= $level_of_similarity_6} {
- puts -nonewline $adjacency_data_file_open $matrix_id_A\|
- }
- if {$current_id != $matrix_id_A && $current_id != $matrix_id_B} {
- continue
- }
- }
-}
-
-proc Fruchterman_Rheingold {} {
-
- destroy .frucht_gold
- toplevel .frucht_gold
- wm title .frucht_gold "Fruchterman Rheingold"
- wm protocol .frucht_gold WM_DELETE_WINDOW "destroy .frucht_gold"
- wm minsize .frucht_gold 440 240
-
- global list_of_nodes
- global list_of_edges
-
- global attraction_random_step
- global frucht_gold_precision
- global frucht_gold_limit
- global edge_wight_coefficient
- global random_step_value
- global repulsion_distance
-
- set attraction_random_step 12
- set frucht_gold_precision 100
- set frucht_gold_limit 300
- set edge_wight_coefficient 1
- set random_step_value 12
- set repulsion_distance 24
-
- label .frucht_gold.attraction_random_step_label -text "attr step value:" -bg yellow3 -width 16
- place .frucht_gold.attraction_random_step_label -x 10 -y 10
-
- entry .frucht_gold.attraction_random_step_entry -relief sunken \
- -textvariable attraction_random_step -bg lightyellow -width 8
- place .frucht_gold.attraction_random_step_entry -x 135 -y 10
- #####
- label .frucht_gold.random_step_label -text "repl step value:" -bg yellow3 -width 16
- place .frucht_gold.random_step_label -x 10 -y 40
-
- entry .frucht_gold.random_step_entry -relief sunken \
- -textvariable random_step_value -bg lightyellow -width 8
- place .frucht_gold.random_step_entry -x 135 -y 40
- #####
- label .frucht_gold.rep_dist_label -text "repulsion dist:" -bg yellow3 -width 16
- place .frucht_gold.rep_dist_label -x 10 -y 70
-
- entry .frucht_gold.rep_dist_entry -relief sunken \
- -textvariable repulsion_distance -bg lightyellow -width 8
- place .frucht_gold.rep_dist_entry -x 135 -y 70
- #####
- label .frucht_gold.precision_label -text "node distance K:" -bg gray -width 16
- place .frucht_gold.precision_label -x 10 -y 100
-
- entry .frucht_gold.precision_entry -relief sunken \
- -textvariable frucht_gold_precision -bg lightblue -width 8
- place .frucht_gold.precision_entry -x 135 -y 100
- #####
- label .frucht_gold.edge_wight_coeff_label -text "edge weight K:" -bg gray -width 16
- place .frucht_gold.edge_wight_coeff_label -x 10 -y 130
-
- entry .frucht_gold.edge_wight_coeff_entry -relief sunken \
- -textvariable edge_wight_coefficient -bg lightblue -width 8
- place .frucht_gold.edge_wight_coeff_entry -x 135 -y 130
- #####
- label .frucht_gold.iterations_label -text "\# of iterations:" -bg yellow3 -width 16
- place .frucht_gold.iterations_label -x 10 -y 160
-
- entry .frucht_gold.iterations_entry -relief sunken \
- -textvariable frucht_gold_limit -bg gold -width 8
- place .frucht_gold.iterations_entry -x 135 -y 160
- #####
- button .frucht_gold.organize -text "Self Organize!" -bg orange \
- -command {Self_Organize}
- place .frucht_gold.organize -x 20 -y 200
-
- button .frucht_gold.dismiss -text "Dismiss" -command {destroy .frucht_gold}
- place .frucht_gold.dismiss -x 300 -y 200
- #####
- label .frucht_gold.the_rule_label -bg blue4 -fg yellow \
- -justify left -text \
-" Current Rule:
-
-\if dist AB >= K1 * (K2 - W^2)
-move the node on a distance
-of attraction step value,
-repeat $frucht_gold_limit times.
- where:
- dist AB: distance
- between nodes A and B
- K1: node distance K
- K2: edge weight K
- W: edge weight value"
-
- place .frucht_gold.the_rule_label -x 225 -y 10
-
-}
-
-proc Self_Organize {} {
-
- global abc_tag
- global list_of_nodes
- global list_of_edges
-
- global horizontal_size
- global nodeX
- global nodeY
- global attraction_random_step
- global frucht_gold_precision
- global frucht_gold_limit
- global edge_wight_coefficient
- global entropy_factor
- global level_of_similarity_6
- global genes_range
- global random_step_value
- global repulsion_distance
-
- ### RANDOMIZATION ###
- foreach the_Node $list_of_nodes {
- set coordinates_x [expr int(round(rand()*$horizontal_size))]
- set coordinates_y [expr int(round(rand()*$horizontal_size))]
- set move_me_X [expr $coordinates_x - $nodeX($abc_tag$the_Node)]
- set move_me_Y [expr $coordinates_y - $nodeY($abc_tag$the_Node)]
- moveNode $abc_tag$the_Node $move_me_X $move_me_Y
- update
- }
-
- set iron_wall [expr $horizontal_size - 10]
-
- ### LOOP ###
- while { $frucht_gold_limit >= 0 } {
-
- foreach current_line $list_of_edges {
- set current_seq_ID_A [lindex $current_line 0]
- set current_seq_ID_B [lindex $current_line 1]
- set current_identity [lindex $current_line 2]
- ################
-
- set old_node_colour_A [lindex [.phylo.canvas itemconfig $abc_tag$current_seq_ID_A -fill] 4]
- set old_node_fill_A [lindex [.phylo.canvas itemconfig $abc_tag$current_seq_ID_A -outline] 4]
- set old_node_colour_B [lindex [.phylo.canvas itemconfig $abc_tag$current_seq_ID_B -fill] 4]
- set old_node_fill_B [lindex [.phylo.canvas itemconfig $abc_tag$current_seq_ID_B -outline] 4]
- .phylo.canvas itemconfigure $abc_tag$current_seq_ID_A -fill "red" -outline "yellow"
- .phylo.canvas itemconfigure $abc_tag$current_seq_ID_B -fill "red" -outline "yellow"
- update
- ################
-
- ### NODE A ###
-
- set the_Node_A $abc_tag$current_seq_ID_A
-
- set the_Node_A_X1 [lindex [.phylo.canvas coords $the_Node_A] 0]
- set the_Node_A_Y1 [lindex [.phylo.canvas coords $the_Node_A] 1]
- set the_Node_A_X2 [lindex [.phylo.canvas coords $the_Node_A] 2]
- set the_Node_A_Y2 [lindex [.phylo.canvas coords $the_Node_A] 3]
- set the_Node_A_X [expr ($the_Node_A_X1 + $the_Node_A_X2)/2]
- set the_Node_A_Y [expr ($the_Node_A_Y1 + $the_Node_A_Y2)/2]
-
- # puts "$the_Node_A_X1 $the_Node_A_Y1 $the_Node_A_X2 $the_Node_A_Y2 $the_Node_A_X $the_Node_A_Y $the_Node_A NODE_A COORDS"
-
- if {$the_Node_A == ""} {
- continue
- }
- set the_Node_B $current_seq_ID_B
- if {$the_Node_B == ""} {
- continue
- }
- ############## PUSH ME OUT BEGIN ##############
-
- set dummy_switch_random [expr rand()]
-
- if {$dummy_switch_random >= 0.75 && $frucht_gold_limit > 0} {
- set dummy_switch "NO"
- } else {
- set dummy_switch "YES"
- }
-
- set push_them_out_A [.phylo.canvas find enclosed \
- [expr $the_Node_A_X - $repulsion_distance] [expr $the_Node_A_Y - $repulsion_distance] \
- [expr $the_Node_A_X + $repulsion_distance] [expr $the_Node_A_Y + $repulsion_distance] ]
-
- set push_them_out_A_length [llength [split $push_them_out_A]]
- # puts "$push_them_out_A $push_them_out_A_length"
-
- # puts "$dummy_switch DUMMY SWITCH"
-
- while {$push_them_out_A_length > 0 && $dummy_switch == "YES"} {
-
- set push_me_current [lindex [split $push_them_out_A] [expr $push_them_out_A_length -1 ]]
-
- # set push_me_current_ID $push_me_current
- set push_me_current_list [.phylo.canvas gettags $push_me_current]
- set push_me_current_ID [lindex $push_me_current_list 0]
- set second_tag [lindex $push_me_current_list 1]
-
- set push_me_X1 [lindex [.phylo.canvas coords $push_me_current_ID] 0]
- set push_me_Y1 [lindex [.phylo.canvas coords $push_me_current_ID] 1]
- set push_me_X2 [lindex [.phylo.canvas coords $push_me_current_ID] 2]
- set push_me_Y2 [lindex [.phylo.canvas coords $push_me_current_ID] 3]
- set push_me_X [expr ($push_me_X1 + $push_me_X2)/2]
- set push_me_Y [expr ($push_me_Y1 + $push_me_Y2)/2]
-
- # puts "$push_me_X1 $push_me_Y1 $push_me_X2 $push_me_Y2 $push_me_X $push_me_Y $push_me_current_ID PUSH COORDS"
-
- if { $push_me_current_ID != $the_Node_A && $second_tag == "node" } {
- # puts "$push_me_current PUSH ME OUT CURRENT"
- set x_distance_AC_first [expr abs([expr $the_Node_A_X - $push_me_X])]
- set y_distance_AC_first [expr abs([expr $the_Node_A_Y - $push_me_Y])]
- set distance_between_A_C_first [expr hypot($x_distance_AC_first,$y_distance_AC_first)]
-
- # puts "$x_distance_AC_first $y_distance_AC_first $distance_between_A_C_first"
- # puts "$distance_between_A_C_first $repulsion_distance REPULSION"
-
- while {[expr $distance_between_A_C_first] < $repulsion_distance} {
- set random_direction_X [expr rand()]
- if {$random_direction_X > 0.5} {
- set direction_X "$random_step_value"
- }
- if {$random_direction_X < 0.5} {
- set direction_X "-$random_step_value"
- }
- if {$random_direction_X == 0.5} {
- set direction_X "0"
- }
- set random_direction_Y [expr rand()]
- if {$random_direction_Y > 0.5} {
- set direction_Y "$random_step_value"
- }
- if {$random_direction_Y < 0.5} {
- set direction_Y "-$random_step_value"
- }
- if {$random_direction_Y == 0.5} {
- set direction_Y "0"
- }
-
- # puts "I am above"
-
- moveNode $push_me_current_ID $direction_X $direction_Y
-
- update
-
- # puts "$direction_X $direction_Y DIRECTION X Y"
-
- # puts "I am below"
-
- set the_Node_A_X1 [lindex [.phylo.canvas coords $the_Node_A] 0]
- set the_Node_A_Y1 [lindex [.phylo.canvas coords $the_Node_A] 1]
- set the_Node_A_X2 [lindex [.phylo.canvas coords $the_Node_A] 2]
- set the_Node_A_Y2 [lindex [.phylo.canvas coords $the_Node_A] 3]
- set the_Node_A_X [expr ($the_Node_A_X1 + $the_Node_A_X2)/2]
- set the_Node_A_Y [expr ($the_Node_A_Y1 + $the_Node_A_Y2)/2]
-
- set push_me_X1 [lindex [.phylo.canvas coords $push_me_current_ID] 0]
- set push_me_Y1 [lindex [.phylo.canvas coords $push_me_current_ID] 1]
- set push_me_X2 [lindex [.phylo.canvas coords $push_me_current_ID] 2]
- set push_me_Y2 [lindex [.phylo.canvas coords $push_me_current_ID] 3]
- set push_me_X [expr ($push_me_X1 + $push_me_X2)/2]
- set push_me_Y [expr ($push_me_Y1 + $push_me_Y2)/2]
-
- set x_distance_AC_first [expr abs([expr $the_Node_A_X - $push_me_X])]
- set y_distance_AC_first [expr abs([expr $the_Node_A_Y - $push_me_Y])]
- set distance_between_A_C_first [expr hypot($x_distance_AC_first,$y_distance_AC_first)]
-
- if { $the_Node_A_X <= 10 } {
- moveNode $the_Node_A 30 0
- update
- }
- if { $the_Node_A_Y <= 10 } {
- moveNode $the_Node_A 0 30
- update
- }
- if { $the_Node_A_X >= $iron_wall } {
- moveNode $the_Node_A -30 0
- update
- }
- if { $the_Node_A_Y >= $iron_wall} {
- moveNode $the_Node_A 0 -30
- update
- }
- }
- }
- incr push_them_out_A_length -1
- }
- ############## PUSH ME OUT END ##############
-
- # puts "I am out"
-
- set the_Node_A $abc_tag$current_seq_ID_A
- set the_Node_B $abc_tag$current_seq_ID_B
-
- set the_Node_A_X1 [lindex [.phylo.canvas coords $the_Node_A] 0]
- set the_Node_A_Y1 [lindex [.phylo.canvas coords $the_Node_A] 1]
- set the_Node_A_X2 [lindex [.phylo.canvas coords $the_Node_A] 2]
- set the_Node_A_Y2 [lindex [.phylo.canvas coords $the_Node_A] 3]
- set the_Node_A_X [expr ($the_Node_A_X1 + $the_Node_A_X2)/2]
- set the_Node_A_Y [expr ($the_Node_A_Y1 + $the_Node_A_Y2)/2]
-
- set the_Node_B_X1 [lindex [.phylo.canvas coords $the_Node_B] 0]
- set the_Node_B_Y1 [lindex [.phylo.canvas coords $the_Node_B] 1]
- set the_Node_B_X2 [lindex [.phylo.canvas coords $the_Node_B] 2]
- set the_Node_B_Y2 [lindex [.phylo.canvas coords $the_Node_B] 3]
- set the_Node_B_X [expr ($the_Node_A_X1 + $the_Node_B_X2)/2]
- set the_Node_B_Y [expr ($the_Node_A_Y1 + $the_Node_B_Y2)/2]
-
- set x_distance_AB_first [expr abs([expr $the_Node_A_X - $the_Node_B_X])]
- set y_distance_AB_first [expr abs([expr $the_Node_A_Y - $the_Node_B_Y])]
- set distance_between_A_B_first [expr hypot($x_distance_AB_first,$y_distance_AB_first)]
-
- if {[expr $distance_between_A_B_first] >= [expr $frucht_gold_precision*[expr ($edge_wight_coefficient - $current_identity*$current_identity)]] && $current_identity >= $level_of_similarity_6} {
-
- set random_direction_X [expr rand()]
- if {$random_direction_X > 0.5} {
- set direction_X "$attraction_random_step"
- }
- if {$random_direction_X < 0.5} {
- set direction_X "-$attraction_random_step"
- }
- if {$random_direction_X == 0.5} {
- set direction_X "$attraction_random_step"
- }
- set random_direction_Y [expr rand()]
- if {$random_direction_Y > 0.5} {
- set direction_Y "$attraction_random_step"
- }
- if {$random_direction_Y < 0.5} {
- set direction_Y "-$attraction_random_step"
- }
- if {$random_direction_Y == 0.5} {
- set direction_Y "0"
- }
-
- set x_distance_AB_second abs([expr [expr $the_Node_A_X + $direction_X] - $the_Node_B_X])
- set y_distance_AB_second abs([expr [expr $the_Node_A_Y + $direction_Y] - $the_Node_B_Y])
- set distance_between_A_B_second hypot($x_distance_AB_second,$y_distance_AB_second)
- if {[expr $distance_between_A_B_second - $distance_between_A_B_first] < 0} {
- moveNode $the_Node_A $direction_X $direction_Y
- update
- }
-
- set the_Node_A_X1 [lindex [.phylo.canvas coords $the_Node_A] 0]
- set the_Node_A_Y1 [lindex [.phylo.canvas coords $the_Node_A] 1]
- set the_Node_A_X2 [lindex [.phylo.canvas coords $the_Node_A] 2]
- set the_Node_A_Y2 [lindex [.phylo.canvas coords $the_Node_A] 3]
- set the_Node_A_X [expr ($the_Node_A_X1 + $the_Node_A_X2)/2]
- set the_Node_A_Y [expr ($the_Node_A_Y1 + $the_Node_A_Y2)/2]
-
- set the_Node_B_X1 [lindex [.phylo.canvas coords $the_Node_B] 0]
- set the_Node_B_Y1 [lindex [.phylo.canvas coords $the_Node_B] 1]
- set the_Node_B_X2 [lindex [.phylo.canvas coords $the_Node_B] 2]
- set the_Node_B_Y2 [lindex [.phylo.canvas coords $the_Node_B] 3]
- set the_Node_B_X [expr ($the_Node_A_X1 + $the_Node_B_X2)/2]
- set the_Node_B_Y [expr ($the_Node_A_Y1 + $the_Node_B_Y2)/2]
-
- set x_distance_AB_first [expr abs([expr $the_Node_A_X - $the_Node_B_X])]
- set y_distance_AB_first [expr abs([expr $the_Node_A_Y - $the_Node_B_Y])]
- set distance_between_A_B_first [expr hypot($x_distance_AB_first,$y_distance_AB_first)]
-
- if { $the_Node_A_X <= 10 } {
- moveNode $the_Node_A 30 0
- update
- }
- if { $the_Node_A_Y <= 10 } {
- moveNode $the_Node_A 0 30
- update
- }
- if { $the_Node_A_X >= $iron_wall } {
- moveNode $the_Node_A -30 0
- update
- }
- if { $the_Node_A_Y >= $iron_wall } {
- moveNode $the_Node_A 0 -30
- update
- }
- }
-
- ### NODE B ###
-
- set the_Node_A $abc_tag$current_seq_ID_B
-
- set the_Node_A_X1 [lindex [.phylo.canvas coords $the_Node_A] 0]
- set the_Node_A_Y1 [lindex [.phylo.canvas coords $the_Node_A] 1]
- set the_Node_A_X2 [lindex [.phylo.canvas coords $the_Node_A] 2]
- set the_Node_A_Y2 [lindex [.phylo.canvas coords $the_Node_A] 3]
- set the_Node_A_X [expr ($the_Node_A_X1 + $the_Node_A_X2)/2]
- set the_Node_A_Y [expr ($the_Node_A_Y1 + $the_Node_A_Y2)/2]
-
- # puts "$the_Node_A_X1 $the_Node_A_Y1 $the_Node_A_X2 $the_Node_A_Y2 $the_Node_A_X $the_Node_A_Y $the_Node_A NODE_A COORDS"
-
- if {$the_Node_A == ""} {
- continue
- }
- set the_Node_B $current_seq_ID_A
- if {$the_Node_B == ""} {
- continue
- }
- ############## PUSH ME OUT BEGIN ##############
-
- set dummy_switch_random [expr rand()]
-
- if {$dummy_switch_random >= 0.75 && $frucht_gold_limit > 0} {
- set dummy_switch "NO"
- } else {
- set dummy_switch "YES"
- }
-
- set push_them_out_A [.phylo.canvas find enclosed \
- [expr $the_Node_A_X - $repulsion_distance] [expr $the_Node_A_Y - $repulsion_distance] \
- [expr $the_Node_A_X + $repulsion_distance] [expr $the_Node_A_Y + $repulsion_distance] ]
-
- set push_them_out_A_length [llength [split $push_them_out_A]]
- # puts "$push_them_out_A $push_them_out_A_length"
-
- # puts "$dummy_switch DUMMY SWITCH"
-
- while {$push_them_out_A_length > 0 && $dummy_switch == "YES"} {
-
- set push_me_current [lindex [split $push_them_out_A] [expr $push_them_out_A_length -1 ]]
-
- # set push_me_current_ID $push_me_current
- set push_me_current_list [.phylo.canvas gettags $push_me_current]
- set push_me_current_ID [lindex $push_me_current_list 0]
- set second_tag [lindex $push_me_current_list 1]
-
- set push_me_X1 [lindex [.phylo.canvas coords $push_me_current_ID] 0]
- set push_me_Y1 [lindex [.phylo.canvas coords $push_me_current_ID] 1]
- set push_me_X2 [lindex [.phylo.canvas coords $push_me_current_ID] 2]
- set push_me_Y2 [lindex [.phylo.canvas coords $push_me_current_ID] 3]
- set push_me_X [expr ($push_me_X1 + $push_me_X2)/2]
- set push_me_Y [expr ($push_me_Y1 + $push_me_Y2)/2]
-
- # puts "$push_me_X1 $push_me_Y1 $push_me_X2 $push_me_Y2 $push_me_X $push_me_Y $push_me_current_ID PUSH COORDS"
-
- if { $push_me_current_ID != $the_Node_A && $second_tag == "node" } {
- # puts "$push_me_current PUSH ME OUT CURRENT"
- set x_distance_AC_first [expr abs([expr $the_Node_A_X - $push_me_X])]
- set y_distance_AC_first [expr abs([expr $the_Node_A_Y - $push_me_Y])]
- set distance_between_A_C_first [expr hypot($x_distance_AC_first,$y_distance_AC_first)]
-
- # puts "$x_distance_AC_first $y_distance_AC_first $distance_between_A_C_first"
- # puts "$distance_between_A_C_first $repulsion_distance REPULSION"
-
- while {[expr $distance_between_A_C_first] < $repulsion_distance} {
- set random_direction_X [expr rand()]
- if {$random_direction_X > 0.5} {
- set direction_X "$random_step_value"
- }
- if {$random_direction_X < 0.5} {
- set direction_X "-$random_step_value"
- }
- if {$random_direction_X == 0.5} {
- set direction_X "0"
- }
- set random_direction_Y [expr rand()]
- if {$random_direction_Y > 0.5} {
- set direction_Y "$random_step_value"
- }
- if {$random_direction_Y < 0.5} {
- set direction_Y "-$random_step_value"
- }
- if {$random_direction_Y == 0.5} {
- set direction_Y "0"
- }
-
- # puts "I am above"
-
- moveNode $push_me_current_ID $direction_X $direction_Y
-
- update
-
- # puts "$direction_X $direction_Y DIRECTION X Y"
-
- # puts "I am below"
-
- set the_Node_A_X1 [lindex [.phylo.canvas coords $the_Node_A] 0]
- set the_Node_A_Y1 [lindex [.phylo.canvas coords $the_Node_A] 1]
- set the_Node_A_X2 [lindex [.phylo.canvas coords $the_Node_A] 2]
- set the_Node_A_Y2 [lindex [.phylo.canvas coords $the_Node_A] 3]
- set the_Node_A_X [expr ($the_Node_A_X1 + $the_Node_A_X2)/2]
- set the_Node_A_Y [expr ($the_Node_A_Y1 + $the_Node_A_Y2)/2]
-
- set push_me_X1 [lindex [.phylo.canvas coords $push_me_current_ID] 0]
- set push_me_Y1 [lindex [.phylo.canvas coords $push_me_current_ID] 1]
- set push_me_X2 [lindex [.phylo.canvas coords $push_me_current_ID] 2]
- set push_me_Y2 [lindex [.phylo.canvas coords $push_me_current_ID] 3]
- set push_me_X [expr ($push_me_X1 + $push_me_X2)/2]
- set push_me_Y [expr ($push_me_Y1 + $push_me_Y2)/2]
-
- set x_distance_AC_first [expr abs([expr $the_Node_A_X - $push_me_X])]
- set y_distance_AC_first [expr abs([expr $the_Node_A_Y - $push_me_Y])]
- set distance_between_A_C_first [expr hypot($x_distance_AC_first,$y_distance_AC_first)]
-
- if { $the_Node_A_X <= 10 } {
- moveNode $the_Node_A 30 0
- update
- }
- if { $the_Node_A_Y <= 10 } {
- moveNode $the_Node_A 0 30
- update
- }
- if { $the_Node_A_X >= $iron_wall } {
- moveNode $the_Node_A -30 0
- update
- }
- if { $the_Node_A_Y >= $iron_wall} {
- moveNode $the_Node_A 0 -30
- update
- }
- }
- }
- incr push_them_out_A_length -1
- }
- ############## PUSH ME OUT END ##############
-
- # puts "I am out"
-
- set the_Node_A $abc_tag$current_seq_ID_B
- set the_Node_B $abc_tag$current_seq_ID_A
-
- set the_Node_A_X1 [lindex [.phylo.canvas coords $the_Node_A] 0]
- set the_Node_A_Y1 [lindex [.phylo.canvas coords $the_Node_A] 1]
- set the_Node_A_X2 [lindex [.phylo.canvas coords $the_Node_A] 2]
- set the_Node_A_Y2 [lindex [.phylo.canvas coords $the_Node_A] 3]
- set the_Node_A_X [expr ($the_Node_A_X1 + $the_Node_A_X2)/2]
- set the_Node_A_Y [expr ($the_Node_A_Y1 + $the_Node_A_Y2)/2]
-
- set the_Node_B_X1 [lindex [.phylo.canvas coords $the_Node_B] 0]
- set the_Node_B_Y1 [lindex [.phylo.canvas coords $the_Node_B] 1]
- set the_Node_B_X2 [lindex [.phylo.canvas coords $the_Node_B] 2]
- set the_Node_B_Y2 [lindex [.phylo.canvas coords $the_Node_B] 3]
- set the_Node_B_X [expr ($the_Node_A_X1 + $the_Node_B_X2)/2]
- set the_Node_B_Y [expr ($the_Node_A_Y1 + $the_Node_B_Y2)/2]
-
- set x_distance_AB_first [expr abs([expr $the_Node_A_X - $the_Node_B_X])]
- set y_distance_AB_first [expr abs([expr $the_Node_A_Y - $the_Node_B_Y])]
- set distance_between_A_B_first [expr hypot($x_distance_AB_first,$y_distance_AB_first)]
-
- if {[expr $distance_between_A_B_first] >= [expr $frucht_gold_precision*[expr ($edge_wight_coefficient - $current_identity*$current_identity)]] && $current_identity >= $level_of_similarity_6} {
-
- set random_direction_X [expr rand()]
- if {$random_direction_X > 0.5} {
- set direction_X "$attraction_random_step"
- }
- if {$random_direction_X < 0.5} {
- set direction_X "-$attraction_random_step"
- }
- if {$random_direction_X == 0.5} {
- set direction_X "$attraction_random_step"
- }
- set random_direction_Y [expr rand()]
- if {$random_direction_Y > 0.5} {
- set direction_Y "$attraction_random_step"
- }
- if {$random_direction_Y < 0.5} {
- set direction_Y "-$attraction_random_step"
- }
- if {$random_direction_Y == 0.5} {
- set direction_Y "0"
- }
-
- set x_distance_AB_second abs([expr [expr $the_Node_A_X + $direction_X] - $the_Node_B_X])
- set y_distance_AB_second abs([expr [expr $the_Node_A_Y + $direction_Y] - $the_Node_B_Y])
- set distance_between_A_B_second hypot($x_distance_AB_second,$y_distance_AB_second)
- if {[expr $distance_between_A_B_second - $distance_between_A_B_first] < 0} {
- moveNode $the_Node_A $direction_X $direction_Y
- update
- }
-
- set the_Node_A_X1 [lindex [.phylo.canvas coords $the_Node_A] 0]
- set the_Node_A_Y1 [lindex [.phylo.canvas coords $the_Node_A] 1]
- set the_Node_A_X2 [lindex [.phylo.canvas coords $the_Node_A] 2]
- set the_Node_A_Y2 [lindex [.phylo.canvas coords $the_Node_A] 3]
- set the_Node_A_X [expr ($the_Node_A_X1 + $the_Node_A_X2)/2]
- set the_Node_A_Y [expr ($the_Node_A_Y1 + $the_Node_A_Y2)/2]
-
- set the_Node_B_X1 [lindex [.phylo.canvas coords $the_Node_B] 0]
- set the_Node_B_Y1 [lindex [.phylo.canvas coords $the_Node_B] 1]
- set the_Node_B_X2 [lindex [.phylo.canvas coords $the_Node_B] 2]
- set the_Node_B_Y2 [lindex [.phylo.canvas coords $the_Node_B] 3]
- set the_Node_B_X [expr ($the_Node_A_X1 + $the_Node_B_X2)/2]
- set the_Node_B_Y [expr ($the_Node_A_Y1 + $the_Node_B_Y2)/2]
-
- set x_distance_AB_first [expr abs([expr $the_Node_A_X - $the_Node_B_X])]
- set y_distance_AB_first [expr abs([expr $the_Node_A_Y - $the_Node_B_Y])]
- set distance_between_A_B_first [expr hypot($x_distance_AB_first,$y_distance_AB_first)]
-
- if { $the_Node_A_X <= 10 } {
- moveNode $the_Node_A 30 0
- update
- }
- if { $the_Node_A_Y <= 10 } {
- moveNode $the_Node_A 0 30
- update
- }
- if { $the_Node_A_X >= $iron_wall } {
- moveNode $the_Node_A -30 0
- update
- }
- if { $the_Node_A_Y >= $iron_wall } {
- moveNode $the_Node_A 0 -30
- update
- }
- }
-
- ################
- .phylo.canvas itemconfigure $abc_tag$current_seq_ID_A -fill $old_node_colour_A \
- -outline $old_node_fill_A
- .phylo.canvas itemconfigure $abc_tag$current_seq_ID_B -fill $old_node_colour_B \
- -outline $old_node_fill_B
- update
- ################
- }
- ###############
- bell
- ###############
- incr frucht_gold_limit -1
- }
-}
-
-proc Node_Painter {} {
-
- destroy .node_painter
- toplevel .node_painter
- wm title .node_painter "Node Painter"
- wm protocol .node_painter WM_DELETE_WINDOW "destroy .node_painter"
- wm minsize .node_painter 470 260
-
- global nodes_group1
- global nodes_group2
- global nodes_group3
- global nodes_group4
- global nodes_group5
- global nodes_group6
-
- set nodes_group1 "./Group/subgroup_1.txt"
- set nodes_group2 "./Group/subgroup_2.txt"
- set nodes_group3 "./Group/subgroup_3.txt"
- set nodes_group4 "./Group/subgroup_4.txt"
- set nodes_group5 "./Group/subgroup_5.txt"
- set nodes_group6 "./Group/subgroup_6.txt"
-
- global color_group1
- global color_group2
- global color_group3
- global color_group4
- global color_group5
- global color_group6
-
- global outline_group1
- global outline_group2
- global outline_group3
- global outline_group4
- global outline_group5
- global outline_group6
-
- set color_group1 "green3"
- set color_group2 "orange"
- set color_group3 "blue"
- set color_group4 "red"
- set color_group5 "violet"
- set color_group6 "blue"
-
- set outline_group1 "yellow"
- set outline_group2 "yellow"
- set outline_group3 "yellow"
- set outline_group4 "yellow"
- set outline_group5 "yellow"
- set outline_group6 "cyan"
-
- #####
-
- label .node_painter.group_list -text "group list:" -bg gray -width 14
- place .node_painter.group_list -x 120 -y 10
-
- label .node_painter.fill_color -text "fill color:" -bg gray -width 10
- place .node_painter.fill_color -x 250 -y 10
-
- label .node_painter.outline_color -text "outline:" -bg gray -width 8
- place .node_painter.outline_color -x 330 -y 10
-
- #####
- label .node_painter.select_group1_label -text "group1:" -bg gray -width 12
- place .node_painter.select_group1_label -x 10 -y 40
-
- entry .node_painter.select_group1_entry -relief sunken \
- -textvariable nodes_group1 -bg lightyellow -width 20
- place .node_painter.select_group1_entry -x 105 -y 40
-
- entry .node_painter.color_group1_entry -relief sunken \
- -textvariable color_group1 -bg lightyellow -width 8
- place .node_painter.color_group1_entry -x 260 -y 40
-
- entry .node_painter.outline_group1_entry -relief sunken \
- -textvariable outline_group1 -bg lightyellow -width 8
- place .node_painter.outline_group1_entry -x 330 -y 40
-
- button .node_painter.paint_group1 -text "paint" -bg yellow3 \
- -command {Change_Node_Color1}
- place .node_painter.paint_group1 -x 400 -y 38
- #####
- label .node_painter.select_group2_label -text "group2:" -bg gray -width 12
- place .node_painter.select_group2_label -x 10 -y 70
-
- entry .node_painter.select_group2_entry -relief sunken \
- -textvariable nodes_group2 -bg lightyellow -width 20
- place .node_painter.select_group2_entry -x 105 -y 70
-
- entry .node_painter.color_group2_entry -relief sunken \
- -textvariable color_group2 -bg lightyellow -width 8
- place .node_painter.color_group2_entry -x 260 -y 70
-
- entry .node_painter.outline_group2_entry -relief sunken \
- -textvariable outline_group2 -bg lightyellow -width 8
- place .node_painter.outline_group2_entry -x 330 -y 70
-
- button .node_painter.paint_group2 -text "paint" -bg yellow3 \
- -command {Change_Node_Color2}
- place .node_painter.paint_group2 -x 400 -y 68
- #####
- label .node_painter.select_group3_label -text "group3:" -bg gray -width 12
- place .node_painter.select_group3_label -x 10 -y 100
-
- entry .node_painter.select_group3_entry -relief sunken \
- -textvariable nodes_group3 -bg lightyellow -width 20
- place .node_painter.select_group3_entry -x 105 -y 100
-
- entry .node_painter.color_group3_entry -relief sunken \
- -textvariable color_group3 -bg lightyellow -width 8
- place .node_painter.color_group3_entry -x 260 -y 100
-
- entry .node_painter.outline_group3_entry -relief sunken \
- -textvariable outline_group3 -bg lightyellow -width 8
- place .node_painter.outline_group3_entry -x 330 -y 100
-
- button .node_painter.paint_group3 -text "paint" -bg yellow3 \
- -command {Change_Node_Color3}
- place .node_painter.paint_group3 -x 400 -y 98
- #####
- label .node_painter.select_group4_label -text "group4:" -bg gray -width 12
- place .node_painter.select_group4_label -x 10 -y 130
-
- entry .node_painter.select_group4_entry -relief sunken \
- -textvariable nodes_group4 -bg lightyellow -width 20
- place .node_painter.select_group4_entry -x 105 -y 130
-
- entry .node_painter.color_group4_entry -relief sunken \
- -textvariable color_group4 -bg lightyellow -width 8
- place .node_painter.color_group4_entry -x 260 -y 130
-
- entry .node_painter.outline_group4_entry -relief sunken \
- -textvariable outline_group4 -bg lightyellow -width 8
- place .node_painter.outline_group4_entry -x 330 -y 130
-
- button .node_painter.paint_group4 -text "paint" -bg yellow3 \
- -command {Change_Node_Color4}
- place .node_painter.paint_group4 -x 400 -y 128
- #####
- label .node_painter.select_group5_label -text "group5:" -bg gray -width 12
- place .node_painter.select_group5_label -x 10 -y 160
-
- entry .node_painter.select_group5_entry -relief sunken \
- -textvariable nodes_group5 -bg lightyellow -width 20
- place .node_painter.select_group5_entry -x 105 -y 160
-
- entry .node_painter.color_group5_entry -relief sunken \
- -textvariable color_group5 -bg lightyellow -width 8
- place .node_painter.color_group5_entry -x 260 -y 160
-
- entry .node_painter.outline_group5_entry -relief sunken \
- -textvariable outline_group5 -bg lightyellow -width 8
- place .node_painter.outline_group5_entry -x 330 -y 160
-
- button .node_painter.paint_group5 -text "paint" -bg yellow3 \
- -command {Change_Node_Color5}
- place .node_painter.paint_group5 -x 400 -y 158
- #####
- label .node_painter.select_group6_label -text "group6:" -bg gray -width 12
- place .node_painter.select_group6_label -x 10 -y 190
-
- entry .node_painter.select_group6_entry -relief sunken \
- -textvariable nodes_group6 -bg lightyellow -width 20
- place .node_painter.select_group6_entry -x 105 -y 190
-
- entry .node_painter.color_group6_entry -relief sunken \
- -textvariable color_group6 -bg lightyellow -width 8
- place .node_painter.color_group6_entry -x 260 -y 190
-
- entry .node_painter.outline_group6_entry -relief sunken \
- -textvariable outline_group6 -bg lightyellow -width 8
- place .node_painter.outline_group6_entry -x 330 -y 190
-
- button .node_painter.paint_group6 -text "paint" -bg yellow3 \
- -command {Change_Node_Color6}
- place .node_painter.paint_group6 -x 400 -y 188
- #####
-
- button .node_painter.howto -text "HowTo" -bg gray -width 8 -command {HowTo_Paint_Nodes}
- place .node_painter.howto -x 20 -y 225
-
- button .node_painter.dismiss -text "Dismiss" -bg gray -width 8 -command {destroy .node_painter}
- place .node_painter.dismiss -x 140 -y 225
-}
-
-proc HowTo_Paint_Nodes {} {
-
- destroy .how_to_paint
- toplevel .how_to_paint
- wm title .how_to_paint "HowTo Paint Nodes"
- wm protocol .how_to_paint WM_DELETE_WINDOW "destroy .how_to_paint"
-
- label .how_to_paint.text -text "
-To paint nodes in different colors you need
-to set up lists of nodes belonging to distinct
-groups and place them in \"Group\" directory.
-By clicking \"paint\" program changes color
-of nodes in a given list.
-"
- button .how_to_paint.dismiss -text "Dismiss" \
- -command "destroy .how_to_paint" -bg gray -width 8
-
- pack .how_to_paint.text -padx 7 -pady 7
- pack .how_to_paint.dismiss -padx 3 -pady 3
-}
-
-proc Change_Node_Color1 {} {
-
- global abc_tag
- global nodes_group1
- global color_group1
- global outline_group1
-
- set open_current_group [open $nodes_group1 "r"]
- while {[gets $open_current_group current_line_group] >= 0} {
- .phylo.canvas itemconfigure $abc_tag$current_line_group -fill $color_group1 -outline $outline_group1
- }
- close $open_current_group
- bell
-}
-proc Change_Node_Color2 {} {
-
- global abc_tag
- global nodes_group2
- global color_group2
- global outline_group2
-
- set open_current_group [open $nodes_group2 "r"]
- while {[gets $open_current_group current_line_group] >= 0} {
- .phylo.canvas itemconfigure $abc_tag$current_line_group -fill $color_group2 -outline $outline_group2
- }
- close $open_current_group
- bell
-}
-proc Change_Node_Color3 {} {
-
- global abc_tag
- global nodes_group3
- global color_group3
- global outline_group3
-
- set open_current_group [open $nodes_group3 "r"]
- while {[gets $open_current_group current_line_group] >= 0} {
- .phylo.canvas itemconfigure $abc_tag$current_line_group -fill $color_group3 -outline $outline_group3
- }
- close $open_current_group
- bell
-}
-proc Change_Node_Color4 {} {
-
- global abc_tag
- global nodes_group4
- global color_group4
- global outline_group4
-
- set open_current_group [open $nodes_group4 "r"]
- while {[gets $open_current_group current_line_group] >= 0} {
- .phylo.canvas itemconfigure $abc_tag$current_line_group -fill $color_group4 -outline $outline_group4
- }
- close $open_current_group
- bell
-}
-proc Change_Node_Color5 {} {
-
- global abc_tag
- global nodes_group5
- global color_group5
- global outline_group5
-
- set open_current_group [open $nodes_group5 "r"]
- while {[gets $open_current_group current_line_group] >= 0} {
- .phylo.canvas itemconfigure $abc_tag$current_line_group -fill $color_group5 -outline $outline_group5
- }
- close $open_current_group
- bell
-}
-proc Change_Node_Color6 {} {
-
- global abc_tag
- global nodes_group6
- global color_group6
- global outline_group6
-
- set open_current_group [open $nodes_group6 "r"]
- while {[gets $open_current_group current_line_group] >= 0} {
- .phylo.canvas itemconfigure $abc_tag$current_line_group -fill $color_group6 -outline $outline_group6
- }
- close $open_current_group
- bell
-}
-
-proc Canvas_Editor {} {
-
- destroy .c_editor
- toplevel .c_editor
-
- wm title .c_editor "Canvas Editor"
- wm protocol .c_editor WM_DELETE_WINDOW "destroy .c_editor"
- wm minsize .c_editor 512 260
-
- global selected_canvas
- global font_color_canvas
- global font_color_label
- global canvas_editor_font_type
- global canvas_editor_font_size
- global canvas_editor_font_style
- global text_tag
- global canvas_editor_text
- global curX
- global curY
-
- set font_color_label $font_color_canvas
- set selected_canvas ".phylo.canvas"
- set canvas_editor_text "my lovely node"
- set canvas_editor_font_type "helvetica"
- set canvas_editor_font_size 12
- set canvas_editor_font_style normal
- set text_tag text_tag_01
- set curX 125
- set curY 125
-
- global graph_style
- global graph_tag
- global graphX1
- global graphX2
- global graphY1
- global graphY2
- global graph_fill_color
- global graph_outline_color
-
- set graph_style "oval"
- set graph_tag "graph_tag_01"
- set graphX1 100
- set graphY1 100
- set graphX2 24
- set graphY2 24
- set graph_fill_color ""
- set graph_outline_color "white"
-
- ###########################################################################
-
- label .c_editor.select_text_label -text "select text:" -bg yellow3 -width 12
- place .c_editor.select_text_label -x 10 -y 10
-
- entry .c_editor.select_text_entry -relief sunken \
- -textvariable canvas_editor_text -bg gold -width 22
- place .c_editor.select_text_entry -x 105 -y 10
-
- label .c_editor.select_canvas -text "select canvas:" -bg gray -width 14
- place .c_editor.select_canvas -x 280 -y 10
-
- entry .c_editor.select_canvas_entry -relief sunken \
- -textvariable selected_canvas -bg lightblue -width 15
- place .c_editor.select_canvas_entry -x 390 -y 10
-
- ########################
-
- label .c_editor.text_color_label -text "text color:" -bg gray -width 12
- place .c_editor.text_color_label -x 10 -y 40
-
- entry .c_editor.text_color_entry -relief sunken \
- -textvariable font_color_label -bg lightyellow -width 20
- place .c_editor.text_color_entry -x 105 -y 40
-
- label .c_editor.select_graph_label -text "Graphical Label:" -bg yellow3 -width 18
- place .c_editor.select_graph_label -x 330 -y 40
-
- ########################
-
- label .c_editor.text_type_label -text "font type:" -bg gray -width 12
- place .c_editor.text_type_label -x 10 -y 70
-
- entry .c_editor.text_type_entry -relief sunken \
- -textvariable canvas_editor_font_type -bg lightyellow -width 20
- place .c_editor.text_type_entry -x 105 -y 70
-
- label .c_editor.graph_style_label -text "shape:" -bg gray -width 12
- place .c_editor.graph_style_label -x 300 -y 70
-
- entry .c_editor.graph_style_entry -relief sunken \
- -textvariable graph_style -bg lightyellow -width 14
- place .c_editor.graph_style_entry -x 395 -y 70
-
- ########################
-
- label .c_editor.text_size_label -text "font size:" -bg gray -width 12
- place .c_editor.text_size_label -x 10 -y 100
-
- entry .c_editor.text_size_entry -relief sunken \
- -textvariable canvas_editor_font_size -bg lightyellow -width 20
- place .c_editor.text_size_entry -x 105 -y 100
-
- label .c_editor.graph_fill_label -text "fill:" -bg gray -width 12
- place .c_editor.graph_fill_label -x 300 -y 100
-
- entry .c_editor.graph_fill_entry -relief sunken \
- -textvariable graph_fill_color -bg lightyellow -width 14
- place .c_editor.graph_fill_entry -x 395 -y 100
-
- ########################
-
- label .c_editor.text_style_label -text "font style:" -bg gray -width 12
- place .c_editor.text_style_label -x 10 -y 130
-
- entry .c_editor.text_style_entry -relief sunken \
- -textvariable canvas_editor_font_style -bg lightyellow -width 20
- place .c_editor.text_style_entry -x 105 -y 130
-
- label .c_editor.graph_outline_label -text "outline:" -bg gray -width 12
- place .c_editor.graph_outline_label -x 300 -y 130
-
- entry .c_editor.graph_outline_entry -relief sunken \
- -textvariable graph_outline_color -bg lightyellow -width 14
- place .c_editor.graph_outline_entry -x 395 -y 130
-
- ########################
-
- label .c_editor.current_X_label -text "current X:" -bg gray -width 12
- place .c_editor.current_X_label -x 10 -y 160
-
- label .c_editor.current_Y_label -text "current Y:" -bg gray -width 12
- place .c_editor.current_Y_label -x 10 -y 190
-
- entry .c_editor.current_X_entry -relief sunken \
- -textvariable curX -bg lightyellow -width 20
- place .c_editor.current_X_entry -x 105 -y 160
-
- entry .c_editor.current_Y_entry -relief sunken \
- -textvariable curY -bg lightyellow -width 20
- place .c_editor.current_Y_entry -x 105 -y 190
-
- label .c_editor.graphX1 -text "X1" -bg gray -width 4
- place .c_editor.graphX1 -x 300 -y 160
-
- label .c_editor.graphY1 -text "Y1" -bg gray -width 4
- place .c_editor.graphY1 -x 300 -y 190
-
- label .c_editor.graphX2 -text "X2" -bg gray -width 4
- place .c_editor.graphX2 -x 400 -y 160
-
- label .c_editor.graphY2 -text "Y2" -bg gray -width 4
- place .c_editor.graphY2 -x 400 -y 190
-
- entry .c_editor.graphX1_entry -relief sunken \
- -textvariable graphX1 -bg lightyellow -width 6
- place .c_editor.graphX1_entry -x 340 -y 160
-
- entry .c_editor.graphY1_entry -relief sunken \
- -textvariable graphY1 -bg lightyellow -width 6
- place .c_editor.graphY1_entry -x 340 -y 190
-
- entry .c_editor.graphX2_entry -relief sunken \
- -textvariable graphX2 -bg lightyellow -width 6
- place .c_editor.graphX2_entry -x 440 -y 160
-
- entry .c_editor.graphY2_entry -relief sunken \
- -textvariable graphY2 -bg lightyellow -width 6
- place .c_editor.graphY2_entry -x 440 -y 190
-
- ########################
-
- button .c_editor.submit_text -text "Add Text to Canvas" \
- -command {Place_Text_on_Canvas} -bg orange -width 17
- place .c_editor.submit_text -x 20 -y 220
-
- button .c_editor.submit_graphics -text "Add Label to Canvas" \
- -command {Add_Graphics_to_Canvas} -bg orange -width 17
- place .c_editor.submit_graphics -x 340 -y 220
-
- button .c_editor.how_to -text "HowTo" \
- -command {How_To_Edit_Canvas} -bg gray -width 6
- place .c_editor.how_to -x 180 -y 220
-
- button .c_editor.dismiss -text "Dismiss" \
- -command {destroy .c_editor} -bg gray -width 6
- place .c_editor.dismiss -x 260 -y 220
-
- ###########################################################################
-}
-
-proc Move_Text_Label { node xDist yDist } {
-
- global selected_canvas
- global curX
- global curY
-
- $selected_canvas move $node $xDist $yDist
- incr curX $xDist
- incr curY $yDist
-}
-
-proc Move_Graph_Label { node xDist1 yDist1 } {
-
- global selected_canvas
- global graphX1
- global graphX2
- global graphY1
- global graphY2
-
- $selected_canvas move $node $xDist1 $yDist1
- incr graphX1 $xDist1
- incr graphY1 $yDist1
-}
-
-proc Place_Text_on_Canvas {} {
-
- global selected_canvas
- global text_tag
- global curX
- global curY
- global canvas_editor_text
- global font_color_canvas
- global font_color_label
- global canvas_editor_font_type
- global canvas_editor_font_size
- global canvas_editor_font_style
-
- $selected_canvas create text $curX $curY -text "$canvas_editor_text" \
- -font "$canvas_editor_font_type $canvas_editor_font_size $canvas_editor_font_style" \
- -anchor sw -fill $font_color_label -tags "$text_tag removable"
-
- $selected_canvas bind $text_tag <Button-1> {
- set curX [expr int(round([.phylo.canvas canvasx %x]))]
- set curY [expr int(round([.phylo.canvas canvasy %y]))]
- }
-
- $selected_canvas bind $text_tag <B1-Motion> {
- Move_Text_Label [$selected_canvas find withtag current] \
- [expr [expr int(round([.phylo.canvas canvasx %x]))] - $curX] \
- [expr [expr int(round([.phylo.canvas canvasy %y]))] - $curY]
- set curX [expr int(round([.phylo.canvas canvasx %x]))]
- set curY [expr int(round([.phylo.canvas canvasy %y]))]
- }
-}
-
-proc Add_Graphics_to_Canvas {} {
-
- global graph_style
- global graph_tag
- global graphX1
- global graphX2
- global graphY1
- global graphY2
- global graph_fill_color
- global graph_outline_color
- global selected_canvas
-
- $selected_canvas create $graph_style $graphX1 $graphY1 \
- [expr $graphX1 + $graphX2] \
- [expr $graphY1 + $graphY2] \
- -fill $graph_fill_color -outline $graph_outline_color -tags "$graph_tag removable"
-
- $selected_canvas bind $graph_tag <Button-1> {
- set graphX1 [expr int(round([.phylo.canvas canvasx %x]))]
- set graphY1 [expr int(round([.phylo.canvas canvasy %y]))]
- }
-
- $selected_canvas bind $graph_tag <B1-Motion> {
- Move_Graph_Label [$selected_canvas find withtag current] \
- [expr [expr int(round([.phylo.canvas canvasx %x]))] - $graphX1] \
- [expr [expr int(round([.phylo.canvas canvasy %y]))] - $graphY1]
- set graphX1 [expr int(round([.phylo.canvas canvasx %x]))]
- set graphY1 [expr int(round([.phylo.canvas canvasy %y]))]
- }
-}
-
-proc How_To_Edit_Canvas {} {
-
- destroy .how_to_edit_canvas
- toplevel .how_to_edit_canvas
- wm title .how_to_edit_canvas "Canvas Editing HowTo"
- wm protocol .how_to_edit_canvas WM_DELETE_WINDOW "destroy .how_to_edit_canvas"
-
- label .how_to_edit_canvas.text -text "
-By using this Canvas Editor you may edit and finish
-your project by adding text and graphical labels over
-the graph generated by PhyloGrapher.
-By left-button mouse click you may move the text and
-labels over PhyloGrapher canvas. By pressing \"Cntrl-d\"
-key you may delete the text and labels you don't need.
-"
- button .how_to_edit_canvas.dismiss -text "Dismiss" \
- -command "destroy .how_to_edit_canvas" -bg gray -width 8
-
- pack .how_to_edit_canvas.text -padx 7 -pady 7
- pack .how_to_edit_canvas.dismiss -padx 3 -pady 3
-}
-
-proc Global_Configuration {} {
-
- global object_fill_color
- global object_fill_color_connect
- global object_outline
- global object_outline_connect
- global object_shape
- global object_x_size
- global object_y_size
-
- global canvas_background
- global node_color_label
- global edge_color_label
- global font_color_canvas
- global canvas_editor_font_type
- global canvas_editor_font_size
- global canvas_editor_font_style
-
- global url_prefix
- global url_suffix
-
- global main_cursor_color
- global input_type
- global fake_edge_color
-
- destroy .global_configuration
-
- toplevel .global_configuration
- .global_configuration config -bg black
- wm title .global_configuration "Project Configuration"
- wm protocol .global_configuration WM_DELETE_WINDOW "destroy .global_configuration"
-
- label .global_configuration.l1 -text "Node fill color: " -bg black -fg lightblue
- entry .global_configuration.e1 -relief sunken -textvariable object_fill_color \
- -bg blue4 -fg gray80 -insertbackground lightyellow
- grid .global_configuration.l1 .global_configuration.e1
-
- label .global_configuration.l2 -text "Node outline color: " -bg black -fg lightblue
- entry .global_configuration.e2 -relief sunken -textvariable object_outline \
- -bg blue4 -fg gray80 -insertbackground lightyellow
- grid .global_configuration.l2 .global_configuration.e2
-
- label .global_configuration.l3 -text "Node color if connected: " -bg black -fg lightblue
- entry .global_configuration.e3 -relief sunken -textvariable object_fill_color_connect \
- -bg blue4 -fg gray80 -insertbackground lightyellow
- grid .global_configuration.l3 .global_configuration.e3
-
- label .global_configuration.l4 -text "Node outline if connected: " -bg black -fg lightblue
- entry .global_configuration.e4 -relief sunken -textvariable object_outline_connect \
- -bg blue4 -fg gray80 -insertbackground lightyellow
- grid .global_configuration.l4 .global_configuration.e4
-
- label .global_configuration.l5 -text "Node shape: " -bg black -fg lightblue
- entry .global_configuration.e5 -relief sunken -textvariable object_shape \
- -bg blue4 -fg gray80 -insertbackground lightyellow
- grid .global_configuration.l5 .global_configuration.e5
-
- label .global_configuration.l6 -text "Node X dimension: " -bg black -fg lightblue
- entry .global_configuration.e6 -relief sunken -textvariable object_x_size \
- -bg blue4 -fg gray80 -insertbackground lightyellow
- grid .global_configuration.l6 .global_configuration.e6
-
- label .global_configuration.l7 -text "Node Y dimension: " -bg black -fg lightblue
- entry .global_configuration.e7 -relief sunken -textvariable object_y_size \
- -bg blue4 -fg gray80 -insertbackground lightyellow
- grid .global_configuration.l7 .global_configuration.e7
-
- label .global_configuration.l8 -text "Canvas background: " -bg black -fg lightblue
- entry .global_configuration.e8 -relief sunken -textvariable canvas_background \
- -bg blue4 -fg gray80 -insertbackground lightyellow
- grid .global_configuration.l8 .global_configuration.e8
-
- label .global_configuration.l9 -text "Node label color: " -bg black -fg lightblue
- entry .global_configuration.e9 -relief sunken -textvariable node_color_label \
- -bg blue4 -fg gray80 -insertbackground lightyellow
- grid .global_configuration.l9 .global_configuration.e9
-
- label .global_configuration.l10 -text "Edge label color: " -bg black -fg lightblue
- entry .global_configuration.e10 -relief sunken -textvariable edge_color_label \
- -bg blue4 -fg gray80 -insertbackground lightyellow
- grid .global_configuration.l10 .global_configuration.e10
-
- label .global_configuration.l11 -text "Cursor color: " -bg black -fg lightblue
- entry .global_configuration.e11 -relief sunken -textvariable main_cursor_color \
- -bg blue4 -fg gray80 -insertbackground lightyellow
- grid .global_configuration.l11 .global_configuration.e11
-
- label .global_configuration.l12 -text "URL prefix: " -bg black -fg lightblue
- entry .global_configuration.e12 -relief sunken -textvariable url_prefix \
- -bg blue4 -fg gray80 -insertbackground lightyellow
- grid .global_configuration.l12 .global_configuration.e12
-
- label .global_configuration.l13 -text "URL suffix: " -bg black -fg lightblue
- entry .global_configuration.e13 -relief sunken -textvariable url_suffix \
- -bg blue4 -fg gray80 -insertbackground lightyellow
- grid .global_configuration.l13 .global_configuration.e13
-
- label .global_configuration.l14a -text "Graph Drawing Mode: " -bg black -fg lightblue
- label .global_configuration.l14b -text "" -bg black -fg lightblue
- radiobutton .global_configuration.e14a -relief sunken -variable input_type \
- -text " From Data File " -value "DATA" -bg blue4 -fg gray80
- radiobutton .global_configuration.e14b -relief sunken -variable input_type \
- -text " Manual Drawing " -value "MANUAL" -bg blue4 -fg gray80
- grid .global_configuration.l14a .global_configuration.e14a
- grid .global_configuration.l14b .global_configuration.e14b
-
- label .global_configuration.l15 -text "Edge Color (Manual): " -bg black -fg lightblue
- entry .global_configuration.e15 -relief sunken -textvariable fake_edge_color \
- -bg blue4 -fg gray80 -insertbackground lightyellow
- grid .global_configuration.l15 .global_configuration.e15
-
-}
-
-proc Smith_Waterman {} {
-
- set is_canvas_there [winfo exist .phylo.canvas]
-
- destroy .smith_waterman
-
- global fasta_to_run
- global sw_node_A
- global sw_node_B
- global database_dir
- global database_ext
- global smith_waterman_counter
-
- set sw_node_A ""
- set sw_node_B ""
-
- set fasta_to_run "ssearch34"
- set database_dir "./Database/TIGR/"
- set database_ext "txt"
- set smith_waterman_counter 0
-
- toplevel .smith_waterman
- .smith_waterman config -bg black
- if {$is_canvas_there == 1} {
- wm transient .smith_waterman .phylo.canvas
- }
- wm title .smith_waterman "Smith Waterman Search"
- wm protocol .smith_waterman WM_DELETE_WINDOW "destroy .smith_waterman"
-
- label .smith_waterman.db -text "database: " -bg black -fg lightblue
- entry .smith_waterman.db_dir -relief sunken -textvariable database_dir \
- -bg blue4 -fg gray80 -insertbackground lightyellow
- grid .smith_waterman.db .smith_waterman.db_dir
-
- label .smith_waterman.ext -text "file ext: " -bg black -fg lightblue
- entry .smith_waterman.ext_entry -relief sunken -textvariable database_ext \
- -bg blue4 -fg gray80 -insertbackground lightyellow
- grid .smith_waterman.ext .smith_waterman.ext_entry
-
- label .smith_waterman.fasta -text "program: " -bg black -fg lightblue
- entry .smith_waterman.fasta2run -relief sunken -textvariable fasta_to_run \
- -bg blue4 -fg gray80 -insertbackground lightyellow
- grid .smith_waterman.fasta .smith_waterman.fasta2run
-
- label .smith_waterman.label_A -text "Node A: " -bg black -fg lightblue
- entry .smith_waterman.entry_A -relief sunken -textvariable sw_node_A \
- -bg blue4 -fg yellow -insertbackground lightyellow
- grid .smith_waterman.label_A .smith_waterman.entry_A
-
- label .smith_waterman.label_B -text "Node B: " -bg black -fg lightblue
- entry .smith_waterman.entry_B -relief sunken -textvariable sw_node_B \
- -bg blue4 -fg yellow -insertbackground lightyellow
- grid .smith_waterman.label_B .smith_waterman.entry_B
-
- label .smith_waterman.empty -text "" -bg black
-
- button .smith_waterman.run_it -text "Show Alignment" \
- -command "Show_Alignment"
-
- button .smith_waterman.dismiss -text "Dismiss" \
- -command {destroy .smith_waterman}
-
- grid .smith_waterman.empty .smith_waterman.run_it -padx 3 -pady 3
- grid .smith_waterman.empty .smith_waterman.dismiss -padx 3 -pady 3
-
-}
-
-proc Show_Alignment {} {
-
- global sw_node_A
- global sw_node_B
-
- global database_dir
- global database_ext
- global fasta_to_run
- global smith_waterman_counter
-
- incr smith_waterman_counter
-
- exec $fasta_to_run -q -w 100 $database_dir$sw_node_A\.$database_ext $database_dir$sw_node_B\.$database_ext \
- > ./Temp/ssearch_alignment_$smith_waterman_counter.tmp
-
- Display_Alignment
-}
-
-proc Display_Alignment {} {
-
- # global canvas_editor_font_type
- global canvas_editor_font_size
- global canvas_editor_font_style
-
- global sw_node_A
- global sw_node_B
- global fasta_to_run
- global smith_waterman_counter
-
- regsub {\..*} $sw_node_A "" sw_node_A_w
- regsub {\..*} $sw_node_B "" sw_node_B_w
-
- puts $sw_node_A\tvs\t$sw_node_B
-
- # destroy .scrolled_alignment_$smith_waterman_counter
- set t [Scrolled_Text_Fasta .scrolled_alignment_$smith_waterman_counter $sw_node_A $sw_node_A_w $sw_node_B $sw_node_B_w -width 110 -height 40 -font "courier $canvas_editor_font_size $canvas_editor_font_style"]
- set in [open "./Temp/ssearch_alignment_$smith_waterman_counter.tmp" r]
- $t insert end [read $in]
- close $in
- wm title .scrolled_alignment_$smith_waterman_counter$sw_node_A_w$sw_node_B_w "$fasta_to_run Alignment of $sw_node_A vs $sw_node_B"
- wm protocol .scrolled_alignment_$smith_waterman_counter$sw_node_A_w$sw_node_B_w WM_DELETE_WINDOW \
- "destroy .scrolled_alignment_$smith_waterman_counter$sw_node_A_w$sw_node_B_w"
-
- bell
- # incr smith_waterman_counter
-}
-
-#############################################
-# MAIN BODY #
-#############################################
-
-wm title . "PhyloGrapher"
-wm protocol . WM_DELETE_WINDOW "destroy ."
-wm minsize . 520 435
-. config -bg black
-
-global tcl_precision
-set tcl_precision 4
-
-set phylo_logo [image create photo -file ./Images/PhyloGrapherLogo.gif]
-label .phylo_logo -image $phylo_logo -bg black
-place .phylo_logo -x 24 -y 12
-
-# VARIABLES
-
-global abc_tag
-global canvas_background
-global font_color_canvas
-global font_color_label
-global horizontal_size
-global vertical_size
-global genes_range
-global graph_radius
-global genes_id_data_file
-global matrix_data_file
-global graph_data_file
-global html_image_map
-global edges_data_file
-global dots_coord_file
-global dots_coord_file_restore
-
-global level_of_similarity_1
-global level_of_similarity_2
-global level_of_similarity_3
-global level_of_similarity_4
-global level_of_similarity_5
-global level_of_similarity_6
-
-global color_of_similarity_1
-global color_of_similarity_2
-global color_of_similarity_3
-global color_of_similarity_4
-global color_of_similarity_5
-global color_of_similarity_6
-
-global thickness_of_similarity_1
-global thickness_of_similarity_2
-global thickness_of_similarity_3
-global thickness_of_similarity_4
-global thickness_of_similarity_5
-global thickness_of_similarity_6
-
-global edgeCounter
-global fake_identity_counter
-
-global canvas_editor_font_type
-global canvas_editor_font_size
-global canvas_editor_font_style
-
-global object_fill_color
-global object_fill_color_connect
-global object_outline
-global object_outline_connect
-global object_shape
-global object_x_size
-global object_y_size
-
-global node_color_label
-global edge_color_label
-global main_cursor_color
-
-global url_prefix
-global url_suffix
-
-global restore_speed
-global input_type
-global fake_edge_color
-
-set restore_speed "FAST"
-set input_type "DATA"
-set fake_edge_color "yellow"
-
-set object_fill_color "blue4"
-set object_outline "green4"
-set object_fill_color_connect "blue"
-set object_outline_connect "cyan"
-set object_shape "oval"
-# set object_shape "rect"
-set object_x_size 7
-set object_y_size 7
-
-set node_color_label "cyan"
-set edge_color_label "violet"
-set main_cursor_color "white"
-
-set canvas_editor_font_type "helvetica"
-set canvas_editor_font_size 12
-set canvas_editor_font_style "normal"
-
-set font_color_canvas white
-set edgeCounter 0
-set fake_identity_counter 1
-
-set level_of_similarity_1 0.90
-set level_of_similarity_2 0.80
-set level_of_similarity_3 0.75
-set level_of_similarity_4 0.70
-set level_of_similarity_5 0.65
-set level_of_similarity_6 0.60
-
-set color_of_similarity_1 "white"
-set color_of_similarity_2 "gold"
-set color_of_similarity_3 "orange"
-set color_of_similarity_4 "gray80"
-set color_of_similarity_5 "gray60"
-set color_of_similarity_6 "gray40"
-
-set thickness_of_similarity_1 3
-set thickness_of_similarity_2 2
-set thickness_of_similarity_3 1
-set thickness_of_similarity_4 1
-set thickness_of_similarity_5 1
-set thickness_of_similarity_6 1
-
-set horizontal_size 700
-set canvas_background "black"
-
-set genes_id_data_file "./Matrix/My_ID_List.txt"
-set matrix_data_file "./Matrix/My_Matrix_File.txt"
-set post_script_file "phylo_postscript.ps"
-set html_image_map "phylo_image_map.html"
-set dots_coord_file "phylo_coords.txt"
-set dots_coord_file_restore "phylo_coords_r.txt"
-set edges_data_file "phylo_edges.txt"
-set genes_range 0
-
-set url_prefix "www.atgc.org"
-set url_suffix ""
-
-set abc_tag "abc_id_"
-
-# BUTTONS
-
-##########################################
-
-button .howto -text "HowTo" -command {HowTo_PhyloWebify} -bg blue4 -fg lightblue -width 7
-place .howto -x 320 -y 45
-
-button .about -text "About" -command {About_PhyloGrapher} -bg blue4 -fg lightblue -width 7
-place .about -x 320 -y 10
-
-button .exit -text "Exit" -command {destroy .} \
- -bg gray30 -height 1 -fg gray75 -width 7
-place .exit -x 415 -y 10
-
-button .global_color_config -text "Config" -command {Global_Configuration} \
- -bg blue4 -fg lightblue -width 7 -height 1
-place .global_color_config -x 415 -y 45
-
-button .extras -text "Extras" -command {Show_Extras} \
- -bg blue4 -height 1 -fg lightblue -width 7
-place .extras -x 415 -y 80
-
-##########################################
-
-label .id_label -text "List of Genes:" -bg black -fg gray75 -width 13
-place .id_label -x 12 -y 90
-
-label .matrix_label -text "Matrix File:" -bg black -fg gray75 -width 12
-place .matrix_label -x 12 -y 120
-
-entry .id_entry -relief sunken -textvariable genes_id_data_file \
- -bg blue4 -fg white -width 32 -insertbackground lightyellow
-place .id_entry -x 120 -y 90
-
-entry .matrix_entry -relief sunken -textvariable matrix_data_file \
- -bg blue4 -fg white -width 32 -insertbackground lightyellow
-place .matrix_entry -x 120 -y 120
-
-button .generate_graph -text "Load Data into Memory" -command {Create_Graph_from_Data_MEMORY} \
- -bg blue4 -fg cyan -width 20 -height 1
-place .generate_graph -x 60 -y 150
-
-label .gene_number_label -text "Number of Nodes:" -bg black -fg gray75 -width 16
-place .gene_number_label -x 373 -y 125
-
-label .gene_number_entry -textvariable genes_range -bg black -fg gold -width 16
-place .gene_number_entry -x 373 -y 145
-
-label .edges_number_label -text "Number of Edges:" -bg black -fg gray75 -width 16
-place .edges_number_label -x 373 -y 175
-
-label .edges_counter_label -textvariable edgeCounter -bg black -fg gold -width 16
-place .edges_counter_label -x 373 -y 195
-
-##########################################
-
-label .identity_color_map -text "Relationship Color Map:" \
- -bg gray25 -fg gray80 -width 30
-place .identity_color_map -x 30 -y 190
-
-label .level_1 -text "1" -bg gray25 -fg gray80 -width 2
-place .level_1 -x 12 -y 220
-
-label .level_0 -text "1.0 -" -bg gray25 -fg white -width 5
-place .level_0 -x 45 -y 220
-
-entry .level_1_entry -relief sunken -textvariable level_of_similarity_1 \
- -bg gray25 -fg white -width 5 -insertbackground lightyellow
-place .level_1_entry -x 100 -y 220
-
-entry .color_1 -relief sunken -textvariable color_of_similarity_1 \
- -bg gray25 -fg white -width 10 -insertbackground lightyellow
-place .color_1 -x 155 -y 220
-
-entry .thick_1 -relief sunken -textvariable thickness_of_similarity_1 \
- -bg gray25 -fg white -width 3 -insertbackground lightyellow
-place .thick_1 -x 245 -y 220
-###
-label .level_2 -text "2" -bg gray25 -fg gray80 -width 2
-place .level_2 -x 12 -y 250
-
-entry .level_1a_entry -relief sunken -textvariable level_of_similarity_1 \
- -bg gray25 -fg white -width 5 -insertbackground lightyellow
-place .level_1a_entry -x 45 -y 250
-
-entry .level_2_entry -relief sunken -textvariable level_of_similarity_2 \
- -bg gray25 -fg white -width 5 -insertbackground lightyellow
-place .level_2_entry -x 100 -y 250
-
-entry .color_2 -relief sunken -textvariable color_of_similarity_2 \
- -bg gray25 -fg white -width 10 -insertbackground lightyellow
-place .color_2 -x 155 -y 250
-
-entry .thick_2 -relief sunken -textvariable thickness_of_similarity_2 \
- -bg gray25 -fg white -width 3 -insertbackground lightyellow
-place .thick_2 -x 245 -y 250
-###
-label .level_3 -text "3" -bg gray25 -fg gray80 -width 2
-place .level_3 -x 12 -y 280
-
-entry .level_2a_entry -relief sunken -textvariable level_of_similarity_2 \
- -bg gray25 -fg white -width 5 -insertbackground lightyellow
-place .level_2a_entry -x 45 -y 280
-
-entry .level_3_entry -relief sunken -textvariable level_of_similarity_3 \
- -bg gray25 -fg white -width 5 -insertbackground lightyellow
-place .level_3_entry -x 100 -y 280
-
-entry .color_3 -relief sunken -textvariable color_of_similarity_3 \
- -bg gray25 -fg white -width 10 -insertbackground lightyellow
-place .color_3 -x 155 -y 280
-
-entry .thick_3 -relief sunken -textvariable thickness_of_similarity_3 \
- -bg gray25 -fg white -width 3 -insertbackground lightyellow
-place .thick_3 -x 245 -y 280
-###
-label .level_4 -text "4" -bg gray25 -fg gray80 -width 2
-place .level_4 -x 12 -y 310
-
-entry .level_3a_entry -relief sunken -textvariable level_of_similarity_3 \
- -bg gray25 -fg white -width 5 -insertbackground lightyellow
-place .level_3a_entry -x 45 -y 310
-
-entry .level_4_entry -relief sunken -textvariable level_of_similarity_4 \
- -bg gray25 -fg white -width 5 -insertbackground lightyellow
-place .level_4_entry -x 100 -y 310
-
-entry .color_4 -relief sunken -textvariable color_of_similarity_4 \
- -bg gray25 -fg white -width 10 -insertbackground lightyellow
-place .color_4 -x 155 -y 310
-
-entry .thick_4 -relief sunken -textvariable thickness_of_similarity_4 \
- -bg gray25 -fg white -width 3 -insertbackground lightyellow
-place .thick_4 -x 245 -y 310
-###
-label .level_5 -text "5" -bg gray25 -fg gray80 -width 2
-place .level_5 -x 12 -y 340
-
-entry .level_4a_entry -relief sunken -textvariable level_of_similarity_4 \
- -bg gray25 -fg white -width 5 -insertbackground lightyellow
-place .level_4a_entry -x 45 -y 340
-
-entry .level_5_entry -relief sunken -textvariable level_of_similarity_5 \
- -bg gray25 -fg white -width 5 -insertbackground lightyellow
-place .level_5_entry -x 100 -y 340
-
-entry .color_5 -relief sunken -textvariable color_of_similarity_5 \
- -bg gray25 -fg white -width 10 -insertbackground lightyellow
-place .color_5 -x 155 -y 340
-
-entry .thick_5 -relief sunken -textvariable thickness_of_similarity_5 \
- -bg gray25 -fg white -width 3 -insertbackground lightyellow
-place .thick_5 -x 245 -y 340
-###
-label .level_6 -text "6" -bg gray25 -fg gray80 -width 2
-place .level_6 -x 12 -y 370
-
-entry .level_5a_entry -relief sunken -textvariable level_of_similarity_5 \
- -bg gray25 -fg white -width 5 -insertbackground lightyellow
-place .level_5a_entry -x 45 -y 370
-
-entry .level_6_entry -relief sunken -textvariable level_of_similarity_6 \
- -bg gray25 -fg white -width 5 -insertbackground lightyellow
-place .level_6_entry -x 100 -y 370
-
-entry .color_6 -relief sunken -textvariable color_of_similarity_6 \
- -bg gray25 -fg white -width 10 -insertbackground lightyellow
-place .color_6 -x 155 -y 370
-
-entry .thick_6 -relief sunken -textvariable thickness_of_similarity_6 \
- -bg gray25 -fg white -width 3 -insertbackground lightyellow
-place .thick_6 -x 245 -y 370
-###
-label .level_7 -text "no lines below:" -bg gray25 -fg gray80 -width 15
-place .level_7 -x 12 -y 400
-
-entry .level_6a_entry -relief sunken -textvariable level_of_similarity_6 \
- -bg gray25 -fg white -width 5 -insertbackground lightyellow
-place .level_6a_entry -x 140 -y 400
-
-##########################################
-
-label .image_size_label -text "vertical and horizontal\nimage size:" -bg gray25 -fg gray80 -width 20
-place .image_size_label -x 300 -y 235
-
-entry .image_size_entry -relief sunken -textvariable horizontal_size \
- -bg gray25 -fg white -width 5 -insertbackground lightyellow
-place .image_size_entry -x 460 -y 240
-
-##########################################
-
-label .ps_file_label -text "PostScript file:" -bg gray25 -fg gray80 -width 20
-place .ps_file_label -x 300 -y 285
-
-entry .ps_file_entry -relief sunken -textvariable post_script_file \
- -bg gray25 -fg white -width 20 -insertbackground lightyellow
-place .ps_file_entry -x 300 -y 315
-
-button .ps_button -text "Make\nPS" -bg blue4 -fg lightblue -width 3 -height 2 \
- -command {
- .phylo.canvas create rect 0 0 [expr $horizontal_size + 20] [expr $vertical_size + 20]\
- -fill $canvas_background -outline $canvas_background -tag dummy_ps_background
- .phylo.canvas lower dummy_ps_background
- .phylo.canvas postscript -height $vertical_size -width $horizontal_size \
- -x -1 -y 0 -file $post_script_file
- bell
- }
-place .ps_button -x 460 -y 290
-
-##########################################
-
-label .html_file_label -text "HTML image map:" -bg gray25 -fg gray80 -width 20
-place .html_file_label -x 300 -y 355
-
-entry .html_file_entry -relief sunken -textvariable html_image_map \
- -bg gray25 -fg white -width 20 -insertbackground lightyellow
-place .html_file_entry -x 300 -y 385
-
-button .html -text "Make\nHTML" -command {HTML_Image_Map_Generator} \
- -bg blue4 -fg lightblue -width 3 -height 2
-place .html -x 460 -y 360
-
-###########################################
-
-button .startup -text "Run" -command {PhyloGrapher_Canvas} \
- -bg purple -fg yellow -width 8 -height 2
-place .startup -x 265 -y 160
-
-###########################################
-
-Global_Configuration
-
-############################################
-# #
-# THE END #
-# #
-############################################
Deleted: trunk/packages/phylographer/trunk/PhyloGrapher_April_03_2003_Windows.tcl
===================================================================
--- trunk/packages/phylographer/trunk/PhyloGrapher_April_03_2003_Windows.tcl 2012-01-11 10:21:36 UTC (rev 9246)
+++ trunk/packages/phylographer/trunk/PhyloGrapher_April_03_2003_Windows.tcl 2012-01-11 10:24:08 UTC (rev 9247)
@@ -1,3935 +0,0 @@
-#!/usr/bin/wish
-#
-######################################
-# #
-# PhyloGrapher by Alexander Kozik #
-# version: April 03 2003 #
-# #
-# Graph Visualisation Tool #
-# #
-######################################
-
-######################################
-# LIST OF PROCEDURES #
-######################################
-
-# About_PhyloGrapher
-# Add_Graphics_to_Canvas
-# Adj_List_Extraction
-# Adjacency_List
-# Build_Adjacency_List
-# Canvas_Editor
-# Change_Node_Color1
-# Change_Node_Color2
-# Change_Node_Color3
-# Change_Node_Color4
-# Change_Node_Color5
-# Change_Node_Color6
-# Create_Graph_A
-# Create_Graph_from_Data
-# Destroy_Alignment
-# Display_Alignment
-# Dots_Coord_Generator
-# Dots_Coord_Restore
-# Dummy_Color_Movie
-# Edge_Counter
-# Edge_Degree_Counter
-# Edge_Degree_Counter_Movie
-# Events_Binding
-# Fasta_Save_As
-# Fasta_Search_Parser
-# Fruchterman_Rheingold
-# Gene_ID_Window
-# Generate_Graph_From_Matrix
-# Global_XY_Coords
-# HTML_Image_Map_Generator
-# HighLightEdge
-# HighLightEdge_Back
-# HighLight_Adjacent_Nodes
-# HighLight_Adjacent_Nodes_All
-# HighLight_Adjacent_Nodes_All_Loop
-# HowTo_Count_Edges
-# HowTo_Paint_Nodes
-# HowTo_PhyloWebify
-# How_To_Edit_Canvas
-# How_To_Save
-# Html_ScreenShot
-# Move_Graph_Label
-# Move_Text_Label
-# Node_Painter
-# Nodes_Coord_Dialog
-# PhyloGrapher_Canvas
-# Place_Text_on_Canvas
-# Plot_Genes_on_Canvas
-# Print_Edge_Weight
-# Print_Gene_ID
-# Save_Current_Fasta_Graph
-# Scrolled_Canvas
-# Scrolled_Canvas_Alignment
-# Scrolled_Text
-# Scrolled_Text_Fasta
-# Self_Organize
-# Shake_the_Node
-# Show_Alignment
-# Show_Extras
-# Smith_Waterman
-# clearName
-# clearWeight
-# highLightGene
-# highLightGene_Back
-# make_HTML
-# make_Nodes_Coords
-# mkEdge
-# mkNode
-# moveNode
-# moveNode_Slow
-# moveNode_Slow_Edges
-# showDegree
-# showName
-# showWeight
-
-######################################
-# GLOBAL VARIABLES #
-######################################
-
-# abc_tag
-# adj_highlight_color
-# adj_highlight_outline
-# adjacency_data_file
-# adjacency_data_file_open
-# already_done_nodes
-# attraction_random_step
-# canvas_background
-# canvas_editor_font_size
-# canvas_editor_font_style
-# canvas_editor_font_type
-# canvas_editor_text
-# color_group1
-# color_group2
-# color_group3
-# color_group4
-# color_group5
-# color_group6
-# color_of_similarity_1
-# color_of_similarity_2
-# color_of_similarity_3
-# color_of_similarity_4
-# color_of_similarity_5
-# color_of_similarity_6
-# curX
-# curY
-# current_adjacent_node
-# custom_node_counter
-# database_dir
-# database_ext
-# dots_coord_file
-# dots_coord_file_restore
-# dummy_adjacency_counter
-# edgeCounter
-# edgeFirst
-# edgeSecond
-# edge_color_label
-# edge_wight_coefficient
-# edges_data_file
-# entropy_factor
-# fake_identity_counter
-# fasta_to_run
-# font_color_canvas
-# font_color_label
-# frucht_gold_limit
-# frucht_gold_precision
-# genes_id_data_file
-# genes_range
-# graphX1
-# graphX2
-# graphY1
-# graphY2
-# graph_data_file
-# graph_fill_color
-# graph_outline_color
-# graph_radius
-# graph_style
-# graph_tag
-# horizontal_size
-# html_image_map
-# level_of_similarity_1
-# level_of_similarity_2
-# level_of_similarity_3
-# level_of_similarity_4
-# level_of_similarity_5
-# level_of_similarity_6
-# matrix_data_file
-# nodeX
-# nodeY
-# node_color_label
-# nodes_group1
-# nodes_group2
-# nodes_group3
-# nodes_group4
-# nodes_group5
-# nodes_group6
-# object_fill_color
-# object_fill_color_connect
-# object_outline
-# object_outline_connect
-# object_shape
-# object_x_size
-# object_y_size
-# random_step_value
-# repulsion_distance
-# selected_canvas
-# sim_curX
-# sim_curY
-# smith_waterman_counter
-# sw_node_A
-# sw_node_B
-# text_tag
-# thickness_of_similarity_1
-# thickness_of_similarity_2
-# thickness_of_similarity_3
-# thickness_of_similarity_4
-# thickness_of_similarity_5
-# thickness_of_similarity_6
-# vertical_size
-
-##########################
-# GNU LICENSE #
-##########################
-proc About_PhyloGrapher {} {
-
- set phylo_logo [image create photo -file ./Images/PhyloGrapherLogo.gif]
- set phylo_text "PhyloGrapher (Graph Visualization Tool)
-
-Copyright (C) 2001, 2002, 2003 University of California at Davis,
- Alexander Kozik
-
-This program is free software. You can redistribute it and/or modify it
-under the terms of the GNU General Public License ( http://www.gnu.org )
-as published by the Free Software Foundation; either version 2 of the
-License, or (at your option) any later version.
-
-In other words, you are free to modify, copy, or redistribute this source
-code and its documentation in any way you like, but you must distribute
-all derivative versions as free software under the same terms that we
-provided our code to you (i.e. the GNU General Public License). This
-precludes any use of the code in proprietary or commercial software
-unless your source code is made freely available.
-
-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 PhyloGrapher release, in the file LICENSE; if not, write to the
-Free Software Foundation, Inc., 675 Mass. Ave, Cambridge, MA 02139 USA."
-
- destroy .phylo_about
- toplevel .phylo_about
- wm transient .phylo_about .
- wm title .phylo_about "About PhyloGrapher"
- wm protocol .phylo_about WM_DELETE_WINDOW "destroy .phylo_about"
-
- label .phylo_about.image -image $phylo_logo
- label .phylo_about.text -text $phylo_text -justify center
- button .phylo_about.ok -text "OK" -command "destroy .phylo_about"
- grid .phylo_about.image -padx 7 -pady 7
- grid .phylo_about.text -padx 2 -pady 2
- grid .phylo_about.ok -padx 2 -pady 2
-}
-
-proc HowTo_PhyloWebify {} {
-
- destroy .fly
- set t [Scrolled_Text .fly -width 70 -height 40]
- set in [open "README.txt" r]
- $t insert end [read $in]
- close $in
- wm title .fly "HowTo PhyloWebify"
- wm protocol .fly WM_DELETE_WINDOW "destroy .fly"
-}
-
-############ Scrolled Canvas ################
-# --------------- #
-# Create Scrolled Canvas #
-# #
-#############################################
-proc Scrolled_Canvas { phylo args } {
- toplevel $phylo
-
- wm title $phylo "PhyloGrapher Canvas"
- wm protocol $phylo WM_DELETE_WINDOW "destroy $phylo .geneid"
-
- eval {canvas $phylo.canvas -xscrollcommand [list $phylo.xscroll set] \
- -yscrollcommand [list $phylo.yscroll set] \
- -highlightthickness 0 -borderwidth 0} $args
-
- scrollbar $phylo.xscroll -orient horizontal \
- -command [list $phylo.canvas xview]
- scrollbar $phylo.yscroll -orient vertical \
- -command [list $phylo.canvas yview]
-
- grid $phylo.canvas $phylo.yscroll -sticky news
- grid $phylo.xscroll -sticky ew
- grid rowconfigure $phylo 0 -weight 1
- grid columnconfigure $phylo 0 -weight 1
- return $phylo.canvas
-}
-
-proc Scrolled_Canvas_Alignment { phylo sw_node_A sw_node_A_w sw_node_B sw_node_B_w fly args } {
-
- global fasta_to_run
- global smith_waterman_counter
-
- destroy .fasta_save_as_$smith_waterman_counter
- toplevel .fasta_save_as_$smith_waterman_counter
- .fasta_save_as_$smith_waterman_counter config -bg black
- wm transient .fasta_save_as_$smith_waterman_counter $fly$sw_node_A_w$sw_node_B_w.text
- wm title .fasta_save_as_$smith_waterman_counter "Alignment of $sw_node_A vs $sw_node_B"
- wm protocol .fasta_save_as_$smith_waterman_counter WM_DELETE_WINDOW "destroy .fasta_save_as_$smith_waterman_counter"
-
- eval {canvas $phylo.canvas -xscrollcommand [list $phylo.xscroll set] \
- -yscrollcommand [list $phylo.yscroll set] \
- -highlightthickness 0 -borderwidth 0} $args
-
- scrollbar $phylo.xscroll -orient horizontal \
- -command [list $phylo.canvas xview]
- scrollbar $phylo.yscroll -orient vertical \
- -command [list $phylo.canvas yview]
-
- grid $phylo.canvas $phylo.yscroll -sticky news
- grid $phylo.xscroll -sticky ew
- grid rowconfigure $phylo 0 -weight 1
- grid columnconfigure $phylo 0 -weight 1
- return $phylo.canvas
-}
-
-proc Scrolled_Text_Fasta { fly sw_node_A sw_node_A_w sw_node_B sw_node_B_w args} {
-
- global smith_waterman_counter
-
- toplevel $fly$sw_node_A_w$sw_node_B_w
- eval {text $fly$sw_node_A_w$sw_node_B_w.text -wrap none \
- -xscrollcommand [list $fly$sw_node_A_w$sw_node_B_w.xscroll set] \
- -yscrollcommand [list $fly$sw_node_A_w$sw_node_B_w.yscroll set]} $args
- scrollbar $fly$sw_node_A_w$sw_node_B_w.xscroll -orient horizontal \
- -command [list $fly$sw_node_A_w$sw_node_B_w.text xview]
- scrollbar $fly$sw_node_A_w$sw_node_B_w.yscroll -orient vertical \
- -command [list $fly$sw_node_A_w$sw_node_B_w.text yview]
- grid $fly$sw_node_A_w$sw_node_B_w.text $fly$sw_node_A_w$sw_node_B_w.yscroll -sticky news
- grid $fly$sw_node_A_w$sw_node_B_w.xscroll -sticky news
- grid rowconfigure $fly$sw_node_A_w$sw_node_B_w 0 -weight 1
- grid columnconfigure $fly$sw_node_A_w$sw_node_B_w 0 -weight 1
- Fasta_Search_Parser $fly $sw_node_A $sw_node_A_w $sw_node_B $sw_node_B_w
- return $fly$sw_node_A_w$sw_node_B_w.text
-}
-
-proc Fasta_Search_Parser {fly sw_node_A sw_node_A_w sw_node_B sw_node_B_w} {
-
- global smith_waterman_counter
-
- global database_dir
- global database_ext
-
- set fasta_to_parse "./Temp/ssearch_alignment_$smith_waterman_counter.tmp"
- set fasta_to_parse_open [open $fasta_to_parse "r"]
-
- set id_A_pattern "$database_dir$sw_node_A\.$database_ext\: "
- set id_B_pattern "^\>\>$sw_node_B"
- set aa_pattern " aa"
- set smith_waterman_pattern "Smith-Waterman score\: "
-
- while {[gets $fasta_to_parse_open current_line_fasta] >= 0} {
-
- if [regexp $id_A_pattern $current_line_fasta] {
- set id_A_aa_size $current_line_fasta
- regsub $id_A_pattern $id_A_aa_size "" id_A_aa_size
- regsub $aa_pattern $id_A_aa_size "" id_A_aa_size
- # puts ""
- # puts "$sw_node_A\t$id_A_aa_size"
- }
- if [regexp $id_B_pattern $current_line_fasta] {
- set id_B_aa_size $current_line_fasta
- regsub {\s+} $id_B_aa_size "" id_B_aa_size
- regsub $id_B_pattern $id_B_aa_size "" id_B_aa_size
- regsub {.*\(} $id_B_aa_size "" id_B_aa_size
- regsub { aa\)} $id_B_aa_size "" id_B_aa_size
- # puts "$sw_node_B\t$id_B_aa_size"
- }
- if [regexp $smith_waterman_pattern $current_line_fasta] {
- set smith_waterman_score $current_line_fasta
- set identity_score $current_line_fasta
- set overlap_value $current_line_fasta
- set overlap_seq_A_left $current_line_fasta
- set overlap_seq_A_right $current_line_fasta
- set overlap_seq_B_left $current_line_fasta
- set overlap_seq_B_right $current_line_fasta
- ####################
- regsub {Smith-Waterman score: } $smith_waterman_score "" smith_waterman_score
- regsub {;.*\)} $smith_waterman_score "" smith_waterman_score
- ####################
- regsub {% identity.*\)} $identity_score "" identity_score
- regsub {Smith-Waterman score:.*;} $identity_score "" identity_score
- regsub -all { } $identity_score "" identity_score
- ####################
- regsub { aa overlap.*\)} $overlap_value "" overlap_value
- regsub {Smith-Waterman score.*\) in } $overlap_value "" overlap_value
- regsub -all { } $overlap_value "" overlap_value
- ####################
- regsub {Smith-Waterman score.*\(} $overlap_seq_A_left "" overlap_seq_A_left
- regsub {\-.*} $overlap_seq_A_left "" overlap_seq_A_left
- regsub {Smith-Waterman score.*\(} $overlap_seq_A_right "" overlap_seq_A_right
- regsub {\:.*} $overlap_seq_A_right "" overlap_seq_A_right
- regsub {.*\-} $overlap_seq_A_right "" overlap_seq_A_right
- ####################
- regsub {Smith-Waterman score.*\:} $overlap_seq_B_left "" overlap_seq_B_left
- regsub {\-.*} $overlap_seq_B_left "" overlap_seq_B_left
- regsub {Smith-Waterman score.*\:} $overlap_seq_B_right "" overlap_seq_B_right
- regsub {.*\-} $overlap_seq_B_right "" overlap_seq_B_right
- regsub {\)} $overlap_seq_B_right "" overlap_seq_B_right
- }
- }
- Fasta_Save_As $fly $sw_node_A $sw_node_A_w $sw_node_B $sw_node_B_w $id_A_aa_size $id_B_aa_size \
- $smith_waterman_score $identity_score $overlap_value \
- $overlap_seq_A_left $overlap_seq_A_right $overlap_seq_B_left $overlap_seq_B_right
-}
-
-proc Fasta_Save_As {fly sw_node_A sw_node_A_w sw_node_B sw_node_B_w id_A_aa_size id_B_aa_size smith_waterman_score identity_score overlap_value overlap_seq_A_left overlap_seq_A_right overlap_seq_B_left overlap_seq_B_right} {
-
- global fasta_to_run
- global smith_waterman_counter
-
- Scrolled_Canvas_Alignment .fasta_save_as_$smith_waterman_counter $sw_node_A $sw_node_A_w \
- $sw_node_B $sw_node_B_w $fly -width 550 -height 210 \
- -scrollregion "0 0 1200 400" -bg black ; # -bg $canvas_background
-
- # black background on canvas
-
- .fasta_save_as_$smith_waterman_counter.canvas create rect 0 0 1200 400 -fill black -outline black
-
- # text labels on canvas
-
- .fasta_save_as_$smith_waterman_counter.canvas create text 10 20 -text \
- "$sw_node_A\ - $id_A_aa_size aa \($overlap_seq_A_left \- $overlap_seq_A_right\)" -anchor sw -fill white
-
- .fasta_save_as_$smith_waterman_counter.canvas create text 10 40 -text \
- "$sw_node_B\ - $id_B_aa_size aa \($overlap_seq_B_left \- $overlap_seq_B_right\)" -anchor sw -fill white
-
- .fasta_save_as_$smith_waterman_counter.canvas create text 10 60 -text \
- "SW: $smith_waterman_score\; identity: $identity_score\; overlap: $overlap_value" -anchor sw -fill white
-
- # graphical info
- .fasta_save_as_$smith_waterman_counter.canvas create rect \
- 340 10 350 60 -fill gray50 -outline white
-
- .fasta_save_as_$smith_waterman_counter.canvas create rect \
- 340 [expr 60 - ($identity_score/2)] 350 60 -fill gold -outline white
-
- .fasta_save_as_$smith_waterman_counter.canvas create text 355 20 \
- -text "100%" -anchor sw -fill gray
-
- .fasta_save_as_$smith_waterman_counter.canvas create text 355 43 \
- -text "50%" -anchor sw -fill gray
-
- .fasta_save_as_$smith_waterman_counter.canvas create text 355 66 \
- -text "0%" -anchor sw -fill gray
-
- .fasta_save_as_$smith_waterman_counter.canvas create text 327 80 \
- -text "identity" -anchor sw -fill gold
-
- ##
-
- .fasta_save_as_$smith_waterman_counter.canvas create rect \
- 270 10 280 60 -fill gray50 -outline white
-
- set smith_waterman_bar [expr $smith_waterman_score/20]
-
- if {$smith_waterman_bar > 50} {
- set smith_waterman_bar 50
- }
-
- .fasta_save_as_$smith_waterman_counter.canvas create rect \
- 270 [expr 60 - $smith_waterman_bar] 280 60 -fill violet -outline white
-
- .fasta_save_as_$smith_waterman_counter.canvas create text 285 20 \
- -text ">1000" -anchor sw -fill gray
-
- .fasta_save_as_$smith_waterman_counter.canvas create text 285 43 \
- -text "500" -anchor sw -fill gray
-
- .fasta_save_as_$smith_waterman_counter.canvas create text 285 66 \
- -text "100" -anchor sw -fill gray
-
- .fasta_save_as_$smith_waterman_counter.canvas create text 262 80 \
- -text "S-W" -anchor sw -fill violet
-
- ##
-
- .fasta_save_as_$smith_waterman_counter.canvas create rect \
- 410 10 420 60 -fill gray50 -outline white
-
- set overlap_bar [expr $overlap_value/20]
-
- if {$overlap_bar > 50} {
- set overlap_bar 50
- }
-
- .fasta_save_as_$smith_waterman_counter.canvas create rect \
- 410 [expr 60 - $overlap_bar] 420 60 -fill lightblue -outline white
-
- .fasta_save_as_$smith_waterman_counter.canvas create text 425 20 \
- -text ">1000" -anchor sw -fill gray
-
- .fasta_save_as_$smith_waterman_counter.canvas create text 425 43 \
- -text "500" -anchor sw -fill gray
-
- .fasta_save_as_$smith_waterman_counter.canvas create text 425 66 \
- -text "10" -anchor sw -fill gray
-
- .fasta_save_as_$smith_waterman_counter.canvas create text 397 80 \
- -text "overlap" -anchor sw -fill lightblue
-
- # graphical alignment on canvas
- set drawing_scale 3
-
- .fasta_save_as_$smith_waterman_counter.canvas create rect \
- 10 100 [expr $id_A_aa_size/$drawing_scale + 10] 106 \
- -fill blue -outline green
-
- .fasta_save_as_$smith_waterman_counter.canvas create rect \
- [expr $overlap_seq_A_left/$drawing_scale + 10] 100 \
- [expr $overlap_seq_A_right/$drawing_scale + 10] 106 \
- -fill green -outline yellow
-
- .fasta_save_as_$smith_waterman_counter.canvas create rect \
- [expr ($overlap_seq_A_left/$drawing_scale + $overlap_seq_B_left/$drawing_scale)/2 + 10] 135 \
- [expr $overlap_value/$drawing_scale + [expr ($overlap_seq_A_left/$drawing_scale + $overlap_seq_B_left/$drawing_scale)/2 + 10]] 141 \
- -fill red -outline orange
-
- .fasta_save_as_$smith_waterman_counter.canvas create rect \
- 10 170 [expr $id_B_aa_size/$drawing_scale + 10] 176 \
- -fill blue -outline green
-
- .fasta_save_as_$smith_waterman_counter.canvas create rect \
- [expr $overlap_seq_B_left/$drawing_scale + 10] 170 \
- [expr $overlap_seq_B_right/$drawing_scale + 10] 176 \
- -fill green -outline yellow
-
- # lines connecting alignment
- .fasta_save_as_$smith_waterman_counter.canvas create line \
- [expr $overlap_seq_A_left/$drawing_scale + 10] 106 \
- [expr ($overlap_seq_A_left/$drawing_scale + $overlap_seq_B_left/$drawing_scale)/2 + 10] 135 -fill white
-
- .fasta_save_as_$smith_waterman_counter.canvas create line \
- [expr $overlap_seq_A_right/$drawing_scale + 10] 106 \
- [expr $overlap_value/$drawing_scale + [expr ($overlap_seq_A_left/$drawing_scale + $overlap_seq_B_left/$drawing_scale)/2 + 10]] 135 -fill white
-
- .fasta_save_as_$smith_waterman_counter.canvas create line \
- [expr ($overlap_seq_A_left/$drawing_scale + $overlap_seq_B_left/$drawing_scale)/2 + 10] \
- 141 [expr $overlap_seq_B_left/$drawing_scale + 10] 170 -fill white
-
- .fasta_save_as_$smith_waterman_counter.canvas create line \
- [expr $overlap_value/$drawing_scale + [expr ($overlap_seq_A_left/$drawing_scale + $overlap_seq_B_left/$drawing_scale)/2 + 10]] \
- 141 [expr $overlap_seq_B_right/$drawing_scale + 10] 170 -fill white
-
- # text over alignment
- .fasta_save_as_$smith_waterman_counter.canvas create text \
- [expr $id_A_aa_size/$drawing_scale + 20] 110 -text \
- "$sw_node_A" -anchor sw -fill white
-
- .fasta_save_as_$smith_waterman_counter.canvas create text \
- [expr $overlap_value/$drawing_scale + [expr ($overlap_seq_A_left/$drawing_scale + $overlap_seq_B_left/$drawing_scale)/2 + 20]] 145 -text \
- "Alignment" -anchor sw -fill white
-
- .fasta_save_as_$smith_waterman_counter.canvas create text \
- [expr $id_B_aa_size/$drawing_scale + 20] 180 -text \
- "$sw_node_B" -anchor sw -fill white
-
- # puts ""
- # puts [expr $id_A_aa_size/$drawing_scale]
- # puts [expr $id_B_aa_size/$drawing_scale]
-
- grid .fasta_save_as_$smith_waterman_counter.canvas
-
- # buttons
- button .fasta_save_as_$smith_waterman_counter.dismiss -text "Dismiss" \
- -command "Destroy_Alignment $fly $sw_node_A_w $sw_node_B_w $smith_waterman_counter"
- button .fasta_save_as_$smith_waterman_counter.saveas -text "Save as: $sw_node_A\_vs_$sw_node_B\.$fasta_to_run" \
- -command \
- "Save_Current_Fasta_Graph $smith_waterman_counter $sw_node_A $sw_node_A_w $sw_node_B $sw_node_B_w $fasta_to_run"
- label .fasta_save_as_$smith_waterman_counter.saveas_label -text \
- "$sw_node_A\_vs_$sw_node_B\.$fasta_to_run"
- # grid .fasta_save_as_$smith_waterman_counter.saveas .fasta_save_as_$smith_waterman_counter.saveas_label \
- # -padx 2 -pady 4
- grid .fasta_save_as_$smith_waterman_counter.saveas -padx 2 -pady 4
- grid .fasta_save_as_$smith_waterman_counter.dismiss -padx 2 -pady 4
-}
-
-proc Save_Current_Fasta_Graph {smith_waterman_counter sw_node_A sw_node_A_w sw_node_B sw_node_B_w fasta_to_run} {
-
- file copy -force ./Temp/ssearch_alignment_$smith_waterman_counter.tmp \
- ./Saved_Work/$sw_node_A\_vs_$sw_node_B\.$fasta_to_run
-
- .fasta_save_as_$smith_waterman_counter.canvas postscript -file \
- ./Saved_Work/$sw_node_A\_vs_$sw_node_B\.$fasta_to_run.ps
- bell
-}
-
-proc Destroy_Alignment {fly sw_node_A_w sw_node_B_w smith_waterman_counter} {
-
- destroy .fasta_save_as_$smith_waterman_counter
- destroy $fly$sw_node_A_w$sw_node_B_w
-}
-
-proc Scrolled_Text { fly args } {
-
- toplevel $fly
- eval {text $fly.text -wrap none \
- -xscrollcommand [list $fly.xscroll set] \
- -yscrollcommand [list $fly.yscroll set]} $args
- scrollbar $fly.xscroll -orient horizontal \
- -command [list $fly.text xview]
- scrollbar $fly.yscroll -orient vertical \
- -command [list $fly.text yview]
- grid $fly.text $fly.yscroll -sticky news
- grid $fly.xscroll -sticky news
- grid rowconfigure $fly 0 -weight 1
- grid columnconfigure $fly 0 -weight 1
- button $fly.dismiss -text "Dismiss" -command "destroy $fly"
- grid $fly.dismiss
-
- return $fly.text
-}
-
-proc mkNode {x y current_gene_ID} {
-
- global abc_tag
- global sw_node_A
- global sw_node_B
- global nodeX
- global nodeY
- global edgeFirst
- global edgeSecond
- global fake_identity_counter
-
- global object_fill_color
- global object_outline
- global object_shape
- global object_x_size
- global object_y_size
-
- global input_type
- global fake_edge_color
-
- set fill_color $object_fill_color
- set outline_color $object_outline
- set node_type "node"
-
- if [regexp "Custom_Node" $current_gene_ID] {
- set fill_color white
- set outline_color red
- set node_type "removable"
- }
- .phylo.canvas create $object_shape [expr $x-$object_x_size] [expr $y-$object_y_size] \
- [expr $x+$object_x_size] [expr $y+$object_y_size] -fill $fill_color \
- -outline $outline_color -tag $abc_tag$current_gene_ID
-
- .phylo.canvas addtag $node_type withtag $abc_tag$current_gene_ID
-
- set nodeX($abc_tag$current_gene_ID) $x
- set nodeY($abc_tag$current_gene_ID) $y
-
- set edgeFirst($abc_tag$current_gene_ID) {}
- set edgeSecond($abc_tag$current_gene_ID) {}
-
- .phylo.canvas bind $abc_tag$current_gene_ID <Button-1> {
- set curX %x
- set curY %y
- }
- .phylo.canvas bind $abc_tag$current_gene_ID <B1-Motion> {
- moveNode [.phylo.canvas find withtag current] [expr %x-$curX] [expr %y-$curY]
- set curX %x
- set curY %y
- }
- bind .geneid.entry <Return> {
- Shake_the_Node $abc_tag$current_gene_ID
- showName $current_gene_ID .geneid.entry
- }
- # ON WINDOWS CHANGE TO <Double-1> #
- .phylo.canvas bind $abc_tag$current_gene_ID <Double-1> {
- # .phylo.canvas bind $abc_tag$current_gene_ID <Button-2>
- set curX [.phylo.canvas canvasx %x]
- set curX [expr int(round($curX))]
- set curY [.phylo.canvas canvasy %y]
- set curY [expr int(round($curY))]
- Print_Gene_ID $current_gene_ID $curX $curY
- }
- #################
- bind .phylo.canvas <Control-a> {
- .phylo.canvas find withtag $abc_tag$current_gene_ID
- set sw_node_A $current_gene_ID
- }
- bind .phylo.canvas <Control-s> {
- .phylo.canvas find withtag $abc_tag$current_gene_ID
- set sw_node_B $current_gene_ID
- }
- #################
- bind .phylo.canvas w {
- .phylo.canvas find withtag $abc_tag$current_gene_ID
- .phylo.canvas itemconfigure $abc_tag$current_gene_ID -fill white
- }
- bind .phylo.canvas b {
- .phylo.canvas find withtag $abc_tag$current_gene_ID
- .phylo.canvas itemconfigure $abc_tag$current_gene_ID -fill blue
- }
- bind .phylo.canvas c {
- .phylo.canvas find withtag $abc_tag$current_gene_ID
- .phylo.canvas itemconfigure $abc_tag$current_gene_ID -fill cyan
- }
- bind .phylo.canvas s {
- .phylo.canvas find withtag $abc_tag$current_gene_ID
- .phylo.canvas itemconfigure $abc_tag$current_gene_ID -fill blue4
- }
- bind .phylo.canvas g {
- .phylo.canvas find withtag $abc_tag$current_gene_ID
- .phylo.canvas itemconfigure $abc_tag$current_gene_ID -fill green
- }
- bind .phylo.canvas o {
- .phylo.canvas find withtag $abc_tag$current_gene_ID
- .phylo.canvas itemconfigure $abc_tag$current_gene_ID -fill orange
- }
- bind .phylo.canvas r {
- .phylo.canvas find withtag $abc_tag$current_gene_ID
- .phylo.canvas itemconfigure $abc_tag$current_gene_ID -fill red
- }
- bind .phylo.canvas v {
- .phylo.canvas find withtag $abc_tag$current_gene_ID
- .phylo.canvas itemconfigure $abc_tag$current_gene_ID -fill violet
- }
- bind .phylo.canvas p {
- .phylo.canvas find withtag $abc_tag$current_gene_ID
- .phylo.canvas itemconfigure $abc_tag$current_gene_ID -fill purple
- }
- bind .phylo.canvas y {
- .phylo.canvas find withtag $abc_tag$current_gene_ID
- .phylo.canvas itemconfigure $abc_tag$current_gene_ID -fill yellow
- }
- if { $node_type == "removable" && $input_type == "MANUAL" } {
- bind .phylo.canvas 1 {
- set firstNode $current_gene_ID
- set tag_list [.phylo.canvas gettags $firstNode]
- set removable_tag [lindex $tag_list 1]
- puts $removable_tag
- set current_gene_ID_A $current_gene_ID
- .phylo.canvas itemconfigure $abc_tag$current_gene_ID_A -fill purple
- }
- }
- if { $node_type == "removable" && $input_type == "MANUAL" } {
- bind .phylo.canvas 2 {
- set curNode [.phylo.canvas find withtag $abc_tag$current_gene_ID]
- set tag_list [.phylo.canvas gettags $curNode]
- set removable_tag [lindex $tag_list 1]
- puts $removable_tag
- set curNode $current_gene_ID
- set current_gene_ID_B $current_gene_ID
- set fill_color $fake_edge_color
- set line_thickness 2
- set fake_identity "fake_identity"
- set fake_identity_value "0"
- if { ($firstNode != "") && ($curNode != "") } {
- mkEdge $firstNode $curNode $fill_color $line_thickness $current_gene_ID_A $current_gene_ID_B \
- $fake_identity\_$fake_identity_counter $fake_identity_value
- .phylo.canvas itemconfigure $abc_tag$current_gene_ID_B -fill purple
- incr fake_identity_counter
- }
- }
- }
- .phylo.canvas bind $abc_tag$current_gene_ID <Enter> "showName $current_gene_ID .geneid.entry"
- .phylo.canvas bind $abc_tag$current_gene_ID <Leave> "clearName .geneid.entry .geneid.degree_entry"
- .phylo.canvas bind $abc_tag$current_gene_ID <Button-3> {
- set curX %x
- set curY %y
- Shake_the_Node $abc_tag$current_gene_ID
- }
-}
-
-proc mkEdge {first second fill_color line_thickness current_gene_ID_A current_gene_ID_B edge_tag current_gene_similarity} {
-
- global abc_tag
- global nodeX
- global nodeY
- global edgeFirst
- global edgeSecond
- global edgeCounter
-
- set edge_type "real_edge"
- if { $current_gene_similarity == 0 } {
- set edge_type "removable"
- }
-
- set current_gene_similarity [expr int(round($current_gene_similarity*100))]
- set edge [.phylo.canvas create line $nodeX($abc_tag$first) $nodeY($abc_tag$first) \
- $nodeX($abc_tag$second) $nodeY($abc_tag$second) -fill $fill_color -width $line_thickness \
- -tags "$edge_tag\_$current_gene_similarity $edge_type"]
-
- .phylo.canvas lower $edge
-
- .phylo.canvas bind $edge_tag\_$current_gene_similarity <Enter> \
- "HighLightEdge .phylo.canvas $edge_tag\_$current_gene_similarity $current_gene_similarity"
- ###########################
- .phylo.canvas bind $edge_tag\_$current_gene_similarity <Leave> \
- "HighLightEdge_Back .phylo.canvas $edge_tag\_$current_gene_similarity $fill_color"
- ###########################
- # ON WINDOWS CHANGE TO <Double-1> #
- .phylo.canvas bind $edge_tag\_$current_gene_similarity <Double-1> "Print_Edge_Weight $current_gene_similarity"
- # .phylo.canvas bind $edge_tag\_$current_gene_similarity <Button-2> "Print_Edge_Weight $current_gene_similarity"
- ###########################
- lappend edgeFirst($abc_tag$first) $edge
- lappend edgeSecond($abc_tag$second) $edge
- update
- .phylo.canvas lower dummy_ps_background
- incr edgeCounter
-}
-
-proc moveNode_Slow {node xDist yDist} {
-
- global abc_tag
- global nodeX
- global nodeY
- global edgeFirst
- global edgeSecond
-
- global tcl_precision
-
- if {$node != "" && $node != $abc_tag} {
- .phylo.canvas move $node $xDist $yDist
- incr nodeX($node) $xDist
- incr nodeY($node) $yDist
- set edge_counter 0
- foreach edge $edgeFirst($node) {
- .phylo.canvas coords $edge $nodeX($node) $nodeY($node) \
- [lindex [.phylo.canvas coords $edge] 2] \
- [lindex [.phylo.canvas coords $edge] 3]
- incr edge_counter
- }
- foreach edge $edgeSecond($node) {
- .phylo.canvas coords $edge [lindex [.phylo.canvas coords $edge] 0] \
- [lindex [.phylo.canvas coords $edge] 1] \
- $nodeX($node) $nodeY($node)
- incr edge_counter
- }
- showDegree $edge_counter .geneid.degree_entry
- }
-}
-
-proc moveNode {node xDist yDist} {
-
- global nodeX
- global nodeY
- global edgeFirst
- global edgeSecond
-
- global tcl_precision
-
- .phylo.canvas raise $node
-
- set tag_list [.phylo.canvas gettags $node]
- set id_tag [lindex $tag_list 0]
- # puts $id_tag
- set node $id_tag
-
- .phylo.canvas move $node $xDist $yDist
- if {[info exists nodeX($node)] == 1 && [info exists nodeY($node)] == 1} {
- incr nodeX($node) $xDist
- incr nodeY($node) $yDist
- foreach edge $edgeFirst($node) {
- .phylo.canvas coords $edge $nodeX($node) $nodeY($node) \
- [lindex [.phylo.canvas coords $edge] 2] \
- [lindex [.phylo.canvas coords $edge] 3]
- }
- foreach edge $edgeSecond($node) {
- .phylo.canvas coords $edge [lindex [.phylo.canvas coords $edge] 0] \
- [lindex [.phylo.canvas coords $edge] 1] \
- $nodeX($node) $nodeY($node)
- }
- }
-}
-
-proc Plot_Genes_on_Canvas { genes_range graph_radius } {
-
- global nodes_array
- global edges_array
- global list_of_nodes
- global list_of_edges
- global object_x_size
- global object_y_size
- global error_status
- global tcl_precision
-
- puts "Tcl precision: $tcl_precision"
-
- set tick 1
- set radians_per_degree [expr 3.1416/180]
- # set radians_per_degree [expr 3.141593/180]
-
- if {[info exists list_of_nodes] != 1 || [info exists list_of_edges] != 1} {
- puts "Load Data into Memory first, then click \"Run\" again"
- .phylo.canvas create text 100 100 -text "Load Data into Memory first, then click \"Run\" again" -anchor sw -fill white
- update
- bell
- set error_status 1
- }
-
- if {[info exists list_of_nodes] == 1 && [info exists list_of_edges] == 1} {
- foreach current_node $list_of_nodes {
- set angle [expr $tick*(360.0001/$genes_range)]
- # set angle [expr $tick*(360.000001/$genes_range)]
- set current_gene_ID $current_node
- set pointX($tick) [expr int(round($graph_radius*sin($angle*$radians_per_degree))) \
- + $graph_radius + 35 + $object_x_size]
- set pointY($tick) [expr int(round($graph_radius*cos($angle*$radians_per_degree))) \
- + $graph_radius + 35 + $object_y_size]
-
- set dot_pointX($tick) [expr $pointX($tick) + 2]
- set dot_pointY($tick) [expr $pointY($tick) + 2]
-
- mkNode $dot_pointX($tick) $dot_pointY($tick) $current_gene_ID
- update
- incr tick
- }
- }
-}
-
-proc Create_Graph_from_Data_MEMORY {} {
-
- ##### COMMENT ON WINDOWS CURSOR CONFIG #####
- # . config -cursor {watch white black}
-
- global genes_id_data_file
- global matrix_data_file
- global genes_range
- global nodes_array
- global edges_array
- global list_of_nodes
- global list_of_edges
-
- set genes_range 0
- if {[info exists list_of_nodes] == 1} {
- unset list_of_nodes
- }
-
- set input_file_to_open_nodes [open "$genes_id_data_file" "r"]
- set input_file_to_open_edges [open "$matrix_data_file" "r"]
-
- while {[gets $input_file_to_open_nodes current_line] >= 0} {
-
- set current_seq_ID [lindex [split $current_line] 0]
- puts "$current_seq_ID"
- if {$genes_range == 0} {
- set list_of_nodes [lappend list_of_nodes $current_seq_ID]
- set nodes_array($current_seq_ID) $current_seq_ID
- incr genes_range
- } else {
- set already_done [lsearch -exact $list_of_nodes $current_seq_ID]
- if {$already_done < 0 && $current_seq_ID != ""} {
- set list_of_nodes [lappend list_of_nodes $current_seq_ID]
- set nodes_array($current_seq_ID) $current_seq_ID
- incr genes_range
- }
- if {$already_done >= 0 && $current_seq_ID != ""} {
- puts "WARNING: $current_seq_ID duplicated"
- bell
- after 1500
- }
- }
- update
- }
- close $input_file_to_open_nodes
- puts "Total Number of Nodes: $genes_range"
- puts "Processing Matrix File"
- after 100
-
- set matrix_counter 0
-
- if {[info exists list_of_edges] == 1} {
- unset list_of_edges
- }
-
- while {[gets $input_file_to_open_edges current_line] >= 0} {
-
- set id_A [lindex $current_line 0]
- set id_B [lindex $current_line 1]
- set idnt [lindex $current_line 2]
-
- set query1 [info exists matrix_array($id_A,$id_B)]
- # puts $query1
- set query2 [info exists matrix_array($id_B,$id_A)]
- # puts $query2
- if {$query1 == 0 && $query2 == 0} {
- set matrix_array($id_A,$id_B) "$id_A\t$id_B\t$idnt"
- set list_of_edges [lappend list_of_edges $matrix_array($id_A,$id_B)]
- incr matrix_counter
- puts $matrix_counter
- } else {
- puts "WARNING: $current_line duplicated"
- bell
- after 1500
- }
- }
- close $input_file_to_open_edges
- bell
- # puts $list_of_edges
-
- ##### COMMENT ON WINDOWS CURSOR CONFIG #####
- # . config -cursor {top_left_arrow black white}
-}
-
-proc Create_Graph_from_Data_CANVAS {} {
-
- # puts "I am here ... "
-
- global main_cursor_color
-
- ##### COMMENT ON WINDOWS CURSOR CONFIG #####
- # .phylo.canvas config -cursor {watch white}
-
- global abc_tag
- global tcl_precision
- global genes_range
- global nodes_array
- global edges_array
- global list_of_nodes
- global list_of_edges
- global edgeCounter
- global level_of_similarity_1
- global level_of_similarity_2
- global level_of_similarity_3
- global level_of_similarity_4
- global level_of_similarity_5
- global level_of_similarity_6
- global color_of_similarity_1
- global color_of_similarity_2
- global color_of_similarity_3
- global color_of_similarity_4
- global color_of_similarity_5
- global color_of_similarity_6
- global thickness_of_similarity_1
- global thickness_of_similarity_2
- global thickness_of_similarity_3
- global thickness_of_similarity_4
- global thickness_of_similarity_5
- global thickness_of_similarity_6
-
- global object_fill_color_connect
- global object_outline_connect
- global edge_label_counter
-
- set edge_label_counter 0
-
- foreach current_edge $list_of_edges {
-
- set current_edge [split $current_edge]
- set current_gene_ID_A [lindex $current_edge 0]
- set current_gene_ID_B [lindex $current_edge 1]
- set current_gene_similarity [lindex $current_edge 2]
- # puts "$current_gene_ID_A\t$current_gene_ID_B\t$current_gene_similarity"
-
- set fill_color white
-
- if {$current_gene_similarity >= $level_of_similarity_1} {
- set fill_color $color_of_similarity_1
- set line_thickness $thickness_of_similarity_1
- }
- if {$current_gene_similarity >= $level_of_similarity_2 && $current_gene_similarity < $level_of_similarity_1} {
- set fill_color $color_of_similarity_2
- set line_thickness $thickness_of_similarity_2
- }
- if {$current_gene_similarity >= $level_of_similarity_3 && $current_gene_similarity < $level_of_similarity_2} {
- set fill_color $color_of_similarity_3
- set line_thickness $thickness_of_similarity_3
- }
- if {$current_gene_similarity >= $level_of_similarity_4 && $current_gene_similarity < $level_of_similarity_3} {
- set fill_color $color_of_similarity_4
- set line_thickness $thickness_of_similarity_4
- }
- if {$current_gene_similarity >= $level_of_similarity_5 && $current_gene_similarity < $level_of_similarity_4} {
- set fill_color $color_of_similarity_5
- set line_thickness $thickness_of_similarity_5
- }
- if {$current_gene_similarity >= $level_of_similarity_6 && $current_gene_similarity < $level_of_similarity_5} {
- set fill_color $color_of_similarity_6
- set line_thickness $thickness_of_similarity_6
- }
- if {$current_gene_similarity >= $level_of_similarity_6} {
-
- set firstNode $current_gene_ID_A
- set curNode $current_gene_ID_B
-
- if {($firstNode != "") && ($curNode != "")} {
- set edge_tag "$edgeCounter"
- mkEdge $firstNode $curNode $fill_color $line_thickness \
- $current_gene_ID_A $current_gene_ID_B \
- $edge_tag $current_gene_similarity
- .phylo.canvas itemconfigure $abc_tag$curNode -fill $object_fill_color_connect \
- -outline $object_outline_connect
- .phylo.canvas itemconfigure $abc_tag$firstNode -fill $object_fill_color_connect \
- -outline $object_outline_connect
- unset current_gene_ID_B
- }
- }
- }
- bell
- ##### COMMENT ON WINDOWS CURSOR CONFIG #####
- # .phylo.canvas config -cursor "tcross $main_cursor_color"
-}
-
-proc showWeight {current_edge_weight layer3} {
- set is_it_there [winfo exists .geneid]
- if {$is_it_there == "0"} {
- Gene_ID_Window
- }
- $layer3 delete 0 end
- $layer3 insert end $current_edge_weight
-}
-
-proc showName {current_gene_ID layer1} {
-
- global current_adjacent_node
- global main_cursor_color
-
- set is_it_there [winfo exists .geneid]
- if {$is_it_there == "0"} {
- Gene_ID_Window
- }
- set adj_there [winfo exists .adjacency_list]
- if {$adj_there == 1} {
- set current_adjacent_node $current_gene_ID
- }
- ##### COMMENT ON WINDOWS CURSOR CONFIG #####
- # .phylo.canvas config -cursor "plus $main_cursor_color"
- $layer1 delete 0 end
- $layer1 insert end $current_gene_ID
-}
-
-proc highLightGene { w tn } {
-
- global abc_tag
- global adj_highlight_color
- global adj_highlight_outline
-
- set old_node_colour [lindex [$w itemconfig $abc_tag$tn -fill] 4]
- set old_node_fill [lindex [$w itemconfig $abc_tag$tn -outline] 4]
- $w itemconfigure $abc_tag$tn -fill "$adj_highlight_color" -outline "$adj_highlight_outline"
-}
-
-proc highLightGene_Back { w tn old_node_colour old_node_fill } {
-
- global abc_tag
-
- $w itemconfigure $abc_tag$tn -fill $old_node_colour -outline $old_node_fill
-}
-
-proc HighLightEdge { w current current_gene_similarity} {
-
- ##### COMMENT ON WINDOWS CURSOR CONFIG #####
- # $w config -cursor {cross cyan}
- $w itemconfigure $current -fill "red"
- Global_XY_Coords $current
- showWeight $current_gene_similarity .geneid.weight_entry
-
-}
-
-proc Global_XY_Coords {current} {
-
- global sim_curX
- global sim_curY
-
- .phylo.canvas bind $current <Motion> {
- set sim_curX [.phylo.canvas canvasx %x]
- set sim_curX [expr int(round($sim_curX))]
- set sim_curY [.phylo.canvas canvasy %y]
- set sim_curY [expr int(round($sim_curY))]
- }
-}
-
-proc HighLightEdge_Back { w current fill_color} {
-
- global main_cursor_color
-
- ##### COMMENT ON WINDOWS CURSOR CONFIG #####
- # $w config -cursor "tcross $main_cursor_color"
-
- clearWeight .geneid.weight_entry
- $w itemconfigure $current -fill $fill_color
-}
-
-proc clearName { layer1 layer2 } {
-
- global main_cursor_color
-
- ##### COMMENT ON WINDOWS CURSOR CONFIG #####
- # .phylo.canvas config -cursor "tcross $main_cursor_color"
- $layer1 delete 0 end
- $layer2 delete 0 end
-}
-
-proc clearWeight { layer3 } {
-
- $layer3 delete 0 end
-}
-
-proc showDegree {edge_counter layer2} {
-
- global main_cursor_color
-
- set is_it_there [winfo exists .geneid]
- if {$is_it_there == "0"} {
- Gene_ID_Window
- }
- ##### COMMENT ON WINDOWS CURSOR CONFIG #####
- # .phylo.canvas config -cursor "plus $main_cursor_color"
- $layer2 delete 0 end
- $layer2 insert end $edge_counter
-}
-
-proc Dots_Coord_Generator {} {
-
- global list_of_nodes
- global dots_coord_file
-
- set nodes_coord_open [open $dots_coord_file "w"]
-
- foreach current_gene_ID $list_of_nodes {
- set the_Node $current_gene_ID
- if {$the_Node == ""} {
- continue
- }
- make_Nodes_Coords $the_Node $nodes_coord_open $current_gene_ID
- }
- close $nodes_coord_open
- bell
-}
-
-proc make_Nodes_Coords {the_Node nodes_coord_open current_gene_ID} {
-
- global abc_tag
- global nodeX
- global nodeY
-
- puts -nonewline $nodes_coord_open $current_gene_ID\t$nodeX($abc_tag$the_Node)\t$nodeY($abc_tag$the_Node)\n
-}
-
-proc Nodes_Coord_Dialog {} {
-
- destroy .node_xy
- toplevel .node_xy
-
- wm title .node_xy "Node Coordinates"
- wm protocol .node_xy WM_DELETE_WINDOW "destroy .node_xy"
- wm minsize .node_xy 360 150
-
- global dots_coord_file
- global dots_coord_file_restore
- global restore_speed
-
- #####
- label .node_xy.f_to_save_label -text "Save Coords to:" -width 14 -bg gray
- place .node_xy.f_to_save_label -x 20 -y 20
-
- entry .node_xy.f_to_save_entry -relief sunken \
- -textvariable dots_coord_file -bg lightyellow -width 17
- place .node_xy.f_to_save_entry -x 130 -y 20
-
- button .node_xy.save -text "Save" -bg yellow3 \
- -width 6 -command {Dots_Coord_Generator}
- place .node_xy.save -x 270 -y 18
- #####
- label .node_xy.f_restore_label -text "Restore Coords:" -width 14 -bg gray
- place .node_xy.f_restore_label -x 20 -y 55
-
- entry .node_xy.f_restore_entry -relief sunken \
- -textvariable dots_coord_file_restore -bg lightyellow -width 17
- place .node_xy.f_restore_entry -x 130 -y 55
-
- label .node_xy.sp_restore_label -text "Restore Speed:" -width 14 -bg gray
- place .node_xy.sp_restore_label -x 20 -y 90
-
- radiobutton .node_xy.sp_restore_F -relief sunken -variable restore_speed \
- -text " FAST " -value "FAST"
- radiobutton .node_xy.sp_restore_S -relief sunken -variable restore_speed \
- -text " SLOW " -value "SLOW"
- place .node_xy.sp_restore_F -x 130 -y 90
- place .node_xy.sp_restore_S -x 130 -y 120
-
- button .node_xy.restore -text "Restore" -bg yellow3 \
- -width 6 -command {Dots_Coord_Restore}
- place .node_xy.restore -x 270 -y 58
- #####
- button .node_xy.howto -text "HowTo" -bg gray -command {How_To_Save}
- place .node_xy.howto -x 40 -y 150
-
- button .node_xy.dismiss -text "Dismiss" -bg gray -command {destroy .node_xy}
- place .node_xy.dismiss -x 250 -y 150
-}
-
-proc How_To_Save {} {
-
- destroy .how_to_save
- toplevel .how_to_save
- wm title .how_to_save "HowTo Save and Restore"
- wm protocol .how_to_save WM_DELETE_WINDOW "destroy .how_to_save"
-
- label .how_to_save.text -text "
-You may save coordinates of nodes for current
-project and restore those coordinates when
-you re-run new project with the same node's
-ID set.
-WARNING! Only coordinates and node IDs are
-saved. Labels or other graphics added
-on canvas by hand are not saved in
-\"phylo_coords.txt\" file.
-"
- button .how_to_save.dismiss -text "Dismiss" \
- -command "destroy .how_to_save" -bg gray -width 8
-
- pack .how_to_save.text -padx 7 -pady 7
- pack .how_to_save.dismiss -padx 3 -pady 3
-}
-
-proc Dots_Coord_Restore {} {
-
- global abc_tag
- global nodeX
- global nodeY
- global dots_coord_file_restore
- global restore_speed
-
- set f_open_restore [open $dots_coord_file_restore "r"]
-
- while {[gets $f_open_restore current_line_coord] >= 0 } {
- set current_gene_ID [lindex [split $current_line_coord] 0]
- set coordinates_x [lindex [split $current_line_coord] 1]
- set coordinates_y [lindex [split $current_line_coord] 2]
- set the_Node $abc_tag$current_gene_ID
- if {$the_Node == ""} {
- continue
- }
- set move_me_X [expr $coordinates_x - $nodeX($the_Node)]
- set move_me_Y [expr $coordinates_y - $nodeY($the_Node)]
- if {$move_me_X == 0 && $move_me_Y == 0} {
- continue
- }
- if { $restore_speed == "SLOW" } {
- if {$move_me_X > 0} {
- while {$move_me_X > 0} {
- moveNode $the_Node 1 0
- incr move_me_X -1
- update
- }
- }
- if {$move_me_X < 0} {
- while {$move_me_X < 0} {
- moveNode $the_Node -1 0
- incr move_me_X 1
- update
- }
- }
- if {$move_me_Y > 0} {
- while {$move_me_Y > 0} {
- moveNode $the_Node 0 1
- incr move_me_Y -1
- update
- }
- }
- if {$move_me_Y < 0} {
- while {$move_me_Y < 0} {
- moveNode $the_Node 0 -1
- incr move_me_Y 1
- update
- }
- }
- } else {
- moveNode $the_Node $move_me_X $move_me_Y
- update
- }
- }
- close $f_open_restore
- bell
-}
-
-proc HTML_Image_Map_Generator {} {
-
- global abc_tag
- global html_image_map
- global list_of_nodes
-
- set html_image_map_open [open $html_image_map "w"]
-
- puts $html_image_map_open "<!doctype html public \"-//w3c//dtd html 4.0//en\">
-<html>
-<head>
-<title>
-Web Page Title
-</title>
-</head>
-<body text=\"#fffccc\" bgcolor=\"#000077\" \
-link=\"#ffffcc\" vlink=\"#ffff55\" alink=\"#ffffff\">
-<font face=\"Arial, Helvetica\">
-<center>
-<h2>
-<font color = \"#ffffff\">
-Web Page Title
-</font>
-</h2>
-</center>
-<p>
-<br>
-<center>
-Web Page Description
-</center>
-<br>
-<center>
-
-<!-- Created with PhyloGrapher -->
-
-<img src=\"phylographer_image_01.gif\" vspace=\"10\" hspace=\"10\" \
-align=\"middle\" usemap=\"#phylographer\">
-
-<map name=\"phylographer\">
-"
-
- foreach current_gene_ID $list_of_nodes {
- set xy_node_coords [.phylo.canvas coords $abc_tag$current_gene_ID]
- if {$xy_node_coords == ""} {
- continue
- }
- make_HTML $xy_node_coords $html_image_map_open $current_gene_ID
- }
-
- puts $html_image_map_open "
-</map>
-</center>
-<br>
-<br>
-Web Page Content Here
-<br>
-<br>
-</body>
-</html>
-"
- close $html_image_map_open
- bell
-}
-
-proc make_HTML {xy_node_coords html_image_map_open current_gene_ID} {
-
- global url_prefix
- global url_suffix
-
- puts -nonewline $html_image_map_open "<area title=\"$current_gene_ID\" "
- puts -nonewline $html_image_map_open "shape=\"RECT\" coords=\""
- puts -nonewline $html_image_map_open "$xy_node_coords\" "
- puts -nonewline $html_image_map_open "HREF=\"http\:\/\/$url_prefix\/"
- puts -nonewline $html_image_map_open "$current_gene_ID"
- puts -nonewline $html_image_map_open "$url_suffix"
- puts -nonewline $html_image_map_open "\" target=\"_blank\">\n"
-}
-
-proc Print_Gene_ID {current_gene_ID curX curY} {
-
- global node_color_label
- global canvas_editor_font_type
- global canvas_editor_font_size
- global canvas_editor_font_style
-
- set label_tag "label"
-
- .phylo.canvas create text [expr $curX+3] [expr $curY-3] -text $current_gene_ID \
- -font "$canvas_editor_font_type $canvas_editor_font_size $canvas_editor_font_style" \
- -anchor sw -fill $node_color_label -tags "$current_gene_ID\_$label_tag removable"
-
- .phylo.canvas bind $current_gene_ID\_$label_tag <Button-1> {
- set curX %x
- set curY %y
- }
- .phylo.canvas bind $current_gene_ID\_$label_tag <B1-Motion> {
- moveNode [.phylo.canvas find withtag current] [expr %x-$curX] [expr %y-$curY]
- set curX %x
- set curY %y
- }
-}
-
-proc Print_Edge_Weight {edge_tag} {
-
- global edge_color_label
- global canvas_editor_font_type
- global canvas_editor_font_size
- global canvas_editor_font_style
- global edge_label_counter
-
- global sim_curX
- global sim_curY
-
- set curX $sim_curX
- set curY $sim_curY
-
- set label_tag "label"
-
- global nodeX
- global nodeY
- global edgeFirst
- global edgeSecond
-
- .phylo.canvas create text [expr $curX+3] [expr $curY-3] -text "$edge_tag" \
- -font "$canvas_editor_font_type $canvas_editor_font_size $canvas_editor_font_style" \
- -anchor sw -fill $edge_color_label \
- -tag "$edge_tag\_$label_tag\_$edge_label_counter removable"
-
- .phylo.canvas bind $edge_tag\_$label_tag\_$edge_label_counter <Button-1> {
- set curX %x
- set curY %y
- }
- .phylo.canvas bind $edge_tag\_$label_tag\_$edge_label_counter <B1-Motion> {
- moveNode [.phylo.canvas find withtag current] [expr %x-$curX] [expr %y-$curY]
- set curX %x
- set curY %y
- }
- incr edge_label_counter
-}
-
-proc Gene_ID_Window {} {
-
- destroy .geneid
- toplevel .geneid
- .geneid config -bg black
- wm transient .geneid .phylo.canvas
- wm title .geneid "Graph Info"
- wm protocol .geneid WM_DELETE_WINDOW "destroy .geneid"
-
- label .geneid.label -text "Node ID: " -bg black -fg lightblue
- entry .geneid.entry -relief sunken -textvariable current_gene_ID \
- -bg blue4 -fg yellow -insertbackground lightyellow
- grid .geneid.label .geneid.entry
-
- label .geneid.degree_label -text "Degree: " -bg black -fg lightblue
- entry .geneid.degree_entry -relief sunken -textvariable current_gene_degree \
- -bg blue4 -fg yellow -insertbackground lightyellow
- grid .geneid.degree_label .geneid.degree_entry
-
- label .geneid.empty -text "" -bg black -fg lightblue
- grid .geneid.empty
-
- label .geneid.weight_label -text "Edge Weight: " -bg black -fg lightblue
- entry .geneid.weight_entry -relief sunken -textvariable current_edge_weight \
- -bg blue4 -fg yellow -insertbackground lightyellow
- grid .geneid.weight_label .geneid.weight_entry
-}
-
-proc Shake_the_Node {current_gene_ID} {
-
- set k 20
- set l 20
- set m 20
- set n 20
- set o 20
- set p 20
-
- set old_node_colour [lindex [.phylo.canvas itemconfig $current_gene_ID -fill] 4]
- set old_node_fill [lindex [.phylo.canvas itemconfig $current_gene_ID -outline] 4]
- .phylo.canvas itemconfigure $current_gene_ID -fill "red" -outline "yellow"
-
- while {$k >= 0} {
- moveNode_Slow $current_gene_ID 0 -1
- update
- incr k -1
- }
- while {$l >= 0} {
- moveNode_Slow $current_gene_ID 1 1
- update
- incr l -1
- }
- while {$m >= 0} {
- moveNode_Slow $current_gene_ID -1 1
- update
- incr m -1
- }
- while {$n >= 0} {
- moveNode_Slow $current_gene_ID -1 -1
- update
- incr n -1
- }
- while {$o >= 0} {
- moveNode_Slow $current_gene_ID 1 -1
- update
- incr o -1
- }
- while {$p >= 0} {
- moveNode_Slow $current_gene_ID 0 1
- update
- incr p -1
- }
- bell
- .phylo.canvas itemconfigure $current_gene_ID -fill $old_node_colour -outline $old_node_fill
- clearName .geneid.entry .geneid.degree_entry
-}
-
-proc Edge_Counter {} {
-
- global edges_data_file
-
- destroy .edge_counter_win
- toplevel .edge_counter_win
- wm title .edge_counter_win "Edge Counter"
- wm protocol .edge_counter_win WM_DELETE_WINDOW "destroy .edge_counter_win"
- wm minsize .edge_counter_win 300 200
-
- label .edge_counter_win.input_file_label -text "output file:" -bg gray -width 12
- place .edge_counter_win.input_file_label -x 20 -y 20
-
- entry .edge_counter_win.input_file_entry -relief sunken \
- -textvariable edges_data_file -bg lightyellow -width 20
- place .edge_counter_win.input_file_entry -x 115 -y 20
-
- button .edge_counter_win.howto -text "HowTo" -bg gray -width 8 -command {HowTo_Count_Edges}
- place .edge_counter_win.howto -x 60 -y 150
-
- button .edge_counter_win.dismiss -text "Dismiss" -bg gray -width 8 -command {destroy .edge_counter_win}
- place .edge_counter_win.dismiss -x 160 -y 150
-
- button .edge_counter_win.doit -text "Count Edges" -bg orange -width 12 -command {Edge_Degree_Counter}
- place .edge_counter_win.doit -x 140 -y 50
-
-}
-
-proc HowTo_Count_Edges {} {
-
- destroy .how_to_edges
- toplevel .how_to_edges
- wm title .how_to_edges "HowTo Count Edges"
- wm protocol .how_to_edges WM_DELETE_WINDOW "destroy .how_to_edges"
-
- label .how_to_edges.text -text "
-Each vertex may have some number of edges.
-Number of edges for given vertex is a
-vertex degree. To generate file with the
-list of vertex degree for all elements in
-your graph file just click \"Count Edges\".
-Program will examine the current canvas
-and generate a new file you specify.
-"
- button .how_to_edges.dismiss -text "Dismiss" \
- -command "destroy .how_to_edges" -bg gray -width 8
-
- pack .how_to_edges.text -padx 7 -pady 7
- pack .how_to_edges.dismiss -padx 3 -pady 3
-
-}
-
-proc Edge_Degree_Counter {} {
-
- global abc_tag
- global list_of_nodes
- global edges_data_file
-
- set edges_data_file_open [open $edges_data_file "w"]
-
- foreach current_gene_ID $list_of_nodes {
- set the_Node $current_gene_ID
- if {$the_Node == ""} {
- continue
- }
- Edge_Degree_Counter_Movie $abc_tag$the_Node $edges_data_file_open $current_gene_ID
- }
- close $edges_data_file_open
- bell
- after 100
- bell
-}
-
-proc Edge_Degree_Counter_Movie {the_Node edges_data_file_open current_gene_ID} {
-
- global abc_tag
-
- set k 0
- set l 0
- set m 0
- set n 0
- set o 0
- set p 0
-
- set old_node_colour [lindex [.phylo.canvas itemconfig $abc_tag$current_gene_ID -fill] 4]
- set old_node_fill [lindex [.phylo.canvas itemconfig $abc_tag$current_gene_ID -outline] 4]
- .phylo.canvas itemconfigure $abc_tag$current_gene_ID -fill "red" -outline "yellow"
-
- while {$k >= 0} {
- moveNode_Slow $the_Node 0 -1
- update
- incr k -1
- }
- while {$l >= 0} {
- moveNode_Slow $the_Node 1 1
- update
- incr l -1
- }
- while {$m >= 0} {
- moveNode_Slow $the_Node -1 1
- update
- incr m -1
- }
- while {$n >= 0} {
- moveNode_Slow $the_Node -1 -1
- update
- incr n -1
- }
- while {$o >= 0} {
- moveNode_Slow $the_Node 1 -1
- update
- incr o -1
- }
- while {$p >= 0} {
- moveNode_Slow_Edges $the_Node 0 1 $edges_data_file_open $current_gene_ID
- update
- incr p -1
- }
- .phylo.canvas itemconfigure $abc_tag$current_gene_ID -fill $old_node_colour -outline $old_node_fill
- clearName .geneid.entry .geneid.degree_entry
-}
-
-proc moveNode_Slow_Edges {node xDist yDist edges_data_file_open current_gene_ID} {
-
- global abc_tag
- global nodeX
- global nodeY
- global edgeFirst
- global edgeSecond
-
- global tcl_precision
-
- .phylo.canvas move $node $xDist $yDist
- incr nodeX($node) $xDist
- incr nodeY($node) $yDist
- set edge_counter 0
- foreach edge $edgeFirst($node) {
- .phylo.canvas coords $edge $nodeX($node) $nodeY($node) \
- [lindex [.phylo.canvas coords $edge] 2] \
- [lindex [.phylo.canvas coords $edge] 3]
- incr edge_counter
- }
- foreach edge $edgeSecond($node) {
- .phylo.canvas coords $edge [lindex [.phylo.canvas coords $edge] 0] \
- [lindex [.phylo.canvas coords $edge] 1] \
- $nodeX($node) $nodeY($node)
- incr edge_counter
- }
- showDegree $edge_counter .geneid.degree_entry
- puts $edges_data_file_open $current_gene_ID\t$edge_counter
-}
-
-proc Events_Binding {} {
-
- global list_of_nodes
- global custom_node_counter
- global edge_label_counter
- global genes_range
- global input_type
-
- if { $input_type == "MANUAL" } {
- set custom_node_counter 1
- set edge_label_counter 0
- bind .phylo.canvas <n> {
- set new_node "Custom_Node_$custom_node_counter"
- mkNode [expr int(round([.phylo.canvas canvasx %x]))] \
- [expr int(round([.phylo.canvas canvasy %y]))] $new_node
- set list_of_nodes [lappend list_of_nodes "Custom_Node_$custom_node_counter"]
- incr custom_node_counter
- incr genes_range
- }
- }
-
- bind .phylo.canvas <Control-d> {
- set curX %x
- set curY %y
- .phylo.canvas find withtag current
- set current_tags_list [.phylo.canvas gettags "current"]
- set delete_me_current [lindex $current_tags_list 1]
- set third_tag [lindex $current_tags_list 2]
- puts "$delete_me_current $third_tag"
- if { $delete_me_current == "removable" } {
- .phylo.canvas delete current
- }
- clearName .geneid.entry .geneid.degree_entry
- }
-}
-
-proc PhyloGrapher_Canvas {} {
-
- destroy .phylo .geneid
-
- global horizontal_size
- global vertical_size
- global canvas_background
- global font_color_canvas
- global genes_range
- global graph_radius
- global edgeCounter
- global object_x_size
- global object_y_size
- global error_status
- global input_type
-
- set error_status 0
-
- global main_cursor_color
-
- set edgeCounter 0
-
- set vertical_size $horizontal_size
- set graph_radius [expr $horizontal_size/2 - 45]
-
- set scrollmax_x [expr $horizontal_size + 15 + $object_x_size]
- set scrollmax_y [expr $vertical_size + 15 + $object_y_size]
-
- Scrolled_Canvas .phylo -width 700 -height 700 \
- -scrollregion "0 0 $scrollmax_x $scrollmax_y" -bg white ; # -bg $canvas_background
-
- Dummy_Color_Movie
-
- Gene_ID_Window
-
- Html_ScreenShot $horizontal_size $vertical_size
-
- puts "$input_type"
-
- if { $input_type == "MANUAL" } {
- set genes_range 0
- focus .phylo.canvas
- }
-
- if { $input_type == "DATA" } {
- Plot_Genes_on_Canvas $genes_range $graph_radius
- }
-
- if {$error_status == 0} {
-
- Events_Binding
-
- if { $input_type == "DATA" } {
- Create_Graph_from_Data_CANVAS
- }
-
- focus .phylo.canvas
-
- ##### COMMENT ON WINDOWS CURSOR CONFIG #####
- # .phylo.canvas config -cursor "tcross $main_cursor_color"
-
- .phylo.canvas create rect 0 0 $scrollmax_x $scrollmax_y \
- -fill $canvas_background -outline $canvas_background -tag dummy_ps_background
- .phylo.canvas lower dummy_ps_background
- }
-}
-
-proc Dummy_Color_Movie {} {
-
- global canvas_background
-
- .phylo.canvas create text 240 300 -fill black -text "PhyloGrapher" \
- -font "helvetica 32 bold" -anchor sw -tag phylo_banner
-
- set q 100
- while {$q >= 0} {
- .phylo.canvas configure -bg gray$q
- after 1
- incr q -1
- update
- }
- .phylo.canvas delete phylo_banner
- .phylo.canvas configure -bg $canvas_background
-}
-
-proc Html_ScreenShot { horizontal_size vertical_size } {
-
- global object_x_size
- global object_y_size
-
- .phylo.canvas create line 0 0 [expr $horizontal_size + $object_x_size + 5] 0 -fill gray50
- .phylo.canvas create line 0 0 0 [expr $vertical_size + $object_y_size] -fill gray50
- .phylo.canvas create line [expr $horizontal_size + $object_x_size + 5] 0 \
- [expr $horizontal_size + $object_x_size + 5]\
- [expr $vertical_size + $object_y_size] -fill gray50
- .phylo.canvas create line 0 [expr $vertical_size + $object_y_size] \
- [expr $horizontal_size + $object_x_size +5]\
- [expr $vertical_size + $object_y_size] -fill gray50
-}
-
-proc Show_Extras {} {
-
- destroy .extras_win
- toplevel .extras_win
- wm title .extras_win "Extras"
- wm protocol .extras_win WM_DELETE_WINDOW "destroy .extras_win"
- wm minsize .extras_win 330 200
- .extras_win config -bg black
-
- button .extras_win.canvas_ed -text "Canvas\nEditor" -command {Canvas_Editor} \
- -bg blue4 -fg lightblue -width 9 -height 2
- place .extras_win.canvas_ed -x 20 -y 20
-
- button .extras_win.node_ed -text "Node\nPainter" -command {Node_Painter} \
- -bg blue4 -fg lightblue -width 9 -height 2
- place .extras_win.node_ed -x 120 -y 20
-
- button .extras_win.node_coord -text "Node\nCoords" -command {Nodes_Coord_Dialog} \
- -bg blue4 -fg lightblue -width 9 -height 2
- place .extras_win.node_coord -x 220 -y 20
-
- button .extras_win.edges -text "Edge\nCounter" -command {Edge_Counter} \
- -bg blue4 -fg lightblue -width 9 -height 2
- place .extras_win.edges -x 20 -y 70
-
- button .extras_win.ssearch -text "Smith\nWaterman" -command {Smith_Waterman} \
- -bg blue4 -fg lightblue -width 9 -height 2
- place .extras_win.ssearch -x 120 -y 70
-
- button .extras_win.fruchterman -text "Fruchterman\nRheingold" -command {Fruchterman_Rheingold} \
- -bg blue4 -fg lightblue -width 9 -height 2
- place .extras_win.fruchterman -x 220 -y 70
-
- button .extras_win.adj_list -text "Adjacency\nList" -command {Adjacency_List} \
- -bg blue4 -fg lightblue -width 9 -height 2
- place .extras_win.adj_list -x 20 -y 120
-
- button .extras_win.dismiss -text "Dismiss" -command {destroy .extras_win} \
- -bg gray30 -fg gray75 -width 9 -height 2
- place .extras_win.dismiss -x 220 -y 140
-
-}
-
-proc Adjacency_List {} {
- destroy .adjacency_list
- toplevel .adjacency_list
- wm title .adjacency_list "Adjacency List"
- wm protocol .adjacency_list WM_DELETE_WINDOW "destroy .adjacency_list"
- wm minsize .adjacency_list 460 270
- .adjacency_list config -bg black
-
- global current_adjacent_node
- global adjacency_data_file
- global adj_highlight_color
- global adj_highlight_outline
-
- set adjacency_data_file "adjacency_data.txt"
- set adj_highlight_color "green3"
- set adj_highlight_outline "yellow"
-
- label .adjacency_list.node_label -width 7 -text "Node:" -fg blue4
- place .adjacency_list.node_label -x 10 -y 10
-
- entry .adjacency_list.node_entry -width 15 -bg lightyellow -textvariable current_adjacent_node
- place .adjacency_list.node_entry -x 70 -y 10
-
- label .adjacency_list.fill_label -width 7 -text "fill:"
- place .adjacency_list.fill_label -x 10 -y 40
-
- entry .adjacency_list.highlight_colour -width 15 -bg lightyellow -textvariable adj_highlight_color
- place .adjacency_list.highlight_colour -x 70 -y 40
-
- label .adjacency_list.outline_label -width 7 -text "outline:"
- place .adjacency_list.outline_label -x 10 -y 70
-
- entry .adjacency_list.highlight_outline -width 15 -bg lightyellow -textvariable adj_highlight_outline
- place .adjacency_list.highlight_outline -x 70 -y 70
-
- button .adjacency_list.show -text "Highlight\nAdjacent Nodes" -bg orange \
- -command {HighLight_Adjacent_Nodes}
- place .adjacency_list.show -x 30 -y 100
-
- button .adjacency_list.show_all -text "Highlight All\nNodes in Group" -bg orange \
- -command {HighLight_Adjacent_Nodes_All}
- place .adjacency_list.show_all -x 30 -y 150
-
- label .adjacency_list.dsf -bg blue4 -fg yellow \
- -justify left -text \
-"By clicking on \"Highlight All Nodes in Group\"
-PhyloGrapher performs DFS algorithm for a
-given node and highlights all connected
-nodes in a group (connected graph)."
-
- place .adjacency_list.dsf -x 10 -y 200
-
- button .adjacency_list.build -text "Build Adjacency\nList" -bg lightblue \
- -command {Build_Adjacency_List}
- place .adjacency_list.build -x 300 -y 185
-
- button .adjacency_list.dismiss -text "Dismiss" -command {destroy .adjacency_list}
- place .adjacency_list.dismiss -x 330 -y 235
-
- label .adjacency_list.howto -bg blue4 -fg yellow \
- -justify left -text \
-" About Adjacency List:
-To analyze adjacent nodes you need to
-create adjacency list file first with
-info about adjacent nodes to any given
-node. As soon as the list is available,
-by pointing a mouse cursor over any node
-and clicking on \"Highlight Adjacent Nodes\"
-you can highlight adjacent nodes."
-
- place .adjacency_list.howto -x 200 -y 10
-
- entry .adjacency_list.data_file -width 32 -bg lightyellow -textvariable adjacency_data_file
- place .adjacency_list.data_file -x 200 -y 155
-}
-
-proc HighLight_Adjacent_Nodes {} {
-
- global adjacency_data_file
- global current_adjacent_node
- global adj_highlight_color
- global adj_highlight_outline
-
- set found_the_id "NO"
-
- set adjacency_data_file_open [open $adjacency_data_file "r"]
- while {[gets $adjacency_data_file_open current_line] >= 0 && $found_the_id == "NO"} {
- set current_first_id [lindex [split $current_line "|"] 0]
- if {$current_first_id == $current_adjacent_node} {
- set found_the_id "YES"
- # puts $found_the_id
- # puts $current_adjacent_node
- # puts $current_line
- set current_line_length [llength [split $current_line "|"]]
- set k 0
- while {$k <= $current_line_length} {
- set current_some_id [lindex [split $current_line "|"] $k]
- if {$current_some_id != ""} {
- # puts $current_some_id
- highLightGene .phylo.canvas $current_some_id
- update
- }
- incr k
- }
- # puts $current_line_length
- }
- }
- close $adjacency_data_file_open
- bell
-}
-
-proc HighLight_Adjacent_Nodes_All {} {
-
- global dummy_adjacency_counter
- global already_done_nodes
- global current_adjacent_node
-
- set already_done_nodes {}
- set already_done_nodes [lappend already_done_nodes $current_adjacent_node]
- set dummy_adjacency_counter 1
- HighLight_Adjacent_Nodes_All_Loop
- bell
-}
-
-proc HighLight_Adjacent_Nodes_All_Loop {} {
-
- global dummy_adjacency_counter
- global adjacency_data_file
- global current_adjacent_node
- global adj_highlight_color
- global adj_highlight_outline
- global already_done_nodes
-
- set found_the_id "NO"
-
- set adjacency_data_file_open [open $adjacency_data_file "r"]
- while {[gets $adjacency_data_file_open current_line] >= 0 && $found_the_id == "NO"} {
- set current_first_id [lindex [split $current_line "|"] 0]
- if {$current_first_id == $current_adjacent_node} {
- set found_the_id "YES"
- # puts $found_the_id
- # puts $current_adjacent_node
- # puts $current_line
- set current_line_length [llength [split $current_line "|"]]
- set k 0
- while {$k <= $current_line_length} {
- set current_some_id [lindex [split $current_line "|"] $k]
- set already_done_status [lsearch -exact $already_done_nodes $current_some_id]
- if {$already_done_status == -1} {
- set already_done_nodes [lappend already_done_nodes $current_some_id]
- }
- if {$current_some_id != ""} {
- # puts $current_some_id
- highLightGene .phylo.canvas $current_some_id
- update
- if {$already_done_status == -1} {
- set current_adjacent_node $current_some_id
- HighLight_Adjacent_Nodes_All_Loop
- puts "message from inner loop $dummy_adjacency_counter times"
- incr dummy_adjacency_counter
- }
- }
- incr k
- }
- # puts $current_line_length
- }
- }
- close $adjacency_data_file_open
-}
-
-proc Build_Adjacency_List {} {
-
- global level_of_similarity_6
- global adjacency_data_file
- global adjacency_data_file_open
-
- global list_of_nodes
-
- set adjacency_data_file_open [open $adjacency_data_file "w"]
-
- set k 1
- foreach current_id $list_of_nodes {
- puts -nonewline $adjacency_data_file_open $current_id\|
- puts $k
- .adjacency_list.build config -bg blue -fg lightblue -text "Processing...\n$k"
- Adj_List_Extraction $current_id
- puts -nonewline $adjacency_data_file_open \n
- incr k
- update
- }
- close $adjacency_data_file_open
- puts "Adjacency List Done!\n"
- .adjacency_list.build config -bg lightblue -fg black -text "Build Adjacency\nList"
- bell
-}
-
-proc Adj_List_Extraction {current_id} {
-
- global edges_array
- global list_of_edges
-
- global adjacency_data_file_open
- global level_of_similarity_6
-
- foreach current_matrix_line $list_of_edges {
- set current_matrix_line [split $current_matrix_line]
- set matrix_id_A [lindex $current_matrix_line 0]
- set matrix_id_B [lindex $current_matrix_line 1]
- set current_sim_value [lindex $current_matrix_line 2]
- if {$current_id == $matrix_id_A && $current_sim_value >= $level_of_similarity_6} {
- puts -nonewline $adjacency_data_file_open $matrix_id_B\|
- }
- if {$current_id == $matrix_id_B && $current_sim_value >= $level_of_similarity_6} {
- puts -nonewline $adjacency_data_file_open $matrix_id_A\|
- }
- if {$current_id != $matrix_id_A && $current_id != $matrix_id_B} {
- continue
- }
- }
-}
-
-proc Fruchterman_Rheingold {} {
-
- destroy .frucht_gold
- toplevel .frucht_gold
- wm title .frucht_gold "Fruchterman Rheingold"
- wm protocol .frucht_gold WM_DELETE_WINDOW "destroy .frucht_gold"
- wm minsize .frucht_gold 440 240
-
- global list_of_nodes
- global list_of_edges
-
- global attraction_random_step
- global frucht_gold_precision
- global frucht_gold_limit
- global edge_wight_coefficient
- global random_step_value
- global repulsion_distance
-
- set attraction_random_step 12
- set frucht_gold_precision 100
- set frucht_gold_limit 300
- set edge_wight_coefficient 1
- set random_step_value 12
- set repulsion_distance 24
-
- label .frucht_gold.attraction_random_step_label -text "attr step value:" -bg yellow3 -width 16
- place .frucht_gold.attraction_random_step_label -x 10 -y 10
-
- entry .frucht_gold.attraction_random_step_entry -relief sunken \
- -textvariable attraction_random_step -bg lightyellow -width 8
- place .frucht_gold.attraction_random_step_entry -x 135 -y 10
- #####
- label .frucht_gold.random_step_label -text "repl step value:" -bg yellow3 -width 16
- place .frucht_gold.random_step_label -x 10 -y 40
-
- entry .frucht_gold.random_step_entry -relief sunken \
- -textvariable random_step_value -bg lightyellow -width 8
- place .frucht_gold.random_step_entry -x 135 -y 40
- #####
- label .frucht_gold.rep_dist_label -text "repulsion dist:" -bg yellow3 -width 16
- place .frucht_gold.rep_dist_label -x 10 -y 70
-
- entry .frucht_gold.rep_dist_entry -relief sunken \
- -textvariable repulsion_distance -bg lightyellow -width 8
- place .frucht_gold.rep_dist_entry -x 135 -y 70
- #####
- label .frucht_gold.precision_label -text "node distance K:" -bg gray -width 16
- place .frucht_gold.precision_label -x 10 -y 100
-
- entry .frucht_gold.precision_entry -relief sunken \
- -textvariable frucht_gold_precision -bg lightblue -width 8
- place .frucht_gold.precision_entry -x 135 -y 100
- #####
- label .frucht_gold.edge_wight_coeff_label -text "edge weight K:" -bg gray -width 16
- place .frucht_gold.edge_wight_coeff_label -x 10 -y 130
-
- entry .frucht_gold.edge_wight_coeff_entry -relief sunken \
- -textvariable edge_wight_coefficient -bg lightblue -width 8
- place .frucht_gold.edge_wight_coeff_entry -x 135 -y 130
- #####
- label .frucht_gold.iterations_label -text "\# of iterations:" -bg yellow3 -width 16
- place .frucht_gold.iterations_label -x 10 -y 160
-
- entry .frucht_gold.iterations_entry -relief sunken \
- -textvariable frucht_gold_limit -bg gold -width 8
- place .frucht_gold.iterations_entry -x 135 -y 160
- #####
- button .frucht_gold.organize -text "Self Organize!" -bg orange \
- -command {Self_Organize}
- place .frucht_gold.organize -x 20 -y 200
-
- button .frucht_gold.dismiss -text "Dismiss" -command {destroy .frucht_gold}
- place .frucht_gold.dismiss -x 300 -y 200
- #####
- label .frucht_gold.the_rule_label -bg blue4 -fg yellow \
- -justify left -text \
-" Current Rule:
-
-\if dist AB >= K1 * (K2 - W^2)
-move the node on a distance
-of attraction step value,
-repeat $frucht_gold_limit times.
- where:
- dist AB: distance
- between nodes A and B
- K1: node distance K
- K2: edge weight K
- W: edge weight value"
-
- place .frucht_gold.the_rule_label -x 225 -y 10
-
-}
-
-proc Self_Organize {} {
-
- global abc_tag
- global list_of_nodes
- global list_of_edges
-
- global horizontal_size
- global nodeX
- global nodeY
- global attraction_random_step
- global frucht_gold_precision
- global frucht_gold_limit
- global edge_wight_coefficient
- global entropy_factor
- global level_of_similarity_6
- global genes_range
- global random_step_value
- global repulsion_distance
-
- ### RANDOMIZATION ###
- foreach the_Node $list_of_nodes {
- set coordinates_x [expr int(round(rand()*$horizontal_size))]
- set coordinates_y [expr int(round(rand()*$horizontal_size))]
- set move_me_X [expr $coordinates_x - $nodeX($abc_tag$the_Node)]
- set move_me_Y [expr $coordinates_y - $nodeY($abc_tag$the_Node)]
- moveNode $abc_tag$the_Node $move_me_X $move_me_Y
- update
- }
-
- set iron_wall [expr $horizontal_size - 10]
-
- ### LOOP ###
- while { $frucht_gold_limit >= 0 } {
-
- foreach current_line $list_of_edges {
- set current_seq_ID_A [lindex $current_line 0]
- set current_seq_ID_B [lindex $current_line 1]
- set current_identity [lindex $current_line 2]
- ################
-
- set old_node_colour_A [lindex [.phylo.canvas itemconfig $abc_tag$current_seq_ID_A -fill] 4]
- set old_node_fill_A [lindex [.phylo.canvas itemconfig $abc_tag$current_seq_ID_A -outline] 4]
- set old_node_colour_B [lindex [.phylo.canvas itemconfig $abc_tag$current_seq_ID_B -fill] 4]
- set old_node_fill_B [lindex [.phylo.canvas itemconfig $abc_tag$current_seq_ID_B -outline] 4]
- .phylo.canvas itemconfigure $abc_tag$current_seq_ID_A -fill "red" -outline "yellow"
- .phylo.canvas itemconfigure $abc_tag$current_seq_ID_B -fill "red" -outline "yellow"
- update
- ################
-
- ### NODE A ###
-
- set the_Node_A $abc_tag$current_seq_ID_A
-
- set the_Node_A_X1 [lindex [.phylo.canvas coords $the_Node_A] 0]
- set the_Node_A_Y1 [lindex [.phylo.canvas coords $the_Node_A] 1]
- set the_Node_A_X2 [lindex [.phylo.canvas coords $the_Node_A] 2]
- set the_Node_A_Y2 [lindex [.phylo.canvas coords $the_Node_A] 3]
- set the_Node_A_X [expr ($the_Node_A_X1 + $the_Node_A_X2)/2]
- set the_Node_A_Y [expr ($the_Node_A_Y1 + $the_Node_A_Y2)/2]
-
- # puts "$the_Node_A_X1 $the_Node_A_Y1 $the_Node_A_X2 $the_Node_A_Y2 $the_Node_A_X $the_Node_A_Y $the_Node_A NODE_A COORDS"
-
- if {$the_Node_A == ""} {
- continue
- }
- set the_Node_B $current_seq_ID_B
- if {$the_Node_B == ""} {
- continue
- }
- ############## PUSH ME OUT BEGIN ##############
-
- set dummy_switch_random [expr rand()]
-
- if {$dummy_switch_random >= 0.75 && $frucht_gold_limit > 0} {
- set dummy_switch "NO"
- } else {
- set dummy_switch "YES"
- }
-
- set push_them_out_A [.phylo.canvas find enclosed \
- [expr $the_Node_A_X - $repulsion_distance] [expr $the_Node_A_Y - $repulsion_distance] \
- [expr $the_Node_A_X + $repulsion_distance] [expr $the_Node_A_Y + $repulsion_distance] ]
-
- set push_them_out_A_length [llength [split $push_them_out_A]]
- # puts "$push_them_out_A $push_them_out_A_length"
-
- # puts "$dummy_switch DUMMY SWITCH"
-
- while {$push_them_out_A_length > 0 && $dummy_switch == "YES"} {
-
- set push_me_current [lindex [split $push_them_out_A] [expr $push_them_out_A_length -1 ]]
-
- # set push_me_current_ID $push_me_current
- set push_me_current_list [.phylo.canvas gettags $push_me_current]
- set push_me_current_ID [lindex $push_me_current_list 0]
- set second_tag [lindex $push_me_current_list 1]
-
- set push_me_X1 [lindex [.phylo.canvas coords $push_me_current_ID] 0]
- set push_me_Y1 [lindex [.phylo.canvas coords $push_me_current_ID] 1]
- set push_me_X2 [lindex [.phylo.canvas coords $push_me_current_ID] 2]
- set push_me_Y2 [lindex [.phylo.canvas coords $push_me_current_ID] 3]
- set push_me_X [expr ($push_me_X1 + $push_me_X2)/2]
- set push_me_Y [expr ($push_me_Y1 + $push_me_Y2)/2]
-
- # puts "$push_me_X1 $push_me_Y1 $push_me_X2 $push_me_Y2 $push_me_X $push_me_Y $push_me_current_ID PUSH COORDS"
-
- if { $push_me_current_ID != $the_Node_A && $second_tag == "node" } {
- # puts "$push_me_current PUSH ME OUT CURRENT"
- set x_distance_AC_first [expr abs([expr $the_Node_A_X - $push_me_X])]
- set y_distance_AC_first [expr abs([expr $the_Node_A_Y - $push_me_Y])]
- set distance_between_A_C_first [expr hypot($x_distance_AC_first,$y_distance_AC_first)]
-
- # puts "$x_distance_AC_first $y_distance_AC_first $distance_between_A_C_first"
- # puts "$distance_between_A_C_first $repulsion_distance REPULSION"
-
- while {[expr $distance_between_A_C_first] < $repulsion_distance} {
- set random_direction_X [expr rand()]
- if {$random_direction_X > 0.5} {
- set direction_X "$random_step_value"
- }
- if {$random_direction_X < 0.5} {
- set direction_X "-$random_step_value"
- }
- if {$random_direction_X == 0.5} {
- set direction_X "0"
- }
- set random_direction_Y [expr rand()]
- if {$random_direction_Y > 0.5} {
- set direction_Y "$random_step_value"
- }
- if {$random_direction_Y < 0.5} {
- set direction_Y "-$random_step_value"
- }
- if {$random_direction_Y == 0.5} {
- set direction_Y "0"
- }
-
- # puts "I am above"
-
- moveNode $push_me_current_ID $direction_X $direction_Y
-
- update
-
- # puts "$direction_X $direction_Y DIRECTION X Y"
-
- # puts "I am below"
-
- set the_Node_A_X1 [lindex [.phylo.canvas coords $the_Node_A] 0]
- set the_Node_A_Y1 [lindex [.phylo.canvas coords $the_Node_A] 1]
- set the_Node_A_X2 [lindex [.phylo.canvas coords $the_Node_A] 2]
- set the_Node_A_Y2 [lindex [.phylo.canvas coords $the_Node_A] 3]
- set the_Node_A_X [expr ($the_Node_A_X1 + $the_Node_A_X2)/2]
- set the_Node_A_Y [expr ($the_Node_A_Y1 + $the_Node_A_Y2)/2]
-
- set push_me_X1 [lindex [.phylo.canvas coords $push_me_current_ID] 0]
- set push_me_Y1 [lindex [.phylo.canvas coords $push_me_current_ID] 1]
- set push_me_X2 [lindex [.phylo.canvas coords $push_me_current_ID] 2]
- set push_me_Y2 [lindex [.phylo.canvas coords $push_me_current_ID] 3]
- set push_me_X [expr ($push_me_X1 + $push_me_X2)/2]
- set push_me_Y [expr ($push_me_Y1 + $push_me_Y2)/2]
-
- set x_distance_AC_first [expr abs([expr $the_Node_A_X - $push_me_X])]
- set y_distance_AC_first [expr abs([expr $the_Node_A_Y - $push_me_Y])]
- set distance_between_A_C_first [expr hypot($x_distance_AC_first,$y_distance_AC_first)]
-
- if { $the_Node_A_X <= 10 } {
- moveNode $the_Node_A 30 0
- update
- }
- if { $the_Node_A_Y <= 10 } {
- moveNode $the_Node_A 0 30
- update
- }
- if { $the_Node_A_X >= $iron_wall } {
- moveNode $the_Node_A -30 0
- update
- }
- if { $the_Node_A_Y >= $iron_wall} {
- moveNode $the_Node_A 0 -30
- update
- }
- }
- }
- incr push_them_out_A_length -1
- }
- ############## PUSH ME OUT END ##############
-
- # puts "I am out"
-
- set the_Node_A $abc_tag$current_seq_ID_A
- set the_Node_B $abc_tag$current_seq_ID_B
-
- set the_Node_A_X1 [lindex [.phylo.canvas coords $the_Node_A] 0]
- set the_Node_A_Y1 [lindex [.phylo.canvas coords $the_Node_A] 1]
- set the_Node_A_X2 [lindex [.phylo.canvas coords $the_Node_A] 2]
- set the_Node_A_Y2 [lindex [.phylo.canvas coords $the_Node_A] 3]
- set the_Node_A_X [expr ($the_Node_A_X1 + $the_Node_A_X2)/2]
- set the_Node_A_Y [expr ($the_Node_A_Y1 + $the_Node_A_Y2)/2]
-
- set the_Node_B_X1 [lindex [.phylo.canvas coords $the_Node_B] 0]
- set the_Node_B_Y1 [lindex [.phylo.canvas coords $the_Node_B] 1]
- set the_Node_B_X2 [lindex [.phylo.canvas coords $the_Node_B] 2]
- set the_Node_B_Y2 [lindex [.phylo.canvas coords $the_Node_B] 3]
- set the_Node_B_X [expr ($the_Node_A_X1 + $the_Node_B_X2)/2]
- set the_Node_B_Y [expr ($the_Node_A_Y1 + $the_Node_B_Y2)/2]
-
- set x_distance_AB_first [expr abs([expr $the_Node_A_X - $the_Node_B_X])]
- set y_distance_AB_first [expr abs([expr $the_Node_A_Y - $the_Node_B_Y])]
- set distance_between_A_B_first [expr hypot($x_distance_AB_first,$y_distance_AB_first)]
-
- if {[expr $distance_between_A_B_first] >= [expr $frucht_gold_precision*[expr ($edge_wight_coefficient - $current_identity*$current_identity)]] && $current_identity >= $level_of_similarity_6} {
-
- set random_direction_X [expr rand()]
- if {$random_direction_X > 0.5} {
- set direction_X "$attraction_random_step"
- }
- if {$random_direction_X < 0.5} {
- set direction_X "-$attraction_random_step"
- }
- if {$random_direction_X == 0.5} {
- set direction_X "$attraction_random_step"
- }
- set random_direction_Y [expr rand()]
- if {$random_direction_Y > 0.5} {
- set direction_Y "$attraction_random_step"
- }
- if {$random_direction_Y < 0.5} {
- set direction_Y "-$attraction_random_step"
- }
- if {$random_direction_Y == 0.5} {
- set direction_Y "0"
- }
-
- set x_distance_AB_second abs([expr [expr $the_Node_A_X + $direction_X] - $the_Node_B_X])
- set y_distance_AB_second abs([expr [expr $the_Node_A_Y + $direction_Y] - $the_Node_B_Y])
- set distance_between_A_B_second hypot($x_distance_AB_second,$y_distance_AB_second)
- if {[expr $distance_between_A_B_second - $distance_between_A_B_first] < 0} {
- moveNode $the_Node_A $direction_X $direction_Y
- update
- }
-
- set the_Node_A_X1 [lindex [.phylo.canvas coords $the_Node_A] 0]
- set the_Node_A_Y1 [lindex [.phylo.canvas coords $the_Node_A] 1]
- set the_Node_A_X2 [lindex [.phylo.canvas coords $the_Node_A] 2]
- set the_Node_A_Y2 [lindex [.phylo.canvas coords $the_Node_A] 3]
- set the_Node_A_X [expr ($the_Node_A_X1 + $the_Node_A_X2)/2]
- set the_Node_A_Y [expr ($the_Node_A_Y1 + $the_Node_A_Y2)/2]
-
- set the_Node_B_X1 [lindex [.phylo.canvas coords $the_Node_B] 0]
- set the_Node_B_Y1 [lindex [.phylo.canvas coords $the_Node_B] 1]
- set the_Node_B_X2 [lindex [.phylo.canvas coords $the_Node_B] 2]
- set the_Node_B_Y2 [lindex [.phylo.canvas coords $the_Node_B] 3]
- set the_Node_B_X [expr ($the_Node_A_X1 + $the_Node_B_X2)/2]
- set the_Node_B_Y [expr ($the_Node_A_Y1 + $the_Node_B_Y2)/2]
-
- set x_distance_AB_first [expr abs([expr $the_Node_A_X - $the_Node_B_X])]
- set y_distance_AB_first [expr abs([expr $the_Node_A_Y - $the_Node_B_Y])]
- set distance_between_A_B_first [expr hypot($x_distance_AB_first,$y_distance_AB_first)]
-
- if { $the_Node_A_X <= 10 } {
- moveNode $the_Node_A 30 0
- update
- }
- if { $the_Node_A_Y <= 10 } {
- moveNode $the_Node_A 0 30
- update
- }
- if { $the_Node_A_X >= $iron_wall } {
- moveNode $the_Node_A -30 0
- update
- }
- if { $the_Node_A_Y >= $iron_wall } {
- moveNode $the_Node_A 0 -30
- update
- }
- }
-
- ### NODE B ###
-
- set the_Node_A $abc_tag$current_seq_ID_B
-
- set the_Node_A_X1 [lindex [.phylo.canvas coords $the_Node_A] 0]
- set the_Node_A_Y1 [lindex [.phylo.canvas coords $the_Node_A] 1]
- set the_Node_A_X2 [lindex [.phylo.canvas coords $the_Node_A] 2]
- set the_Node_A_Y2 [lindex [.phylo.canvas coords $the_Node_A] 3]
- set the_Node_A_X [expr ($the_Node_A_X1 + $the_Node_A_X2)/2]
- set the_Node_A_Y [expr ($the_Node_A_Y1 + $the_Node_A_Y2)/2]
-
- # puts "$the_Node_A_X1 $the_Node_A_Y1 $the_Node_A_X2 $the_Node_A_Y2 $the_Node_A_X $the_Node_A_Y $the_Node_A NODE_A COORDS"
-
- if {$the_Node_A == ""} {
- continue
- }
- set the_Node_B $current_seq_ID_A
- if {$the_Node_B == ""} {
- continue
- }
- ############## PUSH ME OUT BEGIN ##############
-
- set dummy_switch_random [expr rand()]
-
- if {$dummy_switch_random >= 0.75 && $frucht_gold_limit > 0} {
- set dummy_switch "NO"
- } else {
- set dummy_switch "YES"
- }
-
- set push_them_out_A [.phylo.canvas find enclosed \
- [expr $the_Node_A_X - $repulsion_distance] [expr $the_Node_A_Y - $repulsion_distance] \
- [expr $the_Node_A_X + $repulsion_distance] [expr $the_Node_A_Y + $repulsion_distance] ]
-
- set push_them_out_A_length [llength [split $push_them_out_A]]
- # puts "$push_them_out_A $push_them_out_A_length"
-
- # puts "$dummy_switch DUMMY SWITCH"
-
- while {$push_them_out_A_length > 0 && $dummy_switch == "YES"} {
-
- set push_me_current [lindex [split $push_them_out_A] [expr $push_them_out_A_length -1 ]]
-
- # set push_me_current_ID $push_me_current
- set push_me_current_list [.phylo.canvas gettags $push_me_current]
- set push_me_current_ID [lindex $push_me_current_list 0]
- set second_tag [lindex $push_me_current_list 1]
-
- set push_me_X1 [lindex [.phylo.canvas coords $push_me_current_ID] 0]
- set push_me_Y1 [lindex [.phylo.canvas coords $push_me_current_ID] 1]
- set push_me_X2 [lindex [.phylo.canvas coords $push_me_current_ID] 2]
- set push_me_Y2 [lindex [.phylo.canvas coords $push_me_current_ID] 3]
- set push_me_X [expr ($push_me_X1 + $push_me_X2)/2]
- set push_me_Y [expr ($push_me_Y1 + $push_me_Y2)/2]
-
- # puts "$push_me_X1 $push_me_Y1 $push_me_X2 $push_me_Y2 $push_me_X $push_me_Y $push_me_current_ID PUSH COORDS"
-
- if { $push_me_current_ID != $the_Node_A && $second_tag == "node" } {
- # puts "$push_me_current PUSH ME OUT CURRENT"
- set x_distance_AC_first [expr abs([expr $the_Node_A_X - $push_me_X])]
- set y_distance_AC_first [expr abs([expr $the_Node_A_Y - $push_me_Y])]
- set distance_between_A_C_first [expr hypot($x_distance_AC_first,$y_distance_AC_first)]
-
- # puts "$x_distance_AC_first $y_distance_AC_first $distance_between_A_C_first"
- # puts "$distance_between_A_C_first $repulsion_distance REPULSION"
-
- while {[expr $distance_between_A_C_first] < $repulsion_distance} {
- set random_direction_X [expr rand()]
- if {$random_direction_X > 0.5} {
- set direction_X "$random_step_value"
- }
- if {$random_direction_X < 0.5} {
- set direction_X "-$random_step_value"
- }
- if {$random_direction_X == 0.5} {
- set direction_X "0"
- }
- set random_direction_Y [expr rand()]
- if {$random_direction_Y > 0.5} {
- set direction_Y "$random_step_value"
- }
- if {$random_direction_Y < 0.5} {
- set direction_Y "-$random_step_value"
- }
- if {$random_direction_Y == 0.5} {
- set direction_Y "0"
- }
-
- # puts "I am above"
-
- moveNode $push_me_current_ID $direction_X $direction_Y
-
- update
-
- # puts "$direction_X $direction_Y DIRECTION X Y"
-
- # puts "I am below"
-
- set the_Node_A_X1 [lindex [.phylo.canvas coords $the_Node_A] 0]
- set the_Node_A_Y1 [lindex [.phylo.canvas coords $the_Node_A] 1]
- set the_Node_A_X2 [lindex [.phylo.canvas coords $the_Node_A] 2]
- set the_Node_A_Y2 [lindex [.phylo.canvas coords $the_Node_A] 3]
- set the_Node_A_X [expr ($the_Node_A_X1 + $the_Node_A_X2)/2]
- set the_Node_A_Y [expr ($the_Node_A_Y1 + $the_Node_A_Y2)/2]
-
- set push_me_X1 [lindex [.phylo.canvas coords $push_me_current_ID] 0]
- set push_me_Y1 [lindex [.phylo.canvas coords $push_me_current_ID] 1]
- set push_me_X2 [lindex [.phylo.canvas coords $push_me_current_ID] 2]
- set push_me_Y2 [lindex [.phylo.canvas coords $push_me_current_ID] 3]
- set push_me_X [expr ($push_me_X1 + $push_me_X2)/2]
- set push_me_Y [expr ($push_me_Y1 + $push_me_Y2)/2]
-
- set x_distance_AC_first [expr abs([expr $the_Node_A_X - $push_me_X])]
- set y_distance_AC_first [expr abs([expr $the_Node_A_Y - $push_me_Y])]
- set distance_between_A_C_first [expr hypot($x_distance_AC_first,$y_distance_AC_first)]
-
- if { $the_Node_A_X <= 10 } {
- moveNode $the_Node_A 30 0
- update
- }
- if { $the_Node_A_Y <= 10 } {
- moveNode $the_Node_A 0 30
- update
- }
- if { $the_Node_A_X >= $iron_wall } {
- moveNode $the_Node_A -30 0
- update
- }
- if { $the_Node_A_Y >= $iron_wall} {
- moveNode $the_Node_A 0 -30
- update
- }
- }
- }
- incr push_them_out_A_length -1
- }
- ############## PUSH ME OUT END ##############
-
- # puts "I am out"
-
- set the_Node_A $abc_tag$current_seq_ID_B
- set the_Node_B $abc_tag$current_seq_ID_A
-
- set the_Node_A_X1 [lindex [.phylo.canvas coords $the_Node_A] 0]
- set the_Node_A_Y1 [lindex [.phylo.canvas coords $the_Node_A] 1]
- set the_Node_A_X2 [lindex [.phylo.canvas coords $the_Node_A] 2]
- set the_Node_A_Y2 [lindex [.phylo.canvas coords $the_Node_A] 3]
- set the_Node_A_X [expr ($the_Node_A_X1 + $the_Node_A_X2)/2]
- set the_Node_A_Y [expr ($the_Node_A_Y1 + $the_Node_A_Y2)/2]
-
- set the_Node_B_X1 [lindex [.phylo.canvas coords $the_Node_B] 0]
- set the_Node_B_Y1 [lindex [.phylo.canvas coords $the_Node_B] 1]
- set the_Node_B_X2 [lindex [.phylo.canvas coords $the_Node_B] 2]
- set the_Node_B_Y2 [lindex [.phylo.canvas coords $the_Node_B] 3]
- set the_Node_B_X [expr ($the_Node_A_X1 + $the_Node_B_X2)/2]
- set the_Node_B_Y [expr ($the_Node_A_Y1 + $the_Node_B_Y2)/2]
-
- set x_distance_AB_first [expr abs([expr $the_Node_A_X - $the_Node_B_X])]
- set y_distance_AB_first [expr abs([expr $the_Node_A_Y - $the_Node_B_Y])]
- set distance_between_A_B_first [expr hypot($x_distance_AB_first,$y_distance_AB_first)]
-
- if {[expr $distance_between_A_B_first] >= [expr $frucht_gold_precision*[expr ($edge_wight_coefficient - $current_identity*$current_identity)]] && $current_identity >= $level_of_similarity_6} {
-
- set random_direction_X [expr rand()]
- if {$random_direction_X > 0.5} {
- set direction_X "$attraction_random_step"
- }
- if {$random_direction_X < 0.5} {
- set direction_X "-$attraction_random_step"
- }
- if {$random_direction_X == 0.5} {
- set direction_X "$attraction_random_step"
- }
- set random_direction_Y [expr rand()]
- if {$random_direction_Y > 0.5} {
- set direction_Y "$attraction_random_step"
- }
- if {$random_direction_Y < 0.5} {
- set direction_Y "-$attraction_random_step"
- }
- if {$random_direction_Y == 0.5} {
- set direction_Y "0"
- }
-
- set x_distance_AB_second abs([expr [expr $the_Node_A_X + $direction_X] - $the_Node_B_X])
- set y_distance_AB_second abs([expr [expr $the_Node_A_Y + $direction_Y] - $the_Node_B_Y])
- set distance_between_A_B_second hypot($x_distance_AB_second,$y_distance_AB_second)
- if {[expr $distance_between_A_B_second - $distance_between_A_B_first] < 0} {
- moveNode $the_Node_A $direction_X $direction_Y
- update
- }
-
- set the_Node_A_X1 [lindex [.phylo.canvas coords $the_Node_A] 0]
- set the_Node_A_Y1 [lindex [.phylo.canvas coords $the_Node_A] 1]
- set the_Node_A_X2 [lindex [.phylo.canvas coords $the_Node_A] 2]
- set the_Node_A_Y2 [lindex [.phylo.canvas coords $the_Node_A] 3]
- set the_Node_A_X [expr ($the_Node_A_X1 + $the_Node_A_X2)/2]
- set the_Node_A_Y [expr ($the_Node_A_Y1 + $the_Node_A_Y2)/2]
-
- set the_Node_B_X1 [lindex [.phylo.canvas coords $the_Node_B] 0]
- set the_Node_B_Y1 [lindex [.phylo.canvas coords $the_Node_B] 1]
- set the_Node_B_X2 [lindex [.phylo.canvas coords $the_Node_B] 2]
- set the_Node_B_Y2 [lindex [.phylo.canvas coords $the_Node_B] 3]
- set the_Node_B_X [expr ($the_Node_A_X1 + $the_Node_B_X2)/2]
- set the_Node_B_Y [expr ($the_Node_A_Y1 + $the_Node_B_Y2)/2]
-
- set x_distance_AB_first [expr abs([expr $the_Node_A_X - $the_Node_B_X])]
- set y_distance_AB_first [expr abs([expr $the_Node_A_Y - $the_Node_B_Y])]
- set distance_between_A_B_first [expr hypot($x_distance_AB_first,$y_distance_AB_first)]
-
- if { $the_Node_A_X <= 10 } {
- moveNode $the_Node_A 30 0
- update
- }
- if { $the_Node_A_Y <= 10 } {
- moveNode $the_Node_A 0 30
- update
- }
- if { $the_Node_A_X >= $iron_wall } {
- moveNode $the_Node_A -30 0
- update
- }
- if { $the_Node_A_Y >= $iron_wall } {
- moveNode $the_Node_A 0 -30
- update
- }
- }
-
- ################
- .phylo.canvas itemconfigure $abc_tag$current_seq_ID_A -fill $old_node_colour_A \
- -outline $old_node_fill_A
- .phylo.canvas itemconfigure $abc_tag$current_seq_ID_B -fill $old_node_colour_B \
- -outline $old_node_fill_B
- update
- ################
- }
- ###############
- bell
- ###############
- incr frucht_gold_limit -1
- }
-}
-
-proc Node_Painter {} {
-
- destroy .node_painter
- toplevel .node_painter
- wm title .node_painter "Node Painter"
- wm protocol .node_painter WM_DELETE_WINDOW "destroy .node_painter"
- wm minsize .node_painter 470 260
-
- global nodes_group1
- global nodes_group2
- global nodes_group3
- global nodes_group4
- global nodes_group5
- global nodes_group6
-
- set nodes_group1 "./Group/subgroup_1.txt"
- set nodes_group2 "./Group/subgroup_2.txt"
- set nodes_group3 "./Group/subgroup_3.txt"
- set nodes_group4 "./Group/subgroup_4.txt"
- set nodes_group5 "./Group/subgroup_5.txt"
- set nodes_group6 "./Group/subgroup_6.txt"
-
- global color_group1
- global color_group2
- global color_group3
- global color_group4
- global color_group5
- global color_group6
-
- global outline_group1
- global outline_group2
- global outline_group3
- global outline_group4
- global outline_group5
- global outline_group6
-
- set color_group1 "green3"
- set color_group2 "orange"
- set color_group3 "blue"
- set color_group4 "red"
- set color_group5 "violet"
- set color_group6 "blue"
-
- set outline_group1 "yellow"
- set outline_group2 "yellow"
- set outline_group3 "yellow"
- set outline_group4 "yellow"
- set outline_group5 "yellow"
- set outline_group6 "cyan"
-
- #####
-
- label .node_painter.group_list -text "group list:" -bg gray -width 14
- place .node_painter.group_list -x 120 -y 10
-
- label .node_painter.fill_color -text "fill color:" -bg gray -width 10
- place .node_painter.fill_color -x 250 -y 10
-
- label .node_painter.outline_color -text "outline:" -bg gray -width 8
- place .node_painter.outline_color -x 330 -y 10
-
- #####
- label .node_painter.select_group1_label -text "group1:" -bg gray -width 12
- place .node_painter.select_group1_label -x 10 -y 40
-
- entry .node_painter.select_group1_entry -relief sunken \
- -textvariable nodes_group1 -bg lightyellow -width 20
- place .node_painter.select_group1_entry -x 105 -y 40
-
- entry .node_painter.color_group1_entry -relief sunken \
- -textvariable color_group1 -bg lightyellow -width 8
- place .node_painter.color_group1_entry -x 260 -y 40
-
- entry .node_painter.outline_group1_entry -relief sunken \
- -textvariable outline_group1 -bg lightyellow -width 8
- place .node_painter.outline_group1_entry -x 330 -y 40
-
- button .node_painter.paint_group1 -text "paint" -bg yellow3 \
- -command {Change_Node_Color1}
- place .node_painter.paint_group1 -x 400 -y 38
- #####
- label .node_painter.select_group2_label -text "group2:" -bg gray -width 12
- place .node_painter.select_group2_label -x 10 -y 70
-
- entry .node_painter.select_group2_entry -relief sunken \
- -textvariable nodes_group2 -bg lightyellow -width 20
- place .node_painter.select_group2_entry -x 105 -y 70
-
- entry .node_painter.color_group2_entry -relief sunken \
- -textvariable color_group2 -bg lightyellow -width 8
- place .node_painter.color_group2_entry -x 260 -y 70
-
- entry .node_painter.outline_group2_entry -relief sunken \
- -textvariable outline_group2 -bg lightyellow -width 8
- place .node_painter.outline_group2_entry -x 330 -y 70
-
- button .node_painter.paint_group2 -text "paint" -bg yellow3 \
- -command {Change_Node_Color2}
- place .node_painter.paint_group2 -x 400 -y 68
- #####
- label .node_painter.select_group3_label -text "group3:" -bg gray -width 12
- place .node_painter.select_group3_label -x 10 -y 100
-
- entry .node_painter.select_group3_entry -relief sunken \
- -textvariable nodes_group3 -bg lightyellow -width 20
- place .node_painter.select_group3_entry -x 105 -y 100
-
- entry .node_painter.color_group3_entry -relief sunken \
- -textvariable color_group3 -bg lightyellow -width 8
- place .node_painter.color_group3_entry -x 260 -y 100
-
- entry .node_painter.outline_group3_entry -relief sunken \
- -textvariable outline_group3 -bg lightyellow -width 8
- place .node_painter.outline_group3_entry -x 330 -y 100
-
- button .node_painter.paint_group3 -text "paint" -bg yellow3 \
- -command {Change_Node_Color3}
- place .node_painter.paint_group3 -x 400 -y 98
- #####
- label .node_painter.select_group4_label -text "group4:" -bg gray -width 12
- place .node_painter.select_group4_label -x 10 -y 130
-
- entry .node_painter.select_group4_entry -relief sunken \
- -textvariable nodes_group4 -bg lightyellow -width 20
- place .node_painter.select_group4_entry -x 105 -y 130
-
- entry .node_painter.color_group4_entry -relief sunken \
- -textvariable color_group4 -bg lightyellow -width 8
- place .node_painter.color_group4_entry -x 260 -y 130
-
- entry .node_painter.outline_group4_entry -relief sunken \
- -textvariable outline_group4 -bg lightyellow -width 8
- place .node_painter.outline_group4_entry -x 330 -y 130
-
- button .node_painter.paint_group4 -text "paint" -bg yellow3 \
- -command {Change_Node_Color4}
- place .node_painter.paint_group4 -x 400 -y 128
- #####
- label .node_painter.select_group5_label -text "group5:" -bg gray -width 12
- place .node_painter.select_group5_label -x 10 -y 160
-
- entry .node_painter.select_group5_entry -relief sunken \
- -textvariable nodes_group5 -bg lightyellow -width 20
- place .node_painter.select_group5_entry -x 105 -y 160
-
- entry .node_painter.color_group5_entry -relief sunken \
- -textvariable color_group5 -bg lightyellow -width 8
- place .node_painter.color_group5_entry -x 260 -y 160
-
- entry .node_painter.outline_group5_entry -relief sunken \
- -textvariable outline_group5 -bg lightyellow -width 8
- place .node_painter.outline_group5_entry -x 330 -y 160
-
- button .node_painter.paint_group5 -text "paint" -bg yellow3 \
- -command {Change_Node_Color5}
- place .node_painter.paint_group5 -x 400 -y 158
- #####
- label .node_painter.select_group6_label -text "group6:" -bg gray -width 12
- place .node_painter.select_group6_label -x 10 -y 190
-
- entry .node_painter.select_group6_entry -relief sunken \
- -textvariable nodes_group6 -bg lightyellow -width 20
- place .node_painter.select_group6_entry -x 105 -y 190
-
- entry .node_painter.color_group6_entry -relief sunken \
- -textvariable color_group6 -bg lightyellow -width 8
- place .node_painter.color_group6_entry -x 260 -y 190
-
- entry .node_painter.outline_group6_entry -relief sunken \
- -textvariable outline_group6 -bg lightyellow -width 8
- place .node_painter.outline_group6_entry -x 330 -y 190
-
- button .node_painter.paint_group6 -text "paint" -bg yellow3 \
- -command {Change_Node_Color6}
- place .node_painter.paint_group6 -x 400 -y 188
- #####
-
- button .node_painter.howto -text "HowTo" -bg gray -width 8 -command {HowTo_Paint_Nodes}
- place .node_painter.howto -x 20 -y 225
-
- button .node_painter.dismiss -text "Dismiss" -bg gray -width 8 -command {destroy .node_painter}
- place .node_painter.dismiss -x 140 -y 225
-}
-
-proc HowTo_Paint_Nodes {} {
-
- destroy .how_to_paint
- toplevel .how_to_paint
- wm title .how_to_paint "HowTo Paint Nodes"
- wm protocol .how_to_paint WM_DELETE_WINDOW "destroy .how_to_paint"
-
- label .how_to_paint.text -text "
-To paint nodes in different colors you need
-to set up lists of nodes belonging to distinct
-groups and place them in \"Group\" directory.
-By clicking \"paint\" program changes color
-of nodes in a given list.
-"
- button .how_to_paint.dismiss -text "Dismiss" \
- -command "destroy .how_to_paint" -bg gray -width 8
-
- pack .how_to_paint.text -padx 7 -pady 7
- pack .how_to_paint.dismiss -padx 3 -pady 3
-}
-
-proc Change_Node_Color1 {} {
-
- global abc_tag
- global nodes_group1
- global color_group1
- global outline_group1
-
- set open_current_group [open $nodes_group1 "r"]
- while {[gets $open_current_group current_line_group] >= 0} {
- .phylo.canvas itemconfigure $abc_tag$current_line_group -fill $color_group1 -outline $outline_group1
- }
- close $open_current_group
- bell
-}
-proc Change_Node_Color2 {} {
-
- global abc_tag
- global nodes_group2
- global color_group2
- global outline_group2
-
- set open_current_group [open $nodes_group2 "r"]
- while {[gets $open_current_group current_line_group] >= 0} {
- .phylo.canvas itemconfigure $abc_tag$current_line_group -fill $color_group2 -outline $outline_group2
- }
- close $open_current_group
- bell
-}
-proc Change_Node_Color3 {} {
-
- global abc_tag
- global nodes_group3
- global color_group3
- global outline_group3
-
- set open_current_group [open $nodes_group3 "r"]
- while {[gets $open_current_group current_line_group] >= 0} {
- .phylo.canvas itemconfigure $abc_tag$current_line_group -fill $color_group3 -outline $outline_group3
- }
- close $open_current_group
- bell
-}
-proc Change_Node_Color4 {} {
-
- global abc_tag
- global nodes_group4
- global color_group4
- global outline_group4
-
- set open_current_group [open $nodes_group4 "r"]
- while {[gets $open_current_group current_line_group] >= 0} {
- .phylo.canvas itemconfigure $abc_tag$current_line_group -fill $color_group4 -outline $outline_group4
- }
- close $open_current_group
- bell
-}
-proc Change_Node_Color5 {} {
-
- global abc_tag
- global nodes_group5
- global color_group5
- global outline_group5
-
- set open_current_group [open $nodes_group5 "r"]
- while {[gets $open_current_group current_line_group] >= 0} {
- .phylo.canvas itemconfigure $abc_tag$current_line_group -fill $color_group5 -outline $outline_group5
- }
- close $open_current_group
- bell
-}
-proc Change_Node_Color6 {} {
-
- global abc_tag
- global nodes_group6
- global color_group6
- global outline_group6
-
- set open_current_group [open $nodes_group6 "r"]
- while {[gets $open_current_group current_line_group] >= 0} {
- .phylo.canvas itemconfigure $abc_tag$current_line_group -fill $color_group6 -outline $outline_group6
- }
- close $open_current_group
- bell
-}
-
-proc Canvas_Editor {} {
-
- destroy .c_editor
- toplevel .c_editor
-
- wm title .c_editor "Canvas Editor"
- wm protocol .c_editor WM_DELETE_WINDOW "destroy .c_editor"
- wm minsize .c_editor 512 260
-
- global selected_canvas
- global font_color_canvas
- global font_color_label
- global canvas_editor_font_type
- global canvas_editor_font_size
- global canvas_editor_font_style
- global text_tag
- global canvas_editor_text
- global curX
- global curY
-
- set font_color_label $font_color_canvas
- set selected_canvas ".phylo.canvas"
- set canvas_editor_text "my lovely node"
- set canvas_editor_font_type "helvetica"
- set canvas_editor_font_size 12
- set canvas_editor_font_style normal
- set text_tag text_tag_01
- set curX 125
- set curY 125
-
- global graph_style
- global graph_tag
- global graphX1
- global graphX2
- global graphY1
- global graphY2
- global graph_fill_color
- global graph_outline_color
-
- set graph_style "oval"
- set graph_tag "graph_tag_01"
- set graphX1 100
- set graphY1 100
- set graphX2 24
- set graphY2 24
- set graph_fill_color ""
- set graph_outline_color "white"
-
- ###########################################################################
-
- label .c_editor.select_text_label -text "select text:" -bg yellow3 -width 12
- place .c_editor.select_text_label -x 10 -y 10
-
- entry .c_editor.select_text_entry -relief sunken \
- -textvariable canvas_editor_text -bg gold -width 22
- place .c_editor.select_text_entry -x 105 -y 10
-
- label .c_editor.select_canvas -text "select canvas:" -bg gray -width 14
- place .c_editor.select_canvas -x 280 -y 10
-
- entry .c_editor.select_canvas_entry -relief sunken \
- -textvariable selected_canvas -bg lightblue -width 15
- place .c_editor.select_canvas_entry -x 390 -y 10
-
- ########################
-
- label .c_editor.text_color_label -text "text color:" -bg gray -width 12
- place .c_editor.text_color_label -x 10 -y 40
-
- entry .c_editor.text_color_entry -relief sunken \
- -textvariable font_color_label -bg lightyellow -width 20
- place .c_editor.text_color_entry -x 105 -y 40
-
- label .c_editor.select_graph_label -text "Graphical Label:" -bg yellow3 -width 18
- place .c_editor.select_graph_label -x 330 -y 40
-
- ########################
-
- label .c_editor.text_type_label -text "font type:" -bg gray -width 12
- place .c_editor.text_type_label -x 10 -y 70
-
- entry .c_editor.text_type_entry -relief sunken \
- -textvariable canvas_editor_font_type -bg lightyellow -width 20
- place .c_editor.text_type_entry -x 105 -y 70
-
- label .c_editor.graph_style_label -text "shape:" -bg gray -width 12
- place .c_editor.graph_style_label -x 300 -y 70
-
- entry .c_editor.graph_style_entry -relief sunken \
- -textvariable graph_style -bg lightyellow -width 14
- place .c_editor.graph_style_entry -x 395 -y 70
-
- ########################
-
- label .c_editor.text_size_label -text "font size:" -bg gray -width 12
- place .c_editor.text_size_label -x 10 -y 100
-
- entry .c_editor.text_size_entry -relief sunken \
- -textvariable canvas_editor_font_size -bg lightyellow -width 20
- place .c_editor.text_size_entry -x 105 -y 100
-
- label .c_editor.graph_fill_label -text "fill:" -bg gray -width 12
- place .c_editor.graph_fill_label -x 300 -y 100
-
- entry .c_editor.graph_fill_entry -relief sunken \
- -textvariable graph_fill_color -bg lightyellow -width 14
- place .c_editor.graph_fill_entry -x 395 -y 100
-
- ########################
-
- label .c_editor.text_style_label -text "font style:" -bg gray -width 12
- place .c_editor.text_style_label -x 10 -y 130
-
- entry .c_editor.text_style_entry -relief sunken \
- -textvariable canvas_editor_font_style -bg lightyellow -width 20
- place .c_editor.text_style_entry -x 105 -y 130
-
- label .c_editor.graph_outline_label -text "outline:" -bg gray -width 12
- place .c_editor.graph_outline_label -x 300 -y 130
-
- entry .c_editor.graph_outline_entry -relief sunken \
- -textvariable graph_outline_color -bg lightyellow -width 14
- place .c_editor.graph_outline_entry -x 395 -y 130
-
- ########################
-
- label .c_editor.current_X_label -text "current X:" -bg gray -width 12
- place .c_editor.current_X_label -x 10 -y 160
-
- label .c_editor.current_Y_label -text "current Y:" -bg gray -width 12
- place .c_editor.current_Y_label -x 10 -y 190
-
- entry .c_editor.current_X_entry -relief sunken \
- -textvariable curX -bg lightyellow -width 20
- place .c_editor.current_X_entry -x 105 -y 160
-
- entry .c_editor.current_Y_entry -relief sunken \
- -textvariable curY -bg lightyellow -width 20
- place .c_editor.current_Y_entry -x 105 -y 190
-
- label .c_editor.graphX1 -text "X1" -bg gray -width 4
- place .c_editor.graphX1 -x 300 -y 160
-
- label .c_editor.graphY1 -text "Y1" -bg gray -width 4
- place .c_editor.graphY1 -x 300 -y 190
-
- label .c_editor.graphX2 -text "X2" -bg gray -width 4
- place .c_editor.graphX2 -x 400 -y 160
-
- label .c_editor.graphY2 -text "Y2" -bg gray -width 4
- place .c_editor.graphY2 -x 400 -y 190
-
- entry .c_editor.graphX1_entry -relief sunken \
- -textvariable graphX1 -bg lightyellow -width 6
- place .c_editor.graphX1_entry -x 340 -y 160
-
- entry .c_editor.graphY1_entry -relief sunken \
- -textvariable graphY1 -bg lightyellow -width 6
- place .c_editor.graphY1_entry -x 340 -y 190
-
- entry .c_editor.graphX2_entry -relief sunken \
- -textvariable graphX2 -bg lightyellow -width 6
- place .c_editor.graphX2_entry -x 440 -y 160
-
- entry .c_editor.graphY2_entry -relief sunken \
- -textvariable graphY2 -bg lightyellow -width 6
- place .c_editor.graphY2_entry -x 440 -y 190
-
- ########################
-
- button .c_editor.submit_text -text "Add Text to Canvas" \
- -command {Place_Text_on_Canvas} -bg orange -width 17
- place .c_editor.submit_text -x 20 -y 220
-
- button .c_editor.submit_graphics -text "Add Label to Canvas" \
- -command {Add_Graphics_to_Canvas} -bg orange -width 17
- place .c_editor.submit_graphics -x 340 -y 220
-
- button .c_editor.how_to -text "HowTo" \
- -command {How_To_Edit_Canvas} -bg gray -width 6
- place .c_editor.how_to -x 180 -y 220
-
- button .c_editor.dismiss -text "Dismiss" \
- -command {destroy .c_editor} -bg gray -width 6
- place .c_editor.dismiss -x 260 -y 220
-
- ###########################################################################
-}
-
-proc Move_Text_Label { node xDist yDist } {
-
- global selected_canvas
- global curX
- global curY
-
- $selected_canvas move $node $xDist $yDist
- incr curX $xDist
- incr curY $yDist
-}
-
-proc Move_Graph_Label { node xDist1 yDist1 } {
-
- global selected_canvas
- global graphX1
- global graphX2
- global graphY1
- global graphY2
-
- $selected_canvas move $node $xDist1 $yDist1
- incr graphX1 $xDist1
- incr graphY1 $yDist1
-}
-
-proc Place_Text_on_Canvas {} {
-
- global selected_canvas
- global text_tag
- global curX
- global curY
- global canvas_editor_text
- global font_color_canvas
- global font_color_label
- global canvas_editor_font_type
- global canvas_editor_font_size
- global canvas_editor_font_style
-
- $selected_canvas create text $curX $curY -text "$canvas_editor_text" \
- -font "$canvas_editor_font_type $canvas_editor_font_size $canvas_editor_font_style" \
- -anchor sw -fill $font_color_label -tags "$text_tag removable"
-
- $selected_canvas bind $text_tag <Button-1> {
- set curX [expr int(round([.phylo.canvas canvasx %x]))]
- set curY [expr int(round([.phylo.canvas canvasy %y]))]
- }
-
- $selected_canvas bind $text_tag <B1-Motion> {
- Move_Text_Label [$selected_canvas find withtag current] \
- [expr [expr int(round([.phylo.canvas canvasx %x]))] - $curX] \
- [expr [expr int(round([.phylo.canvas canvasy %y]))] - $curY]
- set curX [expr int(round([.phylo.canvas canvasx %x]))]
- set curY [expr int(round([.phylo.canvas canvasy %y]))]
- }
-}
-
-proc Add_Graphics_to_Canvas {} {
-
- global graph_style
- global graph_tag
- global graphX1
- global graphX2
- global graphY1
- global graphY2
- global graph_fill_color
- global graph_outline_color
- global selected_canvas
-
- $selected_canvas create $graph_style $graphX1 $graphY1 \
- [expr $graphX1 + $graphX2] \
- [expr $graphY1 + $graphY2] \
- -fill $graph_fill_color -outline $graph_outline_color -tags "$graph_tag removable"
-
- $selected_canvas bind $graph_tag <Button-1> {
- set graphX1 [expr int(round([.phylo.canvas canvasx %x]))]
- set graphY1 [expr int(round([.phylo.canvas canvasy %y]))]
- }
-
- $selected_canvas bind $graph_tag <B1-Motion> {
- Move_Graph_Label [$selected_canvas find withtag current] \
- [expr [expr int(round([.phylo.canvas canvasx %x]))] - $graphX1] \
- [expr [expr int(round([.phylo.canvas canvasy %y]))] - $graphY1]
- set graphX1 [expr int(round([.phylo.canvas canvasx %x]))]
- set graphY1 [expr int(round([.phylo.canvas canvasy %y]))]
- }
-}
-
-proc How_To_Edit_Canvas {} {
-
- destroy .how_to_edit_canvas
- toplevel .how_to_edit_canvas
- wm title .how_to_edit_canvas "Canvas Editing HowTo"
- wm protocol .how_to_edit_canvas WM_DELETE_WINDOW "destroy .how_to_edit_canvas"
-
- label .how_to_edit_canvas.text -text "
-By using this Canvas Editor you may edit and finish
-your project by adding text and graphical labels over
-the graph generated by PhyloGrapher.
-By left-button mouse click you may move the text and
-labels over PhyloGrapher canvas. By pressing \"Cntrl-d\"
-key you may delete the text and labels you don't need.
-"
- button .how_to_edit_canvas.dismiss -text "Dismiss" \
- -command "destroy .how_to_edit_canvas" -bg gray -width 8
-
- pack .how_to_edit_canvas.text -padx 7 -pady 7
- pack .how_to_edit_canvas.dismiss -padx 3 -pady 3
-}
-
-proc Global_Configuration {} {
-
- global object_fill_color
- global object_fill_color_connect
- global object_outline
- global object_outline_connect
- global object_shape
- global object_x_size
- global object_y_size
-
- global canvas_background
- global node_color_label
- global edge_color_label
- global font_color_canvas
- global canvas_editor_font_type
- global canvas_editor_font_size
- global canvas_editor_font_style
-
- global url_prefix
- global url_suffix
-
- global main_cursor_color
- global input_type
- global fake_edge_color
-
- destroy .global_configuration
-
- toplevel .global_configuration
- .global_configuration config -bg black
- wm title .global_configuration "Project Configuration"
- wm protocol .global_configuration WM_DELETE_WINDOW "destroy .global_configuration"
-
- label .global_configuration.l1 -text "Node fill color: " -bg black -fg lightblue
- entry .global_configuration.e1 -relief sunken -textvariable object_fill_color \
- -bg blue4 -fg gray80 -insertbackground lightyellow
- grid .global_configuration.l1 .global_configuration.e1
-
- label .global_configuration.l2 -text "Node outline color: " -bg black -fg lightblue
- entry .global_configuration.e2 -relief sunken -textvariable object_outline \
- -bg blue4 -fg gray80 -insertbackground lightyellow
- grid .global_configuration.l2 .global_configuration.e2
-
- label .global_configuration.l3 -text "Node color if connected: " -bg black -fg lightblue
- entry .global_configuration.e3 -relief sunken -textvariable object_fill_color_connect \
- -bg blue4 -fg gray80 -insertbackground lightyellow
- grid .global_configuration.l3 .global_configuration.e3
-
- label .global_configuration.l4 -text "Node outline if connected: " -bg black -fg lightblue
- entry .global_configuration.e4 -relief sunken -textvariable object_outline_connect \
- -bg blue4 -fg gray80 -insertbackground lightyellow
- grid .global_configuration.l4 .global_configuration.e4
-
- label .global_configuration.l5 -text "Node shape: " -bg black -fg lightblue
- entry .global_configuration.e5 -relief sunken -textvariable object_shape \
- -bg blue4 -fg gray80 -insertbackground lightyellow
- grid .global_configuration.l5 .global_configuration.e5
-
- label .global_configuration.l6 -text "Node X dimension: " -bg black -fg lightblue
- entry .global_configuration.e6 -relief sunken -textvariable object_x_size \
- -bg blue4 -fg gray80 -insertbackground lightyellow
- grid .global_configuration.l6 .global_configuration.e6
-
- label .global_configuration.l7 -text "Node Y dimension: " -bg black -fg lightblue
- entry .global_configuration.e7 -relief sunken -textvariable object_y_size \
- -bg blue4 -fg gray80 -insertbackground lightyellow
- grid .global_configuration.l7 .global_configuration.e7
-
- label .global_configuration.l8 -text "Canvas background: " -bg black -fg lightblue
- entry .global_configuration.e8 -relief sunken -textvariable canvas_background \
- -bg blue4 -fg gray80 -insertbackground lightyellow
- grid .global_configuration.l8 .global_configuration.e8
-
- label .global_configuration.l9 -text "Node label color: " -bg black -fg lightblue
- entry .global_configuration.e9 -relief sunken -textvariable node_color_label \
- -bg blue4 -fg gray80 -insertbackground lightyellow
- grid .global_configuration.l9 .global_configuration.e9
-
- label .global_configuration.l10 -text "Edge label color: " -bg black -fg lightblue
- entry .global_configuration.e10 -relief sunken -textvariable edge_color_label \
- -bg blue4 -fg gray80 -insertbackground lightyellow
- grid .global_configuration.l10 .global_configuration.e10
-
- label .global_configuration.l11 -text "Cursor color: " -bg black -fg lightblue
- entry .global_configuration.e11 -relief sunken -textvariable main_cursor_color \
- -bg blue4 -fg gray80 -insertbackground lightyellow
- grid .global_configuration.l11 .global_configuration.e11
-
- label .global_configuration.l12 -text "URL prefix: " -bg black -fg lightblue
- entry .global_configuration.e12 -relief sunken -textvariable url_prefix \
- -bg blue4 -fg gray80 -insertbackground lightyellow
- grid .global_configuration.l12 .global_configuration.e12
-
- label .global_configuration.l13 -text "URL suffix: " -bg black -fg lightblue
- entry .global_configuration.e13 -relief sunken -textvariable url_suffix \
- -bg blue4 -fg gray80 -insertbackground lightyellow
- grid .global_configuration.l13 .global_configuration.e13
-
- label .global_configuration.l14a -text "Graph Drawing Mode: " -bg black -fg lightblue
- label .global_configuration.l14b -text "" -bg black -fg lightblue
- radiobutton .global_configuration.e14a -relief sunken -variable input_type \
- -text " From Data File " -value "DATA" -bg blue4 -fg gray80
- radiobutton .global_configuration.e14b -relief sunken -variable input_type \
- -text " Manual Drawing " -value "MANUAL" -bg blue4 -fg gray80
- grid .global_configuration.l14a .global_configuration.e14a
- grid .global_configuration.l14b .global_configuration.e14b
-
- label .global_configuration.l15 -text "Edge Color (Manual): " -bg black -fg lightblue
- entry .global_configuration.e15 -relief sunken -textvariable fake_edge_color \
- -bg blue4 -fg gray80 -insertbackground lightyellow
- grid .global_configuration.l15 .global_configuration.e15
-
-}
-
-proc Smith_Waterman {} {
-
- set is_canvas_there [winfo exist .phylo.canvas]
-
- destroy .smith_waterman
-
- global fasta_to_run
- global sw_node_A
- global sw_node_B
- global database_dir
- global database_ext
- global smith_waterman_counter
-
- set sw_node_A ""
- set sw_node_B ""
-
- set fasta_to_run "ssearch34"
- set database_dir "./Database/TIGR/"
- set database_ext "txt"
- set smith_waterman_counter 0
-
- toplevel .smith_waterman
- .smith_waterman config -bg black
- if {$is_canvas_there == 1} {
- wm transient .smith_waterman .phylo.canvas
- }
- wm title .smith_waterman "Smith Waterman Search"
- wm protocol .smith_waterman WM_DELETE_WINDOW "destroy .smith_waterman"
-
- label .smith_waterman.db -text "database: " -bg black -fg lightblue
- entry .smith_waterman.db_dir -relief sunken -textvariable database_dir \
- -bg blue4 -fg gray80 -insertbackground lightyellow
- grid .smith_waterman.db .smith_waterman.db_dir
-
- label .smith_waterman.ext -text "file ext: " -bg black -fg lightblue
- entry .smith_waterman.ext_entry -relief sunken -textvariable database_ext \
- -bg blue4 -fg gray80 -insertbackground lightyellow
- grid .smith_waterman.ext .smith_waterman.ext_entry
-
- label .smith_waterman.fasta -text "program: " -bg black -fg lightblue
- entry .smith_waterman.fasta2run -relief sunken -textvariable fasta_to_run \
- -bg blue4 -fg gray80 -insertbackground lightyellow
- grid .smith_waterman.fasta .smith_waterman.fasta2run
-
- label .smith_waterman.label_A -text "Node A: " -bg black -fg lightblue
- entry .smith_waterman.entry_A -relief sunken -textvariable sw_node_A \
- -bg blue4 -fg yellow -insertbackground lightyellow
- grid .smith_waterman.label_A .smith_waterman.entry_A
-
- label .smith_waterman.label_B -text "Node B: " -bg black -fg lightblue
- entry .smith_waterman.entry_B -relief sunken -textvariable sw_node_B \
- -bg blue4 -fg yellow -insertbackground lightyellow
- grid .smith_waterman.label_B .smith_waterman.entry_B
-
- label .smith_waterman.empty -text "" -bg black
-
- button .smith_waterman.run_it -text "Show Alignment" \
- -command "Show_Alignment"
-
- button .smith_waterman.dismiss -text "Dismiss" \
- -command {destroy .smith_waterman}
-
- grid .smith_waterman.empty .smith_waterman.run_it -padx 3 -pady 3
- grid .smith_waterman.empty .smith_waterman.dismiss -padx 3 -pady 3
-
-}
-
-proc Show_Alignment {} {
-
- global sw_node_A
- global sw_node_B
-
- global database_dir
- global database_ext
- global fasta_to_run
- global smith_waterman_counter
-
- incr smith_waterman_counter
-
- exec $fasta_to_run -q -w 100 $database_dir$sw_node_A\.$database_ext $database_dir$sw_node_B\.$database_ext \
- > ./Temp/ssearch_alignment_$smith_waterman_counter.tmp
-
- Display_Alignment
-}
-
-proc Display_Alignment {} {
-
- # global canvas_editor_font_type
- global canvas_editor_font_size
- global canvas_editor_font_style
-
- global sw_node_A
- global sw_node_B
- global fasta_to_run
- global smith_waterman_counter
-
- regsub {\..*} $sw_node_A "" sw_node_A_w
- regsub {\..*} $sw_node_B "" sw_node_B_w
-
- puts $sw_node_A\tvs\t$sw_node_B
-
- # destroy .scrolled_alignment_$smith_waterman_counter
- set t [Scrolled_Text_Fasta .scrolled_alignment_$smith_waterman_counter $sw_node_A $sw_node_A_w $sw_node_B $sw_node_B_w -width 110 -height 40 -font "courier $canvas_editor_font_size $canvas_editor_font_style"]
- set in [open "./Temp/ssearch_alignment_$smith_waterman_counter.tmp" r]
- $t insert end [read $in]
- close $in
- wm title .scrolled_alignment_$smith_waterman_counter$sw_node_A_w$sw_node_B_w "$fasta_to_run Alignment of $sw_node_A vs $sw_node_B"
- wm protocol .scrolled_alignment_$smith_waterman_counter$sw_node_A_w$sw_node_B_w WM_DELETE_WINDOW \
- "destroy .scrolled_alignment_$smith_waterman_counter$sw_node_A_w$sw_node_B_w"
-
- bell
- # incr smith_waterman_counter
-}
-
-#############################################
-# MAIN BODY #
-#############################################
-
-wm title . "PhyloGrapher"
-wm protocol . WM_DELETE_WINDOW "destroy ."
-wm minsize . 520 435
-. config -bg black
-
-global tcl_precision
-set tcl_precision 4
-
-set phylo_logo [image create photo -file ./Images/PhyloGrapherLogo.gif]
-label .phylo_logo -image $phylo_logo -bg black
-place .phylo_logo -x 24 -y 12
-
-# VARIABLES
-
-global abc_tag
-global canvas_background
-global font_color_canvas
-global font_color_label
-global horizontal_size
-global vertical_size
-global genes_range
-global graph_radius
-global genes_id_data_file
-global matrix_data_file
-global graph_data_file
-global html_image_map
-global edges_data_file
-global dots_coord_file
-global dots_coord_file_restore
-
-global level_of_similarity_1
-global level_of_similarity_2
-global level_of_similarity_3
-global level_of_similarity_4
-global level_of_similarity_5
-global level_of_similarity_6
-
-global color_of_similarity_1
-global color_of_similarity_2
-global color_of_similarity_3
-global color_of_similarity_4
-global color_of_similarity_5
-global color_of_similarity_6
-
-global thickness_of_similarity_1
-global thickness_of_similarity_2
-global thickness_of_similarity_3
-global thickness_of_similarity_4
-global thickness_of_similarity_5
-global thickness_of_similarity_6
-
-global edgeCounter
-global fake_identity_counter
-
-global canvas_editor_font_type
-global canvas_editor_font_size
-global canvas_editor_font_style
-
-global object_fill_color
-global object_fill_color_connect
-global object_outline
-global object_outline_connect
-global object_shape
-global object_x_size
-global object_y_size
-
-global node_color_label
-global edge_color_label
-global main_cursor_color
-
-global url_prefix
-global url_suffix
-
-global restore_speed
-global input_type
-global fake_edge_color
-
-set restore_speed "FAST"
-set input_type "DATA"
-set fake_edge_color "yellow"
-
-set object_fill_color "blue4"
-set object_outline "green4"
-set object_fill_color_connect "blue"
-set object_outline_connect "cyan"
-set object_shape "oval"
-# set object_shape "rect"
-set object_x_size 7
-set object_y_size 7
-
-set node_color_label "cyan"
-set edge_color_label "violet"
-set main_cursor_color "white"
-
-set canvas_editor_font_type "helvetica"
-set canvas_editor_font_size 12
-set canvas_editor_font_style "normal"
-
-set font_color_canvas white
-set edgeCounter 0
-set fake_identity_counter 1
-
-set level_of_similarity_1 0.90
-set level_of_similarity_2 0.80
-set level_of_similarity_3 0.75
-set level_of_similarity_4 0.70
-set level_of_similarity_5 0.65
-set level_of_similarity_6 0.60
-
-set color_of_similarity_1 "white"
-set color_of_similarity_2 "gold"
-set color_of_similarity_3 "orange"
-set color_of_similarity_4 "gray80"
-set color_of_similarity_5 "gray60"
-set color_of_similarity_6 "gray40"
-
-set thickness_of_similarity_1 3
-set thickness_of_similarity_2 2
-set thickness_of_similarity_3 1
-set thickness_of_similarity_4 1
-set thickness_of_similarity_5 1
-set thickness_of_similarity_6 1
-
-set horizontal_size 700
-set canvas_background "black"
-
-set genes_id_data_file "./Matrix/My_ID_List.txt"
-set matrix_data_file "./Matrix/My_Matrix_File.txt"
-set post_script_file "phylo_postscript.ps"
-set html_image_map "phylo_image_map.html"
-set dots_coord_file "phylo_coords.txt"
-set dots_coord_file_restore "phylo_coords_r.txt"
-set edges_data_file "phylo_edges.txt"
-set genes_range 0
-
-set url_prefix "www.atgc.org"
-set url_suffix ""
-
-set abc_tag "abc_id_"
-
-# BUTTONS
-
-##########################################
-
-button .howto -text "HowTo" -command {HowTo_PhyloWebify} -bg blue4 -fg lightblue -width 7
-place .howto -x 320 -y 45
-
-button .about -text "About" -command {About_PhyloGrapher} -bg blue4 -fg lightblue -width 7
-place .about -x 320 -y 10
-
-button .exit -text "Exit" -command {destroy .} \
- -bg gray30 -height 1 -fg gray75 -width 7
-place .exit -x 415 -y 10
-
-button .global_color_config -text "Config" -command {Global_Configuration} \
- -bg blue4 -fg lightblue -width 7 -height 1
-place .global_color_config -x 415 -y 45
-
-button .extras -text "Extras" -command {Show_Extras} \
- -bg blue4 -height 1 -fg lightblue -width 7
-place .extras -x 415 -y 80
-
-##########################################
-
-label .id_label -text "List of Genes:" -bg black -fg gray75 -width 13
-place .id_label -x 12 -y 90
-
-label .matrix_label -text "Matrix File:" -bg black -fg gray75 -width 12
-place .matrix_label -x 12 -y 120
-
-entry .id_entry -relief sunken -textvariable genes_id_data_file \
- -bg blue4 -fg white -width 32 -insertbackground lightyellow
-place .id_entry -x 120 -y 90
-
-entry .matrix_entry -relief sunken -textvariable matrix_data_file \
- -bg blue4 -fg white -width 32 -insertbackground lightyellow
-place .matrix_entry -x 120 -y 120
-
-button .generate_graph -text "Load Data into Memory" -command {Create_Graph_from_Data_MEMORY} \
- -bg blue4 -fg cyan -width 20 -height 1
-place .generate_graph -x 60 -y 150
-
-label .gene_number_label -text "Number of Nodes:" -bg black -fg gray75 -width 16
-place .gene_number_label -x 373 -y 125
-
-label .gene_number_entry -textvariable genes_range -bg black -fg gold -width 16
-place .gene_number_entry -x 373 -y 145
-
-label .edges_number_label -text "Number of Edges:" -bg black -fg gray75 -width 16
-place .edges_number_label -x 373 -y 175
-
-label .edges_counter_label -textvariable edgeCounter -bg black -fg gold -width 16
-place .edges_counter_label -x 373 -y 195
-
-##########################################
-
-label .identity_color_map -text "Relationship Color Map:" \
- -bg gray25 -fg gray80 -width 30
-place .identity_color_map -x 30 -y 190
-
-label .level_1 -text "1" -bg gray25 -fg gray80 -width 2
-place .level_1 -x 12 -y 220
-
-label .level_0 -text "1.0 -" -bg gray25 -fg white -width 5
-place .level_0 -x 45 -y 220
-
-entry .level_1_entry -relief sunken -textvariable level_of_similarity_1 \
- -bg gray25 -fg white -width 5 -insertbackground lightyellow
-place .level_1_entry -x 100 -y 220
-
-entry .color_1 -relief sunken -textvariable color_of_similarity_1 \
- -bg gray25 -fg white -width 10 -insertbackground lightyellow
-place .color_1 -x 155 -y 220
-
-entry .thick_1 -relief sunken -textvariable thickness_of_similarity_1 \
- -bg gray25 -fg white -width 3 -insertbackground lightyellow
-place .thick_1 -x 245 -y 220
-###
-label .level_2 -text "2" -bg gray25 -fg gray80 -width 2
-place .level_2 -x 12 -y 250
-
-entry .level_1a_entry -relief sunken -textvariable level_of_similarity_1 \
- -bg gray25 -fg white -width 5 -insertbackground lightyellow
-place .level_1a_entry -x 45 -y 250
-
-entry .level_2_entry -relief sunken -textvariable level_of_similarity_2 \
- -bg gray25 -fg white -width 5 -insertbackground lightyellow
-place .level_2_entry -x 100 -y 250
-
-entry .color_2 -relief sunken -textvariable color_of_similarity_2 \
- -bg gray25 -fg white -width 10 -insertbackground lightyellow
-place .color_2 -x 155 -y 250
-
-entry .thick_2 -relief sunken -textvariable thickness_of_similarity_2 \
- -bg gray25 -fg white -width 3 -insertbackground lightyellow
-place .thick_2 -x 245 -y 250
-###
-label .level_3 -text "3" -bg gray25 -fg gray80 -width 2
-place .level_3 -x 12 -y 280
-
-entry .level_2a_entry -relief sunken -textvariable level_of_similarity_2 \
- -bg gray25 -fg white -width 5 -insertbackground lightyellow
-place .level_2a_entry -x 45 -y 280
-
-entry .level_3_entry -relief sunken -textvariable level_of_similarity_3 \
- -bg gray25 -fg white -width 5 -insertbackground lightyellow
-place .level_3_entry -x 100 -y 280
-
-entry .color_3 -relief sunken -textvariable color_of_similarity_3 \
- -bg gray25 -fg white -width 10 -insertbackground lightyellow
-place .color_3 -x 155 -y 280
-
-entry .thick_3 -relief sunken -textvariable thickness_of_similarity_3 \
- -bg gray25 -fg white -width 3 -insertbackground lightyellow
-place .thick_3 -x 245 -y 280
-###
-label .level_4 -text "4" -bg gray25 -fg gray80 -width 2
-place .level_4 -x 12 -y 310
-
-entry .level_3a_entry -relief sunken -textvariable level_of_similarity_3 \
- -bg gray25 -fg white -width 5 -insertbackground lightyellow
-place .level_3a_entry -x 45 -y 310
-
-entry .level_4_entry -relief sunken -textvariable level_of_similarity_4 \
- -bg gray25 -fg white -width 5 -insertbackground lightyellow
-place .level_4_entry -x 100 -y 310
-
-entry .color_4 -relief sunken -textvariable color_of_similarity_4 \
- -bg gray25 -fg white -width 10 -insertbackground lightyellow
-place .color_4 -x 155 -y 310
-
-entry .thick_4 -relief sunken -textvariable thickness_of_similarity_4 \
- -bg gray25 -fg white -width 3 -insertbackground lightyellow
-place .thick_4 -x 245 -y 310
-###
-label .level_5 -text "5" -bg gray25 -fg gray80 -width 2
-place .level_5 -x 12 -y 340
-
-entry .level_4a_entry -relief sunken -textvariable level_of_similarity_4 \
- -bg gray25 -fg white -width 5 -insertbackground lightyellow
-place .level_4a_entry -x 45 -y 340
-
-entry .level_5_entry -relief sunken -textvariable level_of_similarity_5 \
- -bg gray25 -fg white -width 5 -insertbackground lightyellow
-place .level_5_entry -x 100 -y 340
-
-entry .color_5 -relief sunken -textvariable color_of_similarity_5 \
- -bg gray25 -fg white -width 10 -insertbackground lightyellow
-place .color_5 -x 155 -y 340
-
-entry .thick_5 -relief sunken -textvariable thickness_of_similarity_5 \
- -bg gray25 -fg white -width 3 -insertbackground lightyellow
-place .thick_5 -x 245 -y 340
-###
-label .level_6 -text "6" -bg gray25 -fg gray80 -width 2
-place .level_6 -x 12 -y 370
-
-entry .level_5a_entry -relief sunken -textvariable level_of_similarity_5 \
- -bg gray25 -fg white -width 5 -insertbackground lightyellow
-place .level_5a_entry -x 45 -y 370
-
-entry .level_6_entry -relief sunken -textvariable level_of_similarity_6 \
- -bg gray25 -fg white -width 5 -insertbackground lightyellow
-place .level_6_entry -x 100 -y 370
-
-entry .color_6 -relief sunken -textvariable color_of_similarity_6 \
- -bg gray25 -fg white -width 10 -insertbackground lightyellow
-place .color_6 -x 155 -y 370
-
-entry .thick_6 -relief sunken -textvariable thickness_of_similarity_6 \
- -bg gray25 -fg white -width 3 -insertbackground lightyellow
-place .thick_6 -x 245 -y 370
-###
-label .level_7 -text "no lines below:" -bg gray25 -fg gray80 -width 15
-place .level_7 -x 12 -y 400
-
-entry .level_6a_entry -relief sunken -textvariable level_of_similarity_6 \
- -bg gray25 -fg white -width 5 -insertbackground lightyellow
-place .level_6a_entry -x 140 -y 400
-
-##########################################
-
-label .image_size_label -text "vertical and horizontal\nimage size:" -bg gray25 -fg gray80 -width 20
-place .image_size_label -x 300 -y 235
-
-entry .image_size_entry -relief sunken -textvariable horizontal_size \
- -bg gray25 -fg white -width 5 -insertbackground lightyellow
-place .image_size_entry -x 460 -y 240
-
-##########################################
-
-label .ps_file_label -text "PostScript file:" -bg gray25 -fg gray80 -width 20
-place .ps_file_label -x 300 -y 285
-
-entry .ps_file_entry -relief sunken -textvariable post_script_file \
- -bg gray25 -fg white -width 20 -insertbackground lightyellow
-place .ps_file_entry -x 300 -y 315
-
-button .ps_button -text "Make\nPS" -bg blue4 -fg lightblue -width 3 -height 2 \
- -command {
- .phylo.canvas create rect 0 0 [expr $horizontal_size + 20] [expr $vertical_size + 20]\
- -fill $canvas_background -outline $canvas_background -tag dummy_ps_background
- .phylo.canvas lower dummy_ps_background
- .phylo.canvas postscript -height $vertical_size -width $horizontal_size \
- -x -1 -y 0 -file $post_script_file
- bell
- }
-place .ps_button -x 460 -y 290
-
-##########################################
-
-label .html_file_label -text "HTML image map:" -bg gray25 -fg gray80 -width 20
-place .html_file_label -x 300 -y 355
-
-entry .html_file_entry -relief sunken -textvariable html_image_map \
- -bg gray25 -fg white -width 20 -insertbackground lightyellow
-place .html_file_entry -x 300 -y 385
-
-button .html -text "Make\nHTML" -command {HTML_Image_Map_Generator} \
- -bg blue4 -fg lightblue -width 3 -height 2
-place .html -x 460 -y 360
-
-###########################################
-
-button .startup -text "Run" -command {PhyloGrapher_Canvas} \
- -bg purple -fg yellow -width 8 -height 2
-place .startup -x 265 -y 160
-
-###########################################
-
-Global_Configuration
-
-############################################
-# #
-# THE END #
-# #
-############################################
Deleted: trunk/packages/phylographer/trunk/QUICK_START.txt
===================================================================
--- trunk/packages/phylographer/trunk/QUICK_START.txt 2012-01-11 10:21:36 UTC (rev 9246)
+++ trunk/packages/phylographer/trunk/QUICK_START.txt 2012-01-11 10:24:08 UTC (rev 9247)
@@ -1,39 +0,0 @@
-1. Extract compressed archive.
-2. Go to folder PhyloGrapher_April_03_2003.
-3. on Linux run: PhyloGrapher_April_03_2003_Linux.tcl
- on Windows run: PhyloGrapher_April_03_2003_Windows.tcl
-4. Click on "Load Data into Memory". Wait several seconds,
- after "beep" signal you should see the number 245 under
- the label "Number of Nodes".
-5. Click "Run". Program should create the canvas with
- nodes (genes) on it.
-6. Click "Extras". On the new window click "Node Coords".
-7. Then click "Restore" and watch the movie.
-
-if FASTA package is installed on your computer then:
-
-8. From "Extras" menu click on "Smith-Waterman". New window should appear.
-9. Point the mouse cursor on any node, press <Control-a>
-10. Point the mouse cursor on another node, press <Control-s>
-11. By clicking on "Show Alignment" PhyloGrapher should run FASTA
- or SSEARCH of "node A" against of "node B" and display results of
- search graphically highlighting the critical parameters of an alignment.
-
---------------------------------------------
-
-To test graph traversal (graph search) from extras choose
-"Adjacency List". Click on "Build Adjacency List". Then
-choose any node and click on "Highlight Adjacent Nodes"
-or "Highlight All Nodes in Group".
-
---------------------------------------------
-
-To run PhyloGrapher in "Manual Drawing" mode (to draw custom graphs)
-choose from "Project Configuration" window "Manual Drawing" option and
-click "Run". The empty canvas should appear and using key "n" you can
-create new node. To draw the edge from one node to another point mouse
-over the first node and press "1" key, then point mouse over the second
-node and press "2" key. New edge should appear.
-
---------------------------------------------
-
Deleted: trunk/packages/phylographer/trunk/README.status
===================================================================
--- trunk/packages/phylographer/trunk/README.status 2012-01-11 10:21:36 UTC (rev 9246)
+++ trunk/packages/phylographer/trunk/README.status 2012-01-11 10:24:08 UTC (rev 9247)
@@ -1,7 +0,0 @@
----
-Format: 1
-Status: active
-Source: debmedrepo
-Comment: >
- The source of this package is also in the Debian Med repository.
-
Added: trunk/packages/phylographer/trunk/README.status
===================================================================
--- trunk/packages/phylographer/trunk/README.status (rev 0)
+++ trunk/packages/phylographer/trunk/README.status 2012-01-11 10:24:08 UTC (rev 9247)
@@ -0,0 +1,8 @@
+---
+Format: 1
+Status: removed
+SVNDeleteRevision: 9246
+Comment: >
+ This package was never released in Debian. If you really need to look at
+ that prepareation done to package phylographer again, please checkout
+ before revision 9246 of the Debian Med repository.
Deleted: trunk/packages/phylographer/trunk/README.txt
===================================================================
--- trunk/packages/phylographer/trunk/README.txt 2012-01-11 10:21:36 UTC (rev 9246)
+++ trunk/packages/phylographer/trunk/README.txt 2012-01-11 10:24:08 UTC (rev 9247)
@@ -1,227 +0,0 @@
-PHYLOGRAPHER OVERVIEW:
-
-PhyloGrapher is a program designed to visualize and study
-evolutionary relationships within families of homologous
-genes or proteins (elements). PhyloGrapher is a drawing tool
-that generates custom graphs for the given set of elements.
-In general, it is possible to use PhyloGrapher to visualize
-any type of relations between elements you want.
-
-Each gene or protein on the PhyloGrapher's graph is represented
-as a colored node (vertex) and connected to other nodes (vertices)
-by lines (edges) of variable thickness and color based on the
-similarity of genes or proteins (distance matrix). The position
-of each node in the graph is flexible and adjusted by the user
-to optimize visualization of the inter-relationships between the
-nodes. Consequently, the physical distances on the graph between
-nodes have no information content unlike classical phylogenetic
-trees. The level of similarity between genes or proteins on
-PhyloGrapher's graphs is indicated by color and line thickness.
-
-BASIC ELEMENTS and CHARACTERISTICS of GRAPHS:
-
-The critical characteristics of graphs in general are
-which dots are connected by which lines.
-
-The basic elements and characteristics of a graph are its:
-vertex (node), edge, degree of a vertex (the number of edges
-that touch it), size (number of vertices), path (a route from
-vertex to vertex), length of the path (number of edges in a path),
-planar and non-planar graphs (graph is planar if it can be drawn
-on a plane so that the edges intersect only at the vertices),
-distance (shortest path), diameter (longest distance between two
-vertices), isolated vertex (a vertex of degree zero), adjacent
-vertices (connected by an edge), neighborhood (adjacent vertices)
-and others (you may check links on PhyloGrapher web site).
-A tree is a connected graph containing no cycles.
-
-GOALS TO ACHIEVE WHEN MANIPULATING THE GRAPH:
-
-You may use a variety of criteria to maximize readability
-of the graph. In general, optimization goals can be:
-
-Minimize: edge crossings and graph area
-Maximize: symmetries and smallest angle between edges.
-
-You may pay attention to basic elements of the graph, its
-position and relationship (linkage), and make any kind of
-scientific conclusion at your own risk. PhyloGrapher
-is a GNU software, so the author is not responsible
-for anything what may happen.
-
-INPUT FILES and PROGRAM OPERATION:
-
-To create the graph using PhyloGrapher you need to set up
-two input files: 1. list of elements (genes or proteins) and
-2. distance matrix file. Examine files under directory "Matrix".
-Structure of those files is simple. By clicking on "Load Data Into
-Memory" the program reads list of genes and matrix file and
-creates data structure in the computer memory that will be used to
-construct the graph on canvas by clicking on "Run". Examine all
-those files to get the impression how it works. Nodes may be
-assigned different colors representing different qualities
-(e.g. species or linkage groups). You may paint nodes individually
-or in "batch mode", click on "Node Painter" from "Extras".
-
-PhyloGrapher initially generates non-organized graphs by placing
-all elements in a circle in the same order as in the list of
-elements in the input file and connecting related nodes by lines.
-PhyloGrapher then allows you to move each node around by mouse
-(click and drag) to get optimize interpretation (and esthetic).
-
-You may use Canvas Editor from "Extras" to finish editing
-your graph. You may save coordinates of nodes for the future
-project, click on "Node Coords" under "Extras".
-
-And finally, you may save your creature as postscript file,
-or take the screenshot, if you like, and generate HTML
-image map links for your favorite graph.
-
-PROGRAM FUNCTIONALITY and
-KEY BINDINGS TO MANIPULATE THE IMAGE:
-
-Mouse:
-left button - drag the node,
-middle button - print node ID or edge weight on canvas
-(the same is a double left click on Windows version),
-right button - shake the node and view the degree.
-
-Keyboard:
-"w" - change color of node to white
-"o" - change color of node to orange
-"r" - change color of node to red
-"g" - change color of node to green
-"c" - change color of node to cyan
-"b" - change color of node to blue
-"s" - change color of node to dark blue
-"v" - change color of node to violet
-"p" - change color of node to purple
-
-"Control-d" - delete object from canvas
-(You can not delete nodes and edges generated
-from data file).
-
-To find the node with given ID, print ID in Node Entry
-window and press Enter.
-
-You can change default font size of printed ID and edge weight
-by opening "Canvas Editor" from "Extras" and changing font
-size value in the corresponding window.
-
-You can use PhyloGrapher to draw custom graphs by switching into
-"Manual Mode". Choose from "Project Configuration" window
-"Manual Drawing" option and click "Run". The empty canvas should
-appear and using key "n" you can create new node. To draw the edge
-from one node to another point mouse over the first node and press
-"1" key, then point mouse over the second node and press "2" key.
-New edge should appear.
-
-Dive into a wonderland of shapes and patterns.
-Be warned, it is addictive. Take care and good luck!
-
-GRAPHICAL FASTA/SSEARCH VIEWER:
-
-Current version of PhyloGrapher is highly integrated with
-Bill Pearson's FASTA/SSEARCH programs. You may run FASTA/SSEARCH
-in real time within PhyloGrapher program for given pair of sequences
-(nodes) (FASTA and SSEARCH should be installed on your computer,
-see ftp://ftp.virginia.edu/pub/fasta).
-This feature allows the user to check different alignment parameters,
-such as Smith-Waterman score, identity value, overlap length.
-PhyloGrapher runs FASTA/SSEARCH and parses results of the search
-and represents all data graphically what simplify the validation
-of given alignment.
-
-To run FASTA/SSEARCH within PhyloGrapher:
-From "Extras" menu click on "Smith-Waterman".
-New window should appear with following entry fields:
- 1. Database (directory where you store sequences in fasta format)
- 2. file extension (type of file extension of sequence files)
- 3. program (type of search to perform: SSEARCH by default or FASTA)
- 4. Node A ("query" sequence file)
- 5. Node B ("library" sequence file)
-Point mouse cursor over the "query" node (gene) and press <Control-a>,
-ID of node A in the corresponding entry window should appear. Then point
-the mouse cursor over the "library" node (gene) and press <Control-s>,
-ID of node B in the corresponding entry window should appear. Then
-click on "Show Alignment" and PhyloGrapher will run FASTA or SSEARCH
-with pair of sequences of your choice (node "A" vs node "B") and
-display the graphical representation of the alignment.
-
-You can save results of search as a text file as well as a postscript
-file in the directory "Saved_Work", just click on "save as" button.
-You can change font size of fasta output using "Canvas Editor".
-
-To install FASTA and SSEARCH programs on your computer go to
-Bill Pearson's ftp site (ftp://ftp.virginia.edu/pub/fasta)
-and download current version of FASTA distribution corresponding
-to your computer platform.
-
- On Windows uncompress "zipped" FASTA file and copy
- executables fasta34.exe and ssearch34.exe into
- main WINDOWS directory. Read FASTA documentation.
-
- On Linux you need to compile FASTA source code to get
- executables fasta34 and ssearch34. For that, save
- Makefile.linux as Makefile, execute "make" program.
- Copy fasta34 and ssearch34 into /usr/local/bin directory.
- Read FASTA documentation.
-
-GRAPH TRAVERSAL (GRAPH SEARCH):
-
-Current version of PhyloGrapher has a graph traversal (graph
-search) functionality. For example, you may want to highlight
-all nodes belonging to a single group (connected graph), or
-you like to select adjacent nodes to any given node. From "Extras"
-select "Adjacent nodes" and then generate adjacency list file
-by clicking on "Build Adjacency List". Adjacency list is based
-on the data of the "list" and "matrix" files from main menu.
-Note, with different identity cutoff values ("no lines below...")
-from main menu PhyloGrapher generates different adjacency lists.
-As soon as the adjacency list is available you can select the node
-you like to analyze by pointing the mouse cursor over the node.
-Then click on "Highlight Adjacent Nodes" to highlight adjacent
-nodes or "Highlight All Nodes in Group" to select all nodes
-belonging to a connected graph. In the last case PhyloGrapher
-performs Depth-First Search (DFS) and you can observe the
-progress of search visually.
-
-GRAPH SELF ORGANIZATION:
-
-It was an attempt to implement a modified version of the
-Fruchterman-Rheingold algorithm to organize graph layout in
-automatic mode. From "Extras" choose "Fruchterman-Rheingold"
-and try to run it (Self Organize button) with default
-data set (My_Matrix_File.txt) to get an impression what
-current version can achieve. Of course, it is too far
-from perfection, however nodes move in the right direction,
-and form proper groups. You may play around with parameters
-to generate different graph's layouts.
-It is really in "beta" stage, do not complain.
-
-EXAMPLE DATA:
-
-Current version of PhyloGrapher contains example data for
-three large gene families of Arabidopsis thaliana: NB-ARC
-(nucleotide binding site containing proteins, putative resistance
-genes), cytochrome P450 and putative protein kinases (PK-LRR).
-Protein sequences for selected subsets you can find under directory
-"Database/TIGR". All sequences derived from TIGR database (www.tigr.org)
-by September 2002. Because annotation, prediction of exon-intron structure,
-is dynamic, protein sequences in this release of PhyloGrapher may not
-correspond to current state of these sequences in TIGR or other databases.
-This set is chosen as an example set and author is not responsible for
-its regular update. For your own project you may want to create new
-directory under directory "Database" and place a new set of sequences
-there.
-
-Default set of genes "My_ID_List.txt" is a set of Arabidopsis cytochrome
-P450 putative proteins. Corresponding matrix "My_Matrix_File.txt"
-was derived by parsing of the results of BLAST search. You can find
-the parser under directory "Scripts".
-
-Good luck.
-
-Feedback and comments may be sent to Alexander Kozik,
-email: akozik at atgc.org
-http://www.atgc.org/PhyloGrapher/PhyloGrapher_Welcome.html
Deleted: trunk/packages/phylographer/trunk/adjacency_data.txt
===================================================================
--- trunk/packages/phylographer/trunk/adjacency_data.txt 2012-01-11 10:21:36 UTC (rev 9246)
+++ trunk/packages/phylographer/trunk/adjacency_data.txt 2012-01-11 10:24:08 UTC (rev 9247)
@@ -1,245 +0,0 @@
-At1g01190.1|At2g46660.1|At3g61880.1|
-At1g01280.1|
-At1g01600.1|At4g00360.1|At2g45970.1|At1g63710.1|At5g58860.1|
-At1g05160.1|At2g32440.1|
-At1g11600.1|
-At1g11610.1|At2g30750.1|At2g30770.1|At5g24960.1|At5g24950.1|
-At1g11680.1|At2g17330.1|
-At1g12740.1|
-At1g13080.1|At3g26170.1|At3g26180.1|
-At1g13090.1|At1g13100.1|At3g26830.1|At1g13110.1|At3g26210.1|
-At1g13100.1|At1g13090.1|At1g13110.1|At3g26830.1|At3g26210.1|
-At1g13110.1|At1g13090.1|At1g13100.1|At3g26210.1|At3g26190.1|At3g26830.1|
-At1g13140.1|At1g13150.1|At3g26125.1|
-At1g13150.1|At1g13140.1|At3g26125.1|
-At1g13710.1|At1g74110.1|
-At1g16400.1|At1g16410.1|
-At1g16410.1|At1g16400.1|
-At1g17060.1|
-At1g19630.1|
-At1g24540.1|At3g26125.1|
-At1g28430.1|At4g15330.1|
-At1g31800.1|
-At1g33720.1|At2g45550.1|At2g45570.1|At2g45560.1|At1g33730.1|At2g45560.2|
-At1g33730.1|At1g33720.1|At2g45570.1|At2g45550.1|At2g45560.1|At2g45560.2|
-At1g34540.1|At3g56630.1|
-At1g47620.1|At4g32170.1|At4g39510.1|At5g02900.1|At4g39500.1|At1g47630.1|
-At1g47630.1|At1g47620.1|At4g39510.1|At5g02900.1|At4g32170.1|At4g39500.1|At2g21910.1|At4g39480.1|
-At1g50520.1|At1g50560.1|
-At1g50560.1|At1g50520.1|At3g20100.1|At3g20120.1|At2g14100.1|At3g20140.1|At2g05180.1|
-At1g55940.1|
-At1g57750.1|At1g65340.1|At5g52320.1|
-At1g58260.1|
-At1g63710.1|At1g01600.1|At2g45970.1|At4g00360.1|At5g58860.1|
-At1g64900.1|At2g12190.1|At1g64950.1|At1g64940.1|At1g64930.1|At5g61320.1|
-At1g64930.1|At1g64900.1|At2g12190.1|At1g64950.1|At1g64940.1|At5g61320.1|
-At1g64940.1|At1g64900.1|At1g64930.1|At1g64950.1|At2g12190.1|At5g61320.1|
-At1g64950.1|At1g64900.1|At1g64930.1|At1g64940.1|At2g12190.1|At5g61320.1|
-At1g65340.1|At1g57750.1|At5g52320.1|
-At1g65670.1|At4g15300.1|At4g15396.1|At4g15393.1|At3g30290.1|
-At1g66540.1|At4g37340.1|At4g37360.1|At4g37370.1|At4g37320.1|At4g37330.1|At5g36220.1|At3g28740.1|At2g23190.1|
-At1g67110.1|At5g38450.1|
-At1g69500.1|
-At1g73340.1|
-At1g74110.1|At1g13710.1|
-At1g74540.1|At1g74550.1|
-At1g74550.1|At1g74540.1|
-At1g75130.1|
-At1g78490.1|At5g48000.1|
-At1g79370.1|
-At2g02580.1|At3g26330.1|At3g26320.1|At3g26300.1|At3g26310.1|At3g26290.1|At5g57260.1|
-At2g05180.1|At1g50560.1|At3g20090.1|At3g20960.1|At4g15360.1|At3g20130.1|At4g15350.1|At3g20120.1|At3g20080.1|At3g20940.1|At3g20100.1|At3g20950.1|At3g20140.1|At3g20110.1|At5g47990.1|At2g27000.1|At2g14100.1|At4g15330.1|At4g15380.1|At5g42580.1|At2g27010.1|
-At2g12190.1|At1g64900.1|At1g64930.1|At1g64940.1|At1g64950.1|At5g61320.1|
-At2g14100.1|At1g50560.1|At2g05180.1|At3g20090.1|At3g20100.1|At3g20140.1|At3g20960.1|At3g20130.1|At3g20120.1|At4g15350.1|At3g20080.1|At4g15360.1|At3g20940.1|At3g20110.1|At2g27000.1|At3g20950.1|At5g47990.1|At4g15380.1|At4g15330.1|At5g42580.1|At2g27010.1|
-At2g17330.1|At1g11680.1|
-At2g21910.1|At1g47630.1|At2g23180.1|At4g32170.1|At4g39500.1|
-At2g22330.1|At4g39950.1|
-At2g23180.1|At2g21910.1|At4g39480.1|At4g39490.1|At4g32170.1|At4g39500.1|
-At2g23190.1|At1g66540.1|At2g23220.1|At3g28740.1|At4g37370.1|At4g37320.1|At4g37330.1|At4g37360.1|At4g37340.1|
-At2g23220.1|At2g23190.1|At3g28740.1|At4g37370.1|At4g37330.1|At4g37320.1|
-At2g24180.1|
-At2g25160.1|
-At2g26170.1|
-At2g26710.1|
-At2g27000.1|At2g05180.1|At2g14100.1|At2g27010.1|At4g15350.1|At3g20950.1|At3g20140.1|At3g20130.1|At3g20940.1|At3g20080.1|At5g47990.1|At3g20090.1|At3g20120.1|At3g20100.1|At3g20960.1|At4g15360.1|At4g15380.1|At3g20110.1|At4g15330.1|At5g42580.1|
-At2g27010.1|At2g05180.1|At2g14100.1|At2g27000.1|At4g15350.1|At3g20950.1|At3g20140.1|At3g20960.1|At3g20080.1|At5g47990.1|At3g20120.1|At3g20130.1|At3g20100.1|At3g20090.1|At3g20940.1|At4g15360.1|At3g20110.1|
-At2g27690.1|
-At2g28850.1|At2g28860.1|At2g34500.1|At2g34490.1|
-At2g28860.1|At2g28850.1|At2g34500.1|At2g34490.1|
-At2g29090.1|At5g45340.1|At4g19230.1|
-At2g30490.1|
-At2g30750.1|At1g11610.1|At2g30770.1|At5g24960.1|At5g24950.1|At4g13310.1|
-At2g30770.1|At1g11610.1|At2g30750.1|At5g24960.1|At5g24950.1|At5g42590.1|At4g13310.1|At4g13290.1|
-At2g32440.1|At1g05160.1|
-At2g34490.1|At2g28850.1|At2g28860.1|At2g34500.1|
-At2g34500.1|At2g28850.1|At2g28860.1|At2g34490.1|
-At2g40890.1|
-At2g42250.1|
-At2g42850.1|
-At2g44890.1|At2g45510.1|
-At2g45510.1|At2g44890.1|
-At2g45550.1|At1g33720.1|At1g33730.1|At2g45570.1|At2g45560.1|At2g45560.2|
-At2g45560.1|At1g33720.1|At1g33730.1|At2g45550.1|At2g45570.1|At2g45560.2|
-At2g45560.2|At1g33720.1|At1g33730.1|At2g45550.1|At2g45560.1|At2g45570.1|
-At2g45570.1|At1g33720.1|At1g33730.1|At2g45550.1|At2g45560.1|At2g45560.2|
-At2g45580.1|
-At2g45970.1|At1g01600.1|At1g63710.1|At4g00360.1|At5g58860.1|
-At2g46660.1|At1g01190.1|At3g61880.1|
-At2g46950.1|At2g46960.1|At4g27710.1|
-At2g46960.1|At2g46950.1|At4g27710.1|
-At3g01900.1|
-At3g03470.1|
-At3g10560.1|At5g04630.1|At5g04660.1|At3g10570.1|
-At3g10570.1|At3g10560.1|At5g04660.1|At5g04630.1|
-At3g13730.1|
-At3g14610.1|At3g14660.1|At3g14650.1|At3g14690.1|At3g14640.1|At3g14630.1|At3g14680.1|
-At3g14620.1|
-At3g14630.1|At3g14610.1|At3g14690.1|At3g14660.1|At3g14650.1|At3g14680.1|At3g14640.1|
-At3g14640.1|At3g14610.1|At3g14630.1|At3g14660.1|At3g14690.1|At3g14650.1|At3g14680.1|
-At3g14650.1|At3g14610.1|At3g14630.1|At3g14640.1|At3g14660.1|At3g14690.1|At3g14680.1|
-At3g14660.1|At3g14610.1|At3g14630.1|At3g14640.1|At3g14650.1|At3g14690.1|At3g14680.1|
-At3g14680.1|At3g14610.1|At3g14630.1|At3g14640.1|At3g14650.1|At3g14660.1|At3g14690.1|
-At3g14690.1|At3g14610.1|At3g14630.1|At3g14640.1|At3g14650.1|At3g14660.1|At3g14680.1|
-At3g19270.1|
-At3g20080.1|At2g05180.1|At2g14100.1|At2g27000.1|At2g27010.1|At4g15380.1|At3g20120.1|At3g20090.1|At4g15350.1|At3g20140.1|At3g20100.1|At3g20130.1|At3g20950.1|At3g20940.1|At3g20960.1|At5g47990.1|At3g20110.1|At4g15360.1|At4g15330.1|At5g42580.1|
-At3g20090.1|At2g05180.1|At2g14100.1|At2g27000.1|At2g27010.1|At3g20080.1|At3g20960.1|At4g15360.1|At3g20130.1|At3g20100.1|At3g20120.1|At4g15350.1|At3g20950.1|At3g20940.1|At3g20110.1|At3g20140.1|At5g47990.1|At4g15330.1|At5g42580.1|At4g15380.1|
-At3g20100.1|At1g50560.1|At2g05180.1|At2g14100.1|At2g27000.1|At2g27010.1|At3g20080.1|At3g20090.1|At3g20120.1|At3g20960.1|At4g15350.1|At3g20130.1|At3g20940.1|At5g47990.1|At3g20950.1|At3g20140.1|At3g20110.1|At4g15360.1|At4g15380.1|At4g15330.1|At5g42580.1|
-At3g20110.1|At2g05180.1|At2g14100.1|At2g27000.1|At2g27010.1|At3g20080.1|At3g20090.1|At3g20100.1|At3g20120.1|At3g20960.1|At3g20140.1|At4g15350.1|At3g20130.1|At3g20950.1|At4g15360.1|At3g20940.1|At5g47990.1|At4g15330.1|At4g15380.1|At5g42580.1|
-At3g20120.1|At1g50560.1|At2g05180.1|At2g14100.1|At2g27000.1|At2g27010.1|At3g20080.1|At3g20090.1|At3g20100.1|At3g20110.1|At3g20130.1|At3g20960.1|At3g20140.1|At4g15350.1|At5g47990.1|At3g20940.1|At3g20950.1|At4g15360.1|At4g15380.1|At4g15330.1|At5g42580.1|
-At3g20130.1|At2g05180.1|At2g14100.1|At2g27000.1|At2g27010.1|At3g20080.1|At3g20090.1|At3g20100.1|At3g20110.1|At3g20120.1|At3g20960.1|At3g20940.1|At4g15350.1|At4g15360.1|At3g20950.1|At3g20140.1|At5g47990.1|At4g15380.1|At4g15330.1|At5g42580.1|
-At3g20140.1|At1g50560.1|At2g05180.1|At2g14100.1|At2g27000.1|At2g27010.1|At3g20080.1|At3g20090.1|At3g20100.1|At3g20110.1|At3g20120.1|At3g20130.1|At4g15350.1|At3g20960.1|At3g20950.1|At3g20940.1|At5g47990.1|At4g15360.1|At4g15380.1|At4g15330.1|At5g42580.1|
-At3g20940.1|At2g05180.1|At2g14100.1|At2g27000.1|At2g27010.1|At3g20080.1|At3g20090.1|At3g20100.1|At3g20110.1|At3g20120.1|At3g20130.1|At3g20140.1|At3g20950.1|At4g15350.1|At5g47990.1|At3g20960.1|At4g15360.1|At4g15380.1|At5g42580.1|
-At3g20950.1|At2g05180.1|At2g14100.1|At2g27000.1|At2g27010.1|At3g20080.1|At3g20090.1|At3g20100.1|At3g20110.1|At3g20120.1|At3g20130.1|At3g20140.1|At3g20940.1|At4g15350.1|At5g47990.1|At3g20960.1|At4g15360.1|At4g15380.1|At5g42580.1|
-At3g20960.1|At2g05180.1|At2g14100.1|At2g27000.1|At2g27010.1|At3g20080.1|At3g20090.1|At3g20100.1|At3g20110.1|At3g20120.1|At3g20130.1|At3g20140.1|At3g20940.1|At3g20950.1|At4g15360.1|At4g15350.1|At5g47990.1|At4g15330.1|At5g42580.1|At4g15380.1|
-At3g25180.1|
-At3g26125.1|At1g13140.1|At1g13150.1|At1g24540.1|
-At3g26150.1|At3g26160.1|At3g26170.1|At3g26180.1|
-At3g26160.1|At3g26150.1|At3g26170.1|At3g26180.1|
-At3g26170.1|At1g13080.1|At3g26150.1|At3g26160.1|At3g26180.1|
-At3g26180.1|At1g13080.1|At3g26150.1|At3g26160.1|At3g26170.1|At3g26200.1|
-At3g26190.1|At1g13110.1|At3g26200.1|At3g44250.1|At3g53280.1|At3g53300.1|At5g35715.1|At3g26210.1|At3g53290.1|At3g53305.1|
-At3g26200.1|At3g26180.1|At3g26190.1|At3g44250.1|At3g53280.1|At3g53300.1|At5g35715.1|At3g53290.1|At3g53305.1|
-At3g26210.1|At1g13090.1|At1g13100.1|At1g13110.1|At3g26190.1|At3g26830.1|
-At3g26220.1|At3g26230.1|At3g26280.1|At3g26270.1|
-At3g26230.1|At3g26220.1|At3g26270.1|At3g26280.1|
-At3g26270.1|At3g26220.1|At3g26230.1|At3g26280.1|
-At3g26280.1|At3g26220.1|At3g26230.1|At3g26270.1|
-At3g26290.1|At2g02580.1|At3g26300.1|At3g26310.1|At3g26330.1|At3g26320.1|At5g57260.1|
-At3g26300.1|At2g02580.1|At3g26290.1|At3g26310.1|At3g26330.1|At3g26320.1|At5g57260.1|
-At3g26310.1|At2g02580.1|At3g26290.1|At3g26300.1|At3g26330.1|At3g26320.1|At5g57260.1|
-At3g26320.1|At2g02580.1|At3g26290.1|At3g26300.1|At3g26310.1|At3g26330.1|At5g57260.1|
-At3g26330.1|At2g02580.1|At3g26290.1|At3g26300.1|At3g26310.1|At3g26320.1|At5g57260.1|
-At3g26830.1|At1g13090.1|At1g13100.1|At1g13110.1|At3g26210.1|
-At3g28740.1|At1g66540.1|At2g23190.1|At2g23220.1|At4g37370.1|At4g37320.1|At4g37360.1|At4g37340.1|At4g37330.1|At5g36220.1|
-At3g30180.1|At5g38970.1|
-At3g30290.1|At1g65670.1|At4g15300.1|At4g15396.1|At4g15393.1|
-At3g44250.1|At3g26190.1|At3g26200.1|At3g53280.1|At3g53300.1|At5g35715.1|At3g53290.1|At3g53305.1|
-At3g44970.1|
-At3g48270.1|At3g48310.1|At3g48290.1|At3g48320.1|At3g48280.1|At3g48300.1|
-At3g48280.1|At3g48270.1|At3g48290.1|At3g48310.1|At3g48320.1|At3g48300.1|
-At3g48290.1|At3g48270.1|At3g48280.1|At3g48310.1|At3g48320.1|At3g48300.1|
-At3g48300.1|At3g48270.1|At3g48280.1|At3g48290.1|At3g48310.1|At3g48320.1|
-At3g48310.1|At3g48270.1|At3g48280.1|At3g48290.1|At3g48300.1|At3g48320.1|
-At3g48320.1|At3g48270.1|At3g48280.1|At3g48290.1|At3g48300.1|At3g48310.1|
-At3g48520.1|At5g63450.1|
-At3g50660.1|
-At3g52970.1|
-At3g53130.1|
-At3g53280.1|At3g26190.1|At3g26200.1|At3g44250.1|At3g53300.1|At5g35715.1|At3g53290.1|At3g53305.1|
-At3g53290.1|At3g26190.1|At3g26200.1|At3g44250.1|At3g53280.1|At5g35715.1|At3g53300.1|At3g53305.1|
-At3g53300.1|At3g26190.1|At3g26200.1|At3g44250.1|At3g53280.1|At3g53290.1|At5g35715.1|At3g53305.1|
-At3g53305.1|At3g26190.1|At3g26200.1|At3g44250.1|At3g53280.1|At3g53290.1|At3g53300.1|At5g35715.1|
-At3g56630.1|At1g34540.1|
-At3g61035.1|
-At3g61040.1|
-At3g61880.1|At1g01190.1|At2g46660.1|
-At4g00360.1|At1g01600.1|At1g63710.1|At2g45970.1|At5g58860.1|
-At4g12300.1|At4g12310.1|At4g12320.1|
-At4g12310.1|At4g12300.1|At4g12320.1|
-At4g12320.1|At4g12300.1|At4g12310.1|
-At4g12330.1|At5g44620.1|
-At4g13290.1|At2g30770.1|At4g13310.1|At5g24960.1|At5g42590.1|
-At4g13310.1|At2g30750.1|At2g30770.1|At4g13290.1|At5g24960.1|At5g42590.1|At5g24950.1|
-At4g13770.1|At4g31500.1|
-At4g15110.1|
-At4g15300.1|At1g65670.1|At3g30290.1|At4g15396.1|At4g15393.1|
-At4g15310.1|
-At4g15330.1|At1g28430.1|At2g05180.1|At2g14100.1|At2g27000.1|At3g20080.1|At3g20090.1|At3g20100.1|At3g20110.1|At3g20120.1|At3g20130.1|At3g20140.1|At3g20960.1|At4g15360.1|At4g15350.1|At5g47990.1|
-At4g15350.1|At2g05180.1|At2g14100.1|At2g27000.1|At2g27010.1|At3g20080.1|At3g20090.1|At3g20100.1|At3g20110.1|At3g20120.1|At3g20130.1|At3g20140.1|At3g20940.1|At3g20950.1|At3g20960.1|At4g15330.1|At5g47990.1|At4g15360.1|At4g15380.1|At5g42580.1|
-At4g15360.1|At2g05180.1|At2g14100.1|At2g27000.1|At2g27010.1|At3g20080.1|At3g20090.1|At3g20100.1|At3g20110.1|At3g20120.1|At3g20130.1|At3g20140.1|At3g20940.1|At3g20950.1|At3g20960.1|At4g15330.1|At4g15350.1|At5g47990.1|At5g42580.1|
-At4g15380.1|At2g05180.1|At2g14100.1|At2g27000.1|At3g20080.1|At3g20090.1|At3g20100.1|At3g20110.1|At3g20120.1|At3g20130.1|At3g20140.1|At3g20940.1|At3g20950.1|At3g20960.1|At4g15350.1|At5g47990.1|
-At4g15393.1|At1g65670.1|At3g30290.1|At4g15300.1|At4g15396.1|
-At4g15396.1|At1g65670.1|At3g30290.1|At4g15300.1|At4g15393.1|
-At4g15440.1|
-At4g19230.1|At2g29090.1|At5g45340.1|
-At4g20240.1|
-At4g22690.1|At4g22710.1|
-At4g22710.1|At4g22690.1|
-At4g27710.1|At2g46950.1|At2g46960.1|
-At4g31500.1|At4g13770.1|
-At4g31940.1|At4g31970.1|At4g31950.1|
-At4g31950.1|At4g31940.1|At4g31970.1|
-At4g31970.1|At4g31940.1|At4g31950.1|
-At4g32170.1|At1g47620.1|At1g47630.1|At2g21910.1|At2g23180.1|At4g39500.1|At4g39510.1|At4g39480.1|At5g02900.1|At4g39490.1|
-At4g36220.1|At5g04330.1|
-At4g36380.1|
-At4g37310.1|
-At4g37320.1|At1g66540.1|At2g23190.1|At2g23220.1|At3g28740.1|At4g37330.1|At4g37370.1|At4g37340.1|At4g37360.1|At5g36220.1|
-At4g37330.1|At1g66540.1|At2g23190.1|At2g23220.1|At3g28740.1|At4g37320.1|At4g37370.1|At4g37360.1|At4g37340.1|At5g36220.1|
-At4g37340.1|At1g66540.1|At2g23190.1|At3g28740.1|At4g37320.1|At4g37330.1|At4g37360.1|At4g37370.1|At5g36220.1|
-At4g37360.1|At1g66540.1|At2g23190.1|At3g28740.1|At4g37320.1|At4g37330.1|At4g37340.1|At4g37370.1|At5g36220.1|
-At4g37370.1|At1g66540.1|At2g23190.1|At2g23220.1|At3g28740.1|At4g37320.1|At4g37330.1|At4g37340.1|At4g37360.1|At5g36220.1|
-At4g37400.1|At4g37410.1|At5g57220.1|At4g37430.1|
-At4g37410.1|At4g37400.1|At4g37430.1|At5g57220.1|
-At4g37430.1|At4g37400.1|At4g37410.1|At5g57220.1|
-At4g39480.1|At1g47630.1|At2g23180.1|At4g32170.1|At4g39490.1|At4g39510.1|At4g39500.1|
-At4g39490.1|At2g23180.1|At4g32170.1|At4g39480.1|At4g39500.1|
-At4g39500.1|At1g47620.1|At1g47630.1|At2g21910.1|At2g23180.1|At4g32170.1|At4g39480.1|At4g39490.1|At4g39510.1|At5g02900.1|
-At4g39510.1|At1g47620.1|At1g47630.1|At4g32170.1|At4g39480.1|At4g39500.1|At5g02900.1|
-At4g39950.1|At2g22330.1|
-At5g02900.1|At1g47620.1|At1g47630.1|At4g32170.1|At4g39500.1|At4g39510.1|
-At5g04330.1|At4g36220.1|
-At5g04630.1|At3g10560.1|At3g10570.1|At5g04660.1|
-At5g04660.1|At3g10560.1|At3g10570.1|At5g04630.1|
-At5g05260.1|At5g35917.1|
-At5g05690.1|
-At5g06900.1|
-At5g06905.1|
-At5g07990.1|
-At5g08250.1|At5g23190.1|
-At5g09970.1|
-At5g10600.1|At5g10610.1|
-At5g10610.1|At5g10600.1|
-At5g14400.1|
-At5g23190.1|At5g08250.1|
-At5g24900.1|At5g24910.1|
-At5g24910.1|At5g24900.1|
-At5g24950.1|At1g11610.1|At2g30750.1|At2g30770.1|At4g13310.1|At5g24960.1|At5g42590.1|
-At5g24960.1|At1g11610.1|At2g30750.1|At2g30770.1|At4g13290.1|At4g13310.1|At5g24950.1|At5g42590.1|
-At5g25120.1|At5g25130.1|At5g25140.1|At5g25180.1|
-At5g25130.1|At5g25120.1|At5g25140.1|At5g25180.1|
-At5g25140.1|At5g25120.1|At5g25130.1|At5g25180.1|
-At5g25180.1|At5g25120.1|At5g25130.1|At5g25140.1|
-At5g25900.1|
-At5g35715.1|At3g26190.1|At3g26200.1|At3g44250.1|At3g53280.1|At3g53290.1|At3g53300.1|At3g53305.1|
-At5g35917.1|At5g05260.1|
-At5g36110.1|At5g36140.1|
-At5g36140.1|At5g36110.1|
-At5g36220.1|At1g66540.1|At3g28740.1|At4g37320.1|At4g37330.1|At4g37340.1|At4g37360.1|At4g37370.1|
-At5g38450.1|At1g67110.1|
-At5g38970.1|At3g30180.1|
-At5g42580.1|At2g05180.1|At2g14100.1|At2g27000.1|At3g20080.1|At3g20090.1|At3g20100.1|At3g20110.1|At3g20120.1|At3g20130.1|At3g20140.1|At3g20940.1|At3g20950.1|At3g20960.1|At4g15350.1|At4g15360.1|At5g47990.1|
-At5g42590.1|At2g30770.1|At4g13290.1|At4g13310.1|At5g24950.1|At5g24960.1|
-At5g42650.1|
-At5g44620.1|At4g12330.1|
-At5g45340.1|At2g29090.1|At4g19230.1|
-At5g47990.1|At2g05180.1|At2g14100.1|At2g27000.1|At2g27010.1|At3g20080.1|At3g20090.1|At3g20100.1|At3g20110.1|At3g20120.1|At3g20130.1|At3g20140.1|At3g20940.1|At3g20950.1|At3g20960.1|At4g15330.1|At4g15350.1|At4g15360.1|At4g15380.1|At5g42580.1|
-At5g48000.1|At1g78490.1|
-At5g52320.1|At1g57750.1|At1g65340.1|
-At5g52400.1|
-At5g57220.1|At4g37400.1|At4g37410.1|At4g37430.1|
-At5g57260.1|At2g02580.1|At3g26290.1|At3g26300.1|At3g26310.1|At3g26320.1|At3g26330.1|
-At5g58860.1|At1g01600.1|At1g63710.1|At2g45970.1|At4g00360.1|
-At5g61320.1|At1g64900.1|At1g64930.1|At1g64940.1|At1g64950.1|At2g12190.1|
-At5g63450.1|At3g48520.1|
-At5g67310.1|
Deleted: trunk/packages/phylographer/trunk/phylo_P450_coords.txt
===================================================================
--- trunk/packages/phylographer/trunk/phylo_P450_coords.txt 2012-01-11 10:21:36 UTC (rev 9246)
+++ trunk/packages/phylographer/trunk/phylo_P450_coords.txt 2012-01-11 10:24:08 UTC (rev 9247)
@@ -1,245 +0,0 @@
-At1g01190.1 63 184
-At1g01280.1 411 681
-At1g01600.1 343 624
-At1g05160.1 596 303
-At1g11600.1 441 681
-At1g11610.1 153 413
-At1g11680.1 403 653
-At1g12740.1 470 681
-At1g13080.1 414 80
-At1g13090.1 424 106
-At1g13100.1 424 155
-At1g13110.1 388 106
-At1g13140.1 449 637
-At1g13150.1 449 556
-At1g13710.1 684 588
-At1g16400.1 503 679
-At1g16410.1 539 679
-At1g17060.1 624 681
-At1g19630.1 650 678
-At1g24540.1 510 596
-At1g28430.1 257 268
-At1g31800.1 672 665
-At1g33720.1 631 280
-At1g33730.1 518 280
-At1g34540.1 598 678
-At1g47620.1 523 407
-At1g47630.1 524 520
-At1g50520.1 347 393
-At1g50560.1 357 360
-At1g55940.1 680 641
-At1g57750.1 323 615
-At1g58260.1 683 615
-At1g63710.1 409 583
-At1g64900.1 545 633
-At1g64930.1 545 542
-At1g64940.1 568 588
-At1g64950.1 651 541
-At1g65340.1 283 615
-At1g65670.1 45 238
-At1g66540.1 331 441
-At1g67110.1 227 661
-At1g69500.1 685 532
-At1g73340.1 685 504
-At1g74110.1 684 559
-At1g74540.1 663 497
-At1g74550.1 663 460
-At1g75130.1 686 477
-At1g78490.1 306 672
-At1g79370.1 686 446
-At2g02580.1 83 78
-At2g05180.1 386 366
-At2g12190.1 651 632
-At2g14100.1 449 350
-At2g17330.1 430 653
-At2g21910.1 355 466
-At2g22330.1 653 415
-At2g23180.1 415 466
-At2g23190.1 289 377
-At2g23220.1 228 378
-At2g24180.1 683 412
-At2g25160.1 684 388
-At2g26170.1 687 359
-At2g26710.1 685 337
-At2g27000.1 421 361
-At2g27010.1 471 328
-At2g27690.1 684 312
-At2g28850.1 662 324
-At2g28860.1 575 324
-At2g29090.1 303 567
-At2g30490.1 683 279
-At2g30750.1 96 356
-At2g30770.1 211 355
-At2g32440.1 560 303
-At2g34490.1 618 381
-At2g34500.1 619 343
-At2g40890.1 684 209
-At2g42250.1 682 180
-At2g42850.1 682 145
-At2g44890.1 684 233
-At2g45510.1 683 258
-At2g45550.1 611 242
-At2g45560.1 518 199
-At2g45560.2 631 199
-At2g45570.1 542 242
-At2g45580.1 682 116
-At2g45970.1 426 541
-At2g46660.1 96 145
-At2g46950.1 662 105
-At2g46960.1 625 142
-At3g01900.1 682 76
-At3g03470.1 679 51
-At3g10560.1 136 501
-At3g10570.1 138 538
-At3g13730.1 654 15
-At3g14610.1 578 169
-At3g14620.1 676 26
-At3g14630.1 580 79
-At3g14640.1 506 78
-At3g14650.1 600 23
-At3g14660.1 490 131
-At3g14680.1 490 22
-At3g14690.1 599 130
-At3g19270.1 631 13
-At3g20080.1 383 175
-At3g20090.1 484 305
-At3g20100.1 477 235
-At3g20110.1 484 257
-At3g20120.1 487 277
-At3g20130.1 460 213
-At3g20140.1 439 193
-At3g20940.1 411 181
-At3g20950.1 354 179
-At3g20960.1 328 191
-At3g25180.1 468 18
-At3g26125.1 475 596
-At3g26150.1 435 17
-At3g26160.1 394 16
-At3g26170.1 435 53
-At3g26180.1 394 53
-At3g26190.1 360 133
-At3g26200.1 360 51
-At3g26210.1 388 155
-At3g26220.1 609 470
-At3g26230.1 578 440
-At3g26270.1 609 512
-At3g26280.1 645 440
-At3g26290.1 98 20
-At3g26300.1 145 117
-At3g26310.1 56 117
-At3g26320.1 56 42
-At3g26330.1 145 41
-At3g26830.1 457 129
-At3g28740.1 259 401
-At3g30180.1 236 538
-At3g30290.1 70 238
-At3g44250.1 188 51
-At3g44970.1 131 15
-At3g48270.1 140 246
-At3g48280.1 159 216
-At3g48290.1 256 246
-At3g48300.1 235 217
-At3g48310.1 140 188
-At3g48320.1 256 187
-At3g48520.1 76 545
-At3g50660.1 166 14
-At3g52970.1 64 13
-At3g53130.1 37 18
-At3g53280.1 188 145
-At3g53290.1 248 18
-At3g53300.1 306 18
-At3g53305.1 306 169
-At3g56630.1 566 679
-At3g61035.1 21 37
-At3g61040.1 17 64
-At3g61880.1 35 145
-At4g00360.1 342 541
-At4g12300.1 561 368
-At4g12310.1 525 324
-At4g12320.1 494 369
-At4g12330.1 264 684
-At4g13290.1 153 298
-At4g13310.1 153 341
-At4g13770.1 19 528
-At4g15110.1 15 98
-At4g15300.1 107 207
-At4g15310.1 15 126
-At4g15330.1 288 268
-At4g15350.1 292 241
-At4g15360.1 294 299
-At4g15380.1 307 213
-At4g15393.1 16 207
-At4g15396.1 56 289
-At4g15440.1 12 177
-At4g19230.1 270 531
-At4g20240.1 13 151
-At4g22690.1 16 272
-At4g22710.1 16 303
-At4g27710.1 662 142
-At4g31500.1 19 563
-At4g31940.1 32 401
-At4g31950.1 90 402
-At4g31970.1 60 355
-At4g32170.1 391 520
-At4g36220.1 46 573
-At4g36380.1 19 340
-At4g37310.1 19 372
-At4g37320.1 305 411
-At4g37330.1 216 411
-At4g37340.1 210 497
-At4g37360.1 310 497
-At4g37370.1 261 486
-At4g37400.1 46 510
-At4g37410.1 81 432
-At4g37430.1 46 462
-At4g39480.1 478 508
-At4g39490.1 478 422
-At4g39500.1 391 407
-At4g39510.1 499 463
-At4g39950.1 619 414
-At5g02900.1 566 463
-At5g04330.1 46 610
-At5g04630.1 87 476
-At5g04660.1 182 476
-At5g05260.1 78 644
-At5g05690.1 19 603
-At5g06900.1 19 633
-At5g06905.1 31 658
-At5g07990.1 54 673
-At5g08250.1 88 579
-At5g09970.1 86 676
-At5g10600.1 73 607
-At5g10610.1 105 607
-At5g14400.1 113 678
-At5g23190.1 125 579
-At5g24900.1 143 647
-At5g24910.1 143 610
-At5g24950.1 211 275
-At5g24960.1 96 274
-At5g25120.1 144 562
-At5g25130.1 176 611
-At5g25140.1 176 576
-At5g25180.1 208 561
-At5g25900.1 140 679
-At5g35715.1 249 97
-At5g35917.1 111 644
-At5g36110.1 174 659
-At5g36140.1 203 658
-At5g36220.1 194 441
-At5g38450.1 227 629
-At5g38970.1 235 594
-At5g42580.1 307 325
-At5g42590.1 246 312
-At5g42650.1 171 682
-At5g44620.1 264 642
-At5g45340.1 270 593
-At5g47990.1 330 346
-At5g48000.1 281 672
-At5g52320.1 303 648
-At5g52400.1 338 680
-At5g57220.1 16 432
-At5g57260.1 117 78
-At5g58860.1 427 624
-At5g61320.1 634 588
-At5g63450.1 76 515
-At5g67310.1 366 681
Deleted: trunk/packages/phylographer/trunk/phylo_PK_LRR_coords.txt
===================================================================
--- trunk/packages/phylographer/trunk/phylo_PK_LRR_coords.txt 2012-01-11 10:21:36 UTC (rev 9246)
+++ trunk/packages/phylographer/trunk/phylo_PK_LRR_coords.txt 2012-01-11 10:24:08 UTC (rev 9247)
@@ -1,206 +0,0 @@
-At1g04210.1 359 676
-At1g05700.1 476 526
-At1g06840.1 302 592
-At1g07550.1 350 505
-At1g07560.1 415 533
-At1g07650.1 402 671
-At1g08590.1 414 647
-At1g09970.1 408 631
-At1g12460.1 432 630
-At1g14390.1 432 673
-At1g17230.1 244 643
-At1g17750.1 620 317
-At1g24650.1 467 630
-At1g25320.1 475 627
-At1g27190.1 353 558
-At1g28440.1 492 618
-At1g29730.1 500 614
-At1g29740.1 508 609
-At1g29750.1 514 663
-At1g31420.1 524 599
-At1g34110.1 547 664
-At1g34210.1 621 169
-At1g34420.1 575 660
-At1g35710.1 133 185
-At1g48480.1 381 94
-At1g49100.1 526 393
-At1g50610.1 212 433
-At1g51790.1 608 657
-At1g51800.1 448 290
-At1g51810.1 317 464
-At1g51820.1 515 479
-At1g51850.1 496 507
-At1g51890.1 421 272
-At1g53420.1 612 504
-At1g53430.1 616 496
-At1g53440.1 621 488
-At1g53730.1 660 516
-At1g55610.1 568 258
-At1g56120.1 602 451
-At1g56130.1 635 454
-At1g56140.1 613 419
-At1g56145.1 641 436
-At1g60630.1 670 432
-At1g60800.1 541 185
-At1g62090.1 449 536
-At1g62950.1 432 595
-At1g63430.1 57 622
-At1g64210.1 151 218
-At1g66150.1 543 534
-At1g66830.1 654 363
-At1g67510.1 654 354
-At1g67720.1 654 344
-At1g68400.1 654 335
-At1g69990.1 291 550
-At1g71830.1 652 136
-At1g72180.1 683 457
-At1g72300.1 683 380
-At1g72460.1 677 357
-At1g73080.1 646 280
-At1g74360.1 680 334
-At1g75640.1 132 307
-At1g75820.1 226 271
-At1g78980.1 46 187
-At1g79620.1 681 308
-At2g01210.1 525 633
-At2g01820.1 539 578
-At2g01950.1 680 286
-At2g02220.1 678 258
-At2g02780.1 459 671
-At2g04300.1 533 414
-At2g07040.1 150 405
-At2g13790.1 619 45
-At2g13800.1 506 44
-At2g14440.1 509 363
-At2g15300.1 92 282
-At2g16250.1 135 356
-At2g19190.1 393 526
-At2g19210.1 371 519
-At2g19230.1 527 442
-At2g20850.1 34 154
-At2g23300.1 261 492
-At2g23950.1 461 83
-At2g24130.1 682 60
-At2g24230.1 227 615
-At2g25790.1 639 17
-At2g26330.1 201 498
-At2g26730.1 607 583
-At2g27060.1 605 13
-At2g28970.1 467 308
-At2g28990.1 400 268
-At2g31880.1 499 22
-At2g33170.1 278 636
-At2g35620.1 564 600
-At2g36570.1 478 26
-At2g37050.1 453 23
-At2g41820.1 425 26
-At2g42290.1 405 49
-At2g45340.1 173 636
-At3g02130.1 395 25
-At3g02880.1 366 56
-At3g03770.1 360 26
-At3g08680.1 569 554
-At3g13065.1 19 187
-At3g13380.1 568 225
-At3g14350.1 660 488
-At3g14840.2 599 491
-At3g17840.1 307 71
-At3g19700.1 409 596
-At3g20190.1 179 433
-At3g21340.1 329 491
-At3g23750.1 283 29
-At3g24240.1 267 55
-At3g24660.1 251 30
-At3g25560.1 458 118
-At3g28040.1 219 29
-At3g28450.1 303 504
-At3g42880.1 28 462
-At3g46340.1 293 332
-At3g46370.1 367 265
-At3g46400.1 332 285
-At3g46420.1 305 300
-At3g47090.1 164 101
-At3g47110.1 136 72
-At3g47570.1 56 114
-At3g47580.1 95 130
-At3g49670.1 186 253
-At3g50230.1 334 612
-At3g51740.1 138 128
-At3g53590.1 264 545
-At3g56100.1 125 142
-At3g56370.1 167 176
-At3g57830.1 408 125
-At4g03390.1 79 154
-At4g08850.1 102 170
-At4g12020.1 97 178
-At4g18640.1 111 456
-At4g20140.1 89 379
-At4g20270.1 184 296
-At4g22730.1 136 623
-At4g23740.1 121 220
-At4g28490.1 454 571
-At4g28650.1 386 647
-At4g29180.1 63 244
-At4g29450.1 60 253
-At4g29990.1 490 338
-At4g30520.1 470 151
-At4g31250.1 37 257
-At4g33430.1 652 79
-At4g34220.1 39 282
-At4g36180.1 47 307
-At4g37250.1 238 513
-At4g39270.1 45 325
-At4g39400.1 526 225
-At5g01890.1 214 176
-At5g01950.1 264 583
-At5g05160.1 607 524
-At5g06820.1 45 372
-At5g06940.1 46 381
-At5g07180.1 156 517
-At5g07280.1 48 400
-At5g10020.1 50 409
-At5g10290.1 542 31
-At5g14210.1 54 427
-At5g16000.1 503 177
-At5g16590.1 327 132
-At5g20480.1 89 70
-At5g20690.1 66 462
-At5g24100.1 69 471
-At5g25930.1 73 479
-At5g35390.1 150 448
-At5g37450.1 82 496
-At5g41180.1 57 571
-At5g43020.1 364 620
-At5g44700.1 89 457
-At5g45780.1 587 183
-At5g45800.1 107 535
-At5g45840.1 111 507
-At5g46330.1 119 549
-At5g48740.1 125 556
-At5g48940.1 239 120
-At5g49660.1 138 569
-At5g49760.1 145 576
-At5g49770.1 152 582
-At5g49780.1 159 588
-At5g51350.1 149 667
-At5g51560.1 174 599
-At5g53320.1 81 669
-At5g53890.1 46 668
-At5g56040.1 113 667
-At5g58150.1 206 618
-At5g58300.1 643 554
-At5g59650.1 290 359
-At5g59660.1 293 390
-At5g59670.1 308 441
-At5g59680.1 294 415
-At5g61480.1 198 669
-At5g62230.1 201 550
-At5g62710.1 245 670
-At5g63410.1 275 677
-At5g63710.1 482 57
-At5g63930.1 303 650
-At5g65240.1 581 32
-At5g65700.1 288 267
-At5g65710.1 313 675
-At5g67200.1 340 654
-At5g67280.1 223 475
Deleted: trunk/packages/phylographer/trunk/phylo_RGenes_coords.txt
===================================================================
--- trunk/packages/phylographer/trunk/phylo_RGenes_coords.txt 2012-01-11 10:21:36 UTC (rev 9246)
+++ trunk/packages/phylographer/trunk/phylo_RGenes_coords.txt 2012-01-11 10:24:08 UTC (rev 9247)
@@ -1,166 +0,0 @@
-At1g10920.1 140 143
-At1g12210.1 372 653
-At1g12220.1 384 614
-At1g12280.1 395 651
-At1g12290.1 447 674
-At1g15890.1 186 474
-At1g17600.1 44 317
-At1g17610.1 19 342
-At1g17615.1 660 157
-At1g27170.1 493 665
-At1g27180.1 472 628
-At1g31540.1 373 310
-At1g33560.1 212 559
-At1g50180.1 527 672
-At1g51480.1 261 474
-At1g52660.1 654 595
-At1g53350.1 92 254
-At1g56510.1 514 472
-At1g56520.1 489 509
-At1g56540.1 546 509
-At1g57650.1 624 672
-At1g58390.1 556 564
-At1g58400.1 551 530
-At1g58410.1 570 505
-At1g58602.1 610 487
-At1g58807.1 570 596
-At1g58848.1 627 596
-At1g59124.1 646 513
-At1g59218.1 663 562
-At1g59620.1 561 674
-At1g59780.1 594 673
-At1g61180.1 658 490
-At1g61190.1 611 447
-At1g61300.1 646 427
-At1g61310.1 678 460
-At1g62630.1 647 412
-At1g63350.1 678 417
-At1g63360.1 651 389
-At1g63730.1 615 393
-At1g63740.1 630 372
-At1g63750.1 522 290
-At1g63870.1 451 290
-At1g63880.1 654 332
-At1g64070.1 479 265
-At1g65850.1 369 190
-At1g66090.1 519 394
-At1g69550.1 526 236
-At1g72840.1 675 315
-At1g72850.1 674 284
-At1g72860.1 671 255
-At1g72870.1 672 226
-At1g72890.1 676 167
-At1g72900.1 655 223
-At1g72910.1 673 198
-At1g72940.1 615 200
-At1g72950.1 621 134
-At2g16870.1 502 260
-At2g17050.1 673 138
-At2g17060.1 674 110
-At2g14080.1 537 190
-At3g04210.1 446 190
-At3g04220.1 564 146
-At3g07040.1 674 78
-At3g14460.1 658 54
-At3g14470.1 641 30
-At3g15700.1 655 631
-At3g25510.1 353 245
-At3g44400.1 539 85
-At3g44480.1 506 130
-At3g44630.1 506 98
-At3g44670.1 473 85
-At3g46530.1 469 53
-At3g46710.1 403 53
-At3g46730.1 436 93
-At3g50950.1 605 21
-At3g51560.1 577 20
-At3g51570.1 549 21
-At4g08450.1 355 390
-At4g09360.1 521 20
-At4g09420.1 491 20
-At4g09430.1 463 20
-At4g10780.1 437 20
-At4g11170.1 406 20
-At4g12010.1 376 20
-At4g12020.1 348 20
-At4g14370.1 470 446
-At4g16860.1 237 158
-At4g16890.1 301 33
-At4g16900.1 355 52
-At4g16920.1 281 182
-At4g16940.1 219 122
-At4g16950.1 339 162
-At4g16960.1 219 57
-At4g16990.1 245 33
-At4g19050.1 198 20
-At4g19060.1 169 20
-At4g19500.1 374 110
-At4g19510.1 317 21
-At4g19520.1 285 20
-At4g19530.1 260 20
-At4g26090.1 232 20
-At4g27190.1 143 21
-At4g27220.1 119 23
-At4g33300.1 237 591
-At4g36140.1 94 22
-At4g36150.1 65 24
-At5g04720.1 280 602
-At5g05400.1 38 31
-At5g11250.1 578 190
-At5g17680.1 29 61
-At5g17880.1 29 91
-At5g17890.1 27 120
-At5g17970.1 25 150
-At5g18350.1 25 176
-At5g18360.1 23 204
-At5g18370.1 22 233
-At5g22690.1 432 337
-At5g35450.1 92 183
-At5g36930.1 25 261
-At5g38340.1 293 253
-At5g38350.1 401 287
-At5g38850.1 609 300
-At5g40060.1 421 395
-At5g40090.1 21 310
-At5g40100.1 44 365
-At5g40910.1 130 385
-At5g40920.1 130 417
-At5g41540.1 126 290
-At5g41550.1 162 326
-At5g41740.1 96 326
-At5g41750.1 127 350
-At5g43470.1 175 183
-At5g43730.1 161 452
-At5g43740.1 161 505
-At5g44510.1 29 446
-At5g44870.1 29 478
-At5g45050.1 77 488
-At5g45060.1 67 517
-At5g45200.1 28 609
-At5g45210.1 43 649
-At5g45230.1 68 668
-At5g45240.1 100 666
-At5g45250.1 67 581
-At5g45260.1 161 533
-At5g45440.1 139 601
-At5g45490.1 139 570
-At5g46260.1 213 352
-At5g46270.1 231 280
-At5g46450.1 416 310
-At5g46470.1 427 443
-At5g46490.1 383 436
-At5g46510.1 305 471
-At5g46520.1 232 435
-At5g47250.1 155 674
-At5g47260.1 185 674
-At5g47280.1 236 632
-At5g48620.1 175 254
-At5g48770.1 216 674
-At5g48780.1 244 676
-At5g49140.1 271 676
-At5g51630.1 413 136
-At5g58120.1 474 338
-At5g63020.1 298 676
-At5g66630.1 325 676
-At5g66900.1 337 654
-At5g66910.1 339 622
Deleted: trunk/packages/phylographer/trunk/phylo_coords.txt
===================================================================
--- trunk/packages/phylographer/trunk/phylo_coords.txt 2012-01-11 10:21:36 UTC (rev 9246)
+++ trunk/packages/phylographer/trunk/phylo_coords.txt 2012-01-11 10:24:08 UTC (rev 9247)
@@ -1,245 +0,0 @@
-At1g01190.1 63 184
-At1g01280.1 411 681
-At1g01600.1 343 624
-At1g05160.1 596 303
-At1g11600.1 441 681
-At1g11610.1 153 413
-At1g11680.1 403 653
-At1g12740.1 470 681
-At1g13080.1 414 80
-At1g13090.1 424 106
-At1g13100.1 424 155
-At1g13110.1 388 106
-At1g13140.1 449 637
-At1g13150.1 449 556
-At1g13710.1 684 588
-At1g16400.1 503 679
-At1g16410.1 539 679
-At1g17060.1 624 681
-At1g19630.1 650 678
-At1g24540.1 510 596
-At1g28430.1 257 268
-At1g31800.1 672 665
-At1g33720.1 631 280
-At1g33730.1 518 280
-At1g34540.1 598 678
-At1g47620.1 523 407
-At1g47630.1 524 520
-At1g50520.1 347 393
-At1g50560.1 357 360
-At1g55940.1 680 641
-At1g57750.1 323 615
-At1g58260.1 683 615
-At1g63710.1 409 583
-At1g64900.1 545 633
-At1g64930.1 545 542
-At1g64940.1 568 588
-At1g64950.1 651 541
-At1g65340.1 283 615
-At1g65670.1 45 238
-At1g66540.1 331 441
-At1g67110.1 227 661
-At1g69500.1 685 532
-At1g73340.1 685 504
-At1g74110.1 684 559
-At1g74540.1 663 497
-At1g74550.1 663 460
-At1g75130.1 686 477
-At1g78490.1 306 672
-At1g79370.1 686 446
-At2g02580.1 83 78
-At2g05180.1 386 366
-At2g12190.1 651 632
-At2g14100.1 449 350
-At2g17330.1 430 653
-At2g21910.1 355 466
-At2g22330.1 653 415
-At2g23180.1 415 466
-At2g23190.1 289 377
-At2g23220.1 228 378
-At2g24180.1 683 412
-At2g25160.1 684 388
-At2g26170.1 687 359
-At2g26710.1 685 337
-At2g27000.1 421 361
-At2g27010.1 471 328
-At2g27690.1 684 312
-At2g28850.1 662 324
-At2g28860.1 575 324
-At2g29090.1 303 567
-At2g30490.1 683 279
-At2g30750.1 96 356
-At2g30770.1 211 355
-At2g32440.1 560 303
-At2g34490.1 618 381
-At2g34500.1 619 343
-At2g40890.1 684 209
-At2g42250.1 682 180
-At2g42850.1 682 145
-At2g44890.1 684 233
-At2g45510.1 683 258
-At2g45550.1 611 242
-At2g45560.1 518 199
-At2g45560.2 631 199
-At2g45570.1 542 242
-At2g45580.1 682 116
-At2g45970.1 426 541
-At2g46660.1 96 145
-At2g46950.1 662 105
-At2g46960.1 625 142
-At3g01900.1 682 76
-At3g03470.1 679 51
-At3g10560.1 136 501
-At3g10570.1 138 538
-At3g13730.1 654 15
-At3g14610.1 578 169
-At3g14620.1 676 26
-At3g14630.1 580 79
-At3g14640.1 506 78
-At3g14650.1 600 23
-At3g14660.1 490 131
-At3g14680.1 490 22
-At3g14690.1 599 130
-At3g19270.1 631 13
-At3g20080.1 383 175
-At3g20090.1 484 305
-At3g20100.1 477 235
-At3g20110.1 484 257
-At3g20120.1 487 277
-At3g20130.1 460 213
-At3g20140.1 439 193
-At3g20940.1 411 181
-At3g20950.1 354 179
-At3g20960.1 328 191
-At3g25180.1 468 18
-At3g26125.1 475 596
-At3g26150.1 435 17
-At3g26160.1 394 16
-At3g26170.1 435 53
-At3g26180.1 394 53
-At3g26190.1 360 133
-At3g26200.1 360 51
-At3g26210.1 388 155
-At3g26220.1 609 470
-At3g26230.1 578 440
-At3g26270.1 609 512
-At3g26280.1 645 440
-At3g26290.1 98 20
-At3g26300.1 145 117
-At3g26310.1 56 117
-At3g26320.1 56 42
-At3g26330.1 145 41
-At3g26830.1 457 129
-At3g28740.1 259 401
-At3g30180.1 236 538
-At3g30290.1 70 238
-At3g44250.1 188 51
-At3g44970.1 131 15
-At3g48270.1 140 246
-At3g48280.1 159 216
-At3g48290.1 256 246
-At3g48300.1 235 217
-At3g48310.1 140 188
-At3g48320.1 256 187
-At3g48520.1 76 545
-At3g50660.1 166 14
-At3g52970.1 64 13
-At3g53130.1 37 18
-At3g53280.1 188 145
-At3g53290.1 248 18
-At3g53300.1 306 18
-At3g53305.1 306 169
-At3g56630.1 566 679
-At3g61035.1 21 37
-At3g61040.1 17 64
-At3g61880.1 35 145
-At4g00360.1 342 541
-At4g12300.1 561 368
-At4g12310.1 525 324
-At4g12320.1 494 369
-At4g12330.1 264 684
-At4g13290.1 153 298
-At4g13310.1 153 341
-At4g13770.1 19 528
-At4g15110.1 15 98
-At4g15300.1 107 207
-At4g15310.1 15 126
-At4g15330.1 288 268
-At4g15350.1 292 241
-At4g15360.1 294 299
-At4g15380.1 307 213
-At4g15393.1 16 207
-At4g15396.1 56 289
-At4g15440.1 12 177
-At4g19230.1 270 531
-At4g20240.1 13 151
-At4g22690.1 16 272
-At4g22710.1 16 303
-At4g27710.1 662 142
-At4g31500.1 19 563
-At4g31940.1 32 401
-At4g31950.1 90 402
-At4g31970.1 60 355
-At4g32170.1 391 520
-At4g36220.1 46 573
-At4g36380.1 19 340
-At4g37310.1 19 372
-At4g37320.1 305 411
-At4g37330.1 216 411
-At4g37340.1 210 497
-At4g37360.1 310 497
-At4g37370.1 261 486
-At4g37400.1 46 510
-At4g37410.1 81 432
-At4g37430.1 46 462
-At4g39480.1 478 508
-At4g39490.1 478 422
-At4g39500.1 391 407
-At4g39510.1 499 463
-At4g39950.1 619 414
-At5g02900.1 566 463
-At5g04330.1 46 610
-At5g04630.1 87 476
-At5g04660.1 182 476
-At5g05260.1 78 644
-At5g05690.1 19 603
-At5g06900.1 19 633
-At5g06905.1 31 658
-At5g07990.1 54 673
-At5g08250.1 88 579
-At5g09970.1 86 676
-At5g10600.1 73 607
-At5g10610.1 105 607
-At5g14400.1 113 678
-At5g23190.1 125 579
-At5g24900.1 143 647
-At5g24910.1 143 610
-At5g24950.1 211 275
-At5g24960.1 96 274
-At5g25120.1 144 562
-At5g25130.1 176 611
-At5g25140.1 176 576
-At5g25180.1 208 561
-At5g25900.1 140 679
-At5g35715.1 249 97
-At5g35917.1 111 644
-At5g36110.1 174 659
-At5g36140.1 203 658
-At5g36220.1 194 441
-At5g38450.1 227 629
-At5g38970.1 235 594
-At5g42580.1 307 325
-At5g42590.1 246 312
-At5g42650.1 171 682
-At5g44620.1 264 642
-At5g45340.1 270 593
-At5g47990.1 330 346
-At5g48000.1 281 672
-At5g52320.1 303 648
-At5g52400.1 338 680
-At5g57220.1 16 432
-At5g57260.1 117 78
-At5g58860.1 427 624
-At5g61320.1 634 588
-At5g63450.1 76 515
-At5g67310.1 366 681
Deleted: trunk/packages/phylographer/trunk/phylo_coords_r.txt
===================================================================
--- trunk/packages/phylographer/trunk/phylo_coords_r.txt 2012-01-11 10:21:36 UTC (rev 9246)
+++ trunk/packages/phylographer/trunk/phylo_coords_r.txt 2012-01-11 10:24:08 UTC (rev 9247)
@@ -1,245 +0,0 @@
-At1g01190.1 63 184
-At1g01280.1 411 681
-At1g01600.1 343 624
-At1g05160.1 596 303
-At1g11600.1 441 681
-At1g11610.1 153 413
-At1g11680.1 403 653
-At1g12740.1 470 681
-At1g13080.1 414 80
-At1g13090.1 424 106
-At1g13100.1 424 155
-At1g13110.1 388 106
-At1g13140.1 449 637
-At1g13150.1 449 556
-At1g13710.1 684 588
-At1g16400.1 503 679
-At1g16410.1 539 679
-At1g17060.1 624 681
-At1g19630.1 650 678
-At1g24540.1 510 596
-At1g28430.1 257 268
-At1g31800.1 672 665
-At1g33720.1 631 280
-At1g33730.1 518 280
-At1g34540.1 598 678
-At1g47620.1 523 407
-At1g47630.1 524 520
-At1g50520.1 347 393
-At1g50560.1 357 360
-At1g55940.1 680 641
-At1g57750.1 323 615
-At1g58260.1 683 615
-At1g63710.1 409 583
-At1g64900.1 545 633
-At1g64930.1 545 542
-At1g64940.1 568 588
-At1g64950.1 651 541
-At1g65340.1 283 615
-At1g65670.1 45 238
-At1g66540.1 331 441
-At1g67110.1 227 661
-At1g69500.1 685 532
-At1g73340.1 685 504
-At1g74110.1 684 559
-At1g74540.1 663 497
-At1g74550.1 663 460
-At1g75130.1 686 477
-At1g78490.1 306 672
-At1g79370.1 686 446
-At2g02580.1 83 78
-At2g05180.1 386 366
-At2g12190.1 651 632
-At2g14100.1 449 350
-At2g17330.1 430 653
-At2g21910.1 355 466
-At2g22330.1 653 415
-At2g23180.1 415 466
-At2g23190.1 289 377
-At2g23220.1 228 378
-At2g24180.1 683 412
-At2g25160.1 684 388
-At2g26170.1 687 359
-At2g26710.1 685 337
-At2g27000.1 421 361
-At2g27010.1 471 328
-At2g27690.1 684 312
-At2g28850.1 662 324
-At2g28860.1 575 324
-At2g29090.1 303 567
-At2g30490.1 683 279
-At2g30750.1 96 356
-At2g30770.1 211 355
-At2g32440.1 560 303
-At2g34490.1 618 381
-At2g34500.1 619 343
-At2g40890.1 684 209
-At2g42250.1 682 180
-At2g42850.1 682 145
-At2g44890.1 684 233
-At2g45510.1 683 258
-At2g45550.1 611 242
-At2g45560.1 518 199
-At2g45560.2 631 199
-At2g45570.1 542 242
-At2g45580.1 682 116
-At2g45970.1 426 541
-At2g46660.1 96 145
-At2g46950.1 662 105
-At2g46960.1 625 142
-At3g01900.1 682 76
-At3g03470.1 679 51
-At3g10560.1 136 501
-At3g10570.1 138 538
-At3g13730.1 654 15
-At3g14610.1 578 169
-At3g14620.1 676 26
-At3g14630.1 580 79
-At3g14640.1 506 78
-At3g14650.1 600 23
-At3g14660.1 490 131
-At3g14680.1 490 22
-At3g14690.1 599 130
-At3g19270.1 631 13
-At3g20080.1 383 175
-At3g20090.1 484 305
-At3g20100.1 477 235
-At3g20110.1 484 257
-At3g20120.1 487 277
-At3g20130.1 460 213
-At3g20140.1 439 193
-At3g20940.1 411 181
-At3g20950.1 354 179
-At3g20960.1 328 191
-At3g25180.1 468 18
-At3g26125.1 475 596
-At3g26150.1 435 17
-At3g26160.1 394 16
-At3g26170.1 435 53
-At3g26180.1 394 53
-At3g26190.1 360 133
-At3g26200.1 360 51
-At3g26210.1 388 155
-At3g26220.1 609 470
-At3g26230.1 578 440
-At3g26270.1 609 512
-At3g26280.1 645 440
-At3g26290.1 98 20
-At3g26300.1 145 117
-At3g26310.1 56 117
-At3g26320.1 56 42
-At3g26330.1 145 41
-At3g26830.1 457 129
-At3g28740.1 259 401
-At3g30180.1 236 538
-At3g30290.1 70 238
-At3g44250.1 188 51
-At3g44970.1 131 15
-At3g48270.1 140 246
-At3g48280.1 159 216
-At3g48290.1 256 246
-At3g48300.1 235 217
-At3g48310.1 140 188
-At3g48320.1 256 187
-At3g48520.1 76 545
-At3g50660.1 166 14
-At3g52970.1 64 13
-At3g53130.1 37 18
-At3g53280.1 188 145
-At3g53290.1 248 18
-At3g53300.1 306 18
-At3g53305.1 306 169
-At3g56630.1 566 679
-At3g61035.1 21 37
-At3g61040.1 17 64
-At3g61880.1 35 145
-At4g00360.1 342 541
-At4g12300.1 561 368
-At4g12310.1 525 324
-At4g12320.1 494 369
-At4g12330.1 264 684
-At4g13290.1 153 298
-At4g13310.1 153 341
-At4g13770.1 19 528
-At4g15110.1 15 98
-At4g15300.1 107 207
-At4g15310.1 15 126
-At4g15330.1 288 268
-At4g15350.1 292 241
-At4g15360.1 294 299
-At4g15380.1 307 213
-At4g15393.1 16 207
-At4g15396.1 56 289
-At4g15440.1 12 177
-At4g19230.1 270 531
-At4g20240.1 13 151
-At4g22690.1 16 272
-At4g22710.1 16 303
-At4g27710.1 662 142
-At4g31500.1 19 563
-At4g31940.1 32 401
-At4g31950.1 90 402
-At4g31970.1 60 355
-At4g32170.1 391 520
-At4g36220.1 46 573
-At4g36380.1 19 340
-At4g37310.1 19 372
-At4g37320.1 305 411
-At4g37330.1 216 411
-At4g37340.1 210 497
-At4g37360.1 310 497
-At4g37370.1 261 486
-At4g37400.1 46 510
-At4g37410.1 81 432
-At4g37430.1 46 462
-At4g39480.1 478 508
-At4g39490.1 478 422
-At4g39500.1 391 407
-At4g39510.1 499 463
-At4g39950.1 619 414
-At5g02900.1 566 463
-At5g04330.1 46 610
-At5g04630.1 87 476
-At5g04660.1 182 476
-At5g05260.1 78 644
-At5g05690.1 19 603
-At5g06900.1 19 633
-At5g06905.1 31 658
-At5g07990.1 54 673
-At5g08250.1 88 579
-At5g09970.1 86 676
-At5g10600.1 73 607
-At5g10610.1 105 607
-At5g14400.1 113 678
-At5g23190.1 125 579
-At5g24900.1 143 647
-At5g24910.1 143 610
-At5g24950.1 211 275
-At5g24960.1 96 274
-At5g25120.1 144 562
-At5g25130.1 176 611
-At5g25140.1 176 576
-At5g25180.1 208 561
-At5g25900.1 140 679
-At5g35715.1 249 97
-At5g35917.1 111 644
-At5g36110.1 174 659
-At5g36140.1 203 658
-At5g36220.1 194 441
-At5g38450.1 227 629
-At5g38970.1 235 594
-At5g42580.1 307 325
-At5g42590.1 246 312
-At5g42650.1 171 682
-At5g44620.1 264 642
-At5g45340.1 270 593
-At5g47990.1 330 346
-At5g48000.1 281 672
-At5g52320.1 303 648
-At5g52400.1 338 680
-At5g57220.1 16 432
-At5g57260.1 117 78
-At5g58860.1 427 624
-At5g61320.1 634 588
-At5g63450.1 76 515
-At5g67310.1 366 681
More information about the debian-med-commit
mailing list