1955 lines
1.4 MiB
Plaintext
1955 lines
1.4 MiB
Plaintext
|
|
{
|
|||
|
|
"cells": [
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 1,
|
|||
|
|
"id": "ad8424f1-4fd8-4f68-9557-f560d5a28e4b",
|
|||
|
|
"metadata": {
|
|||
|
|
"tags": []
|
|||
|
|
},
|
|||
|
|
"outputs": [],
|
|||
|
|
"source": [
|
|||
|
|
"import numpy as np\n",
|
|||
|
|
"import pandas as pd\n",
|
|||
|
|
"import matplotlib.pyplot as plt\n",
|
|||
|
|
"import sys\n",
|
|||
|
|
"import os\n",
|
|||
|
|
"sys.path.append('..')\n",
|
|||
|
|
"from QX8800SP_DA import *\n",
|
|||
|
|
"plt.rcParams['font.family'] = ['SimHei'] # 用来正常显示中文标签\n",
|
|||
|
|
"plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号\n",
|
|||
|
|
"pd.set_option('display.max_columns', None) #显示所有列,把行显示设置成最大\n",
|
|||
|
|
"pd.set_option('display.max_rows', None) #显示所有行,把列显示设置成最大\n",
|
|||
|
|
"#交互式绘图\n",
|
|||
|
|
"%matplotlib widget"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 2,
|
|||
|
|
"id": "b8010ce0-ccf0-4eb3-beb6-1ff53b735d08",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [],
|
|||
|
|
"source": [
|
|||
|
|
"from sqlalchemy import create_engine\n",
|
|||
|
|
"import pymysql\n",
|
|||
|
|
"from urllib.parse import quote_plus\n",
|
|||
|
|
"pymysql.install_as_MySQLdb()\n",
|
|||
|
|
"\n",
|
|||
|
|
"def data_connect():\n",
|
|||
|
|
" db_username = 'root'\n",
|
|||
|
|
" db_password = 'Akirin@2024'\n",
|
|||
|
|
" db_host = 'dataset.totoro.studio'\n",
|
|||
|
|
" db_port = '13306'\n",
|
|||
|
|
" db_name = 'qxu0515_acc'\n",
|
|||
|
|
" encoded_password = quote_plus(db_password)\n",
|
|||
|
|
" db_connection_str = f'mysql+mysqldb://{db_username}:{encoded_password}@{db_host}:{db_port}/{db_name}'\n",
|
|||
|
|
" db_connection = create_engine(db_connection_str)\n",
|
|||
|
|
" return db_connection\n",
|
|||
|
|
" \n",
|
|||
|
|
"def append_dataframe_to_mysql(df, table_name, db_connection):\n",
|
|||
|
|
" \"\"\"\n",
|
|||
|
|
" 将pandas DataFrame追加到MySQL表中。如果数据已经存在,停止追加并给出提示。\n",
|
|||
|
|
" \"\"\"\n",
|
|||
|
|
" # 创建数据库连接\n",
|
|||
|
|
" db_connection = db_connection\n",
|
|||
|
|
" # 检查数据是否已存在\n",
|
|||
|
|
" existing_data = pd.read_sql(f\"SELECT * FROM {table_name}\", db_connection)\n",
|
|||
|
|
" # 使用merge函数合并两个DataFrame,how='inner'表示取交集\n",
|
|||
|
|
" merged_df = pd.merge(df, existing_data, how='inner')\n",
|
|||
|
|
" if len(merged_df) == len(df):\n",
|
|||
|
|
" return \"数据已存在于MySQL表中,未执行追加操作。\" \n",
|
|||
|
|
" else:\n",
|
|||
|
|
" # 如果数据不存在,则追加数据\n",
|
|||
|
|
" df.to_sql(table_name, db_connection, if_exists='append', index=False)\n",
|
|||
|
|
" return \"数据已成功追加到MySQL表中。\"\n",
|
|||
|
|
"\n",
|
|||
|
|
"def Data_transform(df1,Data_describe):\n",
|
|||
|
|
" df = df1.copy()\n",
|
|||
|
|
" df.columns = ['Value']\n",
|
|||
|
|
" df = df.reset_index(drop=False)\n",
|
|||
|
|
" df[\"QX8800SP_Index\"] = df[\"QX8800SP_Index\"].astype(int)\n",
|
|||
|
|
" df[\"EVG_Time\"] = Data_describe[\"EVG_Time\"]\n",
|
|||
|
|
" df[\"Die_Type\"] = Data_describe[\"Die_Type\"]\n",
|
|||
|
|
" df[\"Mark_Type\"] = Data_describe[\"Mark_Type\"]\n",
|
|||
|
|
" df[\"Value_Type\"] = Data_describe[\"Value_Type\"]\n",
|
|||
|
|
" df[\"CST_ID\"] = Data_describe[\"CST_ID\"]\n",
|
|||
|
|
" df[\"FOUP_ID\"] = Data_describe[\"FOUP_ID\"] \n",
|
|||
|
|
" return df"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": null,
|
|||
|
|
"id": "b15b48e5-1f2e-4467-8214-0804a5bee1c6",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [],
|
|||
|
|
"source": [
|
|||
|
|
"wafer_num = -1\n",
|
|||
|
|
"wafer_name = 'Wafer0927'\n",
|
|||
|
|
"\n",
|
|||
|
|
"EVG_Time = \"2024-09-27 20:19:27.824\"\n",
|
|||
|
|
"Die_Type = \"Die1\"\n",
|
|||
|
|
"Mark_Type = \"Mark3\"\n",
|
|||
|
|
"Value_Type = \"X\"\n",
|
|||
|
|
"CST_ID = wafer_name\n",
|
|||
|
|
"FOUP_ID = \"PFP05961.19\"\n",
|
|||
|
|
"Data_describe = {\n",
|
|||
|
|
" \"EVG_Time\":EVG_Time,\n",
|
|||
|
|
" \"Die_Type\":Die_Type,\n",
|
|||
|
|
" \"Mark_Type\":Mark_Type,\n",
|
|||
|
|
" \"Value_Type\":Value_Type,\n",
|
|||
|
|
" \"CST_ID\":CST_ID,\n",
|
|||
|
|
" \"FOUP_ID\":FOUP_ID, \n",
|
|||
|
|
"}"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 3,
|
|||
|
|
"id": "73037e6a-e4b8-4bfe-991c-beca9afef783",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [
|
|||
|
|
{
|
|||
|
|
"data": {
|
|||
|
|
"text/html": [
|
|||
|
|
"<div>\n",
|
|||
|
|
"<style scoped>\n",
|
|||
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|||
|
|
" vertical-align: middle;\n",
|
|||
|
|
" }\n",
|
|||
|
|
"\n",
|
|||
|
|
" .dataframe tbody tr th {\n",
|
|||
|
|
" vertical-align: top;\n",
|
|||
|
|
" }\n",
|
|||
|
|
"\n",
|
|||
|
|
" .dataframe thead th {\n",
|
|||
|
|
" text-align: right;\n",
|
|||
|
|
" }\n",
|
|||
|
|
"</style>\n",
|
|||
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|||
|
|
" <thead>\n",
|
|||
|
|
" <tr style=\"text-align: right;\">\n",
|
|||
|
|
" <th></th>\n",
|
|||
|
|
" <th>Tables_in_qxu0515_acc</th>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" </thead>\n",
|
|||
|
|
" <tbody>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>0</th>\n",
|
|||
|
|
" <td>QX8800SP_2024_9</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" </tbody>\n",
|
|||
|
|
"</table>\n",
|
|||
|
|
"</div>"
|
|||
|
|
],
|
|||
|
|
"text/plain": [
|
|||
|
|
" Tables_in_qxu0515_acc\n",
|
|||
|
|
"0 QX8800SP_2024_9"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
"execution_count": 3,
|
|||
|
|
"metadata": {},
|
|||
|
|
"output_type": "execute_result"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"source": [
|
|||
|
|
"db_connection = data_connect()\n",
|
|||
|
|
"df_all = pd.read_sql('SHOW TABLES', db_connection)\n",
|
|||
|
|
"df_all"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 4,
|
|||
|
|
"id": "ccb60f92-e657-4732-a679-6ca67bfcf201",
|
|||
|
|
"metadata": {
|
|||
|
|
"tags": []
|
|||
|
|
},
|
|||
|
|
"outputs": [],
|
|||
|
|
"source": [
|
|||
|
|
"#写入TotalData\n",
|
|||
|
|
"TotalData1 = pd.read_excel('../Die1AllData.xlsx',sheet_name=None,header=0,index_col = 0)\n",
|
|||
|
|
"TotalData2 = pd.read_excel('../Die2AllData.xlsx',sheet_name=None,header=0,index_col = 0)\n",
|
|||
|
|
"TotalData3 = pd.read_excel('../Die3AllData.xlsx',sheet_name=None,header=0,index_col = 0)\n",
|
|||
|
|
"TotalData4 = pd.read_excel('../Die4AllData.xlsx',sheet_name=None,header=0,index_col = 0)"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 5,
|
|||
|
|
"id": "529ce324-bb6e-4833-b3c7-c410b12903b0",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [],
|
|||
|
|
"source": []
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "markdown",
|
|||
|
|
"id": "8f9078d7",
|
|||
|
|
"metadata": {},
|
|||
|
|
"source": [
|
|||
|
|
"## 对位Mark"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "markdown",
|
|||
|
|
"id": "31b36a67",
|
|||
|
|
"metadata": {},
|
|||
|
|
"source": [
|
|||
|
|
"### 对位MarkX"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 6,
|
|||
|
|
"id": "1f15ce7d-9c0e-4ea4-a1ca-da8cd15f6ee7",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [],
|
|||
|
|
"source": [
|
|||
|
|
"AlignMarkX1 = TotalData1['M3X'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num:]\n",
|
|||
|
|
"AlignMarkX2 = TotalData2['M3X'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num:]\n",
|
|||
|
|
"AlignMarkX3 = TotalData3['M3X'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num:]\n",
|
|||
|
|
"AlignMarkX4 = TotalData4['M3X'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num:]"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 7,
|
|||
|
|
"id": "9fd13260-c29d-48ff-8354-b50383c16e46",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [],
|
|||
|
|
"source": [
|
|||
|
|
"for i,j in zip([\"Die1\",\"Die2\",\"Die3\",\"Die4\"],[AlignMarkX1,AlignMarkX2,AlignMarkX3,AlignMarkX4]):\n",
|
|||
|
|
" Data_describe['Mark_Type'] = \"Mark3\"\n",
|
|||
|
|
" Data_describe['Die_Type'] = i\n",
|
|||
|
|
" Data_describe['Value_Type'] = \"X\"\n",
|
|||
|
|
" df = Data_transform(j,Data_describe)\n",
|
|||
|
|
" append_dataframe_to_mysql(df,df_all.iloc[0,0],db_connection)"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 8,
|
|||
|
|
"id": "f5c34355-9eec-494f-9bd3-9a5cc80b4758",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [
|
|||
|
|
{
|
|||
|
|
"data": {
|
|||
|
|
"text/html": [
|
|||
|
|
"<div>\n",
|
|||
|
|
"<style scoped>\n",
|
|||
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|||
|
|
" vertical-align: middle;\n",
|
|||
|
|
" }\n",
|
|||
|
|
"\n",
|
|||
|
|
" .dataframe tbody tr th {\n",
|
|||
|
|
" vertical-align: top;\n",
|
|||
|
|
" }\n",
|
|||
|
|
"\n",
|
|||
|
|
" .dataframe thead th {\n",
|
|||
|
|
" text-align: right;\n",
|
|||
|
|
" }\n",
|
|||
|
|
"</style>\n",
|
|||
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|||
|
|
" <thead>\n",
|
|||
|
|
" <tr style=\"text-align: right;\">\n",
|
|||
|
|
" <th></th>\n",
|
|||
|
|
" <th>9.27.1-Die1</th>\n",
|
|||
|
|
" <th>9.27.1-Die2</th>\n",
|
|||
|
|
" <th>9.27.1-Die3</th>\n",
|
|||
|
|
" <th>9.27.1-Die4</th>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" </thead>\n",
|
|||
|
|
" <tbody>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>count</th>\n",
|
|||
|
|
" <td>72.000000</td>\n",
|
|||
|
|
" <td>71.000000</td>\n",
|
|||
|
|
" <td>72.000000</td>\n",
|
|||
|
|
" <td>73.000000</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>mean</th>\n",
|
|||
|
|
" <td>-4.132667</td>\n",
|
|||
|
|
" <td>-4.873014</td>\n",
|
|||
|
|
" <td>-4.953389</td>\n",
|
|||
|
|
" <td>-4.560521</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>std</th>\n",
|
|||
|
|
" <td>0.391695</td>\n",
|
|||
|
|
" <td>0.333740</td>\n",
|
|||
|
|
" <td>0.261433</td>\n",
|
|||
|
|
" <td>0.262891</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>min</th>\n",
|
|||
|
|
" <td>-5.461000</td>\n",
|
|||
|
|
" <td>-6.417000</td>\n",
|
|||
|
|
" <td>-5.815000</td>\n",
|
|||
|
|
" <td>-5.199000</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>25%</th>\n",
|
|||
|
|
" <td>-4.341500</td>\n",
|
|||
|
|
" <td>-5.020500</td>\n",
|
|||
|
|
" <td>-5.115250</td>\n",
|
|||
|
|
" <td>-4.724000</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>50%</th>\n",
|
|||
|
|
" <td>-4.167000</td>\n",
|
|||
|
|
" <td>-4.863000</td>\n",
|
|||
|
|
" <td>-4.967000</td>\n",
|
|||
|
|
" <td>-4.612000</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>75%</th>\n",
|
|||
|
|
" <td>-3.924250</td>\n",
|
|||
|
|
" <td>-4.742500</td>\n",
|
|||
|
|
" <td>-4.798750</td>\n",
|
|||
|
|
" <td>-4.419000</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>max</th>\n",
|
|||
|
|
" <td>-2.933000</td>\n",
|
|||
|
|
" <td>-3.691000</td>\n",
|
|||
|
|
" <td>-4.306000</td>\n",
|
|||
|
|
" <td>-3.462000</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>range</th>\n",
|
|||
|
|
" <td>2.528000</td>\n",
|
|||
|
|
" <td>2.726000</td>\n",
|
|||
|
|
" <td>1.509000</td>\n",
|
|||
|
|
" <td>1.737000</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>3sigma</th>\n",
|
|||
|
|
" <td>1.175086</td>\n",
|
|||
|
|
" <td>1.001221</td>\n",
|
|||
|
|
" <td>0.784299</td>\n",
|
|||
|
|
" <td>0.788672</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" </tbody>\n",
|
|||
|
|
"</table>\n",
|
|||
|
|
"</div>"
|
|||
|
|
],
|
|||
|
|
"text/plain": [
|
|||
|
|
" 9.27.1-Die1 9.27.1-Die2 9.27.1-Die3 9.27.1-Die4\n",
|
|||
|
|
"count 72.000000 71.000000 72.000000 73.000000\n",
|
|||
|
|
"mean -4.132667 -4.873014 -4.953389 -4.560521\n",
|
|||
|
|
"std 0.391695 0.333740 0.261433 0.262891\n",
|
|||
|
|
"min -5.461000 -6.417000 -5.815000 -5.199000\n",
|
|||
|
|
"25% -4.341500 -5.020500 -5.115250 -4.724000\n",
|
|||
|
|
"50% -4.167000 -4.863000 -4.967000 -4.612000\n",
|
|||
|
|
"75% -3.924250 -4.742500 -4.798750 -4.419000\n",
|
|||
|
|
"max -2.933000 -3.691000 -4.306000 -3.462000\n",
|
|||
|
|
"range 2.528000 2.726000 1.509000 1.737000\n",
|
|||
|
|
"3sigma 1.175086 1.001221 0.784299 0.788672"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
"execution_count": 8,
|
|||
|
|
"metadata": {},
|
|||
|
|
"output_type": "execute_result"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"source": [
|
|||
|
|
"AlignMarkX = pd.concat([AlignMarkX1,AlignMarkX2,AlignMarkX3,AlignMarkX4],axis=1)\n",
|
|||
|
|
"AXdescibe = describe_3s(AlignMarkX)\n",
|
|||
|
|
"AXdescibe"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 9,
|
|||
|
|
"id": "56f1ad89-c919-4a7b-a5d4-b9be4ddaeb0d",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [
|
|||
|
|
{
|
|||
|
|
"data": {
|
|||
|
|
"application/vnd.jupyter.widget-view+json": {
|
|||
|
|
"model_id": "9cb3080a06194e029239b02d2e7a26bf",
|
|||
|
|
"version_major": 2,
|
|||
|
|
"version_minor": 0
|
|||
|
|
},
|
|||
|
|
"image/png": "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xb59+8Lq5+DBg7mFpby8HAMHDsSePXui+ephM2HCBOTl5eGDDz5AWVkZJkyYEFBw80dqaipWrFjBLS4AkJ2dDavVGo/uNis7d+7kJulXXnklojaOHDmCDz/8EE8++aSg819++WXcdttt3MbrwIED6NevX0DhAwD++OMPvPPOO1i7dm1EfSSIlkQs14dx48Zh+PDhnPABABqNBna7nXNlofXBDa0Pwol2fSgpKUFeXh4nfAAuwXb58uUAgH379qGhoQHXXnst9/6IESMAAKWlpRg8eDBqamqg0WjwyiuvYMiQIT6fcdNNN+HGG2/khA/Adf/bbLaw+9teoRiQNkavXr0AwMNkGMzf8+DBg7j99tsxYMAAjBs3Dm+//bbH+w8//DCuvPLKgJ/ncDiwd+9ezJ49GxaLBb/88gt69eqF9PR0KJVKVFZWQqVSQaVSISkpCQCQnJyM9PR07sFdvnw5Z05nOXLkCJ577jkPn0yHw4Err7wSy5Yt8+lHQUGBh4aroKDA4/3a2lo88MADuOSSSzB8+HD885//9NGsFBYWYvv27diyZQumTp2KO+64I+D33rRpE/r164fvv/+eOyYWizFr1ix8+OGH+PXXXzFr1izuPYZhYLfbA/4DgO7du+Oqq67irqmpqcH69es5FwMA0Ov1eOSRRzBy5EgMHjwYM2bMwLFjx3z6F+w3Ly8vx7Rp0zB48GBMnz4dq1atwqhRo7B+/XrcdtttePrppzFt2jQMGTIEmzZtQlFREQYNGoQXX3yRa6O4uBgTJ07EwIED8ac//Qlffvml388qLCz0uacAYMaMGfjrX/8aYHSF8fLLL3v4gwdj586d3L3Osn//fpw9exZjx47FgAEDcMMNN+CXX37xuO65557zWMQIojUTy/UhPT0deXl5Huf/8ssv6NOnDzfX0/pA60NzrA/V1dU+369Dhw44ffo0HA4Hqquruc/3PufEiRMAgI4dO+LFF1+ESqXy+xm5ubno2LEj95phGGzdutWvsEL4hwSQNgarjaqvrw95rk6nw/Tp06HRaPDGG29gxowZWLZsmUegord/rjcpKSl48803YTQaMXfuXHz33XecwPLKK6/g8ccfD3r9999/jy+++AIPPPCAx3GLxYJ3333XI2jv2LFjqKys9NAAseTn56O+vh5VVVUoLy/3WWAeeeQR7NmzB8uWLcOKFStQUVHBaUP4fP3113jiiScwatQoTJs2zW+fS0pK8Oijj+LZZ5/1CZC75pprkJSUhKFDh6Jv377c8f/+97/o27dvwH/ezJkzB3/605/Qu3dvzJkzhzv+/PPP49dff8WiRYuwcuVK2O32sM299957L/Ly8vDaa69BIpGguLgYq1ev5jRAxcXFuP322zFw4EA88MAD6NevH2655Ra88847AIDdu3fjkUcewZVXXok333wT1157LebNm+c3mPLTTz/10DKxhLqvhBBOG++99x6uvvpqZGZmcsf27t0LtVqNhx56CKtWrUJmZiZmz57tsTmLRT8JoqUQ6/WBz65du7B161aPjTmtD7Q+NMf6YDabPeJ/AJeLld1uR0NDA8xmMyQSCWdlY1EoFJzgGW4fiouLcfToUcyYMSOqvrcnyAWrjRHMncSb999/H2KxGC+88AJkMhmGDx+O7du344svvsDUqVMFt5Oamor
|
|||
|
|
"text/html": [
|
|||
|
|
"\n",
|
|||
|
|
" <div style=\"display: inline-block;\">\n",
|
|||
|
|
" <div class=\"jupyter-widgets widget-label\" style=\"text-align: center;\">\n",
|
|||
|
|
" Figure\n",
|
|||
|
|
" </div>\n",
|
|||
|
|
" <img src='data:image/png;base64,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xb59+8Lq5+DBg7mFpby8HAMHDsSePXui+ephM2HCBOTl5eGDDz5AWVkZJkyYEFBw80dqaipWrFjBLS4AkJ2dDavVGo/uNis7d+7kJulXXnklojaOHDmCDz/8EE8++aSg819++WXcdttt3MbrwIED6NevX0DhAwD++OMPvPPOO1i7dm1EfSSIlkQs14dx48Zh+PDhnPABABqNBna7nXNlofXBDa0Pwol2fSgpKUFeXh4nfAAuwXb58uUAgH379qGhoQHXXnst9/6IESMAAKWlpRg8eDBqamqg0WjwyiuvYMiQIT6fcdNNN+HGG2/khA/Adf/bbLaw+9teoRiQNkavXr0AwMNkGMzf8+DBg7j99tsxYMAAjBs3Dm+//bbH+w8//DCuvPLKgJ/ncDiwd+9ezJ49GxaLBb/88gt69eqF9PR0KJVKVFZWQqVSQaVSISkpCQCQnJyM9PR07sFdvnw5Z05nOXLkCJ577jkPn0yHw4Err7wSy5Yt8+lHQUGBh4aroKDA4/3a2lo88MADuOSSSzB8+HD885//9NGsFBYWYvv27diyZQumTp2KO+64I+D33rRpE/r164fvv/+eOyYWizFr1ix8+OGH+PXXXzFr1izuPYZhYLfbA/4DgO7du+Oqq67irqmpqcH69es5FwMA0Ov1eOSRRzBy5EgMHjwYM2bMwLFjx3z6F+w3Ly8vx7Rp0zB48GBMnz4dq1atwqhRo7B+/XrcdtttePrppzFt2jQMGTIEmzZtQlFREQYNGoQXX3yRa6O4uBgTJ07EwIED8ac//Qlffvml388qLCz0uacAYMaMGfjrX/8aYHSF8fLLL3v4gwdj586d3L3Osn//fpw9exZjx47FgAEDcMMNN+CXX37xuO65557zWMQIojUTy/UhPT0deXl5Huf/8ssv6NOnDzfX0/pA60NzrA/V1dU+369Dhw44ffo0HA4Hqquruc/3PufEiRMAgI4dO+LFF1+ESqXy+xm5ubno2LEj95phGGzdutWvsEL4hwSQNgarjaqvrw95rk6nw/Tp06HRaPDGG29gxowZWLZsmUegord/rjcpKSl48803YTQaMXfuXHz33XecwPLKK6/g8ccfD3r9999/jy+++AIPPPCAx3GLxYJ3333XI2jv2LFjqKys9NAAseTn56O+vh5VVVUoLy/3WWAeeeQR7NmzB8uWLcOKFStQUVHBaUP4fP3113jiiScwatQoTJs2zW+fS0pK8Oijj+LZZ5/1CZC75pprkJSUhKFDh6Jv377c8f/+97/o27dvwH/ezJkzB3/605/Qu3dvzJkzhzv+/PPP49dff8WiRYuwcuVK2O32sM299957L/Ly8vDaa69BIpGguLgYq1ev5jRAxcXFuP322zFw4EA88MAD6NevH2655Ra88847AIDdu3fjkUcewZVXXok333wT1157LebNm+c3mPLTTz/10DKxhLqvhBBOG++99x6uvvpqZGZmcsf27t0LtVqNhx56CKtWrUJmZiZmz57tsTmLRT8JoqUQ6/WBz65du7B161aPjTmtD7Q+NMf6YDabPeJ/AJeLld1uR0NDA8xmMyQSCWdlY1EoFJzgGW4fiouLcfToUcyYMSOqvrcnyAWrjRHMncSb999/H2KxGC+
|
|||
|
|
" </div>\n",
|
|||
|
|
" "
|
|||
|
|
],
|
|||
|
|
"text/plain": [
|
|||
|
|
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
"metadata": {},
|
|||
|
|
"output_type": "display_data"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"source": [
|
|||
|
|
"plt.figure()\n",
|
|||
|
|
"plt.subplot(221)\n",
|
|||
|
|
"plt.plot(AlignMarkX1,marker='o')\n",
|
|||
|
|
"sigmaX1 = round(AlignMarkX1.iloc[:,0].std()*3,4)\n",
|
|||
|
|
"plt.title(f'Die1对位MarkX-3sigma:{sigmaX1}')\n",
|
|||
|
|
"\n",
|
|||
|
|
"plt.subplot(222)\n",
|
|||
|
|
"plt.plot(AlignMarkX2,marker='o')\n",
|
|||
|
|
"sigmaX2 = round(AlignMarkX2.iloc[:,0].std()*3,4)\n",
|
|||
|
|
"plt.title(f'Die2对位MarkX-3sigma:{sigmaX2}')\n",
|
|||
|
|
"\n",
|
|||
|
|
"plt.subplot(223)\n",
|
|||
|
|
"plt.plot(AlignMarkX3,marker='o')\n",
|
|||
|
|
"sigmaX3 = round(AlignMarkX3.iloc[:,0].std()*3,4)\n",
|
|||
|
|
"plt.title(f'Die3对位MarkX-3sigma:{sigmaX3}')\n",
|
|||
|
|
"\n",
|
|||
|
|
"plt.subplot(224)\n",
|
|||
|
|
"plt.plot(AlignMarkX4,marker='o')\n",
|
|||
|
|
"sigmaX4 = round(AlignMarkX4.iloc[:,0].std()*3,4)\n",
|
|||
|
|
"plt.title(f'Die4对位MarkX-3sigma:{sigmaX4}')\n",
|
|||
|
|
"\n",
|
|||
|
|
"plt.tight_layout()\n",
|
|||
|
|
"plt.show()"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 10,
|
|||
|
|
"id": "5355743f",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [
|
|||
|
|
{
|
|||
|
|
"data": {
|
|||
|
|
"application/vnd.jupyter.widget-view+json": {
|
|||
|
|
"model_id": "1b5f4c18fe2746a09fd302aac5ba7dde",
|
|||
|
|
"version_major": 2,
|
|||
|
|
"version_minor": 0
|
|||
|
|
},
|
|||
|
|
"image/png": "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
|
|||
|
|
"text/html": [
|
|||
|
|
"\n",
|
|||
|
|
" <div style=\"display: inline-block;\">\n",
|
|||
|
|
" <div class=\"jupyter-widgets widget-label\" style=\"text-align: center;\">\n",
|
|||
|
|
" Figure\n",
|
|||
|
|
" </div>\n",
|
|||
|
|
" <img src='data:image/png;base64,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
|
|||
|
|
" </div>\n",
|
|||
|
|
" "
|
|||
|
|
],
|
|||
|
|
"text/plain": [
|
|||
|
|
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
"metadata": {},
|
|||
|
|
"output_type": "display_data"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"source": [
|
|||
|
|
"fig, ax = plt.subplots(2,1)\n",
|
|||
|
|
"ax[0].plot([i+1 for i in range(len(AlignMarkX.columns))],AXdescibe.loc['mean'],linestyle = '-.',marker = 'o',color='w')\n",
|
|||
|
|
"AlignMarkX.boxplot(ax=ax[0])\n",
|
|||
|
|
"ax[0].axhline(0,c='orange',ls='-.',label=r'Mean_X:$0um\\pm0.10um$')\n",
|
|||
|
|
"for i in range(len(AlignMarkX.columns)):\n",
|
|||
|
|
" ax[0].annotate(round(AXdescibe.loc['mean'][i],3), \n",
|
|||
|
|
" xy=(i+1,AXdescibe.loc['mean'][i]),\n",
|
|||
|
|
" xytext=(i+0.95,AXdescibe.loc['mean'][i]+0.05),\n",
|
|||
|
|
" color=\"r\")\n",
|
|||
|
|
"ax[0].legend()\n",
|
|||
|
|
"ax[0].set_title('mean_X/Day')\n",
|
|||
|
|
"#ax[1].plot([i for i in AlignMarkX.columns],AXdescibe.loc['3sigma'],marker = 'o')\n",
|
|||
|
|
"ax[1].bar([i for i in AlignMarkX.columns],AXdescibe.loc['3sigma'])\n",
|
|||
|
|
"ax[1].axhline(0.8,c='orange',ls='-.',label=r'3sigma_X:$<0.800um$')\n",
|
|||
|
|
"ax[1].axhline(0.57,c='green',ls='-.',label=r'3sigma_X:$<0.570um$')\n",
|
|||
|
|
"for i in range(len(AlignMarkX.columns)):\n",
|
|||
|
|
" ax[1].annotate(round(AXdescibe.loc['3sigma'][i],3), \n",
|
|||
|
|
" xy=(i,AXdescibe.loc['3sigma'][i]),\n",
|
|||
|
|
" xytext=(i,AXdescibe.loc['3sigma'][i]),\n",
|
|||
|
|
" color=\"r\")\n",
|
|||
|
|
"ax[1].legend() \n",
|
|||
|
|
"ax[1].set_title('3sigam_X/Day')\n",
|
|||
|
|
"# ax[2].plot([i for i in AlignMarkX.columns],AXdescibe.loc['range'],marker = 'o')\n",
|
|||
|
|
"# for i in range(len(AlignMarkX.columns)):\n",
|
|||
|
|
"# ax[2].annotate(round(AXdescibe.loc['range'][i],3), \n",
|
|||
|
|
"# xy=(i,AXdescibe.loc['range'][i]),\n",
|
|||
|
|
"# xytext=(i,AXdescibe.loc['range'][i]),\n",
|
|||
|
|
"# color=\"r\")\n",
|
|||
|
|
"# ax[2].set_title('Range_X/Day')\n",
|
|||
|
|
"plt.suptitle(f'{wafer_name} 对位Mark:X')\n",
|
|||
|
|
"fig.tight_layout()\n",
|
|||
|
|
"plt.savefig(f'Wafer/{wafer_name}对位MarkX.jpg',dpi=200)\n",
|
|||
|
|
"plt.show()"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "markdown",
|
|||
|
|
"id": "64f88c9a",
|
|||
|
|
"metadata": {},
|
|||
|
|
"source": [
|
|||
|
|
"### 对位MarkY"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 11,
|
|||
|
|
"id": "9e294f7b-3ea3-4a33-99b5-92e22bd1a827",
|
|||
|
|
"metadata": {
|
|||
|
|
"tags": []
|
|||
|
|
},
|
|||
|
|
"outputs": [],
|
|||
|
|
"source": [
|
|||
|
|
"index1_87 = np.arange(1,88,1)\n",
|
|||
|
|
"AlignMarkY1 = TotalData1['M3Y'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num:]\n",
|
|||
|
|
"AlignMarkY2 = TotalData2['M3Y'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num:]\n",
|
|||
|
|
"AlignMarkY3 = TotalData3['M3Y'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num:]\n",
|
|||
|
|
"AlignMarkY4 = TotalData4['M3Y'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num:]"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 12,
|
|||
|
|
"id": "f5b5850b-6acf-4559-a1c4-a15fcaf8faf2",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [],
|
|||
|
|
"source": [
|
|||
|
|
"for i,j in zip([\"Die1\",\"Die2\",\"Die3\",\"Die4\"],[AlignMarkY1,AlignMarkY2,AlignMarkY3,AlignMarkY4]):\n",
|
|||
|
|
" Data_describe['Die_Type'] = i\n",
|
|||
|
|
" Data_describe['Value_Type'] = \"Y\"\n",
|
|||
|
|
" df = Data_transform(j,Data_describe)\n",
|
|||
|
|
" append_dataframe_to_mysql(df,df_all.iloc[0,0],db_connection)"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 13,
|
|||
|
|
"id": "fd581438-5123-4128-8e03-b64e8e5c1540",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [
|
|||
|
|
{
|
|||
|
|
"data": {
|
|||
|
|
"text/html": [
|
|||
|
|
"<div>\n",
|
|||
|
|
"<style scoped>\n",
|
|||
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|||
|
|
" vertical-align: middle;\n",
|
|||
|
|
" }\n",
|
|||
|
|
"\n",
|
|||
|
|
" .dataframe tbody tr th {\n",
|
|||
|
|
" vertical-align: top;\n",
|
|||
|
|
" }\n",
|
|||
|
|
"\n",
|
|||
|
|
" .dataframe thead th {\n",
|
|||
|
|
" text-align: right;\n",
|
|||
|
|
" }\n",
|
|||
|
|
"</style>\n",
|
|||
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|||
|
|
" <thead>\n",
|
|||
|
|
" <tr style=\"text-align: right;\">\n",
|
|||
|
|
" <th></th>\n",
|
|||
|
|
" <th>9.27.1-Die1</th>\n",
|
|||
|
|
" <th>9.27.1-Die2</th>\n",
|
|||
|
|
" <th>9.27.1-Die3</th>\n",
|
|||
|
|
" <th>9.27.1-Die4</th>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" </thead>\n",
|
|||
|
|
" <tbody>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>count</th>\n",
|
|||
|
|
" <td>72.000000</td>\n",
|
|||
|
|
" <td>71.000000</td>\n",
|
|||
|
|
" <td>72.000000</td>\n",
|
|||
|
|
" <td>73.000000</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>mean</th>\n",
|
|||
|
|
" <td>-2.286556</td>\n",
|
|||
|
|
" <td>-2.152549</td>\n",
|
|||
|
|
" <td>-1.978403</td>\n",
|
|||
|
|
" <td>-2.373014</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>std</th>\n",
|
|||
|
|
" <td>0.224308</td>\n",
|
|||
|
|
" <td>0.327226</td>\n",
|
|||
|
|
" <td>0.194482</td>\n",
|
|||
|
|
" <td>0.551023</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>min</th>\n",
|
|||
|
|
" <td>-2.817000</td>\n",
|
|||
|
|
" <td>-2.767000</td>\n",
|
|||
|
|
" <td>-2.467000</td>\n",
|
|||
|
|
" <td>-4.101000</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>25%</th>\n",
|
|||
|
|
" <td>-2.425500</td>\n",
|
|||
|
|
" <td>-2.436500</td>\n",
|
|||
|
|
" <td>-2.096750</td>\n",
|
|||
|
|
" <td>-2.830000</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>50%</th>\n",
|
|||
|
|
" <td>-2.277000</td>\n",
|
|||
|
|
" <td>-2.154000</td>\n",
|
|||
|
|
" <td>-1.981500</td>\n",
|
|||
|
|
" <td>-2.353000</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>75%</th>\n",
|
|||
|
|
" <td>-2.122750</td>\n",
|
|||
|
|
" <td>-1.940000</td>\n",
|
|||
|
|
" <td>-1.853250</td>\n",
|
|||
|
|
" <td>-1.937000</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>max</th>\n",
|
|||
|
|
" <td>-1.694000</td>\n",
|
|||
|
|
" <td>-1.301000</td>\n",
|
|||
|
|
" <td>-1.586000</td>\n",
|
|||
|
|
" <td>-1.323000</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>range</th>\n",
|
|||
|
|
" <td>1.123000</td>\n",
|
|||
|
|
" <td>1.466000</td>\n",
|
|||
|
|
" <td>0.881000</td>\n",
|
|||
|
|
" <td>2.778000</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>3sigma</th>\n",
|
|||
|
|
" <td>0.672925</td>\n",
|
|||
|
|
" <td>0.981679</td>\n",
|
|||
|
|
" <td>0.583447</td>\n",
|
|||
|
|
" <td>1.653069</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" </tbody>\n",
|
|||
|
|
"</table>\n",
|
|||
|
|
"</div>"
|
|||
|
|
],
|
|||
|
|
"text/plain": [
|
|||
|
|
" 9.27.1-Die1 9.27.1-Die2 9.27.1-Die3 9.27.1-Die4\n",
|
|||
|
|
"count 72.000000 71.000000 72.000000 73.000000\n",
|
|||
|
|
"mean -2.286556 -2.152549 -1.978403 -2.373014\n",
|
|||
|
|
"std 0.224308 0.327226 0.194482 0.551023\n",
|
|||
|
|
"min -2.817000 -2.767000 -2.467000 -4.101000\n",
|
|||
|
|
"25% -2.425500 -2.436500 -2.096750 -2.830000\n",
|
|||
|
|
"50% -2.277000 -2.154000 -1.981500 -2.353000\n",
|
|||
|
|
"75% -2.122750 -1.940000 -1.853250 -1.937000\n",
|
|||
|
|
"max -1.694000 -1.301000 -1.586000 -1.323000\n",
|
|||
|
|
"range 1.123000 1.466000 0.881000 2.778000\n",
|
|||
|
|
"3sigma 0.672925 0.981679 0.583447 1.653069"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
"execution_count": 13,
|
|||
|
|
"metadata": {},
|
|||
|
|
"output_type": "execute_result"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"source": [
|
|||
|
|
"AlignMarkY = pd.concat([AlignMarkY1,AlignMarkY2,AlignMarkY3,AlignMarkY4],axis=1)\n",
|
|||
|
|
"AYdescibe = describe_3s(AlignMarkY)\n",
|
|||
|
|
"AYdescibe"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 14,
|
|||
|
|
"id": "81162e4f-1ed2-4365-9e55-2a0177174f18",
|
|||
|
|
"metadata": {
|
|||
|
|
"tags": []
|
|||
|
|
},
|
|||
|
|
"outputs": [
|
|||
|
|
{
|
|||
|
|
"data": {
|
|||
|
|
"application/vnd.jupyter.widget-view+json": {
|
|||
|
|
"model_id": "91ac41f3c0844829a7558287e3b0667d",
|
|||
|
|
"version_major": 2,
|
|||
|
|
"version_minor": 0
|
|||
|
|
},
|
|||
|
|
"image/png": "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
|
|||
|
|
"text/html": [
|
|||
|
|
"\n",
|
|||
|
|
" <div style=\"display: inline-block;\">\n",
|
|||
|
|
" <div class=\"jupyter-widgets widget-label\" style=\"text-align: center;\">\n",
|
|||
|
|
" Figure\n",
|
|||
|
|
" </div>\n",
|
|||
|
|
" <img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAImCAYAAACrXu7BAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAADLMUlEQVR4nOzdd1QUVxsG8GcbS68qimBBBBV7xBaNNfZeEqNEjT2axBpN/OwmdmOLxlgSozHRWGKLJkZNj72XqIBYUFDpsLCwZb4/VgbWpSywLIjP7xwOzJ2Ze+8ss7vzzi0jEQRBABERERERkRVIi7sCRERERET08mAAQkREREREVsMAhIiIiIiIrIYBCBERERERWQ0DECIiIiIishoGIEREREREZDUMQIiIiIiIyGoYgBARERERkdUwACEiIiIiIqthAEJERERERFbDAISIiCwuPT0db731Fn799dcct0lOTjZJ0+v1UKlURVk1IiIqZgxAiIjI4mxsbHDjxg0kJCRku/7GjRto164dfvnlF6P0YcOGYd68edaoIhERFRMGIERUarVp0wZLliwBAAwdOhS9evUCAGzYsAENGjTId36//vorOnTogMDAQLz++ut4+vSpxer69OlTvP/++3jllVfQvXt3nDlzxmj9o0ePMGnSJAQFBSEoKAgzZ840aUHYvn072rRpg1q1auG1117DwYMHxXVr1qxBQEBAtj9r1qwxq45JSUnYsGEDtm7dim+//Vb8+emnn7Ld3tbWFlJp9l8zx48fR2JiIgIDA43Se/bsif379+PSpUvZ7vfRRx8hICAAX3/9tZg2evRoBAQEYO/evWYdR14iIiIQEBCAiIgIi+SXnVGjRuHNN980SouKikJgYKDFjoOIqKSSF3cFiIiKipeXF2JiYgAADx8+FO/GR0dHw8vLK195xcfHY8qUKRgzZgyCgoIQGhqa48V1ful0OowePRqxsbFYtGgRIiIiMHr0aBw4cAA+Pj5ITk5GcHAwvLy8sHr1aiQkJGDx4sW4c+cOvv32W0gkEuzbtw+ffPIJ+vfvj/r162Pv3r2YOnUqqlevjho1auCNN95A69atTY5p9OjRqFWrlln11Gg0uHXrFmxsbMRjv3r1Kry8vNC2bVsoFArI5aZfK+np6QAMrSIZx/vjjz+iefPm8Pb2xn///Qe5XA6pVIratWujQ4cOSEhIQFhYGABAEAQ4OjqifPnyYp43b94U/75165b5L3YJMXLkSAQHB+PSpUuoX78+AGDbtm3w8PBA9+7di7dyRERFjAEIEZVaFSpUQHR0NARBQGRkJDQaDZKTkxETE5PvAOTOnTtQq9UYPnw4bGxs0KhRI4vV85dffsH169exa9cu1K1bF4DhAvurr77C7NmzsX//fsTGxmLv3r1wdXUFADg7O+Odd97BxYsXUa9ePaxevRpTpkzB8OHDAQAdO3ZE8+bNcfToUdSoUQOenp7w9PQ0KnfZsmWoVasW2rVrZ1Y93d3dsXz5cqO0999/H76+vujatSsePnxoss/HH3+Mjz/+GCNHjsSUKVMAAMeOHcPDhw8xYsQIAIbWqfT0dMhkMnG/f//9V/xbp9PhzTffxEcffSSmZQQdiYmJiIyMNKv+JUlQUBDq16+Pb775BvXr10dqaip27dqF0aNHQ6FQFHf1iIiKFAMQIiq1KlasiNDQUDx58gSurq5wdXXFw4cPER0djcqVK+crL41GAyDzLr4lnTx5EpUrVxaDDwBo3749li1bBgC4du0aAgMDxeADAKpVqwbA0LJTv359fP755/Dz8xPXOzg4wMbGRqz382JjY7F9+3azu19lWL9+PVq0aIHatWsDAK5fv47evXvjjTfegJ2dHZRKpbht27ZtMWHCBHTu3FlsGREEAevXrxfrCACnT5/OVx0aNGiAa9euQavV4ubNmyhTpoxRuS+KkSNHYvz48YiMjMSJEyeg1+tNumUREZVGHANCRKWWl5cXoqOj8fDhQ3h7e8Pb2xsPHz5ETEwMKlasKG534MABdOnSBfXq1UOnTp1w6NAhcV3G2InBgwcDgDhuIuvd+NTUVHzyySdo1qwZgoKCMGHCBMTGxhrVJSAgAKdPn8Zvv/2G/v37Y9iwYeK6J0+eICAgwGj7ChUqICIiAjqdDjKZDHFxcUbrb9++DQAoX748pFIpatWqZRQcXbx4EYmJiWjYsGG2r813330HHx8ftGjRwqzXMsPjx48xatQo3L9/H3fu3EFkZCQaNmyIsmXLIiwsDA4ODuIPACiVSri6usLR0REAsGfPHoSEhMDe3l7MMzExEcuWLcPdu3eNyho7diyGDh0KrVZrlF6pUiXIZDLcuXMHN2/ehL+/v9F6nU6Hzz77DK+99hoaNGiAAQMG4Pr160bbvP3221izZg3CwsIwZswYNGrUCDqdLttjDgsLQ5MmTbB48eJ8vVZ5adeuHSpVqoRt27Zh27ZteOutt8TXiYioNGMAQkSlVoUKFRAbG4uIiAgxAHn06JHRGJDz589j6tSpaNWqFTZv3ozu3btj2rRpePDgAQDgjTfewO7duzF37lwAwO7du7F792689957YjmzZ8/GsWPHMHv2bCxbtgwhISFG6zP8/PPPmDFjBlq0aIEBAwaI6Wq1Gs7Ozkbb2traQqvVIjExEY0aNUJYWBi++eYbAIYB60uWLIGHh0eOg+lXr16NatWqoVWrVibrtFotdu7cieDg4Py8nACAWbNmoVWrVhg+fDh27dqFevXqwdXVFcePH8eoUaMQHR2d476PHj3CokWLMHToULi5uYnpdnZ22L17t9GgecAQRJUpU8ZkXIlUKkW1atVw8+ZN3Lp1yyQA2bhxIzZv3owJEyZgw4YNKFeuHMaPH29SnwcPHiA4OBienp6YMGFCtmN6Hj9+jBEjRuD111/HtGnTsl1/7969bKcUzotEIsHw4cOxZcsWPHz4UAxyiYhKOwYgRFRqVaxYETqdDtevX4ePjw+8vb1x//59xMfHo0KFCgAMF/rz5s3DlClT0KhRIwwYMAASiQRXr14FAHh6eqJOnTqoWrUqAKBOnTqoU6cOvL29ARguYg8cOIAZM2agU6dOaNWqFSZPnozz58+LQUyGw4cP47vvvsP48ePRoUMHMd3GxsZo/AMAcRxAWloaunbtio4dO2LBggVo1KgRWrVqhdu3b2PAgAHZDvretWsX/v33X3z00UfZXlT/+uuvSElJKdBgZ4lEgnnz5qFixYr46quv0K1bNwBAp06d4OPjI3avyo6npye6du1qEpwpFAp06dLFqOXp0aNHiI2NRfv27bPNKyAgALdu3cLNmzdNWo8CAgKwevVq9OnTB0FBQejRowcePHggTkiQYf/+/ZgzZw7mzp2L4OBgSCQSo/WJiYkYPnw4fH19c5waeMqUKejQoYNJ8GSuHj16wNHRER07dkTZsmULlAcR0YuGAQgRlVoZrRxXrlyBt7c3fHx8cOXKFQiCIHbBCgwMRLVq1bB48WL069cPrVq1glarhVqtNquMkJAQCIKAcePGid2z3n33XQDAvXv3jLYdPnx4tmNPPDw88OTJE6O0jBm77OzsoFAosHr1auzatQvTp0+Hv78/nJ2dMXToUJO8wsPDsXDhQrz11lt47bXXsq3zwYMH0bZtW9jZ2Zl1jM9TKBTo2LEjAIjdpiQSCYYNG4YffvjB5FgyyGQyzJ07F7a2tibrevbsibt374qzW12+fBkymQyvvvpqtnn5+/vjxo0bCA0NNWkBadWqFdLS0vDxxx+jU6dOeP/99wEYuspl1bJlS/E4sjNx4kTEx8cjPDw8x7E0hWVjYwNHR0ejFiEiotKOAQgRlVp2dnZwdXXFhQsXxC5YFy9ehFwuR7ly5QAYnp0xZMgQqNVqvP322zhy5Ei+Z8gCgE2bNmHfvn1GPxnTq2aoV69etvvWq1cPly9fNhrrcO3aNdja2hp1zapbty6aN2+O0NBQjBw50qTbVkpKCj744ANUqlQJH3/8cbZlJScn46+//sr1wjsv8fHxWL16NQYNGoQdO3b
|
|||
|
|
" </div>\n",
|
|||
|
|
" "
|
|||
|
|
],
|
|||
|
|
"text/plain": [
|
|||
|
|
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
"metadata": {},
|
|||
|
|
"output_type": "display_data"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"source": [
|
|||
|
|
"fig, ax = plt.subplots(2,1)\n",
|
|||
|
|
"ax[0].plot([i+1 for i in range(len(AlignMarkY.columns))],AYdescibe.loc['mean'],linestyle = '-.',marker = 'o',color='w')\n",
|
|||
|
|
"AlignMarkY.boxplot(ax=ax[0])\n",
|
|||
|
|
"ax[0].axhline(0,c='orange',ls='-.',label=r'Mean_Y:$0um\\pm0.10um$')\n",
|
|||
|
|
"for i in range(len(AlignMarkY.columns)):\n",
|
|||
|
|
" ax[0].annotate(round(AYdescibe.loc['mean'][i],3), \n",
|
|||
|
|
" xy=(i+1,AYdescibe.loc['mean'][i]),\n",
|
|||
|
|
" xytext=(i+0.95,AYdescibe.loc['mean'][i]+0.05),\n",
|
|||
|
|
" color=\"r\")\n",
|
|||
|
|
"ax[0].legend()\n",
|
|||
|
|
"ax[0].set_title('mean_Y/Day')\n",
|
|||
|
|
"ax[1].plot([i for i in AlignMarkY.columns],AYdescibe.loc['3sigma'],marker = 'o')\n",
|
|||
|
|
"ax[1].axhline(0.8,c='orange',ls='-.',label=r'3sigma_Y:$<0.800um$')\n",
|
|||
|
|
"ax[1].axhline(0.57,c='green',ls='-.',label=r'3sigma_Y:$<0.570um$')\n",
|
|||
|
|
"for i in range(len(AlignMarkY.columns)):\n",
|
|||
|
|
" ax[1].annotate(round(AYdescibe.loc['3sigma'][i],3), \n",
|
|||
|
|
" xy=(i,AYdescibe.loc['3sigma'][i]),\n",
|
|||
|
|
" xytext=(i,AYdescibe.loc['3sigma'][i]),\n",
|
|||
|
|
" color=\"r\")\n",
|
|||
|
|
"ax[1].legend() \n",
|
|||
|
|
"ax[1].set_title('3sigam_Y/Day')\n",
|
|||
|
|
"# ax[2].plot([i for i in AlignMarkY.columns],AYdescibe.loc['range'],marker = 'o')\n",
|
|||
|
|
"# for i in range(len(AlignMarkY.columns)):\n",
|
|||
|
|
"# ax[2].annotate(round(AYdescibe.loc['range'][i],3), \n",
|
|||
|
|
"# xy=(i,AYdescibe.loc['range'][i]),\n",
|
|||
|
|
"# xytext=(i,AYdescibe.loc['range'][i]),\n",
|
|||
|
|
"# color=\"r\")\n",
|
|||
|
|
"# ax[2].set_title('Range_Y/Day')\n",
|
|||
|
|
"plt.suptitle(f'{wafer_name} 对位Mark:Y')\n",
|
|||
|
|
"fig.tight_layout()\n",
|
|||
|
|
"plt.savefig(f'Wafer/{wafer_name}对位MarkY.jpg',dpi=200)\n",
|
|||
|
|
"plt.show()"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "markdown",
|
|||
|
|
"id": "087d4ba5-1315-4865-ad1c-c954660b8086",
|
|||
|
|
"metadata": {},
|
|||
|
|
"source": [
|
|||
|
|
"## 角度"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 15,
|
|||
|
|
"id": "290bb2e8-7d54-45d5-8842-e3d16b554edf",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [],
|
|||
|
|
"source": [
|
|||
|
|
"index1_87 = np.arange(1,88,1)\n",
|
|||
|
|
"Angle1 = TotalData1['Angle13'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num:]\n",
|
|||
|
|
"Angle2 = TotalData2['Angle13'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num:]\n",
|
|||
|
|
"Angle3 = TotalData3['Angle13'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num:]\n",
|
|||
|
|
"Angle4 = TotalData4['Angle13'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num:]"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 16,
|
|||
|
|
"id": "22af4398-48a4-44fe-96d2-c521a5570c6f",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [],
|
|||
|
|
"source": [
|
|||
|
|
"for i,j in zip([\"Die1\",\"Die2\",\"Die3\",\"Die4\"],[Angle1,Angle2,Angle3,Angle4]):\n",
|
|||
|
|
" Data_describe['Die_Type'] = i\n",
|
|||
|
|
" Data_describe['Value_Type'] = \"Angle\"\n",
|
|||
|
|
" df = Data_transform(j,Data_describe)\n",
|
|||
|
|
" append_dataframe_to_mysql(df,df_all.iloc[0,0],db_connection)"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 17,
|
|||
|
|
"id": "d7ad6c24-46b8-4f3e-b437-c025f0564763",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [
|
|||
|
|
{
|
|||
|
|
"data": {
|
|||
|
|
"text/html": [
|
|||
|
|
"<div>\n",
|
|||
|
|
"<style scoped>\n",
|
|||
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|||
|
|
" vertical-align: middle;\n",
|
|||
|
|
" }\n",
|
|||
|
|
"\n",
|
|||
|
|
" .dataframe tbody tr th {\n",
|
|||
|
|
" vertical-align: top;\n",
|
|||
|
|
" }\n",
|
|||
|
|
"\n",
|
|||
|
|
" .dataframe thead th {\n",
|
|||
|
|
" text-align: right;\n",
|
|||
|
|
" }\n",
|
|||
|
|
"</style>\n",
|
|||
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|||
|
|
" <thead>\n",
|
|||
|
|
" <tr style=\"text-align: right;\">\n",
|
|||
|
|
" <th></th>\n",
|
|||
|
|
" <th>9.27.1-Die1</th>\n",
|
|||
|
|
" <th>9.27.1-Die2</th>\n",
|
|||
|
|
" <th>9.27.1-Die3</th>\n",
|
|||
|
|
" <th>9.27.1-Die4</th>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" </thead>\n",
|
|||
|
|
" <tbody>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>count</th>\n",
|
|||
|
|
" <td>72.000000</td>\n",
|
|||
|
|
" <td>71.000000</td>\n",
|
|||
|
|
" <td>72.000000</td>\n",
|
|||
|
|
" <td>73.000000</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>mean</th>\n",
|
|||
|
|
" <td>0.000585</td>\n",
|
|||
|
|
" <td>0.000366</td>\n",
|
|||
|
|
" <td>0.000789</td>\n",
|
|||
|
|
" <td>-0.003011</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>std</th>\n",
|
|||
|
|
" <td>0.001534</td>\n",
|
|||
|
|
" <td>0.001427</td>\n",
|
|||
|
|
" <td>0.001035</td>\n",
|
|||
|
|
" <td>0.002249</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>min</th>\n",
|
|||
|
|
" <td>-0.002912</td>\n",
|
|||
|
|
" <td>-0.002607</td>\n",
|
|||
|
|
" <td>-0.001666</td>\n",
|
|||
|
|
" <td>-0.011246</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>25%</th>\n",
|
|||
|
|
" <td>-0.000609</td>\n",
|
|||
|
|
" <td>-0.000781</td>\n",
|
|||
|
|
" <td>0.000057</td>\n",
|
|||
|
|
" <td>-0.004364</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>50%</th>\n",
|
|||
|
|
" <td>0.000696</td>\n",
|
|||
|
|
" <td>0.000676</td>\n",
|
|||
|
|
" <td>0.000754</td>\n",
|
|||
|
|
" <td>-0.003045</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>75%</th>\n",
|
|||
|
|
" <td>0.001623</td>\n",
|
|||
|
|
" <td>0.001369</td>\n",
|
|||
|
|
" <td>0.001462</td>\n",
|
|||
|
|
" <td>-0.001192</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>max</th>\n",
|
|||
|
|
" <td>0.005812</td>\n",
|
|||
|
|
" <td>0.003360</td>\n",
|
|||
|
|
" <td>0.003149</td>\n",
|
|||
|
|
" <td>0.002550</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>range</th>\n",
|
|||
|
|
" <td>0.008724</td>\n",
|
|||
|
|
" <td>0.005967</td>\n",
|
|||
|
|
" <td>0.004815</td>\n",
|
|||
|
|
" <td>0.013796</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>3sigma</th>\n",
|
|||
|
|
" <td>0.004603</td>\n",
|
|||
|
|
" <td>0.004282</td>\n",
|
|||
|
|
" <td>0.003106</td>\n",
|
|||
|
|
" <td>0.006748</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" </tbody>\n",
|
|||
|
|
"</table>\n",
|
|||
|
|
"</div>"
|
|||
|
|
],
|
|||
|
|
"text/plain": [
|
|||
|
|
" 9.27.1-Die1 9.27.1-Die2 9.27.1-Die3 9.27.1-Die4\n",
|
|||
|
|
"count 72.000000 71.000000 72.000000 73.000000\n",
|
|||
|
|
"mean 0.000585 0.000366 0.000789 -0.003011\n",
|
|||
|
|
"std 0.001534 0.001427 0.001035 0.002249\n",
|
|||
|
|
"min -0.002912 -0.002607 -0.001666 -0.011246\n",
|
|||
|
|
"25% -0.000609 -0.000781 0.000057 -0.004364\n",
|
|||
|
|
"50% 0.000696 0.000676 0.000754 -0.003045\n",
|
|||
|
|
"75% 0.001623 0.001369 0.001462 -0.001192\n",
|
|||
|
|
"max 0.005812 0.003360 0.003149 0.002550\n",
|
|||
|
|
"range 0.008724 0.005967 0.004815 0.013796\n",
|
|||
|
|
"3sigma 0.004603 0.004282 0.003106 0.006748"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
"execution_count": 17,
|
|||
|
|
"metadata": {},
|
|||
|
|
"output_type": "execute_result"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"source": [
|
|||
|
|
"Angle = pd.concat([Angle1,Angle2,Angle3,Angle4],axis=1)\n",
|
|||
|
|
"Angdescibe = describe_3s(Angle)\n",
|
|||
|
|
"Angdescibe"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 18,
|
|||
|
|
"id": "8cc808cd-dde4-4226-8560-0abfc1d3652c",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [
|
|||
|
|
{
|
|||
|
|
"data": {
|
|||
|
|
"application/vnd.jupyter.widget-view+json": {
|
|||
|
|
"model_id": "505cbe8c44a748179b90a619e34ae06a",
|
|||
|
|
"version_major": 2,
|
|||
|
|
"version_minor": 0
|
|||
|
|
},
|
|||
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAyAAAAImCAYAAACrXu7BAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAC/tUlEQVR4nOzdd3QUVR/G8e+W9J4QQu8QOkgHERVRLDQLNmxYKYoICqIoAiqCCoKKimJHQQERxV5eG91CUWronZC6aZst7x9LNlnSewLP55wcmLlzy+zeZOe3d+4dg9PpdCIiIiIiIlIBjJXdABEREREROXcoABERERERkQqjAERERERERCqMAhAREREREakwCkBERERERKTCKAAREREREZEKowBEREREREQqjAIQERERERGpMApARERERESkwigAERERERGRCqMAREREytTTTz/NJ598UupyrFYrDz30ED/++GMZtMpTQkICTqezzMuNj48v8zJFRM42CkBERKTMrF69msWLF9OkSZNSl+Xt7U1cXBwffPCBx36r1YrFYilxuYcPH+b666/nhx9+yJX266+/8uKLL/LXX38Vu1yn08ltt93Gm2++WeK2iYicCxSAiMg55eKLL2bWrFkA3HHHHQwZMgSABQsWcN555xW7vO+//57LLruMNm3acOmll3Ly5Mkya+vJkyd54IEH6Ny5MwMHDmT9+vUe6UeOHGHcuHF07dqVrl278sQTT+S6MF+0aBEXX3wxrVu3pk+fPnzxxRfutJdffpno6Og8f15++eVit/f48eNMnDiRzMxMhg0blqvMESNG5Jv3ySefzLMda9euZc2aNR772rVrR//+/YvdPoC4uDhuueUWBg4cyKWXXuqR9ttvv/HZZ58xePBg3nnnHWJjY4tVtsFgYN68eSxZsoR33nmnRO0TETkXmCu7ASIiFalOnTqcOnUKcH0TnpiYCEBsbCx16tQpVlkJCQk8/PDDjBgxgq5du7J7926MxrL5Xsdut3PfffcRFxfHc889x6FDh7jvvvtYuXIl9evXx2KxcMstt1CnTh3mzZtHYmIiM2fOZM+ePXz44YcYDAZWrFjB008/zdChQ+nYsSPLly9nwoQJNG/enJYtW3L99ddz0UUX5Tqn++67j9atWxervbGxsdx7772cd955zJo1C4PB4E577733WLhwIdOnT883v9ls5uKLL2bu3LkA/Pjjj2zevJmHHnrIfcysWbNo3LgxQ4YMITMzs1jtA9cIxcSJE+nXrx8PPPBArvTt27dz00030axZM7p3786RI0eoUaNGsepo3LgxCxcu5Prrr6dTp0506NCh2O0UETnbKQARkXNK7dq1iY2Nxel0cvToUTIzM7FYLJw6darYAciePXtIT0/nrrvuwtvbmy5dupRZO7/99lv+/fdfPv30U9q3bw+4LpDffvttpkyZwueff05cXBzLly8nNDQUgODgYIYPH87ff/9Nhw4dmDdvHg8//DB33XUXAP3796dXr1589913tGzZkqioKKKiojzqfeGFF2jdujWXXHJJkdv6zz//MG7cOKKiopg2bRp2u92dFh8fzxtvvMHEiRPx9/cnJSUFgICAAI8yjEYjZrPZ/f9jx46xbt06fHx83Mfs2rWLwMBA/P39ycjIKHL7svzvf//j8OHDvPrqq3mmX3DBBTz//PPs2bOHH3/8kaFDhxa7DoCGDRsyYcIEnn32WZYsWVKiMkREzmYKQETknFK3bl12797NiRMnCA0NJTQ0lMOHDxMbG0vDhg2LVVbWt/De3t5l3s41a9bQsGFDd/AB0K9fP1544QUAtm7dSps2bdzBB0DTpk0B18hOx44deeWVV2jWrJk7PSAgAG9v73xHD+Li4li0aFGxbr86duwY9957L9HR0axfv57u3bvnedwTTzzBE0884d7+559/8PPz8zjGaDQyZswYfvnlF4xGIw6Hg3bt2rnTbTYbGzdu5K233sJkMrF58+YitxPgo48+YtiwYfm+Xy1btmTatGns3LmTuXPnegQ/xTVo0CBefPFF/vvvv2KPJomInO00B0REzil16tQhNjaWw4cPU69ePerVq8fhw4c5deoUdevWdR+3cuVKrrzySjp06MDll1/Ol19+6U7Lmjtx2223AbjnJjz66KPuY9LS0nj66afp2bMnXbt2ZezYscTFxXm0JTo6mnXr1vHzzz8zdOhQ7rzzTnfaiRMniI6O9ji+du3aHDp0CLvdjslkyrXi0s6dOwGoVasWRqOR1q1be1xs//333yQlJdGpU6c8X5uPPvqI+vXr07t37yK9lll1ffzxxzz//PMAfP7552zYsIENGzYwbdo0ateu7d7esGGDe4L2mUGAw+HAZDLxyiuvsH37dh555BFat27Nli1b3D/du3dn5MiR/Pvvv/z5559FbmOWzZs3c+GFFxZ4TN26dbn44osJDg4udvk5eXl50bNnTzZt2lSqckREzkYaARGRc0rt2rWJi4vj0KFD1KtXj9DQUI4cOeIxB+TPP/9kwoQJDB8+nEsuuYR169YxceJEOnToQP369d1zJ/7991+mTJnC0qVLAQgLC3PXM2XKFNavX8+UKVPw8/Nj1qxZ3H///Xz00Uce7fnmm2/47rvvuP7662nVqpV7f3p6eq75B76+vthsNpKSkujSpQuffvop7733HrfffjsnT55k1qxZRERE5DuZft68eTRt2jTPi3CbzcaSJUvynBtRmKZNm3Ls2DHANZfDZDIBrhENg8Hg3gbc/8+5L+t8vby88PLyAlxzYJxOp/uWrax9DocDwH1cUaWmppKQkEDNmjWLeXYlFxUVxdGjRyusPhGR6kIBiIicU+rWrYvdbufff/+lfv36hISEcODAARISEqhduzbgutCfNm0a1157LSaTicaNG/Paa6+xZcsW6tev7547kZqaCuBxmxDAwYMHWblyJa+88gr9+vUDXBfPI0eO5ODBg9SvX9997FdffcUnn3yS6/Yvb2/vXBfpWRfdGRkZXHXVVfz00088++yzvPzyy6SmpmK32xk9erR7LkVOn376KatXr+bNN9/Mc6L8999/T2pqKgMHDizuSwq4RnwArrrqqlxp+Y245JSRkeERwKWnp/Pff//lypvzlrTiMJvNGAwGUlNTy+WWubxYLBYiIyMrpC4RkepEAYiInFOyRjk2b97MddddR2hoKN988w1Op9N9C1abNm1IT09n5syZ/PXXX2zfvh2bzUZ6enqR6ti1axdOp5PRo0fnStu/f79HAHLXXXflOfckIiKCEydOeOzLWrHLz88PLy8v5s2bx+bNm9m9ezfvv/8+hw8f5o477shV1t69e5kxYwY33XQTffr0ybPNX3zxBX379s01L6OoEhISANiyZYv7Av/zzz9n7ty5/PTTT+7jNm7cyLBhw3LlT05OJjo6moyMDFJSUrj99tsZPnx4nnVZrdZiBxHe3t7UqVOHnTt30q1bt2LlLaldu3ZVWF0iItWJAhAROaf4+fkRGhrKX3/9xdixYwkNDeXvv//GbDa7b89ZtGgRM2bM4JprruHWW2+lU6dO3H777cWu66233sp1G1XO4APId5nWrFWsbDabe0Rj69at+Pr6esxPaN++PTVr1uTJJ59kzJgxueYupKamMmbMGBo0aMCkSZPyrMtisfDbb78xZ86cYp9jlr179+Lj40NmZqZ7krvVas11G1V+q1cdO3aMyMhIfvvtN8aNG4fD4cBgMODv7+8+xmq1kpqayttvv835559f7DZedNFFLF26tEKCgpiYGLZs2UKvXr3KvS4RkepGAYiInHPq1q1LQkKC+xYscN2vn3XL06effsqVV17JtGnTANfqUFnf8BdF8+bNAdcFc9a8jhMnTjBr1izuueeeXJPL83LZZZcxbdo0li1bxg033IDVamXx4sX07NnT4xkb4Ap0IiIi3JPis9jtdsaOHcvx48dZtmxZvqs6/e9//8PpdBZr8vmZNm/eTEZGRp63WxV2C5bdbufQoUNERUXRq1cvNm/ezJo1axg3bhyfffYZtWrVIj09neuvv57zzjuvRMEHwK233srVV1/
|
|||
|
|
"text/html": [
|
|||
|
|
"\n",
|
|||
|
|
" <div style=\"display: inline-block;\">\n",
|
|||
|
|
" <div class=\"jupyter-widgets widget-label\" style=\"text-align: center;\">\n",
|
|||
|
|
" Figure\n",
|
|||
|
|
" </div>\n",
|
|||
|
|
" <img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAImCAYAAACrXu7BAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAC/tUlEQVR4nOzdd3QUVR/G8e+W9J4QQu8QOkgHERVRLDQLNmxYKYoICqIoAiqCCoKKimJHQQERxV5eG91CUWronZC6aZst7x9LNlnSewLP55wcmLlzy+zeZOe3d+4dg9PpdCIiIiIiIlIBjJXdABEREREROXcoABERERERkQqjAERERERERCqMAhAREREREakwCkBERERERKTCKAAREREREZEKowBEREREREQqjAIQERERERGpMApARERERESkwigAERERERGRCqMAREREytTTTz/NJ598UupyrFYrDz30ED/++GMZtMpTQkICTqezzMuNj48v8zJFRM42CkBERKTMrF69msWLF9OkSZNSl+Xt7U1cXBwffPCBx36r1YrFYilxuYcPH+b666/nhx9+yJX266+/8uKLL/LXX38Vu1yn08ltt93Gm2++WeK2iYicCxSAiMg55eKLL2bWrFkA3HHHHQwZMgSABQsWcN555xW7vO+//57LLruMNm3acOmll3Ly5Mkya+vJkyd54IEH6Ny5MwMHDmT9+vUe6UeOHGHcuHF07dqVrl278sQTT+S6MF+0aBEXX3wxrVu3pk+fPnzxxRfutJdffpno6Og8f15++eVit/f48eNMnDiRzMxMhg0blqvMESNG5Jv3ySefzLMda9euZc2aNR772rVrR//+/YvdPoC4uDhuueUWBg4cyKWXXuqR9ttvv/HZZ58xePBg3nnnHWJjY4tVtsFgYN68eSxZsoR33nmnRO0TETkXmCu7ASIiFalOnTqcOnUKcH0TnpiYCEBsbCx16tQpVlkJCQk8/PDDjBgxgq5du7J7926MxrL5Xsdut3PfffcRFxfHc889x6FDh7jvvvtYuXIl9evXx2KxcMstt1CnTh3mzZtHYmIiM2fOZM+ePXz44YcYDAZWrFjB008/zdChQ+nYsSPLly9nwoQJNG/enJYtW3L99ddz0UUX5Tqn++67j9atWxervbGxsdx7772cd955zJo1C4PB4E577733WLhwIdOnT883v9ls5uKLL2bu3LkA/Pjjj2zevJmHHnrIfcysWbNo3LgxQ4YMITMzs1jtA9cIxcSJE+nXrx8PPPBArvTt27dz00030axZM7p3786RI0eoUaNGsepo3LgxCxcu5Prrr6dTp0506NCh2O0UETnbKQARkXNK7dq1iY2Nxel0cvToUTIzM7FYLJw6darYAciePXtIT0/nrrvuwtvbmy5dupRZO7/99lv+/fdfPv30U9q3bw+4LpDffvttpkyZwueff05cXBzLly8nNDQUgODgYIYPH87ff/9Nhw4dmDdvHg8//DB33XUXAP3796dXr1589913tGzZkqioKKKiojzqfeGFF2jdujWXXHJJkdv6zz//MG7cOKKiopg2bRp2u92dFh8fzxtvvMHEiRPx9/cnJSUFgICAAI8yjEYjZrPZ/f9jx46xbt06fHx83Mfs2rWLwMBA/P39ycjIKHL7svzvf//j8OHDvPrqq3mmX3DBBTz//PPs2bOHH3/8kaFDhxa7DoCGDRsyYcIEnn32WZYsWVKiMkREzmYKQETknFK3bl12797NiRMnCA0NJTQ0lMOHDxMbG0vDhg2LVVbWt/De3t5l3s41a9bQsGFDd/AB0K9fP1544QUAtm7dSps2bdzBB0DTpk0B18hOx44deeWVV2jWrJk7PSAgAG9v73xHD+Li4li0aFGxbr86duwY9957L9HR0axfv57u3bvnedwTTzzBE0884d7+559/8PPz8zjGaDQyZswYfvnlF4xGIw6Hg3bt2rnTbTYbGzdu5K233sJkMrF58+YitxPgo48+YtiwYfm+Xy1btmTatGns3LmTuXPnegQ/xTVo0CBefPFF/vvvv2KPJomInO00B0REzil16tQhNjaWw4cPU69ePerVq8fhw4c5deoUdevWdR+3cuVKrrzySjp06MDll1/Ol19+6U7Lmjtx2223AbjnJjz66KPuY9LS0nj66afp2bMnXbt2ZezYscTFxXm0JTo6mnXr1vHzzz8zdOhQ7rzzTnfaiRMniI6O9ji+du3aHDp0CLvdjslkyrXi0s6dOwGoVasWRqOR1q1be1xs//333yQlJdGpU6c8X5uPPvqI+vXr07t37yK9lll1ffzxxzz//PMAfP7552zYsIENGzYwbdo0ateu7d7esGGDe4L2mUGAw+HAZDLxyiuvsH37dh555BFat27Nli1b3D/du3dn5MiR/Pvvv/z5559FbmOWzZs3c+GFFxZ4TN26dbn44osJDg4udvk5eXl50bNnTzZt2lSqckREzkYaARGRc0rt2rWJi4vj0KFD1KtXj9DQUI4cOeIxB+TPP/9kwoQJDB8+nEsuuYR169YxceJEOnToQP369d1zJ/7991+mTJnC0qVLAQgLC3PXM2XKFNavX8+UKVPw8/Nj1qxZ3H///Xz00Uce7fnmm2/47rvvuP7662nVqpV7f3p6eq75B76+vthsNpKSkujSpQuffvop7733HrfffjsnT55k1qxZRERE5DuZft68eTRt2jTPi3CbzcaSJUvynBtRmKZNm3Ls2DHANZfDZDIBrhENg8Hg3gbc/8+5L+t8vby88PLyAlxzYJxOp/uWrax9DocDwH1cUaWmppKQkEDNmjWLeXYlFxUVxdGjRyusPhGR6kIBiIicU+rWrYvdbufff/+lfv36hISEcODAARISEqhduzbgutCfNm0a1157LSaTicaNG/Paa6+xZcsW6tev7547kZqaCuBxmxDAwYMHWblyJa+88gr9+vUDXBfPI0eO5ODBg9SvX9997FdffcUnn3yS6/Yvb2/vXBfpWRfdGRkZXHXVVfz00088++yzvPzyy6SmpmK32xk9erR7LkVOn376KatXr+bNN9/Mc6L8999/T2pqKgMHDizuSwq4RnwArrrqqlxp+Y245JSRkeERwKWnp/Pff//lypvzlrTiMJvNGAwGUlNTy+WWubxYLBYiIyMrpC4RkepEAYiInFOyRjk2b97MddddR2hoKN988w1Op9N9C1abNm1IT09n5syZ/PXXX2zfvh2bzUZ6enqR6ti1axdOp5PRo0fnStu/f79HAHLXXXflOfckIiKCEydOeOzLWrHLz88PLy8v5s2bx+bNm9m9ezfvv/8+hw8f5o477shV1t69e5kxYwY33XQTffr0ybPNX3zxBX379s01L6OoEhISANiyZYv7Av/zzz9n7ty5/PTTT+7jNm7cyLBhw3LlT05OJjo6moyMDFJSUrj99tsZPnx4nnVZrdZiBxHe3t7UqVOHnTt30q1bt2LlLaldu3ZVWF0iItWJAhAROaf4+fkRGhrKX3/9xdixYwkNDeXvv//GbDa7b89ZtGgRM2bM4JprruHWW2+lU6dO3H777cWu66233sp1G1XO4APId5nWrFWsbDabe0Rj69at+Pr6esxPaN++PTVr1uTJJ59kzJgxueYupKamMmbMGBo0aMCkSZPyrMtisfDbb78xZ86cYp9jlr179+Lj40NmZqZ7krvVas11G1V+q1cdO3aMyMhIfvvtN8aNG4fD4cBgMODv7+8+xmq1kpqayttvv835559f7DZedNFFLF26tEKCgpiYGLZs2UKvXr3KvS4RkepGAYiInHPq1q1LQkKC+xYscN2vn3XL06effsqVV17JtGnTANfqUFnf8BdF8+bNAdcFc9a8jhMnTjBr1izuueeeXJPL83LZZZcxbdo0li1bxg033IDVamXx4sX07NnT4xkb4Ap0IiIi3JPis9jtdsaOHcvx48dZtmxZvqs6/e9//8PpdBZr8vmZNm/eTEZGRp63WxV2C5bdbufQoUNERUXRq1cvNm/ezJo1axg3bhyfffY
|
|||
|
|
" </div>\n",
|
|||
|
|
" "
|
|||
|
|
],
|
|||
|
|
"text/plain": [
|
|||
|
|
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
"metadata": {},
|
|||
|
|
"output_type": "display_data"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"source": [
|
|||
|
|
"fig, ax = plt.subplots(2,1)\n",
|
|||
|
|
"ax[0].plot([i+1 for i in range(len(Angle.columns))],Angdescibe.loc['mean'],linestyle = '-.',marker = 'o',color='w')\n",
|
|||
|
|
"Angle.boxplot(ax=ax[0])\n",
|
|||
|
|
"ax[0].axhline(0,c='orange',ls='-.',label=r'Mean_Angle:$0°\\pm0.0005°$')\n",
|
|||
|
|
"for i in range(len(Angle.columns)):\n",
|
|||
|
|
" ax[0].annotate(round(Angdescibe.loc['mean'][i],5), \n",
|
|||
|
|
" xy=(i+1,Angdescibe.loc['mean'][i]),\n",
|
|||
|
|
" xytext=(i+0.95,Angdescibe.loc['mean'][i]),\n",
|
|||
|
|
" color=\"r\")\n",
|
|||
|
|
"ax[0].legend()\n",
|
|||
|
|
"ax[0].set_title('mean_Angle/Day')\n",
|
|||
|
|
"ax[1].plot([i for i in Angle.columns],Angdescibe.loc['3sigma'],marker = 'o')\n",
|
|||
|
|
"ax[1].axhline(0.001,c='orange',ls='-.',label=r'3sigma_Angle:$<0.001°$')\n",
|
|||
|
|
"for i in range(len(Angle.columns)):\n",
|
|||
|
|
" ax[1].annotate(round(Angdescibe.loc['3sigma'][i],5), \n",
|
|||
|
|
" xy=(i,Angdescibe.loc['3sigma'][i]),\n",
|
|||
|
|
" xytext=(i,Angdescibe.loc['3sigma'][i]),\n",
|
|||
|
|
" color=\"r\")\n",
|
|||
|
|
"ax[1].legend() \n",
|
|||
|
|
"ax[1].set_title('3sigam_Angle/Day')\n",
|
|||
|
|
"# ax[2].plot([i for i in Angle.columns],Angdescibe.loc['range'],marker = 'o')\n",
|
|||
|
|
"# for i in range(len(Angle.columns)):\n",
|
|||
|
|
"# ax[2].annotate(round(Angdescibe.loc['range'][i],3), \n",
|
|||
|
|
"# xy=(i,Angdescibe.loc['range'][i]),\n",
|
|||
|
|
"# xytext=(i,Angdescibe.loc['range'][i]),\n",
|
|||
|
|
"# color=\"r\")\n",
|
|||
|
|
"# ax[2].set_title('Range_Angle/Day')\n",
|
|||
|
|
"plt.suptitle(f'{wafer_name} 角度(°)')\n",
|
|||
|
|
"fig.tight_layout()\n",
|
|||
|
|
"plt.savefig(f'Wafer/{wafer_name}角度.jpg',dpi=200)\n",
|
|||
|
|
"plt.show()"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "markdown",
|
|||
|
|
"id": "6ace8d23",
|
|||
|
|
"metadata": {},
|
|||
|
|
"source": [
|
|||
|
|
"## 角度Mark"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "markdown",
|
|||
|
|
"id": "c70c8ca9",
|
|||
|
|
"metadata": {},
|
|||
|
|
"source": [
|
|||
|
|
"### 角度MarkX"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 19,
|
|||
|
|
"id": "87ad2953",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [],
|
|||
|
|
"source": [
|
|||
|
|
"index1_87 = np.arange(1,88,1)\n",
|
|||
|
|
"AngleMarkX1 = TotalData1['M1X'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num:]\n",
|
|||
|
|
"AngleMarkX2 = TotalData2['M1X'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num:]\n",
|
|||
|
|
"AngleMarkX3 = TotalData3['M1X'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num:]\n",
|
|||
|
|
"AngleMarkX4 = TotalData4['M1X'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num:]"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 20,
|
|||
|
|
"id": "3956e406-6bf0-43dd-b57f-1d3fdc607b9e",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [],
|
|||
|
|
"source": [
|
|||
|
|
"for i,j in zip([\"Die1\",\"Die2\",\"Die3\",\"Die4\"],[AngleMarkX1,AngleMarkX2,AngleMarkX3,AngleMarkX4]):\n",
|
|||
|
|
" Data_describe['Mark_Type'] = \"Mark1\"\n",
|
|||
|
|
" Data_describe['Die_Type'] = i\n",
|
|||
|
|
" Data_describe['Value_Type'] = \"X\"\n",
|
|||
|
|
" df = Data_transform(j,Data_describe)\n",
|
|||
|
|
" append_dataframe_to_mysql(df,df_all.iloc[0,0],db_connection)"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 21,
|
|||
|
|
"id": "20240c77-1fbe-4570-befd-f8377a148aff",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [
|
|||
|
|
{
|
|||
|
|
"data": {
|
|||
|
|
"text/html": [
|
|||
|
|
"<div>\n",
|
|||
|
|
"<style scoped>\n",
|
|||
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|||
|
|
" vertical-align: middle;\n",
|
|||
|
|
" }\n",
|
|||
|
|
"\n",
|
|||
|
|
" .dataframe tbody tr th {\n",
|
|||
|
|
" vertical-align: top;\n",
|
|||
|
|
" }\n",
|
|||
|
|
"\n",
|
|||
|
|
" .dataframe thead th {\n",
|
|||
|
|
" text-align: right;\n",
|
|||
|
|
" }\n",
|
|||
|
|
"</style>\n",
|
|||
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|||
|
|
" <thead>\n",
|
|||
|
|
" <tr style=\"text-align: right;\">\n",
|
|||
|
|
" <th></th>\n",
|
|||
|
|
" <th>9.27.1-Die1</th>\n",
|
|||
|
|
" <th>9.27.1-Die2</th>\n",
|
|||
|
|
" <th>9.27.1-Die3</th>\n",
|
|||
|
|
" <th>9.27.1-Die4</th>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" </thead>\n",
|
|||
|
|
" <tbody>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>count</th>\n",
|
|||
|
|
" <td>72.000000</td>\n",
|
|||
|
|
" <td>71.000000</td>\n",
|
|||
|
|
" <td>72.000000</td>\n",
|
|||
|
|
" <td>73.000000</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>mean</th>\n",
|
|||
|
|
" <td>-4.884917</td>\n",
|
|||
|
|
" <td>-5.792479</td>\n",
|
|||
|
|
" <td>-5.852556</td>\n",
|
|||
|
|
" <td>-5.297397</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>std</th>\n",
|
|||
|
|
" <td>0.424816</td>\n",
|
|||
|
|
" <td>0.257938</td>\n",
|
|||
|
|
" <td>0.251066</td>\n",
|
|||
|
|
" <td>0.344082</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>min</th>\n",
|
|||
|
|
" <td>-6.319000</td>\n",
|
|||
|
|
" <td>-7.055000</td>\n",
|
|||
|
|
" <td>-6.603000</td>\n",
|
|||
|
|
" <td>-6.055000</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>25%</th>\n",
|
|||
|
|
" <td>-5.057000</td>\n",
|
|||
|
|
" <td>-5.942000</td>\n",
|
|||
|
|
" <td>-6.013250</td>\n",
|
|||
|
|
" <td>-5.540000</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>50%</th>\n",
|
|||
|
|
" <td>-4.900500</td>\n",
|
|||
|
|
" <td>-5.769000</td>\n",
|
|||
|
|
" <td>-5.893000</td>\n",
|
|||
|
|
" <td>-5.311000</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>75%</th>\n",
|
|||
|
|
" <td>-4.640750</td>\n",
|
|||
|
|
" <td>-5.642000</td>\n",
|
|||
|
|
" <td>-5.712500</td>\n",
|
|||
|
|
" <td>-5.088000</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>max</th>\n",
|
|||
|
|
" <td>-3.637000</td>\n",
|
|||
|
|
" <td>-5.207000</td>\n",
|
|||
|
|
" <td>-5.189000</td>\n",
|
|||
|
|
" <td>-4.350000</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>range</th>\n",
|
|||
|
|
" <td>2.682000</td>\n",
|
|||
|
|
" <td>1.848000</td>\n",
|
|||
|
|
" <td>1.414000</td>\n",
|
|||
|
|
" <td>1.705000</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>3sigma</th>\n",
|
|||
|
|
" <td>1.274447</td>\n",
|
|||
|
|
" <td>0.773815</td>\n",
|
|||
|
|
" <td>0.753199</td>\n",
|
|||
|
|
" <td>1.032245</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" </tbody>\n",
|
|||
|
|
"</table>\n",
|
|||
|
|
"</div>"
|
|||
|
|
],
|
|||
|
|
"text/plain": [
|
|||
|
|
" 9.27.1-Die1 9.27.1-Die2 9.27.1-Die3 9.27.1-Die4\n",
|
|||
|
|
"count 72.000000 71.000000 72.000000 73.000000\n",
|
|||
|
|
"mean -4.884917 -5.792479 -5.852556 -5.297397\n",
|
|||
|
|
"std 0.424816 0.257938 0.251066 0.344082\n",
|
|||
|
|
"min -6.319000 -7.055000 -6.603000 -6.055000\n",
|
|||
|
|
"25% -5.057000 -5.942000 -6.013250 -5.540000\n",
|
|||
|
|
"50% -4.900500 -5.769000 -5.893000 -5.311000\n",
|
|||
|
|
"75% -4.640750 -5.642000 -5.712500 -5.088000\n",
|
|||
|
|
"max -3.637000 -5.207000 -5.189000 -4.350000\n",
|
|||
|
|
"range 2.682000 1.848000 1.414000 1.705000\n",
|
|||
|
|
"3sigma 1.274447 0.773815 0.753199 1.032245"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
"execution_count": 21,
|
|||
|
|
"metadata": {},
|
|||
|
|
"output_type": "execute_result"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"source": [
|
|||
|
|
"AngleMarkX = pd.concat([AngleMarkX1,AngleMarkX2,AngleMarkX3,AngleMarkX4],axis=1)\n",
|
|||
|
|
"RXdescibe = describe_3s(AngleMarkX)\n",
|
|||
|
|
"RXdescibe"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 22,
|
|||
|
|
"id": "2dcd5e1f-bcd3-4100-8aa0-f2125301c1e3",
|
|||
|
|
"metadata": {
|
|||
|
|
"tags": []
|
|||
|
|
},
|
|||
|
|
"outputs": [
|
|||
|
|
{
|
|||
|
|
"data": {
|
|||
|
|
"application/vnd.jupyter.widget-view+json": {
|
|||
|
|
"model_id": "1624bdec89d54aefac84f49998c47d5d",
|
|||
|
|
"version_major": 2,
|
|||
|
|
"version_minor": 0
|
|||
|
|
},
|
|||
|
|
"image/png": "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
|
|||
|
|
"text/html": [
|
|||
|
|
"\n",
|
|||
|
|
" <div style=\"display: inline-block;\">\n",
|
|||
|
|
" <div class=\"jupyter-widgets widget-label\" style=\"text-align: center;\">\n",
|
|||
|
|
" Figure\n",
|
|||
|
|
" </div>\n",
|
|||
|
|
" <img src='data:image/png;base64,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
|
|||
|
|
" </div>\n",
|
|||
|
|
" "
|
|||
|
|
],
|
|||
|
|
"text/plain": [
|
|||
|
|
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
"metadata": {},
|
|||
|
|
"output_type": "display_data"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"source": [
|
|||
|
|
"fig, ax = plt.subplots(2,1)\n",
|
|||
|
|
"ax[0].plot([i+1 for i in range(len(AngleMarkX.columns))],RXdescibe.loc['mean'],linestyle = '-.',marker = 'o',color='w')\n",
|
|||
|
|
"AngleMarkX.boxplot(ax=ax[0])\n",
|
|||
|
|
"ax[0].axhline(0,c='orange',ls='-.',label=r'Mean_X:$0um\\pm0.10um$')\n",
|
|||
|
|
"for i in range(len(AngleMarkX.columns)):\n",
|
|||
|
|
" ax[0].annotate(round(RXdescibe.loc['mean'][i],2), \n",
|
|||
|
|
" xy=(i+1,RXdescibe.loc['mean'][i]),\n",
|
|||
|
|
" xytext=(i+0.95,RXdescibe.loc['mean'][i]+0.05),\n",
|
|||
|
|
" color=\"r\")\n",
|
|||
|
|
"ax[0].legend()\n",
|
|||
|
|
"ax[0].set_title('mean_X/Day')\n",
|
|||
|
|
"ax[1].plot([i for i in AngleMarkX.columns],RXdescibe.loc['3sigma'],marker = 'o')\n",
|
|||
|
|
"ax[1].axhline(0.8,c='orange',ls='-.',label=r'3sigma_X:$<0.800um$')\n",
|
|||
|
|
"for i in range(len(AngleMarkX.columns)):\n",
|
|||
|
|
" ax[1].annotate(round(RXdescibe.loc['3sigma'][i],3), \n",
|
|||
|
|
" xy=(i,RXdescibe.loc['3sigma'][i]),\n",
|
|||
|
|
" xytext=(i,RXdescibe.loc['3sigma'][i]),\n",
|
|||
|
|
" color=\"r\")\n",
|
|||
|
|
"ax[1].legend() \n",
|
|||
|
|
"ax[1].set_title('3sigam_X/Day')\n",
|
|||
|
|
"# ax[2].plot([i for i in AngleMarkX.columns],RXdescibe.loc['range'],marker = 'o')\n",
|
|||
|
|
"# for i in range(len(AngleMarkX.columns)):\n",
|
|||
|
|
"# ax[2].annotate(round(RXdescibe.loc['range'][i],3), \n",
|
|||
|
|
"# xy=(i,RXdescibe.loc['range'][i]),\n",
|
|||
|
|
"# xytext=(i,RXdescibe.loc['range'][i]),\n",
|
|||
|
|
"# color=\"r\")\n",
|
|||
|
|
"# ax[2].set_title('Range_X/Day')\n",
|
|||
|
|
"plt.suptitle(f'{wafer_name} 角度Mark:X')\n",
|
|||
|
|
"fig.tight_layout()\n",
|
|||
|
|
"plt.savefig(f'Wafer/{wafer_name}角度MarkX.jpg',dpi=200)\n",
|
|||
|
|
"plt.show()"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "markdown",
|
|||
|
|
"id": "fca6defb",
|
|||
|
|
"metadata": {},
|
|||
|
|
"source": [
|
|||
|
|
"### 角度MarkY"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 23,
|
|||
|
|
"id": "389557c5",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [],
|
|||
|
|
"source": [
|
|||
|
|
"index1_87 = np.arange(1,88,1)\n",
|
|||
|
|
"AngleMarkY1 = TotalData1['M1Y'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num:]\n",
|
|||
|
|
"AngleMarkY2 = TotalData2['M1Y'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num:]\n",
|
|||
|
|
"AngleMarkY3 = TotalData3['M1Y'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num:]\n",
|
|||
|
|
"AngleMarkY4 = TotalData4['M1Y'].dropna(subset='QX8800SP_Index').set_index('QX8800SP_Index').iloc[:,wafer_num:]"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 24,
|
|||
|
|
"id": "2ef65e86-cc12-4049-be7f-285e283cf8f4",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [],
|
|||
|
|
"source": [
|
|||
|
|
"for i,j in zip([\"Die1\",\"Die2\",\"Die3\",\"Die4\"],[AngleMarkY1,AngleMarkY2,AngleMarkY3,AngleMarkY4]):\n",
|
|||
|
|
" Data_describe['Mark_Type'] = \"Mark1\"\n",
|
|||
|
|
" Data_describe['Die_Type'] = i\n",
|
|||
|
|
" Data_describe['Value_Type'] = \"Y\"\n",
|
|||
|
|
" df = Data_transform(j,Data_describe)\n",
|
|||
|
|
" append_dataframe_to_mysql(df,df_all.iloc[0,0],db_connection)"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 25,
|
|||
|
|
"id": "84abc105-8e22-4de7-a088-3ec7c6fdc59f",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [
|
|||
|
|
{
|
|||
|
|
"data": {
|
|||
|
|
"text/html": [
|
|||
|
|
"<div>\n",
|
|||
|
|
"<style scoped>\n",
|
|||
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|||
|
|
" vertical-align: middle;\n",
|
|||
|
|
" }\n",
|
|||
|
|
"\n",
|
|||
|
|
" .dataframe tbody tr th {\n",
|
|||
|
|
" vertical-align: top;\n",
|
|||
|
|
" }\n",
|
|||
|
|
"\n",
|
|||
|
|
" .dataframe thead th {\n",
|
|||
|
|
" text-align: right;\n",
|
|||
|
|
" }\n",
|
|||
|
|
"</style>\n",
|
|||
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|||
|
|
" <thead>\n",
|
|||
|
|
" <tr style=\"text-align: right;\">\n",
|
|||
|
|
" <th></th>\n",
|
|||
|
|
" <th>9.27.1-Die1</th>\n",
|
|||
|
|
" <th>9.27.1-Die2</th>\n",
|
|||
|
|
" <th>9.27.1-Die3</th>\n",
|
|||
|
|
" <th>9.27.1-Die4</th>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" </thead>\n",
|
|||
|
|
" <tbody>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>count</th>\n",
|
|||
|
|
" <td>72.000000</td>\n",
|
|||
|
|
" <td>71.000000</td>\n",
|
|||
|
|
" <td>72.000000</td>\n",
|
|||
|
|
" <td>73.000000</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>mean</th>\n",
|
|||
|
|
" <td>-2.377722</td>\n",
|
|||
|
|
" <td>-2.222732</td>\n",
|
|||
|
|
" <td>-2.107528</td>\n",
|
|||
|
|
" <td>-1.705603</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>std</th>\n",
|
|||
|
|
" <td>0.399997</td>\n",
|
|||
|
|
" <td>0.195515</td>\n",
|
|||
|
|
" <td>0.282609</td>\n",
|
|||
|
|
" <td>0.410247</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>min</th>\n",
|
|||
|
|
" <td>-3.740000</td>\n",
|
|||
|
|
" <td>-2.692000</td>\n",
|
|||
|
|
" <td>-2.939000</td>\n",
|
|||
|
|
" <td>-2.975000</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>25%</th>\n",
|
|||
|
|
" <td>-2.588000</td>\n",
|
|||
|
|
" <td>-2.356000</td>\n",
|
|||
|
|
" <td>-2.263000</td>\n",
|
|||
|
|
" <td>-1.869000</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>50%</th>\n",
|
|||
|
|
" <td>-2.354000</td>\n",
|
|||
|
|
" <td>-2.208000</td>\n",
|
|||
|
|
" <td>-2.063000</td>\n",
|
|||
|
|
" <td>-1.698000</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>75%</th>\n",
|
|||
|
|
" <td>-2.094750</td>\n",
|
|||
|
|
" <td>-2.118500</td>\n",
|
|||
|
|
" <td>-1.925750</td>\n",
|
|||
|
|
" <td>-1.494000</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>max</th>\n",
|
|||
|
|
" <td>-1.494000</td>\n",
|
|||
|
|
" <td>-1.557000</td>\n",
|
|||
|
|
" <td>-1.440000</td>\n",
|
|||
|
|
" <td>-0.900000</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>range</th>\n",
|
|||
|
|
" <td>2.246000</td>\n",
|
|||
|
|
" <td>1.135000</td>\n",
|
|||
|
|
" <td>1.499000</td>\n",
|
|||
|
|
" <td>2.075000</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" <tr>\n",
|
|||
|
|
" <th>3sigma</th>\n",
|
|||
|
|
" <td>1.199990</td>\n",
|
|||
|
|
" <td>0.586544</td>\n",
|
|||
|
|
" <td>0.847828</td>\n",
|
|||
|
|
" <td>1.230742</td>\n",
|
|||
|
|
" </tr>\n",
|
|||
|
|
" </tbody>\n",
|
|||
|
|
"</table>\n",
|
|||
|
|
"</div>"
|
|||
|
|
],
|
|||
|
|
"text/plain": [
|
|||
|
|
" 9.27.1-Die1 9.27.1-Die2 9.27.1-Die3 9.27.1-Die4\n",
|
|||
|
|
"count 72.000000 71.000000 72.000000 73.000000\n",
|
|||
|
|
"mean -2.377722 -2.222732 -2.107528 -1.705603\n",
|
|||
|
|
"std 0.399997 0.195515 0.282609 0.410247\n",
|
|||
|
|
"min -3.740000 -2.692000 -2.939000 -2.975000\n",
|
|||
|
|
"25% -2.588000 -2.356000 -2.263000 -1.869000\n",
|
|||
|
|
"50% -2.354000 -2.208000 -2.063000 -1.698000\n",
|
|||
|
|
"75% -2.094750 -2.118500 -1.925750 -1.494000\n",
|
|||
|
|
"max -1.494000 -1.557000 -1.440000 -0.900000\n",
|
|||
|
|
"range 2.246000 1.135000 1.499000 2.075000\n",
|
|||
|
|
"3sigma 1.199990 0.586544 0.847828 1.230742"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
"execution_count": 25,
|
|||
|
|
"metadata": {},
|
|||
|
|
"output_type": "execute_result"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"source": [
|
|||
|
|
"AngleMarkY = pd.concat([AngleMarkY1,AngleMarkY2,AngleMarkY3,AngleMarkY4],axis=1)\n",
|
|||
|
|
"RYdescibe = describe_3s(AngleMarkY)\n",
|
|||
|
|
"RYdescibe"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 26,
|
|||
|
|
"id": "c7a1606f-4530-4fa6-89ce-892a57c06493",
|
|||
|
|
"metadata": {
|
|||
|
|
"tags": []
|
|||
|
|
},
|
|||
|
|
"outputs": [
|
|||
|
|
{
|
|||
|
|
"data": {
|
|||
|
|
"application/vnd.jupyter.widget-view+json": {
|
|||
|
|
"model_id": "a90086f06fa64a338dbe1df7d3f2fe9d",
|
|||
|
|
"version_major": 2,
|
|||
|
|
"version_minor": 0
|
|||
|
|
},
|
|||
|
|
"image/png": "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
|
|||
|
|
"text/html": [
|
|||
|
|
"\n",
|
|||
|
|
" <div style=\"display: inline-block;\">\n",
|
|||
|
|
" <div class=\"jupyter-widgets widget-label\" style=\"text-align: center;\">\n",
|
|||
|
|
" Figure\n",
|
|||
|
|
" </div>\n",
|
|||
|
|
" <img src='data:image/png;base64,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
|
|||
|
|
" </div>\n",
|
|||
|
|
" "
|
|||
|
|
],
|
|||
|
|
"text/plain": [
|
|||
|
|
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
"metadata": {},
|
|||
|
|
"output_type": "display_data"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"source": [
|
|||
|
|
"fig, ax = plt.subplots(2,1)\n",
|
|||
|
|
"ax[0].plot([i+1 for i in range(len(AngleMarkY.columns))],RYdescibe.loc['mean'],linestyle = '-.',marker = 'o',color='w')\n",
|
|||
|
|
"AngleMarkY.boxplot(ax=ax[0])\n",
|
|||
|
|
"ax[0].axhline(0,c='orange',ls='-.',label=r'Mean_Y:$0um\\pm0.10um$')\n",
|
|||
|
|
"for i in range(len(AngleMarkY.columns)):\n",
|
|||
|
|
" ax[0].annotate(round(RYdescibe.loc['mean'][i],2), \n",
|
|||
|
|
" xy=(i+1,RYdescibe.loc['mean'][i]),\n",
|
|||
|
|
" xytext=(i+0.95,RYdescibe.loc['mean'][i]+0.05),\n",
|
|||
|
|
" color=\"r\")\n",
|
|||
|
|
"ax[0].legend()\n",
|
|||
|
|
"ax[0].set_title('mean_Y/Day')\n",
|
|||
|
|
"ax[1].plot([i for i in AngleMarkY.columns],RYdescibe.loc['3sigma'],marker = 'o')\n",
|
|||
|
|
"ax[1].axhline(0.8,c='orange',ls='-.',label=r'3sigma_Y:$<0.800um$')\n",
|
|||
|
|
"for i in range(len(AngleMarkY.columns)):\n",
|
|||
|
|
" ax[1].annotate(round(RYdescibe.loc['3sigma'][i],3), \n",
|
|||
|
|
" xy=(i,RYdescibe.loc['3sigma'][i]),\n",
|
|||
|
|
" xytext=(i,RYdescibe.loc['3sigma'][i]),\n",
|
|||
|
|
" color=\"r\")\n",
|
|||
|
|
"ax[1].legend() \n",
|
|||
|
|
"ax[1].set_title('3sigam_Y/Day')\n",
|
|||
|
|
"# ax[2].plot([i for i in AngleMarkY.columns],RYdescibe.loc['range'],marker = 'o')\n",
|
|||
|
|
"# for i in range(len(AngleMarkY.columns)):\n",
|
|||
|
|
"# ax[2].annotate(round(RYdescibe.loc['range'][i],3), \n",
|
|||
|
|
"# xy=(i,RYdescibe.loc['range'][i]),\n",
|
|||
|
|
"# xytext=(i,RYdescibe.loc['range'][i]),\n",
|
|||
|
|
"# color=\"r\")\n",
|
|||
|
|
"# ax[2].set_title('Range_Y/Day')\n",
|
|||
|
|
"plt.suptitle(f'{wafer_name} 角度Mark:Y')\n",
|
|||
|
|
"fig.tight_layout()\n",
|
|||
|
|
"plt.savefig(f'Wafer/{wafer_name}角度MarkY.jpg',dpi=200)\n",
|
|||
|
|
"plt.show()"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 27,
|
|||
|
|
"id": "eedea695-7cb3-47b6-bdde-22fba05a7abd",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [],
|
|||
|
|
"source": [
|
|||
|
|
"# data = {\n",
|
|||
|
|
"# 'Wafer':wafer_name,\n",
|
|||
|
|
"# 'FoupID':'PFP05961.18',\n",
|
|||
|
|
"# 'Die': ['Die1-'+str(i) for i in range(1,88)] + ['Die2-'+str(i) for i in range(1,88)]+['Die3-'+str(i) for i in range(1,88)]+['Die4-'+str(i) for i in range(1,88)],\n",
|
|||
|
|
"# 'M3X': AlignMarkX1.iloc[:,0].tolist() + AlignMarkX2.iloc[:,0].tolist() + AlignMarkX3.iloc[:,0].tolist() + AlignMarkX4.iloc[:,0].tolist(),\n",
|
|||
|
|
"# 'M3Y': AlignMarkY1.iloc[:,0].tolist() + AlignMarkY2.iloc[:,0].tolist() + AlignMarkY3.iloc[:,0].tolist() + AlignMarkY4.iloc[:,0].tolist(),\n",
|
|||
|
|
"# 'M1X': AngleMarkX1.iloc[:,0].tolist() + AngleMarkX2.iloc[:,0].tolist() + AngleMarkX3.iloc[:,0].tolist() + AngleMarkX4.iloc[:,0].tolist(),\n",
|
|||
|
|
"# 'M1Y': AngleMarkY1.iloc[:,0].tolist() + AngleMarkY3.iloc[:,0].tolist() + AngleMarkY3.iloc[:,0].tolist() + AngleMarkY4.iloc[:,0].tolist(),\n",
|
|||
|
|
"# 'Angle13':Angle1.iloc[:,0].tolist() + Angle2.iloc[:,0].tolist() + Angle3.iloc[:,0].tolist() + Angle4.iloc[:,0].tolist() ,\n",
|
|||
|
|
"# }\n",
|
|||
|
|
"# df_data = pd.DataFrame(data)\n",
|
|||
|
|
"# df_data"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 28,
|
|||
|
|
"id": "142b971e-cc6a-4bd2-ae34-d31d9d941566",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [],
|
|||
|
|
"source": [
|
|||
|
|
"# df_data.to_excel(f'Wafer/{wafer_name}.xlsx')"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "markdown",
|
|||
|
|
"id": "639173af",
|
|||
|
|
"metadata": {},
|
|||
|
|
"source": [
|
|||
|
|
"## 补偿值计算"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 29,
|
|||
|
|
"id": "8d98319e-4d88-4a61-8169-9287018a57e3",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [],
|
|||
|
|
"source": [
|
|||
|
|
"# BC_X = pd.concat([AlignMarkX[i]-AlignMarkX[i].mean() for i in AlignMarkX.columns[-2:]],axis=1)\n",
|
|||
|
|
"# BC_X.plot(marker='o')\n",
|
|||
|
|
"# plt.title('Die4对位MarkX局部补偿(um)')"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 30,
|
|||
|
|
"id": "87a0e5e3-6edb-4c8b-ac86-56d1f114ba0f",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [],
|
|||
|
|
"source": [
|
|||
|
|
"# BC_X = BC_X.where(abs(BC_X)<1, np.nan)\n",
|
|||
|
|
"# BC_X.plot(marker='o')\n",
|
|||
|
|
"# plt.title('Die4对位MarkX局部补偿(um)')"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 31,
|
|||
|
|
"id": "4f0598f9-0366-4c7b-b5a7-c89e286746ca",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [],
|
|||
|
|
"source": [
|
|||
|
|
"# BC_Y = pd.concat([AlignMarkY[i]-AlignMarkY[i].mean() for i in AlignMarkY.columns[-2:]],axis=1)\n",
|
|||
|
|
"# BC_Y.plot(marker='o')\n",
|
|||
|
|
"# plt.title('Die4对位MarkY(um)')"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 32,
|
|||
|
|
"id": "c7268828-7bd4-40c9-8ea6-24c4490c2d79",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [],
|
|||
|
|
"source": [
|
|||
|
|
"# BC_Y = BC_Y.where(abs(BC_Y)<1, np.nan)\n",
|
|||
|
|
"# BC_Y.plot(marker='o')\n",
|
|||
|
|
"# plt.title('Die4对位MarkY局部补偿(um)')"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 33,
|
|||
|
|
"id": "f329200b-3c6e-4afe-b828-76955152a20d",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [],
|
|||
|
|
"source": [
|
|||
|
|
"# DieBC = pd.read_excel('SP-Die补偿模版.xlsx',index_col=0,header=0)\n",
|
|||
|
|
"# DieBC"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 34,
|
|||
|
|
"id": "eb31be2e-02c5-4030-a839-5b95e88f1e29",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [],
|
|||
|
|
"source": [
|
|||
|
|
"# BC_X = BC_X.mean(axis=1)\n",
|
|||
|
|
"# DieBC['对位MarkX'] = BC_X.fillna(BC_X.interpolate()).values\n",
|
|||
|
|
"# BC_Y = BC_Y.mean(axis=1)\n",
|
|||
|
|
"# DieBC['对位MarkY'] = BC_Y.fillna(BC_Y.interpolate()).values\n",
|
|||
|
|
"\n",
|
|||
|
|
"# DieBC['Angle'] = 0\n",
|
|||
|
|
"# DieBC"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 35,
|
|||
|
|
"id": "0e8cc7f0-c040-42f6-8d71-bad5ae70f983",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [],
|
|||
|
|
"source": [
|
|||
|
|
"# DieBC.to_excel(f'Die4/Die4局部补偿9-17.xlsx')"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 36,
|
|||
|
|
"id": "b62b7df1",
|
|||
|
|
"metadata": {
|
|||
|
|
"scrolled": true
|
|||
|
|
},
|
|||
|
|
"outputs": [],
|
|||
|
|
"source": [
|
|||
|
|
"# DieBC = pd.read_excel('Die补偿模版.xlsx',index_col=0,header=0)\n",
|
|||
|
|
"# DieBC"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 37,
|
|||
|
|
"id": "314a6f16-ce4a-4c0f-b6ac-469149f08efd",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [],
|
|||
|
|
"source": [
|
|||
|
|
"# num = -2\n",
|
|||
|
|
"# AlX981 = AlignMarkX.iloc[:,num]-AlignMarkX.iloc[:,num].mean()\n",
|
|||
|
|
"# AlX981 = AlX981.fillna(AlX981.interpolate()).values\n",
|
|||
|
|
"\n",
|
|||
|
|
"# AlY981 = AlignMarkY.iloc[:,num]-AlignMarkY.iloc[:,num].mean()\n",
|
|||
|
|
"# AlY981 = AlY981.fillna(AlY981.interpolate()).values\n",
|
|||
|
|
"\n",
|
|||
|
|
"# AnX981 = AngleMarkX.iloc[:,num]-AngleMarkX.iloc[:,num].mean()\n",
|
|||
|
|
"# AnX981 = AnX981.fillna(AnX981.interpolate()).values\n",
|
|||
|
|
"\n",
|
|||
|
|
"# AnY981 = AngleMarkY.iloc[:,num]-AngleMarkY.iloc[:,num].mean()\n",
|
|||
|
|
"# AnY981 = AnY981.fillna(AnY981.interpolate()).values\n",
|
|||
|
|
"\n",
|
|||
|
|
"# DieBC['Top Mark1 X'] = AlX981\n",
|
|||
|
|
"# DieBC['Top Mark1 Y'] = AlY981\n",
|
|||
|
|
"# DieBC['Top Mark2 X'] = AnX981\n",
|
|||
|
|
"# DieBC['Top Mark2 Y'] = AnY981\n",
|
|||
|
|
"# DieBC.to_excel(f'Die4/Die4设备方向偏差9-8-1.xlsx')"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 38,
|
|||
|
|
"id": "6c5a2f19-d47c-45b3-9a31-8fe891cc1400",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [],
|
|||
|
|
"source": [
|
|||
|
|
"# num = -1\n",
|
|||
|
|
"# AlX982 = AlignMarkX.iloc[:,num]#-AlignMarkX.iloc[:,num].mean()\n",
|
|||
|
|
"# # AlX982 = AlX982.fillna(AlX982.interpolate()).values\n",
|
|||
|
|
"\n",
|
|||
|
|
"# AlY982 = AlignMarkY.iloc[:,num]#-AlignMarkY.iloc[:,num].mean()\n",
|
|||
|
|
"# # AlY982 = AlY982.fillna(AlY982.interpolate()).values\n",
|
|||
|
|
"\n",
|
|||
|
|
"# AnX982 = AngleMarkX.iloc[:,num]#-AngleMarkX.iloc[:,num].mean()\n",
|
|||
|
|
"# # AnX982 = AnX982.fillna(AnX982.interpolate()).values\n",
|
|||
|
|
"\n",
|
|||
|
|
"# AnY982 = AngleMarkY.iloc[:,num]#-AngleMarkY.iloc[:,num].mean()\n",
|
|||
|
|
"# # AnY982 = AnY982.fillna(AnY982.interpolate()).values\n",
|
|||
|
|
"\n",
|
|||
|
|
"# DieBC['Top Mark1 X'] = AlX982\n",
|
|||
|
|
"# DieBC['Top Mark1 Y'] = AlY982\n",
|
|||
|
|
"# DieBC['Top Mark2 X'] = AnX982\n",
|
|||
|
|
"# DieBC['Top Mark2 Y'] = AnY982\n",
|
|||
|
|
"# DieBC.to_excel(f'Die4/Die4设备方向偏差9-13-1.xlsx')"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 39,
|
|||
|
|
"id": "7cbb472b-9ce4-43b2-929f-f8839aa6e143",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [],
|
|||
|
|
"source": [
|
|||
|
|
"# DieBC['Top Mark1 X'] = (AlX982 + AlX981)/2\n",
|
|||
|
|
"# DieBC['Top Mark1 Y'] = (AlY982 + AlY981)/2\n",
|
|||
|
|
"# DieBC['Top Mark2 X'] = (AnX982 + AnX981)/2\n",
|
|||
|
|
"# DieBC['Top Mark2 Y'] = (AnY982 + AnY981)/2\n",
|
|||
|
|
"# DieBC.to_excel(f'Die4/Die4补偿值9-9.xlsx')"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 40,
|
|||
|
|
"id": "1858da30",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [],
|
|||
|
|
"source": [
|
|||
|
|
"# DieBC['Top Mark1 X'] = AlignMarkX.iloc[:,1:].fillna(AlignMarkX.iloc[:,1:].interpolate()).values\n",
|
|||
|
|
"# DieBC['Top Mark1 Y'] = AlignMarkY.iloc[:,1:].fillna(AlignMarkY.iloc[:,1:].interpolate()).values\n",
|
|||
|
|
"# DieBC['Top Mark2 X'] = AngleMarkX.iloc[:,1:].fillna(AngleMarkX.iloc[:,1:].interpolate()).values\n",
|
|||
|
|
"# DieBC['Top Mark2 Y'] = AngleMarkY.iloc[:,1:].fillna(AngleMarkY.iloc[:,1:].interpolate()).values"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": 41,
|
|||
|
|
"id": "30ccc3df-e5ad-430c-8ac8-0dd074d7f682",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [],
|
|||
|
|
"source": [
|
|||
|
|
"# DieBC.to_excel(f'Die4/Die4补偿值9-3.xlsx')"
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"cell_type": "code",
|
|||
|
|
"execution_count": null,
|
|||
|
|
"id": "6d74cea0",
|
|||
|
|
"metadata": {},
|
|||
|
|
"outputs": [],
|
|||
|
|
"source": []
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"metadata": {
|
|||
|
|
"kernelspec": {
|
|||
|
|
"display_name": "Python 3 (ipykernel)",
|
|||
|
|
"language": "python",
|
|||
|
|
"name": "python3"
|
|||
|
|
},
|
|||
|
|
"language_info": {
|
|||
|
|
"codemirror_mode": {
|
|||
|
|
"name": "ipython",
|
|||
|
|
"version": 3
|
|||
|
|
},
|
|||
|
|
"file_extension": ".py",
|
|||
|
|
"mimetype": "text/x-python",
|
|||
|
|
"name": "python",
|
|||
|
|
"nbconvert_exporter": "python",
|
|||
|
|
"pygments_lexer": "ipython3",
|
|||
|
|
"version": "3.10.9"
|
|||
|
|
},
|
|||
|
|
"widgets": {
|
|||
|
|
"application/vnd.jupyter.widget-state+json": {
|
|||
|
|
"state": {
|
|||
|
|
"21d8b0ba77b54fbfabcdf5f52b80df1a": {
|
|||
|
|
"model_module": "@jupyter-widgets/base",
|
|||
|
|
"model_module_version": "2.0.0",
|
|||
|
|
"model_name": "LayoutModel",
|
|||
|
|
"state": {}
|
|||
|
|
},
|
|||
|
|
"2a0670114f11457b80a6ef3ef22a34fc": {
|
|||
|
|
"model_module": "jupyter-matplotlib",
|
|||
|
|
"model_module_version": "^0.11",
|
|||
|
|
"model_name": "ToolbarModel",
|
|||
|
|
"state": {
|
|||
|
|
"_model_module_version": "^0.11",
|
|||
|
|
"_view_module_version": "^0.11",
|
|||
|
|
"collapsed": true,
|
|||
|
|
"layout": "IPY_MODEL_f7658ea254754f89ae1eaaca3822afd1",
|
|||
|
|
"orientation": "vertical",
|
|||
|
|
"toolitems": [
|
|||
|
|
[
|
|||
|
|
"Home",
|
|||
|
|
"Reset original view",
|
|||
|
|
"home",
|
|||
|
|
"home"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"Back",
|
|||
|
|
"Back to previous view",
|
|||
|
|
"arrow-left",
|
|||
|
|
"back"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"Forward",
|
|||
|
|
"Forward to next view",
|
|||
|
|
"arrow-right",
|
|||
|
|
"forward"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"Pan",
|
|||
|
|
"Left button pans, Right button zooms\nx/y fixes axis, CTRL fixes aspect",
|
|||
|
|
"arrows",
|
|||
|
|
"pan"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"Zoom",
|
|||
|
|
"Zoom to rectangle\nx/y fixes axis",
|
|||
|
|
"square-o",
|
|||
|
|
"zoom"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"Download",
|
|||
|
|
"Download plot",
|
|||
|
|
"floppy-o",
|
|||
|
|
"save_figure"
|
|||
|
|
]
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
"2d1533973ff749659dd783abe0db740f": {
|
|||
|
|
"model_module": "jupyter-matplotlib",
|
|||
|
|
"model_module_version": "^0.11",
|
|||
|
|
"model_name": "ToolbarModel",
|
|||
|
|
"state": {
|
|||
|
|
"_model_module_version": "^0.11",
|
|||
|
|
"_view_module_version": "^0.11",
|
|||
|
|
"collapsed": true,
|
|||
|
|
"layout": "IPY_MODEL_b8d4c7781ff5497da21ab97b922bac2f",
|
|||
|
|
"orientation": "vertical",
|
|||
|
|
"toolitems": [
|
|||
|
|
[
|
|||
|
|
"Home",
|
|||
|
|
"Reset original view",
|
|||
|
|
"home",
|
|||
|
|
"home"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"Back",
|
|||
|
|
"Back to previous view",
|
|||
|
|
"arrow-left",
|
|||
|
|
"back"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"Forward",
|
|||
|
|
"Forward to next view",
|
|||
|
|
"arrow-right",
|
|||
|
|
"forward"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"Pan",
|
|||
|
|
"Left button pans, Right button zooms\nx/y fixes axis, CTRL fixes aspect",
|
|||
|
|
"arrows",
|
|||
|
|
"pan"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"Zoom",
|
|||
|
|
"Zoom to rectangle\nx/y fixes axis",
|
|||
|
|
"square-o",
|
|||
|
|
"zoom"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"Download",
|
|||
|
|
"Download plot",
|
|||
|
|
"floppy-o",
|
|||
|
|
"save_figure"
|
|||
|
|
]
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
"30e39652821f45d4b6a059be76bf8b9b": {
|
|||
|
|
"model_module": "@jupyter-widgets/base",
|
|||
|
|
"model_module_version": "2.0.0",
|
|||
|
|
"model_name": "LayoutModel",
|
|||
|
|
"state": {}
|
|||
|
|
},
|
|||
|
|
"403a3e58c30643c69e94e76f12bc0587": {
|
|||
|
|
"model_module": "jupyter-matplotlib",
|
|||
|
|
"model_module_version": "^0.11",
|
|||
|
|
"model_name": "MPLCanvasModel",
|
|||
|
|
"state": {
|
|||
|
|
"_data_url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA+gAAAKvCAYAAAD5ieWEAAAAAXNSR0IArs4c6QAAIABJREFUeF7snQd0VNX2xr+Z9ISENOwN7B2sPCyAigIiioIFn+XZQGyIVCk+ERWxIYgFfBbsoqiIFRHFhgqKoogN+98GJCSkJzP/te/NJDOTKXdm9iRzM99Zy6Vmzt3n3N8p93yn7ONwu91uMJAACZAACZAACZAACZAACZAACZAACbQpAQcFepvyZ+IkQAIkQAIkQAIkQAIkQAIkQAIkYBCgQGdFIAESIAESIAESIAESIAESIAESIIEEIECBngCFwCyQAAmQAAmQAAmQAAmQAAmQAAmQAAU66wAJkAAJkAAJkAAJkAAJkAAJkAAJJAABCvQEKARmgQRIgARIgARIgARIgARIgARIgAQo0FkHSIAESIAESIAESIAESIAESIAESCABCFCgJ0AhMAskQAIkQAIkQAIkQAIkQAIkQAIkQIHOOkACJEACJEACJEACJEACJEACJEACCUCAAj0BCoFZIAESIAESIAESIAESIAESIAESIAEKdNYBEiABEiABEiABEiABEiABEiABEkgAAhToCVAIzAIJkAAJkAAJkAAJkAAJkAAJkAAJUKCzDpAACZAACZAACZAACZAACZAACZBAAhCgQE+AQmAWSIAESIAEkpvA8OHDsd9+++GSSy5Benp6csPg25MACZAACZBAEhOgQE/iwuerkwAJkAAJtD2B33//Hccccwz23XdfLFy4sO0zxByQAAmQAAmQAAm0GQEK9DZDz4RJgARIgAQCEfjtt99w7LHHGj85HA507NgRu+66K0488UScfvrpSEtLCwhOxO2ECRMwf/58HH744THB3bRpE2699VYsX74cpaWlyM/Px+DBg3HllVciJSUlJtv+D7/wwgsYN24cLrvsMsN+PMM///yDU089FVdffbXxb60wdepUPP7443jooYfQo0cPH7MbN27EzTffjJUrV6KkpATbbLMN+vfvD9k1kJGRoZUFHztut9tI488//8Q777yDvLw8n9+vueYaLF68GE8//TS6du0alzzQKAmQAAmQAAlEQ4ACPRpqfIYESIAESCBuBDwCfbvttsPAgQPx999/Y9myZYa4E+E9d+5cZGZmtkhfS6BXVFQY4vWnn37CTjvthM6dO2PVqlXYsmUL/v3vf2Py5MkRv3tlZSWcTqcxueAv8EePHo2XXnrJELiHHHJIQNv19fWoqakxno92C3xtbS3OP/98411EMGsJ9DVr1hgTJ8cddxxmz57tk3/J82mnnYY//vgD/fr1Q1ZWFj777DPIM71798Z9990XMUurDzz77LOYOHEihO/FF1/c9Nhff/1lTACJMH/sscesmmM8EiABEiABEmgVAhTorYKZiZAACZAACVgl4BHohx12GB599FHjsbKyMuN8tog7WXmVFWD/UF5eboh5EfYiBKMNd955pyEcRdhddNFFxiq+rMSK0JSV9ffffx+FhYURmR8xYgSWLl0a0TOBIkcrrIXN5ZdfjhUrVhhmo7Xjn6eGhgYMGTIEP/zwA1555RVsv/32PlFkhXrKlCkQsbz//vs3/TZmzBgsWrQIzz//PPbZZ5+YuQQyIBMSMmkg5SfsU1NTjWi33XYb5s2bZ0z09OzZMy5p0ygJkAAJkAAJREuAAj1acnyOBEiABEggLgQCCXRJ6McffzRWYWXLu4hkj+DSzITL5TJE3V577YV77rnHx7RnG/fDDz+Mf/3rXxElK0JU8u9ZARfRKEGErWxxF3v+W8M9Cch2bRHCshrdp08fw5lcpEFWy3/55RdccMEFuOuuu9QE+iOPPIKbbroJV1xxhTEB4B9EnC9ZsgQffvihz08izkWky2SIbEWPV/jf//6HGTNm4Pbbb8eAAQMgOxl69eqFrbfe2ti1wEACJEACJEACiUaAAj3RSoT5IQESIIEkJxBMoAuWU045BV9//TUWLFiAAw44IC6kRKTL6qv/NnoRm7IiLKv6srqvETxnoZ977rmohLfVPJx33nm47rrrIGfQzz33XBWBLlvFZcJEzufL6nmgYweyUi+83n33XRQVFTVlVwSzrGA/9dRT6Natm9XXiDieHEsQQb7LLrsYq/iypf2GG27ALbfcYtQlBhIgARIgARJINAIU6IlWIswPCZAACSQ5gVACfezYsXjxxRcxffp0DBo0yIeUlTPoX331FWbNmmWcw66rqzPEoWxlD7cqLavYcm5ZBK6sBnfo0CHmUpJz2bJav/feexviMZ5BVuDl7PtHH32kJtBHjhyJV199FSeccIKxtV3Oxgsj74kTcQwn5/Zld8B///tf42iAOG2Ts+FyFEFWsbWd7vlz9EwGiDiXdKXcZVU/Hjsw4lmGtE0CJEACJJAcBCjQk6Oc+ZYkQAIkYBsCoQS6rHw++OCDGD9+PP7zn/9EJNBFnIqzsNzcXBx//PEQx2uy8iviVQTybrvtFpTRyy+/jFGjRhnn0GVLt0aYNm2asbos56GPPvpoDZNhbYQS6LLdPFwQT/Y77rij4QvgzDPPbBFdtu6LN3rZ8u4Jstth0qRJPnFlYkTS23bbbcMlGfPvMqki19jJ5ID4Erj22mshOwoYSIAESIAESCARCVCgJ2KpME8kQAIkkMQEQgl0OT8tZ8OvuuoqiOM17xBqBV22rfft2xfioV3OfHfq1Ml49NNPP8VZZ52Fk08+2TirHCjINmm54m3z5s2GoJeV31iDbNMXsS8r8cOGDQtrTgSmeJOPNYQS6HvuuWdY854r7CTPb7/9tjGpIeJbtpDL7gS5mk6838+ZM8fYHSBnvsVz/Oeff25cqSbXnW3YsMFw4nfppZcajv/8g6cc5e8eO2EzFiaC53iCbMeXGwGys7NjNcnnSYAESIAESCAuBCjQ44KVRkmABEiABKIlEEqgi4gWx1+RrqB/+eWXhiAWj+H+q9WyIi+C/a233gqYZbmjXES91sqrCH5ZiRancVaDllDV2OIu5/MPOuigph0IXbp0aXqNb775xrgaz3OFmgj2Bx54wPC8Lyvrsg3++++/h5y9X7duneGwTiZOvEM8BLocS5CJAsmb5ImBBEiABEiABBKVAAV6opYM80UCJEACSUoglECfMGECRMAFcvIVagVdVr4DXc3mQSzCUe7m9g8eb+NHHnmkITQ93tejLRoRt7Jy/N577xkmPCvSwex5vJBL2kcddVS0yTY9pyHQxTmcTHLIWXPZvu4funfvjoKCAuN8uqz8y6q1lI13+Pnnn41jBrLKLpMP3kHOh8u5cQni2C5Sj/mBIHneW/wWiP8CBhIgARIgARJIVAIU6IlaMswXCZAACSQpgVACXVaeRUiL4Nt33319CFkR6IFW3oNh/u6773D66acbZ9ZlBT3Su8/97YpzMjnH/sYbbxiitbS01LJADyfkrVYVDYEuOwAOPvhg43q0QOfWDz30UONsuUxuyN3ncjXcHXfc0SKL4phPHOQFEvlW38dqPAp0q6QYjwRIgARIoK0JUKC3dQkwfRIgARIgAR8CwQS6/F3EXnFxsXH+2d/7dyiB7tnifsYZZ0DuM/cOr7/+unEuWs6iO51O46eNGzdC4opTMRHHsqU7liCiVsS5eDCXlWe54kvyEU54e1bQw8WzmjcNgS5pycq43CX+5JNP+iQtvHr27GncOS6r4PLfcnzA30u9bHOXc/2yEi9O8uIdKNDjTZj2SYAESIAEtAhQoGuRpB0SIAESIAEVAoEEughccQonQku2uct5Yv8QzkmcXAdWUlJiiEVxaiZBrjqTu7zl/2WVXII4kjv77LON+9Zli/XQoUNjeq9NmzYZNuTM+e67726IcplgkPcIJ7wTVaCLLwA5uy9b72X7vwTxhi/X4C1evLjJudtFF11kbOeX+9BlUkKOCPz6668YM2aM4Qlerj2Te9m9A7e4x1Td+DAJkAAJkIDNCVCg27wAmX0SIAESaG8EPAJdvKWLUy9Z3RZBK/8+6aSTDG/rnpVu73cPdw+6OAoTr+Fy/7WI9ZycHMjquYh2EZqes8533303
|
|||
|
|
"_figure_label": "Figure 2",
|
|||
|
|
"_model_module_version": "^0.11",
|
|||
|
|
"_size": [
|
|||
|
|
800,
|
|||
|
|
550
|
|||
|
|
],
|
|||
|
|
"_view_module_version": "^0.11",
|
|||
|
|
"layout": "IPY_MODEL_6bd4aa27ce3d4da78e5e37533a8df70a",
|
|||
|
|
"toolbar": "IPY_MODEL_8a5b8401a4764aa19048fef48718488b",
|
|||
|
|
"toolbar_position": "left"
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
"6bd4aa27ce3d4da78e5e37533a8df70a": {
|
|||
|
|
"model_module": "@jupyter-widgets/base",
|
|||
|
|
"model_module_version": "2.0.0",
|
|||
|
|
"model_name": "LayoutModel",
|
|||
|
|
"state": {}
|
|||
|
|
},
|
|||
|
|
"8a5b8401a4764aa19048fef48718488b": {
|
|||
|
|
"model_module": "jupyter-matplotlib",
|
|||
|
|
"model_module_version": "^0.11",
|
|||
|
|
"model_name": "ToolbarModel",
|
|||
|
|
"state": {
|
|||
|
|
"_model_module_version": "^0.11",
|
|||
|
|
"_view_module_version": "^0.11",
|
|||
|
|
"collapsed": true,
|
|||
|
|
"layout": "IPY_MODEL_30e39652821f45d4b6a059be76bf8b9b",
|
|||
|
|
"orientation": "vertical",
|
|||
|
|
"toolitems": [
|
|||
|
|
[
|
|||
|
|
"Home",
|
|||
|
|
"Reset original view",
|
|||
|
|
"home",
|
|||
|
|
"home"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"Back",
|
|||
|
|
"Back to previous view",
|
|||
|
|
"arrow-left",
|
|||
|
|
"back"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"Forward",
|
|||
|
|
"Forward to next view",
|
|||
|
|
"arrow-right",
|
|||
|
|
"forward"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"Pan",
|
|||
|
|
"Left button pans, Right button zooms\nx/y fixes axis, CTRL fixes aspect",
|
|||
|
|
"arrows",
|
|||
|
|
"pan"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"Zoom",
|
|||
|
|
"Zoom to rectangle\nx/y fixes axis",
|
|||
|
|
"square-o",
|
|||
|
|
"zoom"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"Download",
|
|||
|
|
"Download plot",
|
|||
|
|
"floppy-o",
|
|||
|
|
"save_figure"
|
|||
|
|
]
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
"8de2ee2a201f4e78b83bb73202597800": {
|
|||
|
|
"model_module": "@jupyter-widgets/base",
|
|||
|
|
"model_module_version": "2.0.0",
|
|||
|
|
"model_name": "LayoutModel",
|
|||
|
|
"state": {}
|
|||
|
|
},
|
|||
|
|
"b8d4c7781ff5497da21ab97b922bac2f": {
|
|||
|
|
"model_module": "@jupyter-widgets/base",
|
|||
|
|
"model_module_version": "2.0.0",
|
|||
|
|
"model_name": "LayoutModel",
|
|||
|
|
"state": {}
|
|||
|
|
},
|
|||
|
|
"cc2cbd4941e54dc4ab6e09927cb3f90b": {
|
|||
|
|
"model_module": "jupyter-matplotlib",
|
|||
|
|
"model_module_version": "^0.11",
|
|||
|
|
"model_name": "MPLCanvasModel",
|
|||
|
|
"state": {
|
|||
|
|
"_data_url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA+gAAAKvCAYAAAD5ieWEAAAAAXNSR0IArs4c6QAAIABJREFUeF7snQd4FEUbx/93SUhISCAJTSwUUaoIAgKCSJHee5UmHUR6E+ldmhTpSBMEpAcQASkighRREUE6yocCqaSXu+9553KX28sltze5g0vyzvPwAHczs7O/md3b/75lNHq9Xg8uTIAJMAEmwASYABNgAkyACTABJsAEmMBzJaBhgf5c+fPBmQATYAJMgAkwASbABJgAE2ACTIAJCAIs0HkhMAEmwASYABNgAkyACTABJsAEmAATcAECLNBdYBJ4CEyACTABJsAEmAATYAJMgAkwASbABFig8xpgAkyACTABJsAEmAATYAJMgAkwASbgAgRYoLvAJPAQmAATYAJMgAkwASbABJgAE2ACTIAJsEDnNcAEmAATYAJMgAkwASbABJgAE2ACTMAFCLBAd4FJ4CEwASbABJgAE2ACTIAJMAEmwASYABNggc5rgAkwASbABJgAE2ACTIAJMAEmwASYgAsQYIHuApPAQ2ACTIAJMAEmwASYABNgAkyACTABJsACndcAE2ACTIAJMAEmwASYABNgAkyACTABFyDAAt0FJoGHwASYABNgAkyACTABJsAEmAATYAJMgAU6rwEmwASYABNgAkyACTABJsAEmAATYAIuQIAFugtMAg+BCTABJsAEmAATUE/g4sWLqFixovoGdtTU6/X4/fffUa5cOTtacVUmwASYABNgAo4hwALdMRy5FybABJgAE8jGBPr374+yZcuib9++yJEjRzYm4fxTP3v2LLp37y5YjxgxwuEHnDx5MrZu3Yqvv/4aFSpUcHj/3CETYAJMgAkwgfQIsEDn9cEEmAATYAJMIAMEHjx4gDp16qBMmTLYtWtXBnriprYIREdHo0WLFiAr944dO+Dv72+rid3fX7hwAV26dEGbNm0wc+ZMU3udTof4+HjExsYid+7c0Gg0dvfNDZgAE2ACTIAJ2CLAAt0WIf6eCTABJsAE7CLwzz//oG7duqINiRgSM6+++iqaNGmC9u3bw8PDw2p/JG7HjRuHjRs3okqVKnYd07JySEgIPvvsM5w6dQphYWHIkycP2rZtiyFDhsDNzS1DfVs23rNnD8aMGYNBgwaJ/p1ZHj9+jNatW2PYsGHib0eVqVOn4quvvsKXX36Jd955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
|
|||
|
|
"_figure_label": "Figure 3",
|
|||
|
|
"_model_module_version": "^0.11",
|
|||
|
|
"_size": [
|
|||
|
|
800,
|
|||
|
|
550
|
|||
|
|
],
|
|||
|
|
"_view_module_version": "^0.11",
|
|||
|
|
"layout": "IPY_MODEL_8de2ee2a201f4e78b83bb73202597800",
|
|||
|
|
"toolbar": "IPY_MODEL_2d1533973ff749659dd783abe0db740f",
|
|||
|
|
"toolbar_position": "left"
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
"ee97a7eebb9a425eb0ade6e31817aa89": {
|
|||
|
|
"model_module": "jupyter-matplotlib",
|
|||
|
|
"model_module_version": "^0.11",
|
|||
|
|
"model_name": "MPLCanvasModel",
|
|||
|
|
"state": {
|
|||
|
|
"_data_url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA+gAAAKvCAYAAAD5ieWEAAAAAXNSR0IArs4c6QAAIABJREFUeF7snQeYU0XXx//J9l5YwE71BQTFLoLSRKSLgKhYQEW6gIIICqgUQRBBsFBUqvopoggoIk2KiO8LqBQrIqJYgO29JPmeM3dvNjebbG6SyW7u7pnnQTB37pm5v5lb/jNnzphsNpsNnJgAE2ACTIAJMAEmwASYABNgAkyACTCBKiVgYoFepfy5cCbABJgAE2ACTIAJMAEmwASYABNgAoIAC3TuCEyACTABJsAEmAATYAJMgAkwASbABIKAAAv0IGgErgITYAJMgAkwASbABJgAE2ACTIAJMAEW6NwHmAATYAJMgAkwASbABJgAE2ACTIAJBAEBFuhB0AhcBSbABJgAE2ACTIAJMAEmwASYABNgAizQuQ8wASbABJgAE2ACTIAJMAEmwASYABMIAgIs0IOgEbgKTIAJMAEmwASYABNgAkyACTABJsAEWKBzH2ACTIAJMAEmwASYABNgAkyACTABJhAEBFigB0EjcBWYABNgAkyACTABJsAEmAATYAJMgAmwQOc+wASYABNgAkyACTABJsAEmAATYAJMIAgIsEAPgkbgKjABJsAEmAATYAJMgAkwASbABJgAE2CBzn2ACTABJsAEmAATYAJMgAkwASbABJhAEBBggR4EjcBVYAJMgAkwgZpNYNiwYWjRogWGDBmC8PDwmg2Dr54JMAEmwASYQA0mwAK9Bjc+XzoTYAJMgAlUPYHTp0+jY8eOaN68OT788MOqrxDXgAkwASbABJgAE6gyAizQqww9F8wEmAATYAKuCPz555+45ZZbxCGTyYSEhAQ0atQI3bt3R//+/REWFuYSHInbSZMmYdWqVbjhhhv8gpuWloa5c+di9+7dyMjIQGJiIvr164fRo0cjJCTEL9vOJ69fvx5PPvkkRo4cKewHMp09exZ9+vTBY489Jv6WlaZNm4a3334by5cvR+vWrTVmU1NTMWvWLBw4cADp6ek477zz0K1bN5DXQEREhKwqlLPzf//3f3jmmWeEV8K4cePsx3/44Qf07t0brVq1wsqVKwNWPhtmAkyACTABJuALARbovlDjc5gAE2ACTCBgBFSBfsEFF6BXr144c+YMdu7cKcQdCe+lS5ciMjKyXPmyBHpubq4QrydPnsQll1yCBg0a4ODBg8jJycF9992HKVOmeH3teXl5MJvNYnDBWeCPHz8eGzduFAL32muvdWm7pKQEhYWF4nxfXeCLioowaNAgcS0kmGUJ9CNHjoiBk06dOmHRokWa+lOd+/bti7///htdu3ZFVFQUvvnmG9A5HTp0wOLFi71mqfcEul6qE9Vh165d9j5DgzjUV1asWIEbb7xRrznOxwSYABNgAkygUgiwQK8UzFwIE2ACTIAJ6CWgCvTrr78eq1evFqdlZWWJmVASdzTzSjPAzik7O1uIeRL2JAR9TfPnzxfCkYTz4MGDxSz+P//8I4Qmzax/+eWXSE5O9sr8iBEjsH37dq/OcZXZV2FNbEaNGoX9+/cLs77aca6TxWLBnXfeiV9//RWffvopLrzwQk2W9957D1OnTsUHH3yAyy+/3H7siSeewIYNG/DRRx/hsssu85uLOwMkwulap0+fLgYRqP3atWsnyqS6cWICTIAJMAEmEGwEWKAHW4twfZgAE2ACNZyAK4FOSH777TcxC0su7ySSQ0NDpZOyWq1i1rVp06Z47bXXNPZVN25fZl5JiFL91RlwEv2USNiSizvN5Dq7hquF22w2kBCmmeBbb71VBJPzNtFs+alTp/DQQw/h5ZdflibQyUX8+eefx6OPPioGAJwTifOtW7fiq6++0hwicU4inQZDyN09UCk/P1+s709JSRFeCq+++ioWLlwoBmBoBp8TE2ACTIAJMIFgI8ACPdhahOvDBJgAE6jhBNwJdMJCa4dpDfHatWtxxRVXBIQUiXRyj3Z2oyexSbOuNKtPs/syEq2N3rRpE9atW+eT8NZbh4EDB4r12LQG/YEHHpAi0P/9918xYELr82n23NWyA5q9Jl579uxBrVq17NWdN2+eWKpA68SvuuoqvZfhUz4S4zQQQOU9/fTToh4ff/yxT7b4JCbABJgAE2ACgSbAAj3QhNk+E2ACTIAJeEWgIoE+YcIEIa5mz56NO+64Q2NXzxr0Y8eOiRlUWoddXFwsxCG5snualaZZbApcRwKXZoNjY2O9uiZXmWldNs3WN2vWTLiABzLRDDytff/666+lCfSxY8di8+bNuO2224RrO62NJ0aOAycUGI7W7ZN3wLPPPiuWBtB6cBLKtBSBZrVlB91z5kixA2i2nDwuyMV9wYIFYmCBExNgAkyACTCBYCTAAj0YW4XrxASYABOowQQqEugvvPAC3nrrLUycOBEPPvigVwKdxOkjjzyCuLg4dO7cGRR4jWZ+SbySQG7cuLFb6p988gkef/xxsQ6dXLplpBkzZojZ5WXLlqFt27YyTHq0UZFAp1lmT4ki2V988cUiFsDdd99dLju57lM0enJ5VxN5O0yePFmTlwZGqLzzzz/fU5FSjpMof/3110XAP2pzCtjHiQkwASbABJhAMBJggR6MrcJ1YgJMgAnUYAIVCXRaP01rw8eMGQMKvOaYKppBJ7f1Ll26gCK005rv2rVri1MPHTqEe+65B7fffjvmzJnjkjrNwNIWb5mZmULc0cyvv4nc9Ens00z80KFDPZqjddQkLv1NFQn0Jk2aeDSvbmFHdf7iiy/EoAaJ7/r164O8E2hrOop+T2u9yTuAotdT5PjvvvtObKkWHx+Pc+fOiSB+w4cPF4H/nJPajvS7asdjxTxkoAj5FEPguuuuw5o1a/w1x+czASbABJgAEwgYARboAUPLhpkAE2ACTMAXAhUJdBLRb775ptcz6EePHhWCmKJ3O89W04w8CfYdO3a4rC7tUU6i/qmnngKt5fY3keCnmWgKGqc3yRKqMlzcaX3+1VdfbfdAaNiwof0yfvrpJ7E1nrqFGgn2N954Q0Tep5l1coM/fvy42Jf8xx9/FAHraODEMckW6OQpQR4TtKSABmoq2s5Ob3twPibABJgAE2ACgSLAAj1QZNkuE2ACTIAJ+ESgIoGu7mFNru4UMM6VsFNneR2P0cy3q63Z1DwkHGlvbuekRhu/6aabhNBUo6/7dGGACD5HM8d79+4VJlzV1dE2DUbQoASVffPNN/tarP08GQKdgsPRIAetNSf3defUqlUrJCUlifXpNPNPQeRIdDum33//XYhmmmWnwQfHRFHfKYgcJQps5+9e5RSAjwZXKGo87dNOe80TV05MgAkwASbABIKRAAv0YGwVrhMTYAJMoAYTqEig08wzCWkSfM2bN9dQqsjFXRXortauu0P9yy+/iL2zac06zaB7u/e5s10KSkfr2D///HMhWjMyMnQLdE9CXm93kSHQyQPgmmuuEdujuVq3Tm7ktLacBjdo73PaGu6ll14qV0UKzEcB8lyJfL3X4ykfxRegetLSBvKQmDlzpogcH8hdADzViY8zASbABJgAE6iIAAt07h9MgAkwASYQVATcCXT6ncQe7WlN65+do39XJNBVF/e77rpLrEV2TFu2bBHromktuho8LDU1FZT3n3/+ESKaXLr9SSRqSZxTBHOaeabZf6qHJ+GtzqB7yqe3bjIEOpVFM+N169bFu+++qymaeLVr1w49evQQs+D0b1o+4BylntzcaV0/zcRTkLxAJYoST1H6KeI8eS7QsgIS7O3btxdB4zgxASbABJgAEwg2AizQg61FuD5MgAkwgRpOwJVAJ4FLQeFIYJKbOwUec06egsTRdmDp6elCLFJQM0q0Lpm23KL/p1lySjTbeu+994r91snFesCAAX61CG3tRTZIHF566aVClNMAA12HJ+EdrAKd3O5p7T653pP7PyWaraZt8Ghfd3XN/ODBg4U7P+2HToMStETgjz/+EO7mFAmetlujfdkdkywXd9oar2fPnqD+RLzJa4ES9SOaTaf2btq0qV9tyyczASbABJgAE5BN
|
|||
|
|
"_figure_label": "Figure 1",
|
|||
|
|
"_model_module_version": "^0.11",
|
|||
|
|
"_size": [
|
|||
|
|
800,
|
|||
|
|
550
|
|||
|
|
],
|
|||
|
|
"_view_module_version": "^0.11",
|
|||
|
|
"layout": "IPY_MODEL_21d8b0ba77b54fbfabcdf5f52b80df1a",
|
|||
|
|
"toolbar": "IPY_MODEL_2a0670114f11457b80a6ef3ef22a34fc",
|
|||
|
|
"toolbar_position": "left"
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
"f7658ea254754f89ae1eaaca3822afd1": {
|
|||
|
|
"model_module": "@jupyter-widgets/base",
|
|||
|
|
"model_module_version": "2.0.0",
|
|||
|
|
"model_name": "LayoutModel",
|
|||
|
|
"state": {}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
"version_major": 2,
|
|||
|
|
"version_minor": 0
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
"nbformat": 4,
|
|||
|
|
"nbformat_minor": 5
|
|||
|
|
}
|