Exported function not available

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!

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.

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.

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"

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!