can't read "argv": no such variable
while executing
"lindex $argv 0"
(in namespace eval "::request" script line 440784)
invoked from within
"namespace eval ::request $script"
("::try" body line 12)
OUTPUT BUFFER:
package provide app-ordalie 1.0
proc 2GO {args} {
#Load
#LesTypesDeRequetes
#LesRequetes
#LesGO
#$Requete WhatIsIt
#$Requete LesLiens -> LesGO
#$GO LesLiens -> LesRequetes
global TableauInterrogation2GO
if {[string equal -nocase $args "Load"] && ![info exists TableauInterrogation2GO(EstCharge)]} {
if {[info exists TableauInterrogation2GO]} {unset TableauInterrogation2GO}
set TableauInterrogation2GO(EstCharge) 1
Load2GO TableauInterrogation2GO
return
}
if {[string equal -nocase $args "unset"]} {
if {[info exists TableauInterrogation2GO]} {unset TableauInterrogation2GO}
return
}
set Quoi [join $args ","]
if {[info exists TableauInterrogation2GO($Quoi)]} {
return [lsort -unique [set TableauInterrogation2GO($Quoi)]]
}
###################CHARGE Fichier2GO###################
if {![info exists TableauInterrogation2GO(EstCharge)]} {
set TableauInterrogation2GO(EstCharge) 1
Load2GO TableauInterrogation2GO
}
if {![info exists TableauInterrogation2GO($Quoi)]} {return}
return [lsort -unique [set TableauInterrogation2GO($Quoi)]]
}
proc 2Pi {} {
return [expr {2.*acos(-1.)}]
}
proc AADansPil {file} {
global Sequences
global LNOrdali
global ListeDesPiliersDuGroupe
DecortiqueUnMSF
CreeLesPiliers
set Nt [llength $LNOrdali]
foreach seuil {60 65 70 75 80 85 90 95 100} {
set NIndi($seuil) 0
}
foreach p [set ListeDesPiliersDuGroupe(GroupeToutLeMonde)] {
foreach seuil {60 65 70 75 80 85 90 95 100} {
set Nb [regsub -all {\.} $p "" tmp]
if {[expr ($Nt.-$Nb.)/$Nt*100] > $seuil} {incr NIndi($seuil)}
}
}
return
}
proc AADuNomDuFichier {NomDuFichier {AvecAlias AvecAlias}} {
global AAAlias
if { ! [info exists AAAlias] } {
set AAAlias(ly1) lys
set AAAlias(ly2) lys
set AAAlias(pha) phe
set AAAlias(phb) phe
set AAAlias(gla) gly
set AAAlias(glb) gly
}
set AA3 [string range $NomDuFichier 0 2]
if { $AvecAlias != "AvecAlias" && [info exists AAAlias($AA3)]} {
return [set AAAlias($AA3)]
} else {
return $AA3
}
}
proc AAFrequents2 {FichierCod} {
if {![file exist $FichierCod]} {return}
set Nom [file tail $FichierCod]
append First "$Nom\t"
set LesFreq [CreeListeCodonFrequency $FichierCod]
set LesFreqTrie [lsort -index 2 -decreasing $LesFreq]
set LesFirst [lrange $LesFreqTrie 0 2]
foreach AA $LesFirst {
set aa [lindex $AA 0]
set Codon [lindex $AA 1]
append First "$aa\($Codon\)\t"
}
return $First
}
proc AAFrequents2PourTous {} {
foreach Nom [ListeDesPABs] {
set FichierCod "[RepertoireDuGenome]/codonfrequency/tables_codonfrequency/$Nom.cod"
set AA [AAFrequents2 $FichierCod]
append Tous "$AA\n"
}
return $Tous
}
proc AALePlusDifferent {FichierCodMusRef FichierCodSeq} {
set LesDifferences [CompareDeuxTablesCodonFrequency $FichierCodMusRef $FichierCodSeq]
set LePlus [lrange $LesDifferences 0 0]
return $LePlus
}
proc AALePlusFrequent {FichierCod} {
set LesFreq [CreeListeCodonFrequency $FichierCod]
set LesFreqTrie [lsort -index 2 -decreasing $LesFreq]
set LesFirst [lrange $LesFreqTrie 0 0]
foreach AA $LesFirst {
set f [lindex $AA 2]
set fa [format "%.2f" $f]
set AA [lreplace $AA 2 2 $fa]
lappend LesFirstArr $AA
}
return $LesFirstArr
}
proc AALesPlusDifferents2 {FichierCodMusRef FichierCodSeq} {
set Nom [file tail $FichierCodSeq]
set LesDifferences [CompareDeuxTablesCodonFrequency $FichierCodMusRef $FichierCodSeq]
set LesPlus [lrange $LesDifferences 0 2]
append Plus "$Nom\t"
foreach PlusDifferent $LesPlus {
set aa [lindex $PlusDifferent 1]
set codon [lindex $PlusDifferent 2]
append Plus "$aa\($codon\)\t"
}
return $Plus
}
proc AALesPlusDifferents2PourTous {} {
set FichierCodMusRef "[RepertoireDuGenome]/codonfrequency/mus.cod"
foreach Nom [ListeDesPABs] {
set FichierCodSeq "[RepertoireDuGenome]/codonfrequency/tables_codonfrequency/$Nom.cod"
set Plus [AALesPlusDifferents2 $FichierCodMusRef $FichierCodSeq]
append Tous "$Plus\n"
}
return $Tous
}
proc AALesPlusDifferentsPourTous {} {
set FichierCodMusRef "[RepertoireDuGenome]/codonfrequency/mus.cod"
foreach Nom [ListeDesPABs] {
set FichierCodSeq "[RepertoireDuGenome]/codonfrequency/tables_codonfrequency/$Nom.cod"
set LePlus [AALePlusDifferent $FichierCodMusRef $FichierCodSeq]
append Tous "$LePlus\n"
}
return $Tous
}
proc AARares {FichierCod} {
if {![file exist $FichierCod]} {return}
set Nom [file tail $FichierCod]
append First "$Nom\t"
set LesFreq [CreeListeCodonFrequency $FichierCod]
set LesFreqTrie [lsort -index 2 -increasing $LesFreq]
set LesFreqTrieSansEnd {}
foreach Ligne $LesFreqTrie {
set Type [lindex $Ligne 0]
if {$Type=="End"} {
continue
} else {
lappend LesFreqTrieSansEnd $Ligne
}
}
set LesFirst [lrange $LesFreqTrieSansEnd 0 2]
foreach AA $LesFirst {
set aa [lindex $AA 0]
set Codon [lindex $AA 1]
append First "$aa\($Codon\)\t"
}
return $First
}
proc AARaresPourTous {} {
foreach Nom [ListeDesPABs] {
set FichierCod "[RepertoireDuGenome]/codonfrequency/tables_codonfrequency/$Nom.cod"
set AA [AARares $FichierCod]
append Tous "$AA\n"
}
return $Tous
}
proc AAStart {Nom} {
global LesAAsStart
if {[info exists LesAAsStart($Nom)]} { return LesAAsStart($Nom) }
if {[info exists LesAAsStart("EstCharge")]} { return "" }
set LesAAsStart("EstCharge") 1
ChargeLesCodonsStart
return [AAsStart $Nom]
}
proc AAType {{Qui ""}} {
global AAType
if {[info exists AAType($Qui)]} { return $AAType($Qui) }
if {[info exists AAType("EstCharge")]} { return "" }
set AAType(aliphatic) [list I L M V]
set AAType(aromatic) [list F Y W]
set AAType(acidic) [list D E Q N]
set AAType(basic) [list H K R]
set AAType(scmall) [list P A G S T]
set AAType(cystein) [list C]
foreach K [lsort [array names AAType]] {
set V $AAType($K)
lappend AAType(Types) $K
foreach A $V {
lappend AAType(ListOfA) $A
set AAType($A) $K
}
}
set Ordonnes {}
set AAType(AlphabeticListOfAA) [lsort $AAType(ListOfA)]
set AAType("EstCharge") 1
return [AAType $Qui]
}
proc AAduCodon {Codon {AA ""}} {
global CodonToAminoAcid
global FichierTranslate
if {$Codon=="Reset" && [info exists CodonToAminoAcid]} {unset CodonToAminoAcid ; return ""}
if {[string length $Codon] != 3 } { return "-" }
if {[regexp -nocase {[^ATGC]} $Codon]} { return "X" }
if { ! [info exists CodonToAminoAcid("EstCharge")]} {
set CodonToAminoAcid("EstCharge") 1
set ListeDesLignes [split [ContenuDuFichier $FichierTranslate] "\n"]
set IndexPointPoint [lsearch -regexp $ListeDesLignes {\.\.}]
if { $IndexPointPoint == -1 } { Warne "$FichierTranslate merde."; exit}
set PartieCodage [lrange $ListeDesLignes [incr IndexPointPoint 2] end]
foreach Ligne $PartieCodage {
set fin [expr [string first "\!" $Ligne]-1]
set Interet [string range $Ligne 0 $fin]
if {[info exists a]} { unset a }
if {[info exists b]} { unset b }
if {[info exists c]} { unset c }
if {[info exists d]} { unset d }
if {[info exists e]} { unset e }
if {[info exists f]} { unset f }
if {[info exists g]} { unset g }
if {[info exists h]} { unset h }
scan $Interet "%s %s %s %s %s %s %s %s %s %s" A AAA a b c d e f g h
if {[info exists a]} { set CodonToAminoAcid([string toupper $a]) $A}
if {[info exists b]} { set CodonToAminoAcid([string toupper $b]) $A}
if {[info exists c]} { set CodonToAminoAcid([string toupper $c]) $A}
if {[info exists d]} { set CodonToAminoAcid([string toupper $d]) $A}
if {[info exists e]} { set CodonToAminoAcid([string toupper $e]) $A}
if {[info exists f]} { set CodonToAminoAcid([string toupper $f]) $A}
if {[info exists g]} { set CodonToAminoAcid([string toupper $g]) $A}
if {[info exists h]} { set CodonToAminoAcid([string toupper $h]) $A}
}
if { ![CodonStopPossible "TGA"] } { set CodonToAminoAcid(TGA) "W" }
}
set CODON [string toupper $Codon]
if {$AA!=""} { set CodonToAminoAcid($CODON) $AA }
if { ! [info exists CodonToAminoAcid($CODON)]} { return "X" }
return [set CodonToAminoAcid($CODON)]
}
proc ACTAYRfinder {} {
# Recherche un motif en générant un mismatch (adapté récepteurs nucléaires)
set FichierEntree [open "/genomics/link/STAF/fiches/Bidir/SequencesTotales.bidir" "r"]
set FichierSortie [open "/genomics/link/STAF/fiches/Bidir/ACTAYRdansLesPromoteurs.bidir" "w"]
Espionne "ACTAYR : Start"
set J 0
set I 0
while { [gets $FichierEntree Ligne] >=0 } {
incr J
set Entete $Ligne
gets $FichierEntree Ligne
set Acc [lindex $SeqTFA(index) 0]
set RegExp {ACTA[CT][AG]|[AG][GA]TAGT}
set ListeDesPositions [regexp -indices -all -inline "$RegExp" $Ligne]
foreach PaireDeBornes $ListeDesPositions {
set NewStart [expr [lindex $PaireDeBornes 0] + 1]
set NewEnd [expr [lindex $PaireDeBornes 1] + 1]
puts $FichierSortie "$Entete $NewStart $NewEnd"
incr I
}
}
Espionne "ACTAYR : End ($I ACTAYR trouves dans $J promoteurs)"
close $FichierEntree
close $FichierSortie
}
proc ACetDRdansTREMBL {} {
global RepertoireDuGenome
foreach Ligne [LesLignesDuFichier "$RepertoireDuGenome/fiches/narcisse"] {
scan $Ligne "%s %s %s" Nom BanqueId Access
set Narcisse([string toupper $Access]) $Nom
set Narcisse($Nom) $Access
}
set F [open "/prot/trembl/sp_tr_nrdb/trembl.dat" "r"]
while {[gets $F Ligne]>=0} {
if {[regexp "^AC" $Ligne]} { set AC $Ligne }
if {[regexp "^OS" $Ligne]} { set OS $Ligne }
if {[regexp "^DR EMBL" $Ligne]} {
set DR $Ligne
if { ! [regexp "Pyrococcus abyssi" $OS]} { continue }
scan $DR "%s %s %s %s" a b c Access
if { ! [regexp -nocase {Cab[0-9][0-9][0-9][0-9][0-9]} $Ligne Access]} { continue }
scan $AC "%s %s" Bidon AC
regsub {;} $AC "" AC
set Nom "???????????????"
set ACCESS [string toupper $Access]
if {[info exists Narcisse($ACCESS)]} { set Nom [set Narcisse($ACCESS)] }
lappend Sortie "$Nom $Access $AC"
Espionne "$Nom $Access $AC"
}
}
SauveLesLignes $Sortie dans "$RepertoireDuGenome/fiches/narcisse-a-trois"
}
proc ALaMain {Quoi} {
global ALaMain
if {[info exists ALaMain($Quoi)]} { return $ALaMain($Quoi) }
if {[info exists ALaMain("EstCharge")]} { return "" }
set ALaMain("EstCharge") 1
set ALaMain(gi_bsdc1_sp_q9nw68.1_) "Unknown unknown SP:q9nw68"
set ALaMain(gi_26332042_dbj_bac29751.1_) "Unknown unknown dbj:bac29751"
set ALaMain(gi_160703882_gb_eat79375.2_) "Unknown unknown gb:eat79375"
set ALaMain(gi_157336387_emb_cao71072.1_) "Unknown unknown emb:cao71072"
set ALaMain(gi_predict_edq55772.1_) "Unknown unknown edq55772"
set ALaMain(gi_125525362_gb_eay73476.1_) "Unknown unknown gb_eay73476"
set ALaMain(gi_116000504_emb_cal50184.1_) "Unknown unknown emb_cal50184"
set ALaMain(gi_sap_dm_emb_caa56416.1_b) "Unknown unknown emb_caa56416"
set ALaMain(gi_74191837_dbj_bae32869.1_) "Unknown unknown dbj_bae32869"
set ALaMain(gi_30580527_sp_q9d5v6.1_syap1_) "Unknown unknown sp_q9d5v6.1_syap1"
set ALaMain(gi_149035828_gb_edl90495.1_) "Unknown unknown gb_edl90495"
set ALaMain(gi_14042052_dbj_bab55087.1_) "Unknown unknown dbj_bab55087"
set ALaMain(gi_15779193_gb_aah14657.1_) "Unknown unknown gb_aah14657"
set ALaMain(gi_62897271_dbj_bad96576.1_) "Unknown unknown dbj_bad96576"
set ALaMain(gi_14189980_gb_aak55531.1_af30) "Unknown unknown gb_aak55531"
set ALaMain(gi_47215840_emb_cag00695.1_) "Unknown unknown emb_cag00695"
set ALaMain(gi_sap_danio_p_957236.1_) "Brachidanio rerio p_957236"
set ALaMain(gi_edp29796.1_bsd-bruggia) "Brugia malayi edp29796"
set ALaMain(gi_schistosoma_gb_aaw25233.1_) "schistosoma_ gb:aaw25233"
set ALaMain(gi_bsd_oris_aba94285.2_) "oris_ aba94285"
set ALaMain(gi_147818233_emb_can73547.1_) "Unknown unknown emb_can73547"
set ALaMain(gi_162674980_gb_edq61481.1_) "Unknown unknown gb_edq61481"
set ALaMain(gi_162683699_gb_edq70107.1_) "Unknown unknown gb_edq70107"
set ALaMain(gi_29841361_gb_aap06393.1_) "Unknown unknown gb_aap06393"
set ALaMain(gi_56753973_gb_aaw25179.1_) "Unknown unknown gb_aaw25179"
set ALaMain(gi_114636465_ref_xp_001173050.) "Unknown unknown YYY:xp_001173050"
set ALaMain(gi_predictprot_macala_xp_001085333.) "Unknown unknown YYY:xp_001085333"
set ALaMain(gi_114052006_ref_np_001039615.) "Unknown unknown YYY:np_001039615"
set ALaMain(gi_114636455_ref_xp_001173101.) "Unknown unknown YYY:xp_001173101"
set ALaMain(gi_149719503_ref_xp_001505012.) "Unknown unknown YYY:xp_001505012"
set ALaMain(gi_p62_hom_s_ref_np_005307.1) "Unknown unknown YYY:np_005307"
set ALaMain(gi_126332087_ref_xp_001366557.) "Unknown unknown YYY:xp_001366557"
set ALaMain(gi_57102734_ref_xp_534083.1) "Unknown unknown YYY:xp_534083"
set ALaMain(gi_p62_mousemgb_aah52837.1) "Unknown unknown GB:aah52837"
set ALaMain(gi_157816977_ref_np_001101955.) "Unknown unknown YYY:np_001101955"
set ALaMain(gi_31982313_ref_np_032212.2) "Unknown unknown YYY:np_032212"
set ALaMain(gi_p62_xenopustrop_np_001006921.1) "Unknown unknown YYY:np_001006921"
set ALaMain(gi_118091234_ref_xp_421013.2) "Unknown unknown YYY:xp_421013"
set ALaMain(gi_52219046_ref_np_001004596.1) "Unknown unknown YYY:np_001004596"
set ALaMain(gi_125880724_ref_xp_001342123.) "Unknown unknown YYY:xp_001342123"
set ALaMain(gi_p62putative_ref_xp_798784.1) "Unknown unknown YYY:xp_798784"
set ALaMain(gi_p62_sc__010597.1) "Saccharomyces cerevisiae YYY:010597"
set ALaMain(gi_45184782_ref_np_982500.1) "Unknown unknown YYY:np_982500"
set ALaMain(gi_156837512_ref_xp_001642780.) "Unknown unknown YYY:xp_001642780"
set ALaMain(gi_bsd_gallusgallusp_001012860) "Gallus gallus YYY:NP_001012860"
set ALaMain(gi_pdb_syap1_humana_structure) "Unknown unknown PDB:1X3A_a"
set ALaMain(gi_pdb_syap1_humanb_structure) "Unknown unknown PDB:1X3A_b"
set ALaMain(gi_cryptosporidium_ref_xp_6660) "Unknown unknown YYY:xp_6660"
set ALaMain(gi_cryptosporidium_xp_625548.1) "Unknown unknown YYY:xp_625548"
set ALaMain(gi_58261118_ref_xp_567969.1) "Unknown unknown YYY:xp_567969"
set ALaMain(gi_115692152_ref_xp_780429.2) "Unknown unknown YYY:xp_780429"
set ALaMain(gi_158287538_ref_xp_309535.4) "Unknown unknown YYY:xp_309535"
set ALaMain(gi_15233107_ref_np_191701.1) "Unknown unknown YYY:np_191701"
set ALaMain(gi_149237456_ref_xp_001524605.) "Unknown unknown YYY:xp_001524605"
set ALaMain(gi_159474828_ref_xp_001695527.) "Unknown unknown YYY:xp_001695527"
set ALaMain(gi_predict_EDQ55772.1) "Unknown unknown YYY:EDQ55772"
set ALaMain(gi_BSD_gallusgallusP_001012860.1) "Gallus gallus YYY:NP_001012860"
set ALaMain(gi_PDB_syap1_HUMANa_structure_1X3A_A_1) "Homo sapiens PDB:1X3A"
set ALaMain(gi_PDB_syap1_HUMANb_structure_1X3A_A_2) "Homo sapiens PDB:1X3A"
set ALaMain(gi_SAP_danio_P_957236.1) "Brachydanio rerio YYY:NP_957236"
set ALaMain(gi_EDP29796.1_bsd-bruggia) "Brugia malayi YYY:EDP29796"
set ALaMain(gi_BSD_ORIS_ABA94285.2) "Oryza sativa SPT:ABA94285"
set ALaMain(gi_bsdputat_Orizaesativ_BAD53348.1) "Oryza sativa SPT:BAD53348"
return [ALaMain $Quoi]
}
proc ANGLES {aB aANGLE aU} {
upvar $aB B
upvar $aANGLE ANGLE
upvar $aU U
# A partir de la matrice de rotation, calcule les angles d'Euler,
# l'angle de rotation et coord. spheriques de l'axe, et les cos.
# directeurs de l'axe
#
set PI [Pi]
# set PI 3.1415926
set PIS2 [expr {0.5 * $PI}]
set DEGRAD [expr {$PI/180.}]
set DETERM 0.
set DETERM [S_deterM [M_T B]]
if {$DETERM <= 0.99 || $DETERM > 1.01} {
puts " =======> Determinant = $DETERM "
return -1
}
# Angles d'Euler
set TH2 [ARCTG [expr {sqrt(pow($B(1,3),2)+pow($B(2,3),2))}] $B(3,3)]
set ZETA [expr {1.-cos($TH2)}]
if {$ZETA > 0.001 && $ZETA < 1.9999} {
set TH1 [ARCTG $B(3,1) [expr {-$B(3,2)}]]
set TH3 [ARCTG $B(1,3) $B(2,3)]
} else {
# Valeur arbitraire de TH3
set TH3 0.
if {$ZETA <= 0.001} {
set TH1 [ARCTG [expr {$B(1,2)-$B(2,1)}] [expr {$B(1,1)+$B(2,2)}]]
} else {
set TH1 [ARCTG [expr {$B(1,2)+$B(2,1)}] [expr {$B(1,1)-$B(2,2)}]]
}
}
set ALPHA [expr {fmod(($TH1-$PIS2)/$DEGRAD+360.,360.)}]
set BETA [expr {$TH2/$DEGRAD}]
set GAMMA [expr {fmod(($TH3+$PIS2)/$DEGRAD,360.)}]
set ANGLE(1) $ALPHA
set ANGLE(2) $BETA
set ANGLE(3) $GAMMA
# ANGLE DE ROTATION ET COS. DIRECTEURS DE L'AXE
set CKAPPA [expr {0.5*($B(1,1)+$B(2,2)+$B(3,3)-1.)}]
set AKAPPA [ARCOS $CKAPPA]
if {$CKAPPA > 0.9999} {
# ROTATION NULLE. DIRECTION ARBITRAIRE
set U(1) 0.
set U(2) 0.
set U(3) 1.
} elseif {$CKAPPA < -0.999} {
# ROTATION PROCHE DE 180
foreach I {1 2 3} {
set ARG [expr {[set B($I,$I)]-$CKAPPA}]
if {$ARG < 0.} {
if {$ARG < -0.01} {
puts "sqrt of zero "
return -1
# exit
}
set ARG 0.
}
set U($I) [expr {sqrt($ARG/(1.-$CKAPPA))}]
}
# DETERMINER LE SIGNE DU PLUS GRAND COS.DIR.
set I 1
foreach K {2 3} {
if {[set U($K)] > [set U($I)]} {set I $K}
}
set K [expr {($I%3)+1}]
set L [expr {($K%3)+1}]
set U($I) [SIGN [set U($I)] [expr {([set B($K,$L)]-[set B($L,$K)])}]]
set U($K) [SIGN [set U($K)] [expr {[set U($I)]*([set B($K,$I)]+[set B($I,$K)])}]]
set U($L) [SIGN [set U($L)] [expr {[set U($I)]*([set B($L,$I)]+[set B($I,$L)])}]]
} else {
# ROTATION GENERALE
set DSK [expr {2.*sin($AKAPPA)}]
foreach I {1 2 3} {
set K [expr {($I%3)+1}]
set L [expr {($K%3)+1}]
set U($I) [expr {([set B($K,$L)]-[set B($L,$K)])/$DSK}]
}
}
set PSIZ [ARCOS $U(3)]
set PHIZ [ARCTG $U(2) $U(1)]
set ANGLE(4) [expr {$AKAPPA/$DEGRAD}]
set ANGLE(5) [expr {$PSIZ/$DEGRAD}]
set ANGLE(6) [expr {$PHIZ/$DEGRAD}]
# Ramener a l'hemisphere nord
if {$ANGLE(5) > 90.} {
foreach i {1 2 3} {
set U($i) [expr {-[set U($i)]}]
}
set ANGLE(4) [expr {-$ANGLE(4)}]
set ANGLE(5) [expr {180.-$ANGLE(5)}]
set ANGLE(6) [expr {$ANGLE(6)+180.}]
}
set ANGLE(6) [expr {fmod(($ANGLE(6)+360.),360.)}]
return
}
proc ARCOS {A} {
set absa [expr {abs($A)}]
if {$absa > 1.} {
if {$absa > 1.00001} {
# pourrait mettre un puts pour dire ....
}
if {$absa > 1.01} {
puts " =====> ARCOS"
return
# exit
}
set A [SIGN 1. $A]
}
set LARCOS [expr {acos($A)}]
return $LARCOS
}
proc ARCTG {B A} {
set ARCTG 0.
if {abs($A) >= 0.00001 || abs($B) >= 0.00001} {
set ARCTG [expr {atan2($B,$A)}]
}
return $ARCTG
}
proc ARPAnno {{LesFichiersTFA ""} {LesFamilles ""} {Verbose 0}} {
Wup "Programme de d annotation des sous Familles D ARPs"
Wup "ARPAnno: ARP Annotation Server"
Wup "v 1.0"
Wup " Based on BLAST,"
Wup " clustalw,"
Wup " aln_pos aln_res aln_insert,"
Wup " Domaines.txt Residus.txt"
Wup "Jean Muller IGBMC/LBMAGM"
#Repertoire contenant les banques Blast, Macs et Domaines et Residus de reference
set RepARP "[RepARPAnno]"
set RepTFA "$RepARP/ARP_TFA"
set RepBanque "$RepARP/ARP_BLAST"
set RepMACS "$RepARP/ARP_MACS"
set RepSignature "$RepARP/ARP_Signature"
#Repertoire contenant les resultats
set RepARP_Results "[RepARPAnnoWeb]"
set RepTFAResults "$RepARP_Results"
set RepBlastResults "$RepARP_Results"
set RepMACSResults "$RepARP_Results"
#Passage au mode Verbose
if { $Verbose != "0"} {
set Verbose 1
}
Verbose_Mode $Verbose
if {$LesFichiersTFA==""} {
set LesFichiersTFA [glob -nocomplain -directory "${RepTFA}_lesarps" "*.tfa"]
set LesFichiersTFA [glob -nocomplain -directory "${RepTFA}_validation" "*.tfa"]
}
set LesFichiersASupprimer ""
set LesFichiersBLASTs ""
set NewMACS ""
#Les Familles de proteines (Actin Orphan ARP1-11)
#################################################
set LesVraisFamilles ""
set LesVraisFamilles [LesFamillesDARPs]
LesResultatsARPAnalyses "LesFamilles" $LesVraisFamilles "Positionne"
foreach TFA $LesFichiersTFA {
set AccessQuery "query_protein"
set AccessDeRef "P02568"
#1 Traitement du fichier d entree au format TFA
###############################################
#On recupere l access (premier mot apres le chevron ">")
#On ajoute query_protein a la place qui sera utilise par clustalw
#On reecrit le fichier TFA dans RepTFAResults
set FileName [file tail $TFA]
set FichierTFA "$RepTFAResults/${FileName}"
if {[regexp -nocase {^ARPAnno_[0-9]{4}_[0-9]{2}[0-9]{2}_} $FileName]} {
#On vient du web on garde pour VraiAccess le nom du fichier (utilise apres pour nom.msf)
set VraiAccess [string tolower [FormateLeFichierTFA $TFA $FichierTFA 1]]
set VraiAccess $FileName
} else {
#set VraiAccess [string tolower [FormateLeFichierTFA $TFA $FichierTFA 0]]
set VraiAccess [string tolower [FormateLeFichierTFA $TFA $FichierTFA 1]]
if {$VraiAccess=="-1"} {Espionne "Pb FormateLeFichierTFA: $FichierTFA does not exists or is empty";return ""}
set VraiAccess $FileName
}
set FichierLog "${FichierTFA}.log"
AjouteAuARPLog "" $FichierLog
LesResultatsARPAnalyses "VraiAccess" $VraiAccess "Positionne"
set Categorie [InterrogeLesInfosDesARPs [string toupper $VraiAccess] Categorie]
if { $Categorie == ""} {
set Categorie "Unknown"
} else {
regsub -all {\-\-\-\-} $Categorie "" Categorie
regsub "Les" $Categorie "" Categorie
}
if {[Verbose_Mode]} {
set TextLog "><"
AjouteAuARPLog "$TextLog"
set TextLog ">Access $VraiAccess -- $Categorie"
AjouteAuARPLog "$TextLog"
}
#2 Identificaction des meilleures familles d ARPs pour la query
###############################################################
if {$LesFamilles != ""} {
set MaxIDCutOffBlast "0.1"
} else {
set MaxIDCutOffBlast "0.25"
}
#2 On fait les Blasts contre toutes les banques blast des ARPs
set LesFichiersBLASTs [BlastQueryVsARPs $FichierTFA $LesFamilles]
#2 1er Filtrage des sorties BLAST dont ne retient que les meilleurs P Identity
set LesFamillesIdentity [IdentifieLeMeilleurBLAST $LesFichiersBLASTs $VraiAccess $FichierLog]
#2 2eme Filtrage pour se separer des identite limites
set LesFamillesRetenues ""
set FPIdC ""
foreach FPIdC $LesFamillesIdentity {
set Famille ""
set PId ""
set Cover ""
foreach {Famille PId Cover} $FPIdC {
if {$PId >= $MaxIDCutOffBlast} {
LesResultatsARPAnalyses "$Famille,PId,$VraiAccess" $PId "Positionne"
LesResultatsARPAnalyses "$Famille,Cover,$VraiAccess" $Cover "Positionne"
lappend LesFamillesRetenues $Famille
if {$PId>="0.8" && $Cover>="0.8"} {
if {[regexp -nocase "actin" $Famille]} {
set Texte "Your query protein is a conventional actin with [expr {$PId*100.0}]% identity shared among [expr ${Cover}*100.0]% of the sequence."
LesResultatsARPAnalyses "Result" $Texte "Positionne"
LesResultatsARPAnalyses "BestFamily" $Famille "Positionne"
} elseif {[regexp -nocase "orphan" $Famille]} {
set Texte "Your query protein is a orphan with [expr {$PId*100.0}]% identity shared among [expr ${Cover}*100.0]% of the sequence."
LesResultatsARPAnalyses "Result" $Texte "Positionne"
LesResultatsARPAnalyses "BestFamily" $Famille "Positionne"
}
}
}
}
}
if {[Verbose_Mode]} {
set TextLog ">>>For $VraiAccess ($Categorie) selected family:$LesFamillesRetenues"
AjouteAuARPLog "$TextLog"
}
#On supprime les fichiers BLASTs de toutes les familles non retenues
foreach FBlast $LesFichiersBLASTs {
#Q78DQ1.tfa_ARP6.blastp"
set Famille ""
set Famille_tmp ""
set tmp ""
set Famille [file tail $FBlast]
regsub -nocase {.blastp$} $Famille "" Famille
regexp -nocase {_([a-z]{2,4}[0-9]{1,2}|actin|orphans)$} $Famille tmp Famille_tmp
if {$Famille_tmp != ""} {set Famille $Famille_tmp}
if {$Famille != "" && [regexp -nocase $Famille $LesFamillesRetenues]} {continue}
lappend LesFichiersASupprimer $FBlast
}
if {$LesFamillesRetenues == ""} {
#Aucune famille n a ete retenue pour chercher si elle fait partie des ARPs
set Texte "No family could be selected. Your query may not be part of Actin superfamily."
LesResultatsARPAnalyses "Result" $Texte "Positionne"
continue
} else {
#On a des resultats et on check si on a deja une famille (actin ou orphan)
if {[LesResultatsARPAnalyses "Result" "LaValeurMerci"] != ""} {
continue
}
}
#3 Test de la sequence contre les alignements de references
###########################################################
set AccessDeRef_OLD ""
foreach Famille $LesFamillesRetenues {
if {$AccessDeRef_OLD != "" && $AccessDeRef_OLD != $AccessDeRef } {
set AccessDeRef $AccessDeRef_OLD
set AccessDeRef_OLD ""
}
#On ne teste pas la famille des Actin
if {[regexp -nocase "actin" $Famille]} {continue}
set MACSDeRef "$RepMACS/${Famille}.rsf"
set NewMACS "$RepMACSResults/${VraiAccess}_${Famille}.msf"
set Res ""
set Dom ""
set AligneOuPas "-1"
if {[Verbose_Mode]} {
set TextLog ">< 2- Check $Famille family in progress (multiple alignment)><"
AjouteAuARPLog "$TextLog"
}
#3-1 Alignement de la sequence contre les alignements de references
###################################################################
set AligneOuPas [AlignQueryVsMACS $FichierTFA $MACSDeRef $NewMACS]
if {$AligneOuPas=="-1"} {
Espionne "Pb AlignQueryVsMACS"
continue
}
if { [file exists $NewMACS]} {
if {[file size $NewMACS]=="0"} {
#Le fichier MACS est vide
Espionne "Pb AlignQueryVsMACS $NewMACS, empty file."
continue
}
} else {
#Le fichier MACS n existe pas
Espionne "Pb AlignQueryVsMACS $NewMACS, no file exists."
Espionne "$FichierTFA $MACSDeRef $NewMACS"
continue
}
#lappend LesFichiersASupprimer $NewMACS
#3-2 Verification des Residus
#############################
#Choix des access de ref de familles differentes
if {$Famille == "ARP2"} {
#PROBLEME DE POSITIONS PAR RAPPORT A L ACTINE DE REF
#ATTENTION ON REVIENT A LA NORMALE PAR APRES CAR C PAS BON POUR LES DOMAINES
set AccessDeRef_OLD $AccessDeRef
set AccessDeRef "ARP05"
}
if {[Verbose_Mode]} {
set TextLog ">< 2-1 Specific Residues Filter ><"
AjouteAuARPLog "$TextLog"
}
set Res [CheckARPSpecificResiduesForQuery query_protein $VraiAccess $AccessDeRef $NewMACS $Famille]
switch -exact -- $Res {
"-2" {
#No residues yet determined
if {[Verbose_Mode]} {
set TextLog "No residues yet determined for $Famille"
AjouteAuARPLog "$TextLog"
}
}
"-1" {
#Probleme d alignement
Espionne "Pb avec $NewMACS"
}
"1" {
#La sequence possede tous les groupes de residus de cette famille testee
#Espionne "$VraiAccess is an $Famille"
}
"2" {
#La sequence possede les groupes de residus de cette famille testee mais egalement des Gaps
#Espionne "$VraiAccess could have be an $Famille but there is too much GAP or missing sequences"
}
"0" {
#La sequence ne possede pas les groupes de residus de cette famille testee
#Espionne "$VraiAccess is not an $Famille"
}
}
#3-3 Verification des Domaines
##############################
if {$Famille == "ARP2"} {
#ATTENTION ON REVIENT A LA NORMALE CAR C PAS BON POUR LES DOMAINES
set AccessDeRef "$AccessDeRef_OLD"
}
if {[Verbose_Mode]} {
set TextLog ">< 2-1 Specific Insertions Filter ><"
AjouteAuARPLog "$TextLog"
}
set Dom [CheckARPSpecificDomainsForQuery query_protein $VraiAccess $AccessDeRef $NewMACS $Famille]
switch -exact -- $Dom {
"-2" {
#No insertions yet determined
if {[Verbose_Mode]} {
set TextLog "No specific insertions yet determined for $Famille"
AjouteAuARPLog "$TextLog"
}
}
"-1" {
#Probleme d alignement
Espionne "Pb avec $NewMACS"
}
"1" {
#La sequence possede tous les groupes de domaines de cette famille testee
#Espionne "$VraiAccess is an $Famille"
}
"2" {
#La sequence possede les groupes de domaines de cette famille testee mais egalement des Gaps
#Espionne "$VraiAccess could have be an $Famille but there is too much GAP or missing sequences"
}
"0" {
#La sequence ne possede pas les groupes de domaines de cette famille testee
#Espionne "$VraiAccess is not an $Famille"
}
}
}
#4 Choix de l ARP
#################
set Score_PId ""
set Score_Cover ""
set Score_Residue ""
set Score_Domain ""
set NbGroupOk ""
set NbGroupTotal ""
set NbGroupGap ""
set NbDomainOk ""
set NbDomainTotal ""
set NbDomainGap ""
if {[Verbose_Mode]} {
set TextLog ">< 3- Final score calculation ><"
AjouteAuARPLog "$TextLog"
}
set Best_Score "0.0"
set Best_Family ""
foreach Famille $LesFamillesRetenues {
#On sort de toutes les familles il faut decider a quelle on appartient
#Score est le score final d un parametre
#Impact_Score est le poids d un parametre dans la decision finale
#Le score final est la somme des score individuels ponderes par leur impact score
#Si un score n est pas disponible sa part de score est redistribuee
set Score "0.0"
set Score_PId ""
set Score_Cover ""
set Score_Residue ""
set Score_Domain ""
set Impact_Score_PId "0.2"
set Impact_Score_Cover "0.1"
set Impact_Score_Residue "0.4"
set Impact_Score_Domain "0.3"
set Impact_Score_Redis "0.0"
set Nb_Redis "0"
set ListeImpactScores [list Impact_Score_PId Impact_Score_Cover Impact_Score_Residue Impact_Score_Domain]
set Nb_Score [llength $ListeImpactScores]
set Score_PId [LesResultatsARPAnalyses "$Famille,PId,$VraiAccess" PId "LaValeurMerci"]
set Score_Cover [LesResultatsARPAnalyses "$Famille,Cover,$VraiAccess" Cover "LaValeurMerci"]
set NbGroupOk [LesResultatsARPAnalyses "$Famille,NbGroupOk" "LaValeurMerci"]
set NbGroupTotal [LesResultatsARPAnalyses "$Famille,NbGroupTotal" "LaValeurMerci"]
set NbGroupGap [LesResultatsARPAnalyses "$Famille,NbGroupGap" "LaValeurMerci"]
set NbDomainOk [LesResultatsARPAnalyses "$Famille,NbDomainOk" "LaValeurMerci"]
set NbDomainTotal [LesResultatsARPAnalyses "$Famille,NbDomainTotal" "LaValeurMerci"]
set NbDomainGap [LesResultatsARPAnalyses "$Famille,NbDomainGap" "LaValeurMerci"]
#Dans le cas ou un des scores n est pas calcule.
#On ne retient pas son score et on redistribue son Impact_score
if {$NbGroupTotal == "" || $NbGroupTotal == "0"} {
set Score_Residue 0
set Impact_Score_Redis [expr {$Impact_Score_Redis + 0.4}]
set Impact_Score_Residue "0.0"
incr Nb_Redis
} else {
#Espionne "Res $NbGroupOk -- $NbGroupTotal"
#Espionne "[expr (($NbGroupOk*1.0) / $NbGroupTotal)]"
set Score_Residue "[expr {($NbGroupOk*1.0) / $NbGroupTotal}]"
}
if {$NbDomainTotal == "" || $NbDomainTotal == "0"} {
set Score_Domain 0
set Impact_Score_Redis [expr {$Impact_Score_Redis + 0.3}]
set Impact_Score_Domain "0.0"
incr Nb_Redis
} else {
#Espionne "Domain $NbDomainOk -- $NbDomainTotal"
#Espionne "[expr (($NbDomainOk*1.0) / $NbDomainTotal)]"
#ATTENTION ON CONSIDERE QUE UNE SEULE SEQUENCE SUFFIE POUR DIRE SI UN GROUPE EST OK
##if {$NbDomainOk != "0" && [expr $NbDomainOk + $NbDomainGap]>=[expr $NbDomainTotal]} {}
if {[expr {$NbDomainOk + $NbDomainGap}]>=[expr $NbDomainTotal]} {
set NbDomainOk [expr {$NbDomainOk + $NbDomainGap}]
}
set Score_Domain "[expr {($NbDomainOk*1.0) / $NbDomainTotal}]"
}
#Si on doit redistribuer l impact score sur les autres
if {$Nb_Redis!="0"} {
set Impact_Score_Redis [expr {($Impact_Score_Redis * 1.0) / ($Nb_Score - $Nb_Redis)}]
foreach Score $ListeImpactScores {
if {[set $Score]=="0.0"} {
continue
} else {
set $Score [expr [set $Score] + $Impact_Score_Redis]
}
}
}
#Espionne "[format "Impact Score: %5.1f %5.1f %5.1f %5.1f | %5.1f %2d" $Impact_Score_PId $Impact_Score_Cover $Impact_Score_Residue $Impact_Score_Domain $Impact_Score_Redis $Nb_Redis]"
#Calcul du score final
set Score_PId [expr {$Score_PId * 100.0}]
set Score_Cover [expr {$Score_Cover * 100.0}]
set Score_Residue [expr {$Score_Residue * 100.0}]
set Score_Domain [expr {$Score_Domain * 100.0}]
LesResultatsARPAnalyses "$Famille,Score_PId_ini" $Score_PId "Positionne"
LesResultatsARPAnalyses "$Famille,Score_Cover_ini" $Score_Cover "Positionne"
LesResultatsARPAnalyses "$Famille,Score_Residue_ini" $Score_Residue "Positionne"
LesResultatsARPAnalyses "$Famille,Score_Domain_ini" $Score_Domain "Positionne"
#LesResultatsARPAnalyses "$Famille,Score_ini" $Score "Positionne"
set Score_PId [expr {$Score_PId * $Impact_Score_PId}]
set Score_Cover [expr {$Score_Cover * $Impact_Score_Cover}]
set Score_Residue [expr {$Score_Residue * $Impact_Score_Residue}]
set Score_Domain [expr {$Score_Domain * $Impact_Score_Domain}]
set Score [expr {($Score_PId + $Score_Cover + $Score_Residue + $Score_Domain) * 1.0}]
set Score [format "%5.1f" $Score]
if {[Verbose_Mode]} {
set TextLog "[format "%7s score: %5.1f %1s | %5.1f %5.1f %5.1f %5.1f" $Famille $Score % $Score_PId $Score_Cover $Score_Residue $Score_Domain]"
AjouteAuARPLog "$TextLog"
}
set TabResultat($Famille,Score_PId) $Score_PId
set TabResultat($Famille,Score_Cover) $Score_Cover
set TabResultat($Famille,Score_Residue) $Score_Residue
set TabResultat($Famille,Score_Domain) $Score_Domain
set TabResultat($Famille,Score) $Score
LesResultatsARPAnalyses "$Famille,Score_PId" $Score_PId "Positionne"
LesResultatsARPAnalyses "$Famille,Score_Cover" $Score_Cover "Positionne"
LesResultatsARPAnalyses "$Famille,Score_Residue" $Score_Residue "Positionne"
LesResultatsARPAnalyses "$Famille,Score_Domain" $Score_Domain "Positionne"
LesResultatsARPAnalyses "$Famille,Score" $Score "Positionne"
if {[expr $Best_Score < $Score]} {
set Best_Score $Score
set Best_Family $Famille
}
}
set Texte "The best family chosen for your query is $Best_Family with score = $Best_Score."
LesResultatsARPAnalyses "Result" $Texte "Positionne"
LesResultatsARPAnalyses "BestScore" $Best_Score "Positionne"
LesResultatsARPAnalyses "BestFamily" $Best_Family "Positionne"
foreach F $LesVraisFamilles {
if {! [info exists TabResultat($F,Score)]} {
LesResultatsARPAnalyses "$F,Score_PId" "No" "Positionne"
LesResultatsARPAnalyses "$F,Score_Cover" "No" "Positionne"
LesResultatsARPAnalyses "$F,Score_Residue" "No" "Positionne"
LesResultatsARPAnalyses "$F,Score_Domain" "No" "Positionne"
LesResultatsARPAnalyses "$F,Score" "No" "Positionne"
}
}
if {[info exists TabResultat]} {array unset TabResultat "*"}
}
#5 Fin du programme on vide la memoire (fait dans ARPAnno.tcl) et on supprime les fichiers
##########################################################################################
set LesFichiersASupprimer ""
foreach F $LesFichiersASupprimer {
if {[file exists $F]} {file delete -force $F}
}
#LesResultatsARPAnalyses UnsetAll
#DechargeLesResidusDesARPs
#DechargeLesDomainesDesARPs
return ""
}
proc ARPAnno_Result_HTML {} {
Wup "Permet de presenter les resultats sous une forme plus jolie"
Wup "Affichage sous la forme d un tableau au format HTML"
#On recupere le resultat final
#si c une actin on le dit et c tout
#si c une orphan on ajoute le lien vers le blastp contre les banques dediees
set BestFam [LesResultatsARPAnalyses "BestFamily" "LaValeurMerci"]
set Resultat [LesResultatsARPAnalyses "Result" "LaValeurMerci"]
if {[regexp -nocase "actin" $BestFam]} {
return "[join $Resultat "\n"]"
} elseif {[regexp -nocase "orphan" $BestFam]} {
set VraiAccess "[LesResultatsARPAnalyses "VraiAccess" "LaValeurMerci"]"
set T "Orphans"
set FichierBlast "${VraiAccess}_${T}.blastp"
if {[file exists "[RepARPAnnoWeb]/$FichierBlast"]} {
set Texte "The blast result is available here"
}
lappend Resultat $Texte
return "[join $Resultat "\n"]"
}
set TexteResultat ""
lappend TexteResultat " "
lappend TexteResultat "
"
lappend TexteResultat "
"
foreach F [list Family Score GID pCover pDR pDI] {
lappend TexteResultat "
$F
"
}
lappend TexteResultat "
"
set VraiAccess "[LesResultatsARPAnalyses "VraiAccess" "LaValeurMerci"]"
set LesVraisFamilles [LesResultatsARPAnalyses "LesFamilles" "LaValeurMerci"]
foreach Famille $LesVraisFamilles {
lappend TexteResultat "
"
set Score_PId [LesResultatsARPAnalyses "$Famille,Score_PId" "LaValeurMerci"]
set Score_Cover [LesResultatsARPAnalyses "$Famille,Score_Cover" "LaValeurMerci"]
set Score_Residue [LesResultatsARPAnalyses "$Famille,Score_Residue" "LaValeurMerci"]
set Score_Domain [LesResultatsARPAnalyses "$Famille,Score_Domain" "LaValeurMerci"]
set Score [LesResultatsARPAnalyses "$Famille,Score" "LaValeurMerci"]
set Score_PId [LesResultatsARPAnalyses "$Famille,Score_PId_ini" "LaValeurMerci"]
set Score_Cover [LesResultatsARPAnalyses "$Famille,Score_Cover_ini" "LaValeurMerci"]
set Score_Residue [LesResultatsARPAnalyses "$Famille,Score_Residue_ini" "LaValeurMerci"]
set Score_Domain [LesResultatsARPAnalyses "$Famille,Score_Domain_ini" "LaValeurMerci"]
foreach V [list Score_PId Score_Cover Score_Residue Score_Domain Score] {
if { [set $V] == "No"} {
continue
} elseif {[set $V] == ""} {
set [set V] "No"
} else {
set [set V] [format "%5.1f" [set $V]]
}
}
if {$Famille==[LesResultatsARPAnalyses "BestFamily" "LaValeurMerci"]} {
set GoodColor "orange"
} else {
set GoodColor "gainsboro"
}
set i 0
foreach R [list $Famille $Score $Score_PId $Score_Cover $Score_Residue $Score_Domain] {
incr i
set Color $GoodColor
if {$i=="1"} {
#set FichierMSF "${VraiAccess}_${R}.xml"
set FichierMSF "${VraiAccess}_${R}.msf"
set FichierMSF "${VraiAccess}_${R}.html"
set FichierBlast "${VraiAccess}_${R}.blastp"
if {[file exists "[RepARPAnnoWeb]/$FichierMSF"]} {
set R "$R"
} elseif {[file exists "[RepARPAnnoWeb]/$FichierBlast"]} {
set R "$R"
}
}
if {$i=="2"} {
if { $Color != "orange"} {
set Color "skyblue"
}
set R "$R"
}
lappend TexteResultat "
$R
"
}
lappend TexteResultat "
"
}
lappend TexteResultat "
"
if {$Resultat != ""} {
lappend TexteResultat " "
lappend TexteResultat "$Resultat"
}
return "[join $TexteResultat "\n"]"
}
proc ARPAnno_Result_Text {} {
Wup "Permet de presenter les resultats sous une forme plus jolie"
Wup "Affichage sous la forme d un tableau separe par des tabulations"
#On recupere le resultat final
#si c est une actin ou une orphan on le dit et c est tout
set Resultat [LesResultatsARPAnalyses "Result" "LaValeurMerci"]
if {[regexp "actin|orphan" $Resultat]} {
return "$Resultat"
}
set TexteResultat ""
set LesNoms [list Family Score GID pCover pDR pDI]
set LesNoms [join $LesNoms "\t"]
lappend TexteResultat "$LesNoms"
set LesVraisFamilles [LesResultatsARPAnalyses "LesFamilles" "LaValeurMerci"]
foreach Famille $LesVraisFamilles {
set Score_PId [LesResultatsARPAnalyses "$Famille,Score_PId" "LaValeurMerci"]
set Score_Cover [LesResultatsARPAnalyses "$Famille,Score_Cover" "LaValeurMerci"]
set Score_Residue [LesResultatsARPAnalyses "$Famille,Score_Residue" "LaValeurMerci"]
set Score_Domain [LesResultatsARPAnalyses "$Famille,Score_Domain" "LaValeurMerci"]
set Score [LesResultatsARPAnalyses "$Famille,Score" "LaValeurMerci"]
foreach V [list Score_PId Score_Cover Score_Residue Score_Domain Score] {
if { [set $V] == "No"} {
continue
} elseif {[set $V] == ""} {
set [set V] "No"
} else {
set [set V] [format "%5.1f" [set $V]]
}
}
set Resultat [list $Famille $Score $Score_PId $Score_Cover $Score_Residue $Score_Domain]
lappend TexteResultat "[join $Resultat "\t"]"
}
set Liste ""
lappend Liste "Access"
foreach F $LesVraisFamilles {
lappend Liste $F
}
lappend TexteResultat "[join $Liste "\t"]"
set VraiAccess [LesResultatsARPAnalyses "VraiAccess" "LaValeurMerci"]
set Liste ""
lappend Liste $VraiAccess
foreach F $LesVraisFamilles {
set Score [LesResultatsARPAnalyses "$F,Score" "LaValeurMerci"]
if { $Score == ""} {
set Score "No"
} elseif {$Score != "No"} {
set Score [format "%5.1f" $Score]
}
lappend Liste $Score
}
lappend TexteResultat "[join $Liste "\t"]"
return "[join $TexteResultat "\n"]"
#Obsolete au cas ou on veuille afficher les nombre de residus sur Max residus et pareil pour insertions
#3-2 Affiche les resultats
##########################
#protein|q9gzn1|arp6_human is an ARP6
# PId NbGroupOk NbGroupTotal
# : 1.00 2 2
#Group : 1 2
#Result : 1/1 3/3
set PId ""
set Cover ""
set NbGroupOk ""
set NbGroupTotal ""
if {0 && $Res != "-1"} {
#On recupere les donnees stockees en memoire
set PId [LesResultatsARPAnalyses "$Famille,PId,$VraiAccess" PId "LaValeurMerci"]
set Cover [LesResultatsARPAnalyses "$Famille,Cover,$VraiAccess" Cover "LaValeurMerci"]
set NbGroupOk [LesResultatsARPAnalyses "$Famille,NbGroupOk" "LaValeurMerci"]
set NbGroupTotal [LesResultatsARPAnalyses "$Famille,NbGroupTotal" "LaValeurMerci"]
set Ligne [format "%-7s %-6s %-10s %-15s" "" PId NbGroupOk NbGroupTotal]
Espionne "$Ligne"
set Ligne [format "%-7s: %-6s %-10s %-15s" "" $PId $NbGroupOk $NbGroupTotal]
Espionne "$Ligne"
set Ligne1 [format "%-7s: " Group]
set Ligne2 [format "%-7s: " Result]
set NbGroup [LesResultatsARPAnalyses $Famille,NbGroupTotal "LaValeurMerci"]
for {set Gr 1} {$Gr<=$NbGroup} {incr Gr} {
append Ligne1 [format "%-5s" $Gr]
set NbResiduOk [LesResultatsARPAnalyses $Famille,$Gr,NbResiduOk "LaValeurMerci"]
set NbResiduTotal [LesResultatsARPAnalyses $Famille,$Gr,NbResiduTotal "LaValeurMerci"]
append Ligne2 [format "%-5s" "$NbResiduOk/$NbResiduTotal"]
}
Espionne "$Ligne1"
Espionne "$Ligne2"
Espionne ""
}
#3-3 Affiche les resultats
##########################
#protein|q9gzn1|arp6_human is an ARP6
# PId NbGroupOk NbGroupTotal
# : 1.00 2 2
#Group : 1 2
#Result : 1/1 3/3
#On recupere les donnees stockees en memoire
set NbDomainOk ""
set NbDomainTotal ""
if {0 && $Dom != "-1"} {
set NbDomainOk [LesResultatsARPAnalyses "$Famille,NbDomainOk" "LaValeurMerci"]
set NbDomainTotal [LesResultatsARPAnalyses "$Famille,NbDomainTotal" "LaValeurMerci"]
set Ligne [format "%-7s %-11s %-15s" "" NbDomainOk NbDomainTotal]
Espionne "$Ligne"
set Ligne [format "%-7s %-10s %-15s" "" $NbDomainOk $NbDomainTotal]
Espionne "$Ligne"
set Ligne1 [format "%-7s: " Domain]
set Ligne2 [format "%-7s: " Result]
#set NbDomainTotal [LesResultatsARPAnalyses $Famille,NbDomainTotal "LaValeurMerci"]
for {set Do 1} {$Do<=$NbDomainTotal} {incr Do} {
append Ligne1 [format "%-5s" $Do]
set NbAccOk [LesResultatsARPAnalyses "$Famille,$Do,NbAccOk" "LaValeurMerci"]
set NbAccTeste [LesResultatsARPAnalyses "$Famille,$Do,NbAccTeste" "LaValeurMerci"]
append Ligne2 [format "%-5s" "$NbAccOk/$NbAccTeste"]
}
Espionne "$Ligne1"
Espionne "$Ligne2"
Espionne ""
}
}
proc ARPAnno_Stat {} {
Wup "Permet de recuperer un certain nombre de stat sur le fontionnement de ARPAnno"
#24.7.237.137 ARPAnno_0624_2338_0486
#24.7.237.137 ARPAnno_0624_2340_0723
#set LogFile "/srs6/WebTempFiles/ARPAnno/ARPAnno.log"
set LogFile "[RepARPAnnoWeb]/ARPAnno.log"
set Tab(Date) ""
set Tab(LesDates) ""
set F [open "$LogFile"]
while {[gets $F Ligne]>=0} {
if {! [regexp -nocase {[a-z0-9]+} $Ligne]} {continue}
set LigneSplitee [split $Ligne "\t"]
set ID [lindex $LigneSplitee 0]
set ARPAnnoID [lindex $LigneSplitee 1]
#Date
set Date ""
regexp {^ARPAnno_([0-9][0-9])} $ARPAnnoID tmp Date
if {[info exists Tab(Date,$Date)]} {
#Cas ou a deja vu cette date
if {[set Tab(Date)]==$Date || [set Tab(Date)]==""} {
#ok pas de probleme on continue une serie de date en cours
} else {
set i 0
while {1} {
incr i
set Datetmp "${Date}_${i}"
if {[info exists Tab(Date,$Datetmp)]} {
continue
} else {
set Tab(Date) $Date
set Date $Datetmp
set Tab(Date,$Date) 1
lappend Tab(LesDates) $Date
break
}
}
}
} else {
set Tab(Date,$Date) 1
lappend Tab(LesDates) $Date
Espionne ">>>>>>>>>>$Date"
set Tab(Date) $Date
}
#Nombre de requete par date
if {! [info exists TabDate($Date,request)]} {
set TabDate($Date,request) "0"
}
incr TabDate($Date,request)
#Liste des utilisateurs par date
if {! [info exists TabDate($Date,user)]} {
set TabDate($Date,user) ""
}
lappend TabDate($Date,user) $ID
}
close $F
set ToSave ""
foreach Date [set Tab(LesDates)] {
set NbUser [llength [lsort -unique [set TabDate($Date,user)]]]
set NbRequest [set TabDate($Date,request)]
Espionne "$Date $NbRequest $NbUser"
lappend ToSave [join [list $Date $NbRequest $NbUser] "\t"]
}
AppendAuFichier "/home/jmuller/ARPAnno.stat" [join $ToSave "\n"]
return
}
proc ATGAenOverlap {} {
set OneFour [Entre 4]
set n 0
set nATGA 0
set nGTGA 0
set nTTGA 0
set nOver4A 0
set nOver4G 0
set nOver4T 0
foreach Nom [ListeDesPABs] {
incr n
set FN "[RepertoireDuGenome]/nuctfa/$Nom"
if { ! [file exists $FN]} { continue }
set SeqNuc [QueLaSequenceDuFichierTFA $FN]
set Quatre [string range $SeqNuc 0 5]
if { ! [info exists Cumul($Quatre)]} { set Cumul($Quatre) 0 }
incr Cumul($Quatre)
if {[regexp -nocase "^ATGA" $SeqNuc] } {
incr nATGA
set Ov [Overlap $Nom]
if { ! [regexp "$OneFour bases. I begin" $Ov Match N] } { continue }
incr nOver4A
}
if {[regexp -nocase "^GTGA" $SeqNuc] } {
incr nGTGA
set Ov [Overlap $Nom]
if { ! [regexp "$OneFour bases. I begin" $Ov Match N] } { continue }
incr nOver4G
}
if {[regexp -nocase "^TTGA" $SeqNuc] } {
incr nTTGA
set Ov [Overlap $Nom]
if { ! [regexp "$OneFour bases. I begin" $Ov Match N] } { continue }
incr nOver4T
}
}
foreach {Q C} [array get Cumul] {
set U [string range $Q 0 2]
set D [string range $Q 3 5]
lappend LL [list $Q $C [AAduCodon $U][AAduCodon $D]]
}
EspionneL [lsort -index 1 -integer $LL]
return "$n $nATGA $nOver4A $nGTGA $nOver4G $nTTGA $nOver4T [file tail [RepertoireDuGenome]]"
}
proc ATV {NomFichierOuUrlPhylo {EnExec ""}} {
if {$EnExec==""} { set EnExec "EnHtml" }
if {$EnExec=="EnExec"} { set EnExec 1 } else { set EnExec 0 }
set Nom $NomFichierOuUrlPhylo
set FichierPhylo $NomFichierOuUrlPhylo
if {[regexp "/" $FichierPhylo]} {
set RepPhylo [file dirname $FichierPhylo]
} else {
if {[EstUnPAB $Nom]} {
while 1 {
set RepPhylo "phylosOrg"
set FichierPhylo "[RepertoireDuGenome]/$RepPhylo/$Nom"
if {[file exists $FichierPhylo]} { break }
set RepPhylo "phylos"
set FichierPhylo "[RepertoireDuGenome]/$RepPhylo/$Nom"
if {[file exists $FichierPhylo]} { break }
return ""
}
}
}
if {$EnExec} {
if {$FichierPhylo!="" && ! [file exists $FichierPhylo]} { return "" }
if {[catch {exec atv $FichierPhylo &} Message]} {
return 0
}
return 1
}
if {[EstUnPAB $Nom]} {
set UrlPhylo "[WscopeScience]&FileMoi&$RepPhylo&$Nom"
} else {
set UrlPhylo $NomFichierOuUrlPhylo
}
Html_ZeroToBody
Html_Append ""
Html_BodyToEnd
return [Html_Get]
}
proc A_Voir_LesBanquesDesEntetesDeFrag {FichierFrag {Rep ""}} {
if {$Rep==""} { set Rep "SameDir" }
if {$Rep=="SameDir"} { set Rep "[file dirname $FichierFrag]" }
set LesBanques {}
foreach Ligne [LesLignesDuFichier $FichierFrag] {
regsub {\:} $Ligne " " Ligne
scan $Ligne "%s" Banque
lappend LesBanques $Banque
}
set LesBonnesBanques {}
foreach Banque $LesBanques {
set Banque [file tail $Banque]
set BonneBanque "$Rep/$Banque"
set Nhr "$BonneBanque.nhr"
if { ! [file exists $Nhr]} { FaireLire "$Nhr n'existe pas" }
if {[catch {set Name [exec name $Banque]} Message]} {
FaireLire "Problem with 'exec name $Banque'\ I got message \n$Message"
continue
}
if {[regexp "^@GenDBConfigFiles" $Name]} {
regsub "^@" $Name "" Name
set NameDir [lindex [split $Name ":"] 0]
set Ferme [lindex [split $Name ":"] 1]
if {[catch {set Dir [exec name $NameDir]} Message]} {
FaireLire "Problem with 'exec name $NameDir'\ I got message \n$Message"
continue
}
set Farm "$Dir/$Ferme"
if { ! [file exists $Farm]} { FaireLire "$Farm doesn't exists" ; continue }
foreach B [LesBanquesDeLaFerme $Farm] {
Espionne "B $B"
if {[catch {set NameDeB [exec name $B]} Message]} {
FaireLire "Problem with 'exec name $Banque'\ I got message \n$Message"
continue
}
set NameDirDeB [lindex [split $NameDeB ":"] 0]
if {[catch {set DirDeB [exec name $NameDirDeB]} Message]} {
FaireLire "Problem with 'exec name $NameDirDeB'\ I got message \n$Message"
continue
}
lappend LesBonnesBanques "$BonneBanque $DirDeB $NameDeB"
}
} else {
set NameDir [lindex [split $Name ":"] 0]
if {[catch {set Dir [exec name $NameDir]} Message]} {
FaireLire "Problem with 'exec name $NameDir'\ I got message \n$Message"
continue
}
lappend LesBonnesBanques "$BonneBanque $Dir $Name"
}
}
return $LesBonnesBanques
}
proc AberrationParPatient {LimInf LimSup {LesPos ""} {LesNoms ""}} {
# -> Compter le nb d'aberrations par patient
# liste des cas
#set LesCas {Oligo806 Oligo807 Oligo809 Oligo810 Oligo811 Oligo812 Oligo814 Oligo815 Oligo816 Oligo817 Oligo818 Oligo819 Oligo820 Oligo821 Oligo822 Oligo823 Oligo825 Oligo826 Oligo827}
#set LesCas {BAC806 BAC807 BAC809 BAC810 BAC811 BAC812 BAC814 BAC815 BAC816 BAC817 BAC818 BAC819 BAC820 BAC821 BAC822 BAC823 BAC825 BAC826 BAC827}
set LesCas {BAC806 BAC807 BAC809 BAC810 BAC811 BAC812 BAC814 BAC815 BAC816 BAC817 BAC818 BAC819 BAC820 BAC821 BAC822 BAC823 BAC825 BAC826 BAC827 Oligo806 Oligo807 Oligo809 Oligo810 Oligo811 Oligo812 Oligo814 Oligo815 Oligo816 Oligo817 Oligo818 Oligo819 Oligo820 Oligo821 Oligo822 Oligo823 Oligo825 Oligo826 Oligo827}
Espionne [llength $LesCas]
set ListeChro {HS01 HS02 HS03 HS04 HS05 HS06 HS07 HS08 HS09 HS10 HS11 HS12 HS13 HS14 HS15 HS16 HS17 HS18 HS19 HS20 HS21 HS22 HSX HSY}
# pour comparaison BAC vs oligo: pas possible sur chro X et Y a cause du mismatch fait pour BAC mais pas pour Oligo...
#set ListeChro {HS01 HS02 HS03 HS04 HS05 HS06 HS07 HS08 HS09 HS10 HS11 HS12 HS13 HS14 HS15 HS16 HS17 HS18 HS19 HS20 HS21 HS22}
### pour chaque fichier CGH Segmente ###
foreach NomFichier $LesCas {
set NomFichierSeg "$NomFichier\.seg"
set FichierSeg "[RepertoireDuGenome]/PRIMA_CGH_SEG/$NomFichierSeg"
#Espionne $FichierSeg
set LesAberrations ""
#### Pour chaque chromosome ###
foreach Chromosome $ListeChro {
#Espionne $Chromosome
set x [InterrogeFichierSEG $FichierSeg "unset"]
ChargeFichierSEG TabS $FichierSeg $Chromosome $LesPos
if {[info exists TabS($FichierSeg,Chromosome,$Chromosome,LesPos)]} {
foreach Pos [set TabS($FichierSeg,Chromosome,$Chromosome,LesPos)] {
foreach LInfo [set TabS($FichierSeg,Chromosome,$Chromosome,$Pos)] {
set PosInf [lindex $LInfo 3]
set PosSup [lindex $LInfo 4]
set Val [lindex $LInfo 6]
set Val [format "%.2f" [expr $Val*1.0]]
if {($Val>0 && $Val>=$LimSup) || ($Val<0 && $Val<=$LimInf)} {
lappend LesAberrations "$NomFichier\t$Chromosome\t$PosInf\t$PosSup\t$Val"
}
}
}
}
}
#Espionne [llength $LesAberrations]
lappend ListeTotale "$NomFichier\t[llength $LesAberrations]"
SauveLesLignes $LesAberrations dans "[RepertoireDuGenome]/aberrations/$NomFichier$LimSup"
}
SauveLesLignes [lsort -decreasing -index 1 -integer $ListeTotale] dans "[RepertoireDuGenome]/aberrations/total$LimSup"
return
}
proc AbsRef2Seq {n pos} {
#set s [set ::Sequences($n)]
set s [set ::Sref($n)]
set s [string range $s 0 $pos]
set s [string map {"." ""} $s]
set pseq [expr {[string length $s] - 1}]
#set pseq [string length $s]
return $pseq
}
proc Ac1Ac2vide {} {
set total 0; set D 0; set M 0; set N 0; set O 0; set P 0
set cas1 0; set cas1a 0; set cas1b 0;
set cas2 0; set cas3 0; set cas4 0
foreach I [RetChip5 ListOf Index] {
incr total
set LesAcProt {}
set TousLesGenresProt {}
array unset LesGenresProt
set onasourisprot 0
set ListAcsParGn {}; set BigList {}
set LesAcsDna {}
set genenamefait 0
set LesAcsDeLaLigne ""
set Des1 [RetChip5 $I "description_customer"]
set Des2 [RetChip5 $I "description_memorec"]
set Ac1 [RetChip5 $I "DNA_acc"]
set Ac2 [RetChip5 $I "refseq_PIQOR"]
set Ac3 [RetChip5 $I "prot_acc"]
set Ac4 [RetChip5 $I "prot_acc_PIQOR"]
if { ($Ac1=="" || [regexp {\?} $Ac1]) && $Ac2=="" && (($Ac3!="" && ![regexp {\?} $Ac3]) || $Ac4!="")} {
Espionne ""
#Ac3=prot_acc Ac4=prot_acc_piqor
incr D
Espionne "ligne $I Ac3=$Ac3 Ac4=$Ac4"
set Ac3 [string trim $Ac3]
regsub -all " " $Ac3 "" Ac3
set Ac4 [string trim $Ac4]
regsub -all " " $Ac4 "" Ac4
if {$Ac3!="" && $Ac4!=""} {
incr M
set Ac3Ac4 "$Ac3,$Ac4"
set LesAcProt [split $Ac3Ac4 ","]
} elseif {$Ac3!="" && ![regexp {\?} $Ac3]} {
incr N
set LesAcProt [split $Ac3 ","]
} elseif {$Ac4!=""} {
incr O
set LesAcProt [split $Ac4 ","]
}
set LesAcProt [ListeSansDoublon $LesAcProt]
Espionne $LesAcProt
foreach AcProt $LesAcProt {
set GenreProt [OrgDuProt $AcProt]
Espionne "AcProt $AcProt GenreProt $GenreProt"
if {$GenreProt==""} {
#peut mettre toutes les variables a vide
Espionne "attention pas fiche"
set pasfiche 1
}
LConcat TousLesGenresProt $GenreProt
set LesGenresProt($AcProt) $GenreProt
}
set TousLesGenresProt [ListeSansDoublon $TousLesGenresProt]
foreach ChaqueGenreProt $TousLesGenresProt {
if {[regexp {^Mus} $ChaqueGenreProt]} {
set onasourisprot 1
}
}
if {$onasourisprot} {
Espionne "cas1"; incr cas1
foreach AcProt $LesAcProt {
set ListeDesAcs1 {}; set ListeDesAcs2 {}; set LesAcsDnaProv {}
if {[regexp {^Mus} $LesGenresProt($AcProt)]} {
set ResultParProt [AttriDesAcDnaParProt $AcProt]
Espionne "ResultParProt $ResultParProt"
set ResultParGb [AttriDesAcDnaParGb $AcProt]
Espionne "ResultParGb $ResultParGb"
if {$ResultParProt != ""} {
Espionne "cas1a"; incr cas1a
set ListeDesAcs1 [split $ResultParProt " "]
}
if {$ResultParGb != ""} {
Espionne "cas1b"; incr cas1b
set ListeDesAcs2 [split $ResultParGb " "]
}
set LesAcsDnaProv [concat $ListeDesAcs1 $ListeDesAcs2]
foreach elmt $LesAcsDnaProv {
LConcat LesAcsDna $elmt
}
}
}
set LesAcsDna [ListeSansDoublon $LesAcsDna]
}
if {!$onasourisprot} {
Espionne "cas2"; incr cas2
set genenamefait 1
set ListAcsParGn [AttriDesAcDnaParGeneName $Des1 $Des2]
}
if {!$genenamefait} {
Espionne "cas3"; incr cas3
set ListAcsParGn [AttriDesAcDnaParGeneName $Des1 $Des2]
}
set BigList [concat $LesAcsDna $ListAcsParGn]
set BigList [ListeSansDoublon $BigList]
if {$BigList == {}} {
set LesAcsDeLaLigne ""
} else {
set BigList [ListeSsElmtVide $BigList]
set LesAcsDeLaLigne [join $BigList " "]
}
Espionne "LesAcsDeLaLigne $LesAcsDeLaLigne"
}
if {($Ac1=="" || [regexp {\?} $Ac1]) && $Ac2=="" && ($Ac3=="" || [regexp {\?} $Ac3]) && $Ac4==""} {
Espionne ""
incr P
Espionne "ligne $I Ac1=$Ac1 Ac2=$Ac2 Ac3=$Ac3 Ac4=$Ac4"
Espionne "cas4"; incr cas4
set genenamefait 1
Espionne "$Des1 $Des2"
set ListAcsParGn [AttriDesAcDnaParGeneName $Des1 $Des2]
if {$ListAcsParGn == {}} {
set LesAcsDeLaLigne ""
} else {
set ListAcsParGn [ListeSansDoublon $ListAcsParGn]
set ListAcsParGn [ListeSsElmtVide $ListAcsParGn]
set LesAcsDeLaLigne [join $ListAcsParGn " "]
}
Espionne "LesAcsDeLaLigne $LesAcsDeLaLigne"
}
}
Espionne "nombre de lignes= $total"
Espionne "D $D";Espionne "M $M";Espionne "N $N";Espionne "O $O";Espionne "P $P"
Espionne "cas1 $cas1";Espionne "cas1a $cas1a";Espionne "cas1b $cas1b"
Espionne "cas2 $cas2";Espionne "cas3 $cas3";Espionne "cas4 $cas4"
}
proc Ac1Plein {} {
set total 0; set C 0; set W 0; set X 0
set cas1 0; set cas1a 0; set cas1b 0; set cas1c 0
set cas2 0; set cas2a 0; set cas2b 0; set cas2c 0; set cas2d 0
set cas3 0; set cas4 0; set cas5 0; set cas6 0
foreach I [RetChip5 ListOf Index] {
incr total
set LesAc {}
set Genre ""
set TousLesGenres {}
array unset LesGenres
set onasouris 0
set LesAcsDna {}
set LesAcProt {}
set TousLesGenresProt {}
array unset LesGenreAcProt
set onasourisprot 0
set genenamefait 0
set ListAcsParGn {}; set BigList {}
set LesAcsDeLaLigne ""
set Des1 [RetChip5 $I "description_customer"]
set Des2 [RetChip5 $I "description_memorec"]
set Ac1 [RetChip5 $I "DNA_acc"]
set Ac2 [RetChip5 $I "refseq_PIQOR"]
set Ac3 [RetChip5 $I "prot_acc"]
set Ac4 [RetChip5 $I "prot_acc_PIQOR"]
if { $Ac1!="" && ![regexp {\?} $Ac1] } {
Espionne ""
set Ac1 [string trim $Ac1]
regsub -all " " $Ac1 "" Ac1
incr C
Espionne "ligne $I Ac1=$Ac1 Ac2=$Ac2 Ac3=$Ac3 Ac4=$Ac4"
if {$Ac2==""} {
incr W
set LesAc [split $Ac1 ","]
}
if {$Ac2!=""} {
set Ac2 [string trim $Ac2]
regsub -all " " $Ac2 "" Ac2
incr X
set Ac1Ac2 "$Ac1,$Ac2"
set LesAc [split $Ac1Ac2 ","]
}
set LesAc [ListeSansDoublon $LesAc]
set LesAc [ListeSsElmtVide $LesAc]
Espionne $LesAc
foreach Ac $LesAc {
set Genre [OrgDuNmOuGb $Ac]
Espionne "Ac $Ac Genre $Genre"
if {$Genre == ""} {Espionne "attention pas fiches"}
LConcat TousLesGenres $Genre
set LesGenres($Ac) $Genre
}
set TousLesGenres [ListeSansDoublon $TousLesGenres]
foreach ChaqueGenre $TousLesGenres {
if {[regexp {^Mus} $ChaqueGenre]} {
set onasouris 1
}
}
if {$onasouris} {
Espionne "cas1"; incr cas1
foreach Ac $LesAc {
set LesNmRefSeq {}; set LesNvxNm {}
if {[regexp {^Mus} $LesGenres($Ac)]} {
Espionne "Ac $Ac"
if { ![regexp {^NM_} $Ac] && ![regexp {^XM_} $Ac] && ![regexp {^NR_} $Ac]} {
set NM [MrnaRefseqUcscMouse $Ac "Nm"]
Espionne "NM $NM"
if { $NM != "" } {
Espionne "cas1a"; incr cas1a
set LesNmRefSeq [split $NM " "]
foreach NmRefSeq $LesNmRefSeq {
set GenreNmRefSeq [OrgDuNmOuGb $NmRefSeq]
Espionne "$NmRefSeq $GenreNmRefSeq"
if {[regexp {^Mus} $GenreNmRefSeq]} {
LConcat LesNvxNm $NmRefSeq
}
}
set LesNvxNm [ListeSansDoublon $LesNvxNm]
set NMjoint [join $LesNvxNm " "]
Espionne "NMjoint $NMjoint"
LConcat LesAcsDna "$Ac $NMjoint"
} else {
Espionne "cas1b"; incr cas1b
LConcat LesAcsDna $Ac
}
} else {
Espionne "cas1c"; incr cas1c
LConcat LesAcsDna $Ac
}
}
}
}
Espionne "cas2"
incr cas2
#travail sur prot Ac3=$Ac3 Ac4=$Ac4
if {$Ac3!="" || $Ac4!=""} {
Espionne "cas2a"; incr cas2a
if {$Ac3!="" && $Ac4!=""} {
Espionne "cas2b"; incr cas2b
set Ac3 [string trim $Ac3]
regsub -all " " $Ac3 "" Ac3
set Ac4 [string trim $Ac4]
regsub -all " " $Ac4 "" Ac4
set Ac3Ac4 "$Ac3,$Ac4"
set LesAcProt [split $Ac3Ac4 ","]
} elseif {$Ac3!=""} {
set Ac3 [string trim $Ac3]
regsub -all " " $Ac3 "" Ac3
Espionne "cas2c"; incr cas2c
set LesAcProt [split $Ac3 ","]
} elseif {$Ac4!=""} {
set Ac4 [string trim $Ac4]
regsub -all " " $Ac4 "" Ac4
Espionne "cas2d"; incr cas2d
set LesAcProt [split $Ac4 ","]
}
set LesAcProt [ListeSansDoublon $LesAcProt]
set LesAcProt [ListeSsElmtVide $LesAcProt]
EspionneL $LesAcProt
foreach AcProt $LesAcProt {
set GenreAcProt [OrgDuProt $AcProt]
Espionne "$AcProt $GenreAcProt"
if {$GenreAcProt==""} {Espionne "attention pas fiches" }
LConcat TousLesGenresProt $GenreAcProt
set LesGenreAcProt($AcProt) $GenreAcProt
}
set TousLesGenresProt [ListeSansDoublon $TousLesGenresProt]
foreach ChaqueGenreProt $TousLesGenresProt {
if {[regexp {^Mus} $ChaqueGenreProt]} {
set onasourisprot 1
}
}
if {$onasourisprot} {
Espionne "cas3"; incr cas3
foreach AcProt $LesAcProt {
set ListeDesAcs1 {}; set ListeDesAcs2 {}; set LesAcsDnaProv {}
if {[regexp {^Mus} $LesGenreAcProt($AcProt)]} {
set ResultParProt [AttriDesAcDnaParProt $AcProt]
Espionne "ResultParProt $ResultParProt"
set ResultParGb [AttriDesAcDnaParGb $AcProt]
Espionne "ResultParGb $ResultParGb"
if {$ResultParProt != ""} {
set ListeDesAcs1 [split $ResultParProt " "]
}
if {$ResultParGb != ""} {
set ListeDesAcs2 [split $ResultParGb " "]
}
set LesAcsDnaProv [concat $ListeDesAcs1 $ListeDesAcs2]
foreach elmt $LesAcsDnaProv {
LConcat LesAcsDna $elmt
}
}
}
}
set LesAcsDna [ListeSansDoublon $LesAcsDna]
Espionne "cas4"; incr cas4
set genenamefait 1
set ListAcsParGn [AttriDesAcDnaParGeneName $Des1 $Des2]
}
if {!$genenamefait && $Ac3=="" && $Ac4==""} {
Espionne "cas5"; incr cas5
set genenamefait 1
set ListAcsParGn [AttriDesAcDnaParGeneName $Des1 $Des2]
}
if {!$genenamefait} {
Espionne "cas6"; incr cas6
set ListAcsParGn [AttriDesAcDnaParGeneName $Des1 $Des2]
}
set BigList [concat $LesAcsDna $ListAcsParGn]
set BigList [ListeSansDoublon $BigList]
if {$BigList == {}} {
set LesAcsDeLaLigne ""
} else {
set BigList [ListeSsElmtVide $BigList]
set LesAcsDeLaLigne [join $BigList " "]
}
Espionne "LesAcsDeLaLigne $LesAcsDeLaLigne"
}
}
Espionne "nb de lignes= $total"
Espionne "C $C";Espionne "W $W";Espionne "X $X"
Espionne "cas1 $cas1";Espionne "cas1a $cas1a";Espionne "cas1b $cas1b";Espionne "cas1c $cas1c"
Espionne "cas2 $cas2";Espionne "cas2a $cas2a";Espionne "cas2b $cas2b";Espionne "cas2c $cas2c";Espionne "cas2d $cas2d"
Espionne "cas3 $cas3";Espionne "cas4 $cas4";Espionne "cas5 $cas5";Espionne "cas6 $cas6"
}
proc Ac1videAc2plein {} {
set total 0; set B 0
foreach I [RetChip5 ListOf Index] {
incr total
set Des1 [RetChip5 $I "description_customer"]
set Des2 [RetChip5 $I "description_memorec"]
set Ac1 [RetChip5 $I "DNA_acc"]
set Ac2 [RetChip5 $I "refseq_PIQOR"]
set Ac3 [RetChip5 $I "prot_acc"]
set Ac4 [RetChip5 $I "prot_acc_PIQOR"]
set LesNMs {}
if {$Ac1=="" && $Ac2!=""} {
incr B
Espionne "ligne $I Ac1=$Ac1 et Ac2=$Ac2"
set LesNMs [split $Ac2 ","]
foreach NM $LesNMs {
set GetzOut ""
#set Commande "getz \"\(\\\[refseqrelease-acc:$NM\\\]\|\\\[refseqnew-acc:$NM\\\]\)\!\(\\\[refseqnew-acc:$NM\\\]>\\\[refseqrelease-acc:$NM\\\]\)\" \-view FastaSeqs"
set Commande "getz \"\\\[refseq-acc:$NM\\\]\" \-view FastaSeqs"
set GetzOut [eval exec $Commande]
if {$GetzOut == ""} {Espionne ">bidon ficherefseqpiqor n'existe plus\natgc" }
if {$GetzOut != ""} {
set GetzOut [string range $GetzOut [string last ">" $GetzOut] end]
if { [regexp {^>ref.+>ref} $GetzOut] } {
Espionne "ATTENTION AU - 2 SEQ FASTA"
}
Espionne $GetzOut
}
}
continue
}
}
Espionne "total= $total"
Espionne "B=$B"
}
proc AcDuId {ID {Fichier ""}} {
global AcDuId
if {$Fichier==""} { set Fichier "[Fiches]/IDAC.txt" }
if {[info exists AcDuId($ID)]} { return $AcDuId($ID) }
if {[info exists AcDuId("EstCharge")]} { return "" }
set AcDuId("EstCharge") 1
foreach {N I A B} [LesLignesDuFichier $Fichier] {
scan $N "%s %s" Bidon Nom
if {[regexp "_" $Nom]} { continue }
scan $I "%s %s" Bidon Id
scan $A "%s %s" Bidon Ac
regsub {\;} $Ac "" Ac
set AcDuId($Id) $Ac
}
return [AcDuId $ID]
}
proc AcDuIdProt {ID} {
set Commande "getz \"\\\[protein-id:$ID\\\]\" \-f acc"
set GetzOut [eval exec $Commande]
if { $GetzOut == "" } {
set AccLu ""
return $AccLu
}
set AccLu ""
set AccLu [StringSuivant "AC" dans $GetzOut]
regsub -all "\t" $AccLu"" AccLu
regsub -all " " $AccLu "" AccLu
return $AccLu
}
proc AcGnDeDesAccess {{FichierOuLesAccess ""} {FichierSortie ""}} {
if {[llength $FichierOuLesAccess]==1 && [file exists $FichierOuLesAccess]} {
set LesAccess {}
foreach Access [LesLignesDuFichier $FichierOuLesAccess] {
regsub -nocase {[^A-Z0-9\-_].*} $Access "" Access
lappend LesAccess $Access
}
} else {
set LesAccess $FichierOuLesAccess
}
# if {$LesAccess==""} { set LesAccess {C9K029 D3DX37 D3DX38 P0C7P4 P47985 Q13546 Q6ZNS2 Q8NBI3 Q8TCM3 Q96LT6 Q9NX33} }
set I 0
while { $I < [llength $LesAccess]} {
set LesA [lrange $LesAccess $I [expr [incr I 100] - 1]]
foreach A $LesA G [GenenameDesAccess $LesA] D [DescriptionDesAccess $LesA] {
lappend LeR "$A;$G;$D"
}
Espionne "$I $A;$G;$D"
}
if {$FichierSortie!=""} { return [SauveLesLignes $LeR dans $FichierSortie] }
return $LeR
}
proc AccProtEtBanqueProt {} {
set RepertoireProtEmbl "/genomics/link/EVImm/protembl"
foreach F [lsort [glob -nocomplain "$RepertoireProtEmbl/EVI*"]] {
if {![regexp {EVI0932} $F]} {continue}
set Texte1 ""; set Texte2 ""; set Bq ""
set Queue [file tail $F]
Espionne "$Queue"
foreach Ligne [LesLignesDuFichier $F] {
Espionne "$Ligne"
if {[regexp {^LOCUS} $Ligne]} {break}
if {[regexp {^AC} $Ligne]} {
scan $Ligne "%s %s" bidon AccProt
regsub ";" $AccProt "" AccProt
Espionne "$Queue $AccProt"
set Commande1 "getz \"\\\[swissprot-acc:$AccProt\\\]\" \-vf id"
set Texte1 [eval exec $Commande1]
if {$Texte1!=""} {
Espionne "1"
set LesMots1 [split $Texte1 ":"]
set Bq [lindex $LesMots1 0]
set Tab($Queue) $Bq
Espionne "$Bq"
}
if {$Texte1==""} {
Espionne "2"
set Commande2 "getz \"\\\[sptrembl-acc:$AccProt\\\]\" \-vf id"
set Texte2 [eval exec $Commande2]
set LesMots2 [split $Texte2 ":"]
set Bq [lindex $LesMots2 0]
set Tab($Queue) $Bq
Espionne "$Bq"
}
break
}
}
}
#SauveLesLignes [array get Tab] dans TabCorres
#array set Tab [LesLignesDuFichier toto]
}
proc AcceptInfoSeq {w} {
global Defauts TEdit {*}[info globals "TD*"]
InfosDeLaSeq toto ""
set nseq [set TEdit(corr,$nseqIn)]
if {$nseq in $LNOrdali} {
FaireLire "Warning !\nSequence Name already exists ! Sequence Name should be unique !"
return
}
foreach e [lsort [array names TEdit "*,*"]] {
lassign [split $e ,] k nseqIn
if {$k eq "corr" || $k eq "compaa" || $k eq "compGrp" || $k eq "compAll"} {continue}
set r [set TEdit($e)]
switch $k {
"seqname" {set TDesSeqnames($nseq) $r}
"access" {set TDesAccess($nseq) $r}
"bid" {set TDesBId($nseq) $r}
"desc" {set TDesDescriptifs($nseq) $r}
"ec" {
if {! [EstUnEC $r]} {
FaireLire "Warning !\nThe E.C. number of sequence $nseq is badly formatted !\n It should be made of 4 positives numbers,\nseparated by a point character (.)."
return
}
set TDesEC($nseq) $r
}
"taxid" {set TDesTaxId($nseq) $r}
"groupe" {set TDuGroupeDesSeqs($nseq) $r}
"orga" {set TDesOrganismes($nseq) $r}
"frag" {set TDesFragment($nseq) $r}
"lifed" {set TDesPhylum($nseq) $r}
}
}
destroy $w
EnregistreInfosSeqs
ChangeNomsAff $Defauts(NomsAffiches)
AfficheNomsEtSeqs
RepeintNomsEtSeqs
return
}
proc AcceptNewValues {w type what} {
global EFeat LNOrdali TabSF ListeTypesDeFeatures NomTextSeq Sequences
set EFeat(COk) 0
if {$what eq "dismiss"} {
destroy [winfo toplevel $w]
#ChangeFeatureForEditing
return
}
set nc "" ; set nn "" ; set ns ""
set nx1 "" ; set nx2 ""
# residue ranges
if {$type eq "newf"} {
# residue range corresponds to selection
set Lt [$NomTextSeq tag ranges slct]
if {$Lt == {}} {
FaireLire "Please do a selection first !"
return
}
set Lpos $Lt
} else {
set nx1 "" ; set nx2 ""
if {$EFeat(ZoneX1) != ""} {
if {! [string is integer $EFeat(ZoneX1)] || ! [string is integer $EFeat(ZoneX2)]} {
FaireLire "Beware !\nRange should contain integer values"
return
}
set nx1 $EFeat(ZoneX1)
set nx2 $EFeat(ZoneX2)
}
set Lpos $EFeat(LRanges)
}
# check color
if {$EFeat(Color) != ""} {
if {[CouleurPlusProcheDeTkCol $EFeat(Color)] == -1} {
FaireLire "Beware !\nThe color specified does not exist !"
return
}
set nc $EFeat(Color)
}
# check score
if {$EFeat(Score) != ""} {
if {! [string is double $EFeat(Score)] || ! [string is integer $EFeat(Score)]} {
FaireLire "Beware !\n Score should be a real number"
return
}
set ns $EFeat(Score)
}
# Note
if {$EFeat(Note) != ""} {
set nn [string trim $EFeat(Note)]
}
# current feature
if {$type eq "newf"} {
set ft $EFeat(Name)
if {$ft eq ""} {
FaireLire "Beware !\nA feature should have a name !"
return
}
set ft [string map [list " " "_"] $ft]
# update combo if necessary
if {$ft ni $ListeTypesDeFeatures} {
lappend ListeTypesDeFeatures $ft
set ListeTypesDeFeatures [lsort -unique $ListeTypesDeFeatures]
set EFeat(FTypes) [linsert $ListeTypesDeFeatures 0 "None"]
$EFeat(FeatCombo) configure -values $EFeat(FTypes)
set EFeat(Feat) $ft
}
} else {
set ft $EFeat(Feat)
}
foreach {p1 p2} $Lpos {
lassign [split $p1 .] y x1
lassign [split $p2 .] y x2
incr x2 -1
set nom [lindex $LNOrdali $y-1]
if {$type eq "newf"} {
# New Featue
set nx1 $x1 ; set nx2 $x2
if {[string index [set Sequences($nom)] $nx1] eq "." || [string index [set Sequences($nom)] $nx2] eq "."} {set cs "global"} {set cs "local"}
lappend TabSF(${nom},$ft) [list fstart $nx1 fstop $nx2 fcolor $nc fscore $ns fnote $nn fcsys $cs]
} else {
# New Item
set Lf [set TabSF(${nom},$ft)]
set i 0
foreach e $Lf {
DecortiqueUneFeature $e d f c s n cs
if {$d == $x1 && $f == $x2} {
if {$nx1 eq ""} {set nx1 $x1}
if {$nx2 eq ""} {set nx2 $x2}
if {$nc eq ""} {set nc $c}
if {$ns eq ""} {set ns $s}
if {$nn eq ""} {set nn $n}
if {$cs eq "local"} {
if {[string index [set Sequences($nom)] $nx1] eq "." || [string index [set Sequences($nom)] $nx2] eq "."} {set cs "global"} {set cs "local"}
}
set new [list fstart $nx1 fstop $nx2 fcolor $nc fscore $ns fnote $nn fcsys $cs]
break
}
incr i
}
set Lf [lreplace $Lf $i $i $new]
set TabSF($nom,$ft) $Lf
}
}
if {$type eq "edit"} {
set EFeat(LItemSel) [list]
} else {
}
set Efeat(COk) 1
destroy [winfo toplevel $w]
$NomTextSeq configure -state normal
$NomTextSeq tag remove slct 1.0 end
$NomTextSeq configure -state disabled
ChangeFeatureForEditing
VueEditee 1
return
}
proc AccepteEtSauveDefauts {w} {
global env OrdEtcDir Couleurs Defauts CoulTmp TmpDef TmpMap
# Mapping
if {[info exists TmpMap]} {
set Lmap [list]
set Le [list]
foreach e [array names TmpMap "*,fg"] {
lappend Le [lindex [split $e ,] 0]
}
foreach e [lsort $Le] {
lappend Lmap [list $e [set TmpMap($e,fg)] [set TmpMap($e,bg)]]
}
set TmpDef(Mapping) $Lmap
}
array set Defauts [array get TmpDef]
array set Couleurs [array get CoulTmp]
unset -nocomplain TmpDef CoulTmp
set f [file join $env(HOME) ".ordalierc"]
if {! [catch {file copy -force -- [file join $OrdEtcDir .ordalierc] $f}]} {
SauveOrdalieDefauts $f
}
destroy [winfo toplevel $w]
font configure SeqFont -size [set Defauts(SeqFontSize)] -family [set Defauts(SeqFontFaml)] -weight [set Defauts(SeqFontWght)]
SeqlabFont
set Threshold [set Defauts(Threshold)]
update idletasks
return
}
proc Access2GO {Access} {
if {[EstUnAccessPDB $Access]} {return}
set AccessCourt $Access
regsub {\-[0-9]+$} $Access "" AccessCourt
set TousLesGO {}
foreach Requete [Access2Requetes $AccessCourt] {
if {[regexp -nocase "^go:" $Requete]} {
lappend TousLesGO [string toupper $Requete]
continue
}
foreach GO [2GO $Requete LesLiens] {
set Type [GODB GO $GO LesTypes]
set Def [GODB Type $Type GO $GO LesDefinitions]
lappend TousLesGO [string toupper $GO]
}
}
#Espionne "LesGODeRefDesGO [LesGODeRefDesGO $TousLesGO]"
#Espionne "EnterrerLesAn [EnterrerLesAncetresGO [LesGODeRefDesGO $TousLesGO]]"
#Espionne "result"
return [ElimineLesRedondancesDansUneListe [EnterrerLesAncetresGO [LesGODeRefDesGO $TousLesGO]]]
}
proc Access2Kegg {Access} {
return [PageInfo2Kegg [PageInfo $Access protein "id acc des dr"]]
}
proc Access2Requetes {Access} {
if {[EstUnAccessPDB $Access]} {return}
set AccessCourt $Access
regsub {\-[0-9]+$} $Access "" AccessCourt
#nG set Page [PageInfo $AccessCourt protein "DES DR Key"]
set Page [PageInfo $AccessCourt uniprot "DES DR Key"]
#set Page [join [LaSequenceDesBanques $Access $Access AccessOK "OnVeutNature"] "\n"]
return [PageInfo2Requetes $Page]
}
proc AccessAlternatif {Access} {
global AccessAlternatif
global RepertoireDuGenome
if {[info exists AccessAlternatif($Access)]} { return [set AccessAlternatif($Access)] }
if {[info exists AccessAlternatif("EstCharge")]} {
if {[regexp {[a-z]} $Access]} {
return [AccessAlternatif [string toupper $Access]]
} else {
return ""
}
}
set FichierAccessAlternatif "$RepertoireDuGenome/../accessalternatif"
if { ! [file exists $FichierAccessAlternatif]} { return "" }
foreach Ligne [LesLignesDuFichier $FichierAccessAlternatif] {
scan $Ligne "%s %s" Ancien Nouveau
set AccessAlternatif($Ancien) $Nouveau
set AccessAlternatif([string toupper $Ancien]) $Nouveau
set AccessAlternatif($Nouveau) $Ancien
set AccessAlternatif([string toupper $Nouveau]) $Ancien
}
set AccessAlternatif("EstCharge") "EstCharge"
return [AccessAlternatif $Access]
}
proc AccessCorrespondantAuxARPs {ARP} {
Wup "Permet de recuperer les correspondances entre les sequences originelles et les boites gscope"
global ARP2Acc
if {[info exists ARP2Acc] && [info exists ARP2Acc($ARP)]} {
return [set ARP2Acc($ARP)]
} else {
set ARP2Acc(ARP01) P42024
set ARP2Acc(ARP02) P42025
set ARP2Acc(ARP03) P38696
set ARP2Acc(ARP04) P45889
set ARP2Acc(ARP05) O15142
set ARP2Acc(ARP06) P32381
set ARP2Acc(ARP07) P45888
set ARP2Acc(ARP08) P32391
set ARP2Acc(ARP09) P47117
set ARP2Acc(ARP10) P32392
set ARP2Acc(ARP11) O96019
set ARP2Acc(ARP12) O94805
set ARP2Acc(ARP13) P80428
set ARP2Acc(ARP14) Q9V814
set ARP2Acc(ARP15) Q8N724
set ARP2Acc(ARP16) P53946
set ARP2Acc(ARP17) Q9VEC3
set ARP2Acc(ARP18) Q9GZN1
set ARP2Acc(ARP19) Q12509
set ARP2Acc(ARP20) P45890
set ARP2Acc(ARP21) Q12406
set ARP2Acc(ARP22) Q9H981
set ARP2Acc(ARP23) Q12386
set ARP2Acc(ARP24) Q9VX09
set ARP2Acc(ARP25) Q05123
set ARP2Acc(ARP26) Q9UTQ7
set ARP2Acc(ARP27) Q9NZ32
set ARP2Acc(ARP28) Q04549
set ARP2Acc(ARP29) Q9VWE8
set ARP2Acc(ARP30) Q9BYD9
set ARP2Acc(ARP31) Q9D9A6
set ARP2Acc(ARP32) Q9D9J3
set ARP2Acc(ARP33) Q9D9L5
set ARP2Acc(ARP34) Q9H568
set ARP2Acc(ARP35) Q9Y615
set ARP2Acc(ARP36) Q9Y614
set ARP2Acc(ARP37) Q9QY84
set ARP2Acc(ARP38) Q9QY83
set ARP2Acc(ARP39) Q20329
set ARP2Acc(ARP40) Q9LZY1
set ARP2Acc(ARP41) P02568
set ARP2Acc(ARP42) Q8RYC2
set ARP2Acc(ARP43) O96621
}
if {[info exists ARP2Acc] && [info exists ARP2Acc($ARP)]} {
return [set ARP2Acc($ARP)]
}
return ""
}
proc AccessDUneLigneBlast {Ligne {Nom ""}} {
global RepertoireDuGenome
Wup "Certains blast ont ! entre Access0 et Access1"
regsub "!" $Ligne " " Ligne
scan $Ligne "%s %s" Access0 Access1
if {[regexp {^AFF[0-9]{5}$} $Access0]} {
if {[file exists "$RepertoireDuGenome/../AffyHS/nucembl/$Access0"]} {
return "$RepertoireDuGenome/../AffyHS/nucembl/$Access0"
}
}
if {[regexp "ClonV:" $Access0]} {
set Vec [lindex [split $Access0 ":"] 1]
if {[file exists "$RepertoireDuGenome/vecteurs/$Vec"]} {
return "$RepertoireDuGenome/vecteurs/$Vec"
}
}
if {[regexp "PABY:" $Access0]} {
set PAB [lindex [split $Access0 ":"] 1]
if {[file exists "$RepertoireDuGenome/../casimir/protembl/$PAB"]} {
return "$RepertoireDuGenome/../casimir/protembl/$PAB"
}
}
if {[regexp -nocase "PAE:" $Access0]} {
set PAE [lindex [split $Access0 ":"] 1]
if {[file exists "$RepertoireDuGenome/../Pyrobac/protembl/$PAE"]} {
return "$RepertoireDuGenome/../Pyrobac/protembl/$PAE"
}
}
if {[regexp -nocase "PFUR:" $Access0]} {
set PFUR [lindex [split $Access0 ":"] 1]
if {[file exists "$RepertoireDuGenome/../Pfuriosus/protembl/$PFUR"]} {
return "$RepertoireDuGenome/../Pfuriok/protembl/$PFUR"
}
}
if {[regexp "PFUR:" $Access0]} {
set PFOK [lindex [split $Access0 ":"] 1]
if {[file exists "$RepertoireDuGenome/../Pfuriok/protembl/$PFOK"]} {
return "$RepertoireDuGenome/../Pfuriok/protembl/$PFOK"
}
}
if { ! [info exists Access1]} { return $Access0 }
Wup "Les copains"
if { $Nom != "" && $Access1 != "" && [file exists "$RepertoireDuGenome/copains/$Nom/$Access1"]} {
return "$Access1"
}
if { $Access1 != "" && [FetchTest "protein:$Access1"]} {
return "protein:$Access1"
}
if { $Access1 != "" && [FetchTest "$Access1"]} {
return "$Access1"
}
return $Access0
}
proc AccessDeLaBoite {PAB {Quoi ""} {DefOuNon ""}} {
Wup "Retourne l Access de la boite Prot mrna ou tfa originel ou boite"
Wup "Attention que pour Homo sapiens"
#Prot puis mrna puis nuctfa puis PAB
set Access ""
set OnATrouve 0
if {$Quoi=="protein"} {set OnATrouve 1}
if {! $OnATrouve || $Quoi=="protein" || [string equal -nocase $Access ""]} {
set Access [InterrogeBestProteinAndmRNAForeachOrga $PAB Organisme "Homo sapiens" Protein Access]
}
if {! $OnATrouve || $Quoi=="mRNA" || [string equal -nocase $Access ""]} {
set Access [InterrogeBestProteinAndmRNAForeachOrga $PAB Organisme "Homo sapiens" mRNA Access]
if {$Quoi=="mRNA"} {set OnATrouve 1}
}
if {! $OnATrouve && $Access == ""} {
set FichierNuctfa "[RepertoireDuGenome]/nuctfa/$PAB"
if {[file exists $FichierNuctfa]} {
set Access [EnteteDuFichierTFA $FichierNuctfa "access"]
}
}
if {$Access == "" } {set Access $PAB}
if {$DefOuNon=="Definition"} {
set Access [InterrogeBestProteinAndmRNAForeachOrga Access $Access Definition]
}
return "$Access"
}
proc AccessDeMonOrganisme {Nom} {
set Fichier "[RepertoireDuGenome]/macsims/$Nom.xml"
if {! [file exists $Fichier]} {return}
ParseMACSIMS $Fichier macsims
set Sequences $macsims(Noms)
set MonOS [NotreOS]
foreach Sequence $Sequences {
set Organisme $macsims($Sequence,Organisme)
if {[regexp "$MonOS" $Organisme]} {
return $Sequence
}
}
return ""
}
proc AccessDesPremieresProteines {} {
set Access ""
append Access "S55507\tPDIP protein disulfide-isomerase (EC 5.3.4.1) ER60 precursor - human\n"
append Access "P06576\tATPB_HUMAN\n"
append Access "XP_028869\tIDH1 isocitrate dehydrogenase 1 (NADP+), soluble\n"
append Access "AAA52688\tHP haptoglobin precursor\n"
append Access "NP_000282\tPGK1 phosphoglycerate kinase 1\n"
append Access "NP_061819\tCMAS N-acetylneuraminic acid phosphate synthase; sialic acid synthase; sialic acid phosphate synthase\n"
append Access "AAH03119\tATP5A1 Similar to ATP synthase, H+ transporting, mitochondrial F1 complex, alpha subunit, isoform1, cardiac muscle\n"
append Access "NP_004030\tANXA2 annexin A2; annexin II; lipocortin II\n"
append Access "NP_005909\tMDH2 malate dehydrogenase 2, NAD (mitochondrial)\n"
append Access "NP_002809\tPSME2 proteasome (prosome, macropain) activator subunit 2 (PA28 beta); Proteasome activator subunit-2\n"
append Access "1403294A\tMSMB gamma seminoprotein\n"
append Access "1HTI_A \tTPI1 ChainA, Triosephosphate Isomerase (Tim) (E.C.5.3.1.1) complexed with 2-Phosphoglycolic Acid\n"
append Access "NP_003177\tTAGLN transgelin; smooth muscle protein 22-alpha; 22kDA actin-binding protein; SM22-alpha\n"
append Access "NP_006699\tGLO1 glyoxalase I; lactoyl glutathione lyase; lactoylglutathione lyase\n"
append Access "NP_002558\tPBP prostatic binding protein; phosphatidylethanolamine binding protein\n"
append Access "BAA21139\tKNP-I beta protein\n"
append Access "NP_005070\tTPD52 tumor protein D52\n"
append Access "NP_005498\tCFL1 cofilin 1 (non-muscle)\n"
append Access "NP_003188\tTCEB1L transcription elongation factor B polypeptide 1-like; organ of Corti protein 2\n"
append Access "NP_001961\tEIF5A eukaryotic translation initiation factor 5A; eIF5AI; eIF5A\n"
append Access "1E3F_A\tTTR Chain A, Structure Of Human Transthyretin Complexed With BromoPhenols: A New Mode Of Binding\n"
append Access "NP_001435\tFABP5 fatty acid binding protein 5 (psoriasis-associated); E-FABP\n"
return $Access
}
proc AccessDuBanqueId {BanqueId} {
regsub {^[^:]+:} $BanqueId "" BanqueId
set Fiche [PageInfo $BanqueId "" acc]
scan $Fiche "%s %s" ACC Access
if {![info exists Access]} {return}
regsub "\;$" $Access "" Access
return $Access
}
proc AccessDuContigDuFragment {AccessDuFragment} {
regsub {_[0-9]+$} $AccessDuFragment "" AccessDuContig
return $AccessDuContig
}
proc AccessDuGI {GI} {
set GI [string trim $GI]
regsub "GI:" $GI "" GI
set Page [PageInfo $GI genbankfull acc]
if {$Page == ""} {return}
scan $Page "%s %s" ACCESSION Access
return $Access
}
proc AccessDuMiRNA {Nom} {
set Fichier "[RepertoireDuGenome]/nuctfa/$Nom"
set LesLignes [LesLignesDuFichier $Fichier]
set Entete [lindex $LesLignes 0]
set LesMots [split $Entete " "]
set GN [lindex $LesMots 1]
set DE [join [lrange $LesMots 2 end] " "]
set Access [lindex $LesMots end]
set BonDE [ExtractFromRefseq $Access AllMiRNA2907 [RepertoireDuGenome] GetDefinition]
set GeneName $GN
if { ! [regexp {\-V[0-9]+$} $GeneName] && [regexp {transcript variant ([0-9]+)} $BonDE Match V]} {
append GeneName "-V$V"
}
append BonDE " from $Access"
set BonneEntete ">$Nom $GeneName $BonDE"
set LaSeq [lrange $LesLignes 1 end]
SauveLesLignes [concat [list $BonneEntete] $LaSeq] dans "[RepertoireDuGenome]/nuctfaNew/$Nom"
InformeSansDemander $Nom "ValiDE: $BonDE"
InformeSansDemander $Nom "AccessRefseq: $Access"
return $BonneEntete
}
proc AccessDuMiRNAPourTous {} {
foreach Nom [ListeDesPABs] {
Espionne [AccessDuMiRNA $Nom]
}
}
proc AccessDuPlusProcheDansDisphy {Nom OrgaCherche} {
global RepertoireDuGenome
foreach Ligne [LesLignesDuFichier "$RepertoireDuGenome/disphy/$Nom"] {
scan $Ligne "%s %d %s" Orga Distance Access
if {$Orga == $OrgaCherche} { return $Access }
}
return ""
}
proc AccessDuTFADeLaProteine {PAB} {
Wup "Rend le banque Id du TFA"
if {! [file exists $PAB]} {return ""}
set F [open "$PAB"]
while {[gets $F Ligne]>=0} {
if {! [regexp -nocase {[a-z]+ || [0-9]+} $Ligne]} {continue}
if { [string range $Ligne 0 0] != ">"} {continue}
regsub "^>" $Ligne "" Ligne
set AccessLu ""
set BanqueId ""
set bidon ""
scan $Ligne "%s %s %s" bidon BanqueId AccessLu
}
if { ($BanqueId==":" || $BanqueId=="Protein" || $BanqueId=="PROTEIN") && $AccessLu!=""} {set BanqueId $AccessLu}
return $BanqueId
}
proc AccessDuTFADumRNA {PAB} {
Wup "Rend le banque Id du TFA"
if {! [file exists $PAB]} {return ""}
set F [open "$PAB"]
while {[gets $F Ligne]>=0} {
if {! [regexp -nocase {[a-z]+ || [0-9]+} $Ligne]} {continue}
if { [string range $Ligne 0 0] != ">"} {continue}
regsub "^>" $Ligne "" Ligne
set AccessLu ""
set BanqueId ""
set bidon ""
scan $Ligne "%s %s %s" bidon BanqueId AccessLu
}
if { ($BanqueId==":" || $BanqueId=="mRNA") && $AccessLu!=""} {set BanqueId $AccessLu}
return $BanqueId
}
proc AccessEvi {Nom} {
set BAcc [ExtraitInfo $Nom "BAcc"]
set Access ""
ScanLaListe [split $BAcc ":"] Banque Access
return $Access
}
proc AccessFromHeader {Nom} {
set Fichier "[RepertoireDuGenome]/prottfa/$Nom"
if {[FileAbsent $Fichier]} { return "" }
set Header [EnteteDuFichierTFA $Fichier]
set Access [StringApres " from " dans $Header]
return $Access
}
proc AccessHNR {} {
foreach Nom [ListeDesPABs] {
set Entete [EnteteDuFichierTFA [GscopeFile $Nom nuctfa]]
set Access [lindex [LesMotsDeLaLigne $Entete] 5]
InformeSansDemander $Nom "AccessProt: $Access"
}
exit
}
proc AccessNuc2GO {AccessNuc} {
set LesGO {}
foreach AccessProt [LesIdDeLaBanqueRelieALAccess $AccessNuc de genbankfull dans protein] {
foreach GO [Access2GO $AccessProt] {lappend LesGO $GO}
}
return [EnterrerLesAncetresGO [LesGODeRefDesGO $LesGO]]
}
proc AccessOlida {access} {
array set LesSequences {index {}}
if {0} {
# Récup les variants protéiques
set varsplic ""
catch {set varsplic [exec getz -e "(\[libs={varsplic}-ID:${access}*\] | \[libs-AccNumber:${access}*\])"]}
foreach entry [splitFastaOlida $varsplic] {
puts $entry
regexp -nocase {^>((\w+)-(\d+))\|(\w+)\s+(.*)} [lindex [split $entry "\n"] 0] regMatch index protAccess variant id de
# puts $index
# puts $protAccess
# puts $variant
# puts $id
# puts $entry
lappend LesSequences(index) $index
set LesSequences($index,access) $index
set LesSequences($index,banque) "varsplic"
set LesSequences($index,definition) [string trim $de]
set LesSequences($index,protein) ">$entry"
}
exit
}
# Récupère les protéines
set protein ""
catch {set protein [exec getz -e "(\[libs={refseqp protein}-ID:${access}*\] | \[libs-AccNumber:${access}*\])"]}
foreach entry [splitEmblOlida $protein] {
puts $entry
if {[regexp -lineanchor {^ID} $entry]} {
# Entrée uniprot/embl
if {[regexp -line {^DR\s+EMBL;\s+(\w+).*;\s+(\w+)\.} $entry regMatch nucAccess nucType]} {
puts $nucAccess
puts $nucType
set nucEntry [exec getz -e "(\[libs={genbank}-AccNumber:${nucAccess}*\])"]
puts $nucEntry
}
}
}
parray LesSequences
# set getzOut [exec getz -e "(\[libs={genbankfull refseq refseqp protein varsplic pdb}-ID:${access}*\] | \[libs={genbankfull refseq refseqp protein varsplic}-AccNumber:${access}*\])"]
}
proc AccessRefseq {Nom} {
return [ExtraitInfo $Nom "AccessRefseq"]
}
proc AccessToKeepOrNotToKeep {Access} {
global MesAccessInterressants
if {! [info exists MesAccessInterressants]} {MesAccessInterressants}
if {[info exists MesAccessInterressants($Access)]} {return 0} else {return 1}
}
proc AceSubset {aAce contigIdx} {
upvar $aAce ace
set subset(contigIdx) $contigIdx
set subset(alignmentName) $ace(alignmentName)
set subset(name) $ace($contigIdx,name)
set subset(length) $ace($contigIdx,length)
set subset(reads) $ace($contigIdx,reads)
set subset(segments) $ace($contigIdx,segments)
set subset(strand) $ace($contigIdx,strand)
set subset(consensus) $ace($contigIdx,consensus)
set subset(basesQuality) $ace($contigIdx,basesQuality)
set subset(index) $ace($contigIdx,index)
set subset(lowestRelativeConsensusPosition) $ace($contigIdx,lowestRelativeConsensusPosition)
foreach readIdx $ace($contigIdx,index) {
set subset($readIdx,name) $ace($contigIdx,$readIdx,name)
set subset($readIdx,strand) $ace($contigIdx,$readIdx,strand)
set subset($readIdx,consensusPosition) $ace($contigIdx,$readIdx,consensusPosition)
set subset($readIdx,length) $ace($contigIdx,$readIdx,length)
set subset($readIdx,numWholeReads) $ace($contigIdx,$readIdx,numWholeReads)
set subset($readIdx,numTagReads) $ace($contigIdx,$readIdx,numTagReads)
set subset($readIdx,sequence) $ace($contigIdx,$readIdx,sequence)
set subset($readIdx,qualityStart) $ace($contigIdx,$readIdx,qualityStart)
set subset($readIdx,qualityEnd) $ace($contigIdx,$readIdx,qualityEnd)
set subset($readIdx,alignmentStart) $ace($contigIdx,$readIdx,alignmentStart)
set subset($readIdx,alignmentEnd) $ace($contigIdx,$readIdx,alignmentEnd)
}
return [array get subset]
}
proc AceToMacSim {inputFile {outputDir XmlContigs}} {
set prefix [PreFixe]
set numerotation [FormatDesNumerosPourCollection]
if { ! [file isdirectory [RepertoireDuGenome]/$outputDir] } {
puts "Creating [RepertoireDuGenome]/$outputDir"
file mkdir [RepertoireDuGenome]/$outputDir
}
# Read ACE file and store results in ace array
array set ace [readACEfile $inputFile]
set ORFnumber 1
foreach contigIdx $ace(index) {
puts $contigIdx
array set contig [AceSubset ace $contigIdx]
# Align sequences in the ace subset array
puts "Aligning reads to consensus..."
alignSequencesToConsensus contig
# Generate XmlMacSim
puts "Generating XmlMacSim..."
set xml [generateXMLmacsim contig]
# Writing...
set fh [open [format "%s/%s/%s%${numerotation}" [RepertoireDuGenome] $outputDir $prefix $ORFnumber] w]
puts $fh $xml
close $fh
incr ORFnumber
}
# Well done !
puts "Finished."
# quickConvert $outputDir
}
proc ActaClusFilter {Cluster} {
#Permet de retrouver dans un fichier de SBS quels sont ceux qui dans le fichier d'origine avaient un ACTACAN en 5'
set FichierClu [open "/genomics/link/UCSCAlignements/g11/STAF/fiches/Cluster4/Cluster$Cluster.tfa" "r"]
set I 0
if { [file exists $ActaCluster] } {
file delete $ActaCluster
}
while { [gets $FichierDes25 Ligne25] >=0 } {
ScanLaListe $Ligne25 Sequence25
lappend Liste25 $Sequence25
}
while { [gets $FichierClu LigneClu] >=0 } {
incr I
ScanLaListe $LigneClu SequenceClu
foreach Seq $Liste25 {
ScanLaListe $Seq Sequence
set SBS [string range $Sequence 7 24]
if { $SequenceClu == $SBS } {
AppendAuFichier $ActaCluster ">Act$I"
AppendAuFichier $ActaCluster "$Sequence"
}
}
}
}
proc ActiChip1_0 {} {
Wup "Permet de rendre la liste des PAB des oligos commandes pour ActiChip1_0"
set Fichier "[RepertoireDuGenome]/fiches/ActiChip1_0.txt"
global Oligo_ActiChip1_0
if {[info exists Oligo_ActiChip1_0]} {
return $Oligo_ActiChip1_0
}
if {! [file exists $Fichier]} {return ""}
set Oligo_ActiChip1_0 ""
set F [open "$Fichier"]
while {[gets $F Ligne]>=0} {
if {! [regexp -nocase {[a-z0-9]+} $Ligne]} {continue}
set PAB ""
scan $Ligne "%s" PAB
lappend Oligo_ActiChip1_0 $PAB
}
close $F
set Oligo_ActiChip1_0 [lsort -unique $Oligo_ActiChip1_0]
return $Oligo_ActiChip1_0
}
proc ActiChip2_0 {} {
Wup "Permet de rendre la liste des PAB des oligos commandes pour ActiChip2_0"
set Fichier "[RepertoireDuGenome]/fiches/ActiChip2_1.txt"
global Oligo_ActiChip2_0
if {[info exists Oligo_ActiChip2_0]} {
return $Oligo_ActiChip2_0
}
if {! [file exists $Fichier]} {return ""}
set Oligo_ActiChip2_0 ""
set F [open "$Fichier"]
while {[gets $F Ligne]>=0} {
if {! [regexp -nocase {[a-z0-9]+} $Ligne]} {continue}
set PAB ""
scan $Ligne "%s" PAB
lappend Oligo_ActiChip2_0 $PAB
}
close $F
set Oligo_ActiChip2_0 [lsort -unique $Oligo_ActiChip2_0]
return $Oligo_ActiChip2_0
}
proc ActiChip2_0_Reference {File} {
Wup "Cree un fichier avec la liste des PAB et des definitions"
set RepmRNA "[RepertoireDuGenome]/mrnatfa_Homo_sapiens"
set RepNuctfa "[RepertoireDuGenome]/nuctfa"
set LesLignes ""
foreach PAB [ActiChip2_0] {
#On annote en recherchant les definitions
set ProteinAccess ""
set DesignAccess ""
set Definition ""
#Access utilise lors du design
#un mRNA ou sequence originale (nuctfa)
#######################################
set Query "$RepmRNA/$PAB"
if {[file exists $Query]} {
set DesignAccess [AccessDeLaBoite $PAB mRNA]
} else {
set Query "$RepNuctfa/$PAB"
if {[file exists $Query]} {
set DesignAccess [AccessDuTFADumRNA $Query]
} else {set DesignAccess "$PAB"}
}
#Access et definition de la proteine correspondante
###################################################
set ProteinAccess [AccessDeLaBoite $PAB protein]
set Definition [AccessDeLaBoite $PAB protein Definition]
#Definition de secours (mRNA ou access)
#######################################
if { $Definition == "" && $DesignAccess != ""} {
set Definition [AccessDeLaBoite $PAB mRNA Definition]
if { $Definition == ""} {
set Definition [lrange [DefDeAcc $DesignAccess genbankfull Def] 1 end]
}
}
lappend LesLignes "$PAB\t$Definition"
}
AppendAuFichier $File [join $LesLignes "\n"]
return ""
}
proc ActiChip3_0 {} {
Wup "Permet de rendre la liste des PAB des oligos commandes pour ActiChip3_0"
set Fichier "[RepertoireDuGenome]/fiches/ActiChip3_0.txt"
global Oligo_ActiChip3_0
if {[info exists Oligo_ActiChip3_0]} {
return $Oligo_ActiChip3_0
}
if {! [file exists $Fichier]} {return ""}
set Oligo_ActiChip3_0 ""
set F [open "$Fichier"]
while {[gets $F Ligne]>=0} {
if {! [regexp -nocase {[a-z0-9]+} $Ligne]} {continue}
set PAB ""
scan $Ligne "%s" PAB
lappend Oligo_ActiChip3_0 $PAB
}
close $F
set Oligo_ActiChip3_0 [lsort -unique $Oligo_ActiChip3_0]
return $Oligo_ActiChip3_0
}
proc ActiChipGenesOnWeb {{ListeDesNoms ""} {TitreSummary ""} args} {
set LesHeadSup {}
set I 0
foreach {PH LesV} $args {
regsub "_" $PH " " PH
scan $PH "%s %s" Pos Head
incr Pos $I
lappend LesHeadSup $Head
set PosSup($Head) $Pos
set K 0
foreach V $LesV {
set ValSup($Head,$K) $V
incr K
}
incr I
}
set FichierActinome "[RepertoireDuGenome]/TableauActiChip"
set LesLignes [LesLignesDuFichier $FichierActinome]
set LigneDeTete [lindex $LesLignes 0]
set LesHeaders [split $LigneDeTete ";"]
foreach Head $LesHeadSup {
set LesHeaders [linsert $LesHeaders $PosSup($Head) $Head]
}
set NbHeaders [llength $LesHeaders]
set Titre "Actinome Database $TitreSummary"
set HeaderDuHtml ""
#Html_ZeroToBody $Titre $HeaderDuHtml
#Html_Append [H_Balise $Titre "h2"]
Html_Append ""
Html_BaliseOpen "html"
Html_BaliseOpen "head"
Html_Title "$Titre"
Html_Append ""
Html_Append ""
Html_Append " "
Html_Append " "
Html_Append "Get Help"
Html_Append " "
Html_Append " "
Html_Append "
"
Html_Append ""
Html_Append "
"
Html_Append "
"
set NbCol $NbHeaders
CouleurDegradee $NbCol
set Liste {}
lappend Liste $NbCol
lappend Liste "border='1' cellpadding='3' cellspacing='1'"
lappend Liste ""
foreach Header $LesHeaders {
lappend Liste "bgcolor='[CouleurDegradee]' nowrap='nowrap'"
}
foreach Header $LesHeaders {
lappend Liste $Header
}
set K 0
foreach Ligne $LesLignes {
Espionne "Debut$Ligne FIN"
set LesValeurs [split $Ligne ";"]
foreach Head $LesHeadSup {
set P $PosSup($Head)
set V $ValSup($Head,$K)
set LesValeurs [linsert $LesValeurs $P $V]
}
incr I
set Nom [lindex $LesValeurs 0]
if { ! [EstUnPAB $Nom]} { continue }
foreach H $LesHeaders V $LesValeurs {
if {$H=="ProbeSet" || $H=="Pathway"} {
set LongV [string length $V]
if {$LongV>=200} {
set Milieu [expr $LongV / 2]
set V "[string range $V 0 $Milieu] [string range $V [expr $Milieu+1] end]"
}
}
set Vue [BelleVueJean $H $V $Nom]
lappend Liste $Vue
}
incr K
}
Html_TableFromList $Liste
Html_Append "
"
Html_Append "
"
Html_Append "
"
Html_Append "
"
Html_Append "
"
Html_Append "
"
Html_Append ""
Html_Append "
"
Html_Append "
"
Html_Append "
"
Html_Append ""
Html_Append "Muller et al (2007) BMC Genomicsdoi: 10.1186/1471-2164-8-294"
Html_Append ""
Html_Append "
"
Html_Append "
"
Html_Append "
"
Html_Append ""
Html_Append "
"
Html_Append "
"
Html_Append "
"
Html_Append "
"
Html_Append "
"
Html_Append "
"
Html_Append ""
Html_Append "
"
Html_Append "
"
Html_Append ""
Html_Append "
"
Html_Append ""
Html_Append "If you have any problems or questions, please, feel free to contact us at jean.muller@igbmc.u-strasbg.fr"
Html_Append ""
Html_Append "
" $l]} {
continue
} else {
set deb 1
}
if {[regexp "href=" $l]} {
set ib1 [string first ">" $l]
set ib2 [string first "<" [string range $l $ib1 end]]
set txt [string range $l [incr ib1] [expr $ib2 + $ib1 -2]]
lappend TText $txt
set ib1 [expr [string first "\"" $l] +1]
set ib2 [string first "\"" [string range $l $ib1 end]]
set file [string range $l $ib1 [expr $ib2+$ib1-1]]
lappend LFile $file
}
}
foreach file $LFile {
lappend TText [ExtraitDocDe $file]
}
set f [open "doc.txt" w]
puts $f [join $TText "\n"]
close $f
exit
}
proc CleanFeaturesInMACS {{FichierIn ""} {FichierOut ""}} {
Wup "Permet de virer les features d 1 alignement"
Wup "Trop de features posent problemes a Clustalw pour les conversions"
if {! [file exists $FichierIn]} {return ""}
if {$FichierOut == ""} {
set FichierOut "$FichierIn"
set extension ""
if {[regexp -nocase {.[a-z]+$} $FichierOut extension]} {
regsub -nocase "$extension" $FichierOut "_propre${extension}" FichierOut
} else {
set FichierOut "${FichierIn}_propre"
}
}
if {[file exists $FichierOut]} {
file delete -force $FichierOut
}
set F [open "$FichierIn"]
while {[gets $F Ligne]>=0} {
if {! [regexp -nocase {[a-z]+ || [0-9]+} $Ligne]} {continue}
if {[regexp "^ FT " $Ligne] || [regexp "^feature " $Ligne]} {continue}
lappend LesLigne $Ligne
}
close $F
AppendAuFichier $FichierOut [join $LesLigne "\n"]
return "$FichierOut"
}
proc CleanFeaturesInMACS2 {{FichierIn ""} {FichierOut ""}} {
Wup "Permet de virer les features d 1 alignement"
Wup "Trop de features posent problemes a Clustalw pour les conversions"
if {! [file exists $FichierIn]} {return ""}
if {$FichierOut == ""} {
set FichierOut "$FichierIn"
set extension ""
if {[regexp -nocase {.[a-z]+$} $FichierOut extension]} {
regsub -nocase "$extension" $FichierOut "_propre${extension}" FichierOut
} else {
set FichierOut "${FichierIn}_propre"
}
}
if {[file exists $FichierOut]} {
file delete -force $FichierOut
}
set F [open "$FichierIn"]
while {[gets $F Ligne]>=0} {
if {! [regexp -nocase {[a-z]+ || [0-9]+} $Ligne]} {continue}
if {[regexp "^ FT " $Ligne] || [regexp "^feature " $Ligne]} {continue}
AppendAuFichier $FichierOut $Ligne
}
close $F
return "$FichierOut"
}
proc CleanRosace {K Quoi} {
global ParametresDuBoard
if {$Quoi=="Textes"} { set LesTags [list "Txt"] }
if {$Quoi=="Aiguilles"} { set LesTags [list "Aiguille"] }
if {$Quoi=="Zones"} {
set LesTags [list "Zone" "Etiquette"]
}
catch {unset ParametresDuBoard($K,IemeCouche)}
foreach Tag $LesTags {
foreach Id [$K find withtag $Tag] {
$K delete $Id
}
}
}
proc CleanSpace {} {
global RepertoireDuGenome
foreach F [glob "$RepertoireDuGenome/cdna/*"] {
regsub -all "'" $F "_" D
regsub -all " " $D "" D
regsub "/cdna/" $D "/newcdna/" D
file copy $F $D
}
}
proc CleanUpProteome {{minIdentity ""}} {
if {$minIdentity==""} {set minIdentity 100}
#Correction de la redondance
puts "#########################################"
puts "--Correction de la redondance--"
puts "#########################################"
puts "remarque: par defaut demande 100% d'identité"
set prefixe [PreFixe]
CorrectRedundancyOnGscope "blastp$prefixe" $minIdentity
}
proc Clean_ARPAnno {} {
Wup "Permet de supprimer tous les fichiers resultats"
set RepARP_Results "[RepARPAnnoWeb]"
set RepTFAResults "$RepARP_Results"
set RepBlastResults "$RepARP_Results"
set RepMACSResults "$RepARP_Results"
foreach Dir [list $RepMACSResults $RepBlastResults $RepTFAResults] {
set LesFichiers [glob -nocomplain -directory "$Dir" "*"]
foreach F $LesFichiers {
if {[file exists $F]} {
#Espionne "$F"
file delete -force $F
}
}
}
return ""
}
proc Cleanup {} {
if { [info exists ::quadric] } {
gluDeleteQuadric $::quadric
unset ::quadric
}
if { [info exists ::ArcBall] } {
tcl3dDeleteArcBall $::ArcBall
unset ::ArcBall
}
}
proc ClearDistances {} {
set ::pgl(Dist2Show) [list]
set ::pgl(TextDeDist) [list]
$::pgl(wogl) postredisplay
return
}
proc ClearIDs {} {
foreach mold $::StrucAVoir {
set nom [DonneIdDeAccessPDB $mold]
$nom ClearPicked
}
DefineLabels2Show
$::pgl(wogl) postredisplay
return
}
proc ClearLesZones {K} {
Wup "Efface les zones de design"
global LigneZone
set LesIds ""
set LesIds [$K find withtag "Zonable"]
foreach Id $LesIds {
catch {$K delete $Id}
}
if {[info exists LigneZone]} {unset LigneZone}
return ""
}
proc ClearPassePlat {} {
NousAllonsAuBoulot [RepertoireDuGenome]
set LesClear {}
set Previous ""
foreach PP [lsort -decreasing [glob -nocomplain PassePlat*]] {
if { ! [regexp {^PassePlat_([^_]+)_([0-9]+)$} $PP Match Nom Date]} {
set Previous ""
continue
}
if {$Nom==$Previous} {
lappend LesClear $PP
}
set Previous $Nom
}
set LesClearAFaire [AfficheListe $LesClear "AvecRetour" "Do I clear these"]
foreach PP $LesClearAFaire {
file delete $PP
}
OnRevientDuBoulot
return $LesClearAFaire
}
proc ClearPassePlatDansFiches {} {
NousAllonsAuBoulot "[RepertoireDuGenome]/fiches"
set LesClear {}
set Previous ""
foreach PP [lsort -decreasing [glob -nocomplain PassePlat*]] {
if { ! [regexp {^PassePlat_([^_]+)_([0-9]+)$} $PP Match Nom Date]} {
set Previous ""
continue
}
if {$Nom==$Previous} {
lappend LesClear $PP
}
set Previous $Nom
}
set LesClearAFaire [AfficheListe $LesClear "AvecRetour" "Do I clear these"]
foreach PP $LesClearAFaire {
file delete $PP
}
OnRevientDuBoulot
return $LesClearAFaire
}
proc ClearSelectionNoms {} {
$::NomNomSeq tag remove InvNm 1.0 end
set ::NomSeqSel {}
update
return
}
proc ClearSelectionNwOj {{Ls ""}} {
set w $::NwOj(Can)
if {$Ls == {}} {
$w itemconfig Selected -fill black
$w dtag all Selected
set ::NwOj(ListeIdSel) [list]
} else {
foreach e $Ls {
$w itemconfig $e -fill black
$w dtag $e Selected
}
}
return
}
proc ClearSelectionSequences {} {
#$::NomTextSeq tag delete InvS 1.0 end
return
}
proc ClearSelections {} {
ClearSelectionNoms
# not needed with biotext
#ClearSelectionSequences
return
}
proc ClearSpy {} {
global debug debsq debag
set debug 0
set debsq "s01"
set debag ""
.t tag remove Spy 1.0 end
return
}
proc ClearVar {} {
global VODep
set Lv [info globals]
foreach v $Lv {
if {$v eq "VODep"} {continue}
if {[lsearch $VODep $v] != -1} {continue}
global $v
if {[info exists $v]} {
unset $v
}
if {[eval array exists $v]} {
eval array unset $v
eval unset $v
}
}
foreach f [font names] {
font delete $f
}
update
return
}
proc ClickDansSeq {K X Y} {
set Id [$K find withtag current]
set LesTags [$K gettags $Id]
if {[llength $LesTags]>2} { FaireLire [join $LesTags "\n"] ; return }
set NomSeq [lindex $LesTags 1]
AfficheFetch $NomSeq
}
proc ClientMailDef {} {
global CMDef
LesDefauts
font create CMFont -family Helvetica -size 24
font create CMFontBold -family Helvetica -size 24 -weight bold
set CMDef(Background) "#993355"
set CMDef(Tables) "
- mail {
. pk_mail P
. pk_folder I
. uid I mail id
. sender V64
. receipient T
. subject V256
. date I epoch date-time
. attachment I
. read I
. answered I
}
- mailbox {
. pk_mailbox P
. name V64
. address V64
. username V64
. password V64
. usessl I
. port I
}
- folder {
. pk_folder P
. pk_mailbox I
. name V64
. lastuid I
}
- clientvar {
. var V32
. key V32
. val T
}"
return
}
proc ClonInventory {args} {
global ClonCollection
set Quoi [join $args ","]
if {[info exists ClonCollection($Quoi)]} { return [set ClonCollection($Quoi)] }
if {[info exists ClonCollection(EstCharge)]} { return "" }
#rR set ClonCollection(LesOligos) [InventaireDesFichiersClonage "PAY" "RetournerOligos"]
#rR set ClonCollection(LesPPCR) [InventaireDesFichiersClonage "PAY" "RetournerPPCR"]
set ClonCollection(LesOligos) [InventaireDesFichiersClonage "ProGS" "RetournerOligos"]
set ClonCollection(LesPPCR) [InventaireDesFichiersClonage "ProGS" "RetournerPPCR"]
set ClonCollection(EstCharge) 1
if {[info exists ClonCollection($Quoi)]} { return [set ClonCollection($Quoi)] }
return ""
}
proc ClonInventoryAppend {args} {
global ClonCollection
set Quoi [join [lrange $args 0 end-1] ","]
set Valeur [lindex $args end]
return [lappend ClonCollection($Quoi) $Valeur]
}
proc ClonInventoryExists {args} {
global ClonCollection
if {$args=={}} { return [info exists ClonCollection(EstCharge)]}
set Quoi [join $args ","]
return [info exists ClonCollection($Quoi)]
}
proc ClonInventorySet {args} {
global ClonCollection
set Quoi [join [lrange $args 0 end-1] ","]
set Valeur [lindex $args end]
return [set ClonCollection($Quoi) $Valeur]
}
proc ClonInventoryUnset {args} {
global ClonCollection
set Quoi [join $args ","]
catch {unset ClonCollection($Quoi)}
}
proc ClonePuzzleFit {{OrgaCible ""} {PrefixeCible ""} {Destin ""}} {
#rR il faut etre dans l'ancien pour creer le nouveua
#rR Cree un nouveau projet Gscope en copiant tous les fichiers en y changeant les noms
if {$Destin==""} { set Destin "PFyeastTFIID" }
set RepDestin $Destin
if { ! [regexp "/" $RepDestin]} { set RepDestin "/genomics/link/$Destin" }
if {$OrgaCible==""} { set OrgaCible "Saccharomyces cerevisiae" }
if {$PrefixeCible==""} { set PrefixeCible "PUY" }
if {[NotreOS]==$OrgaCible || [PreFixe]=="$PrefixeCible"} {
FaireLire "Attention il ne faut pas etre dans le projet Cible !!!\n [NotreOS] [PreFixe] ==> $OrgaCible $PrefixeCible"
exit
}
set Prefixe [PreFixe]
foreach Nom [ListeDesPABs] {
set GN [ValiGN $Nom]
set AC [ExtraitInfo $Nom "AC:"]
set AcDuPuz($Nom) $AC
set FicTFAs [GscopeFile $Nom "tfasdescopains"]
set LesHomo {}
set Homo ""
foreach Access [LaSequenceDuTFAs $FicTFAs "LaListeDesAccess"] {
set TFA [LaSequenceDuTFAs $FicTFAs $Access]
set Entete [EnteteDuTexteTFA $TFA]
regsub "^>" $Entete "" Entete
set B "" ; set G "" ; set E ""
scan $Entete "%s %s %s %s" A B G E
if { ! [string equal -nocase $OrgaCible "$G $E"]} { continue }
lappend LesHomo $A
}
if {[llength $LesHomo]==0} { set Homo ""; FaireLire "No homologue for $Nom $GN $AC" }
if {[llength $LesHomo]==1} { set Homo [lindex $LesHomo 0] }
if {[llength $LesHomo]>=2} {
# FaireLire "More than 1 homologue for $Nom $GN $AC, please select the good one"
if {[OuiOuNonMemo "Do I always use the first access"]} {
set Homo [lindex $LesHomo 0]
} else {
set Homo [ChoixParmi $LesHomo]
}
}
if {$Homo==""} { continue }
if {[info exists DejaVu($Homo)]} {
# FaireLire "Handling $Homo in $Nom $GN $AC \n I saw already $DejaVu($Homo)"
continue
}
regsub $Prefixe $Nom $PrefixeCible New
set Message "$New $Homo $Nom $GN $AC"
set EstBon($Nom) 1
lappend LesBonsHomo $Message
set DejaVu($Homo) $Message
Espionne $Message
}
set LesNouvellesBornes {}
foreach Ligne [LesLignesDuFichier "[Fiches]/bornesdespabs"] {
scan $Ligne "%s" Nom
if { ! [info exists EstBon($Nom)]} { continue }
regsub $Prefixe $Ligne $PrefixeCible Borne
lappend LesNouvellesBornes $Borne
}
file mkdir "$RepDestin/fiches"
SauvePuzzleFit [join $LesNouvellesBornes "\n"] dans "$RepDestin/fiches/bornesdespabs"
set Beton [ContenuDuFichier "[RepertoireDuGenome]/beton/miniconfig"]
regsub "PrefixeDesORFs $Prefixe" $Beton "PrefixeDesORFs $PrefixeCible" Beton
regsub {NotreOS [^\n]+} $Beton "NotreOS $OrgaCible" Beton
set Classe [OCduOS $OrgaCible]
regsub {NotreOC [^\n]+} $Beton "NotreOC $Classe" Beton
file mkdir "$RepDestin/beton"
SauvePuzzleFit $Beton dans "$RepDestin/beton/miniconfig"
file mkdir "$RepDestin/prottfa"
file mkdir "$RepDestin/protembl"
file mkdir "$RepDestin/infos"
file mkdir "$RepDestin/tfasdescopains"
file mkdir "$RepDestin/msf"
file mkdir "$RepDestin/msfleon"
file mkdir "$RepDestin/macsimXml"
file mkdir "$RepDestin/pdb"
foreach Ligne $LesBonsHomo {
Espionne $Ligne
scan $Ligne "%s %s %s %s %s" New Homo Nom GNh ACh
set FicProttfa "$RepDestin/prottfa/$New"
set FicProtEmbl "$RepDestin/protembl/$New"
set FicInfo "$RepDestin/infos/$New"
set FicTFAs "$RepDestin/tfasdescopains/$New"
set FicMSF "$RepDestin/msf/$New"
set FicLEON "$RepDestin/msfleon/$New"
set FicMacsims "$RepDestin/macsimXml/$New"
set FicPDB "$RepDestin/pdb/$New"
set LeEmbl [LaSequenceDesBanques $Homo]
set Embl [join $LeEmbl "\n"]
SauvePuzzleFit $Embl dans $FicProtEmbl
DecortiqueLesLignesEMBL $LeEmbl ID AC DE GN OS OC OX
set DE [VraiDEDeLaLigneDE $DE]
set Linfo {}
lappend Linfo "Nom: $New"
lappend Linfo "ID: $ID"
lappend Linfo "AC: $AC"
lappend Linfo "DE: $DE"
lappend Linfo "OS: $OS"
lappend Linfo "OC: $OC"
lappend Linfo "OX: $OX"
lappend Linfo "ValiGN: $GN"
set Info [join $Linfo "\n"]
SauvePuzzleFit $Info dans $FicInfo
set Entete ">$New $OrgaCible $AC $DE"
set TFA [SequenceFormatTFA [join $LeEmbl "\n"] $Entete "protembl"]
SauvePuzzleFit $TFA dans $FicProttfa
set TFAs [ContenuDuFichier [GscopeFile $Nom "tfasdescopains"]]
regsub ">$Nom " $TFAs ">$ACh " TFAs
regsub ">$Homo " $TFAs ">$New " TFAs
foreach Puz [ListeDesPABs] {
set A $AcDuPuz($Puz)
regsub -all "$Puz" $TFAs "$A" TFAs
}
SauvePuzzleFit $TFAs dans $FicTFAs
set FicMacSource [GscopeFile "$Nom.org.aj" "macsimXml"]
if {[FileAbsent $FicMacSource]} { set FicMacSource [GscopeFile "$Nom.org" "macsimXml"] }
if {[FileAbsent $FicMacSource]} { set FicMacSource [GscopeFile "$Nom" "macsimXml"] }
set Mac [ContenuDuFichier $FicMacSource]
regsub -all "$Nom" $Mac "$ACh" Mac
regsub -all "$Homo" $Mac "$New" Mac
set RE "${New}_\[^<\]+"
regsub -all $RE $Mac "$New" Mac
foreach Puz [ListeDesPABs] {
set A $AcDuPuz($Puz)
regsub -all "$Puz" $Mac "$A" Mac
}
SauvePuzzleFit $Mac dans $FicMacsims
set SourcePDB [GscopeFile $Nom "pdb"]
if {[file exists $SourcePDB]} { file copy $SourcePDB $FicPDB }
}
return $LesBonsHomo
}
proc Clos {Destination} {
PosteEtClos $Destination "ClosCanal"
}
proc ClosCanalEtMontreBlaste {Canal Out} {
close $Canal
set Fenetre [AfficheFichier $Out "AvecGrapheAvecSegAlignementAvecAligneurs"]
return
if {[gets $Canal]} {
return 1
}
gets $Canal Message
set Texte "I got an error from batch blast with following message :\n$Message"
set Fenetre [AfficheVariable $Texte "ErrorFromBlast"]
return 0
}
proc ClosCanalEtMontreMSF {Aligneur Canal MSF Log} {
global LaFenetreDesMSF
close $Canal
if { [info exists LaFenetreDesMSF($MSF)] } {
Illumine $MSF [set LaFenetreDesMSF($MSF)]
} else {
set Fenetre [AfficheFichier $MSF "GrandeLargeurAvecEtudeMSF"]
BoutonneLaFenetre $Fenetre "Log" "AfficheFichier $Log AvecRien"
}
}
proc ClosExpoCourante {} {
global ExpoCourante
catch {unset ExpoCourante}
}
proc ClosGalerieCourante {} {
global GalerieCourante
global ExpoCourante
global xPointDeRaccord yPointDeRaccord
catch {unset xPointDeRaccord}
catch {unset yPointDeRaccord}
catch {unset GalerieCourante}
}
proc ClosPierre {} {
global CanalPierre NomDuFichierPierre
if { [info exists CanalPierre] } {
close $CanalPierre
unset CanalPierre
}
}
proc ClosUniquement {Destination} {
close $Destination
}
proc CloseFenetreDrawBlast {w} {
if {$w == ""} {set w "."}
AskBlast unset
destroy $w
AskOptionsDeDrawBlast unsetall
if {[winfo children .] == ""} {exit}
return
}
proc CloseProfileResults {} {
global WProfile
destroy [winfo toplevel $WProfile]
return
}
proc CloseRasMol {} {
global RasM
global CanalR
global RecuperationEffectuee
global LiaisonCoupee
IlFautVoir "quit"
catch {close $CanalR}
unset CanalR
unset RasM
catch {unset RecuperationEffectuee}
catch {unset LiaisonCoupee}
destroy .fcviewer
trace remove variable ListeTypesDeFeatures write MetAJourFeaturesRasmol
return
}
proc Cluspack {ListeOuTexteOuFichier {FichierSortie ""}} {
#rR j'ail'impression que ce n'est pas pour un alignement ... mais pour un fichier de coordonnees.
if {$FichierSortie==""} { set FichierSortie "GetGroupsAndMembers" }
if {[regexp "\n" $ListeOuTexteOuFichier]} {
set Liste [split $ListeOuTexteOuFichier "\n"]
} elseif { ! [regexp " " $ListeOuTexteOuFichier]} {
set Liste [LesLignesDuFichier $ListeOuTexteOuFichier]
} else {
set Liste $ListeOuTexteOuFichier
}
set nL 0
set nCOld -1
foreach Ligne $Liste {
incr nL
set nC [expr [llength $Ligne] - 1]
if {$nCOld==-1} { set nCOld $nC }
if {$nC!=$nCOld} { FaireLire "Missing values in line $Ligne for Cluspack" }
}
set LeTexte {}
lappend LeTexte "$nL $nC"
lappend LeTexte ""
LConcat LeTexte $Liste
NousAllonsAuBoulot
set Racine "[TmpFile Cluspack]"
regsub -all {\.} $Racine "_" Racine
set FichierSecatorIn [SauveLesLignes $LeTexte dans "$Racine.in"]
# set ExecutableCluspack "/biolo/secator/cluspack"
set ExecutableCluspack "/biolo/cluspack/binNew/cluspack"
if {[catch {exec $ExecutableCluspack $FichierSecatorIn -data_type=coordinates -clustering_method=ward -nb_clusters=secator} Message]} {
FaireLire "cluspack failed with message\n $Message"
return ""
}
set FichierSecatorOut "$Racine.clu"
if { ! [file exists $FichierSecatorOut]} { return "" }
if {$FichierSortie=="GetAsIs"} {
set Sortie [ContenuDuFichier $FichierSecatorOut]
} elseif {$FichierSortie=="GetGroupsAndMembers"} {
set Sortie [LesClustersDeCluspack $FichierSecatorOut "GetGroupsAndMembers"]
} elseif {$FichierSortie=="GetAllWithGroup"} {
set Sortie [LesClustersDeCluspack $FichierSecatorOut "GetAllWithGroup"]
} else {
file copy $FichierSecatorOut $FichierSortie
set Sortie $FichierSortie
}
if {[file exists "$Racine.in"]} { file delete "$Racine.in" }
if {[file exists "$Racine.clu"]} { file delete "$Racine.clu" }
OnRevientDuBoulot
return $Sortie
}
proc CluspackDeLaGrid {} {
set Fichier "[RepertoireDuGenome]/fiches/normdensortiedegrid.grid"
set CheminRepertoireOut "[RepertoireDuGenome]/cluspackgrid"
set RepertoireOut "cluspackgrid"
if {! [file exists $RepertoireOut]} {file mkdir $CheminRepertoireOut}
foreach Ligne [LesLignesDuFichier $Fichier] {
scan $Ligne "%s %s %s %s" Nom NormdClustal NormdRascal NormdLeon
if {$NormdRascal > $NormdLeon} {
set RepertoireIn "rascalgrid"
} else {
set RepertoireIn "leongrid"
}
set FichierMsf "[RepertoireDuGenome]/$RepertoireIn/$Nom"
if {! [file exists $FichierMsf]} {continue}
set FichierClustSortie "[RepertoireDuGenome]/$RepertoireOut/$Nom.clu"
if {[file exists $FichierClustSortie]} {
Espionne "$Nom already exists"
continue
}
#perrodou/gscoperso/gscope_lancement
DPCManu $Nom $RepertoireIn $RepertoireOut
}
}
proc CluspackExe {} {
global tcl_platform OrdBinDir env
if {[info exists env(GRILLE)] && $env(GRILLE)} {
return "./cluspack"
}
if {$tcl_platform(platform) ne "windows"} {
if {[info exists OrdBinDir]} {
return [file join $OrdBinDir "cluspack"]
} else {
return "/biolo/cluspack/bin/cluspack"
}
} else {
set lexe [file join $OrdBinDir "cluspack.exe"]
regsub "Program Files" $lexe "PROGRA~1" lexe
return $lexe
}
}
proc CluspackGrid {NomATraiter} {
# version utilisant systematiquerment DPC
global PipeCollection
global PipeQuery
global DefautsPipe
set bchx [set DefautsPipe(Cluspack,bestmsf)]
if {$PipeCollection} {
set FicNormd [file join [RepertoireDuGenome] "normd" $NomATraiter]
} else {
set FicNormd "[file rootname ${NomATraiter}].normd"
}
if {![file exists $FicNormd]} {return 0}
set rbest [string tolower [DefineBestMsfPipe $FicNormd $bchx]]
puts "rbest vaut $rbest"
AjouteAuLogPipe "rbest vaut $rbest"
if {$rbest eq "no file"} {return 0}
if {$PipeCollection} {
set FicMSF [file join [RepertoireDuGenome] $rbest $NomATraiter]
set InCpk [file join [RepertoireDuGenome] cluspack ${NomATraiter}.msf]
if {! [file exists $FicMSF]} {return 0}
file copy -force $FicMSF $InCpk
set OutClu [file join [RepertoireDuGenome] cluspack ${NomATraiter}.clu]
} else {
if {$rbest eq "msf"} {
set rbest ""
} else {
set rbest ".$rbest"
}
set InCpk "[file rootname ${NomATraiter}]${rbest}.msf"
set OutClu "[file rootname ${NomATraiter}].clu"
}
if {[file exists $OutClu]} {return 1}
set commande "LanceurCluspack $InCpk alignment"
set arg "dpc kmeans 0.001"
if {[catch {eval $commande $arg} Message]} {
Espionne $Message
Espionne "Problem with $InCpk with DPC"
return 0
}
if {$PipeCollection} { file delete -force $InCpk }
if {[file exists $OutClu]} {
AjouteAuLogPipe "cluspack = ok"
} else {
AjouteAuLogPipe "cluspack failed"
}
return 1
}
proc CluspackGridChoixSecatorDPC {NomATraiter} {
# version cree mais momentanement non utilisee
# en effet, problemes observes avec secator :
# determine parfois des groupes contenant 1 seule sequence
# a choisi en attendant de travailler avec DPC uniquement!!
global PipeCollection
global PipeQuery
if {$PipeCollection} {
set InInitLeon [file join [RepertoireDuGenome] leon $NomATraiter]
set InLeon [file join [RepertoireDuGenome] cluspack ${NomATraiter}.msf]
# placement du fichier d alignement dans le bon repertoire pour n avoir pas
# a deplacer les fichiers ensuite
File copy -force $InInitLeon $InLeon
# fichier ".clu" cree quel que soit la methode de clusterisation utilisee
set OutClu [file join [RepertoireDuGenome] cluspack ${NomATraiter}.clu]
# les autres fichiers sont crees uniquement par secator
set OutNJ [file join [RepertoireDuGenome] cluspack ${NomATraiter}.nj]
set OutDst [file join [RepertoireDuGenome] cluspack ${NomATraiter}.dst]
} else {
set InLeon "${NomATraiter}.leon.msf"
set OutClu "${NomATraiter}.clu"
set OutNJ "${NomATraiter}.nj"
set OutDst "${NomATraiter}.dst"
}
if {! [file exists $InLeon]} {return 0}
set NbAccess 0
# determination du nombre de sequences dans l alignement
set cmd "grep -c \"Name\" $InLeon"
set NbAccess [eval exec $cmd]
# quel que soit le programme de clusterisation le debut de la commande est la meme
set commande "LanceurCluspack $InLeon alignment"
if {$NbAccess > 100} {
set Moi "dpc"
puts $Moi
set LAutre "secator"
set arg "dpc kmeans 0.001"
set FileClustering "${InLeon}.clu"
} else {
set Moi "secator"
puts $Moi
set LAutre "dpc"
set arg "secator bionj"
set FileClustering "${InLeon}.clu"
}
if {[catch {eval $commande $arg} Message]} {
Espionne $Message
Espionne "Problem with $InLeon with $Moi je vais utiliser $LAutre"
if {$LAutre == "secator"} {
catch {[$commande secator bionj]}
} else {
catch {[$commande dpc kmeans 0.001]}
}
}
if {$PipeCollection} { File delete -force $InLeon }
if {[file exists $OutNJ]} { File delete -force $OutNJ }
if {[file exists $OutDst]} { File delete -force $OutDst }
return 1
}
proc ClustName {Owner} {
return $Owner
}
proc Clustal2MSF {FichierClustal FichierMSF} {
############################################################
### Conversion d'un fichier format clustal au format msf ###
############################################################
if {![file exists $FichierClustal]} {Espionne "FichierClustal $FichierClustal does not exists";return}
Espionne "FichierMSF: $FichierMSF"
set FichierMSF $FichierClustal
Espionne "FichierMSF: $FichierMSF"
regsub {\.[^\.]+$} $FichierClustal "" FichierMSFTmp
set FichierMSFTmp "$FichierMSFTmp.msf"
set Commande "eval exec [PATH clustalw] $FichierClustal -convert -output=gcg"
catch {eval $Commande} Message
if {![file exists $FichierMSFTmp]} {return}
Espionne "FichierMSFTmp: $FichierMSFTmp"
Espionne "FichierMSF: $FichierMSF"
File rename -force $FichierMSFTmp $FichierMSF
Espionne "FichierMSFTmp: $FichierMSFTmp"
Espionne "FichierMSF: $FichierMSF"
return $FichierMSF
}
proc ClustalX {MSF {IsFile ""}} {
if {$IsFile=="IsFile"} {
set FichierMSF $MSF
} else {
set FichierMSF [TmpFile "msf"]
Sauve $MSF dans $FichierMSF
}
exec clustalx $FichierMSF &
}
proc ClustalwExe {} {
global tcl_platform
global OrdBinDir
global env
if {[info exists env(GRILLE)] && $env(GRILLE)} {
return "./clustalw"
}
if {[set tcl_platform(platform)] != "windows"} {
if {[info exists OrdBinDir]} {
return [file join $OrdBinDir "clustalw"]
} else {
return "/biolo/clustal/bin/clustalw"
}
} else {
set lexe [file join $OrdBinDir "clustalw.exe"]
regsub "Program Files" $lexe "PROGRA~1" lexe
return $lexe
}
}
proc ClusterAvOuSsRef {{Qui ""} {Quoi ""} {Orga ""}} {
#ne compte pas les clusters vides
#par orga car des numero de cluster sont commun aux 2 orga
global ClusterAvOuSsRef
if {[info exists ClusterAvOuSsRef($Qui,$Quoi,$Orga)]} {return $ClusterAvOuSsRef($Qui,$Quoi,$Orga)}
if {[info exists ClusterAvOuSsRef("EstCharge",$Orga)]} {return ""}
set ClusterAvOuSsRef("EstCharge",$Orga) 1
if {[regexp -nocase "Test" $Orga]} {
set RepertoireSourisOthers "/genomics/link/SpliRetTest/FichiersInitial/PROT_VARIANTES_61_mai/SOURIS_others_61_mai"
set RepertoireSourisTfactor "/genomics/link/SpliRetTest/FichiersInitial/PROT_VARIANTES_61_mai/SOURIS_Tfactor_61_mai"
set RepertoireSourisNoAlt "/genomics/link/SpliRetTest/FichiersInitial/PROT_VARIANTES_61_mai/SOURIS_NO_ALT_61_mai"
set LesRepertoires [list $RepertoireSourisTfactor $RepertoireSourisOthers $RepertoireSourisNoAlt]
}
if {[regexp -nocase "Mouse" $Orga]} {
set LesRepertoires [LesRepertoires "Mouse" "Ini"]
}
if {[regexp -nocase "Rat" $Orga]} {
set LesRepertoires [LesRepertoires "Rat" "Ini"]
}
foreach Repertoire $LesRepertoires {
foreach FileST [glob -nocomplain "$Repertoire/*"] {
set trouve 0
set cluster [lindex [split [file tail $FileST] "."] 0]
set taille [file size $FileST]
if {$taille == 0} {continue}
foreach Ligne [LesLignesDuFichier $FileST] {
if {[regexp "^>" $Ligne] } {
set Des [lindex [split $Ligne " "] 0]
if {[regexp "^>ENS" $Des] || [regexp "^>NM" $Des] || [regexp "^>XM" $Des]} {
set trouve 1
}
}
}
if {$trouve} {
set ClusterAvOuSsRef($cluster,ref,$Orga) 1
} else {
set ClusterAvOuSsRef($cluster,ref,$Orga) 0
lappend ClusterAvOuSsRef($Repertoire,ListOfSsRef,$Orga) $cluster
lappend ClusterAvOuSsRef(ListOf,SsRef,$Orga) $cluster
}
}
}
return [ClusterAvOuSsRef $Qui $Quoi $Orga]
}
proc ClusterIsoform {} {
global LNOrdali LSOrdali SDG LNDG
set SAli [list]
set Lnom [list]
foreach n $LNOrdali s $LSOrdali {
if {$n eq ""} {continue}
lappend SAli $n $s
lappend Lnom $n
}
CalculeLesPCIGenerique $SAli TPCI
set Lv [list]
foreach n1 $Lnom {
set tmp [list $n1]
foreach n2 $Lnom {
lassign [set TPCI($n1,$n2)] pc l1 l2 lsl
lappend tmp [expr {1.-$pc}]
}
lappend Lv $tmp
}
if {[catch {set Lgr [Tclcluspack $Lv -dt coordinates -cm kmeans -nbc dpc]} Msg]} {
puts "error"
exit
}
unset -nocomplain SDG LNDG
#puts [llength $Lgr]
ClusterSeqsDeCluspackTcl $Lgr SDG LNDG
#puts [array names SDG]
AssignSeqToGroup
LesDefauts Mode Batch
LesDefauts Exit 1
LesDefauts DownloadPDB none
set fout "[file rootname [set ::Defauts(FichierTFA)]].xml"
#SauveLAlignement XML $fout
SauveLAlignement XML JLeSauveAs
exit
}
proc ClusterPositions {LesNoms aBin NbPos} {
global ListeNoeuds Branches1 Branches2 ListeDist GpesColonnes
upvar $aBin Bin
global PremiereColPleine
#dissimilarite entre chaque colonne
DissimilaritesPositions $LesNoms Bin Dissim ColPleines ListeGpes $NbPos
#le gpe col pleines est le premier dans branches,dist et noeuds
#mais dernier dans gpes et effectifs
set NbColPleines [llength $ColPleines]
set ListeEffectifs [list]
set Branches1 [list {}]
set Branches2 [list {}]
set ListeDist [list 0]
set ListeNoeuds [list $ColPleines]
foreach gpe $ListeGpes {
lappend ListeEffectifs 1
}
#dissimilarite entre le groupe des colonnes pleines et les autres
if {$NbColPleines>0} {
foreach gpe $ListeGpes {
set terme1 [expr ($NbColPleines+2)*[set Dissim($PremiereColPleine,$gpe)]]
set Dissim($ColPleines,$gpe) [expr $terme1/($NbColPleines+1)]
set Dissim($gpe,$ColPleines) [set Dissim($ColPleines,$gpe)]
}
lappend ListeGpes $ColPleines
lappend ListeEffectifs $NbColPleines
set NbGpes [expr $NbPos-$NbColPleines+1]
} else {
set NbGpes $NbPos
}
#clustering pour tout le monde
while {$NbGpes>1} {
set Nompp [LePlusPetit $ListeGpes Dissim Valpp]
set e1 [lindex $Nompp 0]
set e2 [lindex $Nompp 1]
set e12 "$e1 $e2"
lappend ListeNoeuds [list $e12]
lappend Branches1 $e1;lappend Branches2 $e2
lappend ListeDist $Valpp
set index1 [lsearch $ListeGpes $e1]
set index2 [lsearch $ListeGpes $e2]
set Prem [Mini $index1 $index2]
set Dern [Maxi $index1 $index2]
set eff1 [lindex $ListeEffectifs $index1]
set eff2 [lindex $ListeEffectifs $index2]
set ListeGpes [lreplace $ListeGpes $Dern $Dern]
set ListeGpes [lreplace $ListeGpes $Prem $Prem]
set ListeEffectifs [lreplace $ListeEffectifs $Dern $Dern]
set ListeEffectifs [lreplace $ListeEffectifs $Prem $Prem]
foreach gpe $ListeGpes EffGpe $ListeEffectifs {
set terme1 [expr {($eff1+$EffGpe)*[set Dissim($e1,$gpe)]}]
set terme2 [expr {($eff2+$EffGpe)*[set Dissim($e2,$gpe)]}]
set terme3 [expr {$EffGpe*[set Dissim($e1,$e2)]}]
set Dissim($e12,$gpe) [expr {($terme1+$terme2-$terme3)/($eff1+$eff2+$EffGpe)}]
set Dissim($gpe,$e12) [expr {($terme1+$terme2-$terme3)/($eff1+$eff2+$EffGpe)}]
}
lappend ListeEffectifs [expr $eff1+$eff2]
lappend ListeGpes $e12
incr NbGpes -1
}
set Seuil [DeterminationSeuil $ListeDist 0]
set GpesColonnes [list]
Coupure end $Seuil GpesColonnes
}
proc ClusterSeqsDeCluspackTcl {Lres aTDeGrp aLGrp} {
upvar $aTDeGrp tab $aLGrp Lgrp
unset -nocomplain tab
set Lgrp [list]
set i 1
foreach c $Lres {
set ngr "Group$i"
lappend Lgrp $ngr
set tab($ngr) $c
incr i
}
return 1
}
proc ClusterSequences {aBin ListeLabels TailleSeq} {
global ListeNoeuds ListeDist Branches1 Branches2 GpesSequences
upvar $aBin Bin
DissimilaritesSequences $ListeLabels Bin Dissim $TailleSeq
set NbGpes [llength $ListeLabels]
set ListeGpes $ListeLabels
set Branches1 [list]
set Branches2 [list]
set ListeNoeuds [list]
set ListeDist [list]
foreach Label $ListeLabels {
lappend ListeEffectifs 1
}
while {$NbGpes>1} {
#Recheche des deux groupes les plus proches
set Nompp [LePlusPetit $ListeGpes Dissim Valpp]
set e1 [lindex $Nompp 0]
set e2 [lindex $Nompp 1]
set e12 "$e1 $e2"
#Mise a jour des listes
lappend ListeNoeuds [list $e12]
lappend Branches1 $e1;lappend Branches2 $e2
lappend ListeDist $Valpp
set index1 [lsearch $ListeGpes $e1]
set index2 [lsearch $ListeGpes $e2]
set Prem [Mini $index1 $index2]
set Dern [Maxi $index1 $index2]
set eff1 [lindex $ListeEffectifs $index1]
set eff2 [lindex $ListeEffectifs $index2]
set ListeGpes [lreplace $ListeGpes $Dern $Dern]
set ListeGpes [lreplace $ListeGpes $Prem $Prem]
set ListeEffectifs [lreplace $ListeEffectifs $Dern $Dern]
set ListeEffectifs [lreplace $ListeEffectifs $Prem $Prem]
#calcul de la dissimilarite entre le nouveau groupe et tous les autres
foreach gpe $ListeGpes EffGpe $ListeEffectifs {
set terme1 [expr ($eff1+$EffGpe)*[set Dissim($e1,$gpe)]]
set terme2 [expr ($eff2+$EffGpe)*[set Dissim($e2,$gpe)]]
set terme3 [expr $EffGpe*[set Dissim($e1,$e2)]]
set Dissim($e12,$gpe) [expr ($terme1+$terme2-$terme3)/($eff1+$eff2+$EffGpe)]
set Dissim($gpe,$e12) [expr ($terme1+$terme2-$terme3)/($eff1+$eff2+$EffGpe)]
}
lappend ListeEffectifs [expr $eff1+$eff2]
lappend ListeGpes $e12
incr NbGpes -1
}
set Seuil [DeterminationSeuil $ListeDist 0]
set GpesSequences [list]
Coupure end $Seuil GpesSequences
}
proc Cluster_Gretta {AffyOuPABOuList} {
}
proc ClusteringCourant {{quoi name}} {
if {$quoi eq "index"} {
return [set ::Defauts(IxClustCourant)]
} else {
return [set ::Defauts(NmClustCourant)]
}
}
proc ClusteringDesMSFPourTous {{LesNoms ""} {NameRepMSF msf}} {
if {$LesNoms == ""} {set LesNoms [ListeDesPABs]}
set Rep [RepertoireDuGenome]
set Keep 0
if {0 < [llength [glob -nocomplain "$Rep/$NameRepMSF/*.clust"]]} {
if {[OuiOuNon "Some files exist in $Rep/$NameRepMSF.\nWould you want to conserv them?"]} {
set Keep 1
}
}
foreach Nom $LesNoms {
Espionne $Nom
set FileProt "$Rep/prottfa/$Nom"
set FileMSF "$Rep/$NameRepMSF/$Nom"
set FileClust "$FileMSF.clust"
if {![file exists $FileProt] || ![file exists $FileMSF]} {continue}
if {$Keep && [file exists $FileClust]} {continue}
ClusteringDuMSF $FileMSF $FileClust
}
return
}
proc ClusteringDuMSF {FichierMSF FichierClustering {DPCouSecator ""}} {
if {![file exists $FichierMSF]} {return}
set NameFile [file tail $FichierMSF]
regexp {^[^\.]+} $NameFile NameFile
set FichierMSFTmp "[RepertoireDeTravail]/$NameFile"
File copy -force $FichierMSF $FichierMSFTmp
if {$DPCouSecator == ""} {
set NbAccess 0
set F [open $FichierMSF]
while {[gets $F Ligne]>=0} {
set Entete [lindex [split [string trim $Ligne] " "] 0]
if {[string equal -nocase $Entete "Name:"]} {incr NbAccess}
if {$Entete == "//"} {break}
}
close $F
if {100 < $NbAccess} {
set Moi "dpc"
set LAutre "secator"
set Commande "eval exec /biolo/secator/dpc $FichierMSFTmp alignment"
set FileClustering "${FichierMSFTmp}.dpc"
} else {
set Moi "secator"
set LAutre "dpc"
set Commande "eval exec /biolo/secator/secator $FichierMSFTmp"
set FileClustering "${FichierMSFTmp}.sec"
}
if {[catch {eval $Commande} Message]} {
Espionne $Message
Espionne "Problem with $FichierMSFTmp with $Moi je vais utiliser $LAutre"
return [ClusteringDuMSF $FichierMSF $FichierClustering $LAutre]
}
if {![file exists $FileClustering ]} {return}
File rename -force $FileClustering $FichierClustering
} else {
if {[string equal -nocase $DPCouSecator "dpc"]} {
set Commande "eval exec /biolo/secator/dpc $FichierMSFTmp alignment"
set FileClustering "${FichierMSFTmp}.dpc"
}
if {[string equal -nocase $DPCouSecator "secator"]} {
set Commande "eval exec /biolo/secator/secator $FichierMSFTmp"
set FileClustering "${FichierMSFTmp}.sec"
}
if {[catch {eval $Commande} Message]} {
Espionne $Message
Espionne "Problem with $FichierMSFTmp with $DPCouSecator"
}
if {![file exists $FileClustering ]} {return}
File rename -force $FileClustering $FichierClustering
}
return $FichierClustering
}
proc ClusteringDuMac {{quoi name}} {
set p [MacCourant]
switch $quoi {
"index" {
set r [$::db eval {select pk_clustering from clustering where pk_mac=$p}]
}
"name" {
set r [$::db eval {select name from clustering where pk_mac=$p}]
}
"method" {
set r [$::db eval {select method from clustering where pk_mac=$p}]
}
"zone" {
set r [$::db eval {select zone from clustering where pk_mac=$p}]
}
}
return $r
}
proc ClusteringPourTous {} {
foreach Fichier [glob -nocomplain "[RepertoireDuGenome]/leon/*"] {
set Nom [file tail $Fichier]
Espionne $Nom
Anne_CluspackGridChoixSecatorDPC $Nom
}
}
proc ClusteringRRPS {meth nbc} {
set dcdn "toto"
sqlite3 $dcdn wobble.sql
set Ltables [lsort [$dcdn eval {select tbl_name from sqlite_master}]]
# cree Liste pour Cluspack
set table [lindex $Ltables 0]
set Lpk [$dcdn eval "select pk_items from $table"]
puts "Nbr of pks in clustering [llength $Lpk]"
set Ldata [list]
foreach pk $Lpk {
set Ltmp [list $pk]
foreach table $Ltables {
set Lv [$dcdn eval "select * from $table where pk_items=$pk"]
set ok 1
#puts "$pk"
foreach {a b} [lrange $Lv 1 end] {
if {0 && ($a == 0.0 || $b == 0.0)} {
set ok 0
break
}
#set dif [expr {abs($a - $b)}]
set dif [expr {$a - $b}]
if {0 && $dif == 1.0} {
set ok 0
break
}
if {1 && abs($dif) == 1.0} {
set dif 0.0
} elseif {$dif == 0.0 && $a != 0.0} {
#set dif 0.005
set dif 0.0
}
lappend Ltmp $dif
}
}
#puts ""
if {$ok} {
lappend Ldata $Ltmp
}
}
puts "Compute clustering ..."
puts "Nb data : [llength $Ldata]"
set Ldori $Ldata
set nbCols [llength [lindex $Ldori 0]]
#set Ldata [CentreDataPourClustering $Ldata]
#puts "Data centered \[-1,1\]"
SauveDataClustering $Ldata
switch $meth {
"km" {
set methode "kmeans"
set methCl "kmeans"
set nbcCl $nbc
}
"mm" {
set methode "mixture model"
set methCl $meth
set nbcCl $nbc
}
"hie" {
set methode "hierarchic"
set meth "hi"
set methCl "hierar"
set nbc "sec"
set nbcCl "secator"
}
}
set dir "$meth$nbc"
if {! $::DeleteDone} {
file delete {*}[glob -nocomplain [file join hubert $dir sel*.acc]]
set ::DeleteDone 1
}
set Lgr [Tclcluspack $Ldata -dt coordinates -cm "$methCl" -nbc "$nbcCl" -wc]
puts "Method : $methode"
puts "Groups : $nbc"
puts "\nClustering :"
puts "Nb seqs : [llength $Ldori]"
puts "\nNb Clusters : [llength $Lgr]"
# Pour chaque cluster,
# calcule norme avec data originales
set ig 0
set Lfin [list]
foreach gr $Lgr {
set Lpk [ExtraitListeDeListe $gr 0]
# init
set nbe [llength $gr]
for {set col 1} {$col < $nbCols} {incr col} {
set col$col 0.0
}
foreach pk $Lpk {
set ix [lsearch -exact -index 0 $Ldori $pk]
for {set col 1} {$col < $nbCols} {incr col} {
set col$col [expr {[set col$col] + abs([lindex [lindex $Ldori $ix] $col])}]
}
}
# calcule moy par colonne et sum totale
set sum 0.0
for {set col 1} {$col < $nbCols} {incr col} {
set col$col [expr {[set col$col]/$nbe}]
#set sum [expr {$sum + [set col$col]}]
# change car diff n'est plus en
# valeur absolue, mais moy oui
set sum [expr {$sum + abs([set col$col])}]
}
set sum [expr {$sum/($nbCols-1)}]
set Ltmp [list "gr$ig" $nbe $sum]
puts "gr$ig $nbe [format %6.4f $sum]"
for {set col 1} {$col < $nbCols} {incr col} {
puts -nonewline [format "%5.3f " [set col$col]]
lappend Ltmp [set col$col]
}
puts ""
lappend Lfin $Ltmp
incr ig
}
puts ""
# tri
set Lfin [lsort -decreasing -real -index 2 $Lfin]
EcritClustersRRPS $Lfin $Lgr
puts "Clusters with highest biais"
foreach g $Lfin {
puts -nonewline [format %5s [lindex $g 0]]
puts -nonewline [format %5d [lindex $g 1]]
foreach v [lrange $g 2 end] {
puts -nonewline [format " %6.4f" $v]
}
puts ""
}
puts ""
# sauve premier de deuxieme clusters
set db root
sqlite3 $db rrps.sql
for {set idx 0} {$idx < [llength $Lgr]} {incr idx} {
set gr [lindex $Lfin $idx]
set ig [string range [lindex $gr 0] 2 end]
set Lv [lindex $Lgr $ig]
set Lpk [list]
if {$::typeAnalyse eq "hubert"} {
set fileout "sel${idx}_$::ThresholdRSA.acc"
} else {
set fileout "sel${idx}.acc"
}
set fileout [file join $::typeAnalyse $dir $fileout]
set o [open $fileout w]
foreach l $Lv {
lappend Lpk [lindex $l 0]
}
set Lacc [$db eval "select accession from items where pk_items in ([join $Lpk ,])"]
puts $o [join $Lacc \n]
close $o
}
$db close
return
}
proc ClusteringmethodETClustercountmethodInput {} {
WithWebService "Gx" 0
set LesTetes "name,description"
set LesFichiers [list "[GxData]/ToGx/ClusteringmethodInput.txt" "[GxData]/ToGx/ClustercountmethodInput.txt"]
foreach Fichier $LesFichiers {
Espionne "$Fichier"
set Table [string range $Fichier [expr [string last "/" $Fichier] +1] end]
regsub {Input.txt$} $Table "" Table
set Table [string tolower $Table]
Espionne "$Table"
foreach Name [InfoFromClusteringInput ListOf Name $Fichier] {
set Existant [GxDbSqlExec "select pk_$Table from $Table where name='$Name';" "GetFirstValue"]
if {$Existant!=""} { return "" }
set name [InfoFromClusteringInput $Name "name" $Fichier]
set description [InfoFromClusteringInput $Name "description" $Fichier]
set Ligne "'$name','$description'"
set Commande "insert into $Table ($LesTetes) values ($Ligne);"
set status [GxDbSqlExec $Commande]
}
#return $status
}
}
proc ClustersDExpression {{NSeqMin 6} {SplitScreen1 0} {SplitScreen2 1} {OldW ""}} {
if {$OldW!=""} {catch {after 10 Destroy $OldW}}
set FichierLocalisation "[RepertoireDuGenome]/Localisation/BoxLocalisation_Human_Best_selection2"
set FichierDistributionArea1e6 "[RepertoireDuGenome]/Localisation/area1e6bp_Distribution_selection2"
#mais il faut que ce fichier area1e6bp_Distribution_selection existe aussi sous le nom
#area1e6bp_Distribution pour que les proc de fred que j'appelle marchent.
if {![file exists $FichierLocalisation]} {
if {[OuiOuNon "$FichierLocalisation doesn't exist.\nDo you want I create it?"]} {
FichierBoxLocalisation
} else {
return ""
}
}
set RepLocalisation "[HumanGenomeDir]/Localisation"
#set FichierBandesCytos "$RepLocalisation/CytologicMap"
set FichierBandesCytos "/genomics/link/HeadNecknonrnr/essaicytomap"
if {![file exists $FichierBandesCytos]} {
Espionne "$FichierBandesCytos does not exist"
return ""
}
set FichierFold "[RepertoireDuGenome]/fiches/FoldExpression_selection"
if {![file exists $FichierFold]} {set Fold 0} else {set Fold 1}
set LesVariablesDemandees {}
ChoixDesVariablesDeLHistogramme TabVar
foreach VariableDemandee [set TabVar(LesVariables)] {
regsub -all " " $VariableDemandee "_" VariableDemandee
lappend LesVariablesDemandees $VariableDemandee
set Variable [set TabVar($VariableDemandee)]
}
set nVariables [llength $LesVariablesDemandees]
if {$nVariables == 0} {exit}
set ListeDesChro [ListeDesChromosomesHS]
regsub "HSUN" $ListeDesChro "" ListeDesChro
foreach Chro $ListeDesChro {
set ChromDeRef [NumeroDuChromosome $Chro]
### !!! Calcul du biais (NRD) !!! ###
### fais par proc ChargeDistributionsSurRegions (Fred Chalmel) ###
ChargeDistributionsSurRegions Tab $ChromDeRef "area1e6bp"
set LesRegions [set Tab($ChromDeRef,LesRegions)]
foreach VariableDemandee $LesVariablesDemandees {
set Variable [set TabVar($VariableDemandee)]
foreach Region $LesRegions {
if {![info exists Tab($ChromDeRef,$Region,$Variable)]} {continue}
set Valeur [set Tab($ChromDeRef,$Region,$Variable)]
if {![info exists VMax]} {set VMax $Valeur;continue}
if { $VMax < $Valeur} {set VMax $Valeur}
}
}
}
set VMaxi $VMax
ChargeFoldDesSequences Expression
set PoliceChromo "Courier 7 bold"
set LargeurMax [expr [winfo screenwidth .] - 100]
set HauteurMax [expr [winfo screenheight .] - 200]
set LargeurFenetre [expr [winfo screenwidth .] - 100 ]
set HauteurFenetre [expr [winfo screenheight .] - 200]
set BordX 50.0
set BordYInf 50
set BordYSup 50
set LargeurAffichage [expr ($LargeurMax - 2*$BordX)*1.0]
set HauteurAffichage [expr ($HauteurMax - ($BordYInf+$BordYSup))*1.0]
ChargeBandesCytologiques Genome $FichierBandesCytos
set TailleMaxBrasP [set Genome(TaillePMax)]
set TailleMaxBrasQ [set Genome(TailleQMax)]
set TailleMaxChromo [expr $TailleMaxBrasP + $TailleMaxBrasQ]
set NbChromosomes [set Genome(NbChromosomes)]
set LargeurChromo [expr $LargeurAffichage/($NbChromosomes*3.0)]
set EcartEntreChromo [expr $LargeurChromo*4]
set LargeurBoite [expr $EcartEntreChromo/2]
set Facteur [expr $HauteurAffichage / ($TailleMaxChromo*3)]
set PosYDuCentromer [expr $TailleMaxBrasP * $Facteur + $BordYSup]
set K [UnCanva $LargeurMax $HauteurMax $LargeurFenetre $HauteurFenetre WithY]
$K configure -background white
#regsub "/home/carles/genomes/" $RepertoireDuGenome "" Titre
#$K create text [expr $LargeurAffichage/2] 20 -text "$Titre" -font "courrier 12 bold"
set LaSerie1 {HS01 HS02 HS03 HS04 HS05 HS06 HS07 HS08}
lappend Les3Series $LaSerie1
set LaSerie2 {HS09 HS10 HS11 HS12 HS13 HS14 HS15 HS16}
lappend Les3Series $LaSerie2
set LaSerie3 {HS17 HS18 HS19 HS20 HS21 HS22 HSX HSY}
lappend Les3Series $LaSerie3
set s 0
set PosY $PosYDuCentromer
foreach Serie $Les3Series {
#Espionne $Serie
incr s
set PosX $BordX
foreach Chromosome $Serie {
##fonction de la serie
if {$s==1} {
set PosY $PosYDuCentromer
}
if {$s==2} {
set PosY [expr $TailleMaxBrasP * $Facteur + $BordYSup + $PosYDuCentromer+60]
}
if {$s==3} {
set PosY [expr $TailleMaxBrasP * $Facteur + $BordYSup + ($PosYDuCentromer *2)+60+60]
}
set LesBandesP [lsort [set Genome($Chromosome,LesBandesP)]]
set PosXMin [expr $PosX + $EcartEntreChromo]
set PosXMax [expr $PosXMin + $LargeurChromo]
set PosXBande $PosX
set PosX [expr $PosXMax + $EcartEntreChromo]
set TailleBrasP [set Genome($Chromosome,TailleP)]
set TailleBrasQ [set Genome($Chromosome,TailleQ)]
set PosXNomChromo [expr ($PosXMax + $PosXMin)/2]
set PosYNomChromoSup [expr $PosY - ($TailleBrasP * $Facteur) - 20]
set PosYNomChromoInf [expr $PosY + ($TailleBrasQ * $Facteur) + 20]
set Position($Chromosome) [list "$PosXMin" "$PosXMax"]
#$K create text $PosXNomChromo $PosYNomChromoSup -text "$Chromosome" -font "$PoliceChromo" -tags [list "$Chromosome" "$FichierLocalisation" "Chromosome"]
$K create text $PosXNomChromo $PosYNomChromoInf -text "$Chromosome" -font "$PoliceChromo" -tags [list "$Chromosome" "$FichierLocalisation" "Chromosome"]
foreach BandeP $LesBandesP {
set LesInfos [set Genome($Chromosome,$BandeP)]
set Taille [lindex $LesInfos 1]
set Type [lindex $LesInfos 2]
set ColorFill [CouleurDeLaBandeCytologique $Type]
set PosYMin [expr $PosY - $Taille*$Facteur]
set PosYMax $PosY
set PosYBande [expr ($PosYMin+$PosYMax)/2]
set PosY $PosYMin
$K create rectangle $PosXMin $PosYMin $PosXMax $PosYMax -outline black -fill $ColorFill -tags [list "$BandeP" "$Taille" "BandesCytologiques"]
}
set ExtremiteDuChromosome $PosYMin
##fonction de la serie
if {$s==1} {
set PosY $PosYDuCentromer
}
if {$s==2} {
set PosY [expr $TailleMaxBrasP * $Facteur + $BordYSup + $PosYDuCentromer+60]
}
if {$s==3} {
set PosY [expr $TailleMaxBrasP * $Facteur + $BordYSup + ($PosYDuCentromer *2)+60+60]
}
set LesBandesQ [lsort [set Genome($Chromosome,LesBandesQ)]]
foreach BandeQ $LesBandesQ {
set LesInfos [set Genome($Chromosome,$BandeQ)]
set Taille [lindex $LesInfos 1]
set Type [lindex $LesInfos 2]
set ColorFill [CouleurDeLaBandeCytologique $Type]
set PosYMin $PosY
set PosYMax [expr $PosY + $Taille*$Facteur]
set PosYBande [expr ($PosYMin+$PosYMax)/2]
set PosY $PosYMax
$K create rectangle $PosXMin $PosYMin $PosXMax $PosYMax -outline black -fill $ColorFill -tags [list "$BandeQ" "$Taille" "BandesCytologiques"]
}
set ExtremiteBasseDuChromo $PosYMax
########## DISPLAY HISTO 1 ##################
set ChromDeRef [NumeroDuChromosome $Chromosome]
ChargeDistributionsSurRegions Tab $ChromDeRef area1e6bp
set LesRegions [set Tab($ChromDeRef,LesRegions)]
set PosXMaxHisto [expr $PosXMax + 50]
if {$SplitScreen2} {
#set HauteurAffichageHisto 35
set HauteurAffichageHisto [expr $EcartEntreChromo/2]
set PosAxeHisto [expr $PosXMaxHisto - 25]
} else {
set PosAxeHisto [expr $PosXMax+5]
set HauteurAffichageHisto 40
}
set TailleChromo [set Tab($ChromDeRef,Taille)]
set FacteurHisto [expr ($ExtremiteBasseDuChromo-$ExtremiteDuChromosome)/$TailleChromo]
set Debut 1
foreach Region $LesRegions {
set Taille [set Tab($ChromDeRef,$Region,Taille)]
set Fin [expr $Debut + $Taille - 1 ]
set PosYMin [expr $ExtremiteDuChromosome + ($Debut*$FacteurHisto)]
set PosYMax [expr $ExtremiteDuChromosome + ($Fin*$FacteurHisto)]
set LargeurDesBarres [expr $Taille*$FacteurHisto/$nVariables]
set i 0
foreach VariableDemandee $LesVariablesDemandees {
set Variable [set TabVar($VariableDemandee)]
set Valeur [set Tab($ChromDeRef,$Region,$Variable)]
if {$VMaxi == 0 || $Valeur == 0} {
incr i
continue
}
set Unit [set TabVar($Variable,Unit)]
set PosYm [expr $PosYMin + $i*$LargeurDesBarres]
set PosYM [expr $PosYm + $LargeurDesBarres]
incr i
set FacteurY [expr $HauteurAffichageHisto/$VMax]
if {$SplitScreen2 && [regexp -nocase {moins|minus} $Variable]} {
set PosXMin [expr $PosAxeHisto - $FacteurY*$Valeur]
set PosXMax $PosAxeHisto
set OutLine "green"
set ColorFill "green"
} else {
set PosXMin $PosAxeHisto
set PosXMax [expr $PosAxeHisto + $FacteurY*$Valeur]
set OutLine "red"
set ColorFill "red"
}
$K create rectangle $PosXMin $PosYm $PosXMax $PosYM -outline $OutLine -fill $ColorFill -tags [list "$VariableDemandee" "$Valeur" "$Unit" "$Region" "Variable"]
}
set Debut [expr $Fin + 1]
}
$K create line $PosAxeHisto $ExtremiteDuChromosome $PosAxeHisto $ExtremiteBasseDuChromo -fill black -width 1
}
##PosYfonction de la serie
if {$s==1} {
set PosY $PosYDuCentromer
}
if {$s==2} {
set PosY [expr $TailleMaxBrasP * $Facteur + $BordYSup + $PosYDuCentromer+60]
}
if {$s==3} {
set PosY [expr $TailleMaxBrasP * $Facteur + $BordYSup + ($PosYDuCentromer *2)+60+60]
}
$K create line $BordX $PosY $LargeurMax $PosY -fill red
}
################# HISTO 2 ####################################
set LesVariablesDemandees {}
ChoixDesVariablesDeLHistogramme TabVar
foreach VariableDemandee [set TabVar(LesVariables)] {
regsub -all " " $VariableDemandee "_" VariableDemandee
#Espionne $VariableDemandee
lappend LesVariablesDemandees $VariableDemandee
set Variable [set TabVar($VariableDemandee)]
}
EspionneL $LesVariablesDemandees
#FaireLire ok
set nVariables [llength $LesVariablesDemandees]
if {$nVariables == 0} {exit}
lappend LesVariablesDemandees "Nb_Seq"
set TousLesChromos {HS01 HS02 HS03 HS04 HS05 HS06 HS07 HS08 HS09 HS10 HS11 HS12 HS13 HS14 HS15 HS16 HS17 HS18 HS19 HS20 HS21 HS22 HSX HSY}
set vd "Skew_in_sequences"
set v [set TabVar($vd)]
foreach Chro $TousLesChromos {
set ChromDeRef [NumeroDuChromosome $Chro]
ChargeDistributionsSurRegions Tab $ChromDeRef area1e6bp
set LesRegions [set Tab($ChromDeRef,LesRegions)]
foreach Region $LesRegions {
set ValSeq [set Tab($ChromDeRef,$Region,NbSeq)]
if {$ValSeq<$NSeqMin} {continue}
set Valeur [set Tab($ChromDeRef,$Region,$v)]
if {![info exists VMaxBiais]} {set VMaxBiais $Valeur;continue}
if {$VMaxBiais < $Valeur} {
set VMaxBiais $Valeur
if {$Valeur==455} {Espionne "$Chro $Region"}
}
}
}
set VMaxi $VMaxBiais
#Espionne $VMaxi
#FaireLire ok
set s 0
foreach Serie $Les3Series {
#Espionne $Serie
incr s
set PosX $BordX
foreach Chromosome $Serie {
##fonction de la serie
if {$s==1} {
set PosY $PosYDuCentromer
}
if {$s==2} {
set PosY [expr $TailleMaxBrasP * $Facteur + $BordYSup + $PosYDuCentromer+60]
}
if {$s==3} {
set PosY [expr $TailleMaxBrasP * $Facteur + $BordYSup + ($PosYDuCentromer *2)+60+60]
}
set PosXMin [expr $PosX + $EcartEntreChromo]
set PosXMax [expr $PosXMin + $LargeurChromo]
set PosXBande $PosX
set PosX [expr $PosXMax + $EcartEntreChromo]
set TailleBrasP [set Genome($Chromosome,TailleP)]
set TailleBrasQ [set Genome($Chromosome,TailleQ)]
set LesBandesP [lsort [set Genome($Chromosome,LesBandesP)]]
foreach BandeP $LesBandesP {
set LesInfos [set Genome($Chromosome,$BandeP)]
set Taille [lindex $LesInfos 1]
set Type [lindex $LesInfos 2]
set ColorFill [CouleurDeLaBandeCytologique $Type]
set PosYMin [expr $PosY - ($Taille*$Facteur)]
set PosYMax $PosY
set PosYBande [expr ($PosYMin+$PosYMax)/2]
set PosY $PosYMin
}
set ExtremiteDuChromosome $PosYMin
##fonction de la serie
if {$s==1} {
set PosY $PosYDuCentromer
}
if {$s==2} {
set PosY [expr $TailleMaxBrasP * $Facteur + $BordYSup + $PosYDuCentromer+60]
}
if {$s==3} {
set PosY [expr $TailleMaxBrasP * $Facteur + $BordYSup + ($PosYDuCentromer *2)+60+60]
}
set LesBandesQ [lsort [set Genome($Chromosome,LesBandesQ)]]
foreach BandeQ $LesBandesQ {
set LesInfos [set Genome($Chromosome,$BandeQ)]
set Taille [lindex $LesInfos 1]
set Type [lindex $LesInfos 2]
set ColorFill [CouleurDeLaBandeCytologique $Type]
set PosYMin $PosY
set PosYMax [expr $PosY + $Taille*$Facteur]
set PosYBande [expr ($PosYMin+$PosYMax)/2]
set PosY $PosYMax
}
set ExtremiteBasseDuChromo $PosYMax
#################### DISPLAY OF HISTO 2 ##################################
set ChromDeRef [NumeroDuChromosome $Chromosome]
ChargeDistributionsSurRegions Tab $ChromDeRef area1e6bp
set LesRegions [set Tab($ChromDeRef,LesRegions)]
set PosXMaxHisto [expr $PosXMax + 2*$EcartEntreChromo]
if {$SplitScreen1} {
set HauteurAffichageHisto [expr 2*$EcartEntreChromo]
set PosAxeHisto [expr $PosXMaxHisto - 2*$EcartEntreChromo]
} else {
set PosAxeHisto [expr $PosXMaxHisto - $EcartEntreChromo]
set HauteurAffichageHisto [expr $EcartEntreChromo/4]
}
set TailleChromo [set Tab($ChromDeRef,Taille)]
set FacteurHisto [expr ($ExtremiteBasseDuChromo-$ExtremiteDuChromosome)/$TailleChromo]
set Debut 1
foreach Region $LesRegions {
set ValSeq [set Tab($ChromDeRef,$Region,NbSeq)]
set Taille [set Tab($ChromDeRef,$Region,Taille)]
set Fin [expr $Debut + $Taille - 1 ]
set PosYMin [expr $ExtremiteDuChromosome + ($Debut*$FacteurHisto)]
set PosYMax [expr $ExtremiteDuChromosome + ($Fin*$FacteurHisto)]
set LargeurDesBarres [expr $Taille*$FacteurHisto/$nVariables]
set i 0
if {$ValSeq<$NSeqMin} {
set Debut [expr $Fin + 1]
continue
}
foreach VariableDemandee $LesVariablesDemandees {
set Variable [set TabVar($VariableDemandee)]
if {$Variable=="NbSeq"} {
incr i
continue
}
set Valeur [set Tab($ChromDeRef,$Region,$Variable)]
#Espionne $Valeur
if {$VMaxi == 0 || $Valeur == 0} {continue}
#set ColorFill [set TabVar($Variable,Couleur)]
set ColorFill "black"
set Unit [set TabVar($Variable,Unit)]
set PosYm [expr $PosYMin + $i*$LargeurDesBarres]
set PosYM [expr $PosYm + $LargeurDesBarres]
incr i
set FacteurY [expr $HauteurAffichageHisto/$VMaxi]
if {$SplitScreen1 && [regexp -nocase {moins|minus} $Variable]} {
set PosXMin [expr $PosXMax - $FacteurY*$Valeur]
set PosXMax $PosAxeHisto
} else {
set PosXMin $PosAxeHisto
set PosXMax [expr $PosAxeHisto + $FacteurY*$Valeur]
}
#if {$ColorFill == "black"} {set OutLine "white"} else {set OutLine "black"}
set OutLine "black"
$K create rectangle $PosXMin $PosYm $PosXMax $PosYM -outline $OutLine -fill $ColorFill -tags [list "$VariableDemandee" "$Valeur" "$Unit" "$Region" "Variable"]
}
set Debut [expr $Fin + 1]
}
$K create line $PosAxeHisto $ExtremiteDuChromosome $PosAxeHisto $ExtremiteBasseDuChromo -fill black -width 1
}
##PosY fonction de la serie
if {$s==1} {
set PosY $PosYDuCentromer
}
if {$s==2} {
set PosY [expr $TailleMaxBrasP * $Facteur + $BordYSup + $PosYDuCentromer+60]
}
if {$s==3} {
set PosY [expr $TailleMaxBrasP * $Facteur + $BordYSup + ($PosYDuCentromer *2)+60+60]
}
}
################################# HISTO 3 ###############################
set s 0
foreach Serie $Les3Series {
#Espionne $Serie
incr s
set PosX $BordX
foreach Chromosome $Serie {
set ChromDeRef [NumeroDuChromosome $Chromosome]
ChargeDistributionsSurRegions Tab $ChromDeRef area1e6bp
set LesRegions [set Tab($ChromDeRef,LesRegions)]
set TailleChromo [set Tab($ChromDeRef,Taille)]
set LesClusters [LesMillionsEtLesScoresPourTousLesClustersDunChromo $Chromosome]
##fonction de la serie
if {$s==1} {
set PosY $PosYDuCentromer
}
if {$s==2} {
set PosY [expr $TailleMaxBrasP * $Facteur + $BordYSup + $PosYDuCentromer+60]
}
if {$s==3} {
set PosY [expr $TailleMaxBrasP * $Facteur + $BordYSup+($PosYDuCentromer *2)+60+60]
}
####
set PosXMin [expr $PosX + $EcartEntreChromo]
set PosXMax [expr $PosXMin + $LargeurChromo]
set PosXBande $PosX
set PosX [expr $PosXMax + $EcartEntreChromo]
set TailleBrasP [set Genome($Chromosome,TailleP)]
set TailleBrasQ [set Genome($Chromosome,TailleQ)]
set TailleChromosome [expr $TailleBrasP+$TailleBrasQ]
##histo##
#set PosXMaxHisto [expr $PosXMax + 95]
set PosXMaxHisto [expr $PosXMax + 90]
#set PosAxeHisto [expr $PosXMax + 80]
set PosAxeHisto [expr $PosXMax + 70]
#set HauteurAffichageHisto 30
set HauteurAffichageHisto 20
set VMaxi 8
set FacteurY [expr $HauteurAffichageHisto/$VMaxi]
#########
set LesBandesP [lsort [set Genome($Chromosome,LesBandesP)]]
foreach BandeP $LesBandesP {
set LesInfos [set Genome($Chromosome,$BandeP)]
set Taille [lindex $LesInfos 1]
set PosYMin [expr $PosY - $Taille*$Facteur]
set PosYMax $PosY
set PosY $PosYMin
}
set ExtremiteDuChromosome $PosYMin
##fonction de la serie
if {$s==1} {
set PosY $PosYDuCentromer
}
if {$s==2} {
set PosY [expr $TailleMaxBrasP * $Facteur + $BordYSup + $PosYDuCentromer+60]
}
if {$s==3} {
set PosY [expr $TailleMaxBrasP * $Facteur +$BordYSup +($PosYDuCentromer *2)+60+60]
}
set LesBandesQ [lsort [set Genome($Chromosome,LesBandesQ)]]
foreach BandeQ $LesBandesQ {
set LesInfos [set Genome($Chromosome,$BandeQ)]
set Taille [lindex $LesInfos 1]
set PosYMin $PosY
set PosYMax [expr $PosY + $Taille*$Facteur]
set PosYBande [expr ($PosYMin+$PosYMax)/2]
set PosY $PosYMax
}
set ExtremiteBasseDuChromo $PosYMax
set FacteurHisto [expr ($ExtremiteBasseDuChromo-$ExtremiteDuChromosome)/$TailleChromo]
########### DISPLAY HISTO 3 ######################
set Debut 1
foreach Region $LesRegions {
set Taille [set Tab($ChromDeRef,$Region,Taille)]
set LargeurDesBarres [expr $Taille*$FacteurHisto]
set Fin [expr $Debut + $Taille - 1 ]
foreach Cluster $LesClusters {
#Espionne $Cluster
set Million [lindex $Cluster 1]
set NNScore [lindex $Cluster 2]
if {$Million!=$Region} {
continue
} else {
set Val $NNScore
set PosXMax [expr $PosAxeHisto + $FacteurY*$Val]
set PosYMin [expr $ExtremiteDuChromosome + ($Debut*$FacteurHisto)]
set PosYMax [expr $ExtremiteDuChromosome + ($Fin*$FacteurHisto)]
set PosXMin $PosAxeHisto
set PosXMax [expr $PosAxeHisto + $FacteurY*$Val]
$K create rectangle $PosXMin $PosYMin $PosXMax $PosYMax -outline blue -fill blue
}
}
set Debut [expr $Fin + 1]
}
$K create line $PosAxeHisto $ExtremiteDuChromosome $PosAxeHisto $ExtremiteBasseDuChromo -fill black -width 1
}
##fonction de la serie
if {$s==1} {
set PosY $PosYDuCentromer
}
if {$s==2} {
set PosY [expr $TailleMaxBrasP * $Facteur + $BordYSup + $PosYDuCentromer+60]
}
if {$s==3} {
set PosY [expr $TailleMaxBrasP * $Facteur + $BordYSup + ($PosYDuCentromer *2)+60+60]
}
}
regsub {\.canvas} $K "" w
#ces 2 lignes sont necessaires pour affichage
#lors du passage de la souris sur chaque region de l histo
$K bind "Variable" "DevoileLesHistogrammes $K %x %y Enter"
$K bind "Variable" "DevoileLesHistogrammes $K %x %y Leave"
$K bind "Chromosome" <1> "ChromosomeSelectionne $K"
$K bind "Chromosome" <2> "AfficheRequeteSurLaMeilleureLocalisation $K"
$K bind "BandesCytologiques" "DevoileLesBandesCytologiques $K %x %y Enter"
$K bind "BandesCytologiques" "DevoileLesBandesCytologiques $K %x %y Leave"
$K bind "BandesCytologiques" <1> "AfficheRequeteSurLaMeilleureLocalisation $K"
$K bind "Box" "DevoileLesBoites $K %x %y Enter"
$K bind "Box" "DevoileLesBoites $K %x %y Leave"
$K bind "Box" <1> "AfficheFicheInfo $K"
set B [BoutonneLaFenetre $w "Histogramm"]
bind $B <1> "ChoixHistogramme"
set Boutons "$w.buttons"
}
proc ClustersDeClonesAuxLocsChevauchantes {} {
##basee sur fichier box_localisation_best
#Cree le fichier jumeaux_Overlap dans le dir fiches.
#Jumeaux = Clones localises sur le meme chromosome avec des locs chevauchantes.
#Attention : Considere la best localisation.
#premiere best si cas polyloc.
#Trie les clones d'un meme cluster par ordre decroissant de leur longueur (nuctfa)
if { ! [file exists "[RepertoireDuGenome]/fiches"]} { File mkdir "[RepertoireDuGenome]/fiches" }
set FichierDesClonesEnOverlap "[RepertoireDuGenome]/fiches/jumeaux_Overlap"
set FichierBestLoc "[RepertoireDuGenome]/Localisation/BoxLocalisation_Human_best"
if {![file exists $FichierBestLoc]} {return "I need the file BoxLocalisation_Human_best in /Localisation directory"}
set LesLocsNom {}
foreach Nom [ListeDesPABs] {
set Loc [InterrogeLocalisation $FichierBestLoc Nom $Nom]
if {$Loc==""} {continue}
#modif:
#avant: set Loc [split $Loc " "]
#maintenant:
#remarque split
#pour les polyloc:
if {[llength $Loc]>=2} {
set Loc [lindex $Loc 0]
} else {
set Loc [join $Loc ""]
}
set Chro [lindex $Loc 9]
set DSurChro [lindex $Loc 10]
set FSurChro [lindex $Loc 11]
if {$Chro==""} {Espionne $Nom}
lappend LesLocsNom "$Chro $DSurChro $FSurChro $Nom"
}
#commande vue avec Raymond
#permet de trier en fonction de la borne inferieure "a"
set LesLocsNomPreTriees [lsort -command CompareChroDebut $LesLocsNom]
set LesLocsNomTriees [lsort -command CompareChroFin $LesLocsNomPreTriees]
lappend LesLocsNomTriees "bidon bidon bidon bidon bidon"
set OldChromo "zzzz"
set OldInf 1111111111111111
set OldSup 0
set LaSortie {}
foreach Loc $LesLocsNomTriees {
if {$Loc!="bidon bidon bidon bidon bidon"} {
scan $Loc "%s %d %d %s" chromo inf sup code
if {($chromo == $OldChromo) && ($inf <= $OldSup)} {
if {![info exists LesMemes]} { set LesMemes $Oldcode }
lappend LesMemes $code
} else {
if {[info exists LesMemes]} {
lappend LaSortie [join $LesMemes " "]
unset LesMemes
}
}
set OldChromo $chromo
set OldInf $inf
set OldSup $sup
set Oldcode $code
}
}
if {![file exists $FichierDesClonesEnOverlap] || [file exists $FichierDesClonesEnOverlap] && [OuiOuNon "Do you want to replace the file jumeaux_Overlap"]} {
if {$LaSortie=={}} {
Sauve "No overlaps were found" dans $FichierDesClonesEnOverlap
} else {
set Sortie [TrieLaSortie $LaSortie]
Espionne "fin"
Sauve $Sortie dans $FichierDesClonesEnOverlap
}
}
return $FichierDesClonesEnOverlap
}
proc ClustersoftwareInput {} {
WithWebService "Gx" 0
set LesTetes "pk_clusteringmethod,pk_clustercountmethod,name,description"
foreach Name [InfoFromClustersoftwareInput ListOf Name] {
set Lesnameccm [InfoFromClustersoftwareInput $Name "nameccm"]
set pkCm [GxDbSqlExec "select pk_clusteringmethod from clusteringmethod where name='$Name';" "GetFirstValue"]
foreach nameccm $Lesnameccm {
set pkCcm [GxDbSqlExec "select pk_clustercountmethod from clustercountmethod where name='$nameccm';" "GetFirstValue"]
set Existant [GxDbSqlExec "select pk_clustersoftware from clustersoftware where pk_clusteringmethod = $pkCm and pk_clustercountmethod = $pkCcm;" "GetFirstValue"]
if {$Existant!=""} { return "" }
set Ligne "$pkCm,$pkCcm,'${Name}_$nameccm','from cluspack'"
Espionne "$Ligne"
set Commande "insert into clustersoftware ($LesTetes) values ($Ligne);"
Espionne "$Commande"
set status [GxDbSqlExec $Commande]
}
}
}
proc CmdsMenuFeatures {what} {
global EFeat
set EFeat(Bindings) [bindtags $::NomTextSeq]
switch $what {
"selitem" {
set EFeat(LItemSel) [list]
set EFeat(LZonesT) [list]
bindtags $::NomTextSeq [list BWhS BEFSelitem $::NomTextSeq all]
}
"selitall" {
set EFeat(LItemSel) [list]
set EFeat(LZonesT) [list]
bindtags $::NomTextSeq [list BEFSelitall BWhS $::NomTextSeq all]
}
"selreg" {
set EFeat(ZonesSel) [list]
bindtags $::NomTextSeq [list BEFSelreg BWhS $::NomTextSeq all]
}
"clearsel" {
$::NomTextSeq configure -state normal
$::NomTextSeq tag remove slct 1.0 end
$::NomTextSeq configure -state disabled
set EFeat(Bindings) [list]
set EFeat(ZonesSel) [list]
bindtags $::NomTextSeq $::EFeat(BindInit)
}
"edit" {
EditFeatureItem
if {$EFeat(COk)} {
bindtags $::NomTextSeq $::EFeat(BindInit)
}
}
"define" {
DefineNewFeature
bindtags $::NomTextSeq $::EFeat(BindInit)
set EFeat(Bindings) [list]
}
"propagitem" {
bindtags $::NomTextSeq $::EFeat(BindInit)
ExtendFeatTo group
}
"propagall" {
bindtags $::NomTextSeq $::EFeat(BindInit)
ExtendFeatTo all
}
"delete" {
DeleteSelected
bindtags $::NomTextSeq $::EFeat(BindInit)
}
"delfeat" {
bindtags $::NomTextSeq [list BEFDelfeat BWhS $::NomTextSeq all]
}
}
return
}
proc CoGeno {} {
set G [RepertoireDuGenome]
set R "/work/moumou/PGrid/"
set Gbla [file join $G blastp]
set Rbla [file join $R blastp]
set Gbal [file join $G ballast]
set Rbal [file join $R ballast]
set Gfil [file join $G tfasdescopains]
set Rfil [file join $R tfasdescopains]
set Gclu [file join $G msf]
set Rclu [file join $R msf]
set Gras [file join $G rascal]
set Rras [file join $R rascal]
set Gleo [file join $G leon]
set Rleo [file join $R leon]
set Gnor [file join $G normd]
set Rnor [file join $R normd]
set res [open "resultats.log" w]
foreach e [ListeDesPABs] {
set Lres {}
set Errs 0
lappend Lres "$e :"
foreach p {"fil" "clu" "ras" "leo"} {
set Manque 0
set c1 [file join [set G$p] $e]
set c2 [file join [set R$p] $e]
if {! [file exists $c1]} {
lappend Lres "$p $e genome n'existe pas "
set Manque 1
set Errs 1
}
if {! [file exists $c2]} {
lappend Lres "$p $e grid n'existe pas "
set Manque 1
set Errs 1
}
if {! $Manque} {
catch {eval exec diff $c1 $c2} vd
if {$vd != ""} {
lappend Lres "$p :"
set Errs 1
}
}
}
if {$Errs} {puts $res [join $Lres "\n"]}
flush $res
}
close $res
exit
}
proc CoGlimmer {Nom} {
global RepertoireDuGenome
global CoGlimmer
if {[info exists CoGlimmer($Nom)]} { return [set CoGlimmer($Nom)] }
if {[info exists CoGlimmer("EstCharge")]} { return [set CoGlimmer("EstCharge")] }
Wup "Si bornesdesglimmers est cache on ne fait pas CoGlimmer"
if { ! [file exists "$RepertoireDuGenome/fiches/bornesdesglimmers"]} {
set CoGlimmer("EstCharge") "IgnoreCoGlimmer"
return [set CoGlimmer("EstCharge")]
}
set FichierCoGlimmer "$RepertoireDuGenome/fiches/coglimmer"
while { ! [file exists $FichierCoGlimmer]} {
if {[OuiOuNon "Do I calculate overlaps with GLIMMER to create the file\n$FichierCoGlimmer\ ?"]} {
CreeCorrespondanceAvecGlimmer $FichierCoGlimmer
continue
}
if {[OuiOuNon "Do I ignore overlaps with GLIMMER ?"]} {
set CoGlimmer("EstCharge") "IgnoreCoGlimmer"
return [set CoGlimmer("EstCharge")]
}
if {[OuiOuNon "Do I exit ?"]} { exit }
}
foreach Ligne [LesLignesDuFichier $FichierCoGlimmer] {
scan $Ligne "%s %s %s" A Etat B
set CoGlimmer($A) "$Etat $B"
}
set CoGlimmer("EstCharge") "EstCharge"
return [CoGlimmer $Nom]
}
proc CoOlPourTous {{Action ""}} {
if {$Action==""} {
set Action [ChoixParmi [list "Show" "RecalculateAndShow" "RecalculateAndReturnPofOl" "ReturnPofOl" "RecalculateAndReturnPofPPCR" "ReturnPofPPCR" "RecalculateAndReturnCoOl" "ReturnCoOl"]]
}
if { [regexp "Recalculate" $Action] } {
set FichierLesPsRejetes "[Fiches]/LesPsRejetes"
if {[OuiOuNon "Do I run MiseAJourDesPDesExistings ?"]} {
MiseAJourDesPDesExist|ings
}
if {[OuiOuNon "Do I run PositionSurMatricePourTous ?"]} {
PositionSurMatricesPourTous
}
InventaireDesFichiersClonage
set LesPs {}
while {$LesPs=={}} {
if {[OuiOuNon "Do you want to enter a list of Oligos"]} {
set LesPs [Entre "P2639 P2643"]
continue
}
if {1 || [OuiOuNon "Do I use Oli to list existing oligos (instead of CloDo) ?"]} {
set LesPs [Oli LaListeMerci]
} else {
set LesPs [CloDo ListAllPlease oligos]
}
}
set CreePofPPCR [OuiOuNon "Do I recalculate all PofPPCR ?"]
if {$CreePofPPCR} {
set CreeVirtualPPCR 0
FaireLire "Please notate that you have to rerun CoOlPourTous to create the VirtualPPCRs"
} else {
set CreeVirtualPPCR [OuiOuNon "Do I create VirtualPPCRs ?"]
}
foreach P $LesPs {
Espionne $P
set TypeOli [Oli $P Type]
if {$TypeOli!="SynOli"} { continue }
set PSujets [Oli $P Subjects]
set PSignals [Oli $P Signals]
regsub -all "_" $PSignals " " PSigs
set PSens [Oli $P Sens]
if {$PSens=="5'"} {
set POliSignals " === $PSigs === "
} else {
set POliSignals " === === $PSigs"
}
foreach Ma [MatOl $P Matrice] AA [MatOl $P AA] NA [MatOl $P NA] Or [MatOl $P Orient] Su [MatOl $P Subjects] {
Espionne "$P $AA $NA $Or $Su =$Ma="
if {0 && [Oli $P "IsRebuildedBrockenOli"]} {
set Brocken [Oli $P "Brocken"]
set Ma [MatOl $Brocken Subjects]
}
set PGS [file tail $Ma]
set CoOl "[string repeat x 50]\n$P"
if {$TypeOli=="MutOli"} {
set Code [Oli $P "CodeMutation"]
append CoOl "\n $Or oligo to mutate $Code in $PGS [Alias $PGS] at $AA $NA and for $Su"
lappend LeTexte "$CoOl"
continue
}
if {[Oli $P "IsBrocOli"]} {
set Full [Oli $P "Full"]
append CoOl "\n $Or BrocOli for Full $Full for $PGS [Alias $PGS]"
lappend LeTexte "$CoOl"
continue
}
if {$PGS==""} { continue }
BaClonAppend LesOligos $PGS $P
set LesSujets [split $Su " "]
append CoOl [format " %5d %5d %s %s %s %s" $AA $NA $Or $PGS [Alias $PGS] $Su]
if {$Or=="F"} { set Sens "5'" } else { set Sens "3'" }
set AliasDuPGS [Alias $PGS]
foreach Sujet $LesSujets {
regsub {\-[0-9]+\-[0-9]+$} $Sujet "" AliasDuSujet
if { ! [MemeAlias $AliasDuSujet $AliasDuPGS]} {
AppendAuFichier $FichierLesPsRejetes "$P $PGS $AliasDuPGS $AliasDuSujet $Sujet"
continue
}
set LesSigPourPPCRPossibles {}
BaClonAppend LesSujets $PGS $Sujet
BaClonSet LesSujets $PGS [lsort -unique [BaClon LesSujets $PGS]]
BaClonAppend LesOligosDuCouple $PGS $Sujet $P
BaClonSet Trio $PGS $Sujet $P $AA
append CoOl "\n\n $Sujet"
set LesOlis [ItsOligos $Sujet]
if {$LesOlis==""} {
Espionne "KO car $Sujet$POliSignals\nnot in \n$LesOlis"
append CoOl "\n ooooo no oligo found"
} else {
set OK 0
foreach Oli $LesOlis {
Espionne "Oli $Oli"
if { ! [string equal "$Sujet$POliSignals" $Oli]} { continue }
append CoOl "\n $Oli"
set OK 1
regsub "=== ===" $POliSignals "===" SigPourPPCR
if { ! [regexp {=== *$} $SigPourPPCR]} { append SigPourPPCR " ===" }
lappend LesSigPourPPCRPossibles $SigPourPPCR
lappend PofOl($Oli) $P
append CoOl "\n PofOl : [join [set PofOl($Oli)] " "]"
}
if { ! $OK } {
Espionne "KO car $Sujet$POliSignals\nnot in \n$LesOlis"
append CoOl "\n ooooo no corresponding signal found"
}
}
set LesPPCR [ItsPPCR $Sujet]
if {$LesPPCR==""} {
append CoOl "\n ppppp no ppcr found"
} else {
set OK 0
foreach PPCR $LesPPCR {
regsub -all {\+} $PPCR "=" xPPCR
if { ! [regexp {=== *$} $xPPCR]} { append xPPCR " ===" }
foreach SigPourPPCR $LesSigPourPPCRPossibles {
if { ! [regexp $SigPourPPCR $xPPCR]} { continue }
append CoOl "\n $PPCR"
set OK 1
if {$CreePofPPCR} {
if {$Sens=="5'"} {
P5ofPPCR $PPCR $P
} else {
P3ofPPCR $PPCR $P
}
}
}
if {[P5ofPPCR $PPCR]!={} && [P5ofPPCR $PPCR]!="NoValueAvailable"} {
append CoOl "\n P5ofPPCR : [join [P5ofPPCR $PPCR] " "]"
}
if {[P3ofPPCR $PPCR]!={} && [P3ofPPCR $PPCR]!="NoValueAvailable"} {
append CoOl "\n P3ofPPCR : [join [P3ofPPCR $PPCR] " "]"
}
if { [P5ofPPCR $PPCR]!={} && [P5ofPPCR $PPCR]!="NoValueAvailable" && [P3ofPPCR $PPCR]!={} && [P3ofPPCR $PPCR]!="NoValueAvailable"} {
if {$CreeVirtualPPCR} {
NewVirtualPPCR $PPCR $PGS $Sujet
}
}
}
if { ! $OK } { append CoOl "\n ppppp no corresponding oligo found" }
}
}
lappend LeTexte $CoOl
}
}
set LesPofOl {}
foreach Oli [lsort [array names PofOl]] {
set LesPs [lsort -unique [set PofOl($Oli)]]
set PofOl($Oli) $LesPs
lappend LesPofOl "[join $LesPs " "] $Oli"
}
set LesPofOl [lsort $LesPofOl]
if {[OuiOuNon "Do I save PofOl ?"]} {
SauveLesLignes [array get PofOl] dans "[RepertoireDuGenome]/fiches/PofOl"
}
set LesPofPPCR {}
foreach PPCR [lsort -unique [concat [P5ofPPCR LaListeDesPPCRs] [P3ofPPCR LaListeDesPPCRs]]] {
if {[P5ofPPCR $PPCR]!=""} {
set LesP5s [lsort -unique [P5ofPPCR $PPCR]]
P5ofPPCR $PPCR $LesP5s
set P5 [join $LesP5s " "]
} else {
set P5 " "
}
if {[P3ofPPCR $PPCR]!=""} {
set LesP3s [lsort -unique [P3ofPPCR $PPCR]]
P3ofPPCR $PPCR $LesP3s
set P3 [join $LesP3s " "]
} else {
set P3 " "
}
lappend LesPofPPCR "$P5 $PPCR"
lappend LesPofPPCR "$P3 $PPCR"
lappend LesPofPPCR ""
}
if {$CreePofPPCR} {
P5ofPPCR Save
P3ofPPCR Save
}
if {[OuiOuNon "Do I save BaClon ?"]} { BaClon Save }
if { ! $CreeVirtualPPCR} {
FaireLire "Don't forget to rerun CoOlPourTous to create the VirtualPPCRs"
}
}
if {[regexp "Show" $Action]} {
if { ! [info exists LesPofOl]} {
set LesPofOl [PofOl "LesPofOl"]
}
set FO [AfficheVariable [join $LesPofOl "\n"] "AvecOliAvecFiOl" "PofOligos"]
if { ! [info exists LesPofPPCR]} {
set LesPofPPCR [PofPPCR]
}
set FP [AfficheVariable [join $LesPofPPCR "\n"] "AvecOliAvecFiPPCR" "PofPPCR"]
if { ! [info exists LeTexte]} {
set LeTexte {}
foreach PGS [ListeDesPABs] {
if {[BaClon LesSujets $PGS]==""} {
lappend LeTexte "$PGS no subjects nor oligos"
continue
}
set LesSujets [BaClon LesSujets $PGS]
lappend LeTexte "$PGS [Alias $PGS] concerns [llength $LesSujets] subjects"
foreach Sujet $LesSujets {
lappend LeTexte " $Sujet"
foreach P [BaClon LesOligosDuCouple $PGS $Sujet] {
set AA [BaClon Trio $PGS $Sujet $P]
lappend LeTexte " $P [format "%4d" $AA] [Oli $P Description]"
}
}
}
}
set FC [AfficheVariable [join $LeTexte "\n"] "AvecOliAvecShowItsOligosAvecFiOlAvecShowItsPPCRAvecFiPPCRAvecShowItsPPCR" CoOlPourTous]
return [list $FO $FP $FC]
}
return
}
proc CoVarianceDesListes {Liste1 Liste2 {nOUnmoins1 nmoins1}} {
set n [llength $Liste1]
if {$n != [llength $Liste2]} {return}
set Mean1 [MoyenneDeLaListe $Liste1]
set Mean2 [MoyenneDeLaListe $Liste2]
set Somme 0
foreach v1 $Liste1 v2 $Liste2 {set Somme [expr $Somme + ($v1 - $Mean1) * ($v2 - $Mean2)]}
if {[string equal -nocase $nOUnmoins1 "nmoins1"]} {return [expr $Somme * 1.0 / ($n - 1)]}
return [expr $Somme * 1.0 / $n]
}
proc CocheAligneurs {} {
global Aligneurs retourCoche AligneursCochons
Gs "Rien"
set w [NomDe coche]
catch {destroy $w}
toplevel $w
wm title $w "Merci de cocher ..."
wm iconname $w "Coche"
frame $w.buttons
pack $w.buttons -side bottom -fill x -pady 2m
button $w.buttons.dismiss -text "Dismiss" -background red -foreground white -command "set retourCoche($w) Dismiss"
pack $w.buttons.dismiss -side left -expand 1
button $w.buttons.defaut -text "Default" -background yellow -foreground black -command "set retourCoche($w) Defaut"
pack $w.buttons.defaut -side left -expand 1
button $w.buttons.accept -text "Accept" -background green -foreground black -command "set retourCoche($w) Accept"
pack $w.buttons.accept -side left -expand 1
set i 0
foreach a [Aligneurs] {
set AligneursCochons($a) [Aligneurs $a]
set b $w.b$a
checkbutton $b -text "$a" -variable AligneursCochons($a) -relief flat
pack $b -side top -pady 2 -anchor w
}
tkwait variable retourCoche($w)
if { [set retourCoche($w)] == "Defaut" } {
foreach a [Aligneurs] {
set AligneursCochons($a) [Aligneurs $a "Defaut"]
}
while { [set retourCoche($w)] == "Defaut" } {
unset retourCoche($w)
tkwait variable retourCoche($w)
}
}
if { [set retourCoche($w)] != "Dismiss" } {
foreach a [Aligneurs] {
set Aligneurs($a) [set AligneursCochons($a)]
}
}
unset retourCoche($w)
catch { unset $AligneursCoches }
foreach a [Aligneurs] {
if {[Aligneurs $a]} {
set AligneursCoches($a) 1
}
}
destroy $w
}
proc CocheDansLaListe {Liste {CocheParDefaut ""}} {
global retourCoche
global VariableAssociee
set w [NomDe coche]
catch {destroy $w}
toplevel $w
wm title $w "Merci de cocher ..."
wm iconname $w "Coche"
frame $w.buttons
pack $w.buttons -side bottom -fill x -pady 2m
button $w.buttons.dismiss -text "Dismiss" -background red -foreground white -command "set retourCoche($w) Dismiss"
pack $w.buttons.dismiss -side left -expand 1
button $w.buttons.defaut -text "Default" -background yellow -foreground black -command "set retourCoche($w) Defaut"
pack $w.buttons.defaut -side left -expand 1
button $w.buttons.accept -text "Accept" -background green -foreground black -command "set retourCoche($w) Accept"
pack $w.buttons.accept -side left -expand 1
set d 0
set i 0
foreach a $Liste d $CocheParDefaut {
if {$d==""} { set d 0 }
set VariableAssociee($a) $d
set b $w.b[incr i]
checkbutton $b -text "$a" -variable VariableAssociee($a) -relief flat
pack $b -side top -pady 2 -anchor w
}
tkwait variable retourCoche($w)
if { [set retourCoche($w)] == "Defaut" } {
foreach a $Liste d $CocheParDefaut {
if {$d==""} { set d 0 }
set VariableAssociee($a) $d
}
while { [set retourCoche($w)] == "Defaut" } {
unset retourCoche($w)
tkwait variable retourCoche($w)
}
}
if { [set retourCoche($w)] != "Dismiss" } {
set LesChoisis {}
foreach a $Liste {
if {[set VariableAssociee($a)]} {
lappend LesChoisis $a
}
}
}
unset retourCoche($w)
destroy $w
return $LesChoisis
}
proc CochonsLes {SesMachins SesMachinsDefaut} {
upvar $SesMachins Machins
upvar $SesMachinsDefaut MachinsDefaut
global retourCoche
global MachinsCochons
array set Machins [array get MachinsDefaut]
set w [NomDe coche]
catch {destroy $w}
toplevel $w
wm title $w "Merci de cocher ..."
wm iconname $w "Coche"
frame $w.buttons
pack $w.buttons -side bottom -fill x -pady 2m
button $w.buttons.dismiss -text "Dismiss" -background red -foreground white -command "set retourCoche($w) Dismiss"
pack $w.buttons.dismiss -side left -expand 1
button $w.buttons.defaut -text "Default" -background yellow -foreground black -command "set retourCoche($w) Defaut"
pack $w.buttons.defaut -side left -expand 1
button $w.buttons.accept -text "Accept" -background green -foreground black -command "set retourCoche($w) Accept"
pack $w.buttons.accept -side left -expand 1
set i 0
foreach a [array names Machins] {
set MachinsCochons($a) [set Machins($a)]
set b $w.b$a
checkbutton $b -text "$a" -variable MachinsCochons($a) -relief flat
pack $b -side top -pady 2 -anchor w
}
tkwait variable retourCoche($w)
if { [set retourCoche($w)] == "Defaut" } {
array set MachinsCochons [array get MachinsDefaut]
while { [set retourCoche($w)] == "Defaut" } {
unset retourCoche($w)
tkwait variable retourCoche($w)
}
}
if { [set retourCoche($w)] != "Dismiss" } {
array set Machins [array get MachinsCochons]
}
unset retourCoche($w)
destroy $w
return $SesMachins
}
proc CodageParCase {LesNoms aBin} {
global GpesSequences LesCases Codage GpeCases
upvar $aBin Bin
# upvar $acodage_cases codage_cases
#codage horizontal
#chaque sequence est codee en fonction de la presence d'une majorite
#de 1 pour chacune des cases
foreach Nom $LesNoms {
set ListeIntermed [list]
set NumeroCase 1
foreach Case $LesCases {
set Somme 0
foreach Col $Case {
incr Somme [set Bin($Nom,$Col)]
}
if {$Somme>=[expr [llength $Case]*0.8]} {
lappend ListeIntermed 1
set Codage($Nom,$NumeroCase) 1
} else {
lappend ListeIntermed 0
set Codage($Nom,$NumeroCase) 0
}
incr NumeroCase
}
set codage_cases($Nom) $ListeIntermed
# puts [set codage_cases($Nom)]
}
set type_cases [list]
set diagnostic_case [list]
for {set NumCase 1} {$NumCase<=[llength $LesCases]} {incr NumCase} {
set ListeIntermed [list]
foreach Gpe $GpesSequences {
set NumGpe 1
set Somme 0
foreach Nom $Gpe {
incr Somme [set Codage($Nom,$NumCase)]
}
if {$Somme>=[expr 0.8*[llength $Gpe]]} {
set CodageParGpe($NumGpe,$NumCase) 1
lappend ListeIntermed 1
} elseif {$Somme==0} {
set CodageParGpe($NumGpe,$NumCase) 0
lappend ListeIntermed 0
} else {
set CodageParGpe($NumGpe,$NumCase) 0.5
lappend ListeIntermed 0.5
}
}
lappend type_cases $ListeIntermed
}
}
proc CodageSeqParCase {LesNoms acodage_cases} {
global LesCases Bin LesNoms
upvar $acodage_cases codage_cases
foreach Nom $LesNoms {
set ListeIntermed [list]
foreach Case $LesCases {
set Somme 0
set NumeroCase 1
foreach Col $Case {
incr Somme [set Bin($Nom,$Col)]
}
if {$Somme>=[expr [llength $Case]*0.8]} {
lappend ListeIntermed 1
set Codage($Nom,$NumeroCase) 1
} else {
lappend ListeIntermed 0
set Codage($Nom,$NumeroCase) 0
}
}
set codage_cases($Nom) $ListeIntermed
}
}
proc CodeAffyHS {Nom} {
set Rep "[GscopeDatabaseDir AffyHS]/nuctfa"
foreach Fichier [glob -nocomplain "$Rep/*"] {
set Contenu [ContenuDuFichier $Fichier]
scan $Contenu "%s %s %s" codeGscope ac clone
regsub -all ">" $codeGscope "" codeGscope
if {$Nom==$codeGscope} {return $clone}
}
}
proc CodeClone {Nom} {
return [ExtraitInfo $Nom "CodeClone"]
}
proc CodeCloneDuAffymetrix {Affy} {
set AssoAffy [AffymetrixAssocie]
if {$AssoAffy=="NoAssociatedAffymetrix"} { return "NoAssociatedAffymetrix" }
set CC [QuestionDeScience $AssoAffy "ret CodeClone $Affy"]
return $CC
}
proc CodeClonePourTous {Liste {NomATraiter ""}} {
if {$NomATraiter == "" && $Liste==""} {
return "I need a gscopecode or a list of gscopecodes for argument"
}
if {$NomATraiter!=""} {
if {[regexp " " $NomATraiter]} {
regsub -all " " $NomATraiter " " NomATraiter
set Liste [split $NomATraiter " "]
} else {
set Liste [list $NomATraiter]
}
}
foreach Nom $Liste {
set Code [ExtraitInfo $Nom "CodeClone"]
#Espionne $Code
lappend LesCodes $Code
}
return $LesCodes
}
proc CodeCouleur_Human {} {
set Fichier "/genomics/link/UCSCGenomes/Homo_sapiens/database/cytoBand.txt"
set LesLignes [LesLignesDuFichier $Fichier]
foreach Ligne $LesLignes {
set LesMots [LesMotsDeLaLigne $Ligne]
set Code [lindex $LesMots 4]
lappend LesCodes $Code
}
set LesCodes [ListeSansDoublon $LesCodes]
foreach elmt $LesCodes {puts $elmt}
}
proc CodeGenetique {{Qui ""} {Quoi ""}} {
#rR CodeGenetique rend l'acide amine d'un codon, ou les codons d'un acide amine
#rR ou le code a 3 lettres d'un code a 1 lettre et inversement
#rR ou les listes de tout ca.
#rR A signifie acide amine a 1 lettre (code par exemple M)
#rR AAA signifie acide amine a 3 lettres (code par exemple Met)
#rR Qui peut aussi etre ListOf
#rR Quoi peut etre A AAA Codons
global CodeGenetique
#rR comportement par defaut
if {$Qui==""} { set Qui "ListOf"; set Quoi "Codons" }
if {$Quoi=="" && [regexp -nocase {^[ATGC][ATGC][ATGC]$} $Qui]} { set Quoi "A" }
if {[regexp -nocase "Codon" $Quoi]} { set Quoi "Codons" }
if {$Quoi==""} { set Quoi "Codons" }
#rR on regle le cas de majuscules minuscules pour un aa a 1 lettre un codon ou un aa a 3 lettres
if {[regexp -nocase {^[A-Z][A-Z][A-Z]$} $Qui]} { set Qui [string totitle $Qui] }
if {[regexp -nocase {^[ATGC][ATGC][ATGC]$} $Qui]} { set Qui [string toupper $Qui] }
if {[regexp -nocase {^[A-Z]$} $Qui]} { set Qui [string toupper $Qui] }
if {[info exists CodeGenetique($Qui,$Quoi)]} { return $CodeGenetique($Qui,$Quoi) }
if {[info exists CodeGenetique("EstCharge")]} {
if {[regexp {^[ATGC][ATGC][ATGC]$} $Qui] && [info exists CodeGenetique($Qui,A)]} {
#rR pour un codon on rend les codons qui codent pour le meme A
set A $CodeGenetique($Qui,A)
if {[info exists CodeGenetique($A,$Quoi)]} { return $CodeGenetique($A,$Quoi) }
}
return ""
}
set CodeGenetique("EstCharge") 1
#rR au premier appel on passe par ici pour charger le tout, puis plus jamais.
set FichierCodeGenetique "[GscopeEtc]/gscope_codegenetique.txt"
set AllCodons {}
set CodeGenetique(ListOf,A) {}
set CodeGenetique(ListOf,AAA) {}
foreach Ligne [LesLignesDuFichier $FichierCodeGenetique] {
regsub -all { +} $Ligne " " Ligne
set Ligne [string trim $Ligne]
if {$Ligne==""} { continue }
set LesMots [LesMotsDeLaLigne $Ligne]
set A [string toupper [lindex $LesMots 0]]
set AAA [string totitle [lindex $LesMots 1]]
if {$A=="*"} { set A "X" }
set CodeGenetique($A,Codons) {}
set CodeGenetique($AAA,Codons) {}
set LesCodons {}
foreach Codon [lrange $LesMots 2 end] {
set Codon [string toupper $Codon]
if { ! [regexp {^[ATGC][ATGC][ATGC]$} $Codon]} { continue }
lappend AllCodons $Codon
lappend LesCodons $Codon
set CodeGenetique($Codon,A) $A
set CodeGenetique($Codon,AAA) $AAA
lappend CodeGenetique($A,Codons) $Codon
lappend CodeGenetique($AAA,Codons) $Codon
}
if {$LesCodons=={}} { continue }
lappend CodeGenetique(ListOf,A) $A
lappend CodeGenetique(ListOf,AAA) $AAA
set CodeGenetique($A,A) $A
set CodeGenetique($AAA,A) $A
set CodeGenetique($A,AAA) $AAA
set CodeGenetique($AAA,AAA) $AAA
}
set CodeGenetique(ListOf,Codons) [lsort $AllCodons]
#rR maintenant tout est charge. On rappelle recursivement la fonction
return [CodeGenetique $Qui $Quoi]
}
proc CodeMutation {Nom {Quoi ""}} {
if {$Quoi==""} { set Quoi "CodeOnly" }
set Mut [ExtraitInfo $Nom "Muted:"]
if {$Quoi=="All"} {return $Mut}
if {$Mut==""} { return "" }
regsub {mutation of PGS[0-9]+ [^ ]+ } $Mut "" CodeMutation
return $CodeMutation
}
proc CodeSecret {Code {V ""}} {
global CodeSecret
if {$Code=="Enter"} { set CodeSecret "" ; return }
if {$Code=="Leave"} { set CodeSecret "" ; return }
append CodeSecret $Code
switch $CodeSecret {
"00" { Boum }
"10" { Boum }
"0100" { eval [Entre] }
"0101" { AfficheLesProcs }
"0110" { DemandeEtExecute }
"111000000" { AfficheLesBoutonsNonOpen $V}
"111000111" { AfficheLaProc CodeSecret }
default {}
}
return $CodeSecret
}
proc Codon2AA {Codon} {
global TabCodeGenetique
set Codon [string toupper [join $Codon ""]]
if {[string length $Codon] != 3} {return}
if {[info exists TabCodeGenetique]} {
if {![info exists TabCodeGenetique($Codon)]} {return "X"}
return [set TabCodeGenetique($Codon)]
}
set ListeDesCodons {}
set ListeDesAA {}
lappend ListeDesCodons UUU UUC UUA UUG UCU UCC UCA UCG UAU UAC UAA UAG UGU UGC UGA UGG
lappend ListeDesAA F F L L S S S S Y Y "*" "*" C C "*" W
lappend ListeDesCodons CUU CUC CUA CUG CCU CCC CCA CCG CAU CAC CAA CAG CGU CGC CGA CGG
lappend ListeDesAA L L L L P P P P H H Q Q R R R R
lappend ListeDesCodons AUU AUC AUA AUG ACU ACC ACA ACG AAU AAC AAA AAG AGU AGC AGA AGG
lappend ListeDesAA I I I M T T T T N N K K S S R R
lappend ListeDesCodons GUU GUC GUA GUG GCU GCC GCA GCG GAU GAC GAA GAG GGU GGC GGA GGG
lappend ListeDesAA V V V V A A A A D D E E G G G G
foreach Cod $ListeDesCodons AA $ListeDesAA {
set TabCodeGenetique($Cod) $AA
regsub -all "U" $Cod "T" Cod
set TabCodeGenetique($Cod) $AA
}
return [Codon2AA $Codon]
}
proc CodonStart {Nom} {
set Valeur [ExtraitInfo $Nom "CodonStart"]
Wup "To remove old frameshifts"
set LesCS {}
foreach Champ [split $Valeur "/"] {
if {[regexp "erreur de sequence" $Champ]} { continue }
lappend LesCS $Champ
}
return [join $LesCS "/"]
Wup "Je ne veux plus les vieux CodonStart1"
set Valeur2 [ExtraitInfo $Nom "CodonStart1"]
if { $Valeur1 == "" && $Valeur2 == ""} { return "" }
return "$Valeur1 / $Valeur2"
}
proc CodonStartPossible {Codon} {
global CodonStartPossible
global RepertoireDuGenome
Wup "Return 1 if Codon is a valid start codon"
if { ! [info exists CodonStartPossible]} {
set Fichier "$RepertoireDuGenome/fiches/codonstartpossible"
while { ! [file exists $Fichier]} {
if {[OuiOuNon "For Possible Start Codon ... \nThe file $Fichier does'nt exists.\nDo you want to create it ?"]} {
set Possibles [string trim [Entre "ATG TTG GTG"]]
while {[regexp " " $Possibles]} { regsub " " $Possibles " " Possibles }
if {$Possibles == ""} { continue }
regsub -all " " $Possibles "\n" Possibles
Sauve $Possibles dans $Fichier
} else {
if {[OuiOuNon "Do I exit ? "]} { exit }
if {[OuiOuNon "Do I continue without creating $Fichier ? "]} { return {} }
}
}
foreach Ligne [LesLignesDuFichier $Fichier] {
lappend CodonStartPossible $Ligne
}
}
if {$Codon=="LaListeMerci"} { return $CodonStartPossible }
foreach Possible $CodonStartPossible {
if { ! [string compare -nocase $Possible $Codon]} { return 1 }
}
return 0
}
proc CodonStopPossible {Codon} {
global CodonStopPossible
global RepertoireDuGenome
Wup "Return 1 if Codon is a valid stop codon"
if { ! [info exists CodonStopPossible]} {
set Fichier "$RepertoireDuGenome/fiches/codonstoppossible"
while { ! [file exists $Fichier]} {
if {[OuiOuNon "For Possible Stop Codon ... \nThe file $Fichier doen't exists.\nDo you want to create it ?"]} {
set Possibles [string trim [Entre "TAA TAG TGA"]]
regsub -all { +} $Possibles " " Possibles
if {$Possibles == ""} { continue }
regsub -all " " $Possibles "\n" Possibles
Sauve $Possibles dans $Fichier
} else {
if {[OuiOuNon "Do I exit ? "]} { exit }
if {[OuiOuNon "Do I continue without creating $Fichier ? "]} {
#lm doit retourner un boolean
#return {}
return 0
}
}
}
foreach Ligne [LesLignesDuFichier $Fichier] {
lappend CodonStopPossible $Ligne
}
}
if {$Codon=="LaListeMerci"} { return $CodonStopPossible }
foreach Possible $CodonStopPossible {
if { ! [string compare -nocase $Possible $Codon]} { return 1 }
}
return 0
}
proc CodonW {} {
global RepertoireDuGenome
set TFA [CreeTfaPourCodonw]
set RepCodonw "$RepertoireDuGenome/codonw"
set FichierCAI "$RepCodonw/cai.def"
if { ! [file exists $FichierCAI]} {
Sauve "$TFA\n$FichierCAI" dans "$RepCodonw/cai.input"
catch {exec cai < "$RepCodonw/cai.input" >& "$RepCodonw/cai.log"}
if { ! [file exists $FichierCAI]} {
FaireLire "Problem with cai. I could'nt create $FichierCAI\nDid You setcodonw ?"
return ""
}
}
return $FichierCAI
}
proc CodonsDeProt {what {pk ""}} {
if {$what eq "sauve"} {
set ins "insert into codons values($pk"
foreach a1 {A T G C} {
foreach a2 {A T G C} {
foreach a3 {A T G C} {
set cdn "$a1$a2$a3"
global $cdn
append ins ",[set $cdn]"
}
}
}
append ins ")"
$::dcdn eval $ins
} else {
foreach a1 {A T G C} {
foreach a2 {A T G C} {
foreach a3 {A T G C} {
set cdn "$a1$a2$a3"
global $cdn
set $cdn 0
}
}
}
}
return
}
proc CodonsDuAA {AA} {
return [CodeGenetique $AA Codons]
}
proc CodonsRares {Seq {SansZero ""} {args ""}} {
if {$args==""} {
# set LesRares {AGG AGA CGA CTA ATA CCC TAA TAG TGA}
set LesRares {AGG AGA CGA CTA ATA CCC}
} else {
set LesRares $args
}
if {$Seq=="LaListeMerci"} { return $LesRares }
if {$SansZero=="AvecBlanc"} { set AvecBlanc 1 } else { set AvecBlanc 0 }
if {$SansZero=="" || $SansZero=="SansZero"} {
set SansZero 1
} else {
set SansZero 0
}
set Seq [string toupper $Seq]
set L [string length $Seq]
set M [expr $L%3]
set Seq [string range $Seq 0 end-$M]
foreach Rare $LesRares {
set Compte($Rare) 0
}
foreach {a b c} [split $Seq ""] {
set Codon "$a$b$c"
if {[info exists Compte($Codon)]} { incr Compte($Codon)}
}
set LaSortie {}
foreach Rare $LesRares {
set N [set Compte($Rare)]
if {$SansZero && $N==0} { continue }
if {$AvecBlanc && $N==0} { lappend LaSortie " " ; continue }
lappend LaSortie "${N}_$Rare"
}
return [join $LaSortie " "]
}
proc CoefficientCorrelation {lx ly} {
# Ici lx et ly doivent etre de meme longueur
if {[llength $lx] != [llength $ly]} {
return ""
}
# Calcule moyenne de x et y,
# somme des x2 , y2
# somme des xy
#
# coef.corr = cov(x,y)/(sigx*sigy)
set sx 0. ; set sy 0.
set s2x 0. ; set s2y 0.
set sxy 0.
set N [llength $lx]
foreach x $lx y $ly {
set sx [expr {$sx + $x}]
set sy [expr {$sy + $y}]
set sxy [expr {$sxy + $x*$y}]
set s2x [expr {$s2x + $x*$x}]
set s2y [expr {$s2y + $y*$y}]
}
set mx [expr {$sx/$N}]
set my [expr {$sy/$N}]
set ex [expr {sqrt($s2x/$N-$mx*$mx)}]
set ey [expr {sqrt($s2y/$N-$my*$my)}]
set c [expr {($sxy/$N-$mx*$my)/($ex*$ey)}]
return $c
}
proc CoherenceDesFamilles {} {
set FichierCoherenceDesFamilles "[RepertoireDuGenome]/xhda/coherence_des_familles"
foreach Famille [ListeDesFamilles] {
set LesChefsDeFamille $Famille
set LesMembres [LesMembresDeLaFamille $Famille]
Espionne "\n\nVcho $LesMembres"
if {$LesMembres=={}} { continue }
catch {unset MesPABs}
catch {unset SesPABs}
set LesPABs {}
foreach {GDB Membre} $LesMembres {
lappend LesPABs $Membre
set EstMembre($Famille,$Membre) 1
}
foreach {GDB Membre} $LesMembres {
set SesMembres [QuestionDeScience $GDB "ret LesMembresDeLaFamille $Membre"]
if {$SesMembres=={}} { continue }
set Chef $Membre
lappend LesChefsDeFamille $Chef
foreach {GDBautre Autre} $SesMembres {
lappend LesPABs $Autre
set EstMembre($Chef,$Autre) 1
}
}
set LesChefsDeFamille [lsort -unique $LesChefsDeFamille]
set LesPABs [lsort -unique $LesPABs]
set LesLignes {}
foreach Chef $LesChefsDeFamille {
set Ligne [format "%9s :" $Chef]
foreach PAB $LesPABs {
regsub -all "." $PAB "." Vide
if {[info exists EstMembre($Chef,$PAB)]} {
set Mot $PAB
} else {
set Mot $Vide
}
append Ligne " $Mot"
}
lappend LesLignes "$Famille $Ligne"
}
Espionne ""
EspionneL $LesLignes
set Texte [join $LesLignes "\n"]
AppendAuFichier $FichierCoherenceDesFamilles $Texte
}
}
proc ColMore {Repertoire} {
#Rajoute une donnée (colonne) dans un fichier a partir d'une partie du nom du fichier
foreach Fichier [glob -tails -directory $Repertoire "*.cons"] {
set FichierOut [open "/genomics/link/STAF/fiches/VDR/Consensus/WC/$Fichier" "w"]
regexp {Chr([0-9]{1,2}|X|Y)} $Fichier Toto Chromosome
regexp {DR([0-9]{1})} $Fichier Tata DR
set FichierIn [open "$Fichier" "r"]
while { [gets $FichierIn Ligne] >=0 } {
puts $FichierOut "chr$Chromosome DR$DR $Ligne"
}
close $FichierOut
}
}
proc CollapseAllTaxInternal {} {
foreach k [array names ::Tx "ShowInt,*"] {
set ::Tx($k) 0
}
DrawTaxo
return
}
proc CollapseBranche {AId n} {
set t [set ::Abr(Arbre,$AId)]
if {[$t isleaf $n]} {return}
foreach e [$t children $n] {
CollapseBranche $AId $e
}
if {$n eq "root"} {return}
if {[$t get $n nboot] < [set ::Abr($AId,ThresBoot)]} {
$t cut $n
#CollapseDescendants $AId $n
}
return
}
proc CollapseDescendants {AId n} {
set t [set ::Abr(Arbre,$AId)]
foreach c [$t descendants $n] {
if {! [$t isleaf $c]} {
$t cut $c
}
}
return
}
proc CollapseTree {AId} {
global Abr
if {! [set Abr($AId,BootDone)]} {return}
if {[set Abr($AId,CollapseTree)]} {
CollapseBranche $AId root
} else {
set t [set Abr(Arbre,$AId)]
set Ser [set Abr(ArbreSer,$AId)]
$t destroy
struct::tree $t
$t deserialize $Ser
$t set root r 0.0
$t set root theta 0.0
$t set root oldtheta 0.0
$t set root length 0.0
$t set root width [llength [$t leaves]]
}
OnReDessineArbre $AId
return
}
proc Colle {w} {
global xPointDeRaccord yPointDeRaccord DejaEmpiles
global GalerieCourante
global ExpoCourante
set LargeurDuMotif [LargeurDe $w]
set HauteurDuMotif [HauteurDe $w]
set OnEnEmpile 4
set HauteurDuLe [expr $OnEnEmpile*$HauteurDuMotif]
if { ! [info exists xPointDeRaccord] } {
set DejaEmpiles 0
set xPointDeRaccord 0
set yPointDeRaccord 0
} else {
incr DejaEmpiles
incr yPointDeRaccord $HauteurDuMotif
}
if { $DejaEmpiles >= $OnEnEmpile } {
set DejaEmpiles 0
set yPointDeRaccord 0
incr xPointDeRaccord $LargeurDuMotif
set ScrollRegion [$GalerieCourante.frame.mur cget -scrollregion]
set SR0 [lindex $ScrollRegion 0]
set SR1 [lindex $ScrollRegion 1]
set SR2 [lindex $ScrollRegion 2]
set SR3 [lindex $ScrollRegion 3]
$GalerieCourante.frame.mur configure -width "[expr $SR2 + $LargeurDuMotif]" -height "$HauteurDuLe"
$GalerieCourante.frame.mur configure -scrollregion "$SR0 $SR1 [expr $SR2 + $LargeurDuMotif] $HauteurDuLe"
}
$GalerieCourante.frame.mur create window $xPointDeRaccord $yPointDeRaccord -window $w -anchor nw
}
proc CollecteMutationMTM {{Qui ""} {Quoi ""}} {
global CollecteMutationMTM
if {$Qui==""} { set Qui "ListOf"; set Quoi "Types" }
if {[info exists CollecteMutationMTM($Qui,$Quoi)]} { return $CollecteMutationMTM($Qui,$Quoi) }
if {[info exists CollecteMutationMTM("EstCharge")]} {
if {$Qui=="Get" && $Quoi=="Csv"} {
set LeTout {}
lappend LeTout [join [CollecteMutationMTM "ListOf" "Keys"] ";"]
foreach P [CollecteMutationMTM "ListOf" "Patients"] {
lappend LeTout [join [CollecteMutationMTM $P "allvalues"] ";"]
}
set Tout [join $LeTout "\n"]
return $Tout
}
return ""
}
set CollecteMutationMTM("EstCharge") 1
set LesTypes [MutationMTM ListOf Possible Type]
set CollecteMutationMTM(ListOf,Types) [MutationMTM ListOf Possible Type]
foreach Type $LesTypes {
CollecteMutationMTMForType $Type
}
return [CollecteMutationMTM $Qui $Quoi]
}
proc CollecteMutationMTMForType {{Type ""}} {
global CollecteMutationMTM
set Seq [QueLaSequenceDuFichierTFA "[HomeRipp]/GenoretWww/Collaboration/MutationsMTM/MTM1.tfa"]
set Seq [string toupper $Seq]
set Seq "n$Seq"
if {$Type==""} { set Type "MisSens" }
set Oblige "Nucleotide_change"
set LesTrois {}
set LesErreurs {}
set OldMut "trululu"
set NbDeLaMut 1
set TotalNbCourant -1
set TotalNbPrecedant -1
set LesHeaders [MutationMTM ListHeaderPlease $Type]
foreach I [MutationMTM ListAllPlease $Type] {
set WL [MutationMTM $I "WholeLine" $Type]
set TotalNbLu [MutationMTM $I "Total_nb" $Type]
if {$TotalNbLu!=""} { set TotalNbCourant $TotalNbLu}
set Mutation [MutationMTM $I $Oblige $Type]
regsub -all " " $Mutation "" Mutation
if {[regsub -all {\(? *\$.*} $Mutation "" Mutation]>0} { }
if {[regexp {\$} $Mutation]} { set Mutation [Entre $Mutation] }
if {$Mutation==""} { FaireLire "Horreur une mutation vide" }
set Base ""
if {[regexp -nocase {c.([0-9]+)([A-Z])>} $Mutation Match Pos Base]} {
set Base [string toupper $Base]
set Good [string index $Seq $Pos]
if { ! [string equal $Good $Base]} {
lappend LesErreurs "$Type $I $Mutation $Good $Base"
}
}
set SeqDel ""
if {[regexp -nocase {^c.([0-9]+)del([A-Z])$} $Mutation Match Pos SeqDel]} {
set SeqDel [string toupper $SeqDel]
set Good [string index $Seq $Pos]
if { ! [string equal $Good $SeqDel]} {
lappend LesErreurs "$Type $I $Mutation $Good $SeqDel"
}
} 82
if {[regexp -nocase {^c.([0-9]+)\-([0-9]+)del([A-Z]+)$} $Mutation Match PosD PosF SeqDel]} {
set SeqDel [string toupper $SeqDel]
set Good [string range $Seq $PosD $PosF]
if { ! [string equal $Good $SeqDel]} {
lappend LesErreurs "$Type $I $Mutation $Good $SeqDel"
}
}
if {$OldMut==$Mutation} {
lappend LesIsDeLaMut($Mutation) $I
incr NbDeLaMut
set TotalNbPrecedant $TotalNbCourant
} else {
if {$TotalNbPrecedant>0 && $TotalNbPrecedant!=$NbDeLaMut} {
lappend LesErreurs "$Type [expr $I-1] TotalNb $TotalNbPrecedant != $NbDeLaMut de $OldMut"
}
set TotalNbPrecedant $TotalNbCourant
set TotalNbCourant -1
set NbDeLaMut 1
set LesIsDeLaMut($Mutation) [list $I]
}
set FamilySize [llength $LesIsDeLaMut($Mutation)]
set OldMut $Mutation
set P [MutationMTM PatientCode $Type $I]
lappend CollecteMutationMTM(ListOf,Patients) $P
lappend CollecteMutationMTM(ListOf,patient) $P
set Protein ""
if {[set Pro [MutationMTM $I "Predicted_protein_change" $Type]]!=""} { set Protein $Pro }
if {[set Pro [MutationMTM $I "Predicted_protein_or_splicing_alteration" $Type]]!=""} { set Protein $Pro }
KeyList "PleaseReset"
set CollecteMutationMTM($P,[KeyList pid]) $P
set CollecteMutationMTM($P,[KeyList type]) $Type
set CollecteMutationMTM($P,[KeyList patient]) [MutationMTM $I "Patients" $Type]
set CollecteMutationMTM($P,[KeyList region]) [MutationMTM $I "Region" $Type]
set CollecteMutationMTM($P,[KeyList mutation]) $Mutation
set CollecteMutationMTM($P,[KeyList protein]) $Protein
set CollecteMutationMTM($P,[KeyList familysize]) $FamilySize
set CollecteMutationMTM($P,[KeyList phenotype]) [MutationMTM $I "Phenotype" $Type]
set CollecteMutationMTM($P,[KeyList conservation]) [MutationMTM $I "Conservation" $Type]
set CollecteMutationMTM($P,[KeyList frequence]) [MutationMTM $I "Frequence" $Type]
set CollecteMutationMTM($P,[KeyList evidence]) [MutationMTM $I "Preuve_=_poly" $Type]
set CollecteMutationMTM($P,[KeyList origine]) [MutationMTM $I "Mutation_origin" $Type]
set CollecteMutationMTM($P,[KeyList references]) [MutationMTM $I "References" $Type]
set CollecteMutationMTM($P,[KeyList comment]) [MutationMTM $I "RR" $Type]
foreach Im $LesIsDeLaMut($Mutation) {
set P [MutationMTM PatientCode $Type $Im]
set CollecteMutationMTM($P,familysize) $FamilySize
}
if { ! [info exists CollecteMutationMTM(ListOf,Keys)]} {
set CollecteMutationMTM(ListOf,Keys) [KeyList "PleaseGetKeys"]
}
foreach Key $CollecteMutationMTM(ListOf,Keys) {
lappend CollecteMutationMTM($P,allvalues) $CollecteMutationMTM($P,$Key)
}
set OldWL $WL
}
return
AfficheVariable [join $LesErreurs "\n"] "" "DetectedErrors"
set Texte [join $LesTrois "\n"]
return [AfficheVariable $Texte "" $Type]
}
proc CollectionDeNucAPartirDeProtTFA {Nom} {
global RepertoireDuGenome
set Var 0.05
set Expect 10-3
set EditCommand 0
set NbSbjct 20
set Filtre 1
set FichierProtTFA "$RepertoireDuGenome/prottfa/$Nom"
if {![file exists $FichierProtTFA]} {Espionne "$Nom -> no mrna selected";return}
set RepBlastP "$RepertoireDuGenome/blastpinitial"
if {![file exists $RepBlastP]} {File mkdir $RepBlastP}
set FichierBlastP "$RepBlastP/$Nom"
set RepNucTFA "$RepertoireDuGenome/nuctfa"
if {![file exists $RepNucTFA]} {File mkdir $RepNucTFA}
set FichierNucTFA "$RepNucTFA/$Nom"
set RepNucEMBL "$RepertoireDuGenome/nucembl"
if {![file exists $RepNucEMBL]} {File mkdir $RepNucEMBL}
set FichierNucEMBL "$RepNucEMBL/$Nom"
if {![file exists $FichierBlastP]} {
Espionne "$Nom -> BlastP"
BlastPPourBallast $FichierProtTFA $FichierBlastP $EditCommand protein $Expect $Filtre $NbSbjct
}
DepouilleLeBlast TabBlast $FichierBlastP
if {![info exists TabBlast(NbSubject)]} {Espionne "$Nom -> no mrna selected";return}
set LesProteines {}
set NMax 0
set NbSubject [set TabBlast(NbSubject) ]
for {set i 1} {$i <= $NbSubject} {incr i} {
set BIdProt [set TabBlast($i) ]
set N [NombreDeBasesEnCommun_TabBlast TabBlast $BIdProt]
set Id [PourcentageDIdentiteGlobal_TabBlast TabBlast $BIdProt]
lappend LesProteines [list $BIdProt $N $Id]
if {$NMax < $N} {set NMax $N}
}
set NMaxMin [expr $NMax * (1 - $Var)]
if {$LesProteines == {}} {Espionne "$Nom -> no mrna selected";return}
set AccessmRNA ""
foreach LaProteine [lsort -integer -index 1 -decreasing [lsort -real -index 2 -decreasing $LesProteines]] {
set N [lindex $LaProteine 1]
if {$N < $NMaxMin} {continue}
set BIdProt [lindex $LaProteine 0]
set Id [lindex $LaProteine 2]
Espionne "$Nom -> $BIdProt have [expr $Id*100] % of identity with $FichierProtTFA and $N AA in common."
Espionne "$Nom -> searching the mRNA RefSeq in $BIdProt"
set AccessmRNA [LemRNADeLAccessProt $BIdProt]
if {$AccessmRNA != ""} {set BIdProtDeRef $BIdProt;break}
}
if {$AccessmRNA == ""} {Espionne "$Nom -> no mrna selected";return}
set Seq [QueLaSequenceDuTexteTFA [PageInfo $AccessmRNA "genbank" "seq"]]
if {$Seq == ""} {Espionne "$Nom -> no mrna selected";return}
set LesOrgas [LesOrgasDeLAccess $AccessmRNA]
if {[OrganismeDuPAB $Nom] == "NotYetAffected"} {
AppendAuFichier "$RepertoireDuGenome/fiches/organismesdespabs" "$Nom [join $LesOrgas ":"]"
}
set Entete ">$Nom $AccessmRNA mRNA of $BIdProtDeRef"
Sauve [SequenceFormatTFA $Seq $Entete] dans $FichierNucTFA
Sauve [SequenceFormatEMBL $Seq ] dans $FichierNucEMBL
return
}
proc CollectionDeNucAPartirDeProtTFAPourTous {{LesNoms ""}} {
global RepertoireDuGenome
set RepNucTFA "$RepertoireDuGenome/nuctfa"
if {![file exists $RepNucTFA]} {File mkdir $RepNucTFA}
if {[llength [glob -nocomplain "$RepNucTFA/*"]] > 0 && ![OuiOuNon "Some files exist in $RepNucTFA, would you want to conserv them?"]} {
set ReInitialise 1
} else {
set ReInitialise 0
}
if {$LesNoms == {}} {set LesNoms [ListeDesPABs]}
foreach Nom $LesNoms {
if {!$ReInitialise && [file exists "$RepNucTFA/$Nom"]} {continue}
CollectionDeNucAPartirDeProtTFA $Nom
}
return ""
}
proc ColonneDuMet {LesNoms aBin} {
global PremiereColPleine GpesColonnes LesCases GpeCases TabCol
upvar $aBin Bin
if {$PremiereColPleine==-1} {
set Min -1
foreach gpe $GpesColonnes {
set i [lindex $gpe 0]
set Somme 0
foreach nom $LesNoms {
incr Somme [set Bin($nom,$i)]
}
if {$Somme>$Min} {
set Min $Somme
set ColMax $i
}
}
set PremiereColPleine $ColMax
}
set GpeColPleine [set TabCol($PremiereColPleine)]
return [lindex [lindex $LesCases [lsearch $GpeCases $GpeColPleine]] 0]
}
proc ColonneOverlap {v1 v2 ang1 ang2 ec1 ec2} {
set v1 [V_nV $v1]
lassign $v1 x1 y1
set a1 [expr {atan2($y1,$x1)}]
#puts "a1ori $a1"
set a1p $a1
if {$a1p < 0.0} {
set a1p [expr {$a1p + [2Pi]}]
}
set v2 [V_nV $v2]
lassign $v2 x2 y2
set a2 [expr {atan2($y2,$x2)}]
#puts "a2ori $a2"
set a2p $a2
if {$a2p < 0.0} {
set a2p [expr {$a2p + [2Pi]}]
}
#puts "a1p $a1p"
#puts "a2p $a2p"
# renverse
if {$a2p > $a1p} {
#puts "inverse a1 <-> a2"
set tmp $a1 ; set a1 $a2 ; set a2 $tmp
set tmp $a1p ; set a1p $a2p ; set a2p $tmp
set tmp $ang1 ; set ang1 $ang2 ; set ang2 $tmp
set tmp $ec1 ; set ec1 $ec2 ; set ec2 $tmp
}
# Cas special de Pi
if {$a1p eq [Pi] && $a2 < 0.} {
#puts "-> a1p Pi"
set a1 -$a1
}
if {$a2p eq [Pi] && $a1 < 0.} {
#puts "-> a2p Pi"
set a2 -$a2
}
set a1m [expr {$a1p - $ang1}]
set a1x [expr {$a1p + $ang1}]
set a2m [expr {$a2p - $ang2}]
set a2x [expr {$a2p + $ang2}]
foreach v {a1m a1x a2m a2x} {
if {[set $v] < 0.0} {
set $v [expr {[2Pi] - [set $v]}]
}
if {[set $v] > [2Pi]} {
set $v [expr {[set $v] - [2Pi]}]
}
if {[set $v] > [Pi]} {
#set $v [expr {[2Pi] - [set $v]}]
}
}
puts ""
puts "a1 $a1 a1p $a1p ang1 $ang1"
puts "a1m $a1m a1x $a1x"
puts "a2 $a2 a2p $a2p ang2 $ang2"
puts "a2m $a2m a2x $a2x"
if {($a1m - $a2x) < 0.0} {
# overlap
return 1
} else {
return 0
}
}
proc ColorChainNwOj {what} {
global NwOj NwOjR TabSF
set can $NwOj(Can)
if {$NwOj(ColorSel) eq "None"} {
set col couldefond
} elseif {$NwOj(ColorSel) eq "More ..."} {
set col [tk_chooseColor]
if {$col eq ""} {return}
set NwOj(ColorSel) $col
} elseif {$NwOj(ColorSel) eq "Feature Color" && $what ne "feature"} {
return
} else {
set col $NwOj(ColorSel)
if {$col eq "green"} {set col green1}
}
set chn $NwOj(Chain)
switch $what {
"all" {
foreach e [array names NwOjR "${chn},*"] {
lset NwOjR($e) 2 $col
}
}
"selected" {
set Li [$can find withtag Selected]
foreach i $Li {
set Lt [$can gettags $i]
set nb [lsearch -inline -regexp $Lt {^Nbr}]
set n [string range $nb 3 end]
lset NwOjR($chn,$n) 2 $col
}
ClearSelectionNwOj
}
"feature" {
if {$NwOj(FeatCol) eq "None"} {return}
set feat $NwOj(FeatCol)
set mol $NwOj(Mol)
set chn $NwOj(Chain)
set nom [BonNomPDB "${mol}_$chn"]
set ft [info exists TabSF($nom,$feat)]
if {! $ft} {return}
foreach e [set TabSF($nom,$feat)] {
DecortiqueUneFeature $e d f fcol sc note
if {$NwOj(ColorSel) eq "Feature Color"} {
set col $fcol
}
# Special case for Discri
# don't take if indel present
if {[regexp -nocase {^indel} $note]} {
continue
}
for {set i $d} {$i <= $f} {incr i} {
set n [DonnePosGS $nom $i]
lset NwOjR($chn,$n) 2 $col
}
}
}
}
CanvasDeChaine
return
}
proc ColorFromHSB {H S B} {
set rgb [hsbToRgb $H $S $B]
lassign $rgb r g b
set color [format "#%04x%04x%04x" $r $g $b]
return $color
}
proc ColorHexa {name} {
if {[string index $name 0] != "#"} {
set list [winfo rgb . $name]
set red [lindex $list 0]
set green [lindex $list 1]
set blue [lindex $list 2]
set shift 8
} else {
case [string length $name] {
4 {set format "#%1x%1x%1x" ; set shift -4}
7 {set format "#%2x%2x%2x" ; set shift 0}
10 {set format "#%3x%3x%3x" ; set shift 4}
13 {set format "#%4x%4x%4x" ; set shift 8}
default {error "syntax error in color name \"$name\""}
}
if {[scan $name $format red green blue] != 3} {
error "syntax error in color name \"$name\""
}
}
if {$shift>=0} {
set red [expr $red >> $shift]
set green [expr $green >> $shift]
set blue [expr $blue >> $shift]
} else {
set red [expr ($red << -$shift) + $red]
set green [expr ($green << -$shift) + $green]
set blue [expr ($blue << -$shift) + $blue]
}
set color [format "#%02x%02x%02x" $red $green $blue]
return $color
}
proc ColorOfPfam {FileMacsimsXml Pfam} {
package require tdom
set FileMacsimsXml [TheTrueMacsimsFile $FileMacsimsXml]
set fh [open $FileMacsimsXml "r"]
dom parse -channel $fh doc
close $fh
$doc documentElement root
foreach seq [$root selectNodes "//sequence"] {
foreach noeud_PFAM [$seq selectNodes ".//fitem\[ftype=\"PFAM-A\"\]"] {
set PFAM [$noeud_PFAM selectNodes "string(./fnote)"]
set Color [$noeud_PFAM selectNodes "string(./fcolor)"]
if {[regexp "$Pfam" $PFAM]} {
$doc delete
return $Color
}
}
}
$doc delete
}
proc ColorationDesClustersXHdaDesNomsPiques {Nom {Quoi Couleur}} {
global ColorationDesClustersXHda
JeMeSignale
if {$Nom=="Reset" && [info exists ColorationDesClustersXHda]} {
unset ColorationDesClustersXHda
return
}
if {[info exists ColorationDesClustersXHda($Nom,$Quoi)]} {
return [set ColorationDesClustersXHda($Nom,$Quoi)]
}
if {[info exists ColorationDesClustersXHda]} {
if {[info exists ColorationDesClustersXHda("EstCharge",$Quoi)]} {
return [set ColorationDesClustersXHda("EstCharge",$Quoi)]
} else {
return "lightgrey"
}
}
set ColorationDesClustersXHda("EstCharge",Couleur) "grey"
set ColorationDesClustersXHda("EstCharge",Signif) "not_in_same_cluster"
set LesPiques [LesNomsPiques]
if {$LesPiques=={}} {
set ColorationDesClustersXHda("EstCharge",Couleur) "white"
set ColorationDesClustersXHda("EstCharge",Signif) "no_reference_was_choosen"
return [ColorationDesClustersXHdaDesNomsPiques $Nom $Quoi]
}
set n [llength $LesPiques]
set LesCouleurs [CouleursDuBleuAuRouge $n]
foreach Pique $LesPiques Couleur $LesCouleurs {
set Signif "same cluster as $Pique"
set LeClusterXHda [LeClusterXHda $Pique]
if {$LeClusterXHda=={}} { continue }
set Premier [lindex $LeClusterXHda 0]
if {[info exists DejaVu($Premier)]} { continue }
set DejaVu($Premier) $Pique
foreach PAB $LeClusterXHda {
set ColorationDesClustersXHda($PAB,Couleur) $Couleur
set ColorationDesClustersXHda($PAB,Signif) $Signif
}
}
return [ColorationDesClustersXHdaDesNomsPiques $Nom $Quoi]
}
proc ColorationsPossibles {{SansTamis ""} {QueVeutOn ""}} {
global LesColorationsPossibles LesColorationsPossiblesRangs
set OnVeutLesRangs [string equal $QueVeutOn "OnVeutLesRangs"]
if { ! $OnVeutLesRangs && [info exists LesColorationsPossibles]} {
return $LesColorationsPossibles
}
if { $OnVeutLesRangs && [info exists LesColorationsPossiblesRangs]} {
return $LesColorationsPossiblesRangs
}
foreach Ligne [split [info body CouleurParTypeEtNom] "\n"] {
if {[PourWscope] && [regexp "\#.* noWeb" $Ligne]} { continue }
if { ! [regexp {\"Coloration_[^\$][^\"]+} $Ligne CoCo]} { continue }
set Rang 9.9
if {[regexp "\#" $Ligne]} { set Rang [FloatApres "\#" dans $Ligne] }
if {$SansTamis!="" && [regexp "FromTamis" $Ligne]} { continue }
regsub {\"Coloration_} $CoCo "" Coloration
lappend LesRangCol "$Rang $Coloration"
}
set LesRangCol [lsort -command CompareLesFloatsEnDebut $LesRangCol]
foreach RangCol $LesRangCol {
scan $RangCol "%f %s" Rang Col
lappend LesColorationsPossibles $Col
lappend LesColorationsPossiblesRangs $Rang
}
if {$OnVeutLesRangs} {
return $LesColorationsPossiblesRangs
} else {
return $LesColorationsPossibles
}
}
proc ColoriageDeLIdDeDrawBlast {Id} {
global LesCouleursDeLaGammeDeLId
if {![info exists LesCouleursDeLaGammeDeLId]} {
set LesCouleursDeLaGammeDeLId [GammeDeCouleurBlancVersRouVouB V 5]
}
if {0.90 < $Id} {return [lindex $LesCouleursDeLaGammeDeLId 4]}
if {0.80 < $Id} {return [lindex $LesCouleursDeLaGammeDeLId 3]}
if {0.60 < $Id} {return [lindex $LesCouleursDeLaGammeDeLId 2]}
if {0.30 < $Id} {return [lindex $LesCouleursDeLaGammeDeLId 1]}
return [lindex $LesCouleursDeLaGammeDeLId 0]
}
proc ColoriageDeLaFrequence {Frequence} {
set NTot 7.0
if {$Frequence == 0} {
set ColorFill "lightgrey"
return $ColorFill
} elseif {$Frequence == "N"} {
set ColorFill "black"
return $ColorFill
} elseif {$Frequence == 1} {
set n 1.0
} elseif {2 <= $Frequence && $Frequence <= 3 } {
set n 2.0
} elseif {4 <= $Frequence && $Frequence <= 10 } {
set n 3.0
} elseif {11 <= $Frequence && $Frequence <= 50 } {
set n 4.0
} elseif {51 <= $Frequence && $Frequence <= 100} {
set n 5.0
} elseif {101 <= $Frequence && $Frequence <= 200} {
set n 6.0
} elseif {200 <= $Frequence} {
set n 7.0
}
set Valeur [expr $n/$NTot]
set ColorFill [Nuance $Valeur 0.0 0.987]
return $ColorFill
}
proc ColoriageDeLaFrequenceDeDrawBlast {Frequence} {
global LesCouleursDeLaGammeDeLaFreq
if {![info exists LesCouleursDeLaGammeDeLaFreq]} {
set LesCouleursDeLaGammeDeLaFreq [GammeDeCouleurBlancVersRouVouB B 8]
}
if {200 <= $Frequence } {return [lindex $LesCouleursDeLaGammeDeLaFreq 7]}
if {100 <= $Frequence && $Frequence < 200} {return [lindex $LesCouleursDeLaGammeDeLaFreq 6]}
if {50 <= $Frequence && $Frequence < 100} {return [lindex $LesCouleursDeLaGammeDeLaFreq 5]}
if {10 <= $Frequence && $Frequence < 50 } {return [lindex $LesCouleursDeLaGammeDeLaFreq 4]}
if {4 <= $Frequence && $Frequence < 10 } {return [lindex $LesCouleursDeLaGammeDeLaFreq 3]}
if {2 <= $Frequence && $Frequence < 4 } {return [lindex $LesCouleursDeLaGammeDeLaFreq 2]}
if {1 <= $Frequence && $Frequence < 2 } {return [lindex $LesCouleursDeLaGammeDeLaFreq 1]}
return [lindex $LesCouleursDeLaGammeDeLaFreq 0]
}
proc ColoriageDesExons {Type Sens} {
if {$Type == "EXON"} {
if {$Sens == "+"} {
set ColorFill "blue"
} else {
set ColorFill "red"
}
} elseif {$Type == "REPEAT"} {
set ColorFill "green"
} elseif {$Type == "ABSENT"} {
set ColorFill "lightgrey"
}
return $ColorFill
}
proc ColoriageDuMapping {TypeRegion} {
if {$TypeRegion == "Plus / Plus"} {
set ColorFill "blue"
} elseif {$TypeRegion == "Plus / Minus"} {
set ColorFill "red"
} elseif {$TypeRegion == "N"} {
set ColorFill "black"
} elseif {$TypeRegion == "RAS"} {
set ColorFill "lightgrey"
} elseif {$TypeRegion == "+1"} {
set ColorFill "DodgerBlue1"
} elseif {$TypeRegion == "+2"} {
set ColorFill "blue1"
} elseif {$TypeRegion == "+3"} {
set ColorFill "blue4"
} elseif {$TypeRegion == "-1"} {
set ColorFill "red1"
} elseif {$TypeRegion == "-2"} {
set ColorFill "red3"
} elseif {$TypeRegion == "-3"} {
set ColorFill "red4"
} elseif {$TypeRegion == "Prot / Prot"} {
set ColorFill "orange"
} elseif {[regexp "\[1-3\+]{2} / \[1-3\+]{2}" $TypeRegion]} {
set ColorFill "DarkOrchid"
} elseif {[regexp "\[1-3\+]{2} / \[1-3\-]{2}" $TypeRegion]} {
set ColorFill "MediumOrchid"
} elseif {[regexp "\[1-3\-]{2} / \[1-3\+]{2}" $TypeRegion]} {
set ColorFill "SpringGreen3"
} elseif {[regexp "\[1-3\-]{2} / \[1-3\-]{2}" $TypeRegion]} {
set ColorFill "SpringGreen4"
} else {
set ColorFill "HotPink1"
}
return $ColorFill
}
proc ColoriageDuMappingDeDrawBlast {TypeRegion} {
if {$TypeRegion == "Plus / Plus"} {
set ColorFill "blue"
} elseif {$TypeRegion == "Plus / Minus"} {
set ColorFill "red"
} elseif {$TypeRegion == "N"} {
set ColorFill "black"
} elseif {$TypeRegion == "RAS"} {
set ColorFill "lightgrey"
} elseif {$TypeRegion == "+1"} {
set ColorFill "DodgerBlue1"
} elseif {$TypeRegion == "+2"} {
set ColorFill "blue1"
} elseif {$TypeRegion == "+3"} {
set ColorFill "blue4"
} elseif {$TypeRegion == "-1"} {
set ColorFill "red1"
} elseif {$TypeRegion == "-2"} {
set ColorFill "red3"
} elseif {$TypeRegion == "-3"} {
set ColorFill "red4"
} elseif {$TypeRegion == "Prot / Prot"} {
set ColorFill "orange"
} elseif {[regexp "\[1-3\+]{2} / \[1-3\+]{2}" $TypeRegion]} {
set ColorFill "DarkOrchid"
} elseif {[regexp "\[1-3\+]{2} / \[1-3\-]{2}" $TypeRegion]} {
set ColorFill "MediumOrchid"
} elseif {[regexp "\[1-3\-]{2} / \[1-3\+]{2}" $TypeRegion]} {
set ColorFill "SpringGreen3"
} elseif {[regexp "\[1-3\-]{2} / \[1-3\-]{2}" $TypeRegion]} {
set ColorFill "SpringGreen4"
} else {
set ColorFill "HotPink1"
}
return $ColorFill
}
proc ColorieAlignementSecator {} {
global TableauCouleurEtGroupe Couleurs LongueurTotale Defauts LNDG ListeDesConsensusDuGroupe NombreDeGroupes NomTextSeq
puts [join $LNDG \n]
if {[lindex $LNDG end] ne "grise"} {
return
}
set NombreDeGroupes [llength $LNDG]
if {$NombreDeGroupes == 2} {
set NbrGrp [expr {$NombreDeGroupes - 1}]
} else {
set NbrGrp [expr {$NombreDeGroupes - 1}]
}
if {[ModeI]} {
foreach type [array names Couleurs] {
if {$type eq "Stock"} {continue}
lassign [set Couleurs($type)] f b
set f [CouleurO2Ordali $f]
set b [CouleurO2Ordali $b]
if {[regexp "CoulG" $type]} {set f "black"}
$NomTextSeq tag configure $type -foreground $f -background $b
}
}
set EntreAvecStrSec 0
if {$Defauts(AffSS)} {
CacheStrSecDansAlignement
set EntreAvecStrSec 1
}
unset -nocomplain TableauCouleurEtGroupe
set GrTM "GroupeToutLeMonde"
set ConsensusGlobal [set ListeDesConsensusDuGroupe($GrTM)]
if {[ModeI]} {
AfficheLesPoints
}
for {set i 0} {$i < $LongueurTotale} {incr i} {
set CGlob [string index $ConsensusGlobal $i]
if {"#" ne $CGlob} {
if {[regexp {[A-Y]} $CGlob]} {
ColorieGroupe $i $GrTM "IdenGlob"
}
if {[regexp {[a-y]} $CGlob]} {
ColorieGroupe $i $GrTM "ConsGlob"
}
if {[regexp {[1-5]} $CGlob]} {
ColorieGroupe $i $GrTM "SimiGlob"
}
} else {
set j 1
foreach g [lrange $LNDG 1 end-1] {
if {$g eq "bidon"} {continue}
# if {$g eq "grise"} {continue}
set ConsensusGrp [set ListeDesConsensusDuGroupe($g)]
set CGrp [string index $ConsensusGrp $i]
if {[regexp {[A-Y]} $CGrp]} {
ColorieGroupe $i $g "CoulG$j"
}
incr j
}
}
}
return
}
proc ColorieDescendants {AId Lf col} {
global Abr
set PAD [set Abr($AId,PAD)]
set t [set Abr(Arbre,$AId)]
set Lid [list]
foreach n [$t nodes] {
if {[$t isleaf $n]} {continue}
set Ld [concat $n {*}[$t descendants $n]]
set Ln [list]
foreach d $Ld {
if {[$t isleaf $d]} {
lappend Ln $d
}
}
set lo [lor $Ln $Lf from1]
if {$lo != {}} {
continue
}
foreach d $Ld {
if {[set Li [$PAD find withtag "line-$d"]] != ""} {
lappend Lid {*}$Li
}
}
}
set Lid [lsort -integer -unique $Lid]
foreach i $Lid {
$PAD itemconfig $i -width 2 -fill $col
}
return
}
proc ColorieGroupe {x Grp LeTag} {
global LNDG TableauCouleurEtGroupe
set TableauCouleurEtGroupe($x,$Grp) $LeTag
if {$Grp == "0"} {
set DernierGrp [expr {[llength $LNDG]-2}]
for {set g 1} {$g <= $DernierGrp} {incr g} {
set TableauCouleurEtGroupe($x,$g) $LeTag
}
}
return
}
proc ColorieMol3dSelonFeatures {f} {
global StrucAVoir TabSF ListePDB
global pgl Mol3dCou Obj3dCou Feat3dCou Feat3dCou2
AfficheDansViandox
foreach mold $StrucAVoir {
set nom [DonneIdDeAccessPDB $mold]
set chn [DonneChainDeAccessPDB $mold]
set Mol3dCou $nom
set Obj3dCou "CA${nom}${chn}"
set Feat3dCou $f
UpdateMolObjFeat
}
return
}
proc ColorieNomsSelonGroupes {{quoi show}} {
global TDuGroupeDesSeqs SDG LNOrdali Defauts LNSeqlab NomNomSeq LNDG
if {[set Defauts(AffPhy)]} {
return
}
if {[TypeAli] eq "pasdali"} {
return
}
# seqlab ou pas
if {[QuelMode] eq "seqlab"} {
set Lrefs $LNSeqlab
} else {
set Lrefs $LNOrdali
}
if {$Defauts(AffGrp)} {
set quoi show
} else {
set quoi hide
}
set Lig [list]
foreach g $LNDG {
if {! [regexp {^Group[0-9]+} $g]} {
continue
}
lappend Lig [string range $g 5 end]
}
if {$Lig == {}} {return}
$NomNomSeq configure -state normal
if {$quoi eq "hide"} {
foreach i $Lig {
$NomNomSeq tag delete TCG$i 1.0 end
}
$NomNomSeq configure -state disabled
return
}
if {"0" in $Lig} {set m 1} {set m 0}
foreach icol $Lig {
set g "Group$icol"
set col [CouleurO2Ordali [CouleurDuGroupe [expr {$icol + $m}]]]
$NomNomSeq tag configure TCG$icol -background $col -foreground black
set Lt [list]
foreach n $SDG($g) {
set y [lsearch $Lrefs $n]
incr y
lappend Lt $y.0 "$y.0 lineend"
}
$NomNomSeq tag add TCG$icol {*}$Lt
}
$NomNomSeq tag raise PDB
$NomNomSeq configure -state disabled
return
}
proc ColorieNomsSelonPhylum {{quoi show}} {
global NomNomSeq TDesPhylum LNOrdali Defauts LNSeqlab
if {[set Defauts(AffGrp)]} {
return
}
if {[set Defauts(AffPhy)]} {
set quoi show
} else {
set quoi hide
}
if {[TypeAli] eq "pasdali"} {
return
}
if {! [info exists TDesPhylum]} {
if {$quoi eq "hide"} {
return
}
FaireLire "No Life Domain information available !"
return
}
$NomNomSeq configure -state normal
if {$quoi eq "hide"} {
foreach t {NPEuk NPArk NPPro} {
$NomNomSeq tag delete $t 1.0 end
}
$NomNomSeq configure -state disabled
return
}
# seqlab ou pas
if {[QuelMode] eq "seqlab"} {
set Lrefs $LNSeqlab
} else {
set Lrefs $LNOrdali
}
$NomNomSeq tag configure NPEuk -background $Defauts(BgEukaryota) -foreground $Defauts(FgEukaryota)
$NomNomSeq tag configure NPArk -background $Defauts(BgArchaea) -foreground $Defauts(FgArchaea)
$NomNomSeq tag configure NPPro -background $Defauts(BgBacteria) -foreground $Defauts(FgBacteria)
$NomNomSeq tag configure NPVir -background $Defauts(BgViruses) -foreground $Defauts(FgViruses)
# attention problemen avec Retournetableau
RetourneTableau TDesPhylum New
foreach e {Eukaryota Archaea Bacteria Viruses} t {NPEuk NPArk NPPro NPVir} {
if {! [info exists New($e)]} {
continue
} else {
set Lnoms [set New($e)]
}
set Ltag [list]
foreach n $Lnoms {
if {$n eq ""} {continue}
set i [lsearch $Lrefs $n]
if {$i == -1} {
puts "$n non trouve !"
continue
}
incr i
lappend Ltag $i.0 "$i.0 lineend"
}
$NomNomSeq tag add $t {*}$Ltag
}
$NomNomSeq configure -state disabled
return
}
proc ColorieSSParamsGUI {} {
global PSS ListePDB
toplevel .pss
wm title .pss "Select parameters ..."
wm protocol .pss WM_DELETE_WINDOW KillParLaCroix
wm resizable .pss 0 0
set PSS(Top) .pss
set fp .pss.f
set ListChx [ExtraitListeDeListe $ListePDB 0]
frame $fp
grid $fp -row 0 -column 0 -sticky news
grid columnconfig $fp 0 -weight 1
label $fp.lbl -text "Select Parameters ..." -font "Helvetica 14 bold" -anchor w -justify left
grid $fp.lbl -row 0 -column 0 -sticky w -pady 5 -padx 5
set PSS(MeanRef) "mean"
frame $fp.fpdb
grid $fp.fpdb -row 1 -column 0 -sticky ew -pady 5 -padx 5
label $fp.fpdb.lbl -text "Compute similarities on mean sec. str., or use a reference :" -wraplength 250 -fg blue -anchor w -justify left
radiobutton $fp.fpdb.rmean -text "Mean" -relief flat -anchor w -variable PSS(MeanRef) -value "mean"
radiobutton $fp.fpdb.rref -text "Use reference" -relief flat -anchor w -variable PSS(MeanRef) -value "ref"
tk_optionMenu $fp.fpdb.mpdb PSS(PDBRef) {*}$ListChx
grid $fp.fpdb.lbl -row 0 -column 0 -columnspan 2 -sticky ew
grid $fp.fpdb.rmean -row 1 -column 0 -columnspan 2 -sticky w -padx {30 1}
grid $fp.fpdb.rref -row 2 -column 0 -sticky w -padx {30 1}
grid $fp.fpdb.mpdb -row 2 -column 1 -sticky w
set PSS(Ramp) "color"
frame $fp.framp
grid $fp.framp -row 2 -column 0 -sticky ew -pady 5 -padx 5
label $fp.framp.lbl -text "Select the type of color gradient :" -fg blue -anchor w -justify left
radiobutton $fp.framp.col -text "Color" -relief flat -variable PSS(Ramp) -value "color"
radiobutton $fp.framp.gre -text "Grey" -relief flat -variable PSS(Ramp) -value "grey"
grid $fp.framp.lbl -row 0 -column 0 -sticky w
grid $fp.framp.col -row 1 -column 0 -sticky w -padx {30 1}
grid $fp.framp.gre -row 2 -column 0 -sticky w -padx {30 1}
set PSS(RExtend) "minmax"
frame $fp.fborn
grid $fp.fborn -row 3 -column 0 -sticky ew -pady 5 -padx 5
label $fp.fborn.lbl -text "Select limits of gradient :" -fg blue -anchor w -justify left
radiobutton $fp.fborn.rvmm -text "min to max" -relief flat -variable PSS(RExtend) -value "minmax"
radiobutton $fp.fborn.rvmx -text "0 to 100" -relief flat -variable PSS(RExtend) -value "zerocent"
grid $fp.fborn.lbl -row 0 -column 0 -sticky w
grid $fp.fborn.rvmm -row 1 -column 0 -sticky w -padx {30 1}
grid $fp.fborn.rvmx -row 2 -column 0 -sticky w -padx {30 1}
set PSS(BFactor) 0
checkbutton $fp.chkb -text "assign similarites to B factors" -relief flat -anchor w -justify left -variable PSS(BFactor) -onvalue 1 -offvalue 0
grid $fp.chkb -row 4 -column 0 -sticky ew -pady 5 -padx 5
frame $fp.fbut
grid $fp.fbut -row 5 -column 0 -sticky ew -pady {30 10} -padx 5
button $fp.fbut.bok -text " OK " -bg green1 -command [list FinColorieSSParams ok]
button $fp.fbut.bdis -text "Dismiss" -bg red -command [list FinColorieSSParams dismiss]
grid $fp.fbut.bdis -row 0 -column 0 -sticky w -padx {20 1}
grid $fp.fbut.bok -row 0 -column 1 -sticky e -padx {1 20}
grid columnconfig $fp.fbut 0 -weight 1
set oldGrab [grab current]
grab .pss
FenetreAuCentre .pss
tkwait window .pss
if {$oldGrab ne ""} {
grab $oldGrab
}
return
}
proc ColorieSSSelonConservation {} {
global Sequences ZoneSelect ListePCISS ListePDB LNOrdali TabSF ListeTypesDeFeatures StrucAVoir Defauts PSS
if {[TypeAli] eq "pasdali"} {return}
# pas de pdb
if {! [info exists ListePDB] || $ListePDB == {}} {
FaireLire "No structures in this alignment !"
return
}
# interface graphique pour parametres
set toto [ColorieSSParamsGUI]
if {! [info exists PSS]} {return}
FaireAttendre "Please wait ...\nComputing sequence similarities\naccording to secondary structures ...."
# ATTENTION !
# Tout est fait en position de l'alignement !
# Calcule ListePCISS
if {[set PSS(MeanRef)] eq "mean"} {
CalculeConservationParSS ""
} else {
CalculeConservationParSS $PSS(PDBRef)
}
set Lfeat [list]
set min 99999999.
set max -99999999.
foreach df $ZoneSelect {
lassign $df deb fin
puts "\nd= $deb f= $fin"
if {abs($fin - $deb) < 2} {
continue
}
set lp [set ListePCISS($deb,$fin)]
if {$lp == {} } {
continue
}
set m 0.0
set i 0
foreach elt $lp {
lassign $elt n1 n2 pci d e f
if {$n1 eq $n2} {
continue
}
if {[info exists Vu($n1,$n2)] || [info exists Vu($n2,$n1)]} {
continue
}
set Vu($n1,$n2) 1
set Vu($n2,$n1) 1
#puts "pci $pci"
set m [expr {$m + $pci}]
incr i
}
unset -nocomplain Vu
#puts "i= $i"
if {$i != 0} {
set m [expr {100.*$m/$i}]
set ListePCISS($deb,$fin,mean) $m
if {$m <= $min} {set min $m}
if {$m >= $max} {set max $m}
} else {
array unset ListePCISS "$deb,$fin"
array unset ListePCISS "$deb,$fin,*"
}
update
}
if {! [info exists StrucAVoir]} {
set StrucAVoir [ExtraitListeDeListe $ListePDB 0]
}
if {$PSS(RExtend) eq "minmax"} {
set step [expr {($max-$min)/10.}]
set floor $min
} else {
set step 10.
set min 0.
set max 100.
set floor 0.
}
for {set i 1} {$i <= 10} {incr i} {
set seuilB [expr {$floor+$step*($i-1)}]
set seuilH [expr {$floor+$step*$i}]
set ic [expr {$i-1}]
foreach df $ZoneSelect {
lassign $df deb fin
if {abs($fin - $deb) < 2 || ! [info exists ListePCISS($deb,$fin,mean)]} {
continue
}
set m [set ListePCISS($deb,$fin,mean)]
if {$m >= $seuilB && $m <= $seuilH} {
if {$PSS(Ramp) eq "color"} {
set c [set Defauts(GammeCoul$ic)]
} else {
set c [set Defauts(GammeGris$ic)]
}
#puts [format " %s %6.2f" $c $m]
lappend Lfeat [list "fstart" $deb "fstop" $fin "fcolor" $i "fscore" $m "fnote" $c]
}
}
}
set idn "SS-Cons"
if {$idn ni $ListeTypesDeFeatures} {
lappend ListeTypesDeFeatures $idn
} else {
array unset TabSF "*,SS-Cons"
}
foreach n $StrucAVoir {
set TabSF([BonAccess $n],$idn) $Lfeat
}
if {$PSS(BFactor)} {
foreach n $StrucAVoir {
set mol [DonneIdDeAccessPDB $n]
set chn [DonneChainDeAccessPDB $n]
$mol _SetB all all 0.0 $chn
foreach ft $Lfeat {
DecortiqueUneFeature $ft d f c s note
set deb [DonnePosGS $n $d]
set fin [DonnePosGS $n $f]
$mol _SetB $deb $fin $s $chn
}
}
}
# Log les resultats
AuLog @separator
AuLog @begin table
AuLog @title Mean %Identity per secondary structure
if {$PSS(MeanRef) ne "mean"} {
set pdb $PSS(PDBRef)
set nom [DonneIdDeAccessPDB $pdb]
set meth "Method : using $PSS(PDBRef) as reference for sec. str."
set head [list "Abs Range" "Rel Range" "%Identity" "Color"]
set type [list T T R T ]
} else {
set meth "Method : using mean sec. str.\n"
set head [list "Ranges" "%Identity" "Color"]
set type [list T R T]
}
AuLog @text "$meth"
AuLog @begin tabular
AuLog @titlecols {*}$head
AuLog @typecols {*}$type
foreach elt $Lfeat {
DecortiqueUneFeature $elt d f c s n
set col [CouleurPlusProcheDeTkCol $n]
if {$PSS(MeanRef) eq "ref"} {
set dr [DonnePosGS $pdb $d]
set fr [DonnePosGS $pdb $f]
}
if {$PSS(MeanRef) ne "mean"} {
AuLog @row "$d $f" "$dr $fr" $s $col
} else {
AuLog @row "$d $f" $s $col
}
}
AuLog @end
AuLog @end
# Lance la visualisation
ColorieMol3dSelonFeatures "SS-Cons"
FaireLaSuite
unset PSS
unset ListePCISS
return
}
proc ColorieScore {} {
global ListeScore
global NomTextSeq
global LNOrdali
ColorieSelonFeature "Clear"
DefinitionGroupes nogroups
update idletasks
set N 10
set Nseqs [llength $LNOrdali]
if {$Nseqs < 10} {return}
if {! [ModeI]} {return}
$NomTextSeq configure -state normal
set coul [list red magenta brown orange yellow dimgray green cyan forestgreen blue]
foreach c $coul {
$NomTextSeq tag configure SCORE$c -background $c -foreground black
}
set Ny 1
if {$Nseqs > 20} {
set Ny 2
}
# norm dis nVp mcos dist Ranganatan
set f [open "resul.dat" w]
foreach l $ListeScore {
puts $f $l
}
close $f
foreach n {0 1 2 3 4 5} {
set liste [ExtraitListeDeListe $ListeScore $n]
set Lt [lsort -unique -increasing -real $liste]
set i 0
if {[lindex $Lt $i] == -999.} {
incr i
}
set min [lindex $Lt $i]
set max [lindex $Lt end]
set step [expr {($max - $min) / $N}]
set j 0
foreach e $liste {
if {$e == -999.0} {
incr j
continue
}
foreach i {0 1 2 3 4 5 6 7 8 9} c $coul {
set d [expr {$min + $i * $step}]
set f [expr {$d + $step}]
if {$e >= $d && $e < $f} {
set p [expr {$n * $Ny + 1}]
$NomTextSeq tag add SCORE$c $p.$j
break
}
}
incr j
}
}
update idletasks
# $NomTextSeq configure -state disabled
return
}
proc ColorieSelonFeature {ft {w ""}} {
global FrmBtnFea
if {$ft ne "Clear"} {
if {$w eq ""} {set w [BtnDeLaFeature $ft]}
set Etat [ChangeEtatBouton $w]
LesFeaturesUtilisees $ft $Etat
}
AppliqueFeature $ft
return
}
proc ColorieStructureSelonFeature {ft MolId} {
global TabSF ListePDB Sequences
set chnok [DonneChainDeAccessPDB $MolId]
set mol [DonneIdDeAccessPDB $MolId]
global PDB_[set mol]_Sequence
set MolId [BonAccess $MolId]
set AColorier {}
foreach f [set TabSF($MolId,$ft)] {
DecortiqueUneFeature $f dg fg col score note
set dg [expr {$dg-1}]
if {$col eq "black"} {set col "white"}
for {set i $dg} {$i < $fg} {incr i} {
set NroRes [CorrespondanceGenPDB $MolId $i]
lappend AColorier [list $col ${chnok}$NroRes]
}
}
set AColorier [lunique [lsort -index 0 $AColorier]]
return $AColorier
}
proc ColorieVrpSelon {w ft} {
global TabSF Vrp
ResetColoriage
if {$ft eq "None"} {return}
if {$ft eq "VientDuCombo"} {set ft $Vrp(UseFeat)}
set n [set Vrp(seqSelName)]
if {! [info exists TabSF($n,$ft)]} {return}
set c $Vrp(WCanvas)
set t $Vrp(WText)
foreach f [set TabSF($n,$ft)] {
DecortiqueUneFeature $f dg fg col score note
set db [DonnePosGS $n $dg]
set fn [DonnePosGS $n $fg]
for {set i $db} {$i < $fn} {incr i} {
set line [$c find withtag "l${Vrp(VId)}_$i"]
$c itemconfigure $line -fill $col
set dot [$c find withtag "p${Vrp(VId)}_$i"]
$c itemconfigure $dot -fill $col
}
}
return
}
proc CombienAUntel {Untel} {
global RepertoireDuGenome
set n 0
set l 0
foreach rapport [ glob -nocomplain "$RepertoireDuGenome/rapportsaccess/*"] {
set user [UserDeRapport $rapport]
set loc [LoctypeDansRapport $rapport]
if {$user==$Untel} {incr n}
if {$loc!="NoLocalization" && $user==$Untel} {incr l}
}
return "$Untel: $n, loc:$l"
}
proc CombienDeClustersVides {version} {
#version: avr ou mai
set RepertoireGeneral "/genomics/link/SpliRetMouse/FichiersInitial/PROT_VARIANTES_61_$version"
if {$version=="avr"} {set RepertoireGeneral "/genomics/link/SpliRetMouse/FichiersInitial/Avril2011/PROT_VARIANTES_61_$version"}
set RepertoireSourisTfactor "$RepertoireGeneral/SOURIS_Tfactor_61_$version"
set RepertoireSourisOthers "$RepertoireGeneral/SOURIS_others_61_$version"
set RepertoireSourisNOALT "$RepertoireGeneral/SOURIS_NO_ALT_61_$version"
set RepertoireRatTfactor "$RepertoireGeneral/RAT_Tfactor_61_$version"
set RepertoireRatOthers "$RepertoireGeneral/RAT_others_61_$version"
set RepertoireRatNOALT "$RepertoireGeneral/RAT_NO_ALT_61_$version"
set LesRepertoires [list $RepertoireSourisTfactor $RepertoireSourisOthers $RepertoireSourisNOALT $RepertoireRatTfactor $RepertoireRatOthers $RepertoireRatNOALT]
foreach Repertoire $LesRepertoires {
set i 0; set j 0
foreach FileST [glob -nocomplain "$Repertoire/*"] {
incr j
set cluster [lindex [split [file tail $FileST] "."] 0]
set taille [file size $FileST]
if {$taille == 0} {incr i}
}
Espionne "$Repertoire $i vides sur $j clusters"
}
}
proc CombienDeProches {} {
set plusgrand 0; set pluspetit 200
foreach FileProche [glob -nocomplain "[RepertoireDuGenome]/ProchesQuery85/*"] {
set i 0
foreach Ligne [LesLignesDuFichier $FileProche] {incr i}
if {$i>$plusgrand} {set plusgrand $i; set Fileplusgrand $FileProche}
if {$i<$pluspetit} {set pluspetit $i; set Filepluspetit $FileProche}
Espionne "$FileProche $i"
}
Espionne "plusgrand $Fileplusgrand $plusgrand"
Espionne "pluspetit $Filepluspetit $pluspetit"
}
proc CombienDeRaDsRet1324 {} {
set A 0
set Fichier "/genomics/link/Ret1324/fiches/bornesdespabs"
set LesLignes [LesLignesDuFichier $Fichier]
foreach Ligne $LesLignes {
incr A
}
Espionne "$A = nb de RA ds Ret1324"
}
proc CombienTouchentChroContig {Chro {Contig ""}} {
set LesTouches [QuiToucheChroContig $Chro $Contig]
return [llength $LesTouches]
}
proc CombineLesFragments {Nom {LesBornesDesFragments ""}} {
JeMeSignale
set FichierNucTFA "[RepertoireDuGenome]/nuctfa/$Nom"
set ToutNuc [QueLaSequenceDuFichierTFA $FichierNucTFA]
set LesFragments {}
set FragmentsDeMutation 0
if {$LesBornesDesFragments==""} {
if { ! [OuiOuNon "Do You want to see the mutation fragments ?"]} { return "" }
}
if {$LesBornesDesFragments=="MutationFragments"} {
set FragmentsDeMutation 1
set Entete [EnteteDuFichierTFA $FichierNucTFA]
if { ! [regexp { muted (.+) of } $Entete Match Codes]} {
FaireLire "Sorry I can't find 'muted code1 code2 code3 of' in $Entete"
return ""
}
set LesCoOrdonnes [list 1]
foreach Code [split $Codes " "] {
if { ! [regexp -nocase {[a-z]} $Code]} { continue }
regsub {[0-9]+} [string toupper $Code] " & " Coco
scan $Coco "%s %d %s" AncienP PosAncienP NouveauP
set LongAncienP [string length $AncienP]
lappend LesCoOrdonnes $PosAncienP
}
lappend LesCoOrdonnes [expr [string length $ToutNuc]/3]
set LesCoOrdonnes [lsort -increasing -integer $LesCoOrdonnes]
set LesBornesDesFragments $LesCoOrdonnes
}
set Frag "A"
set LesBornesDesFragmentsOK {}
foreach X $LesBornesDesFragments {
if {[regexp -nocase "end" $X]} { set X [expr ([string length $ToutNuc]+4)/3] }
if { ! [regexp {[0-9]+} $X Bon]} { continue }
lappend LesBornesDesFragmentsOK $Bon
}
set LesBornesDesFragments $LesBornesDesFragmentsOK
foreach DP [lrange $LesBornesDesFragments 0 end-1] FP [lrange $LesBornesDesFragments 1 end] {
incr FP -1
set LesSequencesNP [IsoleUnDomaine $Nom $DP $FP "RetournerSeqNucAndSeqPro"]
ScanLaListe $LesSequencesNP SeqN SeqP
set PepSort [PeptideSort $SeqP]
if {[info exists TPep]} { unset TPep }
DecortiquePeptideSort $PepSort "" TPep
Espionne [array get TPep]
set Residues [set TPep(Residues)]
set nBases [expr $Residues*3]
set Molecularweight [set TPep(Molecularweight)]
set Charged [set TPep(Charged)]
set Isoelectricpoint [set TPep(Isoelectricpoint)]
set SeqCompressee ""
append SeqCompressee [string range $SeqP 0 5]
append SeqCompressee "..."
append SeqCompressee [string range $SeqP end-5 end]
lappend LesFragments [format "%s %6s %5d %5d %4d %4d %3d %10.2f %5.2f %s" $Nom $Frag $DP $FP $Residues $nBases $Charged $Molecularweight $Isoelectricpoint $SeqCompressee]
set Frag [NextALPHA $Frag]
}
if {[llength $LesFragments]==1} {
set Choix [AfficheVariable [join $LesFragments "\n"] "AvecRetour" PleaseSelectContigousLines]
if {$Choix=="" && [OuiOuNon "Do I cancel CombineLesFragments ?"]} { return "" }
return $LesFragments
}
set Choix ""
FaireLire "You can now create several contigous fragments"
set TousLesFragments {}
if {$FragmentsDeMutation} {
set LesFragmentsDeMutation [TousLesSegmentsConsecutifs $LesFragments]
}
set Ever 1
while $Ever {
if {$FragmentsDeMutation} {
if {$LesFragmentsDeMutation=={}} {
set OK [AfficheVariable [join $TousLesFragments "\n"] "AvecRetour" PleaseValidate]
break
} else {
set Choix [lindex $LesFragmentsDeMutation 0]
set LesFragmentsDeMutation [lrange $LesFragmentsDeMutation 1 end]
}
} else {
set Choix [AfficheVariable [join $LesFragments "\n"] "AvecRetour" PleaseSelectContigousLines]
if {$Choix=="" && [OuiOuNon "Did You choose enough fragments\n or maybe You want to reset selection"]} {
set Tout [join $TousLesFragments "\n"]
set Selection [AfficheVariable $Tout "AvecRetour" PleaseValidate]
if {$Selection==""} {
if {[OuiOuNon "Do You want to cancel CombineFragments ?"]} { return "" }
if {[OuiOuNon "Do You really want to empty all selection You did ?"]} {
set TousLesFragments {}
}
continue
}
if {$Selection==$Tout} { break }
if {[OuiOuNon "Do You really want to keep only following selection\n$Selection"]} {
set TousLesFragments [split $Selection "\n"]
break
}
continue
}
}
Espionne $Choix
set LeChoix [split $Choix "\n"]
set DP ""
set NomDuFragment ""
foreach Fragment $LeChoix {
scan $Fragment "%s %s %d %d" NomLu FragLu DPlu FPlu
if {$DP==""} { set DP $DPlu }
set FP $FPlu
append NomDuFragment $FragLu
}
set LesSequencesNP [IsoleUnDomaine $Nom $DP $FP "RetournerSeqNucAndSeqPro"]
ScanLaListe $LesSequencesNP SeqN SeqP
set PepSort [PeptideSort $SeqP]
if {[info exists TPep]} { unset TPep }
DecortiquePeptideSort $PepSort "" TPep
set Residues [set TPep(Residues)]
set nBases [expr $Residues*3]
set Molecularweight [set TPep(Molecularweight)]
set Charged [set TPep(Charged)]
set Isoelectricpoint [set TPep(Isoelectricpoint)]
set SeqCompressee ""
append SeqCompressee [string range $SeqP 0 5]
append SeqCompressee "..."
append SeqCompressee [string range $SeqP end-5 end]
lappend TousLesFragments [format "%s %6s %5d %5d %4d %4d %3d %10.2f %5.2f %s" $Nom $NomDuFragment $DP $FP $Residues $nBases $Charged $Molecularweight $Isoelectricpoint $SeqCompressee]
# AfficheVariable [join $TousLesFragments "\n"] "" TheFragmentsYouSelect]
set Choix ""
}
return $TousLesFragments
}
proc CombleSSParCoil {{lss ""} molid chn} {
set LesRes [$molid _resnumber -chain $chn -polymer]
set 1ResPDB [lindex $LesRes 0]
set i1ResPDB 0
set DResPDB [lindex $LesRes end]
set iDResPDB [expr {[llength $LesRes]-1}]
set df {}
foreach s $lss {
lassign $s Elt a z e Nm1 r Nm2 t q
lappend df [list $Nm1 $Nm2]
}
if {$df == {}} {
lappend df "Coil xxx xxx $chn $1ResPDB xxx $DResPDB xxx"
return $df
}
set i1ResSS [lsearch $LesRes [lindex [lindex $df 0] 0]]
if {$i1ResSS > 0} {
lassign [PreviousResDuPdb [lindex [lindex $df 0] 0] $chn $molid] finc fini
lappend lss "Coil xxx xxx $chn $1ResPDB xxx $finc"
}
lassign [NextResDuPdb [lindex [lindex $df 0] 1] $chn $molid] debc debi
foreach cpl [lrange $df 1 end] {
lassign [PreviousResDuPdb [lindex $cpl 0] $chn $molid] finc fini
if {$fini-$debi >= 0} {
lappend lss "Coil xxx xxx $chn $debc xxx $finc xxx"
}
lassign [NextResDuPdb [lindex $cpl 1] $chn $molid] debc debi
}
if {$debc ne ""} {
if {$iDResPDB - $debc >= 0} {
lappend lss "Coil xxx xxx $chn $debc xxx $DResPDB xxx"
}
}
# return [lsort -integer -index 4 $lss]
return $lss
}
proc CommandeOligos {LesFichiersOligos {NomPresumeDuFichierCommande ""}} {
Wup "LesFichiersOligos can be a list. "
OligoEnStock "Reload"
StockeCetOligo "Reset" ""
if {$NomPresumeDuFichierCommande=="StockeOnly"} { set StockeOnly 1 } else { set StockeOnly 0 }
if {$NomPresumeDuFichierCommande=="" || $NomPresumeDuFichierCommande=="StockeOnly" || [regexp -nocase "^usethisname_" $NomPresumeDuFichierCommande] } {
if {[regexp -nocase "^usethisname_" $NomPresumeDuFichierCommande]} {
regsub "^usethisname_" $NomPresumeDuFichierCommande "" NomPresumeDuFichierCommande
regsub {\.txt} $NomPresumeDuFichierCommande "" NomPresumeDuFichierCommande
} else {
set NomPresumeDuFichierCommande [lindex $LesFichiersOligos 0]
}
regsub {\.(nuc|prot|)tfa$} $NomPresumeDuFichierCommande "" NomPresumeDuFichierCommande
append NomPresumeDuFichierCommande "_commande[Date Nice_H].txt"
}
set LesTFAs {}
set D4 "50N"
set D7 "DSL"
foreach FichierOligos $LesFichiersOligos {
foreach Access [LaSequenceDuTFAs $FichierOligos "LaListeDesAccess"] {
set TFA [LaSequenceDuTFAs $FichierOligos $Access]
set Seq [QueLaSequenceDuTexteTFA $TFA]
if {[info exists SeqDuAccess($Access)]} {
FaireLire "DejaVu $Access !"
continue
}
#rR Attention BrocOli
set TfaBrocOli [BrocOli $TFA]
if {[WithBrocOli] && $TfaBrocOli!=""} {
set AccBroc [EnteteDuTexteTFA $TfaBrocOli "access"]
Espionne "AccBroc $AccBroc"
lappend TFADuAccessNonBrocOli($AccBroc) $TFA
lappend SeqDuAccessNonBrocOli($AccBroc) $Seq
set TFA $TfaBrocOli
set Seq [QueLaSequenceDuTexteTFA $TFA]
}
#rR Attention BrocOli
set TFADuAccess($Access) $TFA
set SeqDuAccess($Access) $Seq
lappend LesAccessDeSeq($Seq) $Access
lappend LesAccess $Access
}
}
set LeTFADeLaCommande {}
set LaCommande {}
set EnteteDeLaCommande ""
set Fournisseur "Inconnu"
FaireLire "Please select the Scale in Micro Mol to order at Sigma (default is 0.05)"
set SigmaScaleMicroMol [ChoixParmi [list 0.05 0.025 0.05 0.2, 1. 10. 15. "OtherValue"]]
if {$SigmaScaleMicroMol=="OtherValue"} { set SigmaScaleMicroMol [Enter 0.05] }
FaireLire "Please select the Purification to order at Sigma (default is RP1)"
set SigmaPurification [ChoixParmi [list "RP1" "DST" "PAGE" "HPLC" "OtherValue"]]
if {$SigmaPurification=="OtherValue"} { set SigmaPurification [Enter "RP1"] }
set SigmaComment ""
set ListeSigma {}
if { ! $StockeOnly} {
set EnteteDeLaCommande {}
lappend EnteteDeLaCommande " SYNTHESE D'OLIGONUCLEOTIDES - IGBMC"
lappend EnteteDeLaCommande ""
lappend EnteteDeLaCommande " Date de commande : [Date Nice]"
lappend EnteteDeLaCommande ""
lappend EnteteDeLaCommande " Equipe : "
lappend EnteteDeLaCommande " Nom du demandeur : "
lappend EnteteDeLaCommande " Telephone : "
lappend EnteteDeLaCommande ""
lappend EnteteDeLaCommande ""
lappend EnteteDeLaCommande " Sequence 5' -> 3'"
lappend EnteteDeLaCommande ""
set EnteteDeLaCommande [join $EnteteDeLaCommande "\n"]
set Fournisseur "IGBMC"
set NumeroPrimer 1
# if { 0 && ! [OuiOuNon "Do I start Primer numbering with 1 ?"]} {
# set NumeroPrimer [Entre 1]
# }
}
set nPrimer 0
set TotalBases 0
set TotalBasesSansAttB 0
set nAttB1 0
set nAttB2 0
set CompteAttB ""
set LesFichiersOligosStockes {}
set LesNonCreesCarEnStock {}
foreach Access $LesAccess {
set Seq [set SeqDuAccess($Access)]
if {[info exists DejaVu($Seq)]} { continue }
set DejaVu($Seq) 1
if {[set OliEnSto [OligoEnStock $Seq]]!=""} {
set LesAutres [join [set LesAccessDeSeq($Seq)] "\n"]
if {[OuiOuNon "I found an existing oligo $OliEnSto\nfor $LesAutres\n\nDo You use it ?"]} {
foreach A $LesAutres {
set WarningBrocOli ""
if {[Oli $OliEnSto "IsBrocOli"]} {
set GenericOligo [Oli $OliEnSto "ItsGenericOligo"]
set WarningBrocOli " BrocOli with $GenericOligo"
}
lappend LesNonCreesCarEnStock "$A please use $OliEnSto$WarningBrocOli"
}
continue
}
}
set LesEntetes {}
set AppendTexteBrocOli {}
set LesB {}
set LesS {}
foreach Autre [set LesAccessDeSeq($Seq)] {
set TFA [set TFADuAccess($Autre)]
set Entete [EnteteDuTexteTFA $TFA]
Espionne "$Autre pour seq =$Seq="
if {[regexp { BrocOli.+$} $Entete TexteBrocOli]} {
if {$AppendTexteBrocOli!="" && $AppendTexteBrocOli!=$TexteBrocOli} {
FaireLire "Different BrocOli for the same sequence \n$Seq\n$AppendTexteBrocOli\n$TexteBrocOli"
}
scan $$TexteBrocOli "%s %s %s %s %s %s" A b w B r S
lappend LesB $B ; set LesB [ListeSansDoublon $LesB]
lappend LesS $S ; set LesS [ListeSansDoublon $LesS]
regsub "$TexteBrocOli" $Entete "" Entete
set AppendTexteBrocOli " BrocOli with [join $LesB "+"] replaces [join $LesS "+"]"
}
regsub -all ">" $Entete "" Entete
lappend LesEntetes $Entete
}
set LesEntetes [ListeSansDoublon $LesEntetes]
set Entete [join $LesEntetes "+"]
if {$AppendTexteBrocOli!=""} { append Entete $AppendTexteBrocOli }
incr nPrimer
incr TotalBases [string length $Seq]
incr TotalBasesSansAttB [string length $Seq]
set PStocke ""
set EntetePourFiStockOl [FormatageEntete $Entete PourOligo "Pxxxx"]
set FichierOligoStocke [StockeCetOligo $EntetePourFiStockOl $Seq "AutoNumbering"]
lappend LesFichiersOligosStockes $FichierOligoStocke
set PStocke [file tail $FichierOligoStocke]
regsub ".tfa$" $PStocke "" PStocke
if {[WithBrocOli]} {
set EnteteBroc [EnteteDuFichierTFA $FichierOligoStocke]
scan $EnteteBroc "%s %s %s %s %s %s %s %s" P X o w s S f A
if {$X=="5'"} { set AccBroc "${S}_$A" } else { set AccBroc "${A}_$S" }
if {[info exists TFADuAccessNonBrocOli($AccBroc)]} {
foreach TFANB $TFADuAccessNonBrocOli($AccBroc) SeqNB $SeqDuAccessNonBrocOli($AccBroc) B $LesB S $LesS {
regsub "BrocOli with .*" $EnteteBroc "BrocOli with $B replaces $S" OneEnteteBroc
Espionne "TFANB de $AccBroc $TFANB"
set EntetePourFiStockOlNB [FormatageEntete $OneEnteteBroc "PourOligoNonBrocOli" "Pxxxx"]
append EntetePourFiStockOlNB " seeBrocken $PStocke"
set FichierOligoStockeNB [StockeCetOligo $EntetePourFiStockOlNB $SeqNB "AutoNumbering"]
lappend LesFichiersOligosStockes $FichierOligoStockeNB
set PStockeNB [file tail $FichierOligoStockeNB]
regsub ".tfa$" $PStockeNB "" PStockeNB
set Monbroc [ContenuDuFichier $FichierOligoStocke]
if {[regexp "seeFull AfterMe" $Monbroc]} {
regsub "seeFull AfterMe" $Monbroc "seeFull $PStockeNB" MonBonBroc
Sauve $MonBonBroc dans $FichierOligoStocke
} else {
if {[regexp {seeFull ([P0-9\+]+)} $Monbroc Match]} {
regsub -all {\+} $Match "\\+" MatchX
regsub $MatchX $Monbroc "$Match+$PStockeNB" MonBonBroc
Sauve $MonBonBroc dans $FichierOligoStocke
}
}
}
}
}
if {$StockeOnly} { continue }
set TFA [SequenceFormatTFA $Seq ">$Entete" "brut"]
lappend LeTFADeLaCommande $TFA
set PduTFA($TFA) $PStocke
set EnteteCourte [FormatageEntete $Entete PourCommande $PStocke]
scan $EnteteCourte "%s %s" P SigSuj
set LS [list $P:$SigSuj $Seq $SigmaScaleMicroMol $SigmaPurification $SigmaComment]
lappend ListeSigma [join $LS ","]
if {$Fournisseur=="Invitrogen" || $Fournisseur=="IGBMC"} {
if {$Fournisseur=="IGBMC"} {
lappend LaCommande [string repeat "-" 66]
lappend LaCommande "$NumeroPrimer $EnteteCourte"
lappend LaCommande ""
set LesTriplets {}
set nTriplets 0
set LesBases [split $Seq ""]
set LesSuivantes [lrange [concat $LesBases [list X X X X X]] 3 end]
set FiveP " 5'"
foreach {a b c} $LesBases {d e f} $LesSuivantes {
lappend LesTriplets "$a$b$c"
set ThatsAllFolks [string equal "$d$e$f" "XXX"]
if {[incr nTriplets]==15 || $ThatsAllFolks} {
set nTriplets 0
set LigneDeTriplets [string toupper [join $LesTriplets " "]]
if {$ThatsAllFolks} {
lappend LaCommande " $FiveP $LigneDeTriplets 3'"
break
} else {
lappend LaCommande " $FiveP $LigneDeTriplets"
}
set LesTriplets {}
set FiveP " "
}
}
lappend LaCommande ""
} else {
lappend LaCommande "*"
lappend LaCommande "D1: $EnteteCourte"
lappend LaCommande "D2: $NumeroPrimer"
set SeqACommander [string toupper $Seq]
set LigneD5 ""
if {[CaCommenceParAttB $SeqACommander] && [NePasMettreAttB]} {
set LongOriginale [string length $SeqACommander]
set SeqACommander [RetireAttB $SeqACommander]
set LongCommandee [string length $SeqACommander]
set LongEconomie [expr $LongOriginale-$LongCommandee]
set TotalBasesSansAttB [expr $TotalBasesSansAttB-$LongEconomie]
if {$LongEconomie>0 && [regexp "AttB1" $Entete]} { set LigneD5 "D5: GWF" ; incr nAttB1 }
if {$LongEconomie>0 && [regexp "AttB2" $Entete]} { set LigneD5 "D5: GWR" ; incr nAttB2 }
set CompteAttB "= $TotalBasesSansAttB without AttB + $nAttB1 AttB1 + $nAttB2 AttB2"
}
lappend LaCommande "D3: $SeqACommander"
lappend LaCommande "D4: $D4"
if {$LigneD5!=""} { lappend LaCommande $LigneD5 }
lappend LaCommande "D7: $D7"
}
} else {
lappend LaCommande "\n>$Entete"
lappend LaCommande $Seq
}
incr NumeroPrimer
continue
}
if {$StockeOnly} { return $LesFichiersOligosStockes }
if {$Fournisseur=="IGBMC"} {
lappend LaCommande ""
lappend LaCommande "------------------------ FIN DE COMMANDE -------------------------"
} else {
lappend LaCommande " + "
}
lappend LaCommande "Total bases $TotalBases $CompteAttB for $nPrimer primers"
lappend LaCommande "End of text automatically created by Gscope (33)388653305"
set LEnteteDeLaCommande [list $EnteteDeLaCommande "HZ: $nPrimer" ""]
set LaCommande [concat $LEnteteDeLaCommande $LaCommande]
set Commande ""
while {$Commande==""} {
set Commande [join $LaCommande "\n"]
set Commande [EntreTexte $Commande]
if {$Commande==""} {
if {[OuiOuNon "Do You want to cancel CommandeOligos ?"]} {
if {[OuiOuNon "Sorry, but I already created the files\n [join $LesFichiersOligosStockes "\n"]\n\nCan I delete them ?"]} {
foreach FOS $LesFichiersOligosStockes {
if {[file exists $FOS]} { file delete $FOS }
}
}
return ""
} else {
continue
}
}
}
set WebOrder [OuiOuNon "Do I order these oligos through the [UrlCommandeOligo] Webserver ?"]
while {1} {
FaireLire "Please, tell me name for the TEXT file for oligos_commande (and oligos_weborder)"
set FichierTXTCommandeOligos $NomPresumeDuFichierCommande
set FichierTXTCommandeOligos [FichierPourSaveAs $FichierTXTCommandeOligos]
if {$FichierTXTCommandeOligos==""} {
if {[OuiOuNon "Ok to continue WITHOUT saving the text of the oligos_commande ?"]} { break } else { continue }
}
regsub "_commande" $FichierTXTCommandeOligos "_weborder" FichierTXTWebOrderOligos
regsub "_commande" $FichierTXTCommandeOligos "_sigma" FichierTXTSigmaOligos
regsub ".txt" $FichierTXTSigmaOligos "" FichierTXTSigmaOligos
append FichierTXTSigmaOligos ".csv"
append Commande "\n $FichierTXTCommandeOligos"
append Commande "\n $FichierTXTWebOrderOligos"
append Commande "\n $FichierTXTSigmaOligos"
set TFADeLaCommande [join $LeTFADeLaCommande "\n"]
set FichierTXTCommandeOligos [Sauve $Commande dans $FichierTXTCommandeOligos]
set FichierTXTWebOrderOligos [Sauve $TFADeLaCommande dans $FichierTXTWebOrderOligos]
set FichierTXTSigmaOligos [SauveLesLignes $ListeSigma dans $FichierTXTSigmaOligos]
break
}
if {$LesNonCreesCarEnStock!={}} {
FaireLire "Some oligos where not created because they exist in oligobase\n Please browse for a file name to store the list"
regsub "_commande" $FichierTXTCommandeOligos "_existing" FichierDesNonCreesCarEnStock
regsub ".txt$" $FichierDesNonCreesCarEnStock "" FichierDesNonCreesCarEnStock
append FichierDesNonCreesCarEnStock ".list"
set FichierDesNonCreesCarEnStock [FichierPourSaveAs $FichierDesNonCreesCarEnStock]
if {$FichierDesNonCreesCarEnStock!=""} {
SauveLesLignes $LesNonCreesCarEnStock dans $FichierDesNonCreesCarEnStock
}
}
if {$FichierTXTCommandeOligos!=""} {
while {$WebOrder} {
foreach Access [LaSequenceDuTFAs $FichierTXTWebOrderOligos "LaListeDesAccess"] {
set TFA [LaSequenceDuTFAs $FichierTXTWebOrderOligos $Access]
set Nom $Access
set Not [EnteteDuTexteTFA $TFA]
set Seq [QueLaSequenceDuTexteTFA $TFA]
if {[info exists PduTFA($TFA)]} { set Nom $PduTFA($TFA) }
lappend LesNom $Nom
lappend LesNot $Not
lappend LesSeq $Seq
}
set Retour [WebOrder $LesSeq $LesNom $LesNot]
if {$Retour!=""} { break }
if {[OuiOuNon "Do I really cancel WebOrder ?"]} { break }
}
if {[OuiOuNon "Do I print the order ?" 0]} {
ImprimeLeFichier $FichierTXTCommandeOligos "renoir -l "
}
if {[OuiOuNon "Do I mail the order ?" 0]} {
MailAuxDestinataires $FichierTXTCommandeOligos "" "Commande oligos"
}
}
return $FichierTXTCommandeOligos
}
proc CommandesExecPossibles {} {
global Commandes CommandesDefaut
set Commandes(integral) "batch-integral.tclsh "
set Commandes(dbclustal) "batch-dbclustal.tclsh "
array set CommandesDefaut [array get Commandes]
}
proc CommandesVideoAxeX {Fin} {
foreach I [NombresEntre 1 $Fin] {
lappend LesLignes "turn x,1"
lappend LesLignes ";png $I.png;"
}
SauveLesLignes $LesLignes dans "CommandesVideo.txt"
exit
}
proc CommandesVideoAxeY {Fin} {
foreach I [NombresEntre 1 $Fin] {
lappend LesLignes "turn y,$I"
lappend LesLignes "ray"
lappend LesLignes "png $I"
}
SauveLesLignes $LesLignes dans "CommandesVideo.txt"
exit
}
proc CommenceIci {CommenceIci} {
if {$CommenceIci=="AskWhereToBegin"} {
if {[OuiOuNon "Do you want to begin with a given [Prefixe] ?"]} {
set CommenceIci [Entre [PreFixe]]
}
}
return $CommenceIci
}
proc CompCluster {ficRef ficSel} {
set fRef [file tail $ficRef]
set fSel [file tail $ficSel]
set NewFicRef "/usr/tmp/New$fRef"
set NewFicSel "/usr/tmp/New$fSel"
OteSqDivergentes $ficRef $ficSel
set nbSqId [OteSqDivergentes $ficSel $ficRef]
set lstat {}
set stat [eval exec "aRandIndex $NewFicRef $NewFicSel"]
set stat [string range $stat 24 end]
lappend lstat $stat
lappend lstat $nbSqId
return $lstat
}
proc CompTabGlob {pab liste} {
foreach n {"IdenGlob" "ConsGlob" "SimiGlob"} {
set l${n}R {}
foreach e [set liste] {
set pos [CorrespondanceGenSeqOrd $pab $e]
lappend l${n}R $pos
}
lappend lTotal [set l${n}R]
}
return $lTotal
}
proc ComparaisonAvecToutesLesEtudes_Gretta {} {
set Rep "[RepertoireDuGenome]/Comparaisons/RetScopemRNAMm"
set BDB "$Rep/AutresEtudesAll.tfas"
set FileEtudes "$Rep/AutresEtudesAll.txt"
set FileOUT "$Rep/CompAvecAutresEtudesAll.txt"
set LesID {}
set F [open $FileEtudes]
while {[gets $F Ligne]>=0} {
set Ligne [string trim $Ligne]
if {$Ligne == "" || [regexp {^\#} $Ligne]} {continue}
set LaLigne [split $Ligne "\t"]
set ID [lindex $Ligne 0]
set TabID($ID,LesNoms) {}
set TabID($ID,Ligne) [join [lrange $LaLigne 0 6] "\t"]
lappend LesID $ID
}
close $F
set LesNoms [AskClust_Gretta LesNoms]
set LesNoms [list PG0499]
foreach Nom $LesNoms {
Espionne $Nom
set FileTFA "$Rep/$Nom"
set FileBlast "$FileTFA.blastetudes"
if {![file exists $FileTFA]} {continue}
AskBlast unset
if {1} {
PipeBlast $FileTFA $BDB $FileBlast N 20 0.01 T 4
FichierBlastReduit $FileBlast $FileBlast IdentityWithoutFilter 0.90
FichierBlastReduit $FileBlast $FileBlast TailleAlignementMin 100
}
set NbSubjectDansBlast [AskBlast $FileBlast NbSubject ]
if {$NbSubjectDansBlast < 1} {
#Espionne "$Nom -> none"
continue
}
for {set i 1} {$i <= $NbSubjectDansBlast} {incr i} {
set ID [AskBlast $FileBlast Subject $i]
regsub {\$[0-9]+$} $ID "" ID
if {![info exists TabID($ID,LesNoms)]} {
Espionne "$ID unknown"
continue
}
Espionne "$Nom -> $ID"
lappend TabID($ID,LesNoms) $Nom
}
}
set LeTexte {}
foreach ID $LesID {
set Ligne [set TabID($ID,Ligne)]
set LesNomsDeLID {}
foreach Nom [lsort -unique [set TabID($ID,LesNoms)]] {
###DefinitionMoyenne#####
set MeanDef [InterrogeDefinitionsConsensus $Nom Definition]
set LesGN {}
foreach GeneName [InterrogeGeneName $Nom LesGeneNames] {
if {$GeneName == ""} {continue}
set n [InterrogeGeneName $Nom GeneName $GeneName n]
lappend LesGN [list "$GeneName ($n)" $n]
}
#seulement les 3 premiers GN
set LesGeneName {}
set i 0
foreach LeGN [lsort -index 1 -decreasing -integer $LesGN] {
incr i
#if {$i > 3} {break}
lappend LesGeneName [lindex $LeGN 0]
}
set GN [join $LesGeneName ";"]
foreach Clust [AskClust_Gretta Nom $Nom LesClusters] {
lappend LeTexte "$Ligne\t$Nom\t$Clust\t$MeanDef\t$GN"
}
}
}
Sauve [join $LeTexte "\n"] dans $FileOUT
}
proc Comparaison_clusters {LesClusters} {
set FichierGO "[RepertoireDuGenome]/fiches/GeneOntology_ClustersXHda"
set LesInfos {}
set Cl1 [lindex $LesClusters 0]
set Cl2 [lindex $LesClusters 1]
set Dist [format "%.1f" [O2C2O Cluster1 $Cl1 Cluster2 $Cl2 Distance]]
set NbCommonOp [O2C2O Cluster1 $Cl1 Cluster2 $Cl2 NbOperonsCommuns]
lappend LesInfos "$Cl1\t$Cl2\t$Dist\t$NbCommonOp"
foreach Cl $LesClusters {
set TCl [O2C2O Cluster $Cl TailleCluster]
set Orf [lindex [O2C2O Cluster $Cl LesOrfs] 0]
set PAllOrga [O2C2O Cluster $Cl Categorie AllOrganism Presence]
set POrgasInt [O2C2O Cluster $Cl Categorie OrganismeInteressant Presence]
set PBact [O2C2O Cluster $Cl Categorie Bacteria Presence]
set PFirm [O2C2O Cluster $Cl Categorie Firmicutes Presence]
set PProteo [O2C2O Cluster $Cl Categorie Proteobacteria Presence]
set PArchaea [O2C2O Cluster $Cl Categorie Archaea Presence]
set PEu [O2C2O Cluster $Cl Categorie Eukaryota Presence]
set InfoCl "$Cl\t$TCl\t$Orf\t$PAllOrga\t$POrgasInt\t$PBact\t$PFirm\t$PProteo\t$PArchaea\t$PEu"
foreach Def [InterrogeGeneOntology $FichierGO Groupe $Cl Type "process" LesDefinitions] {
append InfoCl "\t$Def"}
lappend LesInfos $InfoCl
}
EspionneL $LesInfos
return
}
proc Compare2Listes {} {
set RMAtrouveDsdChip 0; set dChiptrouveDsRMA 0
set FichierRMA "[RepertoireDuGenome]/transcriptomique/ConeSpe/ListeRMAExp2J15Cond"
set FichierdChip "[RepertoireDuGenome]/transcriptomique/ConeSpe/ListedChipExp2J15Cond"
foreach ElmtRMA [LesLignesDuFichier $FichierRMA] {
foreach ElmtdChip [LesLignesDuFichier $FichierdChip] {
if {$ElmtRMA==$ElmtdChip} {
incr RMAtrouveDsdChip
break
}
}
}
foreach ElmtdChip [LesLignesDuFichier $FichierdChip] {
foreach ElmtRMA [LesLignesDuFichier $FichierRMA] {
if {$ElmtRMA==$ElmtdChip} {
incr dChiptrouveDsRMA
break
}
}
}
Espionne "RMAtrouveDsdChip $RMAtrouveDsdChip"
Espionne "dChiptrouveDsRMA $dChiptrouveDsRMA"
}
proc Compare2Puces {FichierDeLaPlusPetite FichierDeLaPlusGrande} {
#exemple FichierDeLaPlusPetite: [RepertoireAffyAnnot na27]/MG430A_2.0/Mouse430A_2.na27.annot.csv
#exemple FichierDeLaPlusGrande: [RepertoireAffyAnnot na27]/MG430_2.0/Mouse430_2.na27.annot.csv
set totalpetite 0; set trouve 0
set LesLignesDeLaPlusPetite [TabulonsSansQuote $FichierDeLaPlusPetite "," ";" " " "GetListOfValues"]
set LesLignesDeLaPlusGrande [TabulonsSansQuote $FichierDeLaPlusGrande "," ";" " " "GetListOfValues"]
foreach LigneDeLaPlusPetite $LesLignesDeLaPlusPetite {
set oui 0
set ElmtPetite [split $LigneDeLaPlusPetite ";"]
set ProbesetidPetite [lindex $ElmtPetite 0]
#set typePetite [lindex $ElmtPetite 4]
#if {![regexp "Control" $typePetite]} {continue}
incr totalpetite
#Espionne "$totalpetite $ProbesetidPetite"
foreach LigneDeLaPlusGrande $LesLignesDeLaPlusGrande {
set ElmtGrande [split $LigneDeLaPlusGrande ";"]
set ProbesetidGrande [lindex $ElmtGrande 0]
#set typeGrande [lindex $ElmtGrande 4]
#if {![regexp "Control" $typeGrande]} {continue}
#Espionne "ProbesetidGrande $ProbesetidGrande"
if {$ProbesetidPetite == $ProbesetidGrande} {
#Espionne "$ProbesetidPetite trouve"
set oui 1
incr trouve
break
}
}
if {!$oui} {Espionne "$ProbesetidPetite trouve pas"}
}
Espionne "totalpetite $totalpetite"
Espionne "trouve $trouve"
}
proc CompareADN {Page {SansAffichage ""} {Titre ""}} {
global CompareADN
if {[info exists CompareADN]} {
set DeuxPages $CompareADN
append DeuxPages "\n$Page"
unset CompareADN
return [VoisinADN $DeuxPages $SansAffichage $Titre]
}
set CompareADN $Page
set Message "Please click on the CompareADN button of an another window"
FaireLire $Message
return $Message
}
proc CompareADNDesFichiersTFA {F1 F2 {SansAffichage ""} {Titre ""}} {
set T1 [ContenuDuFichier $F1]
set T2 [ContenuDuFichier $F2]
return [CompareADNDesTextesTFA $T1 $T2 $SansAffichage $Titre]
}
proc CompareADNDesTextesTFA {T1 T2 {SansAffichage ""} {Titre ""}} {
set DeuxPages $T1
append DeuxPages "\n"
append DeuxPages $T2
return [VoisinADN $DeuxPages $SansAffichage $Titre]
}
proc CompareAjOldNew {} {
foreach Old [glob -nocomplain "[RepertoireDuGenome]/macsimXmlOld/*.aj"] {
lappend LesOld [file tail $Old]
}
foreach New [glob -nocomplain "[RepertoireDuGenome]/macsimXml/*.aj"] {
lappend LesNew [file tail $New]
}
#dans LesOld mais pas dans LesNew
#set OldPasNew [ListsComplement $LesOld $LesNew]
#EspionneL [lsort $OldPasNew]
#Espionne [llength $OldPasNew]
#dans LesNew mais pas dans LesOld
set NewPasOld [ListsComplement $LesNew $LesOld]
EspionneL [lsort $NewPasOld]
Espionne [llength $NewPasOld]
#dans LesOld et LesNew
#set OldNew [ListsIntersection $LesOld $LesNew]
#EspionneL $OldNew
#Espionne [llength $OldNew]
}
proc CompareArCladeAncestor {A B} {
#rR attention il y a aussi CompareCladeAncestor où on utilise directement JeSuisTonAncetre
global ArClade
ArClade
if {$A==$B} { return 0 }
if {[info exists ArClade($B,AncestorOf_$A)]} { return -1 }
if {[info exists ArClade($A,AncestorOf_$B)]} { return 1 }
return 0
}
proc CompareArbres {} {
global TBoot TSum HashRef
foreach e $TBoot {
if {[info exists HashRef($e)]} {
incr TSum([set HashRef($e)])
}
}
return
}
proc CompareCandidatsPaper1AvecAffymetrix {} {
set Fichier "[GscopeDatabaseDir HeadNeck3]/FichierPaper1TousLesCodes"
foreach Ligne [LesLignesDuFichier $Fichier] {
scan $Ligne "%s %s" codeclone codegscope
foreach DD [RendsListeDesDDavec1Affy] {
if {$DD!=$codegscope} {continue}
lappend ListeDesCandidatsPourPaper1DansAffy $codegscope
}
}
#Espionne [llength $ListeDesCandidatsPourPaper1DansAffy]
#return $ListeDesCandidatsPourPaper1DansAffy
foreach CandidatPaperOneAvecAffy $ListeDesCandidatsPourPaper1DansAffy {
set MeilleurCop [lindex [LesMeilleursCopainsDuBlast $CandidatPaperOneAvecAffy blastnAffyHs] 0]
if {$MeilleurCop=="no hits found" || $MeilleurCop=="No value"} {
set MeilleurCop [lindex [LesMeilleursCopainsDuBlast $CandidatPaperOneAvecAffy blastnAffymetrix]0]
}
#Espionne $MeilleurCop
scan $MeilleurCop "%s %s" affy code
lappend LesAffy $code
}
foreach Aff [ListeDesDifferentiellementExprimesSansJumeaux] {
set Vu($Aff) 1
}
foreach Affy $LesAffy {
if {! [info exists Vu($Affy)]} {continue}
lappend LesAffyDiffExpr $Affy
}
Espionne [llength $LesAffyDiffExpr]
return $LesAffyDiffExpr
}
proc CompareChroContLoc {LigneA LigneB} {
scan $LigneA "%s %s %d" ChA CoA DebA
scan $LigneB "%s %s %d" ChB CoB DebB
if {$ChA<$ChB} { return -1 }
if {$ChA>$ChB} { return 1 }
if {$CoA<$CoB} { return -1 }
if {$CoA>$CoB} { return 1 }
if {[expr $DebA<$DebB]} { return -1 }
if {[expr $DebA>$DebB]} { return 1 }
return 0
}
proc CompareChroDebut {LigneA LigneB} {
scan $LigneA "%s %d" ChA DebA
scan $LigneB "%s %d" ChB DebB
if {$ChA<$ChB} { return -1 }
if {$ChA>$ChB} { return 1 }
if {[expr $DebA<$DebB]} { return -1 }
if {[expr $DebA>$DebB]} { return 1 }
return 0
}
proc CompareChroDebutFin {A B} {
scan $A "%s %s %d %d" NomA CA DA FA
scan $B "%s %s %d %d" NomB CB DB FB
if {[set C [string compare $CA $CB]]} { return $C }
if { $DA < $DB } { return -1 }
if { $DA > $DB } { return 1 }
if { $FA < $FB } { return -1 }
if { $FA > $BB } { return 1 }
return 0
}
proc CompareChroFin {LigneA LigneB} {
#compare les fins
scan $LigneA "%s %d %d" ChA DebA FinA
scan $LigneB "%s %d %d" ChB DebB FinB
if {$ChA<$ChB} { return -1 }
if {$ChA>$ChB} { return 1 }
if {[expr $DebA<$DebB]} { return -1 }
if {[expr $DebA>$DebB]} { return 1 }
if {[expr $FinA<$FinB]} { return -1 }
if {[expr $FinA>$FinB]} { return 1 }
return 0
}
proc CompareCladeAncestor {A B} {
#rR je crois que ça ne sert plus .. il suffit de trier les classes.
#rR attention il y a aussi CompareArCladeAncestor où on a déjà mémorisé
if {$A==$B} { return 0 }
if {[JeSuisTonAncetre $B $A]} { return -1 }
if {[JeSuisTonAncetre $A $B]} { return 1 }
return 0
}
proc CompareClonesMembraneAuxOverlapsDDAffy {} {
set FichierMb "[RepertoireDuGenome]/compar_profils_mb_gscope"
foreach Ligne [LesLignesDuFichier $FichierMb] {
set Ligne [string trim $Ligne]
if {$Ligne=={}} {continue}
#set CC [lindex $Ligne 0]
set DD [lindex $Ligne 1]
set Vu($DD) 1
set ProfilMb [lindex $Ligne 2]
set PMb($DD) $ProfilMb
}
set FichierOv "[RepertoireDuGenome]/OverlapEtProfils"
###profils DD puis Affy
set LesMbsOverlap {}
set NbDA 0; set NbMA 0
foreach Ligne [LesLignesDuFichier $FichierOv] {
set Ligne [string trim $Ligne]
if {$Ligne=={}} {continue}
set Nom [lindex $Ligne 0]
if {[info exists Vu($Nom)]} {
set NomAffy [lindex $Ligne 1]
set CodeAffy [lindex $Ligne 2]
set ProfDD [lindex $Ligne 3]
set ProfAffy [lindex $Ligne 4]
if {[info exists PMb($Nom)]} {
#set ProfMb $PMb($Nom)
if {$ProfDD==$ProfAffy} {incr NbDA ; set ComparDA 1} else {set ComparDA 0}
if {$PMb($Nom)==$ProfAffy} {incr NbMA ; set ComparMA 1} else {set ComparMA 0}
lappend LesMbsOverlap "$Nom\t$NomAffy\t$CodeAffy\t$ProfDD\t$ProfAffy\t$ComparDA\t$PMb($Nom)\t$ComparMA"
}
}
}
if {$LesMbsOverlap!={}} {
SauveLesLignes $LesMbsOverlap dans "[RepertoireDuGenome]/Mbs_OverlapAffy"
}
Espionne "compar DD-Affy: $NbDA bons; compar Mb-Affy: $NbMA bons"
return [llength $LesMbsOverlap]
}
proc CompareCluspackMsfclust {} {
foreach D [glob -nocomplain "[RepertoireDuGenome]/cluspack/*.clust"] {
set QueueC [file tail $D]
regsub ".clust" $QueueC "" QueueC
lappend LesQueueC $QueueC
}
#EspionneL $LesQueueC
foreach F [glob -nocomplain "[RepertoireDuGenome]/msfclust/*"] {
set jaitrouve 0
set QueueM [file tail $F]
foreach Q $LesQueueC {
if {$QueueM==$Q} {
set jaitrouve 1
#Espionne "ok"
break
}
}
if {!$jaitrouve} {
Espionne "$F pas ds msfclust"
}
}
}
proc CompareDate {D1 D2} {
regsub -all {[\-\.\:/]} $D1 " " D1
regsub -all { +} [string trim $D1] " " D1
regsub -all {[\-\.\:/]} $D2 " " D2
regsub -all { +} [string trim $D2] " " D2
set J1 0; set M1 0; set A1 0
regexp {^([^ ]+)$} $D1 Match A1
regexp {^([^ ]+) ([^ ]+)$} $D1 Match M1 A1
regexp {^([^ ]+) ([^ ]+) ([^ ]+)$} $D1 Match J1 M1 A1
set J2 0; set M2 0; set A2 0
regexp {^([^ ]+)$} $D2 Match A2
regexp {^([^ ]+) ([^ ]+)$} $D2 Match M2 A2
regexp {^([^ ]+) ([^ ]+) ([^ ]+)$} $D2 Match J2 M2 A2
set Mois1 $M1
set Mois2 $M2
if {$A1<$A2} { return -1 }
if {$A1>$A2} { return 1 }
if {[regexp {^[0-9]+$} $Mois1]} {set M1 $Mois1} else { set M1 [Month1to12 $Mois1] }
if {[regexp {^[0-9]+$} $Mois2]} {set M2 $Mois2} else { set M2 [Month1to12 $Mois2] }
set M1 [Base10 $M1]
set M2 [Base10 $M2]
if {$M1<$M2} { return -1 }
if {$M1>$M2} { return 1 }
set J1 [Base10 $J1]
set J2 [Base10 $J2]
if {$J1<$J2} { return -1 }
if {$J1>$J2} { return 1 }
return 0
}
proc CompareDeuxFichiersDeCodes {F1 {F2 ""}} {
if {$F2==""} {set Liste2 [ListeDesPABs]} else {set Liste2 [LesLignesDuFichier $F2]}
if {![file exists $F1]} {return}
foreach Ligne [LesLignesDuFichier $F1] {
set Ligne [string trim $Ligne]
scan $Ligne "%s %s" g cl
set Clone $cl
set Vu($Clone) 1
}
foreach Ligne $Liste2 {
set Ligne [string trim $Ligne]
set Clone [ExtraitInfo $Ligne "CodeClone"]
if {![info exists Vu($Clone)]} {continue}
Espionne coucou
lappend LesCommuns $Ligne
}
return $LesCommuns
}
proc CompareDeuxFichiersFold {F1 {F2 ""}} {
if {$F2==""} {set Liste2 [ListeDesPABs]} else {set Liste2 [LesLignesDuFichier $F2]}
if {![file exists $F1]} {return}
foreach Ligne [LesLignesDuFichier $F1] {
set Ligne [string trim $Ligne]
scan $Ligne "%s %s" g e
if {$e=="0"} {set Vu($g) 1}
}
foreach Ligne $Liste2 {
#set Ligne [string trim $Ligne]
scan $Ligne "%s" gs
if {![info exists Vu($gs)]} {continue}
lappend LesZeros $Ligne
}
return $LesZeros
}
proc CompareDeuxSetsDeGenes {} {
set LesHere [split [ContenuDuFichier mfHere.txt] " "]
set iOk 0
foreach H $LesHere {
if {[regexp {Gm[0-9]+} $H]} { continue }
if {[regexp {n\-} $H]} { continue }
incr iOk
}
Espionne $iOk
set LesDown [split [ContenuDuFichier mfDown.txt] " "]
set LesDiff [ListsComplement $LesDown $LesHere]
set LesInte [ListsIntersection $LesHere $LesDown]
Espionne [llength $LesHere]
Espionne [llength $LesDiff]
Espionne [llength $LesDown]
# Espionne [expr [llength $LesDown] - $iGm]
Espionne [llength $LesInte]
Affiche [lrange $LesHere 0 100] "" LesHere
Affiche [lrange $LesDiff 0 100] "" LesDiff
}
proc CompareDeuxTablesCodonFrequency {FichierCodMusRef FichierCodSeq} {
#test statistique au risque 5%
if {![file exists $FichierCodSeq] || ![file exists $FichierCodMusRef]} {return}
set Nom [file tail $FichierCodSeq]
set ListeMusRef [CreeListeCodonFrequency $FichierCodMusRef]
set ListeSeq [CreeListeCodonFrequency $FichierCodSeq]
set LesDifferences {}
foreach AaCodonFrequenceMusRef $ListeMusRef AaCodonFrequenceSeq $ListeSeq {
if {[lindex $AaCodonFrequenceMusRef 1]==[lindex $AaCodonFrequenceSeq 1]} {
set FreqMusRef [lindex $AaCodonFrequenceMusRef 2]
set FreqSeq [lindex $AaCodonFrequenceSeq 2]
#Espionne "$FreqMusRef $FreqSeq"
if {$FreqMusRef==$FreqSeq} {continue}
set PourEcartType [expr ((($FreqMusRef*(1-$FreqMusRef))/1000)+(($FreqSeq*(1-$FreqSeq))/1000))]
#Espionne $PourEcartType
set EcartType [expr sqrt($PourEcartType)]
set Difference [expr (abs($FreqMusRef-$FreqSeq))]
set Borne [expr $EcartType*1.96]
#Espionne "[lindex $AaCodonFrequenceSeq 1] $Difference $Borne"
if {$Difference>$Borne} {
#alors l' hypothese nulle est rejettee au seuil 5%
set Difference [format "%.4f" $Difference]
set Borne [format "%.4f" $Borne]
set Dif [expr (abs($Difference-$Borne))]
lappend LesDifferences "$Nom\t[lindex $AaCodonFrequenceSeq 0]\t[lindex $AaCodonFrequenceSeq 1]\t$Difference\t$Borne\t$Dif"
}
}
}
set LesDifferences [lsort -index 5 -decreasing $LesDifferences]
return $LesDifferences
}
proc CompareEC {A B} {
regsub -nocase "EC " $A "" A
regsub -nocase "EC " $B "" B
regsub -all -- {\-} $A "0" A
regsub -all -- {\-} $B "0" B
set LesA [split $A "\."]
set LesB [split $B "\."]
foreach C {0 1 2 3} {
if {[lindex $LesA $C] < [lindex $LesB $C]} {
return -1
}
if {[lindex $LesA $C] > [lindex $LesB $C]} {
return 1
}
}
return 0
}
proc CompareElm {} {
set RepertoireOut "[RepertoireDuGenome]/compareElm"
if {! [file exists $RepertoireOut]} {file mkdir $RepertoireOut}
foreach Box [ListeDesPABs] {
if {$Box!="SP0001"} {continue}
set LesLignesFic {}
if {[info exists InfoElmRef]} { unset InfoElmRef }
set LesElmRef {}
if {[regexp -nocase "Mouse" [RepertoireDuGenome]]} {
set Org Mouse
} elseif {[regexp -nocase "Rat" [RepertoireDuGenome]]} {
set Org Rat
} else {
set Org SpliRet
}
set Cluster [ExtraitInfo $Box "Cluster"]
set Ref [ExtraitInfo $Box "Ref"]
set LesNamesInitials [InterrogeNames $Cluster Name $Org]
foreach Name $LesNamesInitials {
if {$Name==$Ref} {set Name $Box}
lappend LesNames $Name
}
if {$Org=="SpliRet"} {
set FileMacsims "[RepertoireDuGenome]/macsimXml/$Box.new.ajout.ordonne.reduit.elm"
if {![file exists $FileMacsims]} {set FileMacsims "[RepertoireDuGenome]/macsimXml/$Box.new.ordonne.reduit.elm"}
} else {
set FileMacsims "[RepertoireDuGenome]/macsimXml/$Box.orgord.aj"
if {![file exists $FileMacsims]} {set FileMacsims "[RepertoireDuGenome]/macsimXml/$Box.orgord"}
}
#Espionne ""
Espionne "$Box $Cluster"
#Espionne "$FileMacsims"
#Espionne "$LesNames"
#Espionne "$Ref"
#Ref et Box represente la meme seq
set LesElmInfoRef [FromMacsims $FileMacsims $Box "ConcatElm"]
InitPosRel2Abs $FileMacsims $LesNames
foreach InfoRef $LesElmInfoRef {
#Espionne "InfoRef $InfoRef"
lassign $InfoRef ElmRef RFstart RFstop
set ElmRef [string toupper $ElmRef]
#Espionne "ElmRef $ElmRef"
lappend LesElmRef $ElmRef
lappend InfoElmRef($ElmRef) $InfoRef
}
set LesElmRef [lsort -unique $LesElmRef]
foreach Name $LesNames {
set differe 0
if {[info exists InfoElmName]} { unset InfoElmName }
if {$Name==$Box} {continue}
set LesElmInfoName [FromMacsims $FileMacsims $Name "ConcatElm"]
# Espionne
# Espionne "Name $Name"
set LigneFic "$Name:"
lappend LesLignesFic $LigneFic
set LesElmInfoName [ListeSsElmtVide $LesElmInfoName]
#EspionneL "$LesElmInfoName"
# Espionne "LesGainsPertes:"
if {$LesElmInfoName=={}} {
set differe 1
foreach ElmRef $LesElmRef {
foreach InfoRef $InfoElmRef($ElmRef) {
lassign $InfoRef ElmRef RFstart RFstop
set AbsRFstart [DonnePosRA $Box $RFstart Absolue]
set AbsRFstop [DonnePosRA $Box $RFstop Absolue]
set ResultPerdu [SiteElmPerdu $InfoRef $Name $AbsRFstart $AbsRFstop $RFstart $RFstop]
#Espionne "$ResultPerdu"
set LigneFic "$ResultPerdu"
lappend LesLignesFic $LigneFic
}
}
continue
}
foreach InfoName $LesElmInfoName {
lassign $InfoName ElmName Fstart Fstop
set ElmName [string toupper $ElmName]
lappend InfoElmName($ElmName) $InfoName
if { ! [info exists InfoElmRef($ElmName)]} {
set differe 1
set ResultGagne [SiteElmGagne $InfoName $Name]
# Espionne "$ResultGagne"
set LigneFic "$ResultGagne"
lappend LesLignesFic $LigneFic
}
}
foreach ElmRef $LesElmRef {
foreach InfoRef $InfoElmRef($ElmRef) {
lassign $InfoRef ElmRef RFstart RFstop
set AbsRFstart [DonnePosRA $Box $RFstart Absolue]
set AbsRFstop [DonnePosRA $Box $RFstop Absolue]
set RelFstart [DonnePosRA $Name $AbsRFstart Relative]
set RelFstop [DonnePosRA $Name $AbsRFstop Relative]
if { ! [info exists InfoElmName($ElmRef)]} {
set differe 1
set ResultPerdu [SiteElmPerdu $InfoRef $Name $AbsRFstart $AbsRFstop $RelFstart $RelFstop]
#Espionne "3 $ResultPerdu"
set LigneFic "$ResultPerdu"
lappend LesLignesFic $LigneFic
} else {
set TousAbsents 1
foreach InfoName $InfoElmName($ElmRef) {
lassign $InfoName ElmName RelFstartPrTest RelFstopPrTest
set AbsFstart [DonnePosRA $Name $RelFstartPrTest Absolue]
set AbsFstop [DonnePosRA $Name $RelFstopPrTest Absolue]
if {[Recouvrement $AbsRFstart $AbsRFstop $AbsFstart $AbsFstop]} {
set TousAbsents 0
break
}
}
if { $TousAbsents } {
set differe 1
set ResultPerdu [SiteElmPerdu $InfoRef $Name $AbsRFstart $AbsRFstop $RelFstart $RelFstop]
# Espionne "4 $ResultPerdu"
set LigneFic "$ResultPerdu"
lappend LesLignesFic $LigneFic
}
}
}
}
if {!$differe} {
#Espionne " $Name rien gagne rien pris"
set LigneFic " $Name rien gagne rien perdu"
lappend LesLignesFic $LigneFic
}
}
#Espionne "resume"
#EspionneL "$LesLignesFic"
SauveLesLignes $LesLignesFic dans "$RepertoireOut/$Box"
}
}
proc CompareFlottant {LA LB {Ieme ""} {S ""}} {
if {$Ieme==""} { set Ieme 9 }
if {$S==""} { set S ";" }
set EA [lindex [split $LA $S] $Ieme]
set EB [lindex [split $LB $S] $Ieme]
return [CompareLesFloats $EA $EB]
}
proc CompareFlottantEn5 {LA LB} {
set Ieme 5
set S ";"
set EA [lindex [split $LA $S] $Ieme]
set EB [lindex [split $LB $S] $Ieme]
return [CompareLesFloats $EA $EB]
}
proc CompareGO200904EtGO201009 {} {
#liste Pfam obtenue avec requete [GoGetFromGo GO:0005488 PFAM "" "" "Down"] avec version 2009 et 2010
set File2009 "/genomics/link/SpliRetMouse/BindingPfam/BindingPfamFromGo/BindingPfamDesFromGo.txt"
set File2010 "/genomics/link/SpliRetMouse/BindingPfam/BindingPfamFromGo/BindingPfamDesFromGo2010.txt"
set commun 0; set spe2009 0; set commun2 0 ; set spe2010 0
foreach Ligne2009 [LesLignesDuFichier $File2009] {
set Pfam2009 [lindex [split $Ligne2009 "\t"] 0]
set trouve 0
foreach Ligne2010 [LesLignesDuFichier $File2010] {
set Pfam2010 [lindex [split $Ligne2010 "\t"] 0]
if {$Pfam2009==$Pfam2010} {
set trouve 1
break
}
}
if {$trouve} {incr commun}
if {!$trouve} {
Espionne "$Pfam2009 spe2009"
incr spe2009
}
}
foreach Ligne2010 [LesLignesDuFichier $File2010] {
set Pfam2010 [lindex [split $Ligne2010 "\t"] 0]
set trouve 0
foreach Ligne2009 [LesLignesDuFichier $File2009] {
set Pfam2009 [lindex [split $Ligne2009 "\t"] 0]
if {$Pfam2010==$Pfam2009} {
set trouve 1
break
}
}
if {$trouve} {incr commun2}
if {!$trouve} {
Espionne "$Pfam2010 spe2010"
incr spe2010
}
}
Espionne "commun $commun"
Espionne "commun2 $commun2"
Espionne "spe2009 $spe2009"
Espionne "spe2010 $spe2010"
}
proc CompareGoCounts {X Y} {
regsub -all {[^ 0-9\.]} $X " " X
regsub -all {[^ 0-9\.]} $Y " " Y
scan $X "%f %d %d %d %d %d" ABx SAx SBx NAx NBx NABx
scan $Y "%f %d %d %d %d %d" ABy SAy SBy NAy NBy NABy
if {$ABx<$ABy} { return -1 }
if {$ABx>$ABy} { return 1 }
if {$SAx<$SAy} { return -1 }
if {$SAx>$SAy} { return 1 }
if {$SBx<$SBy} { return 1 }
if {$SBx>$SBy} { return -1 }
if {$NAx<$NAy} { return -1 }
if {$NAx>$NAy} { return 1 }
if {$NBx<$NBy} { return 1 }
if {$NBx>$NBy} { return -1 }
return 0
}
proc CompareHG_U95AEtHG_U95Av2 {} {
WithWebService "Gx" 0
set Sql "select pk_probeset, pk_arraytype from ln_arraytype_probeset where pk_arraytype = 11 or pk_arraytype = 13 order by pk_probeset;"
set i 0; set j 0; set m 0; set n 0
foreach {pk_probeset pk_arraytype} [GxDbSqlExec $Sql "GetList"] {
#Espionne "$pk_probeset $pk_arraytype"
if {![info exists DejaVu($pk_probeset)]} {set DejaVu($pk_probeset) 0}
incr DejaVu($pk_probeset)
}
foreach Clef [array names DejaVu] {
if {$DejaVu($Clef)==1} {
incr i
lappend LesProbesetUniques $Clef
} else {
incr j
}
}
foreach PsUnique $LesProbesetUniques {
set Sql2 "select pk_probeset, pk_arraytype from ln_arraytype_probeset where (pk_arraytype = 11 or pk_arraytype = 13) and pk_probeset = $PsUnique order by pk_arraytype;"
foreach {pk_probeset pk_arraytype} [GxDbSqlExec $Sql2 "GetList"] {
Espionne "$pk_arraytype $pk_probeset"
if {$pk_arraytype == 11} {incr m}
if {$pk_arraytype == 13} {incr n}
}
}
Espionne "$i"
Espionne "11 $m"
Espionne "13 $n"
Espionne "$j"
}
proc CompareIeme {LA LB {Ieme ""} {S ""}} {
if {$Ieme==""} { set Ieme 0 }
if {$S==""} { set S ";" }
set A [lindex [split $LA $S] $Ieme]
set B [lindex [split $LB $S] $Ieme]
return [string compare $A $B]
}
proc CompareIntegerFromMacsims {LA LB} {
set IndexLA1 [string last "/" $LA]
set IndexLA2 [string last "-" $LA]
set DA [string range $LA $IndexLA1+1 $IndexLA2-1]
set FA [string range $LA $IndexLA2+1 end]
set IndexLB1 [string last "/" $LB]
set IndexLB2 [string last "-" $LB]
set DB [string range $LB $IndexLB1+1 $IndexLB2-1]
set FB [string range $LB $IndexLB2+1 end]
set Result [CompareLesIntegers $DA $DB]
if {$Result==0} {
return [CompareLesIntegers $FA $FB]
} else {
return $Result
}
}
proc CompareIntegerInFeaturesDesPfam {LA LB} {
set EA [lindex [split $LA " "] 1]
set EB [lindex [split $LB " "] 1]
return [CompareLesIntegers $EA $EB]
}
proc CompareKgPg {} {
set fichierKG "[Fiches]/parseKG"
set fichierPG "[Fiches]/parsePG"
set LesLignesDuFichierPG [LesLignesDuFichier $fichierPG]
set LesLignesDuFichierKG [LesLignesDuFichier $fichierKG]
set I 0
foreach LignePG $LesLignesDuFichierPG {
if {$LignePG==""} {continue}
set Nom [lindex [split $LignePG " "] 0]
set LocalisationFinalPG [string range $LignePG 5 end]
set LocalisationFinalPG [string trim $LocalisationFinalPG]
if {[regexp "nolocalisation" $LignePG]} {
set LigneKG [lindex $LesLignesDuFichierKG $I]
set LocalisationFinalKG [string range $LigneKG 5 end]
set LocalisationFinalKG [string trim $LocalisationFinalKG]
if {[regexp "nolocalisation" $LigneKG]} {
InformeSansDemander $Nom "Localisation: $LocalisationFinalPG"
} else {
InformeSansDemander $Nom "Localisation: $LocalisationFinalKG"
}
} else {
InformeSansDemander $Nom "Localisation: $LocalisationFinalPG"
}
incr I
}
}
proc CompareKnownGenesEtRefGenes {} {
set NbNom 0; set Vides 0; set Pleins 0; set ssloc 0; set locds2 0; set locds2meme 0; set locds2diff 0; set locdsgbrs 0; set locdsrs 0
foreach Nom [ListeDesPABs] {
Espionne ""
incr NbNom
set LocUcsc ""
set dsles2 0
set Access [AccessEvi $Nom]
if {$Access==""} {
incr Vides
continue
}
if {$Access!=""} {
incr Pleins
puts "$Nom $Access"
set LocUcscGbRs [ExtraitInfo $Nom "LocUcscFrom200503"]
set LocUcscRs [ExtraitInfo $Nom "LocUcscRefSeqFrom200503"]
puts "LocUcscGbRs= $LocUcscGbRs"
puts "LocUcscRs= $LocUcscRs"
if {![regexp {[0-9]+} $LocUcscGbRs] && ![regexp {[0-9]+} $LocUcscRs]} {
incr ssloc
set LocUcsc ""
puts "pas de loc"
}
if {[regexp {[0-9]+} $LocUcscGbRs] && [regexp {[0-9]+} $LocUcscRs]} {
set dsles2 1
incr locds2
if {$LocUcscGbRs == $LocUcscRs} {
incr locds2meme
set LocUcsc $LocUcscGbRs
puts "info est meme"
} else {
incr locds2diff
puts "info est pas meme"
}
}
if {!$dsles2 && [regexp {[0-9]+} $LocUcscGbRs]} {
incr locdsgbrs
set LocUcsc $LocUcscGbRs
puts "prends GbRs"
}
if {!$dsles2 && [regexp {[0-9]+} $LocUcscRs]} {
incr locdsrs
set LocUcsc $LocUcscRs
puts "prends Rs"
}
puts "LocUcsc= $LocUcsc"
puts ""
}
}
puts "nb total= $NbNom"
puts "nb vide= $Vides"
puts "nb plein= $Pleins"
puts ""
puts "ssloc= $ssloc"
puts "locds2 $locds2"
puts "locds2meme= $locds2meme"
puts "locds2diff= $locds2diff"
puts "locdsgbrs= $locdsgbrs"
puts "locdsrs $locdsrs"
}
proc CompareLaVADesNombres {a b} {
set a [expr abs($a)]
set b [expr abs($b)]
if {$a < $b} {return -1}
if {$a > $b} {return 1}
return 0
}
proc CompareLeDeuxiemeChamp {LigneA LigneB} {
scan $LigneA "%s %f" A a
scan $LigneB "%s %f" B b
if {[expr $a < $b]} { return -1}
if {[expr $a == $b]} { return 0}
if {[expr $a > $b]} { return 1}
}
proc CompareLeTroisiemeChamp {LigneA LigneB} {
scan $LigneA "%s %s %f" A AA a
scan $LigneB "%s %s %f" B BB b
if {[expr $a < $b]} { return -1}
if {[expr $a == $b]} { return 0}
if {[expr $a > $b]} { return 1}
}
proc CompareLesAccessProt {} {
set Total 0; set meme 0; set diff 0
set FichierFred "[RepertoireDuGenome]/fiches/AccessDesProteinesEtDesmRNAsChoisisOld"
foreach Ligne [LesLignesDuFichier $FichierFred] {
scan $Ligne "%s %s" Nom Prot
if {$Prot=="NoProtein"} {continue}
incr Total
set IdEtAccessProt [ExtraitInfo $Nom "Id et Access prot:"]
set LesInfosProt [split $IdEtAccessProt " "]
set AccessProt [lindex $LesInfosProt 1]
if {$AccessProt==""} {continue}
if {$Prot==$AccessProt} {
#Espionne "meme"
#Espionne "$Nom $Prot $AccessProt"
incr meme
} else {
#Espionne "diff"
Espionne "$Nom"
#Espionne "$Nom $Prot $AccessProt"
incr diff
}
}
#Espionne "total= $Total"
#Espionne "meme = $meme"
#Espionne "diff = $diff"
}
proc CompareLesAttributionsAvecLaVersionPrecedente {} {
set NvFichier "[RepertoireDuGenome]/parser2007/NewAttriToutVf"
set premieresousligne 0; set nblignes 0; set pareil 0; set different 0
foreach Ligne [LesLignesDuFichier $NvFichier] {
if {[regexp {^ligne} $Ligne]} {
incr nblignes
set premieresousligne 0
set NumeroLigne [StringApres "ligne " dans $Ligne]
continue
}
if {!$premieresousligne} {
set LesNvxAccEvi {}; set LesAccEvi {}
set premieresousligne 1
if {[regexp "bidon" $Ligne]} {
set NvxAccEvi $Ligne
} else {
set LesNvxAccEvi [split $Ligne " "]
set LesNvxAccEvi [lsort $LesNvxAccEvi]
set NvxAccEvi [join $LesNvxAccEvi " "]
}
set TousLesNoms [NomLigne $NumeroLigne Noms]
set ListeDesNoms [split $TousLesNoms " "]
set pasaccess 0
foreach Nom $ListeDesNoms {
set Access [AccessEvi $Nom]
if {$Access==""} {
set pasaccess 1
set Raison [StringSuivant " " dans [lindex [LesLignesDuFichier "[RepertoireDuGenome]/nuctfa/$Nom"] 0]]
set AccEvi $Raison
} else {
lappend LesAccEvi $Access
}
}
if {!$pasaccess} {
set LesAccEvi [lsort $LesAccEvi]
set AccEvi [join $LesAccEvi " "]
}
if {[string equal $NvxAccEvi $AccEvi]} {
incr pareil
#Espionne "pareil"
} else {
incr different
Espionne ""
Espionne "$NumeroLigne"
Espionne "Ancien $AccEvi"
Espionne "Nouvea $NvxAccEvi"
Espionne "different"
}
}
}
Espionne "nbtotal = $nblignes"
Espionne "nbdepareil = $pareil"
Espionne "nbdediffer = $different"
}
proc CompareLesExpectsDesSegments {TexteA TexteB} {
scan $TexteA "%s %s %s %s %s %s %s %f" Trou Sens Frame BanqueId Debut Fin Long a
scan $TexteB "%s %s %s %s %s %s %s %f" Trou Sens Frame BanqueId Debut Fin Long b
if {[expr double($a) < double($b)]} { return -1}
if {[expr double($a) == double($b)]} { return 0}
if {[expr double($a) > double($b)]} { return 1}
}
proc CompareLesFichiersMasques {Nom} {
####################################################
global RepertoireDuGenome
####################################################
####################################################
set FichierOriginal "$RepertoireDuGenome/nuctfa/$Nom"
set RepNucOriginaux "$RepertoireDuGenome/nuctfa"
####################################################
set FichierMasque "$RepertoireDuGenome/nucmask/$Nom.m"
set RepNucMask "$RepertoireDuGenome/nucmask"
####################################################
set FichierReMasque "$RepertoireDuGenome/nucmask/$Nom.rm"
set RepNucReMask "$RepertoireDuGenome/nucmask"
####################################################
set FichierMasqueEtReMasque "$RepertoireDuGenome/nucmask/$Nom.mrm"
set RepNucMaskAndReMask "$RepertoireDuGenome/nucmask"
####################################################
####################################################
if { ! [file exists $FichierOriginal] || ! [file exists $FichierMasque] || ! [file exists $FichierReMasque] || ! [file exists $FichierMasqueEtReMasque]} {
return "$Nom"
}
####################################################
####################################################
set SeqOriginale [string toupper [QueLaSequenceDuTFA $FichierOriginal]]
set SeqMasquee [string toupper [QueLaSequenceDuTFA $FichierMasque]]
set SeqReMasquee [string toupper [QueLaSequenceDuTFA $FichierReMasque]]
set SeqMasqueeEtReMasquee [string toupper [QueLaSequenceDuTFA $FichierMasqueEtReMasque]]
#######Masquage###################################
if {$SeqOriginale == $SeqMasquee} {
set ValeurDuMasque ""
} else {
set ValeurDuMasque "Masked"
}
#######ReMasquage#################################
if {$SeqOriginale == $SeqReMasquee} {
set ValeurDuReMasque ""
} else {
set ValeurDuReMasque "ReMasked"
}
#######MasquageEtReMasquage#################################
if {$SeqOriginale == $SeqMasqueeEtReMasquee} {
set ValeurDuMasqueEtReMasque ""
} else {
if { $ValeurDuMasque == "Masked" && $ValeurDuReMasque == "ReMasked"} {
set ValeurDuMasqueEtReMasque "Masked \& ReMasked"
} elseif { $ValeurDuMasque == "" && $ValeurDuReMasque == "ReMasked"} {
set ValeurDuMasqueEtReMasque "Just ReMasked"
} elseif { $ValeurDuMasque == "Masked" && $ValeurDuReMasque == ""} {
set ValeurDuMasqueEtReMasque "Just Masked"
}
}
####################################################
####################################################
set NomsDesRepeatsDuM [join [LesRepeatsDeLEnteteDuTFA $FichierMasque ] " "]
set NomsDesRepeatsDuRM [join [LesRepeatsDeLEnteteDuTFA $FichierReMasque ] " "]
set NomsDesRepeatsDuMRM [join [LesRepeatsDeLEnteteDuTFA $FichierMasqueEtReMasque] " "]
####################################################
####################################################
set TailleDeLaSeqOriginale [string length $SeqOriginale ]
set TailleDeLaSeqMasquee [string length $SeqMasquee ]
set TailleDeLaSeqReMasquee [string length $SeqReMasquee ]
set TailleDeLaSeqMasqueeEtReMasquee [string length $SeqMasqueeEtReMasquee]
####################################################
####################################################
if {$TailleDeLaSeqOriginale != $TailleDeLaSeqMasquee || $TailleDeLaSeqOriginale != $TailleDeLaSeqReMasquee || $TailleDeLaSeqOriginale != $TailleDeLaSeqMasqueeEtReMasquee} {
set TailleDesSequences -999
} else { set TailleDesSequences $TailleDeLaSeqOriginale }
####################################################
####################################################
if {$TailleDesSequences != "ERREUR"} {
####################################################
set NbDeDiffAvecMasque [NombreDeBasesDansRepeat $SeqOriginale $SeqMasquee]
set NbDeDiffAvecReMasque [NombreDeBasesDansRepeat $SeqOriginale $SeqReMasquee]
set NbDeDiffAvecMasqueEtReMasque [NombreDeBasesDansRepeat $SeqOriginale $SeqMasqueeEtReMasquee]
####################################################
set PourcentagedeReMasquage [PourcentageArrondiSup $NbDeDiffAvecReMasque $TailleDesSequences]
set PourcentagedeMasquage [PourcentageArrondiSup $NbDeDiffAvecMasque $TailleDesSequences]
set PourcentagedeMasquageEtReMasquage [PourcentageArrondiSup $NbDeDiffAvecMasqueEtReMasque $TailleDesSequences]
} else {
set PourcentagedeMasquage "Erreur"
set PourcentagedeReMasquage "Erreur"
set PourcentagedeMasquageEtReMasquage "Erreur"
}
####################################################
####################################################
if { $PourcentagedeReMasquage == 0 && $PourcentagedeMasquage == 0 && $PourcentagedeMasquageEtReMasquage == 0 } {
set PourcentagedeReMasquage ""
set PourcentagedeMasquage ""
set PourcentagedeMasquageEtReMasquage ""
}
set LigneDuTableau [format "%s %4d %4s %4s %4s %-8s %-10s %-19s M\=%-s \; RM\=%-s" $Nom $TailleDesSequences $PourcentagedeMasquage $PourcentagedeReMasquage $PourcentagedeMasquageEtReMasquage $ValeurDuMasque $ValeurDuReMasque $ValeurDuMasqueEtReMasque $NomsDesRepeatsDuM $NomsDesRepeatsDuRM
]
return $LigneDuTableau
}
proc CompareLesFichiersMasquesPourTous {} {
####################################################
global RepertoireDuGenome
set nTot 0
set nMTot 0
set nM 0
set nRM 0
set nMRM 0
foreach Nom [ListeDesPABs] {
set Ligne [CompareLesFichiersMasques $Nom]
if {[regexp " Masked " $Ligne]} { incr nM }
if {[regexp " ReMasked " $Ligne]} { incr nRM }
if {[regexp " Masked " $Ligne] && [regexp " ReMasked " $Ligne]} { incr nMRM }
incr nTot
if { [regexp " Masked " $Ligne] || [regexp " ReMasked " $Ligne] } {
incr nMTot
Espionne $Ligne
append Tableau "$Ligne\n"
}
}
Espionne "NbFichier\:$nTot NbFichiersAvecRepeats\:$nMTot Masked\:$nM ReMasked\:$nRM MRM\:$nMRM"
if {[OuiOuNon "Do I save these Results ?"]} {
set Fichier [FichierPourSaveAs "CompareMaskReMask.txt"]
if {$Fichier!=""} {
Sauve $Tableau dans $Fichier
}
}
return ""
}
proc CompareLesFichiersTFAEtComplete {Fichier1 Fichier2} {
set LesAccessFichier1 {}
set i 0
foreach Ligne [LesLignesDuFichier $Fichier1] {
if {![regexp -nocase {[0-9a-z]} $Ligne]} {continue}
if {[string index $Ligne 0] != ">"} {append Tab1($Access) "\n$Ligne";continue}
if {[info exists Access]} {unset Access}
regexp {>([^ ]*)} $Ligne tmp Access
regsub -nocase {_from_[to0-9_]*$} $Access "" Access
incr i
set Tab1($Access) $Ligne
lappend LesAccessFichier1 $Access
}
Espionne $i
set LesAccessFichier2 {}
set i 0
foreach Ligne [LesLignesDuFichier $Fichier2] {
if {![regexp -nocase {[0-9a-z]} $Ligne]} {continue}
if {[string index $Ligne 0] != ">"} {append Tab2($Access) "\n$Ligne";continue}
if {[info exists Access]} {unset Access}
regexp {>([^ ]*)} $Ligne tmp Access
incr i
regsub -nocase {_from_[to0-9_]*$} $Access "" Access
set Tab2($Access) $Ligne
lappend LesAccessFichier2 $Access
}
Espionne $i
set LeTexte {}
set i 0;set j 0
foreach Access $LesAccessFichier1 {
if {[info exists Tab2($Access)]} {
incr i
lappend LeTexte [set Tab2($Access)]
} else {
incr j
lappend LeTexte [set Tab1($Access)]
}
set Tab($Access) 1
}
Espionne "$i $j"
Sauve [join $LeTexte "\n"] dans "ToutesLesSequences.tfa"
return
}
proc CompareLesFloats {TexteA TexteB} {
if { [llength [split [string trim $TexteA] " "]] > 1 } {
scan $TexteA "%s %f" A a
} else {
scan $TexteA "%f" a
}
if { [llength [split [string trim $TexteB] " "]] > 1 } {
scan $TexteB "%s %f" B b
} else {
scan $TexteB "%f" b
}
if {[expr double($a) < double($b)]} { return -1}
if {[expr double($a) == double($b)]} { return 0}
if {[expr double($a) > double($b)]} { return 1}
}
proc CompareLesFloatsEnDebut {TexteA TexteB} {
scan $TexteA "%f" a
scan $TexteB "%f" b
if {[expr double($a) < double($b)]} { return -1}
if {[expr double($a) == double($b)]} { return 0}
if {[expr double($a) > double($b)]} { return 1}
}
proc CompareLesIntegers {TexteA TexteB} {
if { [llength [split [string trim $TexteA] " "]] > 1 } {
scan $TexteA "%s %f" A a
} else {
scan $TexteA "%f" a
}
if { [llength [split [string trim $TexteB] " "]] > 1 } {
scan $TexteB "%s %f" B b
} else {
scan $TexteB "%f" b
}
if {[expr $a < $b]} { return -1}
if {[expr $a == $b]} { return 0}
if {[expr $a > $b]} { return 1}
}
proc CompareLesIntegersEnDebut {TexteA TexteB} {
scan $TexteA "%d" a
scan $TexteB "%d" b
if {[expr $a < $b]} { return -1}
if {[expr $a == $b]} { return 0}
if {[expr $a > $b]} { return 1}
}
proc CompareLesMilieux {LigneA LigneB} {
scan $LigneA "%s %d %d" A DA FA
scan $LigneB "%s %d %d" B DB FB
set a [expr ($DA+$FA)/2]
set b [expr ($DB+$FB)/2]
if {[expr $a < $b]} { return -1}
if {[expr $a == $b]} { return 0}
if {[expr $a > $b]} { return 1}
}
proc CompareLesProcs {Selection {Meld ""}} {
regsub -all {[ \t\n]+} $Selection " " Selection
regsub -all gscope_contrib $Selection [GscopeContrib]
regsub -all " gscope/" $Selection " [HomeRipp]/gscope" Selection
lassign [split [string trim $Selection " \n"] " "] P F1 F2
Espionne $P
Espionne $F1
Espionne $F2
scan $P "%s" P
set B1 [ProcDuFichier $P $F1]
set B2 [ProcDuFichier $P $F2]
if {$Meld!=""} {
regsub -all "/" $F1 "_" NF1
regsub -all "/" $F2 "_" NF2
Sauve $B1 dans [set TB1 [TmpFile $NF1]]
Sauve $B2 dans [set TB2 [TmpFile $NF2]]
exec meld $TB1 $TB2 &
} else {
set A1 [Affiche $B1 "" "${P}_de_$F1"]
set A2 [Affiche $B2 "" "${P}_de_$F2"]
return [list $A1 $A2]
}
return ""
}
proc CompareLesProfilsPourOverlapDDAffy {} {
set F "/genomics/link/HeadNecknonrnr/OverlapEtProfils"
set n 0
set b 0
foreach Ligne [LesLignesDuFichier $F] {
if {$Ligne=={}} {continue}
set ProfilDD [lindex $Ligne 3]
set ProfilAffy [lindex $Ligne 4]
if {$ProfilDD==$ProfilAffy} {incr n} else {incr b}
}
return "ok: $n diff:$b"
}
proc CompareLesSequencesDesAccess {A B} {
Wup "Return 1 if the sequences of Access A and B are the same"
set SeqA [LaSequenceDesLignesEMBL [LaSequenceDesBanques $A $A a "OnVeutEMBL"]]
set SeqB [LaSequenceDesLignesEMBL [LaSequenceDesBanques $B $B b "OnVeutEMBL"]]
return [string equal -nocase $SeqA $SeqB]
}
proc CompareLesSequencesPourMisynpat {} {
set Dir "[RepertoireDuGenome]/blastp_myself"
file mkdir $Dir
NousAllonsAuBoulot $Dir
foreach Nom [ListeDesPABs] {
set Tfa "" ; set FiTfa [GscopeFile $Nom prottfa]
set Hit "" ; set FiHit [GscopeFile $Nom prottfa_besthumanhit]
set Acc "" ; set FiAcc [GscopeFile $Nom prottfa_access]
if {[FileExists $FiTfa]} { set Tfa [string toupper [QueLaSequenceDuTexteTFA [ContenuDuFichier $FiTfa]]] } else { FaireLire "$Nom pas tfa" }
if {[FileExists $FiHit]} { set Hit [string toupper [QueLaSequenceDuTexteTFA [ContenuDuFichier $FiHit]]] } else { FaireLire "$Nom pas hit" }
if {[FileExists $FiAcc]} { set Acc [string toupper [QueLaSequenceDuTexteTFA [ContenuDuFichier $FiAcc]]] } else { FaireLire "$Nom pas acc" }
set OkHit [string equal $Tfa $Hit]
set OkAcc [string equal $Tfa $Acc]
set InHit [string first $Tfa $Hit]
set InAcc [string first $Tfa $Acc]
if {"$OkHit $OkAcc $InHit $InAcc"=="1 1 0 0"} { continue }
Espionne "$Nom $OkHit $OkAcc $InHit $InAcc [string length $Tfa] [string length $Hit] [string length $Acc]"
if { [FileExists $FiHit] && ! $OkHit } {
Espionne "blastall -p blastp -i $FiHit -d [RepertoireDuGenome]/banques_myself/$Nom -F F -o $Nom"
exec blastall -p blastp -i $FiHit -d [RepertoireDuGenome]/banques_myself/$Nom -o $Nom
}
if { 0 && [FileExists $FiAcc] && ! $OkAcc } {
Espionne "blastall -p blastp -i $FiAcc -d [RepertoireDuGenome]/banques_myself/$Nom -o $Nom"
exec blastall -p blastp -i $FiAcc -d "[RepertoireDuGenome]/banques_myself/$Nom"
}
}
OnRevientDuBoulot
}
proc CompareLigneTabulee3 {A B} {
set x [lindex [split $A "\t"] 3]
set y [lindex [split $B "\t"] 3]
if {$x==$y} { return 0}
if {$x<$y} { return -1} else { return 1 }
}
proc CompareLigneTabulee5 {A B} {
set x [lindex [split $A "\t"] 5]
set y [lindex [split $B "\t"] 5]
if {$x==$y} { return 0}
if {$x<$y} { return -1} else { return 1 }
}
proc CompareListesPABS {Fichier1 Fichier2} {
set L1 [CreeListePourFichierAUneColonne $Fichier1]
foreach Nom $L1 {
set Vu($Nom) 1
}
set L2 [CreeListePourFichierAUneColonne $Fichier2]
foreach Nom $L2 {
if {[info exists Vu($Nom)]} {lappend L3 $Nom}
}
return $L3
}
proc CompareLocalisations {FichierLesDDLocsSansFct FichierDesmiRNAs} {
# FichierLesDDLocsSansFct "ANALYSE/miRNAs/LesDDLocSansFct" (248)
# FichierDesmiRNAs "ANALYSE/miRNAs/LesM" (188)
foreach Nom [CreeListePourFichierAUneColonne $FichierLesDDLocsSansFct] {
if {$Nom==""} {continue}
set Vu($Nom) 1
}
set FichierFinal "[RepertoireDuGenome]/ANALYSE/finaaal_6jul05_avecMAetSel_mitoch"
foreach Ligne [LesLignesDuFichier $FichierFinal] {
if {$Ligne==""} {continue}
set LesInfos [split $Ligne "\t"]
set JR [lindex $LesInfos 1]
if {![info exists Vu($JR)]} {continue}
set Chro [lindex $LesInfos 29]
set Deb [lindex $LesInfos 30]
set Fin [lindex $LesInfos 31]
#set Sens [lindex $LesInfos 32]
lappend LesLocsNom "$Chro $Deb $Fin $JR"
}
Espionne "lesDD: [llength $LesLocsNom]"
set L [CreeListePourFichierAUneColonne $FichierDesmiRNAs]
set FichierLoc "[RepertoireDuGenome]/Localisation/miRNAtfaLocalisation_Human"
foreach M $L {
set Locs [InterrogeLocalisation $FichierLoc Nom $M]
if {$Locs==""} {continue}
#if {[llength $Loc]>=2} {continue}
foreach Loc $Locs {
#set L [join $L ""]
#EspionneL $Loc
set Chro [lindex $Loc 9]
set DSurChro [lindex $Loc 10]
set FSurChro [lindex $Loc 11]
lappend LesLocsNom "$Chro $DSurChro $FSurChro $M"
}
}
Espionne "lesDD et les M: [llength $LesLocsNom]"
set LesLocsNomPreTriees [lsort -command CompareChroDebut $LesLocsNom]
set LesLocsNomTriees [lsort -command CompareChroFin $LesLocsNomPreTriees]
lappend LesLocsNomTriees "bidon bidon bidon bidon bidon"
#########
#set FichierBob "[RepertoireDuGenome]/bob"
#SauveLesLignes $LesLocsNomTriees dans $FichierBob
#exit
#########
set OldChromo "zzzz"
set OldInf 1111111111111111
set OldSup 0
set LaSortie {}
foreach Loc $LesLocsNomTriees {
if {$Loc!="bidon bidon bidon bidon bidon"} {
scan $Loc "%s %d %d %s" chromo inf sup code
if {($chromo == $OldChromo) && ([expr $inf-$OldSup]<1000)} {
if {![info exists LesMemes]} { set LesMemes $Oldcode }
lappend LesMemes $code
} else {
if {[info exists LesMemes]} {
lappend LaSortie [join $LesMemes " "]
unset LesMemes
}
}
set OldChromo $chromo
set OldInf $inf
set OldSup $sup
set Oldcode $code
}
}
set FichierDesClonesEnOverlap "[RepertoireDuGenome]/ANALYSE/miRNAs/LocOverlapDDmiRNAs"
if {![file exists $FichierDesClonesEnOverlap] || [file exists $FichierDesClonesEnOverlap] && [OuiOuNon "Do you want to replace $FichierDesClonesEnOverlap"]} {
if {$LaSortie=={}} {
Sauve "No overlaps were found" dans $FichierDesClonesEnOverlap
} else {
#set Sortie [TrieLaSortie $LaSortie]
Espionne "fin"
SauveLesLignes $LaSortie dans $FichierDesClonesEnOverlap
}
}
return $FichierDesClonesEnOverlap
}
proc CompareLocalisations2 {FichierLesDDLocsSansFct} {
# FichierLesDDLocsSansFct "ANALYSE/miRNAs/LesDDLocSansFct" (248)
# FichierDesmiRNAs "ANALYSE/miRNAs/LesM" (188)
foreach Nom [CreeListePourFichierAUneColonne $FichierLesDDLocsSansFct] {
if {$Nom==""} {continue}
set Vu($Nom) 1
}
set FichierFinal "[RepertoireDuGenome]/ANALYSE/finaaal_6jul05_avecMAetSel_mitoch"
foreach Ligne [LesLignesDuFichier $FichierFinal] {
if {$Ligne==""} {continue}
set LesInfos [split $Ligne "\t"]
set JR [lindex $LesInfos 1]
if {![info exists Vu($JR)]} {continue}
set Chro [lindex $LesInfos 29]
set Deb [lindex $LesInfos 30]
set Fin [lindex $LesInfos 31]
#set Sens [lindex $LesInfos 32]
lappend LesLocsNom "$Chro $Deb $Fin $JR"
}
Espionne "lesDD: [llength $LesLocsNom]"
##
set FichierLocsNomMIR "[RepertoireDuGenome]/ANALYSE/miRNAs/ftp_sanger_genome_modifie2"
set C [ContenuDuFichier $FichierLocsNomMIR]
set LesLocsNommirna [split $C "\n"]
set LesLocsNom [concat $LesLocsNom $LesLocsNommirna]
##
Espionne "lesDD et les M: [llength $LesLocsNom]"
set LesLocsNomPreTriees [lsort -command CompareChroDebut $LesLocsNom]
set LesLocsNomTriees [lsort -command CompareChroFin $LesLocsNomPreTriees]
lappend LesLocsNomTriees "bidon bidon bidon bidon bidon"
#########
#set FichierBob "[RepertoireDuGenome]/bob"
#SauveLesLignes $LesLocsNomTriees dans $FichierBob
#exit
#########
set OldChromo "zzzz"
set OldInf 1111111111111111
set OldSup 0
set LaSortie {}
foreach Loc $LesLocsNomTriees {
if {$Loc!="bidon bidon bidon bidon bidon"} {
scan $Loc "%s %d %d %s" chromo inf sup code
if {($chromo == $OldChromo) && ([expr $inf-$OldSup]<4000)} {
if {![info exists LesMemes]} { set LesMemes $Oldcode }
lappend LesMemes $code
} else {
if {[info exists LesMemes]} {
lappend LaSortie [join $LesMemes " "]
unset LesMemes
}
}
set OldChromo $chromo
set OldInf $inf
set OldSup $sup
set Oldcode $code
}
}
set FichierDesClonesEnOverlap "[RepertoireDuGenome]/ANALYSE/miRNAs/LocOverlapDDmiRNAs2"
if {![file exists $FichierDesClonesEnOverlap] || [file exists $FichierDesClonesEnOverlap] && [OuiOuNon "Do you want to replace $FichierDesClonesEnOverlap"]} {
if {$LaSortie=={}} {
Sauve "No overlaps were found" dans $FichierDesClonesEnOverlap
} else {
#set Sortie [TrieLaSortie $LaSortie]
Espionne "fin"
SauveLesLignes $LaSortie dans $FichierDesClonesEnOverlap
}
}
return $FichierDesClonesEnOverlap
}
proc CompareMTM {} {
set LesHeaderRR [MutationRR ListOf Header]
set LesHeaderVB [MutationVB ListOf Header]
foreach H $LesHeaderRR {
foreach Pid [MutationVB ListOf Pid] {
if {[MutationRR $Pid $H]!=[MutationVB $Pid $H]} { Espionne "$Pid $H [MutationRR $Pid $H]!=[MutationVB $Pid $H]" }
}
}
foreach H $LesHeaderVB {
if { [lsearch $LesHeaderRR $H] < 0 } { lappend LesNouveauxHeaders $H; continue }
foreach Pid [MutationVB ListOf Pid] {
if {[MutationRR $Pid $H]!=[MutationVB $Pid $H]} { Espionne "$Pid $H [MutationRR $Pid $H]!=[MutationVB $Pid $H]" }
}
}
foreach H $LesNouveauxHeaders {
set LesNouveaux {}
foreach Pid [MutationVB ListOf Pid] {
lappend LesNouveaux [MutationVB $Pid $H]
}
set LesNouveaux [lsort -unique $LesNouveaux]
AfficheVariable [join $LesNouveaux "\n"] "" $H
}
}
proc CompareMachin {} {
set Fichier "/genomics/link/UCSCGenomes/Mus_musculus/database/kgXref.txt"
set LesLignes [LesLignesDuFichier $Fichier]
foreach Ligne $LesLignes {
set LesMots [split $Ligne "\t"]
set KgId [lindex $LesMots 0]
set mRNA [lindex $LesMots 1]
set SwAcc [lindex $LesMots 2]
set Gn [lindex $LesMots 4]
set GnMaj [string toupper $Gn]
set GnMin [string tolower $Gn]
set RsAcc [lindex $LesMots 5]
set Des [lindex $LesMots 7]
Espionne "Gn $Gn"
Espionne "GnMaj $GnMaj"
Espionne "GnMin $GnMin"
}
}
proc CompareMaskingEtReMasking {} {
global RepertoireDuGenome
set FichierNouveau "$RepertoireDuGenome/fiches/polylocalise.merge"
set ChangementsNoLoc ""
set ChangementsMonoLoc ""
set ChangementsPolyLoc ""
set ChangementsMayBePolyLoc ""
set Finale ""
append Finale [format "GscopeCode %-25s %-25s %-20s %-5s RepeatType\n" "LocBeforeRM" "LocAfterRM" "ReMask" "Percent"]
#Espionne $Finale
foreach Ligne [LesLignesDuFichier $FichierNouveau] {
scan $Ligne "%s %s" Nom TypeLocApres
#Espionne $Nom
set Avant [PolyLocalise $Nom]
#Espionne $Avant
set Mask [QuelMask2 $Nom]
set Repeat [QuelTypeRepeat2 $Nom]
set Percent [QuelPourcent2 $Nom]
if {$Avant!=$TypeLocApres && $Avant=="NoLocalization"} {
append ChangementsNoLoc [format "$Nom %-25s %-25s %-20s %-5s $Repeat\n" $Avant $TypeLocApres $Mask $Percent]
continue
} elseif {$Avant!=$TypeLocApres && $Avant=="MonoLocalization"} {
append ChangementsMonoLoc [format "$Nom %-25s %-25s %-20s %-5s $Repeat\n" $Avant $TypeLocApres $Mask $Percent]
continue
} elseif {$Avant!=$TypeLocApres && $Avant=="PolyLocalization"} {
append ChangementsPolyLoc [format "$Nom %-25s %-25s %-20s %-5s $Repeat\n" $Avant $TypeLocApres $Mask $Percent]
continue
} elseif {$Avant!=$TypeLocApres && $Avant=="MayBePolyLocalization"} {
append ChangementsMayBePolyLoc [format "$Nom %-25s %-25s %-20s %-5s $Repeat\n" $Avant $TypeLocApres $Mask $Percent]
continue
}
}
append Finale $ChangementsPolyLoc "\n"
append Finale $ChangementsMonoLoc "\n"
append Finale $ChangementsMayBePolyLoc "\n"
append Finale $ChangementsNoLoc "\n"
return $Finale
}
proc CompareNoms {TxtA TxtB} {
set t1 [string range $TxtA [expr {[string first " " $TxtA]+1}] end]
set t2 [string range $TxtB [expr {[string first " " $TxtB]+1}] end]
if {$t1 > $t2} {return 1}
if {$t1 == $t2} {return 0}
if {$t1 < $t2} {return -1}
}
proc CompareOrganismFromOrthoInspectorAndYannis {} {
foreach TYA [OrganismFromYannis ListOf TaxId] {
set OSYA [OrganismFromYannis $TYA OS]
set FullOsYA [OrganismFromYannis $TYA FullOs]
set TOI [OrganismFromOrthoInspector $TYA TaxId]
if {$TOI==""} {
set TOI [OrganismFromOrthoInspector $FullOsYA TaxId]
if {$TOI==""} {
set TOI [OrganismFromOrthoInspector $FullOsYA TaxId]
if {$TOI==""} { FaireLire "Je ne trouve pas\n$TYA $FullOsYA\ndans OrthoInspector" ; continue }
}
}
set FullOsOI [OrganismFromOrthoInspector $TYA FullOs]
if {$FullOsYA==$FullOsOI} { continue }
Espionne "$FullOsYA\n$FullOsOI"
Espionne
}
}
proc CompareOrganismsOiYannis {} {
foreach TOI [OiOrganism ListOf TaxId] {
set TYA [YannisOrganism $TOI TaxId]
# Espionne "$TOI $TYA"
}
Espionne ""
foreach TYA [YannisOrganism ListOf TaxId] {
set TOI [OrganismFromOrthoInspector $TYA TaxId]
set FOS [YannisOrganism $TYA FullOs]
set OS [YannisOrganism $TYA OS]
if {$TOI==""} {
set TOI [OrganismFromOrthoInspector $OS TaxId]
set FOSoi [OrganismFromOrthoInspector $TOI FullOs]
Espionne "$TYA $TOI $FOS $FOSoi"
}
}
}
proc ComparePfamDesEtPfamGo {} {
#Est ce que les x Pfam (avec binding dans la des) sont present dans les BindingPfam provenant de GO -> NON (y Pfam n'ont pas de GO Binding correspondant)
#x=71 (g17/SpliRetMouse2008 + g17/SpliRetRat2008) y=31
#x=88 (g20/SpliRetMouse2009 + g20/SpliRetRat2009) y=43
set i 0
set LesBindingPfamFromGo [GoGetFromGo GO:0005488 PFAM "" "" "Down"]
#set File "/genomics/link/SpliRetMouse2008/BindingPfam/BindingPfamFromDes/PfamDesFrom1500.txt"
set File "/genomics/link/SpliRetMouse2009/BindingPfam/BindingPfamFromDes/PfamDesFrom1500.txt"
foreach Ligne [LesLignesDuFichier $File] {
set trouve 0
set BindingPfamFromDes [lindex [split $Ligne "\t"] 0]
set Des [lindex [split $Ligne "\t"] 2]
if {[regexp "binding" $Des]} {
foreach BindingPfamFromGo $LesBindingPfamFromGo {
if {$BindingPfamFromDes == $BindingPfamFromGo} {
set trouve 1
break
}
}
if {!$trouve} {
incr i
Espionne "$BindingPfamFromDes pas trouve dans go ($Des)"
}
}
}
Espionne "$i n'ont pas de GO binding correspondant"
}
proc CompareProbesetFromAffyetBioC {} {
#nous avons, pour la puce HuGene-1_0-st-v1, 33 297 transcrit_id (probeset_id par abus de langage) dans le fichier affy et que 33321 dans BioConducteur.
#nous essayons avec cette proc de comprendre pourquoi BioC en perd 976
#trouve pas de reponse ici, suppose que ensembl (ce que prend Bioc) a fait son propre mapping et elimine celles qui ne passaient ses criteres de selection
set FileBioC "/genomics/link/g20/R_GxDB/liverGIST/HuGene1.0_allPS"
set LesLignesBioC [LesLignesDuFichier $FileBioC]
foreach IdBioC $LesLignesBioC {
if {$IdBioC=="x"} {continue}
set IdBioC [string trim $IdBioC]
lappend LesIdBioC $IdBioC
set VuDansBioC($IdBioC) 1
}
set FileTr "/genomics/link/affyArrayAnnot/HuGene-1_0/AffyAnno20130326/HuGene-1_0-st-v1.na33.2.hg19.transcript.csv"
set LesLignesTr [TabulonsSansQuote $FileTr "," ";" " " "GetListOfValues"]
set DansBioC 0; set PasBioC 0
set nbmRNA 0; set nbmRNABioC 0; set nbmRNANotBioC 0
foreach LigneTr $LesLignesTr {
set LesxhybmRNA {}
set LesElmtsTr [split $LigneTr ";"]
set IdTr [lindex $LesElmtsTr 0]
set IdTr [string trim $IdTr]
lappend LesIdTr $IdTr
set mrnaassign [lindex $LesElmtsTr 8]
regsub -all "///" $mrnaassign "^" mrnaassign
regsub -all "//" $mrnaassign "°" mrnaassign
foreach item [split $mrnaassign "^"] {
incr nbmRNA
#peut changer l index "8" ici pour voir une diff avec autre chose. par ex par l index "4" pour voir ac assignment score
set xhybmRNA [string trim [lindex [split $item "°"] 8]]
if {[info exists VuDansBioC($IdTr)]} {
incr nbmRNABioC
if {![info exists AlreadySeenBioC($xhybmRNA)]} {set AlreadySeenBioC($xhybmRNA) 0}
incr AlreadySeenBioC($xhybmRNA)
lappend LesxhybmRNABioC $xhybmRNA
} else {
incr nbmRNANotBioC
if {![info exists AlreadySeenNotBioC($xhybmRNA)]} {set AlreadySeenNotBioC($xhybmRNA) 0}
incr AlreadySeenNotBioC($xhybmRNA)
lappend LesxhybmRNANotBioC $xhybmRNA
}
}
set Sw [lindex $LesElmtsTr 9]
set Crosshyb [lindex $LesElmtsTr 16]
set Category [lindex $LesElmtsTr 17]
if {[info exists VuDansBioC($IdTr)]} {
incr DansBioC
if {![info exists DejaVuBioC($Crosshyb)]} {set DejaVuBioC($Crosshyb) 0}
incr DejaVuBioC($Crosshyb)
if {![info exists DejaVuBioC($Category)]} {set DejaVuBioC($Category) 0}
incr DejaVuBioC($Category)
lappend LesCrosshybBioC $Crosshyb
lappend LesCategoryBioC $Category
} else {
incr PasBioC
if {![info exists DejaVuNotBioC($Crosshyb)]} {set DejaVuNotBioC($Crosshyb) 0}
incr DejaVuNotBioC($Crosshyb)
if {![info exists DejaVuNotBioC($Category)]} {set DejaVuNotBioC($Category) 0}
incr DejaVuNotBioC($Category)
lappend LesCrosshybNotBioC $Crosshyb
lappend LesCategoryNotBioC $Category
}
}
set LesxhybmRNABioC [lsort -unique $LesxhybmRNABioC]
set LesxhybmRNANotBioC [lsort -unique $LesxhybmRNANotBioC]
Espionne "nbmRNA $nbmRNA"
Espionne "nbmRNABioC $nbmRNABioC"
Espionne "nbmRNANotBioC $nbmRNANotBioC"
Espionne "LesxhybmRNABioC $LesxhybmRNABioC"
foreach xhybmRNABioC $LesxhybmRNABioC {
Espionne "$xhybmRNABioC $AlreadySeenBioC($xhybmRNABioC)"
}
Espionne "LesxhybmRNANotBioC $LesxhybmRNANotBioC"
foreach xhybmRNANotBioC $LesxhybmRNANotBioC {
Espionne "$xhybmRNANotBioC $AlreadySeenNotBioC($xhybmRNANotBioC)"
}
set LesCrosshybBioC [ListeSansDoublon $LesCrosshybBioC]
set LesCategoryBioC [ListeSansDoublon $LesCategoryBioC]
set LesCrosshybNotBioC [ListeSansDoublon $LesCrosshybNotBioC]
set LesCategoryNotBioC [ListeSansDoublon $LesCategoryNotBioC]
Espionne ""
Espionne "DansBioC $DansBioC"
Espionne "PasBioC $PasBioC"
Espionne "CrosshybBioC $LesCrosshybBioC"
foreach CrosshybBioC $LesCrosshybBioC {
Espionne "$CrosshybBioC => $DejaVuBioC($CrosshybBioC)"
}
Espionne "CrosshybNotBioC $LesCrosshybNotBioC"
foreach CrosshybNotBioC $LesCrosshybNotBioC {
Espionne "$CrosshybNotBioC => $DejaVuNotBioC($CrosshybNotBioC)"
}
Espionne "CategoryBioC $LesCategoryBioC"
foreach CategoryBioC $LesCategoryBioC {
Espionne "$CategoryBioC => $DejaVuBioC($CategoryBioC)"
}
Espionne "CategoryNotBioC $LesCategoryNotBioC"
foreach CategoryNotBioC $LesCategoryNotBioC {
Espionne "$CategoryNotBioC => $DejaVuNotBioC($CategoryNotBioC)"
}
Espionne ""
Espionne "LesIdBioC [llength $LesIdBioC]"
Espionne "LesIdTr [llength $LesIdTr]"
Espionne "LesIdBioCUnique [llength [ListeSansDoublon $LesIdBioC]]"
Espionne "LesIdTrUnique [llength [ListeSansDoublon $LesIdTr]]"
Espionne ""
Espionne "DsBioCPasTrIdTr [ListsComplement $LesIdBioC $LesIdTr]"
Espionne "DsBioCPasTrIdTr Nb [llength [ListsComplement $LesIdBioC $LesIdTr]]"
Espionne "DsTrIdTrPasBioC [ListsComplement $LesIdTr $LesIdBioC]"
Espionne "DsTrIdTrPasBioC Nb [llength [ListsComplement $LesIdTr $LesIdBioC]]"
}
proc CompareProfilsDDProfilsMb {} {
set FichierG "[RepertoireDuGenome]/pourgscope_FromRegine_mbs_gscopecode"
foreach Ligne [LesLignesDuFichier $FichierG] {
set Ligne [string trim $Ligne]
if {$Ligne=={}} {continue}
set CC [lindex $Ligne 0]
set DD [lindex $Ligne 1]
set G($CC) $DD
}
#profil gscope
set FichierHNK "/genomics/link/HeadNeckDD/fiches/FoldExpression"
foreach Ligne [LesLignesDuFichier $FichierHNK] {
set Ligne [string trim $Ligne]
if {$Ligne=={}} {continue}
set HNK [lindex $Ligne 0]
set ProfilHNK [lindex $Ligne 1]
set P($HNK) $ProfilHNK
}
#comparaison des deux profils
set FichierNouveau "[RepertoireDuGenome]/compar_profils_mb_gscope"
set n 0
set b 0
set Fichier "[RepertoireDuGenome]/pourgscope_FromRegine_mbs"
foreach Ligne [LesLignesDuFichier $Fichier] {
#set Ligne [string trim $Ligne]
#if {$Ligne=={}} {continue}
set Code [lindex $Ligne 0]
set ProfilMb [lindex $Ligne 1]
if {[info exists G($Code)]} {
if {$G($Code)==""} {
continue
} else {
set DD $G($Code)
set HNK [AncienNom $DD]
if {[info exists P($HNK)]} {set ProfilGscope $P($HNK)}
if {($ProfilMb=="N" && $ProfilGscope=="-") || ($ProfilMb=="T" && $ProfilGscope=="+")} {
incr b
set Compar 1
} else {
incr n
set Compar 0
}
AppendAuFichier $FichierNouveau "$Code\t$DD\t$ProfilMb\t$ProfilGscope\t$Compar"
}
}
}
return "meme prof: $b -- prof dif: $n"
}
proc ComparePv1 {LA LB} {
if {[regexp {^GscopeId} $LA]} {return -1}
if {[regexp {^GscopeId} $LB]} {return 1}
return [CompareIeme $LA $LB 1 ";"]
}
proc CompareReduction {A B} {
set LesMots [split $A ";"]
set NomA [lindex $LesMots 0]
set GenA [lindex $LesMots 2]
set CopA [lindex $LesMots 4]
set LesMots [split $B ";"]
set NomB [lindex $LesMots 0]
set GenB [lindex $LesMots 2]
set CopB [lindex $LesMots 4]
regsub {\+7 et \+8} $CopA "100" CopA
regsub {\+7 et \+8} $CopB "100" CopB
regsub {\+7 et \-8} $CopA "200" CopA
regsub {\+7 et \-8} $CopB "200" CopB
regsub {\-} $CopA "300" CopA
regsub {\-} $CopB "300" CopB
if {[set Cop [string compare $CopA $CopB]]!=0} { return $Cop }
if {[set Gen [string compare $GenA $GenB]]!=0} { return $Gen }
return [string compare $NomA $NomB]
}
proc CompareSansPremierChamp {TexteA TexteB} {
set iB [string first " " $TexteA]
if {$iB < 0} {
set a ""
} else {
set a [string trimleft [string range $TexteA $iB end]]
}
set iB [string first " " $TexteB]
if {$iB < 0} {
set b ""
} else {
set b [string trimleft [string range $TexteB $iB end]]
}
return [string compare $a $b]
}
proc CompareSeulementLesNombres {TexteA TexteB} {
scan $TexteA "%s" a
scan $TexteB "%s" b
if {[regexp -nocase {[a-z]} $a] && [regexp -nocase {[a-z]} $b]} {return 0}
if {[regexp -nocase {[a-z]} $a] && [regexp -nocase {^[0-9]+$} $b]} {return 1}
if {[regexp -nocase {^[0-9]+$} $a] && [regexp -nocase {[a-z]} $b]} {return -1}
if {[regexp -nocase {^[0-9]+$} $a] && [regexp -nocase {^[0-9]+$} $b]} {
if {[expr double($a) < double($b)]} { return -1}
if {[expr double($a) == double($b)]} { return 0}
if {[expr double($a) > double($b)]} { return 1}
}
}
proc CompareSources {DirA DirB {Action ""}} {
set LesMissingA {}
set LesMissingB {}
set LesCommuns {}
set LesDiff {}
set LesMemes {}
set LesA {}
set LesB {}
foreach A [lsort [glob -nocomplain "$DirA/*.tcl"]] {
set QA [file tail $A]
set ContenuA($QA) [ContenuDuFichier $A]
lappend LesQA $QA
lappend LesA $A
set FileA($QA) $A
}
foreach B [lsort [glob -nocomplain "$DirB/*.tcl"]] {
set QB [file tail $B]
set ContenuB($QB) [ContenuDuFichier $B]
lappend LesQB $QB
lappend LesB $B
set FileB($QB) $B
}
foreach QA $LesQA {
if { ! [info exists ContenuB($QA)]} { lappend LesMissingB $FileA($QA) ; continue}
lappend LesCommuns $QA
}
foreach QB $LesQB {
if { ! [info exists ContenuA($QB)]} { lappend LesMissingA $FileB($QB) ; continue}
}
foreach Q $LesCommuns {
if {$ContenuA($Q)==$ContenuB($Q)} { lappend LesMemes $Q ; continue }
lappend LesDiff $Q
}
AfficheListe $LesA "" "LesA"
AfficheListe $LesB "" "LesB"
AfficheListe $LesMissingA "" "LesMissingA"
AfficheListe $LesMissingB "" "LesMissingB"
AfficheListe $LesCommuns "" "LesCommuns"
AfficheListe $LesMemes "" "LesMemes"
while {1} {
set Zoom [AfficheListe $LesDiff "AvecRetour" "LesDiff"]
if {$Zoom==""} { break "" }
set A $FileA($Zoom)
set B $FileB($Zoom)
exec meld $A $B &
}
return ""
}
proc ComparemRNADeRet1324 {} {
set A 0; set B 0; set C 0; set D 0; set E 0; set F 0; set G 0; set Z 0; set Y 0; set Ybis 0; set X 0; set Xbis 0; set W 0
set Les1373RA {}
set LesRAdoubles {}
set LesRAAVerif {}
set LesRASsFiches {}
foreach I [RetChip2 ListOf Index] {
set AccmRNA1 ""; set Genre1 ""; set AccmRNA2 ""; set Genre2 ""
set JaiTrouveCorresEntre1324Et2717 0
set jaitrouvecorres 0
set toutestvide 0
set Des1 [RetChip2 $I "description_customer"]
set Ac1 [RetChip2 $I "DNA_acc"]
set Ac2 [RetChip2 $I "refseq_PIQOR"]
set Ac3 [RetChip2 $I "prot_acc"]
set Ac4 [RetChip2 $I "prot_acc_PIQOR"]
if { [regexp {^RA[0-9]+} $Des1] } {
puts "ligne $I Des1=$Des1 Ac1=$Ac1"
incr A
set Fichier "/genomics/link/Ret1324/fiches/Orf2Cluster2Access2Def2Expression"
set LesLignes [LesLignesDuFichier $Fichier]
foreach Ligne $LesLignes {
scan $Ligne "%s %s %s %s" RA1324 x y RA2717
if {$Des1==$RA2717} {
set JaiTrouveorresEntre1324Et2717 1
incr B
puts "**$RA1324"
foreach LeRa $Les1373RA {
set LaLigneLeRa [split $LeRa " "]
if { $RA1324==[lindex $LeRa 0]} {
lappend LesRAdoubles "$LeRa"
lappend LesRAdoubles "$RA1324 $I $Des1"
}
}
lappend Les1373RA "$RA1324 $I $Des1"
if {[file exists "/genomics/link/Ret1324/mrnatfa_Mus_musculus/$RA1324"]} {
incr C
set LAcRa1 [ContenuDuFichier "/genomics/link/Ret1324/mrnatfa_Mus_musculus/$RA1324"]
scan $LAcRa1 "%s %s %s %s %s" x y AccmRNA1 z Genre1
#puts "++$AccmRNA1++"
#puts "++$Genre1++"
} else {
incr D
puts "PAS DE FICHIER"
#lappend LesSsFiches "ligne $I Des1=$Des1 Ret1324=$RA1324"
}
set Fichier2 "/genomics/link/Ret1324/fiches/AccessDesProteinesEtDesmRNAsChoisis"
set LesLignes2 [LesLignesDuFichier $Fichier2]
foreach Ligne2 $LesLignes2 {
scan $Ligne2 "%s %s %s %s" NumRA AccProt AccmRNA Genre
if {$RA1324==$NumRA} {
incr E
set jaitrouvecorres 1
set AccmRNA2 $AccmRNA
set Genre2 $Genre
if {[string equal $AccmRNA2 "NomRNA"]} {
set AccmRNA2 ""
incr F
}
if {[string equal $Genre2 "NoOrganism"]} {
set Genre2 ""
}
if {$Genre2!="" && ![string equal $Genre2 "Mus"]} { puts "attention pas souris 2" }
#puts "--$AccmRNA2--"
#puts "--$Genre2--"
}
}
#puts "$Genre2"
Espionne "AccmRNA1=$AccmRNA1 Genre1=$Genre1 AccmRNA2=$AccmRNA2 Genre2=$Genre2\n"
if {$AccmRNA1!="" && $AccmRNA2!="" && $AccmRNA1==$AccmRNA2} {
incr Z
#puts "Z= $Z"
}
if {$AccmRNA1!="" && $AccmRNA2!="" && $AccmRNA1!=$AccmRNA2} {
incr Y
#puts "Y= $Y"
if {[string equal $Genre2 "Mus"]} {
incr Ybis
lappend LesRAAVerif "RA1324=$RA1324 ligne=$I Des1=$Des1"
# puts "Ybis= $Ybis"
}
}
if {$AccmRNA1=="" && $AccmRNA2==""} {
set toutestvide 1
incr W
lappend LesRASsFiches "RA1324=$RA1324 ligne=$I Des1=$Des1"
#puts "W= $W"
}
if {!$toutestvide && ($AccmRNA1=="" || $AccmRNA2=="")} {
incr X
#puts "X= $X"
if {$AccmRNA2!="" && ![string equal $Genre2 "Mus"]} {
incr Xbis
lappend LesRASsFiches "RA1324=$RA1324 ligne=$I Des1=$Des1"
# puts "Xbis= $Xbis"
}
}
}
}
if {!$JaiTrouveCorresEntre1324Et2717} {
incr G
#puts "G= $G"
puts "pas de corresp"
Espionne "AccmRNA1=$AccmRNA1 Genre1=$Genre1 AccmRNA2=$AccmRNA2 Genre2=$Genre2\n"
}
}
}
Espionne "A= $A =nb de RA"
Espionne "B= $B =nb ac une corres ds Ret1324"
Espionne "G= $G =nb ss une corres ds Ret1324"
Espionne "C= $C =nb ac un access mRNA 1"
Espionne "D= $D =nb ss access mRNA1"
Espionne "E-F= [expr $E-$F] =nb ac un access mRNA 2"
Espionne "F= $F =nb ss access mRNA 2"
Espionne "Z= $Z =nb ou les 2 mRNA st ="
Espionne "Y= $Y =nb ou les 2 mRNA st diff"
Espionne "Ybis $Ybis =nb ou les 2 mRNA souris st diff"
Espionne "X= $X =nb ou l un des 2 mRNA est vide"
Espionne "Xbis= $Xbis =nb (mRNA1 vide) de mRNA2 non vide et non souris"
Espionne "W= $W =nb ou les 2mRNA st vides"
set LesRAdoubles [lsort $LesRAdoubles]
EspionneL $LesRAdoubles
set NbDouble [llength $LesRAdoubles]
set NbDouble [expr $NbDouble/2]
Espionne "NbDouble= $NbDouble"
EspionneL $LesRAAVerif
set NbRAAVerif [llength $LesRAAVerif]
Espionne "NbRAAVerif= $NbRAAVerif"
EspionneL $LesRASsFiches
set NbRASsFiches [llength $LesRASsFiches]
Espionne "NbRASsFiches= $NbRASsFiches"
}
proc CompileBACCGH {Cas SeuilPlus SeuilMoins {LesPos ""} {LesNoms ""}} {
# liste des cas
if {$Cas!="meta" && $Cas!="nometa"} {return}
if {$Cas=="meta"} {
set LesCas {BAC806 BAC807 BAC810 BAC817 BAC818 BAC819 BAC826 BAC827}
} else {set LesCas {BAC808 BAC809 BAC811 BAC812 BAC814 BAC815 BAC816 BAC820 BAC821 BAC822 BAC823 BAC825}}
Espionne $LesCas
Espionne [llength $LesCas]
set ListeChro {HS01 HS02 HS03 HS04 HS05 HS06 HS07 HS08 HS09 HS10 HS11 HS12 HS13 HS14 HS15 HS16 HS17 HS18 HS19 HS20 HS21 HS22 HSX HSY}
# position des cytobandes
set FichierBandesCytos "[RepertoireDuGenome]/PRIMA_Affichage/CytologicMap"
ChargeBandesCytologiques LesBandesCytos $FichierBandesCytos
foreach Chromosome $ListeChro {
if {![info exist LesBandesCytos($Chromosome,TailleP)]} {return ""}
set LesBandesP [lsort -decreasing [set LesBandesCytos($Chromosome,LesBandesP)]]
set LesBandesQ [lsort [set LesBandesCytos($Chromosome,LesBandesQ)]]
set LesBandesCytologiques $LesBandesP
foreach BandeQ $LesBandesQ {lappend LesBandesCytologiques $BandeQ}
set PosIni 0
foreach Bande $LesBandesCytologiques {
set LesInfos [set LesBandesCytos($Chromosome,$Bande)]
set PosFin [expr [lindex $LesInfos 0] * 1.e6]
set TailleBande [expr round(($PosFin-$PosIni)/1.e6)]
set Deb($Chromosome,$Bande) $PosIni
set Fin($Chromosome,$Bande) $PosFin
set PosIni $PosFin
}
}
# pour chaque fichier BAC
foreach BAC $LesCas {
set FichierCourbeBAC "[RepertoireDuGenome]/PRIMA_CGH/$BAC"
set NomFichierBAC [file tail $FichierCourbeBAC]
set x [InterrogeFichierCourbeCGH $FichierCourbeBAC "unset"]
set VMin [InterrogeFichierCourbeCGH $FichierCourbeBAC VMin]
set VMax [InterrogeFichierCourbeCGH $FichierCourbeBAC VMax]
set VMaxf [format "%.2f" [expr $VMax*1.0]]
set VMinf [format "%.2f" [expr $VMin*1.0]]
lappend LesBornes "$BAC\t$VMinf\t$VMaxf"
foreach Chromosome $ListeChro {
set CytoBand ""
if {![info exist LesBandesCytos($Chromosome,TailleP)]} {return ""}
set LesBandesP [lsort -decreasing [set LesBandesCytos($Chromosome,LesBandesP)]]
set LesBandesQ [lsort [set LesBandesCytos($Chromosome,LesBandesQ)]]
set LesBandesCytologiques $LesBandesP
foreach BandeQ $LesBandesQ {lappend LesBandesCytologiques $BandeQ}
if {[info exists TabC]} {unset TabC}
ChargeFichierCourbeCGH TabC $FichierCourbeBAC $Chromosome $LesPos
if {[info exists TabC($FichierCourbeBAC,Chromosome,$Chromosome,LesPos)]} {
foreach Pos [set TabC($FichierCourbeBAC,Chromosome,$Chromosome,LesPos)] {
foreach LInfo [set TabC($FichierCourbeBAC,Chromosome,$Chromosome,$Pos)] {
set PosMid [lindex $LInfo 1]
#cytobande
#if {[info exists B($Chromosome,$PosMid)]} {set CytoBand $B($Chromosome,$PosMid)}
foreach Bande $LesBandesCytologiques {
if {$PosMid>=$Deb($Chromosome,$Bande) && $PosMid<=$Fin($Chromosome,$Bande)} {
set CytoBand $Bande
}
}
if {$CytoBand==""} {Espionne "coucou $Chromosome $PosMid"}
set Val [lindex $LInfo 2]
set Value [format "%.2f" [expr $Val*1.0]]
if {$Value>0 && $Value>$SeuilPlus} {
lappend LesPlus "$Cas\t$BAC\t$Chromosome\t$CytoBand\t$PosMid\t$Val"
}
if {$Value<0 && $Value<$SeuilMoins} {
lappend LesMoins "$Cas\t$BAC\t$Chromosome\t$CytoBand\t$PosMid\t$Val"
}
}
}
}
}
}
#### fin boucle ###
#Espionne "min et max:"
EspionneL "$LesBornes"
Espionne "---- liste des + ----"
EspionneL $LesPlus
Espionne "---- FIN liste des + ----"
#EspionneL $LesMoins
foreach Elt $LesPlus {
set LesInfos [split $Elt "\t"]
set Band [lindex $LesInfos 3]
set Sample [lindex $LesInfos 1]
if {![info exists Vus($Band,$Sample)]} {
set Vus($Band,$Sample) 1
if {![info exists N($Band)]} {set N($Band) 1} else {set N($Band) [expr $N($Band)+1]}
}
}
foreach {B C} [array get N] {
lappend L "$B\t$C"
}
foreach Elt $LesMoins {
set LesInfos [split $Elt "\t"]
set Band [lindex $LesInfos 3]
set Sample [lindex $LesInfos 1]
if {![info exists Vues($Band,$Sample)]} {
set Vues($Band,$Sample) 1
if {![info exists Nb($Band)]} {set Nb($Band) 1} else {set Nb($Band) [expr $Nb($Band)+1]}
}
}
foreach {B C} [array get Nb] {
lappend Lmoins "$B\t$C"
}
EspionneL "plus: $L"
EspionneL "moins: $Lmoins"
return
}
proc CompilePourGeneDonne {{Cas ""} {Chromosome ""} {Debut ""} {Fin ""} {LesPos ""} {LesNoms ""}} {
#!! renvoyer le resultat dans un fichier
# Cas: voir ci-dessous
# Chromosome: HS01 par ex
if {$Debut=="" || $Fin==""} {return}
# Les cas
if {$Cas=="meta"} {
set LesBAC {BAC806 BAC807 BAC810 BAC817 BAC818 BAC819 BAC826 BAC827}
set LesOligo {Oligo806 Oligo807 Oligo810 Oligo817 Oligo818 Oligo819 Oligo826 Oligo827}
set LesAffy {RMA7 RMA711 RMA821 RMA855 RMA818 RMA918 RMA921}
}
if {$Cas=="nometa"} {
set LesBAC {BAC808 BAC809 BAC811 BAC812 BAC814 BAC815 BAC816 BAC820 BAC821 BAC822 BAC823 BAC825}
set LesOligo {Oligo809 Oligo811 Oligo812 Oligo814 Oligo815 Oligo816 Oligo820 Oligo821 Oligo822 Oligo823 Oligo825}
set LesAffy {RMA845 RMA886 RMA819 RMA926 RMA923 RMA924 RMA925}
}
if {$Cas=="cl"} {
#set LesBAC {BAC808 BAC809 BAC811 BAC812 BAC814 BAC815 BAC816 BAC820 BAC821 BAC822 BAC823 BAC825}
set LesOligo {CL_22rv1 CL_DU145 CL_LNCaP CL_PC3}
set LesAffy {RMA22Rv1 RMADU145 RMALNCaP RMAPC3}
}
if {$Chromosome==""} {set Chromosome [ChoixDuChromosome]}
set FichierLocCGHBAC "[RepertoireDuGenome]/PRIMA_CGH/CGH_BAC_localisation"
if {![file exists $FichierLocCGHBAC] || $FichierLocCGHBAC == ""} {return ""}
set FichierLocCGHOligo "[RepertoireDuGenome]/PRIMA_CGH/CGH_Oligo_localisation"
if {![file exists $FichierLocCGHOligo] || $FichierLocCGHOligo == ""} {return ""}
ChargeFichierLoc TabB $FichierLocCGHBAC $Chromosome $LesNoms
ChargeFichierLoc TabO $FichierLocCGHOligo $Chromosome $LesNoms
set nChromosome [NumeroDuChromosome $Chromosome]
set PosInfInteret $Debut
set PosSupInteret $Fin
################## Les donnees BAC ################
# pour chaque echantillon
if {[info exists LesBAC]} {
foreach BAC $LesBAC {
set FichierCourbeBAC "[RepertoireDuGenome]/PRIMA_CGH/$BAC"
ChargeFichierCourbeCGH TabC $FichierCourbeBAC $Chromosome $LesPos
if {[info exists TabC($FichierCourbeBAC,Chromosome,$Chromosome,LesPos)]} {
foreach Pos [set TabC($FichierCourbeBAC,Chromosome,$Chromosome,LesPos)] {
if {$Pos>=$PosInfInteret && $Pos<=$PosSupInteret} {
foreach LInfo [set TabC($FichierCourbeBAC,Chromosome,$Chromosome,$Pos)] {
set PosMid [lindex $LInfo 1]
set Val [lindex $LInfo 2]
if {[info exists TabB($FichierLocCGHBAC,Chromosome,$Chromosome,LesNoms)]} {
foreach Nom [set TabB($FichierLocCGHBAC,Chromosome,$Chromosome,LesNoms)] {
foreach LInfo [set TabB($FichierLocCGHBAC,Chromosome,$Chromosome,$Nom)] {
set DebutBAC [expr [lindex $LInfo 1]*1.0]
set FinBAC [expr [lindex $LInfo 2]*1.0]
set PosMilieu [expr ($FinBAC-$DebutBAC)/2 +$DebutBAC]
if {$PosMilieu==$PosMid} {
set NomBAC [lindex $LInfo 3]
set IDBAC [lindex $LInfo 4]
set InterIDBAC [lindex $LInfo 5]
lappend LesDonneesBAC "$BAC\t$NomBAC\t$IDBAC\t$InterIDBAC\t$PosMid\t$Val"
}
}
}
}
}
}
}
}
}
}
################## Les donnees Oligo ################
foreach Oligo $LesOligo {
set FichierCourbeOligo "[RepertoireDuGenome]/PRIMA_CGH/$Oligo"
ChargeFichierCourbeCGH TabL $FichierCourbeOligo $Chromosome $LesPos
if {[info exists TabL($FichierCourbeOligo,Chromosome,$Chromosome,LesPos)]} {
foreach Pos [set TabL($FichierCourbeOligo,Chromosome,$Chromosome,LesPos)] {
if {$Pos>=$PosInfInteret && $Pos<=$PosSupInteret} {
set PosMid $Pos
foreach LInfo [set TabL($FichierCourbeOligo,Chromosome,$Chromosome,$Pos)] {
set Val [lindex $LInfo 3]
### tranfo log base 10 -> log base 2
set Val [expr $Val*log(10)/log(2)]
if {[info exists TabO($FichierLocCGHOligo,Chromosome,$Chromosome,LesNoms)]} {
foreach Nom [set TabO($FichierLocCGHOligo,Chromosome,$Chromosome,LesNoms)] {
set NomProbeIni toto
foreach LInfo [set TabO($FichierLocCGHOligo,Chromosome,$Chromosome,$Nom)] {
set DebutOli [expr [lindex $LInfo 1]*1.0]
set FinOli [expr [lindex $LInfo 2] *1.0]
set PosMilieu [expr ($FinOli-$DebutOli)/2 +$DebutOli]
if {$PosMilieu==$PosMid} {
set NomProbe [lindex $LInfo 3]
set Access [lindex $LInfo 4]
if {$NomProbe!=$NomProbeIni} {
lappend LesDonneesOligo "$Oligo\t$NomProbe\t$Access\t$PosMid\t$Val"
set NomProbeIni $NomProbe
}
}
}
}
}
}
}
}
}
}
################## Les donnees Affy ################
regsub "HS" $Chromosome "" num
if {[regexp "^0" $num]} {regsub "0" $num "" num}
set Chrom "chr$num"
set LesProbeSets [InterrogeAffy_UCSC "" human $Chrom LesProbeSets]
foreach ProbeSet $LesProbeSets {
set LesChros [InterrogeAffy_UCSC "" human $ProbeSet Chromosome]
if {[llength $LesChros]>1} {continue}
set LesDebuts [InterrogeAffy_UCSC "" human $ProbeSet $Chrom Debut]
set LesFins [InterrogeAffy_UCSC "" human $ProbeSet $Chrom Fin]
foreach Debut $LesDebuts Fin $LesFins {
set PosMid [expr ($Fin-$Debut)/2 + $Debut]
if {$PosMid>=$PosInfInteret && $PosMid<=$PosSupInteret} {
lappend L "$ProbeSet\t$PosMid"
}
}
#set Deb [expr [lrange $LesDebuts 0 0] *1.0]
#set Fin [expr [lrange $LesFins 0 0] *1.0]
#set PosMid [expr ($Fin-$Deb)/2 + $Deb]
}
set Ltriee [lsort -real -increasing -index 1 $L]
if {$Ltriee!=""} {
foreach Elt $Ltriee {
set LesInfos [split $Elt "\t"]
set PosMid [lindex $LesInfos 1]
set ProbeSet [lindex $LesInfos 0]
foreach Affy $LesAffy {
set FichierAffy "[RepertoireDuGenome]/PRIMA_Affy/$Affy"
if {![file exists $FichierAffy]} {return "$FichierAffy does not exist"}
set Val [InterrogeFichierAffyRMA $FichierAffy $ProbeSet Val]
lappend LesDonneesAffy "$Affy\t$ProbeSet\t$PosMid\t$Val"
set x [InterrogeFichierAffyRMA $FichierAffy "unset"]
}
}
}
####################### fin ###############################
if {[info exists LesBAC] && [info exists LesDonneesBAC]} {EspionneL $LesDonneesBAC}
EspionneL $LesDonneesOligo
EspionneL $LesDonneesAffy
return ""
}
proc CompilePourGraphDunGeneDonne {{Cas ""} {Chromosome ""} {Debut ""} {Fin ""} {LesPos ""} {LesNoms ""}} {
#!! renvoyer le resultat dans un fichier
# Cas: voir ci-dessous
# Chromosome: HS01 par ex
if {$Debut=="" || $Fin==""} {return}
# Les cas
if {$Cas=="meta"} {
set LesBAC {BAC806 BAC807 BAC810 BAC817 BAC818 BAC819 BAC826 BAC827}
set LesOligo {Oligo806 Oligo807 Oligo810 Oligo817 Oligo818 Oligo819 Oligo826 Oligo827}
set LesAffy {RMA7 RMA711 RMA821 RMA855 RMA818 RMA918 RMA921}
}
if {$Cas=="nometa"} {
set LesBAC {BAC808 BAC809 BAC811 BAC812 BAC814 BAC815 BAC816 BAC820 BAC821 BAC822 BAC823 BAC825}
set LesOligo {Oligo809 Oligo811 Oligo812 Oligo814 Oligo815 Oligo816 Oligo820 Oligo821 Oligo822 Oligo823 Oligo825}
set LesAffy {RMA845 RMA886 RMA819 RMA926 RMA923 RMA924 RMA925}
}
if {$Cas=="cl"} {
#set LesBAC {BAC808 BAC809 BAC811 BAC812 BAC814 BAC815 BAC816 BAC820 BAC821 BAC822 BAC823 BAC825}
set LesOligo {CL_22rv1 CL_DU145 CL_LNCaP CL_PC3}
set LesAffy {RMA22Rv1 RMADU145 RMALNCaP RMAPC3}
}
if {$Chromosome==""} {set Chromosome [ChoixDuChromosome]}
set FichierLocCGHBAC "[RepertoireDuGenome]/PRIMA_CGH/CGH_BAC_localisation"
if {![file exists $FichierLocCGHBAC] || $FichierLocCGHBAC == ""} {return ""}
set FichierLocCGHOligo "[RepertoireDuGenome]/PRIMA_CGH/CGH_Oligo_localisation"
if {![file exists $FichierLocCGHOligo] || $FichierLocCGHOligo == ""} {return ""}
ChargeFichierLoc TabB $FichierLocCGHBAC $Chromosome $LesNoms
ChargeFichierLoc TabO $FichierLocCGHOligo $Chromosome $LesNoms
set nChromosome [NumeroDuChromosome $Chromosome]
set PosInfInteret $Debut
set PosSupInteret $Fin
################## Les donnees BAC ################
# pour chaque echantillon
if {[info exists LesBAC]} {
foreach BAC $LesBAC {
set i 0
set FichierCourbeBAC "[RepertoireDuGenome]/PRIMA_CGH/$BAC"
ChargeFichierCourbeCGH TabC $FichierCourbeBAC $Chromosome $LesPos
if {[info exists TabC($FichierCourbeBAC,Chromosome,$Chromosome,LesPos)]} {
foreach Pos [set TabC($FichierCourbeBAC,Chromosome,$Chromosome,LesPos)] {
if {$Pos>=$PosInfInteret && $Pos<=$PosSupInteret} {
foreach LInfo [set TabC($FichierCourbeBAC,Chromosome,$Chromosome,$Pos)] {
set PosMid [lindex $LInfo 1]
set Val [lindex $LInfo 2]
if {[info exists TabB($FichierLocCGHBAC,Chromosome,$Chromosome,LesNoms)]} {
foreach Nom [set TabB($FichierLocCGHBAC,Chromosome,$Chromosome,LesNoms)] {
foreach LInfo [set TabB($FichierLocCGHBAC,Chromosome,$Chromosome,$Nom)] {
set DebutBAC [expr [lindex $LInfo 1]*1.0]
set FinBAC [expr [lindex $LInfo 2]*1.0]
set PosMilieu [expr ($FinBAC-$DebutBAC)/2 +$DebutBAC]
if {$PosMilieu==$PosMid} {
incr i
set NomBAC [lindex $LInfo 3]
set IDBAC [lindex $LInfo 4]
set InterIDBAC [lindex $LInfo 5]
lappend LesDonneesBAC "$BAC\t$NomBAC\t$IDBAC\t$InterIDBAC\t$PosMid\t$Val"
#set TabVal($i, $BAC, $NomBAC, $PosMid) $Val
}
}
}
}
}
}
}
}
}
}
################## Les donnees Oligo ################
foreach Oligo $LesOligo {
set FichierCourbeOligo "[RepertoireDuGenome]/PRIMA_CGH/$Oligo"
ChargeFichierCourbeCGH TabL $FichierCourbeOligo $Chromosome $LesPos
if {[info exists TabL($FichierCourbeOligo,Chromosome,$Chromosome,LesPos)]} {
foreach Pos [set TabL($FichierCourbeOligo,Chromosome,$Chromosome,LesPos)] {
if {$Pos>=$PosInfInteret && $Pos<=$PosSupInteret} {
set PosMid $Pos
foreach LInfo [set TabL($FichierCourbeOligo,Chromosome,$Chromosome,$Pos)] {
set Val [lindex $LInfo 3]
### tranfo log base 10 -> log base 2
set Val [expr $Val*log(10)/log(2)]
if {[info exists TabO($FichierLocCGHOligo,Chromosome,$Chromosome,LesNoms)]} {
foreach Nom [set TabO($FichierLocCGHOligo,Chromosome,$Chromosome,LesNoms)] {
set NomProbeIni toto
foreach LInfo [set TabO($FichierLocCGHOligo,Chromosome,$Chromosome,$Nom)] {
set DebutOli [expr [lindex $LInfo 1]*1.0]
set FinOli [expr [lindex $LInfo 2] *1.0]
set PosMilieu [expr ($FinOli-$DebutOli)/2 +$DebutOli]
if {$PosMilieu==$PosMid} {
set NomProbe [lindex $LInfo 3]
set Access [lindex $LInfo 4]
if {$NomProbe!=$NomProbeIni} {
lappend LesDonneesOligo "$Oligo\t$NomProbe\t$Access\t$PosMid\t$Val"
set NomProbeIni $NomProbe
}
}
}
}
}
}
}
}
}
}
################## Les donnees Affy ################
regsub "HS" $Chromosome "" num
if {[regexp "^0" $num]} {regsub "0" $num "" num}
set Chrom "chr$num"
set LesProbeSets [InterrogeAffy_UCSC "" human $Chrom LesProbeSets]
foreach ProbeSet $LesProbeSets {
set LesChros [InterrogeAffy_UCSC "" human $ProbeSet Chromosome]
if {[llength $LesChros]>1} {continue}
set LesDebuts [InterrogeAffy_UCSC "" human $ProbeSet $Chrom Debut]
set LesFins [InterrogeAffy_UCSC "" human $ProbeSet $Chrom Fin]
foreach Debut $LesDebuts Fin $LesFins {
set PosMid [expr ($Fin-$Debut)/2 + $Debut]
if {$PosMid>=$PosInfInteret && $PosMid<=$PosSupInteret} {
lappend L "$ProbeSet\t$PosMid"
}
}
#set Deb [expr [lrange $LesDebuts 0 0] *1.0]
#set Fin [expr [lrange $LesFins 0 0] *1.0]
#set PosMid [expr ($Fin-$Deb)/2 + $Deb]
}
set Ltriee [lsort -real -increasing -index 1 $L]
if {$Ltriee!=""} {
foreach Elt $Ltriee {
set LesInfos [split $Elt "\t"]
set PosMid [lindex $LesInfos 1]
set ProbeSet [lindex $LesInfos 0]
foreach Affy $LesAffy {
set FichierAffy "[RepertoireDuGenome]/PRIMA_Affy/$Affy"
if {![file exists $FichierAffy]} {return "$FichierAffy does not exist"}
set Val [InterrogeFichierAffyRMA $FichierAffy $ProbeSet Val]
lappend LesDonneesAffy "$Affy\t$ProbeSet\t$PosMid\t$Val"
set x [InterrogeFichierAffyRMA $FichierAffy "unset"]
}
}
}
####################### fin ###############################
if {[info exists LesBAC] && [info exists LesDonneesBAC]} {EspionneL $LesDonneesBAC}
EspionneL $LesDonneesOligo
EspionneL $LesDonneesAffy
return ""
}
proc CompilePourPositionDonnee {{Cas ""} {Chromosome ""} {CytoBandInteret ""} {LesPos ""} {LesNoms ""}} {
#!! renvoyer le resultat dans un fichier
# Cas: voir ci-dessous
# Chromosome: HS01 par ex
# CytoBandInteret: 7q11.23 par ex
# Les cas
if {$Cas=="meta"} {
set LesBAC {BAC806 BAC807 BAC810 BAC817 BAC818 BAC819 BAC826 BAC827}
set LesOligo {Oligo806 Oligo807 Oligo810 Oligo817 Oligo818 Oligo819 Oligo826 Oligo827}
set LesAffy {RMA7 RMA711 RMA821 RMA855 RMA818 RMA918 RMA921}
}
if {$Cas=="nometa"} {
set LesBAC {BAC808 BAC809 BAC811 BAC812 BAC814 BAC815 BAC816 BAC820 BAC821 BAC822 BAC823 BAC825}
set LesOligo {Oligo809 Oligo811 Oligo812 Oligo814 Oligo815 Oligo816 Oligo820 Oligo821 Oligo822 Oligo823 Oligo825}
set LesAffy {RMA845 RMA886 RMA819 RMA926 RMA923 RMA924 RMA925}
}
if {$Cas=="cl"} {
#set LesBAC {BAC808 BAC809 BAC811 BAC812 BAC814 BAC815 BAC816 BAC820 BAC821 BAC822 BAC823 BAC825}
set LesOligo {CL_22rv1 CL_DU145 CL_LNCaP CL_PC3}
set LesAffy {RMA22Rv1 RMADU145 RMALNCaP RMAPC3}
}
if {$Chromosome==""} {set Chromosome [ChoixDuChromosome]}
set FichierLocCGHBAC "[RepertoireDuGenome]/PRIMA_CGH/CGH_BAC_localisation"
if {![file exists $FichierLocCGHBAC] || $FichierLocCGHBAC == ""} {return ""}
set FichierLocCGHOligo "[RepertoireDuGenome]/PRIMA_CGH/CGH_Oligo_localisation"
if {![file exists $FichierLocCGHOligo] || $FichierLocCGHOligo == ""} {return ""}
ChargeFichierLoc TabB $FichierLocCGHBAC $Chromosome $LesNoms
ChargeFichierLoc TabO $FichierLocCGHOligo $Chromosome $LesNoms
set nChromosome [NumeroDuChromosome $Chromosome]
set FichierBandesCytos "[RepertoireDuGenome]/PRIMA_Affichage/CytologicMap"
if {![file exists $FichierBandesCytos]} {
Espionne "$FichierBandesCytos does not exist"
return ""
}
ChargeBandesCytologiques LesBandesCytos $FichierBandesCytos
if {![info exist LesBandesCytos($Chromosome,TailleP)]} {return ""}
set LesBandesP [lsort -decreasing [set LesBandesCytos($Chromosome,LesBandesP)]]
set LesBandesQ [lsort [set LesBandesCytos($Chromosome,LesBandesQ)]]
set LesBandesCytologiques $LesBandesP
foreach BandeQ $LesBandesQ {lappend LesBandesCytologiques $BandeQ}
set PosIni 0
### Trouver les bornes de la cytobande d'interet ###
foreach Bande $LesBandesCytologiques {
set LesInfos [set LesBandesCytos($Chromosome,$Bande)]
set Position [expr [lindex $LesInfos 0] * 1.e6]
set TailleBande [expr round(($Position-$PosIni)/1.e6)]
if {$Bande==$CytoBandInteret} {set PosInfInteret $PosIni; set PosSupInteret $Position}
set PosIni $Position
}
#FaireLire "deb $PosInfInteret fin $PosSupInteret"
################## Les donnees BAC ################
# pour chaque echantillon
if {[info exists LesBAC]} {
foreach BAC $LesBAC {
set FichierCourbeBAC "[RepertoireDuGenome]/PRIMA_CGH/$BAC"
ChargeFichierCourbeCGH TabC $FichierCourbeBAC $Chromosome $LesPos
if {[info exists TabC($FichierCourbeBAC,Chromosome,$Chromosome,LesPos)]} {
foreach Pos [set TabC($FichierCourbeBAC,Chromosome,$Chromosome,LesPos)] {
if {$Pos>=$PosInfInteret && $Pos<=$PosSupInteret} {
foreach LInfo [set TabC($FichierCourbeBAC,Chromosome,$Chromosome,$Pos)] {
set PosMid [lindex $LInfo 1]
set Val [lindex $LInfo 2]
if {[info exists TabB($FichierLocCGHBAC,Chromosome,$Chromosome,LesNoms)]} {
foreach Nom [set TabB($FichierLocCGHBAC,Chromosome,$Chromosome,LesNoms)] {
foreach LInfo [set TabB($FichierLocCGHBAC,Chromosome,$Chromosome,$Nom)] {
set DebutBAC [expr [lindex $LInfo 1]*1.0]
set FinBAC [expr [lindex $LInfo 2]*1.0]
set PosMilieu [expr ($FinBAC-$DebutBAC)/2 +$DebutBAC]
if {$PosMilieu==$PosMid} {
set NomBAC [lindex $LInfo 3]
set IDBAC [lindex $LInfo 4]
set InterIDBAC [lindex $LInfo 5]
lappend LesDonneesBAC "$BAC\t$NomBAC\t$IDBAC\t$InterIDBAC\t$PosMid\t$Val"
}
}
}
}
}
}
}
}
}
}
################## Les donnees Oligo ################
foreach Oligo $LesOligo {
set FichierCourbeOligo "[RepertoireDuGenome]/PRIMA_CGH/$Oligo"
ChargeFichierCourbeCGH TabL $FichierCourbeOligo $Chromosome $LesPos
if {[info exists TabL($FichierCourbeOligo,Chromosome,$Chromosome,LesPos)]} {
foreach Pos [set TabL($FichierCourbeOligo,Chromosome,$Chromosome,LesPos)] {
if {$Pos>=$PosInfInteret && $Pos<=$PosSupInteret} {
set PosMid $Pos
foreach LInfo [set TabL($FichierCourbeOligo,Chromosome,$Chromosome,$Pos)] {
set Val [lindex $LInfo 3]
### tranfo log base 10 -> log base 2
set Val [expr $Val*log(10)/log(2)]
if {[info exists TabO($FichierLocCGHOligo,Chromosome,$Chromosome,LesNoms)]} {
foreach Nom [set TabO($FichierLocCGHOligo,Chromosome,$Chromosome,LesNoms)] {
foreach LInfo [set TabO($FichierLocCGHOligo,Chromosome,$Chromosome,$Nom)] {
set DebutOli [expr [lindex $LInfo 1]*1.0]
set FinOli [expr [lindex $LInfo 2] *1.0]
set PosMilieu [expr ($FinOli-$DebutOli)/2 +$DebutOli]
if {$PosMilieu==$PosMid} {
set NomProbe [lindex $LInfo 3]
set Access [lindex $LInfo 4]
lappend LesDonneesOligo "$Oligo\t$NomProbe\t$Access\t$PosMid\t$Val"
}
}
}
}
}
}
}
}
}
################## Les donnees Affy ################
regsub "HS" $Chromosome "" num
if {[regexp "^0" $num]} {regsub "0" $num "" num}
set Chrom "chr$num"
set LesProbeSets [InterrogeAffy_UCSC "" human $Chrom LesProbeSets]
foreach ProbeSet $LesProbeSets {
set LesChros [InterrogeAffy_UCSC "" human $ProbeSet Chromosome]
if {[llength $LesChros]>1} {continue}
set LesDebuts [InterrogeAffy_UCSC "" human $ProbeSet $Chrom Debut]
set LesFins [InterrogeAffy_UCSC "" human $ProbeSet $Chrom Fin]
foreach Debut $LesDebuts Fin $LesFins {
set PosMid [expr ($Fin-$Debut)/2 + $Debut]
if {$PosMid>=$PosInfInteret && $PosMid<=$PosSupInteret} {
lappend L "$ProbeSet\t$PosMid"
}
}
#set Deb [expr [lrange $LesDebuts 0 0] *1.0]
#set Fin [expr [lrange $LesFins 0 0] *1.0]
#set PosMid [expr ($Fin-$Deb)/2 + $Deb]
}
set Ltriee [lsort -real -increasing -index 1 $L]
if {$Ltriee!=""} {
foreach Elt $Ltriee {
set LesInfos [split $Elt "\t"]
set PosMid [lindex $LesInfos 1]
set ProbeSet [lindex $LesInfos 0]
foreach Affy $LesAffy {
set FichierAffy "[RepertoireDuGenome]/PRIMA_Affy/$Affy"
if {![file exists $FichierAffy]} {return "$FichierAffy does not exist"}
set Val [InterrogeFichierAffyRMA $FichierAffy $ProbeSet Val]
lappend LesDonneesAffy "$Affy\t$ProbeSet\t$PosMid\t$Val"
set x [InterrogeFichierAffyRMA $FichierAffy "unset"]
}
}
}
####################### fin ###############################
if {[info exists LesBAC]} {EspionneL $LesDonneesBAC}
EspionneL $LesDonneesOligo
EspionneL $LesDonneesAffy
return ""
}
proc CompilePourUneListeDeGenesDonnee {{Cas ""} {LesChromosomes ""} {LesDebuts ""} {LesFins ""} {LesPos ""} {LesNoms ""}} {
# Cas: voir ci-dessous
# Chromosome: HS01 par ex
if {$Debut=="" || $Fin==""} {return}
# Les cas
if {$Cas=="meta"} {
set LesBAC {BAC806 BAC807 BAC810 BAC817 BAC818 BAC819 BAC826 BAC827}
set LesOligo {Oligo806 Oligo807 Oligo810 Oligo817 Oligo818 Oligo819 Oligo826 Oligo827}
set LesAffy {RMA7 RMA711 RMA821 RMA855 RMA818 RMA918 RMA921}
}
if {$Cas=="nometa"} {
set LesBAC {BAC808 BAC809 BAC811 BAC812 BAC814 BAC815 BAC816 BAC820 BAC821 BAC822 BAC823 BAC825}
set LesOligo {Oligo809 Oligo811 Oligo812 Oligo814 Oligo815 Oligo816 Oligo820 Oligo821 Oligo822 Oligo823 Oligo825}
set LesAffy {RMA845 RMA886 RMA819 RMA926 RMA923 RMA924 RMA925}
}
if {$Cas=="cl"} {
#set LesBAC {BAC808 BAC809 BAC811 BAC812 BAC814 BAC815 BAC816 BAC820 BAC821 BAC822 BAC823 BAC825}
set LesOligo {CL_22rv1 CL_DU145 CL_LNCaP CL_PC3}
set LesAffy {RMA22Rv1 RMADU145 RMALNCaP RMAPC3}
}
if {$Chromosome==""} {set Chromosome [ChoixDuChromosome]}
set FichierLocCGHBAC "[RepertoireDuGenome]/PRIMA_CGH/CGH_BAC_localisation"
if {![file exists $FichierLocCGHBAC] || $FichierLocCGHBAC == ""} {return ""}
set FichierLocCGHOligo "[RepertoireDuGenome]/PRIMA_CGH/CGH_Oligo_localisation"
if {![file exists $FichierLocCGHOligo] || $FichierLocCGHOligo == ""} {return ""}
ChargeFichierLoc TabB $FichierLocCGHBAC $Chromosome $LesNoms
ChargeFichierLoc TabO $FichierLocCGHOligo $Chromosome $LesNoms
set nChromosome [NumeroDuChromosome $Chromosome]
set PosInfInteret $Debut
set PosSupInteret $Fin
################## Les donnees BAC ################
# pour chaque echantillon
if {[info exists LesBAC]} {
foreach BAC $LesBAC {
set FichierCourbeBAC "[RepertoireDuGenome]/PRIMA_CGH/$BAC"
ChargeFichierCourbeCGH TabC $FichierCourbeBAC $Chromosome $LesPos
if {[info exists TabC($FichierCourbeBAC,Chromosome,$Chromosome,LesPos)]} {
foreach Pos [set TabC($FichierCourbeBAC,Chromosome,$Chromosome,LesPos)] {
if {$Pos>=$PosInfInteret && $Pos<=$PosSupInteret} {
foreach LInfo [set TabC($FichierCourbeBAC,Chromosome,$Chromosome,$Pos)] {
set PosMid [lindex $LInfo 1]
set Val [lindex $LInfo 2]
if {[info exists TabB($FichierLocCGHBAC,Chromosome,$Chromosome,LesNoms)]} {
foreach Nom [set TabB($FichierLocCGHBAC,Chromosome,$Chromosome,LesNoms)] {
foreach LInfo [set TabB($FichierLocCGHBAC,Chromosome,$Chromosome,$Nom)] {
set DebutBAC [expr [lindex $LInfo 1]*1.0]
set FinBAC [expr [lindex $LInfo 2]*1.0]
set PosMilieu [expr ($FinBAC-$DebutBAC)/2 +$DebutBAC]
if {$PosMilieu==$PosMid} {
set NomBAC [lindex $LInfo 3]
set IDBAC [lindex $LInfo 4]
set InterIDBAC [lindex $LInfo 5]
lappend LesDonneesBAC "$BAC\t$NomBAC\t$IDBAC\t$InterIDBAC\t$PosMid\t$Val"
}
}
}
}
}
}
}
}
}
}
################## Les donnees Oligo ################
foreach Oligo $LesOligo {
set FichierCourbeOligo "[RepertoireDuGenome]/PRIMA_CGH/$Oligo"
ChargeFichierCourbeCGH TabL $FichierCourbeOligo $Chromosome $LesPos
if {[info exists TabL($FichierCourbeOligo,Chromosome,$Chromosome,LesPos)]} {
foreach Pos [set TabL($FichierCourbeOligo,Chromosome,$Chromosome,LesPos)] {
if {$Pos>=$PosInfInteret && $Pos<=$PosSupInteret} {
set PosMid $Pos
foreach LInfo [set TabL($FichierCourbeOligo,Chromosome,$Chromosome,$Pos)] {
set Val [lindex $LInfo 3]
### tranfo log base 10 -> log base 2
set Val [expr $Val*log(10)/log(2)]
if {[info exists TabO($FichierLocCGHOligo,Chromosome,$Chromosome,LesNoms)]} {
foreach Nom [set TabO($FichierLocCGHOligo,Chromosome,$Chromosome,LesNoms)] {
set NomProbeIni toto
foreach LInfo [set TabO($FichierLocCGHOligo,Chromosome,$Chromosome,$Nom)] {
set DebutOli [expr [lindex $LInfo 1]*1.0]
set FinOli [expr [lindex $LInfo 2] *1.0]
set PosMilieu [expr ($FinOli-$DebutOli)/2 +$DebutOli]
if {$PosMilieu==$PosMid} {
set NomProbe [lindex $LInfo 3]
set Access [lindex $LInfo 4]
if {$NomProbe!=$NomProbeIni} {
lappend LesDonneesOligo "$Oligo\t$NomProbe\t$Access\t$PosMid\t$Val"
set NomProbeIni $NomProbe
}
}
}
}
}
}
}
}
}
}
################## Les donnees Affy ################
regsub "HS" $Chromosome "" num
if {[regexp "^0" $num]} {regsub "0" $num "" num}
set Chrom "chr$num"
set LesProbeSets [InterrogeAffy_UCSC "" human $Chrom LesProbeSets]
foreach ProbeSet $LesProbeSets {
set LesChros [InterrogeAffy_UCSC "" human $ProbeSet Chromosome]
if {[llength $LesChros]>1} {continue}
set LesDebuts [InterrogeAffy_UCSC "" human $ProbeSet $Chrom Debut]
set LesFins [InterrogeAffy_UCSC "" human $ProbeSet $Chrom Fin]
foreach Debut $LesDebuts Fin $LesFins {
set PosMid [expr ($Fin-$Debut)/2 + $Debut]
if {$PosMid>=$PosInfInteret && $PosMid<=$PosSupInteret} {
lappend L "$ProbeSet\t$PosMid"
}
}
#set Deb [expr [lrange $LesDebuts 0 0] *1.0]
#set Fin [expr [lrange $LesFins 0 0] *1.0]
#set PosMid [expr ($Fin-$Deb)/2 + $Deb]
}
set Ltriee [lsort -real -increasing -index 1 $L]
if {$Ltriee!=""} {
foreach Elt $Ltriee {
set LesInfos [split $Elt "\t"]
set PosMid [lindex $LesInfos 1]
set ProbeSet [lindex $LesInfos 0]
foreach Affy $LesAffy {
set FichierAffy "[RepertoireDuGenome]/PRIMA_Affy/$Affy"
if {![file exists $FichierAffy]} {return "$FichierAffy does not exist"}
set Val [InterrogeFichierAffyRMA $FichierAffy $ProbeSet Val]
lappend LesDonneesAffy "$Affy\t$ProbeSet\t$PosMid\t$Val"
set x [InterrogeFichierAffyRMA $FichierAffy "unset"]
}
}
}
####################### fin ###############################
if {[info exists LesBAC] && [info exists LesDonneesBAC]} {EspionneL $LesDonneesBAC}
EspionneL $LesDonneesOligo
EspionneL $LesDonneesAffy
return ""
}
proc ComplementDNA {seq} {
set lg [string length $seq]
set cpt ""
set seq [string toupper $seq]
for {set i 0} {$i < $lg} {incr i} {
switch [string index $seq $i] {
"A" {append cpt "T"}
"T" {append cpt "A"}
"G" {append cpt "C"}
"C" {append cpt "G"}
"N" {append cpt "N"}
}
}
return $cpt
}
proc ComplementInfoPourTous {} {
global RepertoireDuGenome
foreach Ligne [LesLignesDuFichier "$RepertoireDuGenome/Fam.txt"] {
scan $Ligne "%s %s" Alias Autre
set Alias [string toupper $Alias]
set MaLigne($Alias) $Ligne
if { ! [regexp {\(} $Autre]} { set Autre "" }
Espionne "$Alias $Autre."
regsub -all {[\(\)]} $Autre "" MonAutre($Alias)
set Reste [string range $Ligne 26 35]
set BAE ""
if {[regexp "P" $Reste]} { append BAE "B" } else { append BAE "b" }
if {[regexp "A" $Reste]} { append BAE "A" } else { append BAE "a" }
if {[regexp "E" $Reste]} { append BAE "E" } else { append BAE "e" }
set MonBAE($Alias) $BAE
}
foreach Nom [ListeDesPABs] {
set Alias [Alias $Nom]
set Autre [set MonAutre($Alias)]
if {$Autre!=""} { set Autre "/$Autre" }
InformeSansDemander $Nom "ValiGN: $Alias$Autre\nFamily: [set MaLigne($Alias)]\nBAE: [set MonBAE($Alias)]"
}
}
proc ComplementNuc {Nuc} {
global ComplementNuc
if {[info exists ComplementNuc($Nuc)]} { return [set ComplementNuc($Nuc)] }
if {[info exists ComplementNuc]} { return $Nuc }
set ComplementNuc(X) "X"
set ComplementNuc(x) "x"
set ComplementNuc(A) "T"
set ComplementNuc(T) "A"
set ComplementNuc(G) "C"
set ComplementNuc(C) "G"
set ComplementNuc(a) "t"
set ComplementNuc(t) "a"
set ComplementNuc(g) "c"
set ComplementNuc(c) "g"
set ComplementNuc(N) "N"
set ComplementNuc(n) "n"
set ComplementNuc(M) "K"
set ComplementNuc(K) "M"
set ComplementNuc(R) "Y"
set ComplementNuc(Y) "R"
set ComplementNuc(W) "W"
set ComplementNuc(S) "S"
set ComplementNuc(m) "k"
set ComplementNuc(k) "m"
set ComplementNuc(r) "y"
set ComplementNuc(y) "r"
set ComplementNuc(w) "w"
set ComplementNuc(s) "s"
set ComplementNuc(V) "B"
set ComplementNuc(H) "D"
set ComplementNuc(D) "H"
set ComplementNuc(B) "V"
set ComplementNuc(v) "b"
set ComplementNuc(h) "d"
set ComplementNuc(d) "h"
set ComplementNuc(b) "v"
set ComplementNuc(ListKey) [array names ComplementNuc]
set ComplementNuc(ListKeyValue) [array get ComplementNuc]
return [ComplementNuc $Nuc]
}
proc ComplementString {S} {
regsub -all -- "A" $S "Z" S
regsub -all -- "T" $S "A" S
regsub -all -- "Z" $S "T" S
regsub -all -- "G" $S "Z" S
regsub -all -- "C" $S "G" S
regsub -all -- "Z" $S "C" S
regsub -all -- "a" $S "z" S
regsub -all -- "t" $S "a" S
regsub -all -- "z" $S "t" S
regsub -all -- "g" $S "z" S
regsub -all -- "c" $S "g" S
regsub -all -- "z" $S "c" S
return $S
}
proc CompleteBlastGscopeProject {{ProjName ""} {BlastDatabase ""} {ProttfaCourant ""}} {
#rR est lancé en QDS ?????????????,
if {$ProttfaCourant==""} { set ProttfaCourant "prottfa" }
if {$BlastDatabase==""} { set BlastDatabase [LocaliseBlastPDataBase] }
if {$ProjName==""} { set ProjName [file tail [RepertoireDuGenome]] }
if {[PasTouche "CompleteBlastGscopeProject"]} { return "Sorry. CompleteBlastGscopeProject is still running" }
set PassePlat ""
if {[ValidBlastDatabaseForGrilladin $BlastDatabase]} {
set ProjNameWithDate "${ProjName}_[Date]"
set DBSizeTxt [BlastDatabaseSize $BlastDatabase]
scan $DBSizeTxt "%d" DBSize
Espionne "Grillade::creerPoeleBlast ProjectName $ProjNameWithDate Input [RepertoireDuGenome]/$ProttfaCourant DB $BlastDatabase DBsize $DBSize"
set PassePlat [Grillade::creerPoeleBlast ProjectName $ProjNameWithDate Input [RepertoireDuGenome]/$ProttfaCourant DB $BlastDatabase DBsize $DBSize]
if {[regexp -nocase "^Error" $PassePlat]} {
set Message "Error. Something is wrong with Grilladin. I got the error message $PassePlat"
}
#rR Tcl ne veut pas pointer si la cible n'existe pas :file link -symbolic "[RepertoireDuGenome]/passeplat" "$PassePlat/blastp"
exec ln -sf "$PassePlat/blastp" "[RepertoireDuGenome]/passeplat"
AppendAuFichier [Fiches PassePlat_$ProjNameWithDate] $PassePlat
set Message "Warning. I launched Grilladin for $ProjName. Blast files will be available at $PassePlat"
return $Message
} else {
set Message "Error. Sorry the blast database '$BlastDatabase' is not a valid blast database for Grilladin"
}
LogWscope $Message
FinPasTouche "CompleteBlastGscopeProject"
return $Message
}
proc CompleteCreateBlastDatabaseWithFasta {{FastaFile ""} {BlastDatabaseName ""}} {
if {$BlastDatabaseName==""} { set BlastDatabaseName [file tail $FastaFile] } ;#rR 2016/11/07
LogWscope "CompleteCreateBlastDatabaseWithFasta $FastaFile $BlastDatabaseName"
set Logfile $BlastDatabaseName.formatdb.log
exec formatdb -i $FastaFile -p T -n $BlastDatabaseName -l $Logfile -o T
if {[FileAbsent $Logfile]} {
set Message "Error. Something went wrong with CompleteCreateBlastDatabaseWithFasta. I didn't got the log file"
} elseif {[FileAbsent $BlastDatabaseName.phr] && [FileAbsent $BlastDatabaseName.pal]} {
set Message "Error. Something went wrong with CompleteCreateBlastDatabaseWithFasta. I didn't got the result. Log file contents [ContenuDuFichier $Logfile]"
} else {
set Message "OK. The BlastDatabase should be available at $BlastDatabaseName."
}
LogWscope $Message
return $Message
}
proc CompleteEtExecute {Commande} {
regsub { +\{ *$} $Commande "" Commande
Espionne ">$Commande<"
if {[regexp -nocase {[a-z0-9_]+ +\{\}} $Commande]} {
scan $Commande "%s" Complete
} else {
set Complete [Entre $Commande]
}
if {$Complete==""} { return "" }
return [Execute $Complete]
}
proc CompleteFicheInfo {{directory ""}} {
if {$directory==""} {set directory [RepertoireDuGenome]/protembl}
foreach Nom [ListeDesPABs] {
Espionne "$Nom"
set LL [LaSequenceDesBanques "$directory/$Nom"]
DecortiqueLesLignesEMBL $LL ID AC DE GN OS OC OX SequenceBrute LaDETotal
set lengthSeq [LongueurDeLaSequence $Nom prottfa]
set nbOrtho [nombreCaracteristiqueAnalyse $Nom orthologie]
set nbPfam [nombreCaracteristiqueAnalyse $Nom pfam]
set nbPDB [nombreCaracteristiqueAnalyse $Nom pdb]
set nbInt [nombreCaracteristiqueAnalyse $Nom interaction]
Espionne "$LL"
Espionne "$nbPfam"
InformeSansDemander $Nom "=LOPPI: $lengthSeq $nbOrtho $nbPDB $nbPfam $nbInt"
Espionne "ID: $ID"
InformeSansDemander $Nom "ID: $ID"
InformeSansDemander $Nom "AC: $AC"
InformeSansDemander $Nom "DE: $DE"
InformeSansDemander $Nom "OS: $OS"
InformeSansDemander $Nom "OC: $OC"
InformeSansDemander $Nom "OX: $OX"
#Espionne "$Nom BestID: $ID"
#Espionne "$Nom BestAC: $AC"
#Espionne "$Nom BestDE: $DE"
#Espionne "$Nom BestGN: $GN"
#Espionne "$Nom BestOS: $OS"
#Espionne "$Nom BestOC: $OC"
#Espionne "$Nom BestOX: $OX"
}
}
proc CompleteFichierDesJumeauxProtNotHumanChoisie {FichierDesPABs FichierJumeaux FichierSortie} {
#FichierDesPABs=fiches/LesDDSansJumSeqSansCourtsSansJumProtChoisie
#FichierJumeaux=fiches/jumeaux_AccProtChoisie_NotHuman
#FichierSortie=fiches/LesDDAvecProtChoisieNotHuman
set j 0
foreach Ligne [LesLignesDuFichier $FichierJumeaux] {
if {$Ligne==""} {continue}
set LesJumeaux [split $Ligne " "]
foreach Jum $LesJumeaux {if {![info exists Vu($Jum)]} {set Vu($Jum) 1; incr j} else {Espionne $Jum}}
}
set L [CreeListePourFichierAUneColonne $FichierDesPABs]
Espionne [llength $L]
set s 0
foreach Nom $L {
set AccessProt [InterrogeProtAndmRNAChoisis $Nom ProteineChoisie Access]
set Orga [InterrogeProtAndmRNAChoisis $Nom OrganismeChoisi]
if {$AccessProt!="NOPROTEIN" && $AccessProt!="" && $Orga!="Homo sapiens"} {
if {![info exists Vu($Nom)]} {lappend LesSupp $Nom; incr s}
}
}
set Jumeaux [ContenuDuFichier $FichierJumeaux]
#FaireLire $Jumeaux
set LesJum [split $Jumeaux "\n"]
#FaireLire $LesJum
#FaireLire $LesSupp
set LTotale [concat $LesSupp $LesJum]
#set LTotale [concat $LesSupp [ContenuDuFichier $FichierJumeaux]]
set LTotaleTriee [lsort $LTotale]
Espionne [llength $LTotaleTriee]
Espionne "nb j: $j - nb supp: $s"
SauveLesLignes $LTotaleTriee dans $FichierSortie
}
proc CompleteFichierFinalAvecMA {FichierFinal FichierMA} {
# FichierMA= ANALYSE/Macroarrays/Moyennes_pourfinal
foreach Ligne [LesLignesDuFichier $FichierMA] {
if {$Ligne==""} {continue}
set LesElts [split $Ligne "\t"]
set NumGene [lindex $LesElts 0]
set FCMA [lindex $LesElts 1]
set FoldMA($NumGene) $FCMA
}
foreach Ligne [LesLignesDuFichier $FichierFinal] {
if {$Ligne==""} {continue}
set LesElts [split $Ligne "\t"]
set n [lindex $LesElts 0]
if {[info exists FoldMA($n)]} {lappend LesElts "$FoldMA($n)"} else {lappend LesElts " "}
set L [join $LesElts "\t"]
lappend LFinale $L
}
#Espionne [llength $LFinale]
return $LFinale
}
proc CompleteFichierFinalAvecMAEtTests {FichierFinalAvecMA FichierTTest FichierTestW FichierTestSAM} {
# FichierTTest= select_ttest_avec18_genesuniq
# FichierTestW= select_testw_avec18_genesuniq
# FichierTestSAM=select_SAM_avec18_genesuniq
foreach Ligne [LesLignesDuFichier $FichierTTest] {
if {$Ligne==""} {continue}
set LesElts [split $Ligne "\t"]
set NumGene [lindex $LesElts 0]
set SelT [lindex $LesElts 1]
set RatioT [lindex $LesElts 2]
set NbTotT [lindex $LesElts 3]
set RaT($NumGene) $RatioT
set SelTTest($NumGene) $SelT
set NbT($NumGene) $NbTotT
}
foreach Ligne [LesLignesDuFichier $FichierTestW] {
if {$Ligne==""} {continue}
set LesElts [split $Ligne "\t"]
set NumGene [lindex $LesElts 0]
set SelW [lindex $LesElts 1]
set RatioW [lindex $LesElts 2]
set NbTotW [lindex $LesElts 3]
set RaW($NumGene) $RatioW
set SelTestW($NumGene) $SelW
set NbW($NumGene) $NbTotW
}
foreach Ligne [LesLignesDuFichier $FichierTestSAM] {
if {$Ligne==""} {continue}
set LesElts [split $Ligne "\t"]
set NumGene [lindex $LesElts 0]
set SelS [lindex $LesElts 1]
set RatioS [lindex $LesElts 2]
set NbTotSAM [lindex $LesElts 3]
set RaS($NumGene) $RatioS
set SelTestS($NumGene) $SelS
set NbSAM($NumGene) $NbTotSAM
}
foreach Ligne [LesLignesDuFichier $FichierFinalAvecMA] {
if {$Ligne==""} {continue}
set LesElts [split $Ligne "\t"]
set n [lindex $LesElts 0]
if {[info exists SelTTest($n)]} {lappend LesElts "$SelTTest($n)"} else {lappend LesElts " "}
if {[info exists RaT($n)]} {lappend LesElts "$RaT($n)"} else {lappend LesElts " "}
if {[info exists NbT($n)]} {lappend LesElts "$NbT($n)"} else {lappend LesElts " "}
if {[info exists SelTestW($n)]} {lappend LesElts "$SelTestW($n)"} else {lappend LesElts " "}
if {[info exists RaW($n)]} {lappend LesElts "$RaW($n)"} else {lappend LesElts " "}
if {[info exists NbW($n)]} {lappend LesElts "$NbW($n)"} else {lappend LesElts " "}
if {[info exists SelTestS($n)]} {lappend LesElts "$SelTestS($n)"} else {lappend LesElts " "}
if {[info exists RaS($n)]} {lappend LesElts "$RaS($n)"} else {lappend LesElts " "}
if {[info exists NbSAM($n)]} {lappend LesElts "$NbSAM($n)"} else {lappend LesElts " "}
set L [join $LesElts "\t"]
lappend LFinale $L
}
#Espionne [llength $LFinale]
return $LFinale
}
proc CompleteFichierFinalAvecMitochondrie {FichierFinal FichierMito} {
# FichierFinal /ANALYSE/final
# FichierMito /ANALYSE/MitochondrialProteins
foreach Ligne [LesLignesDuFichier $FichierMito] {
if {$Ligne==""} {continue}
set DD $Ligne
set M($DD) 1
}
foreach Ligne [LesLignesDuFichier $FichierFinal] {
if {$Ligne==""} {continue}
set LesElts [split $Ligne "\t"]
set DD [lindex $LesElts 1]
if {[info exists M($DD)]} {lappend LesElts $M($DD)} else {lappend LesElts " "}
set L [join $LesElts "\t"]
lappend LFinale $L
}
#Espionne [llength $LFinale]
return $LFinale
}
proc CompleteGenomeScan {} {
Wup "Proc pour lancer tous les TBlastN sur les genomes"
/g1/ARP/banques/completegenomes.nal
/g1/ARP/banques/genome_all.nal
/g1/ARP/banques/genome_anopheles.nal
/g1/ARP/banques/genome_ciona.nal
/g1/ARP/banques/genome_cryptoparvum.nal
/g1/ARP/banques/genome_cyanidioschyzon.nal
/g1/ARP/banques/genome_dictyostelium.nal
/g1/ARP/banques/genome_plasmodium.nal
/g1/ARP/banques/genome_tetraodon.nal
/g1/ARP/banques/genomesforarp.nal
/g1/ARP/banques/genomesforarp2.nal
/g1/ARP/banques/wgs-vertebrate.nal
}
proc CompleteGenomesPerDB {{what all} {details 0}} {
#lm 2015/09/20
# Returns the number of complete genomes per DB.
# By default, returns for all db's in the order :
# uniprot - gold - ncbi
if {$what ni {uniprot ncbi gold all}} {
return
}
# set db [InitTaxDB]
unset -nocomplain ::db
set db "root"
sqlite3 $db /home/moumou/SoTOL/sotol.sql
$db eval {begin transaction}
set Ldbs [$db eval {select value from sotol where var = 'Ldbs'}]
if {$what eq "all"} {
set Ldb [split [join $Ldbs] " "]
} else {
set Ldb $what
}
set Lres [list]
foreach ndb $Ldb {
set key "$ndb,NbComp"
lappend Lres [$db eval {select value from sotol where var = 'VSotol' and key = $key}]
if {$details} {
foreach k {NbEuk NbArk NbBac} {
set key "$ndb,$k"
lappend Lres [$db eval {select value from sotol where var = 'VSotol' and key = $key}]
}
}
if {0} {
switch $db {
"uniprot" {
# UniProt
set Lg [UniProtGenomes]
set nbUniProt [llenght $Lg]
lappend Lres $nbUniProt
}
"gold" {
# gold
set nbGold [$db eval {select count(distinct(taxid)) from gold where isComp=1}]
lappend Lres $nbGold
}
"ncbi" {
# NCBI
}
}
}
}
$db eval {commit}
$db close
return $Lres
}
proc CompleteGscopeProjectWithFasta {{FastaFile ""} {ProjName ""} {Prefixe ""} {NbDigit ""} {OS ""} {OX ""} {OC ""} {BlastDatabase ""}} {
#rR est lancé en QDS
if {$NbDigit=="."} { set NbDigit "" }
if {$OS=="."} { set OS "" }
if {$OX=="."} { set OX "" }
if {$OC=="."} { set OC "" }
if {$OX!="" && $OS==""} { set OS [QuestionDeScience EVImm "ret Tax $OX Name"] }
if {$OS!="" && $OX==""} { set OX [QuestionDeScience EVImm "ret Tax $OS TaxId"] }
if {$OX!="" && $OC==""} { set OC [QuestionDeScience EVImm "ret TaxClass $OX Name"] }
if {$OS!="" && $OC==""} { set OC [QuestionDeScience EVImm "ret TaxClass $OS Name"] }
regsub "^root; cellular organisms; " $OC "" OC
if {[PasTouche "CompleteGscopeProjectWithFasta"]} { return "Sorry. CompleteGscopeProjectWithFasta is still running" }
if {$NbDigit==""} { set NbDigit 5 }
CreeFichierMiniConfig $Prefixe $NbDigit Prot $OX
CreeLaCollection TFA $FastaFile "" KeepEntete "No" "No"
# AllForGo
LogWscope "BlastDatabase=$BlastDatabase"
set PassePlat ""
if {[ValidBlastDatabaseForGrilladin $BlastDatabase]} {
set ProjNameWithDate "${ProjName}_[Date]"
set DBSizeTxt [BlastDatabaseSize $BlastDatabase]
scan $DBSizeTxt "%d" DBSize
set NSeqPerJob 200
set PassePlat [Grillade::creerPoeleBlast ProjectName $ProjNameWithDate InputDir "[RepertoireDuGenome]/prottfa" DB $BlastDatabase DBsize $DBSize NSeqPerJob $NSeqPerJob]
AppendAuFichier [Fiches PassePlat_$ProjNameWithDate] $PassePlat
} else {
LogWscope "$BlastDatabase invalid"
}
FinPasTouche "CompleteGscopeProjectWithFasta"
set Message "OK. Most of the job is done for CompleteGscopeProjectWithFasta."
if {$PassePlat!=""} { append $Message "Blast files will be available at $PassePlat" }
return $Message
}
proc CompleteGscopeProjectWithOi {Source OiCode FichierFasta {NbDigit ""}} {
#rR est lancé en QDS
if {[PasTouche "CompleteGscopeProjectWithOi"]} { return "Sorry. CompleteGscopeProjectWithOi is still running" }
if {$NbDigit==""} { set NbDigit 5 }
if {$Source=="OiOld"} {
set OX [OiName $OiCode OX]
} else {
#rR Source est OiArchaea ou OiEukaryota
set Domain [string range $Source 2 end]
set OX [OiCodeForDomain $Domain $OiCode OX]
}
CreeFichierMiniConfig $OiCode $NbDigit Prot $OX
CreeLaCollection TFA $FichierFasta "" KeepEntete "No" "No"
AllForGo
FinPasTouche "CompleteGscopeProjectWithOi"
return "OK. All is done for CompleteGscopeProjectWithOi"
}
proc CompleteLaDataBase {{BanqueTBlastN ""}} {
global RepertoireDuGenome
global NotreOS
global NotreOC
global Org1 Org2
if { [file exists "$RepertoireDuGenome/blastp"] && [OuiOuNon "Can I count the blastp hits ? "]} {
if {[OuiOuNon "Do I use Daedalus ?"]} {
DaedalusHitsDuBlastPPourTous
CreeLeFichierNombreDeCopainsDansBlast
} else {
CreeLesFichiersApns
CreeLeFichierNombreDeCopainsDansBlast
}
WithPDB "CreateIt"
}
if { [file exists "$RepertoireDuGenome/blastn"] && [OuiOuNon "Can I count the blastn hits ? "]} {
CreeLesFichiersApns blastn
CreeLeFichierNombreDeCopainsDansBlast
}
if {[file exists "$RepertoireDuGenome/apns"] && [OuiOuNon "Do I create Narcisse (the database reference of each prot) ?" ]} {
Narcisse CreateIt
if {[OuiOuNon "Do I update /infos files with the fields ID AC DE GN found in the database ?"]} {
InformeParNarcissePourTous
}
}
if {[file exists "$RepertoireDuGenome/apns"] && [OuiOuNon "Do I create OrthoBlastP ?" ]} {
CreeOrthoBlastP
ORGAorgaDesBlastPs "CreateIt"
}
AnalyseLesDbClustal
if { [OuiOuNon "Do I create the phylo ranks ? "]} {
PhyloRank
}
AnalyseLesTBlastN $BanqueTBlastN
if {[OuiOuNon "Do I create the summary files in $RepertoireDuGenome/notes/ ?"]} {
CreeToutesLesNotes
}
}
proc CompleteLaListeDesOligos {{LesPABsDF ""} {Dest1 ""} {Dest2 ""}} {
Wup "Complete les resultats d 1 designe a 1 autre"
Wup "Met a jour le fichier .oligo et .log"
Wup "Ajoute un oligo a la liste de ceux deja designe de dir1 a dir2"
Wup "Cas particulier pour un redesign et completer la liste"
Wup "Version avec liste de liste de NomPAB debutOligo finOligo"
if {$LesPABsDF==""} {
set LesPABsDF [list [list ACT0016 1215 1274] [list ACT0010 1665 1724] [list ACT0017 1713 1772] [list ACT0005 1265 1324] [list ACT0059 506 565] [list ACT0059 26 85] [list ACT0204 1176 1235] [list ACT1162 1416 1475] [list ACT0053 462 521] [list ACT0053 281 340] [list ACT0053 111 170]]
}
###if {$Dest1==""} {set Dest1 "[RepertoireDuGenome]/Probes/RefSeq"}
###if {$Dest2==""} {set Dest2 "[RepertoireDuGenome]/Probes/Unigene"}
Espionne "$Dest1 $Dest2"
FaireLire "on y va"
foreach PABDF $LesPABsDF {
set PAB [lindex $PABDF 0]
set Debut [lindex $PABDF 1]
set Fin [lindex $PABDF 2]
set DirOligo1 "[RepertoireDuGenome]/Probes/Redesign/RefSeq"
set DirOligo2 "[RepertoireDuGenome]/Probes/Redesign/Unigene"
set LogFile1 "$DirOligo1/${PAB}.log"
set LogFile2 "$Dest1/${PAB}.log"
Espionne ">>> AjouteUnOligoPourCeuxDejaFait $PAB $PAB $DirOligo1 $Dest1 \"$Debut $Fin\""
AjouteUnOligoPourCeuxDejaFait $PAB $PAB "$DirOligo1" $Dest1 "$Debut $Fin"
InterrogeInfoDeLOligo unset
CompleteLeLogFileDeLOligo "$Debut $Fin" $LogFile1 $LogFile2
if {$Dest2==""} {
set LogFile1 "$DirOligo2/${PAB}.log"
set LogFile2 "$Dest2/${PAB}.log"
AjouteUnOligoPourCeuxDejaFait $PAB $PAB "$DirOligo2" $Dest2 "$Debut $Fin"
InterrogeInfoDeLOligo unset
CompleteLeLogFileDeLOligo "$Debut $Fin" $LogFile1 $LogFile2
}
#UnOligoPourExcel $PAB "$Debut $Fin" $Dest1 $Dest2 "[RepertoireDuGenome]/NewOligo"
}
return ""
}
proc CompleteLaListeDesOligos_GUI {K {PAB ""} {DirOligo1 ""}} {
Wup "Ajoute un oligo a la liste de ceux deja designe de dir1 a dir2"
Wup "Cas particulier pour un redesign et completer la liste"
Wup "Version graphique avec selection visuelle des oligos"
if {$PAB=="" || $DirOligo1==""} {return ""}
set FichierACharger1 "$DirOligo1/${PAB}.oligo"
while {1} {
set Texte "Choose a directory to complete $PAB oligos"
FaireLire "$Texte"
set Dir [tk_chooseDirectory -title "Choose the directory to be completed" -initialdir "[RepertoireDuGenome]"]
if {$Dir == ""} {
if {! [OuiOuNon "Would you like to continue ?"]} {return ""}
} else {
set DirOligo2 $Dir
break
}
}
set FichierACharger2 "$DirOligo2/${PAB}.oligo"
set Answer ""
set LesNomsOligos ""
while {1} {
set Texte "Please choose with Control+1 the oligo(s) to add:\nfrom $DirOligo1\nin $DirOligo2\nThen click on Ok."
set Answer [FaireSavoir $Texte "Adding Results - Waiting your selection."]
set LesNomsOligos [LesOligosSelectionnes $K]
if {$LesNomsOligos==""} {
if {! [OuiOuNon "No Oligo selected !\nWould you like to retry ?"]} {break} else {continue}
}
break
}
set LogFile1 "$DirOligo1/${PAB}.log"
set LogFile2 "$DirOligo2/${PAB}.log"
#On test si les resultats etaient deja charges ou non
set EstCharge ""
set EstCharge [InterrogeInfoDeLOligo $FichierACharger2 EstCharge]
if {$EstCharge==""} {set EstCharge 0}
if {! [OuiOuNon "Are you sure to add the selected Oligo(s) to another ?"]} {return ""}
foreach LeNomOligo $LesNomsOligos {
set Debut [InterrogeInfoDeLOligo $FichierACharger1 $LeNomOligo Debut]
set Fin [InterrogeInfoDeLOligo $FichierACharger1 $LeNomOligo Fin]
AjouteUnOligoPourCeuxDejaFait $PAB $PAB $DirOligo1 $DirOligo2 "$Debut $Fin"
#Les infos sont modifies dans le deuxieme lot
#InterrogeInfoDeLOligo $FichierACharger1 Decharge
if {$EstCharge=="0"} {
#On ne decharge que si il ne l etais pas avant
InterrogeInfoDeLOligo $FichierACharger2 Decharge
}
CompleteLeLogFileDeLOligo "$Debut $Fin" $LogFile1 $LogFile2
}
return ""
}
proc CompleteLaTableBackUp {Fichier} {
# Fichier = /HeadNecknonrnr/backup/TousComplete_3oct2005.txt
# Reverse Northern
set FichierAnne "[RepertoireDuGenome]/ReverseNorthern/Anne_perso.txt"
set FichierChrist "[RepertoireDuGenome]/ReverseNorthern/Christine_perso.txt"
set FichierChunhua "[RepertoireDuGenome]/ReverseNorthern/Chunhua_perso.txt"
set FichierFred "[RepertoireDuGenome]/ReverseNorthern/Fred_perso.txt"
set FichierInnes "[RepertoireDuGenome]/ReverseNorthern/Innes_perso.txt"
set FichierJulia "[RepertoireDuGenome]/ReverseNorthern/Julia_perso.txt"
set FichierPatricia "[RepertoireDuGenome]/ReverseNorthern/Patricia_perso.txt"
foreach Ligne [LesLignesDuFichier $FichierAnne] {
if {[regexp -nocase "user" $Ligne]} {continue}
set LesElts [split $Ligne "\t"]
set User [lindex $LesElts 0]
set CC [lindex $LesElts 1]
set Rev [lindex $LesElts 2]
set RN($User,$CC) $Rev
set Spe($User,$CC) ""
}
foreach Ligne [LesLignesDuFichier $FichierChrist] {
if {[regexp -nocase "user" $Ligne]} {continue}
set LesElts [split $Ligne "\t"]
set User [lindex $LesElts 0]
set CC [lindex $LesElts 1]
set Rev [lindex $LesElts 2]
set RN($User,$CC) $Rev
set Spe($User,$CC) ""
}
foreach Ligne [LesLignesDuFichier $FichierChunhua] {
if {[regexp -nocase "user" $Ligne]} {continue}
set LesElts [split $Ligne "\t"]
set User [lindex $LesElts 0]
set CC [lindex $LesElts 1]
set Rev [lindex $LesElts 2]
set RN($User,$CC) $Rev
set Spe($User,$CC) ""
}
foreach Ligne [LesLignesDuFichier $FichierFred] {
if {[regexp -nocase "user" $Ligne]} {continue}
set LesElts [split $Ligne "\t"]
set User [lindex $LesElts 0]
set CC [string toupper [lindex $LesElts 1]]
set Rev [lindex $LesElts 2]
set RevSpe [lindex $LesElts 3]
set RN($User,$CC) $Rev
set Spe($User,$CC) $RevSpe
}
foreach Ligne [LesLignesDuFichier $FichierInnes] {
if {[regexp -nocase "user" $Ligne]} {continue}
set LesElts [split $Ligne "\t"]
set User [lindex $LesElts 0]
set CC [lindex $LesElts 1]
set Rev [lindex $LesElts 2]
set RN($User,$CC) $Rev
set Spe($User,$CC) ""
}
foreach Ligne [LesLignesDuFichier $FichierJulia] {
if {[regexp -nocase "user" $Ligne]} {continue}
set LesElts [split $Ligne "\t"]
set User [lindex $LesElts 0]
set CC [lindex $LesElts 1]
set Rev [lindex $LesElts 2]
set RN($User,$CC) $Rev
set Spe($User,$CC) ""
}
foreach Ligne [LesLignesDuFichier $FichierPatricia] {
if {[regexp -nocase "user" $Ligne]} {continue}
set LesElts [split $Ligne "\t"]
set User [lindex $LesElts 0]
set CC [lindex $LesElts 1]
set Rev [lindex $LesElts 2]
set RevSpe [lindex $LesElts 3]
set RN($User,$CC) $Rev
set Spe($User,$CC) $RevSpe
}
### Fin RN
set FichierCorres "[RepertoireDuGenome]/lacorrespondance"
# Paper1
foreach Ligne [LesLignesDuFichier $FichierCorres] {
if {$Ligne==""} {continue}
set Ligne [split $Ligne "\t"]
set New [lindex $Ligne 0]; set Old [lindex $Ligne 1]
set O($Old) $New
}
foreach Ligne [LesLignesDuFichier "[RepertoireDuGenome]/paper1"] {
if {[info exists O($Ligne)]} {set DD $O($Ligne); set Paper($DD) 1} else {Espionne "no correspondance pour $Ligne"}
}
foreach Ligne [LesLignesDuFichier $Fichier] {
if {[regexp -nocase "missingsequence" $Ligne]} {continue}
set LesElts [split $Ligne "\t"]
#FaireLire $LesElts
set DD [lindex $LesElts 0]
set U [lindex $LesElts 5]
set C [lindex $LesElts 4]
# Reverse Northern
if {![info exists RN($U,$C)]} {set RN($U,$C) ""}
if {![info exists Spe($U,$C)]} {set Spe($U,$C) ""}
# Paper1
if {![info exists Paper($DD)]} {set Paper($DD) ""}
lappend LesElts "$RN($U,$C)"
lappend LesElts "$Spe($U,$C)"
lappend LesElts "$Paper($DD)"
#Espionne $Ligne
set NewLine [join $LesElts "\t"]
lappend Liste $NewLine
}
#set Liste [join $LesElts "\t"]
#EspionneL $Liste
SauveLesLignes $Liste dans "[RepertoireDuGenome]/essaibackup"
}
proc CompleteLeFichierDesJumeaux {Fichier} {
#Complete le fichier jumeaux_Overlap (ou autre) avec les clones sans localisation
#les noloc ayant la meme sequence sont regroupes selon fichier jumeaux_SeqNuc
global RepertoireDuGenome
foreach Nom [ListeDesPABs] {
set Vu($Nom) 0
}
set TexteDuFichierDesJumeauxTrie ""
foreach Ligne [LesLignesDuFichier $Fichier] {
if {$Ligne!=""} {
set LesJumeaux [split $Ligne " "]
foreach Jumeau $LesJumeaux {
set Vu($Jumeau) 1
}
set Ligne [join $LesJumeaux " " ]
append TexteDuFichierDesJumeauxTrie "$Ligne\n"
}
}
set LeTexteDuFichierTrie [split $TexteDuFichierDesJumeauxTrie "\n"]
set LeTexteDuFichierTrie [lsort -dictionary $LeTexteDuFichierTrie]
set TexteDuFichierDesJumeauxTrie [join $LeTexteDuFichierTrie "\n"]
set NouveauContenu "$TexteDuFichierDesJumeauxTrie\n"
foreach Nom [ListeDesPABs] {
if {$Vu($Nom)==0} {
set LigneDesjumeauxSeqNuc [LigneDuFichierJumeauxSeqNuc $Nom]
if {$LigneDesjumeauxSeqNuc!=""} {
append NouveauContenu "$LigneDesjumeauxSeqNuc\n"
set LesJumeauxSeqNuc [split $LigneDesjumeauxSeqNuc " "]
foreach JumeauSeqNuc $LesJumeauxSeqNuc {
set Vu($JumeauSeqNuc) 1
}
} else {
append NouveauContenu "$Nom\n"
set Vu($Nom) 1
}
} else {
continue
}
}
set LeNouveauContenu [split $NouveauContenu "\n"]
set LeNouveauContenu [lsort -dictionary $LeNouveauContenu]
set NouveauContenu [join $LeNouveauContenu "\n"]
return $NouveauContenu
}
proc CompleteLeFichierErreurs {Fichier} {
global ListeDeBoites
if { ! [info exists ListeDeBoites]} { ChargeListeDeBoites }
foreach Ligne [LesLignesDuFichier $Fichier] {
set Nom ""
if {[YaPABenDebutDe $Ligne]} {
set Nom [string range $Ligne 0 6]
}
if {[regexp {^TROU[0-9][0-9]+[A-FN]} $Ligne]} {
set Nom [string range $Ligne 0 8]
}
if { $Nom != "" } {
set Ligne [format "%8.8s %8.8s %s" [Box $Nom debut] [Box $Nom fin] $Ligne]
}
Espionne $Ligne
}
}
proc CompleteLeLogFileDeLOligo {DF Log1 Log2} {
Wup "proc AjouteUnOligoPourCeuxDejaFait --> Ajoute un oligo a la liste de ceux deja designe de Log1 a Log2"
Wup "Ici on complete le log file associe si l oligo n existait pas"
Wup "Cas particulier pour un redesign et completer la liste"
set Fichier1 $Log1
set Fichier2 $Log2
set FichierNew "$Log2.tmp"
if {![file exists $Fichier1] || ![file exists $Fichier2] || $DF == ""} {return ""}
set Debut [lindex $DF 0]
set Fin [lindex $DF 1]
#Parcours du premier log et extraction de la zone a inseree dans le deuxieme log
set OnLeTient 0
set NewLines ""
set F [open "$Fichier1"]
while {[gets $F Ligne]>=0} {
if {! [regexp -nocase {[a-z]+ || [0-9]+} $Ligne]} {continue}
#Moving on: 41 100
if {$OnLeTient} {
if {[regexp -nocase {Moving on:} $Ligne]} {
set OnLeTient 0
break
}
lappend NewLines $Ligne
}
if {! [regexp -nocase "Moving on: $Debut $Fin" $Ligne]} {continue}
set OnLeTient 1
lappend NewLines $Ligne
}
close $F
if {$NewLines == ""} {return ""}
set NewLines [join $NewLines "\n"]
#Recopiage du deuxieme log et insertion au bon endroit de la zone extraite precedemment
#On sauve les lignes toujours apres donc on peut inserer au bon endroit
set OnAPasCommence 0
set OkOnASauve 0
set OnEfface 0
set OnSkip 0
set LesLignes ""
set Ligne ""
set F [open "$Fichier2"]
while {[gets $F Ligne]>=0} {
if {! [regexp -nocase {[a-z]+ || [0-9]+} $Ligne]} {continue}
if {$OnSkip} {
} elseif {$OkOnASauve} {
AppendAuFichier $FichierNew $Ligne
continue
}
if {$OnAPasCommence=="0" && ![regexp -nocase {Moving on:} $Ligne]} {
AppendAuFichier $FichierNew $Ligne
continue
}
if {[regexp -nocase {Moving on:} $Ligne]} {
set OnAPasCommence 1
set MaLigne ""
regsub "^Moving on: " $Ligne "" MaLigne
scan $MaLigne "%s %s" ND NF
#On stocke les precedents
if {$LesLignes!=""} {
set LesLignes [join $LesLignes "\n"]
AppendAuFichier $FichierNew $LesLignes
set LesLignes ""
}
#On voulait laisser tomber un resultat et maintenant on arrete
if { $OnSkip == "1"} {
set OnSkip 0
AppendAuFichier $FichierNew $Ligne
continue
}
if {$Debut==$ND} {
if {! [OuiOuNon "The information in the Log File for $Debut $Fin already exists\nDo I also update them ?"]} {
close $F
if {[file exists $FichierNew]} {file delete -force $FichierNew}
return ""
}
set OnSkip 1
set OkOnASauve 1
AppendAuFichier $FichierNew $NewLines
continue
}
if {$Debut<$ND} {
set OkOnASauve 1
AppendAuFichier $FichierNew $NewLines
AppendAuFichier $FichierNew $Ligne
continue
}
lappend LesLignes $Ligne
continue
}
if {$OnSkip==0} {lappend LesLignes $Ligne}
}
if {$OkOnASauve=="0"} {AppendAuFichier $FichierNew $NewLines}
close $F
if {$OnAPasCommence=="0"} {
file delete -force $FichierNew
} else {
file delete -force $Fichier2
file rename -force $FichierNew $Fichier2
}
return ""
}
proc CompleteLeTableauAvecAccess {{Fichier ""} {FichierAvecAccess ""}} {
if {$Fichier == ""} {
set Fichier [ButineArborescence All [pwd]]
} else {
if {![file exists $Fichier]} {return ""}
}
if { [regexp "Access" [PremiereLigneDuFichier $Fichier]] && [regexp "Banque" [PremiereLigneDuFichier $Fichier]] } {
return ""
}
set NomFichier [file tail $Fichier]
regsub ".txt" $NomFichier "_modif.txt" NewFileName
set Rep [file dirname $Fichier]
set NewFile "$Rep/$NewFileName"
if {$FichierAvecAccess == ""} {
if {[OuiOuNon "Do you have a file with Access for the unknown sequence"]} {
set FichierAvecAccess [ButineArborescence All [pwd]]
}
} else {
set FichierAvecAccess "/home/chalmel/ProjRetine/Documents/$FichierAvecAccess"
}
if {![file exists $Fichier]} {return ""}
set LEnteteDuTab [split [PremiereLigneDuFichier $Fichier] "\t"]
set LEnteteDuTab [linsert $LEnteteDuTab 2 "Access"]
set LEnteteDuTab [linsert $LEnteteDuTab 3 "Banque"]
set NewTable [join $LEnteteDuTab "\t"]
foreach Ligne [LesLignesDuFichier $Fichier] {
set LaLigne [split $Ligne "\t"]
if { ![regexp {^[0-9]} [lindex $LaLigne 0]] } {
continue
} else {
set LesInfosDeLAccess [LAccessEtLaBanque [lindex $LaLigne 1] $FichierAvecAccess]
set Position 2
foreach Element $LesInfosDeLAccess {
set LaLigne [linsert $LaLigne $Position $Element]
incr Position
}
set NewLine [join $LaLigne "\t"]
append NewTable "\n$NewLine"
}
}
Espionne $NewTable
if {[OuiOuNon "Voulez-vous enregistrer le tableau modifie dans $NewFileName?"]} {
Sauve $NewTable dans $NewFile
}
return $NewTable
}
proc CompleteLesAccRSEtUG_Ontario {} {
Wup "Ajoute une les coordonnees sur la puce Block Row Column"
Wup "Permet de sauver les resultats des recherches dans RefSeq et Unigene des sequence de la puce EST"
set Fichier "[RepertoireDuGenome]/LesAccDefRefSeqUnigene"
set FichierSave "[RepertoireDuGenome]/LesAccDefRefSeqUnigene_2"
set Texte "Gscope Access\tCodeClone\tAccRefSeq\tIdGRefSeq\tCoverRefSeq\tDefRefSeq\tAccUnigene\tUGId\tIdGUnigene\tCoverUnigene\tDefUnigene\tBlock\tRow\tColumn"
AppendAuFichier $FichierSave $Texte
if {[file exists $Fichier]} {
set F [open "$Fichier"]
while {[gets $F Ligne]>=0} {
if {! [regexp -nocase {[a-z0-9]+} $Ligne]} {continue}
set ListeDesObjets [split $Ligne "\t"]
set Access [split [lindex $ListeDesObjets 1] "_"]
set OriginalId [lindex $Access 0]
set VerifiedId [lindex $Access 1]
set Block [InterrogeLeGalFile_Ontario $VerifiedId $OriginalId Block]
set Column [InterrogeLeGalFile_Ontario $VerifiedId $OriginalId Col]
set Row [InterrogeLeGalFile_Ontario $VerifiedId $OriginalId Row]
lappend ListeDesObjets $Block
lappend ListeDesObjets $Row
lappend ListeDesObjets $Column
set Texte [join $ListeDesObjets "\t"]
AppendAuFichier $FichierSave $Texte
}
}
close $F
return ""
}
proc CompleteResultatsUSAGE {FichRes FichTG} {
#FichRes est le fichier resultats de la requete menee dans Usage sur le web
#entre library sage de foie de Hs et tag_to_gene_Hs
###################################
#FichTG est le fichier tag to gene
###en effet dans les resultats on n a pas les noms des genes ni leur unigene
#mais un lien hypertexte
if {![file exists $FichRes] || ![file exists $FichTG]} {return}
foreach Ligne [LesLignesDuFichier $FichRes] {
set Ligne [string trim $Ligne]
scan $Ligne "%s %s %s %s" no ab n tag
#Espionne "$no $ab $n $tag"
set Vu($tag) 1
set Abondance($tag) $ab
}
foreach Ligne [LesLignesDuFichier $FichTG] {
set Ligne [string trim $Ligne]
#Espionne $Ligne
set Tag [lindex $Ligne 0]
set Ug [lindex $Ligne 2]
set IndexLast [expr [llength $Ligne]-1]
set DefGene [lrange $Ligne 3 [expr $IndexLast-1]]
#Espionne "$Tag $Ug $DefGene"
if {[info exists Vu($Tag)]} {
#Espionne $Abondance($tag)
lappend LesNouveauxResultats "$Tag\t$Abondance($Tag)\t$Ug\t$DefGene"
#EspionneL $LesNouveauxResultats
}
}
#Espionne [llength $LesNouveauxResultats]
return $LesNouveauxResultats
}
proc CompleteRetourGrilladinGscopeProject {} {
#rR est lancé en QDS
RetourGrilladin
return "OK, RetourGrilladin done"
}
proc CompleteTableauAvecInfosDePresence {{FichierTableauRecapitulatif ""} {RepSeq ""}} {
if {$FichierTableauRecapitulatif == ""} {
set FichierTableauRecapitulatif [ButineArborescence All [pwd]]
} else {
if {![file exists $FichierTableauRecapitulatif]} {return ""}
}
if {$RepSeq == ""} {
set RepSeq [ChoisirUnRepertoire "Choose The Directory containing your sequence"]
} else {
if {![file exists $RepSeq]} {return ""}
}
set Fichier $FichierTableauRecapitulatif
set RepDocs [file dirname $Fichier]
if { [regexp "Seq infos" [PremiereLigneDuFichier $Fichier]]} {
return ""
}
set EnteteDuTab [PremiereLigneDuFichier $Fichier]
set LesEntetesDuTab [split $EnteteDuTab "\t"]
set NewEnteteDuTab [join [linsert $LesEntetesDuTab 4 "Seq infos" ] "\t"]
set NewTable ""
append NewTable "$NewEnteteDuTab"
foreach Ligne [LesLignesDuFichier $Fichier] {
set LesInfos [split $Ligne "\t"]
if { ![regexp {^[0-9]} [lindex $LesInfos 0]] } {
continue
} else {
set CompleteId [lindex $LesInfos 1]
if {[regexp "/" $CompleteId]} {regsub "/" $CompleteId "" CompleteId}
set Id [lindex $LesInfos 2]
set FichierTFA "$RepSeq/$CompleteId.tfa"
if {![file exists $FichierTFA]} {
set InfoSurPresence "No file"
} else {
set InfoSurPresence "OK"
set EnteteTFA [PremiereLigneDuFichier $FichierTFA]
if { [regexp -nocase "found" $EnteteTFA] || [regexp -nocase "withdrawn" $EnteteTFA] || [regexp -nocase "not exist" $EnteteTFA]} {
set InfoSurPresence "No Sequence found"
}
if { [regexp -nocase "split" $EnteteTFA]} {
set LesNewsId [LesSequencesIssuesDeLaSequenceSplitee $FichierTFA]
if { [llength $LesNewsId] == 1 && [lindex $LesNewsId 0] == $CompleteId} {
set InfoSurPresence "Probleme"
Espionne "Probleme avec $CompleteId"
} else {
set InfoSurPresence "Split into [join $LesNewsId " "]"
set InfoSurPresence [string trim $InfoSurPresence]
}
}
}
}
set NewLigne [join [linsert $LesInfos 4 $InfoSurPresence] "\t"]
append NewTable "\n$NewLigne"
}
Espionne $NewTable
regsub ".txt" $FichierTableauRecapitulatif "_bis.txt" NewFile
Espionne $NewFile
if {[OuiOuNon "Voulez-vous enregistrer le tableau modifie dans $NewFile?"]} {
Sauve $NewTable dans $NewFile
}
return "$NewTable"
}
proc CompleteTableauAvecNomBOXDansGscope {{NomBox ""} {FichierTableauRecapitulatif ""}} {
global RepertoireDuGenome
if {![file exists "$RepertoireDuGenome/beton/miniconfig"]} {
return ""
} else {
set LaMiniconfig [LesLignesDuFichier "$RepertoireDuGenome/beton/miniconfig"]
foreach Ligne $LaMiniconfig {
if {[regexp -nocase "^PrefixeDesORFs " $Ligne]} {
regsub "^PrefixeDesORFs " $Ligne "" Ligne
set NomBox [string trim $Ligne]
break
}
}
}
if {$FichierTableauRecapitulatif == ""} {
set FichierTableauRecapitulatif [ButineArborescence All [pwd]]
} else {
if {![file exists $FichierTableauRecapitulatif]} {return ""}
}
set Fichier $FichierTableauRecapitulatif
set RepDocs [file dirname $FichierTableauRecapitulatif]
set RepNucTFA "$RepertoireDuGenome/nuctfa"
if {[regexp "Ref Gscope" [PremiereLigneDuFichier $Fichier]]} {return ""}
set EnteteDuTab [PremiereLigneDuFichier $Fichier]
set LesEntetesDuTab [split $EnteteDuTab "\t"]
set NewEnteteDuTab [join [linsert $LesEntetesDuTab 5 "Ref Gscope" ] "\t"]
Espionne $NewEnteteDuTab
set NewTable ""
append NewTable "$NewEnteteDuTab"
set n 0
foreach Ligne [LesLignesDuFichier $Fichier] {
set LesInfos [split $Ligne "\t"]
if { ![regexp {^[0-9]} [lindex $LesInfos 0]] } {
continue
}
incr n
set CompleteId [lindex $LesInfos 1]
set Id [lindex $LesInfos 2]
set SeqInfos [lindex $LesInfos 4]
set RefGscope [ReferenceDeSeqDansGscope $n $NomBox]
set FichierTFA "$RepNucTFA/$RefGscope"
if {![regexp -nocase "$CompleteId" [ContenuDuFichier $FichierTFA]]} {
Espionne "$CompleteId Pbl avec $RefGscope 0"
return ""
}
if {![file exists $FichierTFA]} {
Espionne "Pbl avec $RefGscope"
} else {
set EnteteTFA [PremiereLigneDuFichier $FichierTFA]
set InfoSurRefGscope ""
if {[regexp -nocase "does not exist" $EnteteTFA]} {
set InfoSurRefGscope "$RefGscope"
} elseif {![regexp -nocase "split into" $EnteteTFA]} {
set InfoSurRefGscope "$RefGscope"
} else {
if {[regexp -nocase "Split into" $SeqInfos]} {
set InfoSurRefGscope "$RefGscope"
regsub "Split into " $SeqInfos "" SeqInfos
set LesNewsIds [split $SeqInfos " "]
append InfoSurRefGscope " split into"
foreach NewId $LesNewsIds {
incr n
set RefGscope [ReferenceDeSeqDansGscope $n $NomBox]
set FichierTFA "$RepNucTFA/$RefGscope"
if {![file exists $FichierTFA]} {
Espionne "$NewId Pbl avec $RefGscope 1"
return ""
} elseif {![regexp -nocase "$NewId" [ContenuDuFichier $FichierTFA]]} {
Espionne "$NewId Pbl avec $RefGscope 2"
return ""
}
append InfoSurRefGscope " $RefGscope"
}
} else {
Espionne "$CompleteId Pbl de splittage avec $RefGscope 3"
}
}
}
set LesNewInfo [linsert $LesInfos 5 $InfoSurRefGscope]
set NewInfo [join $LesNewInfo "\t"]
append NewTable "\n$NewInfo"
}
set NameFile [file tail $FichierTableauRecapitulatif]
regsub ".txt" $NameFile "_ter.txt" NewFileName
set NewFile "$RepDocs/$NewFileName"
if {[OuiOuNon "Voulez-vous enregistrer le tableau modifie dans $NewFile?"]} {
Sauve $NewTable dans $NewFile
}
return $NewTable
}
proc CompleteTaxoblaGscopeProject {{FromOi ""}} {
#rR est normalement lancé en QDS
if {$FromOi=="FromOi"} {
LogWscope "CompleteTaxoblaGscopeProject $FromOi"
set LesFicTax [TaxoblaFromOi]
return "[llength $LesFicTax] taxobla files were created"
}
TaxonomyDuBlastPourTous
return "OK, TaxonomyDuBlastPourTous done"
}
proc CompositionAADuGroupe {{grp ""}} {
global LNDG SDG Sequences ListeDesAcidesAmines
set res [list]
foreach a $ListeDesAcidesAmines {
set n$a 0
}
if {$grp eq ""} {
set grp [lindex $LNDG 0]
}
set Ln [set SDG($grp)]
set sall ""
foreach s $Ln {
append sall [set Sequences($s)]
}
set nTot 0
foreach a $ListeDesAcidesAmines {
set stmp [string map [list $a ""] $sall]
set n$a [expr {[string length $sall] - [string length $stmp]}]
set sall $stmp
incr nTot [set n$a]
}
foreach a $ListeDesAcidesAmines {
lappend res $a [expr {100.0*[set n$a]/$nTot}]
}
foreach m {"AILMV" "KRH" "DEQN" "FYW" "PGST"} {
set La [split $m ""]
set np 0
foreach a $La {
incr np [set n$a]
}
lappend res $m [expr {100.0*$np/$nTot}]
}
return $res
}
proc CompositionATGCDuPAB {PAB {Quoi ""}} {
global MemoGC MemoAT MemoA MemoT MemoG MemoC MemoPAB
if {$Quoi=="GC" && [info exists MemoGC] && $MemoPAB==$PAB} {
return $MemoGC
}
if {$Quoi=="AT" && [info exists MemoAT] && $MemoPAB==$PAB} {
return $MemoAT
}
if {$Quoi=="A" && [info exists MemoA] && $MemoPAB==$PAB} {
return $MemoA
}
if {$Quoi=="T" && [info exists MemoT] && $MemoPAB==$PAB} {
return $MemoT
}
if {$Quoi=="G" && [info exists MemoG] && $MemoPAB==$PAB} {
return $MemoG
}
if {$Quoi=="C" && [info exists MemoC] && $MemoPAB==$PAB} {
return $MemoC
}
set FichierCompoATGC "[RepertoireDuGenome]/fiches/compositionenatgc"
if {! [file exists $FichierCompoATGC]} {return "No file $FichierCompoATGC"}
set F [open "$FichierCompoATGC"]
while {[gets $F Ligne]>=0} {
if {! [regexp -nocase {[a-z]+ || [0-9]+} $Ligne]} {continue}
if {! [regexp -nocase "$PAB" $Ligne]} {continue}
scan $Ligne "%s %s %s %s %s %s %s" PAB GC AT A T G C
break
}
close $F
set MemoPAB $PAB
set MemoGC $GC
set MemoAT $AT
set MemoA $A
set MemoC $C
set MemoT $T
set MemoG $G
switch $Quoi {
"GC" {return $GC}
"AT" {return $AT}
"A" {return $A}
"T" {return $T}
"G" {return $G}
"C" {return $C}
"default" {return $GC}
}
return ""
}
proc CompositionDesSequences {{Rep ""} {Action ""} {Ordre ""} {Sens ""}} {
if {$Rep==""} { set Rep [ChoixDuRepertoire [RepertoireDuGenome]] }
if {$Sens==""} { set Sens "increasing" }
if {$Ordre==""} { set Ordre 0 }
if {$Action==""} { set Action "Show" }
if { ! [regexp "/" $Rep]} { set Rep "[RepertoireDuGenome]/$Rep" }
foreach Fichier [lsort [glob -nocomplain $Rep/*]] {
set Nom [file tail $Fichier]
set Seq [QueLaSequenceDuFichierTFA $Fichier]
set Seq [string toupper $Seq]
set Entete [EnteteDuFichierTFA $Fichier]
set L [regexp -all "." $Seq]
set Ligne "$Nom length [format "%4d" $L] :"
foreach C [lsort -unique [split $Seq ""]] {
set N [regexp -all -nocase -- "$C" $Seq]
append Ligne " [format "%4d" $N] $C"
}
append Ligne " $Entete"
lappend LeTexte $Ligne
set ListeDesMots [LesMotsDeLaLigne $Ligne]
lappend LesListesDesMots $ListeDesMots
set TexteDesMots([join $ListeDesMots "_"]) $Ligne
}
set LeBonTexte {}
foreach LdM [lsort -$Sens -index $Ordre $LesListesDesMots] {
lappend LeBonTexte $TexteDesMots([join $LdM "_"])
}
if {$Action=="GetList"} { return $LeBonTexte }
if {$Action=="GetText"} { return [join $LeBonTexte "\n"]}
set F [AfficheVariable [join $LeBonTexte "\n"] "" "CompositionDesSequences_$Rep"]
set B [BoutonneLaFenetre $F "Composition" ""]
$B configure -text "Composition ReOrder lines/ New" -background "cyan"
bind $B <1> "CompositionDesSequences $Rep Show \[Entre $Ordre\] \[ChoixParmi {increasing decreasing}\]"
bind $B <2> "CompositionDesSequences"
return $F
}
proc CompositionEn {Type Nom} {
global RepertoireDuGenome
global CompositionEnATGC
if { ! [info exists CompositionEnATGC]} {
set FichierCompositionEnATGC "$RepertoireDuGenome/fiches/compositionenatgc"
if { [file exists $FichierCompositionEnATGC] } {
foreach Ligne [LesLignesDuFichier $FichierCompositionEnATGC] {
scan $Ligne "%s %d %d %d %d %d %d" NomLu pGC pAT pA pT pG pC
set CompositionEnATGC($NomLu) "$pGC $pAT $pA $pT $pG $pC"
lappend CompositionEnATGC(GC,LaListe) $pGC
lappend CompositionEnATGC(AT,LaListe) $pAT
lappend CompositionEnATGC(A,LaListe) $pA
lappend CompositionEnATGC(T,LaListe) $pT
lappend CompositionEnATGC(G,LaListe) $pG
lappend CompositionEnATGC(C,LaListe) $pC
}
}
set CompositionEnATGC(Bidon) "EstCharge"
}
if {$Nom=="LaListeMerci"} {
if {[info exists CompositionEnATGC($Type,LaListe)]} {
return [set CompositionEnATGC($Type,LaListe)]
} else {
return {}
}
}
if { ! [info exists CompositionEnATGC($Nom)]} { return "" }
scan [set CompositionEnATGC($Nom)] "%d %d %d %d %d %d" pGC pAT pA pT pG pC
if {$Type=="ATGC"} { return [set CompositionEnATGC($Nom)] }
return [set p$Type]
}
proc Compress {{LesReps ""}} {
if {$LesReps==""} {
set LesPossiblesReps {}
foreach Rep [glob "[RepertoireDuGenome]/*/"] {
lappend LesPossiblesReps $Rep
}
set LesReps [MorceauxChoisis $LesPossiblesReps]
}
foreach Rep $LesReps {
if { ! [regexp "/" $Rep]} { set Rep "[RepertoireDuGenome]/$Rep" }
foreach Nom [ListeDesPABs] {
set Fichier "$Rep/$Nom"
if {[FileAbsent $Fichier]} { continue }
Espionne "I'll compress $Fichier"
exec compress $Fichier
}
}
}
proc CompressMacsims {} {
set SourceDir "[RepertoireDuGenome]/macsims"
foreach File [glob -nocomplain "$SourceDir/*.xml"] {
#if {[regexp "org" $File]} {continue}
exec gzip -9 $File
}
return
}
proc ComptabiliseFichiersEnFonctionDeLeurTaille {SizeMin SizeMax} {
set Rep [ChoisirUnRepertoire "Choisir Le Repertoire de destination"]
set n 0
foreach Fichier [glob -nocomplain *] {
set Size [file size "$Rep/$Fichier"]
if {$Size < $SizeMax && $Size > $SizeMin } {
Espionne $Fichier
incr n
}
}
return "$n"
}
proc ComptageMotifsExons {FichierACompter} {
set Fichier $FichierACompter
set NbGenes [exec cut -d , -f 4 $FichierACompter | sort -u | wc -l]
set NbExons [exec cut -d , -f 13 $FichierACompter | sort -u | wc -l]
set NbMotifs [exec cut -d , -f 16 $FichierACompter | sort -u | wc -l]
return "$NbGenes $NbExons $NbMotifs $FichierACompter"
}
proc CompteAcA {} {
set D 0; set E 0; set M 0; set H 0; set A 0
foreach I [RetChip5 ListOf Index] {
set AC [RetChip5 $I "DNA_acc"]
if { $AC!="" } {
if { [regexp {\?} $AC] } { continue }
incr D
puts "1 $AC"
regsub " " $AC "" AC
puts "2 $AC"
Espionne "la ligne $I a un numero access:$AC dans DNA_acc=>$D"
set ListAc [split $AC ","]
foreach Ac $ListAc {
puts "3 $Ac"
incr E
if { [regexp {^NM_} $Ac] || [regexp {^XM_} $Ac] || [regexp {^NR_} $Ac]} {
set Commande1 "getz \"\\\[refseq-acc:$Ac\\\]\" \-vf org"
set GetzOut1 [eval exec $Commande1]
if {$GetzOut1 == ""} {puts "attention pas fichesNM"; continue}
set RefLu1 ""; set GenreLu1 ""; set EspeceLu1 ""
scan $GetzOut1 "%s %s %s" RefLu1 GenreLu1 EspeceLu1
puts "$Ac=>organisme=$GenreLu1 $EspeceLu1"
if {[regexp {^Mus$} $GenreLu1]} {incr M}
if {[regexp {^Homo$} $GenreLu1]} {incr H}
if {![regexp {^Mus$} $GenreLu1] && ![regexp {^Homo$} $GenreLu1]} {incr A}
} else {
set Commande2 "getz \"\\\[genbankfull-acc:$Ac\\\]\" \-vf org"
set GetzOut2 [eval exec $Commande2]
if {$GetzOut2 == ""} {puts "attention pas fichesGB"; continue}
set RefLu2 ""; set GenreLu2 ""; set EspeceLu2 ""
scan $GetzOut2 "%s %s %s" RefLu2 GenreLu2 EspeceLu2
puts "$Ac=>organisme=$GenreLu2 $EspeceLu2"
if {[regexp {^Mus$} $GenreLu2]} {incr M}
if {[regexp {^Homo$} $GenreLu2]} {incr H}
if {![regexp {^Mus$} $GenreLu2] && ![regexp {^Homo$} $GenreLu2]} {incr A}
}
}
}
}
Espionne "il y a $D ligne qui ont un access dans DNA_acc"
Espionne "il y a $E access dans DNA_acc"
Espionne "il y a $M access ds DNA_acc de souris"
Espionne "il y a $H access ds DNA_acc d'homme"
Espionne "il y a $A access ds DNA_acc d'autre chose"
}
proc CompteAcA_AEffacer {} {
set D 0
set M 0
set H 0
foreach I [RetChip2 ListOf Index] {
set Ac [RetChip2 $I "DNA_acc"]
if { $Ac!="" } {
incr D
Espionne "la ligne $I a un numero access:$Ac dans DNA_acc=>$D"
if { [string equal "?" $Ac] } { continue }
if { [regexp {^NM_} $Ac] } {
set Commande1 "getz \"\\\[refseq-acc:$Ac\\\]\" \-vf org"
set GetzOut1 [eval exec $Commande1]
if {$GetzOut1 == ""} {puts "attention pas fichesNM"; continue}
set RefLu1 ""
set GenreLu1 ""
set EspeceLu1 ""
scan $GetzOut1 "%s %s %s" RefLu1 GenreLu1 EspeceLu1
puts "NM=>organisme=$GenreLu1 $EspeceLu1"
if {[regexp {^Mus$} $GenreLu1]} {incr M}
if {[regexp {^Homo$} $GenreLu1]} {incr H}
if {![regexp {^Mus$} $GenreLu1] || ![regexp {^Homo$} $GenreLu1]} {incr A}
} else {
set Commande2 "getz \"\\\[genbankfull-acc:$Ac\\\]\" \-vf org"
set GetzOut2 [eval exec $Commande2]
if {$GetzOut2 == ""} {puts "attention pas fichesGB"; continue}
set RefLu2 ""
set GenreLu2 ""
set EspeceLu2 ""
scan $GetzOut2 "%s %s %s" RefLu2 GenreLu2 EspeceLu2
puts "GB=>organisme=$GenreLu2 $EspeceLu2"
if {[regexp {^Mus$} $GenreLu2]} {incr M}
if {[regexp {^Homo$} $GenreLu2]} {incr H}
if {![regexp {^Mus$} $GenreLu1] || ![regexp {^Homo$} $GenreLu1]} {incr A}
}
}
}
Espionne "il y a $D lignes qui ont un access dans DNA_acc"
Espionne "il y a $M lignes de souris"
Espionne "il y a $H lignes d'homme"
}
proc CompteAcAbis {} {
set D 0; set M 0; set H 0
foreach I [RetChip5 ListOf Index] {
set Des [RetChip5 $I "description_customer"]
set AC [RetChip5 $I "DNA_acc"]
if { $AC!="" } {
if { [regexp {\?} $AC] } { continue }
incr D
Espionne "la ligne $I a un numero access:$AC dans DNA_acc=>$D"
set ListAc [split $AC ","]
foreach Ac $ListAc {
if { [regexp {^NM_} $Ac] || [regexp {^XM_} $Ac] || [regexp {^NR_} $Ac]} {
set Commande1 "getz \"\\\[refseq-acc:$Ac\\\]\" \-vf mol"
set GetzOut1 [eval exec $Commande1]
if {$GetzOut1 == ""} {puts "attention pas fichesNM"; continue}
set RefLu1 ""
set MolLu1 ""
scan $GetzOut1 "%s %s" RefLu1 MolLu1
puts "$Ac=>molecule=$MolLu1"
if {[regexp {^mRNA$} $MolLu1]} {incr M}
if {[regexp {^DNA$} $MolLu1]} {incr H}
} else {
set Commande2 "getz \"\\\[genbankfull-acc:$Ac\\\]\" \-vf mol"
set GetzOut2 [eval exec $Commande2]
if {$GetzOut2 == ""} {puts "attention pas fichesGB"; continue}
set RefLu2 ""
set MolLu2 ""
scan $GetzOut2 "%s %s" RefLu2 MolLu2
if {[regexp {^mRNA$} $MolLu2]} {incr M}
if {[regexp {^DNA$} $MolLu2]} {incr H}
puts "$Ac=>molecule=$MolLu2"
}
}
}
}
Espionne "il y a $D lignes qui ont un access dans DNA_acc"
Espionne "il y a $M lignes mRNA"
Espionne "il y a $H lignes DNA"
}
proc CompteAcAbis_AEffacer {} {
set D 0
set M 0
set H 0
foreach I [RetChip2 ListOf Index] {
set Des [RetChip2 $I "description_customer"]
set Ac [RetChip2 $I "DNA_acc"]
if { [regexp {^RA[0-9]+} $Des] } { continue }
if { [regexp {\?} $Ac] } { continue }
if { $Ac!="" } {
incr D
Espionne "la ligne $I a un numero access:$Ac dans DNA_acc=>$D"
if { [string equal "?" $Ac] } { continue }
if { [regexp {^NM_} $Ac] } {
set Commande1 "getz \"\\\[refseq-acc:$Ac\\\]\" \-vf mol"
set GetzOut1 [eval exec $Commande1]
if {$GetzOut1 == ""} {puts "attention pas fichesNM"; continue}
set RefLu1 ""
set MolLu1 ""
scan $GetzOut1 "%s %s" RefLu1 MolLu1
puts "NM=>molecule=$MolLu1"
if {[regexp {^mRNA$} $MolLu1]} {incr M}
if {[regexp {^DNA$} $MolLu1]} {incr H}
} else {
set Commande2 "getz \"\\\[genbankfull-acc:$Ac\\\]\" \-vf mol"
set GetzOut2 [eval exec $Commande2]
if {$GetzOut2 == ""} {puts "attention pas fichesGB"; continue}
set RefLu2 ""
set MolLu2 ""
scan $GetzOut2 "%s %s" RefLu2 MolLu2
if {[regexp {^mRNA$} $MolLu2]} {incr M}
if {[regexp {^DNA$} $MolLu2]} {incr H}
puts "GB=>molecule=$MolLu2"
}
}
}
Espionne "il y a $D lignes qui ont un access dans DNA_acc"
Espionne "il y a $M lignes mRNA"
Espionne "il y a $H lignes DNA"
}
proc CompteAcNm {} {
set E 0; set F 0; set M 0; set D 0
foreach I [RetChip5 ListOf Index] {
set Des [RetChip5 $I "description_customer"]
set NM [RetChip5 $I "refseq_PIQOR"]
set AC [RetChip5 $I "DNA_acc"]
if {[regexp {\?} $AC]} {continue}
if {$AC!=""} { incr D }
if {$NM!="" && $AC!=""} {
incr E
Espionne "la ligne $I a 2 numeros access dans DNA_acc:$AC et refseq:$NM=>$E"
}
if { $NM!="" && $AC!="" && [regexp {.\,.} $NM] } {
set LesNMs [split $NM ","]
foreach LeNM $LesNMs {
if { $LeNM==$AC } {
incr F
Espionne "pls1=la ligne $I a le meme numero dans DNA_acc et refseq=>$F"
}
}
continue
}
if { $NM!="" && $AC!="" && [regexp {.\,.} $AC] } {
set LesACs [split $AC ","]
foreach LeAC $LesACs {
if { $LeAC==$NM } {
incr F
Espionne "pls2=la ligne $I a le meme numero dans DNA_acc $AC et refseq $NM=>$F"
}
}
continue
}
if {$NM!="" && $AC!="" && $NM==$AC} {
incr F
Espionne "uni=la ligne $I a le meme numero dans DNA_acc et refseq=>$F"
}
}
Espionne "il y a $D lignes ac un access ds DNA_acc"
Espionne "il y a $E lignes qui ont 2 access dans DNA_acc et refseq"
Espionne "il y a $F lignes qui ont 2 access identiques dans DNA_acc et refseq"
}
proc CompteAcNm_AEffacer {} {
#ss RA ss ?
set E 0
set F 0
set M 0
set D 0
foreach I [RetChip2 ListOf Index] {
set Des [RetChip2 $I "description_customer"]
set NM [RetChip2 $I "refseq_PIQOR"]
set AC [RetChip2 $I "DNA_acc"]
if { [regexp {^RA[0-9]+} $Des] } { continue }
if { [regexp {\?} $AC] } { continue }
if {$AC!=""} { incr D }
if {$NM!="" && $AC!=""} {
incr E
Espionne "la ligne $I a 2 numeros access dans DNA_acc:$AC et refseq:$NM=>$E"
}
if { $NM!="" && $AC!="" && [regexp {.\,.} $NM] } {
set LesNMs [split $NM ","]
foreach LeNM $LesNMs {
if { $LeNM==$AC } {
incr F
Espionne "pls=la ligne $I a le meme numero dans DNA_acc et refseq=>$F"
}
}
continue
}
if {$NM!="" && $AC!="" && $NM==$AC} {
incr F
Espionne "uni=la ligne $I a le meme numero dans DNA_acc et refseq=>$F"
}
}
Espionne "il y a $D lignes ac un access ds DNA_acc"
Espionne "il y a $E lignes qui ont 2 access dans DNA_acc et refseq"
Espionne "il y a $F lignes qui ont 2 access identiques dans DNA_acc et refseq"
}
proc CompteBootArbre {t n} {
set ::TBoot {}
CreeBootstrapTable $t
CompareArbres
return
}
proc CompteBootArbre2 {t n} {
global TBoot
if {[$t isleaf $n]} {return}
foreach fils [$t children $n] {
CompteBootArbre $t $fils
}
set L1 {}
foreach e [$t children $n] {
if {[$t isleaf $e]} {
set Le $e
} else {
set Le [$t descendants $e filter FilterLeaf]
}
set Le [lsort $Le]
lappend L1 [join $Le ","]
}
set k1 [join $L1 "@"]
set k2 [join [lreverse $L1] "@"]
incr TBoot($k1)
incr TBoot($k2)
return
}
proc CompteCons {} {
set mdb "rootmis"
sqlite3 $mdb [file join [MiSynPatDir] misynpat.sql]
set sys [string index [file tail [set ::Defauts(FichierXML)]] 0]
puts "\nSystem $sys"
set sname [string toupper "${sys}ars%"]
set Lmut [$mdb eval {select m.variant1, m.variant2 from mutation as m, synthetase as s where s.sname like $sname and s.pk_synthetase=m.pk_synthetase}]
puts "Lmut $Lmut"
if {[llength $Lmut] == 0} {
puts "\nSystem Done"
$mdb close
FermeFichier
exit
}
if {$sys eq "F"} {set sys "Fb"}
set humi "${sys}mito_Homo.sapi"
set Lcons {}
set ncon 0
set feat "Discri"
if {[info exists ::TabSF($humi,$feat)]} {
set Lft $::TabSF($humi,$feat)
} else {
puts "\nNo $feat for $humi !\n"
set Lft [list]
}
foreach ft $Lft {
DecortiqueUneFeature $ft deb fin col ssc note sys
for {set i $deb} {$i <= $fin} {incr i} {
set no [DonnePosGS $humi $i]
lappend Lcons $no $note
}
}
foreach k {"IdenGlob" "ConsGlob" "SimiGlob" "nocons"} {
set Tc($k) [list]
}
foreach mut $Lmut {
if {[regexp {[A-Y]} [string index $mut 0]]} {
set no [string range $mut 1 end-1]
lappend Lrmut $no
}
}
set Lrmut [lsort -unique -integer $Lrmut]
puts "\nNumber of missense mutations : [llength $Lrmut]"
foreach no $Lrmut {
set ires [lsearch -exact $Lcons $no]
if {$ires > -1} {
set type [lindex $Lcons $ires+1]
lappend Tc($type) $no
incr ncon
} else {
lappend Tc(nocons) $no
}
}
puts ""
set nmc 0
foreach k {"IdenGlob" "ConsGlob" "SimiGlob"} {
incr nmc [llength $Tc($k)]
}
puts "Number of mutations conserved : $nmc"
puts "Number of non-conserved mut : [llength $Tc(nocons)]"
foreach k {"IdenGlob" "ConsGlob" "SimiGlob" "nocons"} {
puts " $k : [llength [set Tc($k)]]"
puts "[set Tc($k)]"
}
puts "\nSystem Done"
$mdb close
FermeFichier
exit
}
proc CompteConsDiscri {} {
set mdb "rootmis"
sqlite3 $mdb [file join [MiSynPatDir] misynpat.sql]
set sys [string index [file tail [set ::Defauts(FichierXML)]] 0]
puts "\nSystem $sys"
set sname [string toupper "${sys}ars%"]
set Lmut [$mdb eval {select m.variant1, m.variant2 from mutation as m, synthetase as s where s.sname like $sname and s.pk_synthetase=m.pk_synthetase}]
puts "Lmut $Lmut"
if {[llength $Lmut] == 0} {
puts "\nSystem Done"
$mdb close
FermeFichier
exit
}
if {$sys eq "F"} {set sys "Fb"}
set humi "${sys}mito_Homo.sapi"
set Lcons {}
set ncon 0
set Lfeat [list "Cons-T80" "Discri"]
set Lft [list]
foreach feat $Lfeat {
if {[info exists ::TabSF($humi,$feat)]} {
lappend Lft {*}$::TabSF($humi,$feat)
} else {
puts "\nNo $feat for $humi !\n"
}
}
foreach ft $Lft {
DecortiqueUneFeature $ft deb fin col ssc note sys
if {$note ni {"IdenGlob" "ConsGlob"}} {
set note "Discri"
}
for {set i $deb} {$i <= $fin} {incr i} {
set no [DonnePosGS $humi $i]
lappend Lcons $no $note
}
}
set Lcat {"IdenGlob" "ConsGlob" "Discri"}
foreach k $Lcat {
set Tc($k) [list]
}
set Tc(nocons) [list]
foreach mut $Lmut {
if {[regexp {[A-Y]} [string index $mut 0]]} {
set no [string range $mut 1 end-1]
lappend Lrmut $no
}
}
set Lrmut [lsort -unique -integer $Lrmut]
puts "\nNumber of missense mutations : [llength $Lrmut]"
foreach no $Lrmut {
set ires [lsearch -exact $Lcons $no]
if {$ires > -1} {
set type [lindex $Lcons $ires+1]
lappend Tc($type) $no
incr ncon
} else {
lappend Tc(nocons) $no
}
}
puts ""
set nmc 0
foreach k $Lcat {
incr nmc [llength $Tc($k)]
}
puts "Number of mutations conserved : $nmc"
puts "Number of non-conserved mut : [llength $Tc(nocons)]"
lappend Lcat "nocons"
foreach k $Lcat {
puts " $k : [llength [set Tc($k)]]"
puts "[set Tc($k)]"
}
puts "\nSystem Done"
$mdb close
FermeFichier
exit
}
proc CompteCytoBand {{Liste ""}} {
if {[EstUnPAB $Liste]} { set Liste [list $Liste] }
if {$Liste==""} { set Liste [ListeDesPABs] }
set Total 0; set Ra 0; set pasaccess 0; set SsLoc 0; set AcLoc 0; set Cas2 0; set Cas3 0; set Cas4 0; set Cas5 0;set Cas6 0
foreach Nom $Liste {
incr Total
set yena2 0
set LocUcsc ""; set CytoBand1 ""; set CytoBand2 ""; set CytoBand ""
set LocUcsc [ExtraitInfo $Nom "LocUcsc:"]
set Attention [ExtraitInfo $Nom "SeqWarning:"]
if {[regexp "raligne" $Attention]} {
incr Ra
Espionne "cas0 $Nom=> CytoBand: novalue"
continue
}
if {[regexp "pas d access" $Attention]} {
incr pasaccess
Espionne "cas0bis $Nom=> CytoBand: novalue"
continue
}
if {$LocUcsc=="" || $LocUcsc=="no value"} {
incr SsLoc
Espionne "cas1 $Nom=> CytoBand: no value"
}
if {$LocUcsc!="" && $LocUcsc!="no value"} {
incr AcLoc
set LesMotsLocUcsc [split $LocUcsc {:- }]
set chrLocUcsc [lindex $LesMotsLocUcsc 0]
set startLocUcsc [lindex $LesMotsLocUcsc 1]
set stopLocUcsc [lindex $LesMotsLocUcsc 2]
set CytoBand1 [CytoBandUcsc Mouse $chrLocUcsc $startLocUcsc]
set CytoBand2 [CytoBandUcsc Mouse $chrLocUcsc $stopLocUcsc]
if {$CytoBand1=="" && $CytoBand2==""} {
incr Cas2
Espionne "cas2 $Nom=> CytoBand: no value"
}
if {$CytoBand1!="" && $CytoBand2!="" && $CytoBand1 == $CytoBand2} {
incr Cas3
set yena2 1
set CytoBand $CytoBand1
Espionne "cas3 $Nom=> CytoBand: $CytoBand"
}
if {$CytoBand1!="" && $CytoBand2!="" && $CytoBand1 != $CytoBand2} {
incr Cas4
set yena2 1
set CytoBand "$CytoBand1 Et $CytoBand2"
Espionne "cas4 $Nom=> CytoBand: $CytoBand"
}
if {!$yena2 && $CytoBand1!=""} {
incr Cas5
set CytoBand $CytoBand1
Espionne "cas5 $Nom=> CytoBand: $CytoBand"
}
if {!$yena2 && $CytoBand2!=""} {
incr Cas6
set CytoBand $CytoBand2
Espionne "cas6 $Nom=> CytoBand: $CytoBand"
}
}
}
Espionne "total= $Total"
Espionne "cas0= $Ra"
Espionne "cas0bis= $pasaccess"
Espionne "ssloc= $SsLoc"
Espionne "acloc= $AcLoc"
Espionne "cas2= $Cas2"
Espionne "cas3= $Cas3"
Espionne "cas4= $Cas4"
Espionne "cas5= $Cas5"
Espionne "cas6= $Cas6"
}
proc CompteDans {ListeDesNoms args} {
foreach A $args { set CompteDe($A) 0 }
foreach Nom $ListeDesNoms {
set Acc [AccessEvi $Nom]
if {[info exist DejaVu($Acc)]} {continue}
set DejaVu($Acc) 1
foreach A $args {
if {[regexp "$A" $Acc]} {incr CompteDe($A)}
}
}
set LesComptes {}
foreach A $args {
lappend LesComptes $CompteDe($A)
}
return $LesComptes
}
proc CompteDesOrganismesAyantMemeOperon {Nom} {
global LesOrganismesAyantMemeOperon
if { ! [info exists LesOrganismesAyantMemeOperon] } {
ChargeLesOrganismesAyantMemeOperon
}
if { ! [info exists LesOrganismesAyantMemeOperon(LaListeMerci,Compte)] } {
foreach {Clef Valeur} [array get LesOrganismesAyantMemeOperon] {
if { ! [regexp ",Compte$" $Clef]} { continue }
lappend LesComptes $Valeur
}
set LesOrganismesAyantMemeOperon(LaListeMerci,Compte) $LesComptes
}
if { [info exists LesOrganismesAyantMemeOperon($Nom,Compte)] } {
return [set LesOrganismesAyantMemeOperon($Nom,Compte)]
} else {
return 0
}
}
proc CompteEC {} {
set FichierSortie "[RepertoireDuGenome]/fiches/statEC"
foreach Nom [ListeDesPABs] {
set FichierNb "[RepertoireDuGenome]/fichesannotation/$Nom.nb"
foreach Ligne [LesLignesDuFichier $FichierEC] {
scan $Ligne "%s" A
}
foreach Ligne1 [LesLignesDuFichier $FichierNb] {
scan $Ligne1 "%s" C
}
AppendAuFichier $FichierSortie "$Nom $A $C"
}
}
proc CompteEmblRecupere {} {
set A 0
set Repertoire "[RepertoireDuGenome]/protemblRecupere"
foreach F [glob -nocomplain "$Repertoire/EVI*"] {
incr A
}
Espionne "A $A"
}
proc CompteEtListeLesProtUniquesParOrganismeNotHuman {FichierDDnothuman FichierOrgaNotHuman} {
#FichierDDnothuman=fiches/LesDDAvecProtChoisieNotHuman
#FichierOrgaNotHuman=fiches/LesOrgasNotHumanDesProtChoisies
foreach Lorga [LesLignesDuFichier $FichierOrgaNotHuman] {
#Espionne $Lorga
set n 0
set LesNoms ""
foreach Ligne [LesLignesDuFichier $FichierDDnothuman] {
if {$Ligne==""} {continue}
set LesDD [split $Ligne " "]
set DDprem [lindex $LesDD 0]
set Orga [InterrogeProtAndmRNAChoisis $DDprem OrganismeChoisi]
if {$Orga==$Lorga} {incr n; lappend LesNoms $DDprem}
}
lappend Liste "$Lorga\t$n\t$LesNoms"
}
set ListeTriee [lsort -index 2 -integer -decreasing $Liste]
return $ListeTriee
}
proc CompteExonGb {} {
set total 0; set Total2 0; set cool 0; set pascool 0
set lesAccs [LocUcsc ListOfMouse Access]
set lesAccs [ListeSansDoublon $lesAccs]
foreach Acc $lesAccs {
set ListeNombreExon {}
incr total
set ListeNombreExon [LocUcsc $Acc exonCounts]
set ListeNombreExon [ListeSansDoublon $ListeNombreExon]
set longueur [llength $ListeNombreExon]
if {$longueur==1} {
incr cool
set NbExon [lindex $ListeNombreExon 0]
if { $NbExon == 2 } {Espionne "$Acc $NbExon" }
if { ! [info exists Compte($NbExon)]} { set Compte($NbExon) 0 }
incr Compte($NbExon)
}
if {$longueur>1} {
incr pascool
foreach NombreExon $ListeNombreExon {
if { ! [info exists Compte($NombreExon)]} { set Compte($NombreExon) 0 }
incr Compte($NombreExon)
}
}
}
foreach Nb [lsort -integer [array names Compte]] {
Espionne "$Nb exons = $Compte($Nb)"
set X $Compte($Nb)
if { ! [info exists Total2]} {
set Total2 $X
} else {
set Total2 [expr $Total2+$X]
}
}
Espionne "total= $total"
Espionne "ok= $cool"
Espionne "attention= $pascool"
Espionne "Total2= $Total2"
}
proc CompteExonRs {} {
set total 0; set Total2 0; set cool 0; set pascool 0
set lesAccs [LocUcscRefSeq ListOf Access]
set lesAccs [ListeSansDoublon $lesAccs]
foreach Acc $lesAccs {
set ListeNombreExon {}
incr total
set ListeNombreExon [LocUcscRefSeq $Acc exonCounts]
set ListeNombreExon [ListeSansDoublon $ListeNombreExon]
set longueur [llength $ListeNombreExon]
if {$longueur==1} {
incr cool
set NbExon [lindex $ListeNombreExon 0]
if { ! [info exists Compte($NbExon)]} { set Compte($NbExon) 0 }
incr Compte($NbExon)
}
if {$longueur>1} {
incr pascool
foreach NombreExon $ListeNombreExon {
if { ! [info exists Compte($NombreExon)]} { set Compte($NombreExon) 0 }
incr Compte($NombreExon)
}
}
}
foreach Nb [lsort -integer [array names Compte]] {
Espionne "$Nb exons = $Compte($Nb)"
set X $Compte($Nb)
if { ! [info exists Total2]} {
set Total2 $X
} else {
set Total2 [expr $Total2+$X]
}
}
Espionne "total= $total"
Espionne "ok= $cool"
Espionne "attention= $pascool"
Espionne "Total2= $Total2"
}
proc CompteFeuilles {{t ""} {n ""} {a ""}} {
global CompteFeuilles
if {$t eq ""} { set CompteFeuilles 0 ; return }
if {$t eq "get"} {return $CompteFeuilles}
incr CompteFeuilles [$t isleaf $n]
return $CompteFeuilles
}
proc CompteGenoret {} {
set Total 0
foreach Fichier [GlobRecursif "*.php" /home/berthomg/wwwGB/genoret] {
set N 0
scan [exec wc -l $Fichier] "%d" N
incr Total $N
}
Espionne $Total
exit
}
proc CompteHomologeneId {} {
set total 0; set vide 0; set novalue 0; set oui 0
foreach Nom [ListeDesPABs] {
incr total
#Espionne $Nom
set Info ""
set Info [ExtraitInfo $Nom "HomologeneId"]
if {$Info==""} {incr vide;Espionne "vide"}
if {[regexp "no value" $Info]} {incr novalue;Espionne "pasvaleur"}
if {[regexp {[0-9]+} $Info]} {incr oui;Espionne "avaleur"}
}
Espionne "total $total"
Espionne "vide $vide"
Espionne "novalue $novalue"
Espionne "oui $oui"
}
proc CompteLeNbDeGenesDansLaBanqueCGH {FichierTfas} {
#FichierTfas = genomics/g2/Procure/banques/ProtCGH06
foreach Ligne [LesLignesDuFichier $FichierTfas] {
if {[regexp -nocase "^>" $Ligne]} {
set LesElts [split $Ligne "\|"]
set AccessProt [lindex $LesElts 1]
Espionne $AccessProt
if {[regexp "NP" $AccessProt]} {
if {![info exists Vu($AccessProt)]} {set Vu($AccessProt) 1; lappend LesGenes $AccessProt}
} else {
set Commande "getz \"\\\[protein-acc:$AccessProt\\\]\\\>\\\[refseqprelease-org:Homo sapiens\\\]\" \-vf acc"
set GetzOut [eval exec $Commande]
set LesElts [split $GetzOut " "]
foreach Elt $LesElts {
if {[regexp "\:" $Elt]} {continue}
if {![info exists Vu($AccessProt)]} {
set Vu($AccessProt) 1
lappend LesGenes $AccessProt
}
}
}
}
}
Espionne [llength $LesGenes]
set L [lsort -unique $LesGenes]
Espionne [llength $L]
SauveLesLignes $L dans "[RepertoireDuGenome]/banques/LesGenesDeProtCGH06_28Nov06"
}
proc CompteLeNombreDeNomsDifferents {Fichier} {
set Nom bob
set n 0
foreach Ligne [LesLignesDuFichier $Fichier] {
scan $Ligne "%s" nom
if {$nom!=$Nom} {incr n}
set Nom $nom
}
return $n
}
proc CompteLesElmtsDuRecapTfa {} {
set MGU74 0; set MG430 0
set FichierTfaPourClusteringMGU74 "[RepertoireDuGenome]/transcriptomique/RecapTfaPourClusteringMGU74.tfa"
set FichierTfaPourClusteringMG430 "[RepertoireDuGenome]/transcriptomique/RecapTfaPourClusteringMG430.tfa"
foreach LigneMGU74 [LesLignesDuFichier $FichierTfaPourClusteringMGU74] {
if {[regexp {^>} $LigneMGU74]} {
incr MGU74
}
}
foreach LigneMG430 [LesLignesDuFichier $FichierTfaPourClusteringMG430] {
if {[regexp {^>} $LigneMG430]} {
incr MG430
}
}
puts "MGU74 $MGU74"
puts "MG430 $MG430"
}
proc CompteLesErreurs {{Liste ""}} {
if {[EstUnPAB $Liste]} { set Liste [list $Liste] }
if {$Liste==""} { set Liste [ListeDesPABs] }
set existepas 0; set bidon 0; set plusdun 0; set plusdix 0
set LesNomsQuiExistePas {}; set LesBidons {}; set LesPls {}; set LesPlusDix {}
#meme chose
#set LesLignes [NomLigne ListeDes Lignes]
#foreach Ligne $LesLignes
#set TousLesNoms [NomLigne $Ligne Noms]
#set ListeDesNoms [split $TousLesNoms " "]
#foreach Nom $ListeDesNoms
foreach Nom $Liste {
set Fichier "[RepertoireDuGenome]/nuctfa/$Nom"
if {![file exists $Fichier]} {
incr existepas
lappend LesNomsQuiExistePas $Nom
continue
}
set LesLignes [LesLignesDuFichier $Fichier]
set premiereligne [lindex $LesLignes 0]
if {[regexp "bidon" $premiereligne]} {
incr bidon
lappend LesBidons $Nom
continue
}
set elmts [split $Nom ""]
set chiffre [lindex $elmts 7]
set NomSansFin [string range $Nom 0 end-1]
if {$chiffre!=0} {
lappend LesPls $NomSansFin
}
if {$chiffre==9} {
lappend LesPlusDix $NomSansFin
}
}
set LesPls [ListeSansDoublon $LesPls]
set LesPlusDix [ListeSansDoublon $LesPlusDix]
set longLesPls [llength $LesPls]
set longLesPlusDix [llength $LesPlusDix]
Espionne "LesNomsQuiExistePas $existepas"
Espionne "$LesNomsQuiExistePas"
Espionne "LesBidons $bidon"
Espionne "$LesBidons"
Espionne "LesPls $longLesPls"
Espionne "$LesPls"
Sauve $LesPls dans "[RepertoireDuGenome]/LesPlsDeCompteLesErreurs"
Espionne "LesPlusDix $longLesPlusDix"
Espionne "$LesPlusDix"
}
proc CompteLesGaps {Sequence} {
set N 0
foreach Lettre [split $Sequence ""] {
if {[string equal -nocase $Lettre "-"]} { incr N }
}
return $N
}
proc CompteLesJRAvecARNmValide {FichierClusters} {
set RepARNmValide "[RepertoireDuGenome]/mrnahuman"
set n 0
foreach JR [ListeMinimumDesJR $FichierClusters] {
if {[file exists "$RepARNmValide/$JR"]} {
incr n
}
}
return $n
}
proc CompteLesJRnonLocalises {FichierClusters} {
set n 0
foreach JR [ListeMinimumDesJR $FichierClusters] {
if {[PolyLocalise $JR]=="NoLocalization"} {
incr n
}
}
return $n
}
proc CompteLesLettres {SeqOUFic Input} {
if {$SeqOUFic=="Fic"} {
#set FichierNuctfa "[RepertoireDuGenome]/nuctfa/$Nom"
#set FichierNuctfa "[RepertoireDuGenome]/mrnatfa_Homo_sapiens/$Nom";
if {[FileAbsent $Input]} { return -1 }
set Seq [QueLaSequenceDuFichierTFA $Input]
}
if {$SeqOUFic=="Seq"} { set Seq $Input }
set N 0
foreach C [split $Seq ""] {
if {[string equal -nocase $C "A"]} { incr N }
if {[string equal -nocase $C "T"]} { incr N }
if {[string equal -nocase $C "G"]} { incr N }
if {[string equal -nocase $C "C"]} { incr N }
}
return $N
}
proc CompteLesLettres_AEffacer {Nom} {
#set FichierNuctfa "[RepertoireDuGenome]/nuctfa/$Nom"
set FichierNuctfa "[RepertoireDuGenome]/mrnatfa_Homo_sapiens/$Nom";
if {[FileAbsent $FichierNuctfa]} { return -1 }
set Seq [QueLaSequenceDuFichierTFA $FichierNuctfa]
set N 0
foreach C [split $Seq ""] {
if {[string equal -nocase $C "A"]} { incr N }
if {[string equal -nocase $C "T"]} { incr N }
if {[string equal -nocase $C "G"]} { incr N }
if {[string equal -nocase $C "C"]} { incr N }
}
return $N
}
proc CompteLesLocalisations {} {
set Tout 0; set NbRien 0; set ToutSsVide 0; set SsLocG03 0; set AcLocG03 0; set SsLocG08 0; set AcLocG08 0; set SsLocR03 0; set AcLocR03 0; set SsLocR08 0; set AcLocR08 0; set SsLoc03 0; set AcLoc03 0; set SsLoc08 0; set AcLoc08 0
foreach Nom [ListeDesPABs] {
incr Tout
set FichierNuctfa "[RepertoireDuGenome]/nuctfa/$Nom"
set LesLignes [LesLignesDuFichier $FichierNuctfa]
set LaPremiereLigne [lindex $LesLignes 0]
if {[regexp {bidon} $LaPremiereLigne]} {
incr NbRien
continue
}
incr ToutSsVide
set LocG03 [ExtraitInfo $Nom "LocUcscFrom200503"]
set LocG08 [ExtraitInfo $Nom "LocUcscFrom200508"]
set LocR03 [ExtraitInfo $Nom "LocUcscRefSeqFrom200503"]
set LocR08 [ExtraitInfo $Nom "LocUcscRefSeqFrom200508"]
puts "$LocG03\n$LocG08\n$LocR03\n$LocR08"
if {![regexp {[0-9]+} $LocG03]} {incr SsLocG03; puts "$Nom =>pas de locG03"}
if {[regexp {[0-9]+} $LocG03]} {incr AcLocG03; puts "$Nom =>a locG03"}
if {![regexp {[0-9]+} $LocG08]} {incr SsLocG08; puts "$Nom =>pas de locG08"}
if {[regexp {[0-9]+} $LocG08]} {incr AcLocG08; puts "$Nom =>a locG08"}
if {![regexp {[0-9]+} $LocR03]} {incr SsLocR03; puts "$Nom =>pas de locR03"}
if {[regexp {[0-9]+} $LocR03]} {incr AcLocR03; puts "$Nom =>a locR03"}
if {![regexp {[0-9]+} $LocR08]} {incr SsLocR08; puts "$Nom =>pas de locR08"}
if {[regexp {[0-9]+} $LocR08]} {incr AcLocR08; puts "$Nom =>a locR08"}
if {![regexp {[0-9]+} $LocG03] && ![regexp {[0-9]+} $LocR03]} {
incr SsLoc03
puts "$Nom =>pas de loc03"
} else {
incr AcLoc03
puts "$Nom =>a loc03"
}
if {![regexp {[0-9]+} $LocG08] && ![regexp {[0-9]+} $LocR08]} {
incr SsLoc08
puts "$Nom =>pas de loc08"
} else {
incr AcLoc08
puts "$Nom =>a loc08"
}
}
puts "nombre total= $Tout"
puts "nombressrien= $NbRien"
puts "toutssvide= $ToutSsVide"
puts ""
puts "sslocG03= $SsLocG03"
puts "aclocG03= $AcLocG03"
puts "sslocG08= $SsLocG08"
puts "aclocG08= $AcLocG08"
puts "sslocR03= $SsLocR03"
puts "aclocR03= $AcLocR03"
puts "sslocR08= $SsLocR08"
puts "aclocR08= $AcLocR08"
puts ""
puts "ssloc03= $SsLoc03"
puts "acloc03= $AcLoc03"
puts "ssloc08= $SsLoc08"
puts "acloc08= $AcLoc08"
}
proc CompteLesN {Sequence} {
set N 0
foreach Lettre [split $Sequence ""] {
if {[string equal -nocase $Lettre "n"]} { incr N }
}
return $N
}
proc CompteLesPlusDixAccmRNA {} {
set NumeroLigne ""
set NbDeFois 0
set Trop 0
set OnALigne 0
foreach Ligne [LesLignesDuFichier "/genomics/link/EVImm/parser/AttriToutVf2"] {
if {[regexp "^ligne" $Ligne]} {
set OnALigne 1
if {$NbDeFois>10} {
Espionne "$NumeroLigne $NbDeFois"
incr Trop
}
set NbDeFois 0
scan $Ligne "%s %s" Bidon NumeroLigne
}
if {$OnALigne && [regexp "^>" $Ligne]} {
incr NbDeFois
}
}
Espionne "trop $Trop"
}
proc CompteLesProt {FichierJumeauxFinal} {
#attention: le test from homo sapiens ne va pas...(voir prottfa/DD0024)
set h 0
foreach Ligne [LesLignesDuFichier $FichierJumeauxFinal] {
if {$Ligne==""} {continue}
set LesDD [split $Ligne " "]
set JR [lindex $LesDD 0]
set FichierProttfa "[RepertoireDuGenome]/prottfa/$JR"
if {![file exists $FichierProttfa]} {Espionne "$FichierProttfa does not exist"}
set EnteteProttfa [EnteteDuFichierTFA $FichierProttfa]
if {[regexp "from Homo sapiens" $EnteteProttfa]} {incr h}
}
return $h
}
proc CompteLesSansProtSansEST {FichierEST} {
set n 0
foreach Nom [ListeDesPABs] {
set FichierProttfa "[RepertoireDuGenome]/prottfa/$Nom"
if {![file exists $FichierProttfa]} {
set EST [InterrogeSelectedEST $FichierEST Nom $Nom LesAccess]
if {$EST==""} {incr n}
}
}
return $n
}
proc CompteLesSequencesAvecBoutDePlasmide {} {
set Rep "[RepertoireDuGenome]/nucmask"
foreach Fichier [glob -nocomplain -directory $Rep "DD*.mrm"] {
set Nom [NomDeFichierSansExtension [file tail $Fichier]]
foreach Ligne [LesLignesDuFichier $Fichier] {
if {[regexp "^>" $Ligne]} {continue}
set TexteLigne [join $Ligne ""]
append TexteTotal $TexteLigne
}
#FaireLire $TexteTotal
if {[regexp -nocase "GAATTCGAT" $TexteTotal]} {lappend ListeSeqAvecBoutPlasmide $Nom}
set TexteTotal ""
}
Espionne [llength $ListeSeqAvecBoutPlasmide]
return [lsort -unique $ListeSeqAvecBoutPlasmide]
#return [llength [lsort -unique $ListeSeqAvecBoutPlasmide]]
}
proc CompteLesSequencesAvecBoutDePlasmideEtPolyT {} {
set Rep "[RepertoireDuGenome]/nuctfa"
set RepPlasmide "[RepertoireDuGenome]/nucmask_SansBoutPlasmide"
set NewRep "[RepertoireDuGenome]/nuctfa_SansBoutPlasmideEtBonSens"
if {![file exists $NewRep]} {file mkdir $NewRep}
foreach Fichier [glob -nocomplain -directory $Rep "DD*"] {
set Nom [NomDeFichierSansExtension [file tail $Fichier]]
set p 0
if {[file exists "$RepPlasmide/$Nom"]} {set Fichier "$RepPlasmide/$Nom"; set p 1}
set EnteteTFA [EnteteDuFichierTFA $Fichier]
set TexteSeq [QueLaSequenceDuTFA $Fichier]
set SeqLength [string length $TexteSeq]
set IndiceMilieuSeq [expr ($SeqLength/2)-1]
#set MilieuSeq [expr ($SeqLength*1.0/2)-1] -> attention! pas de decimal pour la pos d'un nucleotide
#FaireLire "$SeqLength $IndiceMilieuSeq"
if {[regexp -nocase "TTTTTT" $TexteSeq] && $p==1} {lappend LesSeqPlasmideCorrEtPolyT $Nom}
}
return [llength $LesSeqPlasmideCorrEtPolyT]
}
proc CompteLesSequencesAvecPolyA {} {
set Rep "[RepertoireDuGenome]/nuctfa"
set RepNew "[RepertoireDuGenome]/nuctfa_SansBoutPlasmideEtBonSens"
foreach Fichier [glob -nocomplain -directory $Rep "DD*"] {
set Nom [NomDeFichierSansExtension [file tail $Fichier]]
set p 0
if {[file exists "$RepNew/$Nom"]} {set Fichier "$RepNew/$Nom"; set p 1}
set EnteteTFA [EnteteDuFichierTFA $Fichier]
set TexteSeq [QueLaSequenceDuTFA $Fichier]
set SeqLength [string length $TexteSeq]
set IndiceMilieuSeq [expr ($SeqLength/2)-1]
if {[regexp -nocase "AAAAAA" $TexteSeq]} {lappend LesSeqAvecPolyA $Nom}
}
return [llength $LesSeqAvecPolyA]
}
proc CompteLesSequencesDDBizarres {} {
set Fichier "[RepertoireDuGenome]/Localisation/BoxLocalisation_Human_Best"
foreach Nom [ListeDesPABs] {
set Loc [InterrogeLocalisation $Fichier Nom $Nom]
set AccRNACh [InterrogeProtAndmRNAChoisis $Nom mRNAChoisi Access]
set AccProtCh [InterrogeProtAndmRNAChoisis $Nom ProteineChoisie Access]
set OrgaChoisi [InterrogeProtAndmRNAChoisis $Nom OrganismeChoisi]
if {![regexp -nocase "Homo sapiens" $OrgaChoisi]} {
set AccessmRNACh ""
set AccessProtch ""
}
if {[regexp -nocase "NOMRNA" $AccRNACh] || $AccRNACh==""} {set R 0} else {set R 1}
if {[regexp -nocase "NoProtein" $AccProtCh] || $AccProtCh==""} {set P 0} else {set P 1}
if {$P==0} {
set AccProtContig [InterrogeProtAndContigChoisis $Nom ProteineChoisie Access]
if {$AccProtContig!=""} {set P 1}
}
if {$Loc==""} {set L 0} else {set L 1}
if {($L==0 && $R==1) || ($L==0 && $P==1)} {
lappend ListeBiz $Nom
}
}
Espionne [llength $ListeBiz]
return $ListeBiz
}
proc CompteLesSequencesNormalesEtPolyT {} {
set Rep "[RepertoireDuGenome]/nuctfa"
set RepPlasmide "[RepertoireDuGenome]/nucmask_SansBoutPlasmide"
set NewRep "[RepertoireDuGenome]/nuctfa_SansBoutPlasmideEtBonSens"
if {![file exists $NewRep]} {file mkdir $NewRep}
foreach Fichier [glob -nocomplain -directory $Rep "DD*"] {
set Nom [NomDeFichierSansExtension [file tail $Fichier]]
set p 0
if {[file exists "$RepPlasmide/$Nom"]} {set Fichier "$RepPlasmide/$Nom"; set p 1}
set EnteteTFA [EnteteDuFichierTFA $Fichier]
set TexteSeq [QueLaSequenceDuTFA $Fichier]
set SeqLength [string length $TexteSeq]
set IndiceMilieuSeq [expr ($SeqLength/2)-1]
#set MilieuSeq [expr ($SeqLength*1.0/2)-1] -> attention! pas de decimal pour la pos d'un nucleotide
#FaireLire "$SeqLength $IndiceMilieuSeq"
if {[regexp -nocase "TTTTTT" $TexteSeq] && $p==1 && [regexp -nocase "TAAGCTTTTT" $TexteSeq]} {lappend LesSeqPlasmideCorrEtPolyTetNormales $Nom} elseif {[regexp -nocase "TTTTTT" $TexteSeq] && $p==0 && [regexp -nocase "TAAGCTTTTT" $TexteSeq]} {lappend LesSeqPolyTetNormales $Nom}
}
Espionne "seq avec bout plasmide et poly T et Normales: [llength $LesSeqPlasmideCorrEtPolyTetNormales]"
Espionne $LesSeqPlasmideCorrEtPolyTetNormales
return "seq sans bout plasmide et poly T et Normales: [llength $LesSeqPolyTetNormales]"
}
proc CompteLesStartCodonsOk {} {
global RepertoireDuGenome
set OldNom ""
set nOK 0
set DejaCompte 0
foreach Ligne [LesLignesDuFichier "$RepertoireDuGenome/fiches/startcodon_summary.rr"] {
if { ! [regexp -nocase {[a-z]} $Ligne]} { continue }
regsub "/" $Ligne "" Ligne
set Poch ""
scan $Ligne "%s %d %s %d %d %d %d %d %d %d %s" Nom iGGT MVL iMet oAv oAp F T a b Poch
if {[regexp {\+[1-9]} $Ligne]} { set oAp "+$oAp" }
if {[regexp {^ok[qsi]} $Poch]} {
set BonMet $iMet
InformeSansDemander $Nom "=MetRR: $MVL $BonMet"
Espionne $Ligne
Espionne " =MetRR: $MVL $BonMet"
}
if { ! $DejaCompte && $Nom==$OldNom && [regexp "^ok" $Poch]} {
incr nOK
set DejaCompte 1
}
if {$Nom!=$OldNom} { set DejaCompte 0 }
set OldNom $Nom
}
Espionne $nOK
exit
}
proc CompteLesTar {} {
set nb 0
set Repertoire "/genomics/link/EVI3_msf/EVI3_MSF_JOB-223"
foreach G [glob -nocomplain "$Repertoire/Job*"] {
#puts "$G $nb"
incr nb
}
puts "nb $nb"
}
proc CompteLesVraisOverlapsDDAffyLoc {} {
set nb 0; set n 0; set b 0
#set F "[RepertoireDuGenome]/OverlapDDAffy_Loc"
set F "[RepertoireDuGenome]/OverlapDDAffy_Loc_New"
foreach Ligne [LesLignesDuFichier $F] {
incr nb
if {![regexp -nocase "TAR" $Ligne]} {incr n}
if {![regexp -nocase "DD" $Ligne]} {incr b}
}
Espionne "$nb - $n jumeaux Affy et $b jumeaux DD"
return [expr $nb-($n+$b)]
}
proc CompteLigneAcPlusDixAccmRNA {} {
set numeroligne ""
set nbdefois 0; set trop 0; set onaligne 0
foreach Ligne [LesLignesDuFichier "/genomics/link/EVImm/parser/AttriToutVf2"] {
if {[regexp "^ligne" $Ligne]} {
set onaligne 1
#Espionne "$numeroligne $nbdefois"
if {$nbdefois>10} {
Espionne "$numeroligne $nbdefois"
incr trop
}
set nbdefois 0
scan $Ligne "%s %s" bidon numeroligne
}
if {$onaligne && [regexp "^>" $Ligne]} {
incr nbdefois
}
}
Espionne "trop $trop"
}
proc CompteLigneAcPlusDixBoite {{Liste ""}} {
if {[EstUnPAB $Liste]} { set Liste [list $Liste] }
if {$Liste==""} { set Liste [ListeDesPABs] }
set LesPlusDix {}
foreach Nom $Liste {
set Fichier "[RepertoireDuGenome]/nuctfa/$Nom"
set elmts [split $Nom ""]
set chiffre [lindex $elmts 7]
set NomSansFin [string range $Nom 0 end-1]
if {$chiffre==9} {
lappend LesPlusDix $NomSansFin
}
}
foreach PlusDix $LesPlusDix {
foreach Nom $Liste {
if {[regexp $PlusDix $Nom]} {
set Gn [ExtraitInfo $Nom "ValiGN"]
set Des [ExtraitInfo $Nom "ValiDE"]
set Acc [AccessEvi $Nom]
lappend Final "$Nom $Gn $Acc $Des"
regsub -all "EVI" $PlusDix "" PlusDixSsEVI
set LesChiffres [split $PlusDixSsEVI ""]
set premierchiffre [lindex $LesChiffres 0]
if {$premierchiffre=="0"} {
regsub "0" $PlusDixSsEVI "" PlusDixSsEVI
}
set PlusDixSsEVISuivant [expr $PlusDixSsEVI +1]
if {$premierchiffre=="0"} {
set PlusDixSsEVISuivant "0$PlusDixSsEVISuivant"
}
lappend LesSuivants $PlusDixSsEVISuivant
}
}
}
set LesSuivants [ListeSansDoublon $LesSuivants]
foreach Suivant $LesSuivants {
set Suivant "EVI$Suivant"
foreach Nom $Liste {
if {[regexp $Suivant $Nom]} {
set GnSuiv [ExtraitInfo $Nom "ValiGN"]
set DesSuiv [ExtraitInfo $Nom "ValiDE"]
set AccSuiv [AccessEvi $Nom]
lappend Final "$Nom $GnSuiv $AccSuiv $DesSuiv"
}
}
}
set Final [ListeSansDoublon $Final]
set Final [lsort -index 0 $Final]
set LesPlusDix [ListeSansDoublon $LesPlusDix]
set longLesPlusDix [llength $LesPlusDix]
EspionneL $Final
#Espionne "LesPlusDix $longLesPlusDix"
#Espionne "$LesPlusDix"
}
proc CompteMasking {} {
foreach F [glob -nocomplain "[RepertoireDuGenome]/nucmask/EVI*"] {
set Queue [file tail $F]
set LesMots [split $Queue "."]
set Nom [lindex $LesMots 0]
if {[info exists DejaVu($Nom)]} {
incr DejaVu($Nom)
} else {
set DejaVu($Nom) 1
}
}
Espionne [array size DejaVu]
}
proc CompteNbExon {} {
set Fichier "[RepertoireDuGenome]/PourOlivier"
foreach Ligne [LesLignesDuFichier $Fichier] {
set LesMots [split $Ligne " "]
set Acc [lindex $LesMots 0]
set Nb [lindex $LesMots 1]
if { ! [info exists Compte($Nb)]} { set Compte($Nb) 0 }
incr Compte($Nb)
}
foreach Nb [lsort -integer [array names Compte]] {
Espionne "$Nb exons = $Compte($Nb)"
set X $Compte($Nb)
if { ! [info exists Total]} {
set Total $X
} else {
set Total [expr $Total+$X]
}
}
Espionne "Total= $Total"
}
proc CompteNm {} {
set total 0
set A 0
set B 0
set C 0
foreach I [RetChip5 ListOf Index] {
incr total
set Des1 [RetChip5 $I "description_customer"]
set NM3 [RetChip5 $I "refseq_PIQOR"]
if { $NM3 != "" } {
incr A
if {[regexp {.\,.} $NM3]} {
incr B
Espionne "la ligne $I a pls access ds refseq=>$B"
} else {
incr C
Espionne "la ligne $I a un access ds refseq=>$C"
}
}
}
Espionne "il y a $total lignes"
Espionne "il y a $A lignes qui ont un NM ou pls ds refseq"
Espionne "il y a $B lignes qui ont au moins 2 numeros ds refseq"
Espionne "il y a $C lignes qui ont un seul numero dans refseq"
}
proc CompteNmA {} {
set A 0
foreach I [RetChip5 ListOf Index] {
set NM1 [RetChip5 $I "refseq_PIQOR"]
set NM2 [RetChip5 $I "DNA_acc"]
if {$NM1=="" && [regexp {\?} $NM2]} {
incr A
Espionne "la ligne $I n'a aucun access dans 2 colonnes=>$A"
}
if {$NM1=="" && $NM2==""} {
incr A
Espionne "la ligne $I n'a aucun access dans 2 colonnes=>$A"
}
}
Espionne "il y a $A lignes qui n'ont aucun access dna"
}
proc CompteNmA_AEffacer {} {
set A 0
foreach I [RetChip2 ListOf Index] {
set NM1 [RetChip2 $I "refseq_PIQOR"]
set NM2 [RetChip2 $I "DNA_acc"]
if {$NM1=="" && $NM2==""} {
incr A
Espionne "la ligne $I n'a aucun access dans 2 colonnes=>$A"
}
}
Espionne "il y a $A lignes qui n'ont aucun access dna"
}
proc CompteNmB {} {
set A 0
set B 0
set C 0
foreach I [RetChip5 ListOf Index] {
set Des1 [RetChip5 $I "description_customer"]
set NM3 [RetChip5 $I "refseq_PIQOR"]
puts "$I=>$NM3"
if { $NM3 != "" } {
incr A
if {![regexp {^NM_} $NM3]} {
#Espionne "attention commence pas par NM_=> $I=$NM3"
}
if {[regexp {^NM_[0-9]+$} $NM3] || [regexp {^NR_[0-9]+$} $NM3]} {
incr B
#Espionne "la ligne $I a un access NM:$NM3 dans refseq=>$B"
}
if { [regexp {.\,.} $NM3] } {
incr C
Espionne "la ligne $I a plusieurs NM:$NM3 dans colonne refseq=>$C"
set LesNms [split $NM3 ","]
foreach LeNm $LesNms {
set Commande "getz \"\\\[refseq-acc:$LeNm\\\]\" \-f des"
set GetzOut [eval exec $Commande]
set Def [StringSuivant "DEFINITION" dans $GetzOut]
puts "$LeNm=>$Def"
}
}
}
}
Espionne "il ya $A lignes qui ont un NM ou pls ds refseq"
Espionne "il y a $B lignes qui ont un seul numero NM dans refseq"
Espionne "il y a $C lignes qui ont au moins 2 numeros NM dans refseq"
}
proc CompteNmB_AEffacer {} {
set A 0
set B 0
set C 0
foreach I [RetChip2 ListOf Index] {
set Des1 [RetChip2 $I "description_customer"]
set NM3 [RetChip2 $I "refseq_PIQOR"]
if { [regexp {^RA[0-9]+} $Des1] } { continue }
#puts "$I=>$NM3"
if { $NM3 != "" } {
incr A
if {![regexp {^NM_} $NM3]} {
#Espionne "attention commence pas par NM_=> $I=$NM3"
}
if {[regexp {^NM_[0-9]+$} $NM3]} {
incr B
#Espionne "la ligne $I a un access NM:$NM3 dans refseq=>$B"
}
if { [regexp {.\,.} $NM3] } {
incr C
Espionne "la ligne $I a plusieurs NM:$NM3 dans colonne refseq=>$C"
set LesNms [split $NM3 ","]
foreach LeNm $LesNms {
set Commande "getz \"\\\[refseq-acc:$LeNm\\\]\" \-f des"
set GetzOut [eval exec $Commande]
set Def [StringSuivant "DEFINITION" dans $GetzOut]
puts "$LeNm=>$Def"
}
}
}
}
Espionne "il ya $A lignes qui ont un NM ou pls ds refseq"
Espionne "il y a $B lignes qui ont un seul numero NM dans refseq"
Espionne "il y a $C lignes qui ont au moins 2 numeros NM dans refseq"
}
proc CompteNmSsRA {} {
set A 0
set B 0
set C 0
foreach I [RetChip2 ListOf Index] {
set Des1 [RetChip2 $I "description_customer"]
set NM3 [RetChip2 $I "refseq_PIQOR"]
if { [regexp {^RA[0-9]+} $Des1] } { continue }
if { $NM3 != "" } {
incr A
if {[regexp {.\,.} $NM3]} {
incr B
Espionne "la ligne $I a pls access ds refseq=>$B"
} else {
incr C
Espionne "la ligne $I a un access ds refseq=>$C"
}
}
}
Espionne "il y a $A lignes qui ont un NM ou pls ds refseq"
Espionne "il y a $B lignes qui ont au moins 2 numeros ds refseq"
Espionne "il y a $C lignes qui ont un seul numero dans refseq"
}
proc CompteNm_AEffacer {} {
set N 0
set M 0
foreach I [RetChip ListOf Index] {
set NM [RetChip $I "refseq_PIQOR" ]
Espionne "$NM existe1"
if {[regexp {NM_[0-9]+\,} $NM]} {
incr M
set doubl [split $NM ","]
#foreach d $doubl { puts $d }
}
continue
if { ! [regexp {^NM_[0-9]+$} $NM]} {
set NM [RetChip $I "DNA_acc"]
Espionne "$NM existe2"
}
if { ! [regexp {^NM_[0-9]+$} $NM]} {
incr N
Espionne "la ligne $I n'a pas de NM => $N"
continue
}
}
exit
}
proc CompteOrganism {} {
set total 0; set vide 0; set souris 0; set hom 0; set autre 0
foreach Nom [ListeDesPABs] {
set fait 0; set Info ""
incr total
set Info [ExtraitInfo $Nom "Organism"]
if {$Info==""} {
set fait 1; incr vide
Espionne "$Nom vide"
}
if {[regexp "Mus" $Info]} {
set fait 1; incr souris
Espionne "$Nom souris"
}
if {[regexp "Homo" $Info]} {
set fait 1; incr hom
Espionne "$Nom hom"
}
if {!$fait} {
incr autre
Espionne "$Nom autre"
}
}
Espionne "total $total"
Espionne "vide $vide"
Espionne "souris $souris"
Espionne "hom $hom"
Espionne "autre $autre"
}
proc CompteSsDnaAcProt {} {
set W 0; set V 0; set X 0; set Y 0
foreach I [RetChip5 ListOf Index] {
set Des [RetChip5 $I "description_customer"]
set Ac1 [RetChip5 $I "refseq_PIQOR"]
set Ac2 [RetChip5 $I "DNA_acc"]
set Ac3 [RetChip5 $I "prot_acc_PIQOR"]
set Ac4 [RetChip5 $I "prot_acc"]
if {[regexp {\?} $Ac2]} {set Ac2 ""}
if {[regexp {\?} $Ac4]} {set Ac4 ""}
if {$Ac1=="" && $Ac2==""} {
puts "Ac1 $Ac1 Ac2 $Ac2 Ac3 $Ac3 Ac4 $Ac4"
if {$Ac3!="" || $Ac4!=""} {
incr Y
}
if {$Ac3!=""} {
incr W
Espionne "la ligne $I a un acc prot ds col prot_acc_piqor=>$W"
}
if {$Ac4!=""} {
incr V
Espionne "la ligne $I a un acc prot ds col prot acc=>$V"
}
if {$Ac3!="" && $Ac4!=""} {
incr X
Espionne "la ligne $I a un acc prot ds 2 col:$Ac3 et $Ac4=>$X"
}
}
}
Espionne "il y a $Y lignes qui ont un access prot ds une des 2 col"
Espionne "il y a $W lignes qui ont un access prot ds col prot_acc_piqor"
Espionne "il y a $V lignes qui ont un access prot ds col prot_acc"
Espionne "il y a $X lignes qui ont un access prot ds 2 col"
}
proc CompteSsDnaAcProt_AEffacer {} {
set W 0
set V 0
set X 0
set Y 0
foreach I [RetChip2 ListOf Index] {
set Des [RetChip2 $I "description_customer"]
set Ac1 [RetChip2 $I "refseq_PIQOR"]
set Ac2 [RetChip2 $I "DNA_acc"]
set Ac3 [RetChip2 $I "prot_acc_PIQOR"]
set Ac4 [RetChip2 $I "prot_acc"]
#if { [regexp {^RA[0-9]+} $Des] } { continue }
if {$Ac1=="" && $Ac2==""} {
if {$Ac3!="" || $Ac4!=""} {
incr Y
}
if {$Ac3!=""} {
incr W
Espionne "la ligne $I a un acc prot ds col prot_acc_piqor=>$W"
}
if {$Ac4!=""} {
incr V
Espionne "la ligne $I a un acc prot ds col prot acc=>$V"
}
if {$Ac3!="" && $Ac4!=""} {
incr X
Espionne "la ligne $I a un acc prot ds 2 col:$Ac3 et $Ac4=>$X"
}
}
}
Espionne "il y a $Y lignes qui ont un access prot ds une des 2 col"
Espionne "il y a $W lignes qui ont un access prot ds col prot_acc_piqor"
Espionne "il y a $V lignes qui ont un access prot ds col prot_acc"
Espionne "il y a $X lignes qui ont un access prot ds 2 col"
}
proc CompteSsDnaSsProt {} {
set Z 0
foreach I [RetChip5 ListOf Index] {
set Des [RetChip5 $I "description_customer"]
set Ac1 [RetChip5 $I "refseq_PIQOR"]
set Ac2 [RetChip5 $I "DNA_acc"]
set Ac3 [RetChip5 $I "prot_acc_PIQOR"]
set Ac4 [RetChip5 $I "prot_acc"]
if {$Ac1=="" && ($Ac2==""|| [regexp {\?} $Ac2]) && $Ac3=="" && ($Ac4=="" || [regexp {\?} $Ac4])} {
incr Z
Espionne "la ligne $I=$Des n'a pas acc dna ni acc prot=>$Z"
}
}
Espionne "il y a $Z lignes qui ont ni acc dna ni acc prot"
}
proc CompteSsDnaSsProt_AEffacer {} {
set Z 0
foreach I [RetChip2 ListOf Index] {
set Des [RetChip2 $I "description_customer"]
set Ac1 [RetChip2 $I "refseq_PIQOR"]
set Ac2 [RetChip2 $I "DNA_acc"]
set Ac3 [RetChip2 $I "prot_acc_PIQOR"]
set Ac4 [RetChip2 $I "prot_acc"]
if { [regexp {^RA[0-9]+} $Des] } { continue }
if {$Ac1=="" && $Ac2=="" && $Ac3=="" && $Ac4==""} {
incr Z
Espionne "$I"
#Espionne "la ligne $I=$Des n'a pas acc dna ni acc prot=>$Z"
}
}
#Espionne "il y a $Z lignes qui ont ni acc dna ni acc prot"
}
proc CompterLesMismatchs {DR} {
set timestamp [clock format [clock seconds] -format "%H:%M:%S"]
Espionne "$timestamp|CompterLesMismatchs : Start"
set FichierOut [open "ComptageDesErreursDR$DR.txt" "w"]
foreach I {1 2 3 4 5 6} {
set Tableau1($I) 0
set Tableau2($I) 0
}
foreach J {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 X Y} {
set timestamp [clock format [clock seconds] -format "%H:%M:%S"]
Espionne "$timestamp|CompterLesMismatchs : Chromosome $J"
set FichierEntree [open "chr$J-$DR.coord" "r"]
while { [gets $FichierEntree Ligne] >=0 } {
ScanLaListe $Ligne nbMatchs sequenceNumber chr matchStart matchEnd matchType hs1Mistake hs2Mistake matchSequence
set hs1MMlist [split [lindex [split $hs1Mistake "@"] 1] "/"]
set nbMM1 [lindex [split $hs1Mistake "@"] 0]
foreach MM1 $hs1MMlist {
foreach I {1 2 3 4 5 6} {
if {$MM1 == $I} {
incr Tableau1($I)
}
}
}
set hs2MMlist [split [lindex [split $hs2Mistake "@"] 1] "/"]
set nbMM2 [lindex [split $hs2Mistake "@"] 0]
foreach MM2 $hs2MMlist {
foreach I {1 2 3 4 5 6} {
if {$MM2 == $I} {
incr Tableau2($I)
}
}
}
}
close $FichierEntree
}
foreach I {1 2 3 4 5 6} {
puts $FichierOut "Chr$I $Tableau1($I)"
}
foreach I {1 2 3 4 5 6} {
puts $FichierOut "Chr$I $Tableau2($I)"
}
set timestamp [clock format [clock seconds] -format "%H:%M:%S"]
Espionne "$timestamp|CompterLesMismatchs : End"
}
proc CompteurDeCompteurs {NombreDeCompteurs} {
#Décortique un fichier de compteur nx1 lignes
# Déclaration des fichiers
set FichierDesCompteurs [open "/tmp/Conservation/FichierDesOccurencesDownstream.txt" "r"]
set FichierLog "/tmp/Conservation/CompteurDesOccurencesDownstream.txt"
set PathOut $FichierLog
# Suppressions des éventuelles versions précédentes des fichiers
if { [file exists $FichierLog] } {
file delete $FichierLog
}
set Lus 0
set Compteur 0
for {set I 1} {$I<=$NombreDeCompteurs} {incr I} {
set Compteur$I 0
}
while { [gets $FichierDesCompteurs Ligne] >=0 } {
incr Lus
for {set I 1} {$I<=$NombreDeCompteurs} {incr I} {
if { $Ligne == $I } {
incr Compteur$I
}
}
}
Espionne "================================================"
Espionne " Statistiques du traitement CompteurDeCompteurs "
Espionne "================================================"
Espionne " "
for {set I 1} {$I<=$NombreDeCompteurs} {incr I} {
set Compteur [set Compteur$I]
Espionne "Nombre de génes avec $I SBS : $Compteur"
}
Espionne "Execution terminée. Les résultats des $Lus lectures ont été écrits dans $PathOut"
}
proc Comptons {} {
global ListeDeBoites
if { ! [info exists ListeDeBoites]} { ChargeListeDeBoites }
set Compteur(Total) 0
set Compteur(FF) 0
set Compteur(FF0) 0
set Compteur(FF1) 0
set Compteur(FF3) 0
set Compteur(FF5) 0
set Compteur(FF7) 0
set Compteur(FF9) 0
set Compteur(Enterres) 0
set Compteur(Decedes) 0
set Compteur(hTotal) 0
set Compteur(hFF) 0
set Compteur(hFF0) 0
set Compteur(hFF1) 0
set Compteur(hFF3) 0
set Compteur(hFF5) 0
set Compteur(hFF7) 0
set Compteur(hFF9) 0
set Compteur(hEnterres) 0
set Compteur(hDecedes) 0
set Compteur(fTotal) 0
set Compteur(fFF) 0
set Compteur(fFF0) 0
set Compteur(fFF1) 0
set Compteur(fFF3) 0
set Compteur(fFF5) 0
set Compteur(fFF7) 0
set Compteur(fFF9) 0
set Compteur(fEnterres) 0
set Compteur(fDecedes) 0
foreach Boite $ListeDeBoites {
set Nom [Box $Boite nom]
if { ! [YaPABdans $Nom]} { continue }
set FFx "FF[FiabiliteFonction $Nom]"
incr Compteur(Total)
incr Compteur($FFx)
if {[Enterre $Nom]} { incr Compteur(Enterres) }
if {[Decede $Nom]} { incr Compteur(Decedes) }
if {[Enterre $Nom] && [ExisteOrthologueDans "phor" $Nom]} { incr Compteur(hEnterres) }
if {[Enterre $Nom] && [ExisteOrthologueDans "pfur" $Nom]} { incr Compteur(fEnterres) }
if {[Decede $Nom] && [ExisteOrthologueDans "phor" $Nom]} { incr Compteur(hDecedes) }
if {[Decede $Nom] && [ExisteOrthologueDans "pfur" $Nom]} { incr Compteur(fDecedes) }
if {[ExisteOrthologueDans "phor" $Nom]} { incr Compteur(hTotal); incr Compteur(h$FFx)}
if {[ExisteOrthologueDans "pfur" $Nom]} { incr Compteur(fTotal); incr Compteur(f$FFx)}
}
foreach Valeur [lsort [array names Compteur]] {
puts [format "%10s %d" $Valeur [set Compteur($Valeur)]]
}
}
proc ComptonsLesATGC {} {
global ADN TDN RAC
if { ! [info exists ADN]} { ChargeADNetTDNetRAC }
set l [string length $ADN]
set nA 0
set nT 0
set nG 0
set nC 0
for {set i 1} {$i < $l} {incr i} {
set c [string index $ADN $i]
if { $c == "A" } { incr nA }
if { $c == "T" } { incr nT }
if { $c == "G" } { incr nG }
if { $c == "C" } { incr nC }
}
set l [expr $nA + $nT +$nG + $nC]
puts " $l bases"
puts " "
puts " A $nA [format %5.2f [expr (100.*$nA)/$l]]%"
puts " T $nT [format %5.2f [expr (100.*$nT)/$l]]%"
puts " G $nG [format %5.2f [expr (100.*$nG)/$l]]%"
puts " C $nC [format %5.2f [expr (100.*$nC)/$l]]%"
puts " "
puts "AT [expr $nA+$nT] [format %5.2f [expr (100.*($nA+$nT))/$l]]%"
puts "GC [expr $nG+$nC] [format %5.2f [expr (100.*($nG+$nC))/$l]]%"
}
proc ComptonsLesSolitaires {} {
foreach Nom [ListeDesPABs] {
set nCops [NombreDeCopainsDansBlast $Nom]
set Report [StartCodonReport $Nom "Couleur"]
}
}
proc ComptonsLesStartCodon {} {
set RW 0
set RWseul 0
set Rg 0
set RR 0
set RG 0
set GW 0
set GWseul 0
set Gg 0
set GR 0
set GG 0
set Rmodifs 0
set Rpile 0
set T 0
set TB 0
set TM 0
set N 0
foreach Nom [ListeDesPABs] {
set NorMD [MDScore $Nom]
set nCops [NombreDeCopainsDansBlast $Nom]
set Etendu [GeneEtendu $Nom "Color"]
set Report [StartCodonReport $Nom "Couleur"]
if {$Report=="orange"} { set Report "red" }
if { $Etendu=="red" && $Report=="white" } { incr RW }
if { $Etendu=="red" && $Report=="white" && $nCops < 3} { incr RWseul }
if { $Etendu=="red" && $Report=="grey" } { incr Rg }
if { $Etendu=="green" && $Report=="white"} { incr GW }
if { $Etendu=="green" && $Report=="white" && $nCops < 3} { incr GWseul }
if { $Etendu=="green" && $Report=="grey" } { incr Gg }
if {$Report=="red" || $Report=="green"} {
incr T
if {$NorMD>0.4} {
incr TB
} else {
incr TM
}
}
if { $Etendu=="red" && $Report=="red" } {
incr RR
set OldBornes [GeneEtendu $Nom "Old"]
scan $OldBornes "%s %d %d %s" OldNom OldDebut OldFin OldOrient
set Debut [Box $Nom debut]
set Fin [Box $Nom fin]
set Orient [Box $Nom orient]
set Diff [expr ($Fin - $Debut) - ($OldFin -$OldDebut)]
set Rapport [StartCodonReport $Nom "Rapport"]
scan $Rapport "%s %s" Signif CodonsProposes
regexp {[MVL]([0-9]+)} $CodonsProposes Match Pos
set Ecart [expr abs($Pos - $Diff/3 - 1)]
if { $Ecart == 0} {
incr Rpile
} else {
lappend LesEcarts [list $Ecart [MDScore $Nom]]
}
}
if { $Etendu=="red" && $Report=="green"} { incr RG }
if { $Etendu=="green" && $Report=="red" } { incr GR }
if { $Etendu=="green" && $Report=="green"} { incr GG }
incr N
}
EspionneL [lsort -index 0 -integer $LesEcarts]
Espionne "$N $RW $RWseul $Rg $RR $RG $GW $GWseul $Gg $GR $GG $Rmodifs $Rpile $T $TB $TM"
exit
}
proc CompulsoryGenesOnWeb {} {
return [RetinalGenesSummaryOnWeb [ListOfCompulsoryGenes] "CompulsoryGenes"]
}
proc ComputeBlocks {} {
global LNDG SDG CpB LNOrdali LSOrdali TDesSeqWeights CBPCI Sequences
# start / stop of each sequence
#
# CpB : table contains all for computation
#
set CpB(Ltot) [LongueurDeLAlignement]
set Ltot $CpB(Ltot)
array set CBPCI [PCIPourBlocks]
# compute tree
set Ln [list]
set Ldst [list]
set Ldtc [list]
foreach n1 $LNOrdali {
if {$n1 eq ""} {continue}
lappend Ln $n1
foreach n2 $LNOrdali {
if {$n2 eq ""} {continue}
set pc [set CBPCI($n1,$n2)]
lappend Ldst [expr {1.-$pc}]
lappend Ldtc [expr {1.-$pc}]
}
lappend Ldtc 1.0
}
lappend Ldtc {*}[lrepeat [llength $Ln] "1.0"] 0.0
lappend Lntc {*}$Ln "fictive_sequence"
set CpB(Lseqs) $Ln
set rep [fastme $Ln $Ldst]
set ATb [DecortiqueUnArbre $rep]
# groups
# compute secator groups
set SAli [list]
foreach n $LNOrdali s $LSOrdali {
if {[string trim $n] ne ""} {
lappend SAli $n $s
}
}
puts "llength SAli [llength $SAli]"
######
#
# Pour tests, prend meme clusters que Julie !
#
######
if {1} {
set Lres [Tclcluspack $SAli -dt alignment -cm bionj -nbc secator]
puts "Lres [llength $Lres]"
#set Lres [Tclcluspack $Lval -dt coordinates -cm mm -nbc aic]
#set rep [fastme $Lntc $Ldtc]
#set Lres [Tclcluspack $rep -dt newick -cm mm -nbc secator]
ClusterSeqsDeCluspackTcl $Lres SeqsDeGrps LesNomsGrps
} else {
# prend meme cluster que rascal
LectureClusters lucky.clu SeqsDeGrps LesNomsGrps
# prend meem arbre que rascal
set Ll [LesLignesDuFichier lucky.ph]
set rep [join $Ll ""]
set ATb [DecortiqueUnArbre $rep]
}
set ngroups [llength $LesNomsGrps]
if {$ngroups < 2} {
FaireLire "Not enough groups to compute blocks !"
return
}
set CpB(LNDG) [linsert $LesNomsGrps 0 GroupeToutLeMonde]
puts "LNDG $CpB(LNDG)"
foreach g $LesNomsGrps {
lappend CpB(GroupeToutLeMonde) {*}[set SeqsDeGrps($g)]
set CpB($g) [set SeqsDeGrps($g)]
set CpB(GOri,$g) [set SeqsDeGrps($g)]
}
set CpB(LNDGOri) $CpB(LNDG)
foreach g [lrange $CpB(LNDG) 1 end] {
puts "DEBITEM $g"
foreach n [set CpB($g)] {
puts "ITEM $n"
}
}
# compute sequence weights from tree
array set TDesSeqWeights [SequenceWeight $ATb]
# Check weights
puts "DEBITEM SeqWgt"
set i 0
foreach n [set CpB(GroupeToutLeMonde)] {
puts "ITEM $n [set TDesSeqWeights($n)]"
incr i
}
# check orphans
OrphanSeqs
# computes blocks in each groups
set window 8
foreach g $CpB(LNDG) {
set CpB($g,Lpil) [CreeLesPiliersPourBlocks [set CpB($g)]]
set CpB(Blocks,$g) [list]
LesBlocks $g $window
}
update
# output
foreach g [lrange [set CpB(LNDG)] 1 end] {
puts "PGroup[string range $g 5 end]"
puts "seqs [llength [set CpB($g)]]"
puts "blck [llength [set CpB(Blocks,$g)]]"
puts "prf1 [llength [set CpB($g,Lprf1)]]"
puts "prf2 [llength [set CpB($g,Lprf2)]]"
puts "code [llength [set CpB($g,Lcode)]]"
puts "DEBITEM NwB[string range $g 5 end]"
foreach b [set CpB(Blocks,$g)] {
lassign $b d f
puts "ITEM $d $f"
}
}
set shared_cutoff 80000
set ig1 0
foreach g1 [lrange $CpB(LNDG) 1 end-1] {
incr ig1
if {[llength $CpB($g1)] < 2} {continue}
set j [expr {$ig1 + 1}]
set ig2 $ig1
foreach g2 [lrange $CpB(LNDG) $j end] {
incr ig2
if {[llength $CpB($g2)] < 2} {continue}
for {set ib1 0} {$ib1 < [llength [set CpB(Blocks,$g1)]]} {incr ib1} {
set b1 [lindex [set CpB(Blocks,$g1)] $ib1]
set cd1 [lindex [set CpB($g1,Lcode)] $ib1]
lassign $b1 f1 l1
for {set ib2 0} {$ib2 < [llength [set CpB(Blocks,$g2)]]} {incr ib2} {
set b2 [lindex [set CpB(Blocks,$g2)] $ib2]
set cd2 [lindex [set CpB($g2,Lcode)] $ib2]
lassign $b2 f2 l2
if {[BlockOverlap $f1 $l1 $f2 $l2] > 0} {
set score [ScoreBlockVsBlock $f1 $f2 [lindex [set CpB($g1,Lprf1)] $ib1] [lindex [set CpB($g2,Lprf2)] $ib2]]
if {$score > $shared_cutoff} {
if {$cd1 == 0 && $cd2 == 0} {
lset CpB($g1,Lcode) $ib1 [expr {$ig1+1}]
lset CpB($g2,Lcode) $ib2 [expr {$ig1+1}]
} elseif {$cd1 > 0} {
lset CpB($g2,Lcode) $ib2 $cd1
} elseif {$cd2 > 0} {
lset CpB($g1,Lcode) $ib1 $cd2
}
set ffirst [expr {max($f1,$f2)+1}]
set flast [expr {min($l1,$l2)+1}]
puts "SHAREDCOREBLOCK $ig1 $ig2 $ffirst $flast $score"
if {($flast-$ffirst) > 3 && ($flast-$ffirst)*$score > 1} {
lappend CpB(ShBck) [list $g1 $g2 $ffirst $flast $score]
}
}
}
}
}
}
}
# compare orphan to all subgroups
set i 2
set ig1 0
foreach g1 [lrange $CpB(LNDG) 1 end] {
incr ig1
if {[llength $CpB($g1)] != 1} {continue}
set seq [set Sequences([set CpB($g1)])]
set CpB(Blocks,$g1) [list]
set CpB(MxSc,$g1) [list]
set CpB($g1,Lcode) [list]
set ig2 0
foreach g2 [lrange $CpB(LNDG) 1 end] {
incr ig2
if {[llength $CpB($g2)] < 2} {continue}
for {set ib2 0} {$ib2 < [llength [set CpB(Blocks,$g2)]]} {incr ib2} {
set b2 [lindex [set CpB(Blocks,$g2)] $ib2]
set cd2 [lindex [set CpB($g2,Lcode)] $ib2]
lassign $b2 f2 l2
set prf1 [lindex [set CpB($g2,Lprf1)] $ib2]
set score [ScoreSequence $seq $prf1 $f2 $l2]
if {$score > $shared_cutoff} {
puts "seq_score $ig1 [set CpB($g1)] $ig2 [lindex [set CpB($g2)] 0] $f2 $l2 $score"
set found 0
for {set ik 0} {$ik < [llength $CpB(Blocks,$g1)]} {incr ik} {
set bk [lindex [set CpB(Blocks,$g1)] $ik]
lassign $bk fk lk
if {[BlockOverlap $fk $lk $f2 $l2] > 0} {
set mx [lindex [set CpB(MxSc,$g1)] $ik]
if {$score > $mx} {
lset CpB(MxSc,$g1) $ik $score
lset CpB(Blocks,$g1) $ik $b2
lset CpB($g1,Lcode) $ik [expr {$ib2+1}]
}
set found 1
}
}
if {! $found} {
lappend CpB(MxSc,$g1) $score
lappend CpB(Blocks,$g1) $b2
lappend CpB($g1,Lcode) [expr {$ib2+1}]
}
update
}
}
}
lassign [set CpB(startstop,[set CpB($g1)])] deb fin
set if 0
foreach b $CpB(Blocks,$g1) c $CpB($g1,Lcode) m $CpB(MxSc,$g1) {
lassign $b f l
if {$f < $deb} {set f $deb}
if {$l < $deb} {set l $deb}
if {$f > $fin} {set f $fin}
if {$l > $fin} {set l $fin}
lset CpB(Blocks,$g1) $if [list $f $l]
puts "SHAREDCOREBLOCK $c [expr {$ig1+1}] [expr {$f+1}] [expr {$l+1}] $m"
incr if
}
update
}
# check for any local core blocks that are not shared
foreach g [lrange $CpB(LNDG) 1 end] {
if {[llength [set CpB($g)]] <= 2} {continue}
set CpB(LcBck,$g) [list]
foreach c [set CpB($g,Lcode)] b [set CpB(Blocks,$g)] {
if {$c == 0} {
puts "$g LOCALCOREBLOCK $b"
lappend CpB(LcBck,$g) [list {*}$b $c]
}
}
}
return
exit
}
proc ComputeConservation {} {
global Cons ListeTypesDeFeatures
set Cons(OnlyGlobal) 1
set Cons(PDB) 0
set Cons(Title) ""
set Cons(Method) Threshold
LesDefauts Mode batch
LesDefauts MethodeConservation "Threshold"
set ft [PrepareRunOrdali]
set Cons(ConsCou) "tmpCons-T80"
set ScoreMeth($ft,Title) ""
set ScoreMeth($ft,Methode) "Threshold"
set Cons(ListeCons) "None"
SauveConservation
puts "[join $ListeTypesDeFeatures \n]"
return
}
proc ComputeIdentity {} {
global NomSeqSel ZoneSelect TPCI
set NSTmp $NomSeqSel
set NomSeqSel {}
AlignementDesSelections "" SAli
set NomSeqSel $NSTmp
CalculeLesPCIGenerique $SAli TPCI
return
}
proc ComputeMiSynPatMutation {sys aafrom pos aatype {chain A}} {
# modeller uses aa in 3-letters code
if {[string length $aatype] == 1} {
set aatype [AutreCodeLuc $aatype]
}
if {[string length $aafrom] == 1} {
set aafrom [AutreCodeLuc $aafrom]
}
# sys est du type aars2, dars2 , ...
set sysdir [string tolower $sys]
set SYS [string toupper $sys]
# never touch the original file, copy it.
set file [file join [MiSynPatDir] data structures $sysdir ${sysdir}_model.pdb]
# base temporary files used for computation
# => Rivet is in tcl 8.5.15
set wbase [file join [MiSynPatDir] temp "[SESSION id]_[Date Seconds]_$SYS"]
# when Rivet in tcl 8.6, then use :
# file tempfile wbase "[SESSION id]..." !!!!!!!!! non car ce n'est pas le même d'une machine à l'autre !!!
# input pdb file
set work "$wbase.pdb"
file copy $file $work
# modeller log file
set wlog "$wbase.log"
# Output file :
# modeller appends aa+pos.pdb to the input file
set aaf1 [AutreCodeLuc $aafrom]
set aat2 [AutreCodeLuc $aatype]
set fout "${wbase}_$aaf1$pos$aat2.pdb"
# run modeller script
LogWscope "python mutate.py $work $pos $aatype $chain"
exec python mutate.py $work $pos $aatype $chain
set fpyout "${work}$aatype$pos.pdb"
if {[file exists $fpyout]} {
file rename $fpyout $fout
set ret [string range $fout [string first "temp/" $fout] end]
set retour "/misynpat/$ret"
} else {
set retour "ERROR"
}
#file delete {*}[glob ${wbase}*]
return $retour
}
proc ComputeScoreAllPairsAgents {Lblock} {
global TAg T LNOrdali
set Lnoms {}
foreach n $LNOrdali {
if {$n ne ""} {lappend Lnoms $n}
}
set Lnone {}
set iNom 0
set iter 0
foreach n1 [lrange $Lnoms 0 end] {
set Lag1 [list]
foreach {d f} $Lblock {
set Lags [AgentsDuBlock $d $f $n1]
#puts ">$Lags<"
foreach nag $Lags {
if {$nag eq ""} {continue}
lappend Lag1 [lindex $nag 1]
}
}
foreach ag1 $Lag1 {
foreach n2 [lrange $Lnoms 0 end] {
#puts "\t$n2"
set Ln {}
foreach ag2 $TAg($n2) {
lassign [ScoreMotifAgents $n1 $ag1 $n2 $ag2] score seuil
if {$score eq "skip"} {
set score -999.0
}
lappend Ln [list $ag2 $score]
#lappend T($n2,$ag2,$n1) [list $ag1 $score]
incr iter
}
set T($n1,$ag1,$n2) [lsort -real -index 1 -decreasing $Ln]
}
}
incr iNom
}
puts "nb iteration $iter"
return
}
proc ComputeScorePairsDuBlockAgents {d f} {
global TAg T LNOrdali
set Lnoms {}
foreach n $LNOrdali {
if {$n ne ""} {lappend Lnoms $n}
}
set iNom 0
set iter 0
foreach n1 $Lnoms {
set Lnag [AgentsDuBlock $d $f $n1]
set Lag1 {}
foreach nag $Lnag {
if {$nag == {} } {continue}
lappend Lag1 [lindex $nag 1]
}
foreach ag1 $Lag1 {
foreach n2 $Lnoms {
#puts "\t$n2"
set Ln {}
foreach ag2 $TAg($n2) {
lassign [ScoreMotifAgents $n1 $ag1 $n2 $ag2] score seuil
if {$score eq "skip"} {
set score -999.0
}
lappend Ln [list $ag2 $score]
#lappend T($n2,$ag2,$n1) [list $ag1 $score]
incr iter
}
set T($n1,$ag1,$n2) [lsort -real -index 1 -decreasing $Ln]
}
}
incr iNom
}
puts "nb iteration $iter"
return
}
proc ConcatAlignments {OutFile args} {
set I 0
set LeTotal {}
foreach F $args {
incr I
foreach Ligne [LesLignesDuFichier $F] {
regsub "^>" $Ligne ">${I}_" Ligne
lappend LeTotal $Ligne
}
}
return [SauveLesLignes $LeTotal dans $OutFile]
}
proc ConcatLesTFAs {Selection {ButNo ButNo:}} {
global RepertoireDuGenome
set ListeDesAccessARetirer [lrange [split $ButNo ":"] 1 end]
set Force 1
set Cool 0
set LesTFAsConcatenes {}
set LesBanqueIdRestants {}
set LesAccessRestants {}
set LesPNs {}
set LesOXs {}
foreach Ligne [split $Selection "\n"] {
Espionne "Concat de $Ligne"
if { ! [regexp -nocase {[A-Z]} $Ligne]} { continue }
set Access ""
set PN 0.001
set OX "Inconnu inconnu"
scan $Ligne "%s %s %s %s" BanqueId Access PN OX
if {[regexp {\|} $BanqueId]} {
lassign [split $BanqueId "|"] B A I
set BanqueId $I
set Access $A
}
if {$Access==""} { set Access $BanqueId }
if {[lsearch -exact $ListeDesAccessARetirer $Access] > -1} { continue }
if {[EstUnAccessPDB $BanqueId]} {
set AccessOK $BanqueId
if {[info exists DejaVu($AccessOK)]} { continue }
set DejaVu($AccessOK) 1
Wup "First we search in /catalog/blast/pdb if not in pdb.fasta"
set FiPdb "/catalog/blast/pdb"
if {[FileAbsent $FiPdb] && [FileExists "$FiPdb.fasta"]} { set FiPdb "$FiPdb.fasta" }
if {[FileAbsent $FiPdb]} { continue }
set TFA [LaSequenceDuTFAs $FiPdb $BanqueId "" "" "ForceAccessFirst"]
if {$TFA!=""} {
lappend LesTFAsConcatenes $TFA
continue
}
Wup "Then we search in pdb itself"
set TFA [TFADuPDB $BanqueId]
if {$TFA!=""} {
lappend LesTFAsConcatenes $TFA
continue
}
Warne "$Ligne\n not found in pdb"
continue
}
lappend LesBanqueIdRestants $BanqueId
lappend LesAccessRestants $Access
lappend LesPNs $PN
lappend LesOXs $OX
}
if { ! [PrepareLesSequencesDesBanques "YaQuelqun"]} {
PrepareLesSequencesDesBanques $LesBanqueIdRestants $LesAccessRestants
}
foreach BanqueId $LesBanqueIdRestants Access $LesAccessRestants PN $LesPNs OX $LesOXs {
set LesLignesEMBL [LaSequenceDesBanques $BanqueId $Access AccessOK "OnVeutEMBL"]
Espionne "$BanqueId $Access AccessOK=$AccessOK [llength $LesLignesEMBL] lignes dans l'EMBL"
if {[llength $LesLignesEMBL] == 0} { Warne "$Ligne\n introuvable" ; continue }
if {[info exists DejaVu($AccessOK)]} { continue }
set DejaVu($AccessOK) 1
set Descriptif [LeDescriptif $AccessOK] ;#rR fait dans LesDescriptifsDuBlast
Espionne "Descriptif avec $AccessOK : $Descriptif"
if {[regexp "no description" $Descriptif]} { set Descriptif "" }
#rR set TFA [SequenceFormatTFA [join $LesLignesEMBL "\n"] $Descriptif "embl"]
set Entete ""
if {$AccessOK!=""} { set Entete "$AccessOK $Descriptif" }
if {[UseBanqueIdForDbClustal]} {
if {[regexp -nocase {^[a-z0-9]+_[a-z0-9]+$} $BanqueId]} {
set Entete "$BanqueId $Descriptif $AccessOK"
}
}
set TFA [SequenceFormatTFA [join $LesLignesEMBL "\n"] $Entete "embl"]
if {[OnVireLesMonstresLointains]} {
set ExpectMonstresLointains 0.001
set LongueurMonstresLointains 3000
set Long [string length [QueLaSequenceDuTexteTFA $TFA]]
if {$PN>$ExpectMonstresLointains && $Long>$LongueurMonstresLointains || [expr $Long>($LongueurMonstresLointains*3)]} {
Warne "Je vire le monstre lointain $BanqueId Access"
continue
}
}
lappend LesTFAsConcatenes $TFA
}
return [join $LesTFAsConcatenes "\n"]
}
proc ConcateneLesContigs {{FichierACreer ""} {NomDeBapteme ""}} {
global RepertoireDuGenome
if {$FichierACreer==""} {
FaireLire "Please give me the name of the DNA sequence file."
set FichierACreer [FichierPourSaveAs "$RepertoireDuGenome/beton/allcontigs.tfa"]
}
if {$FichierACreer==""} { return "" }
if {$NomDeBapteme==""} { set NomDeBapteme "DNAsequence" }
set Tout ""
set ToutPure ""
set NumeroContig 0
set FinContig 0
foreach FichierContig [glob "$RepertoireDuGenome/contigs/*"] {
incr NumeroContig
set LigneKO 0
set Contig ""
foreach Ligne [LesLignesDuFichier $FichierContig] {
regsub -all -nocase "X" $Ligne "N" Ligne
if {[regexp -nocase {[^ATGCNMKRSYWVHDB ]} $Ligne Match]} {
if {[OuiOuNon "In file $FichierContig a line contiains\n $Match\nwhich is unusual. Do I skipp this file"]} { set LigneKO 1 ; break }
if {[OuiOuNon "Do I skipp this line ?"]} { continue }
if {[OuiOuNon "Do I remove the wrong characters ?"]} {
regsub -nocase {[^ATGCNMKRSYWVHDB]} $Ligne] "" Ligne
}
if {[OuiOuNon "Do I replace the wrong characters with 'n' ?"]} {
regsub -nocase {[^ATGCNMKRSYWVHDB]} $Ligne] "n" Ligne
}
}
if {$LigneKO } { continue }
regsub " " $Ligne "" Ligne
append Contig $Ligne
}
set PotStart "TTAnTTAnTTATGnATGnATG"
set TratStop "CATnCATnCATAAnTAAnTAA"
set GrosContig "$PotStart$Contig$TratStop"
set Tout "$Tout$GrosContig"
set PotStartPure "nnnnnnnnnnnnnnnnnnnnn"
set TratStopPure "nnnnnnnnnnnnnnnnnnnnn"
set GrosContigPure "$PotStartPure$Contig$TratStopPure"
set ToutPure "$ToutPure$GrosContigPure"
set DebutContig [expr $FinContig+1]
set FinContig [string length $Tout]
lappend LesBornesDesContigs "CONTIG[format "%4.4d" $NumeroContig] $DebutContig $FinContig"
}
Espionne [SauveLesLignes $LesBornesDesContigs dans "$RepertoireDuGenome/fiches/bornesdescontigs"]
set Sequence [SequenceFormatTFA $Tout $NomDeBapteme "nucbrut"]
set SequencePure [SequenceFormatTFA $ToutPure $NomDeBapteme.pure "nucbrut"]
set NomDuFichierCree [Sauve $Sequence dans $FichierACreer]
set NomDuFichierCreePure [Sauve $SequencePure dans $FichierACreer.pure]
return $NomDuFichierCree
return $NomDuFichierCreePure
}
proc ConcateneLesFichiersTFA {Rep FichierFinal} {
set LesSeq {}
foreach Fichier [glob -nocomplain "$Rep/*"] {
lappend LesSeq [ContenuDuFichier $Fichier]
}
set ToutesLesSeq [join $LesSeq "\n"]
#Espionne $ToutesLesSeq
Sauve $ToutesLesSeq dans $FichierFinal
return ""
}
proc ConcateneLesNouveauxFichiersTFA {} {
set FichierFinal [Entre "Please, enter the output file name"]
set RepOrigine [ ChoisirUnRepertoire "Repertoire avec toutes les Sequences Tfa"]
set RepDestination [ ChoisirUnRepertoire "Repertoire pour recevoir les Tfa concatenes"]
set LesSeq {}
foreach Fichier [ glob -nocomplain "$RepOrigine/*.tfa"] {
lappend LesSeq [ContenuDuFichier $Fichier]
}
set ToutesLesSeq [join $LesSeq "\n"]
#Espionne $ToutesLesSeq
Sauve $ToutesLesSeq dans "$RepDestination/$FichierFinal"
return $ToutesLesSeq
}
proc ConcernedOrganisms {fileName} {
set fileToScan [open $fileName "r"]
set compteur 0
array set orgas {}
while {[gets $fileToScan line]!=-1} {
if {[string index $line 0]==">"} {
set mots [split $line " "]
if {[info exists orga([lindex $mots 2],[lindex $mots 3])]} {continue}
set orga([lindex $mots 2],[lindex $mots 3]) 1
}
incr compteur
}
set lesOrgas {}
foreach {key val} [array get orga] {
set m [split $key ","]
lappend lesOrgas "[lindex $m 0] [lindex $m 1]"
}
close $fileToScan
return $lesOrgas
}
proc ConcordanceNumerotationDesIntergenes {Ancien Nouveau} {
global RepertoireDuGenome
set LesModifies {}
foreach Ligne [LesLignesDuFichier $Ancien] {
scan $Ligne "%s %d %d %s %s" A D F O L
set AncienNom($D,$F) $A
set AncienNomDebut($D) $A
set AncienNomFin($F) $A
}
foreach Ligne [LesLignesDuFichier $Nouveau] {
scan $Ligne "%s %d %d %s %d" N D F O L
if {[info exists AncienNom($D,$F)]} {
set Nom [set AncienNom($D,$F)]
Espionne "Reprise complete $Nom $N"
lappend LesMemes "$Nom $D $F $O $L"
lappend LesNouveaux "$Nom $D $F $O $L"
set DejaVu($Ligne) 1
set DejaUtilise($Nom) 1
} else {
lappend LesModifies $Ligne
}
}
foreach Ligne [LesLignesDuFichier $Nouveau] {
if {[info exists DejaVu($Ligne)]} { continue }
scan $Ligne "%s %d %d %s %d" N D F O L
if {[info exists AncienNomDebut($D)]} {
set Nom [set AncienNomDebut($D)]
if { ! [info exists DejaUtilise($Nom)]} {
Espionne "Reprise debut $Nom $N"
lappend LesNouveaux "$Nom $D $F $O $L"
set DejaVu($Ligne) 1
set DejaUtilise($Nom) 1
}
}
}
foreach Ligne [LesLignesDuFichier $Nouveau] {
if {[info exists DejaVu($Ligne)]} { continue }
scan $Ligne "%s %d %d %s %d" N D F O L
if {[info exists AncienNomFin($F)]} {
set Nom [set AncienNomFin($F)]
if { ! [info exists DejaUtilise($Nom)]} {
Espionne "Reprise fin $Nom $N"
lappend LesNouveaux "$Nom $D $F $O $L"
set DejaVu($Ligne) 1
set DejaUtilise($Nom) 1
}
}
}
set Numero 10000
foreach Ligne [LesLignesDuFichier $Nouveau] {
if {[info exists DejaVu($Ligne)]} { continue }
scan $Ligne "%s %d %d %s %d" N D F O L
set Nom [format "INTERGENE%4.4d" [incr Numero -1]]
Espionne "En desespoir $Nom $N"
lappend LesNouveaux "$Nom $D $F $O $L"
set DejaVu($Ligne) 1
set DejaUtilise($Nom) 1
}
set LesNouveaux [lsort -command CompareLesMilieux $LesNouveaux]
set LesMemes [lsort -command CompareLesMilieux $LesMemes]
set LesModifies [lsort -command CompareLesMilieux $LesModifies]
return $LesNouveaux
}
proc CondenseTaxName {TN} {
if {[regexp {\(} $TN]} {
set iO [string last "(" $TN]
set Nouveau [string trim [string range $TN 0 [incr iO -1]]]
return $Nouveau
}
set G ""
set E ""
set R ""
scan $TN "%s %s %s" G E R
if {$R==""} { return "" }
return "$G $E"
}
proc ConfigureRoot {id name} {
set TId [struct::tree $id]
set L [list root {} [list name $name length 0. AngAbs 0. ordre 0 theta 0. oldtheta 0. r 0. width 0]]
$TId deserialize $L
return "$TId"
}
proc ConfigureVrp {c} {
global Vrp
set reg [$c bbox all]
set border $Vrp(Border)
set xmin [expr {[lindex $reg 0] - $border}]
set ymin [expr {[lindex $reg 1] - $border}]
set xmax [expr {[lindex $reg 2] + $border}]
set ymax [expr {[lindex $reg 3] + $border}]
$c configure -scrollregion [list $xmin $ymin $xmax $ymax]
return
}
proc ConnInfo {{Host ""} {DbName ""} {User ""} {Password ""} {Sgbd ""} {Port ""}} {
#rR a modifier !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! trop dangereux
if {$Host==""} { set Host "ena" }
if {$DbName==""} { set DbName "genoret" }
if {$User==""} { set User "ripp" }
if {$Password==""} { set Password "postgres" ; append Password [string toupper $User]}
if {$Sgbd==""} { set Sgbd "postgresql" }
set ConnInfo "host=$Host dbname=$DbName user=$User password=$Password sgbd=$Sgbd"
if {$Port!=""} { append ConnInfo " port=$Port" } ;#rR rajouté 2015/12/30
return $ConnInfo
}
proc ConnInfoBioArrayBase {{Host ""} {DbName ""} {User ""} {Password ""}} {
if {$Host==""} { set Host "" }
if {$DbName==""} { set DbName "BioArrayBase" }
return [ConnInfo $Host $DbName $User $Password]
}
proc ConnInfoCilioCarta {{Host ""} {DbName ""} {User ""} {Password ""} {Sgbd ""}} {
if {$Host==""} { set Host "/home/nevers/StageJuin/Database/CilioCarta.db" }
if {$DbName==""} { set DbName "CilioCarta" }
if {$User==""} { set User "" }
if {$Password==""} { set Password "" }
if {$Sgbd==""} { set Sgbd "sqlite" }
return [ConnInfo $Host $DbName $User $Password $Sgbd]
}
proc ConnInfoDbgs {{Host ""} {DbName ""} {User ""} {Password ""}} {
if {$Host==""} { set Host "" }
if {$DbName==""} { set DbName "dbgs" }
return [ConnInfo $Host $DbName $User $Password]
}
proc ConnInfoDomine {{Host ""} {DbName ""} {User ""} {Password ""} {Sgbd ""}} {
if {$Host==""} { set Host "" }
if {$DbName==""} { set DbName "domine" }
if {$User==""} { set User "brochetx" }
if {$Password==""} { set Password "dominex" }
if {$Sgbd==""} { set Sgbd "mysql" }
return [ConnInfo $Host $DbName $User $Password $Sgbd]
}
proc ConnInfoEncode {{Host ""} {DbName ""} {User ""} {Password ""} {Sgbd ""}} {
if {$Host==""} { set Host "" }
if {$DbName==""} { set DbName "Encode" }
if {$User==""} { set User "lbgi" }
if {$Password==""} { set Password "jaimelesfrites" }
if {$Sgbd==""} { set Sgbd "mysql" }
return [ConnInfo $Host $DbName $User $Password $Sgbd]
}
proc ConnInfoFedlord {{Host ""} {DbName ""} {User ""} {Password ""}} {
if {$Host==""} { set Host "" }
if {$DbName==""} { set DbName "fedlord" }
return [ConnInfo $Host $DbName $User $Password]
}
proc ConnInfoForDatabase {{Database ""} {CreateIfNotExists ""}} {
set CreateIfNotExists [string equal -nocase "CreateIfNotExists" $CreateIfNotExists]
set database [string tolower $Database]
#attention tout en minuscule
switch $database {
"puzz" { return [ConnInfoPuzz] }
"interaction" { return [ConnInfoInteraction] }
"ucschuman18" { return [ConnInfoUcsc "human18"] }
"ucschuman19" { return [ConnInfoUcsc "human19"] }
"ucschuman" { return [ConnInfoUcsc "human"] }
"ucscmouse" { return [ConnInfoUcsc "mouse"] }
"ucscdroso" { return [ConnInfoUcsc "droso"] }
"ucscworm" { return [ConnInfoUcsc "worm"] }
"ucscrat" { return [ConnInfoUcsc "rat"] }
"ucscdog" { return [ConnInfoUcsc "dog"] }
"geneontology" { return [ConnInfoGeneOntology] }
"genoret" { return [ConnInfoGenoret] }
"fedlord" { return [ConnInfoFedlord] }
"dbgs" { return [ConnInfoDbgs] }
"gx" { return [ConnInfoGx] }
"gxdb" { return [ConnInfoGxDb] }
"macsims" { return [ConnInfoMacsims] }
"retinobase" { return [ConnInfoRetinoBase] }
"bioarraybase" { return [ConnInfoBioArrayBase] }
"orthoinspector" { return [ConnInfoOrthoInspector] }
"gecodb" { return [ConnInfoGecoDB] }
"patterndb" { return [ConnInfoPatternDB] }
"patterndb18" { return [ConnInfoPatternDB18] }
"patterndb19" { return [ConnInfoPatternDB19] }
"sanger" { return [ConnInfoSanger] }
"sanger18" { return [ConnInfoSanger18] }
"sanger19" { return [ConnInfoSanger19] }
"encode" { return [ConnInfoEncode] }
"domine" { return [ConnInfoDomine] }
"syscilia" { return [ConnInfoSysCilia] }
"misynpat" { return [ConnInfoMiSynPat] }
"string" { return [ConnInfoString] }
"default" {
if {[regexp {.(db|sql)$} $Database] && ($CreateIfNotExists || [file exists $Database])} {
set Host $Database
set DbName [file tail $Host] ; regsub ".(db|sql)$" $DbName "" DbName
set User ""
set Password ""
set Sgbd "sqlite"
return [ConnInfo $Host $DbName $User $Password $Sgbd]
}
return [ConnInfo]
}
}
}
proc ConnInfoGecoDB {{Host ""} {DbName ""} {User ""} {Password ""} {Sgbd ""}} {
if {$Host==""} { set Host "" }
if {$DbName==""} { set DbName "gecoDB" }
if {$User==""} { set User "lbgi" }
if {$Password==""} { set Password "jaimelesfrites" }
if {$Sgbd==""} { set Sgbd "mysql" }
return [ConnInfo $Host $DbName $User $Password $Sgbd]
}
proc ConnInfoGeneOntology {{Host ""} {DbName ""} {User ""} {Password ""} {Sgbd ""}} {
if {[Science]=="ProGS"} { return [ConnInfoGoMiner $Host $DbName $User $Password $Sgbd] }
if {$Host==""} { set Host "" }
if {$DbName==""} { set DbName "geneontology" }
if {$User==""} { set User "public" }
if {$Password==""} { set Password "public" }
if {$Sgbd==""} { set Sgbd "mysql" }
return [ConnInfo $Host $DbName $User $Password $Sgbd]
}
proc ConnInfoGenoret {{Host ""} {DbName ""} {User ""} {Password ""}} {
if {$Host==""} { set Host "" }
if {$DbName==""} { set DbName "genoret" }
return [ConnInfo $Host $DbName $User $Password]
}
proc ConnInfoGoMiner {{Host ""} {DbName ""} {User ""} {Password ""} {Sgbd ""}} {
if {$Host==""} { set Host "moby" }
if {$DbName==""} { set DbName "GoMiner" }
if {$User==""} { set User "anno" }
if {$Password==""} { set Password "ceji387." }
if {$Sgbd==""} { set Sgbd "mysql" }
return [ConnInfo $Host $DbName $User $Password $Sgbd]
}
proc ConnInfoGx {{Host ""} {DbName ""} {User ""} {Password ""}} {
if {$Host==""} { set Host "" }
if {$DbName==""} { set DbName "gx" }
if {$User==""} { set User "ripp" }
if {$Password==""} { set Password "postgres" ; append Password [string toupper $User]}
return [ConnInfo $Host $DbName $User $Password]
}
proc ConnInfoGxDb {{Host ""} {DbName ""} {User ""} {Password ""}} {
if {$Host==""} { set Host "" }
if {$DbName==""} { set DbName "gxdb" }
if {$User==""} { set User "ripp" }
if {$Password==""} { set Password "postgres" ; append Password [string toupper $User]}
return [ConnInfo $Host $DbName $User $Password]
}
proc ConnInfoInteraction {{Host ""} {DbName ""} {User ""} {Password ""} {Sgbd ""}} {
if {$Host==""} { set Host "" }
if {$DbName==""} { set DbName "interaction" }
if {$User==""} { set User "ripp" }
if {$Password==""} { set Password "postgres" ; append Password [string toupper $User]}
if {$Sgbd==""} { set Sgbd "postgresql" }
return [ConnInfo $Host $DbName $User $Password $Sgbd]
}
proc ConnInfoMacsims {{Host ""} {DbName ""} {User ""} {Password ""}} {
if {$Host==""} { set Host "" }
if {$DbName==""} { set DbName "macsims" }
if {$User==""} { set User "ripp" }
if {$Password==""} { set Password "postgres" ; append Password [string toupper $User]}
return [ConnInfo $Host $DbName $User $Password]
}
proc ConnInfoMiSynPat {{Host ""} {DbName ""} {User ""} {Password ""} {Sgbd ""}} {
if {$Host==""} { set Host "[MiSynPatDir]/misynpat.sql" }
if {$DbName==""} { set DbName "MiSynPat" }
if {$User==""} { set User "" }
if {$Password==""} { set Password "" }
if {$Sgbd==""} { set Sgbd "sqlite" }
return [ConnInfo $Host $DbName $User $Password $Sgbd]
}
proc ConnInfoOrthoInspector {{Host ""} {DbName ""} {User ""} {Password ""} {Sgbd ""}} {
if {$Host==""} { set Host "moby" }
if {$DbName==""} { set DbName "orthoinspector_eukaryota__2011_12" }
if {$User==""} { set User "linard" }
if {$Password==""} { set Password "mononokee2803" }
return [ConnInfo $Host $DbName $User $Password $Sgbd]
}
proc ConnInfoPatternDB {{Host ""} {DbName ""} {User ""} {Password ""} {Sgbd ""}} {
return [ConnInfoPatternDB18 $Host $DbName $User $Password $Sgbd]
}
proc ConnInfoPatternDB18 {{Host ""} {DbName ""} {User ""} {Password ""} {Sgbd ""}} {
if {$Host==""} { set Host "" }
if {$DbName==""} { set DbName "patternDB_hg18" }
if {$User==""} { set User "lbgi" }
if {$Password==""} { set Password "jaimelesfrites" }
if {$Sgbd==""} { set Sgbd "mysql" }
return [ConnInfo $Host $DbName $User $Password $Sgbd]
}
proc ConnInfoPatternDB19 {{Host ""} {DbName ""} {User ""} {Password ""} {Sgbd ""}} {
if {$Host==""} { set Host "" }
if {$DbName==""} { set DbName "patternDB_hg19" }
if {$User==""} { set User "lbgi" }
if {$Password==""} { set Password "jaimelesfrites" }
if {$Sgbd==""} { set Sgbd "mysql" }
return [ConnInfo $Host $DbName $User $Password $Sgbd]
}
proc ConnInfoPuzz {{Host ""} {DbName ""} {User ""} {Password ""} {Sgbd ""}} {
if {$Host==""} { set Host "" }
if {$DbName==""} { set DbName "puzz" }
if {$User==""} { set User "ripp" }
if {$Password==""} { set Password "alphaRR" }
if {$Sgbd==""} { set Sgbd "mysql" }
return [ConnInfo $Host $DbName $User $Password $Sgbd]
}
proc ConnInfoRetinoBase {{Host ""} {DbName ""} {User ""} {Password ""}} {
if {$Host==""} { set Host "" }
if {$DbName==""} { set DbName "BioArrayBase" }
return [ConnInfo $Host $DbName $User $Password]
}
proc ConnInfoSanger {{Host ""} {DbName ""} {User ""} {Password ""} {Sgbd ""}} {
return [ConnInfoSanger18 $Host $DbName $User $Password $Sgbd]
}
proc ConnInfoSanger18 {{Host ""} {DbName ""} {User ""} {Password ""} {Sgbd ""}} {
if {$Host==""} { set Host "" }
if {$DbName==""} { set DbName "sanger_hg18" }
if {$User==""} { set User "lbgi" }
if {$Password==""} { set Password "jaimelesfrites" }
if {$Sgbd==""} { set Sgbd "mysql" }
return [ConnInfo $Host $DbName $User $Password $Sgbd]
}
proc ConnInfoSanger19 {{Host ""} {DbName ""} {User ""} {Password ""} {Sgbd ""}} {
if {$Host==""} { set Host "" }
if {$DbName==""} { set DbName "sanger_hg19" }
if {$User==""} { set User "lbgi" }
if {$Password==""} { set Password "jaimelesfrites" }
if {$Sgbd==""} { set Sgbd "mysql" }
return [ConnInfo $Host $DbName $User $Password $Sgbd]
}
proc ConnInfoString {{Host ""} {DbName ""} {User ""} {Password ""} {Sgbd ""} {Port ""}} {
global ConnInfoStringDefaultDbName
if {$Host=="DefaultDbName"} { set ConnInfoStringDefaultDbName $DbName }
if { ! [info exists ConnInfoStringDefaultDbName]} { set ConnInfoStringDefaultDbName "string10" }
#if {$Host==""} { set Host "furi" } ; #rR et port 5431 pour String 9.1 pour Postgresql 9.1
if {$Host==""} { set Host "ena" }
if {$DbName==""} { set DbName $ConnInfoStringDefaultDbName }
if {$User==""} { set User "string" }
if {$Password==""} { set Password "string" }
if {$Sgbd==""} { set Sgbd "postgresql" }
if {$Port==""} { set Port "5432" }
return [ConnInfo $Host $DbName $User $Password $Sgbd $Port] ;#rR a rajouté l'option port 2015/12/30
}
proc ConnInfoSysCilia {{Host ""} {DbName ""} {User ""} {Password ""} {Sgbd ""}} {
if {$Host==""} { set Host "studio" }
if {$DbName==""} { set DbName "syscilia" }
if {$User==""} { set User "ripp" }
if {$Password==""} { set Password "alphaRR" }
if {$Sgbd==""} { set Sgbd "mysql" }
return [ConnInfo $Host $DbName $User $Password $Sgbd]
}
proc ConnInfoUcsc {{DbName ""} {User ""} {Password ""} {Sgbd ""}} {
# set DbName [string tolower $DbName]
if {[string tolower $DbName]=="human" } { set DbName "ucschuman_hg18" }
if {[string tolower $DbName]=="human18" } { set DbName "ucschuman_hg18" }
if {[string tolower $DbName]=="human19" } { set DbName "ucschuman_hg19" }
if {[string tolower $DbName]=="ucschuman" } { set DbName "ucschuman_hg18" }
if {[string tolower $DbName]=="ucschuman18"} { set DbName "ucschuman_hg18" }
if {[string tolower $DbName]=="ucschuman19"} { set DbName "ucschuman_hg19" }
if { ! [regexp "^ucsc" $DbName]} { set DbName "ucsc$DbName" }
set Host ""
if {$Host==""} { set Host "" }
if {$DbName==""} { set DbName "ucscmouse" }
if {$User==""} { set User "lbgi" }
if {$Password==""} { set Password "jaimelesfrites" }
if {$Sgbd==""} { set Sgbd "mysql" }
return [ConnInfo $Host $DbName $User $Password $Sgbd]
}
proc ConnInfoUcscDog {} {
return [ConnInfoUcsc "dog"]
}
proc ConnInfoUcscDroso {} {
return [ConnInfoUcsc "dros"]
}
proc ConnInfoUcscHuman {} {
return [ConnInfoUcsc "human"]
}
proc ConnInfoUcscMouse {} {
return [ConnInfoUcsc "mouse"]
}
proc ConnInfoUcscRat {} {
return [ConnInfoUcsc "rat"]
}
proc ConnInfoUcscWorm {} {
return [ConnInfoUcsc "worm"]
}
proc ConnectMailbox {} {
global CMDef
set rep [ConnectServer $CMDef(ServerAddress) $CMDef(UseSSL) $CMDef(Port)]
if {$rep == 0} {
return
} else {
set CMDef(imapID) $rep
}
if {! [LoginServer $CMDef(imapID) $CMDef(Username) $CMDef(Password)]} {
return
}
::imap4::select $CMDef(imapID) $CMDef(currFolder)
return
}
proc ConnectServer {address {use_ssl 0} {port ""}} {
if {$use_ssl} {
set ::imap4::use_ssl 1
}
if {[catch {set imapID [::imap4::open $address $port]}]} {
puts "Beware !\nI can't connect to the server address :\n$address"
FaireLire "Beware !\nI can't connect to the server address :\n$address"
return 0
} else {
return $imapID
}
}
proc ConnexionsAgents {aT} {
global LNOrdali TAg
upvar $aT T
# cherche ensemble d'un agents de s1 vers s2,
# s2 ver , s3, ... sn vers s01
# T(n,ag) (n ag score) ...
set done 0
# iseq : index sequence
set iseq 0
set n [lindex $LNOrdali $iseq]
set nl 0
foreack k [array names T "$n,*"] {
lassign [split $k ,] n ag
lappend tlk($nl) $n $ag
while {$i < [llength $LNOrdali]} {
set Lpair [LiensAgents $i $k]
foreach {n1 a1 n2 a2} $Lpair {
}
}
incr nl
}
return
}
proc ConsGrid {pab} {
global DefautsPipe
global PipeCollection
set methCons [set DefautsPipe(Conservation,method)]
if {[string equal -nocase $methCons "Cluster"]} {
set methCons "Cluster"
} elseif {[string equal -nocase $methCons "VectorNorm"]} {
set methCons "VectorNorm"
} elseif {[string equal -nocase $methCons "MeanDistance"]} {
set methCons "MeanDistance"
} elseif {[string equal -nocase $methCons "Ranganathan"]} {
set methCons "Ranganathan"
} else {
puts "Unknown conservation method"
return 0
}
if {$PipeCollection} {
set fileMacsims [file join [RepertoireDuGenome] "macsims" $pab.xml]
} else {
set fileMacsims "[file rootname $pab].macsims.xml"
}
if {[file exists $fileMacsims]} {
catch [AjoutConservationMacsims $fileMacsims $methCons] Mess
if {$Mess eq ""} {
return 1
} else {
return 0
}
} else {
return 0
}
}
proc ConsacreVersusPredite {Nom} {
global RepertoireDuGenome
global ConsacreVersusPredite
if {[info exists ConsacreVersusPredite($Nom)]} { return [set ConsacreVersusPredite($Nom)] }
if {[info exists ConsacreVersusPredite("EstCharge")]} { return [set ConsacreVersusPredite("EstCharge")] }
set Fichier "$RepertoireDuGenome/fiches/consacre_versus_predite"
if {[file exists $Fichier]} {
foreach Ligne [LesLignesDuFichier $Fichier] {
scan $Ligne "%s" NomLu
regsub "$NomLu *" $Ligne "" Valeur
if {$Valeur==""} { set Valeur "OK" }
set ConsacreVersusPredite($NomLu) $Valeur
}
set ConsacreVersusPredite("EstCharge") "No value"
return [ConsacreVersusPredite $Nom]
}
set ConsacreVersusPredite("EstCharge") "No values available"
return [set ConsacreVersusPredite("EstCharge")]
}
proc ConsensusCheck {chr DR} {
# Exploite la procédure de proximité au consensus (RGKTSA)
set FichierDesDR [open "/genomics/link/STAF/fiches/VDR/DR$DR-Chr$chr.txt" "r"]
set FichierDesConsensus "/genomics/link/STAF/fiches/VDR/Consensus/DR$DR-Chr$chr.cons"
if { [file exists $FichierDesConsensus] } {
file delete $FichierDesConsensus
}
while { [gets $FichierDesDR Ligne] >=0 } {
ScanLaListe $Ligne ID Start End Brin
set Sequence [BoutADNDeUcscBoost $Start $End $Brin "Human" $chr "bigZips200603" ]
if {$Brin == "-"} {
set Sequence [NucToReverseAndComplementNuc $Sequence]
}
set RGKTSA [RGKTSA $Sequence $DR]
ScanLaListe $RGKTSA Score Mismatch QuelMismatch
# Espionne $RGKTSA
if { $Mismatch <= 2} {
AppendAuFichier $FichierDesConsensus "$Ligne $Sequence $RGKTSA"
}
}
}
proc ConservHM {Chromosome} {
# Input : localisations chez Human et alignement Human / Mouse
# Process : Recherche si elles existent les séquences mouse alignées et calcule le score
# Output : deux fichiers (conservé/non-conservé)
# Définition des fichiers
set FichierDesLocalisations [open "/tmp/Conservation/localisations3.txt" "r"]
set FichierDesConservesSansGaps "/tmp/Conservation/SbsConservesChezLaSourisSansGapsChr$Chromosome.txt"
set FichierDesConservesAvecGaps "/tmp/Conservation/SbsConservesChezLaSourisAvecGapsChr$Chromosome.txt"
set FichierDesNonConserves "/tmp/Conservation/SbsNonConservesChezLaSourisChr$Chromosome.txt"
set FichierLog "/tmp/Conservation/ConservHMChr$Chromosome.log"
#Effacer les fichier de sortie si ils existent
#if { [file exists $FichierDesConservesSansGaps] } {
# file delete $FichierDesConservesSansGaps
#}
#if { [file exists $FichierDesConservesAvecGaps] } {
# file delete $FichierDesConservesAvecGaps
#}
#if { [file exists $FichierDesNonConserves] } {
# file delete $FichierDesNonConserves
#}
# Initialisation
set ListeLoc {}
set input 104330
set RandomOuPas "PasRandom"
set Conservation 0
set ConservesSansGap 0
set ConservesMaisGap 0
set NonConserves 0
Espionne " "
set Chrox $Chromosome
set ConservesTotaux 0
Espionne "Je charge l'alignement du chromosome $Chrox humain avec la souris..."
set AlignementChromosome$Chrox [open "/tmp/ConservationHM/chr$Chrox.hg1.mm8.net.axt" "r"]
set ListeAli$Chrox {}
#Stockage des alignements dans une liste
while { [gets [set AlignementChromosome$Chrox] LigneAli] >=0 } {
if {$LigneAli != "" } {
ScanLaListe $LigneAli SeqNum ChromosomeH StartH EndH ChromosomeM StartM EndM Strand Longueur
set LigneEntete [string range $ChromosomeH 0 2 ]
if { $LigneEntete == "chr" } {
set FullLine "$ChromosomeH $StartH $EndH $ChromosomeM $StartM $EndM $Strand $Longueur"
gets [set AlignementChromosome$Chrox] SeqH
ScanLaListe $SeqH SequenceH
gets [set AlignementChromosome$Chrox] SeqM
ScanLaListe $SeqM SequenceM
lappend ListeAli$Chrox "$FullLine $SequenceH $SequenceM"
set $ChromosomeH ""
}
}
}
Espionne "Chargement terminé, balayage en cours..."
#Parcours le fichier des locs puis la liste des séquences alignées
while { [gets $FichierDesLocalisations LigneLoc] >=0 } {
incr input
ScanLaListe $LigneLoc LocChro LocStart LocEnd LocStrand LocHeart LocSeq
if {$Chrox == $LocChro } {
foreach Alignement [set ListeAli$LocChro] {
set Conservation 0
ScanLaListe $Alignement ChromosomeH StartH EndH ChromosomeM StartM EndM St ScoreAli SeH SeM
set RandomOuPas "PasRandom"
if { [regexp -- {random} $ChromosomeM] } {
set RandomOuPas "Random"
}
if { $LocStart >= $StartH && $LocEnd <= $EndH} {
#Le SBS se trouve au milieu d'une région conservée
set StartH [expr $StartH - 1]
set EndH [expr $EndH - 1]
set StartM [expr $StartM - 1]
set EndM [expr $EndM - 1]
set Start [expr $LocStart - $StartH]
set Gapped 0
set Ungapped 0
incr ConservesTotaux
foreach Caractere [split $SeH ""] {
incr Gapped
if { $Caractere != "-" } {
incr Ungapped
}
if { $Ungapped == $Start } {
break
}
}
if { $LocStrand == "-" } {
#Petit décalage de 1 en cas de moins, probablement dé au comptage du sens comme un gap
set SequenceSbsM [string range $SeM [expr $Gapped ] [expr $Gapped + 17 ] ]
set SequenceSbsH [string range $SeH [expr $Gapped ] [expr $Gapped + 17 ] ]
set TrueGapped [expr $Gapped + 1 ]
set LocSeq [NucToReverseAndComplementNuc $LocSeq]
} else {
set TrueGapped $Gapped
set SequenceSbsM [string range $SeM [expr $Gapped - 1] [expr $Gapped + 16 ] ]
set SequenceSbsH [string range $SeH [expr $Gapped - 1] [expr $Gapped + 16 ] ]
set TrueGapped [expr $Gapped + 1 ]
}
#Récupération de la séquence mouse de l'alignement précédant le SBS potentiel, avec ses gaps.
set prelim [string range $SeM 0 $TrueGapped]
set UngappedM 0
foreach CaractereM [split $prelim ""] {
# Comptage des gaps précédant le SBS murin
if { $CaractereM != "-" } {
incr UngappedM
}
}
set AlignementSbsStartM [expr $Start - $UngappedM]
set AlignementSbsEndM [expr $AlignementSbsStartM + 17]
if { $StrandM == "-"} {
set ChromosomeSize [ChromoSize "Mouse" $ChromosomeM ]
set StartAlignementDansLeBonSensM [expr $ChromosomeSize - $EndM]
set EndAlignementDansLeBonSensM [expr $ChromosomeSize - $StartM]
set EndSbsDansLeBonSensM [expr $EndAlignementDansLeBonSensM - $UngappedM +1 ]
set StartSbsDansLeBonSensM [expr $EndSbsDansLeBonSensM - 17]
set SequenceSbsMReverse [NucToReverseAndComplementNuc $SbsM]
} else {
set StartSbsDansLeBonSensM [expr $StartM + $UngappedM - 2]
set EndSbsDansLeBonSensM [expr $StartSbsDansLeBonSensM + 17]
set SequenceSbsMReverse $SbsM
}
if { [ regexp -- {-} $SequenceSbsM ] || [ regexp -- {-} $SequenceSbsH ] } {
AppendAuFichier $FichierDesConservesAvecGaps "Staf$input $LocStart $LocEnd $LocStrand $ChromosomeH $StartH $EndH $ChromosomeM $StartM $EndM $StrandM $ScoreAli $SequenceSbsH $SequenceSbsM $StartSbsDansLeBonSensM $EndSbsDansLeBonSensM $SbsMReverse $RandomOuPas"
incr ConservesMaisGap 1
set Conservation 1
break
} else {
AppendAuFichier $FichierDesConservesSansGaps "Staf$input $LocStart $LocEnd $LocStrand $ChromosomeH $StartH $EndH $ChromosomeM $StartM $EndM $StrandM $ScoreAli $SequenceSbsH $SequenceSbsM $StartSbsDansLeBonSensM $EndSbsDansLeBonSensM $SbsMReverse $RandomOuPas"
incr ConservesSansGap 1
set Conservation 1
break
}
}
}
if {$Conservation != 1 } {
AppendAuFichier $FichierDesNonConserves "Staf$input $LocStart $LocEnd $LocStrand"
incr NonConserves
set Conservation 0
}
}
}
AppendAuFichier $FichierLog "============================="
AppendAuFichier $FichierLog "= Statistiques de ConservHM ="
AppendAuFichier $FichierLog "============================="
AppendAuFichier $FichierLog " "
AppendAuFichier $FichierLog "SBS potentiels lus : $input"
AppendAuFichier $FichierLog "SBS situés dans une région non-conservée : $NonConserves"
AppendAuFichier $FichierLog "SBS situés dans une région conservée : $ConservesTotaux"
AppendAuFichier $FichierLog "-- SBS sans gaps : $ConservesSansGap"
AppendAuFichier $FichierLog "-- SBS avec gaps : $ConservesMaisGap"
}
proc ConservScore2 {SequenceSbsH SequenceSbsM LocStrand} {
#Attribue un score aux SBS murins par rapport aux SBS humains
#Initialisations
set CompteurScore 0
set Score 0.000
set PosiScore 0.000
set H 0
set M 0
for { set J 1 } { $J <= 18 } { incr J } {
set CaractereM$J " "
set CaractereH$J " "
}
#On met les séquences dans le sens xxCCC pour pouvoir éliminer celles sans C4 ou C5
if { $LocStrand == "-" } {
set SequenceSbsH [NucToReverseAndComplementNuc $SequenceSbsH]
set SequenceSbsM [NucToReverseAndComplementNuc $SequenceSbsM]
}
foreach CaractereHuman [split $SequenceSbsH ""] {
incr H
set CaractereH$H $CaractereHuman
}
foreach CaractereMouse [split $SequenceSbsM ""] {
incr M
set CaractereM$M $CaractereMouse
}
for { set I 1 } { $I <= 18 } { incr I } {
if { [set CaractereM$I] == [set CaractereH$I] } {
set PosiScore 1.000
} else {
set PosiScore [StafPosiScore $I [set CaractereM$I]]
}
set Score [expr $Score + $PosiScore]
}
return $Score
}
proc ConservationDesMutations {system} {
set mdb "rootmis"
sqlite3 $mdb [file join [MiSynPatDir] misynpat.sql]
set Lmut [$mdb eval {select m.variant1, m.variant2 from mutation as m, synthetase as s where s.sname = $system and s.pk_synthetase=m.pk_synthetase}]
set Lhtml [list]
lappend " "
lappend Lhtml "
Conservation of affected residues :
"
lappend Lhtml "Total number of reported mutations : [llength [lsort -unique $Lmut]] "
if {[llength $Lmut] == 0} {
$mdb close
return "[join $Lhtml \n]"
}
set sali [string toupper [string index $system 0]]
if {$sali eq "F"} {
set sali "Fb"
}
set humi "${sali}mito_Homo.sapi"
set Lcons {}
set ncon 0
set feat "Cons-T80"
if {[info exists ::TabSF($humi,$feat)]} {
set Lft $::TabSF($humi,$feat)
} else {
lappend Lhtml "No $feat for $humi !\n"
set Lft [list]
}
set ::ListePDB [list]
foreach ft $Lft {
DecortiqueUneFeature $ft deb fin col ssc note sys
for {set i $deb} {$i <= $fin} {incr i} {
set no [DonnePosGS $humi $i]
lappend Lcons $no $note
}
}
foreach k {"IdenGlob" "ConsGlob" "SimiGlob" "nocons"} {
set Tc($k) [list]
}
foreach mut $Lmut {
if {[string index $mut 0] ne "X"} {
set no [string range $mut 1 end-1]
lappend Lrmut $no
}
}
set Lrmut [lsort -unique -integer $Lrmut]
set nMis [llength $Lrmut]
lappend Lhtml "Total number of missense+nonsense mutations : $nMis "
foreach no $Lrmut {
set ires [lsearch -exact $Lcons $no]
if {$ires > -1} {
set type [lindex $Lcons $ires+1]
lappend Tc($type) $no
} else {
lappend Tc(nocons) $no
}
}
set nmc 0
foreach k {"IdenGlob" "ConsGlob" "SimiGlob"} {
incr nmc [llength $Tc($k)]
}
lappend Lhtml "Total number of mutation affecting conserved mutations : $nmc "
lappend Lhtml "
"
puts $fo "3003 PDB chains"
set db "toto"
sqlite3 $db rrps.sql
set Npdbok [$db eval {select count(distinct(pdbid)) from items where taxid=4932}]
set Nchnok [$db eval {select count(pdbid) from items where taxid=4932}]
set Naccok [$db eval {select count(distinct(accession)) from items where taxid=4932}]
puts $fo "$Npdbok PDB ok "
puts $fo "$Nchnok chains ok "
puts $fo "$Naccok unique UniProt ok
"
# lignements
puts $fo "Alignments "
# wobble
puts $fo "wobble table based on this page "
puts $fo "Article : tRNA genes and retroelements in the yeast genome. J Hani and H Feldmann Nucleic Acids Res. 1998 Feb 1; 26(3): 689696. "
# histogram length
puts $fo "
Distribution of protein lengths
"
puts $fo [ContenuDuFichier ./ToPrint/distri_lgt.html]
# explication
puts $fo "Explications basiques"
puts $fo " Pour les calculs, on prend les protéines de longueur > 200 aas, soit 493 protéines"
# clustering
puts $fo "
Clusterings on data
"
puts $fo "Pour aller aux clusters triés (cd Petite Explication) chercher 'highest' dans la page. Attention ! il y a évidemment 1 'highest' par threshold !"
puts $fo "