Ejemplo n.º 1
0
    def loadImg(self) -> None:
        """
        Load image to process by CT.
        :return: None
        """
        filename = QtWidgets.QFileDialog.getOpenFileName(
            self, "Open img", "../../..", "Image Files (*.png *.jpg *.bmp)")
        if filename[0] == '':
            return
        else:
            img = io.imread(path.expanduser(filename[0]))  # rgb

            circle_inside_img_radius = sqrt(img.shape[0]**2 +
                                            img.shape[1]**2) // 2

            fig = self.plots_layout["items"]["img_fig"]["object"]
            fig.setPixmap(Conversion().array2qpixmap(img))

            self.inputs["img"] = Conversion().rgb2greyscale(img)
            self.inputs_layout["items"]["detectors_distance"][
                "object"].setMaximum(2 * circle_inside_img_radius)
            self.inputs_layout["items"]["detectors_distance"][
                "object"].setEnabled(True)
            self.buttons_layout["items"]["run"]["object"].setEnabled(True)

            self.plots_layout["items"]["animation_slider"][
                "object"].setDisabled(True)
Ejemplo n.º 2
0
 def preprocessFrame(frame: np.ndarray) -> QPixmap:
     """
     Convert greyscale frame into rgb QPixmap.
     :param frame: numpy greyscale ndarray
     :return: QPixmap
     """
     conv = Conversion()
     return conv.array2qpixmap(conv.greyscale2rgb(frame))
Ejemplo n.º 3
0
 def preprocessFrames(frames: List[np.ndarray]) -> None:
     """
     Convert greyscale frames into rgb QPixmap.
     :param frames: numpy greyscale ndarray list
     :return: None
     """
     conv = Conversion(frames[0].shape)
     for index, img in enumerate(frames):
         frames[index] = conv.array2qpixmap(conv.greyscale2rgb(img))
Ejemplo n.º 4
0
 def __init__(self):
     
     self.ingredient = None
     self.quantity = None
     self.unit = None
     
     self.conversion = Conversion()
Ejemplo n.º 5
0
 def __init__(self):
     self.date = None
     self.name = None
     self.instructions = []
     self.time = None
     self.outcomeSize = None
     self.outcomeUnit = None
     self.ingredients = []
     
     self.conversion = Conversion()
Ejemplo n.º 6
0
def generate_polvar_metadata(polvar, filename = None):
    """
    """
    load_myconfig(filename = filename)   
    polvar = Conversion().findKey('MXPOL', polvar)
    
    if polvar in _DEFAULT_POLARNAMES:
        standard_name, long_name, units, valid_min, valid_max, plot_interval =  _DEFAULT_POLARNAMES[polvar]
    else:
        standard_name, long_name, units, valid_min, valid_max, plot_interval = None, None, None, None, None, None
        
    polvar_metadata = get_mymetadata('Polvar', filename)
    polvar_metadata['units'] = units
    polvar_metadata['standard_name'] = standard_name
    polvar_metadata['short_name'] = Conversion().findKey('MCH', polvar)
    polvar_metadata['long_name'] = long_name
    polvar_metadata['valid_min'] = valid_min
    polvar_metadata['valid_max'] = valid_max
    polvar_metadata['plot_interval'] = plot_interval
    
    
    return polvar_metadata
Ejemplo n.º 7
0
def conv():
    global operators, nums
    op = operators
    k = Conversion(nums)
    if op == '-bd':
        print(k.bd())
    elif op == '-bh':
        print(k.bh())
    elif op == '-db':
        print(k.db())
    elif op == '-dh':
        print(k.dh())
    elif op == '-hb':
        print(k.hb())
    elif op == '-hd':
        print(k.hd())
    else:
        print('error')
Ejemplo n.º 8
0
def get_price():
    URL = 'https://www.etsy.com/au/listing/731261963/dr-phil-earrings?ga_order=most_relevant&ga_search_type=all&ga_view_type=gallery&ga_search_query=dr+phil&ref=sr_gallery-1-3&organic_search_click=1&pro=1'
    page = urlopen(URL)
    soup = BeautifulSoup(page.read(), "html.parser")
    #Title of Product - Dr Phil Earrings
    print("**************************************************")
    title = (soup.find("h1", {"data-listing-id": "731261963"}))
    print(title.text.strip())
    price = soup.find("p", {"class": "wt-text-title-03 wt-mr-xs-2"})
    #remove white space from price
    price = str(price.text.strip())
    #converting price from string to float
    converted_price = Conversion.convert_price(price)
    #converting price from string to float
    print(converted_price)

    if (converted_price < 11.50):
        subject = 'Dr Phil earrings - price has fallen'
        body = 'The price of the Dr Phil earrings has fallen - check the etsy link! https://www.etsy.com/au/listing/731261963/dr-phil-earrings?ga_order=most_relevant&ga_search_type=all&ga_view_type=gallery&ga_search_query=dr+phil&ref=sr_gallery-1-3&organic_search_click=1&pro=1'
        Mailer.send_mail(subject, body)
    else:
        print("Price is above $11.50 - no email sent :-(")
    def load(self) -> bool:
        """
        Load DICOM file and insert file data into widgets.
        :return: bool
        """
        filename = QtWidgets.QFileDialog.getOpenFileName(self, "Open DICOM", "../../..", "DICOM File (*.dcm)")[0]
        if filename == '':
            self.close()
            return False
        else:
            ds = pydicom.dcmread(filename)
            ds.file_meta.TransferSyntaxUID = pydicom.uid.ImplicitVRLittleEndian
            self.img_fig.setPixmap(Conversion().array2qpixmap(ds.pixel_array))

            year, month, day = ds.ContentDate[:4], ds.ContentDate[4:6], ds.ContentDate[6:8]
            hour, minute, second = ds.ContentTime[:2], ds.ContentTime[2:4], ds.ContentTime[4:6]

            self.ct_date_time.setText(f"{year}/{month}/{day} {hour}:{minute}:{second}")
            self.patient_name.setText(str(ds.PatientName))
            self.patient_ID.setText(str(ds.PatientID))
            self.patient_sex.setText(str(ds.PatientSex))
            self.image_comments.setText(str(ds.ImageComments))

            return True
Ejemplo n.º 10
0
class Recipe():
    '''
    Luokka reseptejä varten. Tämä luokka pitää sisällään kaikki reseptille ominaiset attribuutit sekä tarvittavat metodit niiden arvojen muuttamiseksi.
    
    Attributes:
        :self.date: Luontipäivä
        :self.name: Reseptin nimi
        :self.time: Reseptin tekemiseen menevä aika minuuttina (int)
        :self.instructions: Ohjeet (str[])
        :self.outcomeSize: Reseptin lopputuloksen koko, esim. 4 (kg)
        :self.outcomeUnit: Reseptin lopputuloksen yksikkö, esim (4) kg
        :self.ingredients: Raaka-aineet (object[])
        
    Returns:
        Attribuuttien muuttamiseen käytettävät metodit (set* & add* & delete/remove*) palauttavat True, jos muutos onnistuu
    
    Raises:
        Kaikki attribuuttien asettamiseen käytettävät metodit (set* & add*) heittävät SetAttributeErrorin, jos attribuutin arvon asetus epäonnistuu.
    '''
    
    def __init__(self):
        self.date = None
        self.name = None
        self.instructions = []
        self.time = None
        self.outcomeSize = None
        self.outcomeUnit = None
        self.ingredients = []
        
        self.conversion = Conversion()
                
    def setName(self,name):
        ''' Validoi, että nimi on yli 2 merkkiä pitkä ja asettaa sen: self.name'''
        if len(name) > 2:
            self.name = name
            return True
        else:
            raise SetAttributeError("Nimen tulee olla yli 2 merkkiä pitkä")
        
    def setOutcomeSize(self, outcomeSize):
        ''' Muuttaa desimaalipilkun pisteeksi ja settaa määrän floattina: self.outcomeSize'''
        try:
            self.outcomeSize = float(str(outcomeSize).replace(",", "."))
            return True
        except ValueError:
            raise SetAttributeError("Lopputuloksen tulee olla desimaaliluku")
        
    def setOutcomeUnit(self, outcomeUnit):
        ''' Validoi, että yksikkö on ohjelman tuntema ja asettaa sen: self.outcomeUnit'''
        outcomeUnit = outcomeUnit.lower()
        if self.conversion.isValidUnit(outcomeUnit):
            self.outcomeUnit = outcomeUnit
            return True
        else:
            raise SetAttributeError("Yksikkö ei ole ohjelman tuntema")
    
    def setDate(self,date):
        ''' Validoi päivämäärän ja asettaa sen stringinä: self.date'''
        try:
            datetime.datetime.strptime(date,'%d.%m.%Y')
            self.date = date
            return True
        except ValueError:
            raise SetAttributeError("Päivämäärää ei voitu tallentaa")
        
    def setTime(self,time):
        ''' Asettaa reseptin tekemiseen menevän ajan (min) inttinä: self.time'''
        try:
            self.time = int(time)
            return True
        except ValueError:
            raise SetAttributeError("Ajan täytyy olla kokonaisluku (min)")
        
    def addInstruction(self,instruction):
        ''' Validoi, että ohje on yli 2 merkkiä pitkä ja lisää sen self.instruction[] listaan'''
        if len(instruction) > 2:
            self.instructions.append(instruction) 
            return True
        else:
            raise SetAttributeError("Ohjeen tulisi olla yli 2 merkkiä pitkä")
        
    def deleteInstruction(self,index):
        ''' Poistaa reseptiltä ohjeen. Argumenttina annetaan ohjeen sijainti listassa (index)'''
        try:
            del self.instructions[index]
            return True
        except LookupError as e:
            raise SetAttributeError("Ohjetta ei voitu poistaa")
        
    def addIngredientContainer(self, ingredientContainer):
        ''' Validoi, että lisättävä raaka-aine on IngredientContainer-olio sekä lisää raaka-aineen(Container) self.ingredients[] listaan'''
        if isinstance(ingredientContainer,IngredientContainer):
            self.ingredients.append(ingredientContainer)
            return True
        else:
            raise SetAttributeError("Raaka-aine ei ollut IngredientContainer-olio")
    def deleteIngredient(self, index):
        ''' Poistaa reseptiltä raaka-aineen. Argumenttina annetaan ohjeen sijainti listassa (index)'''
        try:
            del self.ingredients[index]
            return True
        except LookupError as e:
            raise SetAttributeError("Raaka-ainetta ei voitu poistaa")
    
    def getName(self):
        ''' Palauttaa reseptin nimen'''
        return self.name
    
    def getDate(self):
        ''' Palauttaa reseptin luontipäivän'''
        return self.date
    
    def getTime(self):
        ''' Palauttaa reseptin tekemiseen menevän ajan inttinä'''
        return self.time
    
    def getTimeGUI(self):
        ''' Palauttaa reseptin tekemiseen menevän ajan stringinä'''
        return str(self.time)
    
    def getTimeStr(self):
        ''' Palauttaa reseptin tekemiseen menevän ajan stringinä, jonka lopussa on " Min"'''
        return '' + str(self.time) + " Min"
    
    def getInstructions(self):
        ''' Palauttaa ohjeet listana'''
        return self.instructions
    
    def getInstructionsStr(self):
        ''' Palauttaa ohjeet stringinä, jokainen ohje omalla rivillä ja edessä ohjeen järjestysnumero eli järjestys listassa'''
        instructions = ''
        a = 1
        for i in self.instructions:
            instructions += str(a) +". " + i + "\n"
            a += 1
        return instructions
    

    def getIngredients(self):
        ''' Palauttaa reseptin raaka-aine oliot listana'''
        return self.ingredients
    
    def getIngredientsStr(self):
        ''' Palauttaa reseptin raaka-aineet stringinä, hyödyntää raaka-aine luokan __str__() metodia'''
        ingredients = ''
        for i in self.ingredients:
            ingredients += i.__str__() + "\n"
        return ingredients
    
    def getIngredientsGUI(self):
        ''' Palauttaa raaka-aineiden nimet listana'''
        ingredients = []
        for i in self.ingredients:
            ingredients.append(i.getName())
        return ingredients
    
    def getOutcomeStr(self):
        ''' Palauttaa reseptin lopputuloksen desimaalipilkulla muodossa "<määrä> <yksikkö>"'''
        return '' + str(self.outcomeSize).replace(".", ",") + ' ' + self.outcomeUnit
    
    def getOutcomeSize(self):
        ''' Palauttaa lopputuloksen floattina'''
        return self.outcomeSize
    
    def getOutcomeSizeGUI(self):
        ''' Palauttaa lopputuloksen stringinä desimaalipilkulla'''
        return str(self.outcomeSize).replace(".", ",")
        
    def getOutcomeUnit(self):
        ''' Palauttaa lopputuloksen yksikön'''
        return self.outcomeUnit
    
    def getAllergensDistinctGUI(self):
        ''' Palauttaa reseptien raaka-aineiden stringinä pilkulla erotettuna. Allergeeni esiintyy listassa vain kerran, vaikka se olisi monessa raaka-aineessa.'''
        allergens = []
        for ingredient in self.ingredients:
            for allergen in ingredient.getAllergens():
                allergens.append(allergen)
        allergenSet = set(allergens)
        string='  '
        for i in allergenSet:
            string += i+ ", "
        #Lopussa ei tarvitse olla ", ", joten poistetaan ne.
        string = string[:-2]
        return string
    
    def __str__(self):
        return '' + self.getName()+", " + self.getTimeStr() + ", " + self.getOutcomeStr() + ". \nIngredients: \n" + \
            self.getIngredientsStr() + "Instructions: \n" + self.getInstructionsStr() 
Ejemplo n.º 11
0
from conversion import Conversion

print("Введите какую-нибудь строку")
first_string = input()
print("И еще одну строку")
second_string = input()

new_first_string = Conversion(first_string)
new_second_string = Conversion(second_string)

print(new_first_string)
print(new_second_string)

print("Объединяем строки", new_first_string.concatenation(second_string))

print("Введите искомый символ")
symbol = input()

print("Ищем символ, он:", new_first_string.search_symbol(symbol))

new_first_string.compare_string(second_string)

print("Преобразуем лист в строку:", new_first_string.list_in_string())
from tkinter import *
from conversion import Conversion

result = 0.0
rows = 5
columns = 7

root = Tk()
root.title("FPS Mouse Sensitivity Converter")
root.minsize(360, 240)
root.maxsize(360, 240)
convert = Conversion()
result_sensitivity = Entry(root, text=result)
input_current_sensitivity = Entry(root)
change_to = IntVar()

label_input_sensitivity = Label(root, text="Input your current sensitivity")
label_result = Label(root, text="Result")
label_convert_for_what_game = Label(root, text="Convert for what game?")

Radiobutton(root, text="Valorant", variable=change_to, value=1).grid(row=2,
                                                                     column=1)
Radiobutton(root, text="CSGO", variable=change_to, value=2).grid(row=1,
                                                                 column=1)
label_convert_for_what_game.grid(row=1, column=0)
label_input_sensitivity.grid(row=3, column=0)
label_result.grid(row=5, column=0)
result_sensitivity.grid(row=5, column=1)

# adding a bit of responsiveness on the window
for i in range(rows):
Ejemplo n.º 13
0
    #__________________________________________________________________________
    # Change the name of the database and collections to your liking
    db = con.feature_extraction_database  # #####REPLACE#####
    song_features = db.song_features_collection  # #####REPLACE#####
    distance_features = db.distance_features_collection  # #####REPLACE#####
    #__________________________________________________________________________

    options, rem = getopt(argv[1:], 'c:e:d:n:g:h', [
        'conversion=', 'extraction=', 'distance', 'neighbour', 'graphdist',
        'help'
    ])

    for opt, arg in options:
        if opt in ('-c', '--conversion'):
            from conversion import Conversion
            c = Conversion(arg, rem[0])
        elif opt in ('-e', '--extraction'):
            from extraction import Extraction
            e = Extraction(arg, song_features)
        elif opt in ('-d', '--distance'):
            from distance import Distance
            d = Distance(song_features, distance_features)
        elif opt in ('-n', '--neighbour'):
            from neighbour import Neighbour
            n = Neighbour(song_features, distance_features)
        elif opt in ('-g', '--graphdist'):
            from graphdist import Graphdist
            g = Graphdist(song_features, distance_features)
        elif opt in ('-h', '--help'):
            print """The following options are available:
            -c, --conversion mp3/m4a
Ejemplo n.º 14
0
class IngredientContainer:
    '''
    Tämä luokka sisältää viittauksen raaka-aine olioon ja tämän lisäksi omat attribuutit määrästä sekä yksiköstä.
    Tätä luokkaa hyödynnetään varastolistauksen sekä reseptien raaka-aineiden tallentamisessa. Samaa raaka-ainetta
    käytetään hyvin todennäköisesti useassa eri reseptissä, jos Ingredient luokassa olisi määrä, niin silloin
    tietoa joutuisi kopioimaan sekä säilyttämään moneen kertaan. Tämän luokan avulla esim. Jauhelihan tiedot ovat vain
    kertaalleen Ingredient oliossa ja resepteissä olevat IngredientContainer oliot sisältävät viittauksen tähän.
    
    
    Attributes:
        :self.ingredient: Raaka-aine olio
        :self.quantity: Raaka-aineen määrä
        :self.unit: Määrän yksikkö
        
     Returns:
        :Attribuuttien muuttamiseen käytettävät metodit (set* & add* & delete/remove*) palauttavat True, jos muutos onnistuu
       
    Raises:
        :Attribuuttien asettamiseen käytettävät metodit (set* & add*) heittävät SetAttributeErrori:n, jos validointi epäonnistuu
    '''
    def __init__(self):
        
        self.ingredient = None
        self.quantity = None
        self.unit = None
        
        self.conversion = Conversion()

        
        
    def setIngredient(self,ingredient,ingredientsList):
        '''
        Etsii halutun raaka-aineen annetusta raaka-ainelistasta nimen perusteella sekä asettaa sen: self.ingredient
        
        Attributes:
            :ingredient: Etsittävä raaka-aine (string)
            :ingredientsList: Lista kaikista raaka-aineista
        
        Returns:
            :Onnistuessa: True
        
        Raises:
            :SetAttributeError epäonnistuessa
        '''
        for i in ingredientsList:
                if i.getName().strip().lower() == ingredient.lower():
                    self.ingredient = i
                    return True
                else:
                    # Raaka-ainetta kyseisellä nimellä ei löytynyt.
                    pass
        raise SetAttributeError("Raaka-ainetta ei löytynyt")
    
    def setQuantity(self,quantity):
        ''' Muuttaa desimaalipilkun pisteeksti ja asettaa määrän floattina: self.quantity'''
        try:
            self.quantity = float(str(quantity).replace(",","."))
            return True
        except ValueError:
            raise SetAttributeError("Määrän tulee olla desimaaliluku")
        
    def setUnit(self, unit):
        ''' Validoi, että yksikkö on ohjelman tuntema sekä asettaa sen: self.unit'''
        unit = unit.lower()
        if self.conversion.isValidUnit(unit):
            self.unit = unit
            return True
        else:
            raise SetAttributeError("Tuntematon yksikkö")
    
    def getQuantity(self):
        ''' Palauttaa määrän floattina'''
        return self.quantity
    
    def getQuantityStr(self):
        ''' Palauttaa määrän stringinä, desimaalipilkulla'''
        return str(self.quantity).replace(".", ",")
    
    def getUnit(self):
        ''' Palauttaa määrän yksikön'''
        return self.unit
    
    def getIngredient(self):
        ''' Palauttaa raaka-aine olion'''
        return self.ingredient
    
    def getName(self):
        ''' Palauttaa raaka-aineen nimen'''
        return self.ingredient.getName()
    
    def getAllergensStr(self):
        ''' Palauttaa allergeenit stringinä pilkulla erotettuna sekä alkussa teksti "Allergeenit: "'''
        return self.ingredient.getAllergensStr()
    
    def getRecipe(self):
        ''' Palauttaa reseptiolion, jos raaka-aineella on'''
        return self.ingredient.getRecipe()
    
    def getRecipeStr(self):
        ''' Palauttaa reseptin nimen stringinä, jos raaka-aineella on'''
        return self.ingredient.getRecipeStr()
    
    def getDensity(self):
        ''' Palauttaa raaka-aineen tiheyden floattina'''
        return self.ingredient.getDensity()
    
    def hasRecipe(self):
        ''' Palauttaa True, jos raaka-aineella on tallennettu resepti, muuten false'''
        if self.ingredient.getRecipeLoaded():
            return True
        else:
            return False
        
    def getAllergens(self):
        ''' Palauttaa allergeenit listana'''
        return self.ingredient.getAllergens()
    
    def __str__(self):
        return '' + self.getName() +", " + str(self.getQuantity()) + " " + self.getUnit()  + self.getAllergensStr() + self.getRecipeStr() 
Ejemplo n.º 15
0
if __name__ == "__main__":

    print "This is a script to help extract audio features and to calculate distances between songs with choice parameters."
    print "All data is stored in a database of MongoDB."
    print "The script only works with wave files, being named in a way described later. You can give mp3 or m4a files (ID3 taged!) "
    print "to the script and it will convert them towave files with ffmpeg for you. Make sure ffmpeg and mutagen are installed."
    print "For audio feature extraction, this script is using the bregman audio toolbox and aubio toolbox (for the rhythm) "
    print "which you have to download and install (make sure both work)."
    print "There is also a set of prerequisits for python: you should have installed numpy, etc." #update all python packages that have to be installed
    print "__________________________________________"
    print "At any time, press q if you want to quit."
    print "__________________________________________"

    y = None

    while (y != "q"):
        message = "What do you want to do? File conversion (c), feature extraction (e) or distance calculation(d)? : "
        y = raw_input(message)

        if y == "c":
            c = Conversion()
        elif y == "e":
            e = Extraction()
        elif y == "d":
            d = Distance()
        elif y == "q":
            print "Goodbye!"
        else:
            print "There is no %r option, please try again." %(y)
Ejemplo n.º 16
0
import sys

from conversion import Conversion


def test(did_pass):
    ''' Print the result of a test. '''
    linenum = sys._getframe(1).f_lineno
    if did_pass:
        msg = 'Test at line {0} ok.'.format(linenum)
    else:
        msg = ('Test at line {0} FAILED.'.format(linenum))
    print(msg)


#test(menu() == print('BOB Blob Temperatur Converter\n1. Celcius to Fahrenheit\n2. Fahrenheit to Celcius\n3. Quit\n'))
test(Conversion.CtoF(Conversion(0)) == 32)
test(Conversion.FtoC(Conversion(32)) == 0)
test(Conversion.CtoF(Conversion(-40)) == -40)
Ejemplo n.º 17
0
from conversion import Conversion
import numpy as np

exp = input("Your expression here: ")
expression = list(exp)
obj = Conversion(len(expression)).toPostfix(expression)
print(obj)
operandos = []
for i in expression:
    if i.isalpha():
        operandos.append(i)
len = len(operandos)
row = 2**len
List = list(range(0, row))
n = []
for i in List:
    n.append(list(np.binary_repr(i, width=len)))

print(" Operandos: {} and Binary List: {} ".format(operandos, n))
Ejemplo n.º 18
0
 def test_conversion(self):
     price = """Price:
                         AU$11.62"""
     result = Conversion.convert_price(price)
     self.assertEqual(result, 11.62)
Ejemplo n.º 19
0
def program():

    if request.method == 'POST':
        expr = request.form['expr']
        # print(expr)
        values = []
        # expr = "(a+~c)*~(b+d)"
        expression = tuple(expr)

        operands = [
        ]  # Save the input variables, only letter from english alphabet.
        for i in expression:
            if i.isalpha() and i not in operands:
                operands.append(i)
        operands.sort()
        lena = len(
            operands
        )  # Total of variable, this permit us to know how many columns and rows we gonna use.
        row = 2**lena

        List = list(range(0, row))

        n = [
        ]  # Depends of the length of the variable, we iterate the range of the total variables (form 0 to n) and coonvert them into binary number.
        for i in List:
            n.append(tuple(np.binary_repr(int(i), width=lena)))

        obj = Conversion(len(expr)).toPostfix(
            expr
        )  # This function convert the input expression into postfix expression.

        result = [
        ]  # We save a list of 0's an 1's, to use them like the truth and false values of the truth table.
        for b in n:
            result.append(Bin_sustitution(obj, operands, b))

        # We evaluate the truth table column by column.
        for col in result:
            values.append(Evaluate_expr(col))

        # The total of row of each index in, is equal to the total of variable.
        total_of_row = len(n[0])

        # Convert the binary array string in an integer binary array in order to facilitate the view of the web interface.
        def toInteger(x):
            return int(x)

        # Get the index of each value.
        def getIndexValue(o):
            def get(array):
                return array[o]

            return get

        # The map función allows us to take a specific object in a specific position in order to manipulate it, in this case we use
        # map to make a list of integer number.
        data = []  # Stores the new list of the truth table values
        for i in range(total_of_row):
            values_str = map(getIndexValue(i), n)
            values_int = list(map(toInteger, values_str))
            data.append(values_int)

        prin_data = [
        ]  # We save the truth values of each variable in a dictionnary to use later in the view.
        for i, j in enumerate(operands):
            c = dict()
            c['title'] = j
            c['values'] = list(data[i])
            prin_data.append(c)

        tauto = Is_tautology(
            values
        )  # With this function we evaluate if the expression is a tautology.
        contra = Is_contradiction(
            values
        )  # With this function we evaluate if the expression is a contradiction.
        conti = Is_contingency(
            values
        )  # With this function we evaluate if the expression is a contingency.
        satis = Is_satisfiable(
            values
        )  # With this function we evaluate if the expression is satisfiable.

    return render_template('result.html',
                           operands=operands,
                           expr=expr,
                           t_val=prin_data,
                           t_result=values,
                           tauto=tauto,
                           contra=contra,
                           conti=conti,
                           satis=satis)
Ejemplo n.º 20
0
import numpy as np
import pandas as pd
from conversion import Conversion


obj = Conversion()

obj.convertFilesIntoCSV('ham')
obj.convertFilesIntoCSV('spam')

ham = pd.read_csv('ham.csv')
spam = pd.read_csv('spam.csv')


Class =[]
Content = []
for i in range(ham.shape[0]):
    Class.append('ham')
    Content.append(ham['Message'][i])
    
for i in range(spam.shape[0]):
    Class.append('spam')
    Content.append(spam['Message'][i])


data = {'Message': Content, 'Class': Class}
data = pd.DataFrame(data)

data = data.iloc[np.random.permutation(len(data))] #mixing spam and ham messages

#splitting into train and test data
Ejemplo n.º 21
0
 def initiate_conversions(self):
     return [DefaultConversion(self), Conversion(self)]
Ejemplo n.º 22
0
def get_wants() -> List[Want]:
    """
    Wants-file format (where a0af9f865b are the first 10 digits of the sha256 hash of
    the utf8-encoded audio dir path):
    
        {
            "wants": [
                "a0af9f865b:artist/album/01 - song.flac",
                "a0af9f865b:some_song.mp3",
                ...
            ],
            "wants_as": [
                {
                    "codec": "opus",
                    "quality": 128,
                    "files": [
                        "a0af9f865b:artist/album/02 - song2.flac",
                        ...
                    ]
                },
                {
                    "codec": "mp3",
                    "quality": "320",
                    "files": [
                        "a0af9f865b:audiobook/chapter01.flac",
                        "a0af9f865b:audiobook/chapter02.flac",
                        ...
                    ]
                }
            ]
        }
    """
    try:
        with open(config.wants_file) as wants_file:
            if wants_file.read().strip() == "":
                raise json.JSONDecodeError(
                    "Empty file, expecting at least '{}'", "", 0)
            wants_file.seek(0)
            wants_data = json.load(wants_file)
    except FileNotFoundError:
        return []
    except json.JSONDecodeError as err:
        raise WantsFileParseError(err)
    wants = []
    wants_data_wants = wants_data["wants"] if "wants" in wants_data else []
    wants_data_wants_as = wants_data[
        "wants_as"] if "wants_as" in wants_data else []
    for json_want in wants_data_wants:
        want_dir, want_path = _split_json_want(json_want)
        if want_dir is None:
            continue
        wants.append(Want(want_dir, want_path))
    for want_conversion in wants_data_wants_as:
        conversion = Conversion(want_conversion["codec"],
                                want_conversion["quality"] * 1000)
        for json_want in want_conversion["files"]:
            want_dir, want_path = _split_json_want(json_want)
            if want_dir is None:
                continue
            wants.append(Want(want_dir, want_path, conversion))
    return wants
Ejemplo n.º 23
0
    def interp(self):
        """
        Prepares data for the 2D gaussian fit:
        
        Interpolates data to a regular grid and cuts off new grid according to
        the data_2d function. 
        
        Parameters
        ----------
        None
        
        Returns
        -------
        newazim, list : azimuth values interpolated data
        
        newelev, list : elevation values interpolated data
        
        newdata, list : interpolated data values
        
        See Also
        --------
        interp3
        """
        # interpolation parameters

        azim_interp = np.arange(min(self.azimuth), max(self.azimuth),
                                self.res_azim_interp)
        elev_interp = np.arange(min(self.elevation), max(self.elevation),
                                self.res_elev_interp)

        data_grid = np.zeros((len(elev_interp), len(azim_interp)))
        num_samples = np.zeros((len(elev_interp), len(azim_interp)))

        # convert data to linear values for interpolation

        if self.var == 'SignalH':
            data = self.data[self.gate]
        else:
            data = self.data[self.gate]
            data = Conversion().logToLin(data, self.var)

        # interpolate to grid

        for dp in range(0, len(data)):
            idx = (np.abs(elev_interp - self.elevation[dp]).argmin(),
                   np.abs(azim_interp - self.azimuth[dp]).argmin())
            num_samples[idx] = num_samples[idx] + 1
            data_grid[idx] = data_grid[idx] + data[dp]

        num_samples[num_samples == 0] = float('nan')
        data_grid = data_grid / num_samples

        # assign value of closest bin to missing pixels

        N = len(elev_interp)
        M = len(azim_interp)

        for i in range(0, N):
            for j in range(0, M):
                if (np.isnan(data_grid[i, j])):
                    values = []
                    if i - 1 >= 0:
                        values.append(data_grid[i - 1, j])  # pixel above
                    if j - 1 >= 0:
                        values.append(data_grid[i, j - 1])  # pixel to left
                    if i + 1 < N:
                        values.append(data_grid[i + 1, j])  # pixel below
                    if j + 1 < M:
                        values.append(data_grid[i,
                                                j + 1])  # pixel to the right

                    data_grid[i, j] = np.nanmean(values)

        if self.var == 'SignalH':
            pass
        else:
            data_grid = Conversion().linToLog(data_grid, self.var)

        # cut off grid to focus on sphere

        ind, select = self.data_2d()

        elev_select = self.elevation[ind]
        azim_select = self.azimuth[ind]

        e_start = np.abs(elev_interp - (elev_select[0] - 0.75)).argmin()
        e_end = np.abs(elev_interp - (elev_select[-1] + 1.5)).argmin() + 1

        a_start = np.abs(azim_interp - (np.nanmin(azim_select) - 0.3)).argmin()
        a_end = np.abs(azim_interp - (np.nanmax(azim_select) + 1.25)).argmin()

        newazim = azim_interp[a_start:a_end]
        newelev = elev_interp[e_start:e_end]
        newdata = data_grid[e_start:e_end, a_start:a_end]
        """
        newdata = data_grid[40:81,40:81]
        newazim = azim_interp[40:81]
        newelev = elev_interp[40:81]"""

        return newazim, newelev, newdata
Ejemplo n.º 24
0
    def interp3(self, azim, elev, data):
        """
        Interpolates data to a regular, spherical grid
        
        Parameters
        ----------
        azim, np.array : azimuth values of the data
        
        elev, np.array : elevation values of the data
        
        data, np.array : data values
        
        Returns
        -------
        azim_interp, np.array : azimuth values interpolated data
        
        elev_interp, np.array : elevation values interpolated data
        
        grid, np.array : azimuth x elevation matrix interpolated data values
        
        See Also
        --------
        interp
        """

        # interpolation parameters

        azim_interp = np.arange(min(azim), max(azim), self.res_azim_interp)
        elev_interp = np.arange(min(elev), max(elev), self.res_elev_interp)

        x, y = np.meshgrid(azim_interp, elev_interp)

        points = np.vstack((azim, elev)).T

        # select data
        data_s = self.data[self.gate, :]

        # convert data to linear

        if self.var == 'SignalH':
            pass
        else:
            data_s = Conversion().logToLin(data_s, self.var)

        # find location max value
        max_i = np.nanargmax(data_s)

        if self.azim is None:
            azimmid = self.azimuth[max_i]
        else:
            azimmid = self.azim
        if self.elev is None:
            elevmid = self.elevation[max_i]
        else:
            elevmid = self.elev

        # take out values which are not within circle

        for i in range(0, x.shape[0]):
            for j in range(0, x.shape[1]):
                if np.sqrt((x[i, j] - azimmid)**2 +
                           (y[i, j] - elevmid)**2) >= self.doa:
                    x[i, j] = np.nan
                    y[i, j] = np.nan

        grid = griddata(points, data, (x, y), method='linear')

        if self.var == 'SignalH':
            pass
        else:
            grid = Conversion().linToLog(grid, self.var)

        return azim_interp, elev_interp, grid
Ejemplo n.º 25
0
#!/usr/bin/env python
# -*- coding: utf-8 -*-

from conversion import Conversion
from extraction import Extraction
from distance import Distance
from sys import argv

if __name__ == "__main__":

    y = argv[1]

    if "-c" in y:
        c = Conversion(y)
    elif "-e" in y:
        e = Extraction(y)
    elif y == "-d":
        d = Distance()
    else:
        print "There is no %r option. Try -cmp3 -cm4a -e or -d." % (y)
Ejemplo n.º 26
0
 def __init__(self):
     self.conversion = Conversion()
     # howManyIngredientsFoundInStorage metodi kutsuu iteratiivisesti itseään. Tämä mahdollistaa ikuisen loopin,
     # joka on estetty laskemalla montako kertaa kyseistä metodia pyörii samaan aikaan.
     self.inceptionCount = 0 
Ejemplo n.º 27
0
class Search:
    ''' Tämän luokan metodeilla on mahdollista tehdä erilaisia hakuja. Ohjelma hyödyntää tätä luokkaa reseptien etsimisessä tietyillä hakuehdoilla
    '''
    
    def __init__(self):
        self.conversion = Conversion()
        # howManyIngredientsFoundInStorage metodi kutsuu iteratiivisesti itseään. Tämä mahdollistaa ikuisen loopin,
        # joka on estetty laskemalla montako kertaa kyseistä metodia pyörii samaan aikaan.
        self.inceptionCount = 0 
    
    def searcForhRecipesNIngredientsInStorage(self,recipesList,N,storageList, NNotInStorage):
        '''
        Tällä metodilla voidaan etsiä reseptejä, joihin löytyy vähintään N raaka-ainetta varastosta tai puuttuu maksimissaan N raaka-ainetta.
        
        Args:
            :recipesList: Lista kaikista reseptiolioista
            :N: Monta raaka-ainetta löydyttävä/puututtava varastosta (int)
            :storageList: Lista varastossa olevista raaka-aineolioista
            :NNotInStorage: (Boolean) True arvolla N merkitsee sitä montako saa puuttua. False arvolla N merkitsee montako täytyy löytyä
            
        Returns:
            :recipesFound: Lista reseptio-olioista
        '''
        
        recipesFound = []
        self.storageList = storageList
        
        #Käydään kaikki reseptit läpi
        for recipe in recipesList:
            ingredientsFoundInStorage = self.howManyIngredientsFoundInStorage(recipe)
            ingredientsInRecipe = len(recipe.getIngredients())
            # Saa puuttua 0, joten N = raaka-aineiden määrä
            if N == 0 and NNotInStorage:
                if ingredientsFoundInStorage == ingredientsInRecipe:
                    recipesFound.append(recipe)
            elif ingredientsFoundInStorage >= N and not NNotInStorage:
                recipesFound.append(recipe)
            elif ingredientsInRecipe - ingredientsFoundInStorage <= N and NNotInStorage:
                recipesFound.append(recipe)
                
        return recipesFound
                
    def howManyIngredientsFoundInStorage(self, recipe):
        ''' Apumetodi, jota ei ole tarkoitus kutsua luokan ulkopuolelta.
        
        Metodi käy reseptin raaka-aineet läpi ja montako niistä on tarpeeksi varastossa, metodi siis tarkastaa myös määrän.
        Jos raaka-ainetta ei ole tarpeeksi varastossa, tarkastetaan voidaanko raaka-aine itse valmistaa reseptistä, jolloin kutsutaan 
        tätä samaa metodia. Tätä metodia voidaan kuitenkin kutsua maksimissaan 2 kertaa, jottei päädytä ikuiseen looppiin. Siis Raaka-aine - resepti
        ketjua seurataan vain 2 kertaa.
        '''
        
        #Käydään reseptin kaikki raaka-aineet läpi
        self.inceptionCount += 1 # Pidetään kirjaa, montako instanssia tästä metodista pyörii
        ingredientsFoundInStorage = 0
        for ingredientRecipe in recipe.getIngredients():
            #Käydään koko varastolista läpi
            for ingredientStorage in self.storageList:
                #Katsotaan löytyykö reseptin raaka-aine varastosta
                if ingredientRecipe.getIngredient() is ingredientStorage.getIngredient():
                    #Tarkistetaan, onko varastossa tarpeeksi raaka-ainetta
                    if self.amountDifferenceMax10Perc(ingredientRecipe, ingredientStorage):
                        ingredientsFoundInStorage += 1
                    elif ingredientRecipe.hasRecipe() and self.inceptionCount < 3:
                        if self.howManyIngredientsFoundInStorage(ingredientRecipe.getRecipe()) == len(ingredientRecipe.getRecipe().getIngredients()):
                            ingredientsFoundInStorage += 1
                    break
                
        self.inceptionCount -= 1 # Vähennetään instanssilaskuria
        return ingredientsFoundInStorage
                        
    def amountDifferenceMax10Perc(self, ingredientRecipe, ingredientStorage):
        ''' Apumetodi, jota ei ole tarkoitus kutsua luokan ulkopuolelta.
        
        Tällä metodilla tarkastetaan onko varastossa tarpeeksi tiettyä raaka-ainetta. Jos resepti vaatii 1kg jauhelihaa, niin
        900g kin kyllä riittää, joten varastosta saa puuttua maksimissaan 10% vaaditusta määrästä.
        
        Args:
            :ingredientRecipe: Reseptissä oleva ingredientContainer olio
            :ingredientStorage: Varastossa oleva ingredientCOntainer olio
        
        Returns:
            :True: Raaka-aineiden määrän erotus on alle 10% tarvittavasta eli reseptin määrästä
            :False: Erotus on yli 10% tarvittavasta määrästä
        '''
        maxDiff = 0.1
        # Muutetaan reseptin raaka-aineen määrän yksikkö vastaamaan varastossa olevan raaka-aineen määrän yksikkö ja lasketaan erotus
        difference = self.conversion.convertFromTo(ingredientStorage.getQuantity(), 
                                                   ingredientStorage.getUnit(), 
                                                   ingredientRecipe.getUnit(), 
                                                   ingredientStorage.getDensity()) - ingredientRecipe.getQuantity()
        # Armoa annetaan 10% vaaditusta määrästä, joten lisätään se erotukseen
        # näin esim  9.5 kg - 10 kg = -0.5kg + 10*0.1 = -0.5kg + 1kg = +0.5kg > 0
        difference = difference + ingredientRecipe.getQuantity() * maxDiff
        if difference >= 0:
            return True
        else:
            return False
        
    def searchFromList(self, searchFor, searchList):
        ''' Tällä metodilla etsitään olio listasta tiettyä oliota sen nimen perusteella. 
        Vertailu tapahtuu stringeinä ja vaatii, että listassa olevilla olioilla on getName() metodi.
        
        Args:
            :searchFor: Etsittävä nimi (string)
            :searchList: Lista olioista, joilla on getName() metodi
            
        returns:
            :recipesFound: Lista löydetyistä olioista. Tyhjä, jos ei löytynyt
        '''
        recipesFound = []
        
        for i in searchList:
            if searchFor.strip().lower() == i.getName().strip().lower():
                recipesFound.append(i)
                return recipesFound
        return recipesFound
                        
    def searchIncludesIngredient(self,ingredientStr, recipesList):
        ''' Tällä metodilla etsitään reseptejä, jotka sisältävät tietyn raaka-aineen. Vertailutapahtuu stringeinä
        
        Args:
            :ingredientStr: Raaka-aineen nimi (string)
            :recipesList: Lista reseptiolioista
        
        Returns:
            :recipesFound: Lista reseptiolioista. Tyhjä, jos ei löytynyt
        '''
        
        recipesFound = []
        
        for recipe in recipesList:
            for ingredientRecipe in recipe.getIngredients():
                if ingredientRecipe.getName().strip().lower() == ingredientStr.strip().lower():
                    recipesFound.append(recipe)
                    break
        return recipesFound
    
    
    def searchNoAllergen(self,allergenStr,recipesList):
        ''' Tämmä metodilla etsitään reseptejä, jotka eivät sisällä tiettyä allergeeniä. 
        Allergeenien vertailu tapahtuu stringeinä
        
        Args:
            :allergenStr: Allergeeni (string)
            :recipesList: Lista reseptiolioista
            
        Returns:
            :recipesFound: Lista reseptiolioista. Tyhjä, jos ei löytynyt
        '''
        
        recipesFound = []
        
        for recipe in recipesList:
            found = False
            for ingredientRecipe in recipe.getIngredients():
                for allergen in ingredientRecipe.getAllergens():
                    if allergen.strip().lower() == allergenStr.strip().lower():
                        found = True
                        break
                if found:
                    break
            if not found:
                recipesFound.append(recipe)
        
        return recipesFound
Ejemplo n.º 28
0
Main function
Load from the conversion configuration file
"""

import os
import sys
import cherrypy
from conversion import Conversion


def CORS():
    """
    CORS
    """
    cherrypy.response.headers["Access-Control-Allow-Origin"] = "*"


if __name__ == '__main__':

    cherrypy.tools.CORS = cherrypy.Tool('before_handler', CORS)

    CONF_FILE_REL = sys.argv[1] if len(sys.argv) == 2 and os.path.isfile(
        sys.argv[1]) else "conversion.conf"

    BASE_DIR = os.path.dirname(os.path.abspath(__file__))
    CONF_FILE_ABS = os.path.join(BASE_DIR, CONF_FILE_REL)

    cherrypy.config.update(CONF_FILE_ABS)
    cherrypy.log.error_log.setLevel('ERROR')
    cherrypy.quickstart(Conversion.get_instance(), config=CONF_FILE_ABS)