Hierarchical Temporal Memory implementation in Java - an official Community-Driven Java port of the Numenta Platform for Intelligent Computing (NuPIC).

Overview

NuPIC Logo

htm.java


htm.java awesomeness AGI Probability Coolness Factor Build Status Coverage Status Maven Central docs-badge Gitter OpenHub


Official Java™ version of...

Hierarchical Temporal Memory (HTM)

Community-supported & ported from the Numenta Platform for Intelligent Computing (NuPIC) python project.

NOTE: Minimum JavaSE version is 8



For Demos & Examples: see the HTM.java-examples repository



Recent News Items...

News Archives...

  • See a glimpse of htm.java's history and read about significant events in its development.

View the Change Log (Updated! 2017-04-05)

  • Change log itemizes the release history.
  • Contains an "Unreleased" section which lists changes coming in the next release as they're being worked on - (should help users keep in touch with the current evolution of htm.java)

For a more detailed discussion of htm.java see:

See the Test Coverage Reports - For more information on where you can contribute! Extend the tests and get your name in bright lights!

For answers to more detailed questions, post to the HTM Forum (can be used via email too), or chat with us on Gitter.

Gitter

For more detailed discussions regarding HTM.java specifically, come chat with us here:

Gitter

See the blog: Join the Cogmission

Call to Arms: HTM.java needs you!


Versioning

(Tracked according to core algorithms)

Core Algorithm NuPIC Date HTM.Java Date Latest NuPIC SHA Latest HTM.Java SHA Status
SpatialPooler 2016-12-11 2016-10-07 commit commit *Behind NuPIC Merge #3411
TemporalMemory 2017-06-02 2016-10-13 commit commit *Behind NuPIC Merge #3654

* May be one of: "Sync'd" or "Behind". "Behind" expresses a temporary lapse in synchronization while devs are implementing new changes.

NOTE: "Behind" status does not imply any lack of operational ability. The master branch of HTM.Java will always be fully operational.
Any fully critical feature addition to NuPIC will always be matched (sync'd) ASAP, however due to ongoing updates, the algortithms within NuPIC may reach ahead for a short period of time while the HTM Community is busy porting the difference(s). We are committed to keeping HTM.Java up to date with NuPIC at all times.


Project Goals

The primary goal of this library development is to provide a Java version of NuPIC that has a 1-to-1 correspondence to all systems, functionality and tests provided by Numenta's open source implementation; while observing the tenets, standards and conventions of Java language best practices and development.

By working closely with Numenta and receiving their enthusiastic support and guidance, it is intended that this library be maintained as a viable Java language alternative to Numenta's C++ and Python offerings. However it must be understood that "official" support is (for the time being) currently limited to community resources such as the maintainers of this library and Numenta Forums / Message Lists and IRC:


How Do I Get The Code?

  • (A) Instructions for developers who would like to contribute code back to the community. (Fork)
  • (B) Instructions for those who would like to "fiddle around" with the code in thier own github repo. (Clone)
  • (C) How to download Zipped or Tar'd Tagged Releases (Download Zip or Tar)

A. Developers who wish to make contributions are required to Fork the htm.java repo and then clone from their personal "Fork" of htm.java...

your_git_directory% git clone https://github.com/<your_github_username>/htm.java.git

B. Anybody who just wants to "play" with the code...

your_git_directory% git clone https://github.com/numenta/htm.java.git

C. Proceed here to download the latest tagged release (or older if you like)

The instructions on the above link (Fork the htm.java repo) provide detail about how to fork github repos...

In addition: a video is provided that explains Numenta's contributor rules and plenty of helpful tips on using git and other commands.


Does My Code Work?

After download by clone or fork, execute a quick sanity check by running all the tests from within the /<path to git repo>/htm.java

gradle check  # Executes the tests and runs the benchmarks

--or--

gradle -Pskipbench check  # Executes the tests w/o running the benchmarks  (Faster! **Recommended**)

Note: Info on installing gradle can be found on the wiki (look at #3.) here

Linux Gradle Issues? see the wiki here.

A wiki with full build instructions for building HTM.java is available here: Build Instructions


For Developers: Usage & Project Integration

(use this stuff within my own stuff)

NOTE: The Java version of NuPIC requires no installation - just USE it!

  • I Just Want A Simple Build!
  • Using Build Managers

Simple Build: For convenience, the libs directory contains all the dependency jars for those who just want to have a simple build.

...

Build Managers: Binary distributions may be included in your project using Gradle or Maven

Gradle:  

dependencies {
    compile group: 'org.numenta', name: 'htm.java', version:'0.6.12'
}
Maven:  

<dependency>
    <groupId>org.numenta</groupId>
    <artifactId>htm.java</artifactId>
    <version>0.6.12</version>
</dependency>
How to get the latest SNAPSHOT build: (None yet for newest build...)

<dependency>
    <groupId>org.numenta</groupId>
    <artifactId>htm.java</artifactId>
    <version>0.6.13-SNAPSHOT</version>
</dependency>

You also may need to include a repositories entry:

<repository>
    <id>oss-sonatype</id>
    <name>oss-sonatype</name>
    <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
    <snapshots>
        <enabled>true</enabled>
    </snapshots>
</repository>

Coding With htm.java

The easiest way to use the code is to use htm.java's Network API

Please refer to the Network API Quick Start Guide to get an idea of how to quickly and simply create your own network.

...and for more in-depth answers see:

NAPI Overview


Development Environment Installation

The following instructions are for setting up a development environment.

NOTE: For simple intructions see: INSTALL.txt

Eclipse Environment Setup Wiki

An Eclipse IDE .project and .classpath file are provided so that the cloned project can be easily set up inside of Eclipse. For the time being, the Eclipse IDE is the only "pre-made" project configuration.

In addition, there are "launch configurations" for all of the tests and any runnable entities off of the "htm.java" main directory. These may be run directly in Eclipse by right-clicking them and choosing "run".


The "Fancy Stuff" - Clustering and Parallelization

Some NuPIC Community members have created interesting projects which use htm.java's Network API to run Engine-Type clusters of multiple networks using streaming distributed libraries like Akka and Flink. See them here:


To Follow Our Updates On Twitter

Comments
  • DateEncoder and test

    DateEncoder and test

    This is the PR of the work on and fixes #87 . It's ready to merge now.

    During the implementation, I've noticed the new changes of Encoder and made use of:

    • the builder pattern
    • the elegant generic solution of the input type problem we'd discussed in #87

    The DateEncoder involves multiple ScalarEncoders , so I adapted some codes from MultiEncoder. In the meanwhile, LogEncoder and CoordinateEncoder were also helpful references.

    Current progress(UPDATED):

    • [x] The majority of the implementation in Python is ported
    • [x] All tests were ported and passed
    • [x] Fixes Issue Validator — This PR must be linked to an issue.
    • [x] some abnormal branches are not ported yet, trying to figure out the corresponding logic in Java
    • [x] deal with doubts marked as TODO
    • [x] code clean up and style conformance

    The following would be handled as separate issues(marked as TODO in code, search the diff for more info):

    • [ ] Improve the document of DateEncoder for both Python and Java version
    • [ ] Because most of the ScalarEncoder fields have less than 21 bits(recommended in ScalarEncoder.checkReasonableSettings), so for now we set forced of DateEncoder to be true to override
    • [ ] Encoder.getEncoderTuple() can return null, but logic in Encoder.addEncoder() expects at least one empty ArrayList, so we need to prepare an initial EncoderTuple
    • [ ] The logic of holidayEncoder when the date is before holiday is not the same as when after, why? And why no break?
    • [ ] For the datetime encoder, the scalar value is not the number of seconds since epoch.
    • [ ] Current implementation of DateEncoder throws at invalid Date, but testMissingValues in Python expects it to encode it as all-zero bits
    • [ ] Why can getBucketValues return null for some encoders, e.g. MultiEncoder
    opened by utensil 25
  • htm.java needs a DateEncoder

    htm.java needs a DateEncoder

    This class and test should be created to follow the same idioms and structure as the Encoder.java and ScalarEncoder.java class. The CategoryEncoder, can be used as an example.

    encoder in progress development P3 
    opened by cogmission 22
  • Fix Maven build to use JARs from public repositories

    Fix Maven build to use JARs from public repositories

    I'm not sure what someone was trying to do with the Maven build file, but it was uncompilable on JDK 8 for me. This patch has it using the same JARs the gradle build uses.

    If you do want to use copies of JARs committed into version control for some reason, there is a much more straightforward way than <systemPath>: Check them in in the same structure you'd find them in underneath ~/.m2/repository, then have a <repository> entry whose url is, e.g. file:///../fakeRepo. Maven will play much more nicely with that.

    opened by timboudreau 20
  • From NuPIC: Can inhibitColumnsGlobal() execute without sort() ? #354 (#365)

    From NuPIC: Can inhibitColumnsGlobal() execute without sort() ? #354 (#365)

    Fixes #354

    Here I am using streams. This is not a replacement for nupic python argpartition function. I have measured the performance gain with this change. It gives atleast 4000% performance gain. Please review

    opened by smadasu 19
  • Issue with QuickTest and CLAClassifier

    Issue with QuickTest and CLAClassifier

    Runnning the QuickTest demo one notices that there is no prediction from Sunday to Monday. This is caused by the reset of the memory object whenever the input is Sunday, of course. I assume this measure is taken because the CLAClassifier incorrectly classifies the otherwise correct Sunday to Monday prediction. The reason for the misclassification is that nothing ever gets stored at bucketIdx = 0. A fix for the misclassification would be this: In CLAClassifier.java:307 change if(iteration == learnIteration - nSteps) to if(iteration == learnIteration - nSteps || learnIteration - nSteps == -1). With this fix one could remove the periodic memory reset in QuickTest.java. However, in this form it works for nSteps == 1 only. Perhaps learnIteration - nSteps < 0 would do the trick for nSteps > 1. What do you think?

    opened by chessweb01 19
  • Introduced SLF4J for logging (w/ Logback in tests)

    Introduced SLF4J for logging (w/ Logback in tests)

    Fixes #150, #151, #152, #154, #155 and lays foundation for related issues. Note: there is no use of verbosity in the GeospatialCoordinateEncoder and so #153 can be closed.

    opened by connollyst 17
  • SpatialPoolerTest.testGetNeighbours failed with ifinite recurse

    SpatialPoolerTest.testGetNeighbours failed with ifinite recurse

    java.lang.OutOfMemoryError: Java heap space at gnu.trove.list.array.TIntArrayList.(TIntArrayList.java:91) at gnu.trove.list.array.TIntArrayList.(TIntArrayList.java:67) at org.numenta.nupic.util.ArrayUtils.recurseAssembleCoordinates(ArrayUtils.java:671) at org.numenta.nupic.util.ArrayUtils.recurseAssembleCoordinates(ArrayUtils.java:671) at org.numenta.nupic.util.ArrayUtils.recurseAssembleCoordinates(ArrayUtils.java:671) at org.numenta.nupic.util.ArrayUtils.recurseAssembleCoordinates(ArrayUtils.java:671) at org.numenta.nupic.util.ArrayUtils.recurseAssembleCoordinates(ArrayUtils.java:671) at org.numenta.nupic.util.ArrayUtils.recurseAssembleCoordinates(ArrayUtils.java:671) at org.numenta.nupic.util.ArrayUtils.recurseAssembleCoordinates(ArrayUtils.java:671) at org.numenta.nupic.util.ArrayUtils.recurseAssembleCoordinates(ArrayUtils.java:671) at org.numenta.nupic.util.ArrayUtils.recurseAssembleCoordinates(ArrayUtils.java:671) at org.numenta.nupic.util.ArrayUtils.recurseAssembleCoordinates(ArrayUtils.java:671) at org.numenta.nupic.util.ArrayUtils.recurseAssembleCoordinates(ArrayUtils.java:671) at org.numenta.nupic.util.ArrayUtils.recurseAssembleCoordinates(ArrayUtils.java:671) at org.numenta.nupic.util.ArrayUtils.recurseAssembleCoordinates(ArrayUtils.java:671) at org.numenta.nupic.util.ArrayUtils.recurseAssembleCoordinates(ArrayUtils.java:671) at org.numenta.nupic.util.ArrayUtils.recurseAssembleCoordinates(ArrayUtils.java:671) at org.numenta.nupic.util.ArrayUtils.recurseAssembleCoordinates(ArrayUtils.java:671) at org.numenta.nupic.util.ArrayUtils.recurseAssembleCoordinates(ArrayUtils.java:671) at org.numenta.nupic.util.ArrayUtils.recurseAssembleCoordinates(ArrayUtils.java:671) at org.numenta.nupic.util.ArrayUtils.recurseAssembleCoordinates(ArrayUtils.java:671) at org.numenta.nupic.util.ArrayUtils.recurseAssembleCoordinates(ArrayUtils.java:671) at org.numenta.nupic.util.ArrayUtils.recurseAssembleCoordinates(ArrayUtils.java:671) at org.numenta.nupic.util.ArrayUtils.recurseAssembleCoordinates(ArrayUtils.java:671) at org.numenta.nupic.util.ArrayUtils.recurseAssembleCoordinates(ArrayUtils.java:671) at org.numenta.nupic.util.ArrayUtils.recurseAssembleCoordinates(ArrayUtils.java:671) at org.numenta.nupic.util.ArrayUtils.recurseAssembleCoordinates(ArrayUtils.java:671) at org.numenta.nupic.util.ArrayUtils.recurseAssembleCoordinates(ArrayUtils.java:671) at org.numenta.nupic.util.ArrayUtils.recurseAssembleCoordinates(ArrayUtils.java:671) at org.numenta.nupic.util.ArrayUtils.recurseAssembleCoordinates(ArrayUtils.java:671) at org.numenta.nupic.util.ArrayUtils.recurseAssembleCoordinates(ArrayUtils.java:671) at org.numenta.nupic.util.ArrayUtils.recurseAssembleCoordinates(ArrayUtils.java:671)

    opened by solovyevk 16
  • Verbosity Replacement: SDRCategoryEncoder

    Verbosity Replacement: SDRCategoryEncoder

    The SDRCategoryEncoder class would benefit from the substitution of the "Verbosity" setting with an actual logging framework. Let's use Logback found here: http://logback.qos.ch/download.html as the actual logging framework. As a result, the log back jar(s) will need to be added to the build.gradle file and the pom.xml file.

    For more information, please refer to the this information: https://gist.github.com/cogmission/bcc0b54aaf39b6b0108d

    cleanup in progress development P3 
    opened by cogmission 15
  • htm.java needs DeltaEncoder

    htm.java needs DeltaEncoder

    This class and test should be created to follow the same idioms and structure as the Encoder.java and ScalarEncoder.java class. The CategoryEncoder, can be used as an example.

    Should use only the Joda Date Library

    encoder in progress development P3 
    opened by cogmission 15
  • NAPI SDRClassifier Integration

    NAPI SDRClassifier Integration

    Fixes #512.

    • [x] Add a Classifier interface.
    • [x] Add a new KEY that maps inferred field names to the desired Classifier type for that field: INFERRED_FIELDS(“inferredFields”, Map<String, Classifier.class>)
    • [x] Need to add code so that when the KEY.AUTO_CLASSIFY key is found to be true, a lookup is performed on the Parameters object for that node to retrieve the fields flagged to be classified.
    • [x] Errors should be thrown if KEY.AUTO_CLASSIFY is specified and there are no values for the KEY.INFERRED_FIELDS or it is null.
    • [x] Add tests for the presence and throwing of appropriate exceptions, and add tests for ability to specify classifiers.
    opened by Hopding 14
  • Support non-disruptive serialization of `Network`

    Support non-disruptive serialization of `Network`

    The act of serializing the Network causes it to halt because shouldDoHalt is true by default. The ideal would be to not halt the network in preSerialize, or to allow shouldDoHalt to be set by the user.

    The checkpoint-to-file functionality in HTM.java actually suppresses the halting behavior by briefly setting shouldDoHalt to false. In the flink-htm library, Flink takes care of higher-level checkpointing to a Flink-provided storage backend; we desire to use only the SerializerCore interface for flink-htm.

    enhancement api in progress P2 
    opened by EronWright 14
  • maven build fails because of missing dependency

    maven build fails because of missing dependency

    DESCRIPTION

    Maven build of htm.java fails saying 'algorithmfoundry:algorithmfoundry-shade-culled:jar:1.3' is missing.

    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  3.705 s
    [INFO] Finished at: 2021-10-22T21:44:52+09:00
    [INFO] ------------------------------------------------------------------------
    [ERROR] Failed to execute goal on project htm.java: Could not resolve dependencies for project org.numenta:htm.java:jar:0.6.13: Could not find artifact algorithmfoundry:algorithmfoundry-shade-culled:jar:1.3 in repo (http://metaware.us/maven3) -> [Help 1]
    [ERROR]
    [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
    [ERROR] Re-run Maven using the -X switch to enable full debug logging.
    [ERROR]
    [ERROR] For more information about the errors and possible solutions, please read the following articles:
    [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException
    

    REPRODUCE PROCEDURE

    Just try to clone & buid htm.java using maven.

    In case of me, build environment is the following:

    • OS : Ubuntu 20.04 LTS w/llinux-image-5.4.0-40-generic
    • Java: 11.0.11+9-0ubuntu2~20.04 (ubuntu bundled)
    • Maven: 3.6.3-1 (ubuntu bundled)
    • htm.java version
      • HEAD of master with commit timestamp "Wed Sep 15 21:44:59 2021 -0500"
    $ git log -n 1 --oneline
    886f7cf8 (HEAD -> master, origin/master, origin/HEAD) Updated to test permissions
    

    ANALYSYS and SUGGESTED RESOLUTION

    It seems this is a long standing(?) issue as you can find out below:

    https://discourse.numenta.org/t/dependency-problem-from-maven-release/2042

    The original Matrix Tool Kit for Java implementation (with a method addRow() that missing in the current MTJ) from algorithmfoundry seems to have been lost, and now htm.java bundles a copy of 'algorithmfoundry-shade-culled-1.3.jar' under 'libs' directory.

    Thus, just updating pom.xml like below resolves this issue.

    $ diff -u  pom.xml pom.xml.new
    --- pom.xml     2021-10-23 09:11:55.324013034 +0900
    +++ pom.xml.new 2021-10-22 21:30:08.009629309 +0900
    @@ -144,6 +144,8 @@
                            <groupId>algorithmfoundry</groupId>
                            <artifactId>algorithmfoundry-shade-culled</artifactId>
                            <version>1.3</version>
    +                       <scope>system</scope>
    +                       <systemPath>${project.basedir}/libs/algorithmfoundry-shade-culled-1.3.jar</systemPath>
                    </dependency>
            </dependencies>
    

    I will create a PR for this soon.

    Regards, Masanori

    opened by thatsdone 0
  • Feature Request: htm.java libraries for Astra

    Feature Request: htm.java libraries for Astra

    Agent based language Astra is on top of java and mix of Belief/Desire/Intention (BDI) agents and belief determinations using HTM may be an interesting hybrid programming approach.

    opened by Bazmundi 0
  • Feature Request: htm.java as library suitable for inclusion in Processing

    Feature Request: htm.java as library suitable for inclusion in Processing

    https://github.com/processing/processing has yet another means of building applications and with its sensor libraries may be a sand-box for practical application of HTM?

    Processing library structures per guide.

    opened by Bazmundi 0
  • [SECURITY] Use HTTPS to resolve dependencies in Maven Build

    [SECURITY] Use HTTPS to resolve dependencies in Maven Build

    mitm_build


    This is a security fix for a vulnerability in your Apache Maven pom.xml file(s).

    The build files indicate that this project is resolving dependencies over HTTP instead of HTTPS. This leaves your build vulnerable to allowing a Man in the Middle (MITM) attackers to execute arbitrary code on your or your computer or CI/CD system.

    This vulnerability has a CVSS v3.0 Base Score of 8.1/10.

    POC code has existed since 2014 to maliciously compromise a JAR file in-flight. MITM attacks against HTTP are increasingly common, for example Comcast is known to have done it to their own users.

    This contribution is a part of a submission to the GitHub Security Lab Bug Bounty program.

    Detecting this and Future Vulnerabilities

    This vulnerability was automatically detected by LGTM.com using this CodeQL Query.

    As of September 2019 LGTM.com and Semmle are officially a part of GitHub.

    You can automatically detect future vulnerabilities like this by enabling the free (for open-source) LGTM App.

    I'm not an employee of GitHub nor of Semmle, I'm simply a user of LGTM.com and an open-source security researcher.

    Source

    Yes, this contribution was automatically generated, however, the code to generate this PR was lovingly hand crafted to bring this security fix to your repository.

    The source code that generated and submitted this PR can be found here: JLLeitschuh/bulk-security-pr-generator

    Opting-Out

    If you'd like to opt-out of future automated security vulnerability fixes like this, please consider adding a file called .github/GH-ROBOTS.txt to your repository with the line:

    User-agent: JLLeitschuh/bulk-security-pr-generator
    Disallow: *
    

    This bot will respect the ROBOTS.txt format for future contributions.

    Alternatively, if this project is no longer actively maintained, consider archiving the repository.

    CLA Requirements

    This section is only relevant if your project requires contributors to sign a Contributor License Agreement (CLA) for external contributions.

    It is unlikely that I'll be able to directly sign CLAs. However, all contributed commits are already automatically signed-off.

    The meaning of a signoff depends on the project, but it typically certifies that committer has the rights to submit this work under the same license and agrees to a Developer Certificate of Origin (see https://developercertificate.org/ for more information).

    - Git Commit Signoff documentation

    If signing your organization's CLA is a strict-requirement for merging this contribution, please feel free to close this PR.

    Tracking

    All PR's generated as part of this fix are tracked here: https://github.com/JLLeitschuh/bulk-security-pr-generator/issues/2

    opened by JLLeitschuh 0
  • Dependency conflicts on com.fasterxml.jackson.core:jackson-core, leading to invoking unexpected methods

    Dependency conflicts on com.fasterxml.jackson.core:jackson-core, leading to invoking unexpected methods

    Hi, @cogmission, in htm.java-0.6.13-alpha, duplicate classes with the same fully-qualified name com.fasterxml.jackson.core.json.JsonWriteContext are included in two different libraries, i.e., com.fasterxml.jackson.core:jackson-core:2.5.3 and com.fasterxml.jackson.core:jackson-core:2.4.4.

    According to "first declaration wins" class loading strategy, only this class in com.fasterxml.jackson.core:jackson-core:2.4.4 can be loaded, and that in com.fasterxml.jackson.core:jackson-core:2.5.3 will be shadowed.

    By further analyzing, your project expects to invoke method <com.fasterxml.jackson.core.json.JsonWriteContext: writeFieldName(Ljava/lang/String;)I> in com.fasterxml.jackson.core:jackson-core:2.5.3. As it has been shadowed, so that this method defined in com.fasterxml.jackson.core:jackson-core:2.4.4 is actually forced to be referenced via the following invocation path:

    <org.numenta.nupic.encoders.MultiEncoder: setLearning(Z)V> /home/wwww/sensor/unzip/htm.java-0.6.13-alpha/target/classes
    <com.fasterxml.jackson.databind.MappingIterator: next()Ljava/lang/Object;> /home/wwww/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.4.4/jackson-databind-2.4.4.jar
    <com.fasterxml.jackson.databind.MappingIterator: nextValue()Ljava/lang/Object;> /home/wwww/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.4.4/jackson-databind-2.4.4.jar
    <com.fasterxml.jackson.databind.deser.BeanDeserializer: deserialize(Lcom/fasterxml/jackson/core/JsonParser;Lcom/fasterxml/jackson/databind/DeserializationContext;Ljava/lang/Object;)Ljava/lang/Object;> /home/wwww/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.4.4/jackson-databind-2.4.4.jar
    <com.fasterxml.jackson.databind.deser.BeanDeserializer: deserializeWithUnwrapped(Lcom/fasterxml/jackson/core/JsonParser;Lcom/fasterxml/jackson/databind/DeserializationContext;Ljava/lang/Object;)Ljava/lang/Object;> /home/wwww/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.4.4/jackson-databind-2.4.4.jar
    <com.fasterxml.jackson.databind.util.TokenBuffer: writeFieldName(Ljava/lang/String;)V> /home/wwww/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.4.4/jackson-databind-2.4.4.jar
    <com.fasterxml.jackson.core.json.JsonWriteContext: writeFieldName(Ljava/lang/String;)I>
    

    Although both of these two conflicting classes contain the referenced methods (with the same signature), they have different implementations. This issue will not lead to runtime crashes, but it can introduce inconsistent semantic hehavior by changing the control flows and data flows.

    Workaround solution: Use the newer version com.fasterxml.jackson.core:jackson-core:2.5.3 com.fasterxml.jackson.core:jackson-annotations:jar:2.5.3:compile com.fasterxml.jackson.core:jackson-databind:jar:2.5.3:compile to keep the version consistency.

    Dependency tree--

    [INFO] org.numenta:htm.java:jar:0.6.13 [INFO] +- joda-time:joda-time:jar:2.5:compile [INFO] +- com.chaschev:chutils:jar:1.4:compile [INFO] +- junit:junit:jar:4.11:test [INFO] | - org.hamcrest:hamcrest-core:jar:1.3:test [INFO] +- net.sf.trove4j:trove4j:jar:3.0.3:compile [INFO] +- com.fasterxml.jackson.core:jackson-annotations:jar:2.4.4:compile [INFO] +- com.fasterxml.jackson.core:jackson-core:jar:2.4.4:compile [INFO] +- com.fasterxml.jackson.core:jackson-databind:jar:2.4.4:compile [INFO] | +- (com.fasterxml.jackson.core:jackson-annotations:jar:2.4.0:compile - omitted for conflict with 2.4.4) [INFO] | - (com.fasterxml.jackson.core:jackson-core:jar:2.4.4:compile - omitted for duplicate) [INFO] +- org.slf4j:slf4j-api:jar:1.7.10:compile [INFO] +- ch.qos.logback:logback-classic:jar:1.1.2:test [INFO] | +- ch.qos.logback:logback-core:jar:1.1.2:test [INFO] | - (org.slf4j:slf4j-api:jar:1.7.6:test - omitted for conflict with 1.7.10) [INFO] +- io.reactivex:rxjava:jar:1.0.10:compile [INFO] +- com.cedarsoftware:java-util:jar:1.19.3:compile [INFO] | +- org.apache.logging.log4j:log4j-api:jar:2.1:compile [INFO] | - org.apache.logging.log4j:log4j-core:jar:2.1:compile [INFO] | - (org.apache.logging.log4j:log4j-api:jar:2.1:compile - omitted for duplicate) [INFO] +- de.ruedigermoeller:fst:jar:2.45:compile [INFO] | +- (com.fasterxml.jackson.core:jackson-core:jar:2.5.3:compile - omitted for conflict with 2.4.4) [INFO] | +- org.javassist:javassist:jar:3.19.0-GA:compile [INFO] | - org.objenesis:objenesis:jar:2.1:compile [INFO] +- org.openjdk.jmh:jmh-core:jar:1.11.3:compile [INFO] | +- net.sf.jopt-simple:jopt-simple:jar:4.6:compile [INFO] | - org.apache.commons:commons-math3:jar:3.2:compile [INFO] - algorithmfoundry:algorithmfoundry-shade-culled:jar:1.3:compile

    Thank you very much. Best, Coco

    opened by HelloCoCooo 1
Releases(v0.6.13-alpha)
  • v0.6.13-alpha(May 12, 2017)

  • v0.6.12-alpha(Apr 5, 2017)

    Features the work done by @Hopding (Andrew Dillon) to include his new SDRClassifier integrated into HTM.Java's Network API. This work allows the specification of not only which classifier to use but to be able to specify multiple fields to infer upon, and which classifier to use for each! (A different one can be specified for each "prediction field").

    Source code(tar.gz)
    Source code(zip)
  • v0.6.11-alpha(Oct 17, 2016)

  • v0.6.9-alpha(Sep 29, 2016)

    HTM.Java Undergoes Total Vetting. 100% Compatibility Testing as of commit: Aug. 15th sha bba0c63dcc386cac216ab726366e6e32af98967

    • NAB Scoring reaches compatibility with NuPIC
    • Anomaly Detection is Fixed and 100% Compatible
    • Added SDRClassifier
    • Other significant fixes and optimizations (see the change log)
    Source code(tar.gz)
    Source code(zip)
  • v0.6.8-alpha(May 2, 2016)

    This is a quick release with minor enhancements for our partners at flink-htm. This release contains code which eases serialization when used within the Flink / Kryo environment.

    • Also, turned off Standard Out by default during Gradle build
    Source code(tar.gz)
    Source code(zip)
  • v0.6.6-alpha(Apr 14, 2016)

  • v0.6.5-alpha(Nov 11, 2015)

  • v0.6.4-alpha(Oct 23, 2015)

    This release contains fixes contributed by: @antidata - Coordinate Encoder & Coordinate Encoder auto configuration fixes @chelu - Sparse Matrix low memory implementations and optimizations @cogmission - Coordinate Encoder Sensor fixes & Network implementation hot fix

    Please see the Change Log for details...

    Source code(tar.gz)
    Source code(zip)
  • v0.6.2-alpha(Sep 18, 2015)

    While the API is not stable (meaning we may change it significantly at the slightest whim), the dependability is pretty stable and fit for non-critical production use. Please keep in mind that local changes may be necessary when upgrading to a newer pre-release version.

    Source code(tar.gz)
    Source code(zip)
Owner
Numenta
Biologically inspired machine intelligence
Numenta
java math accurate implementation & experiments

Marlin-Math Accurate and fastest Math functions in java, like the Marlin renderer ! Rationale Java supports Quadratic & Cubic curves in Java2D & JavaF

Laurent Bourgès 7 Nov 18, 2021
Just a simple implementation of K-Nearest Neighbour algorithm.

A simple K-Nearest Neighbor (KNN) Java library What is this repository for? Its a very simple implementation of K-Nearest Neighbor algorithm for Super

Felipe Appio 3 Apr 23, 2021
Reference implementation for MINAS (MultI-class learNing Algorithm for data Streams), an algorithm to address novelty detection in data streams multi-class problems.

Reference implementation for MINAS (MultI-class learNing Algorithm for data Streams), an algorithm to address novelty detection in data streams multi-class problems.

Douglas M. Cavalcanti 4 Sep 7, 2022
💻 Machine Coding - leetcode LLD (coding blox) - It is an Online Coding Platform that allows a user to Sign Up, Create Contests and participate in Contests hosted by Others.

leetcode-lld-flipkart-coding-blox Machine coding - leetcode LLD (coding blox) My Approach : https://leetcode.com/discuss/interview-question/object-ori

Hariom Yadav 50 Sep 15, 2022
Contrubute Now to help make aide a best platform for developing

AIDE-Pro AIDE-based mod that will help you develop mobile applications based on the Android platform. How is it different from AIDE? Added Assets Mana

Hosni Fraj 25 Dec 7, 2022
Java Statistical Analysis Tool, a Java library for Machine Learning

Java Statistical Analysis Tool JSAT is a library for quickly getting started with Machine Learning problems. It is developed in my free time, and made

null 752 Dec 20, 2022
An Engine-Agnostic Deep Learning Framework in Java

Deep Java Library (DJL) Overview Deep Java Library (DJL) is an open-source, high-level, engine-agnostic Java framework for deep learning. DJL is desig

Amazon Web Services - Labs 2.9k Jan 7, 2023
Datumbox is an open-source Machine Learning framework written in Java which allows the rapid development of Machine Learning and Statistical applications.

Datumbox Machine Learning Framework The Datumbox Machine Learning Framework is an open-source framework written in Java which allows the rapid develop

Vasilis Vryniotis 1.1k Dec 9, 2022
java deep learning algorithms and deep neural networks with gpu acceleration

Deep Neural Networks with GPU support Update This is a newer version of the framework, that I developed while working at ExB Research. Currently, you

Ivan Vasilev 1.2k Jan 6, 2023
Java version of LIBLINEAR

This is the Java version of LIBLINEAR. The project site of the original C++ version is located at http://www.csie.ntu.edu.tw/~cjlin/liblinear/ The ups

Benedikt Waldvogel 307 Dec 11, 2022
Learning Based Java (LBJava)

Learning Based Java LBJava core LBJava examples LBJava maven plugin Compiling the whole package From the root directory run the following command: Jus

CogComp 12 Jun 9, 2019
Kodlama IO | JAVA & REACT Projects

Human Resources Management System Creating a human resources system using Java-SpringBoot that can be used by employers, job seekers and system person

Aykut Şahin 23 Oct 19, 2022
An Open Source Java Library for the Rubiks Cube!

?? Table of contents Overview What is Cubot? Why would you want it? Documentation Installation Updates ?? Overview A Java library to help you : Virtua

Akshath Raghav 13 Oct 17, 2022
Java Exp FrameWork

Exp Poc框架并不少,TangScan、Pocsuite 等等,用python写一个其实是很简单的事情。为什么要重复造这个轮子呢? 看过不少漏洞了,差不多都是本地很杂乱的存放poc,很多语言都有,而且大多数poc也只能弹个计算器而已.....所以很早就想拥有一个属于自己的统一存放Exp的地方,也

Skay 100 Oct 9, 2022
A Simple movies app using JAVA,MVVM and with a offline caching capability

IMDB-CLONE A simple imdb clone using JAVA,MVVM with searching and bookmarking ability with offline caching ability screenshots Home Screen 1 Home Scre

saiteja janjirala 13 Aug 16, 2022
JML - Java Math Library.

JML JML - Java Math Library. JML is a Java Math Library for solving Advanced Mathematical calculations. Disclaimer This project is under heavy develop

Java Math Library 3 Sep 23, 2021
DFA来过滤敏感词工具。--- The sensitive word tool for java with DFA.

sensitive-word-plus sensitive-word-plus 基于 DFA 算法实现的高性能敏感词工具。 站在巨人肩膀上,本项目是根据sensitive-word 做的升级 创作目的 基于sensitive-word-plus 实现返回敏感词类型 实现一款好用敏感词工具。 基于 D

null 11 Sep 22, 2022