Skip to content

Commit

Permalink
Added implicits for parallel loops, Scala version adjusted, organizat…
Browse files Browse the repository at this point in the history
…ion corrected, file import cleanup (#3)
  • Loading branch information
Dennis Madsen authored Apr 28, 2022
1 parent b8fb462 commit 25736d6
Show file tree
Hide file tree
Showing 41 changed files with 71 additions and 102 deletions.
4 changes: 2 additions & 2 deletions build.sbt
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import sbt.Resolver

organization := "anonymous"
organization := "ch.unibas.cs.gravis"

name := "GiNGR"

version := "0.1"

scalaVersion := "2.12.8"
scalaVersion := "2.13.8"

scalacOptions := Seq("-unchecked", "-deprecation", "-encoding", "utf8")

Expand Down
2 changes: 1 addition & 1 deletion src/main/scala/api/GeneralRegistrationState.scala
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ package api

import breeze.linalg.{DenseMatrix, DenseVector}
import scalismo.common.PointId
import scalismo.geometry.{_3D, EuclideanVector, Landmark, Point}
import scalismo.geometry.{EuclideanVector, Landmark, Point, _3D}
import scalismo.mesh.TriangleMesh
import scalismo.statisticalmodel.{MultivariateNormalDistribution, PointDistributionModel}
import scalismo.transformations._
Expand Down
8 changes: 4 additions & 4 deletions src/main/scala/api/GingrAlgorithm.scala
Original file line number Diff line number Diff line change
Expand Up @@ -17,17 +17,17 @@

package api

import api.sampling.{AcceptAll, Evaluator, Generator}
import api.sampling.evaluators.EvaluatorWrapper
import api.sampling.loggers.{BestAndCurrentSampleLogger, EmptyAcceptRejectLogger, EmptyChainStateLogger}
import api.sampling.generators.{GeneratorWrapperDeterministic, GeneratorWrapperStochastic}
import api.sampling.loggers.{BestAndCurrentSampleLogger, EmptyAcceptRejectLogger, EmptyChainStateLogger}
import api.sampling.{AcceptAll, Evaluator, Generator}
import scalismo.common.PointId
import scalismo.geometry.{_3D, Point}
import scalismo.geometry.{Point, _3D}
import scalismo.mesh.TriangleMesh
import scalismo.registration.LandmarkRegistration
import scalismo.sampling.algorithms.MetropolisHastings
import scalismo.sampling.loggers.{AcceptRejectLogger, ChainStateLogger, ChainStateLoggerContainer}
import scalismo.sampling.loggers.ChainStateLogger.implicits._
import scalismo.sampling.loggers.{AcceptRejectLogger, ChainStateLogger, ChainStateLoggerContainer}
import scalismo.sampling.proposals.MixtureProposal
import scalismo.sampling.proposals.MixtureProposal.implicits._
import scalismo.sampling.{ProposalGenerator, TransitionProbability}
Expand Down
4 changes: 2 additions & 2 deletions src/main/scala/api/ModelFittingParameters.scala
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@
package api

import breeze.linalg.DenseVector
import scalismo.geometry.{_3D, EuclideanVector, Point}
import scalismo.geometry.{EuclideanVector, Point, _3D}
import scalismo.mesh.TriangleMesh
import scalismo.statisticalmodel.PointDistributionModel
import scalismo.transformations.{Rotation, Scaling, Scaling3D, Translation, TranslationAfterRotation, TranslationAfterScalingAfterRotation}
import scalismo.transformations._

case class ScaleParameter(s: Double) {
def parameters: DenseVector[Double] = DenseVector(s)
Expand Down
5 changes: 2 additions & 3 deletions src/main/scala/api/RegistrationState.scala
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,10 @@

package api

import breeze.linalg.DenseVector
import scalismo.geometry.{_3D, EuclideanVector, EuclideanVector3D, Landmark, Point}
import scalismo.geometry.{EuclideanVector, Landmark, _3D}
import scalismo.mesh.TriangleMesh
import scalismo.statisticalmodel.PointDistributionModel
import scalismo.transformations.{Rotation, RotationSpace3D, Translation, TranslationAfterRotation}
import scalismo.transformations.Rotation

trait RegistrationState[T] {
def model(): PointDistributionModel[_3D, TriangleMesh] // Prior statistical mesh model
Expand Down
14 changes: 5 additions & 9 deletions src/main/scala/api/gpmm/GPMMHelper.scala
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,14 @@

package api.gpmm

import breeze.linalg.{diag, sum, trace, DenseMatrix}
import breeze.linalg.sum
import scalismo.common.DiscreteField.ScalarMeshField
import scalismo.common.interpolation.{NearestNeighborInterpolator, TriangleMeshInterpolator3D}
import scalismo.common.{DiscreteDomain, PointId, PointSet, ScalarMeshField, UnstructuredPoints, UnstructuredPointsDomain}
import scalismo.geometry.{_1D, _2D, _3D, EuclideanVector, NDSpace}
import scalismo.common._
import scalismo.common.interpolation.NearestNeighborInterpolator
import scalismo.geometry.{EuclideanVector, _1D, _2D, _3D}
import scalismo.kernels.{DiagonalKernel, GaussianKernel, MatrixValuedPDKernel}
import scalismo.mesh.TriangleMesh
import scalismo.numerics.PivotedCholesky
import scalismo.numerics.PivotedCholesky.NumberOfEigenfunctions
import scalismo.statisticalmodel.{DiscreteLowRankGaussianProcess, GaussianProcess, LowRankGaussianProcess, PointDistributionModel}
import scalismo.statisticalmodel.{GaussianProcess, LowRankGaussianProcess, PointDistributionModel}

trait GPMM[D, DDomain[D] <: DiscreteDomain[D]] {
def construct(reference: DDomain[D], kernel: MatrixValuedPDKernel[D], relativeTolerance: Double = 0.01): PointDistributionModel[D, DDomain]
Expand Down Expand Up @@ -133,12 +131,10 @@ case class GPMMTriangleMesh3D(reference: TriangleMesh[_3D], relativeTolerance: D
val refPoints = reference.pointSet
val psHelper = PointSetHelper[_3D, TriangleMesh](reference)
val maxDist = psHelper.maximumPointDistance(refPoints)
// val minDist = psHelper.minimumPointDistance(refPoints)
GaussianMixture(
Seq(
GaussianKernelParameters(maxDist / 4.0, maxDist / 8.0),
GaussianKernelParameters(maxDist / 8.0, maxDist / 16.0)
// GaussianKernelParameters(maxDist/16.0, maxDist/32.0),
))
}

Expand Down
4 changes: 2 additions & 2 deletions src/main/scala/api/gpmm/KernelHelper.scala
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@

package api.gpmm

import breeze.linalg.{sum, DenseMatrix, DenseVector}
import breeze.linalg.DenseMatrix
import scalismo.common.EuclideanSpace
import scalismo.geometry.{_3D, Point}
import scalismo.geometry.{Point, _3D}
import scalismo.kernels.{DiagonalKernel, MatrixValuedPDKernel, PDKernel}
import scalismo.mesh.TriangleMesh

Expand Down
2 changes: 1 addition & 1 deletion src/main/scala/api/gpmm/MatrixHelper.scala
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

package api.gpmm

import breeze.linalg.{diag, svd, DenseMatrix}
import breeze.linalg.{DenseMatrix, diag, svd}

object MatrixHelper {
def pinv(m: DenseMatrix[Double], precision: Double = 0.00001): DenseMatrix[Double] = {
Expand Down
2 changes: 1 addition & 1 deletion src/main/scala/api/helper/PosteriorHelper.scala
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import breeze.linalg.{DenseMatrix, DenseVector, trace}
import scalismo.common.DiscreteField.ScalarMeshField
import scalismo.common.ScalarMeshField
import scalismo.geometry._3D
import scalismo.mesh.{TriangleMesh, TriangleMesh3D}
import scalismo.mesh.TriangleMesh

object PosteriorHelper {
private val sampleDim = 3
Expand Down
13 changes: 6 additions & 7 deletions src/main/scala/api/registration/config/CPD.scala
Original file line number Diff line number Diff line change
Expand Up @@ -17,17 +17,16 @@

package api.registration.config

import java.io.File

import api.registration.utils.PointSequenceConverter
import api.GingrAlgorithm
import api.{CorrespondencePairs, GeneralRegistrationState, GingrConfig, GingrRegistrationState}
import breeze.linalg.{sum, tile, Axis, DenseMatrix, DenseVector}
import scalismo.common.{DiscreteField, DiscreteField3D, PointId, UnstructuredPointsDomain}
import api._
import breeze.linalg.{Axis, DenseMatrix, DenseVector, sum, tile}
import scalismo.common.PointId
import scalismo.geometry.Point.Point3DVectorizer
import scalismo.geometry.{_3D, EuclideanVector, Point}
import scalismo.geometry.{Point, _3D}
import scalismo.statisticalmodel.MultivariateNormalDistribution

import scala.collection.parallel.CollectionConverters.ImmutableSeqIsParallelizable

object CPDCorrespondence {
val vectorizer: Point.Point3DVectorizer.type = Point3DVectorizer

Expand Down
7 changes: 2 additions & 5 deletions src/main/scala/api/registration/config/ICP.scala
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,10 @@

package api.registration.config

import java.io.File

import api.registration.utils.NonRigidClosestPointRegistrator.ClosestPointTriangleMesh3D
import api._
import api.registration.utils.NonRigidClosestPointRegistrator.ClosestPointTriangleMesh3D
import breeze.linalg.{DenseMatrix, DenseVector}
import scalismo.common.{DiscreteField, DiscreteField3D, PointId, UnstructuredPointsDomain}
import scalismo.geometry.{_3D, EuclideanVector}
import scalismo.common.PointId
import scalismo.statisticalmodel.MultivariateNormalDistribution

object ICPCorrespondence {
Expand Down
2 changes: 1 addition & 1 deletion src/main/scala/api/registration/config/Template.scala
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

package api.registration.config

import api.{CorrespondencePairs, GeneralRegistrationState, GingrAlgorithm, GingrConfig, GingrRegistrationState}
import api._
import breeze.linalg.{DenseMatrix, DenseVector}
import scalismo.common.PointId
import scalismo.statisticalmodel.MultivariateNormalDistribution
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@

package api.registration.utils

import scalismo.common.{DiscreteDomain, PointId, UnstructuredPoints, UnstructuredPointsDomain}
import scalismo.geometry.{_1D, _2D, _3D, EuclideanVector, Point}
import scalismo.common.{DiscreteDomain, PointId, UnstructuredPointsDomain}
import scalismo.geometry._
import scalismo.mesh.TriangleMesh

trait ClosestPointRegistrator[D, DDomain[D] <: DiscreteDomain[D]] {
Expand Down
10 changes: 3 additions & 7 deletions src/main/scala/api/registration/utils/GPMMHelper.scala
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,12 @@

package api.registration.utils

import java.io.File

import scalismo.common.UnstructuredPoints
import scalismo.common.interpolation.TriangleMeshInterpolator3D
import scalismo.common.{EuclideanSpace, Field, UnstructuredPoints}
import scalismo.geometry.{EuclideanVector, Point, _3D}
import scalismo.io.MeshIO
import scalismo.geometry.{EuclideanVector, _3D}
import scalismo.kernels.{DiagonalKernel, GaussianKernel}
import scalismo.mesh.TriangleMesh
import scalismo.statisticalmodel.{GaussianProcess, LowRankGaussianProcess, PointDistributionModel}
import scalismo.ui.api.ScalismoUI

object GPMMHelper {
// Todo: use implicit to build any kind of model based on the pointSet
Expand Down Expand Up @@ -73,4 +69,4 @@ object GPMMHelper {
// val gpmm = GPMMHelper.automaticGPMMfromTemplate(template)
// val ui = ScalismoUI()
// ui.show(gpmm, "model")
//}
//}
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ import scalismo.common.{PointId, Vectorizer}
import scalismo.geometry.Point.{Point1DVectorizer, Point2DVectorizer, Point3DVectorizer}
import scalismo.geometry._

import scala.collection.parallel.CollectionConverters.ImmutableSeqIsParallelizable

trait PointSequenceConverter[D] {
def toPointSequence(m: DenseMatrix[Double])(implicit vectorizer: Vectorizer[Point[D]]): Seq[Point[D]]
def toPointSequence(v: DenseVector[Double])(implicit vectorizer: Vectorizer[Point[D]]): Seq[Point[D]]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
package api.registration.utils

import breeze.linalg.DenseMatrix
import scalismo.geometry.{_2D, _3D, Point, SquareMatrix}
import scalismo.geometry.{Point, SquareMatrix, _2D, _3D}
import scalismo.registration.LandmarkRegistration
import scalismo.transformations._

Expand Down
2 changes: 1 addition & 1 deletion src/main/scala/api/sampling/Evaluator.scala
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
package api.sampling

import api.GingrRegistrationState
import api.sampling.evaluators.{AcceptAllEvaluator, EvaluationMode, IndependentPointDistanceEvaluator, ModelEvaluator, ModelToTargetEvaluation}
import api.sampling.evaluators._
import scalismo.sampling.DistributionEvaluator
import scalismo.sampling.evaluators.ProductEvaluator

Expand Down
6 changes: 3 additions & 3 deletions src/main/scala/api/sampling/Generator.scala
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,11 @@
package api.sampling

import api.GingrRegistrationState
import api.sampling.generators.{GaussianAxisRotationProposal, GaussianAxisTranslationProposal, PitchAxis, RandomShapeUpdateProposal, RollAxis, YawAxis}
import scalismo.sampling.{ProposalGenerator, TransitionProbability}
import api.sampling.generators._
import scalismo.sampling.proposals.MixtureProposal
import scalismo.utils.Random
import scalismo.sampling.proposals.MixtureProposal.implicits._
import scalismo.sampling.{ProposalGenerator, TransitionProbability}
import scalismo.utils.Random

class Generator[State <: GingrRegistrationState[State]](implicit rnd: Random) {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@ package api.sampling.evaluators

import api.GingrRegistrationState
import breeze.stats.distributions.ContinuousDistr
import scalismo.common.{DomainWarp, PointId}
import scalismo.geometry.{_3D, Point}
import scalismo.mesh.{TriangleMesh, TriangleMesh3D}
import scalismo.common.PointId
import scalismo.geometry.{Point, _3D}
import scalismo.mesh.TriangleMesh3D
import scalismo.sampling.DistributionEvaluator

trait EvaluationMode
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
package api.sampling.evaluators

import api.GingrRegistrationState
import breeze.linalg.{diag, DenseVector}
import breeze.linalg.{DenseVector, diag}
import scalismo.sampling.DistributionEvaluator
import scalismo.statisticalmodel.MultivariateNormalDistribution

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
package api.sampling.generators

import api.GingrRegistrationState
import scalismo.sampling.{ProposalGenerator, TransitionProbability}
import scalismo.utils.Random

case class GeneratorWrapperDeterministic[State <: GingrRegistrationState[State]](update: (State, Boolean) => State, generatedBy: String = "Deterministic")(implicit rnd: Random)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ package api.sampling.generators
import api.GingrRegistrationState
import scalismo.geometry._3D
import scalismo.mesh.TriangleMesh
import scalismo.sampling.{ProposalGenerator, TransitionProbability}
import scalismo.statisticalmodel.PointDistributionModel
import scalismo.utils.{Memoize, Random}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
package api.sampling.generators

import api.{EulerRotation, GingrRegistrationState}
import scalismo.sampling.{ProposalGenerator, TransitionProbability}

sealed trait RotationAxis

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
package api.sampling.generators

import api.{GingrRegistrationState, ShapeParameters}
import scalismo.sampling.{ProposalGenerator, TransitionProbability}
import scalismo.utils.Random

case class RandomShapeUpdateProposal[State <: GingrRegistrationState[State]](stdev: Double, generatedBy: String = "RandomShapeUpdateProposal")(implicit random: Random)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@
package api.sampling.loggers

import api.GingrRegistrationState
import scalismo.sampling.{DistributionEvaluator, ProposalGenerator}
import scalismo.sampling.loggers.{AcceptRejectLogger, ChainStateLogger}
import scalismo.sampling.{DistributionEvaluator, ProposalGenerator}

case class EmptyChainStateLogger[State <: GingrRegistrationState[State]]() extends ChainStateLogger[State] {
override def logState(sample: State): Unit = {}
Expand Down
21 changes: 8 additions & 13 deletions src/main/scala/api/sampling/loggers/JSONStateLogger.scala
Original file line number Diff line number Diff line change
Expand Up @@ -17,23 +17,18 @@

package api.sampling.loggers

import api.{EulerAngles, EulerRotation, GeneralRegistrationState, GingrRegistrationState, ModelFittingParameters, PoseParameters, ScaleParameter, ShapeParameters}
import spray.json.DefaultJsonProtocol.jsonFormat10
import spray.json.RootJsonFormat
import spray.json.DefaultJsonProtocol._
import spray.json._
import scalismo.sampling.{DistributionEvaluator, ProposalGenerator}
import api._
import api.sampling.Evaluator
import breeze.linalg.DenseVector
import scalismo.geometry.{EuclideanVector, Point}
import scalismo.sampling.loggers.AcceptRejectLogger
import scalismo.sampling.{DistributionEvaluator, ProposalGenerator}
import spray.json.DefaultJsonProtocol._
import spray.json.{RootJsonFormat, _}

import java.io.{BufferedWriter, File, FileOutputStream, IOException, OutputStreamWriter}
import java.io._
import java.text.SimpleDateFormat
import java.util.Calendar
import api.sampling.Evaluator
import breeze.linalg.DenseVector
import scalismo.geometry.{EuclideanVector, Point, _3D}
import scalismo.mesh.TriangleMesh
import scalismo.statisticalmodel.PointDistributionModel

import scala.collection.SortedSet
import scala.collection.mutable.ListBuffer
import scala.io.Source
Expand Down
8 changes: 4 additions & 4 deletions src/main/scala/apps/DemoDatasetLoader.scala
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,16 @@

package apps

import apps.gpmm.{GaussDotKernel, GaussKernel, GaussMirrorKernel, GaussMixKernel, InvLapDotKernel, InvLapKernel, SimpleTriangleModels3D, WhichKernel}
import java.io.File

import apps.gpmm._
import scalismo.common.interpolation.TriangleMeshInterpolator3D
import scalismo.geometry.{_3D, Landmark, Point}
import scalismo.geometry.{Landmark, Point, _3D}
import scalismo.io.{LandmarkIO, MeshIO, StatisticalModelIO}
import scalismo.mesh.TriangleMesh
import scalismo.statisticalmodel.PointDistributionModel
import scalismo.transformations.{TranslationAfterRotation, TranslationAfterRotationSpace3D}

import java.io.File

trait DataSetLoader {
def name: String
def path: File
Expand Down
8 changes: 3 additions & 5 deletions src/main/scala/apps/registration/DemoCPD.scala
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,10 @@

package apps.registration

import java.io.File

import api.{NoTransforms, RigidTransforms}
import api.NoTransforms
import apps.DemoDatasetLoader
import scalismo.geometry.{EuclideanVector, Point}
import scalismo.transformations.{Rotation, Translation, TranslationAfterRotation}

import java.io.File

object DemoCPD extends App {
scalismo.initialize()
Expand Down
Loading

0 comments on commit 25736d6

Please sign in to comment.