Commit 4e1d09c0 authored by Dr.李's avatar Dr.李

added more universe functionality

parent 6bad1c21
...@@ -43,7 +43,7 @@ from alphamind.model import load_model ...@@ -43,7 +43,7 @@ from alphamind.model import load_model
from alphamind.model.data_preparing import fetch_data_package from alphamind.model.data_preparing import fetch_data_package
from alphamind.model.data_preparing import fetch_train_phase from alphamind.model.data_preparing import fetch_train_phase
from alphamind.model.data_preparing import fetch_predict_phase from alphamind.model.data_preparing import fetch_predict_phase
from alphamind.model.composer import ModelComposer from alphamind.model.composer import Composer
from alphamind.model.composer import DataMeta from alphamind.model.composer import DataMeta
from alphamind.model.composer import train_model from alphamind.model.composer import train_model
from alphamind.model.composer import predict_by_model from alphamind.model.composer import predict_by_model
...@@ -83,7 +83,7 @@ __all__ = [ ...@@ -83,7 +83,7 @@ __all__ = [
'fetch_data_package', 'fetch_data_package',
'fetch_train_phase', 'fetch_train_phase',
'fetch_predict_phase', 'fetch_predict_phase',
'ModelComposer', 'Composer',
'DataMeta', 'DataMeta',
'train_model', 'train_model',
'predict_by_model', 'predict_by_model',
......
...@@ -7,6 +7,7 @@ Created on 2017-7-7 ...@@ -7,6 +7,7 @@ Created on 2017-7-7
from typing import Iterable from typing import Iterable
import pandas as pd import pandas as pd
from simpleutils.miscellaneous import list_eq
from sqlalchemy import and_ from sqlalchemy import and_
from sqlalchemy import or_ from sqlalchemy import or_
from sqlalchemy import select from sqlalchemy import select
...@@ -30,11 +31,17 @@ class Universe(object): ...@@ -30,11 +31,17 @@ class Universe(object):
special_codes: Iterable = None, special_codes: Iterable = None,
filter_cond=None): filter_cond=None):
self.name = name self.name = name
self.base_universe = base_universe self.base_universe = sorted(base_universe) if base_universe else None
self.exclude_universe = exclude_universe self.exclude_universe = sorted(exclude_universe) if exclude_universe else None
self.special_codes = special_codes self.special_codes = sorted(special_codes) if special_codes else None
self.filter_cond = filter_cond self.filter_cond = filter_cond
def __eq__(self, rhs):
return self.name == rhs.name \
and list_eq(self.base_universe, rhs.base_universe) \
and list_eq(self.exclude_universe, rhs.exclude_universe) \
and list_eq(self.special_codes, rhs.special_codes)
@property @property
def is_filtered(self): def is_filtered(self):
return True if self.filter_cond is not None else False return True if self.filter_cond is not None else False
......
...@@ -12,6 +12,20 @@ from alphamind.data.engines.universe import Universe ...@@ -12,6 +12,20 @@ from alphamind.data.engines.universe import Universe
class TestUniverse(unittest.TestCase): class TestUniverse(unittest.TestCase):
def test_universe_equal(self):
universe1 = Universe('custom', ['zz500'])
universe2 = Universe('custom', ['zz500'])
self.assertEqual(universe1, universe2)
universe1 = Universe('custom', ['zz500'])
universe2 = Universe('custom', ['zz800'])
self.assertNotEqual(universe1, universe2)
filter_cond = LAST('x') > 1.
universe1 = Universe('custom', ['zz500'], filter_cond=filter_cond)
universe2 = Universe('custom', ['zz500'], filter_cond=filter_cond)
self.assertEqual(universe1, universe2)
def test_universe_persistence(self): def test_universe_persistence(self):
universe = Universe('custom', ['zz500']) universe = Universe('custom', ['zz500'])
univ_desc = universe.save() univ_desc = universe.save()
...@@ -26,4 +40,3 @@ class TestUniverse(unittest.TestCase): ...@@ -26,4 +40,3 @@ class TestUniverse(unittest.TestCase):
self.assertEqual(universe.name, loaded_universe.name) self.assertEqual(universe.name, loaded_universe.name)
self.assertListEqual(universe.base_universe, loaded_universe.base_universe) self.assertListEqual(universe.base_universe, loaded_universe.base_universe)
self.assertEqual(universe.filter_cond, loaded_universe.filter_cond)
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment