Code Monkey home page Code Monkey logo

nisq-analyzer's Introduction

NISQ Analyzer

Build Status License

Build

  1. Run mvn package -DskipTests inside the root folder.
  2. When completed, the built product can be found in org.planqk.nisq.analyzer.core/target.

Setup via Docker

  • For running the QuAntiL environment with all its components use the docker-compose of quantil-docker.

  • Otherwise, clone repository:

git clone https://github.com/UST-QuAntiL/nisq-analyzer.git   
git clone [email protected]:UST-QuAntiL/nisq-analyzer.git
  • Start NISQ Analyzer and PostgreSQL containers:
docker-compose pull
docker-compose up

Now the NISQ Analyzer is available on http://localhost:5010/.

Running on Tomcat

Build the project and deploy the WAR file located at org.planqk.nisq.analyzer.core/target to Tomcat.

Make sure you have an accessibly Postgres database and configure the application correspondingly.

Usage via API

Use the HAL Browser or Swagger-UI.

The OpenAPI specification is also statically available:

OpenAPI JSON
OpenAPI YAML

Haftungsausschluss

Dies ist ein Forschungsprototyp. Die Haftung für entgangenen Gewinn, Produktionsausfall, Betriebsunterbrechung, entgangene Nutzungen, Verlust von Daten und Informationen, Finanzierungsaufwendungen sowie sonstige Vermögens- und Folgeschäden ist, außer in Fällen von grober Fahrlässigkeit, Vorsatz und Personenschäden, ausgeschlossen.

Disclaimer of Warranty

Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.

nisq-analyzer's People

Contributors

dependabot[bot] avatar emymaria avatar flxb2 avatar lharzenetter avatar mbeisel avatar philwun avatar salmma avatar timniederhausen avatar timphillip avatar wederbn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nisq-analyzer's Issues

Remove token out of DB

The (Qiskit)-token should not be stored in the DB.
Currently, it is required for the compilation (send via endpoints: selection/compiler-selection/qpu-selection ...) and at the same time stored in the DB for the later execution of analysis/compilation/qpu-selection results. Both via Qiskit-/Pytket-/Forest-Service (see Connectors in NISQ Analyzer).
It is actually (at least) stored in these tables:

  • analysis_job_input_parameters
  • analysis_result_input_parameters
  • compilation_result
  • qpu_selection_result

Instead, the token should not only be sent over the root endpoints (selection/compiler-selection/qpu-selection), but should also be sent over the corresponding execution-endpoints that also require the token to remove the DB dependency.
Therefore, first check again in which cases the token is currently taken out of the DB for processing.
Then, remove the token out of the respective tables and add it to the respective endpoints.

Note: Thereby, refreshToken or bearerToken is NOT meant as it is not stored in the DB - instead, the IBMQ token is meant, required to start an analysis, see, e.g., screenshot.
Bildschirmfoto 2022-05-05 um 08 25 39

Note: Also the UI has to be updated, such that the token is added to the execution requests.

Refactor Code

Implemented functionalities have to be removed:

  • support estimatedDepth and estimatedWidth rules

Acceptance Criteria:

  1. remove expectedDepth, expectedWidth rules
  2. remove pre-filtering with expectedDepth, expectedWidth values
  3. use "Constants.QPU_RULE_CONTENT" for QPU selection for transpiled values
  4. remove estimated flag

Do not save provider token in provider class

The credentials for the provider should not be saved in the provider class. They should be passed through to the Qiskit Service.

Acceptance criteria:

  1. Not save the credentials in the provider class
  2. credentials should be handed over to the Qiskit Service
  3. Single token or username and password should be possible

Support selection of SDKs for QPU Selection

In context of Algorithm > Implementation > NISQ Analyzer:
When starting a new analysis, the user should be able to select what SDKs/compilers should be considered for compilation and analysis in the pop-up.
In case the cloud provider is IBMQ, pytket and Qiskit should be selectable (and shown).
In case the cloud provider is Rigetti, pytket and Forest should be selectable (and shown).

Note: At least one of the presented SDKs has to be selected, otherwise the analysis can not start.

Based on the selection, the compilersToUse list should be set.

Update tests and define GitHub Actions Workflow

  • Update old tests
  • add new ones
  • define GitHub Actions Workflow for automated execution of tests
  • for integration tests start docker containers of SDK Service, QuantumTranspiler, QProv, etc. with latests images in the workflow

Do not show too biq implementations in selection results

If prolog rules estimate, that an implementation is executable but the transpiler (qiskit-service) cannot transpile it because too many qubits are required, the "estimate" flag is false but analysedDepth and analysedWidth is 0.

Therefore, this case should not be shown in response.

Generate Prolog files after restart

After restart prolog files of implementations and qpus that are already saved in the DB should be generated again.

Acceptance Criteria

  1. If implementations, qpus are already saved in db: after restart selection and execution should be possible without having to create them again.

Remove ' ' from String-input-parameter before sending to services

Example:
Request-Body with String-parameter in nisq-analyzer/selection is "Oracle": "'(A | B) & (A | ~B) & (~A | B)'"
' ' required for prolog rules.
Qiskit-Service cannot parse "'(A | B) & (A | ~B) & (~A | B)'" with ' '.
Therefore, for String-parameters the ' ' must be deleted before sending them to the service.

Update JPL version for Prolog

Currently JPL version is too old for Prolog versions => 8.0.
But, currently, maven seems to not support the latest JPL version!
Please find out if there is, currently, really no way.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.