Index by: file name |
procedure name |
procedure call |
annotation
gscope_ccClementine.tcl
(annotations | original source)
#cL gscopublic/gscope_cc.tcl
proc RatioXMotifsPourTousOrganismes {} {
foreach Org [lrange [MAMAsOrg "GetList"] 0 end] {
Espionne [RatioXMotifs $Org]
}
}
proc RatioXMotifs {{Organisme ""} {Liste ""}} {
#cL calcule les nombres de nuc dans les Xmotifs 0 1 2 et fait les ratios
if {$Organisme==""} { set Organisme [MAMAsOrg] }
set NbNtXMotifsFrame0 0
set NbNtXMotifsFrame1 0
set NbNtXMotifsFrame2 0
#set NbNtTotal 0
lappend FichierRatio "Organisme\tGene\tNbNtXMotif(Frame0)\tNbNtXMotif(Frame1)\tNbNtXMotif(Frame2)\tLongueurSequenceGene\tPourcentage(Frame0)\tPourcentage(Frame1)%\tPourcentage(Frame2)%"
if {$Liste==""} { set Liste [lrange [ListeDesPABs] 0 end] }
foreach Nom $Liste {
#Espionne $Nom
set LesOrga {}
if {[info exists KduDF]} {unset KduDF}
if {[info exists LesDFDu]} {unset LesDFDu}
if {[info exists SequenceDu]} {unset SequenceDu}
set F [GscopeFile $Nom nucalitfa]
foreach Ligne [LesLignesDuFichier $F] {
if {[regexp {>} $Ligne]} {
set Entete $Ligne
lassign [split $Entete " "] Access
regsub ">" $Access "" Access
lassign [split $Access "_"] Gene Orga
if {$Orga eq $Organisme} {
lappend LesOrga $Orga
}
if { ! [info exists SequenceDu($Orga)]} { set SequenceDu($Orga) "" }
} else {
if {$Orga eq $Organisme} {
append SequenceDu($Orga) $Ligne
}
}
}
foreach Orga $LesOrga {
set SequenceNonGap ""
set LongeurSequence 0
regsub -all {\-} $SequenceDu($Orga) "" SequenceNonGap
set LongueurSequence [string length $SequenceNonGap]
foreach Frame [list 0 1 2] {
set SequenceNonGapDeLaFrame [string range $SequenceNonGap $Frame end]
set XMotifsSequence [XMotifs $SequenceNonGapDeLaFrame 0]
set LesDFDu($Frame) {}
foreach {K V} $XMotifsSequence {
foreach DF $V {
lappend LesDFDu($Frame) $DF
set KduDF($Frame,$DF) $K
}
}
}
}
foreach Orga $LesOrga {
foreach Frame [list 0 1 2] {
set LesDFDu($Frame) [lsort -integer -index 0 $LesDFDu($Frame)]
set NbLettreMotif($Frame) 0
set LongueurMotif 0
foreach DF $LesDFDu($Frame) {
lassign $DF D F
set LongueurMotif [expr $F-$D+3]
incr NbLettreMotif($Frame) $LongueurMotif
}
set Ratio($Frame) "$NbLettreMotif($Frame)/$LongueurSequence"
if {$LongueurSequence!=0} {
set Pourcentage($Frame) [expr 100*$NbLettreMotif($Frame)/$LongueurSequence]
} else {
set Pourcentage($Frame) "X"
}
}
lappend FichierRatio "$Orga\t$Gene\t$NbLettreMotif(0)\t$NbLettreMotif(1)\t$NbLettreMotif(2)\t$LongueurSequence\t$Pourcentage(0)%\t$Pourcentage(1)%\t$Pourcentage(2)%"
#incr NbNtTotal $LongueurSequence
#lappend FichierRatio ""
#lappend ListeX0Motif $Pourcentage(0)
#lappend ListeX1Motif $Pourcentage(1)
#lappend ListeX2Motif $Pourcentage(2)
#lappend FichierRatio ""
#incr NbNtXMotifsFrame0 $NbLettreMotif(0)
#incr NbNtXMotifsFrame1 $NbLettreMotif(1)
#incr NbNtXMotifsFrame2 $NbLettreMotif(2)
}
}
#Espionne "Repartition des pourcentages pour la frame 0 de $Organisme"
#Histogramme $ListeX0Motif
#Espionne "Repartition des pourcentages pour la frame 1 de $Organisme"
#Histogramme $ListeX1Motif
#Espionne "Repartition des pourcentages pour la frame 2 de $Organisme"
#Histogramme $ListeX2Motif
#Espionne $FichierRatio
return [SauveLesLignes $FichierRatio dans "[RepertoireDuGenome]/fiches/RatioXMotifs${Orga}"]
}
proc PositionsLocalesVersGlobales {Sequence Position} {
set L 0
set G 0
foreach C [split $Sequence ""] {
if {$C!="-" && $C!="."} { incr L }
incr G
if {$L==$Position} { return $G }
}
return 0
}
proc SumOfPairsCL {Pilier} {
set SumPairs 0
set NbElements 0
set Taille [llength $Pilier]
for {set i 0} {$i<$Taille} {incr i} {
if {[lindex $Pilier $i]!="-"} {
incr NbElements
}
for {set j [expr {$i+1}]} {$j<$Taille} {incr j} {
if {[lindex $Pilier $i]!="-" && [lindex $Pilier $j]!="-"} {
if {[lindex $Pilier $i] eq [lindex $Pilier $j]} {
incr SumPairs 1
}
}
}
}
return "$SumPairs $NbElements"
}
proc CalculSumOfPairs {{Liste ""}} {
#Position NbMotifsFrame0 SumMotifsFrame0 RatioSumMotifs/Diviseur NbMotifsFrame1 SumMotifsFrame1 RatioSumMotifsFrame1/Diviseur NbMotifsFrame2 SumMotifsFrame2 RatioSumMotifsFrame2/Diviseur NbTotalMotifs NbLinesLignesParticipant SumPairs RatioSumPairs/Diviseur
set SP "SumOfPairsCorrect"
set RepSP "[RepertoireDuGenome]/$SP"
file mkdir $RepSP
if {$Liste==""} { set Liste [lrange [ListeDesPABs] 0 end] }
foreach Nom $Liste {
if {[file exists [GscopeFile $Nom $SP]]} { continue }
if {[PasTouche $Nom]} { continue }
Espionne $Nom
set LesLignesDuFichier {}
set LongueurSequence 0
if {[info exists LesDFDu] } { unset LesDFDu }
if {[info exists SequenceDu]} { unset SequenceDu }
if {[info exists LesPositionsFrame]} { unset LesPositionsFrame }
if {[info exists LesPositionsMotifs]} { unset LesPositionsMotifs }
if {[info exists LesPositionsSansTirets]} { unset LesPositionsSansTirets }
if {[info exists PilierMotif]} { unset PilierMotif }
if {[info exists InMotif]} { unset InMotif }
if {[info exists Pilier]} { unset Pilier }
if {[info exists NombreMotifs]} {unset NombreMotifs}
if {[info exists RatioX]} {unset RatioX}
set LesAccess [MAMAsSeq $Nom listof org]
foreach Access $LesAccess {
set SequenceDu($Access) [MAMAsSeq $Nom $Access nuc gap]
}
foreach Access $LesAccess {
set SequenceNonGap [MAMAsSeq $Nom $Access nuc nogap]
foreach Frame [list 0 1 2] {
set LesPositionsMotifs($Frame,$Access) {}
set LesPositionsSansTirets($Frame,$Access) {}
set XMotifsSequence [XMotifs $SequenceNonGap $Frame]
set LesDFDu($Frame,$Access) {}
foreach {K V} $XMotifsSequence {
foreach DF $V {
lappend LesDFDu($Frame,$Access) $DF
}
}
if {$LesDFDu($Frame,$Access)=={}} { continue }
set LesDFDu($Frame,$Access) [lsort -integer -index 0 $LesDFDu($Frame,$Access)]
foreach DF $LesDFDu($Frame,$Access) {
lassign $DF D F
incr F 2
set DG [PositionsLocalesVersGlobales $SequenceDu($Access) $D]
set FG [PositionsLocalesVersGlobales $SequenceDu($Access) $F]
for {set i $DG} {$i<=$FG} {incr i} {
lappend LesPositionsMotifs($Frame,$Access) $i
}
}
foreach P $LesPositionsMotifs($Frame,$Access) {
set B [string index $SequenceDu($Access) $P]
if {$B!="-"} {
lappend LesPositionsSansTirets($Frame,$Access) $P
set InMotif($Frame,$Access,$P) 1
}
}
}
}
foreach Frame [list 0 1 2] {
foreach Access $LesAccess {
LConcat LesPositionsFrame($Frame) $LesPositionsSansTirets($Frame,$Access)
}
set LesPositionsFrame($Frame) [lsort -integer -increasing $LesPositionsFrame($Frame)]
}
set LongueurSequence [string length $SequenceDu($Access)]
for {set i 0} {$i<=$LongueurSequence} {incr i} {
foreach Access $LesAccess {
set Nt [string index $SequenceDu($Access) $i]
lappend Pilier($i) $Nt
foreach Frame [list 0 1 2] {
if {[info exists InMotif($Frame,$Access,$i)]} {
lappend PilierMotif($Frame,$i) $Nt
}
}
}
}
for {set i 0} {$i<$LongueurSequence} {incr i} {
lassign [SumOfPairsCL $Pilier($i)] SommeDesPairs NbLignes
#Espionne "Nb de Lignes $NbLignes"
set Diviseur [expr {($NbLignes*($NbLignes-1))/2}]
#Espionne "Diviseur $Diviseur"
if {$Diviseur==0} {
set RatioSommeNbLignes 0
foreach Frame [list 0 1 2] {
set NombreMotifs($Frame) 0
set SumOfMotifs($Frame) 0
set RatioX($Frame) 0
}
} else {
foreach Frame [list 0 1 2] {
if {0} {
set NombreMotifs($Frame) 0
set SumOfMotifs($Frame) 0
foreach Element $LesPositionsFrame($Frame) {
if {$i==$Element} {
incr NombreMotifs($Frame)
}
}
if {$NombreMotifs($Frame)>=2} {
for {set j 1} {$j<$NombreMotifs($Frame)} {incr j} {
incr SumOfMotifs($Frame) $j
}
}
} else {
if { ! [info exists PilierMotif($Frame,$i)]} {
set NombreMotifs($Frame) 0
set SumOfMotifs($Frame) 0
} else {
lassign [SumOfPairsCL $PilierMotif($Frame,$i)] SumOfMotifs($Frame) NombreMotifs($Frame)
}
set DiviseurFrame($Frame) [expr {($NombreMotifs($Frame)*($NombreMotifs($Frame)-1))/2}]
if {$DiviseurFrame($Frame)==0} {
set RatioX($Frame) 0
} else {
set RatioX($Frame) [expr {1.0*$SumOfMotifs($Frame)/$DiviseurFrame($Frame)}]
}
set RatioSommeNbLignes [expr {1.0*$SommeDesPairs/$Diviseur}]
}
}
}
set ListeSumPairs "[expr {$i+1}]\t$NombreMotifs(0)\t$SumOfMotifs(0)\t$RatioX(0)\t$NombreMotifs(1)\t$SumOfMotifs(1)\t$RatioX(1)\t$NombreMotifs(2)\t$SumOfMotifs(2)\t$RatioX(2)\t[expr {$NombreMotifs(0)+$NombreMotifs(1)+$NombreMotifs(2)}]\t$NbLignes\t$SommeDesPairs\t$RatioSommeNbLignes"
#Espionne $ListeSumPairs
lappend LesLignesDuFichier $ListeSumPairs
}
SauveLesLignes $LesLignesDuFichier dans "$RepSP/$Nom"
FinPasTouche $Nom
}
}
proc StatistiquesXMotifs {} {
foreach Nom [lrange [ListeDesPABs] 0 end] {
set F [GscopeFile $Nom SumOfPairsCorrect]
foreach Ligne [LesLignesDuFichier $F] {
lassign $Ligne Position NbMotifsFrame0 SumMotifsFrame0 RatioSumMotifsFrame0 NbMotifsFrame1 SumMotifsFrame1 RatioSumMotifsFrame1 NbMotifsFrame2 SumMotifsFrame2 RatioSumMotifsFrame2 NbTotalMotifs NbLignesParticipant SumPairs RatioSumPairs
lappend SumOfPairsTotal "$NbLignesParticipant $SumPairs $RatioSumPairs"
if {$NbMotifsFrame0>1} {
lappend SumOfPairsXMotifs0 "$RatioSumMotifsFrame0 $RatioSumPairs"
} elseif {$NbMotifsFrame1>1} {
lappend SumOfPairsXMotifs1 "$RatioSumMotifsFrame1 $RatioSumPairs"
} elseif {$NbMotifsFrame2>1} {
lappend SumOfPairsXMotifs2 "$RatioSumMotifsFrame2 $RatioSumPairs"
}
if {$NbMotifsFrame0>0} {
set RatioLignes0 [expr {(1.0*$NbMotifsFrame0/$NbLignesParticipant)}]
lappend LignesXMotifs0 "$NbMotifsFrame0 $NbLignesParticipant $RatioLignes0"
} elseif {$NbMotifsFrame1>0} {
set RatioLignes1 [expr {(1.0*$NbMotifsFrame1/$NbLignesParticipant)}]
lappend LignesXMotifs1 "$NbMotifsFrame1 $NbLignesParticipant $RatioLignes1"
} elseif {$NbMotifsFrame2>0} {
set RatioLignes2 [expr {(1.0*$NbMotifsFrame2/$NbLignesParticipant)}]
lappend LignesXMotifs2 "$NbMotifsFrame2 $NbLignesParticipant $RatioLignes2"
}
}
}
file mkdir "[RepertoireDuGenome]/FichesGraph"
SauveLesLignes $SumOfPairsXMotifs0 dans "[RepertoireDuGenome]/FichesGraph/SumOfPairs0"
SauveLesLignes $SumOfPairsXMotifs1 dans "[RepertoireDuGenome]/FichesGraph/SumOfPairs1"
SauveLesLignes $SumOfPairsXMotifs2 dans "[RepertoireDuGenome]/FichesGraph/SumOfPairs2"
SauveLesLignes $SumOfPairsTotal dans "[RepertoireDuGenome]/FichesGraph/SumOfPairs"
SauveLesLignes $LignesXMotifs0 dans "[RepertoireDuGenome]/FichesGraph/RatioLignesXMotifs0"
SauveLesLignes $LignesXMotifs1 dans "[RepertoireDuGenome]/FichesGraph/RatioLignesXMotifs1"
SauveLesLignes $LignesXMotifs2 dans "[RepertoireDuGenome]/FichesGraph/RatioLignesXMotifs2"
}
Index by: file name |
procedure name |
procedure call |
annotation
File generated 2022-04-05 at 12:55.