def predictByRnnRbm(seq=None):

    seq = [[
        {
            "location": "economy_hotel",
            "motion": "unknown",
            "location_one": "hotel",
            "sound": "unknown",
            #"tenMinScale":80,
            #"timestamp":1438580199333
        },
        {
            "location": "economy_hotel",
            "motion": "unknown",
            "location_one": "hotel",
            "sound": "unknown",
            #"tenMinScale":80,
            #"timestamp":1438580199333
        },
        {
            "location": "economy_hotel",
            "motion": "unknown",
            "location_one": "hotel",
            "sound": "unknown",
            #"tenMinScale":80,
            #"timestamp":1438580199333
        },
        {
            "location": "economy_hotel",
            "motion": "unknown",
            "location_one": "hotel",
            "sound": "unknown",
            #"tenMinScale":80,
            #"timestamp":1438580199333
        }
    ]]

    event_list = getEventList()
    sound_set = get_sound_set()
    motion_set = get_motion_set()

    location_one_set = get_location_one_set()
    location_two_set = get_location_two_set()
    #the original location type is location_one_type
    d = Dataset(event_type=getEventList(),
                motion_type=motion_set,
                sound_type=sound_set,
                location_type=location_two_set,
                location_one_type=location_one_set,
                event_prob_map=getEventProbMap())
    binary_sequences = d.convert_binary_sequence(seq)
    event_params_dict = get_all_rnnrbm_params(tag=None, event_list=event_list)

    cmptor = Comparator(event_params_dict=event_params_dict)
    label = cmptor.predict(binary_sequences[0])
    print label
    return label
def trainRandomRnnRBM():

    #event_type = "dining_in_restaurant"
    train_obs_len = 10  #todo need more than 10 or less than 10 length seqs
    train_obs_count = 10
    event_list = getEventList()
    sound_set = get_sound_set()
    motion_set = get_motion_set()

    location_one_set = get_location_one_set()
    location_two_set = get_location_two_set()
    #the original location type is location_one_type
    d = Dataset(event_type=getEventList(),
                motion_type=motion_set,
                sound_type=sound_set,
                location_type=location_two_set,
                location_one_type=location_one_set,
                event_prob_map=getEventProbMap())
    #logger.debug('[trainEventRandomly] Dataset: %s' % (d))

    print "dataset", d
    event_dict = {}
    for event_type in event_list:  #
        d.randomObservations(event_type, train_obs_len,
                             train_obs_count)  # 这里是产生假序列的部分
        observation_list = d.obs
        binary_sequences = d.convert_binary_sequence(observation_list)
        event_dict.update({event_type: binary_sequences})
    #             (self,
    #              event_params_dict=None, # key is the eventtype ,and the value is the params of RnnRbm,
    #                                      #如果eventtype下有参数,则fit时,是从之前训练的基础上开始训练,如果是空。则是用buildrbmrnn的
    #                                      #default参数来初始化并开始巡礼那
    #              weights_dict=None,
    #              seq_len = 0
    #              ):
    senz_len = len(sound_set) + len(motion_set) + len(location_one_set) + len(
        location_two_set)

    # def cold_start_params_dict(event_list):
    #     temp_dict = {}
    #     for event in event_list: temp_dict.update({event:None})
    #     return temp_dict

    cmptor = Comparator(senz_len=senz_len, event_list=event_list)
    params_dict = cmptor.fit(event_dict)
    ids = save_rnnrbm_params(params_dict=params_dict,
                             base_set_dict=dict(motion=motion_set,
                                                location_two=location_two_set,
                                                location_one=location_one_set,
                                                sound=sound_set),
                             tag="random_v0")
    print "The ids saved  in leancloud are", ids
    print "observations event dict start"
    for i in event_dict:
        print i
    print "observation event dict end"
    return ids
def predictByRnnRbm(seq=None):

    seq = [[
               {
                "location":"economy_hotel",
                "motion":"unknown",
                "location_one": "hotel",
                "sound":"unknown",
                #"tenMinScale":80,
                #"timestamp":1438580199333
                },
                {
                "location":"economy_hotel",
                "motion":"unknown",
                "location_one": "hotel",
                "sound":"unknown",
                #"tenMinScale":80,
                #"timestamp":1438580199333
                },
                {
                "location":"economy_hotel",
                "motion":"unknown",
                "location_one": "hotel",
                "sound":"unknown",
                #"tenMinScale":80,
                #"timestamp":1438580199333
                },
                {
                "location":"economy_hotel",
                "motion":"unknown",
                "location_one": "hotel",
                "sound":"unknown",
                #"tenMinScale":80,
                #"timestamp":1438580199333
                }
    ]]

    event_list = getEventList()
    sound_set = get_sound_set()
    motion_set = get_motion_set()

    location_one_set = get_location_one_set()
    location_two_set = get_location_two_set()
    #the original location type is location_one_type
    d = Dataset(event_type=getEventList(), motion_type=motion_set, sound_type=sound_set,
                location_type=location_two_set, location_one_type=location_one_set, event_prob_map=getEventProbMap())
    binary_sequences = d.convert_binary_sequence(seq)
    event_params_dict = get_all_rnnrbm_params(tag=None,event_list=event_list)

    cmptor = Comparator(event_params_dict=event_params_dict)
    label = cmptor.predict(binary_sequences[0])
    print label
    return label
def trainRandomRnnRBM():

    #event_type = "dining_in_restaurant"
    train_obs_len = 10  #todo need more than 10 or less than 10 length seqs
    train_obs_count = 10
    event_list = getEventList()
    sound_set = get_sound_set()
    motion_set = get_motion_set()

    location_one_set = get_location_one_set()
    location_two_set = get_location_two_set()
    #the original location type is location_one_type
    d = Dataset(event_type=getEventList(), motion_type=motion_set, sound_type=sound_set,
                location_type=location_two_set, location_one_type=location_one_set, event_prob_map=getEventProbMap())
    #logger.debug('[trainEventRandomly] Dataset: %s' % (d))

    print "dataset",d
    event_dict = {}
    for event_type in event_list: #
        d.randomObservations(event_type, train_obs_len, train_obs_count)   # 这里是产生假序列的部分
        observation_list = d.obs
        binary_sequences = d.convert_binary_sequence(observation_list)
        event_dict.update({event_type: binary_sequences})
    #             (self,
    #              event_params_dict=None, # key is the eventtype ,and the value is the params of RnnRbm,
    #                                      #如果eventtype下有参数,则fit时,是从之前训练的基础上开始训练,如果是空。则是用buildrbmrnn的
    #                                      #default参数来初始化并开始巡礼那
    #              weights_dict=None,
    #              seq_len = 0
    #              ):
    senz_len = len(sound_set) + len(motion_set) + len(location_one_set) + len(location_two_set)

    # def cold_start_params_dict(event_list):
    #     temp_dict = {}
    #     for event in event_list: temp_dict.update({event:None})
    #     return temp_dict

    cmptor = Comparator(senz_len=senz_len,event_list=event_list)
    params_dict = cmptor.fit(event_dict)
    ids = save_rnnrbm_params(params_dict=params_dict,
                             base_set_dict=dict(
                                 motion=motion_set,
                                 location_two=location_two_set,
                                 location_one=location_one_set,
                                 sound=sound_set
                             ),
                             tag="random_v0")
    print "The ids saved  in leancloud are",ids
    print "observations event dict start"
    for i in event_dict:
        print i
    print "observation event dict end"
    return ids