Example usage for org.apache.commons.configuration CompositeConfiguration getString

List of usage examples for org.apache.commons.configuration CompositeConfiguration getString

Introduction

In this page you can find the example usage for org.apache.commons.configuration CompositeConfiguration getString.

Prototype

public String getString(String key, String defaultValue) 

Source Link

Usage

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;
}