import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import collections
# import Figure as fi
import datetime
from sympy import *
import numpy as np
def read_data(new_label_1, coil_name = 'COIL'):
'''
将多卷的厚度数据转为list,每项为厚度 + 卷号信息
'''
coil_num = list(set(new_label_1[coil_name]))
new_label = []
for i in coil_num:
temp = new_label_1.loc[new_label_1[coil_name] == i, :]
df = temp.set_index('I_NAME')
# df = df.drop(['evaluate profile wedge curve fitted', 'evaluate profile parabolic curve fitted'], axis = 0)
df.index = [int(i[2:]) for i in df.index] # noXXX
df = df.sort_index()
thickness_average = list(df['I_AVERAGE'])
new_label.append((thickness_average, i))
# new_label_df = pd.DataFrame(new_label, columns=['data', 'COIL'])
return new_label, coil_num
def read_list_dataframe(data_source, number):
'''
当input为list时,number为list中的index参数,选取第number的厚度信息
'''
middle_y = data_source[number][0]
return middle_y
def processing(middle_y, left_gap = 10, right_gap = 10):
'''
对于厚度数据,筛选掉小于厚度均值 0.85 的值,并且在剩余点中,左右去除left_gap, right_gap 的点
'''
length = len(middle_y)
start = 0
median_num = np.median(middle_y)
low_bound = median_num * 0.85 # 0.9
for i in range(length):
if middle_y[i] > low_bound:
start = i
break
end = length-1
for i in range(end-1, -1, -1):
if middle_y[i] > low_bound:
end = i
break
middle_y = middle_y[(start+left_gap): (end - right_gap)]
length = len(middle_y)
middle_x = np.linspace(-1 * length//2 * 0.005, 0.005 * (length) - length//2 * 0.005, length)
return middle_x, middle_y, length
def detect_outlier(middle_x, middle_y, coefficient_q = 0.9):
'''
在当前剩余点中,去除一部分离群点,
计算规则:计算每个点距离左右各相邻最近7个点的距离(可能并不是index相邻的7个点,因为可能有点已经被筛选了),若点数不足则只考虑存在的点。
衰减系数:相邻远的点造成的影响低,类似折旧系数
选择多点,是因为可能相邻点本身为离群点
距离 = (两点的 厚度差)* coefficient_q(衰减系数) **(两点实际宽度方向 相差的 实际点数)
'''
left_index = list(range(len(middle_x)))
outlier_index = []
n_test = len(left_index)
distance_y = []
index = 0
while index < n_test:
l = max(0, index -7)
r = min(n_test-1, index + 7)
temp = 0
num_temp = 0
for i in range(l, r+1, 1):
power = int(abs(left_index[l] - left_index[index])-1)
distance = abs(middle_y[left_index[i]] - middle_y[left_index[index]])
if distance >0:
temp += distance * (coefficient_q**power)
num_temp += 1
# 此处为求点到周围点距离的均值temp_avg,边缘的点的周围点数可能有变化
# 当卷有问题,都为1个值时,存在问题,distance = 0, num_temp不产生变化为0
if num_temp >= 1:
temp_avg = temp/num_temp
else:
temp_avg = 0
distance_y.append((temp_avg, left_index[index]))
index += 1
distance_y.sort(key = lambda x: x[0], reverse= True)
outlier_index += [i[1] for i in distance_y[:5] if i[0] > 0.006 / 3.5 * np.median(middle_y)]
outlier_index.sort()
left_index = list(set(left_index) - set(outlier_index))
left_index.sort()
middle_x_main = [middle_x[i] for i in left_index]
middle_y_main = [middle_y[i] for i in left_index]
middle_x_outlier = [middle_x[i] for i in outlier_index]
middle_y_outlier = [middle_y[i] for i in outlier_index]
# 输出:剩余的index和厚度,筛掉的index和厚度
return middle_x_main, middle_y_main, middle_x_outlier, middle_y_outlier, left_index, outlier_index
def plot_outlier(middle_x_main, middle_y_main,middle_x_outlier, middle_y_outlier, data_source, number):
'''
在一张图上,打印出主要点和离群点,
title上,出现卷号
# 注释行是否可以运行,需要看data_source是否包含报废率信息
'''
plt.figure(figsize=(15, 10))
typ1 = plt.scatter(middle_x_main, middle_y_main, color='blue')
typ2 = plt.scatter(middle_x_outlier, middle_y_outlier, color='red')
plt.legend((typ1,typ2),('main','outlier'))
plt.title('coil number is %s' % (data_source[number][1]))
# plt.title('coil number is %s and the fail rate is %f' % (data_source[number][1], data_source[number][2].to_list()[0]))
plt.show()
def plot_all(middle_x_main, middle_y_main, middle_x_outlier, middle_y_outlier, middle_x, fit_point_figure, power_figure = 7, left = 20, right = 10, original = True, plot_outlier = True):
'''
将主要点进行打印,离群点打印需要 plot_outlier == True
(当 original == True时):同时每隔0.025, 从均值 - 0.1, 到 均值 + 0.1 画一条线作为参考,模拟在IBA analyzer中的效果
'''
plt.figure(figsize=(left, right))
plt.scatter(middle_x_main, middle_y_main, c='g')
if plot_outlier:
plt.scatter(middle_x_outlier, middle_y_outlier, c='r')
plt.plot(middle_x, fit_point_figure, 'b', linewidth=3, label='degree: %d' % (power_figure))
if original == True:
median_y = np.median(middle_y_main)
for i in np.arange(median_y - 0.1, median_y + 0.1, step = 0.025):
plt.plot(middle_x, len(middle_x) * [i], "r--")
plt.ylim(median_y - 0.1, median_y + 0.1)
plt.legend()
plt.show()
def fit_and_plot(middle_x_main, middle_y_main, middle_x_outlier, middle_y_outlier, power_figure = 7):
'''
using data to fit and make sure the power, using original data to get final figure
在 3 * 3 的图像中,将1次到 power_figure次的图像进行拟合并打印
'''
plt.figure(figsize=(26, 22))
for i in range(1, power_figure+1):
f = np.poly1d(np.polyfit(middle_x_main, middle_y_main, deg = i))
plt.subplot(3, 3, i)
plt.scatter(middle_x_main, middle_y_main, c='g')
plt.scatter(middle_x_outlier, middle_y_outlier,color='red')
plt.plot(middle_x_main, f(middle_x_main), 'b', linewidth=3, label='degree: %d' % i)
plt.legend()
plt.show()
def fit_figure_final(middle_x_main, middle_y_main, middle_x, power_figure = 7):
'''
使用 power_figure对图形进行拟合,
得到拟合参数等 coefficient_figure
并得到拟合的点 fit_point_figure
output:
self.coefficient_figure: is the coefficient of the final fitted line
self.fit_point_figure: the fitting function
print(np.polyfit(X, y, deg = 2)) # coefficient np.ndarray
print(np.poly1d(np.polyfit(X, y, deg = 2))) # formula
'''
coefficient_figure = np.polyfit(middle_x_main, middle_y_main, deg = power_figure)
fit_point_figure = np.poly1d(coefficient_figure)(middle_x) # 使用全长度在拟合曲线上的点
return fit_point_figure, coefficient_figure
def differential_figure(fit_point_figure):
'''
计算出每个点的变化趋势,通过比较目标点与上一个点的厚度,增长则为 up , 减小为 down
最后补一个点,使得describe_list长度跟 点长度一致
get the corresponding coefficient
calculate each position of differential coefficient using FITTING LINE!!
'''
n_middle = len(fit_point_figure)
describe_list = ['up' if fit_point_figure[i] >= fit_point_figure[i-1] else
没有合适的资源?快使用搜索试试~ 我知道了~
winding dependency
共95个文件
py:59个
pyc:29个
ipynb:5个
需积分: 0 0 下载量 86 浏览量
2023-07-07
09:44:16
上传
评论
收藏 2.04MB ZIP 举报
温馨提示
winding dependency
资源推荐
资源详情
资源评论
收起资源包目录
winding dependency.zip (95个子文件)
winding_dependency
__init__.py 0B
local_deploy
__init__.py 0B
modified local server.ipynb 12KB
hmcal.py 6KB
hmcal copy.py 5KB
influxtest.py 667B
CM_package
__init__.py 0B
machine_paramter_order.py 3KB
similarity_cal.py 3KB
cal_function.py 16KB
flatness_pipeline.py 11KB
__pycache__
Rule_based_definition.cpython-38.pyc 13KB
cal_function.cpython-38.pyc 13KB
similarity_cal.cpython-38.pyc 2KB
__init__.cpython-38.pyc 201B
flatness_pipeline.cpython-38.pyc 6KB
rule_based
__init__.py 0B
Rule_based_definition.py 24KB
Rule_pipeline.py 2KB
__pycache__
Rule_pipeline.cpython-38.pyc 2KB
Rule_based_definition.cpython-38.pyc 19KB
rule_predict.cpython-38.pyc 2KB
data_engineer.cpython-38.pyc 10KB
__init__.cpython-38.pyc 223B
rule_predict.py 4KB
.history
data_pre_processing_20230220163348.py 2KB
CM_package
flatness_pipeline_20230303133329.py 5KB
flatness_pipeline_20230308163304.py 5KB
rule_based
Rule_pipeline_20230308132946.py 2KB
main_edward_20230307124254.py 3KB
main_edward_20230307130030.py 2KB
Rule_pipeline_20230308135300.py 2KB
Rule_pipeline_20230307130029.py 2KB
Rule_pipeline_20230307132753.py 2KB
Rule_pipeline_20230308132815.py 2KB
main_edward_20230302151503.py 2KB
rule_predict_20221223143447.py 4KB
main_edward_20221223143447.py 2KB
rule_predict_20230302153554.py 4KB
deploy
local
hmcal_20220810133922.py 6KB
hmcal_20230308160059.py 6KB
hmcal_20230308162336.py 6KB
data_pre_processing_20230302150704.py 3KB
cnn_image
data_pre_processing_20230308123621.py 3KB
cnn_pipeline_20230307143541.py 2KB
cnn_pipeline_20230308123621.py 3KB
cnn_pipeline_20230307135017.py 2KB
main_deqiang_20230306135437.py 2KB
data_pre_processing_20230307085940.py 3KB
main_deqiang_20230307135018.py 2KB
cnn_pipeline_20230308135300.py 3KB
main_edward_20230302151504.py 2KB
merge_logic
main_function_20220808163621.py 1KB
main_function_20230303104648.py 1KB
data_engineer.py 12KB
cloud_deploy
__init__.py 0B
cloud
__init__.py 0B
__pycache__
data_pre_processing.cpython-38.pyc 2KB
making_image.cpython-38.pyc 2KB
my_cnn_pred.cpython-38.pyc 2KB
data_engineer.cpython-38.pyc 10KB
__init__.cpython-38.pyc 234B
cnn_image
__init__.py 0B
my_cnn_package.py 1KB
making_image.py 3KB
data_pre_processing.py 3KB
my_cnn_pred.py 3KB
my_train_test_package.py 1KB
wave_fit.py 2KB
0601_class5.pkl 245KB
cnn_pipeline.py 3KB
point_data_processing.py 13KB
test_1_parameter.pkl 243KB
__pycache__
data_pre_processing.cpython-38.pyc 3KB
point_data_processing.cpython-38.pyc 10KB
making_image.cpython-38.pyc 2KB
my_cnn_pred.cpython-38.pyc 2KB
my_train_test_package.cpython-38.pyc 2KB
my_cnn_package.cpython-38.pyc 1KB
cnn_data_package.cpython-38.pyc 1KB
main_deqiang.cpython-38.pyc 2KB
cnn_pipeline.cpython-38.pyc 2KB
__init__.cpython-38.pyc 219B
wave_fit.cpython-38.pyc 2KB
cnn_data_package.py 1KB
merge_logic
__init__.py 0B
main_function.py 2KB
__pycache__
main_function.cpython-38.pyc 1KB
merge_solution.cpython-38.pyc 658B
__init__.cpython-38.pyc 221B
merge_solution.py 850B
knowledge table.ipynb 186KB
local solution.ipynb 105KB
split coil into batch.ipynb 5.04MB
temporary solution.ipynb 244KB
共 95 条
- 1
资源评论
onthornsilay
- 粉丝: 1
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功