[FeatureSet fs] setDesc   @../step2/featDesc
            fs  setAccess @../step2/featAccess

[CodebookSet cbs fs]                read ../step2/codebookSet
[DistribSet  dss cbs]               read ../step2/distribSet
[PhonesSet ps]                      read ../step2/phonesSet
[Tags tags]                         read ../step2/tags
[Tree dst ps:phones ps tags dss]    read ../step2/distribTree

SenoneSet sns [DistribStream str dss dst]

[TmSet tms]                         read ../step2/transitionModels
[TopoSet tps sns tms]               read ../step2/topologies
[Tree tpt ps:phones ps tags tps]    read ../step2/topologyTree

cbs load ../step3/codebookWeights

[DBase db] open ../step1/db.dat ../step1/db.idx -mode r
[Dictionary dict ps:phones tags] read ../step1/convertedDict
AModelSet amo tpt ROOT
HMM hmm dict amo
Path path

LDA lda fs MSC 16
foreach ds [dss:] { lda add $ds ; lda map [dss index $ds] -class $ds }

foreach utt [db] {

  puts $utt
  set uttInfo [db get $utt]
  makeArray arr $uttInfo
  fs eval $uttInfo
  hmm make $arr(text) -optWord SIL
  path bload ../step4/labels/$utt 
  path map hmm -senoneSet sns -stream 0
  lda accu path
}

lda update

DMatrix A
DMatrix K
A simdiag K lda.matrixT lda.matrixW
[FMatrix B] DMatrix A

B bsave ldaMatrix

set fp [open ldaCounts w]
foreach cl [lda:] { puts $fp "{ $cl [lda:$cl.mean configure -count] }" }
close $fp

set newFeatureDescription {
  $fes readADC ADC $arg(adc) -bm shorten -hm 1024 -offset mean -v 0
  $fes adc2mel MSC ADC 16ms            
  $fes meansub MSC MSC -a 2
  $fes matmul  LDA MSC ldaMatrix -cut 12
}

set fp [open featDesc w] ; puts $fp $newFeatureDescription ; close $fp

exit