OUTPUT BUFFER:
#!/usr/local/ActiveTcl/bin/tclsh package require tclcluspack proc EcritLeTfa {FilOut LesNoms LesSequences} { if {$FilOut eq ""} { set FilOut [DemandeEtSauveFichier "tfa" 1] } if {$FilOut eq ""} {return} set f [open $FilOut w] foreach Nm $LesNoms s $LesSequences { if {[string trim $Nm] eq ""} {continue} puts $f ">$Nm" set D 0 while {$D < [string length $s]} { set F [expr {$D + 59}] set Linit [string range $s $D $F] set L [string map [list Z - . -] $Linit] puts $f "$L" incr D 60 } } close $f return } proc LitLeTFA {file aNom aSeq} { upvar $aNom Nom upvar $aSeq Seq set Lignes [LesLignes $file] lappend Lignes ">" set n 0 set laseq "" foreach l $Lignes { set l [string trim $l] if {$l eq ""} {continue} if {[string index $l 0] eq ">"} { if {$laseq ne ""} { set laseq [string map [list " " "" "-" "." "\n" ""] $laseq] set laseq [string toupper $laseq] lappend Nom $lenom set Seq($lenom) $laseq set laseq "" incr n } set l [string trim [string range $l 1 end]] set ib [string first " " $l] if {$ib == -1} { set ib end } else { incr ib -1 } set lenom [string range $l 0 $ib] } else { append laseq $l } } return $n } proc LesLignes {f} { set d [open $f r] set L [split [read -nonewline $d] \n] close $d return $L } set res [list] if {[lindex $argv 0] ne ""} { set f [lindex $argv 0] LitLeTFA $f nom seq set res [array get seq] puts "\nres [llength $res]" } else { set sq "ACDEFGHIKLMNPQRSTVWY............................................................" for {set i 0} {$i < 100} {incr i} { set seq "" for {set j 0} {$j < 1000} {incr j} { set k [expr {int(60*rand())}] append seq [string index $sq $k] } lappend Ln seq$i lappend Ls $seq lappend res "seq$i" $seq } EcritLeTfa toto.tfa $Ln $Ls } puts "len res [llength $res]" flush stdout puts "" update idletasks set out [Tclcluspack $res -dt alignment -cm hierar -nbc secator] puts "[join $out \n]" exit