Hi,
I am relatively new to Julia and came across a strange problem using ForneyLab, but which be more general.
After typing
using ForneyLab
in the REPL of Atom, I confirm that
I have access to InferenceAlgorithm
, currentInferenceAlgorithm
, but NOT messagePassingAlgorithm
.
Given the line within the file algorithms/inference_algorithm.jl
conains the line
export InferenceAlgorithm, currentInferenceAlgorithm, messagePassingAlgorithm
I do not understand how this situation could occur. Any thoughts on the matter would be greatly appreciated. Thanks!
rdeits
March 19, 2021, 1:44pm
2
I just tried installing ForneyLab myself, and it seems to work fine:
julia> using ForneyLab
[ Info: Precompiling ForneyLab [9fc3f58a-c2cc-5bff-9419-6a294fefdca9]
julia> messagePassingAlgorithm
messagePassingAlgorithm (generic function with 5 methods)
Are you perhaps using an old version of the package?
1 Like
Thanks for checking. Yes, your assumption is logical. I am using version ForneyLab v0.11.0 based on the status
command in Pkg
. I installed it with Pkg.add("ForneyLab")
, so I assumed that I have the final version. My version of Julia is 1.5.3 .
Apparently, the latest version if v0.11.2, so it is not clear why the default installation did not install the latest version. With this latest version, the package manager installed and updated many packages that have nothing to do with ForneyLab (even taking the Project.toml contents into account). I refer to packages such as Ripserer.jl, which has to do with topology. The installation took the opportunity to update all my packages in some sense, which is “somewhat” bothersome.
Unfortunately, even with this latest update, the problem I reported subsists. ForneyLab.messagePassingAlgorithm
and MessagePassingAlgorithm
are not found. The other two methods are found. I cannot even hypothesize what the problem might be. Thanks.
rdeits
March 19, 2021, 2:14pm
4
I would suggest trying again in a clean package environment. You can do that by:
Create a new empty folder
cd
into that folder
Start julia, then do ]activate .
]add ForneyLab
Make sure you got the latest version
Try using ForneyLab
and make sure that function exists.
By activating a new package environment, you ensure that none of your other package installations will be modified or disrupted in any way.
2 Likes
I followed your very logical suggestion, thanks.
I did a ]add ForneyLab@0.11.2
, which is the latest version. The adding process was nearly instantaneous :-). However, my problem persists.
rdeits
March 19, 2021, 3:30pm
6
Can you copy and paste exactly what you ran in the REPL (starting from when you did ]activate .
) and what the output was?
1 Like
Here you go: (I did not clean the output).
julia> mkdir forneylab
ERROR: syntax: extra token "forneylab" after end of expression
julia> mkdir("forneylab")
"forneylab"
julia> cd("forneylab/")
(@v1.5) pkg> activate .
Activating new environment at `~/src/2020/ForneyLab.jl/demo/forneylab/Project.toml`
(forneylab) pkg> status
Status `~/src/2020/ForneyLab.jl/demo/forneylab/Project.toml` (empty project)
(forneylab) pkg> add forneylab@0.11.2
ERROR: The following package names could not be resolved:
* forneylab (not found in project, manifest or registry)
(forneylab) pkg> add ForneyLab@0.11.2
Resolving package versions...
Installed StaticArrays ─ v1.0.1
Updating `~/src/2020/ForneyLab.jl/demo/forneylab/Project.toml`
[9fc3f58a] + ForneyLab v0.11.2
Updating `~/src/2020/ForneyLab.jl/demo/forneylab/Manifest.toml`
[56f22d72] + Artifacts v1.3.0
[bbf7d656] + CommonSubexpressions v0.3.0
[34da2185] + Compat v3.25.0
[e66e0078] + CompilerSupportLibraries_jll v0.3.4+0
[9a962f9c] + DataAPI v1.6.0
[864edb3b] + DataStructures v0.18.9
[163ba53b] + DiffResults v1.0.3
[b552c78f] + DiffRules v1.0.2
[ffbed154] + DocStringExtensions v0.8.3
[e30172f5] + Documenter v0.25.5
[9fc3f58a] + ForneyLab v0.11.2
[f6369f11] + ForwardDiff v0.10.17
[b5f81e59] + IOCapture v0.1.1
[692b3bcd] + JLLWrappers v1.2.0
[682c06a0] + JSON v0.21.1
[1914dd2f] + MacroTools v0.5.6
[e1d29d7a] + Missings v0.4.5
[77ba4419] + NaNMath v0.3.5
[efe28fd5] + OpenSpecFun_jll v0.5.3+4
[bac558e1] + OrderedCollections v1.4.0
[69de0a69] + Parsers v1.0.16
[79098fc4] + Rmath v0.6.1
[f50d1b31] + Rmath_jll v0.2.2+2
[a2af1166] + SortingAlgorithms v0.3.1
[276daf66] + SpecialFunctions v0.10.3
[90137ffa] + StaticArrays v1.0.1
[2913bbd2] + StatsBase v0.33.4
[4c63d2b9] + StatsFuns v0.9.6
[2a0f44e3] + Base64
[ade2ca70] + Dates
[8bb1440f] + DelimitedFiles
[8ba89e20] + Distributed
[b77e0a4c] + InteractiveUtils
[76f85450] + LibGit2
[8f399da3] + Libdl
[37e2e46d] + LinearAlgebra
[56ddb016] + Logging
[d6f4376e] + Markdown
[a63ad114] + Mmap
[44cfe95a] + Pkg
[de0858da] + Printf
[3fa0cd96] + REPL
[9a3f8284] + Random
[ea8e919c] + SHA
[9e88b42a] + Serialization
[1a1011a3] + SharedArrays
[6462fe0b] + Sockets
[2f01184e] + SparseArrays
[10745b16] + Statistics
[8dfed614] + Test
[cf7118a7] + UUIDs
[4ec0a83e] + Unicode
(forneylab) pkg> ^C
julia> ForneyLab.
* VBGammaOut ruleSPAdditionIn1GNP
+ VBGaussianMeanPrecisionM ruleSPAdditionIn1PNG
- VBGaussianMeanPrecisionOut ruleSPAdditionIn1PNP
== VBGaussianMeanPrecisionW ruleSPAdditionIn1PNS
@RV VBGaussianMeanVarianceM ruleSPAdditionIn1SNP
@composite VBGaussianMeanVarianceOut ruleSPAdditionIn2GGN
@ensureVariables VBGaussianMixtureM ruleSPAdditionIn2GPN
@expectationPropagationRule VBGaussianMixtureOut ruleSPAdditionIn2PGN
@marginalRule VBGaussianMixtureW ruleSPAdditionIn2PPN
@naiveVariationalRule VBGaussianMixtureZBer ruleSPAdditionIn2PSN
@structuredVariationalRule VBGaussianMixtureZCat ruleSPAdditionIn2SPN
@sumProductRule VBGaussianWeightedMeanPrecisionOut ruleSPAdditionOutNGG
@symmetrical VBLogNormalOut ruleSPAdditionOutNGP
AbstractEdge VBLogitIn1 ruleSPAdditionOutNPG
AbstractVariable VBLogitOut ruleSPAdditionOutNPP
Addition VBLogitXi ruleSPAdditionOutNPS
ApproximationMethod VBPoissonL ruleSPAdditionOutNSP
Bernoulli VBPoissonOut ruleSPBernoulliIn1PN
Beta VBSoftmaxA ruleSPBernoulliOutNB
Categorical VBSoftmaxIn1 ruleSPBernoulliOutNP
Clamp VBSoftmaxOut ruleSPBetaOutNPP
Cluster VBSoftmaxXi ruleSPCategoricalOutNP
CompositeFactor VBTransitionA ruleSPDirichletOutNP
Contingency VBTransitionIn1 ruleSPDotProductIn1GNP
DeltaFactor VBTransitionOut ruleSPDotProductIn2GPN
DependencyGraph VBWishartOut ruleSPDotProductOutNGP
Dirichlet Variable ruleSPDotProductOutNPG
DotProduct VariateType ruleSPEqualityBernoulli
EPProbitIn1GB Wishart ruleSPEqualityBeta
EPProbitIn1GC ^ ruleSPEqualityCategorical
EPProbitIn1GP addEdge! ruleSPEqualityDirichlet
Edge addNode! ruleSPEqualityGammaWishart
Equality addVariable! ruleSPEqualityGaussian
ExpectationPropagationRule addVertex! ruleSPEqualityGaussianRGMP
Exponential algorithmSourceCode ruleSPEqualityPointMass
FactorFunction apprSum ruleSPEqualityRGMP
FactorGraph assembleBreaker! ruleSPExponentialIn1LN
FactorNode assembleClamp! ruleSPExponentialIn1PN
Gamma assembleCountingNumbers! ruleSPExponentialOutNG
Gaussian assembleFreeEnergy! ruleSPExponentialOutNP
GaussianMeanPrecision assembleInferenceAlgorithm! ruleSPGammaOutNPP
GaussianMeanVariance assembleInitialization! ruleSPGaussianMeanPrecisionMGNP
GaussianMixture assembleMarginalTable! ruleSPGaussianMeanPrecisionMPNP
GaussianWeightedMeanPrecision assemblePosteriorFactor! ruleSPGaussianMeanPrecisionOutNGP
InferenceAlgorithm assembleSchedule! ruleSPGaussianMeanPrecisionOutNPP
Interface associate! ruleSPGaussianMeanVarianceMGNP
LinkedList averageEnergy ruleSPGaussianMeanVarianceMGNS
LinkedListElement bootstrap ruleSPGaussianMeanVarianceMPNP
LogNormal breakerTypes ruleSPGaussianMeanVarianceMSNP
Logit check_id_available ruleSPGaussianMeanVarianceOutNGP
MAdditionNGG children ruleSPGaussianMeanVarianceOutNGS
MGaussianMeanPrecisionGGD cholinv ruleSPGaussianMeanVarianceOutNPP
MNonlinearSInGX collectAverageEnergyInbounds ruleSPGaussianMeanVarianceOutNSP
MNonlinearUTInGX collectEPSites ruleSPGaussianMeanVarianceVGGN
MTransitionCCD collectInboundTypes ruleSPGaussianMeanVarianceVPGN
MarginalEntry collectInbounds ruleSPGaussianWeightedMeanPrecisionOutNPP
MarginalRule collectMarginalNodeInbounds ruleSPLogNormalOutNPP
MarginalTable collectNaiveVariationalNodeInbounds ruleSPMultiplicationAGPN
MarginalUpdateRule collectStatistics ruleSPMultiplicationAPPN
MatrixVariate collectStructuredVariationalNodeInbounds ruleSPMultiplicationIn1GNP
Message collectSumProductNodeInbounds ruleSPMultiplicationIn1PNP
MessageUpdateRule concatenateGaussianMV ruleSPMultiplicationOutNGP
Multiplication condense ruleSPMultiplicationOutNPG
Multivariate conditionalDifferentialEntropy ruleSPMultiplicationOutNPP
NaiveVariationalRule connect! ruleSPNonlinearSIn1MN
Nonlinear constant ruleSPNonlinearSInGX
PointMass convert ruleSPNonlinearSOutNGX
Poisson countingNumberSourceCode ruleSPNonlinearSOutNM
PosteriorFactor cov ruleSPNonlinearUTIn1GG
PosteriorFactorization currentGraph ruleSPNonlinearUTInGX
ProbabilityDistribution currentInferenceAlgorithm ruleSPNonlinearUTOutNG
Probit currentPosteriorFactorization ruleSPNonlinearUTOutNGX
Product current_graph ruleSPPoissonLPN
Region current_inference_algorithm ruleSPPoissonOutNP
SPAdditionIn1GNG current_posterior_factorization ruleSPProbitOutNG
SPAdditionIn1GNP default_alpha ruleSPSampleListOutNPP
SPAdditionIn1PNG default_beta ruleSPTransitionIn1CNP
SPAdditionIn1PNP default_kappa ruleSPTransitionIn1PNP
SPAdditionIn1PNS default_n_samples ruleSPTransitionOutNCP
SPAdditionIn1SNP diageye ruleSPTransitionOutNPP
SPAdditionIn2GGN differentialEntropy ruleSPWishartOutNPP
SPAdditionIn2GPN dims ruleSVBGaussianMeanPrecisionMGVD
SPAdditionIn2PGN disconnect! ruleSVBGaussianMeanPrecisionOutVGD
SPAdditionIn2PPN dot ruleSVBGaussianMeanPrecisionW
SPAdditionIn2PSN dot2gif ruleSVBTransitionADV
SPAdditionIn2SPN dot2pdf ruleSVBTransitionIn1CVD
SPAdditionOutNGG dot2png ruleSVBTransitionOutVCD
SPAdditionOutNGP dot2svg ruleVBBernoulliIn1
SPAdditionOutNPG draw ruleVBBernoulliOut
SPAdditionOutNPP drawPdf ruleVBBetaOut
SPAdditionOutNPS drawPng ruleVBCategoricalIn1
SPAdditionOutNSP edgeDot ruleVBCategoricalOut
SPBernoulliIn1PN edges ruleVBDirichletOut
SPBernoulliOutNB energiesSourceCode ruleVBGammaOut
SPBernoulliOutNP ensureMatrix ruleVBGaussianMeanPrecisionM
SPBetaOutNPP entropiesSourceCode ruleVBGaussianMeanPrecisionOut
SPCategoricalOutNP equal ruleVBGaussianMeanPrecisionW
SPClamp eval ruleVBGaussianMeanVarianceM
SPDirichletOutNP exp ruleVBGaussianMeanVarianceOut
SPDotProductIn1GNP expectationPropagationAlgorithm ruleVBGaussianMixtureM
SPDotProductIn2GPN expectationPropagationSchedule ruleVBGaussianMixtureOut
SPDotProductOutNGP extend ruleVBGaussianMixtureW
SPDotProductOutNPG extract_variable_id ruleVBGaussianMixtureZBer
SPEqualityBernoulli eye ruleVBGaussianMixtureZCat
SPEqualityBeta family ruleVBGaussianWeightedMeanPrecisionOut
SPEqualityCategorical find_vertex_indexes ruleVBLogNormalOut
SPEqualityDirichlet flatten ruleVBLogitIn1
SPEqualityGammaWishart format ruleVBLogitOut
SPEqualityGaussian freeEnergySourceCode ruleVBLogitXi
SPEqualityGaussianRGMP gaussianQuadrature ruleVBPoissonL
SPEqualityPointMass genDot ruleVBPoissonOut
SPEqualityRGMP generateId ruleVBSoftmaxA
SPExponentialIn1LN gradientOptimization ruleVBSoftmaxIn1
SPExponentialIn1PN graphviz ruleVBSoftmaxOut
SPExponentialOutNG guard_variable_id ruleVBSoftmaxXi
SPExponentialOutNP handle ruleVBTransitionA
SPGammaOutNPP hasNode ruleVBTransitionIn1
SPGaussianMeanPrecisionMGNP hasVariable ruleVBTransitionOut
SPGaussianMeanPrecisionMPNP huge ruleVBWishartOut
SPGaussianMeanPrecisionOutNGP inboundSourceCode rv_form1
SPGaussianMeanPrecisionOutNPP inboundsSourceCode rv_form2
SPGaussianMeanVarianceMGNP include rv_form3
SPGaussianMeanVarianceMGNS increase! rv_isa_form1
SPGaussianMeanVarianceMPNP inferMarginalRule rv_isa_form2
SPGaussianMeanVarianceMSNP inferUpdateRule! rv_isa_form3
SPGaussianMeanVarianceOutNGP inferUpdateRules! sample
SPGaussianMeanVarianceOutNGS init sampleWeightsAndEntropy
SPGaussianMeanVarianceOutNPP initializationSourceCode scheduleSourceCode
SPGaussianMeanVarianceOutNSP interfaceToScheduleEntry setCurrentGraph
SPGaussianMeanVarianceVGGN internalSumProductSchedule setCurrentInferenceAlgorithm
SPGaussianMeanVarianceVPGN isApplicable setCurrentPosteriorFactorization
SPGaussianWeightedMeanPrecisionOutNPP isApproxEqual setTargets!
SPLogNormalOutNPP isProper sigmaPointsAndWeights
SPMultiplicationAGPN isRoundedPosDef slug
SPMultiplicationAPPN labsbeta smoothRTS
SPMultiplicationIn1GNP labsgamma smoothRTSMessage
SPMultiplicationIn1PNP laplace softmax
SPMultiplicationOutNGP leaftypes step!
SPMultiplicationOutNPG localInternalEdges sumProductAlgorithm
SPMultiplicationOutNPP localPosteriorFactorToRegion sumProductSchedule
SPNonlinearSIn1MN localPosteriorFactors summaryDependencyGraph
SPNonlinearSInGX localRegions summaryPropagationSchedule
SPNonlinearSOutNGX logJointPdfs swap_arguments
SPNonlinearSOutNM logLogisticSigmoid targetToMarginalEntry
SPNonlinearUTIn1GG logMomentMatching tiny
SPNonlinearUTInGX logPdf trigammaInverse
SPNonlinearUTOutNG logisticLambda ultimatePartner
SPNonlinearUTOutNGX logisticSigmoid unsafeBoundMean
SPPoissonLPN marginalTable unsafeCov
SPPoissonOutNP marginalTableSourceCode unsafeDetLogMean
SPProbitOutNG marginalizeGaussianMV unsafeInverseMean
SPSampleListOutNPP mat unsafeLogCov
SPTransitionIn1CNP matchPVInputs unsafeLogMean
SPTransitionIn1PNP matchPermutedCanonical unsafeLogVar
SPTransitionOutNCP matches unsafeMean
SPTransitionOutNPP mean unsafeMeanCov
SPWishartOutNPP mode unsafeMeanVector
SVBGaussianMeanPrecisionMGVD momentMatching unsafeMirroredLogMean
SVBGaussianMeanPrecisionOutVGD name unsafeMode
SVBGaussianMeanPrecisionW neighbors unsafePrecision
SVBTransitionADV nodes unsafeVar
SVBTransitionIn1CVD nodesConnectedToExternalEdges unsafeWeightedMean
SVBTransitionOutVCD nonClampedEdges unsafeWeightedMeanPrecision
SampleList optimizeSourceCode unscentedStatistics
Sampling outboundType vague
Schedule pack vagueSourceCode
ScheduleEntry placeholder validateGraphVizInstalled
SoftFactor posteriorFactor valueSourceCode
Softmax posteriorFactorSourceCode var
StructuredVariationalRule prod! variateType
SumProductRule region variationalAlgorithm
Terminal removePrefix variationalExpectationPropagationAlgorithm
Transition ruleEPProbitIn1GB variationalExpectationPropagationSchedule
Univariate ruleEPProbitIn1GC variationalSchedule
Unscented ruleEPProbitIn1GP viewDotExternal
VBBernoulliIn1 ruleMAdditionNGG viewDotExternalImage
VBBernoulliOut ruleMGaussianMeanPrecisionGGD viewDotExternalInteractive
VBBetaOut ruleMNonlinearSInGX viewDotIniTerm
VBCategoricalIn1 ruleMNonlinearUTInGX viewFile
VBCategoricalOut ruleMTransitionCCD Φ
VBDirichletOut ruleSPAdditionIn1GNG
julia> pwd()
"/Users/erlebach/src/2020/ForneyLab.jl/demo/forneylab"
rdeits
March 19, 2021, 5:00pm
8
Ah, ok. You didn’t do using ForneyLab
in the output you posted above, and yet somehow ForneyLab
is still available in your REPL. That means that you must have previously done using ForneyLab
and you haven’t restarted Julia since then. So you’re still using whatever older version of the package was installed. Basically, doing using ForneyLab
again won’t re-load the package even if you have installed a new version, until you start a new Julia session.
You just need to restart Julia, ]activate .
and using ForneyLab
again.
4 Likes
Done. It works now. Thank you so much! Sorry for this lapse.
Still, I cannot imagine what kind of interaction would have led to the specific error I had. I know that it is recommended to work with the minimum number of packages required to avoid this type of problem, so it is my fault. Nonetheless, error was unexpected. Thanks again!