From 6360fb25394f1e9356f3746525e00d76cd2b5a07 Mon Sep 17 00:00:00 2001
From: guille <guillermopolito@gmail.com>
Date: Fri, 28 Oct 2016 12:11:47 +0200
Subject: [PATCH] Adding Scaladocs to to all connections. Cancelling wrong
 generate method in superclass to not force subclasses to use it.

---
 .../builder/connection/AbstractConnectionPolicy.scala |  6 +++++-
 .../connection/types/ConvolutionalConnection.scala    |  2 +-
 .../builder/connection/types/FullConnection.scala     |  3 +--
 .../types/InternalConvolutionCompetition.scala        |  1 +
 .../builder/connection/types/ManualConnection.scala   | 11 +----------
 .../connection/types/MaxPoolingConnection.scala       |  2 +-
 .../builder/connection/types/OneToOneConnection.scala |  2 +-
 .../builder/connection/types/RandomConnection.scala   |  2 +-
 .../connection/types/WinnerTakeAllConnection.scala    |  2 +-
 9 files changed, 13 insertions(+), 18 deletions(-)

diff --git a/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/AbstractConnectionPolicy.scala b/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/AbstractConnectionPolicy.scala
index e6fde115..018da9c6 100644
--- a/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/AbstractConnectionPolicy.scala
+++ b/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/AbstractConnectionPolicy.scala
@@ -56,7 +56,11 @@ trait ConnectionPolicy extends AbstractConnectionPolicy {
   }
 
   def generate(from : NeuronGroupRef, to : NeuronGroupRef) : Traversable[Connection]
-  def generate(from : NeuronIterable, to : NeuronIterable) : Traversable[Connection]
+  def generate(from : NeuronIterable, to : NeuronIterable) : Traversable[Connection] = {
+    // Throw exception by default
+    // This is to allow cleaning subclasses from non used behaviour and remove static dependencies
+    throw new UnsupportedOperationException()
+  }
 
  /********************************************************************************************************************
   * Testing
diff --git a/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/ConvolutionalConnection.scala b/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/ConvolutionalConnection.scala
index eb45a59a..e0789046 100644
--- a/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/ConvolutionalConnection.scala
+++ b/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/ConvolutionalConnection.scala
@@ -16,7 +16,7 @@ import scala.collection.mutable
   */
 class ConvolutionalConnection[A](filters : Traversable[Filter2D], connectionConstructor : A => SharedNeuronConnection[A], sharedObjConstructor : () => A) extends ConnectionPolicy {
 
-  def generate(from: NeuronIterable, to: NeuronIterable): Traversable[Connection] = {
+  override def generate(from: NeuronIterable, to: NeuronIterable): Traversable[Connection] = {
     assert(from.shape.dimensionNumber == 2 && to.shape.dimensionNumber == 3)
 
     val sharedObj = (for (filter <- filters) yield {
diff --git a/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/FullConnection.scala b/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/FullConnection.scala
index b4ffce30..ec2358ed 100644
--- a/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/FullConnection.scala
+++ b/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/FullConnection.scala
@@ -24,8 +24,7 @@ class FullConnection(neuronConnectionConstructor : Option[() => NeuronConnection
     }
   }
 
-
-  def generate(from : NeuronIterable, to : NeuronIterable) = {
+  override def generate(from : NeuronIterable, to : NeuronIterable) = {
     for {
       in <- from
       out <- to
diff --git a/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/InternalConvolutionCompetition.scala b/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/InternalConvolutionCompetition.scala
index 45697df6..ee1cf88a 100644
--- a/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/InternalConvolutionCompetition.scala
+++ b/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/InternalConvolutionCompetition.scala
@@ -7,6 +7,7 @@ import fr.univ_lille.cristal.emeraude.n2s3.features.builder.connection.{Connecti
 /**
   * Created by falezp on 31/05/16.
   */
+@deprecated("Should be replaced by external connection policies", "4/8/2016")
 class InternalConvolutionCompetition(inhibitorConnection : () => NeuronConnection) extends InternalConnectionPolicy {
 
   def generate(layer: NeuronIterable) = {
diff --git a/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/ManualConnection.scala b/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/ManualConnection.scala
index a00ea76b..db2db695 100644
--- a/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/ManualConnection.scala
+++ b/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/ManualConnection.scala
@@ -1,23 +1,14 @@
 package fr.univ_lille.cristal.emeraude.n2s3.features.builder.connection.types
 
 import fr.univ_lille.cristal.emeraude.n2s3.core.NeuronConnection
+import fr.univ_lille.cristal.emeraude.n2s3.features.builder.connection.{Connection, ConnectionPolicy}
 import fr.univ_lille.cristal.emeraude.n2s3.features.builder.{NeuronGroupRef, NeuronIterable, NeuronRef}
-import fr.univ_lille.cristal.emeraude.n2s3.features.builder.connection.{InternalConnectionPolicy, Connection, ConnectionPolicy}
 
 /**
   * Connects two neuron groups using an explicit list of connections
-  * @param connections
   */
 class ManualConnection(connections : Traversable[(Int, Int, Option[NeuronConnection])]) extends ConnectionPolicy {
 
-  def generate(from : NeuronIterable, to : NeuronIterable) = {
-    throw new UnsupportedOperationException
-    /*
-    connections.map{ case(in, out, connection) =>
-      Connection(from.get(in), to.get(out), connection)
-    }*/
-  }
-
   override def generate(from: NeuronGroupRef, to: NeuronGroupRef): Traversable[Connection] = {
     connections.map{ case(in, out, connection) =>
       Connection(from.neurons(in).actorPath.get, to.neurons(out).actorPath.get, connection)
diff --git a/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/MaxPoolingConnection.scala b/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/MaxPoolingConnection.scala
index 9b810404..be65a371 100644
--- a/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/MaxPoolingConnection.scala
+++ b/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/MaxPoolingConnection.scala
@@ -9,7 +9,7 @@ import fr.univ_lille.cristal.emeraude.n2s3.features.io.input.Shape
   */
 class MaxPoolingConnection(reduceFactors : Int*) extends ConnectionPolicy {
 
-  def generate(from : NeuronIterable, to : NeuronIterable) : Traversable[Connection] = {
+  override def generate(from : NeuronIterable, to : NeuronIterable) : Traversable[Connection] = {
     assert(from.shape.dimensionNumber == to.shape.dimensionNumber && to.shape.dimensions.zip(reduceFactors).map(e => e._1*e._2) == from.shape)
 
     def innerConnection(remainDim : Shape, fromIndex : Seq[Int], toIndex : Seq[Int], remainReduceFactor : Seq[Int]) : Traversable[Connection] = {
diff --git a/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/OneToOneConnection.scala b/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/OneToOneConnection.scala
index 7fce1516..1c315dd2 100644
--- a/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/OneToOneConnection.scala
+++ b/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/OneToOneConnection.scala
@@ -8,7 +8,7 @@ import fr.univ_lille.cristal.emeraude.n2s3.features.builder.{NeuronGroupRef, Neu
 import fr.univ_lille.cristal.emeraude.n2s3.features.builder.connection.{Connection, ConnectionPolicy}
 
 class OneToOneConnection extends ConnectionPolicy {
-	def generate(from : NeuronIterable, to : NeuronIterable) = {
+	override def generate(from : NeuronIterable, to : NeuronIterable) = {
 		assert(from.size == to.size)
 		from.toSeq.zip(to.toSeq).map{ case (in, out) => Connection(in, out)}
 	}
diff --git a/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/RandomConnection.scala b/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/RandomConnection.scala
index 695ce76f..15199e1f 100644
--- a/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/RandomConnection.scala
+++ b/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/RandomConnection.scala
@@ -10,7 +10,7 @@ import scala.util.Random
   * Created by falezp on 07/07/16.
   */
 class RandomConnection(connectionRate : Float, connectionConstructor : () => NeuronConnection) extends ConnectionPolicy {
-  def generate(from : NeuronIterable, to : NeuronIterable) = {
+  override def generate(from : NeuronIterable, to : NeuronIterable) = {
     for {
       in <- from
       out <- to
diff --git a/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/WinnerTakeAllConnection.scala b/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/WinnerTakeAllConnection.scala
index e012c3cb..de008566 100644
--- a/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/WinnerTakeAllConnection.scala
+++ b/n2s3/src/main/scala/fr/univ_lille/cristal/emeraude/n2s3/features/builder/connection/types/WinnerTakeAllConnection.scala
@@ -9,7 +9,7 @@ import fr.univ_lille.cristal.emeraude.n2s3.features.builder.connection.{Connecti
   */
 class WinnerTakeAllConnection(inhibitoryConnection : () => NeuronConnection) extends ConnectionPolicy {
 
-  def generate(from : NeuronIterable, to : NeuronIterable) = {
+  override def generate(from : NeuronIterable, to : NeuronIterable) = {
     new OneToOneConnection().generate(from, to)++
       new FullConnection().generate(to, from).map(co => Connection(co.from, co.to, Some(inhibitoryConnection())))
   }
-- 
GitLab