跳转至

CircuitLibDB

QuICT.tools.circuit_library.circuit_lib_sql.CircuitLibDB

CircuitLibDB()
Source code in QuICT/tools/circuit_library/circuit_lib_sql.py
def __init__(self):
    self._file_path = os.path.join(
        os.path.dirname(__file__),
        "../../lib/circuitlib/"
    )
    self._connect = sqlite3.connect(f"{self._file_path}/circuit_library.db")
    self._connect.isolation_level = "EXCLUSIVE"
    self._cursor = self._connect.cursor()

    # Initial Database when first run
    try:
        self._create_table()
    except:
        pass

circuit_filter

circuit_filter(type: str, classify: str, max_width=None, max_size=None, max_depth=None) -> list

Get list of qasm file's name which satisfied the condition.

Source code in QuICT/tools/circuit_library/circuit_lib_sql.py
def circuit_filter(
    self,
    type: str,
    classify: str,
    max_width=None, max_size=None, max_depth=None
) -> list:
    """ Get list of qasm file's name which satisfied the condition. """
    based_sql_cmd = "SELECT NAME FROM CIRCUIT_LIB WHERE "
    condition_cmd = f"TYPE=\'{type}\' AND CLASSIFY=\'{classify}\'"
    if isinstance(max_width, int):
        condition_cmd += f" AND WIDTH<=\'{max_width}\'"
    elif isinstance(max_width, list):
        condition_cmd += f" AND WIDTH>=\'{max_width[0]}\'"
        condition_cmd += f" AND WIDTH<=\'{max_width[1]}\'"

    if max_size is not None:
        condition_cmd += f" AND SIZE<=\'{max_size}\'"

    if max_depth is not None:
        condition_cmd += f" AND DEPTH<=\'{max_depth}\'"

    sql_cmd = based_sql_cmd + condition_cmd
    self._cursor.execute(sql_cmd)

    return self._cursor.fetchall()

clean

clean()

Clean the table data in current DB.

Source code in QuICT/tools/circuit_library/circuit_lib_sql.py
def clean(self):
    """ Clean the table data in current DB. """
    self._cursor.execute("DROP TABLE CIRCUIT_LIB")