def getSize():  #Возвращает значимые параметры bmp из файла с его размерами.
    with open("size.txt", 'r') as f:
        arr = np.asfarray(f.readlines(), float)
    f.close()
    listOfObjects = Point()
    listOfObjects.i = arr[0]
    listOfObjects.j = arr[1]
    return listOfObjects
def convolution(index1, index2):  #Create exitConvolution.txt

    xz = open("___WhatIsHappened" + str(index1) + str(index2) + ".txt", 'w')
    sizeOfPictures = getSize()
    filename = (cf.optionsOfColorFile[index1]()
                if index2 == 0 else cf.choiseOfMatrixWorks(index1))
    #Подаем определенны файл на чтение ( один из трех  цветов либо
    xz.write(filename)
    with open(filename, 'r') as f:  #Открываем файл
        matrix = f.readlines()  # Заполняем массив matrix, в котором весь файл
        matrix = np.asfarray(matrix, float)  #Преобразуем во float
    filename = cf.optionsOfWeightConversationFile[index1](
    )  #файл с набором весов для передачи в Convolution Layer и далее
    with open(filename, 'r') as f:
        weightConv = f.readlines()  #запимываем файл в массив weightConv
        weightConv = np.asfarray(weightConv, float)  #Преобразуем во float

    #Теперь прогоняем файл через массив
    # Так как массив одномерный а использовать хотелось бы двумерный, то будем придерживаться логики, что координата в
    # двумерном массиве есть по определению:
    # координата i = номер ячейки // длина массива**1/2
    # координата j = номер ячейки % длина массива**1/2
    # соответственно чтобы вычислить координату в одномерном массиве мы будем придерживаться следующей логике:
    # Координата в массиве = i*длину массива + j
    #Массив у нас 6х4 по этому длина массиву массива принимаем за 4

    p = Point()  #юда будем подавать координаты ячейки
    p.i = 0
    p.j = 0
    coordinate = p.i * 4 + p.j
    #matrix = list(map((lambda x:x*weightConv[coordinate]),matrix))  #преобразовали весь массив, умножив на вес
    # в weightConvArray

    # Теперь надо пройтись картой 5х5 по всему массиву matrix
    filename = "Core" + str(index1) + str(
        index2) + ".txt"  #Продумать функцию прохода
    with open(filename, 'r') as f:
        mapWeight = f.readlines()  #запимываем файл в массив weightConv
        mapWeight = np.asfarray(mapWeight, float)  #Преобразуем во float
    f.close()
    coord = Point()
    newArray = []
    timeValue = 0.0
    sizeArray = int(((len(matrix))**(1 / 2)) / 1)  # будет длина массива
    matrix = list(matrix)  # преобразуем в лист
    del matrix[sizeArray**
               2:]  # обрезаем ненужное чтобы привести к квадратному виду
    matrix = np.asfarray(matrix, float)

    n = (int(10) if index2 == 0 else int(4)
         )  # Обрезаем карту. Надо срезать по уму. Было до 10 и до 4
    xz.write(filename)
    xz.write("coord_i coord_j   i   j\n")
    for i in range(
            sizeArray -
            n):  # Обрезаем карту. Надо срезать по уму. Было до 10 и до 4
        for j in range(sizeArray - n):
            coord.i = int(i * (sizeArray - n) + j)
            for x in range(5):  #потому что карта 5х5
                for y in range(5):
                    coord.j = int(x * 5 + y)
                    timeValue = timeValue + matrix[
                        coord.i + coord.j] * mapWeight[
                            coord.
                            j]  #Здесь идет наращивание значени при свертке
                    #xz.write("matrix"+str(coord.i+coord.j)+'=%f ' % matrix[coord.i+coord.j])
                    #xz.write("mapWeight"+str(coord.j)+'=%f\n' % mapWeight[coord.j])
                    #xz.writelines("%f\n" % timeValue)
            newArray.append(timeValue)  # собираем массив
            timeValue = 0.0
    xz.close()
    filename = "exitConvolution" + str(index1) + str(index2) + ".txt"
    with open(filename, 'w') as f:
        f.writelines("%f\n" % z for z in newArray)
    f.close()