Index by: file name |
procedure name |
procedure call |
annotation
gscope_vrp.tcl
(annotations | original source)
#rR gscope_vrp.tcl
#rR 20201207 repris du gscoperso de Claudine ...
proc RepEDD_AFaire {} {
FaireLire "Attention il faut définir RepEDD"
return [Entre "/home/mayer/EDDtest"]
}
proc ScopeLaTotale {} {
# si rien n'est fait sauf le FicFastaBuzon
# si nouveau fichier modifier la procedure FicFastaBuzon
# modifier la procédure RepEDD pour éventuellement touranger dans un nouveau répertoire
# setgscoperr
# gscope ScopeLaTotale
if { ! [OuiOuNon "[RepEDD] ok?"]} { return "merci de modifer RedpEDD" }
if { ! [OuiOuNon "[FicFastaBuzon] ok?"]} { return "merci de modifer FicFastaBuzon" }
ScopeCreateTFAs
ScopeCreateVrp
return "Bravo"
}
proc FicFastaBuzon {} {
return "/home/buzon/Stage/Benchmarks/EDD/EDD.fasta"
}
proc ScopeVerif {} {
FarieLire "Ne pas relancer merci"
return "Ne pas relancer merci"
#rR on avait mis le dernier de chaque FOLD dans le FOlD suivant ... :-(
NousAllonsAuBoulot [RepEDD]
set DoIt 1
set TexteOriginal [ContenuDuFichier [FicFastaBuzon]]
foreach Fold [lsort [glob -nocomplain -type d *]] {
foreach FicFasta [lsort [glob -nocomplain "$Fold/*.tfa"]] {
set Queue [file tail $FicFasta]
regsub "_.+$" $Queue "" Access
regsub ".tfa$" $Queue "" Queue
if {[info exists DejaVu($Queue)]} {
Espionne $Access
if { ! [regexp "\n(>d$Access\[^\n\]+)\n" $TexteOriginal Match Ligne]} {
FaireLire "trouve pas la ligne de $Access"
continue
}
scan $Ligne "%s %s" A F
lassign [split $F "."] a b
set FoldLu "$a$b"
Espionne [string equal $Fold $FoldLu] $Fold $FoldLu $FicFasta $DejaVu($Queue) $Ligne
if { ! [string equal $Fold $FoldLu]} {
Espionne je garde $FoldLu je vire dans $Fold
if {$DoIt} { file delete $Fold/$Queue.tfa $Fold/$Queue.gif $Fold/$Queue.txt }
} else {
set Dir [file dirname $DejaVu($Queue)]
Espionne je vire dans $Dir je garde dans $Fold
if {$DoIt} { file delete $Dir/$Queue.tfa $Dir/$Queue.gif $Dir/$Queue.txt }
}
}
set DejaVu($Queue) $FicFasta
}
}
return salut
}
proc ScopeCreateTFAs {{FicFasta ""}} {
#rR on lit le fichier de Buzon qui contient les FOLD suivis des fasta
#rR on cree un repertore par FOLD et on y met les TFA créés à la volée.
if {$FicFasta==""} { set FicFasta [FicFastaBuzon] }
file mkdir [RepEDD]
set Access ""
set LesCrees {}
set LesLignes [LesLignesDuFichier $FicFasta]
lappend LesLignes ">CEstFini"
foreach Ligne $LesLignes {
if {[regexp {^FOLD} $Ligne] || [regexp {^>} $Ligne]} {
if {$Access!=""} {
# on a déjà lu toute la sequence il faut la ranger
set Sequence $SequenceDe($Access)
set TFA [SequenceFormatTFA $Sequence "$Access $Info" "protbrut"]
set FicCree "$RepFoldCourant/$Access.tfa"
Sauve $TFA dans $FicCree
set Access ""
lappend LesCrees $FicCree
if {$Ligne==">CEstFini"} { break }
}
if { ! [regexp {^FOLD} $Ligne]} {
# on traite les infos de la premiere ligne du fasta. Si c'est pas FOLD
set Info ""
scan $Ligne "%s" Access
regsub "$Access *" $Ligne "" Info ; # on enleve l'access suivi de blancs
set CodePDB [string range $Access 2 5]
set Extension [string range $Access 6 end]
set Access "${CodePDB}_$Extension"
set Access [string trimright $Access "_"]
Espionne access $Access
}
}
if {[regexp {^FOLD} $Ligne]} {
# on traite le FOLD
lassign [split $Ligne "\t"] F N T Name
Espionne $F $N $T = $Name
regsub -all {\.} $N "" N
set RepFoldCourant "[RepEDD]/$N"
file mkdir $RepFoldCourant
continue
}
if {[regexp -nocase {[^a-z ]} $Ligne]} { continue }
regsub -all " " $Ligne "" Seq
append SequenceDe($Access) $Seq
}
return $LesCrees
}
proc ScopeCreateVrp {} {
set Recuperation 0 ; #rR ne pas relancer la recuperation!!!
NousAllonsAuBoulot [RepEDD]
foreach Fold [lsort [glob -nocomplain -type d *]] {
if {$Fold=="obsolete"} { continue }
NousAllonsAuBoulot $Fold
foreach FicFasta [lsort [glob -nocomplain "*.tfa"]] {
Espionne $FicFasta
set Queue [file tail $FicFasta]
regsub ".tfa$" $Queue "" FicTexte
append FicTexte ".txt"
if {$Recuperation} { file copy "../GIF/$FicTexte" $FicTexte }
regsub ".tfa" $Queue "" FicGif
append FicGif ".gif"
#rR attention les gif ont disparu de EDD
if {$Recuperation} { file copy ../$FicGif $FicGif }
exec vrpshow -tfa $FicFasta -gif -exit > $FicTexte
lappend LesCrees $FicTexte
}
OnRevientDuBoulot
}
OnRevientDuBoulot
return $LesCrees
}
proc VrpValue {{Qui ""} {Quoi ""}} {
global VrpValue
if {$Qui=="" && $Quoi==""} { set Qui "ListOf" ; set Quoi "All" }
set Qui [string toupper $Qui]
set Quoi [string toupper $Quoi]
if {[info exists VrpValue($Qui,$Quoi)]} { return $VrpValue($Qui,$Quoi) }
if {[info exists VrpValue("EstCharge")]} { return "" }
set VrpValue("EstCharge") 1
set MinX 99999
set MaxX -99999
set MinY $MinX
set MaxY $MaxX
set MinM $MinX
set MaxM $MaxX
set LeTout {}
foreach Ligne [LesLignesDuFichier "/biolo/Vrp/AAtab.dat"] {
lassign [split $Ligne " "] A X Y
if {$A=="*"} { set A "." }
set M [expr sqrt($X*$X+$Y*$Y)]
set Angle [expr atan2($Y,$X)]
set Degres [expr ($Angle*180.)/3.1415926]
set VrpValue($A,POSX) $X
set VrpValue($A,POSY) $Y
set VrpValue($A,) "$X $Y"
set VrpValue($X,$Y) $A
set VrpValue($A,ANGLE) $Angle
set VrpValue($A,DEGRES) $Degres
set VrpValue($A,MODULE) $M
lappend VrpValue(LISTOF,A) $A
if {$A!="."} {
set MinX [Mini $MinX $X]
set MaxX [Maxi $MaxX $X]
set MinY [Mini $MinY $Y]
set MaxY [Maxi $MaxY $Y]
set MinM [Mini $MinM $M]
set MaxM [Maxi $MaxM $M]
}
set All "$A $X $Y $M $Angle $Degres"
regsub -all " " $All "\t" All
lappend LeTout $All
}
set MinMax "Z $MinX $MaxX $MinY $MaxY $MinM $MaxM 0 0 1"
regsub -all " " $MinMax "\t" MinMax
lappend LeTout $MinMax
set VrpValue(LISTOF,ALL) $LeTout
set VrpValue(TEXTOF,ALL) [join $LeTout "\n"]
set VrpValue(MIN,X) $MinX
set VrpValue(MIN,Y) $MinY
set VrpValue(MIN,M) $MinM
set VrpValue(MAX,X) $MaxX
set VrpValue(MAX,Y) $MaxY
set VrpValue(MAX,M) $MaxM
set VrpValue(MIN,MODULE) $MinM
set VrpValue(MAX,MODULE) $MaxM
foreach A $VrpValue(LISTOF,A) {
foreach B $VrpValue(LISTOF,A) {
set D [expr sqrt(($VrpValue($A,POSX)-$VrpValue($B,POSX))**2 + ($VrpValue($A,POSY)-$VrpValue($B,POSY))**2)]
set VrpValue($A,$B) $D
lappend VrpValue(LISTOF,DISTANCES) "$A $B $D"
}
}
return [VrpValue $Qui $Quoi]
}
proc VispValue {{Qui ""} {Quoi ""}} {
#rR C'est comme Vrp mais on ne veut que des angles qui vont vers l'avant
#rR donc on fait un décalage et une compression de l'angle
#rR attention quand on demande VispValue 45 0.3 on réinitialise tout avec ce décalage et compression
#rR et on renvoie TextOf All
global VispValue
set Pi 3.1415926
if {[regexp {^[0-9\.\-]+$} $Qui] && [regexp {^[0-9\.\-]+$} $Quoi]} {
if {[info exists VispValue]} { unset VispValue }
set VispValue(DECALAGEDEGRES,) $Qui
set VispValue(COMPRESSION,) $Quoi
set Qui "TextOf"
set Quoi "All"
}
if { ! [info exists VispValue(DECALAGEDEGRES,)]} { set VispValue(DECALAGEDEGRES,) 45 }
if { ! [info exists VispValue(COMPRESSION,)]} { set VispValue(COMPRESSION,) 0.4 }
if {$Qui=="" && $Quoi==""} { set Qui "ListOf" ; set Quoi "All" }
set Qui [string toupper $Qui]
set Quoi [string toupper $Quoi]
if {[info exists VispValue($Qui,$Quoi)]} { return $VispValue($Qui,$Quoi) }
if {[info exists VispValue("EstCharge")]} { return "" }
set VispValue("EstCharge") 1
set DecalageDegres $VispValue(DECALAGEDEGRES,)
set DecalageAngle [expr ($DecalageDegres*$Pi)/180.]
set Compression $VispValue(COMPRESSION,)
set MinX 99999
set MaxX -99999
set MinY $MinX
set MaxY $MaxX
set MinM $MinX
set MaxM $MaxX
set LeTout {}
foreach Ligne [VrpValue ListOf All] {
if {[regexp "^Z" $Ligne] } { continue }
lassign [split $Ligne " \t"] A X Y M Angle Degres
set Angle [expr $Angle + $DecalageAngle]
if {$Angle < -2*$Pi} { set Angle [expr $Angle+2*$Pi] }
if {$Angle > 2*$Pi} { set Angle [expr $Angle-2*$Pi] }
set Angle [expr $Angle*$Compression]
set Degres [expr ($Angle*180.)/$Pi]
set X [expr $M*cos($Angle)]
set Y [expr $M*sin($Angle)]
set VispValue($A,POSX) $X
set VispValue($A,POSY) $Y
set VispValue($A,) "$X $Y"
set VispValue($X,$Y) $A
set VispValue($A,ANGLE) $Angle
set VispValue($A,DEGRES) $Degres
set VispValue($A,MODULE) $M
lappend VispValue(LISTOF,A) $A
if {$A!="."} {
set MinX [Mini $MinX $X]
set MaxX [Maxi $MaxX $X]
set MinY [Mini $MinY $Y]
set MaxY [Maxi $MaxY $Y]
set MinM [Mini $MinM $M]
set MaxM [Maxi $MaxM $M]
}
set All "$A $X $Y $M $Angle $Degres"
regsub -all " " $All "\t" All
lappend LeTout $All
}
set MinMax "Z $MinX $MaxX $MinY $MaxY $MinM $MaxM $DecalageAngle $DecalageDegres $Compression"
regsub -all " " $MinMax "\t" MinMax
lappend LeTout $MinMax
set VispValue(LISTOF,ALL) $LeTout
set VispValue(TEXTOF,ALL) [join $LeTout "\n"]
set VispValue(MIN,X) $MinX
set VispValue(MIN,Y) $MinY
set VispValue(MIN,M) $MinM
set VispValue(MAX,X) $MaxX
set VispValue(MAX,Y) $MaxY
set VispValue(MAX,M) $MaxM
set VispValue(MIN,MODULE) $MinM
set VispValue(MAX,MODULE) $MaxM
foreach A $VispValue(LISTOF,A) {
foreach B $VispValue(LISTOF,A) {
set D [expr sqrt(($VispValue($A,POSX)-$VispValue($B,POSX))**2 + ($VispValue($A,POSY)-$VispValue($B,POSY))**2)]
set VispValue($A,$B) $D
lappend VispValue(LISTOF,DISTANCES) "$A $B $D"
}
}
return [VispValue $Qui $Quoi]
}
#rR EDD Claudine veut étudier les folds
#rR Au commencement chaque Residu r est a droite de son voisin de gauche pos(i,r)=d(i,g)
#rR Apres le premier alignement
#rR si pas d'insertion dans la query pos(2,k)=pos(1,k) si hit et on garde ce qu'il y avait.
#rR si insertion de N dans la query apres f, pos(1,f+1)=pos(2,f)
proc RepEDD {} {
return "/genomics/link/EDD"
}
proc UrlEDD {} {
return "/EDD"
}
proc EDD {{Qui ""} {Quoi ""}} {
global EDD
if {[info exists EDD($Qui,$Quoi)]} { return $EDD($Qui,$Quoi) }
if {[info exists EDD("EstCharge")]} { return "" }
set EDD("EstCharge") 1
set EDD(ListOf,Fold) {}
NousAllonsAuBoulot "[RepEDD]/Folds"
set LesFold [lsort -dictionary [glob -nocomplain -type d "*"]]
set EDD(ListOf,Tfa) {}
set EDD(ListOf,TfaEntete) {}
foreach Fold $LesFold {
lappend EDD(ListOf,Fold) $Fold
set EDD($Fold,ListOfGif) {}
set EDD($Fold,ListOfTfa) {}
set EDD($Fold,ListOfTxt) {}
set EDD($Fold,ListOfJpg) {}
foreach Gif [lsort [glob -nocomplain "$Fold/*.gif"]] {
regsub ".gif$" $Gif ".tfa" Tfa
regsub ".gif$" $Gif ".txt" Txt
regsub ".gif$" $Gif ".jpg" Jpg
lappend EDD($Fold,ListOfGif) $Gif
lappend EDD($Fold,ListOfTfa) $Tfa
lappend EDD($Fold,ListOfTxt) $Txt
lappend EDD($Fold,ListOfJpg) $Jpg
if {[FileAbsent $Jpg]} {
Espionne $Jpg
exec convert -resize 25% $Gif $Jpg
}
set Entete [PremiereLigneDuFichier $Tfa]
regsub ">" $Entete "" Entete
scan $Entete "%s %s %s" Access Scope Limit
set EDD($Access,Access) $Access
set EDD($Access,Entete) $Entete
set EDD($Access,Scope) $Scope
set EDD($Access,Limit) $Scope
lappend EDD(ListOf,Access) $Access
lappend EDD(ListOf,Scope) $Scope
lappend EDD($Fold,ListOfAccess) $Access
lappend EDD($Fold,ListOfScope) $Scope
lappend EDD($Scope,ListOfJpg) $Jpg
lappend EDD(ListOf,Tfa) $Tfa
lappend EDD(ListOf,TfaEntete) "$Tfa $Entete"
}
}
set EDD(ListOfAsText,Tfa) [join $EDD(ListOf,Tfa) "\n"]
set EDD(ListOfAsText,TfaEntete) [join $EDD(ListOf,TfaEntete) "\n"]
set EDD(ListOf,Scope) [lsort -unique -command CompareLesScopes $EDD(ListOf,Scope)]
foreach Fold $LesFold {
set EDD($Fold,ListOfScope) [lsort -unique -command CompareLesScopes $EDD($Fold,ListOfScope)]
}
OnRevientDuBoulot
return [EDD $Qui $Quoi]
}
proc CompareLesScopes {a b} {
foreach ai [split $a "."] bi [split $b "."] {
if {$ai<$bi} { return -1 }
if {$ai>$bi} { return 1 }
}
return 0
}
proc EddHtml {{LesFold ""}} {
if {$LesFold==""} { set LesFold [EDD ListOf Fold] }
set LesDivDesFolds {}
set LeH {}
foreach Fold $LesFold {
lappend LeH "<hr>"
lappend LeH "<h1>Fold $Fold</h1>"
foreach Scope [EDD $Fold ListOfScope] {
lappend LeH "<h3>Fold $Fold Scope $Scope</h3>"
set LesImgDuScope {}
foreach Jpg [EDD $Scope ListOfJpg] {
set Queue [file tail $Jpg]
regsub {\.[^\.]+$} $Queue "" Access
lassign [split $Access "_"] Pdb S
set Scope [EDD $Access Scope]
set Entete [EDD $Access Entete]
set Entete [string map [list "'" " " "<" " " ">" " " "\"" " " "\[" " " "\]" " "] $Entete]
set Img "<img src='[UrlEDD]/Folds/$Jpg' title='Fold $Fold $Entete' onclick='link(event, \"$Access\", \"$Pdb\", \"$Scope\", \"$Entete\");'/>"
lappend LesImgDuScope $Img
}
set ImgDuScope [join $LesImgDuScope "\n"]
lappend LeH $ImgDuScope
}
}
set H [join $LeH "\n"]
set Html [Html_Chabada "[RepEDD]/html/edd_template.html" "ImagesDiv=$H"]
return $Html
}
Index by: file name |
procedure name |
procedure call |
annotation
File generated 2022-04-05 at 12:55.