Skip to content
Snippets Groups Projects
Commit 5981d62f authored by Vojtech Moravec's avatar Vojtech Moravec
Browse files

Fixed imports.

parent 48a98ca8
No related branches found
No related tags found
No related merge requests found
...@@ -117,5 +117,11 @@ ...@@ -117,5 +117,11 @@
<artifactId>commons-cli</artifactId> <artifactId>commons-cli</artifactId>
<version>${commons-cli.version}</version> <version>${commons-cli.version}</version>
</dependency> </dependency>
</dependencies> <dependency>
<groupId>org.scijava</groupId>
<artifactId>DataCompressor</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project> </project>
package bdv.server; package bdv.server;
import compression.quantization.scalar.LloydMaxU16ScalarQuantization;
import gnu.trove.impl.sync.TSynchronizedShortByteMap;
import mpicbg.spim.data.SpimDataException; import mpicbg.spim.data.SpimDataException;
import org.apache.commons.cli.*; import org.apache.commons.cli.*;
...@@ -49,12 +51,14 @@ import java.util.Map.Entry; ...@@ -49,12 +51,14 @@ import java.util.Map.Entry;
* {@link Constants#ENABLE_EXPERIMENTAL_FEATURES} set to {@code true}. * {@link Constants#ENABLE_EXPERIMENTAL_FEATURES} set to {@code true}.
* *
* @author Tobias Pietzsch &lt;tobias.pietzsch@gmail.com&gt; * @author Tobias Pietzsch &lt;tobias.pietzsch@gmail.com&gt;
* @author HongKee Moon &lt;moon@mpi-cbg.de&gt; * @author HongKee Moon &lt;moon@mpi-cbg.quantization.de&gt;
*/ */
public class BigDataServer public class BigDataServer
{ {
private static final org.eclipse.jetty.util.log.Logger LOG = Log.getLogger( BigDataServer.class ); private static final org.eclipse.jetty.util.log.Logger LOG = Log.getLogger( BigDataServer.class );
private static LloydMaxU16ScalarQuantization quantizer;
static Parameters getDefaultParameters() static Parameters getDefaultParameters()
{ {
final int port = 8080; final int port = 8080;
...@@ -69,7 +73,7 @@ public class BigDataServer ...@@ -69,7 +73,7 @@ public class BigDataServer
} }
final String thumbnailDirectory = null; final String thumbnailDirectory = null;
final boolean enableManagerContext = false; final boolean enableManagerContext = false;
return new Parameters( port, hostname, new HashMap< String, String >(), thumbnailDirectory, enableManagerContext ); return new Parameters( port, hostname, new HashMap< String, String >(), thumbnailDirectory, enableManagerContext, CellHandler.DumpFile);
} }
public static void main( final String[] args ) throws Exception public static void main( final String[] args ) throws Exception
...@@ -80,6 +84,8 @@ public class BigDataServer ...@@ -80,6 +84,8 @@ public class BigDataServer
if ( params == null ) if ( params == null )
return; return;
CellHandler.DumpFile = params.getDumpFile();
final String thumbnailsDirectoryName = getThumbnailDirectoryPath( params ); final String thumbnailsDirectoryName = getThumbnailDirectoryPath( params );
// Threadpool for multiple connections // Threadpool for multiple connections
...@@ -93,6 +99,10 @@ public class BigDataServer ...@@ -93,6 +99,10 @@ public class BigDataServer
server.setConnectors( new Connector[] { connector } ); server.setConnectors( new Connector[] { connector } );
final String baseURL = "http://" + server.getURI().getHost() + ":" + params.getPort(); final String baseURL = "http://" + server.getURI().getHost() + ":" + params.getPort();
quantizer = new LloydMaxU16ScalarQuantization("D:\\tmp\\server-dump\\initial_load.bin",8);
quantizer.train(true);
// Handler initialization // Handler initialization
final HandlerCollection handlers = new HandlerCollection(); final HandlerCollection handlers = new HandlerCollection();
...@@ -114,6 +124,8 @@ public class BigDataServer ...@@ -114,6 +124,8 @@ public class BigDataServer
handler = statHandler; handler = statHandler;
} }
LOG.info( "Set handler: " + handler ); LOG.info( "Set handler: " + handler );
server.setHandler( handler ); server.setHandler( handler );
LOG.info( "Server Base URL: " + baseURL ); LOG.info( "Server Base URL: " + baseURL );
...@@ -138,15 +150,18 @@ public class BigDataServer ...@@ -138,15 +150,18 @@ public class BigDataServer
private final String thumbnailDirectory; private final String thumbnailDirectory;
private final String dumpFile;
private final boolean enableManagerContext; private final boolean enableManagerContext;
Parameters( final int port, final String hostname, final Map< String, String > datasetNameToXml, final String thumbnailDirectory, final boolean enableManagerContext ) Parameters( final int port, final String hostname, final Map< String, String > datasetNameToXml, final String thumbnailDirectory, final boolean enableManagerContext, final String dumpFile)
{ {
this.port = port; this.port = port;
this.hostname = hostname; this.hostname = hostname;
this.datasetNameToXml = datasetNameToXml; this.datasetNameToXml = datasetNameToXml;
this.thumbnailDirectory = thumbnailDirectory; this.thumbnailDirectory = thumbnailDirectory;
this.enableManagerContext = enableManagerContext; this.enableManagerContext = enableManagerContext;
this.dumpFile = dumpFile;
} }
public int getPort() public int getPort()
...@@ -178,6 +193,10 @@ public class BigDataServer ...@@ -178,6 +193,10 @@ public class BigDataServer
{ {
return enableManagerContext; return enableManagerContext;
} }
public String getDumpFile() {
return dumpFile;
}
} }
@SuppressWarnings( "static-access" ) @SuppressWarnings( "static-access" )
...@@ -217,6 +236,13 @@ public class BigDataServer ...@@ -217,6 +236,13 @@ public class BigDataServer
.withArgName( "DIRECTORY" ) .withArgName( "DIRECTORY" )
.create( "t" ) ); .create( "t" ) );
options.addOption( OptionBuilder
.withDescription( "File in which to store data dump" )
.hasArg()
.withArgName( "DUMP" )
.create( "dump" ) );
if ( Constants.ENABLE_EXPERIMENTAL_FEATURES ) if ( Constants.ENABLE_EXPERIMENTAL_FEATURES )
{ {
options.addOption( OptionBuilder options.addOption( OptionBuilder
...@@ -233,12 +259,16 @@ public class BigDataServer ...@@ -233,12 +259,16 @@ public class BigDataServer
final String portString = cmd.getOptionValue( "p", Integer.toString( defaultParameters.getPort() ) ); final String portString = cmd.getOptionValue( "p", Integer.toString( defaultParameters.getPort() ) );
final int port = Integer.parseInt( portString ); final int port = Integer.parseInt( portString );
final String dumpFile = cmd.getOptionValue("dump", defaultParameters.getDumpFile());
// Getting server name option // Getting server name option
final String serverName = cmd.getOptionValue( "s", defaultParameters.getHostname() ); final String serverName = cmd.getOptionValue( "s", defaultParameters.getHostname() );
// Getting thumbnail directory option // Getting thumbnail directory option
final String thumbnailDirectory = cmd.getOptionValue( "t", defaultParameters.getThumbnailDirectory() ); final String thumbnailDirectory = cmd.getOptionValue( "t", defaultParameters.getThumbnailDirectory() );
final HashMap< String, String > datasets = new HashMap< String, String >( defaultParameters.getDatasets() ); final HashMap< String, String > datasets = new HashMap< String, String >( defaultParameters.getDatasets() );
boolean enableManagerContext = false; boolean enableManagerContext = false;
...@@ -294,7 +324,7 @@ public class BigDataServer ...@@ -294,7 +324,7 @@ public class BigDataServer
if ( datasets.isEmpty() ) if ( datasets.isEmpty() )
throw new IllegalArgumentException( "Dataset list is empty." ); throw new IllegalArgumentException( "Dataset list is empty." );
return new Parameters( port, serverName, datasets, thumbnailDirectory, enableManagerContext ); return new Parameters( port, serverName, datasets, thumbnailDirectory, enableManagerContext, dumpFile );
} }
catch ( final ParseException | IllegalArgumentException e ) catch ( final ParseException | IllegalArgumentException e )
{ {
...@@ -360,7 +390,7 @@ public class BigDataServer ...@@ -360,7 +390,7 @@ public class BigDataServer
final String name = entry.getKey(); final String name = entry.getKey();
final String xmlpath = entry.getValue(); final String xmlpath = entry.getValue();
final String context = "/" + name; final String context = "/" + name;
final CellHandler ctx = new CellHandler( baseURL + context + "/", xmlpath, name, thumbnailsDirectoryName ); final CellHandler ctx = new CellHandler( baseURL + context + "/", xmlpath, name, thumbnailsDirectoryName, quantizer );
ctx.setContextPath( context ); ctx.setContextPath( context );
handlers.addHandler( ctx ); handlers.addHandler( ctx );
} }
......
package bdv.server; package bdv.server;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.io.File; import java.io.*;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;
...@@ -14,6 +10,7 @@ import javax.imageio.ImageIO; ...@@ -14,6 +10,7 @@ import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import compression.quantization.scalar.LloydMaxU16ScalarQuantization;
import org.eclipse.jetty.server.Request; import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.handler.ContextHandler; import org.eclipse.jetty.server.handler.ContextHandler;
import org.eclipse.jetty.util.log.Log; import org.eclipse.jetty.util.log.Log;
...@@ -51,6 +48,8 @@ public class CellHandler extends ContextHandler ...@@ -51,6 +48,8 @@ public class CellHandler extends ContextHandler
private static final org.eclipse.jetty.util.log.Logger LOG = Log.getLogger( CellHandler.class ); private static final org.eclipse.jetty.util.log.Logger LOG = Log.getLogger( CellHandler.class );
public static String DumpFile = "";
private int counter = 0;
private final VolatileGlobalCellCache cache; private final VolatileGlobalCellCache cache;
private final Hdf5VolatileShortArrayLoader loader; private final Hdf5VolatileShortArrayLoader loader;
...@@ -93,12 +92,15 @@ public class CellHandler extends ContextHandler ...@@ -93,12 +92,15 @@ public class CellHandler extends ContextHandler
*/ */
private final String thumbnailFilename; private final String thumbnailFilename;
public CellHandler( final String baseUrl, final String xmlFilename, final String datasetName, final String thumbnailsDirectory ) throws SpimDataException, IOException private LloydMaxU16ScalarQuantization quantizer;
public CellHandler(final String baseUrl, final String xmlFilename, final String datasetName, final String thumbnailsDirectory, final LloydMaxU16ScalarQuantization quantizer) throws SpimDataException, IOException
{ {
final XmlIoSpimDataMinimal io = new XmlIoSpimDataMinimal(); final XmlIoSpimDataMinimal io = new XmlIoSpimDataMinimal();
final SpimDataMinimal spimData = io.load( xmlFilename ); final SpimDataMinimal spimData = io.load( xmlFilename );
final SequenceDescriptionMinimal seq = spimData.getSequenceDescription(); final SequenceDescriptionMinimal seq = spimData.getSequenceDescription();
final Hdf5ImageLoader imgLoader = ( Hdf5ImageLoader ) seq.getImgLoader(); final Hdf5ImageLoader imgLoader = ( Hdf5ImageLoader ) seq.getImgLoader();
this.quantizer = quantizer;
cache = imgLoader.getCacheControl(); cache = imgLoader.getCacheControl();
loader = imgLoader.getShortArrayLoader(); loader = imgLoader.getShortArrayLoader();
...@@ -162,8 +164,12 @@ public class CellHandler extends ContextHandler ...@@ -162,8 +164,12 @@ public class CellHandler extends ContextHandler
cell = cache.getLoadingVolatileCache().get( key, cacheHints, new VolatileCellLoader<>( loader, timepoint, setup, level, cellDims, cellMin ) ); cell = cache.getLoadingVolatileCache().get( key, cacheHints, new VolatileCellLoader<>( loader, timepoint, setup, level, cellDims, cellMin ) );
} }
@SuppressWarnings( "unchecked" ) @SuppressWarnings( "unchecked" )
final short[] data = ( ( VolatileCell< VolatileShortArray > ) cell ).getData().getCurrentStorageArray(); short[] data = ((VolatileCell<VolatileShortArray>) cell).getData().getCurrentStorageArray();
if (quantizer != null) {
data = quantizer.quantize(data);
}
/* /*
* NOTE(Moravec): This is possible place, where to compress data. Image data are inside data array, but we access only part of the image. * NOTE(Moravec): This is possible place, where to compress data. Image data are inside data array, but we access only part of the image.
...@@ -181,6 +187,15 @@ public class CellHandler extends ContextHandler ...@@ -181,6 +187,15 @@ public class CellHandler extends ContextHandler
buf[ j++ ] = ( byte ) ( s & 0xff ); buf[ j++ ] = ( byte ) ( s & 0xff );
} }
if (!DumpFile.equals("")) {
//String requestLog = String.format("%s\\request_%d_%d.data", DumpFile, buf.length, counter++);
FileOutputStream dumpStream = new FileOutputStream(DumpFile, true);
dumpStream.write(buf);
dumpStream.flush();
dumpStream.close();
}
transferedDataSize += buf.length; transferedDataSize += buf.length;
LOG.info(String.format("Total transfered data: [%d KB] [%d MB]", (transferedDataSize/1000), ((transferedDataSize/1000)/1000))); LOG.info(String.format("Total transfered data: [%d KB] [%d MB]", (transferedDataSize/1000), ((transferedDataSize/1000)/1000)));
......
...@@ -16,7 +16,7 @@ import java.net.URISyntaxException; ...@@ -16,7 +16,7 @@ import java.net.URISyntaxException;
/** /**
* Provides a list of available datasets on this {@link BigDataServer} * Provides a list of available datasets on this {@link BigDataServer}
* *
* @author HongKee Moon &lt;moon@mpi-cbg.de&gt; * @author HongKee Moon &lt;moon@mpi-cbg.quantization.de&gt;
*/ */
public class JsonDatasetListHandler extends ContextHandler public class JsonDatasetListHandler extends ContextHandler
{ {
......
...@@ -24,7 +24,7 @@ import java.net.URISyntaxException; ...@@ -24,7 +24,7 @@ import java.net.URISyntaxException;
import java.text.DecimalFormat; import java.text.DecimalFormat;
/** /**
* @author HongKee Moon &lt;moon@mpi-cbg.de&gt; * @author HongKee Moon &lt;moon@mpi-cbg.quantization.de&gt;
* @author Tobias Pietzsch &lt;tobias.pietzsch@gmail.com&gt; * @author Tobias Pietzsch &lt;tobias.pietzsch@gmail.com&gt;
*/ */
public class ManagerHandler extends ContextHandler public class ManagerHandler extends ContextHandler
...@@ -175,7 +175,7 @@ public class ManagerHandler extends ContextHandler ...@@ -175,7 +175,7 @@ public class ManagerHandler extends ContextHandler
CellHandler ctx = null; CellHandler ctx = null;
try try
{ {
ctx = new CellHandler( baseURL + context + "/", fileLocation, datasetName, thumbnailsDirectoryName ); ctx = new CellHandler( baseURL + context + "/", fileLocation, datasetName, thumbnailsDirectoryName, null );
} }
catch ( final SpimDataException e ) catch ( final SpimDataException e )
{ {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment