diff --git a/docs/source/tutorials/index.rst b/docs/source/tutorials/index.rst index 3770b2bb..84ac037d 100644 --- a/docs/source/tutorials/index.rst +++ b/docs/source/tutorials/index.rst @@ -4,5 +4,5 @@ Tutorials .. toctree:: :maxdepth: 1 - Tutorial-1_getting_started_with_SQuADDS.ipynb + Tutorial-1_Getting_started_with_SQuADDS.ipynb Tutorial-2_Contributing_to_SQuADDS.ipynb diff --git a/squadds/__init__.py b/squadds/__init__.py index e69de29b..27c6cae1 100644 --- a/squadds/__init__.py +++ b/squadds/__init__.py @@ -0,0 +1,12 @@ +import os + +__version__ = '0.1.0' +__license__ = "MIT License" +__copyright__ = 'Sadman Ahmed Shanto, Eli Levenson-Falk 2023' +__author__ = 'Sadman Ahmed Shanto, Eli Levenson-Falk' +__status__ = "Development" +__repo_path__ = os.path.dirname(os.path.abspath(__file__)) +__library_path__ = os.path.join(__repo_path__, "library") + + +from squadds.core.db import SQuADDS_DB \ No newline at end of file diff --git a/squadds/core/__init__.py b/squadds/core/__init__.py index 3ec79d5c..6a93a808 100644 --- a/squadds/core/__init__.py +++ b/squadds/core/__init__.py @@ -1,2 +1,2 @@ from .utils import * -from .selector import * \ No newline at end of file +from .design_patterns import * \ No newline at end of file diff --git a/squadds/core/db.py b/squadds/core/db.py new file mode 100644 index 00000000..8a859f4c --- /dev/null +++ b/squadds/core/db.py @@ -0,0 +1,333 @@ +from squadds.core.design_patterns import SingletonMeta +from datasets import get_dataset_config_names +from datasets import load_dataset +from tabulate import tabulate +import pprint +import pandas as pd + +def flatten_df_second_level(df): + # Initialize an empty dictionary to collect flattened data + flattened_data = {} + + # Iterate over each column in the DataFrame + for column in df.columns: + # Check if the column contains dictionary-like data + if isinstance(df[column].iloc[0], dict): + # Iterate over second-level keys and create new columns + for key in df[column].iloc[0].keys(): + flattened_data[f"{key}"] = df[column].apply(lambda x: x[key] if key in x else None) + else: + # For non-dictionary data, keep as is + flattened_data[column] = df[column] + + # Create a new DataFrame with the flattened data + new_df = pd.DataFrame(flattened_data) + return new_df + + +class SQuADDS_DB(metaclass=SingletonMeta): + + def __init__(self): + self.repo_name = "SQuADDS/SQuADDS_DB" + self.configs = self.supported_config_names() + self.selected_component_name = None + self.selected_component = None + self.selected_data_type = None + self.selected_confg = None + self.selected_qubit = None + self.selected_cavity = None + self.selected_coupler = None + self.selected_system = None + + def supported_components(self): + components = [] + for config in self.configs: + components.append(config.split("-")[0]) + return components + + def supported_component_names(self): + component_names = [] + for config in self.configs: + component_names.append(config.split("-")[1]) + return component_names + + def supported_data_types(self): + data_types = [] + for config in self.configs: + data_types.append(config.split("-")[2]) + return data_types + + def supported_config_names(self): + configs = get_dataset_config_names(self.repo_name) + return configs + + def get_configs(self): + # pretty print the config names + pprint.pprint(self.configs) + + def get_component_names(self, component=None): + if component is None: + print("Please specify a component") + return + if component not in self.supported_components(): + print("Component not supported. Available components are:") + print(self.supported_components()) + return + else: + component_names = [] + for config in self.configs: + if component in config: + component_names.append(config.split("-")[1]) + return component_names + + def view_component_names(self, component=None): + if component is None: + print("Please specify a component") + if component not in self.supported_components(): + print("Component not supported. Available components are:") + print(self.supported_components()+["CLT"]) #TODO: handle dynamically + else: + component_names = [] + for config in self.configs: + if component in config: + component_names.append(config.split("-")[1]) + print(component_names+["CLT"]) #TODO: handle dynamically + + + def view_datasets(self): + components = self.supported_components() + component_names = self.supported_component_names() + data_types = self.supported_data_types() + + # Create a list of rows for the table + table = [components, component_names, data_types] + + # Transpose the table (convert columns to rows) + table = list(map(list, zip(*table))) + + # Print the table with headers + print(tabulate(table, headers=["Component", "Component Name", "Data Available"],tablefmt="fancy_grid")) + + def get_dataset_info(self, component=None, component_name=None, data_type=None): + # do checks + if component is None: + print("Please specify a component") + return + if component_name is None: + print("Please specify a component type") + return + if data_type is None: + print("Please specify a data type") + return + + if component not in self.supported_components(): + print("Component not supported. Available components are:") + print(self.supported_components()) + return + + if component_name not in self.supported_component_names(): + print("Component name not supported. Available component names are:") + print(self.supported_component_names()) + return + if data_type not in self.supported_data_types(): + print("Data type not supported. Available data types are:") + print(self.supported_data_types()) + return + + # print the table of the dataset configs + config = component + "-" + component_name + "-" + data_type + + dataset = load_dataset(self.repo_name, config)["train"] + # describe the dataset and print in table format + print("="*80) + print("Dataset Features:") + pprint.pprint(dataset.features, depth=2) + print("\nDataset Description:") + print(dataset.description) + print("\nDataset Citation:") + print(dataset.citation) + print("\nDataset Homepage:") + print(dataset.homepage) + print("\nDataset License:") + print(dataset.license) + print("\nDataset Size in Bytes:") + print(dataset.size_in_bytes) + print("="*80) + + def view_all_contributors(self): + # Placeholder for the full contributor info + unique_contributors_info = [] + + for config in self.configs: + dataset = load_dataset(self.repo_name, config)["train"] + configs_contrib_info = dataset["contributor"] + + for contrib_info in configs_contrib_info: + # Extracting the relevant information + relevant_info = {key: contrib_info[key] for key in ['uploader', 'PI', 'group', 'institution']} + relevant_info['config'] = config # Add the config to the relevant info + + # Check if this combination of info is already in the list + if not any(existing_info['config'] == config and + existing_info['uploader'] == relevant_info['uploader'] and + existing_info['PI'] == relevant_info['PI'] and + existing_info['group'] == relevant_info['group'] and + existing_info['institution'] == relevant_info['institution'] + for existing_info in unique_contributors_info): + unique_contributors_info.append(relevant_info) + + print(tabulate(unique_contributors_info, headers="keys", tablefmt="fancy_grid")) + + def view_contributors_of_config(self, config): + dataset = load_dataset(self.repo_name, config)["train"] + configs_contrib_info = dataset["contributor"] + unique_contributors_info = [] + + for contrib_info in configs_contrib_info: + # Extracting the relevant information + relevant_info = {key: contrib_info[key] for key in ['uploader', 'PI', 'group', 'institution']} + if relevant_info not in unique_contributors_info: + unique_contributors_info.append(relevant_info) + + print(tabulate(unique_contributors_info, headers='keys', tablefmt="fancy_grid")) + + def view_contributors_of(self, component=None, component_name=None, data_type=None): + config = component + "-" + component_name + "-" + data_type + self.view_contributors_of_config(config) + + def select_components(self, component_dict=None): + # check if dict or string + if isinstance(component_dict, dict): + config = component_dict["component"] + "-" + component_dict["component_name"] + "-" + component_dict["data_type"] + elif isinstance(component_dict, str): + config = component_dict + print("Selected config: ", config) + + def select_system(self, components=None): + # Validation and checks + if isinstance(components, list): + for component in components: + if component not in self.supported_components(): + print(f"Component `{component}` not supported. Available components are:") + print(self.supported_components()) + return + else: + self.selected_system = components + + elif isinstance(components, str): + if components not in self.supported_components(): + print(f"Component `{components}` not supported. Available components are:") + print(self.supported_components()) + return + else: + self.selected_system = components + self.selected_component = components + + def select_qubit(self, qubit=None): + # check whether selected_component is qubit + if (self.selected_system == "qubit") or ("qubit" in self.selected_system): + self.selected_qubit = qubit + self.selected_component_name = qubit + self.selected_data_type = "cap_matrix" # TODO: handle dynamically + else: + raise UserWarning("Selected system is either not specified or does not contain a qubit! Please check `self.selected_system`") + + # check if qubit is supported + if self.selected_qubit not in self.supported_component_names(): + print(f"Qubit `{self.selected_qubit}` not supported. Available qubits are:") + self.view_component_names("qubit") + return + + def select_cavity_claw(self, cavity=None): + # check whether selected_component is cavity + if (self.selected_system == "cavity_claw") or ("cavity_claw" in self.selected_system): + self.selected_cavity = cavity + self.selected_component_name = cavity + self.selected_data_type = "eigenmode" # TODO: handle dynamically + else: + raise UserWarning("Selected system is either not specified or does not contain a cavity! Please check `self.selected_system`") + + # check if cavity is supported + if self.selected_cavity not in self.supported_component_names(): + print(f"Cavity `{self.selected_cavity}` not supported. Available cavities are:") + self.view_component_names("cavity_claw") + return + + def select_cavity(self, cavity=None): + # check whether selected_component is cavity + if (self.selected_system == "cavity") or ("cavity" in self.selected_system): + self.selected_cavity = cavity + self.selected_component_name = cavity + self.selected_data_type = "eigenmode" # TODO: handle dynamically + else: + raise UserWarning("Selected system is either not specified or does not contain a cavity! Please check `self.selected_system`") + + # check if cavity is supported + if self.selected_cavity not in self.supported_component_names(): + print(f"Cavity `{self.selected_cavity}` not supported. Available cavities are:") + self.view_component_names("cavity") + return + + def select_coupler(self, coupler=None): + # check whether selected_component is coupler + self.selected_coupler = coupler + self.selected_component_name = coupler + self.selected_data_type = "cap_matrix" # TODO: handle dynamically + + # check if coupler is supported + if self.selected_coupler not in self.supported_component_names()+["CLT"]: # TODO: handle dynamically + + print(f"Coupler `{self.selected_coupler}` not supported. Available couplers are:") + self.view_component_names("coupler") + return + + def get_dataset(self, data_type=None, component=None, component_name=None): + # Use the instance attributes if the user does not provide them + component = component if component is not None else self.selected_system + component_name = component_name if component_name is not None else self.selected_component_name + + # Check if system and component_name are still None + if component is None or component_name is None: + print("Both system and component name must be defined.") + return + + if data_type is None: + print("Please specify a data type.") + return + + # Check if the component is supported + if component not in self.supported_components(): + print("Component not supported. Available components are:") + print(self.supported_components()) + return + + # Check if the component name is supported + if component_name not in self.supported_component_names(): + print("Component name not supported. Available component names are:") + print(self.supported_component_names()) + return + + # Check if the data type is supported + if data_type not in self.supported_data_types(): + print("Data type not supported. Available data types are:") + print(self.supported_data_types()) + return + + # Construct the configuration string based on the provided or default values + config = f"{component}-{component_name}-{data_type}" + try: + df = load_dataset(self.repo_name, config)["train"].to_pandas() + return flatten_df_second_level(df) + except Exception as e: + print(f"An error occurred while loading the dataset: {e}") + return + + def selected_system_df(self): + if self.selected_system is None: + print("Selected system is not defined.") + return + elif isinstance(self.selected_system, str): + df = self.get_dataset(data_type=self.selected_data_type, component=self.selected_system, component_name=self.selected_component_name) + return df + elif isinstance(self.selected_system, list): + pass diff --git a/squadds/core/design_patterns.py b/squadds/core/design_patterns.py new file mode 100644 index 00000000..7baa4a6c --- /dev/null +++ b/squadds/core/design_patterns.py @@ -0,0 +1,8 @@ +class SingletonMeta(type): + _instances = {} + + def __call__(cls, *args, **kwargs): + if cls not in cls._instances: + instance = super().__call__(*args, **kwargs) + cls._instances[cls] = instance + return cls._instances[cls] diff --git a/squadds/core/selector.py b/squadds/core/selector.py index d44f4793..9bcf98ec 100644 --- a/squadds/core/selector.py +++ b/squadds/core/selector.py @@ -1,4 +1,4 @@ class Selector: - def __init__(self) + def __init__(self): pass \ No newline at end of file diff --git a/squadds/database/db.py b/squadds/database/db.py deleted file mode 100644 index 422d34de..00000000 --- a/squadds/database/db.py +++ /dev/null @@ -1,13 +0,0 @@ -class SQuADDS_DB: - - def __init__(self): - pass - - def get_component_types(self): - pass - - def select_component(self, component_type): - pass - - def get_component(self, component_id): - pass \ No newline at end of file diff --git a/tutorials/Tutorial-1_getting_started_with_SQuADDS.ipynb b/tutorials/Tutorial-1_getting_started_with_SQuADDS.ipynb index 1cfef1ab..f2de987e 100644 --- a/tutorials/Tutorial-1_getting_started_with_SQuADDS.ipynb +++ b/tutorials/Tutorial-1_getting_started_with_SQuADDS.ipynb @@ -19,9 +19,18 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 34, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The autoreload extension is already loaded. To reload it, use:\n", + " %reload_ext autoreload\n" + ] + } + ], "source": [ "%load_ext autoreload\n", "%autoreload 2" @@ -29,9 +38,25 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 35, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Obtaining file:///Users/shanto/LFL/SQuADDS/SQuADDS\n", + " Preparing metadata (setup.py) ... \u001b[?25ldone\n", + "\u001b[?25hInstalling collected packages: SQuADDS\n", + " Attempting uninstall: SQuADDS\n", + " Found existing installation: SQuADDS 0.1\n", + " Uninstalling SQuADDS-0.1:\n", + " Successfully uninstalled SQuADDS-0.1\n", + " Running setup.py develop for SQuADDS\n", + "Successfully installed SQuADDS-0.1\n" + ] + } + ], "source": [ "!pip install -e ../." ] @@ -96,7 +121,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 37, "metadata": {}, "outputs": [], "source": [ @@ -108,11 +133,33 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 39, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['qubit', 'cavity_claw', 'coupler']\n", + "['TransmonCross', 'RouterMeander', 'NCap']\n", + "['cap_matrix', 'eigenmode', 'cap_matrix']\n" + ] + } + ], "source": [ - "configs" + "components = []\n", + "component_names = []\n", + "data_types = []\n", + "\n", + "for config in configs:\n", + " components.append(config.split(\"-\")[0])\n", + " component_names.append(config.split(\"-\")[1])\n", + " data_types.append(config.split(\"-\")[2])\n", + " \n", + "print(components)\n", + "print(component_names)\n", + "print(data_types)\n", + " " ] }, { @@ -143,10 +190,572 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 161, "metadata": {}, "outputs": [], - "source": [] + "source": [ + "from squadds import SQuADDS_DB" + ] + }, + { + "cell_type": "code", + "execution_count": 162, + "metadata": {}, + "outputs": [], + "source": [ + "db = SQuADDS_DB()" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "╒═════════════╤══════════════════╤══════════════════╕\n", + "│ Component │ Component Name │ Data Available │\n", + "╞═════════════╪══════════════════╪══════════════════╡\n", + "│ qubit │ TransmonCross │ cap_matrix │\n", + "├─────────────┼──────────────────┼──────────────────┤\n", + "│ cavity_claw │ RouteMeander │ eigenmode │\n", + "├─────────────┼──────────────────┼──────────────────┤\n", + "│ coupler │ NCap │ cap_matrix │\n", + "╘═════════════╧══════════════════╧══════════════════╛\n" + ] + } + ], + "source": [ + "db.view_datasets()" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "================================================================================\n", + "Dataset Features:\n", + "{'contributor': {'PI': Value(dtype='string', id=None),\n", + " 'date_created': Value(dtype='string', id=None),\n", + " 'group': Value(dtype='string', id=None),\n", + " 'institution': Value(dtype='string', id=None),\n", + " 'uploader': Value(dtype='string', id=None)},\n", + " 'design': {'design_options': {...},\n", + " 'design_tool': Value(dtype='string', id=None)},\n", + " 'notes': {},\n", + " 'sim_options': {'renderer_options': {...},\n", + " 'setup': {...},\n", + " 'simulator': Value(dtype='string', id=None)},\n", + " 'sim_results': {'claw_to_claw': Value(dtype='float64', id=None),\n", + " 'claw_to_ground': Value(dtype='float64', id=None),\n", + " 'cross_to_claw': Value(dtype='float64', id=None),\n", + " 'cross_to_cross': Value(dtype='float64', id=None),\n", + " 'cross_to_ground': Value(dtype='float64', id=None),\n", + " 'ground_to_ground': Value(dtype='float64', id=None),\n", + " 'units': Value(dtype='string', id=None)}}\n", + "\n", + "Dataset Description:\n", + "\n", + "\n", + "Dataset Citation:\n", + "\n", + "\n", + "Dataset Homepage:\n", + "\n", + "\n", + "Dataset License:\n", + "\n", + "\n", + "Dataset Size in Bytes:\n", + "9700839\n", + "================================================================================\n" + ] + } + ], + "source": [ + "db.get_dataset_info(component=\"qubit\", component_name=\"TransmonCross\", data_type=\"cap_matrix\")" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "================================================================================\n", + "Dataset Features:\n", + "{'contributor': {'PI': Value(dtype='string', id=None),\n", + " 'date_created': Value(dtype='string', id=None),\n", + " 'group': Value(dtype='string', id=None),\n", + " 'institution': Value(dtype='string', id=None),\n", + " 'uploader': Value(dtype='string', id=None)},\n", + " 'design': {'coupler_type': Value(dtype='string', id=None),\n", + " 'design_options': {...},\n", + " 'design_tool': Value(dtype='string', id=None)},\n", + " 'notes': {},\n", + " 'sim_options': {'setup': {...}, 'simulator': Value(dtype='string', id=None)},\n", + " 'sim_results': {'cavity_frequency': Value(dtype='float64', id=None),\n", + " 'kappa': Value(dtype='float64', id=None),\n", + " 'units': Value(dtype='string', id=None)}}\n", + "\n", + "Dataset Description:\n", + "\n", + "\n", + "Dataset Citation:\n", + "\n", + "\n", + "Dataset Homepage:\n", + "\n", + "\n", + "Dataset License:\n", + "\n", + "\n", + "Dataset Size in Bytes:\n", + "879111\n", + "================================================================================\n" + ] + } + ], + "source": [ + "db.get_dataset_info(component=\"cavity_claw\", component_name=\"RouteMeander\", data_type=\"eigenmode\")" + ] + }, + { + "cell_type": "code", + "execution_count": 205, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + " | design_options | \n", + "design_tool | \n", + "PI | \n", + "date_created | \n", + "group | \n", + "institution | \n", + "uploader | \n", + "claw_to_claw | \n", + "claw_to_ground | \n", + "cross_to_claw | \n", + "cross_to_cross | \n", + "cross_to_ground | \n", + "ground_to_ground | \n", + "units | \n", + "renderer_options | \n", + "setup | \n", + "simulator | \n", + "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | \n", + "{'aedt_hfss_capacitance': 0, 'aedt_hfss_induct... | \n", + "qiskit-metal | \n", + "Eli Levenson-Falk, PhD | \n", + "2023-09-20-142547 | \n", + "LFL | \n", + "USC | \n", + "Andre Kuo | \n", + "94.97421 | \n", + "90.86585 | \n", + "3.73363 | \n", + "158.40783 | \n", + "158.40783 | \n", + "311.25590 | \n", + "nH | \n", + "{'Cj': 0, 'Lj': '10nH', '_Rj': 0, 'design_name... | \n", + "{'auto_increase_solution_order': True, 'enable... | \n", + "Ansys HFSS | \n", + "
1 | \n", + "{'aedt_hfss_capacitance': 0, 'aedt_hfss_induct... | \n", + "qiskit-metal | \n", + "Eli Levenson-Falk, PhD | \n", + "2023-10-25-153123 | \n", + "LFL | \n", + "USC | \n", + "Andre Kuo | \n", + "82.44280 | \n", + "79.19378 | \n", + "2.93820 | \n", + "188.15089 | \n", + "188.15089 | \n", + "333.52997 | \n", + "nH | \n", + "{'Cj': 0, 'Lj': '10nH', '_Rj': 0, 'design_name... | \n", + "{'auto_increase_solution_order': True, 'enable... | \n", + "Ansys HFSS | \n", + "
2 | \n", + "{'aedt_hfss_capacitance': 0, 'aedt_hfss_induct... | \n", + "qiskit-metal | \n", + "Eli Levenson-Falk, PhD | \n", + "2023-09-20-142547 | \n", + "LFL | \n", + "USC | \n", + "Andre Kuo | \n", + "83.76412 | \n", + "80.18130 | \n", + "3.16131 | \n", + "104.35340 | \n", + "104.35340 | \n", + "237.02548 | \n", + "nH | \n", + "{'Cj': 0, 'Lj': '10nH', '_Rj': 0, 'design_name... | \n", + "{'auto_increase_solution_order': True, 'enable... | \n", + "Ansys HFSS | \n", + "
3 | \n", + "{'aedt_hfss_capacitance': 0, 'aedt_hfss_induct... | \n", + "qiskit-metal | \n", + "Eli Levenson-Falk, PhD | \n", + "2023-10-25-153126 | \n", + "LFL | \n", + "USC | \n", + "Andre Kuo | \n", + "103.37057 | \n", + "97.22405 | \n", + "5.77590 | \n", + "174.13928 | \n", + "174.13928 | \n", + "335.31609 | \n", + "nH | \n", + "{'Cj': 0, 'Lj': '10nH', '_Rj': 0, 'design_name... | \n", + "{'auto_increase_solution_order': True, 'enable... | \n", + "Ansys HFSS | \n", + "
4 | \n", + "{'aedt_hfss_capacitance': 0, 'aedt_hfss_induct... | \n", + "qiskit-metal | \n", + "Eli Levenson-Falk, PhD | \n", + "2023-09-20-142547 | \n", + "LFL | \n", + "USC | \n", + "Andre Kuo | \n", + "68.92854 | \n", + "65.68607 | \n", + "2.87375 | \n", + "120.03923 | \n", + "120.03923 | \n", + "240.34085 | \n", + "nH | \n", + "{'Cj': 0, 'Lj': '10nH', '_Rj': 0, 'design_name... | \n", + "{'auto_increase_solution_order': True, 'enable... | \n", + "Ansys HFSS | \n", + "
... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "
1929 | \n", + "{'aedt_hfss_capacitance': 0, 'aedt_hfss_induct... | \n", + "qiskit-metal | \n", + "Eli Levenson-Falk, PhD | \n", + "2023-09-20-142547 | \n", + "LFL | \n", + "USC | \n", + "Andre Kuo | \n", + "106.43025 | \n", + "101.53197 | \n", + "4.45645 | \n", + "174.46380 | \n", + "174.46380 | \n", + "340.62919 | \n", + "nH | \n", + "{'Cj': 0, 'Lj': '10nH', '_Rj': 0, 'design_name... | \n", + "{'auto_increase_solution_order': True, 'enable... | \n", + "Ansys HFSS | \n", + "
1930 | \n", + "{'aedt_hfss_capacitance': 0, 'aedt_hfss_induct... | \n", + "qiskit-metal | \n", + "Eli Levenson-Falk, PhD | \n", + "2023-09-20-142549 | \n", + "LFL | \n", + "USC | \n", + "Andre Kuo | \n", + "121.10943 | \n", + "112.62570 | \n", + "7.95178 | \n", + "187.43537 | \n", + "187.43537 | \n", + "367.34003 | \n", + "nH | \n", + "{'Cj': 0, 'Lj': '10nH', '_Rj': 0, 'design_name... | \n", + "{'auto_increase_solution_order': True, 'enable... | \n", + "Ansys HFSS | \n", + "
1931 | \n", + "{'aedt_hfss_capacitance': 0, 'aedt_hfss_induct... | \n", + "qiskit-metal | \n", + "Eli Levenson-Falk, PhD | \n", + "2023-10-25-153123 | \n", + "LFL | \n", + "USC | \n", + "Andre Kuo | \n", + "144.56289 | \n", + "136.36810 | \n", + "7.65968 | \n", + "172.14561 | \n", + "172.14561 | \n", + "372.39970 | \n", + "nH | \n", + "{'Cj': 0, 'Lj': '10nH', '_Rj': 0, 'design_name... | \n", + "{'auto_increase_solution_order': True, 'enable... | \n", + "Ansys HFSS | \n", + "
1932 | \n", + "{'aedt_hfss_capacitance': 0, 'aedt_hfss_induct... | \n", + "qiskit-metal | \n", + "Eli Levenson-Falk, PhD | \n", + "2023-09-20-142547 | \n", + "LFL | \n", + "USC | \n", + "Andre Kuo | \n", + "68.76413 | \n", + "65.78116 | \n", + "2.48795 | \n", + "56.75230 | \n", + "56.75230 | \n", + "166.57383 | \n", + "nH | \n", + "{'Cj': 0, 'Lj': '10nH', '_Rj': 0, 'design_name... | \n", + "{'auto_increase_solution_order': True, 'enable... | \n", + "Ansys HFSS | \n", + "
1933 | \n", + "{'aedt_hfss_capacitance': 0, 'aedt_hfss_induct... | \n", + "qiskit-metal | \n", + "Eli Levenson-Falk, PhD | \n", + "2023-09-20-142549 | \n", + "LFL | \n", + "USC | \n", + "Andre Kuo | \n", + "58.45749 | \n", + "55.50796 | \n", + "2.54396 | \n", + "62.01000 | \n", + "62.01000 | \n", + "162.42140 | \n", + "nH | \n", + "{'Cj': 0, 'Lj': '10nH', '_Rj': 0, 'design_name... | \n", + "{'auto_increase_solution_order': True, 'enable... | \n", + "Ansys HFSS | \n", + "
1934 rows × 17 columns
\n", + "\n", + " | design_options | \n", + "design_tool | \n", + "PI | \n", + "date_created | \n", + "group | \n", + "institution | \n", + "uploader | \n", + "claw_to_claw | \n", + "claw_to_ground | \n", + "cross_to_claw | \n", + "cross_to_cross | \n", + "cross_to_ground | \n", + "ground_to_ground | \n", + "units | \n", + "renderer_options | \n", + "setup | \n", + "simulator | \n", + "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | \n", + "{'aedt_hfss_capacitance': 0, 'aedt_hfss_induct... | \n", + "qiskit-metal | \n", + "Eli Levenson-Falk, PhD | \n", + "2023-09-20-142547 | \n", + "LFL | \n", + "USC | \n", + "Andre Kuo | \n", + "94.97421 | \n", + "90.86585 | \n", + "3.73363 | \n", + "158.40783 | \n", + "158.40783 | \n", + "311.25590 | \n", + "nH | \n", + "{'Cj': 0, 'Lj': '10nH', '_Rj': 0, 'design_name... | \n", + "{'auto_increase_solution_order': True, 'enable... | \n", + "Ansys HFSS | \n", + "
1 | \n", + "{'aedt_hfss_capacitance': 0, 'aedt_hfss_induct... | \n", + "qiskit-metal | \n", + "Eli Levenson-Falk, PhD | \n", + "2023-10-25-153123 | \n", + "LFL | \n", + "USC | \n", + "Andre Kuo | \n", + "82.44280 | \n", + "79.19378 | \n", + "2.93820 | \n", + "188.15089 | \n", + "188.15089 | \n", + "333.52997 | \n", + "nH | \n", + "{'Cj': 0, 'Lj': '10nH', '_Rj': 0, 'design_name... | \n", + "{'auto_increase_solution_order': True, 'enable... | \n", + "Ansys HFSS | \n", + "
2 | \n", + "{'aedt_hfss_capacitance': 0, 'aedt_hfss_induct... | \n", + "qiskit-metal | \n", + "Eli Levenson-Falk, PhD | \n", + "2023-09-20-142547 | \n", + "LFL | \n", + "USC | \n", + "Andre Kuo | \n", + "83.76412 | \n", + "80.18130 | \n", + "3.16131 | \n", + "104.35340 | \n", + "104.35340 | \n", + "237.02548 | \n", + "nH | \n", + "{'Cj': 0, 'Lj': '10nH', '_Rj': 0, 'design_name... | \n", + "{'auto_increase_solution_order': True, 'enable... | \n", + "Ansys HFSS | \n", + "
3 | \n", + "{'aedt_hfss_capacitance': 0, 'aedt_hfss_induct... | \n", + "qiskit-metal | \n", + "Eli Levenson-Falk, PhD | \n", + "2023-10-25-153126 | \n", + "LFL | \n", + "USC | \n", + "Andre Kuo | \n", + "103.37057 | \n", + "97.22405 | \n", + "5.77590 | \n", + "174.13928 | \n", + "174.13928 | \n", + "335.31609 | \n", + "nH | \n", + "{'Cj': 0, 'Lj': '10nH', '_Rj': 0, 'design_name... | \n", + "{'auto_increase_solution_order': True, 'enable... | \n", + "Ansys HFSS | \n", + "
4 | \n", + "{'aedt_hfss_capacitance': 0, 'aedt_hfss_induct... | \n", + "qiskit-metal | \n", + "Eli Levenson-Falk, PhD | \n", + "2023-09-20-142547 | \n", + "LFL | \n", + "USC | \n", + "Andre Kuo | \n", + "68.92854 | \n", + "65.68607 | \n", + "2.87375 | \n", + "120.03923 | \n", + "120.03923 | \n", + "240.34085 | \n", + "nH | \n", + "{'Cj': 0, 'Lj': '10nH', '_Rj': 0, 'design_name... | \n", + "{'auto_increase_solution_order': True, 'enable... | \n", + "Ansys HFSS | \n", + "
... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "
1929 | \n", + "{'aedt_hfss_capacitance': 0, 'aedt_hfss_induct... | \n", + "qiskit-metal | \n", + "Eli Levenson-Falk, PhD | \n", + "2023-09-20-142547 | \n", + "LFL | \n", + "USC | \n", + "Andre Kuo | \n", + "106.43025 | \n", + "101.53197 | \n", + "4.45645 | \n", + "174.46380 | \n", + "174.46380 | \n", + "340.62919 | \n", + "nH | \n", + "{'Cj': 0, 'Lj': '10nH', '_Rj': 0, 'design_name... | \n", + "{'auto_increase_solution_order': True, 'enable... | \n", + "Ansys HFSS | \n", + "
1930 | \n", + "{'aedt_hfss_capacitance': 0, 'aedt_hfss_induct... | \n", + "qiskit-metal | \n", + "Eli Levenson-Falk, PhD | \n", + "2023-09-20-142549 | \n", + "LFL | \n", + "USC | \n", + "Andre Kuo | \n", + "121.10943 | \n", + "112.62570 | \n", + "7.95178 | \n", + "187.43537 | \n", + "187.43537 | \n", + "367.34003 | \n", + "nH | \n", + "{'Cj': 0, 'Lj': '10nH', '_Rj': 0, 'design_name... | \n", + "{'auto_increase_solution_order': True, 'enable... | \n", + "Ansys HFSS | \n", + "
1931 | \n", + "{'aedt_hfss_capacitance': 0, 'aedt_hfss_induct... | \n", + "qiskit-metal | \n", + "Eli Levenson-Falk, PhD | \n", + "2023-10-25-153123 | \n", + "LFL | \n", + "USC | \n", + "Andre Kuo | \n", + "144.56289 | \n", + "136.36810 | \n", + "7.65968 | \n", + "172.14561 | \n", + "172.14561 | \n", + "372.39970 | \n", + "nH | \n", + "{'Cj': 0, 'Lj': '10nH', '_Rj': 0, 'design_name... | \n", + "{'auto_increase_solution_order': True, 'enable... | \n", + "Ansys HFSS | \n", + "
1932 | \n", + "{'aedt_hfss_capacitance': 0, 'aedt_hfss_induct... | \n", + "qiskit-metal | \n", + "Eli Levenson-Falk, PhD | \n", + "2023-09-20-142547 | \n", + "LFL | \n", + "USC | \n", + "Andre Kuo | \n", + "68.76413 | \n", + "65.78116 | \n", + "2.48795 | \n", + "56.75230 | \n", + "56.75230 | \n", + "166.57383 | \n", + "nH | \n", + "{'Cj': 0, 'Lj': '10nH', '_Rj': 0, 'design_name... | \n", + "{'auto_increase_solution_order': True, 'enable... | \n", + "Ansys HFSS | \n", + "
1933 | \n", + "{'aedt_hfss_capacitance': 0, 'aedt_hfss_induct... | \n", + "qiskit-metal | \n", + "Eli Levenson-Falk, PhD | \n", + "2023-09-20-142549 | \n", + "LFL | \n", + "USC | \n", + "Andre Kuo | \n", + "58.45749 | \n", + "55.50796 | \n", + "2.54396 | \n", + "62.01000 | \n", + "62.01000 | \n", + "162.42140 | \n", + "nH | \n", + "{'Cj': 0, 'Lj': '10nH', '_Rj': 0, 'design_name... | \n", + "{'auto_increase_solution_order': True, 'enable... | \n", + "Ansys HFSS | \n", + "
1934 rows × 17 columns
\n", + "\n", + " | coupler_type | \n", + "design_options | \n", + "design_tool | \n", + "PI | \n", + "date_created | \n", + "group | \n", + "institution | \n", + "uploader | \n", + "cavity_frequency | \n", + "kappa | \n", + "units | \n", + "setup | \n", + "simulator | \n", + "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | \n", + "CLT | \n", + "{'claw_opts': {'connection_pads': {'readout': ... | \n", + "qiskit-metal | \n", + "Eli Levenson-Falk, PhD | \n", + "2023-12-01-170608 | \n", + "LFL | \n", + "USC | \n", + "Andre Kuo | \n", + "5.353550e+09 | \n", + "161106.598429 | \n", + "Hz | \n", + "{'basis_order': 1, 'max_delta_f': 0.05, 'max_p... | \n", + "Ansys HFSS | \n", + "
1 | \n", + "CLT | \n", + "{'claw_opts': {'connection_pads': {'readout': ... | \n", + "qiskit-metal | \n", + "Eli Levenson-Falk, PhD | \n", + "2023-12-04-124953 | \n", + "LFL | \n", + "USC | \n", + "Andre Kuo | \n", + "8.399241e+09 | \n", + "268412.116632 | \n", + "Hz | \n", + "{'basis_order': 1, 'max_delta_f': 0.05, 'max_p... | \n", + "Ansys HFSS | \n", + "
2 | \n", + "CLT | \n", + "{'claw_opts': {'connection_pads': {'readout': ... | \n", + "qiskit-metal | \n", + "Eli Levenson-Falk, PhD | \n", + "2023-12-09-204334 | \n", + "LFL | \n", + "USC | \n", + "Andre Kuo | \n", + "8.694845e+09 | \n", + "255873.654612 | \n", + "Hz | \n", + "{'basis_order': 1, 'max_delta_f': 0.05, 'max_p... | \n", + "Ansys HFSS | \n", + "
3 | \n", + "CLT | \n", + "{'claw_opts': {'connection_pads': {'readout': ... | \n", + "qiskit-metal | \n", + "Eli Levenson-Falk, PhD | \n", + "2023-12-08-173545 | \n", + "LFL | \n", + "USC | \n", + "Andre Kuo | \n", + "6.616574e+09 | \n", + "30459.761161 | \n", + "Hz | \n", + "{'basis_order': 1, 'max_delta_f': 0.05, 'max_p... | \n", + "Ansys HFSS | \n", + "
4 | \n", + "CLT | \n", + "{'claw_opts': {'connection_pads': {'readout': ... | \n", + "qiskit-metal | \n", + "Eli Levenson-Falk, PhD | \n", + "2023-12-09-204334 | \n", + "LFL | \n", + "USC | \n", + "Andre Kuo | \n", + "7.986835e+09 | \n", + "208304.221064 | \n", + "Hz | \n", + "{'basis_order': 1, 'max_delta_f': 0.05, 'max_p... | \n", + "Ansys HFSS | \n", + "
... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "... | \n", + "
229 | \n", + "CLT | \n", + "{'claw_opts': {'connection_pads': {'readout': ... | \n", + "qiskit-metal | \n", + "Eli Levenson-Falk, PhD | \n", + "2023-12-01-170608 | \n", + "LFL | \n", + "USC | \n", + "Andre Kuo | \n", + "4.949469e+09 | \n", + "126438.881378 | \n", + "Hz | \n", + "{'basis_order': 1, 'max_delta_f': 0.05, 'max_p... | \n", + "Ansys HFSS | \n", + "
230 | \n", + "CLT | \n", + "{'claw_opts': {'connection_pads': {'readout': ... | \n", + "qiskit-metal | \n", + "Eli Levenson-Falk, PhD | \n", + "2023-12-04-124953 | \n", + "LFL | \n", + "USC | \n", + "Andre Kuo | \n", + "8.805442e+09 | \n", + "291439.656224 | \n", + "Hz | \n", + "{'basis_order': 1, 'max_delta_f': 0.05, 'max_p... | \n", + "Ansys HFSS | \n", + "
231 | \n", + "CLT | \n", + "{'claw_opts': {'connection_pads': {'readout': ... | \n", + "qiskit-metal | \n", + "Eli Levenson-Falk, PhD | \n", + "2023-12-06-224829 | \n", + "LFL | \n", + "USC | \n", + "Andre Kuo | \n", + "6.597444e+09 | \n", + "587144.918000 | \n", + "Hz | \n", + "{'basis_order': 1, 'max_delta_f': 0.05, 'max_p... | \n", + "Ansys HFSS | \n", + "
232 | \n", + "CLT | \n", + "{'claw_opts': {'connection_pads': {'readout': ... | \n", + "qiskit-metal | \n", + "Eli Levenson-Falk, PhD | \n", + "2023-12-09-204334 | \n", + "LFL | \n", + "USC | \n", + "Andre Kuo | \n", + "8.116894e+09 | \n", + "209744.544864 | \n", + "Hz | \n", + "{'basis_order': 1, 'max_delta_f': 0.05, 'max_p... | \n", + "Ansys HFSS | \n", + "
233 | \n", + "CLT | \n", + "{'claw_opts': {'connection_pads': {'readout': ... | \n", + "qiskit-metal | \n", + "Eli Levenson-Falk, PhD | \n", + "2023-12-01-170608 | \n", + "LFL | \n", + "USC | \n", + "Andre Kuo | \n", + "5.145996e+09 | \n", + "155139.565546 | \n", + "Hz | \n", + "{'basis_order': 1, 'max_delta_f': 0.05, 'max_p... | \n", + "Ansys HFSS | \n", + "
234 rows × 13 columns
\n", + "Developed by Sadman Ahmed Shanto
\n", @@ -220,11 +1555,6 @@ "Any modifications or derivative works of this code must retain this
copyright notice, and modified files need to carry a notice indicating
that they have been altered from the originals.
Developed by Sadman Ahmed Shanto
\n",