Exemple #1
0
    def _process_trace(self, t, reverse=False):
        l1 = len(t.trace)
        l2 = len(t.trace[0])
        swap_groups = []
        cols_used = set()
        for i in range(l1 - 1):
            prev_row = -1
            for j in range(l2 - 1):
                if t.trace[i][j]:
                    if prev_row != i:
                        if j not in cols_used:
                            if reverse:
                                grp = Transformation([t.s2[i]], [t.s1[j]])
                                cols_used.add(j)
                            else:
                                grp = Transformation([t.s1[j]], [t.s2[i]])
                                cols_used.add(j)
                            swap_groups.append(grp)
                            prev_row = i
                        else:
                            if reverse:
                                grp = Transformation([t.s1[j]], [])
                            else:
                                grp = Transformation([], [t.s2[i]])
                            swap_groups.append(grp)
                            prev_row = i
                    else:
                        if reverse:
                            swap_groups[len(swap_groups) - 1].right.append(
                                t.s1[j])
                        else:
                            swap_groups[len(swap_groups) - 1].left.append(
                                t.s1[j])

        return swap_groups
Exemple #2
0
def main():

    if len(sys.argv) != 3:
        print('Error: Execution -> python3 main.py <url> <name_database>')
        exit(1)

    url = sys.argv[1]
    name_db = sys.argv[2]

    transformation = Transformation(url=url,
                                    output_path='databases/',
                                    name_db=name_db)
    transformation.transformation()

    load = Load(transformation.new_engine)
    load.load(output_path='excel/')
 def fix_spr(self, spr_obj):
     """
     Sprite fixes, such as color and transparency issues
     """
     spr_obj[0] = Transformation.resize(spr_obj)
     spr_obj[0] = spr_obj[0].convert_alpha()
     return spr_obj
	def updateNode(self, camera):
		s = Transformation.fromData("scale", (self.scaleX, self.scaleY))

		#FIXME: WHY THE MINUS HERE?
		r = Transformation.fromData("rotate", (self.rotation,))
		t = Transformation.fromData("translate", (self.x, self.y))

		a = self.__anchor
		ia = inv(self.__anchor)

		tb = (t * s * r * ia).translationAfter 
		
		n = self.__node
		n.set('x', str(tb.x))
		n.set('y', str(tb.y))

		n.set('transform', (s*r).toCss())
Exemple #5
0
    def __init__(self):
        self.vicon_lists = []
        self.vicon_ts = []
        self.vicon_x = []
        self.vicon_y = []
        self.vicon_z = []
        self.vicon_qw = []
        self.vicon_qx = []
        self.vicon_qy = []
        self.vicon_qz = []

        self.opti_lists = []
        self.opti_ts = []
        self.opti_x = []
        self.opti_y = []
        self.opti_z = []
        self.opti_qw = []
        self.opti_qx = []
        self.opti_qy = []
        self.opti_qz = []

        self.opti_orig_lists = [
        ]  # Original (i.e., opti to wand) before transformation
        self.opti_orig_ts = []
        self.opti_orig_x = []
        self.opti_orig_y = []
        self.opti_orig_z = []
        self.opti_orig_qw = []
        self.opti_orig_qx = []
        self.opti_orig_qy = []
        self.opti_orig_qz = []

        self.T_ts = []
        self.T_x = []
        self.T_y = []
        self.T_z = []
        self.T_qw = []
        self.T_qx = []
        self.T_qy = []
        self.T_qz = []

        self.T_vicon_to_opti_positions = []
        self.T_vicon_to_opti_quats = []

        self.T_obj = Transformation()
Exemple #6
0
    def test_all_equation_substitutions_addition_by_same(self):

        equation = Parser.parse_equation('3.0 = (x)+(x)')

        substitution = ExpressionSubstitution(Parser.parse_expression('a + a'),
                                              Parser.parse_expression('2*a'))

        transformation = Transformation.apply_all_substitution_transformations(
            substitution)

        result = transformation.apply(equation)

        verify(str(result), self.reporter)
Exemple #7
0
def demo():
    image = request.files['sample.jpg']
    stream = image.stream
    name = image.name
    print(name)
    img_array = np.asarray(bytearray(stream.read()), dtype=np.uint8)
    img = cv2.imdecode(img_array, 1)
    path = './tmp/' + name
    cv2.imwrite(path, img)
    print("demo------------6")
    return_name = Transformation.transform(name)
    # return send_from_directory('./transformed', name)
    return jsonify({'data': return_name})
Exemple #8
0
    def test_all_equation_substitutions_simple(self):

        equation = Parser.parse_equation('y = (x)-(x)')

        substitution = ExpressionSubstitution(Parser.parse_expression('a - a'),
                                              Parser.parse_expression('0'))

        transformation = Transformation.apply_all_substitution_transformations(
            substitution)

        result = transformation.apply(equation)

        verify(str(result), self.reporter)
def animate_cfg(cfg: ConfigFile, identity=False):
    corr_markers = cfg.markers  # List of vertex-tuples (source, target)
    if identity:
        corr_markers = np.ascontiguousarray(
            np.array((corr_markers[:, 0], corr_markers[:, 0]), dtype=np.int).T)

    original_source = meshlib.Mesh.load(cfg.source.reference)
    original_target = meshlib.Mesh.load(cfg.target.reference)
    if identity:
        original_target = meshlib.Mesh.load(cfg.source.reference)

    mapping = get_correspondence(original_source, original_target,
                                 corr_markers)
    transf = Transformation(original_source,
                            original_target,
                            mapping,
                            smoothness=1)
    animate(transf, list(cfg.source.load_poses()))
Exemple #10
0
def api_image():
    count = 0
    image = request.files['sample.jpg']
    stream = image.stream
    name = str(count) + '_' + image.name
    print(name)
    path = os.path.join(app.config['UPLOAD_FOLDER'], name)
    img_array = np.asarray(bytearray(stream.read()), dtype=np.uint8)
    print("------------1")
    img = cv2.imdecode(img_array, 1)
    cv2.imwrite(path, img)
    print("------------2")
    # print(url_for(url_path))
    return_name = Transformation.transform(name)
    # return redirect(url_for(uploaded_file(name)))
    count = count + 1
    # return send_from_directory('./resized', return_name)
    return send_from_directory('./resized', "hoge_resize.jpg")
Exemple #11
0
	def __init__(self, canvas, id, distance=None, width=None, height=None, **params):
		self.__canvas = canvas
		self.__id = id
		self.__node = canvas.loadSvgNode(id)
		
		# first set distance 

		print id, self.__node
		if distance is not None:
			self.__distance = distance
		elif width is not None:
			Transformation.fromCss(self.__node.get("transform",""))
			raise Exception("NYI")
			#self.__distance = ...
		elif height is not None:
			Transformation.fromCss(self.__node.get("transform",""))
			raise Exception("NYI")
			#self.__distance = ...
		else:
			raise ValueError("At least one of distance, width or height must be set.")

		# find gravity
		gx = float(self.__node.get("width"))/2
		gy = float(self.__node.get("height"))/2
		#gx = 0
		#gy = 0
		self.__anchor = Transformation.fromData("translate", (gx, gy))

		# get transformation data from xml node
		x = float(self.__node.get("x",0))
		y = float(self.__node.get("y",0))
		t1 = Transformation.fromCss(self.__node.get("transform",""))
		#t2 = self.__anchor * Transformation.fromData("translate", (x,y)) * t1
		t2 = Transformation.fromData("translate", (x,y)) * t1 * self.__anchor

		#print "Before:", t2.translationBefore.x, t2.translationBefore.y
		#print "After :", t2.translationAfter.x, t2.translationAfter.y

		# apply local transformation data
		self.x = t2.translationBefore.x
		self.y = t2.translationBefore.y
		self.rotation = t2.rotation.beta

		self.scaleX = t2.scale.sx
		self.scaleY = t2.scale.sy

		print (self.x, self.y)
Exemple #12
0
 def dimetricXZ(self):
     Transformation.dimetricXZ(self)
     return {"x": self.x, "y": self.y, "z": self.z}
Exemple #13
0
 def trimetricZ(self):
     Transformation.trimetricZ(self)
     return {"x": self.x, "y": self.y, "z": self.z}
Exemple #14
0
 def isometric(self):
     Transformation.isometric(self)
     return {"x": self.x, "y": self.y, "z": self.z}
Exemple #15
0
 def oblique(self):
     Transformation.oblique(self)
     return {"x": self.x, "y": self.y, "z": self.z}
Exemple #16
0
 def translationY(self, number):
     Transformation.matrixTranslationY(number, self)
     return {"x": self.x, "y": self.y, "z": self.z}
Exemple #17
0
 def shearY(self, number):
     Transformation.matrixShearY(number, self)
     return {"x": self.x, "y": self.y, "z": self.z}
Exemple #18
0
 def __init__(self, dataSource, dataSet):
     trans_obj = Transformation(dataSource, dataSet)
Exemple #19
0
class Data(object):
    def __init__(self):
        self.vicon_lists = []
        self.vicon_ts = []
        self.vicon_x = []
        self.vicon_y = []
        self.vicon_z = []
        self.vicon_qw = []
        self.vicon_qx = []
        self.vicon_qy = []
        self.vicon_qz = []

        self.opti_lists = []
        self.opti_ts = []
        self.opti_x = []
        self.opti_y = []
        self.opti_z = []
        self.opti_qw = []
        self.opti_qx = []
        self.opti_qy = []
        self.opti_qz = []

        self.opti_orig_lists = [
        ]  # Original (i.e., opti to wand) before transformation
        self.opti_orig_ts = []
        self.opti_orig_x = []
        self.opti_orig_y = []
        self.opti_orig_z = []
        self.opti_orig_qw = []
        self.opti_orig_qx = []
        self.opti_orig_qy = []
        self.opti_orig_qz = []

        self.T_ts = []
        self.T_x = []
        self.T_y = []
        self.T_z = []
        self.T_qw = []
        self.T_qx = []
        self.T_qy = []
        self.T_qz = []

        self.T_vicon_to_opti_positions = []
        self.T_vicon_to_opti_quats = []

        self.T_obj = Transformation()

    def add_vicon_data(self, data):
        self.vicon_lists.append(data)

    def add_opti_data(self, data):
        self.opti_lists.append(data)

    def add_opti_orig_data(self, data):
        self.opti_orig_lists.append(data)

    def set_vicon(self):
        self.vicon_ts = np.asarray([data[0] for data in self.vicon_lists])
        self.vicon_x = np.asarray([data[1] for data in self.vicon_lists])
        self.vicon_y = np.asarray([data[2] for data in self.vicon_lists])
        self.vicon_z = np.asarray([data[3] for data in self.vicon_lists])
        self.vicon_qw = np.asarray([data[4] for data in self.vicon_lists])
        self.vicon_qx = np.asarray([data[5] for data in self.vicon_lists])
        self.vicon_qy = np.asarray([data[6] for data in self.vicon_lists])
        self.vicon_qz = np.asarray([data[7] for data in self.vicon_lists])

    def set_opti(self):
        self.opti_ts = np.asarray([data[0] for data in self.opti_lists])
        self.opti_x = np.asarray([data[1] for data in self.opti_lists])
        self.opti_y = np.asarray([data[2] for data in self.opti_lists])
        self.opti_z = np.asarray([data[3] for data in self.opti_lists])
        self.opti_qw = np.asarray([data[4] for data in self.opti_lists])
        self.opti_qx = np.asarray([data[5] for data in self.opti_lists])
        self.opti_qy = np.asarray([data[6] for data in self.opti_lists])
        self.opti_qz = np.asarray([data[7] for data in self.opti_lists])

    def set_opti_orig(self):
        self.opti_orig_ts = np.asarray(
            [data[0] for data in self.opti_orig_lists])
        self.opti_orig_x = np.asarray(
            [data[1] for data in self.opti_orig_lists])
        self.opti_orig_y = np.asarray(
            [data[2] for data in self.opti_orig_lists])
        self.opti_orig_z = np.asarray(
            [data[3] for data in self.opti_orig_lists])
        self.opti_orig_qw = np.asarray(
            [data[4] for data in self.opti_orig_lists])
        self.opti_orig_qx = np.asarray(
            [data[5] for data in self.opti_orig_lists])
        self.opti_orig_qy = np.asarray(
            [data[6] for data in self.opti_orig_lists])
        self.opti_orig_qz = np.asarray(
            [data[7] for data in self.opti_orig_lists])

    def find_nearest_idx(self, array, value):
        idx = (np.abs(array - value)).argmin()
        return idx

    def diff(self, value_1, value_2):
        return np.absolute(value_1 - value_2)

    def optimize_T(self):
        for vicon_idx in range(len(self.vicon_ts)):
            opti_idx = self.find_nearest_idx(self.opti_ts,
                                             self.vicon_ts[vicon_idx])

            x_diff = self.diff(self.vicon_x[vicon_idx], self.opti_x[opti_idx])
            y_diff = self.diff(self.vicon_y[vicon_idx], self.opti_y[opti_idx])
            z_diff = self.diff(self.vicon_z[vicon_idx], self.opti_z[opti_idx])
            qw_diff = self.diff(np.absolute(self.vicon_qw[vicon_idx]),
                                np.absolute(self.opti_qw[opti_idx]))
            qx_diff = self.diff(np.absolute(self.vicon_qx[vicon_idx]),
                                np.absolute(self.opti_qx[opti_idx]))
            qy_diff = self.diff(np.absolute(self.vicon_qy[vicon_idx]),
                                np.absolute(self.opti_qy[opti_idx]))
            qz_diff = self.diff(np.absolute(self.vicon_qz[vicon_idx]),
                                np.absolute(self.opti_qz[opti_idx]))

            if x_diff <= 0.03 and y_diff <= 0.03 and z_diff <= 0.03 and \
               qw_diff <= 0.03 and qx_diff <= 0.03 and qy_diff <= 0.03 and qz_diff <= 0.03:
                # T_vicon_to_wand
                T_vicon_to_wand = self.T_obj.convert_to_T_matrix(
                    position=np.array([
                        self.vicon_x[vicon_idx], self.vicon_y[vicon_idx],
                        self.vicon_z[vicon_idx]
                    ]),
                    quat=np.array([
                        self.vicon_qw[vicon_idx], self.vicon_qx[vicon_idx],
                        self.vicon_qy[vicon_idx], self.vicon_qz[vicon_idx]
                    ]))

                # T_opti_to_wand
                T_opti_to_wand = self.T_obj.convert_to_T_matrix(
                    position=np.array([
                        self.opti_orig_x[opti_idx], self.opti_orig_y[opti_idx],
                        self.opti_orig_z[opti_idx]
                    ]),
                    quat=np.array([
                        self.opti_orig_qw[opti_idx],
                        self.opti_orig_qx[opti_idx],
                        self.opti_orig_qy[opti_idx],
                        self.opti_orig_qz[opti_idx]
                    ]))

                # T_wand_to_opti
                T_wand_to_opti = self.T_obj.inverse_matrix(T_opti_to_wand)

                # T_vicon_to_opti
                T_vicon_to_opti = np.dot(T_vicon_to_wand, T_wand_to_opti)

                T_vicon_to_opti_position, T_vicon_to_opti_quat = \
                    self.T_obj.convert_T_matrix_to_position_and_quat(T_vicon_to_opti)
                print 'T_vicon_to_opti: \nPos (x y z): {}\nQuat (w x y z): {}'.format(
                    T_vicon_to_opti_position, T_vicon_to_opti_quat)

                # Save result
                self.T_vicon_to_opti_positions.append(T_vicon_to_opti_position)
                self.T_vicon_to_opti_quats.append(T_vicon_to_opti_quat)

                # Add data for visualization
                self.T_ts.append(self.opti_ts[opti_idx])
                self.T_x.append(self.opti_x[opti_idx])
                self.T_y.append(self.opti_y[opti_idx])
                self.T_z.append(self.opti_z[opti_idx])
                self.T_qw.append(self.opti_qw[opti_idx])
                self.T_qx.append(self.opti_qx[opti_idx])
                self.T_qy.append(self.opti_qy[opti_idx])
                self.T_qz.append(self.opti_qz[opti_idx])

        print len(self.T_vicon_to_opti_positions)
        print np.mean(self.T_vicon_to_opti_positions, axis=0)
        print np.mean(self.T_vicon_to_opti_quats, axis=0)

    def error(self):
        x_err = []
        y_err = []
        z_err = []
        qx_err = []
        qy_err = []
        qz_err = []
        qw_err = []

        self.vicon_ts = self.vicon_ts[::5]
        self.vicon_x = self.vicon_x[::5]
        self.vicon_y = self.vicon_y[::5]
        self.vicon_z = self.vicon_z[::5]
        self.vicon_qw = self.vicon_qw[::5]
        self.vicon_qx = self.vicon_qx[::5]
        self.vicon_qy = self.vicon_qy[::5]
        self.vicon_qz = self.vicon_qz[::5]

        self.opti_ts = self.opti_ts[::5]
        self.opti_x = self.opti_x[::5]
        self.opti_y = self.opti_y[::5]
        self.opti_z = self.opti_z[::5]
        self.opti_qw = self.opti_qw[::5]
        self.opti_qx = self.opti_qx[::5]
        self.opti_qy = self.opti_qy[::5]
        self.opti_qz = self.opti_qz[::5]

        for vicon_idx in range(len(self.vicon_ts)):
            print vicon_idx, '/', len(self.vicon_ts)
            opti_idx = self.find_nearest_idx(self.opti_ts,
                                             self.vicon_ts[vicon_idx])

            if self.diff(self.vicon_ts[vicon_idx],
                         self.opti_ts[opti_idx]) < 0.1:
                x_err.append(
                    self.diff(self.vicon_x[vicon_idx], self.opti_x[opti_idx]))
                y_err.append(
                    self.diff(self.vicon_y[vicon_idx], self.opti_y[opti_idx]))
                z_err.append(
                    self.diff(self.vicon_z[vicon_idx], self.opti_z[opti_idx]))
                qw_err.append(
                    self.diff(self.vicon_qw[vicon_idx],
                              -self.opti_qw[opti_idx]))
                qx_err.append(
                    self.diff(self.vicon_qx[vicon_idx],
                              -self.opti_qx[opti_idx]))
                qy_err.append(
                    self.diff(self.vicon_qy[vicon_idx],
                              -self.opti_qy[opti_idx]))
                qz_err.append(
                    self.diff(self.vicon_qz[vicon_idx],
                              -self.opti_qz[opti_idx]))

        print np.mean(x_err)
        print np.mean(y_err)
        print np.mean(z_err)
        print np.mean(qw_err)
        print np.mean(qx_err)
        print np.mean(qy_err)
        print np.mean(qz_err)
Exemple #20
0
 def scale(self, escala):
     Transformation.scale(escala, self)
     return {"x": self.x, "y": self.y, "z": self.z}
Exemple #21
0
        return args 

        
        
if __name__ == '__main__':
   # v_args = GetArgs() 
   # v_input_file_type = v_args.input_file_type
    
    v_input_file_type = "csv"
    # Import Data : class get_data
    obj_get_data = getdata()
    source_df = obj_get_data.ReadCSVData()
    
    # Transformation : class transformation 
    
    obj_transformation = Transformation(source_df)
    obj_transformation.set_time_readable()
    obj_transformation.set_medium_source_path()
    top_source_medium_df = obj_transformation.final_dataframe()
    #v_name = top_source_medium_df.
    print(top_source_medium_df)
    distinctusers_batch = obj_transformation.execute_metrics(10000)  
    print(distinctusers_batch) 
    distinctusers_day = obj_transformation.calc_distinctusers_perday()
    print(distinctusers_day)
    
    # Save Output based on required format 
    
    obj_SaveOutput = SaveOutput(top_source_medium_df, 'top_source_medium')
    obj_SaveOutput.save_data()
    
Exemple #22
0
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

if __name__ == '__main__':
    strings_list = sys.argv

    if len(strings_list) < 2:
        print("Please pass in at least one argument")
        exit()

    action = f"{strings_list[1]}"

    output_format = ""
    if len(strings_list) >= 3:
        output_format = f"{strings_list[2]}"

    transformation = Transformation(output_format)

    if action.lower().strip() == "device_tahmo_mapping":
        transformation.map_devices_to_tahmo_station()

    elif action.lower().strip() == "site_tahmo_mapping":
        transformation.map_sites_to_tahmo_station()

    elif action.lower().strip() == "sites_without_a_primary_device":
        transformation.get_sites_without_a_primary_device()

    elif action.lower().strip() == "missing_devices_on_bigquery":
        transformation.get_devices_not_up_to_date_on_big_query()

    elif action.lower().strip() == "update_primary_devices":
        transformation.update_primary_devices()
Exemple #23
0
 def generateActions(self, world, market):
     finish = False
     actions = []
     untradeable_resources = [
         'R1', 'R4', 'R7', 'R19', 'R21', 'R22', "R1'", "R5'", "R6'", "R18'",
         "R19'", "R20'", "R21'", "R22'", "cash"
     ]
     while not finish:
         print("Awaiting command: ")
         string = str(input())
         tokens = string.split()
         command = tokens[0].lower()
         if command == "buy":
             if len(tokens) < 3:
                 print("Missing parameters")
             else:
                 ticker = tokens[1].upper()
                 if ticker in untradeable_resources:
                     print("Cannot buy " + ticker)
                 else:
                     orders = []
                     for i in range(2, len(tokens)):
                         order = tokens[i].split(",")
                         content = {}
                         strike = float(order[0])
                         content["strike"] = strike
                         quantity = int(order[1])
                         content["quantity"] = quantity
                         if len(order) >= 3:
                             expiration = int(order[2])
                             content["expiration"] = expiration
                         orders.append(content)
                     transaction = Transaction(self.name, "buy",
                                               {ticker: orders}, market)
                     actions.append(transaction)
                     print("Submitted:")
                     print(transaction.toString())
         elif command == "sell":
             if len(tokens) < 3:
                 print("Missing parameters")
             else:
                 ticker = tokens[1].upper()
                 if ticker in untradeable_resources:
                     print("Cannot sell " + ticker)
                 else:
                     orders = []
                     for i in range(2, len(tokens)):
                         order = tokens[i].split(",")
                         content = {}
                         strike = float(order[0])
                         content["strike"] = strike
                         quantity = int(order[1])
                         content["quantity"] = quantity
                         if len(order) >= 3:
                             expiration = int(order[2])
                             content["expiration"] = expiration
                         orders.append(content)
                     transaction = Transaction(self.name, "sell",
                                               {ticker: orders}, market)
                     actions.append(transaction)
                     print("Submitted:")
                     print(transaction.toString())
         elif command == "show":
             if len(tokens) > 1:
                 flag = tokens[1].lower()
                 if flag == "-w":
                     print("World State:", world)
                 elif flag == "-m":
                     market.printOrderBook()
                 elif flag == "-t":
                     if len(tokens) < 3:
                         print("Missing parameters")
                     else:
                         tickers = tokens[2].split(",")
                         for i in range(0, len(tickers)):
                             ticker = tickers[i].upper()
                             print(ticker, market.quotePrice(ticker))
                 elif flag == "-tm":
                     print("housing:", housing)
                     print("alloys:", alloys)
                     print("electronics:", electronics)
                     print("farms:", farms)
                     print("factories:", factories)
                     print("metallic_elements:", metallic_elements)
                     print("timber:", timber)
                     print("plant:", plant)
                 else:
                     print("Illgeal flag")
             else:
                 print("My State:", world[self.name])
         elif command == "mine":
             if len(tokens) < 3:
                 print("missing parameters")
             else:
                 resource = tokens[1].upper()
                 difficulty = int(tokens[2])
                 mine = Mine(self, resource, difficulty)
                 print("Submitted: ", mine.toString())
                 actions.append(mine)
         elif command == "transform":
             if len(tokens) < 3:
                 print("missing parameters")
             else:
                 t = tokens[1].lower()
                 multiplier = int(tokens[2])
                 template = ""
                 if t == "housing":
                     template = housing
                 if t == "alloys":
                     template = alloys
                 if t == "electronics":
                     template = electronics
                 if t == "farms":
                     template = farms
                 if t == "factories":
                     template = factories
                 if t == "metallic_elements":
                     template = metallic_elements
                 if t == "timber":
                     template = timber
                 if t == "plant":
                     template = plant
                 if template:
                     transformation = Transformation(
                         self.name, template, multiplier)
                     print("Submitted: ", transformation.toString())
                     actions.append(transformation)
                 else:
                     print("Illegal template")
         # Congratulations! You have found the easter egg!
         elif command == "greedisgood":
             money = 5000
             if len(tokens) >= 2:
                 money = float(tokens[1])
             world[self.name]["cash"] = world[self.name]["cash"] + money
             print("You gave yourself " + str(money) + " cash. Go crazy!")
         elif command == "end":
             finish = True
         elif command == "help":
             print("Here's a list of the commands: ")
             print("1. show [-w] [-m] [-t (t1,t2,t3...)] [-tm]")
             print(
                 "2. buy (ticker) (strike1,quantity1,[expiration1]) (strike2,quantity2,[expiration2]) ..."
             )
             print(
                 "3. sell (ticker) (strike1,quantity1,[expiration1]) (strike2,quantity2,[expiration2]) ..."
             )
             print("4. mine (resource) (difficulty)")
             print("5. transform (template) (multiplier)")
             print("6. end")
         else:
             print("Illegal command")
         print()
     return actions
    def run(self):
        self.tracker1.getVideo(self.Video1)
        self.tracker2.getVideo(self.Video2)
        self.db.connect()
        self._id = 0
        self.idChecker = CamId()

        while True:
            if self.stopC == 1:
                break

            center1 = self.tracker1.trackFrame()
            center2 = self.tracker2.trackFrame()

            if center1 == -1 or center2 == -1:
                break

            if center1 == None:
                scaledCenter = Transformation(
                    center2, self.trapezium.getTrapeziumBaseLarge(),
                    self.trapezium.getTrapeziumBaseSmall(),
                    self.trapezium.getTrapeziumHeight(),
                    self.trapezium.getZeroPointPosition())
                self.center = Rotate(scaledCenter)
                delta = None
                self.camInd = "Вторая"
            elif center2 == None:
                scaledCenter = Transformation(
                    center1, self.trapezium.getTrapeziumBaseLarge(),
                    self.trapezium.getTrapeziumBaseSmall(),
                    self.trapezium.getTrapeziumHeight(),
                    self.trapezium.getZeroPointPosition())
                self.center = scaledCenter
                delta = None
                self.camInd = "Первая"
            else:
                scaledCenter1 = Transformation(
                    center1, self.trapezium.getTrapeziumBaseLarge(),
                    self.trapezium.getTrapeziumBaseSmall(),
                    self.trapezium.getTrapeziumHeight(),
                    self.trapezium.getZeroPointPosition())
                scaledCenter2 = Transformation(
                    center2, self.trapezium.getTrapeziumBaseLarge(),
                    self.trapezium.getTrapeziumBaseSmall(),
                    self.trapezium.getTrapeziumHeight(),
                    self.trapezium.getZeroPointPosition())

                delta = Compare(scaledCenter1, scaledCenter2)
                self.center = ([
                    int((scaledCenter1[0] + scaledCenter2[0]) / 2),
                    int((scaledCenter1[1] + scaledCenter2[1]) / 2)
                ])
                delta = [int(delta[0]), int(delta[1])]
                self.camInd = "Обе"

            self.center = [int(self.center[0]), int(self.center[1])]

            if not self.idChecker.isCurrent(self.center):
                self._id = self._id + 1

            self.GetNewCoordinatesInt.emit(self.center[0], self.center[1])
            self.GetNewCoordinatesStr.emit("Позиция = " + str(self.center) +
                                           "  Камера: " + self.camInd +
                                           "  Объект: " + str(self._id))

            self.db.vrite(self.center, delta, self.camInd, self._id)
            if self.runIndicator != 1:
                self.runIndicator = 1

        self.db.commit()
        self.db.disconnect()
        self.tracker1.stop()
        self.tracker2.stop()
        if self.stopC != 0:
            self.stopC = 0
        if self.runIndicator != 0:
            self.runIndicator = 0