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

proc Lego {FiPdb FiMod FiFa {FragSize ""} {FragNumber ""} {StackSize ""}} {
    if {$FragSize  ==""} { set FragSize 5 }
    if {$FragNumber==""} { set FragNumber 20 }
    if {$StackSize !=""} { set Options "-g $StackSize" }
    exec /home/koehl/program/lego/Lego -i $FiPdb -o $FiMod  -f $FiFa -s $FragSize -n $FragNumber $Options
    return $FiMod
}

proc FichierModAssocie {NomSeq3d FiMsf3d} {
    set Rep [file dirname $FiMsf3d]
    set FichierMod "$Rep/$NomSeq3d/${NomSeq3d}_20.mod"
    if {[file exists $FichierMod]} { return $FichierMod }

    Wup "the Lego mod file doesn't exist. We'll create it"
    set RepForSeq "$Rep/$NomSeq3d"
    set FiPdb "$RepForSeq/${NomSeq3d}.pdb"    
    set FiMod "$RepForSeq/${NomSeq3d}_20.mod"    
    set FiFa  "$RepForSeq/${NomSeq3d}.fa"    
    Lego FiPdb FiMod FiFa
    if {[file exists $FiMod]} { return $FiMod }

    FaireLire "I can't create the .mod file for \n$NomSeq3d $FiMsf3d"
    return ""
}

proc MsfAAFromMsf3d {FiMsf3d FiMsfAA} {
    set NombreDeSequences [DecortiqueUnMSF $MSF3d LesSeq3d TabSeq3d]
    set LeTfasAA {}
    foreach NomSeq3d $LesSeq3d {
	set FiMod [FichierModAssocie $NomSeq3d $FiMsf3d]
	if {$FiMod==""} { continue }
	ScanLaListe [Seq3dAndA5From $FiMod] Seq3d LesA5
	set GappedSeq3d [set TabSeq3d($NomSeq3d)]
	set GappedSeqAA [GappedSeqAAFromGappedSeq3d $GappedSeq3d $LesA5 $Seq3d]
	regsub -all -nocase {[^a-z]} $GappedSeqAA "-" GappedSeqAA 
	lappend LeTfasAA [SequenceFormatTFA $GappedSeqAA $NomSeq3d "protbrut"]
    }
    return [CreeLeMSFDuTFAs [join $LeTfasAA "\n"] $FiMsfAA]
}

proc TestLego {} {
    ScanLaListe [Seq3dAndA5From 1oxa_20.mod] Seq3d LesA5
    Espionne "$Seq3d \n$LesA5"
    set GappedSeq3d [Entre $Seq3d]
    set GappedSeqAA [GappedSeqAAFromGappedSeq3d $GappedSeq3d $LesA5 $Seq3d]
    Espionne $GappedSeq3d
    Espionne $GappedSeqAA
    exit
}

proc GappedSeqAAFromGappedSeq3d {GappedSeq3d FichierOuListeA5 {Seq3d ""}} {
    if {[llength $FichierOuListeA5]==1} {
	ScanLaListe [Seq3dAndA5From $Fichier$FichierOuListeA5] Seq3d LesA5
    } else {
	set LesA5 $FichierOuListeA5
    }
    set i 0
    set GappedSeqAA ""
    foreach G [split $GappedSeq3d ""] {
	if {[regexp -nocase {[a-z]} $G]} {
	    set A5 [lindex $LesA5 $i]
	    set AA [string range $A5 0 1]
	    if {$Seq3d!=""} {
		set D  [string index $Seq3d $i]
		if { ! [string equal -nocase $G $D]} {
		    FaireLire "Problem in GappedSeqAAFromGappedSeq3d\n $G should be $D"
		}
	    }
	    incr i
	} else {
	    set AA "$G$G"
	}
	append GappedSeqAA $AA
    }
    return $GappedSeqAA
}

proc Seq3dAndA5From Fichier {

    set Alphabet3d "?ARNDCQEGHILKMFPSTWYV"

    set LesAAs {}
    set LesRangs    {}
    foreach Ligne [LesLignesDuFichier $Fichier] {
	if {[regexp "^SEQRES " $Ligne]} {
	    regsub "SEQRES " $Ligne "" Texte
	    LConcat LesAAs [LesMotsDeLaLigne $Texte]
	}
	if {[regexp "^SEQWRD " $Ligne]} {
	    regsub "SEQWRD " $Ligne "" Texte
	    LConcat LesRangs [LesMotsDeLaLigne $Texte]
	}
    }
    set SeqAA ""
    foreach AA $LesAAs {
	if {[string length $AA]==3} { set AA [UT $AA] }
	append SeqAA $AA
    }
    set Seq3d ""
    foreach R $LesRangs {
	if {[regexp {^[0-9]+$} $R]} { set R [string index $Alphabet3d $R] }
	append Seq3d $R
    }
    set iAA 0
    foreach D [split $Seq3d ""] {
	set A5 [string range $SeqAA $iAA [expr $iAA+4]]
	incr iAA 2
	lappend LesA5 $A5
    }
    return [list $Seq3d $LesA5] 
    exit
}
 







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