- |> List.choose (fun (e, neighbors) ->
- if e.State = CellState.Removed
- then
- None
- else
- let minX, minY, maxX, maxY = ellipseWindow e
-
- let nucleusPixels = List<Point>()
- let parasitePixels = List<Point>()
-
- let mutable nbElement = 0
-
- let elements = new Matrix<byte>(maxY - minY + 1, maxX - minX + 1)
- for y = minY to maxY do
- for x = minX to maxX do
- let p = PointF(float32 x, float32 y)
- if pixelOwnedByE p e neighbors
- then
- elements.[y - minY, x - minX] <- 1uy
- nbElement <- nbElement + 1
-
- if nucleusData.[y, x, 0] > 0uy
- then
- nucleusPixels.Add(Point(x, y))
-
- if parasiteData.[y, x, 0] > 0uy
- then
- parasitePixels.Add(Point(x, y))
-
- let parasiteArea =
- if nucleusPixels.Count > 0
- then
- seq {
- for parasitePixel in parasitePixels do
- if nucleusPixels.Exists(fun p -> pown (p.X - parasitePixel.X) 2 + pown (p.Y - parasitePixel.Y) 2 <= diameterParasiteSquared)
- then yield 1 } |> Seq.sum
- else
- 0
+ |> List.choose (
+ fun (e, neighbors) ->
+ if e.State = CellState.Removed then
+ None
+ else
+ let minX, minY, maxX, maxY = ellipseWindow e
+
+ let nucleusPixels = List<Point>()
+ let parasitePixels = List<Point>()
+
+ let mutable nbElement = 0
+
+ let elements = new Matrix<byte>(maxY - minY + 1, maxX - minX + 1)
+ for y = minY to maxY do
+ for x = minX to maxX do
+ let p = PointF(float32 x, float32 y)
+ if pixelOwnedByE p e neighbors then
+ elements.[y - minY, x - minX] <- 1uy
+ nbElement <- nbElement + 1
+
+ if nucleusData.[y, x, 0] > 0uy then
+ nucleusPixels.Add(Point(x, y))
+
+ if parasiteData.[y, x, 0] > 0uy then
+ parasitePixels.Add(Point(x, y))
+
+ let parasiteArea =
+ if nucleusPixels.Count > 0 then
+ seq {
+ for parasitePixel in parasitePixels do
+ if nucleusPixels.Exists(fun p -> pown (p.X - parasitePixel.X) 2 + pown (p.Y - parasitePixel.Y) 2 <= diameterParasiteSquared) then
+ yield 1
+ } |> Seq.sum
+ else
+ 0