Dev #20
@ -1,15 +0,0 @@
|
||||
plugins {
|
||||
kotlin("jvm")
|
||||
}
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
maven ("http://dl.bintray.com/kotlin/kotlin-eap")
|
||||
maven("http://java.freehep.org/maven2/")
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation(kotlin("stdlib"))
|
||||
api(project(":kmath-core"))
|
||||
api(group = "org.freehep", name = "freehep-jaida", version = "3.4.13")
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
package scientifik.kmath.aida
|
||||
|
||||
import hep.aida.IAnalysisFactory
|
||||
import hep.aida.IHistogramFactory
|
||||
import hep.aida.ITreeFactory
|
||||
|
||||
val analysisFactory: IAnalysisFactory by lazy { IAnalysisFactory.create() }
|
||||
val treeFactory: ITreeFactory by lazy { analysisFactory.createTreeFactory() }
|
||||
val histogramFactory: IHistogramFactory by lazy { analysisFactory.createHistogramFactory(treeFactory.create()) }
|
@ -1,23 +0,0 @@
|
||||
package scientifik.kmath.aida
|
||||
|
||||
import hep.aida.IHistogram1D
|
||||
import hep.aida.IHistogram2D
|
||||
|
||||
fun Iterable<Double>.histogram(range: ClosedFloatingPointRange<Double>, bins: Int = 100, path: String = ""): IHistogram1D{
|
||||
val h1d = Histograms.create1D(range,bins,path)
|
||||
forEach{
|
||||
h1d.fill(it)
|
||||
}
|
||||
return h1d
|
||||
}
|
||||
|
||||
|
||||
object Histograms {
|
||||
fun create1D(range: ClosedFloatingPointRange<Double>, bins: Int = 100, path: String = ""): IHistogram1D {
|
||||
return histogramFactory.createHistogram1D(path, bins, range.start, range.endInclusive)
|
||||
}
|
||||
|
||||
fun create2D(xRange: ClosedFloatingPointRange<Double>, yRange: ClosedFloatingPointRange<Double>, xBins: Int = 100, yBins: Int = 100, path: String = ""): IHistogram2D {
|
||||
return histogramFactory.createHistogram2D(path, xBins, xRange.start, xRange.endInclusive, yBins, yRange.start, yRange.endInclusive)
|
||||
}
|
||||
}
|
@ -0,0 +1,42 @@
|
||||
package scientifik.kmath.histogram
|
||||
|
||||
import scientifik.kmath.linear.RealVector
|
||||
import scientifik.kmath.operations.Space
|
||||
|
||||
/**
|
||||
* The bin in the histogram. The histogram is by definition always done in the real space
|
||||
*/
|
||||
interface Bin {
|
||||
/**
|
||||
* The value of this bin
|
||||
*/
|
||||
val value: Number
|
||||
val center: RealVector
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new bin with zero count corresponding to given point
|
||||
*/
|
||||
interface BinFactory<out B : Bin> {
|
||||
fun createBin(point: RealVector): B
|
||||
}
|
||||
|
||||
interface Histogram<out B : Bin> : Iterable<B> {
|
||||
|
||||
/**
|
||||
* Find existing bin, corresponding to given coordinates
|
||||
*/
|
||||
fun findBin(point: RealVector): B?
|
||||
|
||||
/**
|
||||
* Dimension of the histogram
|
||||
*/
|
||||
val dimension: Int
|
||||
}
|
||||
|
||||
interface HistogramSpace<B : Bin, H : Histogram<B>> : Space<H> {
|
||||
/**
|
||||
* Rules for performing operations on bins
|
||||
*/
|
||||
val binSpace: Space<Bin>
|
||||
}
|
@ -181,7 +181,6 @@ interface Vector<T : Any> : SpaceElement<Vector<T>, VectorSpace<T>> {
|
||||
fun ofReal(size: Int, initializer: (Int) -> Double) =
|
||||
ArrayVector(ArrayVectorSpace(size, DoubleField, realNDFieldFactory), initializer)
|
||||
|
||||
|
||||
fun equals(v1: Vector<*>, v2: Vector<*>): Boolean {
|
||||
if (v1 === v2) return true
|
||||
if (v1.context != v2.context) return false
|
||||
@ -268,6 +267,8 @@ class ArrayVector<T : Any> internal constructor(override val context: ArrayVecto
|
||||
override val self: ArrayVector<T> get() = this
|
||||
}
|
||||
|
||||
typealias RealVector = Vector<Double>
|
||||
|
||||
/**
|
||||
* A group of methods to resolve equation A dot X = B, where A and B are matrices or vectors
|
||||
*/
|
||||
|
@ -10,6 +10,5 @@ enableFeaturePreview('GRADLE_METADATA')
|
||||
|
||||
rootProject.name = 'kmath'
|
||||
include ':kmath-core'
|
||||
include ':kmath-aida'
|
||||
include ':kmath-jmh'
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user