Hi i try to turn this script but i have some error whith join_editor when bring up.
Somebody can help me please

<CODE>
#!/bin/sh
#\ exec stash $0 $@
load_package gap
#normal tk has been replaced by stash
###!/usr/local/bin/wish8.0
#----------------------------------------------------------------------------

# initialise xwindow
tkinit
wm withdraw .
InitTagArray
InitLists
tk_utils_init
InitTagArray
InitCanvasConstants
InitListTrace
#-------------------------

# Useful globato set
set consensus_cutoff 0.01
set quality_cutoff 0
set consensus_mode 2
#----------------------------------------------------------------------------

proc creation_bdd {nb databasename} {
    incr nb 1
    #Création de la base de donnée
    append databasename $nb
    set io [open_db -name $databasename -version 0 -create 1 -access rw]
    lappend io_db $io $databasename $nb
    return $io_db
}

proc ouverture_bdd {databasename} {
    #Création de la base de donnée
    set io [open_db -name $databasename -version 0 -create 0 -access rw]
    return $io
}

proc lecture_contig_SP6 {listseqEXP} {
    regexp {(\d+_(SP6)_([a-zA-Z]+)_[a-zA-Z]+)\.exp} $listseqEXP sample1 contig1 sens1
    lappend liste1 $sample1 $contig1 $sens1 $listseqEXP
    return $liste1
}

proc lecture_contig_T7 {listseqEXP} {
    regexp {(\d+_(T7)_([a-zA-Z]+)_[a-zA-Z]+)\.exp} $listseqEXP sample2 contig2 sens2
    lappend liste2 $sample2 $contig2 $sens2 $listseqEXP
    return $liste2
}

proc pre_assemblage {sample1 sample2 io} {
#Met les 2 noms de fic exp dans la liste sample1
    lappend liste3 $sample1 $sample2
    #Pre Assemblage
    set preassemblage [catch {pre_assemble \     -io $io \     -files $liste3}]
    if {$preassemblage == 1} {
        puts "erreur lors de l'assemblage : $liste3"
        eval exec echo "erreur lors de l'assemblage : $liste3" >> STDOUT.txt
        eval exec echo "************************************************************************" >> echecs.txt
        eval exec echo "erreur lors de l'assemblage : $liste3" >> echecs.txt
        lappend liste3 $preassemblage
        }
    return $liste3
}

proc assemblage_direct {preassemblage io liste3} {
    if {$preassemblage != 1} {
        #Assemblage direct
        set erreur_assemble [assemble_direct \         -io $io \         -files $liste3 \         -output_mode 2]
        puts "erreur_assemble = $erreur_assemble"
        if {$erreur_assemble == ""} {
            puts "séquence assemblé: $liste3"
            puts ""
            set editor 0
            } else {
            puts "La ou les séquence(s) $erreur_assemble est/sont de mauvaise qualitée(s)"
            eval exec echo "La ou les séquence(s) $erreur_assemble est/sont de mauvaise qualitée(s)" >> STDOUT.txt
            puts "vérifier le base calling"
            eval exec echo "vérifier le base calling" >> STDOUT.txt
            puts ""
            eval exec echo "" >> STDOUT.txt
            set editor 1}
        return $editor
    } else {
        return
    }
}

proc info_bdd {preassemblage io} {
    if {$preassemblage != 1} {
        #Informe sur le contenu de la base de donnée
        set db [io_read_database $io]
        eval exec echo "\n" >> STDOUT.txt
        puts "info sur SP6"
        eval exec echo "info sur SP6" >> STDOUT.txt
        set rr [io_read_reading $io 1]
        puts "$rr"
        eval exec echo "$rr" >> STDOUT.txt
        puts ""
        eval exec echo "\n" >> STDOUT.txt
        puts "info sur T7"
        eval exec echo "info sur T7" >> STDOUT.txt
        set rri [io_read_reading $io 2]
        puts $rri
        eval exec echo "$rri" >> STDOUT.txt
        set readingSP6 [io_read_reading_name $io 1]
        puts "Le reading name de la seq SP6: $readingSP6"
        eval exec echo "Le reading name de la seq SP6: $readingSP6" >> STDOUT.txt
        set readingT7 [io_read_reading_name $io 2]
        puts "Le reading name de la seq T7: $readingT7"
        eval exec echo "Le reading name de la seq T7: $readingT7" >> STDOUT.txt
        lappend reading $readingSP6 $readingT7
        return $reading
    } else {
        return
    }
}

proc inverse_complement {preassemblage io readingT7 databasename editor} {
    if {$preassemblage == ""} {
        #Inverse complement le contig T7
        set erreur_complement [complement_contig \                     -io $io \                     -contigs $readingT7]
        if {$erreur_complement == 0} {
            puts "Inverse complementation réalisé"
            eval exec echo "Inverse complementation réalisé" >> STDOUT.txt
        } else {
            puts "Inverse complementation n'a pu être réalisé"
            eval exec echo "Inverse complementation n'a pu être réalisé: contig T7" >> STDOUT.txt
            eval exec echo "Erreur dans la base de donnée : $databasename" >> echecs.txt
            eval exec echo "Inverse complementation n'a pu être réalisé: contig T7" >> echecs.txt
        }
        if {$editor == 1} {
            set EditContigT7 [catch {edit_contig \                         -io $io \                         -contig $readingT7}]
            if {$EditContigT7 == 1} {
                puts "Impossible d'éditer le contig T7"
                eval exec echo "Impossible d'éditer le contig T7" >> echecs.txt
                }
        }
    } else {
        eval exec echo "************************************************************************" >> echecs.txt
        return
    }
}

proc joint_contigs {preassemblage editor databasename readingSP6 readingT7} {
    if {$preassemblage != 1 && $editor == 0} {
        set io [open_db -name $databasename -version 0 -create 0 -access rw]
        puts [exec date >> LOCK]
        set t .cedialog
        destroy $t
        #Joint les 2 contigs
        join_contig -io $io -contig1 $readingSP6  -contig2 $readingT7
        set child [winfo children .]
        update
        #after 10000
        #join_align
        return $io
    } else {
    return   
    }
}

proc fermeture_bdd {io bdd} {

        #Fermeture de la base de donnée
        close_db -io $io
        set databasename $bdd
        set preassemblage ""
        return $databasename

}

proc deverrouillage_bdd {projectdir databasename } {
    #Vérifie si la bdd est utilisé
    if {[file exists $projectdir/$databasename.0.BUSY] == 1} {
        if {[file owned $projectdir/$databasename.0.BUSY] == 1} {
            file delete $projectdir/$databasename.0.BUSY
            file delete $projectdir/LOCK
        } else {
            puts "La base de donnée est en cours d'utilisation, réessayez plus tard"
        }
    }
    return $projectdir
}
#-----------------------------------------------------------------------------

# Useful globato set
set consensus_cutoff 0.01
set quality_cutoff 0
set consensus_mode 2
#

#Situe le programme dans l'arborescence
set dir [pwd]
puts  "Le programme se trouve au niveau:"
puts $dir
puts ""

#Nom de la base de donnée
puts "tapez le nom de la base de donnée:"
set databasename [gets stdin]
set bdd $databasename
puts ""

#Recherche du répertoire de travail
puts "recherche des variables d'environnement, patientez"
puts ""
set temp [open ".temp" r]
set i 0
while {[gets $temp ligne] != -1} {
    puts [lindex $ligne 0]
    set tableaux($i) [lindex $ligne 0]
    incr i 1
}
close $temp
set projectdir $tableaux(0)
set applicationdir $tableaux(1)
global projectdir

# set environment
set HOME $env(HOME)
#Execution du pakage gap4
set STADENROOT /usr/local/staden-linux-1-7-0
set env(STADTABL) $STADENROOT/tables
puts $env(STADTABL)
set env(STADLIB)  $STADENROOT/lib
puts $env(STADLIB)
lappend auto_path $env(STADTABL) $env(STADLIB)

#changement de répertoire vers le repertoire de travail
cd $projectdir

#Vérifie si la bdd est utilisé
if {[file exists $projectdir/$databasename.0.BUSY] == 1} {
    if {[file owned $projectdir/$databasename.0.BUSY] == 1} {
            file delete $projectdir/$databasename.0.BUSY
    } else {
        puts "La base de donnée est en cours d'utilisation, réessayez plus tard"
     }
}

#Crée une liste de tous les fichiers *.exp sans un fichier seqEXP
eval exec ls [glob *.exp] > seqEXP
eval exec date > echecs.txt
eval exec date > STDOUT.txt

puts [exec date > $projectdir/LOCK]

set nb 0
eval exec echo "Liste des echecs:" >> echecs.txt
#Lecture du fic pregap.passed pour ajouter les contig à la bdd
set contiglist [open "pregap.passed" r]
while {[gets $contiglist listseqEXP] != -1} {
    puts "************************************************************************"
    eval exec echo "************************************************************************" >> STDOUT.txt
    set io_db [creation_bdd $nb $databasename]
    set io  [lindex $io_db 0]
    puts "le io de la base de donée: $io"
    eval exec echo "le io de la base de donée: $io" >> STDOUT.txt
    set databasename [lindex $io_db 1]
    puts "le nom \+ le numéro de la base de donnée: $databasename"
    eval exec echo "le nom \+ le numéro de la base de donnée: $databasename" >> STDOUT.txt
    set nb [lindex $io_db 2]
    puts "le numéro de la base de donnée: $nb"
    eval exec echo  "le numéro de la base de donnée: $nb" >> STDOUT.txt

    set liste1 [lecture_contig_SP6 $listseqEXP]
    set sample1 [lindex $liste1 0]
    set contig1 [lindex $liste1 1]
    set sens1 [lindex $liste1 2]
    set listseqEXP [lindex $liste1 3]
    puts "ligne lu : $listseqEXP"
    eval exec echo "ligne lu : $listseqEXP" >> STDOUT.txt

    if {$sens1 == "SP6"} {

        if {[gets $contiglist listseqEXP] != -1} {
        set liste2 [lecture_contig_T7 $listseqEXP]
        set sample2 [lindex $liste2 0]
        set contig2 [lindex $liste2 1]
        set sens2 [lindex $liste2 2]
        set listseqEXP [lindex $liste2 3]
        puts "ligne lu : $listseqEXP"
        eval exec echo "ligne lu : $listseqEXP" >> STDOUT.txt

        set liste3 [pre_assemblage $sample1 $sample2 $io]
        set sample1 [lindex $liste3 0]
        set sample2 [lindex $liste3 1]
        set preassemblage [lindex $liste3 1]
        set liste3 ""
        lappend liste3 $sample1 $sample2

        set editor [assemblage_direct $preassemblage $io $liste3]

        set reading [info_bdd $preassemblage $io]
        set readingSP6 [lindex $reading 0]
        set readingT7 [lindex $reading 1]

        inverse_complement $preassemblage $io $readingT7 $databasename $editor

        lappend contigs $readingSP6 $readingT7
        check_assembly -io $io -contigs $contigs -max_pmismatch 1
        flush_contig_order -io $io

        close_db -io $io
        deverrouillage_bdd $projectdir $databasename

        #exec $applicationdir/contigeditor $databasename $readingSP6
        joint_contigs $preassemblage $editor $databasename $readingSP6 $readingT7
        #exec $applicationdir/editor.tcl $editor $databasename $readingSP6 $readingT7
        set projectdir [deverrouillage_bdd $projectdir $databasename]

        set io [open_db -name $databasename -version 0 -access rw]

        set projectdir [deverrouillage_bdd $projectdir $databasename]

        set databasename [fermeture_bdd $io $bdd]
        puts "************************************************************************"
        eval exec echo "************************************************************************" >> STDOUT.txt
        puts ""
        eval exec echo "" >> STDOUT.txt
        puts ""
        eval exec echo "" >> STDOUT.txt
            }
        }
    }
close $contiglist
puts "je sors de la boucle"
file delete $projectdir/LOCK

deverrouillage_bdd $projectdir $databasename

exit
<\CODE>