Author: tommaso
Date: Sat Dec  3 15:16:15 2011
New Revision: 1209931

URL: http://svn.apache.org/viewvc?rev=1209931&view=rev
Log:
refactoring the bio package: added axons and axon terminals, defined activation 
function,neural network, signal and synapse signatures

Added:
    labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Axon.java
    labs/yay/trunk/core/src/main/java/org/apache/yay/bio/AxonTerminal.java
Modified:
    labs/yay/trunk/core/src/main/java/org/apache/yay/bio/ActivationFunction.java
    labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Dendrite.java
    labs/yay/trunk/core/src/main/java/org/apache/yay/bio/NeuralNetwork.java
    labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Neuron.java
    labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Signal.java
    labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Synapse.java

Modified: 
labs/yay/trunk/core/src/main/java/org/apache/yay/bio/ActivationFunction.java
URL: 
http://svn.apache.org/viewvc/labs/yay/trunk/core/src/main/java/org/apache/yay/bio/ActivationFunction.java?rev=1209931&r1=1209930&r2=1209931&view=diff
==============================================================================
--- 
labs/yay/trunk/core/src/main/java/org/apache/yay/bio/ActivationFunction.java 
(original)
+++ 
labs/yay/trunk/core/src/main/java/org/apache/yay/bio/ActivationFunction.java 
Sat Dec  3 15:16:15 2011
@@ -19,7 +19,10 @@
 package org.apache.yay.bio;
 
 /**
+ * An activation function receives a signal and generates a new signal AF : S 
-> S
  */
 public interface ActivationFunction {
 
+  public Signal apply(Signal signal);
+
 }

Added: labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Axon.java
URL: 
http://svn.apache.org/viewvc/labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Axon.java?rev=1209931&view=auto
==============================================================================
--- labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Axon.java (added)
+++ labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Axon.java Sat Dec  3 
15:16:15 2011
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.yay.bio;
+
+import java.util.Collection;
+
+/**
+ * An axon is the item responsible of delivering signals elaborated from the 
nucleus to dendrites of other neurons
+ * connected through a synapse via its terminals
+ */
+public class Axon {
+  private Collection<AxonTerminal> terminals;
+
+  public Axon(Collection<AxonTerminal> terminals) {
+    this.terminals = terminals;
+  }
+
+  public Collection<AxonTerminal> getTerminals() {
+    return terminals;
+  }
+}

Added: labs/yay/trunk/core/src/main/java/org/apache/yay/bio/AxonTerminal.java
URL: 
http://svn.apache.org/viewvc/labs/yay/trunk/core/src/main/java/org/apache/yay/bio/AxonTerminal.java?rev=1209931&view=auto
==============================================================================
--- labs/yay/trunk/core/src/main/java/org/apache/yay/bio/AxonTerminal.java 
(added)
+++ labs/yay/trunk/core/src/main/java/org/apache/yay/bio/AxonTerminal.java Sat 
Dec  3 15:16:15 2011
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.yay.bio;
+
+/**
+ * An output unit of a neuron connected to the nucleus via the axon
+ */
+public interface AxonTerminal {
+
+  public Signal read();
+
+}

Modified: labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Dendrite.java
URL: 
http://svn.apache.org/viewvc/labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Dendrite.java?rev=1209931&r1=1209930&r2=1209931&view=diff
==============================================================================
--- labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Dendrite.java 
(original)
+++ labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Dendrite.java Sat Dec  
3 15:16:15 2011
@@ -25,7 +25,7 @@ public abstract class Dendrite {
 
   private Long weight;
 
-  public abstract void acceptSignal(Signal signal);
+  public abstract void accept(Signal signal);
 
   public Long getWeight() {
     return weight;

Modified: 
labs/yay/trunk/core/src/main/java/org/apache/yay/bio/NeuralNetwork.java
URL: 
http://svn.apache.org/viewvc/labs/yay/trunk/core/src/main/java/org/apache/yay/bio/NeuralNetwork.java?rev=1209931&r1=1209930&r2=1209931&view=diff
==============================================================================
--- labs/yay/trunk/core/src/main/java/org/apache/yay/bio/NeuralNetwork.java 
(original)
+++ labs/yay/trunk/core/src/main/java/org/apache/yay/bio/NeuralNetwork.java Sat 
Dec  3 15:16:15 2011
@@ -19,7 +19,10 @@
 package org.apache.yay.bio;
 
 /**
+ * A neural network is a layered connected graph of neurons
  */
 public interface NeuralNetwork {
 
+  Signal predict(Signal... input);
+
 }

Modified: labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Neuron.java
URL: 
http://svn.apache.org/viewvc/labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Neuron.java?rev=1209931&r1=1209930&r2=1209931&view=diff
==============================================================================
--- labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Neuron.java (original)
+++ labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Neuron.java Sat Dec  3 
15:16:15 2011
@@ -18,28 +18,29 @@
  */
 package org.apache.yay.bio;
 
+
 import java.util.Collection;
 
 /**
- * elaboration node/unit; sends a signal on the basis of the signals received 
and its activation threshold
+ * A neuron is the fundamental unit of a neural network and responsible of the 
signal elaboration
  */
-public abstract class Neuron {
+public class Neuron {
 
-  private Synapse outputSynapse;
-  private ActivationFunction activationFunction;
-  private Long threshold;
-  private Collection<Synapse> inSynapses;
-
-  Neuron(ActivationFunction activationFunction, Long threshold, 
Collection<Synapse> inSynapses, Synapse outputSynapse) {
-    this.activationFunction = activationFunction;
-    this.threshold = threshold;
-    this.inSynapses = inSynapses;
-    this.outputSynapse = outputSynapse;
+  private Nucleus nucleus;
+  private Collection<Dendrite> dendrites;
+  private Axon axon;
+
+  public Neuron(Nucleus nucleus, Collection<Dendrite> dendrites, Axon axon) {
+    this.nucleus = nucleus;
+    this.dendrites = dendrites;
+    this.axon = axon;
   }
 
-  void send(Signal signal) {
+  public Collection<Dendrite> getDendrites() {
+    return dendrites;
   }
 
-  void receive(Signal signal) {
+  public Axon getAxon() {
+    return axon;
   }
 }

Modified: labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Signal.java
URL: 
http://svn.apache.org/viewvc/labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Signal.java?rev=1209931&r1=1209930&r2=1209931&view=diff
==============================================================================
--- labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Signal.java (original)
+++ labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Signal.java Sat Dec  3 
15:16:15 2011
@@ -19,19 +19,8 @@
 package org.apache.yay.bio;
 
 /**
- * a signal to be sent from one neuron to another via a synapse
+ * A signal represents and wraps the information, of type T, traversing 
neurons of a neural network
  */
-public class Signal {
-  private Object itemToTransmit;
-
-  public Signal(Object o) {
-    itemToTransmit = o;
-  }
-
-  @Override
-  public String toString() {
-    return "Signal{" +
-            "itemToTransmit=" + itemToTransmit +
-            '}';
-  }
+public interface Signal<T> {
+  public T getValue();
 }

Modified: labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Synapse.java
URL: 
http://svn.apache.org/viewvc/labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Synapse.java?rev=1209931&r1=1209930&r2=1209931&view=diff
==============================================================================
--- labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Synapse.java (original)
+++ labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Synapse.java Sat Dec  
3 15:16:15 2011
@@ -19,18 +19,10 @@
 package org.apache.yay.bio;
 
 /**
- * connects neurons weighting the signals which traverse the synapse itself
+ * A synapse connects neurons from axons to dendrites
  */
-public abstract class Synapse {
+public interface Synapse {
 
-  private Neuron from;
-  private Neuron to;
-  private Long weight;
-
-  Synapse(Neuron from, Neuron to, Long weight) {
-    this.from = from;
-    this.to = to;
-    this.weight = weight;
-  }
+  public Synapse connect(Neuron from, Neuron to);
 
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to