Index by: file name | procedure name | procedure call | annotation
gscope_balibase.tcl (annotations | original source)

#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 "<MSA>" $NouveauXml "<macsim>" NouveauXml
    regsub "</MSA>" $NouveauXml "</macsim>" 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"]
}





Index by: file name | procedure name | procedure call | annotation
File generated 2022-04-05 at 12:55.