diff --git a/All_positions.py b/All_positions.py new file mode 100644 index 0000000..195ce85 --- /dev/null +++ b/All_positions.py @@ -0,0 +1,108 @@ +#Large interdelay which shall be in days usually + +# largevar = StringVar(value=self.largedelaydefault) +# self.largeentry=TK.Entry(textvariable=largevar) +# self.largeentry.grid(row=5,column=1) + + #label for largedelay +# self.labellargeentry=TK.Label(text="LARGE DELAY (mins)", fg='red') +# self.labellargeentry.grid(row=4,column=1) +from selenium import webdriver +from selenium.webdriver.common.keys import Keys +import time +import sys +#import http.client +#import pprint +# +#connection = http.client.HTTPSConnection("file:///D:/day2/allitems/friday_data/WebServerPort_again.json") +#connection.request("GET", "/") +#response = connection.getresponse() +#headers = response.getheaders() +#pp = pprint.PrettyPrinter(indent=4) +#pp.pprint("Headers: {}".format(headers)) + + + + +driver=webdriver.Chrome("C:\\Users\\sairamtvv\\Videos\\chromedriver_win32\\chromedriver.exe") + +#Get the html of the site, basically ip address here. + +baseUrl = "file:///D:/day2/allitems/friday_data/After_typing_rapid_X_0.54200.htm" + +driver.get(baseUrl) +time.sleep(0.5) + + +#Clicking two balls on the screen +balls_Element=driver.find_element_by_id("enableDisableAxis0") + +if balls_Element is None: + print("The position controller is not connecting...") + sys.exit() +else: + balls_Element.click() + time.sleep(1) + driver.implicitly_wait(1) + + +#Clicking home button +driver.find_element_by_id("homeAxis0").click() +driver.implicitly_wait(1) + + + +#sending ENABLE X and pressing enter +imme_comm=driver.find_element_by_id("immediate-command-text") +imme_comm.send_keys("ENABLE X") +time.sleep(1) +imme_comm.send_keys(Keys.RETURN) +time.sleep(0.2) + + +#checking for NO ERROR in the bottom status bar +#bottombar_Element=driver.find_element_by_id("status-bar") +#if bottombar_Element is not None: +# print("bottombar_Element found") +#bottombar_value=bottombar_Element.get_attribute("value") +#print("The bottombar value is " +bottombar_value) + + +check_enable_Element = driver.find_element_by_id('axis0Status') +check_enable_Text = check_enable_Element.text + +if check_enable_Text=='Enabled': + print("Enabled and lets continue") + time.sleep(0.5) + +#clearing the immediate-command text for next command and then Absolute command +imme_comm=driver.find_element_by_id("immediate-command-text") +time.sleep(0.5) +imme_comm.clear() +imme_comm.send_keys("ABSOLUTE") +time.sleep(1) +imme_comm.send_keys(Keys.RETURN) +time.sleep(0.2) + + +#clearing the immediate-command text for next command and then POSITION 1 +imme_comm=driver.find_element_by_id("immediate-command-text") +time.sleep(0.5) +imme_comm.clear() +imme_comm.send_keys("RAPID X -0.542000 F5") +time.sleep(1) +imme_comm.send_keys(Keys.RETURN) +time.sleep(0.2) +driver.implicitly_wait(1) + +#Checking if the position feedback has reached the desired value +pos_feedback_Text=0 +desired_pos=-0.542000 +while abs(desired_pos-float(pos_feedback_Text))>10**-3: + pos_feedback_Element=driver.find_element_by_id('axis0PosFbk') + time.sleep(0.5) + pos_feedback_Text = pos_feedback_Element.text +print("Reached the desired position") + + +print("First test completed") \ No newline at end of file diff --git a/README.md b/README.md index bc67626..bdb8914 100644 --- a/README.md +++ b/README.md @@ -1 +1 @@ -"# arci_graphic" +"# arci_graphic" diff --git a/SCPI_socket.py b/SCPI_socket.py new file mode 100644 index 0000000..0029a17 --- /dev/null +++ b/SCPI_socket.py @@ -0,0 +1,111 @@ +# Python SCPI socket functions + + + +import socket + +def SCPI_sock_connect(ipaddress,port=57732): + """ Opens up a socket connection between an instrument and your PC + Returns the socket session + + Arguments: + ipaddress -> ip address of the instrument + port -> optional -> socket port of the instrument (default 5025)""" + + try: + session=socket.socket(socket.AF_INET,socket.SOCK_STREAM) + session.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 0) + session.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, 0) + session.connect((ipaddress,port)) + except IOError: + print ("Failed to connect to the instrument, pleace check your IP address") + #return + return session + +def SCPI_sock_send(session,command,error_check=False): + """Sends a command to an instrument + + Arguments: + session -> TCPIP socket connection + command -> text containing an instrument command + error_check -> optional -> Check for instrument errors (default False)""" + + resp = " " + message=command + "\r\n" + message=message.encode('ascii', 'ignore') + session.sendall(message) + + if error_check==True: + err = get_error(session, command) + +#def SCPI_sock_query(session,command,error_check=False): +# """Sends a query to an instrument +# Returns the query response +# +# Arguments: +# session -> TCPIP socket connection +# command -> text containing an instrument command +# error_check -> optional -> Check for instrument errors (default False)""" +# +# session.settimeout(2.0) +# try: +# session.sendall(command + "\n") +# response = getDataFromSocket(session) +# if error_check==True: +# err = get_error(session, command) +# if err: +# response = "" +# return response +# +# except socket.timeout: +# print "Query error:" +# get_error(session, command) +# response = "" +# return response +# +def SCPI_sock_close(session): + """Closes the socket connection + + Argument: + session -> TCPIP socket connection""" + + session.close() +# +def getDataFromSocket(session): + """Reads from a socket until a newline is read + Returns the data read + + Argument: + session -> TCPIP socket""" + + dat = "" + while 1: + message = session.recv(4096) + last=len(message) + if message[last-1] == "\n": + dat=dat+message[:-1] + return dat + else: + dat=dat+message +# +#def get_error(session, command): +# """Checks an instrument for errors and print them out +# Returns True if any errors are encountered +# +# Arguments: +# session -> TCPIP socket connection +# command -> text containing an instrument command""" +# +# has_err=False +# resp = SCPI_sock_query(session,"SYST:ERR?") +# +# if int(resp[:2]) != 0: +# print "Your command: " + command + " has errors:" +# print resp +# has_err = True +# while int(resp[:2]) != 0: +# resp=SCPI_sock_query(session,"SYST:ERR?") +# if int(resp[:2]) != 0: +# print resp +# +# return has_err diff --git a/a3.docx b/a3.docx new file mode 100644 index 0000000..b3309de Binary files /dev/null and b/a3.docx differ diff --git a/graphical_interface_ARCI.py b/graphical_interface_ARCI.py new file mode 100644 index 0000000..316902b --- /dev/null +++ b/graphical_interface_ARCI.py @@ -0,0 +1,844 @@ +import tkinter as TK +from tkinter import filedialog +from tkinter import messagebox,StringVar,ttk + +import time #for time.sleep +import sys +import pathlib +import os, sys, stat +import shutil + +import numpy as np +import pandas as pd + +import socket +from SCPI_socket import SCPI_sock_connect,SCPI_sock_send,SCPI_sock_close,getDataFromSocket +from matlabconversionprog import matlab_conver_func +from selenium import webdriver +from selenium.webdriver.common.keys import Keys + +import autoit + +autoit.opt("MouseCoordMode", 0) +autoit.opt("SendKeyDelay", 10) + +""" +autoit.run("C:\Program Files (x86)\Lumenera Corporation\LuCam Capture Software\LuCam.exe") +autoit.win_wait('LuCam Capture') +autoit.win_activate('LuCam Capture') + +time.sleep(200/1000) #time is in seconds + +autoit.mouse_click('primary', 54, 169, 1, 0) #Start preview +time.sleep(200/1000) +#Send ('{TAB}{TAB}{Enter}') + + +autoit.win_wait_active("[CLASS:Notepad]", 3) +autoit.control_send("[CLASS:Notepad]", "Edit1", "hello world{!}") +autoit.win_close("[CLASS:Notepad]") +autoit.control_click("[Class:#32770]", "Button2") +""" + +class Window(): + + def __init__(self,master): + + self.master=master + master.title("DATA ACQUISITION SYSTEM ARCI") + + + + #Standard Locations + self.baselocation='D:/' + #The default location from which the file shall be read from + self.defaultlocation='' + self.resourcelocation=self.baselocation+'resources/' + + + + + + #AeroTech details i.e. Position Control + + + + + + + + + + # Given in minutes + self.intradelaydefault='60' + self.largedelaydefault=str(24*60) + self.sensordefault='255' + #temprunsdefault is for L1,L2 and L3 + self.temprunsdefault='9' + #temprunsdefault45 is for Day 4 and Day 5 + self.temprunsdefault45='3' + + + + + + # Button for opening a file + self.buttonopenfile = TK.Button(text=self.defaultlocation, command=self.openfile, width=50) + self.buttonopenfile.grid(row=2, column=0) + self.labelopenfile=TK.Label(text="File location that is read", fg='red') + self.labelopenfile.grid(row=1, column=0) + + + #White Space area + self.output = TK.Text() + self.output.grid(row=7,column=0) + + #Progress bar + self.progressbar= ttk.Progressbar(length=150) + self.progressbar.grid(row=5,column=0) + self.progressbar.config(maximum=7, value=0) + #Label for Progress Bar + self.labelprogress=TK.Label(text="Progressbar", fg='red') + self.labelprogress.grid(row=4, column=0) + + + #Delay will be entry boxes due to its float nature + #intradelay + intravar=StringVar(value=self.intradelaydefault) + self.intraentry=TK.Entry(textvariable=intravar) + self.intraentry.grid(row=3,column=1) + #label for intradelay + self.labelintraentry=TK.Label(text="INTRA DELAY (mins)", fg='red') + self.labelintraentry.grid(row=2,column=1) + + + + + #Sensor Number + sensorvar = StringVar(value=self.sensordefault) + self.sensorentry=TK.Entry(textvariable=sensorvar) + self.sensorentry.grid(row=2,column=2) + #label for Sensor Number + self.labelsensornumber=TK.Label(text="SENSOR NUMBER", fg='red') + self.labelsensornumber.grid(row=1,column=2) + + #Number of Temperature runs for L1, L2 and L3 + temprunsvar=StringVar(value=self.temprunsdefault) # temporary variable + self.temprunsentry=TK.Entry(textvariable=temprunsvar) + self.temprunsentry.grid(row=5,column=2) + #Label for number of temperature runs + self.labeltempruns=TK.Label(text="Number of Temperature Runs", fg='red') + self.labeltempruns.grid(row=4,column=2) + + + #Number of Temperature runs for D4 and D5 + temprunsvar_D45=StringVar(value=self.temprunsdefault45) # temporary variable + self.temprunsentry_D45=TK.Entry(textvariable=temprunsvar_D45) + self.temprunsentry_D45.grid(row=5,column=1) + #Label for number of temperature runs + self.labeltempruns_D45=TK.Label(text="Number of Temperature Runs", fg='red') + self.labeltempruns_D45.grid(row=4,column=1) + + + + #Drop down list for the days + self.combo = ttk.Combobox() + self.combo.grid(row=1, column=3) + self.combo.config(value = ('L1', 'L2', 'L3', 'D4', 'D5')) + self.combo.set('L3') + #Label for combo box + + + """ + # Button for updating all the values + self.buttonupdate = TK.Button(text='Update', command=self.update) + self.buttonupdate.grid(row=4, column=3) + self.labelupdate=TK.Label(text="Updating all the values", fg='red') + self.labelopenfile.grid(row=3, column=3) + """ + #Button for Validation + self.buttonvalidate = TK.Button(text='Validate', command=self.validate) + self.buttonvalidate.grid(row=3, column=3) + self.labelupdate=TK.Label(text="Validation of your values", fg='red') + #self.labelopenfile.grid(row=1, column=3) + + #Button to specify the next run in how much time + + + + + + + + + + + + + + + + + def validate(self): + + + #delay after a click + self.general_time_delay=200/1000 # in milliseconds + #delay after a winwait etc. + self.more_time_delay=500/1000 # in milliseconds + + + + + + self.intradelay_set=self.intraentry.get() + print("Delay is {}".format(self.intradelay_set)) + self.sensor_input_set=self.sensorentry.get() + print("Sensor Number is {}".format(self.sensor_input_set)) + self.tempruns_set=self.temprunsentry.get() + print("Number of temperature runs for L1,L2 and L3 are {}".format(self.tempruns_set)) + self.comboday_set=self.combo.get() + print("The day you want to run is {}".format(self.comboday_set)) + self.tempruns_D45_set=self.temprunsentry_D45.get() + print("Number of temperature runs for Day4 and Day5 are {}".format(self.tempruns_D45_set)) + print("Validating the Path and existence of other files::") + + + + + # All Paths needs to be here as sensorname is part of the path + #Base bolder where all the folders shall be made + self.root_folder="D:/Automation_base/" + self.base_folder = "D:/Automation_base/" + self.sensor_input_set +'/' + self.base_folder_path= pathlib.Path(self.base_folder) + + #default location where the datalogger saves the file for each scan + self.dataloggerlocation="C:/Users/PRASAD/Documents/" + #default path where the datalogger saves the file for each scan + self.path_to_datalogger_default=pathlib.Path(self.dataloggerlocation) + + #Location where resources can be found + self.resourcelocation=self.baselocation+'resources/' + + + + #raw text or output raw_text.txt file location + self.raw_text_path=pathlib.Path(self.base_folder+'raw_text_'+self.comboday_set+'.txt') + self.combolocation=self.base_folder + self.comboday_set +'/' + + + + + + + + + + + + + if self.comboday_set == 'L1': + + self.createdirectory(self.base_folder_path) + + + + elif self.comboday_set == 'L2': + self.checkfileexists(self.base_folder+'raw_text_L1.txt') + + + elif self.comboday_set == 'L3': + self.checkfileexists(self.base_folder+'raw_text_L1.txt') + self.checkfileexists(self.base_folder+'raw_text_L2.txt') + + + elif self.comboday_set == 'D4': + self.checkfileexists(self.base_folder+'raw_text_L1.txt') + self.checkfileexists(self.base_folder+'raw_text_L2.txt') + self.checkfileexists(self.base_folder+'raw_text_L3.txt') + + elif (self.comboday_set == 'D5' and self.tempruns_D45_set==3): + self.checkfileexists(self.base_folder+'D4summary_temp1.txt') + self.checkfileexists(self.base_folder+'D4summary_temp2.txt') + self.checkfileexists(self.base_folder+'D4summary_temp3.txt') + self.checkfileexists(self.base_folder+'raw_text_D4_1_33.txt') + self.checkfileexists(self.base_folder+'raw_text_D4_2_33.txt') + self.checkfileexists(self.base_folder+'raw_text_D4_3_33.txt') + + else: + print("\n") + + + #espec details i.e temperature controller + self.espec_HOST="192.168.1.18" + self.espec_PORT=57732 + self.espec_session=SCPI_sock_connect(self.espec_HOST,self.espec_PORT) + #print(self.espec_session) + + #Validating ESPEC temperature controller by reading its temperature once + SCPI_sock_send(self.session,'TEMP?') + output=self.session.recv(20).decode() + lstoutput=output.split(",") + + #21.3,-40.0,165.0,-70 + if -11010**-3: + pos_feedback_Element=self.driver.find_element_by_id('axis0PosFbk') + time.sleep(5) + pos_feedback_Text = pos_feedback_Element.text + + print("Reached the desired position") + return 1 + + + + + + + + + + + + + #This is the function that actually takes care of homing, enable,absolute in the aerotech position + def aerotech_enab_absol(self): + #Clicking two balls on the screen + balls_Element=self.driver.find_element_by_id("enableDisableAxis0") + + if balls_Element is None: + print("The position controller is not connecting...") + sys.exit() + else: + print("Clicked Balls and waiting 60 seconds... ") + balls_Element.click() + time.sleep(1) + self.driver.implicitly_wait(60) + + + #Clicking home button + print("Clicked home button and waiting 60 seconds... ") + self.driver.find_element_by_id("homeAxis0").click() + self.driver.implicitly_wait(60) + + + + #sending ENABLE X and pressing enter + imme_comm=self.driver.find_element_by_id("immediate-command-text") + imme_comm.send_keys("ENABLE X") + time.sleep(1) + imme_comm.send_keys(Keys.RETURN) + time.sleep(5) + + + #checking for NO ERROR in the bottom status bar + #bottombar_Element=driver.find_element_by_id("status-bar") + #if bottombar_Element is not None: + # print("bottombar_Element found") + #bottombar_value=bottombar_Element.get_attribute("value") + #print("The bottombar value is " +bottombar_value) + + + check_enable_Element = self.driver.find_element_by_id('axis0Status') + check_enable_Text = check_enable_Element.text + + if check_enable_Text=='Enabled': + print("Enabled and lets continue") + time.sleep(0.5) + + #clearing the immediate-command text for next command and then Absolute command + imme_comm=driver.find_element_by_id("immediate-command-text") + time.sleep(0.5) + imme_comm.clear() + imme_comm.send_keys("ABSOLUTE") + time.sleep(1) + imme_comm.send_keys(Keys.RETURN) + time.sleep(5) + + + + + def autoit_singlecycleclicks(self): + + + #Emptying all the files from the default directory of Datalogger saver so that only one file is created by datalogger3 + files = [] + # r=root, d=directories, f = files + for r, d, f in os.walk(self.path_to_datalogger_default): + for file in f: + files.append(os.path.join(r, file)) + #print(files) + + for i in files: + os.remove(i) + + print('Removed all files from datalogger default..starting acquisition') + + #click the two dots so that it opens the dialogue box + #wait for 16 seconds to make the Benchlink Data logeer 3 active + autoit.win_wait_active("[TITLE:Configuration-2-BenchLink Data Logger3]", "",16) + #XXXXXXXXXXXXXXXXXXX + autoit.control_click("[TITLE:Configuration-2-BenchLink Data Logger3]","", "[CLASS::WindowsForms10.BUTTON.app.0.33c0d9d; INSTANCE:15]") + time.sleep(self.general_time_delay) + + #Click on the check box + autoit.win_wait_active("[TITLE:Set Data Log Fields]", "",16) + autoit.control_click("[TITLE:Set Data Log Fields]","", "[CLASS::WindowsForms10.BUTTON.app.0.33c0d9d; INSTANCE:3]") + time.sleep(self.general_time_delay) + + + #Click on the ok box + + + + + #Click on the play button + autoit.win_wait_active("[TITLE:Configuration-2-BenchLink Data Logger3]", "",16) + + #wait for the scan and log data summary + #wait for 2 minutes maximum + autoit.win_wait_active("[TITLE:Scan and Log Data Summary]", "",150) + autoit.control_click("[TITLE:Scan and Log Data Summary]","", "[CLASS::WindowsForms10.BUTTON.app.0.33c0d9d; INSTANCE:5]") + time.sleep(self.general_time_delay) + + + #Click on the close button + #end of the cycle + + + +#if __name__ == '__main__': +root=TK.Tk() +window = Window(root) + +print(window.intradelaydefault) +TK.mainloop() + + + +#a = pd.DataFrame(data = [[1,2],[3,4]], index=range(2), columns = ['A', 'B']) +#c,b = a.iloc[0].copy(), a.iloc[1].copy() +#a.iloc[0],a.iloc[1] = b,c +#print ("Start : %s" % time.ctime()) diff --git a/little_pywinauto.ipynb b/little_pywinauto.ipynb new file mode 100644 index 0000000..f00b7a9 --- /dev/null +++ b/little_pywinauto.ipynb @@ -0,0 +1,3203 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#Series" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "labels=['a','b','c']\n", + "my_list=[10,20,30]\n", + "arr=np.array([10,20,30])\n", + "d={'a':10,'b':20,'c':100}" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 10\n", + "1 20\n", + "2 30\n", + "dtype: int64" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.Series(my_list)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "a 10\n", + "b 20\n", + "c 30\n", + "dtype: int64" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.Series(my_list,index=labels)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 10\n", + "1 20\n", + "2 30\n", + "dtype: int32" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.Series(arr)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "a 10\n", + "b 20\n", + "c 30\n", + "dtype: int32" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.Series(arr,labels)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "a 10\n", + "b 20\n", + "c 100\n", + "dtype: int64" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.Series(d)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 \n", + "1 \n", + "2 \n", + "dtype: object" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.Series([sum,print,len])" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "ser1=pd.Series([1,2,3,4],index=[\"telan\",\"AP\",\"Mahar\",\"Tamilnadu\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "telan 1\n", + "AP 2\n", + "Mahar 3\n", + "Tamilnadu 4\n", + "dtype: int64" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ser1" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "ser2=pd.Series([2,3,4,5],index=[\"kashmir\",\"punjab\",\"Tamilnadu\",\"AP\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "kashmir 2\n", + "punjab 3\n", + "Tamilnadu 4\n", + "AP 5\n", + "dtype: int64" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ser2" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "telan 1\n", + "AP 2\n", + "Mahar 3\n", + "Tamilnadu 4\n", + "dtype: int64" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ser1" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "AP 7.0\n", + "Mahar NaN\n", + "Tamilnadu 8.0\n", + "kashmir NaN\n", + "punjab NaN\n", + "telan NaN\n", + "dtype: float64" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ser1+ser2" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "telan 1\n", + "AP 2\n", + "Mahar 3\n", + "Tamilnadu 4\n", + "dtype: int64" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ser1" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "4" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ser1[\"Tamilnadu\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "np.random.seed(101)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "df=pd.DataFrame(np.random.rand(5,4),[\"A\",\"B\",\"c\",\"D\",\"E\"],[\"W\",\"X\",\"Y\",\"Z\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
WXYZ
A0.5163990.5706680.0284740.171522
B0.6852770.8338970.3069660.893613
c0.7215440.1899390.5542280.352132
D0.1818920.7856020.9654830.232354
E0.0835610.6035480.7289930.276239
\n", + "
" + ], + "text/plain": [ + " W X Y Z\n", + "A 0.516399 0.570668 0.028474 0.171522\n", + "B 0.685277 0.833897 0.306966 0.893613\n", + "c 0.721544 0.189939 0.554228 0.352132\n", + "D 0.181892 0.785602 0.965483 0.232354\n", + "E 0.083561 0.603548 0.728993 0.276239" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "pandas.core.series.Series" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(df['W'])" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "pandas.core.frame.DataFrame" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(df)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
WXYZ
A0.5163990.5706680.0284740.171522
B0.6852770.8338970.3069660.893613
c0.7215440.1899390.5542280.352132
D0.1818920.7856020.9654830.232354
E0.0835610.6035480.7289930.276239
\n", + "
" + ], + "text/plain": [ + " W X Y Z\n", + "A 0.516399 0.570668 0.028474 0.171522\n", + "B 0.685277 0.833897 0.306966 0.893613\n", + "c 0.721544 0.189939 0.554228 0.352132\n", + "D 0.181892 0.785602 0.965483 0.232354\n", + "E 0.083561 0.603548 0.728993 0.276239" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df\n" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
WX
A0.5163990.570668
B0.6852770.833897
c0.7215440.189939
D0.1818920.785602
E0.0835610.603548
\n", + "
" + ], + "text/plain": [ + " W X\n", + "A 0.516399 0.570668\n", + "B 0.685277 0.833897\n", + "c 0.721544 0.189939\n", + "D 0.181892 0.785602\n", + "E 0.083561 0.603548" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df[['W','X']]" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [], + "source": [ + "df['new']=df['W']+df[\"X\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
WXYZnew
A0.5163990.5706680.0284740.1715221.087066
B0.6852770.8338970.3069660.8936131.519174
c0.7215440.1899390.5542280.3521320.911483
D0.1818920.7856020.9654830.2323540.967494
E0.0835610.6035480.7289930.2762390.687110
\n", + "
" + ], + "text/plain": [ + " W X Y Z new\n", + "A 0.516399 0.570668 0.028474 0.171522 1.087066\n", + "B 0.685277 0.833897 0.306966 0.893613 1.519174\n", + "c 0.721544 0.189939 0.554228 0.352132 0.911483\n", + "D 0.181892 0.785602 0.965483 0.232354 0.967494\n", + "E 0.083561 0.603548 0.728993 0.276239 0.687110" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [], + "source": [ + "df.drop(\"new\",axis=1,inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
WXYZ
A0.5163990.5706680.0284740.171522
B0.6852770.8338970.3069660.893613
c0.7215440.1899390.5542280.352132
D0.1818920.7856020.9654830.232354
E0.0835610.6035480.7289930.276239
\n", + "
" + ], + "text/plain": [ + " W X Y Z\n", + "A 0.516399 0.570668 0.028474 0.171522\n", + "B 0.685277 0.833897 0.306966 0.893613\n", + "c 0.721544 0.189939 0.554228 0.352132\n", + "D 0.181892 0.785602 0.965483 0.232354\n", + "E 0.083561 0.603548 0.728993 0.276239" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(5, 4)" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
WXY
A0.5163990.5706680.028474
B0.6852770.8338970.306966
c0.7215440.1899390.554228
D0.1818920.7856020.965483
E0.0835610.6035480.728993
\n", + "
" + ], + "text/plain": [ + " W X Y\n", + "A 0.516399 0.570668 0.028474\n", + "B 0.685277 0.833897 0.306966\n", + "c 0.721544 0.189939 0.554228\n", + "D 0.181892 0.785602 0.965483\n", + "E 0.083561 0.603548 0.728993" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.drop(\"Z\",axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
WXYZ
A0.5163990.5706680.0284740.171522
B0.6852770.8338970.3069660.893613
c0.7215440.1899390.5542280.352132
D0.1818920.7856020.9654830.232354
E0.0835610.6035480.7289930.276239
\n", + "
" + ], + "text/plain": [ + " W X Y Z\n", + "A 0.516399 0.570668 0.028474 0.171522\n", + "B 0.685277 0.833897 0.306966 0.893613\n", + "c 0.721544 0.189939 0.554228 0.352132\n", + "D 0.181892 0.785602 0.965483 0.232354\n", + "E 0.083561 0.603548 0.728993 0.276239" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "W 0.516399\n", + "X 0.570668\n", + "Y 0.028474\n", + "Z 0.171522\n", + "Name: A, dtype: float64" + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.loc['A']" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "W 0.516399\n", + "X 0.570668\n", + "Y 0.028474\n", + "Z 0.171522\n", + "Name: A, dtype: float64" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.iloc[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
WXYZ
A0.5163990.5706680.0284740.171522
D0.1818920.7856020.9654830.232354
\n", + "
" + ], + "text/plain": [ + " W X Y Z\n", + "A 0.516399 0.570668 0.028474 0.171522\n", + "D 0.181892 0.785602 0.965483 0.232354" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.loc[[\"A\",\"D\"]]" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
WXYZ
A0.5163990.5706680.0284740.171522
B0.6852770.8338970.3069660.893613
c0.7215440.1899390.5542280.352132
D0.1818920.7856020.9654830.232354
E0.0835610.6035480.7289930.276239
\n", + "
" + ], + "text/plain": [ + " W X Y Z\n", + "A 0.516399 0.570668 0.028474 0.171522\n", + "B 0.685277 0.833897 0.306966 0.893613\n", + "c 0.721544 0.189939 0.554228 0.352132\n", + "D 0.181892 0.785602 0.965483 0.232354\n", + "E 0.083561 0.603548 0.728993 0.276239" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
XY
A0.5706680.028474
D0.7856020.965483
\n", + "
" + ], + "text/plain": [ + " X Y\n", + "A 0.570668 0.028474\n", + "D 0.785602 0.965483" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.iloc[[0,3],[1,2]]" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
WXYZ
A0.5163990.5706680.0284740.171522
B0.6852770.8338970.3069660.893613
c0.7215440.1899390.5542280.352132
D0.1818920.7856020.9654830.232354
E0.0835610.6035480.7289930.276239
\n", + "
" + ], + "text/plain": [ + " W X Y Z\n", + "A 0.516399 0.570668 0.028474 0.171522\n", + "B 0.685277 0.833897 0.306966 0.893613\n", + "c 0.721544 0.189939 0.554228 0.352132\n", + "D 0.181892 0.785602 0.965483 0.232354\n", + "E 0.083561 0.603548 0.728993 0.276239" + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
WXYZ
ATrueTrueFalseFalse
BTrueTrueFalseTrue
cTrueFalseTrueFalse
DFalseTrueTrueFalse
EFalseTrueTrueFalse
\n", + "
" + ], + "text/plain": [ + " W X Y Z\n", + "A True True False False\n", + "B True True False True\n", + "c True False True False\n", + "D False True True False\n", + "E False True True False" + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df>0.5" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
WXYZ
A0.5163990.570668NaNNaN
B0.6852770.833897NaN0.893613
c0.721544NaN0.554228NaN
DNaN0.7856020.965483NaN
ENaN0.6035480.728993NaN
\n", + "
" + ], + "text/plain": [ + " W X Y Z\n", + "A 0.516399 0.570668 NaN NaN\n", + "B 0.685277 0.833897 NaN 0.893613\n", + "c 0.721544 NaN 0.554228 NaN\n", + "D NaN 0.785602 0.965483 NaN\n", + "E NaN 0.603548 0.728993 NaN" + ] + }, + "execution_count": 58, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df[df>0.5]" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "A True\n", + "B True\n", + "c True\n", + "D False\n", + "E False\n", + "Name: W, dtype: bool" + ] + }, + "execution_count": 60, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df['W']>0.5" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
WXYZ
A0.5163990.5706680.0284740.171522
B0.6852770.8338970.3069660.893613
c0.7215440.1899390.5542280.352132
\n", + "
" + ], + "text/plain": [ + " W X Y Z\n", + "A 0.516399 0.570668 0.028474 0.171522\n", + "B 0.685277 0.833897 0.306966 0.893613\n", + "c 0.721544 0.189939 0.554228 0.352132" + ] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df[df['W']>0.5]" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
WXYZ
A0.5163990.5706680.0284740.171522
B0.6852770.8338970.3069660.893613
c0.7215440.1899390.5542280.352132
D0.1818920.7856020.9654830.232354
E0.0835610.6035480.7289930.276239
\n", + "
" + ], + "text/plain": [ + " W X Y Z\n", + "A 0.516399 0.570668 0.028474 0.171522\n", + "B 0.685277 0.833897 0.306966 0.893613\n", + "c 0.721544 0.189939 0.554228 0.352132\n", + "D 0.181892 0.785602 0.965483 0.232354\n", + "E 0.083561 0.603548 0.728993 0.276239" + ] + }, + "execution_count": 63, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
WXYZ
A0.5163990.570668NaNNaN
B0.6852770.833897NaN0.893613
c0.721544NaN0.554228NaN
DNaN0.7856020.965483NaN
ENaN0.6035480.728993NaN
\n", + "
" + ], + "text/plain": [ + " W X Y Z\n", + "A 0.516399 0.570668 NaN NaN\n", + "B 0.685277 0.833897 NaN 0.893613\n", + "c 0.721544 NaN 0.554228 NaN\n", + "D NaN 0.785602 0.965483 NaN\n", + "E NaN 0.603548 0.728993 NaN" + ] + }, + "execution_count": 65, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df[df>0.5]" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
WXYZ
A0.5163990.5706680.0284740.171522
B0.6852770.8338970.3069660.893613
c0.7215440.1899390.5542280.352132
D0.1818920.7856020.9654830.232354
E0.0835610.6035480.7289930.276239
\n", + "
" + ], + "text/plain": [ + " W X Y Z\n", + "A 0.516399 0.570668 0.028474 0.171522\n", + "B 0.685277 0.833897 0.306966 0.893613\n", + "c 0.721544 0.189939 0.554228 0.352132\n", + "D 0.181892 0.785602 0.965483 0.232354\n", + "E 0.083561 0.603548 0.728993 0.276239" + ] + }, + "execution_count": 66, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "c 0.189939\n", + "D 0.785602\n", + "E 0.603548\n", + "Name: X, dtype: float64" + ] + }, + "execution_count": 69, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df[df[\"Y\"]>0.5][\"X\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
WXYZ
A0.5163990.5706680.0284740.171522
B0.6852770.8338970.3069660.893613
c0.7215440.1899390.5542280.352132
D0.1818920.7856020.9654830.232354
E0.0835610.6035480.7289930.276239
\n", + "
" + ], + "text/plain": [ + " W X Y Z\n", + "A 0.516399 0.570668 0.028474 0.171522\n", + "B 0.685277 0.833897 0.306966 0.893613\n", + "c 0.721544 0.189939 0.554228 0.352132\n", + "D 0.181892 0.785602 0.965483 0.232354\n", + "E 0.083561 0.603548 0.728993 0.276239" + ] + }, + "execution_count": 72, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
WXYZ
c0.7215440.1899390.5542280.352132
D0.1818920.7856020.9654830.232354
E0.0835610.6035480.7289930.276239
\n", + "
" + ], + "text/plain": [ + " W X Y Z\n", + "c 0.721544 0.189939 0.554228 0.352132\n", + "D 0.181892 0.785602 0.965483 0.232354\n", + "E 0.083561 0.603548 0.728993 0.276239" + ] + }, + "execution_count": 83, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "booldf=df[\"Y\"]>0.4\n", + "result=df[booldf]\n", + "result[\"X\"]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 92, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
WXYZ
A0.5163990.5706680.0284740.171522
B0.6852770.8338970.3069660.893613
c0.7215440.1899390.5542280.352132
D0.1818920.7856020.9654830.232354
E0.0835610.6035480.7289930.276239
\n", + "
" + ], + "text/plain": [ + " W X Y Z\n", + "A 0.516399 0.570668 0.028474 0.171522\n", + "B 0.685277 0.833897 0.306966 0.893613\n", + "c 0.721544 0.189939 0.554228 0.352132\n", + "D 0.181892 0.785602 0.965483 0.232354\n", + "E 0.083561 0.603548 0.728993 0.276239" + ] + }, + "execution_count": 92, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df[(df[\"W\"]>0.5) | (df[\"Z\"]>0.2)]" + ] + }, + { + "cell_type": "code", + "execution_count": 89, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "A True\n", + "B True\n", + "c True\n", + "D False\n", + "E False\n", + "Name: W, dtype: bool" + ] + }, + "execution_count": 89, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df[\"W\"]>0.5" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "ename": "MatchError", + "evalue": "Could not find 'Printer' in 'dict_keys(['PaperGroupBox', 'Paper', 'GroupBox', 'Static', 'Si&ze:Static', 'Si&ze:', 'ComboBox', 'Si&ze:ComboBox', 'Static0', 'Static1', 'Static2', '&Source:', '&Source:Static', 'ComboBox0', 'ComboBox1', 'ComboBox2', '&Source:ComboBox', 'Orientation', 'GroupBox0', 'GroupBox1', 'GroupBox2', 'OrientationGroupBox', 'P&ortrait', 'P&ortraitRadioButton', 'RadioButton', 'L&andscape', 'L&andscapeRadioButton', 'RadioButton0', 'RadioButton1', 'RadioButton2', 'Margins (inches)', 'Margins (inches)GroupBox', 'GroupBox3', 'Static3', '&Left:Static', '&Left:', '&Left:Edit', 'Edit', 'Static4', '&Right:', '&Right:Static', '&Right:Edit', 'Edit0', 'Edit1', 'Edit2', 'Static5', '&Top:', '&Top:Static', '&Top:Edit', 'Edit3', 'Static6', '&Bottom:Static', '&Bottom:', '&Bottom:Edit', 'Edit4', 'Static7', '&Header:', '&Header:Static', '&Header:Edit', 'Edit5', 'Static8', '&Footer:', '&Footer:Static', '&Footer:Edit', 'Edit6', 'OK', 'OKButton', 'Button', 'Cancel', 'CancelButton', 'Button0', 'Button1', 'Button2', 'Preview', 'PreviewGroupBox', 'GroupBox4', 'Static9', 'Margins (inches)Static', 'Static10', 'PreviewStatic', 'Static11', 'PreviewStatic0', 'PreviewStatic1', 'PreviewStatic2'])'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mTimeoutError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\pywinauto-0.6.7-py3.7.egg\\pywinauto\\application.py\u001b[0m in \u001b[0;36m__resolve_control\u001b[1;34m(self, criteria, timeout, retry_interval)\u001b[0m\n\u001b[0;32m 255\u001b[0m controls.InvalidElement),\n\u001b[1;32m--> 256\u001b[1;33m criteria)\n\u001b[0m\u001b[0;32m 257\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\pywinauto-0.6.7-py3.7.egg\\pywinauto\\timings.py\u001b[0m in \u001b[0;36mwait_until_passes\u001b[1;34m(timeout, retry_interval, func, exceptions, *args, **kwargs)\u001b[0m\n\u001b[0;32m 457\u001b[0m \u001b[0merr\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0moriginal_exception\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 458\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0merr\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 459\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mTimeoutError\u001b[0m: ", + "\nDuring handling of the above exception, another exception occurred:\n", + "\u001b[1;31mMatchError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 56\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 57\u001b[0m \u001b[1;31m# ----- Next Page Setup Dialog ----\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 58\u001b[1;33m \u001b[0mapp\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'PageSetupDlg'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'Printer'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mclick\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 59\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 60\u001b[0m \u001b[0mapp\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'PageSetupDlg'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'Network'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mclick\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\pywinauto-0.6.7-py3.7.egg\\pywinauto\\application.py\u001b[0m in \u001b[0;36m__getattribute__\u001b[1;34m(self, attr_name)\u001b[0m\n\u001b[0;32m 360\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcriteria\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m>=\u001b[0m \u001b[1;36m2\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 361\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 362\u001b[1;33m \u001b[0mctrls\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__resolve_control\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcriteria\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 363\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 364\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\pywinauto-0.6.7-py3.7.egg\\pywinauto\\application.py\u001b[0m in \u001b[0;36m__resolve_control\u001b[1;34m(self, criteria, timeout, retry_interval)\u001b[0m\n\u001b[0;32m 257\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 258\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mTimeoutError\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 259\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0moriginal_exception\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 260\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 261\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mctrl\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\pywinauto-0.6.7-py3.7.egg\\pywinauto\\timings.py\u001b[0m in \u001b[0;36mwait_until_passes\u001b[1;34m(timeout, retry_interval, func, exceptions, *args, **kwargs)\u001b[0m\n\u001b[0;32m 434\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 435\u001b[0m \u001b[1;31m# Call the function with any arguments\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 436\u001b[1;33m \u001b[0mfunc_val\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 437\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 438\u001b[0m \u001b[1;31m# if no exception is raised then we are finished\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\pywinauto-0.6.7-py3.7.egg\\pywinauto\\application.py\u001b[0m in \u001b[0;36m__get_ctrl\u001b[1;34m(self, criteria_)\u001b[0m\n\u001b[0;32m 218\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;34m'backend'\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mctrl_criteria\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 219\u001b[0m \u001b[0mctrl_criteria\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'backend'\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbackend\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mname\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 220\u001b[1;33m \u001b[0mctrl\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbackend\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgeneric_wrapper_class\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfindwindows\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfind_element\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m**\u001b[0m\u001b[0mctrl_criteria\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 221\u001b[0m \u001b[0mprevious_parent\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mctrl\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0melement_info\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 222\u001b[0m \u001b[0mctrls\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mctrl\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\pywinauto-0.6.7-py3.7.egg\\pywinauto\\findwindows.py\u001b[0m in \u001b[0;36mfind_element\u001b[1;34m(**kwargs)\u001b[0m\n\u001b[0;32m 82\u001b[0m \u001b[0mso\u001b[0m \u001b[0mplease\u001b[0m \u001b[0msee\u001b[0m \u001b[1;33m:\u001b[0m\u001b[0mpy\u001b[0m\u001b[1;33m:\u001b[0m\u001b[0mfunc\u001b[0m\u001b[1;33m:\u001b[0m\u001b[0;31m`\u001b[0m\u001b[0mfind_elements\u001b[0m\u001b[0;31m`\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mthe\u001b[0m \u001b[0mfull\u001b[0m \u001b[0mparameters\u001b[0m \u001b[0mdescription\u001b[0m\u001b[1;33m.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 83\u001b[0m \"\"\"\n\u001b[1;32m---> 84\u001b[1;33m \u001b[0melements\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mfind_elements\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 85\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 86\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0melements\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\pywinauto-0.6.7-py3.7.egg\\pywinauto\\findwindows.py\u001b[0m in \u001b[0;36mfind_elements\u001b[1;34m(class_name, class_name_re, parent, process, title, title_re, top_level_only, visible_only, enabled_only, best_match, handle, ctrl_index, found_index, predicate_func, active_only, control_id, control_type, auto_id, framework_id, backend, depth)\u001b[0m\n\u001b[0;32m 301\u001b[0m \u001b[1;31m# since the list of elements was retrieved\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 302\u001b[0m \u001b[1;32mcontinue\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 303\u001b[1;33m \u001b[0melements\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mfindbestmatch\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfind_best_control_matches\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mbest_match\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mwrapped_elems\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 304\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 305\u001b[0m \u001b[1;31m# convert found elements back to ElementInfo\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\pywinauto-0.6.7-py3.7.egg\\pywinauto\\findbestmatch.py\u001b[0m in \u001b[0;36mfind_best_control_matches\u001b[1;34m(search_text, controls)\u001b[0m\n\u001b[0;32m 531\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 532\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mbest_ratio\u001b[0m \u001b[1;33m<\u001b[0m \u001b[0mfind_best_control_match_cutoff\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 533\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mMatchError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mitems\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mname_control_map\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mkeys\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtofind\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msearch_text\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 534\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 535\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[1;33m[\u001b[0m\u001b[0mname_control_map\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mbest_text\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mbest_text\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mbest_texts\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mMatchError\u001b[0m: Could not find 'Printer' in 'dict_keys(['PaperGroupBox', 'Paper', 'GroupBox', 'Static', 'Si&ze:Static', 'Si&ze:', 'ComboBox', 'Si&ze:ComboBox', 'Static0', 'Static1', 'Static2', '&Source:', '&Source:Static', 'ComboBox0', 'ComboBox1', 'ComboBox2', '&Source:ComboBox', 'Orientation', 'GroupBox0', 'GroupBox1', 'GroupBox2', 'OrientationGroupBox', 'P&ortrait', 'P&ortraitRadioButton', 'RadioButton', 'L&andscape', 'L&andscapeRadioButton', 'RadioButton0', 'RadioButton1', 'RadioButton2', 'Margins (inches)', 'Margins (inches)GroupBox', 'GroupBox3', 'Static3', '&Left:Static', '&Left:', '&Left:Edit', 'Edit', 'Static4', '&Right:', '&Right:Static', '&Right:Edit', 'Edit0', 'Edit1', 'Edit2', 'Static5', '&Top:', '&Top:Static', '&Top:Edit', 'Edit3', 'Static6', '&Bottom:Static', '&Bottom:', '&Bottom:Edit', 'Edit4', 'Static7', '&Header:', '&Header:Static', '&Header:Edit', 'Edit5', 'Static8', '&Footer:', '&Footer:Static', '&Footer:Edit', 'Edit6', 'OK', 'OKButton', 'Button', 'Cancel', 'CancelButton', 'Button0', 'Button1', 'Button2', 'Preview', 'PreviewGroupBox', 'GroupBox4', 'Static9', 'Margins (inches)Static', 'Static10', 'PreviewStatic', 'Static11', 'PreviewStatic0', 'PreviewStatic1', 'PreviewStatic2'])'" + ] + } + ], + "source": [ + "# GUI Application automation and testing library\n", + "# Copyright (C) 2006-2018 Mark Mc Mahon and Contributors\n", + "# https://github.com/pywinauto/pywinauto/graphs/contributors\n", + "# http://pywinauto.readthedocs.io/en/latest/credits.html\n", + "# All rights reserved.\n", + "#\n", + "# Redistribution and use in source and binary forms, with or without\n", + "# modification, are permitted provided that the following conditions are met:\n", + "#\n", + "# * Redistributions of source code must retain the above copyright notice, this\n", + "# list of conditions and the following disclaimer.\n", + "#\n", + "# * Redistributions in binary form must reproduce the above copyright notice,\n", + "# this list of conditions and the following disclaimer in the documentation\n", + "# and/or other materials provided with the distribution.\n", + "#\n", + "# * Neither the name of pywinauto nor the names of its\n", + "# contributors may be used to endorse or promote products derived from\n", + "# this software without specific prior written permission.\n", + "#\n", + "# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n", + "# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n", + "# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n", + "# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n", + "# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n", + "# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n", + "# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n", + "# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n", + "# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n", + "# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", + "\n", + "\"\"\"Run some automations to test things\"\"\"\n", + "from __future__ import unicode_literals\n", + "from __future__ import print_function\n", + "\n", + "from pywinauto import application\n", + "#from pywinauto import tests\n", + "#from pywinauto.findbestmatch import MatchError\n", + "\n", + "\n", + "#application.set_timing(3, .5, 10, .5, .4, .2, .2, .1, .2, .5)\n", + "\n", + "app = application.Application()\n", + "app.start(r\"notepad.exe\")\n", + "\n", + "app['Notepad'].wait('ready')\n", + "\n", + "app['Notepad'].menu_select(\"File->PageSetup\")\n", + "\n", + "# ----- Page Setup Dialog ----\n", + "# Select the 4th combobox item\n", + "app['PageSetupDlg']['ComboBox1'].select(4)\n", + "\n", + "# Select the 'Letter' combobox item\n", + "app['PageSetupDlg']['ComboBox1'].select(\"Letter\")\n", + "\n", + "# ----- Next Page Setup Dialog ----\n", + "app['PageSetupDlg']['Printer'].click()\n", + "\n", + "app['PageSetupDlg']['Network'].click()\n", + "\n", + "# ----- Connect To Printer Dialog ----\n", + "# Select a checkbox\n", + "app['ConnectToPrinter']['ExpandByDef'].check()\n", + "# Uncheck it again - but use click this time!\n", + "app['ConnectToPrinter']['ExpandByDef'].click()\n", + "\n", + "app['ConnectToPrinter']['OK'].close_click()\n", + "\n", + "# ----- 2nd Page Setup Dialog again ----\n", + "app['PageSetupDlg2']['Properties'].click()\n", + "\n", + "# ----- Document Properties Dialog ----\n", + "doc_props = app.window(title_re = \".*Document Properties\")\n", + "\n", + "# Two ways of selecting tabs\n", + "doc_props['TabCtrl'].select(2)\n", + "doc_props['TabCtrl'].select(\"Layout\")\n", + "\n", + "# click a Radio button\n", + "doc_props['RotatedLandscape'].click()\n", + "doc_props['Portrait'].click()\n", + "\n", + "# open the Advanced options dialog in two steps\n", + "advbutton = doc_props['Advanced']\n", + "advbutton.click()\n", + "\n", + "# ----- Advanced Options Dialog ----\n", + "# close the 4 windows\n", + "app.window(title_re = \".* Advanced Options\")['Ok'].click()\n", + "\n", + "# ----- Document Properties Dialog again ----\n", + "doc_props['Cancel'].close_click()\n", + "# ----- 2nd Page Setup Dialog again ----\n", + "app['PageSetup2']['OK'].close_click()\n", + "# ----- Page Setup Dialog ----\n", + "app['PageSetup']['Ok'].close_click()\n", + "\n", + "# type some text\n", + "app['Notepad']['Edit'].set_edit_text(\"I am typing s\\xe4me text to Notepad\"\n", + " \"\\r\\n\\r\\nAnd then I am going to quit\")\n", + "\n", + "# exit notepad\n", + "app['NotepadDialog'].menu_select(\"File->Exit\")\n", + "app['Notepad']['No'].close_click()\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pywinauto\n", + "from pywinauto.application import Application\n", + "app = Application(backend=\"uia\").start(\"notepad.exe\")\n", + "app.UntitledNotepad.type_keys(\"%FX\")\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ProcessNotFoundError has been raised. OK.\n", + "AppStartError has been raised. OK.\n", + "========================================\n", + "Windows of this application: [, , , , , ]\n", + "The list of identifiers for the Page Setup dialog in Notepad\n", + "========================================\n", + "Control Identifiers:\n", + "\n", + "Dialog - 'Page Setup' (L363, T179, R913, B537)\n", + "['Dialog', 'Page Setup', 'Page SetupDialog']\n", + "child_window(title=\"Page Setup\", class_name=\"#32770\")\n", + " | \n", + " | GroupBox - 'Paper' (L383, T223, R719, B314)\n", + " | ['PaperGroupBox', 'Paper', 'GroupBox', 'GroupBox0', 'GroupBox1']\n", + " | child_window(title=\"Paper\", class_name=\"Button\")\n", + " | \n", + " | Static - 'Si&ze:' (L395, T249, R449, B262)\n", + " | ['Static', 'Si&ze:Static', 'Si&ze:', 'Static0', 'Static1']\n", + " | child_window(title=\"Si&ze:\", class_name=\"Static\")\n", + " | \n", + " | ComboBox - 'Letter' (L467, T247, R707, B268)\n", + " | ['ComboBox', 'Si&ze:ComboBox', 'ComboBox0', 'ComboBox1']\n", + " | child_window(title=\"Letter\", class_name=\"ComboBox\")\n", + " | \n", + " | Static - '&Source:' (L395, T283, R449, B296)\n", + " | ['Static2', '&Source:', '&Source:Static']\n", + " | child_window(title=\"&Source:\", class_name=\"Static\")\n", + " | \n", + " | ComboBox - '' (L467, T278, R707, B299)\n", + " | ['ComboBox2', '&Source:ComboBox']\n", + " | child_window(class_name=\"ComboBox\")\n", + " | \n", + " | GroupBox - 'Orientation' (L383, T322, R479, B413)\n", + " | ['Orientation', 'GroupBox2', 'OrientationGroupBox']\n", + " | child_window(title=\"Orientation\", class_name=\"Button\")\n", + " | \n", + " | RadioButton - 'P&ortrait' (L395, T343, R473, B363)\n", + " | ['P&ortrait', 'P&ortraitRadioButton', 'RadioButton', 'RadioButton0', 'RadioButton1']\n", + " | child_window(title=\"P&ortrait\", class_name=\"Button\")\n", + " | \n", + " | RadioButton - 'L&andscape' (L395, T377, R473, B397)\n", + " | ['L&andscape', 'L&andscapeRadioButton', 'RadioButton2']\n", + " | child_window(title=\"L&andscape\", class_name=\"Button\")\n", + " | \n", + " | GroupBox - 'Margins (inches)' (L491, T322, R719, B413)\n", + " | ['Margins (inches)', 'Margins (inches)GroupBox', 'GroupBox3']\n", + " | child_window(title=\"Margins (inches)\", class_name=\"Button\")\n", + " | \n", + " | Static - '&Left:' (L503, T348, R551, B361)\n", + " | ['Static3', '&Left:Static', '&Left:']\n", + " | child_window(title=\"&Left:\", class_name=\"Static\")\n", + " | \n", + " | Edit - '0.75' (L551, T343, R593, B363)\n", + " | ['&Left:Edit', 'Edit', 'Edit0', 'Edit1']\n", + " | child_window(title=\"0.75\", class_name=\"Edit\")\n", + " | \n", + " | Static - '&Right:' (L617, T348, R665, B361)\n", + " | ['Static4', '&Right:', '&Right:Static']\n", + " | child_window(title=\"&Right:\", class_name=\"Static\")\n", + " | \n", + " | Edit - '0.75' (L665, T343, R707, B363)\n", + " | ['&Right:Edit', 'Edit2']\n", + " | child_window(title=\"0.75\", class_name=\"Edit\")\n", + " | \n", + " | Static - '&Top:' (L503, T379, R551, B392)\n", + " | ['Static5', '&Top:', '&Top:Static']\n", + " | child_window(title=\"&Top:\", class_name=\"Static\")\n", + " | \n", + " | Edit - '1' (L551, T377, R593, B397)\n", + " | ['&Top:Edit', 'Edit3']\n", + " | child_window(title=\"1\", class_name=\"Edit\")\n", + " | \n", + " | Static - '&Bottom:' (L617, T379, R665, B392)\n", + " | ['Static6', '&Bottom:Static', '&Bottom:']\n", + " | child_window(title=\"&Bottom:\", class_name=\"Static\")\n", + " | \n", + " | Edit - '1' (L665, T377, R707, B397)\n", + " | ['&Bottom:Edit', 'Edit4']\n", + " | child_window(title=\"1\", class_name=\"Edit\")\n", + " | \n", + " | Static - '&Header:' (L383, T429, R427, B442)\n", + " | ['Static7', '&Header:', '&Header:Static']\n", + " | child_window(title=\"&Header:\", class_name=\"Static\")\n", + " | \n", + " | Edit - '&f' (L455, T428, R716, B448)\n", + " | ['&Header:Edit', 'Edit5']\n", + " | child_window(title=\"&f\", class_name=\"Edit\")\n", + " | \n", + " | Static - '&Footer:' (L383, T460, R427, B473)\n", + " | ['Static8', '&Footer:', '&Footer:Static']\n", + " | child_window(title=\"&Footer:\", class_name=\"Static\")\n", + " | \n", + " | Edit - 'Page &p' (L455, T459, R716, B479)\n", + " | ['&Footer:Edit', 'Edit6']\n", + " | child_window(title=\"Page &p\", class_name=\"Edit\")\n", + " | \n", + " | Button - 'OK' (L737, T493, R812, B516)\n", + " | ['OK', 'OKButton', 'Button', 'Button0', 'Button1']\n", + " | child_window(title=\"OK\", class_name=\"Button\")\n", + " | \n", + " | Button - 'Cancel' (L818, T493, R893, B516)\n", + " | ['Cancel', 'CancelButton', 'Button2']\n", + " | child_window(title=\"Cancel\", class_name=\"Button\")\n", + " | \n", + " | Button - '&Printer...' (L818, T493, R893, B516)\n", + " | ['&Printer...', '&Printer...Button', 'Button3']\n", + " | child_window(title=\"&Printer...\", class_name=\"Button\")\n", + " | \n", + " | GroupBox - 'Preview' (L731, T223, R893, B480)\n", + " | ['Preview', 'PreviewGroupBox', 'GroupBox4']\n", + " | child_window(title=\"Preview\", class_name=\"Button\")\n", + " | \n", + " | Static - '' (L762, T285, R862, B415)\n", + " | ['Static9', 'Margins (inches)Static']\n", + " | child_window(class_name=\"Static\")\n", + " | \n", + " | Static - '' (L862, T293, R870, B423)\n", + " | ['Static10', 'PreviewStatic', 'PreviewStatic0', 'PreviewStatic1']\n", + " | child_window(class_name=\"Static\")\n", + " | \n", + " | Static - '' (L770, T415, R870, B423)\n", + " | ['Static11', 'PreviewStatic2']\n", + " | child_window(class_name=\"Static\")\n", + "========================================\n", + "The list of identifiers for the 2nd Edit control in the dialog\n", + "Control Identifiers:\n", + "\n", + "Edit - '0.75' (L665, T343, R707, B363)\n", + "['', 'Edit']\n", + "child_window(title=\"0.75\", class_name=\"Edit\")\n", + "========================================\n" + ] + } + ], + "source": [ + "from __future__ import unicode_literals\n", + "from __future__ import print_function\n", + "\n", + "try:\n", + " from pywinauto import application\n", + "except ImportError:\n", + " import os.path\n", + " pywinauto_path = os.path.abspath(__file__)\n", + " pywinauto_path = os.path.split(os.path.split(pywinauto_path)[0])[0]\n", + " import sys\n", + " sys.path.append(pywinauto_path)\n", + " from pywinauto import application\n", + "\n", + "#from pywinauto import tests\n", + "#from pywinauto.findbestmatch import MatchError\n", + "from pywinauto.timings import Timings\n", + "\n", + "Timings.window_find_timeout = 10\n", + "\n", + "def test_exceptions():\n", + " \"\"\"Test some things that should raise exceptions\"\"\"\n", + " # test that trying to connect_ to a non existent app fails\n", + " try:\n", + " app = application.Application()\n", + " app.connect(path=r\"No process with this please\")\n", + " assert False\n", + " except application.ProcessNotFoundError:\n", + " print('ProcessNotFoundError has been raised. OK.')\n", + "\n", + " # test that trying to connect_ to a non existent app fails\n", + " try:\n", + " app = application.Application()\n", + " app.start(cmd_line = r\"No process with this please\")\n", + " assert False\n", + " except application.AppStartError:\n", + " print('AppStartError has been raised. OK.')\n", + "\n", + "# # try when it isn't connected\n", + "# try:\n", + "# app = application.Application()\n", + "# #app.start_(ur\"c:\\windows\\system32\\notepad.exe\")\n", + "# app.Notepad.click()\n", + "# #assert False\n", + "# except application.AppNotConnected:\n", + "# pass\n", + "\n", + "\n", + "\n", + "def get_info():\n", + " \"\"\"Run Notepad, print some identifiers and exit\"\"\"\n", + " app = application.Application()\n", + "\n", + " app.start(r\"notepad.exe\")\n", + "\n", + " app.Notepad.menu_select(\"File->PageSetup\")\n", + "\n", + " print(\"==\" * 20)\n", + " print(\"Windows of this application:\", app.windows())\n", + "\n", + " print(\"The list of identifiers for the Page Setup dialog in Notepad\")\n", + " print(\"==\" * 20)\n", + " app.PageSetup.print_control_identifiers()\n", + " print(\"==\" * 20)\n", + " print(\"The list of identifiers for the 2nd Edit control in the dialog\")\n", + " app.PageSetup.Edit2.print_control_identifiers()\n", + " print(\"==\" * 20)\n", + "\n", + " app.PageSetup.OK.close_click()\n", + " app.Notepad.menu_select(\"File->Exit\")\n", + "\n", + "\n", + "\n", + "if __name__ == '__main__':\n", + " test_exceptions()\n", + " get_info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "ename": "ElementAmbiguousError", + "evalue": "There are 2 elements that match the criteria {'title_re': '.*Notepad*', 'backend': 'uia', 'visible_only': False}", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mElementAmbiguousError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;31m# Import pywinauto Application class\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[0mpywinauto\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mapplication\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mApplication\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[0mapp\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mApplication\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mbackend\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m\"uia\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mconnect\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtitle_re\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m\".*Notepad*\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 4\u001b[0m \u001b[0mmain_dlg\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mapp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mwindow\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtitle\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'Untitled - Notepad'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\pywinauto-0.6.7-py3.7.egg\\pywinauto\\application.py\u001b[0m in \u001b[0;36mconnect\u001b[1;34m(self, **kwargs)\u001b[0m\n\u001b[0;32m 976\u001b[0m ).process_id\n\u001b[0;32m 977\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 978\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mprocess\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mfindwindows\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfind_element\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mprocess_id\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 979\u001b[0m \u001b[0mconnected\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mTrue\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 980\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\pywinauto-0.6.7-py3.7.egg\\pywinauto\\findwindows.py\u001b[0m in \u001b[0;36mfind_element\u001b[1;34m(**kwargs)\u001b[0m\n\u001b[0;32m 96\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 97\u001b[0m \u001b[0mexception\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0melements\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0melements\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 98\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mexception\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 99\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 100\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0melements\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mElementAmbiguousError\u001b[0m: There are 2 elements that match the criteria {'title_re': '.*Notepad*', 'backend': 'uia', 'visible_only': False}" + ] + } + ], + "source": [ + "# Import pywinauto Application class\n", + "from pywinauto.application import Application\n", + "app = Application(backend=\"uia\").connect(title_re=\".*LuCam Capture*\")\n", + "main_dlg = app.window(title='LuCam Capture')" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "main_dlg" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Control Identifiers:\n", + "\n", + "Dialog - 'LuCam Capture' (L0, T0, R0, B0)\n", + "['Dialog', 'LuCam Capture', 'LuCam CaptureDialog']\n", + "child_window(title=\"LuCam Capture\", control_type=\"Window\")\n", + " | \n", + " | ComboBox - '' (L-31982, T-31925, R-31775, B-31904)\n", + " | ['ComboBox', 'Image SizeComboBox', 'ComboBox0', 'ComboBox1', 'Image SizeComboBox0', 'Image SizeComboBox1']\n", + " | child_window(auto_id=\"1022\", control_type=\"ComboBox\")\n", + " | | \n", + " | | Static - '' (L3, T3, R187, B18)\n", + " | | ['Static', '', 'Static0', 'Static1', '0', '1']\n", + " | | \n", + " | | Button - 'Open' (L-31794, T-31923, R-31777, B-31906)\n", + " | | ['Open', 'OpenButton', 'Button2', 'Open0', 'Open1', 'OpenButton0', 'OpenButton1']\n", + " | | child_window(title=\"Open\", auto_id=\"DropDown\", control_type=\"Button\")\n", + " | \n", + " | RadioButton - 'USB' (L-31989, T-31989, R-31942, B-31973)\n", + " | ['USBRadioButton', 'USB', 'RadioButton', 'RadioButton0', 'RadioButton1']\n", + " | child_window(title=\"USB\", auto_id=\"1103\", control_type=\"RadioButton\")\n", + " | \n", + " | RadioButton - 'GigE Vision' (L-31935, T-31989, R-31857, B-31973)\n", + " | ['GigE Vision', 'GigE VisionRadioButton', 'RadioButton2']\n", + " | child_window(title=\"GigE Vision\", auto_id=\"1104\", control_type=\"RadioButton\")\n", + " | \n", + " | Button - 'Connect' (L-31797, T-31993, R-31722, B-31970)\n", + " | ['Connect', 'ConnectButton', 'Button', 'Button0', 'Button1']\n", + " | child_window(title=\"Connect\", auto_id=\"1105\", control_type=\"Button\")\n", + " | \n", + " | ComboBox - '' (L-31746, T-31925, R-31677, B-31904)\n", + " | ['ComboBox2', 'Image SizeComboBox2']\n", + " | child_window(auto_id=\"1110\", control_type=\"ComboBox\")\n", + " | | \n", + " | | Static - '' (L3, T3, R49, B18)\n", + " | | ['Static2', '2']\n", + " | | \n", + " | | Button - 'Open' (L-31696, T-31923, R-31679, B-31906)\n", + " | | ['Open2', 'OpenButton2', 'Button3']\n", + " | | child_window(title=\"Open\", auto_id=\"DropDown\", control_type=\"Button\")\n", + " | \n", + " | Edit - '' (L-31746, T-31896, R-31677, B-31876)\n", + " | ['Image SizeEdit', 'Edit', 'Edit0', 'Edit1']\n", + " | child_window(auto_id=\"1109\", control_type=\"Edit\")\n", + " | \n", + " | Button - 'Capture' (L-31983, T-31855, R-31908, B-31831)\n", + " | ['CaptureButton', 'Capture', 'Button4', 'CaptureButton0', 'CaptureButton1', 'Capture0', 'Capture1']\n", + " | child_window(title=\"Capture\", auto_id=\"1045\", control_type=\"Button\")\n", + " | \n", + " | Button - 'Hide Capture' (L-31898, T-31855, R-31823, B-31831)\n", + " | ['Hide Capture', 'Hide CaptureButton', 'Button5', 'Hide Capture0', 'Hide Capture1', 'Hide CaptureButton0', 'Hide CaptureButton1']\n", + " | child_window(title=\"Hide Capture\", auto_id=\"1046\", control_type=\"Button\")\n", + " | \n", + " | Button - 'Save As...' (L-31983, T-31821, R-31908, B-31797)\n", + " | ['Save As...Button', 'Save As...', 'Button6', 'Save As...Button0', 'Save As...Button1', 'Save As...0', 'Save As...1']\n", + " | child_window(title=\"Save As...\", auto_id=\"1009\", control_type=\"Button\")\n", + " | \n", + " | ComboBox - '' (L-31746, T-31846, R-31677, B-31825)\n", + " | ['ComboBox3', 'TapsComboBox', 'TapsComboBox0', 'TapsComboBox1']\n", + " | child_window(auto_id=\"1112\", control_type=\"ComboBox\")\n", + " | | \n", + " | | Static - '' (L3, T3, R49, B18)\n", + " | | ['Static3', '3']\n", + " | | \n", + " | | Button - 'Open' (L-31696, T-31844, R-31679, B-31827)\n", + " | | ['Open3', 'OpenButton3', 'Button7']\n", + " | | child_window(title=\"Open\", auto_id=\"DropDown\", control_type=\"Button\")\n", + " | \n", + " | Edit - '' (L-31965, T-31638, R-31908, B-31617)\n", + " | ['Iris:Edit', 'Edit2']\n", + " | child_window(auto_id=\"1012\", control_type=\"Edit\")\n", + " | \n", + " | UpDown - '' (L-31905, T-31638, R-31888, B-31617)\n", + " | ['Iris:UpDown', 'UpDown', 'UpDown0', 'UpDown1']\n", + " | child_window(auto_id=\"1124\", control_type=\"Spinner\")\n", + " | | \n", + " | | Button - 'More' (L-31905, T-31638, R-31888, B-31627)\n", + " | | ['More', 'MoreButton', 'Button8', 'More0', 'More1', 'MoreButton0', 'MoreButton1']\n", + " | | child_window(title=\"More\", auto_id=\"MoreButton\", control_type=\"Button\")\n", + " | | \n", + " | | Button - 'Less' (L-31905, T-31627, R-31888, B-31617)\n", + " | | ['LessButton', 'Less', 'Button9', 'LessButton0', 'LessButton1', 'Less0', 'Less1']\n", + " | | child_window(title=\"Less\", auto_id=\"LessButton\", control_type=\"Button\")\n", + " | \n", + " | Edit - '' (L-31833, T-31639, R-31776, B-31618)\n", + " | ['Focus:Edit', 'Edit3', 'Focus:Edit0', 'Focus:Edit1']\n", + " | child_window(auto_id=\"1039\", control_type=\"Edit\")\n", + " | \n", + " | UpDown - '' (L-31773, T-31641, R-31756, B-31618)\n", + " | ['UpDown2', 'Focus:UpDown']\n", + " | child_window(auto_id=\"1123\", control_type=\"Spinner\")\n", + " | | \n", + " | | Button - 'More' (L-31773, T-31641, R-31756, B-31629)\n", + " | | ['More2', 'MoreButton2', 'Button10']\n", + " | | child_window(title=\"More\", auto_id=\"MoreButton\", control_type=\"Button\")\n", + " | | \n", + " | | Button - 'Less' (L-31773, T-31629, R-31756, B-31618)\n", + " | | ['LessButton2', 'Less2', 'Button11']\n", + " | | child_window(title=\"Less\", auto_id=\"LessButton\", control_type=\"Button\")\n", + " | \n", + " | Static - 'Exposure (ms):' (L-31982, T-31782, R-31908, B-31766)\n", + " | ['Static4', 'Exposure (ms):Static', 'Exposure (ms):', 'Exposure (ms):Static0', 'Exposure (ms):Static1', 'Exposure (ms):0', 'Exposure (ms):1']\n", + " | child_window(title=\"Exposure (ms):\", auto_id=\"1037\", control_type=\"Text\")\n", + " | \n", + " | Slider - 'Exposure (ms):' (L-31910, T-31781, R-31725, B-31766)\n", + " | ['Slider', 'Exposure (ms):Slider', 'Slider0', 'Slider1']\n", + " | child_window(title=\"Exposure (ms):\", auto_id=\"1004\", control_type=\"Slider\")\n", + " | | \n", + " | | Thumb - 'Position' (L-31905, T-31779, R-31900, B-31770)\n", + " | | ['Thumb', 'Position', 'PositionThumb', 'Thumb0', 'Thumb1', 'Position0', 'Position1', 'PositionThumb0', 'PositionThumb1']\n", + " | | child_window(title=\"Position\", control_type=\"Thumb\")\n", + " | | \n", + " | | Button - 'Page right' (L-31900, T-31777, R-31730, B-31773)\n", + " | | ['Page right', 'Page rightButton', 'Button12', 'Page right0', 'Page right1', 'Page rightButton0', 'Page rightButton1']\n", + " | | child_window(title=\"Page right\", control_type=\"Button\")\n", + " | \n", + " | CheckBox - 'AEC' (L-31713, T-31787, R-31671, B-31771)\n", + " | ['CheckBox', 'AECCheckBox', 'AEC', 'CheckBox0', 'CheckBox1']\n", + " | child_window(title=\"AEC\", auto_id=\"1005\", control_type=\"CheckBox\")\n", + " | \n", + " | Static - 'Gain (x):' (L-31983, T-31743, R-31914, B-31727)\n", + " | ['Static5', 'Gain (x):Static', 'Gain (x):']\n", + " | child_window(title=\"Gain (x):\", auto_id=\"1038\", control_type=\"Text\")\n", + " | \n", + " | CheckBox - 'AGC' (L-31713, T-31743, R-31671, B-31727)\n", + " | ['CheckBox2', 'AGC', 'AGCCheckBox']\n", + " | child_window(title=\"AGC\", auto_id=\"1007\", control_type=\"CheckBox\")\n", + " | \n", + " | CheckBox - 'AWB' (L-31713, T-31696, R-31668, B-31680)\n", + " | ['CheckBox3', 'AWB', 'AWBCheckBox']\n", + " | child_window(title=\"AWB\", auto_id=\"1008\", control_type=\"CheckBox\")\n", + " | \n", + " | Static - 'Gamma:' (L-31955, T-31696, R-31914, B-31676)\n", + " | ['Static6', 'Gamma:Static', 'Gamma:']\n", + " | child_window(title=\"Gamma:\", auto_id=\"1140\", control_type=\"Text\")\n", + " | \n", + " | Edit - 'Gamma:' (L-31910, T-31699, R-31865, B-31679)\n", + " | ['Gamma:Edit', 'Edit4']\n", + " | child_window(title=\"Gamma:\", auto_id=\"1010\", control_type=\"Edit\")\n", + " | \n", + " | Button - 'White Balance' (L-31815, T-31701, R-31731, B-31677)\n", + " | ['White Balance', 'White BalanceButton', 'Button13']\n", + " | child_window(title=\"White Balance\", auto_id=\"1013\", control_type=\"Button\")\n", + " | \n", + " | GroupBox - 'Snapshot' (L-31991, T-31605, R-31659, B-31384)\n", + " | ['SnapshotGroupBox', 'GroupBox', 'Snapshot', 'GroupBox0', 'GroupBox1']\n", + " | child_window(title=\"Snapshot\", auto_id=\"1143\", control_type=\"Group\")\n", + " | \n", + " | Button - 'Capture' (L-31742, T-31587, R-31667, B-31563)\n", + " | ['CaptureButton2', 'Capture2', 'Button14']\n", + " | child_window(title=\"Capture\", auto_id=\"1015\", control_type=\"Button\")\n", + " | \n", + " | Edit - '' (L-31868, T-31555, R-31811, B-31534)\n", + " | ['Exposure Delay (ms):Edit', 'Edit5']\n", + " | child_window(auto_id=\"1016\", control_type=\"Edit\")\n", + " | \n", + " | Static - 'Exposure Delay (ms):' (L-31982, T-31553, R-31880, B-31535)\n", + " | ['Static7', 'Exposure Delay (ms):Static', 'Exposure Delay (ms):']\n", + " | child_window(title=\"Exposure Delay (ms):\", auto_id=\"1019\", control_type=\"Text\")\n", + " | \n", + " | Static - 'Exposure (ms):' (L-31982, T-31582, R-31910, B-31566)\n", + " | ['Static8', 'Exposure (ms):Static2', 'Exposure (ms):2']\n", + " | child_window(title=\"Exposure (ms):\", auto_id=\"1054\", control_type=\"Text\")\n", + " | \n", + " | Edit - 'Exposure (ms):' (L-31868, T-31584, R-31811, B-31563)\n", + " | ['Exposure (ms):Edit', 'Focus:Edit2', 'Edit6']\n", + " | child_window(title=\"Exposure (ms):\", auto_id=\"1017\", control_type=\"Edit\")\n", + " | \n", + " | CheckBox - 'Use Strobe Output' (L-31982, T-31469, R-31869, B-31453)\n", + " | ['CheckBox4', 'Use Strobe Output', 'Use Strobe OutputCheckBox']\n", + " | child_window(title=\"Use Strobe Output\", auto_id=\"1018\", control_type=\"CheckBox\")\n", + " | \n", + " | Button - 'Hide Capture' (L-31742, T-31558, R-31667, B-31534)\n", + " | ['Hide Capture2', 'Hide CaptureButton2', 'Button15']\n", + " | child_window(title=\"Hide Capture\", auto_id=\"1020\", control_type=\"Button\")\n", + " | \n", + " | Static - 'Image Size' (L-31980, T-31941, R-31920, B-31925)\n", + " | ['Static9', 'Image Size', 'Image SizeStatic']\n", + " | child_window(title=\"Image Size\", auto_id=\"1142\", control_type=\"Text\")\n", + " | \n", + " | GroupBox - 'Frame Rate' (L-31755, T-31943, R-31672, B-31863)\n", + " | ['Frame RateGroupBox', 'Frame Rate', 'GroupBox2']\n", + " | child_window(title=\"Frame Rate\", auto_id=\"1033\", control_type=\"Group\")\n", + " | \n", + " | CheckBox - 'Wait for HW Input Trigger' (L-31982, T-31496, R-31824, B-31480)\n", + " | ['CheckBox5', 'Wait for HW Input TriggerCheckBox', 'Wait for HW Input Trigger']\n", + " | child_window(title=\"Wait for HW Input Trigger\", auto_id=\"1021\", control_type=\"CheckBox\")\n", + " | \n", + " | CheckBox - '16 Bits per Pixel' (L-31982, T-31524, R-31875, B-31508)\n", + " | ['CheckBox6', '16 Bits per PixelCheckBox', '16 Bits per Pixel']\n", + " | child_window(title=\"16 Bits per Pixel\", auto_id=\"1025\", control_type=\"CheckBox\")\n", + " | \n", + " | CheckBox - 'Capture & Save Bayer Data' (L-31898, T-31818, R-31742, B-31802)\n", + " | ['CheckBox7', 'Capture & Save Bayer DataCheckBox', 'Capture & Save Bayer Data']\n", + " | child_window(title=\"Capture & Save Bayer Data\", auto_id=\"1034\", control_type=\"CheckBox\")\n", + " | \n", + " | Button - 'Save As...' (L-31742, T-31529, R-31667, B-31505)\n", + " | ['Save As...Button2', 'Save As...2', 'Button16']\n", + " | child_window(title=\"Save As...\", auto_id=\"1026\", control_type=\"Button\")\n", + " | \n", + " | Edit - '' (L-31851, T-31444, R-31806, B-31424)\n", + " | ['Strobe Delay (ms):Edit', 'Edit7']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " | child_window(auto_id=\"1035\", control_type=\"Edit\")\n", + " | \n", + " | Static - 'Strobe Delay (ms):' (L-31965, T-31441, R-31867, B-31425)\n", + " | ['Static10', 'Strobe Delay (ms):Static', 'Strobe Delay (ms):']\n", + " | child_window(title=\"Strobe Delay (ms):\", auto_id=\"1036\", control_type=\"Text\")\n", + " | \n", + " | CheckBox - 'Extended Gain' (L-31976, T-31724, R-31881, B-31708)\n", + " | ['CheckBox8', 'Extended Gain', 'Extended GainCheckBox']\n", + " | child_window(title=\"Extended Gain\", auto_id=\"1106\", control_type=\"CheckBox\")\n", + " | \n", + " | Static - 'Taps' (L-31746, T-31860, R-31720, B-31847)\n", + " | ['Static11', 'TapsStatic', 'Taps', 'Taps0', 'Taps1', 'TapsStatic0', 'TapsStatic1']\n", + " | child_window(title=\"Taps\", auto_id=\"1113\", control_type=\"Text\")\n", + " | \n", + " | ComboBox - 'Taps' (L-31742, T-31485, R-31667, B-31464)\n", + " | ['ComboBox4', 'TapsComboBox2', 'Taps2']\n", + " | child_window(title=\"Taps\", auto_id=\"1114\", control_type=\"ComboBox\")\n", + " | | \n", + " | | Static - 'Taps' (L3, T3, R55, B18)\n", + " | | ['Static12', 'TapsStatic2', 'Taps3']\n", + " | | child_window(title=\"Taps\", control_type=\"Text\")\n", + " | | \n", + " | | Button - 'Open' (L-31686, T-31483, R-31669, B-31466)\n", + " | | ['Open4', 'OpenButton4', 'Button17']\n", + " | | child_window(title=\"Open\", auto_id=\"DropDown\", control_type=\"Button\")\n", + " | \n", + " | Static - 'Taps' (L-31742, T-31499, R-31716, B-31486)\n", + " | ['Static13', 'TapsStatic3', 'Taps4']\n", + " | child_window(title=\"Taps\", auto_id=\"1115\", control_type=\"Text\")\n", + " | \n", + " | GroupBox - 'Video' (L-31991, T-31964, R-31659, B-31673)\n", + " | ['Video', 'VideoGroupBox', 'GroupBox3']\n", + " | child_window(title=\"Video\", auto_id=\"1141\", control_type=\"Group\")\n", + " | \n", + " | Static - 'Still Speed' (L-31742, T-31459, R-31691, B-31446)\n", + " | ['Static14', 'Still SpeedStatic', 'Still Speed', 'Still Speed0', 'Still Speed1', 'Still SpeedStatic0', 'Still SpeedStatic1']\n", + " | child_window(title=\"Still Speed\", auto_id=\"1117\", control_type=\"Text\")\n", + " | \n", + " | ComboBox - 'Still Speed' (L-31742, T-31444, R-31667, B-31423)\n", + " | ['ComboBox5', 'Still Speed2', 'Still SpeedComboBox']\n", + " | child_window(title=\"Still Speed\", auto_id=\"1116\", control_type=\"ComboBox\")\n", + " | | \n", + " | | Static - 'Still Speed' (L3, T3, R55, B18)\n", + " | | ['Static15', 'Still SpeedStatic2', 'Still Speed3']\n", + " | | child_window(title=\"Still Speed\", control_type=\"Text\")\n", + " | | \n", + " | | Button - 'Open' (L-31686, T-31442, R-31669, B-31425)\n", + " | | ['Open5', 'OpenButton5', 'Button18']\n", + " | | child_window(title=\"Open\", auto_id=\"DropDown\", control_type=\"Button\")\n", + " | \n", + " | Static - 'Iris:' (L-31985, T-31638, R-31968, B-31617)\n", + " | ['Static16', 'Iris:', 'Iris:Static']\n", + " | child_window(title=\"Iris:\", auto_id=\"1126\", control_type=\"Text\")\n", + " | \n", + " | Static - 'Focus:' (L-31869, T-31639, R-31836, B-31616)\n", + " | ['Static17', 'Focus:', 'Focus:Static']\n", + " | child_window(title=\"Focus:\", auto_id=\"1120\", control_type=\"Text\")\n", + " | \n", + " | GroupBox - 'Lens Control' (L-31991, T-31670, R-31659, B-31610)\n", + " | ['Lens ControlGroupBox', 'GroupBox4', 'Lens Control']\n", + " | child_window(title=\"Lens Control\", auto_id=\"1125\", control_type=\"Group\")\n", + " | \n", + " | CheckBox - 'Active' (L-31722, T-31659, R-31668, B-31643)\n", + " | ['CheckBox9', 'Active', 'ActiveCheckBox']\n", + " | child_window(title=\"Active\", auto_id=\"1122\", control_type=\"CheckBox\")\n", + " | \n", + " | Slider - '' (L-31910, T-31743, R-31725, B-31728)\n", + " | ['Slider2', 'Gain (x):Slider']\n", + " | child_window(auto_id=\"1006\", control_type=\"Slider\")\n", + " | | \n", + " | | Thumb - 'Position' (L-31905, T-31741, R-31900, B-31732)\n", + " | | ['Thumb2', 'Position2', 'PositionThumb2']\n", + " | | child_window(title=\"Position\", control_type=\"Thumb\")\n", + " | | \n", + " | | Button - 'Page right' (L-31900, T-31739, R-31730, B-31735)\n", + " | | ['Page right2', 'Page rightButton2', 'Button19']\n", + " | | child_window(title=\"Page right\", control_type=\"Button\")\n", + " | \n", + " | Edit - '' (L-31781, T-31727, R-31731, B-31707)\n", + " | ['Gain (x):Edit', 'Edit8']\n", + " | child_window(auto_id=\"1133\", control_type=\"Edit\")\n", + " | \n", + " | Edit - '' (L-31781, T-31766, R-31731, B-31746)\n", + " | ['TapsEdit', 'Edit9']\n", + " | child_window(auto_id=\"1136\", control_type=\"Edit\")\n", + " | \n", + " | Edit - '' (L-31833, T-31639, R-31776, B-31618)\n", + " | ['Focus:Edit3', 'Edit10']\n", + " | child_window(auto_id=\"1043\", control_type=\"Edit\")\n", + " | \n", + " | CheckBox - 'Auto Focus' (L-31743, T-31641, R-31668, B-31617)\n", + " | ['CheckBox10', 'Auto Focus', 'Auto FocusCheckBox']\n", + " | child_window(title=\"Auto Focus\", auto_id=\"1139\", control_type=\"CheckBox\")\n", + " | \n", + " | Button - 'Start Preview' (L-31982, T-31888, R-31907, B-31864)\n", + " | ['Start Preview', 'Start PreviewButton', 'Button20']\n", + " | child_window(title=\"Start Preview\", auto_id=\"1000\", control_type=\"Button\")\n", + " | \n", + " | TitleBar - '' (L-31981, T-31997, R-31843, B-31974)\n", + " | ['4', 'TitleBar']\n", + " | | \n", + " | | Menu - 'System' (L-31992, T-31992, R-31970, B-31970)\n", + " | | ['Menu', 'SystemMenu', 'System', 'System0', 'System1', 'Menu0', 'Menu1']\n", + " | | child_window(title=\"System\", control_type=\"MenuBar\")\n", + " | | | \n", + " | | | MenuItem - 'System' (L-31992, T-31992, R-31970, B-31970)\n", + " | | | ['SystemMenuItem', 'System2', 'MenuItem', 'MenuItem0', 'MenuItem1']\n", + " | | | child_window(title=\"System\", control_type=\"MenuItem\")\n", + " | | \n", + " | | Button - 'Restore' (L-31942, T-32004, R-31914, B-31983)\n", + " | | ['Restore', 'RestoreButton', 'Button21']\n", + " | | child_window(title=\"Restore\", control_type=\"Button\")\n", + " | | \n", + " | | Button - 'Maximize' (L-31914, T-32004, R-31888, B-31983)\n", + " | | ['MaximizeButton', 'Maximize', 'Button22']\n", + " | | child_window(title=\"Maximize\", control_type=\"Button\")\n", + " | | \n", + " | | Button - 'Close' (L-31888, T-32004, R-31841, B-31983)\n", + " | | ['Close', 'CloseButton', 'Button23']\n", + " | | child_window(title=\"Close\", control_type=\"Button\")\n", + " | \n", + " | Menu - 'Application' (L-31992, T-31992, R-31648, B-31973)\n", + " | ['Menu2', 'Application', 'ApplicationMenu']\n", + " | child_window(title=\"Application\", control_type=\"MenuBar\")\n", + " | | \n", + " | | MenuItem - 'File' (L-31997, T-31974, R-31965, B-31955)\n", + " | | ['File', 'FileMenuItem', 'MenuItem2']\n", + " | | child_window(title=\"File\", control_type=\"MenuItem\")\n", + " | | \n", + " | | MenuItem - 'View' (L-31965, T-31974, R-31926, B-31955)\n", + " | | ['View', 'ViewMenuItem', 'MenuItem3']\n", + " | | child_window(title=\"View\", control_type=\"MenuItem\")\n", + " | | \n", + " | | MenuItem - 'Options' (L-31926, T-31974, R-31870, B-31955)\n", + " | | ['Options', 'OptionsMenuItem', 'MenuItem4']\n", + " | | child_window(title=\"Options\", control_type=\"MenuItem\")\n", + " | | \n", + " | | MenuItem - 'Help' (L-31870, T-31974, R-31831, B-31955)\n", + " | | ['HelpMenuItem', 'Help', 'MenuItem5']\n", + " | | child_window(title=\"Help\", control_type=\"MenuItem\")\n" + ] + } + ], + "source": [ + "main_dlg.print_control_identifiers()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "from pywinauto.application import Application\n", + "app = Application(backend=\"uia\").connect(title_re=\".*Untitled - Notepad*\")\n", + "main_dlg = app.window(title='Untitled - Notepad')" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Control Identifiers:\n", + "\n", + "Dialog - 'Untitled - Notepad' (L355, T128, R1097, B652)\n", + "['Dialog', 'Untitled - NotepadDialog', 'Untitled - Notepad']\n", + "child_window(title=\"Untitled - Notepad\", control_type=\"Window\")\n", + " | \n", + " | Edit - '' (L363, T179, R1089, B621)\n", + " | ['', 'Edit', '0', '1', 'Edit0', 'Edit1']\n", + " | child_window(auto_id=\"15\", control_type=\"Edit\")\n", + " | | \n", + " | | ScrollBar - 'Vertical' (L1070, T181, R1087, B602)\n", + " | | ['Vertical', 'VerticalScrollBar', 'ScrollBar', 'ScrollBar0', 'ScrollBar1']\n", + " | | child_window(title=\"Vertical\", auto_id=\"NonClientVerticalScrollBar\", control_type=\"ScrollBar\")\n", + " | | | \n", + " | | | Button - 'Line up' (L1070, T181, R1087, B198)\n", + " | | | ['Line upButton', 'Line up', 'Button', 'Button0', 'Button1']\n", + " | | | child_window(title=\"Line up\", auto_id=\"UpButton\", control_type=\"Button\")\n", + " | | | \n", + " | | | Button - 'Line down' (L1070, T585, R1087, B602)\n", + " | | | ['Line down', 'Line downButton', 'Button2']\n", + " | | | child_window(title=\"Line down\", auto_id=\"DownButton\", control_type=\"Button\")\n", + " | | \n", + " | | ScrollBar - 'Horizontal' (L365, T602, R1070, B619)\n", + " | | ['HorizontalScrollBar', 'Horizontal', 'ScrollBar2']\n", + " | | child_window(title=\"Horizontal\", auto_id=\"NonClientHorizontalScrollBar\", control_type=\"ScrollBar\")\n", + " | | | \n", + " | | | Button - 'Column left' (L365, T602, R382, B619)\n", + " | | | ['Column left', 'Column leftButton', 'Button3']\n", + " | | | child_window(title=\"Column left\", auto_id=\"UpButton\", control_type=\"Button\")\n", + " | | | \n", + " | | | Button - 'Column right' (L1053, T602, R1070, B619)\n", + " | | | ['Column right', 'Column rightButton', 'Button4']\n", + " | | | child_window(title=\"Column right\", auto_id=\"DownButton\", control_type=\"Button\")\n", + " | | \n", + " | | Thumb - '' (L1070, T602, R1087, B619)\n", + " | | ['2', 'Thumb']\n", + " | \n", + " | StatusBar - '' (L363, T621, R1089, B644)\n", + " | ['StatusBar', ' Ln 1, Col 1 StatusBar']\n", + " | child_window(auto_id=\"1025\", control_type=\"StatusBar\")\n", + " | | \n", + " | | Static - '' (L363, T623, R907, B644)\n", + " | | ['Static', '3', 'Static0', 'Static1']\n", + " | | \n", + " | | Static - ' Ln 1, Col 1 ' (L909, T623, R1073, B644)\n", + " | | ['Static2', ' Ln 1, Col 1 Static', ' Ln 1, Col 1 ']\n", + " | | child_window(title=\" Ln 1, Col 1 \", control_type=\"Text\")\n", + " | \n", + " | TitleBar - '' (L379, T131, R1089, B159)\n", + " | ['4', 'TitleBar']\n", + " | | \n", + " | | Menu - 'System' (L363, T136, R385, B158)\n", + " | | ['Menu', 'SystemMenu', 'System', 'System0', 'System1', 'Menu0', 'Menu1']\n", + " | | child_window(title=\"System\", auto_id=\"MenuBar\", control_type=\"MenuBar\")\n", + " | | | \n", + " | | | MenuItem - 'System' (L363, T136, R385, B158)\n", + " | | | ['SystemMenuItem', 'System2', 'MenuItem', 'MenuItem0', 'MenuItem1']\n", + " | | | child_window(title=\"System\", control_type=\"MenuItem\")\n", + " | | \n", + " | | Button - 'Minimize' (L990, T129, R1018, B150)\n", + " | | ['Minimize', 'MinimizeButton', 'Button5']\n", + " | | child_window(title=\"Minimize\", control_type=\"Button\")\n", + " | | \n", + " | | Button - 'Maximize' (L1018, T129, R1044, B150)\n", + " | | ['MaximizeButton', 'Maximize', 'Button6']\n", + " | | child_window(title=\"Maximize\", control_type=\"Button\")\n", + " | | \n", + " | | Button - 'Close' (L1044, T129, R1091, B150)\n", + " | | ['Close', 'CloseButton', 'Button7']\n", + " | | child_window(title=\"Close\", control_type=\"Button\")\n", + " | \n", + " | Menu - 'Application' (L363, T159, R1089, B178)\n", + " | ['Menu2', 'Application', 'ApplicationMenu']\n", + " | child_window(title=\"Application\", auto_id=\"MenuBar\", control_type=\"MenuBar\")\n", + " | | \n", + " | | MenuItem - 'File' (L363, T159, R395, B178)\n", + " | | ['File', 'FileMenuItem', 'MenuItem2']\n", + " | | child_window(title=\"File\", control_type=\"MenuItem\")\n", + " | | \n", + " | | MenuItem - 'Edit' (L395, T159, R429, B178)\n", + " | | ['Edit2', 'EditMenuItem', 'MenuItem3']\n", + " | | child_window(title=\"Edit\", control_type=\"MenuItem\")\n", + " | | \n", + " | | MenuItem - 'Format' (L429, T159, R481, B178)\n", + " | | ['FormatMenuItem', 'Format', 'MenuItem4']\n", + " | | child_window(title=\"Format\", control_type=\"MenuItem\")\n", + " | | \n", + " | | MenuItem - 'View' (L481, T159, R520, B178)\n", + " | | ['View', 'ViewMenuItem', 'MenuItem5']\n", + " | | child_window(title=\"View\", control_type=\"MenuItem\")\n", + " | | \n", + " | | MenuItem - 'Help' (L520, T159, R559, B178)\n", + " | | ['HelpMenuItem', 'Help', 'MenuItem6']\n", + " | | child_window(title=\"Help\", control_type=\"MenuItem\")\n" + ] + } + ], + "source": [ + "main_dlg.print_control_identifiers()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/makingconformancereport.ipynb b/makingconformancereport.ipynb new file mode 100644 index 0000000..35388ff --- /dev/null +++ b/makingconformancereport.ipynb @@ -0,0 +1,846 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Sl.No. Parameters \\\n", + "0 * * \n", + "1 1 Machanical Dimensions \n", + "2 1.1 Width x Height \n", + "3 * * \n", + "4 1.2 Weight(grams) \n", + "5 2 Bias compensation \n", + "6 2.1 Volatage difference between U1 & U2 \n", + "7 3 Polarity \n", + "8 3.1 +1g \n", + "9 3.2 -1g \n", + "10 4 Performance Parameters \n", + "11 4.1 SF(at+42.5degreeCentigrage) \n", + "12 4.2 SF Temp.Coefficient \n", + "13 4.3 SF Histeresis \n", + "14 4.4 SF Day to Day stability \n", + "15 4.5 SF stability(In run) \n", + "16 4.6 Bias \n", + "17 4.7 Bias Temp.Coefficient \n", + "18 4.8 Bias Hysteresis \n", + "19 4.9 Bias Day to Day Stability \n", + "20 4.10 Bias Stability(In run) \n", + "21 4.11 Misalignment \n", + "22 4.12 Axis Misalignment Stability (Day to Day) \n", + "23 4.13 Bandwidth \n", + "24 * * \n", + "\n", + " * Test Result Value \\\n", + "0 Specified Measured \n", + "1 * * \n", + "2 Width:36±1 mm 36 \n", + "3 Height:26±1 mm 27 \n", + "4 <80 76 \n", + "5 * * \n", + "6 <=3.5 -7microVolts \n", + "7 * * \n", + "8 -0.34V to -0.46V -0.369366V \n", + "9 +0.34 to +0.46 0.369373V \n", + "10 * * \n", + "11 2.0 mA/g±15% 1.89 \n", + "12 200 ppm/degreeCentigrade(max) 9.61 \n", + "13 100 ppm(max) 3.44 \n", + "14 100 ppm(max) 3.44 \n", + "15 30 ppm(max) 1.58 \n", + "16 4000 microGrams(max) 244.48 \n", + "17 30 microGrams/degreeCentigrade(max) 10.62 \n", + "18 225 microGrams 60.97 \n", + "19 100microGrams(max) 14.25 \n", + "20 30 microGrams(max) 2.63 \n", + "21 ±600 142.76 \n", + "22 15'' 6.14 \n", + "23 >250 Hz Gain(Hz)-3dB_1020(Hz) \n", + "24 * Phase(deg)90degrees_623.4(Hz) \n", + "\n", + " Remarks \n", + "0 * \n", + "1 * \n", + "2 * \n", + "3 * \n", + "4 * \n", + "5 * \n", + "6 R_Bias=15Kohms \n", + "7 * \n", + "8 * \n", + "9 * \n", + "10 * \n", + "11 * \n", + "12 * \n", + "13 * \n", + "14 * \n", + "15 * \n", + "16 * \n", + "17 * \n", + "18 * \n", + "19 * \n", + "20 * \n", + "21 * \n", + "22 * \n", + "23 * \n", + "24 * \n" + ] + } + ], + "source": [ + "import pandas as pd \n", + "# Read data from file 'filename.csv' \n", + "# (in the same directory that your python process is based)\n", + "# Control delimiters, rows, column names with read_csv (see later) \n", + "data = pd.read_csv(\"C:\\\\Users\\\\Madhu\\\\Desktop\\\\fp1\\\\sample1.csv\") \n", + "# Preview the first 5 lines of the loaded data \n", + "print(data)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a = df.shape[0] + 1\n", + " 26 \n", + "===================================================\n", + "b = df.shape[1]\n", + " 5 \n", + "=======================================================\n", + "c = df.shape[-1]\n", + " 5 \n", + "======================================================\n", + "d = df.columns[1] Parameters \n", + "=======================================================\n", + "e = df.values[1,2]\n", + " Parameters \n", + "====================================================\n", + "i values:\n", + "0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 \n", + "\n", + "j values:\n", + "0 1 2 3 4 \n", + "\n", + "Height:26±1 mm\n" + ] + } + ], + "source": [ + "df = pd.DataFrame(data)\n", + "a = df.shape[0] + 1\n", + "# add_table(df.shape[0]+1, df.shape[1])\n", + "# this table is reading (no.of.rows,no.of.columns)\n", + "print(\"a = df.shape[0] + 1\\n\",a,\"\\n===================================================\")\n", + "b = df.shape[1]\n", + "print(\"b = df.shape[1]\\n\",b,\"\\n=======================================================\")\n", + "c = df.shape[-1]\n", + "print(\"c = df.shape[-1]\\n\",c,\"\\n======================================================\")\n", + "d = df.columns[1]\n", + "# df.columns will print the ele of the dataframe\n", + "## DataFrame.columns , the column labels of the DataFrame.\n", + "print(\"d = df.columns[1]\",d,\"\\n=======================================================\")\n", + "e = df.values[1,2]\n", + "#df.values[row no of the ele , column no of the ele]\n", + "print(\"e = df.values[1,2]\\n\",d,\"\\n====================================================\")\n", + "print('i values:')\n", + "for i in range(df.shape[0]): #len of the rows\n", + " print(i,end = ' ')\n", + "print('\\n')\n", + "print('j values:')\n", + "for j in range(df.shape[-1]):\n", + " print(j,end = ' ')\n", + "print('\\n')\n", + "\n", + "print(df.values[3,2])\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "------------------------------------------\n" + ] + } + ], + "source": [ + "import docx\n", + "import pandas as pd\n", + "\n", + "# i am not sure how you are getting your data, but you said it is a\n", + "# pandas data frame\n", + "df = pd.DataFrame(data)\n", + "\n", + "# open an existing document\n", + "doc = docx.Document()\n", + "\n", + "# add a table to the end and create a reference variable\n", + "# extra row is so we can add the header row\n", + "table = doc.add_table(df.shape[0]+1, df.shape[1])\n", + "print(table)\n", + "print('------------------------------------------')\n", + "\n", + "# add the header rows.\n", + "for j in range(df.shape[-1]):\n", + " if df.columns[j] == '*':\n", + " pass\n", + " else:\n", + " table.cell(0,j).text = df.columns[j]\n", + "\n", + "# add the rest of the data frame\n", + "for i in range(df.shape[0]):\n", + " for j in range(df.shape[-1]):\n", + " if df.values[i,j] == '*':\n", + " pass\n", + " else:\n", + " table.cell(i+1,j).text = str(df.values[i,j])\n", + "\n", + " #table.cell(i+1,j).text = str(df.values[i,j])\n", + "\"\"\"\n", + "text:\n", + "The entire contents of this cell as a string of text.\n", + "Assigning a string to this property replaces all existing\n", + "content with a single paragraph containing the assigned text in a single run.\n", + "\n", + " def cell(self, row_idx, col_idx):\n", + " \n", + " #Return |_Cell| instance correponding to table cell at *row_idx*,\n", + " #*col_idx* intersection, where (0, 0) is the top, left-most cell.\n", + " \n", + " cell_idx = col_idx + (row_idx * self._column_count)\n", + " return self._cells[cell_idx]\n", + "\"\"\"\n", + "\n", + "# save the doc\n", + "doc.save('C:/Users/Madhu/Desktop/fp1/a1.docx')" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "#excel1 = data.to_excel('C:\\\\Users\\\\Madhu\\\\Desktop\\\\fp1\\\\a1.xlsx')" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [], + "source": [ + "#!pip install python-docx" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "\"\\nimport sys\\n\\norig_stdout = sys.stdout\\nf = open('C:\\\\Users\\\\Madhu\\\\Desktop\\\\fp1\\\\a1.docx', 'w')\\nsys.stdout = f\\n\\nprint(table1)\\n\\nsys.stdout = orig_stdout\\nf.close()\\n\"" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\"\"\"\n", + "import sys\n", + "\n", + "orig_stdout = sys.stdout\n", + "f = open('C:\\\\Users\\\\Madhu\\\\Desktop\\\\fp1\\\\a1.docx', 'w')\n", + "sys.stdout = f\n", + "\n", + "print(table1)\n", + "\n", + "sys.stdout = orig_stdout\n", + "f.close()\n", + "\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "\"\\nimport sys\\n\\norig_stdout = sys.stdout\\nf = open('out.txt', 'w')\\nsys.stdout = f\\n\\nfor i in range(2):\\n print 'i = ', i\\n\\nsys.stdout = orig_stdout\\nf.close()\\n\"" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\"\"\"\n", + "import sys\n", + "\n", + "orig_stdout = sys.stdout\n", + "f = open('out.txt', 'w')\n", + "sys.stdout = f\n", + "\n", + "for i in range(2):\n", + " print 'i = ', i\n", + "\n", + "sys.stdout = orig_stdout\n", + "f.close()\n", + "\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "\"\\njson1 = pd.DataFrame.to_json(data)\\nimport json\\nfilename = 'C:\\\\Users\\\\Madhu\\\\Desktop\\\\fp1\\\\a1.json'\\nwith open(filename,'w') as f:\\n json.dump(json1,f)\\n\"" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\"\"\"\n", + "json1 = pd.DataFrame.to_json(data)\n", + "import json\n", + "filename = 'C:\\\\Users\\\\Madhu\\\\Desktop\\\\fp1\\\\a1.json'\n", + "with open(filename,'w') as f:\n", + " json.dump(json1,f)\n", + "\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#dict1 = pd.DataFrame.to_dict(data)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'\\nhttps://pandas.pydata.org/pandas-docs/version/0.25/\\n'" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\"\"\"\n", + "https://pandas.pydata.org/pandas-docs/version/0.25/\n", + "\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'\\nhttps://python-docx.readthedocs.io/en/latest/\\n'" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\"\"\"\n", + "https://python-docx.readthedocs.io/en/latest/\n", + "\"\"\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# add_table(df.shape[0]+1, df.shape[1])\n", + "## this table is reading (no.of.rows,no.of.columns)\n", + "------------------------------------------------\n", + "# df.columns will print the ele of the dataframe\n", + "## DataFrame.columns , the column labels of the DataFrame.\n", + "---------------------------------------------------\n", + "# df.values[row no of the ele , column no of the ele]\n", + "----------------------------------------------------------------\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Sl.No.ParametersTest Result SpecifiedTest Result MeasuredRemarks
01Machanical Dimensions***
11.1Width x HeightWidth:36±1 mm36*
2**Height:26±1 mm27*
31.2Weight(grams)<8076*
42Bias compensation***
\n", + "
" + ], + "text/plain": [ + " Sl.No. Parameters Test Result Specified Test Result Measured \\\n", + "0 1 Machanical Dimensions * * \n", + "1 1.1 Width x Height Width:36±1 mm 36 \n", + "2 * * Height:26±1 mm 27 \n", + "3 1.2 Weight(grams) <80 76 \n", + "4 2 Bias compensation * * \n", + "\n", + " Remarks \n", + "0 * \n", + "1 * \n", + "2 * \n", + "3 * \n", + "4 * " + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd \n", + "# Read data from file 'filename.csv' \n", + "# (in the same directory that your python process is based)\n", + "# Control delimiters, rows, column names with read_csv (see later) \n", + "data = pd.read_csv(\"sample1.csv\") \n", + "# Preview the first 5 lines of the loaded data \n", + "data.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "------------------------------------------\n", + "\n", + "------------------------------------------\n" + ] + } + ], + "source": [ + "import docx\n", + "import pandas as pd\n", + "from docx.shared import Cm, Inches,Length\n", + "\n", + "# i am not sure how you are getting your data, but you said it is a\n", + "# pandas data frame\n", + "#df = pd.DataFrame(data)\n", + "df = pd.read_csv(\"sample1.csv\")\n", + "# open an existing document\n", + "doc = docx.Document()\n", + "section = doc.sections[0]\n", + "header = section.header\n", + "footer = section.footer\n", + "header_p = header.paragraphs[0]\n", + "footer_p=footer.paragraphs[0]\n", + "header_p.text = \"EQA3/AT/QC/QCR/03\"\n", + "header_p.alignment = 2\n", + "header_p.bold= True\n", + "\n", + "footer_p.text=\"EQA3/AT/QC/QCR/03Revision: 00 Date:\"\n", + "footer_p.alignment = 1\n", + "footer_p.bold= True\n", + "\n", + "\n", + "doc.add_heading('QUALITY CONFORMANCE REPORT - ACCEPTANCE TESTS ', 1)\n", + "\n", + "\n", + "#project_p = doc.add_paragraph(\"Date:\")\n", + "#project_p.alignment = 1 # for left, 1 for right, 2 center, 3 justify ....\n", + "#project_p.bold = True\n", + "\n", + "\n", + "\n", + "date_p= doc.add_paragraph(\"PROJECT: EQA-3 \\t\\t\\t Date: \")\n", + "date_p.alignment = 1 # for left, 1 for right, 2 center, 3 justify ....\n", + "date_p.bold = True\n", + "\n", + "\n", + "# add a table to the end and create a reference variable\n", + "# extra row is so we can add the header row\n", + "table = doc.add_table(df.shape[0]+1, df.shape[1])\n", + "\n", + "\n", + "table.style = 'TableGrid' #single lines in all cells\n", + "table.autofit = False\n", + "\n", + "col = table.columns[0] \n", + "col.width=Inches(0.75)\n", + "cell=table.cell(1,1)\n", + "cell.width = Inches(2)\n", + "#col.width=Cm(1.0)\n", + "#col.width=360000 #=1cm\n", + "#for cell in table.cells:\n", + "# cell.width = Inches(1)\n", + "\n", + "\n", + "\n", + "\n", + "print(table)\n", + "print('------------------------------------------')\n", + "\n", + "# add the header rows.\n", + "for j in range(df.shape[-1]):\n", + " if df.columns[j] == '*':\n", + " pass\n", + " else:\n", + " table.cell(0,j).text = df.columns[j]\n", + "\n", + "# add the rest of the data frame\n", + "for i in range(df.shape[0]):\n", + " for j in range(df.shape[-1]):\n", + " if df.values[i,j] == '*':\n", + " pass\n", + " else:\n", + " table.cell(i+1,j).text = str(df.values[i,j])\n", + "\n", + " #table.cell(i+1,j).text = str(df.values[i,j])\n", + " \n", + "note_p= doc.add_paragraph(\"Note:**The test results are calculated from the data of ATLs’-14, 16, 17 and 20. \")\n", + "note_p.alignment = 1 # for left, 1 for right, 2 center, 3 justify ....\n", + "note_p.bold = True \n", + "\n", + "\n", + "doc.add_page_break()\n", + "\n", + "\n", + "\n", + "df = pd.read_csv(\"sample2.csv\")\n", + "table = doc.add_table(df.shape[0]+1, df.shape[1])\n", + "\n", + "\n", + "table.style = 'TableGrid' #single lines in all cells\n", + "table.autofit = False\n", + "\n", + "col = table.columns[0] \n", + "col.width=Inches(0.75)\n", + "cell=table.cell(1,1)\n", + "cell.width = Inches(2)\n", + "\n", + "print(table)\n", + "print('------------------------------------------')\n", + "\n", + "# add the header rows.\n", + "for j in range(df.shape[-1]):\n", + " if df.columns[j] == '*':\n", + " pass\n", + " else:\n", + " table.cell(0,j).text = df.columns[j]\n", + "\n", + "# add the rest of the data frame\n", + "for i in range(df.shape[0]):\n", + " for j in range(df.shape[-1]):\n", + " if df.values[i,j] == '*':\n", + " pass\n", + " else:\n", + " table.cell(i+1,j).text = str(df.values[i,j])\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\"\"\"\n", + "text:\n", + "The entire contents of this cell as a string of text.\n", + "Assigning a string to this property replaces all existing\n", + "content with a single paragraph containing the assigned text in a single run.\n", + "\n", + " def cell(self, row_idx, col_idx):\n", + " \n", + " #Return |_Cell| instance correponding to table cell at *row_idx*,\n", + " #*col_idx* intersection, where (0, 0) is the top, left-most cell.\n", + " \n", + " cell_idx = col_idx + (row_idx * self._column_count)\n", + " return self._cells[cell_idx]\n", + "\"\"\"\n", + "\n", + "# save the doc\n", + "doc.save('a3.docx')" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "+----+--------+------------------------------------------+-------------------------------------+-------------------------------+----------------+\n", + "| | Sl.No. | Parameters | Test Result Specified | Test Result Measured | Remarks |\n", + "+----+--------+------------------------------------------+-------------------------------------+-------------------------------+----------------+\n", + "| 0 | 1 | Machanical Dimensions | * | * | * |\n", + "| 1 | 1.1 | Width x Height | Width:36±1 mm | 36 | * |\n", + "| 2 | * | * | Height:26±1 mm | 27 | * |\n", + "| 3 | 1.2 | Weight(grams) | <80 | 76 | * |\n", + "| 4 | 2 | Bias compensation | * | * | * |\n", + "| 5 | 2.1 | Volatage difference between U1 & U2 | <=3.5 | -7microVolts | R_Bias=15Kohms |\n", + "| 6 | 3 | Polarity | * | * | * |\n", + "| 7 | 3.1 | +1g | -0.34V to -0.46V | -0.369366V | * |\n", + "| 8 | 3.2 | -1g | +0.34 to +0.46 | 0.369373V | * |\n", + "| 9 | 4 | Performance Parameters | * | * | * |\n", + "| 10 | 4.1 | SF(at+42.5degreeCentigrage) | 2.0 mA/g±15% | 1.89 | * |\n", + "| 11 | 4.2 | SF Temp.Coefficient | 200 ppm/degreeCentigrade(max) | 9.61 | * |\n", + "| 12 | 4.3 | SF Histeresis | 100 ppm(max) | 3.44 | * |\n", + "| 13 | 4.4 | SF Day to Day stability | 100 ppm(max) | 3.44 | * |\n", + "| 14 | 4.5 | SF stability(In run) | 30 ppm(max) | 1.58 | * |\n", + "| 15 | 4.6 | Bias | 4000 microGrams(max) | 244.48 | * |\n", + "| 16 | 4.7 | Bias Temp.Coefficient | 30 microGrams/degreeCentigrade(max) | 10.62 | * |\n", + "| 17 | 4.8 | Bias Hysteresis | 225 microGrams | 60.97 | * |\n", + "| 18 | 4.9 | Bias Day to Day Stability | 100microGrams(max) | 14.25 | * |\n", + "| 19 | 4.10 | Bias Stability(In run) | 30 microGrams(max) | 2.63 | * |\n", + "| 20 | 4.11 | Misalignment | ±600 | 142.76 | * |\n", + "| 21 | 4.12 | Axis Misalignment Stability (Day to Day) | 15'' | 6.14 | * |\n", + "| 22 | 4.13 | Bandwidth | >250 Hz | Gain(Hz)-3dB_1020(Hz) | * |\n", + "| 23 | * | * | * | Phase(deg)90degrees_623.4(Hz) | * |\n", + "+----+--------+------------------------------------------+-------------------------------------+-------------------------------+----------------+\n" + ] + } + ], + "source": [ + "from io import StringIO\n", + "import prettytable \n", + "\n", + "output = StringIO()\n", + "data.to_csv(output)\n", + "output.seek(0)\n", + "pt = prettytable.from_csv(output)\n", + "print (pt)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Sl.No. Parameters \\\n", + "0 1 Machanical Dimensions \n", + "1 1.1 Width x Height \n", + "2 * * \n", + "3 1.2 Weight(grams) \n", + "4 2 Bias compensation \n", + "5 2.1 Volatage difference between U1 & U2 \n", + "6 3 Polarity \n", + "7 3.1 +1g \n", + "8 3.2 -1g \n", + "9 4 Performance Parameters \n", + "10 4.1 SF(at+42.5degreeCentigrage) \n", + "11 4.2 SF Temp.Coefficient \n", + "12 4.3 SF Histeresis \n", + "13 4.4 SF Day to Day stability \n", + "14 4.5 SF stability(In run) \n", + "15 4.6 Bias \n", + "16 4.7 Bias Temp.Coefficient \n", + "17 4.8 Bias Hysteresis \n", + "18 4.9 Bias Day to Day Stability \n", + "19 4.10 Bias Stability(In run) \n", + "20 4.11 Misalignment \n", + "21 4.12 Axis Misalignment Stability (Day to Day) \n", + "22 4.13 Bandwidth \n", + "23 * * \n", + "\n", + " Test Result Specified Test Result Measured \\\n", + "0 * * \n", + "1 Width:36±1 mm 36 \n", + "2 Height:26±1 mm 27 \n", + "3 <80 76 \n", + "4 * * \n", + "5 <=3.5 -7microVolts \n", + "6 * * \n", + "7 -0.34V to -0.46V -0.369366V \n", + "8 +0.34 to +0.46 0.369373V \n", + "9 * * \n", + "10 2.0 mA/g±15% 1.89 \n", + "11 200 ppm/degreeCentigrade(max) 9.61 \n", + "12 100 ppm(max) 3.44 \n", + "13 100 ppm(max) 3.44 \n", + "14 30 ppm(max) 1.58 \n", + "15 4000 microGrams(max) 244.48 \n", + "16 30 microGrams/degreeCentigrade(max) 10.62 \n", + "17 225 microGrams 60.97 \n", + "18 100microGrams(max) 14.25 \n", + "19 30 microGrams(max) 2.63 \n", + "20 ±600 142.76 \n", + "21 15'' 6.14 \n", + "22 >250 Hz Gain(Hz)-3dB_1020(Hz) \n", + "23 * Phase(deg)90degrees_623.4(Hz) \n", + "\n", + " Remarks \n", + "0 * \n", + "1 * \n", + "2 * \n", + "3 * \n", + "4 * \n", + "5 R_Bias=15Kohms \n", + "6 * \n", + "7 * \n", + "8 * \n", + "9 * \n", + "10 * \n", + "11 * \n", + "12 * \n", + "13 * \n", + "14 * \n", + "15 * \n", + "16 * \n", + "17 * \n", + "18 * \n", + "19 * \n", + "20 * \n", + "21 * \n", + "22 * \n", + "23 * \n" + ] + } + ], + "source": [ + "print(data)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/materials_inside.ipynb b/materials_inside.ipynb new file mode 100644 index 0000000..67f2fcf --- /dev/null +++ b/materials_inside.ipynb @@ -0,0 +1,1566 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "4" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "2+2" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "x=\"sairam\"" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'Sairam'" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x.capitalize()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "9" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "3+6\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "% matplotlib inline\n", + "x = [1,2,3,4]\n", + "y = [1,4,9,16]\n", + "plt.plot(x, y, 'ro')\n", + "plt.axis([0, 6, 0, 20])\n", + "\n", + "for i_x, i_y in zip(x, y):\n", + " plt.text(i_x, i_y, '({}, {})'.format(i_x, i_y))\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "UsageError: Line magic function `%` not found.\n" + ] + } + ], + "source": [ + "% matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "6000" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "120*50\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "x = [1,2,3,4]\n", + "y = [1,4,9,16]\n", + "plt.plot(x, y, 'ro')\n", + "plt.axis([0, 6, 0, 20])\n", + "\n", + "for i_x, i_y in zip(x, y):\n", + " plt.text(i_x, i_y, '({}, {})'.format(i_x, i_y))\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "plt.rc('text', usetex=True)\n", + "\n", + "x = [1,2,3,4]\n", + "y = [1,4,9,16]\n", + "z=[1,8,27,64]\n", + "# Create Figure (empty canvas)\n", + "fig = plt.figure()\n", + "\n", + "# Add set of axes to figure\n", + "axes = fig.add_axes([0.1, 0.1, 0.9, 0.9]) # left, bottom, width, height (range 0 to 1)\n", + "\n", + "# Plot on that set of axes\n", + "axes.plot(x, y,color='purple',linewidth=2,alpha=1,linestyle='-',marker='o',markersize=7,\n", + " markerfacecolor='purple', markeredgewidth=3, markeredgecolor='purple')\n", + "axes.plot(x,z)\n", + "axes.set_xlabel('Set X Label') # Notice the use of set_ to begin methods \n", + "axes.set_ylabel('Set y Label')\n", + "axes.set_title('Set Title')\n", + "\n", + "# legend\n", + "plt.legend(('phase field', 'level set', 'sharp interface'),\n", + " shadow=True, loc=(0.01, 0.48), handlelength=1.5, fontsize=16)\n", + "\n", + "\n", + "fig.savefig(\"filename.png\", dpi=200)\n", + "\n", + "for i_x, i_y in zip(x, y):\n", + " plt.text(i_x+0.2, i_y-1, '({}, {})'.format(i_x, i_y))\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Enabled\n", + "Enabled and lets continue\n", + "First test completed\n" + ] + } + ], + "source": [ + "from selenium import webdriver\n", + "from selenium.webdriver.common.keys import Keys\n", + "import time\n", + "\n", + "#import http.client\n", + "#import pprint\n", + "#\n", + "#connection = http.client.HTTPSConnection(\"file:///D:/day2/allitems/friday_data/WebServerPort_again.json\")\n", + "#connection.request(\"GET\", \"/\")\n", + "#response = connection.getresponse()\n", + "#headers = response.getheaders()\n", + "#pp = pprint.PrettyPrinter(indent=4)\n", + "#pp.pprint(\"Headers: {}\".format(headers))\n", + "\n", + "\n", + "\n", + "\n", + "driver=webdriver.Chrome(\"C:\\\\Users\\\\sairamtvv\\\\Videos\\\\chromedriver_win32\\\\chromedriver.exe\")\n", + "\n", + "#Get the html of the site, basically ip address here.\n", + "driver.get(\"file:///D:/day2/allitems/friday_data/After_typing_rapid_X_0.54200.htm\")\n", + "time.sleep(0.5)\n", + "\n", + "\n", + "#Clicking two balls on the screen\n", + "driver.find_element_by_id(\"enableDisableAxis0\").click()\n", + "time.sleep(0.5)\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "#Clicking home button\n", + "\n", + "\n", + "\n", + "\n", + "#sending ENABLE X and pressing enter\n", + "imme_comm=driver.find_element_by_name(\"immediate-command-text\")\n", + "imme_comm.send_keys(\"ENABLE X\")\n", + "time.sleep(1)\n", + "imme_comm.send_keys(Keys.RETURN)\n", + "\n", + "time.sleep(0.2)\n", + "check_enable = driver.find_element_by_id('axis0Status')\n", + " # Find the value of org?\n", + "check_enabled = check_enable.find_element_by_tag_name('td')\n", + "print(check_enabled)\n", + "if check_enabled=='Enabled':\n", + " \n", + " print(\"Enabled and lets continue\")\n", + "\n", + "\n", + "print(\"First test completed\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "from openpyxl import load_workbook\n", + "import io\n", + "book = load_workbook('EQA3-31_(AS)_adj_param_p20.xlsx')\n", + "writer = pd.ExcelWriter('EQA3-31_(AS)_adj_param_p20.xlsx', engine='openpyxl')\n", + "#writer = pd.ExcelWriter('EQA3-31_(AS)_adj_param_m401.xlsx', engine='xlsxwriter')\n", + "a1 = pd.read_csv('test_panda_excel.txt',header=None)\n", + "a1.to_excel(writer, \"Sheetsai\", startcol=3,startrow=4,header=False, index=False)\n", + "writer.save()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0
02.044
12.017
21.920
31.992
41.953
\n", + "
" + ], + "text/plain": [ + " 0\n", + "0 2.044\n", + "1 2.017\n", + "2 1.920\n", + "3 1.992\n", + "4 1.953" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a1.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "a1.to_excel(writer, sheet_name='Sheet1',\n", + " startrow=4, startcol=3, header=False, index=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Volume in drive C has no label.\n", + " Volume Serial Number is B0E5-A41C\n", + "\n", + " Directory of C:\\Users\\sairamtvv\\Desktop\\Materials\\01 Course Introduction\\Python-for-Finance-Repo-master\n", + "\n", + "09/14/2019 11:42 PM .\n", + "09/14/2019 11:42 PM ..\n", + "08/16/2019 08:23 PM .ipynb_checkpoints\n", + "08/17/2019 02:09 AM 01-Python-Crash-Course\n", + "08/18/2019 06:46 PM 02-NumPy\n", + "08/20/2019 01:54 AM 03- General Pandas\n", + "08/16/2019 08:23 PM 04-Visualization-Matplotlib-Pandas\n", + "08/16/2019 08:23 PM 05-Pandas-with-Time-Series\n", + "08/16/2019 08:23 PM 06-Data-Sources\n", + "08/16/2019 08:23 PM 07-Stock-Market-Analysis-Capstone-Project\n", + "08/16/2019 08:23 PM 08-Time-Series-Analysis\n", + "08/16/2019 08:23 PM 09-Python-Finance-Fundamentals\n", + "08/16/2019 08:23 PM 10-Quantopian-Platform\n", + "08/16/2019 08:23 PM 11-Advanced-Quantopian-Topics\n", + "08/09/2017 01:30 PM 953 environment.yml\n", + "09/14/2019 11:26 PM 39,936 EQA3-31_(AS)_adj_param_m40.xls\n", + "09/14/2019 11:37 PM 49,830 EQA3-31_(AS)_adj_param_m40.xlsx\n", + "09/13/2019 02:28 PM 47,252 filename.png\n", + "08/02/2019 01:52 PM 1,938 maclinuxenvironment.yml\n", + "08/09/2017 01:30 PM 1,945 maclinuxenvironment.yml~\n", + "08/09/2017 01:30 PM 5,888 Pierian_Data_Logo.png\n", + "08/09/2017 01:30 PM 69 README.md\n", + "09/14/2019 11:22 PM 70 test_panda_excel.txt\n", + "09/14/2019 11:36 PM 46,257 Untitled.ipynb\n", + " 10 File(s) 194,138 bytes\n", + " 14 Dir(s) 37,492,125,696 bytes free\n" + ] + } + ], + "source": [ + "ls" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:5: DeprecationWarning: Call to deprecated function get_sheet_by_name (Use wb[sheetname]).\n", + " \"\"\"\n" + ] + } + ], + "source": [ + "import openpyxl\n", + "\n", + "srcfile = openpyxl.load_workbook('EQA3-31_(AS)_adj_param_p20.xlsx',read_only=False, keep_vba= True)#to open the excel sheet and if it has macros\n", + "\n", + "sheetname = srcfile.get_sheet_by_name('sheetsai')#get sheetname from the file\n", + "sheetname['C4']= 55.568 #write something in B2 cell of the supplied sheet\n", + "sheetname.cell(row=1,column=1).value = \"something\" #write to row 1,col 1 explicitly, this type of writing is useful to write something in loops\n", + "\n", + "srcfile.save('newfile.xlsm')#save it as a new file, the original file is untouched and here I am saving it as xlsm(m here denotes macros)." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
TsScaleBias12Misalign34Bias34
00.6769-0.193740-0.000057611.297878-0.000064
10.6319-0.1936310.000277615.0215080.000266
20.5786-0.1936030.000367615.5879090.000367
30.5272-0.1936900.000353617.2394650.000336
40.4767-0.1938810.000323617.8960900.000315
50.5272-0.1936740.000248614.2173270.000114
60.5786-0.1936130.000292613.7421530.000296
70.6319-0.1936300.000205613.4759360.000191
80.6769-0.193747-0.000025609.764880-0.000034
\n", + "
" + ], + "text/plain": [ + " Ts Scale Bias12 Misalign34 Bias34\n", + "0 0.6769 -0.193740 -0.000057 611.297878 -0.000064\n", + "1 0.6319 -0.193631 0.000277 615.021508 0.000266\n", + "2 0.5786 -0.193603 0.000367 615.587909 0.000367\n", + "3 0.5272 -0.193690 0.000353 617.239465 0.000336\n", + "4 0.4767 -0.193881 0.000323 617.896090 0.000315\n", + "5 0.5272 -0.193674 0.000248 614.217327 0.000114\n", + "6 0.5786 -0.193613 0.000292 613.742153 0.000296\n", + "7 0.6319 -0.193630 0.000205 613.475936 0.000191\n", + "8 0.6769 -0.193747 -0.000025 609.764880 -0.000034" + ] + }, + "execution_count": 58, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pdresult1" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
TsScaleBias12Misalign34Bias34
00.6769-0.193742-0.000057610.299264-0.000062
10.6319-0.1936310.000290613.6487770.000286
20.5786-0.1936050.000366615.9919070.000362
30.5272-0.1936910.000365618.3569830.000351
40.4767-0.1938800.000324618.3972920.000303
50.5272-0.1936730.000230612.4906670.000098
60.5786-0.1936120.000292613.8489650.000296
70.6319-0.1936300.000205613.0784470.000194
80.6769-0.193744-0.000001610.183054-0.000011
\n", + "
" + ], + "text/plain": [ + " Ts Scale Bias12 Misalign34 Bias34\n", + "0 0.6769 -0.193742 -0.000057 610.299264 -0.000062\n", + "1 0.6319 -0.193631 0.000290 613.648777 0.000286\n", + "2 0.5786 -0.193605 0.000366 615.991907 0.000362\n", + "3 0.5272 -0.193691 0.000365 618.356983 0.000351\n", + "4 0.4767 -0.193880 0.000324 618.397292 0.000303\n", + "5 0.5272 -0.193673 0.000230 612.490667 0.000098\n", + "6 0.5786 -0.193612 0.000292 613.848965 0.000296\n", + "7 0.6319 -0.193630 0.000205 613.078447 0.000194\n", + "8 0.6769 -0.193744 -0.000001 610.183054 -0.000011" + ] + }, + "execution_count": 59, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pdresult2" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[0.6769, 0.6319, 0.5786, 0.5272, 0.4767, 0.5272, 0.5786, 0.6319, 0.6769]" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "list(pdresult1['Ts'])" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%matplotlib inline\n", + "import pandas as pd\n", + "pdresult1 = pd.read_csv('RESULT1.DAT',delimiter= '\\s+')\n", + "pdresult2 = pd.read_csv('RESULT2.DAT',delimiter= '\\s+')\n", + "pdresult3 = pd.read_csv('RESULT3.DAT',delimiter= '\\s+')\n", + "import matplotlib.pyplot as plt\n", + "#plt.rc('text', usetex=True)\n", + "\n", + "x = list(pdresult1['Ts'])\n", + "y_list1 = list(pdresult1['Scale'])\n", + "y_list2 = list(pdresult2['Scale'])\n", + "y_list3 = list(pdresult3['Scale'])\n", + "\n", + "# Create Figure (empty canvas)\n", + "fig = plt.figure()\n", + "\n", + "# Add set of axes to figure\n", + "axes = fig.add_axes([0.1, 0.1, 1, 1]) # left, bottom, width, height (range 0 to 1)\n", + "\n", + "# Plot on that set of axes\n", + "axes.grid(True)\n", + "axes.plot(x, y_list1,color='red',linewidth=1,alpha=1,linestyle='-',marker='o',markersize=2,\n", + " markerfacecolor='red', markeredgewidth=3, markeredgecolor='red',label=\"x**2\")\n", + "\n", + "\n", + "axes.plot(x, y_list2,color='green',linewidth=1,alpha=1,linestyle='-',marker='s',markersize=2,\n", + " markerfacecolor='green', markeredgewidth=3, markeredgecolor='green',label=\"x**3\")\n", + "axes.plot(x, y_list3,color='blue',linewidth=1,alpha=1,linestyle='-',marker='s',markersize=2,\n", + " markerfacecolor='blue', markeredgewidth=3, markeredgecolor='blue',label=\"x**4\")\n", + "\n", + "#axes.plot(x,z)\n", + "axes.set_xlabel('Temp $^\\circ$ C') # Notice the use of set_ to begin methods \n", + "axes.set_ylabel('Scale, $mA(m/s^2)$')\n", + "#axes.set_title('Set Title')\n", + "axes.legend(loc=0)\n", + "# legend\n", + "#plt.legend(('phase field', 'level set', 'sharp interface'),\n", + "# shadow=True, loc=(0.01, 0.48), handlelength=1.5, fontsize=16)\n", + "\n", + "\n", + "#fig.savefig(\"filename.png\", dpi=200)\n", + "\n", + "locs, labels = plt.yticks() \n", + "for index,tuplexy in enumerate(zip(x, y_list1)):\n", + " i_x=tuplexy[0]\n", + " i_y=tuplexy[1]\n", + " #print(\"{},{},{}\".format(index,i_x, i_y))\n", + " label='{1:.7f}[{0}]'.format(index+1, i_y)\n", + " #plt.text(i_x, i_y,string )\n", + " plt.annotate(label, # this is the text\n", + " (i_x,i_y), # this is the point to label\n", + " textcoords=\"offset points\", # how to position the text\n", + " xytext=(0,-2*index+20), # distance from text to points (x,y)\n", + " ha='center',color='red') # horizontal alignment can be left, right or center\n", + " \n", + " \n", + "for index,tuplexy in enumerate(zip(x, y_list2)):\n", + " i_x=tuplexy[0]\n", + " i_y=tuplexy[1]\n", + " #print(\"{},{},{}\".format(index,i_x, i_y))\n", + " label='{1:.7f}[{0}]'.format(index+1, i_y)\n", + " #plt.text(i_x, i_y,string )\n", + " plt.annotate(label, # this is the text\n", + " (i_x,i_y), # this is the point to label\n", + " textcoords=\"offset points\", # how to position the text\n", + " xytext=(0,-3*index-20), # distance from text to points (x,y)\n", + " ha='center',color='green') # horizontal alignment can be left, right or center \n", + "\n", + "for index,tuplexy in enumerate(zip(x, y_list3)):\n", + " i_x=tuplexy[0]\n", + " i_y=tuplexy[1]\n", + " #print(\"{},{},{}\".format(index,i_x, i_y))\n", + " label='{1:.7f}[{0}]'.format(index+1, i_y)\n", + " #plt.text(i_x, i_y,string )\n", + " plt.annotate(label, # this is the text\n", + " (i_x,i_y), # this is the point to label\n", + " textcoords=\"offset points\", # how to position the text\n", + " xytext=(0,-3*index-60), # distance from text to points (x,y)\n", + " ha='center',color='blue') # horizontal alignment can be left, right or center \n", + " \n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0, -0.19390000000000002, '−0.19390')" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "list(labels)[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "metadata": {}, + "outputs": [ + { + "ename": "AttributeError", + "evalue": "'Axes' object has no attribute 'yticks'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mlocs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlabels\u001b[0m \u001b[1;33m=\u001b[0m\u001b[0maxes\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0myticks\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mAttributeError\u001b[0m: 'Axes' object has no attribute 'yticks'" + ] + } + ], + "source": [ + "locs, labels =axes.yticks()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[(0, (1, 4)), (1, (2, 5)), (2, (3, 6))]" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x=[1,2,3]\n", + "y=[4,5,6]\n", + "list(enumerate(zip(x,y)))" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABC4AAAU+CAYAAAC2jnWJAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nOzd740dxZ6A4V+tCMDyzWDIwEAGOAP7ZrDXGYCIAJkMrBsBa2dgMrjgDJgMFjmD2g/uYQ/DzDD+A35tnkcaqc+p6j49X19Vda+99wAAAAAU/df7vgEAAACA6wgXAAAAQJZwAQAAAGQJFwAAAECWcAEAAABkCRcAAADAzMystZ6cHD9daz1faz2+bu4x58lV45fm3jvmPl1r3Vlrna21vrrNPQkXAAAAwKy1HszM8+P4XzPz7d77/sycrbXuXZp7b2Ye770fzszdy+NX+Pfe++Hx93LvfX5ynRsJFwAAAMDMzKO997Pj+Ie994vj+PnMfH46ce/94iI+zMzZzJzPNY4g8v0VQ89m5tEf3ZRwAQAAAPzGSZSYmflsZn68POfY/vHzzHy/9355w+W+mJlPL7aeXPqNz68/7RXhAgAAAP7m1lpXrpo4tnLcPVl98avju89m5v5x/k1eHttKnq+1vnydexMuAAAAgDuXv1hr3ZlX20ceXnfSsdLi6cw8uOHaP8/x7Ix5FUdOn2vxyx/dmHABAAAAnM/M3UvfPd57X/kMirXWgyNszLxadXHtMy7m1TaT+8fx5ZUdl3/zd4QLAAAA+Js7Vk78uurieFXpl2utn46/B8f3FysnfpiZf6+1nh7nP7s0fnrtFydjn548APRWPnmD/wcAAAD4iO29v5uZ764YenGMv5yZq7aQ/O5ZGMf8ry9/d6zYuGmlxsxYcQEAAAC88uRiZcUNrnqt6euMn/pmZr79o0nCBQAAAHCx3eP+ybMrrppz5YqK245fuHgLyW3mr733ba4JAAAA8Jez4gIAAADIEi4AAACALOECAAAAyBIuAAAAgCzhAgAAAMgSLgAAAIAs4QIAAADIEi4AAACALOECAAAAyBIuAAAAgCzhAgAAAMgSLgAAAIAs4QIAAADIEi4AAACALOECAAAAyBIuAAAAgCzhAgAAAMgSLgAAAIAs4QIAAADIEi4AAACALOECAAAAyBIuAAAAgCzhAgAAAMgSLgAAAIAs4QIAAADIEi4AAACALOECAAAAyBIuAAAAgCzhAgAAAMgSLgAAAIAs4QIAAADIEi4AAACALOECAAAAyBIuAAAAgCzhAgAAAMgSLgAAAIAs4QIAAADIEi4AAACALOECAAAAyBIuAAAAgCzhAgAAAMgSLgAAAIAs4QIAAADIEi4AAACALOECAAAAyBIuAAAAgCzhAgAAAMgSLgAAAIAs4QIAAADIEi4AAACALOECAAAAyBIuAAAAgCzhAgAAAMgSLgAAAIAs4QIAAADIEi4AAACALOECAAAAyBIuAAAAgCzhAgAAAMgSLgAAAIAs4QIAAADIEi4AAACALOECAAAAyBIuAAAAgCzhAgAAAMgSLgAAAIAs4QIAAADIEi4AAACALOECAAAAyBIuAAAAgCzhAgAAAMgSLgAAAIAs4QIAAADIEi4AAACALOECAAAAyBIuAAAAgCzhAgAAAMgSLgAAAIAs4QIAAADIEi4AAACALOECAAAAyBIuAAAAgCzhAgAAAMgSLgAAAIAs4QIAAADIEi4AAACALOECAAAAyBIuAAAAgCzhAgAAAMgSLgAAAIAs4QIAAADIEi4AAACALOECAAAAyBIuAAAAgCzhAgAAAMgSLgAAAIAs4QIAAADIEi4AAACALOECAAAAyBIuAAAAgCzhAgAAAMgSLgAAAIAs4QIAAADIEi4AAACALOECAAAAyBIuAAAAgCzhAgAAAMgSLgAAAIAs4QIAAADIEi4AAACALOECAAAAyBIuAAAAgCzhAgAAAMgSLgAAAIAs4QIAAADIEi4AAACALOECAAAAyBIuAAAAgCzhAgAAAMgSLgAAAIAs4QIAAADIEi4AAACALOECAAAAyBIuAAAAgCzhAgAAAMgSLgAAAIAs4QIAAADIEi4AAACALOECAAAAyBIuAAAAgCzhAgAAAMgSLgAAAIAs4QIAAADIEi4AAACALOECAAAAyBIuAAAAgCzhAgAAAMgSLgAAAIAs4QIAAADIEi4AAACALOECAAAAyBIuAAAAgCzhAgAAAMgSLgAAAIAs4QIAAADIEi4AAACALOECAAAAyBIuAAAAgCzhAgAAAMgSLgAAAIAs4QIAAADIEi4AAACALOECAAAAyBIuAAAAgCzhAgAAAMgSLgAAAIAs4QIAAADIEi4AAACALOECAAAAyBIuAAAAgCzhAgAAAMgSLgAAAIAs4QIAAADIEi4AAACALOECAAAAyBIuAAAAgCzhAgAAAMgSLgAAAIAs4QIAAADIEi4AAACALOECAAAAyBIuAAAAgCzhAgAAAMgSLgAAAIAs4QIAAADIEi4AAACALOECAAAAyBIuAAAAgCzhAgAAAMgSLgAAAIAs4QIAAADIEi4AAACALOECAAAAyBIuAAAAgCzhAgAAAMgSLgAAAIAs4QIAAADIEi4AAACALOECAAAAyBIuAAAAgCzhAgAAAMgSLgAAAIAs4QIAAADIEi4AAACALOECAAAAyBIuAAAAgCzhAgAAAMgSLgAAAIAs4QIAAADIEi4AAACALOECAAAAyBIuAAAAgCzhAgAAAMgSLgAAAIAs4QIAAADIEi4AAACALOECAICP1lrryU2fL409XWs9X2s9foPfOVtrffUm9wjAzYQLAAA+SmutBzPz/Di+c0SLf14z918z8+3e+/7MnK217t1w3bO11k9H5Hi+1rqz9z4/xq49D4A3I1wAAPCxerT3fjYzs/d+ufd+NDPn18z9Ye/94jh+PjOf33DdO8f8+8ffy+P7ZzPz6F3cOAD/T7gAAOBv72LFxOGzmfnxD055cGwt+XXryXGNm4IHAG9AuAAA4KOz1jqb61dX3HTevZm5e7L64irnM/P13vvhzNxda335hrcJwC188r5vAAAA/gR3XveEtdadebW95OFN846tIc+Oj/+ZmbOT4V9e93cBuJkVFwAAfIzOZ+bua57z+HgOxo0urbD4Yn67reR1fxOAPyBcAADw0TlWRfxm1cVa6+m8emPI02Mryay1Lt468tXMfHm8LeSn440kv45fcn7x6tSZOf+DbSUAvCVbRQAA+Fu4ZgvIi2Psu5n57rrxS9c5n5nfXevYavLaz9UA4GZWXAAA8LF6crFy4gbfv+X4qW9m5tvXmA/ALQgXAAB8lPbez2bm/rES4ro5N27zuO02kIutJ7aNALx7a+/9vu8BAAAA4EpWXAAAAABZwgUAAACQJVwAAAAAWcIFAAAAkCVcAAAAAFnCBQAAAJAlXAAAAABZwgUAAACQJVwAAAAAWcIFAAAAkCVcAAAAAFnCBQAAAJAlXAAAAABZwgUAAACQJVwAAAAAWcIFAAAAkCVcAAAAAFnCBQAAAJAlXAAAAABZwgUAAACQJVwAAAAAWcIFAAAAkCVcAAAAAFnCBQAAAJAlXAAAAABZwgUAAACQJVwAAAAAWcIFAAAAkCVcAAAAAFnCBQAAAJAlXAAAAABZwgUAAACQJVwAAAAAWcIFAAAAkCVcAAAAAFnCBQAAAJAlXAAAAABZwgUAAACQJVwAAAAAWcIFAAAAkCVcAAAAAFnCBQAAAJAlXAAAAABZwgUAAACQJVwAAAAAWcIFAAAAkCVcAAAAAFnCBQAAAJAlXAAAAABZwgUAAACQJVwAAAAAWcIFAAAAkCVcAAAAAFnCBQAAAJAlXAAAAABZwgUAAACQJVwAAAAAWcIFAAAAkCVcAAAAAFnCBQAAAJAlXAAAAABZwgUAAACQJVwAAAAAWcIFAAAAkCVcAAAAAFnCBQAAAJAlXAAAAABZwgUAAACQJVwAAAAAWcIFAAAAkCVcAAAAAFnCBQAAAJAlXAAAAABZwgUAAACQJVwAAAAAWcIFAAAAkCVcAAAAAFnCBQAAAJAlXAAAAABZwgUAAACQJVwAAAAAWcIFAAAAkCVcAAAAAFnCBQAAAJAlXAAAAABZwgUAAACQJVwAAAAAWcIFAAAAkCVcAAAAAFnCBQAAAJAlXAAAAABZwgUAAACQJVwAAAAAWcIFAAAAkCVcAAAAAFnCBQAAAJAlXAAAAABZwgUAAACQJVwAAAAAWcIFAAAAkCVcAAAAAFnCBQAAAJAlXAAAAABZwgUAAACQJVwAAAAAWcIFAAAAkCVcAAAAAFnCBQAAAJAlXAAAAABZwgUAAACQJVwAAAAAWcIFAAAAkCVcAAAAAFnCBQAAAJAlXAAAAABZwgUAAACQJVwAAAAAWcIFAAAAkCVcAAAAAFnCBQAAAJAlXAAAAABZwgUAAACQJVwAAAAAWcIFAAAAkCVcAAAAAFnCBQAAAJAlXAAAAABZwgUAAACQJVwAAAAAWcIFAAAAkCVcAAAAAFnCBQAAAJAlXAAAAABZwgUAAACQJVwAAAAAWcIFAAAAkCVcAAAAAFnCBQAAAJAlXAAAAABZwgUAAACQJVwAAAAAWcIFAAAAkCVcAAAAAFnCBQAAAJAlXAAAAABZwgUAAACQJVwAAAAAWcIFAAAAkCVcAAAAAFnCBQAAAJAlXAAAAABZwgUAAACQJVwAAAAAWcIFAAAAkCVcAAAAAFnCBQAAAJAlXAAAAABZwgUAAACQJVwAAAAAWcIFAAAAkCVcAAAAAFnCBQAAAJAlXAAAAABZwgUAAACQJVwAAAAAWcIFAAAAkCVcAAAAAFnCBQAAAJAlXAAAAABZwgUAAACQJVwAAAAAWcIFAAAAkCVcAAAAAFnCBQAAAJAlXAAAAABZwgUAAACQJVwAAAAAWcIFAAAAkCVcAAAAAFnCBQAAAJAlXAAAAABZwgUAAACQJVwAAAAAWcIFAAAAkCVcAAAAAFnCBQAAAJAlXAAAAABZwgUAAACQJVwAAAAAWcIFAAAAkCVcAAAAAFnCBQAAAJAlXAAAAABZwgUAAACQJVwAAAAAWcIFAAAAkCVcAAAAAFnCBQAAAJAlXAAAAABZwgUAAACQJVwAAAAAWcIFAAAAkCVcAAAAAFnCBQAAAJAlXAAAAABZwgXAB2Kt9eTk+PFa6+la66vbzH/N3zm76boAAPBXEi4APgBrrQcz8/w4vjczs/d+ODP/WGudXZp754gW/3yd66+1nh/XPT/9HQAAeJ+EC4APw6O997Pj+Ms5IsbM/Of4/Ku998u996OZOb/NhY/wcffS189m5tGb3y4AALwbwgXAh+cfM/PLcfxyZj59y+t9PTP/c/rFseri87e8LgAAvDXhAiDuWBFxunrizju89oOZ+Wnv/fJdXRMAAN4l4QKg73Ko+Hlmzk7G/vctrn1/Zu6vtZ7OzOeXHsr5yzXnAADAX0a4AOg7n98+g+KHmfniOL5/fH4je+9Hx0M+/3tmftx7f3cyfPm5FwAA8JcTLgDijm0cd04+v5iZOVZJvDz5fPHAzouxs+OVqWeXxwEA4EPxyfu+AQBe39776yu+fnEy/vCm8Suu93Jerd6YmVevVJ1bvpUEAAD+TFZcAHwYnhwP0rzJ9285fuqbmfn2NeYDAMCfQrgA+ADsvZ/Nq4doXvtGkYstI286fuFia8lt5wMAwJ9p7b3f9z0AAAAAXMmKCwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsAAAAgS7gAAAAAsoQLAAAAIEu4AAAAALKECwAAACBLuAAAAACyhAsA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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "for index,tuplexy in enumerate(zip(x, y)):\n", + " i_x=tuplexy[0]\n", + " i_y=tuplexy[1]\n", + " plt.text(i_x, i_y, '({},{}, {})'.format(index,i_x, i_y))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "pdresult1 = pd.read_csv('RESULT1.DAT',delimiter= '\\s+')\n", + "pdresult2 = pd.read_csv('RESULT2.DAT',delimiter= '\\s+')\n", + "pdresult3 = pd.read_csv('RESULT3.DAT',delimiter= '\\s+')" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
TsScaleBias12Misalign34Bias34
00.6769-0.193740-0.000057611.297878-0.000064
10.6319-0.1936310.000277615.0215080.000266
20.5786-0.1936030.000367615.5879090.000367
30.5272-0.1936900.000353617.2394650.000336
40.4767-0.1938810.000323617.8960900.000315
50.5272-0.1936740.000248614.2173270.000114
60.5786-0.1936130.000292613.7421530.000296
70.6319-0.1936300.000205613.4759360.000191
80.6769-0.193747-0.000025609.764880-0.000034
\n", + "
" + ], + "text/plain": [ + " Ts Scale Bias12 Misalign34 Bias34\n", + "0 0.6769 -0.193740 -0.000057 611.297878 -0.000064\n", + "1 0.6319 -0.193631 0.000277 615.021508 0.000266\n", + "2 0.5786 -0.193603 0.000367 615.587909 0.000367\n", + "3 0.5272 -0.193690 0.000353 617.239465 0.000336\n", + "4 0.4767 -0.193881 0.000323 617.896090 0.000315\n", + "5 0.5272 -0.193674 0.000248 614.217327 0.000114\n", + "6 0.5786 -0.193613 0.000292 613.742153 0.000296\n", + "7 0.6319 -0.193630 0.000205 613.475936 0.000191\n", + "8 0.6769 -0.193747 -0.000025 609.764880 -0.000034" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pdresult1" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%matplotlib inline\n", + "import pandas as pd\n", + "pdresult1 = pd.read_csv('RESULT1.DAT',delimiter= '\\s+')\n", + "pdresult2 = pd.read_csv('RESULT2.DAT',delimiter= '\\s+')\n", + "pdresult3 = pd.read_csv('RESULT3.DAT',delimiter= '\\s+')\n", + "import matplotlib.pyplot as plt\n", + "#plt.rc('text', usetex=True)\n", + "\n", + "x = list(pdresult1['Ts'])\n", + "y_list1 = list(pdresult1['Misalign34'])\n", + "y_list2 = list(pdresult2['Misalign34'])\n", + "y_list3 = list(pdresult3['Misalign34'])\n", + "\n", + "# Create Figure (empty canvas)\n", + "fig = plt.figure()\n", + "\n", + "# Add set of axes to figure\n", + "axes = fig.add_axes([0.1, 0.1, 1, 1]) # left, bottom, width, height (range 0 to 1)\n", + "\n", + "# Plot on that set of axes\n", + "axes.grid(True)\n", + "axes.plot(x, y_list1,color='red',linewidth=1,alpha=1,linestyle='-',marker='o',markersize=2,\n", + " markerfacecolor='red', markeredgewidth=3, markeredgecolor='red',label=\"x**2\")\n", + "\n", + "\n", + "axes.plot(x, y_list2,color='green',linewidth=1,alpha=1,linestyle='-',marker='s',markersize=2,\n", + " markerfacecolor='green', markeredgewidth=3, markeredgecolor='green',label=\"x**3\")\n", + "axes.plot(x, y_list3,color='blue',linewidth=1,alpha=1,linestyle='-',marker='s',markersize=2,\n", + " markerfacecolor='blue', markeredgewidth=3, markeredgecolor='blue',label=\"x**4\")\n", + "\n", + "#axes.plot(x,z)\n", + "axes.set_xlabel('Temp $^\\circ$ C') # Notice the use of set_ to begin methods \n", + "axes.set_ylabel('Scale, $mA(m/s^2)$')\n", + "#axes.set_title('Set Title')\n", + "axes.legend(loc=0)\n", + "# legend\n", + "#plt.legend(('phase field', 'level set', 'sharp interface'),\n", + "# shadow=True, loc=(0.01, 0.48), handlelength=1.5, fontsize=16)\n", + "\n", + "\n", + "#fig.savefig(\"filename.png\", dpi=200)\n", + "\n", + "locs, labels = plt.yticks() \n", + "for index,tuplexy in enumerate(zip(x, y_list1)):\n", + " i_x=tuplexy[0]\n", + " i_y=tuplexy[1]\n", + " #print(\"{},{},{}\".format(index,i_x, i_y))\n", + " label='{1:.7f}[{0}]'.format(index+1, i_y)\n", + " #plt.text(i_x, i_y,string )\n", + " plt.annotate(label, # this is the text\n", + " (i_x,i_y), # this is the point to label\n", + " textcoords=\"offset points\", # how to position the text\n", + " xytext=(0,-2*index+20), # distance from text to points (x,y)\n", + " ha='center',color='red') # horizontal alignment can be left, right or center\n", + " \n", + " \n", + "for index,tuplexy in enumerate(zip(x, y_list2)):\n", + " i_x=tuplexy[0]\n", + " i_y=tuplexy[1]\n", + " #print(\"{},{},{}\".format(index,i_x, i_y))\n", + " label='{1:.7f}[{0}]'.format(index+1, i_y)\n", + " #plt.text(i_x, i_y,string )\n", + " plt.annotate(label, # this is the text\n", + " (i_x,i_y), # this is the point to label\n", + " textcoords=\"offset points\", # how to position the text\n", + " xytext=(0,-3*index-20), # distance from text to points (x,y)\n", + " ha='center',color='green') # horizontal alignment can be left, right or center \n", + "\n", + "for index,tuplexy in enumerate(zip(x, y_list3)):\n", + " i_x=tuplexy[0]\n", + " i_y=tuplexy[1]\n", + " #print(\"{},{},{}\".format(index,i_x, i_y))\n", + " label='{1:.7f}[{0}]'.format(index+1, i_y)\n", + " #plt.text(i_x, i_y,string )\n", + " plt.annotate(label, # this is the text\n", + " (i_x,i_y), # this is the point to label\n", + " textcoords=\"offset points\", # how to position the text\n", + " xytext=(0,-3*index-60), # distance from text to points (x,y)\n", + " ha='center',color='blue') # horizontal alignment can be left, right or center \n", + " \n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'WinWaitActive' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mWinWaitActive\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"[TITLE:Order Tracking Main]\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mNameError\u001b[0m: name 'WinWaitActive' is not defined" + ] + } + ], + "source": [ + "WinWaitActive(\"[TITLE:Order Tracking Main]\", \"\") \n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import autoit" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'autoit' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mautoit\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mwin_wait_active\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mNameError\u001b[0m: name 'autoit' is not defined" + ] + } + ], + "source": [ + "autoit.win_wait_active(\"\")" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['D:\\\\day2\\\\allitems\\\\30_run_runs\\\\Data 9_6_2019 16_33_54 1.csv', 'D:\\\\day2\\\\allitems\\\\30_run_runs\\\\Data 9_6_2019 16_36_46 1.csv', 'D:\\\\day2\\\\allitems\\\\30_run_runs\\\\Data 9_6_2019 16_40_29 1.csv', 'D:\\\\day2\\\\allitems\\\\30_run_runs\\\\Data 9_6_2019 16_43_06 1.csv']\n", + "-------------------------------------------\n" + ] + } + ], + "source": [ + "import os\n", + "\n", + "path = 'D:\\\\day2\\\\allitems\\\\30_run_runs'\n", + "\n", + "files = []\n", + "# r=root, d=directories, f = files\n", + "for r, d, f in os.walk(path):\n", + " for file in f:\n", + " \n", + " if '.CSV'or '.csv' in file:\n", + " files.append(os.path.join(r, file))\n", + "\n", + "print(files)\n", + " \n", + "print('-------------------------------------------')" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "4" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "2+2" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "list(os.walk(path))" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import glob" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "ename": "PermissionError", + "evalue": "[WinError 5] Access is denied: 'C:/Users/sairamtvv/Desktop/delete_contents'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mPermissionError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mf\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mfiles\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 6\u001b[0m \u001b[0mos\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mchmod\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mf\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstat\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mS_IRWXO\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 7\u001b[1;33m \u001b[0mos\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mremove\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mf\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mPermissionError\u001b[0m: [WinError 5] Access is denied: 'C:/Users/sairamtvv/Desktop/delete_contents'" + ] + } + ], + "source": [ + "import os, sys, stat \n", + "import glob\n", + "\n", + "files = glob.glob('C:/Users/sairamtvv/Desktop/delete_contents')\n", + "for f in files:\n", + " os.chmod(f, stat.S_IRWXO) \n", + " os.remove(f)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "s=\"21.3,-40.0,165.0,-70\"\n", + "lst=s.split(\",\")" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['21.3', '-40.0', '165.0', '-70']" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lst" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "21.3" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "float(lst[0])" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Espec Validated and could read temperature\n" + ] + } + ], + "source": [ + "if -110\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0ma\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mAttributeError\u001b[0m: 'list' object has no attribute 'shape'" + ] + } + ], + "source": [ + "a.shape" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/materials_outside.ipynb b/materials_outside.ipynb new file mode 100644 index 0000000..87ef496 --- /dev/null +++ b/materials_outside.ipynb @@ -0,0 +1,4221 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 153, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 154, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
01234
00.6769-0.193740-0.000057611.297878-0.000064
10.6319-0.1936310.000277615.0215080.000266
20.5786-0.1936030.000367615.5879090.000367
30.5272-0.1936900.000353617.2394650.000336
40.4767-0.1938810.000323617.8960900.000315
50.5272-0.1936740.000248614.2173270.000114
60.5786-0.1936130.000292613.7421530.000296
70.6319-0.1936300.000205613.4759360.000191
80.6769-0.193747-0.000025609.764880-0.000034
\n", + "
" + ], + "text/plain": [ + " 0 1 2 3 4\n", + "0 0.6769 -0.193740 -0.000057 611.297878 -0.000064\n", + "1 0.6319 -0.193631 0.000277 615.021508 0.000266\n", + "2 0.5786 -0.193603 0.000367 615.587909 0.000367\n", + "3 0.5272 -0.193690 0.000353 617.239465 0.000336\n", + "4 0.4767 -0.193881 0.000323 617.896090 0.000315\n", + "5 0.5272 -0.193674 0.000248 614.217327 0.000114\n", + "6 0.5786 -0.193613 0.000292 613.742153 0.000296\n", + "7 0.6319 -0.193630 0.000205 613.475936 0.000191\n", + "8 0.6769 -0.193747 -0.000025 609.764880 -0.000034" + ] + }, + "execution_count": 154, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a1 = pd.read_csv('RESULT1.DAT',header=None,delimiter= '\\s+',skiprows=1)\n", + "a1" + ] + }, + { + "cell_type": "code", + "execution_count": 155, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
01234
0TsScaleBias12Misalign34Bias34
10.6769-0.1937423-0.0000570610.2992645-0.0000624
20.6319-0.19363120.0002899613.64877700.0002862
30.5786-0.19360490.0003659615.99190720.0003615
40.5272-0.19369090.0003647618.35698250.0003511
50.4767-0.19387990.0003236618.39729230.0003029
60.5272-0.19367320.0002297612.49066740.0000978
70.5786-0.19361200.0002921613.84896500.0002961
80.6319-0.19362990.0002047613.07844740.0001937
90.6769-0.1937442-0.0000013610.1830544-0.0000109
\n", + "
" + ], + "text/plain": [ + " 0 1 2 3 4\n", + "0 Ts Scale Bias12 Misalign34 Bias34\n", + "1 0.6769 -0.1937423 -0.0000570 610.2992645 -0.0000624\n", + "2 0.6319 -0.1936312 0.0002899 613.6487770 0.0002862\n", + "3 0.5786 -0.1936049 0.0003659 615.9919072 0.0003615\n", + "4 0.5272 -0.1936909 0.0003647 618.3569825 0.0003511\n", + "5 0.4767 -0.1938799 0.0003236 618.3972923 0.0003029\n", + "6 0.5272 -0.1936732 0.0002297 612.4906674 0.0000978\n", + "7 0.5786 -0.1936120 0.0002921 613.8489650 0.0002961\n", + "8 0.6319 -0.1936299 0.0002047 613.0784474 0.0001937\n", + "9 0.6769 -0.1937442 -0.0000013 610.1830544 -0.0000109" + ] + }, + "execution_count": 155, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a2 = pd.read_csv('RESULT2.DAT',header=None,delimiter= '\\s+')\n", + "a2" + ] + }, + { + "cell_type": "code", + "execution_count": 156, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
01234
0TsScaleBias12Misalign34Bias34
10.6769-0.1937403-0.0000694611.8344614-0.0000749
20.6319-0.19363050.0002835614.52460570.0002774
30.5786-0.19360390.0003603617.18245110.0003549
40.5272-0.19368830.0003701619.88249060.0003583
50.4767-0.19387730.0003264617.85353400.0003091
60.5272-0.19367200.0002158612.89169930.0000696
70.5786-0.19361220.0002782614.92917130.0002794
80.6319-0.19362950.0002008613.89360400.0001896
90.6769-0.1937449-0.0000057610.3036004-0.0000145
\n", + "
" + ], + "text/plain": [ + " 0 1 2 3 4\n", + "0 Ts Scale Bias12 Misalign34 Bias34\n", + "1 0.6769 -0.1937403 -0.0000694 611.8344614 -0.0000749\n", + "2 0.6319 -0.1936305 0.0002835 614.5246057 0.0002774\n", + "3 0.5786 -0.1936039 0.0003603 617.1824511 0.0003549\n", + "4 0.5272 -0.1936883 0.0003701 619.8824906 0.0003583\n", + "5 0.4767 -0.1938773 0.0003264 617.8535340 0.0003091\n", + "6 0.5272 -0.1936720 0.0002158 612.8916993 0.0000696\n", + "7 0.5786 -0.1936122 0.0002782 614.9291713 0.0002794\n", + "8 0.6319 -0.1936295 0.0002008 613.8936040 0.0001896\n", + "9 0.6769 -0.1937449 -0.0000057 610.3036004 -0.0000145" + ] + }, + "execution_count": 156, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a3 = pd.read_csv('RESULT3.DAT',header=None,delimiter= '\\s+')\n", + "a3" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 157, + "metadata": {}, + "outputs": [], + "source": [ + "a3.insert(0,\"TS\",a3[0])\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + }, + { + "cell_type": "code", + "execution_count": 158, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
TS01234
0TsTsScaleBias12Misalign34Bias34
10.67690.6769-0.1937403-0.0000694611.8344614-0.0000749
20.63190.6319-0.19363050.0002835614.52460570.0002774
30.57860.5786-0.19360390.0003603617.18245110.0003549
40.52720.5272-0.19368830.0003701619.88249060.0003583
50.47670.4767-0.19387730.0003264617.85353400.0003091
60.52720.5272-0.19367200.0002158612.89169930.0000696
70.57860.5786-0.19361220.0002782614.92917130.0002794
80.63190.6319-0.19362950.0002008613.89360400.0001896
90.67690.6769-0.1937449-0.0000057610.3036004-0.0000145
\n", + "
" + ], + "text/plain": [ + " TS 0 1 2 3 4\n", + "0 Ts Ts Scale Bias12 Misalign34 Bias34\n", + "1 0.6769 0.6769 -0.1937403 -0.0000694 611.8344614 -0.0000749\n", + "2 0.6319 0.6319 -0.1936305 0.0002835 614.5246057 0.0002774\n", + "3 0.5786 0.5786 -0.1936039 0.0003603 617.1824511 0.0003549\n", + "4 0.5272 0.5272 -0.1936883 0.0003701 619.8824906 0.0003583\n", + "5 0.4767 0.4767 -0.1938773 0.0003264 617.8535340 0.0003091\n", + "6 0.5272 0.5272 -0.1936720 0.0002158 612.8916993 0.0000696\n", + "7 0.5786 0.5786 -0.1936122 0.0002782 614.9291713 0.0002794\n", + "8 0.6319 0.6319 -0.1936295 0.0002008 613.8936040 0.0001896\n", + "9 0.6769 0.6769 -0.1937449 -0.0000057 610.3036004 -0.0000145" + ] + }, + "execution_count": 158, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a3" + ] + }, + { + "cell_type": "code", + "execution_count": 159, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "TS Ts\n", + "0 Ts\n", + "1 Scale\n", + "2 Bias12\n", + "3 Misalign34\n", + "4 Bias34\n", + "Name: 0, dtype: object" + ] + }, + "execution_count": 159, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a3.loc[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 160, + "metadata": {}, + "outputs": [], + "source": [ + "a3.drop(0,axis=0,inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 161, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
TS01234
10.67690.6769-0.1937403-0.0000694611.8344614-0.0000749
20.63190.6319-0.19363050.0002835614.52460570.0002774
30.57860.5786-0.19360390.0003603617.18245110.0003549
40.52720.5272-0.19368830.0003701619.88249060.0003583
50.47670.4767-0.19387730.0003264617.85353400.0003091
60.52720.5272-0.19367200.0002158612.89169930.0000696
70.57860.5786-0.19361220.0002782614.92917130.0002794
80.63190.6319-0.19362950.0002008613.89360400.0001896
90.67690.6769-0.1937449-0.0000057610.3036004-0.0000145
\n", + "
" + ], + "text/plain": [ + " TS 0 1 2 3 4\n", + "1 0.6769 0.6769 -0.1937403 -0.0000694 611.8344614 -0.0000749\n", + "2 0.6319 0.6319 -0.1936305 0.0002835 614.5246057 0.0002774\n", + "3 0.5786 0.5786 -0.1936039 0.0003603 617.1824511 0.0003549\n", + "4 0.5272 0.5272 -0.1936883 0.0003701 619.8824906 0.0003583\n", + "5 0.4767 0.4767 -0.1938773 0.0003264 617.8535340 0.0003091\n", + "6 0.5272 0.5272 -0.1936720 0.0002158 612.8916993 0.0000696\n", + "7 0.5786 0.5786 -0.1936122 0.0002782 614.9291713 0.0002794\n", + "8 0.6319 0.6319 -0.1936295 0.0002008 613.8936040 0.0001896\n", + "9 0.6769 0.6769 -0.1937449 -0.0000057 610.3036004 -0.0000145" + ] + }, + "execution_count": 161, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a3" + ] + }, + { + "cell_type": "code", + "execution_count": 162, + "metadata": {}, + "outputs": [ + { + "ename": "ValueError", + "evalue": "Length of values does not match length of index", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mdf\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0minsert\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"Age\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;36m21\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m23\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m24\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m21\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;32mTrue\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\pandas\\core\\frame.py\u001b[0m in \u001b[0;36minsert\u001b[1;34m(self, loc, column, value, allow_duplicates)\u001b[0m\n\u001b[0;32m 3469\u001b[0m \"\"\"\n\u001b[0;32m 3470\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_ensure_valid_index\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mvalue\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 3471\u001b[1;33m \u001b[0mvalue\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_sanitize_column\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcolumn\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mvalue\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mbroadcast\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mFalse\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3472\u001b[0m self._data.insert(loc, column, value,\n\u001b[0;32m 3473\u001b[0m allow_duplicates=allow_duplicates)\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\pandas\\core\\frame.py\u001b[0m in \u001b[0;36m_sanitize_column\u001b[1;34m(self, key, value, broadcast)\u001b[0m\n\u001b[0;32m 3628\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3629\u001b[0m \u001b[1;31m# turn me into an ndarray\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 3630\u001b[1;33m \u001b[0mvalue\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msanitize_index\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mvalue\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mindex\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcopy\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mFalse\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3631\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mvalue\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mndarray\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mIndex\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3632\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mvalue\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlist\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mand\u001b[0m \u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mvalue\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m>\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\pandas\\core\\internals\\construction.py\u001b[0m in \u001b[0;36msanitize_index\u001b[1;34m(data, index, copy)\u001b[0m\n\u001b[0;32m 517\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 518\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m!=\u001b[0m \u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mindex\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 519\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'Length of values does not match length of index'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 520\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 521\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mABCIndexClass\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mand\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mcopy\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mValueError\u001b[0m: Length of values does not match length of index" + ] + } + ], + "source": [ + "df.insert(2, \"Age\", [21, 23, 24, 21], True) " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "numpy_matrix = a1.values()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "a = np.asarray(a1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "np.size(a)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "a" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "type(a)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "size(a)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "a.size()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "type(a)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "np.size(a)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "a.size" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "a = np.asarray(a1)\n", + "a.reshape(9,5)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "b=a[:,4]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "b" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "np.max(np.abs(a[:.4]))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "b.indices(np.max(np.abs(b)))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "I1 = a1.index(np.max(np.abs(a1))) " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "a = np.random.randint(0, 10, (4,4))\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "a" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ind = np.unravel_index(np.argmax(a[:,3], axis=None), a[:,3].shape)[0]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ind" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "a[1][1]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "b=tuple(a)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "b" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "b(1,1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "li=[1,2,3,4]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "np.mean(li)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "np.std(li)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "a=[-372.675\t372.434\n", + "-372.671\t372.437\n", + "-372.669\t372.435\n", + "-372.665\t372.435\n", + "-372.666\t372.436\n", + "-372.665\t372.439\n", + "];" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ax = [[-372.675,372.434],[-372.671,372.437],[-372.669,372.435],\n", + " [-372.665,372.435],[-372.666,372.436],[-372.665,372.439]]\n", + "ax" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "u1=ax[4][1]\n", + "u1" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "A = [[1, 4, 5, 12], \n", + " [-5, 8, 9, 0],\n", + " [-6, 7, 11, 19]]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "A" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "A[0][0]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "a = [[-372.675,372.434],[-372.671,372.437],[-372.669,372.435],\n", + " [-372.665,372.435],[-372.666,372.436],[-372.665,372.439]]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "a[0][0]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "a[:4]\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import docx\n", + "from docx import Document" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import docx\n", + "from docx import Document\n", + "import pandas as pd\n", + "import numpy as np\n", + "import os\n", + "\n", + "def doctable():\n", + " pathfile= os.path.join(os.path.expanduser('~'), 'Desktop', 'Materials')\n", + " panda_a1 = pd.read_csv('RESULT1.DAT',header=None,delimiter= '\\s+',skiprows=1)\n", + " array_a1 = np.asarray(panda_a1)\n", + " #print(np.size(array_a1))\n", + " a1=array_a1.reshape(9,5)\n", + " data=a1\n", + " #C:\\Users\\sairamtvv\\Desktop\\Materials\n", + " tabletitle=\"iughouhoihpij\"\n", + " document = Document()\n", + " data = pd.DataFrame(data) # My input data is in the 2D list form\n", + " document.add_heading(tabletitle)\n", + " table = document.add_table(rows=(data.shape[0]), cols=data.shape[1]) # First row are table headers!\n", + " for i, column in enumerate(data) :\n", + " for row in range(data.shape[0]) :\n", + " table.cell(row, i).text = str(data[column][row])\n", + " document.save(pathfile)# save the doc\n", + "\n", + "\n", + "# i am not sure how you are getting your data, but you said it is a\n", + "# pandas data frame\n", + "\n", + "\n", + "doctable()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "os.path.join(os.path.expanduser('~'), 'Desktop', 'Materials')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "a1" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "max_xy = np.where(a == a[0:4].max() )" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "max_xy" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "b=a" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "b\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "type(b)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "a" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "a" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "type(a)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "np.unravel_index(np.argmax(a1, axis=None), a1.shape)[0]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "a = np.asarray(a1)\n", + "a.reshape(9,5)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "np.unravel_index(np.argmin(np.abs(a[:,2]), axis=None), np.abs(a[:,2]).shape)[0]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "a1" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "np.transpose(a1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "xm=[1, -2 , -5]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "I4 = np.unravel_index(np.argmax(np.abs(xm), axis=None), np.abs(xm).shape)[0]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "I4" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "xmm=np.transpose(xm);\n", + "\n", + "#[C4,I4]=max(abs(xm));\n", + "I4 = np.unravel_index(np.argmax(np.abs(xm), axis=None), np.abs(xm).shape)[0]\n", + "\n", + "M_max=xmm[I4];" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "xmm" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "xm" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "xmm[1]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + " xm[:, np.newaxis]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "a=np.array([1.5,2.3,4.8])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "a.reshape((-1,1))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "a[0]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "a\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(\"{0}\".format(a))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print('Sammy ate {0:.3f} percent of a pizza!'.format(75.765367))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print('{0:.3}'.format(1.0/3))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "outside = ['G1','G1','G1','G2','G2','G2']\n", + "inside = [1,2,3,1,2,3]\n", + "hier_index = list(zip(outside,inside))\n", + "hier_index = pd.MultiIndex.from_tuples(hier_index)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hier_index" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.DataFrame(np.random.randn(6,2),index=hier_index,columns=['A','B'])\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df=pd.read_csv('check2.csv')\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df.fillna(\"\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.DataFrame(index='A B C D E'.split(),columns=['W', 'X', ['Y','K'], 'Z'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "'A B C D E'.split()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df\n" + ] + }, + { + "cell_type": "code", + "execution_count": 173, + "metadata": {}, + "outputs": [], + "source": [ + "columns_outside = ['SL.NO','Parameters','Test Results Value','Test Results Value','Remarks']\n", + "columns_inside =['','','ifiodj','grfg','']" + ] + }, + { + "cell_type": "code", + "execution_count": 174, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "MultiIndex(levels=[['Parameters', 'Remarks', 'SL.NO', 'Test Results Value'], ['', 'grfg', 'ifiodj']],\n", + " codes=[[2, 0, 3, 3, 1], [0, 0, 2, 1, 0]])" + ] + }, + "execution_count": 174, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "hier_index = list(zip(columns_outside,columns_inside))\n", + "hier_index = pd.MultiIndex.from_tuples(hier_index)\n", + "hier_index" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "rows_outside = ['1.1','1.1','1.2']\n", + "rows_inside1 =['Width x Height','Width x Height','Weight (grams)']\n", + "rows_inside2 = ['Width: 36 ±1 mm','Height: 26 ±1 mm','< 80'] " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "rows_hier_index = list(zip(rows_outside,rows_inside1,rows_inside2))\n", + "rows_hier_index = pd.MultiIndex.from_tuples(rows_hier_index)\n", + "rows_hier_index" + ] + }, + { + "cell_type": "code", + "execution_count": 170, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
SL.NO Parameters Test Results Value Remarks
ifiodj grfg
Anannannannan
Bnannannannan
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 170, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dfStyler = df.style.set_properties(**{'text-align': 'left'})\n", + "dfStyler.set_table_styles([dict(selector='th', props=[('text-align', 'left')])])" + ] + }, + { + "cell_type": "code", + "execution_count": 176, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "MultiIndex(levels=[['Parameters', 'Remarks', 'SL.NO', 'Test Results Value'], ['', 'grfg', 'ifiodj']],\n", + " codes=[[2, 0, 3, 3, 1], [0, 0, 2, 1, 0]])" + ] + }, + "execution_count": 176, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 175, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
SL.NOParametersTest Results ValueRemarks
ifiodjgrfg
ANaNNaNNaNNaNNaN
BNaNNaNNaNNaNNaN
\n", + "
" + ], + "text/plain": [ + " SL.NO Parameters Test Results Value Remarks\n", + " ifiodj grfg \n", + "A NaN NaN NaN NaN NaN\n", + "B NaN NaN NaN NaN NaN" + ] + }, + "execution_count": 175, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = pd.DataFrame(index=['A','B'],columns=hier_index)\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df.index.names" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df.index.names = ['Sl. No.','Parameters','Test Results \\n specified']" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df.loc['A', 'Remarks']= 'sairam \n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df['Test Results Value']['grfg']='fjlhdlkfjld'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df.xs('A')['Test Results Value'].xs('ifiodj')=25\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df['Test Results Value']['ifiodj']" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df.loc['A','Test Results Value'] " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df.loc['B',( 'Test Results Value','grfg')] = 1999" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df.iloc[0][2]=1999" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dfStyler = df.style.set_properties(**{'text-align': 'left'})\n", + "dfStyler.set_table_styles([dict(selector='th', props=[('text-align', 'left')])])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df['Test Results Value'].loc['A','grfg']='fdsfee'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dfc = pd.DataFrame({'A': ['aaa', 'bbb', 'ccc'], 'B': [1, 2, 3]})\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dfc" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dfc.loc[0, 'A'] " + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "%matplotlib inline\n", + "x = [1,2,3,4]\n", + "y = [1,4,9,16]\n", + "plt.plot(x, y, 'r--')\n", + "plt.axis([0, 6, 0, 20])\n", + "\n", + "for i_x, i_y in zip(x, y):\n", + " plt.text(i_x, i_y, '({}, {})'.format(i_x, i_y))\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "import autoit" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "ename": "AutoItError", + "evalue": "activate window failed, maybe the window doesn't exist", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mAutoItError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mb\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mautoit\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mwin_activate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'LuCam Capture'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyautoit-0.5-py3.7.egg\\autoit\\autoit.py\u001b[0m in \u001b[0;36mwrapper\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 82\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;36m2\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mflags\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 83\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_has_unexpected_ret\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mret\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0munexpected_ret\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 84\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mAutoItError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0merr_msg\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 85\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 86\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mret\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mAutoItError\u001b[0m: activate window failed, maybe the window doesn't exist" + ] + } + ], + "source": [ + "b=autoit.win_activate('LuCam Capture')" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'b' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mb\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mNameError\u001b[0m: name 'b' is not defined" + ] + } + ], + "source": [ + "b" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "import autoit\n", + "import time\n", + "autoit.opt(\"MouseCoordMode\", 0)\n", + "autoit.opt(\"SendKeyDelay\", 10)\n", + "general_time_delay=200/1000 # in milliseconds\n", + "autoit.win_activate('nbserver-3964-open - Notepad')\n", + "time.sleep(general_time_delay) #time is in seconds \n", + "autoit.mouse_click('primary', 80, 441, 1, 0) \n", + "time.sleep(general_time_delay) #time is in seconds \n", + "autoit.send('{ENTER}',0)\n", + "time.sleep(general_time_delay) #time is in seconds \n", + "autoit.send('Hello',1)\n", + "time.sleep(general_time_delay) #time is in seconds \n", + "autoit.send('{TAB}',0)\n", + "time.sleep(general_time_delay) #time is in seconds \n", + "autoit.send('Hello',1)" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "ename": "FileNotFoundError", + "evalue": "[Errno 2] No such file or directory: 'dataloggerdefault_file'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mpandas\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0mpd\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0mpd\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mread_csv\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'dataloggerdefault_file'\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mheader\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mdelimiter\u001b[0m\u001b[1;33m=\u001b[0m \u001b[1;34m'\\s+'\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mencoding\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'UTF-16'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\pandas\\io\\parsers.py\u001b[0m in \u001b[0;36mparser_f\u001b[1;34m(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, squeeze, prefix, mangle_dupe_cols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, skipfooter, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, dayfirst, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, doublequote, escapechar, comment, encoding, dialect, tupleize_cols, error_bad_lines, warn_bad_lines, delim_whitespace, low_memory, memory_map, float_precision)\u001b[0m\n\u001b[0;32m 700\u001b[0m skip_blank_lines=skip_blank_lines)\n\u001b[0;32m 701\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 702\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0m_read\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfilepath_or_buffer\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mkwds\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 703\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 704\u001b[0m \u001b[0mparser_f\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__name__\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mname\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\pandas\\io\\parsers.py\u001b[0m in \u001b[0;36m_read\u001b[1;34m(filepath_or_buffer, kwds)\u001b[0m\n\u001b[0;32m 427\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 428\u001b[0m \u001b[1;31m# Create the parser.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 429\u001b[1;33m \u001b[0mparser\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mTextFileReader\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfilepath_or_buffer\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 430\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 431\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mchunksize\u001b[0m \u001b[1;32mor\u001b[0m \u001b[0miterator\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\pandas\\io\\parsers.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, f, engine, **kwds)\u001b[0m\n\u001b[0;32m 893\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0moptions\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'has_index_names'\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mkwds\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'has_index_names'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 894\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 895\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_make_engine\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mengine\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 896\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 897\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mclose\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\pandas\\io\\parsers.py\u001b[0m in \u001b[0;36m_make_engine\u001b[1;34m(self, engine)\u001b[0m\n\u001b[0;32m 1120\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0m_make_engine\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mengine\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'c'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1121\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mengine\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;34m'c'\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1122\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_engine\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mCParserWrapper\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mf\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0moptions\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1123\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1124\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mengine\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;34m'python'\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\pandas\\io\\parsers.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, src, **kwds)\u001b[0m\n\u001b[0;32m 1838\u001b[0m \u001b[1;31m# if source is utf-16 plain text, convert source to utf-8\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1839\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msrc\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcompat\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mstring_types\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1840\u001b[1;33m \u001b[0msrc\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mopen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msrc\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'rb'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1841\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mhandles\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msrc\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1842\u001b[0m \u001b[0msrc\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mUTF8Recoder\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msrc\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mkwds\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'encoding'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'dataloggerdefault_file'" + ] + } + ], + "source": [ + "HelloHelloimport pandas as pd\n", + "pd.read_csv('dataloggerdefault_file',header=None,delimiter= '\\s+',encoding='UTF-16')" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import pathlib" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "k=pathlib.Path('C:/Users/sairamtvv/Desktop/dataloggerdefault_file.CSV')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "with open(k,encoding='UTF-16') as f:\n", + " dfsai = pd.read_csv(f,skiprows=20,header=None)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0123456789...16171819202122232425
0ScanTime101 (VDC)Alarm 101102 (VDC)Alarm 102103 (VDC)Alarm 103104 (VDC)Alarm 104...202 (VDC)Alarm 202203 (VDC)Alarm 203204 (VDC)Alarm 204205 (VDC)Alarm 205206 (VDC)Alarm 206
115/12/2019 13:16:24:579-0.367762390-0.362058870-0.368603290-0.367035180...0.5177100.5178200.510600.5177600.515170
225/12/2019 13:16:48:478-0.367768170-0.362063250-0.368606470-0.367040050...0.5168800.5169900.5109300.5178700.514460
335/12/2019 13:17:12:314-0.367772560-0.362067350-0.368611070-0.367043070...0.5169400.5159500.510600.5168300.514570
445/12/2019 13:17:36:150-0.367779550-0.362072010-0.368614350-0.367047710...0.5162800.5161700.5091100.5171600.513850
\n", + "

5 rows × 26 columns

\n", + "
" + ], + "text/plain": [ + " 0 1 2 3 4 \\\n", + "0 Scan Time 101 (VDC) Alarm 101 102 (VDC) \n", + "1 1 5/12/2019 13:16:24:579 -0.36776239 0 -0.36205887 \n", + "2 2 5/12/2019 13:16:48:478 -0.36776817 0 -0.36206325 \n", + "3 3 5/12/2019 13:17:12:314 -0.36777256 0 -0.36206735 \n", + "4 4 5/12/2019 13:17:36:150 -0.36777955 0 -0.36207201 \n", + "\n", + " 5 6 7 8 9 ... 16 \\\n", + "0 Alarm 102 103 (VDC) Alarm 103 104 (VDC) Alarm 104 ... 202 (VDC) \n", + "1 0 -0.36860329 0 -0.36703518 0 ... 0.51771 \n", + "2 0 -0.36860647 0 -0.36704005 0 ... 0.51688 \n", + "3 0 -0.36861107 0 -0.36704307 0 ... 0.51694 \n", + "4 0 -0.36861435 0 -0.36704771 0 ... 0.51628 \n", + "\n", + " 17 18 19 20 21 22 \\\n", + "0 Alarm 202 203 (VDC) Alarm 203 204 (VDC) Alarm 204 205 (VDC) \n", + "1 0 0.51782 0 0.5106 0 0.51776 \n", + "2 0 0.51699 0 0.51093 0 0.51787 \n", + "3 0 0.51595 0 0.5106 0 0.51683 \n", + "4 0 0.51617 0 0.50911 0 0.51716 \n", + "\n", + " 23 24 25 \n", + "0 Alarm 205 206 (VDC) Alarm 206 \n", + "1 0 0.51517 0 \n", + "2 0 0.51446 0 \n", + "3 0 0.51457 0 \n", + "4 0 0.51385 0 \n", + "\n", + "[5 rows x 26 columns]" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dfsai.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "dfsai.loc[[0]].to_csv('example',index=False, header=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [], + "source": [ + "dfsai.to_csv('example',index=False, header=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "df=dfsai.loc[[0]]" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0123456789...16171819202122232425
0ScanTime101 (VDC)Alarm 101102 (VDC)Alarm 102103 (VDC)Alarm 103104 (VDC)Alarm 104...202 (VDC)Alarm 202203 (VDC)Alarm 203204 (VDC)Alarm 204205 (VDC)Alarm 205206 (VDC)Alarm 206
\n", + "

1 rows × 26 columns

\n", + "
" + ], + "text/plain": [ + " 0 1 2 3 4 5 6 \\\n", + "0 Scan Time 101 (VDC) Alarm 101 102 (VDC) Alarm 102 103 (VDC) \n", + "\n", + " 7 8 9 ... 16 17 18 \\\n", + "0 Alarm 103 104 (VDC) Alarm 104 ... 202 (VDC) Alarm 202 203 (VDC) \n", + "\n", + " 19 20 21 22 23 24 25 \n", + "0 Alarm 203 204 (VDC) Alarm 204 205 (VDC) Alarm 205 206 (VDC) Alarm 206 \n", + "\n", + "[1 rows x 26 columns]" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "df.to_csv('example',index=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "import time\n", + "now=time.time\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1566571529.6487331" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "now()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10\n", + "9\n", + "8\n", + "7\n", + "6\n", + "5\n", + "4\n", + "3\n", + "2\n", + "1\n" + ] + } + ], + "source": [ + " a= range(10, 0, -1)\n", + "for i in a:\n", + " print(i)\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [], + "source": [ + "dfL1= pd.read_csv('raw_text_L1.txt')" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ScanTime101 (VDC)Alarm 101102 (VDC)Alarm 102103 (VDC)Alarm 103104 (VDC)Alarm 104...202 (VDC)Alarm 202203 (VDC)Alarm 203204 (VDC)Alarm 204205 (VDC)Alarm 205206 (VDC)Alarm 206
015/12/2019 13:16:24:579-0.3677620-0.3620590-0.3686030-0.3670350...0.5177100.5178200.5106000.5177600.515170
125/12/2019 13:16:48:478-0.3677680-0.3620630-0.3686060-0.3670400...0.5168800.5169900.5109300.5178700.514460
235/12/2019 13:17:12:314-0.3677730-0.3620670-0.3686110-0.3670430...0.5169400.5159500.5106000.5168300.514570
345/12/2019 13:17:36:150-0.3677800-0.3620720-0.3686140-0.3670480...0.5162800.5161700.5091100.5171600.513850
415/12/2019 13:16:24:579-0.3677620-0.3620590-0.3686030-0.3670350...0.5177100.5178200.5106000.5177600.515170
525/12/2019 13:16:48:478-0.3677680-0.3620630-0.3686060-0.3670400...0.5168800.5169900.5109300.5178700.514460
635/12/2019 13:17:12:314-0.3677730-0.3620670-0.3686110-0.3670430...0.5169400.5159500.5106000.5168300.514570
745/12/2019 13:17:36:150-0.3677800-0.3620720-0.3686140-0.3670480...0.5162800.5161700.5091100.5171600.513850
815/12/2019 13:16:24:579-0.3677620-0.3620590-0.3686030-0.3670350...0.5177100.5178200.5106000.5177600.515170
925/12/2019 13:16:48:478-0.3677680-0.3620630-0.3686060-0.3670400...0.5168800.5169900.5109300.5178700.514460
1035/12/2019 13:17:12:314-0.3677730-0.3620670-0.3686110-0.3670430...0.5169400.5159500.5106000.5168300.514570
1145/12/2019 13:17:36:150-0.3677800-0.3620720-0.3686140-0.3670480...0.5162800.5161700.5091100.5171600.513850
1215/12/2019 13:16:24:579-0.3677620-0.3620590-0.3686030-0.3670350...0.5177100.5178200.5106000.5177600.515170
1325/12/2019 13:16:48:478-0.3677680-0.3620630-0.3686060-0.3670400...0.5168800.5169900.5109300.5178700.514460
1435/12/2019 13:17:12:314-0.3677730-0.3620670-0.3686110-0.3670430...0.5169400.5159500.5106000.5168300.514570
1545/12/2019 13:17:36:150-0.3677800-0.3620720-0.3686140-0.3670480...0.5162800.5161700.5091100.5171600.513850
1615/12/2019 13:16:24:579-0.3677620-0.3620590-0.3686030-0.3670350...0.5177100.5178200.5106000.5177600.515170
1725/12/2019 13:16:48:478-0.3677680-0.3620630-0.3686060-0.3670400...0.5168800.5169900.5109300.5178700.514460
1835/12/2019 13:17:12:314-0.3677730-0.3620670-0.3686110-0.3670430...0.5169400.5159500.5106000.5168300.514570
1945/12/2019 13:17:36:150-0.3677800-0.3620720-0.3686140-0.3670480...0.5162800.5161700.5091100.5171600.513850
2015/12/2019 13:16:24:579-0.3677620-0.3620590-0.3686030-0.3670350...0.5177100.5178200.5106000.5177600.515170
2125/12/2019 13:16:48:478-0.3677680-0.3620630-0.3686060-0.3670400...0.5168800.5169900.5109300.5178700.514460
2235/12/2019 13:17:12:314-0.3677730-0.3620670-0.3686110-0.3670430...0.5169400.5159500.5106000.5168300.514570
2345/12/2019 13:17:36:150-0.3677800-0.3620720-0.3686140-0.3670480...0.5162800.5161700.5091100.5171600.513850
2415/12/2019 13:16:24:579-0.3677620-0.3620590-0.3686030-0.3670350...0.5177100.5178200.5106000.5177600.515170
2525/12/2019 13:16:48:478-0.3677680-0.3620630-0.3686060-0.3670400...0.5168800.5169900.5109300.5178700.514460
2635/12/2019 13:17:12:314-0.3677730-0.3620670-0.3686110-0.3670430...0.5169400.5159500.5106000.5168300.514570
2745/12/2019 13:17:36:150-0.3677800-0.3620720-0.3686140-0.3670480...0.5162800.5161700.5091100.5171600.513850
2815/12/2019 13:16:24:579-0.3677620-0.3620590-0.3686030-0.3670350...0.5177100.5178200.5106000.5177600.515170
2925/12/2019 13:16:48:478-0.3677680-0.3620630-0.3686060-0.3670400...0.5168800.5169900.5109300.5178700.514460
3035/12/2019 13:17:12:314-0.3677730-0.3620670-0.3686110-0.3670430...0.5169400.5159500.5106000.5168300.514570
3145/12/2019 13:17:36:150-0.3677800-0.3620720-0.3686140-0.3670480...0.5162800.5161700.5091100.5171600.513850
3215/12/2019 13:16:24:579-0.3677620-0.3620590-0.3686030-0.3670350...0.5177100.5178200.5106000.5177600.515170
3325/12/2019 13:16:48:478-0.3677680-0.3620630-0.3686060-0.3670400...0.5168800.5169900.5109300.5178700.514460
3435/12/2019 13:17:12:314-0.3677730-0.3620670-0.3686110-0.3670430...0.5169400.5159500.5106000.5168300.514570
3535/12/2019 13:17:12:314-0.3677730-0.3620670-0.3686110-0.3670430...0.5169400.5159500.5106000.5168300.514570
\n", + "

36 rows × 26 columns

\n", + "
" + ], + "text/plain": [ + " Scan Time 101 (VDC) Alarm 101 102 (VDC) Alarm 102 \\\n", + "0 1 5/12/2019 13:16:24:579 -0.367762 0 -0.362059 0 \n", + "1 2 5/12/2019 13:16:48:478 -0.367768 0 -0.362063 0 \n", + "2 3 5/12/2019 13:17:12:314 -0.367773 0 -0.362067 0 \n", + "3 4 5/12/2019 13:17:36:150 -0.367780 0 -0.362072 0 \n", + "4 1 5/12/2019 13:16:24:579 -0.367762 0 -0.362059 0 \n", + "5 2 5/12/2019 13:16:48:478 -0.367768 0 -0.362063 0 \n", + "6 3 5/12/2019 13:17:12:314 -0.367773 0 -0.362067 0 \n", + "7 4 5/12/2019 13:17:36:150 -0.367780 0 -0.362072 0 \n", + "8 1 5/12/2019 13:16:24:579 -0.367762 0 -0.362059 0 \n", + "9 2 5/12/2019 13:16:48:478 -0.367768 0 -0.362063 0 \n", + "10 3 5/12/2019 13:17:12:314 -0.367773 0 -0.362067 0 \n", + "11 4 5/12/2019 13:17:36:150 -0.367780 0 -0.362072 0 \n", + "12 1 5/12/2019 13:16:24:579 -0.367762 0 -0.362059 0 \n", + "13 2 5/12/2019 13:16:48:478 -0.367768 0 -0.362063 0 \n", + "14 3 5/12/2019 13:17:12:314 -0.367773 0 -0.362067 0 \n", + "15 4 5/12/2019 13:17:36:150 -0.367780 0 -0.362072 0 \n", + "16 1 5/12/2019 13:16:24:579 -0.367762 0 -0.362059 0 \n", + "17 2 5/12/2019 13:16:48:478 -0.367768 0 -0.362063 0 \n", + "18 3 5/12/2019 13:17:12:314 -0.367773 0 -0.362067 0 \n", + "19 4 5/12/2019 13:17:36:150 -0.367780 0 -0.362072 0 \n", + "20 1 5/12/2019 13:16:24:579 -0.367762 0 -0.362059 0 \n", + "21 2 5/12/2019 13:16:48:478 -0.367768 0 -0.362063 0 \n", + "22 3 5/12/2019 13:17:12:314 -0.367773 0 -0.362067 0 \n", + "23 4 5/12/2019 13:17:36:150 -0.367780 0 -0.362072 0 \n", + "24 1 5/12/2019 13:16:24:579 -0.367762 0 -0.362059 0 \n", + "25 2 5/12/2019 13:16:48:478 -0.367768 0 -0.362063 0 \n", + "26 3 5/12/2019 13:17:12:314 -0.367773 0 -0.362067 0 \n", + "27 4 5/12/2019 13:17:36:150 -0.367780 0 -0.362072 0 \n", + "28 1 5/12/2019 13:16:24:579 -0.367762 0 -0.362059 0 \n", + "29 2 5/12/2019 13:16:48:478 -0.367768 0 -0.362063 0 \n", + "30 3 5/12/2019 13:17:12:314 -0.367773 0 -0.362067 0 \n", + "31 4 5/12/2019 13:17:36:150 -0.367780 0 -0.362072 0 \n", + "32 1 5/12/2019 13:16:24:579 -0.367762 0 -0.362059 0 \n", + "33 2 5/12/2019 13:16:48:478 -0.367768 0 -0.362063 0 \n", + "34 3 5/12/2019 13:17:12:314 -0.367773 0 -0.362067 0 \n", + "35 3 5/12/2019 13:17:12:314 -0.367773 0 -0.362067 0 \n", + "\n", + " 103 (VDC) Alarm 103 104 (VDC) Alarm 104 ... 202 (VDC) Alarm 202 \\\n", + "0 -0.368603 0 -0.367035 0 ... 0.51771 0 \n", + "1 -0.368606 0 -0.367040 0 ... 0.51688 0 \n", + "2 -0.368611 0 -0.367043 0 ... 0.51694 0 \n", + "3 -0.368614 0 -0.367048 0 ... 0.51628 0 \n", + "4 -0.368603 0 -0.367035 0 ... 0.51771 0 \n", + "5 -0.368606 0 -0.367040 0 ... 0.51688 0 \n", + "6 -0.368611 0 -0.367043 0 ... 0.51694 0 \n", + "7 -0.368614 0 -0.367048 0 ... 0.51628 0 \n", + "8 -0.368603 0 -0.367035 0 ... 0.51771 0 \n", + "9 -0.368606 0 -0.367040 0 ... 0.51688 0 \n", + "10 -0.368611 0 -0.367043 0 ... 0.51694 0 \n", + "11 -0.368614 0 -0.367048 0 ... 0.51628 0 \n", + "12 -0.368603 0 -0.367035 0 ... 0.51771 0 \n", + "13 -0.368606 0 -0.367040 0 ... 0.51688 0 \n", + "14 -0.368611 0 -0.367043 0 ... 0.51694 0 \n", + "15 -0.368614 0 -0.367048 0 ... 0.51628 0 \n", + "16 -0.368603 0 -0.367035 0 ... 0.51771 0 \n", + "17 -0.368606 0 -0.367040 0 ... 0.51688 0 \n", + "18 -0.368611 0 -0.367043 0 ... 0.51694 0 \n", + "19 -0.368614 0 -0.367048 0 ... 0.51628 0 \n", + "20 -0.368603 0 -0.367035 0 ... 0.51771 0 \n", + "21 -0.368606 0 -0.367040 0 ... 0.51688 0 \n", + "22 -0.368611 0 -0.367043 0 ... 0.51694 0 \n", + "23 -0.368614 0 -0.367048 0 ... 0.51628 0 \n", + "24 -0.368603 0 -0.367035 0 ... 0.51771 0 \n", + "25 -0.368606 0 -0.367040 0 ... 0.51688 0 \n", + "26 -0.368611 0 -0.367043 0 ... 0.51694 0 \n", + "27 -0.368614 0 -0.367048 0 ... 0.51628 0 \n", + "28 -0.368603 0 -0.367035 0 ... 0.51771 0 \n", + "29 -0.368606 0 -0.367040 0 ... 0.51688 0 \n", + "30 -0.368611 0 -0.367043 0 ... 0.51694 0 \n", + "31 -0.368614 0 -0.367048 0 ... 0.51628 0 \n", + "32 -0.368603 0 -0.367035 0 ... 0.51771 0 \n", + "33 -0.368606 0 -0.367040 0 ... 0.51688 0 \n", + "34 -0.368611 0 -0.367043 0 ... 0.51694 0 \n", + "35 -0.368611 0 -0.367043 0 ... 0.51694 0 \n", + "\n", + " 203 (VDC) Alarm 203 204 (VDC) Alarm 204 205 (VDC) Alarm 205 \\\n", + "0 0.51782 0 0.51060 0 0.51776 0 \n", + "1 0.51699 0 0.51093 0 0.51787 0 \n", + "2 0.51595 0 0.51060 0 0.51683 0 \n", + "3 0.51617 0 0.50911 0 0.51716 0 \n", + "4 0.51782 0 0.51060 0 0.51776 0 \n", + "5 0.51699 0 0.51093 0 0.51787 0 \n", + "6 0.51595 0 0.51060 0 0.51683 0 \n", + "7 0.51617 0 0.50911 0 0.51716 0 \n", + "8 0.51782 0 0.51060 0 0.51776 0 \n", + "9 0.51699 0 0.51093 0 0.51787 0 \n", + "10 0.51595 0 0.51060 0 0.51683 0 \n", + "11 0.51617 0 0.50911 0 0.51716 0 \n", + "12 0.51782 0 0.51060 0 0.51776 0 \n", + "13 0.51699 0 0.51093 0 0.51787 0 \n", + "14 0.51595 0 0.51060 0 0.51683 0 \n", + "15 0.51617 0 0.50911 0 0.51716 0 \n", + "16 0.51782 0 0.51060 0 0.51776 0 \n", + "17 0.51699 0 0.51093 0 0.51787 0 \n", + "18 0.51595 0 0.51060 0 0.51683 0 \n", + "19 0.51617 0 0.50911 0 0.51716 0 \n", + "20 0.51782 0 0.51060 0 0.51776 0 \n", + "21 0.51699 0 0.51093 0 0.51787 0 \n", + "22 0.51595 0 0.51060 0 0.51683 0 \n", + "23 0.51617 0 0.50911 0 0.51716 0 \n", + "24 0.51782 0 0.51060 0 0.51776 0 \n", + "25 0.51699 0 0.51093 0 0.51787 0 \n", + "26 0.51595 0 0.51060 0 0.51683 0 \n", + "27 0.51617 0 0.50911 0 0.51716 0 \n", + "28 0.51782 0 0.51060 0 0.51776 0 \n", + "29 0.51699 0 0.51093 0 0.51787 0 \n", + "30 0.51595 0 0.51060 0 0.51683 0 \n", + "31 0.51617 0 0.50911 0 0.51716 0 \n", + "32 0.51782 0 0.51060 0 0.51776 0 \n", + "33 0.51699 0 0.51093 0 0.51787 0 \n", + "34 0.51595 0 0.51060 0 0.51683 0 \n", + "35 0.51595 0 0.51060 0 0.51683 0 \n", + "\n", + " 206 (VDC) Alarm 206 \n", + "0 0.51517 0 \n", + "1 0.51446 0 \n", + "2 0.51457 0 \n", + "3 0.51385 0 \n", + "4 0.51517 0 \n", + "5 0.51446 0 \n", + "6 0.51457 0 \n", + "7 0.51385 0 \n", + "8 0.51517 0 \n", + "9 0.51446 0 \n", + "10 0.51457 0 \n", + "11 0.51385 0 \n", + "12 0.51517 0 \n", + "13 0.51446 0 \n", + "14 0.51457 0 \n", + "15 0.51385 0 \n", + "16 0.51517 0 \n", + "17 0.51446 0 \n", + "18 0.51457 0 \n", + "19 0.51385 0 \n", + "20 0.51517 0 \n", + "21 0.51446 0 \n", + "22 0.51457 0 \n", + "23 0.51385 0 \n", + "24 0.51517 0 \n", + "25 0.51446 0 \n", + "26 0.51457 0 \n", + "27 0.51385 0 \n", + "28 0.51517 0 \n", + "29 0.51446 0 \n", + "30 0.51457 0 \n", + "31 0.51385 0 \n", + "32 0.51517 0 \n", + "33 0.51446 0 \n", + "34 0.51457 0 \n", + "35 0.51457 0 \n", + "\n", + "[36 rows x 26 columns]" + ] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dfL1" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "-0.36776239" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dfL1['101 (VDC)'].loc[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Volume in drive C has no label.\n", + " Volume Serial Number is B0E5-A41C\n", + "\n", + " Directory of C:\\Users\\sairamtvv\\Desktop\\Materials\n", + "\n", + "08/24/2019 12:19 AM .\n", + "08/24/2019 12:19 AM ..\n", + "08/17/2019 03:26 PM .ipynb_checkpoints\n", + "08/16/2019 08:23 PM 01 Course Introduction\n", + "08/16/2019 08:23 PM 02 Course Materials and Set-up\n", + "08/16/2019 08:23 PM 03 Python Crash Course\n", + "08/16/2019 08:23 PM 04 NumPy\n", + "08/16/2019 08:23 PM 05 General Pandas Overview\n", + "08/16/2019 08:23 PM 06 Visualization with Matplotlib and Pandas\n", + "08/16/2019 08:23 PM 07 Data Sources\n", + "08/16/2019 08:23 PM 08 Pandas with Time Series Data\n", + "08/16/2019 08:23 PM 09 Capstone Stock Market Analysis Project\n", + "08/16/2019 08:23 PM 10 Time Series Analysis\n", + "08/16/2019 08:23 PM 11 Python Finance Fundamentals\n", + "08/16/2019 08:23 PM 12 Basics of Algorithmic Trading with Quantopian\n", + "08/16/2019 08:23 PM 13 Advanced Quantopian and Trading Algorithms\n", + "08/16/2019 08:23 PM 14 BONUS OFFERS\n", + "08/19/2019 08:52 PM 1,045 check.csv\n", + "08/19/2019 08:43 PM 12,800 check.xls\n", + "08/19/2019 09:04 PM 1,060 check2.csv\n", + "08/06/2019 02:47 PM 33,280 Conformance Report.xls\n", + "08/23/2019 06:01 PM 320 example\n", + "08/17/2019 03:25 PM 188 matlabconversionprog.py\n", + "08/24/2019 12:13 AM 6,317 raw_text_L1.txt\n", + "08/17/2019 09:40 PM 696 RESULT1.DAT\n", + "08/17/2019 09:40 PM 680 RESULT2.DAT\n", + "08/17/2019 09:39 PM 680 RESULT3.DAT\n", + "08/24/2019 12:19 AM 95,277 Untitled.ipynb\n", + " 11 File(s) 152,343 bytes\n", + " 17 Dir(s) 39,856,570,368 bytes free\n" + ] + } + ], + "source": [ + "ls" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Volume in drive C has no label.\n", + " Volume Serial Number is B0E5-A41C\n", + "\n", + " Directory of C:\\Users\\sairamtvv\\Desktop\\Materials\n", + "\n", + "08/24/2019 12:19 AM .\n", + "08/24/2019 12:19 AM ..\n", + "08/17/2019 03:26 PM .ipynb_checkpoints\n", + "08/16/2019 08:23 PM 01 Course Introduction\n", + "08/16/2019 08:23 PM 02 Course Materials and Set-up\n", + "08/16/2019 08:23 PM 03 Python Crash Course\n", + "08/16/2019 08:23 PM 04 NumPy\n", + "08/16/2019 08:23 PM 05 General Pandas Overview\n", + "08/16/2019 08:23 PM 06 Visualization with Matplotlib and Pandas\n", + "08/16/2019 08:23 PM 07 Data Sources\n", + "08/16/2019 08:23 PM 08 Pandas with Time Series Data\n", + "08/16/2019 08:23 PM 09 Capstone Stock Market Analysis Project\n", + "08/16/2019 08:23 PM 10 Time Series Analysis\n", + "08/16/2019 08:23 PM 11 Python Finance Fundamentals\n", + "08/16/2019 08:23 PM 12 Basics of Algorithmic Trading with Quantopian\n", + "08/16/2019 08:23 PM 13 Advanced Quantopian and Trading Algorithms\n", + "08/16/2019 08:23 PM 14 BONUS OFFERS\n", + "08/19/2019 08:52 PM 1,045 check.csv\n", + "08/19/2019 08:43 PM 12,800 check.xls\n", + "08/19/2019 09:04 PM 1,060 check2.csv\n", + "08/06/2019 02:47 PM 33,280 Conformance Report.xls\n", + "08/23/2019 06:01 PM 320 example\n", + "08/17/2019 03:25 PM 188 matlabconversionprog.py\n", + "08/24/2019 12:13 AM 6,317 raw_text_L1.txt\n", + "08/17/2019 09:40 PM 696 RESULT1.DAT\n", + "08/17/2019 09:40 PM 680 RESULT2.DAT\n", + "08/17/2019 09:39 PM 680 RESULT3.DAT\n", + "08/24/2019 12:19 AM 95,277 Untitled.ipynb\n", + " 11 File(s) 152,343 bytes\n", + " 17 Dir(s) 39,856,570,368 bytes free\n" + ] + } + ], + "source": [ + "ls" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": {}, + "outputs": [], + "source": [ + "if {'101 (VDC)','201 (VDC)'}.issubset(dfL1.columns):\n", + " with open('32_AS_L1', 'w') as f:\n", + " f.write(' pos uacc Rts\\n')\n", + " for i in range(0,36):\n", + " f.write(' {0} {1:.6f} {2:.5f}\\n'.format(i%4+1,dfL1['101 (VDC)'].loc[i],dfL1['201 (VDC)'].loc[i]))\n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "True\n" + ] + } + ], + "source": [ + "if {'101 (VDC)','201 (VDC)'}.issubset(dfL1.columns):\n", + " print(\"True\")" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": {}, + "outputs": [], + "source": [ + "a = pd.DataFrame(data = [[1,2],[3,4]], index=range(2), columns = ['A', 'B'])\n", + "c,b = a.iloc[0].copy(), a.iloc[1].copy()\n", + "a.iloc[0],a.iloc[1] = b,c" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['Scan', 'Time', '101 (VDC)', 'Alarm 101', '102 (VDC)', 'Alarm 102',\n", + " '103 (VDC)', 'Alarm 103', '104 (VDC)', 'Alarm 104', '105 (VDC)',\n", + " 'Alarm 105', '106 (VDC)', 'Alarm 106', '201 (VDC)', 'Alarm 201',\n", + " '202 (VDC)', 'Alarm 202', '203 (VDC)', 'Alarm 203', '204 (VDC)',\n", + " 'Alarm 204', '205 (VDC)', 'Alarm 205', '206 (VDC)', 'Alarm 206'],\n", + " dtype='object')" + ] + }, + "execution_count": 71, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dfL1.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import socket\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "sairam\n" + ] + } + ], + "source": [ + "print(socket.gethostname())" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "gethostbyaddr() takes exactly 1 argument (0 given)", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0msocket\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgethostbyaddr\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mTypeError\u001b[0m: gethostbyaddr() takes exactly 1 argument (0 given)" + ] + } + ], + "source": [ + "socket.gethostbyaddr()" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "sai='d4'" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'4'" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sai[1]" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "6" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "int(sai[1])+2" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "k=6" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "range(1, 6)" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "range(1,6)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "range(0, 6)" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "range(6)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "l=range(1,6)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "range(1, 6)" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "l" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n", + "2\n" + ] + } + ], + "source": [ + "x = range(1, 3)\n", + "for n in x:\n", + " print(n)" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "4" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "2+2" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import logging" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/matlabconversionprog.py b/matlabconversionprog.py new file mode 100644 index 0000000..84994bb --- /dev/null +++ b/matlabconversionprog.py @@ -0,0 +1,631 @@ +# -*- coding: utf-8 -*- +""" +Created on Sat Aug 17 15:10:59 2019 + +@author: sairamtvv +""" + +import numpy as np +import pandas as pd +import matplotlib.pyplot as plt + + +b = np.array( [[-372.675,372.434],[-372.671,372.437],[-372.669,372.435], + [-372.665,372.435],[-372.666,372.436],[-372.665,372.439]]) + +print(b.shape) +def matlab_conver_func(a=b): + + #SF inrun stability + + g=9.78335; + R=200; + + + U1=a[0][0] + U2=a[0][1]; + U3=a[1][0]; + U4=a[1][1]; + U5=a[2][0]; + U6=a[2][1]; + U7=a[3][0]; + U8=a[3][1]; + U9=a[4][0]; + U10=a[4][1]; + U11=a[5][0]; + U12=a[5][1]; + + + + + SF1=(-U1+U2)/(2*g*R); + SF2=(-U3+U4)/(2*g*R); + SF3=(-U5+U6)/(2*g*R); + SF4=(-U7+U8)/(2*g*R); + SF5=(-U9+U10)/(2*g*R); + SF6=(-U11+U12)/(2*g*R); + + #STD=std([SF1 SF2 SF3 SF4 SF5 SF6]); + listSF=[SF1,SF2, SF3, SF4, SF5,SF6]; + STD=np.std(listSF); + + #MEAN=mean([SF1 SF2 SF3 SF4 SF5 SF6]); + MEAN=np.mean(listSF); + + + #Bias inrun stability + a1=(a[1-1][1-1]+a[1-1][2-1])/(a[1-1][1-1]-a[1-1][2-1]); + a2=(a[2-1][1-1]+a[2-1][2-1])/(a[2-1][1-1]-a[2-1][2-1]); + a3=(a[3-1][1-1]+a[3-1][2-1])/(a[3-1][1-1]-a[3-1][2-1]); + a4=(a[4-1][1-1]+a[4-1][2-1])/(a[4-1][1-1]-a[4-1][2-1]); + a5=(a[5-1][1-1]+a[5-1][2-1])/(a[5-1][1-1]-a[5-1][2-1]); + a6=(a[6-1][1-1]+a[6-1][2-1])/(a[6-1][1-1]-a[6-1][2-1]); + + SF_INRUN_STABILITY=(STD/MEAN)*10**6; + #BIAS_INRUN_STABILITY=std([a1,a2,a3,a4,a5,a6])*10^6; + BIAS_INRUN_STABILITY=np.std([a1,a2,a3,a4,a5,a6])*10**6; + + + + + + #SFTC + + #a1=load('RESULT1.dat'); + panda_a1 = pd.read_csv('RESULT1.DAT',header=None,delimiter= '\s+',skiprows=1) + array_a1 = np.asarray(panda_a1) + print(np.size(array_a1)) + a1=array_a1.reshape(9,5) + + + #a2=load('RESULT2.dat'); + panda_a2 = pd.read_csv('RESULT2.DAT',header=None,delimiter= '\s+',skiprows=1) + array_a2 = np.asarray(panda_a2) + a2=array_a2.reshape(9,5) + + + + #a3=load('RESULT3.dat'); + panda_a3 = pd.read_csv('RESULT3.DAT',header=None,delimiter= '\s+',skiprows=1) + array_a3 = np.asarray(panda_a3) + a3=array_a3.reshape(9,5) + + + #loop 1 + #%S.F(at +42.5°) + #format short + SF1=a1[2-1][2-1]*10; + #SF TEMP.COEFFICENT + #format long + #70 deg C + SFTC1=a1[1-1][2-1]; + SFTC2=a1[9-1][2-1]; + b1=np.mean([SFTC1,SFTC2]); + #15 deg C + SFTC3=a1[3-1][2-1]; + SFTC4=a1[7-1][2-1]; + b2=np.mean([SFTC3,SFTC4]); + b3=a1[5-1][2-1]; + #format short + loop1=((b1-b3)/b2)/110*10**6; + + + + + #loop 2 + #S.F(at +42.5°) + #format short + SF2=a2[2-1][2-1]*10; + #format long + #SF TEMP.COEFFICENT + #70 deg C + SFTC1=a2[1-1][2-1]; + SFTC2=a2[9-1][2-1]; + b1=np.mean([SFTC1,SFTC2]); + #15 deg C + SFTC3=a2[3-1][2-1]; + SFTC4=a2[7-1][2-1]; + b2=np.mean([SFTC3,SFTC4]); + #b3=a2(5,2) + #format short + loop2=((b1-b3)/b2)/110*10**6; + + + + #loop 3 + #S.F(at +42.5°) + #format short + SF3=a2[2-1][2-1]*10; + #format long + #SF TEMP.COEFFICENT + #%70 deg C + SFTC1=a3[1-1][2-1]; + SFTC2=a3[9-1][2-1]; + b1=np.mean([SFTC1,SFTC2]); + #%15 deg C + SFTC3=a3[3-1][2-1]; + SFTC4=a3[7-1][2-1]; + b2=np.mean([SFTC3,SFTC4]); + #%b3=a2(5,2) + #format short + loop3=((b1-b3)/b2)/110*10**6; + xsf = [SF1 ,SF2, SF3]; + SFAve=np.mean(xsf); + Ysf=[loop1, loop2, loop3]; + SFTCAve=np.mean(Ysf); + + + + + #%BTCF + + + #%%loop 1 + #%BIAS (at +42.5°) + #format long + B1=abs(a1[2-1][3-1]); + B2=abs(a1[8-1][3-1]); + #format short + B3=(B1+B2)/2*10**6; + #format long + BTC1=a1[1-1][3-1]; + BTC2=a1[9-1][3-1]; + mBTC=np.mean([BTC1,BTC2]); + BTC3=a1[5-1][3-1]; + #format short + BTCF1=(mBTC-BTC3)/110*10**6; + + + #%%loop2 + B1=abs(a2[2-1][3-1]); + B2=abs(a2[8-1][3-1]); + #format short + B4=(B1+B2)/2*10**6; + #format long + BTC1=a2[1-1][3-1]; + BTC2=a2[9-1][3-1]; + mBTC=np.mean([BTC1, BTC2]); + BTC3=a2[5-1][3-1]; + #format short + BTCF2=(mBTC-BTC3)/110*10**6; + + + #%%loop3 + B1=abs(a3[2-1][3-1]); + B2=abs(a3[8-1][3-1]); + #format short + B5=(B1+B2)/2*10**6; + #format long + BTC1=a3[1-1][3-1]; + BTC2=a3[9-1][3-1]; + mBTC=np.mean([BTC1,BTC2]); + BTC3=a3[5-1][3-1]; + #format short + BTCF3=(mBTC-BTC3)/110*10**6; + xb = [ B3, B4, B5]; + BiasAve=np.mean(xb); + yb=[BTCF1, BTCF2, BTCF3]; + BTCAve=np.mean(yb); + + + #%SF HYSTERESIS & BIAS HYSTERESIS ERROR + + b1=a1[1-1][2-1]; + b2=a1[9-1][2-1]; + b12=np.mean([b1, b2]); + Hyst19=np.diff([b1, b2])/b12; + b3=a1[2-1][2-1]; + b4=a1[8-1][2-1]; + b34=np.mean([b3, b4]); + Hyst28=np.diff([b3, b4])/b34; + b5=a1[3-1][2-1]; + b6=a1[7-1][2-1]; + b56=np.mean([b5, b6]); + Hyst37=np.diff([b5, b6])/b56; + b7=a1[4-1][2-1]; + b8=a1[6-1][2-1]; + b78=np.mean([b7, b8]); + Hyst46=np.diff([b7, b8])/b78; + c=np.abs([Hyst19, Hyst28, Hyst37, Hyst46]); + SF_HYSTERESIS1=np.max(c)*10**6; + #%%loop2 + b1=a2[1-1][2-1]; + b2=a2[9-1][2-1]; + b12=np.mean([b1, b2]); + Hyst19=np.diff([b1, b2])/b12; + b3=a2[2-1][2-1]; + b4=a2[8-1][2-1]; + b34=np.mean([b3, b4]); + Hyst28=np.diff([b3, b4])/b34; + b5=a2[3-1][2-1]; + b6=a2[7-1][2-1]; + b56=np.mean([b5, b6]); + Hyst37=np.diff([b5, b6])/b56; + b7=a2[4-1][2-1]; + b8=a2[6-1][2-1]; + b78=np.mean([b7, b8]); + Hyst46=np.diff([b7, b8])/b78; + c=np.abs([Hyst19, Hyst28, Hyst37, Hyst46]); + SF_HYSTERESIS2=np.max(c)*10**6; + #%%loop3 + b1=a3[1-1][2-1]; + b2=a3[9-1][2-1]; + b12=np.mean([b1, b2]); + Hyst19=np.diff([b1, b2])/b12; + b3=a3[2-1][2-1]; + b4=a3[8-1][2-1]; + b34=np.mean([b3, b4]); + Hyst28=np.diff([b3, b4])/b34; + b5=a3[3-1][2-1]; + b6=a3[7-1][2-1]; + b56=np.mean([b5, b6]); + Hyst37=np.diff([b5, b6])/b56; + b7=a3[4-1][2-1]; + b8=a3[6-1][2-1]; + b78=np.mean([b7, b8]); + Hyst46=np.diff([b7, b8])/b78; + c=np.abs([Hyst19, Hyst28, Hyst37, Hyst46]); + SF_HYSTERESIS3=np.max(c)*10**6; + #format short + SF_HYSTERESIS=([SF_HYSTERESIS1, SF_HYSTERESIS2, SF_HYSTERESIS3]); + avg_SF_HYSTERESIS_value=np.mean([SF_HYSTERESIS1, SF_HYSTERESIS2, SF_HYSTERESIS3]); + + + #%%BIAS HYSTERESIS ERROR + b1=a1[1-1][3-1]; + b2=a1[9-1][3-1]; + BIAS_Hyst19=np.diff([b1, b2]); + b3=a1[2-1][3-1]; + b4=a1[8-1][3-1]; + BIAS_Hyst28=np.diff([b3, b4]); + b5=a1[3-1][3-1]; + b6=a1[7-1][3-1]; + BIAS_Hyst37=np.diff([b5, b6]); + b7=a1[4-1][3-1]; + b8=a1[6-1][3-1]; + BIAS_Hyst46=np.diff([b7, b8]); + c=np.abs([BIAS_Hyst19, BIAS_Hyst28, BIAS_Hyst37, BIAS_Hyst46]); + BIAS_HYSTERESIS1=np.max(c)*10**6; + #%loop2 + b1=a2[1-1][3-1]; + b2=a2[9-1][3-1]; + BIAS_Hyst19=np.diff([b1, b2]); + b3=a2[2-1][3-1]; + b4=a2[8-1][3-1]; + BIAS_Hyst28=np.diff([b3, b4]); + b5=a2[3-1][3-1]; + b6=a2[7-1][3-1]; + BIAS_Hyst37=np.diff([b5, b6]); + b7=a2[4-1][3-1]; + b8=a2[6-1][3-1]; + BIAS_Hyst46=np.diff([b7, b8]); + c=np.abs([BIAS_Hyst19, BIAS_Hyst28, BIAS_Hyst37, BIAS_Hyst46]); + BIAS_HYSTERESIS2=np.max(c)*10**6; + #% %%loop3 + b1=a3[1-1][3-1]; + b2=a3[9-1][3-1]; + BIAS_Hyst19=np.diff([b1, b2]); + b3=a3[2-1][3-1]; + b4=a3[8-1][3-1]; + BIAS_Hyst28=np.diff([b3, b4]); + b5=a3[3-1][3-1]; + b6=a3[7-1][3-1]; + BIAS_Hyst37=np.diff([b5, b6]); + b7=a3[4-1][3-1]; + b8=a3[6-1][3-1]; + BIAS_Hyst46=np.diff([b7, b8]); + c=np.abs([BIAS_Hyst19, BIAS_Hyst28, BIAS_Hyst37, BIAS_Hyst46]); + BIAS_HYSTERESIS3=np.max(c)*10**6; + #format short + BIAS_HYSTERESIS=([BIAS_HYSTERESIS1, BIAS_HYSTERESIS2, BIAS_HYSTERESIS3]); + avg_BIAS_HYSTERESIS_value=np.mean([BIAS_HYSTERESIS1, BIAS_HYSTERESIS2, BIAS_HYSTERESIS3]); + + + + + + + + + + + + #%S.F Day to Day Stability (at +42.5°) + #format long + SF1=a1[2-1][2-1]*10; + SF2=a1[8-1][2-1]*10; + SF12=np.mean([SF1, SF2]); + SF3=a2[2-1][2-1]*10; + SF4=a2[8-1][2-1]*10; + SF34=np.mean([SF3, SF4]); + SF5=a3[2-1][2-1]*10; + SF6=a3[8-1][2-1]*10; + SF56=np.mean([SF5, SF6]); + SF7=np.mean([SF1, SF2, SF3, SF4,SF5,SF6]); + SFDD1=abs((SF12-SF34)/SF7)*10**6; + SFDD2=abs((SF34-SF56)/SF7)*10**6; + SFDD3=np.mean([SFDD1, SFDD2]); + xsfdd=[SFDD1, SFDD2, SFDD3]; + + #%BIAS Day to Day Stability (at +42.5°) + #format long + B1=a1[2-1][3-1]; + B2=a1[8-1][3-1]; + B12=np.mean([B1, B2])*10**6; + B3=a2[2-1][3-1]; + B4=a2[8-1][3-1]; + B34=np.mean([B3, B4])*10**6; + B5=a3[2-1][3-1]; + B6=a3[8-1][3-1]; + B56=np.mean([B5, B6])*10**6; + BDD1=abs(B12-B34); + BDD2=abs(B34-B56); + BDD3=np.mean([BDD1, BDD2]); + ybdd=[BDD1, BDD2, BDD3]; + #format short + + + + + #%MISALIGNMENT + + #%loop1 + #[C1,I1]=max(abs(a1(:,4))); + I1 = np.unravel_index(np.argmax(np.abs(a1[:,4-1]), axis=None), np.abs(a1[:,4-1]).shape)[0] + MIS1=a1[I1][4-1]; + + #%loop2 + I2 = np.unravel_index(np.argmax(np.abs(a2[:,4-1]), axis=None), np.abs(a2[:,4-1]).shape)[0] + #[C2,I2]=max(abs(a2(:,4))); + MIS2=a2[I2][4-1]; + + #%loop3 + #[c3,I3]=max(abs(a3(:,4))); + I3 = np.unravel_index(np.argmax(np.abs(a3[:,4-1]), axis=None), np.abs(a3[:,4-1]).shape)[0] + MIS3=a3[I3][4-1]; + + xm = [ MIS1, MIS2, MIS3]; + + #xmm=xm'; + xmm=np.transpose(xm); + + #[C4,I4]=max(abs(xm)); + I4 = np.unravel_index(np.argmax(np.abs(xm), axis=None), np.abs(xm).shape)[0] + + #M_max=xmm(I4,1); + M_max=xmm[I4]; + + + + #%Misalignment day to day + + m1=a1[:,4-1]; + m2=a2[:,4-1]; + m3=a3[:,4-1]; + md1=np.abs(m1-m2); + md2=np.abs(m2-m3); + md2d=[np.max(md1), np.max(md2)]; + avge=np.mean(md2d); + + #format short + + + print(' '); + #print("Sammy ate {0:} percent of a pizza!".format(xsf)) + print(' Loop1 Loop2 Loop3 Average'); + print(' '); + print('SF: {0:6.2f} {1:6.2f} {2:6.2f} {3:6.2f}'.format(xsf[0],xsf[1],xsf[2],np.mean(xsf))) + print(' '); + print('SFTC: {0:6.2f} {1:6.2f} {2:6.2f} {3:6.2f}'.format(Ysf[0],Ysf[1],Ysf[2],np.mean(Ysf))) + print(' '); + print('SF_HYS: {0:6.2f} {1:6.2f} {2:6.2f} {3:6.2f}'.format(SF_HYSTERESIS[0],SF_HYSTERESIS[1],SF_HYSTERESIS[2],avg_SF_HYSTERESIS_value)) + print(' '); + print('SFDD: {0:6.2f} {1:6.2f} {2:6.2f} '.format(xsfdd[0],xsfdd[1],xsfdd[2])) + print(' '); + print('SF_INRUN_S::-------- ------- -------- {0:6.2f}'.format(SF_INRUN_STABILITY)) + print(' '); + print('Bias: {0:6.2f} {1:6.2f} {2:6.2f} {3:6.2f}'.format(xb[0],xb[1],xb[2],np.mean(xb))) + print(' '); + print('BTCF: {0:6.2f} {1:6.2f} {2:6.2f} {3:6.2f}'.format(yb[0],yb[1],yb[2],np.mean(yb))) + print(' '); + print('BIAS_HYS: {0:6.2f} {1:6.2f} {2:6.2f} {3:6.2f}'.format(BIAS_HYSTERESIS[0],BIAS_HYSTERESIS[1],BIAS_HYSTERESIS[2],avg_BIAS_HYSTERESIS_value)) + print(' '); + print('BiasDD: -------- {0:6.2f} {1:6.2f} {2:6.2f}'.format(ybdd[0],ybdd[1],ybdd[2])) + print(' '); + print('B_INRUN_S: -------- -------- -------- {0:6.2f}'.format(BIAS_INRUN_STABILITY)) + print(' '); + print('MIS: {0:6.2f} {1:6.2f} {2:6.2f} {3:6.2f}'.format(xm[0],xm[1],xm[2],M_max)) + print(' '); + print('MD2D: --------- {0:6.2f} {1:6.2f} {2:6.2f}'.format(md2d[0],md2d[1],np.max(md2d))) + + + +# +# +# +# +# +# +# +# +# +#x = [1,2,3,4] +#y = [1,4,9,16] +#z=[1,8,27,64] +## Create Figure (empty canvas) +#fig = plt.figure() +# +## Add set of axes to figure +#axes = fig.add_axes([0.1, 0.1, 0.8, 0.8]) # left, bottom, width, height (range 0 to 1) +# +## Plot on that set of axes +#axes.plot(x, y,color='purple',linewidth=2,alpha=1,linestyle='-',marker='o',markersize=7, +# markerfacecolor='purple', markeredgewidth=3, markeredgecolor='purple') +#axes.plot(x,z) +#axes.set_xlabel('Set X Label') # Notice the use of set_ to begin methods +#axes.set_ylabel('Set y Label') +#axes.set_title('Set Title') +# +#fig.savefig("filename.png", dpi=200) +# +#for i_x, i_y in zip(x, y): +# plt.text(i_x, i_y, '({}, {})'.format(i_x, i_y)) +# +#plt.show() +# +# +# +# +# +# +# +# +# +# +# +# +# +# +## writingto excel file for D4 and D5 analysis +#import openpyxl +# +#srcfile = openpyxl.load_workbook('EQA3-31_(AS)_adj_param_p20.xlsx',read_only=False, keep_vba= True)#to open the excel sheet and if it has macros +# +#sheetname = srcfile.get_sheet_by_name('sheetsai')#get sheetname from the file +#sheetname['C4']= 55.568 #write something in B2 cell of the supplied sheet +#sheetname.cell(row=1,column=1).value = "something" #write to row 1,col 1 explicitly, this type of writing is useful to write something in loops +# +#srcfile.save('newfile.xlsm')#save it as a new file, the original file is untouched and here I am saving it as xlsm(m here denotes macros). +# +# +# +#import pandas as pd +#pdresult1 = pd.read_csv('RESULT1.DAT',delimiter= '\s+') +#pdresult2 = pd.read_csv('RESULT2.DAT',delimiter= '\s+') +#pdresult3 = pd.read_csv('RESULT3.DAT',delimiter= '\s+') +#import matplotlib.pyplot as plt +##plt.rc('text', usetex=True) +# +#x = list(pdresult1['Ts']) +#y_list1 = list(pdresult1['Misalign34']) +#y_list2 = list(pdresult2['Misalign34']) +#y_list3 = list(pdresult3['Misalign34']) +# +## Create Figure (empty canvas) +#fig = plt.figure() +# +## Add set of axes to figure +#axes = fig.add_axes([0.1, 0.1, 1, 1]) # left, bottom, width, height (range 0 to 1) +# +## Plot on that set of axes +#axes.grid(True) +#axes.plot(x, y_list1,color='red',linewidth=1,alpha=1,linestyle='-',marker='o',markersize=2, +# markerfacecolor='red', markeredgewidth=3, markeredgecolor='red',label="x**2") +# +# +#axes.plot(x, y_list2,color='green',linewidth=1,alpha=1,linestyle='-',marker='s',markersize=2, +# markerfacecolor='green', markeredgewidth=3, markeredgecolor='green',label="x**3") +#axes.plot(x, y_list3,color='blue',linewidth=1,alpha=1,linestyle='-',marker='s',markersize=2, +# markerfacecolor='blue', markeredgewidth=3, markeredgecolor='blue',label="x**4") +# +##axes.plot(x,z) +#axes.set_xlabel('Temp $^\circ$ C') # Notice the use of set_ to begin methods +#axes.set_ylabel('Scale, $mA(m/s^2)$') +##axes.set_title('Set Title') +#axes.legend(loc=0) +## legend +##plt.legend(('phase field', 'level set', 'sharp interface'), +## shadow=True, loc=(0.01, 0.48), handlelength=1.5, fontsize=16) +# +# +##fig.savefig("filename.png", dpi=200) +# +#locs, labels = plt.yticks() +#for index,tuplexy in enumerate(zip(x, y_list1)): +# i_x=tuplexy[0] +# i_y=tuplexy[1] +# #print("{},{},{}".format(index,i_x, i_y)) +# label='{1:.7f}[{0}]'.format(index+1, i_y) +# #plt.text(i_x, i_y,string ) +# plt.annotate(label, # this is the text +# (i_x,i_y), # this is the point to label +# textcoords="offset points", # how to position the text +# xytext=(0,-2*index+20), # distance from text to points (x,y) +# ha='center',color='red') # horizontal alignment can be left, right or center +# +# +#for index,tuplexy in enumerate(zip(x, y_list2)): +# i_x=tuplexy[0] +# i_y=tuplexy[1] +# #print("{},{},{}".format(index,i_x, i_y)) +# label='{1:.7f}[{0}]'.format(index+1, i_y) +# #plt.text(i_x, i_y,string ) +# plt.annotate(label, # this is the text +# (i_x,i_y), # this is the point to label +# textcoords="offset points", # how to position the text +# xytext=(0,-3*index-20), # distance from text to points (x,y) +# ha='center',color='green') # horizontal alignment can be left, right or center +# +#for index,tuplexy in enumerate(zip(x, y_list3)): +# i_x=tuplexy[0] +# i_y=tuplexy[1] +# #print("{},{},{}".format(index,i_x, i_y)) +# label='{1:.7f}[{0}]'.format(index+1, i_y) +# #plt.text(i_x, i_y,string ) +# plt.annotate(label, # this is the text +# (i_x,i_y), # this is the point to label +# textcoords="offset points", # how to position the text +# xytext=(0,-3*index-60), # distance from text to points (x,y) +# ha='center',color='blue') # horizontal alignment can be left, right or center +# +# +#autoit.win_wait_active("[TITLE:Set Data Log Fields]", "") +#autoit.control_click("[TITLE:Set Data Log Fields]","", "[CLASS::WindowsForms10.BUTTON.app.0.33c0d9d; INSTANCE:3]") +#ControlClick(WinGetTitle("[active]"), "", "[CLASS:WindowsForms10.BUTTON.app.0.143a722_r15_ad1; INSTANCE:1]") +# +# +# +##click the two dots so that it opens the dialogue box +##wait for 16 seconds to make the Benchlink Data logeer 3 active +#autoit.win_wait_active("[TITLE:Configuration-2-BenchLink Data Logger3]", "",16) +##XXXXXXXXXXXXXXXXXXX +#autoit.control_click("[TITLE:Configuration-2-BenchLink Data Logger3]","", "[CLASS::WindowsForms10.BUTTON.app.0.33c0d9d; INSTANCE:15]") +#time.sleep(0.5) +# +##Click on the check box +#autoit.win_wait_active("[TITLE:Set Data Log Fields]", "",16) +#autoit.control_click("[TITLE:Set Data Log Fields]","", "[CLASS::WindowsForms10.BUTTON.app.0.33c0d9d; INSTANCE:3]") +#time.sleep(0.5) +# +# +##Click on the ok box +# +# +# +# +##Click on the play button +#autoit.win_wait_active("[TITLE:Configuration-2-BenchLink Data Logger3]", "",16) +# +##wait for the scan and log data summary +##wait for 2 minutes maximum +#autoit.win_wait_active("[TITLE:Scan and Log Data Summary]", "",150) +#autoit.control_click("[TITLE:Scan and Log Data Summary]","", "[CLASS::WindowsForms10.BUTTON.app.0.33c0d9d; INSTANCE:5]") +#time.sleep(0.5) +# +# +##Click on the close button +# +# +# +##end of the cycle +# +# +# +# +# +# +# +# +# +# +# diff --git a/pywinauto.ipynb b/pywinauto.ipynb new file mode 100644 index 0000000..b2d3225 --- /dev/null +++ b/pywinauto.ipynb @@ -0,0 +1,4031 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#Series" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "labels=['a','b','c']\n", + "my_list=[10,20,30]\n", + "arr=np.array([10,20,30])\n", + "d={'a':10,'b':20,'c':100}" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 10\n", + "1 20\n", + "2 30\n", + "dtype: int64" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.Series(my_list)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "a 10\n", + "b 20\n", + "c 30\n", + "dtype: int64" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.Series(my_list,index=labels)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 10\n", + "1 20\n", + "2 30\n", + "dtype: int32" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.Series(arr)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "a 10\n", + "b 20\n", + "c 30\n", + "dtype: int32" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.Series(arr,labels)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "a 10\n", + "b 20\n", + "c 100\n", + "dtype: int64" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.Series(d)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 \n", + "1 \n", + "2 \n", + "dtype: object" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.Series([sum,print,len])" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "ser1=pd.Series([1,2,3,4],index=[\"telan\",\"AP\",\"Mahar\",\"Tamilnadu\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "telan 1\n", + "AP 2\n", + "Mahar 3\n", + "Tamilnadu 4\n", + "dtype: int64" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ser1" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "ser2=pd.Series([2,3,4,5],index=[\"kashmir\",\"punjab\",\"Tamilnadu\",\"AP\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "kashmir 2\n", + "punjab 3\n", + "Tamilnadu 4\n", + "AP 5\n", + "dtype: int64" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ser2" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "telan 1\n", + "AP 2\n", + "Mahar 3\n", + "Tamilnadu 4\n", + "dtype: int64" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ser1" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "AP 7.0\n", + "Mahar NaN\n", + "Tamilnadu 8.0\n", + "kashmir NaN\n", + "punjab NaN\n", + "telan NaN\n", + "dtype: float64" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ser1+ser2" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "telan 1\n", + "AP 2\n", + "Mahar 3\n", + "Tamilnadu 4\n", + "dtype: int64" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ser1" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "4" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ser1[\"Tamilnadu\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "np.random.seed(101)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "df=pd.DataFrame(np.random.rand(5,4),[\"A\",\"B\",\"c\",\"D\",\"E\"],[\"W\",\"X\",\"Y\",\"Z\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
WXYZ
A0.5163990.5706680.0284740.171522
B0.6852770.8338970.3069660.893613
c0.7215440.1899390.5542280.352132
D0.1818920.7856020.9654830.232354
E0.0835610.6035480.7289930.276239
\n", + "
" + ], + "text/plain": [ + " W X Y Z\n", + "A 0.516399 0.570668 0.028474 0.171522\n", + "B 0.685277 0.833897 0.306966 0.893613\n", + "c 0.721544 0.189939 0.554228 0.352132\n", + "D 0.181892 0.785602 0.965483 0.232354\n", + "E 0.083561 0.603548 0.728993 0.276239" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "pandas.core.series.Series" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(df['W'])" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "pandas.core.frame.DataFrame" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(df)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
WXYZ
A0.5163990.5706680.0284740.171522
B0.6852770.8338970.3069660.893613
c0.7215440.1899390.5542280.352132
D0.1818920.7856020.9654830.232354
E0.0835610.6035480.7289930.276239
\n", + "
" + ], + "text/plain": [ + " W X Y Z\n", + "A 0.516399 0.570668 0.028474 0.171522\n", + "B 0.685277 0.833897 0.306966 0.893613\n", + "c 0.721544 0.189939 0.554228 0.352132\n", + "D 0.181892 0.785602 0.965483 0.232354\n", + "E 0.083561 0.603548 0.728993 0.276239" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df\n" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
WX
A0.5163990.570668
B0.6852770.833897
c0.7215440.189939
D0.1818920.785602
E0.0835610.603548
\n", + "
" + ], + "text/plain": [ + " W X\n", + "A 0.516399 0.570668\n", + "B 0.685277 0.833897\n", + "c 0.721544 0.189939\n", + "D 0.181892 0.785602\n", + "E 0.083561 0.603548" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df[['W','X']]" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [], + "source": [ + "df['new']=df['W']+df[\"X\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
WXYZnew
A0.5163990.5706680.0284740.1715221.087066
B0.6852770.8338970.3069660.8936131.519174
c0.7215440.1899390.5542280.3521320.911483
D0.1818920.7856020.9654830.2323540.967494
E0.0835610.6035480.7289930.2762390.687110
\n", + "
" + ], + "text/plain": [ + " W X Y Z new\n", + "A 0.516399 0.570668 0.028474 0.171522 1.087066\n", + "B 0.685277 0.833897 0.306966 0.893613 1.519174\n", + "c 0.721544 0.189939 0.554228 0.352132 0.911483\n", + "D 0.181892 0.785602 0.965483 0.232354 0.967494\n", + "E 0.083561 0.603548 0.728993 0.276239 0.687110" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [], + "source": [ + "df.drop(\"new\",axis=1,inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
WXYZ
A0.5163990.5706680.0284740.171522
B0.6852770.8338970.3069660.893613
c0.7215440.1899390.5542280.352132
D0.1818920.7856020.9654830.232354
E0.0835610.6035480.7289930.276239
\n", + "
" + ], + "text/plain": [ + " W X Y Z\n", + "A 0.516399 0.570668 0.028474 0.171522\n", + "B 0.685277 0.833897 0.306966 0.893613\n", + "c 0.721544 0.189939 0.554228 0.352132\n", + "D 0.181892 0.785602 0.965483 0.232354\n", + "E 0.083561 0.603548 0.728993 0.276239" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(5, 4)" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
WXY
A0.5163990.5706680.028474
B0.6852770.8338970.306966
c0.7215440.1899390.554228
D0.1818920.7856020.965483
E0.0835610.6035480.728993
\n", + "
" + ], + "text/plain": [ + " W X Y\n", + "A 0.516399 0.570668 0.028474\n", + "B 0.685277 0.833897 0.306966\n", + "c 0.721544 0.189939 0.554228\n", + "D 0.181892 0.785602 0.965483\n", + "E 0.083561 0.603548 0.728993" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.drop(\"Z\",axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
WXYZ
A0.5163990.5706680.0284740.171522
B0.6852770.8338970.3069660.893613
c0.7215440.1899390.5542280.352132
D0.1818920.7856020.9654830.232354
E0.0835610.6035480.7289930.276239
\n", + "
" + ], + "text/plain": [ + " W X Y Z\n", + "A 0.516399 0.570668 0.028474 0.171522\n", + "B 0.685277 0.833897 0.306966 0.893613\n", + "c 0.721544 0.189939 0.554228 0.352132\n", + "D 0.181892 0.785602 0.965483 0.232354\n", + "E 0.083561 0.603548 0.728993 0.276239" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "W 0.516399\n", + "X 0.570668\n", + "Y 0.028474\n", + "Z 0.171522\n", + "Name: A, dtype: float64" + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.loc['A']" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "W 0.516399\n", + "X 0.570668\n", + "Y 0.028474\n", + "Z 0.171522\n", + "Name: A, dtype: float64" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.iloc[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
WXYZ
A0.5163990.5706680.0284740.171522
D0.1818920.7856020.9654830.232354
\n", + "
" + ], + "text/plain": [ + " W X Y Z\n", + "A 0.516399 0.570668 0.028474 0.171522\n", + "D 0.181892 0.785602 0.965483 0.232354" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.loc[[\"A\",\"D\"]]" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
WXYZ
A0.5163990.5706680.0284740.171522
B0.6852770.8338970.3069660.893613
c0.7215440.1899390.5542280.352132
D0.1818920.7856020.9654830.232354
E0.0835610.6035480.7289930.276239
\n", + "
" + ], + "text/plain": [ + " W X Y Z\n", + "A 0.516399 0.570668 0.028474 0.171522\n", + "B 0.685277 0.833897 0.306966 0.893613\n", + "c 0.721544 0.189939 0.554228 0.352132\n", + "D 0.181892 0.785602 0.965483 0.232354\n", + "E 0.083561 0.603548 0.728993 0.276239" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
XY
A0.5706680.028474
D0.7856020.965483
\n", + "
" + ], + "text/plain": [ + " X Y\n", + "A 0.570668 0.028474\n", + "D 0.785602 0.965483" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.iloc[[0,3],[1,2]]" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
WXYZ
A0.5163990.5706680.0284740.171522
B0.6852770.8338970.3069660.893613
c0.7215440.1899390.5542280.352132
D0.1818920.7856020.9654830.232354
E0.0835610.6035480.7289930.276239
\n", + "
" + ], + "text/plain": [ + " W X Y Z\n", + "A 0.516399 0.570668 0.028474 0.171522\n", + "B 0.685277 0.833897 0.306966 0.893613\n", + "c 0.721544 0.189939 0.554228 0.352132\n", + "D 0.181892 0.785602 0.965483 0.232354\n", + "E 0.083561 0.603548 0.728993 0.276239" + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
WXYZ
ATrueTrueFalseFalse
BTrueTrueFalseTrue
cTrueFalseTrueFalse
DFalseTrueTrueFalse
EFalseTrueTrueFalse
\n", + "
" + ], + "text/plain": [ + " W X Y Z\n", + "A True True False False\n", + "B True True False True\n", + "c True False True False\n", + "D False True True False\n", + "E False True True False" + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df>0.5" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
WXYZ
A0.5163990.570668NaNNaN
B0.6852770.833897NaN0.893613
c0.721544NaN0.554228NaN
DNaN0.7856020.965483NaN
ENaN0.6035480.728993NaN
\n", + "
" + ], + "text/plain": [ + " W X Y Z\n", + "A 0.516399 0.570668 NaN NaN\n", + "B 0.685277 0.833897 NaN 0.893613\n", + "c 0.721544 NaN 0.554228 NaN\n", + "D NaN 0.785602 0.965483 NaN\n", + "E NaN 0.603548 0.728993 NaN" + ] + }, + "execution_count": 58, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df[df>0.5]" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "A True\n", + "B True\n", + "c True\n", + "D False\n", + "E False\n", + "Name: W, dtype: bool" + ] + }, + "execution_count": 60, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df['W']>0.5" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
WXYZ
A0.5163990.5706680.0284740.171522
B0.6852770.8338970.3069660.893613
c0.7215440.1899390.5542280.352132
\n", + "
" + ], + "text/plain": [ + " W X Y Z\n", + "A 0.516399 0.570668 0.028474 0.171522\n", + "B 0.685277 0.833897 0.306966 0.893613\n", + "c 0.721544 0.189939 0.554228 0.352132" + ] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df[df['W']>0.5]" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
WXYZ
A0.5163990.5706680.0284740.171522
B0.6852770.8338970.3069660.893613
c0.7215440.1899390.5542280.352132
D0.1818920.7856020.9654830.232354
E0.0835610.6035480.7289930.276239
\n", + "
" + ], + "text/plain": [ + " W X Y Z\n", + "A 0.516399 0.570668 0.028474 0.171522\n", + "B 0.685277 0.833897 0.306966 0.893613\n", + "c 0.721544 0.189939 0.554228 0.352132\n", + "D 0.181892 0.785602 0.965483 0.232354\n", + "E 0.083561 0.603548 0.728993 0.276239" + ] + }, + "execution_count": 63, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
WXYZ
A0.5163990.570668NaNNaN
B0.6852770.833897NaN0.893613
c0.721544NaN0.554228NaN
DNaN0.7856020.965483NaN
ENaN0.6035480.728993NaN
\n", + "
" + ], + "text/plain": [ + " W X Y Z\n", + "A 0.516399 0.570668 NaN NaN\n", + "B 0.685277 0.833897 NaN 0.893613\n", + "c 0.721544 NaN 0.554228 NaN\n", + "D NaN 0.785602 0.965483 NaN\n", + "E NaN 0.603548 0.728993 NaN" + ] + }, + "execution_count": 65, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df[df>0.5]" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
WXYZ
A0.5163990.5706680.0284740.171522
B0.6852770.8338970.3069660.893613
c0.7215440.1899390.5542280.352132
D0.1818920.7856020.9654830.232354
E0.0835610.6035480.7289930.276239
\n", + "
" + ], + "text/plain": [ + " W X Y Z\n", + "A 0.516399 0.570668 0.028474 0.171522\n", + "B 0.685277 0.833897 0.306966 0.893613\n", + "c 0.721544 0.189939 0.554228 0.352132\n", + "D 0.181892 0.785602 0.965483 0.232354\n", + "E 0.083561 0.603548 0.728993 0.276239" + ] + }, + "execution_count": 66, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "c 0.189939\n", + "D 0.785602\n", + "E 0.603548\n", + "Name: X, dtype: float64" + ] + }, + "execution_count": 69, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df[df[\"Y\"]>0.5][\"X\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
WXYZ
A0.5163990.5706680.0284740.171522
B0.6852770.8338970.3069660.893613
c0.7215440.1899390.5542280.352132
D0.1818920.7856020.9654830.232354
E0.0835610.6035480.7289930.276239
\n", + "
" + ], + "text/plain": [ + " W X Y Z\n", + "A 0.516399 0.570668 0.028474 0.171522\n", + "B 0.685277 0.833897 0.306966 0.893613\n", + "c 0.721544 0.189939 0.554228 0.352132\n", + "D 0.181892 0.785602 0.965483 0.232354\n", + "E 0.083561 0.603548 0.728993 0.276239" + ] + }, + "execution_count": 72, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
WXYZ
c0.7215440.1899390.5542280.352132
D0.1818920.7856020.9654830.232354
E0.0835610.6035480.7289930.276239
\n", + "
" + ], + "text/plain": [ + " W X Y Z\n", + "c 0.721544 0.189939 0.554228 0.352132\n", + "D 0.181892 0.785602 0.965483 0.232354\n", + "E 0.083561 0.603548 0.728993 0.276239" + ] + }, + "execution_count": 83, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "booldf=df[\"Y\"]>0.4\n", + "result=df[booldf]\n", + "result[\"X\"]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 92, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
WXYZ
A0.5163990.5706680.0284740.171522
B0.6852770.8338970.3069660.893613
c0.7215440.1899390.5542280.352132
D0.1818920.7856020.9654830.232354
E0.0835610.6035480.7289930.276239
\n", + "
" + ], + "text/plain": [ + " W X Y Z\n", + "A 0.516399 0.570668 0.028474 0.171522\n", + "B 0.685277 0.833897 0.306966 0.893613\n", + "c 0.721544 0.189939 0.554228 0.352132\n", + "D 0.181892 0.785602 0.965483 0.232354\n", + "E 0.083561 0.603548 0.728993 0.276239" + ] + }, + "execution_count": 92, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df[(df[\"W\"]>0.5) | (df[\"Z\"]>0.2)]" + ] + }, + { + "cell_type": "code", + "execution_count": 89, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "A True\n", + "B True\n", + "c True\n", + "D False\n", + "E False\n", + "Name: W, dtype: bool" + ] + }, + "execution_count": 89, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df[\"W\"]>0.5" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "ename": "MatchError", + "evalue": "Could not find 'Printer' in 'dict_keys(['PaperGroupBox', 'Paper', 'GroupBox', 'Static', 'Si&ze:Static', 'Si&ze:', 'ComboBox', 'Si&ze:ComboBox', 'Static0', 'Static1', 'Static2', '&Source:', '&Source:Static', 'ComboBox0', 'ComboBox1', 'ComboBox2', '&Source:ComboBox', 'Orientation', 'GroupBox0', 'GroupBox1', 'GroupBox2', 'OrientationGroupBox', 'P&ortrait', 'P&ortraitRadioButton', 'RadioButton', 'L&andscape', 'L&andscapeRadioButton', 'RadioButton0', 'RadioButton1', 'RadioButton2', 'Margins (inches)', 'Margins (inches)GroupBox', 'GroupBox3', 'Static3', '&Left:Static', '&Left:', '&Left:Edit', 'Edit', 'Static4', '&Right:', '&Right:Static', '&Right:Edit', 'Edit0', 'Edit1', 'Edit2', 'Static5', '&Top:', '&Top:Static', '&Top:Edit', 'Edit3', 'Static6', '&Bottom:Static', '&Bottom:', '&Bottom:Edit', 'Edit4', 'Static7', '&Header:', '&Header:Static', '&Header:Edit', 'Edit5', 'Static8', '&Footer:', '&Footer:Static', '&Footer:Edit', 'Edit6', 'OK', 'OKButton', 'Button', 'Cancel', 'CancelButton', 'Button0', 'Button1', 'Button2', 'Preview', 'PreviewGroupBox', 'GroupBox4', 'Static9', 'Margins (inches)Static', 'Static10', 'PreviewStatic', 'Static11', 'PreviewStatic0', 'PreviewStatic1', 'PreviewStatic2'])'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mTimeoutError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\pywinauto-0.6.7-py3.7.egg\\pywinauto\\application.py\u001b[0m in \u001b[0;36m__resolve_control\u001b[1;34m(self, criteria, timeout, retry_interval)\u001b[0m\n\u001b[0;32m 255\u001b[0m controls.InvalidElement),\n\u001b[1;32m--> 256\u001b[1;33m criteria)\n\u001b[0m\u001b[0;32m 257\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\pywinauto-0.6.7-py3.7.egg\\pywinauto\\timings.py\u001b[0m in \u001b[0;36mwait_until_passes\u001b[1;34m(timeout, retry_interval, func, exceptions, *args, **kwargs)\u001b[0m\n\u001b[0;32m 457\u001b[0m \u001b[0merr\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0moriginal_exception\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 458\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0merr\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 459\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mTimeoutError\u001b[0m: ", + "\nDuring handling of the above exception, another exception occurred:\n", + "\u001b[1;31mMatchError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 56\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 57\u001b[0m \u001b[1;31m# ----- Next Page Setup Dialog ----\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 58\u001b[1;33m \u001b[0mapp\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'PageSetupDlg'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'Printer'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mclick\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 59\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 60\u001b[0m \u001b[0mapp\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'PageSetupDlg'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'Network'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mclick\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\pywinauto-0.6.7-py3.7.egg\\pywinauto\\application.py\u001b[0m in \u001b[0;36m__getattribute__\u001b[1;34m(self, attr_name)\u001b[0m\n\u001b[0;32m 360\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcriteria\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m>=\u001b[0m \u001b[1;36m2\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 361\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 362\u001b[1;33m \u001b[0mctrls\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__resolve_control\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcriteria\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 363\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 364\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\pywinauto-0.6.7-py3.7.egg\\pywinauto\\application.py\u001b[0m in \u001b[0;36m__resolve_control\u001b[1;34m(self, criteria, timeout, retry_interval)\u001b[0m\n\u001b[0;32m 257\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 258\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mTimeoutError\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 259\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0moriginal_exception\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 260\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 261\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mctrl\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\pywinauto-0.6.7-py3.7.egg\\pywinauto\\timings.py\u001b[0m in \u001b[0;36mwait_until_passes\u001b[1;34m(timeout, retry_interval, func, exceptions, *args, **kwargs)\u001b[0m\n\u001b[0;32m 434\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 435\u001b[0m \u001b[1;31m# Call the function with any arguments\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 436\u001b[1;33m \u001b[0mfunc_val\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 437\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 438\u001b[0m \u001b[1;31m# if no exception is raised then we are finished\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\pywinauto-0.6.7-py3.7.egg\\pywinauto\\application.py\u001b[0m in \u001b[0;36m__get_ctrl\u001b[1;34m(self, criteria_)\u001b[0m\n\u001b[0;32m 218\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;34m'backend'\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mctrl_criteria\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 219\u001b[0m \u001b[0mctrl_criteria\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'backend'\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbackend\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mname\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 220\u001b[1;33m \u001b[0mctrl\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbackend\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgeneric_wrapper_class\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfindwindows\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfind_element\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m**\u001b[0m\u001b[0mctrl_criteria\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 221\u001b[0m \u001b[0mprevious_parent\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mctrl\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0melement_info\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 222\u001b[0m \u001b[0mctrls\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mctrl\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\pywinauto-0.6.7-py3.7.egg\\pywinauto\\findwindows.py\u001b[0m in \u001b[0;36mfind_element\u001b[1;34m(**kwargs)\u001b[0m\n\u001b[0;32m 82\u001b[0m \u001b[0mso\u001b[0m \u001b[0mplease\u001b[0m \u001b[0msee\u001b[0m \u001b[1;33m:\u001b[0m\u001b[0mpy\u001b[0m\u001b[1;33m:\u001b[0m\u001b[0mfunc\u001b[0m\u001b[1;33m:\u001b[0m\u001b[0;31m`\u001b[0m\u001b[0mfind_elements\u001b[0m\u001b[0;31m`\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mthe\u001b[0m \u001b[0mfull\u001b[0m \u001b[0mparameters\u001b[0m \u001b[0mdescription\u001b[0m\u001b[1;33m.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 83\u001b[0m \"\"\"\n\u001b[1;32m---> 84\u001b[1;33m \u001b[0melements\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mfind_elements\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 85\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 86\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0melements\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\pywinauto-0.6.7-py3.7.egg\\pywinauto\\findwindows.py\u001b[0m in \u001b[0;36mfind_elements\u001b[1;34m(class_name, class_name_re, parent, process, title, title_re, top_level_only, visible_only, enabled_only, best_match, handle, ctrl_index, found_index, predicate_func, active_only, control_id, control_type, auto_id, framework_id, backend, depth)\u001b[0m\n\u001b[0;32m 301\u001b[0m \u001b[1;31m# since the list of elements was retrieved\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 302\u001b[0m \u001b[1;32mcontinue\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 303\u001b[1;33m \u001b[0melements\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mfindbestmatch\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfind_best_control_matches\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mbest_match\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mwrapped_elems\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 304\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 305\u001b[0m \u001b[1;31m# convert found elements back to ElementInfo\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\pywinauto-0.6.7-py3.7.egg\\pywinauto\\findbestmatch.py\u001b[0m in \u001b[0;36mfind_best_control_matches\u001b[1;34m(search_text, controls)\u001b[0m\n\u001b[0;32m 531\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 532\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mbest_ratio\u001b[0m \u001b[1;33m<\u001b[0m \u001b[0mfind_best_control_match_cutoff\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 533\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mMatchError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mitems\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mname_control_map\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mkeys\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtofind\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msearch_text\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 534\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 535\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[1;33m[\u001b[0m\u001b[0mname_control_map\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mbest_text\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mbest_text\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mbest_texts\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mMatchError\u001b[0m: Could not find 'Printer' in 'dict_keys(['PaperGroupBox', 'Paper', 'GroupBox', 'Static', 'Si&ze:Static', 'Si&ze:', 'ComboBox', 'Si&ze:ComboBox', 'Static0', 'Static1', 'Static2', '&Source:', '&Source:Static', 'ComboBox0', 'ComboBox1', 'ComboBox2', '&Source:ComboBox', 'Orientation', 'GroupBox0', 'GroupBox1', 'GroupBox2', 'OrientationGroupBox', 'P&ortrait', 'P&ortraitRadioButton', 'RadioButton', 'L&andscape', 'L&andscapeRadioButton', 'RadioButton0', 'RadioButton1', 'RadioButton2', 'Margins (inches)', 'Margins (inches)GroupBox', 'GroupBox3', 'Static3', '&Left:Static', '&Left:', '&Left:Edit', 'Edit', 'Static4', '&Right:', '&Right:Static', '&Right:Edit', 'Edit0', 'Edit1', 'Edit2', 'Static5', '&Top:', '&Top:Static', '&Top:Edit', 'Edit3', 'Static6', '&Bottom:Static', '&Bottom:', '&Bottom:Edit', 'Edit4', 'Static7', '&Header:', '&Header:Static', '&Header:Edit', 'Edit5', 'Static8', '&Footer:', '&Footer:Static', '&Footer:Edit', 'Edit6', 'OK', 'OKButton', 'Button', 'Cancel', 'CancelButton', 'Button0', 'Button1', 'Button2', 'Preview', 'PreviewGroupBox', 'GroupBox4', 'Static9', 'Margins (inches)Static', 'Static10', 'PreviewStatic', 'Static11', 'PreviewStatic0', 'PreviewStatic1', 'PreviewStatic2'])'" + ] + } + ], + "source": [ + "# GUI Application automation and testing library\n", + "# Copyright (C) 2006-2018 Mark Mc Mahon and Contributors\n", + "# https://github.com/pywinauto/pywinauto/graphs/contributors\n", + "# http://pywinauto.readthedocs.io/en/latest/credits.html\n", + "# All rights reserved.\n", + "#\n", + "# Redistribution and use in source and binary forms, with or without\n", + "# modification, are permitted provided that the following conditions are met:\n", + "#\n", + "# * Redistributions of source code must retain the above copyright notice, this\n", + "# list of conditions and the following disclaimer.\n", + "#\n", + "# * Redistributions in binary form must reproduce the above copyright notice,\n", + "# this list of conditions and the following disclaimer in the documentation\n", + "# and/or other materials provided with the distribution.\n", + "#\n", + "# * Neither the name of pywinauto nor the names of its\n", + "# contributors may be used to endorse or promote products derived from\n", + "# this software without specific prior written permission.\n", + "#\n", + "# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n", + "# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n", + "# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n", + "# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n", + "# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n", + "# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n", + "# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n", + "# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n", + "# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n", + "# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", + "\n", + "\"\"\"Run some automations to test things\"\"\"\n", + "from __future__ import unicode_literals\n", + "from __future__ import print_function\n", + "\n", + "from pywinauto import application\n", + "#from pywinauto import tests\n", + "#from pywinauto.findbestmatch import MatchError\n", + "\n", + "\n", + "#application.set_timing(3, .5, 10, .5, .4, .2, .2, .1, .2, .5)\n", + "\n", + "app = application.Application()\n", + "app.start(r\"notepad.exe\")\n", + "\n", + "app['Notepad'].wait('ready')\n", + "\n", + "app['Notepad'].menu_select(\"File->PageSetup\")\n", + "\n", + "# ----- Page Setup Dialog ----\n", + "# Select the 4th combobox item\n", + "app['PageSetupDlg']['ComboBox1'].select(4)\n", + "\n", + "# Select the 'Letter' combobox item\n", + "app['PageSetupDlg']['ComboBox1'].select(\"Letter\")\n", + "\n", + "# ----- Next Page Setup Dialog ----\n", + "app['PageSetupDlg']['Printer'].click()\n", + "\n", + "app['PageSetupDlg']['Network'].click()\n", + "\n", + "# ----- Connect To Printer Dialog ----\n", + "# Select a checkbox\n", + "app['ConnectToPrinter']['ExpandByDef'].check()\n", + "# Uncheck it again - but use click this time!\n", + "app['ConnectToPrinter']['ExpandByDef'].click()\n", + "\n", + "app['ConnectToPrinter']['OK'].close_click()\n", + "\n", + "# ----- 2nd Page Setup Dialog again ----\n", + "app['PageSetupDlg2']['Properties'].click()\n", + "\n", + "# ----- Document Properties Dialog ----\n", + "doc_props = app.window(title_re = \".*Document Properties\")\n", + "\n", + "# Two ways of selecting tabs\n", + "doc_props['TabCtrl'].select(2)\n", + "doc_props['TabCtrl'].select(\"Layout\")\n", + "\n", + "# click a Radio button\n", + "doc_props['RotatedLandscape'].click()\n", + "doc_props['Portrait'].click()\n", + "\n", + "# open the Advanced options dialog in two steps\n", + "advbutton = doc_props['Advanced']\n", + "advbutton.click()\n", + "\n", + "# ----- Advanced Options Dialog ----\n", + "# close the 4 windows\n", + "app.window(title_re = \".* Advanced Options\")['Ok'].click()\n", + "\n", + "# ----- Document Properties Dialog again ----\n", + "doc_props['Cancel'].close_click()\n", + "# ----- 2nd Page Setup Dialog again ----\n", + "app['PageSetup2']['OK'].close_click()\n", + "# ----- Page Setup Dialog ----\n", + "app['PageSetup']['Ok'].close_click()\n", + "\n", + "# type some text\n", + "app['Notepad']['Edit'].set_edit_text(\"I am typing s\\xe4me text to Notepad\"\n", + " \"\\r\\n\\r\\nAnd then I am going to quit\")\n", + "\n", + "# exit notepad\n", + "app['NotepadDialog'].menu_select(\"File->Exit\")\n", + "app['Notepad']['No'].close_click()\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pywinauto\n", + "from pywinauto.application import Application\n", + "app = Application(backend=\"uia\").start(\"notepad.exe\")\n", + "app.UntitledNotepad.type_keys(\"%FX\")\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ProcessNotFoundError has been raised. OK.\n", + "AppStartError has been raised. OK.\n", + "========================================\n", + "Windows of this application: [, , , , , ]\n", + "The list of identifiers for the Page Setup dialog in Notepad\n", + "========================================\n", + "Control Identifiers:\n", + "\n", + "Dialog - 'Page Setup' (L363, T179, R913, B537)\n", + "['Dialog', 'Page Setup', 'Page SetupDialog']\n", + "child_window(title=\"Page Setup\", class_name=\"#32770\")\n", + " | \n", + " | GroupBox - 'Paper' (L383, T223, R719, B314)\n", + " | ['PaperGroupBox', 'Paper', 'GroupBox', 'GroupBox0', 'GroupBox1']\n", + " | child_window(title=\"Paper\", class_name=\"Button\")\n", + " | \n", + " | Static - 'Si&ze:' (L395, T249, R449, B262)\n", + " | ['Static', 'Si&ze:Static', 'Si&ze:', 'Static0', 'Static1']\n", + " | child_window(title=\"Si&ze:\", class_name=\"Static\")\n", + " | \n", + " | ComboBox - 'Letter' (L467, T247, R707, B268)\n", + " | ['ComboBox', 'Si&ze:ComboBox', 'ComboBox0', 'ComboBox1']\n", + " | child_window(title=\"Letter\", class_name=\"ComboBox\")\n", + " | \n", + " | Static - '&Source:' (L395, T283, R449, B296)\n", + " | ['Static2', '&Source:', '&Source:Static']\n", + " | child_window(title=\"&Source:\", class_name=\"Static\")\n", + " | \n", + " | ComboBox - '' (L467, T278, R707, B299)\n", + " | ['ComboBox2', '&Source:ComboBox']\n", + " | child_window(class_name=\"ComboBox\")\n", + " | \n", + " | GroupBox - 'Orientation' (L383, T322, R479, B413)\n", + " | ['Orientation', 'GroupBox2', 'OrientationGroupBox']\n", + " | child_window(title=\"Orientation\", class_name=\"Button\")\n", + " | \n", + " | RadioButton - 'P&ortrait' (L395, T343, R473, B363)\n", + " | ['P&ortrait', 'P&ortraitRadioButton', 'RadioButton', 'RadioButton0', 'RadioButton1']\n", + " | child_window(title=\"P&ortrait\", class_name=\"Button\")\n", + " | \n", + " | RadioButton - 'L&andscape' (L395, T377, R473, B397)\n", + " | ['L&andscape', 'L&andscapeRadioButton', 'RadioButton2']\n", + " | child_window(title=\"L&andscape\", class_name=\"Button\")\n", + " | \n", + " | GroupBox - 'Margins (inches)' (L491, T322, R719, B413)\n", + " | ['Margins (inches)', 'Margins (inches)GroupBox', 'GroupBox3']\n", + " | child_window(title=\"Margins (inches)\", class_name=\"Button\")\n", + " | \n", + " | Static - '&Left:' (L503, T348, R551, B361)\n", + " | ['Static3', '&Left:Static', '&Left:']\n", + " | child_window(title=\"&Left:\", class_name=\"Static\")\n", + " | \n", + " | Edit - '0.75' (L551, T343, R593, B363)\n", + " | ['&Left:Edit', 'Edit', 'Edit0', 'Edit1']\n", + " | child_window(title=\"0.75\", class_name=\"Edit\")\n", + " | \n", + " | Static - '&Right:' (L617, T348, R665, B361)\n", + " | ['Static4', '&Right:', '&Right:Static']\n", + " | child_window(title=\"&Right:\", class_name=\"Static\")\n", + " | \n", + " | Edit - '0.75' (L665, T343, R707, B363)\n", + " | ['&Right:Edit', 'Edit2']\n", + " | child_window(title=\"0.75\", class_name=\"Edit\")\n", + " | \n", + " | Static - '&Top:' (L503, T379, R551, B392)\n", + " | ['Static5', '&Top:', '&Top:Static']\n", + " | child_window(title=\"&Top:\", class_name=\"Static\")\n", + " | \n", + " | Edit - '1' (L551, T377, R593, B397)\n", + " | ['&Top:Edit', 'Edit3']\n", + " | child_window(title=\"1\", class_name=\"Edit\")\n", + " | \n", + " | Static - '&Bottom:' (L617, T379, R665, B392)\n", + " | ['Static6', '&Bottom:Static', '&Bottom:']\n", + " | child_window(title=\"&Bottom:\", class_name=\"Static\")\n", + " | \n", + " | Edit - '1' (L665, T377, R707, B397)\n", + " | ['&Bottom:Edit', 'Edit4']\n", + " | child_window(title=\"1\", class_name=\"Edit\")\n", + " | \n", + " | Static - '&Header:' (L383, T429, R427, B442)\n", + " | ['Static7', '&Header:', '&Header:Static']\n", + " | child_window(title=\"&Header:\", class_name=\"Static\")\n", + " | \n", + " | Edit - '&f' (L455, T428, R716, B448)\n", + " | ['&Header:Edit', 'Edit5']\n", + " | child_window(title=\"&f\", class_name=\"Edit\")\n", + " | \n", + " | Static - '&Footer:' (L383, T460, R427, B473)\n", + " | ['Static8', '&Footer:', '&Footer:Static']\n", + " | child_window(title=\"&Footer:\", class_name=\"Static\")\n", + " | \n", + " | Edit - 'Page &p' (L455, T459, R716, B479)\n", + " | ['&Footer:Edit', 'Edit6']\n", + " | child_window(title=\"Page &p\", class_name=\"Edit\")\n", + " | \n", + " | Button - 'OK' (L737, T493, R812, B516)\n", + " | ['OK', 'OKButton', 'Button', 'Button0', 'Button1']\n", + " | child_window(title=\"OK\", class_name=\"Button\")\n", + " | \n", + " | Button - 'Cancel' (L818, T493, R893, B516)\n", + " | ['Cancel', 'CancelButton', 'Button2']\n", + " | child_window(title=\"Cancel\", class_name=\"Button\")\n", + " | \n", + " | Button - '&Printer...' (L818, T493, R893, B516)\n", + " | ['&Printer...', '&Printer...Button', 'Button3']\n", + " | child_window(title=\"&Printer...\", class_name=\"Button\")\n", + " | \n", + " | GroupBox - 'Preview' (L731, T223, R893, B480)\n", + " | ['Preview', 'PreviewGroupBox', 'GroupBox4']\n", + " | child_window(title=\"Preview\", class_name=\"Button\")\n", + " | \n", + " | Static - '' (L762, T285, R862, B415)\n", + " | ['Static9', 'Margins (inches)Static']\n", + " | child_window(class_name=\"Static\")\n", + " | \n", + " | Static - '' (L862, T293, R870, B423)\n", + " | ['Static10', 'PreviewStatic', 'PreviewStatic0', 'PreviewStatic1']\n", + " | child_window(class_name=\"Static\")\n", + " | \n", + " | Static - '' (L770, T415, R870, B423)\n", + " | ['Static11', 'PreviewStatic2']\n", + " | child_window(class_name=\"Static\")\n", + "========================================\n", + "The list of identifiers for the 2nd Edit control in the dialog\n", + "Control Identifiers:\n", + "\n", + "Edit - '0.75' (L665, T343, R707, B363)\n", + "['', 'Edit']\n", + "child_window(title=\"0.75\", class_name=\"Edit\")\n", + "========================================\n" + ] + } + ], + "source": [ + "from __future__ import unicode_literals\n", + "from __future__ import print_function\n", + "\n", + "try:\n", + " from pywinauto import application\n", + "except ImportError:\n", + " import os.path\n", + " pywinauto_path = os.path.abspath(__file__)\n", + " pywinauto_path = os.path.split(os.path.split(pywinauto_path)[0])[0]\n", + " import sys\n", + " sys.path.append(pywinauto_path)\n", + " from pywinauto import application\n", + "\n", + "#from pywinauto import tests\n", + "#from pywinauto.findbestmatch import MatchError\n", + "from pywinauto.timings import Timings\n", + "\n", + "Timings.window_find_timeout = 10\n", + "\n", + "def test_exceptions():\n", + " \"\"\"Test some things that should raise exceptions\"\"\"\n", + " # test that trying to connect_ to a non existent app fails\n", + " try:\n", + " app = application.Application()\n", + " app.connect(path=r\"No process with this please\")\n", + " assert False\n", + " except application.ProcessNotFoundError:\n", + " print('ProcessNotFoundError has been raised. OK.')\n", + "\n", + " # test that trying to connect_ to a non existent app fails\n", + " try:\n", + " app = application.Application()\n", + " app.start(cmd_line = r\"No process with this please\")\n", + " assert False\n", + " except application.AppStartError:\n", + " print('AppStartError has been raised. OK.')\n", + "\n", + "# # try when it isn't connected\n", + "# try:\n", + "# app = application.Application()\n", + "# #app.start_(ur\"c:\\windows\\system32\\notepad.exe\")\n", + "# app.Notepad.click()\n", + "# #assert False\n", + "# except application.AppNotConnected:\n", + "# pass\n", + "\n", + "\n", + "\n", + "def get_info():\n", + " \"\"\"Run Notepad, print some identifiers and exit\"\"\"\n", + " app = application.Application()\n", + "\n", + " app.start(r\"notepad.exe\")\n", + "\n", + " app.Notepad.menu_select(\"File->PageSetup\")\n", + "\n", + " print(\"==\" * 20)\n", + " print(\"Windows of this application:\", app.windows())\n", + "\n", + " print(\"The list of identifiers for the Page Setup dialog in Notepad\")\n", + " print(\"==\" * 20)\n", + " app.PageSetup.print_control_identifiers()\n", + " print(\"==\" * 20)\n", + " print(\"The list of identifiers for the 2nd Edit control in the dialog\")\n", + " app.PageSetup.Edit2.print_control_identifiers()\n", + " print(\"==\" * 20)\n", + "\n", + " app.PageSetup.OK.close_click()\n", + " app.Notepad.menu_select(\"File->Exit\")\n", + "\n", + "\n", + "\n", + "if __name__ == '__main__':\n", + " test_exceptions()\n", + " get_info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# Import pywinauto Application class\n", + "from pywinauto.application import Application\n", + "app = Application(backend=\"uia\").connect(title_re=\".*Configuration - 2 - BenchLink Data Logger 3*\")\n", + "main_dlg = app.window(title='Configuration - 2 - BenchLink Data Logger 3')" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "main_dlg" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Control Identifiers:\n", + "\n", + "Dialog - 'Configuration - 2 - BenchLink Data Logger 3' (L73, T51, R1019, B506)\n", + "['Configuration - 2 - BenchLink Data Logger 3Dialog', 'Dialog', 'Configuration - 2 - BenchLink Data Logger 3']\n", + "child_window(title=\"Configuration - 2 - BenchLink Data Logger 3\", auto_id=\"DL34970Main\", control_type=\"Window\")\n", + " | \n", + " | Pane - 'To get started, click New... from the Configuration Menu to create a new configuration.' (L81, T101, R1011, B165)\n", + " | ['To get started, click New... from the Configuration Menu to create a new configuration.', 'Pane', 'To get started, click New... from the Configuration Menu to create a new configuration.Pane', 'Pane0', 'Pane1']\n", + " | child_window(title=\"To get started, click New... from the Configuration Menu to create a new configuration.\", auto_id=\"m_oStatusPanelCtrl\", control_type=\"Pane\")\n", + " | | \n", + " | | Button - 'Experience BenchLink Data Logger Pro...' (L935, T133, R1158, B155)\n", + " | | ['Button', 'Experience BenchLink Data Logger Pro...Button', 'Experience BenchLink Data Logger Pro...', 'Button0', 'Button1']\n", + " | | child_window(title=\"Experience BenchLink Data Logger Pro...\", auto_id=\"m_btnQuickStrtVideo\", control_type=\"Button\")\n", + " | | \n", + " | | Pane - 'Inactive' (L691, T109, R933, B159)\n", + " | | ['Pane2', 'InactivePane', 'Inactive', 'InactivePane0', 'InactivePane1', 'Inactive0', 'Inactive1']\n", + " | | child_window(title=\"Inactive\", auto_id=\"m_oMonitorChannelCtrl\", control_type=\"Pane\")\n", + " | | | \n", + " | | | Button - 'None' (L843, T133, R867, B156)\n", + " | | | ['Button2', 'NoneButton', 'None', 'None0', 'None1']\n", + " | | | child_window(title=\"None\", auto_id=\"m_btnMonitor\", control_type=\"Button\")\n", + " | | | \n", + " | | | Static - 'None' (L699, T117, R1097, B133)\n", + " | | | ['NoneStatic', 'Static', 'None2', 'Static0', 'Static1']\n", + " | | | child_window(title=\"None\", auto_id=\"m_lblMonitor\", control_type=\"Text\")\n", + " | | | \n", + " | | | Edit - '' (L699, T133, R835, B155)\n", + " | | | ['Edit', 'NoneEdit', 'Edit0', 'Edit1']\n", + " | | | child_window(auto_id=\"m_txtMonitor\", control_type=\"Edit\")\n", + " | | \n", + " | | Pane - 'Inactive' (L289, T133, R308, B152)\n", + " | | ['Pane3', 'InactivePane2', 'Inactive2']\n", + " | | child_window(title=\"Inactive\", auto_id=\"m_picLock\", control_type=\"Pane\")\n", + " | | \n", + " | | Static - 'Configuration:' (L169, T109, R305, B125)\n", + " | | ['Configuration:', 'Configuration:Static', 'Static2']\n", + " | | child_window(title=\"Configuration:\", auto_id=\"m_lblConfiguration\", control_type=\"Text\")\n", + " | | \n", + " | | Static - 'Status:' (L81, T133, R161, B157)\n", + " | | ['Status:Static', 'Static3', 'Status:']\n", + " | | child_window(title=\"Status:\", auto_id=\"m_lblStatus\", control_type=\"Text\")\n", + " | | \n", + " | | Static - 'Instruments:' (L337, T109, R473, B125)\n", + " | | ['Static4', 'Instruments:Static', 'Instruments:']\n", + " | | child_window(title=\"Instruments:\", auto_id=\"m_lbl34970A\", control_type=\"Text\")\n", + " | | \n", + " | | Static - 'Scan Mode:' (L489, T109, R625, B125)\n", + " | | ['Static5', 'Scan Mode:Static', 'Scan Mode:']\n", + " | | child_window(title=\"Scan Mode:\", auto_id=\"m_lblScanMode\", control_type=\"Text\")\n", + " | | \n", + " | | Edit - 'Scan Mode:' (L169, T133, R281, B153)\n", + " | | ['Edit2', 'Configuration:Edit']\n", + " | | child_window(title=\"Scan Mode:\", auto_id=\"m_txtConfigurationValue\", control_type=\"Edit\")\n", + " | | \n", + " | | Static - '1 Connected' (L337, T133, R449, B153)\n", + " | | ['Static6', '1 ConnectedStatic', '1 Connected']\n", + " | | child_window(title=\"1 Connected\", auto_id=\"m_lbl34970AValue\", control_type=\"Text\")\n", + " | | \n", + " | | Static - 'Inactive' (L489, T133, R601, B153)\n", + " | | ['Static7', 'InactiveStatic', 'Inactive3']\n", + " | | child_window(title=\"Inactive\", auto_id=\"m_lblScanModeValue\", control_type=\"Text\")\n", + " | \n", + " | TabControl - '' (L81, T171, R1027, B507)\n", + " | ['TabControlQuick Graph', 'Status:TabControl', 'TabControlConfigure Instruments ', 'InactiveTabControl', 'TabControlScan and Log Data', 'TabControl', 'TabControlConfigure Channels ']\n", + " | child_window(auto_id=\"m_tabctrlMain\", control_type=\"Tab\")\n", + " | | \n", + " | | Pane - 'Scan and Log Data' (L85, T196, R1023, B503)\n", + " | | ['Scan and Log Data', 'Scan and Log DataPane', 'Pane4', 'Scan and Log Data0', 'Scan and Log Data1']\n", + " | | child_window(title=\"Scan and Log Data\", auto_id=\"m_tpageScanLog\", control_type=\"Pane\")\n", + " | | | \n", + " | | | Pane - '' (L85, T196, R1023, B503)\n", + " | | | ['Status:Pane', 'Pane5', 'Status:Pane0', 'Status:Pane1']\n", + " | | | child_window(auto_id=\"scanLogDataCtrl1\", control_type=\"Pane\")\n", + " | | | | \n", + " | | | | Pane - 'You must first configure instruments before configuring channels.' (L85, T300, R1023, B503)\n", + " | | | | ['You must first configure instruments before configuring channels.', 'Pane6', 'You must first configure instruments before configuring channels.Pane']\n", + " | | | | child_window(title=\"You must first configure instruments before configuring channels.\", auto_id=\"m_gridScanResult\", control_type=\"Pane\")\n", + " | | | | | \n", + " | | | | | ScrollBar - 'Vertical' (L1004, T302, R1021, B484)\n", + " | | | | | ['ScrollBar', 'VerticalScrollBar', 'Vertical', 'ScrollBar0', 'ScrollBar1']\n", + " | | | | | child_window(title=\"Vertical\", auto_id=\"NonClientVerticalScrollBar\", control_type=\"ScrollBar\")\n", + " | | | | | | \n", + " | | | | | | Button - 'Line up' (L1004, T302, R1021, B319)\n", + " | | | | | | ['Button3', 'Line up', 'Line upButton']\n", + " | | | | | | child_window(title=\"Line up\", auto_id=\"UpButton\", control_type=\"Button\")\n", + " | | | | | | \n", + " | | | | | | Thumb - 'Position' (L1004, T319, R1021, B420)\n", + " | | | | | | ['Position', 'Thumb', 'PositionThumb', 'Position0', 'Position1', 'Thumb0', 'Thumb1', 'PositionThumb0', 'PositionThumb1']\n", + " | | | | | | child_window(title=\"Position\", auto_id=\"ScrollbarThumb\", control_type=\"Thumb\")\n", + " | | | | | | \n", + " | | | | | | Button - 'Page down' (L1004, T420, R1021, B467)\n", + " | | | | | | ['Page down', 'Button4', 'Page downButton']\n", + " | | | | | | child_window(title=\"Page down\", auto_id=\"DownPageButton\", control_type=\"Button\")\n", + " | | | | | | \n", + " | | | | | | Button - 'Line down' (L1004, T467, R1021, B484)\n", + " | | | | | | ['Button5', 'Line down', 'Line downButton']\n", + " | | | | | | child_window(title=\"Line down\", auto_id=\"DownButton\", control_type=\"Button\")\n", + " | | | | | \n", + " | | | | | ScrollBar - 'Horizontal' (L87, T484, R1004, B501)\n", + " | | | | | ['ScrollBar2', 'Horizontal', 'HorizontalScrollBar', 'Horizontal0', 'Horizontal1', 'HorizontalScrollBar0', 'HorizontalScrollBar1']\n", + " | | | | | child_window(title=\"Horizontal\", auto_id=\"NonClientHorizontalScrollBar\", control_type=\"ScrollBar\")\n", + " | | | | | | \n", + " | | | | | | Button - 'Column left' (L87, T484, R104, B501)\n", + " | | | | | | ['Column leftButton', 'Button6', 'Column left', 'Column leftButton0', 'Column leftButton1', 'Column left0', 'Column left1']\n", + " | | | | | | child_window(title=\"Column left\", auto_id=\"UpButton\", control_type=\"Button\")\n", + " | | | | | | \n", + " | | | | | | Thumb - 'Position' (L104, T484, R767, B501)\n", + " | | | | | | ['Position2', 'Thumb2', 'PositionThumb2']\n", + " | | | | | | child_window(title=\"Position\", auto_id=\"ScrollbarThumb\", control_type=\"Thumb\")\n", + " | | | | | | \n", + " | | | | | | Button - 'Page right' (L767, T484, R987, B501)\n", + " | | | | | | ['Page right', 'Button7', 'Page rightButton', 'Page right0', 'Page right1', 'Page rightButton0', 'Page rightButton1']\n", + " | | | | | | child_window(title=\"Page right\", auto_id=\"DownPageButton\", control_type=\"Button\")\n", + " | | | | | | \n", + " | | | | | | Button - 'Column right' (L987, T484, R1004, B501)\n", + " | | | | | | ['Button8', 'Column rightButton', 'Column right', 'Column rightButton0', 'Column rightButton1', 'Column right0', 'Column right1']\n", + " | | | | | | child_window(title=\"Column right\", auto_id=\"DownButton\", control_type=\"Button\")\n", + " | | | | | \n", + " | | | | | Thumb - 'Size box' (L1004, T484, R1021, B501)\n", + " | | | | | ['Size boxThumb', 'Thumb3', 'Size box']\n", + " | | | | | child_window(title=\"Size box\", control_type=\"Thumb\")\n", + " | | | | | \n", + " | | | | | Custom - 'Row 0' (L87, T302, R1044, B321)\n", + " | | | | | ['Row 0', 'Custom', 'Row 0Custom', 'Custom0', 'Custom1', 'Row 00', 'Row 01', 'Row 0Custom0', 'Row 0Custom1']\n", + " | | | | | child_window(title=\"Row 0\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 0 Column 0' (L87, T302, R112, B321)\n", + " | | | | | | ['Header', 'Row 0 Column 0Header', 'Row 0 Column 0', 'Header0', 'Header1', 'Row 0 Column 0Header0', 'Row 0 Column 0Header1', 'Row 0 Column 00', 'Row 0 Column 01']\n", + " | | | | | | child_window(title=\"Row 0 Column 0\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 0 Column 1' (L112, T302, R1308, B321)\n", + " | | | | | | ['Header2', 'Row 0 Column 1', 'Row 0 Column 1Header', 'Row 0 Column 1Header0', 'Row 0 Column 1Header1']\n", + " | | | | | | child_window(title=\"Row 0 Column 1\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 0 Column 2' (L112, T302, R1308, B321)\n", + " | | | | | | ['Header3', 'Row 0 Column 2Header', 'Row 0 Column 2', 'Row 0 Column 2Header0', 'Row 0 Column 2Header1', 'Row 0 Column 20', 'Row 0 Column 21']\n", + " | | | | | | child_window(title=\"Row 0 Column 2\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 0 Column 3' (L112, T302, R1308, B321)\n", + " | | | | | | ['Row 0 Column 3Header', 'Header4', 'Row 0 Column 3', 'Row 0 Column 3Header0', 'Row 0 Column 3Header1', 'Row 0 Column 30', 'Row 0 Column 31']\n", + " | | | | | | child_window(title=\"Row 0 Column 3\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 0 Column 4' (L112, T302, R1308, B321)\n", + " | | | | | | ['Row 0 Column 4Header', 'Header5', 'Row 0 Column 4', 'Row 0 Column 4Header0', 'Row 0 Column 4Header1', 'Row 0 Column 40', 'Row 0 Column 41']\n", + " | | | | | | child_window(title=\"Row 0 Column 4\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 0 Column 5' (L112, T302, R1308, B321)\n", + " | | | | | | ['Header6', 'Row 0 Column 5', 'Row 0 Column 5Header', 'Row 0 Column 50', 'Row 0 Column 51', 'Row 0 Column 5Header0', 'Row 0 Column 5Header1']\n", + " | | | | | | child_window(title=\"Row 0 Column 5\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 0 Column 6' (L112, T302, R1308, B321)\n", + " | | | | | | ['Header7', 'Row 0 Column 6Header', 'Row 0 Column 6', 'Row 0 Column 6Header0', 'Row 0 Column 6Header1', 'Row 0 Column 60', 'Row 0 Column 61']\n", + " | | | | | | child_window(title=\"Row 0 Column 6\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 0 Column 7' (L112, T302, R1308, B321)\n", + " | | | | | | ['Header8', 'Row 0 Column 7', 'Row 0 Column 7Header', 'Row 0 Column 70', 'Row 0 Column 71', 'Row 0 Column 7Header0', 'Row 0 Column 7Header1']\n", + " | | | | | | child_window(title=\"Row 0 Column 7\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 0 Column 8' (L112, T302, R1308, B321)\n", + " | | | | | | ['Header9', 'Row 0 Column 8', 'Row 0 Column 8Header', 'Row 0 Column 80', 'Row 0 Column 81', 'Row 0 Column 8Header0', 'Row 0 Column 8Header1']\n", + " | | | | | | child_window(title=\"Row 0 Column 8\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 0 Column 9' (L112, T302, R1308, B321)\n", + " | | | | | | ['Header10', 'Row 0 Column 9Header', 'Row 0 Column 9', 'Row 0 Column 9Header0', 'Row 0 Column 9Header1', 'Row 0 Column 90', 'Row 0 Column 91']\n", + " | | | | | | child_window(title=\"Row 0 Column 9\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 0 Column 10' (L112, T302, R1308, B321)\n", + " | | | | | | ['Header11', 'Row 0 Column 10', 'Row 0 Column 10Header']\n", + " | | | | | | child_window(title=\"Row 0 Column 10\", control_type=\"Header\")\n", + " | | | | | \n", + " | | | | | Custom - 'Row 1' (L87, T321, R1308, B340)\n", + " | | | | | ['Custom2', 'Row 1Custom', 'Row 1', 'Row 1Custom0', 'Row 1Custom1']\n", + " | | | | | child_window(title=\"Row 1\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 1 Column 0' (L87, T321, R112, B340)\n", + " | | | | | | ['Row 1 Column 0', 'Header12', 'Row 1 Column 0Header', 'Row 1 Column 00', 'Row 1 Column 01', 'Row 1 Column 0Header0', 'Row 1 Column 0Header1']\n", + " | | | | | | child_window(title=\"Row 1 Column 0\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 1 Column 1' (L112, T321, R342, B340)\n", + " | | | | | | ['Header13', 'Row 1 Column 1Header', 'Row 1 Column 1', 'Row 1 Column 1Header0', 'Row 1 Column 1Header1']\n", + " | | | | | | child_window(title=\"Row 1 Column 1\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 1 Column 2' (L342, T321, R542, B340)\n", + " | | | | | | ['Row 1 Column 2', 'Header14', 'Row 1 Column 2Header', 'Row 1 Column 20', 'Row 1 Column 21', 'Row 1 Column 2Header0', 'Row 1 Column 2Header1']\n", + " | | | | | | child_window(title=\"Row 1 Column 2\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 1 Column 3' (L542, T321, R692, B340)\n", + " | | | | | | ['Header15', 'Row 1 Column 3', 'Row 1 Column 3Header', 'Row 1 Column 30', 'Row 1 Column 31', 'Row 1 Column 3Header0', 'Row 1 Column 3Header1']\n", + " | | | | | | child_window(title=\"Row 1 Column 3\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 1 Column 4' (L692, T321, R812, B340)\n", + " | | | | | | ['Header16', 'Row 1 Column 4', 'Row 1 Column 4Header', 'Row 1 Column 40', 'Row 1 Column 41', 'Row 1 Column 4Header0', 'Row 1 Column 4Header1']\n", + " | | | | | | child_window(title=\"Row 1 Column 4\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 1 Column 5' (L0, T0, R0, B0)\n", + " | | | | | | ['Header17', 'Row 1 Column 5', 'Row 1 Column 5Header', 'Row 1 Column 50', 'Row 1 Column 51', 'Row 1 Column 5Header0', 'Row 1 Column 5Header1']\n", + " | | | | | | child_window(title=\"Row 1 Column 5\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 1 Column 6' (L0, T0, R0, B0)\n", + " | | | | | | ['Row 1 Column 6Header', 'Header18', 'Row 1 Column 6', 'Row 1 Column 6Header0', 'Row 1 Column 6Header1', 'Row 1 Column 60', 'Row 1 Column 61']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " | | | | | | child_window(title=\"Row 1 Column 6\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 1 Column 7' (L812, T321, R912, B340)\n", + " | | | | | | ['Header19', 'Row 1 Column 7Header', 'Row 1 Column 7', 'Row 1 Column 7Header0', 'Row 1 Column 7Header1', 'Row 1 Column 70', 'Row 1 Column 71']\n", + " | | | | | | child_window(title=\"Row 1 Column 7\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 1 Column 8' (L912, T321, R1044, B340)\n", + " | | | | | | ['Header20', 'Row 1 Column 8Header', 'Row 1 Column 8', 'Row 1 Column 8Header0', 'Row 1 Column 8Header1', 'Row 1 Column 80', 'Row 1 Column 81']\n", + " | | | | | | child_window(title=\"Row 1 Column 8\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 1 Column 9' (L1044, T321, R1176, B340)\n", + " | | | | | | ['Row 1 Column 9', 'Header21', 'Row 1 Column 9Header', 'Row 1 Column 90', 'Row 1 Column 91', 'Row 1 Column 9Header0', 'Row 1 Column 9Header1']\n", + " | | | | | | child_window(title=\"Row 1 Column 9\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 1 Column 10' (L1176, T321, R1308, B340)\n", + " | | | | | | ['Header22', 'Row 1 Column 10Header', 'Row 1 Column 10']\n", + " | | | | | | child_window(title=\"Row 1 Column 10\", control_type=\"Header\")\n", + " | | | | | \n", + " | | | | | Custom - 'Row 2' (L87, T340, R1308, B359)\n", + " | | | | | ['Row 2', 'Row 2Custom', 'Custom3', 'Row 20', 'Row 21', 'Row 2Custom0', 'Row 2Custom1']\n", + " | | | | | child_window(title=\"Row 2\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 2 Column 0' (L87, T340, R112, B359)\n", + " | | | | | | ['Header23', 'Row 2 Column 0', 'Row 2 Column 0Header', 'Row 2 Column 00', 'Row 2 Column 01', 'Row 2 Column 0Header0', 'Row 2 Column 0Header1']\n", + " | | | | | | child_window(title=\"Row 2 Column 0\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 2 Column 1' (L112, T340, R342, B359)\n", + " | | | | | | ['Row 2 Column 1', 'Row 2 Column 1Custom', 'Custom4', 'Row 2 Column 1Custom0', 'Row 2 Column 1Custom1']\n", + " | | | | | | child_window(title=\"Row 2 Column 1\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 2 Column 2' (L342, T340, R542, B359)\n", + " | | | | | | ['Row 2 Column 2Custom', 'Row 2 Column 2', 'Custom5', 'Row 2 Column 2Custom0', 'Row 2 Column 2Custom1', 'Row 2 Column 20', 'Row 2 Column 21']\n", + " | | | | | | child_window(title=\"Row 2 Column 2\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 2 Column 3' (L542, T340, R692, B359)\n", + " | | | | | | ['Row 2 Column 3', 'Custom6', 'Row 2 Column 3Custom', 'Row 2 Column 30', 'Row 2 Column 31', 'Row 2 Column 3Custom0', 'Row 2 Column 3Custom1']\n", + " | | | | | | child_window(title=\"Row 2 Column 3\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 2 Column 4' (L692, T340, R812, B359)\n", + " | | | | | | ['Row 2 Column 4', 'Custom7', 'Row 2 Column 4Custom', 'Row 2 Column 40', 'Row 2 Column 41', 'Row 2 Column 4Custom0', 'Row 2 Column 4Custom1']\n", + " | | | | | | child_window(title=\"Row 2 Column 4\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 2 Column 5' (L0, T0, R0, B0)\n", + " | | | | | | ['Row 2 Column 5Custom', 'Row 2 Column 5', 'Custom8', 'Row 2 Column 5Custom0', 'Row 2 Column 5Custom1', 'Row 2 Column 50', 'Row 2 Column 51']\n", + " | | | | | | child_window(title=\"Row 2 Column 5\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 2 Column 6' (L0, T0, R0, B0)\n", + " | | | | | | ['Row 2 Column 6', 'Custom9', 'Row 2 Column 6Custom', 'Row 2 Column 60', 'Row 2 Column 61', 'Row 2 Column 6Custom0', 'Row 2 Column 6Custom1']\n", + " | | | | | | child_window(title=\"Row 2 Column 6\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 2 Column 7' (L812, T340, R912, B359)\n", + " | | | | | | ['Row 2 Column 7', 'Row 2 Column 7Custom', 'Custom10', 'Row 2 Column 70', 'Row 2 Column 71', 'Row 2 Column 7Custom0', 'Row 2 Column 7Custom1']\n", + " | | | | | | child_window(title=\"Row 2 Column 7\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 2 Column 8' (L912, T340, R1044, B359)\n", + " | | | | | | ['Row 2 Column 8Custom', 'Row 2 Column 8', 'Custom11', 'Row 2 Column 8Custom0', 'Row 2 Column 8Custom1', 'Row 2 Column 80', 'Row 2 Column 81']\n", + " | | | | | | child_window(title=\"Row 2 Column 8\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 2 Column 9' (L1044, T340, R1176, B359)\n", + " | | | | | | ['Row 2 Column 9', 'Row 2 Column 9Custom', 'Custom12', 'Row 2 Column 90', 'Row 2 Column 91', 'Row 2 Column 9Custom0', 'Row 2 Column 9Custom1']\n", + " | | | | | | child_window(title=\"Row 2 Column 9\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 2 Column 10' (L1176, T340, R1308, B359)\n", + " | | | | | | ['Row 2 Column 10Custom', 'Row 2 Column 10', 'Custom13']\n", + " | | | | | | child_window(title=\"Row 2 Column 10\", control_type=\"Custom\")\n", + " | | | | | \n", + " | | | | | Custom - 'Row 3' (L87, T359, R1308, B378)\n", + " | | | | | ['Row 3', 'Custom14', 'Row 3Custom']\n", + " | | | | | child_window(title=\"Row 3\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 3 Column 0' (L87, T359, R112, B378)\n", + " | | | | | | ['Header24', 'Row 3 Column 0Header', 'Row 3 Column 0']\n", + " | | | | | | child_window(title=\"Row 3 Column 0\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 3 Column 1' (L112, T359, R342, B378)\n", + " | | | | | | ['Row 3 Column 1', 'Custom15', 'Row 3 Column 1Custom']\n", + " | | | | | | child_window(title=\"Row 3 Column 1\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 3 Column 2' (L342, T359, R542, B378)\n", + " | | | | | | ['Row 3 Column 2', 'Row 3 Column 2Custom', 'Custom16']\n", + " | | | | | | child_window(title=\"Row 3 Column 2\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 3 Column 3' (L542, T359, R692, B378)\n", + " | | | | | | ['Row 3 Column 3', 'Row 3 Column 3Custom', 'Custom17']\n", + " | | | | | | child_window(title=\"Row 3 Column 3\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 3 Column 4' (L692, T359, R812, B378)\n", + " | | | | | | ['Row 3 Column 4Custom', 'Custom18', 'Row 3 Column 4']\n", + " | | | | | | child_window(title=\"Row 3 Column 4\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 3 Column 5' (L0, T0, R0, B0)\n", + " | | | | | | ['Row 3 Column 5Custom', 'Custom19', 'Row 3 Column 5']\n", + " | | | | | | child_window(title=\"Row 3 Column 5\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 3 Column 6' (L0, T0, R0, B0)\n", + " | | | | | | ['Custom20', 'Row 3 Column 6Custom', 'Row 3 Column 6']\n", + " | | | | | | child_window(title=\"Row 3 Column 6\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 3 Column 7' (L812, T359, R912, B378)\n", + " | | | | | | ['Row 3 Column 7', 'Custom21', 'Row 3 Column 7Custom']\n", + " | | | | | | child_window(title=\"Row 3 Column 7\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 3 Column 8' (L912, T359, R1044, B378)\n", + " | | | | | | ['Row 3 Column 8Custom', 'Row 3 Column 8', 'Custom22']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " | | | | | | child_window(title=\"Row 3 Column 8\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 3 Column 9' (L1044, T359, R1176, B378)\n", + " | | | | | | ['Row 3 Column 9Custom', 'Custom23', 'Row 3 Column 9']\n", + " | | | | | | child_window(title=\"Row 3 Column 9\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 3 Column 10' (L1176, T359, R1308, B378)\n", + " | | | | | | ['Row 3 Column 10', 'Custom24', 'Row 3 Column 10Custom']\n", + " | | | | | | child_window(title=\"Row 3 Column 10\", control_type=\"Custom\")\n", + " | | | | | \n", + " | | | | | Custom - 'Row 4' (L87, T378, R1308, B397)\n", + " | | | | | ['Row 4', 'Custom25', 'Row 4Custom']\n", + " | | | | | child_window(title=\"Row 4\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 4 Column 0' (L87, T378, R112, B397)\n", + " | | | | | | ['Header25', 'Row 4 Column 0Header', 'Row 4 Column 0']\n", + " | | | | | | child_window(title=\"Row 4 Column 0\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 4 Column 1' (L112, T378, R342, B397)\n", + " | | | | | | ['Row 4 Column 1Custom', 'Custom26', 'Row 4 Column 1']\n", + " | | | | | | child_window(title=\"Row 4 Column 1\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 4 Column 2' (L342, T378, R542, B397)\n", + " | | | | | | ['Row 4 Column 2', 'Row 4 Column 2Custom', 'Custom27']\n", + " | | | | | | child_window(title=\"Row 4 Column 2\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 4 Column 3' (L542, T378, R692, B397)\n", + " | | | | | | ['Row 4 Column 3Custom', 'Row 4 Column 3', 'Custom28']\n", + " | | | | | | child_window(title=\"Row 4 Column 3\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 4 Column 4' (L692, T378, R812, B397)\n", + " | | | | | | ['Row 4 Column 4Custom', 'Custom29', 'Row 4 Column 4']\n", + " | | | | | | child_window(title=\"Row 4 Column 4\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 4 Column 5' (L0, T0, R0, B0)\n", + " | | | | | | ['Row 4 Column 5', 'Custom30', 'Row 4 Column 5Custom']\n", + " | | | | | | child_window(title=\"Row 4 Column 5\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 4 Column 6' (L0, T0, R0, B0)\n", + " | | | | | | ['Row 4 Column 6Custom', 'Custom31', 'Row 4 Column 6']\n", + " | | | | | | child_window(title=\"Row 4 Column 6\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 4 Column 7' (L812, T378, R912, B397)\n", + " | | | | | | ['Custom32', 'Row 4 Column 7Custom', 'Row 4 Column 7']\n", + " | | | | | | child_window(title=\"Row 4 Column 7\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 4 Column 8' (L912, T378, R1044, B397)\n", + " | | | | | | ['Custom33', 'Row 4 Column 8Custom', 'Row 4 Column 8']\n", + " | | | | | | child_window(title=\"Row 4 Column 8\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 4 Column 9' (L1044, T378, R1176, B397)\n", + " | | | | | | ['Row 4 Column 9Custom', 'Custom34', 'Row 4 Column 9']\n", + " | | | | | | child_window(title=\"Row 4 Column 9\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 4 Column 10' (L1176, T378, R1308, B397)\n", + " | | | | | | ['Row 4 Column 10', 'Row 4 Column 10Custom', 'Custom35']\n", + " | | | | | | child_window(title=\"Row 4 Column 10\", control_type=\"Custom\")\n", + " | | | | | \n", + " | | | | | Custom - 'Row 5' (L87, T397, R1308, B416)\n", + " | | | | | ['Row 5Custom', 'Row 5', 'Custom36']\n", + " | | | | | child_window(title=\"Row 5\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 5 Column 0' (L87, T397, R112, B416)\n", + " | | | | | | ['Header26', 'Row 5 Column 0', 'Row 5 Column 0Header']\n", + " | | | | | | child_window(title=\"Row 5 Column 0\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 5 Column 1' (L112, T397, R342, B416)\n", + " | | | | | | ['Row 5 Column 1', 'Custom37', 'Row 5 Column 1Custom']\n", + " | | | | | | child_window(title=\"Row 5 Column 1\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 5 Column 2' (L342, T397, R542, B416)\n", + " | | | | | | ['Custom38', 'Row 5 Column 2Custom', 'Row 5 Column 2']\n", + " | | | | | | child_window(title=\"Row 5 Column 2\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 5 Column 3' (L542, T397, R692, B416)\n", + " | | | | | | ['Custom39', 'Row 5 Column 3', 'Row 5 Column 3Custom']\n", + " | | | | | | child_window(title=\"Row 5 Column 3\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 5 Column 4' (L692, T397, R812, B416)\n", + " | | | | | | ['Row 5 Column 4Custom', 'Custom40', 'Row 5 Column 4']\n", + " | | | | | | child_window(title=\"Row 5 Column 4\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 5 Column 5' (L0, T0, R0, B0)\n", + " | | | | | | ['Custom41', 'Row 5 Column 5', 'Row 5 Column 5Custom']\n", + " | | | | | | child_window(title=\"Row 5 Column 5\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 5 Column 6' (L0, T0, R0, B0)\n", + " | | | | | | ['Row 5 Column 6', 'Custom42', 'Row 5 Column 6Custom']\n", + " | | | | | | child_window(title=\"Row 5 Column 6\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 5 Column 7' (L812, T397, R912, B416)\n", + " | | | | | | ['Row 5 Column 7', 'Row 5 Column 7Custom', 'Custom43']\n", + " | | | | | | child_window(title=\"Row 5 Column 7\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 5 Column 8' (L912, T397, R1044, B416)\n", + " | | | | | | ['Row 5 Column 8', 'Custom44', 'Row 5 Column 8Custom']\n", + " | | | | | | child_window(title=\"Row 5 Column 8\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 5 Column 9' (L1044, T397, R1176, B416)\n", + " | | | | | | ['Row 5 Column 9Custom', 'Custom45', 'Row 5 Column 9']\n", + " | | | | | | child_window(title=\"Row 5 Column 9\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 5 Column 10' (L1176, T397, R1308, B416)\n", + " | | | | | | ['Row 5 Column 10Custom', 'Custom46', 'Row 5 Column 10']\n", + " | | | | | | child_window(title=\"Row 5 Column 10\", control_type=\"Custom\")\n", + " | | | | | \n", + " | | | | | Custom - 'Row 6' (L87, T416, R1308, B435)\n", + " | | | | | ['Row 6', 'Custom47', 'Row 6Custom']\n", + " | | | | | child_window(title=\"Row 6\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 6 Column 0' (L87, T416, R112, B435)\n", + " | | | | | | ['Header27', 'Row 6 Column 0', 'Row 6 Column 0Header']\n", + " | | | | | | child_window(title=\"Row 6 Column 0\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 6 Column 1' (L112, T416, R342, B435)\n", + " | | | | | | ['Row 6 Column 1', 'Row 6 Column 1Custom', 'Custom48']\n", + " | | | | | | child_window(title=\"Row 6 Column 1\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 6 Column 2' (L342, T416, R542, B435)\n", + " | | | | | | ['Row 6 Column 2Custom', 'Custom49', 'Row 6 Column 2']\n", + " | | | | | | child_window(title=\"Row 6 Column 2\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 6 Column 3' (L542, T416, R692, B435)\n", + " | | | | | | ['Custom50', 'Row 6 Column 3', 'Row 6 Column 3Custom']\n", + " | | | | | | child_window(title=\"Row 6 Column 3\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 6 Column 4' (L692, T416, R812, B435)\n", + " | | | | | | ['Row 6 Column 4Custom', 'Row 6 Column 4', 'Custom51']\n", + " | | | | | | child_window(title=\"Row 6 Column 4\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 6 Column 5' (L0, T0, R0, B0)\n", + " | | | | | | ['Row 6 Column 5', 'Row 6 Column 5Custom', 'Custom52']\n", + " | | | | | | child_window(title=\"Row 6 Column 5\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 6 Column 6' (L0, T0, R0, B0)\n", + " | | | | | | ['Row 6 Column 6Custom', 'Custom53', 'Row 6 Column 6']\n", + " | | | | | | child_window(title=\"Row 6 Column 6\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 6 Column 7' (L812, T416, R912, B435)\n", + " | | | | | | ['Row 6 Column 7', 'Custom54', 'Row 6 Column 7Custom']\n", + " | | | | | | child_window(title=\"Row 6 Column 7\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 6 Column 8' (L912, T416, R1044, B435)\n", + " | | | | | | ['Row 6 Column 8', 'Custom55', 'Row 6 Column 8Custom']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " | | | | | | child_window(title=\"Row 6 Column 8\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 6 Column 9' (L1044, T416, R1176, B435)\n", + " | | | | | | ['Row 6 Column 9Custom', 'Custom56', 'Row 6 Column 9']\n", + " | | | | | | child_window(title=\"Row 6 Column 9\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 6 Column 10' (L1176, T416, R1308, B435)\n", + " | | | | | | ['Row 6 Column 10Custom', 'Row 6 Column 10', 'Custom57']\n", + " | | | | | | child_window(title=\"Row 6 Column 10\", control_type=\"Custom\")\n", + " | | | | | \n", + " | | | | | Custom - 'Row 7' (L87, T435, R1308, B454)\n", + " | | | | | ['Custom58', 'Row 7Custom', 'Row 7']\n", + " | | | | | child_window(title=\"Row 7\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 7 Column 0' (L87, T435, R112, B454)\n", + " | | | | | | ['Header28', 'Row 7 Column 0Header', 'Row 7 Column 0']\n", + " | | | | | | child_window(title=\"Row 7 Column 0\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 7 Column 1' (L112, T435, R342, B454)\n", + " | | | | | | ['Row 7 Column 1', 'Custom59', 'Row 7 Column 1Custom']\n", + " | | | | | | child_window(title=\"Row 7 Column 1\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 7 Column 2' (L342, T435, R542, B454)\n", + " | | | | | | ['Custom60', 'Row 7 Column 2', 'Row 7 Column 2Custom']\n", + " | | | | | | child_window(title=\"Row 7 Column 2\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 7 Column 3' (L542, T435, R692, B454)\n", + " | | | | | | ['Row 7 Column 3Custom', 'Row 7 Column 3', 'Custom61']\n", + " | | | | | | child_window(title=\"Row 7 Column 3\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 7 Column 4' (L692, T435, R812, B454)\n", + " | | | | | | ['Row 7 Column 4', 'Custom62', 'Row 7 Column 4Custom']\n", + " | | | | | | child_window(title=\"Row 7 Column 4\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 7 Column 5' (L0, T0, R0, B0)\n", + " | | | | | | ['Row 7 Column 5', 'Custom63', 'Row 7 Column 5Custom']\n", + " | | | | | | child_window(title=\"Row 7 Column 5\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 7 Column 6' (L0, T0, R0, B0)\n", + " | | | | | | ['Row 7 Column 6Custom', 'Custom64', 'Row 7 Column 6']\n", + " | | | | | | child_window(title=\"Row 7 Column 6\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 7 Column 7' (L812, T435, R912, B454)\n", + " | | | | | | ['Row 7 Column 7Custom', 'Custom65', 'Row 7 Column 7']\n", + " | | | | | | child_window(title=\"Row 7 Column 7\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 7 Column 8' (L912, T435, R1044, B454)\n", + " | | | | | | ['Row 7 Column 8Custom', 'Custom66', 'Row 7 Column 8']\n", + " | | | | | | child_window(title=\"Row 7 Column 8\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 7 Column 9' (L1044, T435, R1176, B454)\n", + " | | | | | | ['Custom67', 'Row 7 Column 9Custom', 'Row 7 Column 9']\n", + " | | | | | | child_window(title=\"Row 7 Column 9\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 7 Column 10' (L1176, T435, R1308, B454)\n", + " | | | | | | ['Row 7 Column 10', 'Row 7 Column 10Custom', 'Custom68']\n", + " | | | | | | child_window(title=\"Row 7 Column 10\", control_type=\"Custom\")\n", + " | | | | | \n", + " | | | | | Custom - 'Row 8' (L87, T454, R1308, B473)\n", + " | | | | | ['Row 8', 'Custom69', 'Row 8Custom']\n", + " | | | | | child_window(title=\"Row 8\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 8 Column 0' (L87, T454, R112, B473)\n", + " | | | | | | ['Header29', 'Row 8 Column 0', 'Row 8 Column 0Header']\n", + " | | | | | | child_window(title=\"Row 8 Column 0\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 8 Column 1' (L112, T454, R342, B473)\n", + " | | | | | | ['Row 8 Column 1', 'Custom70', 'Row 8 Column 1Custom']\n", + " | | | | | | child_window(title=\"Row 8 Column 1\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 8 Column 2' (L342, T454, R542, B473)\n", + " | | | | | | ['Row 8 Column 2Custom', 'Row 8 Column 2', 'Custom71']\n", + " | | | | | | child_window(title=\"Row 8 Column 2\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 8 Column 3' (L542, T454, R692, B473)\n", + " | | | | | | ['Row 8 Column 3Custom', 'Custom72', 'Row 8 Column 3']\n", + " | | | | | | child_window(title=\"Row 8 Column 3\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 8 Column 4' (L692, T454, R812, B473)\n", + " | | | | | | ['Row 8 Column 4Custom', 'Custom73', 'Row 8 Column 4']\n", + " | | | | | | child_window(title=\"Row 8 Column 4\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 8 Column 5' (L0, T0, R0, B0)\n", + " | | | | | | ['Custom74', 'Row 8 Column 5Custom', 'Row 8 Column 5']\n", + " | | | | | | child_window(title=\"Row 8 Column 5\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 8 Column 6' (L0, T0, R0, B0)\n", + " | | | | | | ['Row 8 Column 6Custom', 'Row 8 Column 6', 'Custom75']\n", + " | | | | | | child_window(title=\"Row 8 Column 6\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 8 Column 7' (L812, T454, R912, B473)\n", + " | | | | | | ['Row 8 Column 7Custom', 'Row 8 Column 7', 'Custom76']\n", + " | | | | | | child_window(title=\"Row 8 Column 7\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 8 Column 8' (L912, T454, R1044, B473)\n", + " | | | | | | ['Row 8 Column 8Custom', 'Row 8 Column 8', 'Custom77']\n", + " | | | | | | child_window(title=\"Row 8 Column 8\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 8 Column 9' (L1044, T454, R1176, B473)\n", + " | | | | | | ['Row 8 Column 9Custom', 'Custom78', 'Row 8 Column 9']\n", + " | | | | | | child_window(title=\"Row 8 Column 9\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 8 Column 10' (L1176, T454, R1308, B473)\n", + " | | | | | | ['Row 8 Column 10', 'Custom79', 'Row 8 Column 10Custom']\n", + " | | | | | | child_window(title=\"Row 8 Column 10\", control_type=\"Custom\")\n", + " | | | | | \n", + " | | | | | Custom - 'Row 9' (L87, T473, R1308, B492)\n", + " | | | | | ['Row 9', 'Custom80', 'Row 9Custom']\n", + " | | | | | child_window(title=\"Row 9\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 9 Column 0' (L87, T473, R112, B492)\n", + " | | | | | | ['Header30', 'Row 9 Column 0', 'Row 9 Column 0Header']\n", + " | | | | | | child_window(title=\"Row 9 Column 0\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 9 Column 1' (L112, T473, R342, B492)\n", + " | | | | | | ['Row 9 Column 1Custom', 'Custom81', 'Row 9 Column 1']\n", + " | | | | | | child_window(title=\"Row 9 Column 1\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 9 Column 2' (L342, T473, R542, B492)\n", + " | | | | | | ['Row 9 Column 2Custom', 'Row 9 Column 2', 'Custom82']\n", + " | | | | | | child_window(title=\"Row 9 Column 2\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 9 Column 3' (L542, T473, R692, B492)\n", + " | | | | | | ['Row 9 Column 3Custom', 'Row 9 Column 3', 'Custom83']\n", + " | | | | | | child_window(title=\"Row 9 Column 3\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 9 Column 4' (L692, T473, R812, B492)\n", + " | | | | | | ['Row 9 Column 4', 'Row 9 Column 4Custom', 'Custom84']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " | | | | | | child_window(title=\"Row 9 Column 4\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 9 Column 5' (L0, T0, R0, B0)\n", + " | | | | | | ['Row 9 Column 5Custom', 'Custom85', 'Row 9 Column 5']\n", + " | | | | | | child_window(title=\"Row 9 Column 5\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 9 Column 6' (L0, T0, R0, B0)\n", + " | | | | | | ['Row 9 Column 6', 'Row 9 Column 6Custom', 'Custom86']\n", + " | | | | | | child_window(title=\"Row 9 Column 6\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 9 Column 7' (L812, T473, R912, B492)\n", + " | | | | | | ['Row 9 Column 7Custom', 'Row 9 Column 7', 'Custom87']\n", + " | | | | | | child_window(title=\"Row 9 Column 7\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 9 Column 8' (L912, T473, R1044, B492)\n", + " | | | | | | ['Row 9 Column 8Custom', 'Custom88', 'Row 9 Column 8']\n", + " | | | | | | child_window(title=\"Row 9 Column 8\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 9 Column 9' (L1044, T473, R1176, B492)\n", + " | | | | | | ['Row 9 Column 9Custom', 'Row 9 Column 9', 'Custom89']\n", + " | | | | | | child_window(title=\"Row 9 Column 9\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 9 Column 10' (L1176, T473, R1308, B492)\n", + " | | | | | | ['Row 9 Column 10Custom', 'Custom90', 'Row 9 Column 10']\n", + " | | | | | | child_window(title=\"Row 9 Column 10\", control_type=\"Custom\")\n", + " | | | | | \n", + " | | | | | Custom - 'Row 10' (L87, T473, R1308, B511)\n", + " | | | | | ['Row 10', 'Row 10Custom', 'Custom91']\n", + " | | | | | child_window(title=\"Row 10\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 10 Column 0' (L87, T492, R112, B511)\n", + " | | | | | | ['Row 10 Column 0Header', 'Header31', 'Row 10 Column 0']\n", + " | | | | | | child_window(title=\"Row 10 Column 0\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 10 Column 1' (L112, T492, R342, B511)\n", + " | | | | | | ['Row 10 Column 1', 'Row 10 Column 1Custom', 'Custom92']\n", + " | | | | | | child_window(title=\"Row 10 Column 1\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 10 Column 2' (L342, T492, R542, B511)\n", + " | | | | | | ['Row 10 Column 2Custom', 'Custom93', 'Row 10 Column 2']\n", + " | | | | | | child_window(title=\"Row 10 Column 2\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 10 Column 3' (L542, T492, R692, B511)\n", + " | | | | | | ['Row 10 Column 3', 'Custom94', 'Row 10 Column 3Custom']\n", + " | | | | | | child_window(title=\"Row 10 Column 3\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 10 Column 4' (L692, T492, R812, B511)\n", + " | | | | | | ['Row 10 Column 4Custom', 'Custom95', 'Row 10 Column 4']\n", + " | | | | | | child_window(title=\"Row 10 Column 4\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 10 Column 5' (L0, T0, R0, B0)\n", + " | | | | | | ['Row 10 Column 5Custom', 'Custom96', 'Row 10 Column 5']\n", + " | | | | | | child_window(title=\"Row 10 Column 5\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 10 Column 6' (L0, T0, R0, B0)\n", + " | | | | | | ['Row 10 Column 6Custom', 'Custom97', 'Row 10 Column 6']\n", + " | | | | | | child_window(title=\"Row 10 Column 6\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 10 Column 7' (L812, T492, R912, B511)\n", + " | | | | | | ['Row 10 Column 7', 'Custom98', 'Row 10 Column 7Custom']\n", + " | | | | | | child_window(title=\"Row 10 Column 7\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 10 Column 8' (L912, T492, R1044, B511)\n", + " | | | | | | ['Row 10 Column 8Custom', 'Custom99', 'Row 10 Column 8']\n", + " | | | | | | child_window(title=\"Row 10 Column 8\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 10 Column 9' (L1044, T492, R1176, B511)\n", + " | | | | | | ['Row 10 Column 9', 'Custom100', 'Row 10 Column 9Custom']\n", + " | | | | | | child_window(title=\"Row 10 Column 9\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 10 Column 10' (L1176, T492, R1308, B511)\n", + " | | | | | | ['Row 10 Column 10', 'Custom101', 'Row 10 Column 10Custom']\n", + " | | | | | | child_window(title=\"Row 10 Column 10\", control_type=\"Custom\")\n", + " | | | | | \n", + " | | | | | Custom - 'Row 11' (L87, T473, R1308, B530)\n", + " | | | | | ['Row 11Custom', 'Custom102', 'Row 11']\n", + " | | | | | child_window(title=\"Row 11\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 11 Column 0' (L87, T511, R112, B530)\n", + " | | | | | | ['Header32', 'Row 11 Column 0', 'Row 11 Column 0Header']\n", + " | | | | | | child_window(title=\"Row 11 Column 0\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 11 Column 1' (L112, T511, R342, B530)\n", + " | | | | | | ['Row 11 Column 1Custom', 'Row 11 Column 1', 'Custom103']\n", + " | | | | | | child_window(title=\"Row 11 Column 1\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 11 Column 2' (L342, T511, R542, B530)\n", + " | | | | | | ['Row 11 Column 2Custom', 'Custom104', 'Row 11 Column 2']\n", + " | | | | | | child_window(title=\"Row 11 Column 2\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 11 Column 3' (L542, T511, R692, B530)\n", + " | | | | | | ['Row 11 Column 3', 'Custom105', 'Row 11 Column 3Custom']\n", + " | | | | | | child_window(title=\"Row 11 Column 3\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 11 Column 4' (L692, T511, R812, B530)\n", + " | | | | | | ['Custom106', 'Row 11 Column 4', 'Row 11 Column 4Custom']\n", + " | | | | | | child_window(title=\"Row 11 Column 4\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 11 Column 5' (L0, T0, R0, B0)\n", + " | | | | | | ['Row 11 Column 5', 'Custom107', 'Row 11 Column 5Custom']\n", + " | | | | | | child_window(title=\"Row 11 Column 5\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 11 Column 6' (L0, T0, R0, B0)\n", + " | | | | | | ['Row 11 Column 6Custom', 'Custom108', 'Row 11 Column 6']\n", + " | | | | | | child_window(title=\"Row 11 Column 6\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 11 Column 7' (L812, T511, R912, B530)\n", + " | | | | | | ['Row 11 Column 7', 'Custom109', 'Row 11 Column 7Custom']\n", + " | | | | | | child_window(title=\"Row 11 Column 7\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 11 Column 8' (L912, T511, R1044, B530)\n", + " | | | | | | ['Custom110', 'Row 11 Column 8Custom', 'Row 11 Column 8']\n", + " | | | | | | child_window(title=\"Row 11 Column 8\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 11 Column 9' (L1044, T511, R1176, B530)\n", + " | | | | | | ['Custom111', 'Row 11 Column 9', 'Row 11 Column 9Custom']\n", + " | | | | | | child_window(title=\"Row 11 Column 9\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 11 Column 10' (L1176, T511, R1308, B530)\n", + " | | | | | | ['Row 11 Column 10', 'Row 11 Column 10Custom', 'Custom112']\n", + " | | | | | | child_window(title=\"Row 11 Column 10\", control_type=\"Custom\")\n", + " | | | | | \n", + " | | | | | Custom - 'Row 12' (L87, T473, R1308, B549)\n", + " | | | | | ['Row 12Custom', 'Row 12', 'Custom113']\n", + " | | | | | child_window(title=\"Row 12\", control_type=\"Custom\")\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " | | | | | | \n", + " | | | | | | Header - 'Row 12 Column 0' (L87, T530, R112, B549)\n", + " | | | | | | ['Header33', 'Row 12 Column 0', 'Row 12 Column 0Header']\n", + " | | | | | | child_window(title=\"Row 12 Column 0\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 12 Column 1' (L112, T530, R342, B549)\n", + " | | | | | | ['Row 12 Column 1Custom', 'Row 12 Column 1', 'Custom114']\n", + " | | | | | | child_window(title=\"Row 12 Column 1\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 12 Column 2' (L342, T530, R542, B549)\n", + " | | | | | | ['Row 12 Column 2Custom', 'Row 12 Column 2', 'Custom115']\n", + " | | | | | | child_window(title=\"Row 12 Column 2\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 12 Column 3' (L542, T530, R692, B549)\n", + " | | | | | | ['Row 12 Column 3', 'Row 12 Column 3Custom', 'Custom116']\n", + " | | | | | | child_window(title=\"Row 12 Column 3\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 12 Column 4' (L692, T530, R812, B549)\n", + " | | | | | | ['Row 12 Column 4Custom', 'Row 12 Column 4', 'Custom117']\n", + " | | | | | | child_window(title=\"Row 12 Column 4\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 12 Column 5' (L0, T0, R0, B0)\n", + " | | | | | | ['Row 12 Column 5', 'Row 12 Column 5Custom', 'Custom118']\n", + " | | | | | | child_window(title=\"Row 12 Column 5\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 12 Column 6' (L0, T0, R0, B0)\n", + " | | | | | | ['Row 12 Column 6', 'Custom119', 'Row 12 Column 6Custom']\n", + " | | | | | | child_window(title=\"Row 12 Column 6\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 12 Column 7' (L812, T530, R912, B549)\n", + " | | | | | | ['Row 12 Column 7Custom', 'Custom120', 'Row 12 Column 7']\n", + " | | | | | | child_window(title=\"Row 12 Column 7\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 12 Column 8' (L912, T530, R1044, B549)\n", + " | | | | | | ['Custom121', 'Row 12 Column 8Custom', 'Row 12 Column 8']\n", + " | | | | | | child_window(title=\"Row 12 Column 8\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 12 Column 9' (L1044, T530, R1176, B549)\n", + " | | | | | | ['Row 12 Column 9', 'Row 12 Column 9Custom', 'Custom122']\n", + " | | | | | | child_window(title=\"Row 12 Column 9\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 12 Column 10' (L1176, T530, R1308, B549)\n", + " | | | | | | ['Row 12 Column 10', 'Custom123', 'Row 12 Column 10Custom']\n", + " | | | | | | child_window(title=\"Row 12 Column 10\", control_type=\"Custom\")\n", + " | | | | | \n", + " | | | | | Custom - 'Row 13' (L87, T473, R1308, B568)\n", + " | | | | | ['Row 13', 'Custom124', 'Row 13Custom']\n", + " | | | | | child_window(title=\"Row 13\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 13 Column 0' (L87, T549, R112, B568)\n", + " | | | | | | ['Row 13 Column 0Header', 'Header34', 'Row 13 Column 0']\n", + " | | | | | | child_window(title=\"Row 13 Column 0\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 13 Column 1' (L112, T549, R342, B568)\n", + " | | | | | | ['Row 13 Column 1Custom', 'Custom125', 'Row 13 Column 1']\n", + " | | | | | | child_window(title=\"Row 13 Column 1\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 13 Column 2' (L342, T549, R542, B568)\n", + " | | | | | | ['Row 13 Column 2Custom', 'Custom126', 'Row 13 Column 2']\n", + " | | | | | | child_window(title=\"Row 13 Column 2\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 13 Column 3' (L542, T549, R692, B568)\n", + " | | | | | | ['Row 13 Column 3Custom', 'Custom127', 'Row 13 Column 3']\n", + " | | | | | | child_window(title=\"Row 13 Column 3\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 13 Column 4' (L692, T549, R812, B568)\n", + " | | | | | | ['Row 13 Column 4Custom', 'Custom128', 'Row 13 Column 4']\n", + " | | | | | | child_window(title=\"Row 13 Column 4\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 13 Column 5' (L0, T0, R0, B0)\n", + " | | | | | | ['Custom129', 'Row 13 Column 5Custom', 'Row 13 Column 5']\n", + " | | | | | | child_window(title=\"Row 13 Column 5\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 13 Column 6' (L0, T0, R0, B0)\n", + " | | | | | | ['Row 13 Column 6Custom', 'Custom130', 'Row 13 Column 6']\n", + " | | | | | | child_window(title=\"Row 13 Column 6\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 13 Column 7' (L812, T549, R912, B568)\n", + " | | | | | | ['Row 13 Column 7', 'Custom131', 'Row 13 Column 7Custom']\n", + " | | | | | | child_window(title=\"Row 13 Column 7\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 13 Column 8' (L912, T549, R1044, B568)\n", + " | | | | | | ['Row 13 Column 8Custom', 'Row 13 Column 8', 'Custom132']\n", + " | | | | | | child_window(title=\"Row 13 Column 8\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 13 Column 9' (L1044, T549, R1176, B568)\n", + " | | | | | | ['Row 13 Column 9', 'Row 13 Column 9Custom', 'Custom133']\n", + " | | | | | | child_window(title=\"Row 13 Column 9\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 13 Column 10' (L1176, T549, R1308, B568)\n", + " | | | | | | ['Custom134', 'Row 13 Column 10', 'Row 13 Column 10Custom']\n", + " | | | | | | child_window(title=\"Row 13 Column 10\", control_type=\"Custom\")\n", + " | | | | \n", + " | | | | Pane - '' (L85, T196, R1023, B300)\n", + " | | | | ['Status:Pane2', 'Pane7']\n", + " | | | | child_window(auto_id=\"m_gridInst\", control_type=\"Pane\")\n", + " | | | | | \n", + " | | | | | ScrollBar - 'Horizontal' (L86, T282, R1022, B299)\n", + " | | | | | ['ScrollBar3', 'Horizontal2', 'HorizontalScrollBar2']\n", + " | | | | | child_window(title=\"Horizontal\", auto_id=\"NonClientHorizontalScrollBar\", control_type=\"ScrollBar\")\n", + " | | | | | | \n", + " | | | | | | Button - 'Column left' (L86, T282, R103, B299)\n", + " | | | | | | ['Column leftButton2', 'Button9', 'Column left2']\n", + " | | | | | | child_window(title=\"Column left\", auto_id=\"UpButton\", control_type=\"Button\")\n", + " | | | | | | \n", + " | | | | | | Thumb - 'Position' (L103, T282, R903, B299)\n", + " | | | | | | ['Position3', 'Thumb4', 'PositionThumb3']\n", + " | | | | | | child_window(title=\"Position\", auto_id=\"ScrollbarThumb\", control_type=\"Thumb\")\n", + " | | | | | | \n", + " | | | | | | Button - 'Page right' (L903, T282, R1005, B299)\n", + " | | | | | | ['Page right2', 'Button10', 'Page rightButton2']\n", + " | | | | | | child_window(title=\"Page right\", auto_id=\"DownPageButton\", control_type=\"Button\")\n", + " | | | | | | \n", + " | | | | | | Button - 'Column right' (L1005, T282, R1022, B299)\n", + " | | | | | | ['Button11', 'Column rightButton2', 'Column right2']\n", + " | | | | | | child_window(title=\"Column right\", auto_id=\"DownButton\", control_type=\"Button\")\n", + " | | | | | \n", + " | | | | | Custom - 'Row 0' (L86, T197, R1025, B218)\n", + " | | | | | ['Row 02', 'Custom135', 'Row 0Custom2']\n", + " | | | | | child_window(title=\"Row 0\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 0 Column 0' (L86, T197, R316, B239)\n", + " | | | | | | ['Header35', 'Row 0 Column 0Header2', 'Row 0 Column 02']\n", + " | | | | | | child_window(title=\"Row 0 Column 0\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 0 Column 1' (L316, T197, R598, B218)\n", + " | | | | | | ['Header36', 'Row 0 Column 12', 'Row 0 Column 1Header2']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " | | | | | | child_window(title=\"Row 0 Column 1\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 0 Column 2' (L316, T197, R598, B218)\n", + " | | | | | | ['Header37', 'Row 0 Column 2Header2', 'Row 0 Column 22']\n", + " | | | | | | child_window(title=\"Row 0 Column 2\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 0 Column 3' (L316, T197, R598, B218)\n", + " | | | | | | ['Row 0 Column 3Header2', 'Header38', 'Row 0 Column 32']\n", + " | | | | | | child_window(title=\"Row 0 Column 3\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 0 Column 4' (L316, T197, R598, B218)\n", + " | | | | | | ['Row 0 Column 4Header2', 'Header39', 'Row 0 Column 42']\n", + " | | | | | | child_window(title=\"Row 0 Column 4\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 0 Column 5' (L598, T197, R850, B218)\n", + " | | | | | | ['Header40', 'Row 0 Column 52', 'Row 0 Column 5Header2']\n", + " | | | | | | child_window(title=\"Row 0 Column 5\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 0 Column 6' (L598, T197, R850, B218)\n", + " | | | | | | ['Header41', 'Row 0 Column 6Header2', 'Row 0 Column 62']\n", + " | | | | | | child_window(title=\"Row 0 Column 6\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 0 Column 7' (L598, T197, R850, B218)\n", + " | | | | | | ['Header42', 'Row 0 Column 72', 'Row 0 Column 7Header2']\n", + " | | | | | | child_window(title=\"Row 0 Column 7\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 0 Column 8' (L850, T197, R892, B239)\n", + " | | | | | | ['Header43', 'Row 0 Column 82', 'Row 0 Column 8Header2']\n", + " | | | | | | child_window(title=\"Row 0 Column 8\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 0 Column 9' (L892, T197, R1142, B218)\n", + " | | | | | | ['Header44', 'Row 0 Column 9Header2', 'Row 0 Column 92']\n", + " | | | | | | child_window(title=\"Row 0 Column 9\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 0 Column 11' (L892, T197, R1142, B218)\n", + " | | | | | | ['Row 0 Column 11Header', 'Header45', 'Row 0 Column 11']\n", + " | | | | | | child_window(title=\"Row 0 Column 11\", control_type=\"Header\")\n", + " | | | | | \n", + " | | | | | Custom - 'Row 1' (L86, T218, R1142, B239)\n", + " | | | | | ['Custom136', 'Row 1Custom2', 'Row 14']\n", + " | | | | | child_window(title=\"Row 1\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 1 Column 0' (L86, T197, R316, B239)\n", + " | | | | | | ['Row 1 Column 02', 'Header46', 'Row 1 Column 0Header2']\n", + " | | | | | | child_window(title=\"Row 1 Column 0\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 1 Column 1' (L316, T218, R358, B239)\n", + " | | | | | | ['Header47', 'Row 1 Column 1Header2', 'Row 1 Column 12']\n", + " | | | | | | child_window(title=\"Row 1 Column 1\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 1 Column 2' (L358, T218, R438, B239)\n", + " | | | | | | ['Row 1 Column 22', 'Header48', 'Row 1 Column 2Header2']\n", + " | | | | | | child_window(title=\"Row 1 Column 2\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 1 Column 3' (L438, T218, R518, B239)\n", + " | | | | | | ['Header49', 'Row 1 Column 32', 'Row 1 Column 3Header2']\n", + " | | | | | | child_window(title=\"Row 1 Column 3\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 1 Column 4' (L518, T218, R598, B239)\n", + " | | | | | | ['Header50', 'Row 1 Column 42', 'Row 1 Column 4Header2']\n", + " | | | | | | child_window(title=\"Row 1 Column 4\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 1 Column 5' (L598, T218, R640, B239)\n", + " | | | | | | ['Header51', 'Row 1 Column 52', 'Row 1 Column 5Header2']\n", + " | | | | | | child_window(title=\"Row 1 Column 5\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 1 Column 6' (L640, T218, R770, B239)\n", + " | | | | | | ['Row 1 Column 6Header2', 'Header52', 'Row 1 Column 62']\n", + " | | | | | | child_window(title=\"Row 1 Column 6\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 1 Column 7' (L770, T218, R850, B239)\n", + " | | | | | | ['Header53', 'Row 1 Column 7Header2', 'Row 1 Column 72']\n", + " | | | | | | child_window(title=\"Row 1 Column 7\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 1 Column 8' (L850, T197, R892, B239)\n", + " | | | | | | ['Header54', 'Row 1 Column 8Header2', 'Row 1 Column 82']\n", + " | | | | | | child_window(title=\"Row 1 Column 8\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 1 Column 9' (L892, T218, R1042, B239)\n", + " | | | | | | ['Row 1 Column 92', 'Header55', 'Row 1 Column 9Header2']\n", + " | | | | | | child_window(title=\"Row 1 Column 9\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 1 Column 11' (L1042, T218, R1142, B239)\n", + " | | | | | | ['Header56', 'Row 1 Column 11Header', 'Row 1 Column 11']\n", + " | | | | | | child_window(title=\"Row 1 Column 11\", control_type=\"Header\")\n", + " | | | | | \n", + " | | | | | Custom - 'Row 2' (L86, T239, R1025, B281)\n", + " | | | | | ['Row 22', 'Row 2Custom2', 'Custom137']\n", + " | | | | | child_window(title=\"Row 2\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Header - 'Row 2 Column 0' (L86, T239, R316, B281)\n", + " | | | | | | ['Header57', 'Row 2 Column 02', 'Row 2 Column 0Header2']\n", + " | | | | | | child_window(title=\"Row 2 Column 0\", control_type=\"Header\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 2 Column 1' (L316, T239, R358, B281)\n", + " | | | | | | ['Row 2 Column 12', 'Row 2 Column 1Custom2', 'Custom138']\n", + " | | | | | | child_window(title=\"Row 2 Column 1\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 2 Column 2' (L358, T239, R438, B281)\n", + " | | | | | | ['Row 2 Column 2Custom2', 'Row 2 Column 22', 'Custom139']\n", + " | | | | | | child_window(title=\"Row 2 Column 2\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 2 Column 3' (L438, T239, R518, B281)\n", + " | | | | | | ['Row 2 Column 32', 'Custom140', 'Row 2 Column 3Custom2']\n", + " | | | | | | child_window(title=\"Row 2 Column 3\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 2 Column 4' (L518, T239, R598, B281)\n", + " | | | | | | ['Row 2 Column 42', 'Custom141', 'Row 2 Column 4Custom2']\n", + " | | | | | | child_window(title=\"Row 2 Column 4\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 2 Column 5' (L598, T239, R640, B281)\n", + " | | | | | | ['Row 2 Column 5Custom2', 'Row 2 Column 52', 'Custom142']\n", + " | | | | | | child_window(title=\"Row 2 Column 5\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 2 Column 6' (L640, T239, R770, B281)\n", + " | | | | | | ['Row 2 Column 62', 'Custom143', 'Row 2 Column 6Custom2']\n", + " | | | | | | child_window(title=\"Row 2 Column 6\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 2 Column 7' (L770, T239, R850, B281)\n", + " | | | | | | ['Row 2 Column 72', 'Row 2 Column 7Custom2', 'Custom144']\n", + " | | | | | | child_window(title=\"Row 2 Column 7\", control_type=\"Custom\")\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " | | | | | | \n", + " | | | | | | Custom - 'Row 2 Column 8' (L850, T239, R892, B281)\n", + " | | | | | | ['Row 2 Column 8Custom2', 'Row 2 Column 82', 'Custom145']\n", + " | | | | | | child_window(title=\"Row 2 Column 8\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 2 Column 9' (L892, T239, R1042, B281)\n", + " | | | | | | ['Row 2 Column 92', 'Row 2 Column 9Custom2', 'Custom146']\n", + " | | | | | | child_window(title=\"Row 2 Column 9\", control_type=\"Custom\")\n", + " | | | | | | \n", + " | | | | | | Custom - 'Row 2 Column 11' (L1042, T239, R1142, B281)\n", + " | | | | | | ['Row 2 Column 11Custom', 'Custom147', 'Row 2 Column 11']\n", + " | | | | | | child_window(title=\"Row 2 Column 11\", control_type=\"Custom\")\n", + " | | \n", + " | | TabItem - 'Configure Instruments ' (L83, T173, R247, B194)\n", + " | | ['TabItem', 'Configure Instruments TabItem', 'Configure Instruments ', 'TabItem0', 'TabItem1']\n", + " | | child_window(title=\"Configure Instruments \", control_type=\"TabItem\")\n", + " | | \n", + " | | TabItem - 'Configure Channels ' (L247, T173, R400, B194)\n", + " | | ['TabItem2', 'Configure Channels ', 'Configure Channels TabItem']\n", + " | | child_window(title=\"Configure Channels \", control_type=\"TabItem\")\n", + " | | \n", + " | | TabItem - 'Scan and Log Data' (L400, T173, R549, B194)\n", + " | | ['Scan and Log Data2', 'TabItem3', 'Scan and Log DataTabItem']\n", + " | | child_window(title=\"Scan and Log Data\", control_type=\"TabItem\")\n", + " | | \n", + " | | TabItem - 'Quick Graph' (L549, T173, R657, B194)\n", + " | | ['TabItem4', 'Quick GraphTabItem', 'Quick Graph']\n", + " | | child_window(title=\"Quick Graph\", control_type=\"TabItem\")\n", + " | \n", + " | TitleBar - '' (L97, T59, R1011, B80)\n", + " | ['', 'TitleBar']\n", + " | | \n", + " | | Menu - 'System' (L81, T59, R102, B80)\n", + " | | ['System', 'SystemMenu', 'Menu', 'System0', 'System1', 'Menu0', 'Menu1']\n", + " | | child_window(title=\"System\", auto_id=\"MenuBar\", control_type=\"MenuBar\")\n", + " | | | \n", + " | | | MenuItem - 'System' (L81, T59, R102, B80)\n", + " | | | ['MenuItem', 'System2', 'SystemMenuItem', 'MenuItem0', 'MenuItem1']\n", + " | | | child_window(title=\"System\", control_type=\"MenuItem\")\n", + " | | \n", + " | | Button - 'Minimize' (L912, T61, R943, B78)\n", + " | | ['Button12', 'Minimize', 'MinimizeButton']\n", + " | | child_window(title=\"Minimize\", control_type=\"Button\")\n", + " | | \n", + " | | Button - 'Maximize' (L945, T61, R976, B78)\n", + " | | ['Button13', 'Maximize', 'MaximizeButton']\n", + " | | child_window(title=\"Maximize\", control_type=\"Button\")\n", + " | | \n", + " | | Button - 'Close' (L978, T61, R1009, B78)\n", + " | | ['Button14', 'Close', 'CloseButton']\n", + " | | child_window(title=\"Close\", control_type=\"Button\")\n", + " | \n", + " | Menu - 'Application' (L81, T81, R1011, B100)\n", + " | ['ApplicationMenu', 'Application', 'Menu2']\n", + " | child_window(title=\"Application\", auto_id=\"MenuBar\", control_type=\"MenuBar\")\n", + " | | \n", + " | | MenuItem - 'Configuration' (L81, T81, R169, B100)\n", + " | | ['MenuItem2', 'Configuration', 'ConfigurationMenuItem']\n", + " | | child_window(title=\"Configuration\", control_type=\"MenuItem\")\n", + " | | \n", + " | | MenuItem - 'Data' (L169, T81, R207, B100)\n", + " | | ['MenuItem3', 'DataMenuItem', 'Data']\n", + " | | child_window(title=\"Data\", control_type=\"MenuItem\")\n", + " | | \n", + " | | MenuItem - 'Tools' (L207, T81, R250, B100)\n", + " | | ['MenuItem4', 'ToolsMenuItem', 'Tools']\n", + " | | child_window(title=\"Tools\", control_type=\"MenuItem\")\n", + " | | \n", + " | | MenuItem - 'Help' (L250, T81, R289, B100)\n", + " | | ['MenuItem5', 'HelpMenuItem', 'Help']\n", + " | | child_window(title=\"Help\", control_type=\"MenuItem\")\n" + ] + } + ], + "source": [ + "main_dlg.print_control_identifiers()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "from pywinauto.application import Application\n", + "app = Application(backend=\"uia\").connect(title=u'Untitled - Notepad', class_name=\"Notepad\")\n", + "main_dlg = app.window(title='Untitled - Notepad')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "main_dlg.print_control_identifiers()" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "ename": "SyntaxError", + "evalue": "invalid syntax (, line 8)", + "output_type": "error", + "traceback": [ + "\u001b[1;36m File \u001b[1;32m\"\"\u001b[1;36m, line \u001b[1;32m8\u001b[0m\n\u001b[1;33m main_dlg.Line down.click()\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m invalid syntax\n" + ] + } + ], + "source": [ + "import time\n", + "from pprint import pprint\n", + "from pywinauto.application import Application\n", + "from pywinauto.findwindows import WindowAmbiguousError, WindowNotFoundError\n", + "\n", + "app = Application(backend=\"uia\").connect(title=u'Untitled - Notepad', class_name=\"Notepad\")\n", + "main_dlg = app.window(class_name=\"Notepad\")\n", + "main_dlg.Line down.click()\n", + "\n", + "#main_dlg.hwndwrapper.DialogWrapper()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "ename": "MatchError", + "evalue": "Could not find 'hwndwrapper' in 'dict_keys(['', 'Edit', 'Vertical', 'ScrollBar', 'VerticalScrollBar', 'Line upButton', 'Button', 'Line up', 'Position', 'PositionThumb', 'Thumb', 'Button0', 'Button1', 'Button2', 'Page downButton', 'Page down', 'Button3', 'Line downButton', 'Line down', 'Horizontal', 'HorizontalScrollBar', 'ScrollBar0', 'ScrollBar1', 'ScrollBar2', 'Button4', 'Column leftButton', 'Column left', 'Button5', 'Column right', 'Column rightButton', '0', '1', '2', 'Thumb0', 'Thumb1', 'Thumb2', ' Ln 33, Col 1 StatusBar', 'StatusBar', '3', 'Static', ' Ln 33, Col 1 Static', 'Static0', 'Static1', 'Static2', ' Ln 33, Col 1 ', '4', 'TitleBar', 'SystemMenu', 'Menu', 'System', 'SystemMenuItem', 'MenuItem', 'System0', 'System1', 'System2', 'Button6', 'MinimizeButton', 'Minimize', 'Button7', 'Maximize', 'MaximizeButton', 'Button8', 'Close', 'CloseButton', 'Application', 'Menu0', 'Menu1', 'Menu2', 'ApplicationMenu', 'MenuItem0', 'MenuItem1', 'MenuItem2', 'FileMenuItem', 'File', 'EditMenuItem', 'MenuItem3', 'Edit0', 'Edit1', 'Edit2', 'FormatMenuItem', 'Format', 'MenuItem4', 'ViewMenuItem', 'MenuItem5', 'View', 'HelpMenuItem', 'MenuItem6', 'Help'])'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mTimeoutError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\pywinauto-0.6.7-py3.7.egg\\pywinauto\\application.py\u001b[0m in \u001b[0;36m__resolve_control\u001b[1;34m(self, criteria, timeout, retry_interval)\u001b[0m\n\u001b[0;32m 255\u001b[0m controls.InvalidElement),\n\u001b[1;32m--> 256\u001b[1;33m criteria)\n\u001b[0m\u001b[0;32m 257\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\pywinauto-0.6.7-py3.7.egg\\pywinauto\\timings.py\u001b[0m in \u001b[0;36mwait_until_passes\u001b[1;34m(timeout, retry_interval, func, exceptions, *args, **kwargs)\u001b[0m\n\u001b[0;32m 457\u001b[0m \u001b[0merr\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0moriginal_exception\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 458\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0merr\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 459\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mTimeoutError\u001b[0m: ", + "\nDuring handling of the above exception, another exception occurred:\n", + "\u001b[1;31mMatchError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mmain_dlg\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mhwndwrapper\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mDialogWrapper\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\pywinauto-0.6.7-py3.7.egg\\pywinauto\\application.py\u001b[0m in \u001b[0;36m__getattribute__\u001b[1;34m(self, attr_name)\u001b[0m\n\u001b[0;32m 360\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcriteria\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m>=\u001b[0m \u001b[1;36m2\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 361\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 362\u001b[1;33m \u001b[0mctrls\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__resolve_control\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcriteria\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 363\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 364\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\pywinauto-0.6.7-py3.7.egg\\pywinauto\\application.py\u001b[0m in \u001b[0;36m__resolve_control\u001b[1;34m(self, criteria, timeout, retry_interval)\u001b[0m\n\u001b[0;32m 257\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 258\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mTimeoutError\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 259\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0moriginal_exception\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 260\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 261\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mctrl\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\pywinauto-0.6.7-py3.7.egg\\pywinauto\\timings.py\u001b[0m in \u001b[0;36mwait_until_passes\u001b[1;34m(timeout, retry_interval, func, exceptions, *args, **kwargs)\u001b[0m\n\u001b[0;32m 434\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 435\u001b[0m \u001b[1;31m# Call the function with any arguments\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 436\u001b[1;33m \u001b[0mfunc_val\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 437\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 438\u001b[0m \u001b[1;31m# if no exception is raised then we are finished\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\pywinauto-0.6.7-py3.7.egg\\pywinauto\\application.py\u001b[0m in \u001b[0;36m__get_ctrl\u001b[1;34m(self, criteria_)\u001b[0m\n\u001b[0;32m 218\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;34m'backend'\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mctrl_criteria\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 219\u001b[0m \u001b[0mctrl_criteria\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'backend'\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbackend\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mname\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 220\u001b[1;33m \u001b[0mctrl\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbackend\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgeneric_wrapper_class\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfindwindows\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfind_element\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m**\u001b[0m\u001b[0mctrl_criteria\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 221\u001b[0m \u001b[0mprevious_parent\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mctrl\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0melement_info\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 222\u001b[0m \u001b[0mctrls\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mctrl\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\pywinauto-0.6.7-py3.7.egg\\pywinauto\\findwindows.py\u001b[0m in \u001b[0;36mfind_element\u001b[1;34m(**kwargs)\u001b[0m\n\u001b[0;32m 82\u001b[0m \u001b[0mso\u001b[0m \u001b[0mplease\u001b[0m \u001b[0msee\u001b[0m \u001b[1;33m:\u001b[0m\u001b[0mpy\u001b[0m\u001b[1;33m:\u001b[0m\u001b[0mfunc\u001b[0m\u001b[1;33m:\u001b[0m\u001b[0;31m`\u001b[0m\u001b[0mfind_elements\u001b[0m\u001b[0;31m`\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mthe\u001b[0m \u001b[0mfull\u001b[0m \u001b[0mparameters\u001b[0m \u001b[0mdescription\u001b[0m\u001b[1;33m.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 83\u001b[0m \"\"\"\n\u001b[1;32m---> 84\u001b[1;33m \u001b[0melements\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mfind_elements\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 85\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 86\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0melements\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\pywinauto-0.6.7-py3.7.egg\\pywinauto\\findwindows.py\u001b[0m in \u001b[0;36mfind_elements\u001b[1;34m(class_name, class_name_re, parent, process, title, title_re, top_level_only, visible_only, enabled_only, best_match, handle, ctrl_index, found_index, predicate_func, active_only, control_id, control_type, auto_id, framework_id, backend, depth)\u001b[0m\n\u001b[0;32m 301\u001b[0m \u001b[1;31m# since the list of elements was retrieved\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 302\u001b[0m \u001b[1;32mcontinue\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 303\u001b[1;33m \u001b[0melements\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mfindbestmatch\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfind_best_control_matches\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mbest_match\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mwrapped_elems\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 304\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 305\u001b[0m \u001b[1;31m# convert found elements back to ElementInfo\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\pywinauto-0.6.7-py3.7.egg\\pywinauto\\findbestmatch.py\u001b[0m in \u001b[0;36mfind_best_control_matches\u001b[1;34m(search_text, controls)\u001b[0m\n\u001b[0;32m 531\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 532\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mbest_ratio\u001b[0m \u001b[1;33m<\u001b[0m \u001b[0mfind_best_control_match_cutoff\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 533\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mMatchError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mitems\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mname_control_map\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mkeys\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtofind\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msearch_text\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 534\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 535\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[1;33m[\u001b[0m\u001b[0mname_control_map\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mbest_text\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mbest_text\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mbest_texts\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mMatchError\u001b[0m: Could not find 'hwndwrapper' in 'dict_keys(['', 'Edit', 'Vertical', 'ScrollBar', 'VerticalScrollBar', 'Line upButton', 'Button', 'Line up', 'Position', 'PositionThumb', 'Thumb', 'Button0', 'Button1', 'Button2', 'Page downButton', 'Page down', 'Button3', 'Line downButton', 'Line down', 'Horizontal', 'HorizontalScrollBar', 'ScrollBar0', 'ScrollBar1', 'ScrollBar2', 'Button4', 'Column leftButton', 'Column left', 'Button5', 'Column right', 'Column rightButton', '0', '1', '2', 'Thumb0', 'Thumb1', 'Thumb2', ' Ln 33, Col 1 StatusBar', 'StatusBar', '3', 'Static', ' Ln 33, Col 1 Static', 'Static0', 'Static1', 'Static2', ' Ln 33, Col 1 ', '4', 'TitleBar', 'SystemMenu', 'Menu', 'System', 'SystemMenuItem', 'MenuItem', 'System0', 'System1', 'System2', 'Button6', 'MinimizeButton', 'Minimize', 'Button7', 'Maximize', 'MaximizeButton', 'Button8', 'Close', 'CloseButton', 'Application', 'Menu0', 'Menu1', 'Menu2', 'ApplicationMenu', 'MenuItem0', 'MenuItem1', 'MenuItem2', 'FileMenuItem', 'File', 'EditMenuItem', 'MenuItem3', 'Edit0', 'Edit1', 'Edit2', 'FormatMenuItem', 'Format', 'MenuItem4', 'ViewMenuItem', 'MenuItem5', 'View', 'HelpMenuItem', 'MenuItem6', 'Help'])'" + ] + } + ], + "source": [ + "main_dlg.hwndwrapper.DialogWrapper()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 72, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from pywinauto.application import Application\n", + "from pywinauto.findwindows import WindowAmbiguousError, WindowNotFoundError\n", + "from pywinauto import base_wrapper\n", + "app = Application(backend='win32').connect(title_re=\".*Untitled - Notepad*\")\n", + "dlg_spec = app.window(title='Untitled - Notepad')\n", + "dlg_spec.wrapper_object()\n", + "#app.Properties.print_control_identifiers()\n", + "#app.UntitledNotepad.draw_outline()''\n", + "#main_dlg.draw_outline()\n", + "#main_dlg.set_focus()\n", + "#main_dlg.menu_select(\"Edit -> Replace\")\n", + "#main_dlg.wait('visible')\n", + "#main_dlg.wrapper_object()\n", + "\n", + "#main_dlg.hwndwrapper.DialogWrapper()\n", + "#app = Application().connect(title=u'Untitled - Notepad', class_name='Notepad')\n", + "#notepad = app.Notepad\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + " " + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "app" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [ + { + "ename": "TimeoutError", + "evalue": "timed out", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mTimeoutError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 9\u001b[0m \u001b[0mapp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mstart\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34mr\"notepad.exe\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 10\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 11\u001b[1;33m \u001b[0mapp\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'Notepad'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mwait\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'ready'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 12\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 13\u001b[0m \u001b[0mapp\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'Notepad'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmenu_select\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"File->PageSetup\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\pywinauto-0.6.7-py3.7.egg\\pywinauto\\application.py\u001b[0m in \u001b[0;36mwait\u001b[1;34m(self, wait_for, timeout, retry_interval)\u001b[0m\n\u001b[0;32m 510\u001b[0m \u001b[0mcheck_method_names\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mretry_interval\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__parse_wait_args\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mwait_for\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mretry_interval\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 511\u001b[0m wait_until(timeout, retry_interval,\n\u001b[1;32m--> 512\u001b[1;33m lambda: self.__check_all_conditions(check_method_names, retry_interval))\n\u001b[0m\u001b[0;32m 513\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 514\u001b[0m \u001b[1;31m# Return the wrapped control\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\pywinauto-0.6.7-py3.7.egg\\pywinauto\\timings.py\u001b[0m in \u001b[0;36mwait_until\u001b[1;34m(timeout, retry_interval, func, value, op, *args, **kwargs)\u001b[0m\n\u001b[0;32m 373\u001b[0m \u001b[0merr\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mTimeoutError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"timed out\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 374\u001b[0m \u001b[0merr\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfunction_value\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mfunc_val\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 375\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0merr\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 376\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 377\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mfunc_val\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mTimeoutError\u001b[0m: timed out" + ] + } + ], + "source": [ + "from pywinauto import application\n", + "#from pywinauto import tests\n", + "#from pywinauto.findbestmatch import MatchError\n", + "\n", + "\n", + "#application.set_timing(3, .5, 10, .5, .4, .2, .2, .1, .2, .5)\n", + "\n", + "app = application.Application(backend='uia')\n", + "app.start(r\"notepad.exe\")\n", + "\n", + "app['Notepad'].wait('ready')\n", + "\n", + "app['Notepad'].menu_select(\"File->PageSetup\")" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "ename": "SyntaxError", + "evalue": "invalid syntax (, line 1)", + "output_type": "error", + "traceback": [ + "\u001b[1;36m File \u001b[1;32m\"\"\u001b[1;36m, line \u001b[1;32m1\u001b[0m\n\u001b[1;33m from pywinauto.application importApplicationapp = Application(backend=\"uia\").start('notepad.exe')# describe the window inside Notepad.exe processdlg_spec = app.UntitledNotepad# wait till the window is really openactionable_dlg = dlg_spec.wait('visible')\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m invalid syntax\n" + ] + } + ], + "source": [ + "from pywinauto.application importApplicationapp = Application(backend=\"uia\").start('notepad.exe')# describe the window inside Notepad.exe processdlg_spec = app.UntitledNotepad# wait till the window is really openactionable_dlg = dlg_spec.wait('visible')" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": {}, + "outputs": [ + { + "ename": "ElementNotFoundError", + "evalue": "{'title': 'Untitled-Notepad', 'class_name': 'Notepad', 'backend': 'uia', 'visible_only': False}", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mElementNotFoundError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[0mpywinauto\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mapplication\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mApplication\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0mapp\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mApplication\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mbackend\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m\"uia\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mconnect\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtitle\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'Untitled-Notepad'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mclass_name\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'Notepad'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3\u001b[0m \u001b[0mnotepad\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mapp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mwindow\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mclass_name\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mNotepad\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[1;31m#notepad.wait('ready')\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\pywinauto-0.6.7-py3.7.egg\\pywinauto\\application.py\u001b[0m in \u001b[0;36mconnect\u001b[1;34m(self, **kwargs)\u001b[0m\n\u001b[0;32m 976\u001b[0m ).process_id\n\u001b[0;32m 977\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 978\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mprocess\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mfindwindows\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfind_element\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mprocess_id\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 979\u001b[0m \u001b[0mconnected\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mTrue\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 980\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\pywinauto-0.6.7-py3.7.egg\\pywinauto\\findwindows.py\u001b[0m in \u001b[0;36mfind_element\u001b[1;34m(**kwargs)\u001b[0m\n\u001b[0;32m 85\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 86\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0melements\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 87\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mElementNotFoundError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 88\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 89\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0melements\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m>\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mElementNotFoundError\u001b[0m: {'title': 'Untitled-Notepad', 'class_name': 'Notepad', 'backend': 'uia', 'visible_only': False}" + ] + } + ], + "source": [ + "from pywinauto.application import Application\n", + "app = Application(backend=\"uia\").connect(title='Untitled-Notepad', class_name='Notepad')\n", + "notepad = app.window(class_name=Notepad)\n", + "\n", + "#notepad.wait('ready')\n", + "#menu_item = notepad.MenuItem(u'&File->E&xit')\n", + "#menu_item.Click()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/sample1.csv b/sample1.csv new file mode 100644 index 0000000..716493b --- /dev/null +++ b/sample1.csv @@ -0,0 +1,26 @@ +Sl.No.,Parameters,Test Result Specified,Test Result Measured,Remarks +1,Mechanical Dimensions,*,*,* +1.1,Width x Height,Width:36±1 mm,36,* +*,*,Height:26±1 mm,27,* +1.2,Weight(grams),<80,76,* +2,Bias compensation,*,*,* +2.1,Volatage difference between U1 & U2,<=3.5,-7µVolts,R_Bias=15Kohms +3,Polarity,*,*,* +3.1,+1g,-0.34V to -0.46V,-0.369366V,* +3.2,-1g,+0.34 to +0.46,0.369373V,* +4,Performance Parameters,*,*,* +4.1,SF(at+42.5°C),2.0 mA/g±15%,1.89,* +4.2,SF Temp.Coefficient,200 ppm/°C(max),9.61,* +4.3,SF Hysteresis,100 ppm(max),3.44,* +4.4,SF Day to Day stability,100 ppm(max),3.44,* +4.5,SF stability(In run),30 ppm(max),1.58,* +4.6,Bias,4000 µg(max),244.48,* +4.7,Bias Temp.Coefficient,30 µg/°C(max),10.62,* +4.8,Bias Hysteresis,225 µg,60.97,* +4.9,Bias Day to Day Stability,100µg(max),14.25,* +4.10,Bias Stability(In run),30 µg(max),2.63,* +4.11,Misalignment,±600,142.76,* +4.12,Axis Misalignment Stability (Day to Day),15'',6.14,* +4.13,Bandwidth,>250 Hz,*,* +*,*,Gain(Hz)-3dB,1020(Hz),* +*,*,Phase(deg)90°,623.4(Hz),* diff --git a/sample2.csv b/sample2.csv new file mode 100644 index 0000000..08985ee --- /dev/null +++ b/sample2.csv @@ -0,0 +1,4 @@ +Checked by,Name,Signature,Date +Production Rep.,*,*,* +Internal QC Rep.,*,*,* +R&QA Rep.,*,*,*