예제 #1
0
 def _set_preferences_logging(self):
     from qiskit_chemistry.preferences import Preferences
     from qiskit_chemistry._logging import set_logging_config
     preferences = Preferences()
     config = preferences.get_logging_config()
     if config is not None:
         set_logging_config(config)
예제 #2
0
    def body(self, parent, options):
        from qiskit_chemistry.preferences import Preferences
        from qiskit_chemistry._logging import (get_logging_level, set_logging_config)
        preferences = Preferences()
        logging_config = preferences.get_logging_config()
        if logging_config is not None:
            set_logging_config(logging_config)

        uipreferences = UIPreferences()
        populate = uipreferences.get_populate_defaults(True)
        self._populateDefaults.set(1 if populate else 0)

        credentialsGroup = ttk.LabelFrame(parent,
                                          text='IBMQ Credentials',
                                          padding=(6, 6, 6, 6),
                                          borderwidth=4,
                                          relief=tk.GROOVE)
        credentialsGroup.grid(padx=(7, 7), pady=6, row=0,
                              column=0, sticky='nsew')
        self._credentialsview = CredentialsView(credentialsGroup)

        defaultsGroup = ttk.LabelFrame(parent,
                                       text='Defaults',
                                       padding=(6, 6, 6, 6),
                                       borderwidth=4,
                                       relief=tk.GROOVE)
        defaultsGroup.grid(padx=(7, 7), pady=6, row=1, column=0, sticky='nsw')
        defaultsGroup.columnconfigure(1, pad=7)

        self._checkButton = ttk.Checkbutton(defaultsGroup,
                                            text="Populate on file new/open",
                                            variable=self._populateDefaults)
        self._checkButton.grid(row=0, column=1, sticky='nsw')

        loggingGroup = ttk.LabelFrame(parent,
                                      text='Logging Configuration',
                                      padding=(6, 6, 6, 6),
                                      borderwidth=4,
                                      relief=tk.GROOVE)
        loggingGroup.grid(padx=(7, 7), pady=6, row=2, column=0, sticky='nsw')
        loggingGroup.columnconfigure(1, pad=7)

        loglevel = get_logging_level()

        ttk.Label(loggingGroup,
                  text="Level:",
                  borderwidth=0,
                  anchor=tk.E).grid(row=0, column=0, sticky='nsew')
        self._levelCombo = ttk.Combobox(loggingGroup,
                                        exportselection=0,
                                        state='readonly',
                                        values=list(PreferencesDialog._LOG_LEVELS.values()))
        index = list(PreferencesDialog._LOG_LEVELS.keys()).index(loglevel)
        self._levelCombo.current(index)
        self._levelCombo.grid(row=0, column=1, sticky='nsw')

        self.entry = self._credentialsview.initial_focus
        return self.entry  # initial focus
예제 #3
0
    def apply(self):
        from qiskit_chemistry.preferences import Preferences
        from qiskit_chemistry._logging import (build_logging_config, set_logging_config)
        from qiskit_aqua import disable_ibmq_account
        from qiskit_aqua_cmd import Preferences as AquaPreferences
        try:
            level_name = self._levelCombo.get()
            levels = [key for key, value in PreferencesDialog._LOG_LEVELS.items(
            ) if value == level_name]
            loglevel = levels[0]

            preferences = AquaPreferences()
            disable_ibmq_account(preferences.get_url(), preferences.get_token(), preferences.get_proxies({}))
            self._credentialsview.apply(preferences)
            preferences.save()

            logging_config = build_logging_config(loglevel)

            preferences = Preferences()
            preferences.set_logging_config(logging_config)
            preferences.save()

            set_logging_config(logging_config)

            uipreferences = UIPreferences()
            populate = self._populateDefaults.get()
            uipreferences.set_populate_defaults(False if populate == 0 else True)
            uipreferences.save()

            self._controller.model.get_available_providers()
        except Exception as e:
            self.controller.outputview.write_line(str(e))
예제 #4
0
def set_preferences_logging():
    """
    Update logging setting with latest external packages
    """
    from qiskit_chemistry._logging import get_logging_level, build_logging_config, set_logging_config
    from qiskit_chemistry.preferences import Preferences
    preferences = Preferences()
    logging_level = logging.INFO
    if preferences.get_logging_config() is not None:
        set_logging_config(preferences.get_logging_config())
        logging_level = get_logging_level()

    preferences.set_logging_config(build_logging_config(logging_level))
    preferences.save()
def _discover_preferences_drivers():
    """
    Discovers the chemistry drivers on the directory and subdirectories of the preferences package
    and attempts to register them. Drivers modules should subclass BaseDriver Base class.
    """
    preferences = Preferences()
    packages = preferences.get_packages(Preferences.PACKAGE_TYPE_DRIVERS, [])
    for package in packages:
        try:
            mod = importlib.import_module(package)
            if mod is not None:
                _discover_local_drivers_in_dirs(
                    os.path.dirname(mod.__file__),
                    mod.__name__,
                    names_to_exclude=['__main__'],
                    folders_to_exclude=['__pycache__'])
            else:
                # Ignore package that could not be initialized.
                logger.debug('Failed to import package {}'.format(package))
        except Exception as e:
            # Ignore package that could not be initialized.
            logger.debug('Failed to load package {} error {}'.format(
                package, str(e)))
예제 #6
0
def main_chemistry():
    try:
        from qiskit_chemistry import QiskitChemistry
        from qiskit_chemistry._logging import get_logging_level, build_logging_config, set_logging_config
        from qiskit_chemistry.preferences import Preferences
        parser = argparse.ArgumentParser(
            description='Qiskit Chemistry Command Line Tool')
        parser.add_argument(
            'input',
            metavar='input',
            help='Qiskit Chemistry input file or saved JSON input file')
        group = parser.add_mutually_exclusive_group(required=False)
        group.add_argument('-o',
                           metavar='output',
                           help='Algorithm Results Output file name')
        group.add_argument('-jo',
                           metavar='json output',
                           help='Algorithm JSON Output file name')

        args = parser.parse_args()

        # update logging setting with latest external packages
        preferences = Preferences()
        logging_level = logging.INFO
        if preferences.get_logging_config() is not None:
            set_logging_config(preferences.get_logging_config())
            logging_level = get_logging_level()

        preferences.set_logging_config(build_logging_config(logging_level))
        preferences.save()

        set_logging_config(preferences.get_logging_config())

        solver = QiskitChemistry()

        # check to see if input is json file
        params = None
        try:
            with open(args.input) as json_file:
                params = json.load(json_file)
        except:
            pass

        if params is not None:
            solver.run_algorithm_from_json(params, args.o)
        else:
            if args.jo is not None:
                solver.run_drive_to_jsonfile(args.input, args.jo)
            else:
                result = solver.run(args.input, args.o)
                if result is not None and 'printable' in result:
                    print(
                        '\n\n--------------------------------- R E S U L T ------------------------------------\n'
                    )
                    for line in result['printable']:
                        print(line)
    finally:
        global _ROOT
        if _ROOT is not None:
            _ROOT.destroy()
            _ROOT = None