Esempio n. 1
0
class MegaMillions:
    db = db_init()

    def get_last_draw_id(self):
        res = iresult.iResult()
        return res.getLastDrawID()

    def sync(self):
        last_draw_id = 1380  #self.get_last_draw_id();
        latest = 1390
        next_draw_id = last_draw_id + 1

        f = Fetcher()
        while (next_draw_id <= latest):
            print("Syncing " + str(next_draw_id))
            #new_res = f.fetch_result(next_draw_id)
            #print(new_res.toString())
            #new_res.db_save()

            new_draw = idraw.iDraw(next_draw_id)
            new_draw.derive()
            new_draw.db_save()
            new_draw.toString()

            new_depth = idepth.iDepth(next_draw_id)
            new_depth.derive()
            new_depth.db_save()
            new_depth.toString()

            next_draw_id += 1

    def get_all_results(self):
        master_dict = {}
        results = self.db.session.query(iresult.iResult).order_by(
            iresult.iResult.draw_id.asc()).all()
        for result in results:
            master_dict.update(result.get_dict())

        return master_dict

    def get_all_draws(self):
        master_dict = {}
        draws = self.db.session.query(idraw.iDraw).order_by(
            idraw.iDraw.draw_id.asc()).all()
        for draw in draws:
            master_dict.update(draw.get_dict())

        return master_dict

    def get_all_depths(self):
        master_dict = {}
        depths = self.db.session.query(idepth.iDepth).order_by(
            idepth.iDepth.draw_id.asc()).all()
        for depth in depths:
            master_dict.update(depth.get_dict())

        return master_dict

    def derive_freqs(self, sample_size):
        last_draw_id = self.get_last_draw_id()
        d_id_to_start = last_draw_id - sample_size
        #freq_file = self.csv_file="E:/Projects/Lotto/megamillions/Results/freqs.csv"
        a_freqs = []
        dict_depths = self.get_all_depths()
        n = 0
        freqs = {
            0: 0
        }
        while (n < 75):
            d_id = d_id_to_start
            last_value = 0
            while d_id <= last_draw_id:
                #print(d_id, dict_depths.get(d_id)[n])
                if (dict_depths.get(d_id)[n] == 0):
                    a_freqs.append(last_value)
                else:
                    last_value = dict_depths.get(d_id)[n]

                d_id += 1
            freqs[n] = a_freqs
            a_freqs = []
            n += 1
        print(freqs)
        #         for depth in dict_depths:
        #             print(depth.toString())
        #         with open(freq_file, 'w') as f:
        #             for k, v in freqs.items():
        #                 f.write("%s," % k)
        #                 for elem in v:
        #                     f.write(str(elem))
        #                 f.write("\n")
        #             f.close()
        rows = 52
        #including score 0 and 51
        columns = 75
        fqs = np.zeros((rows, columns), dtype=int)
        for k, v in freqs.items():
            for elem in v:
                if elem <= 50:
                    fqs[elem][k] += 1
                else:
                    fqs[51][k] += 1
        print(fqs)

        score = 0
        while score < 52:
            fq = ifreq.iFreq()
            fq.freq_id = None
            fq.draw_id = last_draw_id
            fq.freq_sample = sample_size
            fq.freq_score = score
            i = 1
            while i < 75:
                #for i in range(columns):
                fq.set_key_value(i + 1, int(fqs[score][i]))
                i += 1

            fq.db_save()
            score += 1

    def validate_db(self):
        val_obs = {
            'missing': [],
            'invalid': []
        }

        master_results_d = self.get_all_results()
        master_draws_d = self.get_all_draws()
        master_depths_d = self.get_all_depths()

        master_draws_a = []
        for key, value in master_draws_d.items():
            master_draws_a.append(value)

        master_draws = np.matrix(master_draws_a)
        print(master_draws.shape)

        np.savez('master_draws', master_draws)
        #         np.savez('master_draws', master_draws.values())
        #         np.savez('master_depths', master_depths.values())
        #
        #         first_draw_id = self.db.session.query(iresult.iResult).order_by(iresult.iResult.draw_id.asc()).first().draw_id;
        #         last_draw_id = self.db.session.query(iresult.iResult).order_by(iresult.iResult.draw_id.asc()).first().draw_id;
        #         next_draw_id = first_draw_id + 1;
        #
        #         while (next_draw_id < last_draw_id):
        #             print(master_results[next_draw_id])
        #             print(master_draws[next_draw_id])
        #             print(master_depths[next_draw_id])
        #
        #             next_draw_id +=1;
        #
        #         next_draw_id = first_draw_id + 1;
        #         while (next_draw_id < last_draw_id):
        #             if next_draw_id not in master_results:  val_obs['missing']['results']= next_draw_id;
        #             if next_draw_id not in master_draws:  val_obs['missing']['draws']= next_draw_id;
        #             if next_draw_id in master_depths:  val_obs['missing']['depths']= next_draw_id;
        #
        #             next_draw_id +=1;
        #

        return val_obs

    def save_master_matrix(self):
        data_folder = 'strategies/data/'
        master_results_d = self.get_all_results()
        master_draws_d = self.get_all_draws()
        master_depths_d = self.get_all_depths()

        master_results_a = []
        master_draws_a = []
        master_depths_a = []
        master_ids_a = []

        for key, value in master_draws_d.items():
            master_ids_a.append(np.array([key]))
            master_draws_a.append(value)
            master_results_a.append(master_results_d.get(key))

        for key, value in master_depths_d.items():
            master_depths_a.append(value)

        master_ids = np.matrix(master_ids_a)
        master_results = np.matrix(master_results_a)
        master_draws = np.matrix(master_draws_a).astype(float)
        master_depths = np.matrix(master_depths_a).astype(float)

        np.savez(data_folder + 'data',
                 ids=master_ids,
                 results=master_results,
                 draws=master_draws,
                 depths=master_depths)
        np.savez(data_folder + 'master_ids', ids=master_ids)
        np.savez(data_folder + 'master_results', results=master_results)
        np.savez(data_folder + 'master_draws',
                 draws=master_draws.astype(float))
        np.savez(data_folder + 'master_depths',
                 depths=master_depths.astype(float))

        np.savez(data_folder + 'train_75k',
                 ids=master_ids[0:75000],
                 train=master_depths[0:75000],
                 target=master_draws[1:75001])
        np.savez(data_folder + 'val_75k',
                 ids=master_ids[75000:77000],
                 val=master_depths[75000:77000],
                 target=master_draws[75001:77001])
        np.savez(data_folder + 'test_75k',
                 ids=master_ids[77000:],
                 test=master_depths[77000:-1],
                 target=master_draws[77001:])

        np.savez(data_folder + 'train_1',
                 ids=master_ids[0:10000],
                 train=master_depths[0:10000],
                 target=master_draws[1:10001])
        np.savez(data_folder + 'val_1',
                 ids=master_ids[10000:11000],
                 val=master_depths[10000:11000],
                 target=master_draws[10001:11001])
        np.savez(data_folder + 'test_1',
                 ids=master_ids[11000:12000],
                 test=master_depths[11000:12000],
                 target=master_draws[11001:12001])

        np.savez(data_folder + 'train_2',
                 ids=master_ids[12000:22000],
                 train=master_depths[12000:22000],
                 target=master_draws[12001:22001])
        np.savez(data_folder + 'val_2',
                 ids=master_ids[22000:23000],
                 val=master_depths[22000:23000],
                 target=master_draws[22001:23001])
        np.savez(data_folder + 'test_2',
                 ids=master_ids[23000:24000],
                 test=master_depths[23000:24000],
                 target=master_draws[23001:24001])

        np.savez(data_folder + 'train_3',
                 ids=master_ids[24000:34000],
                 train=master_depths[24000:34000],
                 target=master_draws[24001:34001])
        np.savez(data_folder + 'val_3',
                 ids=master_ids[34000:35000],
                 val=master_depths[34000:35000],
                 target=master_draws[34001:35001])
        np.savez(data_folder + 'test_3',
                 ids=master_ids[35000:36000],
                 test=master_depths[35000:36000],
                 target=master_draws[35001:36001])
Esempio n. 2
0
class iDraw(Base, DBBase):
    __tablename__ = 'draws'
    db = db_init()

    draw_id = Column(Integer, primary_key=True, autoincrement=False)
    n1 = Column(Integer)
    n2 = Column(Integer)
    n3 = Column(Integer)
    n4 = Column(Integer)
    n5 = Column(Integer)
    n6 = Column(Integer)
    n7 = Column(Integer)
    n8 = Column(Integer)
    n9 = Column(Integer)
    n10 = Column(Integer)
    n11 = Column(Integer)
    n12 = Column(Integer)
    n13 = Column(Integer)
    n14 = Column(Integer)
    n15 = Column(Integer)
    n16 = Column(Integer)
    n17 = Column(Integer)
    n18 = Column(Integer)
    n19 = Column(Integer)
    n20 = Column(Integer)
    n21 = Column(Integer)
    n22 = Column(Integer)
    n23 = Column(Integer)
    n24 = Column(Integer)
    n25 = Column(Integer)
    n26 = Column(Integer)
    n27 = Column(Integer)
    n28 = Column(Integer)
    n29 = Column(Integer)
    n30 = Column(Integer)
    n31 = Column(Integer)
    n32 = Column(Integer)
    n33 = Column(Integer)
    n34 = Column(Integer)
    n35 = Column(Integer)
    n36 = Column(Integer)
    n37 = Column(Integer)
    n38 = Column(Integer)
    n39 = Column(Integer)
    n40 = Column(Integer)
    n41 = Column(Integer)
    n42 = Column(Integer)
    n43 = Column(Integer)
    n44 = Column(Integer)
    n45 = Column(Integer)
    n46 = Column(Integer)
    n47 = Column(Integer)
    n48 = Column(Integer)
    n49 = Column(Integer)
    n50 = Column(Integer)
    n51 = Column(Integer)
    n52 = Column(Integer)
    n53 = Column(Integer)
    n54 = Column(Integer)
    n55 = Column(Integer)
    n56 = Column(Integer)
    n57 = Column(Integer)
    n58 = Column(Integer)
    n59 = Column(Integer)
    n60 = Column(Integer)
    n61 = Column(Integer)
    n62 = Column(Integer)
    n63 = Column(Integer)
    n64 = Column(Integer)
    n65 = Column(Integer)
    n66 = Column(Integer)
    n67 = Column(Integer)
    n68 = Column(Integer)
    n69 = Column(Integer)
    n70 = Column(Integer)
    n71 = Column(Integer)
    n72 = Column(Integer)
    n73 = Column(Integer)
    n74 = Column(Integer)
    n75 = Column(Integer)
    mega = Column(Integer)

    drawDict = {0: 0}

    def __init__(self, DrawID=0):
        self.draw_id = DrawID
        self.reset()
        if (self.draw_id > 0): self.setup()

        super().setupDBBase(iDraw, iDraw.draw_id, self.draw_id)

    def reset(self):
        for i in range(76):
            self.drawDict[i] = 0
            if i > 0:
                setattr(self, "n" + str(i), 0)
        self.mega = 0

    def derive(self):
        if (self.draw_id > 0):
            self.reset()
            r = iresult.iResult(self.draw_id)
            r.setup()
            #setup from db
            self.mega = r.mega
            for x in r.pick.getArray():
                setattr(self, "n" + str(x), 1)
                self.drawDict[x] = 1

    def setup(self):
        d = self.db.session.query(iDraw).filter(
            iDraw.draw_id == self.draw_id).first()
        if d is not None:
            for i in self.drawDict.keys():
                if (i > 0):
                    setattr(self, "n" + str(i), getattr(d, "n" + str(i)))
                    self.drawDict[i] = getattr(self, "n" + str(i))

    def toString(self):
        return str(self.get_dict()) + "[" + str(self.mega) + "]"

    def get_dict(self):
        dict = {}
        dict[self.draw_id] = np.array([
            self.n1, self.n2, self.n3, self.n4, self.n5, self.n6, self.n7,
            self.n8, self.n9, self.n10, self.n11, self.n12, self.n13, self.n14,
            self.n15, self.n16, self.n17, self.n18, self.n19, self.n20,
            self.n21, self.n22, self.n23, self.n24, self.n25, self.n26,
            self.n27, self.n28, self.n29, self.n30, self.n31, self.n32,
            self.n33, self.n34, self.n35, self.n36, self.n37, self.n38,
            self.n39, self.n40, self.n41, self.n42, self.n43, self.n44,
            self.n45, self.n46, self.n47, self.n48, self.n49, self.n50,
            self.n51, self.n52, self.n53, self.n54, self.n55, self.n56,
            self.n57, self.n58, self.n59, self.n60, self.n61, self.n62,
            self.n63, self.n64, self.n65, self.n66, self.n67, self.n68,
            self.n69, self.n70, self.n71, self.n72, self.n73, self.n74,
            self.n75
        ])
        return dict
Esempio n. 3
0
class iDepth(Base, DBBase):
    __tablename__ = 'depths'
    db = db_init();
    
    draw_id=Column(Integer,primary_key=True, autoincrement=False)
    n1=Column(Integer)
    n2=Column(Integer)
    n3=Column(Integer)
    n4=Column(Integer)
    n5=Column(Integer)
    n6=Column(Integer)
    n7=Column(Integer)
    n8=Column(Integer)
    n9=Column(Integer)
    n10=Column(Integer)
    n11=Column(Integer)
    n12=Column(Integer)
    n13=Column(Integer)
    n14=Column(Integer)
    n15=Column(Integer)
    n16=Column(Integer)
    n17=Column(Integer)
    n18=Column(Integer)
    n19=Column(Integer)
    n20=Column(Integer)
    n21=Column(Integer)
    n22=Column(Integer)
    n23=Column(Integer)
    n24=Column(Integer)
    n25=Column(Integer)
    n26=Column(Integer)
    n27=Column(Integer)
    n28=Column(Integer)
    n29=Column(Integer)
    n30=Column(Integer)
    n31=Column(Integer)
    n32=Column(Integer)
    n33=Column(Integer)
    n34=Column(Integer)
    n35=Column(Integer)
    n36=Column(Integer)
    n37=Column(Integer)
    n38=Column(Integer)
    n39=Column(Integer)
    n40=Column(Integer)
    n41=Column(Integer)
    n42=Column(Integer)
    n43=Column(Integer)
    n44=Column(Integer)
    n45=Column(Integer)
    n46=Column(Integer)
    n47=Column(Integer)
    n48=Column(Integer)
    n49=Column(Integer)
    n50=Column(Integer)
    n51=Column(Integer)
    n52=Column(Integer)
    n53=Column(Integer)
    n54=Column(Integer)
    n55=Column(Integer)
    n56=Column(Integer)
    n57=Column(Integer)
    n58=Column(Integer)
    n59=Column(Integer)
    n60=Column(Integer)
    n61=Column(Integer)
    n62=Column(Integer)
    n63=Column(Integer)
    n64=Column(Integer)
    n65=Column(Integer)
    n66=Column(Integer)
    n67=Column(Integer)
    n68=Column(Integer)
    n69=Column(Integer)
    n70=Column(Integer)
    n71=Column(Integer)
    n72=Column(Integer)
    n73=Column(Integer)
    n74=Column(Integer)
    n75=Column(Integer)
    mega=Column(Integer)
    
    depthDict={0:0}
    
    def __init__(self, DrawID=0):
        self.draw_id=DrawID
        self.reset()      
        
        super().setupDBBase(iDepth, iDepth.draw_id, self.draw_id)
        
    def reset(self):        
        for i in range(76):            
            self.depthDict[i]=0;
            if i>0:
                setattr(self, "n"+str(i), 0);
        self.mega = 0;
                
    def derive(self):
        if (self.draw_id>0):
            cur_id=self.draw_id;
            prev_id=self.draw_id-1;
            prev_depth=self.db.session.query(iDepth).filter(iDepth.draw_id==prev_id).first();            
            cur_draw=idraw.iDraw(cur_id);
            for i in self.depthDict.keys():
                if i > 0:
                    if getattr(cur_draw, "n"+str(i))==1:
                        setattr(self, "n"+str(i), 0)
                    else:
                        setattr(self, "n"+str(i), getattr(prev_depth, "n"+str(i))+1)
                    
        
    def setup(self):
        d = self.db.session.query(iDepth).filter(iDepth.draw_id==self.draw_id).first();
        if d is not None:
            self.mega=d.mega
            for i in self.depthDict.keys():
                if i > 0:
                    setattr(self, "n"+str(i), getattr(d,"n"+str(i)))
                    
    def get_dict(self):
        dict={};
        dict[self.draw_id]=np.array([self.n1, self.n2, self.n3, self.n4, self.n5, self.n6, self.n7, self.n8, self.n9, self.n10, self.n11, self.n12, self.n13, self.n14, self.n15, self.n16, self.n17, self.n18, self.n19, self.n20, self.n21, self.n22, self.n23, self.n24, self.n25, self.n26, self.n27, self.n28, self.n29, self.n30, self.n31, self.n32, self.n33, self.n34, self.n35, self.n36, self.n37, self.n38, self.n39, self.n40, self.n41, self.n42, self.n43, self.n44, self.n45, self.n46, self.n47, self.n48, self.n49, self.n50, self.n51, self.n52, self.n53, self.n54, self.n55, self.n56, self.n57, self.n58, self.n59, self.n60, self.n61, self.n62, self.n63, self.n64, self.n65, self.n66, self.n67, self.n68, self.n69, self.n70, self.n71, self.n72, self.n73, self.n74, self.n75])
        return dict;
    
    def toString(self):
        return str(self.get_dict()) + "[" + str(self.mega)+"]"
Esempio n. 4
0
class iFreq(Base, DBBase):
    __tablename__ = 'freqs'
    db = db_init()

    freq_id = Column(Integer, primary_key=True, autoincrement=True)
    freq_score = Column(Integer)
    freq_sample = Column(Integer)
    draw_id = Column(Integer)
    n1 = Column(Integer)
    n2 = Column(Integer)
    n3 = Column(Integer)
    n4 = Column(Integer)
    n5 = Column(Integer)
    n6 = Column(Integer)
    n7 = Column(Integer)
    n8 = Column(Integer)
    n9 = Column(Integer)
    n10 = Column(Integer)
    n11 = Column(Integer)
    n12 = Column(Integer)
    n13 = Column(Integer)
    n14 = Column(Integer)
    n15 = Column(Integer)
    n16 = Column(Integer)
    n17 = Column(Integer)
    n18 = Column(Integer)
    n19 = Column(Integer)
    n20 = Column(Integer)
    n21 = Column(Integer)
    n22 = Column(Integer)
    n23 = Column(Integer)
    n24 = Column(Integer)
    n25 = Column(Integer)
    n26 = Column(Integer)
    n27 = Column(Integer)
    n28 = Column(Integer)
    n29 = Column(Integer)
    n30 = Column(Integer)
    n31 = Column(Integer)
    n32 = Column(Integer)
    n33 = Column(Integer)
    n34 = Column(Integer)
    n35 = Column(Integer)
    n36 = Column(Integer)
    n37 = Column(Integer)
    n38 = Column(Integer)
    n39 = Column(Integer)
    n40 = Column(Integer)
    n41 = Column(Integer)
    n42 = Column(Integer)
    n43 = Column(Integer)
    n44 = Column(Integer)
    n45 = Column(Integer)
    n46 = Column(Integer)
    n47 = Column(Integer)
    n48 = Column(Integer)
    n49 = Column(Integer)
    n50 = Column(Integer)
    n51 = Column(Integer)
    n52 = Column(Integer)
    n53 = Column(Integer)
    n54 = Column(Integer)
    n55 = Column(Integer)
    n56 = Column(Integer)
    n57 = Column(Integer)
    n58 = Column(Integer)
    n59 = Column(Integer)
    n60 = Column(Integer)
    n61 = Column(Integer)
    n62 = Column(Integer)
    n63 = Column(Integer)
    n64 = Column(Integer)
    n65 = Column(Integer)
    n66 = Column(Integer)
    n67 = Column(Integer)
    n68 = Column(Integer)
    n69 = Column(Integer)
    n70 = Column(Integer)
    n71 = Column(Integer)
    n72 = Column(Integer)
    n73 = Column(Integer)
    n74 = Column(Integer)
    n75 = Column(Integer)
    mega = Column(Integer)

    drawDict = {0: 0}

    def __init__(self, DrawID=0):
        self.freq_id = None
        self.draw_id = DrawID
        self.reset()
        if (self.draw_id > 0): self.setup()

        super().setupDBBase(iFreq, iFreq.freq_id, self.freq_id)

    def reset(self):
        for i in range(75):
            self.drawDict[i] = 0
            if i > 0:
                setattr(self, "n" + str(i), 0)
        self.mega = 0

    def set_key_value(self, key, value):
        setattr(self, "n" + str(key), value)

    def derive(self):
        return 0