public void Write(Cell c) { this.Write(c.SnapNum); this.Write(c.PHKey); this.Write(c.Count); try { this.Write(SqlRealArrayMax.FromArray(c.PosToArray())); this.Write(SqlRealArrayMax.FromArray(c.VelToArray())); this.Write(SqlBigIntArrayMax.FromArray(c.IdToArray())); } catch (OverflowException e) { Console.Write(e.Message); } }
/* For writing a row in a snapshot file using arrays */ public void WriteCell(Cell c) { this.Write(c.SnapNum); this.Write(c.PHKey); this.Write(c.Count); try { this.Write(SqlRealArrayMax.FromArray(c.PosToArray())); this.Write(SqlRealArrayMax.FromArray(c.VelToArray())); this.Write(SqlBigIntArrayMax.FromArray(c.IdToArray())); //don't write out the filter //this.WriteFilter(c.filter); } catch (OverflowException e) { Console.Write(e.Message); } }
public void WriteCellRow(Cell c, int first, int rowSize) { int maxBytes = 8000; long[] idArray = c.IdToArray(); float[] posArray = c.PosToArray(); float[] velArray = c.VelToArray(); long[] curIDs = new long[rowSize]; Array.Copy(idArray, first, curIDs, 0, rowSize); float[] curPos = new float[rowSize]; Array.Copy(posArray, first, curPos, 0, rowSize); float[] curVel = new float[rowSize]; Array.Copy(velArray, first, curVel, 0, rowSize); Debug.Assert(rowSize * sizeof(float) * 3 < maxBytes && rowSize * sizeof(long) < maxBytes, "Array size is too big. It is " + rowSize); this.Write(c.SnapNum); this.Write(c.PHKey); this.Write(rowSize); try { this.Write(SqlRealArray.FromArray(curPos)); this.Write(SqlRealArray.FromArray(curVel)); this.Write(SqlBigIntArray.FromArray(curIDs)); //don't write out the filter //this.WriteFilter(c.filter); } catch (OverflowException e) { Console.Write(e.Message); } }
public void WriteUncompressedCell(Cell c, int phbits, double box) { this.Write(c.SnapNum); this.Write(c.PHKey); this.Write(c.x0); this.Write(c.y0); this.Write(c.z0); this.Write(c.Count); this.Write(c.scaleFactorInv); try { this.Write(SqlRealArrayMax.FromArray(c.PosToArray())); this.Write(SqlRealArrayMax.FromArray(c.VelToArray())); this.Write(SqlBigIntArrayMax.FromArray(c.IdToArray())); } catch (OverflowException e) { // TODO: log this in the summary file Console.Write(e.Message); } }
/// <summary> /// Writes a cell to a single row in a table, similarly to WriteCell(Cell), /// but this method compresses the position and velocity arrays to take up half /// the space (each element is 2 bytes instead of 4). It also writes the /// data necessary to decompress the arrays (x0, y0, z0, the inverse scale /// factor, the Peano-Hilbert level, and the box length). /// </summary> /// <param name="c">the cell to write out</param> /// <param name="phbits"> the Peano-Hilbert indexing level</param> /// <param name="box">the length of the box (in Mpc)</param> /// <seealso cref="Cell"/> public void WriteCompressedCell(Cell c, int phbits, double box) { this.Write(c.SnapNum); this.Write(c.PHKey); Int16[] posArray = c.PosToCompressedArray(phbits, box); Int16[] velArray = c.VelToCompressedArray(); this.Write(c.x0); this.Write(c.y0); this.Write(c.z0); this.Write(c.Count); this.Write(c.scaleFactorInv); try { this.Write(SqlSmallIntArrayMax.FromArray(posArray)); this.Write(SqlSmallIntArrayMax.FromArray(velArray)); this.Write(SqlBigIntArrayMax.FromArray(c.IdToArray())); //don't write out the filter //this.WriteFilter(c.filter); } catch (OverflowException e) { // TODO: log this in the summary file Console.Write(e.Message); } }
public void processCell(Cell currentCell, List<DataPoint> datapoints) { long[] cellIds = currentCell.IdToArray(); foreach (DataPoint current in datapoints) { Filter<long> cellFilter = new Filter<long>(2, 0.5f, null, current.filterSize, current.hashFunctions); for (int i = 0; i < cellIds.Length; i++) { cellFilter.Add(cellIds[i]); } current.testFilter(cellFilter); } }