#rR gscope_balibase.tcl #rR 26/10/2015 j'ai refait le projet gscope Balibase avec les fichiers RV... de Julie #rR ... avant on partait d'un workbench ... ? #rR Pour partir des RV : #rR supprimer tous les prottfa msf etc. #¶R CreeBalibaseBornesDesPABsAvecRV #¶R CreeLesLiensDansBalibase #rR Est-ce un problblème : il manque les définitions :'( proc CreeBalibaseBornesDesPABsAvecRV {} { set BBDir "/genomics/link/Balibase" foreach F [lsort [glob "$BBDir/RV*/*.tfa"]] { set Queue [file tail $F] regsub {\..+$} $Queue "" Nom Espionne $Nom lappend LesBB $Nom } set Fin 299 foreach Nom $LesBB { set Debut [expr $Fin + 299] set Fin [expr $Debut + 1802] set Orient "F" lappend LesBornesDesPABs "$Nom $Debut $Fin $Orient" } return [SauveLesLignes $LesBornesDesPABs dans "$BBDir/fiches/bornesdespabs"] } proc CreeLesLiensDansBalibase {} { set RepEx(msf) "msf" set RepEx(tfa) "tfas" set RepEx(rsf) "macsimRsf" set RepEx(xml) "macsimXml" foreach Nom [ListeDesPABs] { set RV "RV[RVof $Nom]" foreach Ext [array names RepEx] { set Rep $RepEx($Ext) set FicR "[RepertoireDuGenome]/$RV/$Nom.$Ext" set FicB "[RepertoireDuGenome]/$Rep/$Nom" if {[FileAbsent $FicR]} { continue } Espionne "$FicR" exec ln -sf $FicR $FicB } } } proc RangeBalibase {} { foreach Nom [ListeDesPABs] { set RV "RV[RVof $Nom]" set FicTfa "[RepertoireDuGenome]/tfas/$Nom" set NewTfa "[RepertoireDuGenome]/$RV/$Nom.tfa" set FicMsf "[RepertoireDuGenome]/msf/$Nom" set NewMsf "[RepertoireDuGenome]/$RV/$Nom.msf" file rename $FicTfa $NewTfa file rename $FicMsf $NewMsf exec ln -s $NewTfa $FicTfa exec ln -s $NewMsf $FicMsf Espionne [exec ls -l $NewMsf] Espionne [exec ls -l $FicMsf] } } proc JulieDefinitionPourTous {} { set LesDEJ [LesLignesDuFichier "[GscopeDir]/julies-definitions.txt"] set LesBeauxDEJ {} foreach DEJ $LesDEJ { regsub -all "\t" $DEJ " " DEJ while {[regexp " " $$DEJ]} { regsub -all " " $DEJ " " DEJ } lappend LesBeauxDEJ $DEJ } foreach DEJ $LesBeauxDEJ { scan $DEJ "%s" A set DEJdeA "" regsub "$A " $DEJ "" DEJdeA lappend LesDEJde($A) $DEJdeA } foreach Nom [ListeDesPABs] { set DEJ [ExtraitInfo $Nom "DEJ:"] if {$DEJ!=""} { continue } set Alias [Alias $Nom] set AliasCourt $Alias regsub "_.*" $Alias "" AliasCourt if {[info exists LesDEJde($AliasCourt)]} { set LesPossibles [lsort -unique $LesDEJde($AliasCourt)] set FenSeeAby "Bidon" if {[llength $LesPossibles]>1} { set FenSeeAby [SeeAby Show $Nom] } set DEJok [ChoixParmi $LesPossibles] set RV [ExtraitInfo $Nom "RV:"] ScanLaListe [split $RV ""] R V set RefVar "Ref$R" if {$V!=0} { set RefVar "$RefVar V$V" } set Info [Informe $Nom "DEJ: $RefVar $DEJok"] if {[winfo exists $FenSeeAby]} { after 1000 destroy $FenSeeAby } if {$Info!=""} { continue } if {[OuiOuNon "Do we stop ."]} { break } } set Retour [JulieDefinition $Nom $LesBeauxDEJ] if {$Retour==-1} { break } } } proc JulieDefinition {Nom LesDEJ} { set Fen [SeeAby Show $Nom] set DEJ [ChoixParmiJoli $LesDEJ] if {$DEJ==""} { if {[OuiOuNon "Do we stop ?"]} { return -1 } } set Info [Informe $Nom "DEJ: $DEJ"] after 1000 destroy $Fen return $Info } proc XmlValidePourTous {} { foreach Nom [ListeDesPABs] { set Fichier "[RepertoireDuGenome]/macsimXml/$Nom" if { ! [file exists $Fichier]} { continue } set Retour "nothing" if {[catch {set Retour [exec xmlvalid $Fichier]} Message]} { FaireLire "During the command 'xmlvalid $Fichier'\n\ I got the error message $Message\n\ and $Retour as output" continue } if {$Retour!=""} { FaireLire "During the command 'xmlvalid $Fichier'\n\ I got the output\n\'$Retour" continue } Espionne "Ok for xmlvalid $Fichier" } } proc RewriteXmlToXmlPourTous {RepSource {RepDestin ""} {Doctype ""}} { if { ! [regexp "/" $RepSource]} { set RepSource "[RepertoireDuGenome]/$RepSource" } if {$RepDestin==""} { set RepDestin $RepSource } if { ! [regexp "/" $RepDestin]} { set RepDestin "[RepertoireDuGenome]/$RepDestin" } foreach Nom [ListeDesPABs] { set FichierSource "$RepSource/$Nom" set FichierDestin "$RepDestin/$Nom" if { ! [file exists $FichierSource]} { continue } Espionne [RewriteXmlToXml $FichierSource $FichierDestin $Doctype] } } proc TestRewriteXmlToXml {FichierSource {FichierDestin ""} {Doctype ""}} { package require tdom if {$Doctype==""} { set Doctype [DoctypeForMacsim] } if {$Doctype=="NoDoctype"} { set Doctype "" } if {$FichierDestin==""} { set FichierDestin $FichierSource } set AncienXML [ContenuDuFichier $FichierSource] set Doc [dom parse $AncienXML] set Root [$Doc documentElement] foreach Noeud [$Root selectNodes "//subgroup"] { set Valeur [$Noeud selectNodes "string(.)"] set Papa [$Noeud parentNode] set Nouveau [$Doc createElement "group"] $Nouveau appendChild [$Doc createTextNode $Valeur] $Papa replaceChild $Nouveau $Noeud } foreach Noeud [$Root selectNodes "//column-score"] { set Nouveau [$Doc createElement "colsco-type"] $Nouveau appendChild [$Doc createTextNode "int"] set Suivant [$Noeud selectNodes "colsco-data"] Espionne $Suivant $Noeud insertBefore $Nouveau $Suivant } set NouveauXml $Doctype append NouveauXml [$Root asXML -indent 1] regsub "" $NouveauXml "" NouveauXml regsub "" $NouveauXml "" NouveauXml if {$FichierDestin=="GetIt"} { return $NouveauXml } return [Sauve $NouveauXml dans $FichierDestin] } proc RewriteXmlToXml {FichierSource {FichierDestin ""} {Doctype ""}} { package require tdom if {$Doctype==""} { set Doctype [DoctypeForMacsim] } if {$Doctype=="NoDoctype"} { set Doctype "" } if {$FichierDestin==""} { set FichierDestin $FichierSource } set AncienXML [ContenuDuFichier $FichierSource] set Doc [dom parse $AncienXML] set Root [$Doc documentElement] set NouveauXml $Doctype append NouveauXml [$Root asXML -indent 1] if {$FichierDestin=="GetIt"} { return $NouveauXml } return [Sauve $NouveauXml dans $FichierDestin] } proc BaList {{RV ""}} { if {$RV==""} { return [ListeDesPABs] } set BaList {} foreach Nom [ListeDesPABs] { if {[RVof $Nom]==$RV} { lappend BaList $Nom } } return $BaList } proc RepertoireBalibase {} { global RepertoireBalibase set RepertoireBalibase "/genomics/link/Balibase" return $RepertoireBalibase } proc RVof Nom { regsub -all {[^0-9]} $Nom "" Numero set RV [string range $Numero 0 1] return $RV } proc BalibaseFile {Nom {Type ""}} { if {$Type==""} { set Type "xml" } set RepRV "[RepertoireBalibase]/RV[RVof $Nom]" if {$Type=="rsf"} { return "$RepRV/$Nom.rsf" } if {$Type=="xml"} { return "$RepRV/$Nom.xml" } if {$Type=="tfa"} { return "$RepRV/$Nom.tfa" } return "[RepertoireBalibase]/$Type/$Nom" } proc RameneBalibase {} { set BalibaseWB "/workbench/julie/bb/bb3" if { ! [OuiOuNon "Really, you want to reload Balibase with $BalibaseWB ?" 0]} { return {} } set Fin 299 foreach Rep [list "ref1/v1" "ref1/v2" "ref2/test" "ref3/test" "ref4/test" "ref5/test"] { regsub -all {[^0-9]} $Rep " " RV set V 0 scan $RV "%d %d" R V set Numero "$R${V}000" foreach F [lsort [glob -nocomplain "$BalibaseWB/$Rep/*.rsf"]] { incr Numero set Nom "BB$Numero" set Debut [expr $Fin + 299] set Fin [expr $Debut + 1802] set Orient "F" lappend LesBornesDesPABs "$Nom $Debut $Fin $Orient" Espionne "$Nom $F" set BBfile [file tail $F] regsub ".rsf$" $BBfile "" BBname set Alias $BBname set LeTexte {} lappend LeTexte "Nom: $Nom" lappend LeTexte "Alias: $Alias" lappend LeTexte "RV: $R$V" set FichierInfos [BalibaseFile $Nom "infos"] SauveLesLignes $LeTexte dans $FichierInfos set FichierRsf [BalibaseFile $Nom "rsf"] Sauve [ContenuDuFichier $F] dans $FichierRsf set FichierXml [BalibaseFile $Nom "xml"] regsub ".rsf$" $F ".xml" Fxml if {[file exists $Fxml]} { Sauve [ContenuDuFichier $Fxml] dans $FichierXml } } } return [SauveLesLignes $LesBornesDesPABs dans "[RepertoireBalibase]/fiches/bornesdespabs"] }