List of usage examples for org.apache.commons.configuration CompositeConfiguration getString
public String getString(String key, String defaultValue)
From source file:mpaf.Main.java
public static void main(String[] args) { // Apache commons configuration CompositeConfiguration config = new CompositeConfiguration(); try {//from w w w. ja va 2 s .c o m XMLConfiguration user = new XMLConfiguration("mpaf.properties.user.xml"); XMLConfiguration defaults = new XMLConfiguration("mpaf.properties.default.xml"); // careful configuration is read from top to bottom if you want a // config to overwrite the user config, add it as first element // also make it optional to load, check if the file exists and THEN // load it! if (user != null) config.addConfiguration(user); config.addConfiguration(defaults); } catch (ConfigurationException e1) { e1.printStackTrace(); } SqlHandler sqlH = null; sqlH = new SqlHandler(); sqlH.setDbtype(config.getString("db.type", "sqlite")); sqlH.setDbhost(config.getString("db.host", "127.0.0.1")); sqlH.setDbport(config.getString("db.port", "3306")); sqlH.setDbname(config.getString("db.name", "mpaf.db")); sqlH.setDbuser(config.getString("db.user")); sqlH.setDbpass(config.getString("db.password")); IceModel iceM = new IceModel(config); IceController iceC; try { iceC = new IceController(iceM, sqlH.getConnection()); } catch (ClassNotFoundException e1) { // TODO Auto-generated catch block e1.printStackTrace(); return; } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); return; } Server server = new Server(); ConsoleParser parser = new ConsoleParser(iceC, iceM, server); new Thread(parser).start(); // will be called once a shutdown event is thrown(like ctrl+c or sigkill // etc.) ShutdownThread shutdown = new ShutdownThread(iceC); Runtime.getRuntime().addShutdownHook(new Thread(shutdown)); if (config.getBoolean("jetty.enabled")) { SocketConnector connector = new SocketConnector(); connector.setPort(config.getInt("jetty.ports.http", 10001)); server.setConnectors(new Connector[] { connector }); ServletContextHandler servletC = new ServletContextHandler(ServletContextHandler.SESSIONS); servletC.setContextPath("/"); servletC.setAttribute("sqlhandler", sqlH); servletC.setAttribute("iceController", iceC); servletC.setAttribute("iceModel", iceM); // To add a servlet: ServletHolder holder = new ServletHolder(new DefaultCacheServlet()); holder.setInitParameter("cacheControl", "max-age=3600,public"); holder.setInitParameter("resourceBase", "web"); servletC.addServlet(holder, "/"); servletC.addServlet(new ServletHolder(new ServerList()), "/serverlist"); servletC.addServlet(new ServletHolder(new ChannelList()), "/channellist"); servletC.addServlet(new ServletHolder(new HandlerList()), "/handlerlist"); servletC.addServlet(new ServletHolder(new ServerManage()), "/servermanage"); servletC.addServlet(new ServletHolder(new Login()), "/login"); servletC.addServlet(new ServletHolder(new Logout()), "/logout"); servletC.addServlet(new ServletHolder(new UserCreate()), "/usercreate"); servletC.addServlet(new ServletHolder(new UserInfo()), "/userinfo"); servletC.addServlet(new ServletHolder(new UserList()), "/userlist"); server.setHandler(servletC); try { server.start(); server.join(); } catch (Exception e) { e.printStackTrace(); } } }
From source file:de.berber.kindle.annotator.lib.Annotation.java
/** * Creates a new annotation with a {@code configuration}, a {@code prefix} * for configuration lookups and a {@code page} number. */// w w w .ja v a2 s . c o m protected Annotation(final @Nonnull CompositeConfiguration configuration, final @Nonnull String prefix, final @Nonnegative int page) { this.page = page; color = configuration.getString(prefix + ".color", color); opacity = configuration.getFloat(prefix + ".opacity", opacity); }
From source file:ffx.crystal.Crystal.java
/** * <p>/*from w w w . j a v a 2s . c o m*/ * checkProperties</p> * * @param properties a * {@link org.apache.commons.configuration.CompositeConfiguration} object. * @return a {@link ffx.crystal.Crystal} object. */ public static Crystal checkProperties(CompositeConfiguration properties) { double a = properties.getDouble("a-axis", -1.0); double b = properties.getDouble("b-axis", -1.0); double c = properties.getDouble("c-axis", -1.0); double alpha = properties.getDouble("alpha", -1.0); double beta = properties.getDouble("beta", -1.0); double gamma = properties.getDouble("gamma", -1.0); String sg = properties.getString("spacegroup", null); sg = SpaceGroup.pdb2ShortName(sg); if (a < 0.0 || b < 0.0 || c < 0.0 || alpha < 0.0 || beta < 0.0 || gamma < 0.0 || sg == null) { return null; } // check the space group name is valid SpaceGroup spaceGroup = SpaceGroup.spaceGroupFactory(sg); if (spaceGroup == null) { sg = sg.replaceAll(" ", ""); spaceGroup = SpaceGroup.spaceGroupFactory(sg); if (spaceGroup == null) { return null; } } return new Crystal(a, b, c, alpha, beta, gamma, sg); }
From source file:ffx.algorithms.MolecularDynamics.java
/** * <p>// w w w . j av a2 s.c o m * Constructor for MolecularDynamics.</p> * * @param assembly a {@link ffx.potential.MolecularAssembly} object. * @param potentialEnergy a {@link ffx.numerics.Potential} object. * @param properties a * {@link org.apache.commons.configuration.CompositeConfiguration} object. * @param listener a {@link ffx.algorithms.AlgorithmListener} object. * @param requestedThermostat a * {@link ffx.algorithms.Thermostat.Thermostats} object. * @param requestedIntegrator a * {@link ffx.algorithms.Integrator.Integrators} object. */ public MolecularDynamics(MolecularAssembly assembly, Potential potentialEnergy, CompositeConfiguration properties, AlgorithmListener listener, Thermostats requestedThermostat, Integrators requestedIntegrator) { this.molecularAssembly = assembly; assemblies = new ArrayList<>(); assemblies.add(new AssemblyInfo(assembly)); this.algorithmListener = listener; this.potential = potentialEnergy; assemblies.get(0).props = properties; mass = potentialEnergy.getMass(); numberOfVariables = potentialEnergy.getNumberOfVariables(); x = new double[numberOfVariables]; v = new double[numberOfVariables]; a = new double[numberOfVariables]; aPrevious = new double[numberOfVariables]; grad = new double[numberOfVariables]; /** * If an Integrator wasn't passed to the MD constructor, check for one * specified as a property. */ if (requestedIntegrator == null) { String integrate = properties.getString("integrate", "beeman").trim(); try { requestedIntegrator = Integrators.valueOf(integrate); } catch (Exception e) { requestedIntegrator = Integrators.BEEMAN; } } switch (requestedIntegrator) { case RESPA: integrator = new Respa(numberOfVariables, x, v, a, aPrevious, mass); break; case STOCHASTIC: double friction = properties.getDouble("friction", 91.0); Stochastic stochastic = new Stochastic(friction, numberOfVariables, x, v, a, mass); if (properties.containsKey("randomseed")) { stochastic.setRandomSeed(properties.getInt("randomseed", 0)); } integrator = stochastic; /** * The stochastic dynamics integration procedure will thermostat * the system. The ADIABTIC thermostat just serves to report the * temperature and initialize velocities if necessary. */ requestedThermostat = Thermostats.ADIABATIC; break; case VELOCITYVERLET: integrator = new VelocityVerlet(numberOfVariables, x, v, a, mass); break; case BEEMAN: default: integrator = new BetterBeeman(numberOfVariables, x, v, a, aPrevious, mass); } /** * If a Thermostat wasn't passed to the MD constructor, check for one * specified as a property. */ if (requestedThermostat == null) { String thermo = properties.getString("thermostat", "Berendsen").trim(); try { requestedThermostat = Thermostats.valueOf(thermo); } catch (Exception e) { requestedThermostat = Thermostats.BERENDSEN; } } switch (requestedThermostat) { case BERENDSEN: double tau = properties.getDouble("tau-temperature", 0.2); thermostat = new Berendsen(numberOfVariables, x, v, mass, potentialEnergy.getVariableTypes(), 300.0, tau); break; case BUSSI: tau = properties.getDouble("tau-temperature", 0.2); thermostat = new Bussi(numberOfVariables, x, v, mass, potentialEnergy.getVariableTypes(), 300.0, tau); break; case ADIABATIC: default: thermostat = new Adiabatic(numberOfVariables, x, v, mass, potentialEnergy.getVariableTypes()); } if (properties.containsKey("randomseed")) { thermostat.setRandomSeed(properties.getInt("randomseed", 0)); } /** * For StochasticDynamics, center of mass motion will not be removed. */ if (integrator instanceof Stochastic) { thermostat.setRemoveCenterOfMassMotion(false); } done = true; }
From source file:cc.kune.wave.server.CustomSettingsBinder.java
/** * Bind configuration parameters into Guice Module. * * @param propertyFile the property file * @param settingsArg the settings arg/*www . jav a 2 s. c o m*/ * @return a Guice module configured with setting support. * @throws ConfigurationException on configuration error */ public static Module bindSettings(String propertyFile, Class<?>... settingsArg) throws ConfigurationException { final CompositeConfiguration config = new CompositeConfiguration(); config.addConfiguration(new SystemConfiguration()); config.addConfiguration(new PropertiesConfiguration(propertyFile)); List<Field> fields = new ArrayList<Field>(); for (Class<?> settings : settingsArg) { fields.addAll(Arrays.asList(settings.getDeclaredFields())); } // Reflect on settings class and absorb settings final Map<Setting, Field> settings = new LinkedHashMap<Setting, Field>(); for (Field field : fields) { if (!field.isAnnotationPresent(Setting.class)) { continue; } // Validate target type SettingTypeValidator typeHelper = supportedSettingTypes.get(field.getType()); if (typeHelper == null || !typeHelper.check(field.getGenericType())) { throw new IllegalArgumentException(field.getType() + " is not one of the supported setting types"); } Setting setting = field.getAnnotation(Setting.class); settings.put(setting, field); } // Now validate them List<String> missingProperties = new ArrayList<String>(); for (Setting setting : settings.keySet()) { if (setting.defaultValue().isEmpty()) { if (!config.containsKey(setting.name())) { missingProperties.add(setting.name()); } } } if (missingProperties.size() > 0) { StringBuilder error = new StringBuilder(); error.append("The following required properties are missing from the server configuration: "); error.append(Joiner.on(", ").join(missingProperties)); throw new ConfigurationException(error.toString()); } // bundle everything up in an injectable guice module return new AbstractModule() { @Override protected void configure() { // We must iterate the settings a third time when binding. // Note: do not collapse these loops as that will damage // early error detection. The runtime is still O(n) in setting count. for (Map.Entry<Setting, Field> entry : settings.entrySet()) { Class<?> type = entry.getValue().getType(); Setting setting = entry.getKey(); if (int.class.equals(type)) { Integer defaultValue = null; if (!setting.defaultValue().isEmpty()) { defaultValue = Integer.parseInt(setting.defaultValue()); } bindConstant().annotatedWith(Names.named(setting.name())) .to(config.getInteger(setting.name(), defaultValue)); } else if (boolean.class.equals(type)) { Boolean defaultValue = null; if (!setting.defaultValue().isEmpty()) { defaultValue = Boolean.parseBoolean(setting.defaultValue()); } bindConstant().annotatedWith(Names.named(setting.name())) .to(config.getBoolean(setting.name(), defaultValue)); } else if (String.class.equals(type)) { bindConstant().annotatedWith(Names.named(setting.name())) .to(config.getString(setting.name(), setting.defaultValue())); } else { String[] value = config.getStringArray(setting.name()); if (value.length == 0 && !setting.defaultValue().isEmpty()) { value = setting.defaultValue().split(","); } bind(new TypeLiteral<List<String>>() { }).annotatedWith(Names.named(setting.name())).toInstance(ImmutableList.copyOf(value)); } } } }; }
From source file:ffx.xray.CNSFilter.java
/** * {@inheritDoc}//from w w w . j a va 2 s . c o m */ @Override public boolean readFile(File cnsFile, ReflectionList reflectionlist, DiffractionRefinementData refinementdata, CompositeConfiguration properties) { int nread, nres, nignore, nfriedel, ncut; boolean transpose = false; StringBuilder sb = new StringBuilder(); sb.append(String.format("\n Opening %s\n", cnsFile.getName())); if (refinementdata.rfreeflag < 0) { refinementdata.setFreeRFlag(1); sb.append(String.format(" Setting R free flag to CNS default: %d\n", refinementdata.rfreeflag)); } try { BufferedReader br = new BufferedReader(new FileReader(cnsFile)); String str; boolean hashkl, hasfo, hassigfo, hasfree; int ih, ik, il, free; double fo, sigfo; hashkl = hasfo = hassigfo = hasfree = false; ih = ik = il = free = -1; fo = sigfo = -1.0; // check if HKLs need to be transposed or not HKL mate = new HKL(); int nposignore = 0; int ntransignore = 0; while ((str = br.readLine()) != null) { String strarray[] = str.split("\\s+"); for (int i = 0; i < strarray.length; i++) { if (strarray[i].toLowerCase().startsWith("inde")) { if (i < strarray.length - 3) { ih = Integer.parseInt(strarray[i + 1]); ik = Integer.parseInt(strarray[i + 2]); il = Integer.parseInt(strarray[i + 3]); boolean friedel = reflectionlist.findSymHKL(ih, ik, il, mate, false); HKL hklpos = reflectionlist.getHKL(mate); if (hklpos == null) { nposignore++; } friedel = reflectionlist.findSymHKL(ih, ik, il, mate, true); HKL hkltrans = reflectionlist.getHKL(mate); if (hkltrans == null) { ntransignore++; } } } } } if (nposignore > ntransignore) { transpose = true; } // column identifiers fostring = sigfostring = rfreestring = null; if (properties != null) { fostring = properties.getString("fostring", null); sigfostring = properties.getString("sigfostring", null); rfreestring = properties.getString("rfreestring", null); } // reopen to start at beginning br = new BufferedReader(new FileReader(cnsFile)); // read in data double anofsigf[][] = new double[refinementdata.n][4]; for (int i = 0; i < refinementdata.n; i++) { anofsigf[i][0] = anofsigf[i][1] = anofsigf[i][2] = anofsigf[i][3] = Double.NaN; } nread = nres = nignore = nfriedel = ncut = 0; while ((str = br.readLine()) != null) { String strarray[] = str.split("\\s+"); for (int i = 0; i < strarray.length; i++) { if (strarray[i].toLowerCase().startsWith("inde")) { if (hashkl && hasfo && hassigfo && hasfree) { boolean friedel = reflectionlist.findSymHKL(ih, ik, il, mate, transpose); HKL hkl = reflectionlist.getHKL(mate); if (hkl != null) { if (refinementdata.fsigfcutoff > 0.0 && (fo / sigfo) < refinementdata.fsigfcutoff) { ncut++; } else if (friedel) { anofsigf[hkl.index()][2] = fo; anofsigf[hkl.index()][3] = sigfo; nfriedel++; } else if (!friedel) { anofsigf[hkl.index()][0] = fo; anofsigf[hkl.index()][1] = sigfo; } refinementdata.setFreeR(hkl.index(), free); nread++; } else { HKL tmp = new HKL(ih, ik, il); if (!reflectionlist.resolution .inInverseResSqRange(Crystal.invressq(reflectionlist.crystal, tmp))) { nres++; } else { nignore++; } } } hashkl = false; hasfo = false; hassigfo = false; hasfree = false; if (i < strarray.length - 3) { ih = Integer.parseInt(strarray[i + 1]); ik = Integer.parseInt(strarray[i + 2]); il = Integer.parseInt(strarray[i + 3]); hashkl = true; } } if (strarray[i].toLowerCase().startsWith("fobs=") || strarray[i].equalsIgnoreCase(fostring + "=")) { fo = Double.parseDouble(strarray[i + 1]); hasfo = true; } if (strarray[i].toLowerCase().startsWith("sigma=") || strarray[i].equalsIgnoreCase(sigfostring + "=")) { sigfo = Double.parseDouble(strarray[i + 1]); hassigfo = true; } if (strarray[i].toLowerCase().startsWith("test=") || strarray[i].equalsIgnoreCase(rfreestring + "=")) { free = Integer.parseInt(strarray[i + 1]); hasfree = true; } } } br.close(); // set up fsigf from F+ and F- refinementdata.generate_fsigf_from_anofsigf(anofsigf); } catch (IOException ioe) { System.out.println("IO Exception: " + ioe.getMessage()); return false; } sb.append(String.format("# HKL read in: %d\n", nread)); sb.append(String.format("# HKL read as friedel mates: %d\n", nfriedel)); sb.append(String.format("# HKL NOT read in (too high resolution): %d\n", nres)); sb.append(String.format("# HKL NOT read in (not in internal list?): %d\n", nignore)); sb.append(String.format("# HKL NOT read in (F/sigF cutoff): %d\n", ncut)); sb.append(String.format("# HKL in internal list: %d\n", reflectionlist.hkllist.size())); if (logger.isLoggable(Level.INFO)) { logger.info(sb.toString()); } return true; }
From source file:ffx.xray.parsers.CNSFilter.java
/** * {@inheritDoc}/* w ww .j a v a 2 s. c om*/ */ @Override public boolean readFile(File cnsFile, ReflectionList reflectionList, DiffractionRefinementData refinementData, CompositeConfiguration properties) { int nRead, nRes, nIgnore, nFriedel, nCut; boolean transpose = false; StringBuilder sb = new StringBuilder(); sb.append(format("\n Opening %s\n", cnsFile.getName())); if (refinementData.rfreeflag < 0) { refinementData.setFreeRFlag(1); sb.append(format(" Setting R free flag to CNS default: %d\n", refinementData.rfreeflag)); } try { BufferedReader br = new BufferedReader(new FileReader(cnsFile)); boolean hasHKL, hasFo, hasSigFo, hasFree; int ih, ik, il, free; double fo, sigFo; hasHKL = hasFo = hasSigFo = hasFree = false; ih = ik = il = free = -1; fo = sigFo = -1.0; // Check if HKLs need to be transposed or not. HKL mate = new HKL(); int nPosIgnore = 0; int nTransIgnore = 0; String string; while ((string = br.readLine()) != null) { String strArray[] = string.split("\\s+"); for (int i = 0; i < strArray.length; i++) { if (strArray[i].toLowerCase().startsWith("inde")) { if (i < strArray.length - 3) { ih = Integer.parseInt(strArray[i + 1]); ik = Integer.parseInt(strArray[i + 2]); il = Integer.parseInt(strArray[i + 3]); boolean friedel = reflectionList.findSymHKL(ih, ik, il, mate, false); HKL hklpos = reflectionList.getHKL(mate); if (hklpos == null) { nPosIgnore++; } friedel = reflectionList.findSymHKL(ih, ik, il, mate, true); HKL hkltrans = reflectionList.getHKL(mate); if (hkltrans == null) { nTransIgnore++; } } } } } if (nPosIgnore > nTransIgnore) { transpose = true; } // column identifiers foString = sigFoString = rFreeString = null; if (properties != null) { foString = properties.getString("fostring", null); sigFoString = properties.getString("sigfostring", null); rFreeString = properties.getString("rfreestring", null); } // reopen to start at beginning br = new BufferedReader(new FileReader(cnsFile)); // read in data double anofSigF[][] = new double[refinementData.n][4]; for (int i = 0; i < refinementData.n; i++) { anofSigF[i][0] = anofSigF[i][1] = anofSigF[i][2] = anofSigF[i][3] = Double.NaN; } nRead = nRes = nIgnore = nFriedel = nCut = 0; while ((string = br.readLine()) != null) { String strArray[] = string.split("\\s+"); for (int i = 0; i < strArray.length; i++) { if (strArray[i].toLowerCase().startsWith("inde")) { if (hasHKL && hasFo && hasSigFo && hasFree) { boolean friedel = reflectionList.findSymHKL(ih, ik, il, mate, transpose); HKL hkl = reflectionList.getHKL(mate); if (hkl != null) { if (refinementData.fsigfcutoff > 0.0 && (fo / sigFo) < refinementData.fsigfcutoff) { nCut++; } else if (friedel) { anofSigF[hkl.index()][2] = fo; anofSigF[hkl.index()][3] = sigFo; nFriedel++; } else if (!friedel) { anofSigF[hkl.index()][0] = fo; anofSigF[hkl.index()][1] = sigFo; } refinementData.setFreeR(hkl.index(), free); nRead++; } else { HKL tmp = new HKL(ih, ik, il); if (!reflectionList.resolution .inInverseResSqRange(Crystal.invressq(reflectionList.crystal, tmp))) { nRes++; } else { nIgnore++; } } } hasHKL = false; hasFo = false; hasSigFo = false; hasFree = false; if (i < strArray.length - 3) { ih = parseInt(strArray[i + 1]); ik = parseInt(strArray[i + 2]); il = parseInt(strArray[i + 3]); hasHKL = true; } } if (strArray[i].toLowerCase().startsWith("fobs=") || strArray[i].equalsIgnoreCase(foString + "=")) { fo = parseDouble(strArray[i + 1]); hasFo = true; } if (strArray[i].toLowerCase().startsWith("sigma=") || strArray[i].equalsIgnoreCase(sigFoString + "=")) { sigFo = parseDouble(strArray[i + 1]); hasSigFo = true; } if (strArray[i].toLowerCase().startsWith("test=") || strArray[i].equalsIgnoreCase(rFreeString + "=")) { free = parseInt(strArray[i + 1]); hasFree = true; } } } br.close(); // Set up fsigf from F+ and F-. refinementData.generate_fsigf_from_anofsigf(anofSigF); } catch (IOException e) { String message = "CNS IO Exception."; logger.log(Level.WARNING, message, e); return false; } if (logger.isLoggable(Level.INFO)) { sb.append(format(" HKL read in: %d\n", nRead)); sb.append(format(" HKL read as friedel mates: %d\n", nFriedel)); sb.append(format(" HKL not read in (too high resolution): %d\n", nRes)); sb.append(format(" HKL not read in (not in internal list?): %d\n", nIgnore)); sb.append(format(" HKL not read in (F/sigF cutoff): %d\n", nCut)); sb.append(format(" HKL in internal list: %d\n", reflectionList.hkllist.size())); logger.info(sb.toString()); } return true; }
From source file:ffx.xray.MTZFilter.java
/** * {@inheritDoc}/*from w w w . j a v a 2 s. c o m*/ */ @Override public ReflectionList getReflectionList(File mtzFile, CompositeConfiguration properties) { ByteOrder b = ByteOrder.nativeOrder(); FileInputStream fis; DataInputStream dis; try { fis = new FileInputStream(mtzFile); dis = new DataInputStream(fis); byte headeroffset[] = new byte[4]; byte bytes[] = new byte[80]; int offset = 0; // eat "MTZ" title dis.read(bytes, offset, 4); String mtzstr = new String(bytes); // header offset dis.read(headeroffset, offset, 4); // machine stamp dis.read(bytes, offset, 4); ByteBuffer bb = ByteBuffer.wrap(bytes); int stamp = bb.order(ByteOrder.BIG_ENDIAN).getInt(); String stampstr = Integer.toHexString(stamp); switch (stampstr.charAt(0)) { case '1': case '3': if (b.equals(ByteOrder.LITTLE_ENDIAN)) { b = ByteOrder.BIG_ENDIAN; } break; case '4': if (b.equals(ByteOrder.BIG_ENDIAN)) { b = ByteOrder.LITTLE_ENDIAN; } break; } bb = ByteBuffer.wrap(headeroffset); int headeroffseti = bb.order(b).getInt(); // skip to header and parse dis.skipBytes((headeroffseti - 4) * 4); for (Boolean parsing = true; parsing; dis.read(bytes, offset, 80)) { mtzstr = new String(bytes); parsing = parseHeader(mtzstr); } } catch (EOFException eof) { System.out.println("EOF reached "); } catch (IOException ioe) { System.out.println("IO Exception: " + ioe.getMessage()); return null; } // column identifiers foString = sigfoString = rfreeString = null; if (properties != null) { foString = properties.getString("fostring", null); sigfoString = properties.getString("sigfostring", null); rfreeString = properties.getString("rfreestring", null); } h = k = l = fo = sigfo = rfree = -1; fplus = sigfplus = fminus = sigfminus = rfreeplus = rfreeminus = -1; fc = phic = -1; boolean print = false; parseColumns(print); parseFcColumns(print); if (fo < 0 && fplus < 0 && sigfo < 0 && sigfplus < 0 && fc < 0 && phic < 0) { logger.info( " The MTZ header contains insufficient information to generate the reflection list.\n For non-default column labels set fostring/sigfostring in the properties file."); return null; } Column c; if (fo > 0) { c = (Column) columns.get(fo); } else if (fplus > 0) { c = (Column) columns.get(fplus); } else { c = (Column) columns.get(fc); } Dataset d = (Dataset) datasets.get(c.id - dsetoffset); if (logger.isLoggable(Level.INFO)) { StringBuilder sb = new StringBuilder(); sb.append(String.format("\n Reading %s\n\n", mtzFile.getName())); sb.append(String.format(" Setting up reflection list based on MTZ file.\n")); sb.append(String.format(" Space group number: %d (name: %s)\n", sgnum, SpaceGroup.spaceGroupNames[sgnum - 1])); sb.append(String.format(" Resolution: %8.3f\n", 0.999999 * resHigh)); sb.append(String.format(" Cell: %8.3f %8.3f %8.3f %8.3f %8.3f %8.3f\n", d.cell[0], d.cell[1], d.cell[2], d.cell[3], d.cell[4], d.cell[5])); logger.info(sb.toString()); } Crystal crystal = new Crystal(d.cell[0], d.cell[1], d.cell[2], d.cell[3], d.cell[4], d.cell[5], SpaceGroup.spaceGroupNames[sgnum - 1]); double sampling = 0.6; if (properties != null) { sampling = properties.getDouble("sampling", 0.6); } Resolution resolution = new Resolution(0.999999 * resHigh, sampling); return new ReflectionList(crystal, resolution, properties); }
From source file:ffx.xray.MTZFilter.java
/** * {@inheritDoc}/*w ww . ja v a 2 s.c o m*/ */ @Override public boolean readFile(File mtzFile, ReflectionList reflectionlist, DiffractionRefinementData refinementdata, CompositeConfiguration properties) { int nread, nignore, nres, nfriedel, ncut; ByteOrder b = ByteOrder.nativeOrder(); FileInputStream fis; DataInputStream dis; boolean transpose = false; StringBuilder sb = new StringBuilder(); //sb.append(String.format("\n Opening %s\n", mtzFile.getName())); try { fis = new FileInputStream(mtzFile); dis = new DataInputStream(fis); byte headeroffset[] = new byte[4]; byte bytes[] = new byte[80]; int offset = 0; // eat "MTZ" title dis.read(bytes, offset, 4); String mtzstr = new String(bytes); // header offset dis.read(headeroffset, offset, 4); // machine stamp dis.read(bytes, offset, 4); ByteBuffer bb = ByteBuffer.wrap(bytes); int stamp = bb.order(ByteOrder.BIG_ENDIAN).getInt(); String stampstr = Integer.toHexString(stamp); switch (stampstr.charAt(0)) { case '1': case '3': if (b.equals(ByteOrder.LITTLE_ENDIAN)) { b = ByteOrder.BIG_ENDIAN; } break; case '4': if (b.equals(ByteOrder.BIG_ENDIAN)) { b = ByteOrder.LITTLE_ENDIAN; } break; } bb = ByteBuffer.wrap(headeroffset); int headeroffseti = bb.order(b).getInt(); // skip to header and parse dis.skipBytes((headeroffseti - 4) * 4); for (Boolean parsing = true; parsing; dis.read(bytes, offset, 80)) { mtzstr = new String(bytes); parsing = parseHeader(mtzstr); } // column identifiers foString = sigfoString = rfreeString = null; if (properties != null) { foString = properties.getString("fostring", null); sigfoString = properties.getString("sigfostring", null); rfreeString = properties.getString("rfreestring", null); } h = k = l = fo = sigfo = rfree = -1; fplus = sigfplus = fminus = sigfminus = rfreeplus = rfreeminus = -1; boolean print = true; parseColumns(print); if (h < 0 || k < 0 || l < 0) { String message = "Fatal error in MTZ file - no H K L indexes?\n"; logger.log(Level.SEVERE, message); return false; } // reopen to start at beginning fis = new FileInputStream(mtzFile); dis = new DataInputStream(fis); // skip initial header dis.skipBytes(80); // check if HKLs need to be transposed or not float data[] = new float[nColumns]; HKL mate = new HKL(); int nposignore = 0; int ntransignore = 0; int nzero = 0; int none = 0; for (int i = 0; i < nReflections; i++) { for (int j = 0; j < nColumns; j++) { dis.read(bytes, offset, 4); bb = ByteBuffer.wrap(bytes); data[j] = bb.order(b).getFloat(); } int ih = (int) data[h]; int ik = (int) data[k]; int il = (int) data[l]; boolean friedel = reflectionlist.findSymHKL(ih, ik, il, mate, false); HKL hklpos = reflectionlist.getHKL(mate); if (hklpos == null) { nposignore++; } friedel = reflectionlist.findSymHKL(ih, ik, il, mate, true); HKL hkltrans = reflectionlist.getHKL(mate); if (hkltrans == null) { ntransignore++; } if (rfree > 0) { if (((int) data[rfree]) == 0) { nzero++; } else if (((int) data[rfree]) == 1) { none++; } } if (rfreeplus > 0) { if (((int) data[rfreeplus]) == 0) { nzero++; } else if (((int) data[rfreeplus]) == 1) { none++; } } if (rfreeminus > 0) { if (((int) data[rfreeminus]) == 0) { nzero++; } else if (((int) data[rfreeminus]) == 1) { none++; } } } if (nposignore > ntransignore) { transpose = true; } if (none > (nzero * 2) && refinementdata.rfreeflag < 0) { refinementdata.setFreeRFlag(0); sb.append(String.format(" Setting R free flag to %d based on MTZ file data.\n", refinementdata.rfreeflag)); } else if (nzero > (none * 2) && refinementdata.rfreeflag < 0) { refinementdata.setFreeRFlag(1); sb.append(String.format(" Setting R free flag to %d based on MTZ file data.\n", refinementdata.rfreeflag)); } else if (refinementdata.rfreeflag < 0) { refinementdata.setFreeRFlag(0); sb.append(String.format(" Setting R free flag to MTZ default: %d\n", refinementdata.rfreeflag)); } // reopen to start at beginning fis = new FileInputStream(mtzFile); dis = new DataInputStream(fis); // skip initial header dis.skipBytes(80); // read in data double anofsigf[][] = new double[refinementdata.n][4]; for (int i = 0; i < refinementdata.n; i++) { anofsigf[i][0] = anofsigf[i][1] = anofsigf[i][2] = anofsigf[i][3] = Double.NaN; } nread = nignore = nres = nfriedel = ncut = 0; for (int i = 0; i < nReflections; i++) { for (int j = 0; j < nColumns; j++) { dis.read(bytes, offset, 4); bb = ByteBuffer.wrap(bytes); data[j] = bb.order(b).getFloat(); } int ih = (int) data[h]; int ik = (int) data[k]; int il = (int) data[l]; boolean friedel = reflectionlist.findSymHKL(ih, ik, il, mate, transpose); HKL hkl = reflectionlist.getHKL(mate); if (hkl != null) { if (fo > 0 && sigfo > 0) { if (refinementdata.fsigfcutoff > 0.0) { if ((data[fo] / data[sigfo]) < refinementdata.fsigfcutoff) { ncut++; continue; } } if (friedel) { anofsigf[hkl.index()][2] = data[fo]; anofsigf[hkl.index()][3] = data[sigfo]; nfriedel++; } else { anofsigf[hkl.index()][0] = data[fo]; anofsigf[hkl.index()][1] = data[sigfo]; } } else { if (fplus > 0 && sigfplus > 0) { if (refinementdata.fsigfcutoff > 0.0) { if ((data[fplus] / data[sigfplus]) < refinementdata.fsigfcutoff) { ncut++; continue; } } anofsigf[hkl.index()][0] = data[fplus]; anofsigf[hkl.index()][1] = data[sigfplus]; } if (fminus > 0 && sigfminus > 0) { if (refinementdata.fsigfcutoff > 0.0) { if ((data[fminus] / data[sigfminus]) < refinementdata.fsigfcutoff) { ncut++; continue; } } anofsigf[hkl.index()][2] = data[fminus]; anofsigf[hkl.index()][3] = data[sigfminus]; } } if (rfree > 0) { refinementdata.setFreeR(hkl.index(), (int) data[rfree]); } else { if (rfreeplus > 0 && rfreeminus > 0) { // not sure what the correct thing to do here is? refinementdata.setFreeR(hkl.index(), (int) data[rfreeplus]); } else if (rfreeplus > 0) { refinementdata.setFreeR(hkl.index(), (int) data[rfreeplus]); } else if (rfreeminus > 0) { refinementdata.setFreeR(hkl.index(), (int) data[rfreeminus]); } } nread++; } else { HKL tmp = new HKL(ih, ik, il); if (!reflectionlist.resolution .inInverseResSqRange(Crystal.invressq(reflectionlist.crystal, tmp))) { nres++; } else { nignore++; } } } // set up fsigf from F+ and F- refinementdata.generate_fsigf_from_anofsigf(anofsigf); sb.append(String.format(" MTZ file type (machine stamp): %s\n", stampstr)); sb.append(String.format(" HKL data is %s\n", transpose ? "transposed" : "not transposed")); sb.append(String.format(" HKL read in: %d\n", nread)); sb.append(String.format(" HKL read as friedel mates: %d\n", nfriedel)); sb.append(String.format(" HKL NOT read in (too high resolution): %d\n", nres)); sb.append(String.format(" HKL NOT read in (not in internal list?): %d\n", nignore)); sb.append(String.format(" HKL NOT read in (F/sigF cutoff): %d\n", ncut)); sb.append( String.format(" HKL in internal list: %d\n", reflectionlist.hkllist.size())); if (logger.isLoggable(Level.INFO)) { logger.info(sb.toString()); } if (rfree < 0 && rfreeplus < 0 && rfreeminus < 0) { refinementdata.generateRFree(); } } catch (EOFException eof) { System.out.println("EOF reached "); return false; } catch (IOException ioe) { System.out.println("IO Exception: " + ioe.getMessage()); return false; } return true; }
From source file:ffx.xray.parsers.MTZFilter.java
/** * {@inheritDoc}/* w ww. ja v a 2 s. c o m*/ */ @Override public boolean readFile(File mtzFile, ReflectionList reflectionList, DiffractionRefinementData refinementData, CompositeConfiguration properties) { int nRead, nIgnore, nRes, nFriedel, nCut; ByteOrder byteOrder = ByteOrder.nativeOrder(); FileInputStream fileInputStream; DataInputStream dataInputStream; boolean transpose = false; StringBuilder sb = new StringBuilder(); try { fileInputStream = new FileInputStream(mtzFile); dataInputStream = new DataInputStream(fileInputStream); byte headerOffset[] = new byte[4]; byte bytes[] = new byte[80]; int offset = 0; // Eat "MTZ" title. dataInputStream.read(bytes, offset, 4); String mtzstr = null; // Header offset. dataInputStream.read(headerOffset, offset, 4); // Machine stamp. dataInputStream.read(bytes, offset, 4); ByteBuffer byteBuffer = ByteBuffer.wrap(bytes); int stamp = byteBuffer.order(ByteOrder.BIG_ENDIAN).getInt(); String stampString = Integer.toHexString(stamp); switch (stampString.charAt(0)) { case '1': case '3': if (byteOrder.equals(ByteOrder.LITTLE_ENDIAN)) { byteOrder = ByteOrder.BIG_ENDIAN; } break; case '4': if (byteOrder.equals(ByteOrder.BIG_ENDIAN)) { byteOrder = ByteOrder.LITTLE_ENDIAN; } break; } byteBuffer = ByteBuffer.wrap(headerOffset); int headerOffsetI = byteBuffer.order(byteOrder).getInt(); // skip to header and parse dataInputStream.skipBytes((headerOffsetI - 4) * 4); for (Boolean parsing = true; parsing; dataInputStream.read(bytes, offset, 80)) { mtzstr = new String(bytes); parsing = parseHeader(mtzstr); } // column identifiers foString = sigFoString = rFreeString = null; if (properties != null) { foString = properties.getString("fostring", null); sigFoString = properties.getString("sigfostring", null); rFreeString = properties.getString("rfreestring", null); } h = k = l = fo = sigFo = rFree = -1; fPlus = sigFPlus = fMinus = sigFMinus = rFreePlus = rFreeMinus = -1; boolean print = true; parseColumns(print); if (h < 0 || k < 0 || l < 0) { String message = "Fatal error in MTZ file - no H K L indexes?\n"; logger.log(Level.SEVERE, message); return false; } // Reopen to start at beginning. fileInputStream = new FileInputStream(mtzFile); dataInputStream = new DataInputStream(fileInputStream); // Skip initial header. dataInputStream.skipBytes(80); // Check if HKLs need to be transposed or not. float data[] = new float[nColumns]; HKL mate = new HKL(); int nPosIgnore = 0; int nTransIgnore = 0; int nZero = 0; int none = 0; for (int i = 0; i < nReflections; i++) { for (int j = 0; j < nColumns; j++) { dataInputStream.read(bytes, offset, 4); byteBuffer = ByteBuffer.wrap(bytes); data[j] = byteBuffer.order(byteOrder).getFloat(); } int ih = (int) data[h]; int ik = (int) data[k]; int il = (int) data[l]; boolean friedel = reflectionList.findSymHKL(ih, ik, il, mate, false); HKL hklpos = reflectionList.getHKL(mate); if (hklpos == null) { nPosIgnore++; } friedel = reflectionList.findSymHKL(ih, ik, il, mate, true); HKL hkltrans = reflectionList.getHKL(mate); if (hkltrans == null) { nTransIgnore++; } if (rFree > 0) { if (((int) data[rFree]) == 0) { nZero++; } else if (((int) data[rFree]) == 1) { none++; } } if (rFreePlus > 0) { if (((int) data[rFreePlus]) == 0) { nZero++; } else if (((int) data[rFreePlus]) == 1) { none++; } } if (rFreeMinus > 0) { if (((int) data[rFreeMinus]) == 0) { nZero++; } else if (((int) data[rFreeMinus]) == 1) { none++; } } } if (nPosIgnore > nTransIgnore) { transpose = true; } if (none > (nZero * 2) && refinementData.rfreeflag < 0) { refinementData.setFreeRFlag(0); sb.append(format(" Setting R free flag to %d based on MTZ file data.\n", refinementData.rfreeflag)); } else if (nZero > (none * 2) && refinementData.rfreeflag < 0) { refinementData.setFreeRFlag(1); sb.append(format(" Setting R free flag to %d based on MTZ file data.\n", refinementData.rfreeflag)); } else if (refinementData.rfreeflag < 0) { refinementData.setFreeRFlag(0); sb.append(format(" Setting R free flag to MTZ default: %d\n", refinementData.rfreeflag)); } // reopen to start at beginning fileInputStream = new FileInputStream(mtzFile); dataInputStream = new DataInputStream(fileInputStream); // skip initial header dataInputStream.skipBytes(80); // read in data double anofSigF[][] = new double[refinementData.n][4]; for (int i = 0; i < refinementData.n; i++) { anofSigF[i][0] = anofSigF[i][1] = anofSigF[i][2] = anofSigF[i][3] = Double.NaN; } nRead = nIgnore = nRes = nFriedel = nCut = 0; for (int i = 0; i < nReflections; i++) { for (int j = 0; j < nColumns; j++) { dataInputStream.read(bytes, offset, 4); byteBuffer = ByteBuffer.wrap(bytes); data[j] = byteBuffer.order(byteOrder).getFloat(); } int ih = (int) data[h]; int ik = (int) data[k]; int il = (int) data[l]; boolean friedel = reflectionList.findSymHKL(ih, ik, il, mate, transpose); HKL hkl = reflectionList.getHKL(mate); if (hkl != null) { if (fo > 0 && sigFo > 0) { if (refinementData.fsigfcutoff > 0.0) { if ((data[fo] / data[sigFo]) < refinementData.fsigfcutoff) { nCut++; continue; } } if (friedel) { anofSigF[hkl.index()][2] = data[fo]; anofSigF[hkl.index()][3] = data[sigFo]; nFriedel++; } else { anofSigF[hkl.index()][0] = data[fo]; anofSigF[hkl.index()][1] = data[sigFo]; } } else { if (fPlus > 0 && sigFPlus > 0) { if (refinementData.fsigfcutoff > 0.0) { if ((data[fPlus] / data[sigFPlus]) < refinementData.fsigfcutoff) { nCut++; continue; } } anofSigF[hkl.index()][0] = data[fPlus]; anofSigF[hkl.index()][1] = data[sigFPlus]; } if (fMinus > 0 && sigFMinus > 0) { if (refinementData.fsigfcutoff > 0.0) { if ((data[fMinus] / data[sigFMinus]) < refinementData.fsigfcutoff) { nCut++; continue; } } anofSigF[hkl.index()][2] = data[fMinus]; anofSigF[hkl.index()][3] = data[sigFMinus]; } } if (rFree > 0) { refinementData.setFreeR(hkl.index(), (int) data[rFree]); } else { if (rFreePlus > 0 && rFreeMinus > 0) { // not sure what the correct thing to do here is? refinementData.setFreeR(hkl.index(), (int) data[rFreePlus]); } else if (rFreePlus > 0) { refinementData.setFreeR(hkl.index(), (int) data[rFreePlus]); } else if (rFreeMinus > 0) { refinementData.setFreeR(hkl.index(), (int) data[rFreeMinus]); } } nRead++; } else { HKL tmp = new HKL(ih, ik, il); if (!reflectionList.resolution .inInverseResSqRange(Crystal.invressq(reflectionList.crystal, tmp))) { nRes++; } else { nIgnore++; } } } // Set up fsigf from F+ and F-. refinementData.generate_fsigf_from_anofsigf(anofSigF); // Log results. if (logger.isLoggable(Level.INFO)) { sb.append(format(" MTZ file type (machine stamp): %s\n", stampString)); sb.append(format(" HKL data is %s\n", transpose ? "transposed" : "not transposed")); sb.append(format(" HKL read in: %d\n", nRead)); sb.append(format(" HKL read as friedel mates: %d\n", nFriedel)); sb.append(format(" HKL NOT read in (too high resolution): %d\n", nRes)); sb.append(format(" HKL NOT read in (not in internal list?): %d\n", nIgnore)); sb.append(format(" HKL NOT read in (F/sigF cutoff): %d\n", nCut)); sb.append(format(" HKL in internal list: %d\n", reflectionList.hkllist.size())); logger.info(sb.toString()); } if (rFree < 0 && rFreePlus < 0 && rFreeMinus < 0) { refinementData.generateRFree(); } } catch (EOFException e) { String message = " MTZ end of file reached."; logger.log(Level.WARNING, message, e); return false; } catch (IOException e) { String message = " MTZ IO Exception."; logger.log(Level.WARNING, message, e); return false; } return true; }