charles-river-analytics / figaro Goto Github PK
View Code? Open in Web Editor NEWFigaro Programming Language and Core Libraries
License: Other
Figaro Programming Language and Core Libraries
License: Other
We should add a function to element collections that allows one to check if a reference is resolvable on that collection.
Look at lazy vals in language and library elements
Fix unreachable code warnings in the Blind Monopoly demonstration applicaiton
Apply, CPD, Chain, RichCPD allow more than 5 arguments with appropriate constructors
Look into Decision Policy usage interface
Publish a reference to project's coding style guide in the project WIKI
Apply, CPD, Chain, RichCPD allow more than 5 arguments with appropriate constructors
Self-generation of elements results in virtual methods being called during initialization, potentially resulting in null pointer exceptions. The current solution is to use lazy vals for fields that are required during generation, but this is risky and far from ideal.
Look into possible division by zero errors with zero constraints
See if manage to observe observations without side affects
Investigate and minimize the repetition of RangeToElement in Decision.scala
Don't have element generate initial value and remove related lazy vals
The current implementation of Values does not terminate in some situations where it could, such as BLOG's Hurricane example. A fixpoint-based implementation would be better.
GitHub doesn't provide a good means for uploading files for later download (except by using Git). Find a new home for our Figaro binary distributions and link via ReadMe.MD (and other places as needed).
Currently, on each iteration of importance sampling, the algorithm grabs all non-temporary elements and resamples the elements. This does not resample temporary elements inside a chain. In most cases, this is not a problem since the result element of a chain will be resampled, and usually temporary elements in a chain are used by the result of the chain (an hence will be resampled). However, if there are conditions and constraints on temporary elements in the model (from a reference), then this problem will prevent the evidence from being applied, leading to an inaccurate result.
Figure out attributes of a general parameter learning algorithm including one time and any time versions
Make number of parameters explicit in Expectation Maximization and related classes
Refactor index code to improve efficiency
Mention in the tutorial how to get reproducable results
Look into making factors for IntSelector
Create general class of sufficient statistics algorithm and move doStart(), etc. to higher level trait
Promote getLearnedElement from BetaParmeter to Parameter
Need to update the figaro.cra.com email distribution following the OSS release of Figaro. Current distribution includes Avi and Lisa C. Lisa can be removed but who else should be added?
Remove parent universe from universe
Define & publish project comment convention
a) /** / for Scaladoc,
b) / */ for general or semantic descriptions,
c) // for implementation details
Define & publish project comment convention
Consider making MultiValuedReferenceElement a public class
Look into implementation of Dist as Chain
The implemtations of different algorithm categories are inconsistent. For example, MPE algorithms do not provide separate methods for doing the work of producing the most likely value and actually returning the result. So, the anytime MPE doesn't use the standard message handling protocol for mostLikelyValue that other algorithms use. There are various other inconsistencies in different categories. It would be good to standardize the implementations.
Examine whether arrays would be a useful data structure in Figaro or whether we can use Scala arrays. Arrays indexed by continuous variables would be an interesting feature.
Add tests and error checking for parameter value ranges and types
When an element collection attempts to resolve a reference, it attempts to resolve the reference on all possible elements that could be referred to. In some cases, where the reference only exists in a subset of possible resolutions, we need to apply any evidence to only the resolutions where the reference exists. However, when an element collection attempts to resolve the reference, it cancels the application of any evidence on the first element that it fails to resolve the reference, even though on other elements it will be able to resolve it. This is incorrect. It should check through all possible resolutions of a reference before deciding that it cannot apply any evidence to a reference.
Promote getLearnedElement from DirichletParameter to Parameter
Style sheet for supported IDE(s) should include project settings, required file header, and required license.
Using lazy val to delay generation of elements can lead to nasty surprises when those elements have not been generated at the time of inference. A Lazy element collection would be a better solution. It would delay generating its elements until the time of inference, at which point it would force all its elements.
Apply, CPD, Chain, RichCPD allow more than 5 arguments with appropriate constructors
Look into access control for Alpha, Beta, concentration parameters for DirichletParameters
If declaration of an element is declared lazily, then the creation of an element could occur inside a chain, possibly erroneously marking the element as temporary. This needs to be documented.
Can IntElement be made to use + rather than ++
See if the System.gc() can be safely removed in ParticleFilter
Apply, CPD, Chain, RichCPD allow more than 5 arguments with appropriate constructors
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.