List of usage examples for java.io BufferedWriter close
@SuppressWarnings("try") public void close() throws IOException
From source file:graticules2wld.Main.java
/** * @param args/* w w w . j a va2s .c o m*/ * @throws Exception */ public static void main(String[] args) throws Exception { /* parse the command line arguments */ // create the command line parser CommandLineParser parser = new PosixParser(); // create the Options Options options = new Options(); options.addOption("x", "originx", true, "x component of projected coordinates of upper left pixel"); options.addOption("y", "originy", true, "y component of projected coordinates of upper left pixel"); options.addOption("u", "tometers", true, "multiplication factor to get source units into meters"); options.addOption("h", "help", false, "prints this usage page"); options.addOption("d", "debug", false, "prints debugging information to stdout"); double originNorthing = 0; double originEasting = 0; String inputFileName = null; String outputFileName = null; try { // parse the command line arguments CommandLine line = parser.parse(options, args); if (line.hasOption("help")) printUsage(0); // print usage then exit using a non error exit status if (line.hasOption("debug")) debug = true; // these arguments are required if (!line.hasOption("originy") || !line.hasOption("originx")) printUsage(1); originNorthing = Double.parseDouble(line.getOptionValue("originy")); originEasting = Double.parseDouble(line.getOptionValue("originx")); if (line.hasOption("tometers")) unitsToMeters = Double.parseDouble(line.getOptionValue("tometers")); // two args should be left. the input csv file name and the output wld file name. String[] iofiles = line.getArgs(); if (iofiles.length < 2) { printUsage(1); } inputFileName = iofiles[0]; outputFileName = iofiles[1]; } catch (ParseException exp) { System.err.println("Unexpected exception:" + exp.getMessage()); System.exit(1); } // try to open the input file for reading and the output file for writing File graticulesCsvFile; BufferedReader csvReader = null; File wldFile; BufferedWriter wldWriter = null; try { graticulesCsvFile = new File(inputFileName); csvReader = new BufferedReader(new FileReader(graticulesCsvFile)); } catch (IOException exp) { System.err.println("Could not open input file for reading: " + inputFileName); System.exit(1); } try { wldFile = new File(outputFileName); wldWriter = new BufferedWriter(new FileWriter(wldFile)); } catch (IOException exp) { System.err.println("Could not open output file for writing: " + outputFileName); System.exit(1); } // list of lon graticules and lat graticules ArrayList<Graticule> lonGrats = new ArrayList<Graticule>(); ArrayList<Graticule> latGrats = new ArrayList<Graticule>(); // read the source CSV and convert its information into the two ArrayList<Graticule> data structures readCSV(csvReader, lonGrats, latGrats); // we now need to start finding the world file paramaters DescriptiveStatistics stats = new DescriptiveStatistics(); // find theta and phi for (Graticule g : latGrats) { stats.addValue(g.angle()); } double theta = stats.getMean(); // we use the mean of the lat angles as theta if (debug) System.out.println("theta range = " + Math.toDegrees(stats.getMax() - stats.getMin())); stats.clear(); for (Graticule g : lonGrats) { stats.addValue(g.angle()); } double phi = stats.getMean(); // ... and the mean of the lon angles for phi if (debug) System.out.println("phi range = " + Math.toDegrees(stats.getMax() - stats.getMin())); stats.clear(); // print these if in debug mode if (debug) { System.out.println("theta = " + Math.toDegrees(theta) + "deg"); System.out.println("phi = " + Math.toDegrees(phi) + "deg"); } // find x and y (distance beteen pixels in map units) Collections.sort(latGrats); Collections.sort(lonGrats); int prevMapValue = 0; //fixme: how to stop warning about not being initilised? Line2D prevGratPixelSys = new Line2D.Double(); boolean first = true; for (Graticule g : latGrats) { if (!first) { int deltaMapValue = Math.abs(g.realValue() - prevMapValue); double deltaPixelValue = (g.l.ptLineDist(prevGratPixelSys.getP1()) + (g.l.ptLineDist(prevGratPixelSys.getP2()))) / 2; double delta = deltaMapValue / deltaPixelValue; stats.addValue(delta); } else { first = false; prevMapValue = g.realValue(); prevGratPixelSys = (Line2D) g.l.clone(); } } double y = stats.getMean(); if (debug) System.out.println("y range = " + (stats.getMax() - stats.getMin())); stats.clear(); first = true; for (Graticule g : lonGrats) { if (!first) { int deltaMapValue = g.realValue() - prevMapValue; double deltaPixelValue = (g.l.ptLineDist(prevGratPixelSys.getP1()) + (g.l.ptLineDist(prevGratPixelSys.getP2()))) / 2; double delta = deltaMapValue / deltaPixelValue; stats.addValue(delta); } else { first = false; prevMapValue = g.realValue(); prevGratPixelSys = (Line2D) g.l.clone(); } } double x = stats.getMean(); if (debug) System.out.println("x range = " + (stats.getMax() - stats.getMin())); stats.clear(); if (debug) { System.out.println("x = " + x); System.out.println("y = " + y); } SimpleRegression regression = new SimpleRegression(); // C, F are translation terms: x, y map coordinates of the center of the upper-left pixel for (Graticule g : latGrats) { // find perp dist to pixel space 0,0 Double perpPixelDist = g.l.ptLineDist(new Point2D.Double(0, 0)); // find the map space distance from this graticule to the center of the 0,0 pixel Double perpMapDist = perpPixelDist * y; // perpMapDist / perpPixelDist = y regression.addData(perpMapDist, g.realValue()); } double F = regression.getIntercept(); regression.clear(); for (Graticule g : lonGrats) { // find perp dist to pixel space 0,0 Double perpPixelDist = g.l.ptLineDist(new Point2D.Double(0, 0)); // find the map space distance from this graticule to the center of the 0,0 pixel Double perpMapDist = perpPixelDist * x; // perpMapDist / perpPixelDist = x regression.addData(perpMapDist, g.realValue()); } double C = regression.getIntercept(); regression.clear(); if (debug) { System.out.println("Upper Left pixel has coordinates " + C + ", " + F); } // convert to meters C *= unitsToMeters; F *= unitsToMeters; // C,F store the projected (in map units) coordinates of the upper left pixel. // originNorthing,originEasting is the offset we need to apply to 0,0 to push the offsets into our global coordinate system C = originEasting + C; F = originNorthing + F; // calculate the affine transformation matrix elements double D = -1 * x * unitsToMeters * Math.sin(theta); double A = x * unitsToMeters * Math.cos(theta); double B = y * unitsToMeters * Math.sin(phi); // if should be negative, it'll formed by negative sin double E = -1 * y * unitsToMeters * Math.cos(phi); /* * Line 1: A: pixel size in the x-direction in map units/pixel * Line 2: D: rotation about y-axis * Line 3: B: rotation about x-axis * Line 4: E: pixel size in the y-direction in map units, almost always negative[3] * Line 5: C: x-coordinate of the center of the upper left pixel * Line 6: F: y-coordinate of the center of the upper left pixel */ if (debug) { System.out.println("A = " + A); System.out.println("D = " + D); System.out.println("B = " + B); System.out.println("E = " + E); System.out.println("C = " + C); System.out.println("F = " + F); // write the world file System.out.println(); System.out.println("World File:"); System.out.println(A); System.out.println(D); System.out.println(B); System.out.println(E); System.out.println(C); System.out.println(F); } // write to the .wld file wldWriter.write(A + "\n"); wldWriter.write(D + "\n"); wldWriter.write(B + "\n"); wldWriter.write(E + "\n"); wldWriter.write(C + "\n"); wldWriter.write(F + "\n"); wldWriter.close(); }
From source file:json_to_xml_1.java
public static void main(String args[]) { System.out.print("json_to_xml_1 workflow Copyright (C) 2016 Stephan Kreutzer\n" + "This program comes with ABSOLUTELY NO WARRANTY.\n" + "This is free software, and you are welcome to redistribute it\n" + "under certain conditions. See the GNU Affero General Public License 3\n" + "or any later version for details. Also, see the source code repository\n" + "https://github.com/publishing-systems/digital_publishing_workflow_tools/ and\n" + "the project website http://www.publishing-systems.org.\n\n"); json_to_xml_1 converter = json_to_xml_1.getInstance(); converter.getInfoMessages().clear(); try {//w w w . ja v a 2 s .c o m converter.execute(args); } catch (ProgramTerminationException ex) { converter.handleTermination(ex); } if (converter.resultInfoFile != null) { try { BufferedWriter writer = new BufferedWriter( new OutputStreamWriter(new FileOutputStream(converter.resultInfoFile), "UTF-8")); writer.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); writer.write( "<!-- This file was created by json_to_xml_1, which is free software licensed under the GNU Affero General Public License 3 or any later version (see https://github.com/publishing-systems/digital_publishing_workflow_tools/ and http://www.publishing-systems.org). -->\n"); writer.write("<json-to-xml-1-result-information>\n"); if (converter.getInfoMessages().size() <= 0) { writer.write(" <success/>\n"); } else { writer.write(" <success>\n"); writer.write(" <info-messages>\n"); for (int i = 0, max = converter.getInfoMessages().size(); i < max; i++) { InfoMessage infoMessage = converter.getInfoMessages().get(i); writer.write(" <info-message number=\"" + i + "\">\n"); writer.write(" <timestamp>" + infoMessage.getTimestamp() + "</timestamp>\n"); String infoMessageText = infoMessage.getMessage(); String infoMessageId = infoMessage.getId(); String infoMessageBundle = infoMessage.getBundle(); Object[] infoMessageArguments = infoMessage.getArguments(); if (infoMessageBundle != null) { // Ampersand needs to be the first, otherwise it would double-encode // other entities. infoMessageBundle = infoMessageBundle.replaceAll("&", "&"); infoMessageBundle = infoMessageBundle.replaceAll("<", "<"); infoMessageBundle = infoMessageBundle.replaceAll(">", ">"); writer.write(" <id-bundle>" + infoMessageBundle + "</id-bundle>\n"); } if (infoMessageId != null) { // Ampersand needs to be the first, otherwise it would double-encode // other entities. infoMessageId = infoMessageId.replaceAll("&", "&"); infoMessageId = infoMessageId.replaceAll("<", "<"); infoMessageId = infoMessageId.replaceAll(">", ">"); writer.write(" <id>" + infoMessageId + "</id>\n"); } if (infoMessageText != null) { // Ampersand needs to be the first, otherwise it would double-encode // other entities. infoMessageText = infoMessageText.replaceAll("&", "&"); infoMessageText = infoMessageText.replaceAll("<", "<"); infoMessageText = infoMessageText.replaceAll(">", ">"); writer.write(" <message>" + infoMessageText + "</message>\n"); } if (infoMessageArguments != null) { writer.write(" <arguments>\n"); int argumentCount = infoMessageArguments.length; for (int j = 0; j < argumentCount; j++) { if (infoMessageArguments[j] == null) { writer.write(" <argument number=\"" + j + "\">\n"); writer.write(" <class></class>\n"); writer.write(" <value>null</value>\n"); writer.write(" </argument>\n"); continue; } String className = infoMessageArguments[j].getClass().getName(); // Ampersand needs to be the first, otherwise it would double-encode // other entities. className = className.replaceAll("&", "&"); className = className.replaceAll("<", "<"); className = className.replaceAll(">", ">"); String value = infoMessageArguments[j].toString(); // Ampersand needs to be the first, otherwise it would double-encode // other entities. value = value.replaceAll("&", "&"); value = value.replaceAll("<", "<"); value = value.replaceAll(">", ">"); writer.write(" <argument number=\"" + j + "\">\n"); writer.write(" <class>" + className + "</class>\n"); writer.write(" <value>" + value + "</value>\n"); writer.write(" </argument>\n"); } writer.write(" </arguments>\n"); } Exception exception = infoMessage.getException(); if (exception != null) { writer.write(" <exception>\n"); String className = exception.getClass().getName(); // Ampersand needs to be the first, otherwise it would double-encode // other entities. className = className.replaceAll("&", "&"); className = className.replaceAll("<", "<"); className = className.replaceAll(">", ">"); writer.write(" <class>" + className + "</class>\n"); StringWriter stringWriter = new StringWriter(); PrintWriter printWriter = new PrintWriter(stringWriter); exception.printStackTrace(printWriter); String stackTrace = stringWriter.toString(); // Ampersand needs to be the first, otherwise it would double-encode // other entities. stackTrace = stackTrace.replaceAll("&", "&"); stackTrace = stackTrace.replaceAll("<", "<"); stackTrace = stackTrace.replaceAll(">", ">"); writer.write(" <stack-trace>" + stackTrace + "</stack-trace>\n"); writer.write(" </exception>\n"); } writer.write(" </info-message>\n"); } writer.write(" </info-messages>\n"); writer.write(" </success>\n"); } writer.write("</json-to-xml-1-result-information>\n"); writer.flush(); writer.close(); } catch (FileNotFoundException ex) { ex.printStackTrace(); System.exit(-1); } catch (UnsupportedEncodingException ex) { ex.printStackTrace(); System.exit(-1); } catch (IOException ex) { ex.printStackTrace(); System.exit(-1); } } converter.getInfoMessages().clear(); converter.resultInfoFile = null; }
From source file:net.cloudkit.enterprises.ws.SuperPassQueryTest.java
public static void main(String[] args) throws Exception { List<String> params = new ArrayList<>(); // System.out.println(SuperPassQueryTest.class.getResource("/list.dat").toURI()); Path path = Paths.get(SuperPassQueryTest.class.getResource("/list.dat").toURI()); try (BufferedReader reader = Files.newBufferedReader(path, Charset.forName("UTF-8"))) { // System.out.println(reader.readLine().length()); String line;/*w ww . j av a 2s . c om*/ while ((line = reader.readLine()) != null) { // System.out.println("TEXT LINE:" + line); params.add(line); } } Path succeededFile = Paths.get(SuperPassQueryTest.class.getResource("/succeeded.dat").toURI()); BufferedWriter succeededWriter = Files.newBufferedWriter(succeededFile, StandardCharsets.UTF_8, StandardOpenOption.APPEND); Path failedFile = Paths.get(SuperPassQueryTest.class.getResource("/failed.dat").toURI()); BufferedWriter failedWriter = Files.newBufferedWriter(failedFile, StandardCharsets.UTF_8, StandardOpenOption.APPEND); for (String param : params) { try { /* StringTokenizer stringTokenizer = new StringTokenizer(param, ","); while(stringTokenizer.hasMoreTokens()){ System.out.println("COUNT:" + stringTokenizer.countTokens()); System.out.println("VALUE:" + stringTokenizer.nextToken()); System.out.println("COUNT:" + stringTokenizer.countTokens()); } */ System.out.println("QUERY PARAMS:" + param); String[] paramArray = param.split(","); // System.out.println("VALUE:" + paramArray[0]); // System.out.println("VALUE:" + paramArray[1]); // System.out.println("VALUE:" + paramArray[2]); String value_1 = paramArray[0]; String value_2 = paramArray[1]; String value_3 = paramArray[2]; String serviceName = "eport.superpass.spdec.DecQueryListService"; byte[] requestContext = ("<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>\n" + "<RequestContext>\n" + " <Group name=\"SystemInfo\">\n" + " <Key name=\"NAME_FULL\">???</Key>\n" + " <Key name=\"ClientId\">5300001976914</Key>\n" + " <Key name=\"CertNo\">df630b</Key>\n" + " <Key name=\"SaicSysNo\">766350979</Key>\n" + " <Key name=\"DEP_IN_CODE\">5300</Key>\n" + " <Key name=\"REG_CO_CGAC\">4403180237</Key>\n" + " <Key name=\"ENT_SEQ_NO\">000000000000315537</Key>\n" + " <Key name=\"ENT_TYPE\">3</Key>\n" + " <Key name=\"IcCode\">8930000011040</Key>\n" + " <Key name=\"OperatorName\">?</Key>\n" + " <Key name=\"DEP_CODE_CHG\">5305</Key>\n" + " <Key name=\"SessionId\">AE2533938D521A9972186B07BBBEB244</Key>\n" + " </Group>\n" + " <Group name=\"DataPresentation\">\n" + " <Key name=\"SignatureAlgorithm\"/>\n" + " <Key name=\"EncryptAlgorithm\"/>\n" + " <Key name=\"CompressAlgorithm\"/>\n" + " </Group>\n" + " <Group name=\"Default\">\n" + " <Key name=\"clientSystemId\">0400620001</Key>\n" + " <Key name=\"needWebInvoke\">True</Key>\n" + " </Group>\n" + "</RequestContext>").getBytes(); byte[] requestData = ("<?xml version=\"1.0\"?>\n" + "<DecQueryListRequest xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n" + " <OperType>0</OperType>\n" + " <DecType>\n" + " <TrnType>0</TrnType>\n" + " <IEFlag>" + value_3 + "</IEFlag>\n" + " <DecSubType />\n" + " </DecType>\n" + " <CopeCode>766350979</CopeCode>\n" + " <AgentCode>4403180237</AgentCode>\n" + " <SeqNo>" + value_1 + "</SeqNo>\n" + " <UserType>0</UserType>\n" + "</DecQueryListRequest>").getBytes(); Holder<byte[]> responseData = new Holder<>(); // <?xml version="1.0" encoding="UTF-8" standalone="no"?><ResponseContext><ResponseCode>0</ResponseCode><ResponseMessage>success</ResponseMessage><ServiceResponseCode>0</ServiceResponseCode><ServiceResponseMessage>?</ServiceResponseMessage><ExceptionDetail/><Group name="DataPresentation"><Key name="CompressAlgorithm"/><Key name="SignatureAlgorithm"/><Key name="EncryptAlgorithm"/></Group></ResponseContext> // <?xml version="1.0" encoding="UTF-8" standalone="yes"?><DecQueryListResponse><QueryResponseData><EntryId>531820161181010544</EntryId><SeqNo>000000001139524197</SeqNo><BillNo>2016051920160523</BillNo><IEDate>20160621</IEDate><TradeMode>0615</TradeMode><ItemsNum>19</ItemsNum><TrafName></TrafName><Status>O</Status><AgentName>???</AgentName><IEFlag>I</IEFlag><CustomsCode>5318</CustomsCode><DeclTrnRel>0</DeclTrnRel><RetExplain>;?</RetExplain><NoticeDate>2016-06-29</NoticeDate><TradeName>()??</TradeName><ExtendField><DecDeclareSysType>2</DecDeclareSysType><TrnSysType>1</TrnSysType><AssureExamRet>0</AssureExamRet><RelatedDocumentType> </RelatedDocumentType><DeclareSeqNo> </DeclareSeqNo><ExtendField53>P</ExtendField53><ExtendField>21 P</ExtendField></ExtendField><EntryType>M</EntryType></QueryResponseData></DecQueryListResponse> // String responseContext = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><ResponseContext><ResponseCode>0</ResponseCode><ResponseMessage>success</ResponseMessage><ServiceResponseCode>0</ServiceResponseCode><ServiceResponseMessage>?</ServiceResponseMessage><ExceptionDetail/><Group name=\"DataPresentation\"><Key name=\"CompressAlgorithm\"/><Key name=\"SignatureAlgorithm\"/><Key name=\"EncryptAlgorithm\"/></Group></ResponseContext>"; // String queryListResponse = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><DecQueryListResponse><QueryResponseData><EntryId>531820161181010544</EntryId><SeqNo>000000001139524197</SeqNo><BillNo>2016051920160523</BillNo><IEDate>20160621</IEDate><TradeMode>0615</TradeMode><ItemsNum>19</ItemsNum><TrafName></TrafName><Status>O</Status><AgentName>???</AgentName><IEFlag>I</IEFlag><CustomsCode>5318</CustomsCode><DeclTrnRel>0</DeclTrnRel><RetExplain>;?</RetExplain><NoticeDate>2016-06-29</NoticeDate><TradeName>()??</TradeName><ExtendField><DecDeclareSysType>2</DecDeclareSysType><TrnSysType>1</TrnSysType><AssureExamRet>0</AssureExamRet><RelatedDocumentType> </RelatedDocumentType><DeclareSeqNo> </DeclareSeqNo><ExtendField53>P</ExtendField53><ExtendField>21 P</ExtendField></ExtendField><EntryType>M</EntryType></QueryResponseData></DecQueryListResponse>"; String responseContext = new String( superPass.service(serviceName, requestContext, requestData, responseData)); String queryListResponse = new String(responseData.value); System.out.println("RESPONSE_CONTEXT:" + responseContext); System.out.println("QUERY_LIST_RESPONSE:" + queryListResponse); String serviceResponseCode = parsingReceiptStatus(responseContext); System.out.println("SERVICE_RESPONSE_CODE:" + serviceResponseCode); if (serviceResponseCode.equals("0")) { String data = parsingReceiptData(queryListResponse); System.out.println("DATA:" + data); succeededWriter.write(data); succeededWriter.flush(); } else { failedWriter.write(param + "\n"); failedWriter.flush(); } Thread.sleep(6 * 1000); } catch (Exception e) { failedWriter.write(param + "\n"); failedWriter.flush(); } } succeededWriter.close(); failedWriter.close(); }
From source file:com.yahoo.labs.yamall.local.Yamall.java
public static void main(String[] args) { String[] remainingArgs = null; String inputFile = null;/*w w w. ja v a 2 s .c o m*/ String predsFile = null; String saveModelFile = null; String initialModelFile = null; String lossName = null; String parserName = null; String linkName = null; String invertHashName = null; double learningRate = 1; String minPredictionString = null; String maxPredictionString = null; String fmNumberFactorsString = null; int bitsHash; int numberPasses; int holdoutPeriod = 10; boolean testOnly = false; boolean exponentialProgress; double progressInterval; options.addOption("h", "help", false, "displays this help"); options.addOption("t", false, "ignore label information and just test"); options.addOption(Option.builder().hasArg(false).required(false).longOpt("binary") .desc("reports loss as binary classification with -1,1 labels").build()); options.addOption( Option.builder().hasArg(false).required(false).longOpt("solo").desc("uses SOLO optimizer").build()); options.addOption(Option.builder().hasArg(false).required(false).longOpt("pcsolo") .desc("uses Per Coordinate SOLO optimizer").build()); options.addOption(Option.builder().hasArg(false).required(false).longOpt("pistol") .desc("uses PiSTOL optimizer").build()); options.addOption(Option.builder().hasArg(false).required(false).longOpt("kt") .desc("(EXPERIMENTAL) uses KT optimizer").build()); options.addOption(Option.builder().hasArg(false).required(false).longOpt("pckt") .desc("(EXPERIMENTAL) uses Per Coordinate KT optimizer").build()); options.addOption(Option.builder().hasArg(false).required(false).longOpt("pccocob") .desc("(EXPERIMENTAL) uses Per Coordinate COCOB optimizer").build()); options.addOption(Option.builder().hasArg(false).required(false).longOpt("cocob") .desc("(EXPERIMENTAL) uses COCOB optimizer").build()); options.addOption( Option.builder().hasArg(false).required(false).longOpt("fm").desc("Factorization Machine").build()); options.addOption(Option.builder("f").hasArg(true).required(false).desc("final regressor to save") .type(String.class).longOpt("final_regressor").build()); options.addOption(Option.builder("p").hasArg(true).required(false).desc("file to output predictions to") .longOpt("predictions").type(String.class).build()); options.addOption( Option.builder("i").hasArg(true).required(false).desc("initial regressor(s) to load into memory") .longOpt("initial_regressor").type(String.class).build()); options.addOption(Option.builder().hasArg(true).required(false).desc( "specify the loss function to be used. Currently available ones are: absolute, squared (default), hinge, logistic") .longOpt("loss_function").type(String.class).build()); options.addOption(Option.builder().hasArg(true).required(false).desc( "specify the link function used in the output of the predictions. Currently available ones are: identity (default), logistic") .longOpt("link").type(String.class).build()); options.addOption(Option.builder().hasArg(true).required(false) .desc("output human-readable final regressor with feature names").longOpt("invert_hash") .type(String.class).build()); options.addOption( Option.builder("l").hasArg(true).required(false).desc("set (initial) learning Rate, default = 1.0") .longOpt("learning_rate").type(String.class).build()); options.addOption(Option.builder("b").hasArg(true).required(false) .desc("number of bits in the feature table, default = 18").longOpt("bit_precision") .type(String.class).build()); options.addOption(Option.builder("P").hasArg(true).required(false) .desc("progress update frequency, integer: additive; float: multiplicative, default = 2.0") .longOpt("progress").type(String.class).build()); options.addOption(Option.builder().hasArg(true).required(false) .desc("smallest prediction to output, before the link function, default = -50") .longOpt("min_prediction").type(String.class).build()); options.addOption(Option.builder().hasArg(true).required(false) .desc("smallest prediction to output, before the link function, default = 50") .longOpt("max_prediction").type(String.class).build()); options.addOption(Option.builder().hasArg(true).required(false) .desc("ignore namespaces beginning with the characters in <arg>").longOpt("ignore") .type(String.class).build()); options.addOption(Option.builder().hasArg(true).required(false).desc("number of training passes") .longOpt("passes").type(String.class).build()); options.addOption( Option.builder().hasArg(true).required(false).desc("holdout period for test only, default = 10") .longOpt("holdout_period").type(String.class).build()); options.addOption(Option.builder().hasArg(true).required(false) .desc("number of factors for Factorization Machines default = 8").longOpt("fmNumberFactors") .type(String.class).build()); options.addOption(Option.builder().hasArg(true).required(false) .desc("specify the parser to use. Currently available ones are: vw (default), libsvm, tsv") .longOpt("parser").type(String.class).build()); options.addOption(Option.builder().hasArg(true).required(false).desc("schema file for the TSV input") .longOpt("schema").type(String.class).build()); CommandLineParser parser = new DefaultParser(); CommandLine cmd = null; try { cmd = parser.parse(options, args); } catch (ParseException e) { System.out.println("Unrecognized option"); help(); } if (cmd.hasOption("h")) help(); if (cmd.hasOption("t")) testOnly = true; if (cmd.hasOption("binary")) { binary = true; System.out.println("Reporting binary loss"); } initialModelFile = cmd.getOptionValue("i"); predsFile = cmd.getOptionValue("p"); lossName = cmd.getOptionValue("loss_function", "squared"); linkName = cmd.getOptionValue("link", "identity"); saveModelFile = cmd.getOptionValue("f"); learningRate = Double.parseDouble(cmd.getOptionValue("l", "1.0")); bitsHash = Integer.parseInt(cmd.getOptionValue("b", "18")); invertHashName = cmd.getOptionValue("invert_hash"); minPredictionString = cmd.getOptionValue("min_prediction", "-50"); maxPredictionString = cmd.getOptionValue("max_prediction", "50"); fmNumberFactorsString = cmd.getOptionValue("fmNumberFactors", "8"); parserName = cmd.getOptionValue("parser", "vw"); numberPasses = Integer.parseInt(cmd.getOptionValue("passes", "1")); System.out.println("Number of passes = " + numberPasses); if (numberPasses > 1) { holdoutPeriod = Integer.parseInt(cmd.getOptionValue("holdout_period", "10")); System.out.println("Holdout period = " + holdoutPeriod); } remainingArgs = cmd.getArgs(); if (remainingArgs.length == 1) inputFile = remainingArgs[0]; InstanceParser instanceParser = null; if (parserName.equals("vw")) instanceParser = new VWParser(bitsHash, cmd.getOptionValue("ignore"), (invertHashName != null)); else if (parserName.equals("libsvm")) instanceParser = new LIBSVMParser(bitsHash, (invertHashName != null)); else if (parserName.equals("tsv")) { String schema = cmd.getOptionValue("schema"); if (schema == null) { System.out.println("TSV parser requires a schema file."); System.exit(0); } else { String spec = null; try { spec = new String(Files.readAllBytes(Paths.get(schema))); } catch (IOException e) { System.out.println("Error reading the TSV schema file."); e.printStackTrace(); System.exit(0); } instanceParser = new TSVParser(bitsHash, cmd.getOptionValue("ignore"), (invertHashName != null), spec); } } else { System.out.println("Unknown parser."); System.exit(0); } System.out.println("Num weight bits = " + bitsHash); // setup progress String progress = cmd.getOptionValue("P", "2.0"); if (progress.indexOf('.') >= 0) { exponentialProgress = true; progressInterval = (double) Double.parseDouble(progress); } else { exponentialProgress = false; progressInterval = (double) Integer.parseInt(progress); } // min and max predictions minPrediction = (double) Double.parseDouble(minPredictionString); maxPrediction = (double) Double.parseDouble(maxPredictionString); // number of factors for Factorization Machines fmNumberFactors = (int) Integer.parseInt(fmNumberFactorsString); // configure the learner Loss lossFnc = null; LinkFunction link = null; if (initialModelFile == null) { if (cmd.hasOption("kt")) { learner = new KT(bitsHash); } else if (cmd.hasOption("pckt")) { learner = new PerCoordinateKT(bitsHash); } else if (cmd.hasOption("pcsolo")) { learner = new PerCoordinateSOLO(bitsHash); } else if (cmd.hasOption("solo")) { learner = new SOLO(bitsHash); } else if (cmd.hasOption("pccocob")) { learner = new PerCoordinateCOCOB(bitsHash); } else if (cmd.hasOption("cocob")) { learner = new COCOB(bitsHash); } else if (cmd.hasOption("pistol")) { learner = new PerCoordinatePiSTOL(bitsHash); } else if (cmd.hasOption("fm")) { learner = new SGD_FM(bitsHash, fmNumberFactors); } else learner = new SGD_VW(bitsHash); } else { learner = IOLearner.loadLearner(initialModelFile); } // setup link function if (linkName.equals("identity")) { link = new IdentityLinkFunction(); } else if (linkName.equals("logistic")) { link = new LogisticLinkFunction(); } else { System.out.println("Unknown link function."); System.exit(0); } // setup loss function if (lossName.equals("squared")) { lossFnc = new SquareLoss(); } else if (lossName.equals("hinge")) { lossFnc = new HingeLoss(); } else if (lossName.equals("logistic")) { lossFnc = new LogisticLoss(); } else if (lossName.equals("absolute")) { lossFnc = new AbsLoss(); } else { System.out.println("Unknown loss function."); System.exit(0); } learner.setLoss(lossFnc); learner.setLearningRate(learningRate); // maximum range predictions System.out.println("Max prediction = " + maxPrediction + ", Min Prediction = " + minPrediction); // print information about the learner System.out.println(learner.toString()); // print information about the link function System.out.println(link.toString()); // print information about the parser System.out.println(instanceParser.toString()); // print information about ignored namespaces System.out.println("Ignored namespaces = " + cmd.getOptionValue("ignore", "")); long start = System.nanoTime(); FileInputStream fstream; try { BufferedReader br = null; if (inputFile != null) { fstream = new FileInputStream(inputFile); System.out.println("Reading datafile = " + inputFile); br = new BufferedReader(new InputStreamReader(fstream)); } else { System.out.println("Reading from console"); br = new BufferedReader(new InputStreamReader(System.in)); } File fout = null; FileOutputStream fos = null; BufferedWriter bw = null; if (predsFile != null) { fout = new File(predsFile); fos = new FileOutputStream(fout); bw = new BufferedWriter(new OutputStreamWriter(fos)); } try { System.out.println("average example current current current"); System.out.println("loss counter label predict features"); int iter = 0; double cumLoss = 0; double weightedSampleSum = 0; double sPlus = 0; double sMinus = 0; Instance sample = null; boolean justPrinted = false; int pass = 0; ObjectOutputStream ooutTr = null; ObjectOutputStream ooutHO = null; ObjectInputStream oinTr = null; double pred = 0; int limit = 1; double hError = Double.MAX_VALUE; double lastHError = Double.MAX_VALUE; int numTestSample = 0; int numTrainingSample = 0; int idx = 0; if (numberPasses > 1) { ooutTr = new ObjectOutputStream(new FileOutputStream("cache_training.bin")); ooutHO = new ObjectOutputStream(new FileOutputStream("cache_holdout.bin")); oinTr = new ObjectInputStream(new FileInputStream("cache_training.bin")); } do { while (true) { double score; if (pass > 0 && numberPasses > 1) { Instance tmp = (Instance) oinTr.readObject(); if (tmp != null) sample = tmp; else break; } else { String strLine = br.readLine(); if (strLine != null) sample = instanceParser.parse(strLine); else break; } justPrinted = false; idx++; if (numberPasses > 1 && pass == 0 && idx % holdoutPeriod == 0) { // store the current sample for the holdout set ooutHO.writeObject(sample); ooutHO.reset(); numTestSample++; } else { if (numberPasses > 1 && pass == 0) { ooutTr.writeObject(sample); ooutTr.reset(); numTrainingSample++; } iter++; if (testOnly) { // predict the sample score = learner.predict(sample); } else { // predict the sample and update the classifier using the sample score = learner.update(sample); } score = Math.min(Math.max(score, minPrediction), maxPrediction); pred = link.apply(score); if (!binary) cumLoss += learner.getLoss().lossValue(score, sample.getLabel()) * sample.getWeight(); else if (Math.signum(score) != sample.getLabel()) cumLoss += sample.getWeight(); weightedSampleSum += sample.getWeight(); if (sample.getLabel() > 0) sPlus = sPlus + sample.getWeight(); else sMinus = sMinus + sample.getWeight(); // output predictions to file if (predsFile != null) { bw.write(String.format("%.6f %s", pred, sample.getTag())); bw.newLine(); } // print statistics to screen if (iter == limit) { justPrinted = true; System.out.printf("%.6f %12d % .4f % .4f %d\n", cumLoss / weightedSampleSum, iter, sample.getLabel(), pred, sample.getVector().size()); if (exponentialProgress) limit *= progressInterval; else limit += progressInterval; } } } if (numberPasses > 1) { if (pass == 0) { // finished first pass of many // write a null at the end of the files ooutTr.writeObject(null); ooutHO.writeObject(null); ooutTr.flush(); ooutHO.flush(); ooutTr.close(); ooutHO.close(); System.out.println("finished first epoch"); System.out.println(numTrainingSample + " training samples"); System.out.println(numTestSample + " holdout samples saved"); } lastHError = hError; hError = evalHoldoutError(); } if (numberPasses > 1) { System.out.printf("Weighted loss on holdout on epoch %d = %.6f\n", pass + 1, hError); oinTr.close(); oinTr = new ObjectInputStream(new FileInputStream("cache_training.bin")); if (hError > lastHError) { System.out.println("Early stopping"); break; } } pass++; } while (pass < numberPasses); if (justPrinted == false) { System.out.printf("%.6f %12d % .4f % .4f %d\n", cumLoss / weightedSampleSum, iter, sample.getLabel(), pred, sample.getVector().size()); } System.out.println("finished run"); System.out.println(String.format("average loss best constant predictor: %.6f", lossFnc.lossConstantBinaryLabels(sPlus, sMinus))); if (saveModelFile != null) IOLearner.saveLearner(learner, saveModelFile); if (invertHashName != null) IOLearner.saveInvertHash(learner.getWeights(), instanceParser.getInvertHashMap(), invertHashName); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } // close the input stream try { br.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } // close the output stream if (predsFile != null) { try { bw.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } long millis = System.nanoTime() - start; System.out.printf("Elapsed time: %d min, %d sec\n", TimeUnit.NANOSECONDS.toMinutes(millis), TimeUnit.NANOSECONDS.toSeconds(millis) - 60 * TimeUnit.NANOSECONDS.toMinutes(millis)); } catch ( FileNotFoundException e) { System.out.println("Error opening the input file"); e.printStackTrace(); } }
From source file:Main.java
public static void writeFile(File file, String data) throws IOException { FileWriter fstream = new FileWriter(file); BufferedWriter out = new BufferedWriter(fstream); out.write(data);/* w ww .j a v a2 s.c o m*/ out.close(); }
From source file:Main.java
public static File WriteStringToFile(String str) { File tmpFile = null;/*from w w w. j a va 2 s .co m*/ try { tmpFile = File.createTempFile("z4-", ".tmp"); BufferedWriter out = new BufferedWriter(new FileWriter(tmpFile)); out.write(str); out.close(); } catch (IOException e) { e.printStackTrace(); } return tmpFile; }
From source file:FileUtils.java
public static void makeFile(String Path, String content) { try {//from w w w . java 2 s . co m // Create file FileWriter fstream = new FileWriter(Path); BufferedWriter bf = new BufferedWriter(fstream); bf.write(content); // Close the output stream bf.close(); } catch (Exception e) {// Catch exception if any System.err.println("Error: " + e.getMessage()); } }
From source file:Main.java
public static void generateFile(String str) throws Exception { File target = new File(System.getProperty("user.dir") + "/src/sql1.txt"); FileOutputStream fos = new FileOutputStream(target); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos, "utf-8")); bw.write(str.toString());/*ww w.j a v a 2 s .co m*/ bw.close(); }
From source file:Main.java
/** * Write to file in given folder// ww w . j av a 2 s . co m * @param fcontent * @return */ public static boolean writeFile(String fcontent, String path) { /* * Write file contents to file path */ try { File file = new File(path); // If file does not exists, then create it if (!file.exists()) { file.createNewFile(); } FileWriter fw = new FileWriter(file.getAbsoluteFile()); BufferedWriter bw = new BufferedWriter(fw); bw.write(fcontent); bw.close(); return true; } catch (Exception e) { return false; } }
From source file:Main.java
/** * Write in a text file//from w w w . ja va 2 s. c o m * * @param file * in which we write * * @param text * that we write * * @param append * indicates whether or not to append to an existing file * * @throws IOException * Input/Output exceptions */ public static void writeTextFile(File file, String text, boolean append) throws IOException { BufferedWriter writer = new BufferedWriter(new FileWriter(file, append)); writer.write(text); writer.close(); }