def del_raw(viewer, start, end): start_time = str_to_datetime(start, UTC) end_time = str_to_datetime(end, UTC) raws = Raw.objects.filter(subject_id=viewer, start_time__range=(start_time, end_time)) print raws[0].subject_id, raws[0].start_time, raws[0].end_time raws.delete()
def add_session(start, end, content_name, viewers): start_time = str_to_datetime(start, UTC) end_time = str_to_datetime(end, UTC) duration = end_time - start_time content = Content.objects.get(name=content_name) session_name = content_name + str( len(Session.objects.filter(content=content))) session = Session.objects.create(content=content, name=session_name, start_time=start_time, end_time=end_time, content_start_sec=0, content_end_sec=duration.total_seconds()) viewers = Viewer.objects.filter(user__username__in=viewers) session.viewers.add(*viewers)
def create_tags_from_file(f): viewers = {} label_types = {} reader = csv.reader(f, delimiter=",") reader.next() for row in reader: viewer_name, start, end, label_type_name, label_str = row start = str_to_datetime(start.strip(), UTC) end = str_to_datetime(end.strip(), UTC) if not viewer_name in viewers: print viewer_name viewers[viewer_name] = Viewer.objects.get(user__username=viewer_name.strip()) if not label_type_name in label_types: label_types[label_type_name] = LabelType.objects.get(name=label_type_name.strip()) tag=Tag.objects.create(subject=viewers[viewer_name], start_time=start, end_time=end) Label.objects.create(label_type=label_types[label_type_name], true=-1, predicted=int(label_str), tag=tag)
def fill_db(now=None): # fill in default params if now is None: now = timefixer.now() # clear the db LabelType.objects.all().delete() Label.objects.all().delete() Tag.objects.all().delete() Raw.objects.all().delete() User.objects.all().delete() ContentGroup.objects.all().delete() Content.objects.all().delete() VideoContent.objects.all().delete() Session.objects.all().delete() # create label type confusion_label_type = LabelType.objects.create(name='confusion') # create prof user = User.objects.create(username='******') user.set_password('essor') user.save() owner = Owner.objects.create(user=user, marketer=False) # create students viewer_names = ['bic1', 'alice'] viewers = [] for name in viewer_names: user = User.objects.create(username=name) user.set_password('thomas') user.save() viewer = Viewer.objects.create(user=user) viewers.append(viewer) # create classes content_group_names = ['software_management', 'bic_capstone'] lecture_length = 60 * 2 for content_group_name in content_group_names: content_group = ContentGroup.objects.create(name=content_group_name) content_group.owners.add(owner) content_group.viewers.add(*viewers) content_group.save() # create lecture 1 content1 = Content.objects.create(group=content_group, duration=lecture_length, name='lecture 1') content1.invited_viewers.add(*viewers) content1.save() d = now + datetime.timedelta(minutes=1) session1 = Session.objects.create( content=content1, start_time=d, end_time=d + datetime.timedelta(seconds=lecture_length), content_start_sec=0, content_end_sec=lecture_length) session1.viewers.add(*viewers) session1.save() # create lecture 2 content2 = Content.objects.create(group=content_group, duration=lecture_length, name='lecture 2') content1.invited_viewers.add(*viewers) content2.save() start_18 = timefixer.str_to_datetime('2018-01-01 00:00:00') end_18 = start_18 + datetime.timedelta(lecture_length) session2 = Session.objects.create(content=content2, start_time=start_18, end_time=end_18, content_start_sec=0, content_end_sec=lecture_length) session2.viewers.add(*viewers) session2.save() # gen data for each student for viewer in viewers: step = 10 # seconds for i, t in enumerate(range(0, 300, step)): d = session1.start_time start_time = d + datetime.timedelta(seconds=t) end_time = start_time + datetime.timedelta(seconds=step) confusion = i % 2 predicted_confusion = 1 - i tag = Tag.objects.create(subject=viewer, start_time=start_time, end_time=end_time) label = Label.objects.create(label_type=confusion_label_type, tag=tag, true=confusion, predicted=predicted_confusion) raw_data = Raw.objects.create(subject=viewer, start_time=start_time, end_time=end_time, sensor="center", rawwave='1 2 3 4 5')
def input(request): """ :Args: | request:Http post request storing student's confusion information :Returns: | returns "EEG" if OK """ POST = request.POST ok = True student = POST.get('student') viewer = Viewer.objects.filter(user__username=student).get() start_time = str_to_datetime(POST.get("start_time"), UTC) end_time = str_to_datetime(POST.get("end_time"), UTC) sensor = POST.get("sensor") raw = POST.get("raw") label_names = POST.get("label_names") label_values = POST.get("label_values") print start_time if label_names is not None: label_names = json.loads(label_names) label_values = json.loads(label_values) for ln, lv in zip(label_names, label_values): label_type = LabelType.objects.filter(name=ln).get() tag = Tag.objects.create(subject=viewer, start_time=start_time, end_time=end_time) label = Label.objects.create(label_type=label_type, tag=tag, true=lv, predicted=-1) # uncomment to apply classifier # task_qs = ConfusionTask.objects.get(pk=conf_data.pk) # classify.classifySingleTask(task_qs, 'default.model', 'confusion') elif raw is not None: rawToks = raw.split(' ') waves = [] att = -1 sig = -1 for raw in rawToks: if raw[0] == 'S': sig = int(raw[3:]) elif raw[0] == 'A': att = int(raw[3:]) else: waves.append(raw) waves = ' '.join(waves) raw_data = Raw(subject=viewer, start_time=start_time, end_time=end_time, sensor=sensor, attention=att, sigqual=sig, rawwave=waves) if sig == 200: ok = False raw_data.save() return HttpResponse('ok' if ok else 'not ok')