def setUp(self): self.experiment = Experiment(name='backgroundcolor', state=ENABLED_STATE) self.experiment.save() self.request = request_factory.get('/', HTTP_USER_AGENT='GoogleBot/2.1') self.experiment_counter = ExperimentCounter()
def test_experiment_is_related_to_owner(self): owner = User.objects.first() experiment = Experiment(nes_id=17, owner=owner, version=1, sent_date=datetime.utcnow()) experiment.save() self.assertIn(experiment, owner.experiment_set.all())
def setUp(self): self.experiment = Experiment(name='mock_experiment') self.instance = AdminConditional( description='mock template', experiment=self.experiment, ) self.request = mock.MagicMock() self.context = {'request': self.request} self.experiments = mock.MagicMock() self.experiments.context = self.context self.request.experiments = self.experiments
def test_duplicate_experiments_are_invalid(self): owner = User.objects.first() Experiment.objects.create(nes_id=17, owner=owner, version=1, sent_date=datetime.utcnow()) experiment = Experiment(nes_id=17, owner=owner, version=1, sent_date=datetime.utcnow()) with self.assertRaises(ValidationError): experiment.full_clean()
def test_cannot_save_empty_attributes(self): owner = User.objects.first() # version=17: large number to avoid conflicts with global setup experiment = Experiment(nes_id=1, title='', description='', owner=owner, version=17, slug='', sent_date=datetime.utcnow()) # TODO: slug='' does not raises ValidationError with self.assertRaises(ValidationError): experiment.save() experiment.full_clean()
def test_default_attributes(self): experiment = Experiment() self.assertEqual(experiment.nes_id, None) self.assertEqual(experiment.title, '') self.assertEqual(experiment.description, '') self.assertEqual(experiment.data_acquisition_done, False) self.assertEqual(experiment.sent_date, None) self.assertEqual(experiment.version, None) self.assertEqual(experiment.status, experiment.RECEIVING) self.assertEqual(experiment.trustee, None) self.assertEqual(experiment.project_url, None) self.assertEqual(experiment.ethics_committee_url, None) self.assertEqual(experiment.ethics_committee_file, None) self.assertEqual(experiment.slug, '') self.assertEqual(experiment.downloads, 0)
def addexperiment(request, checksum): dir_path = 'media/datasets/' + checksum + "/" dump_file = dir_path + "dataset.csv" meta_file = dir_path + "metadata.json" if request.method == "POST": auth = request.META['HTTP_AUTHORIZATION'].split() username, password = base64.b64decode( auth[1]).decode("utf-8").split(':') user = authenticate(username=username, password=password) if user is None or user.is_active == False: return HttpResponse('AUTHENTICATION_FAILED') if Experiment.objects.filter(checksum=checksum).exists(): return HttpResponse('DATASET_ALREADY_IN_DB') with open(meta_file, "r") as f: experiment_meta = json.load(f) sensors_abbrs = list(pd.read_csv(dump_file, nrows=1).columns) sensors_abbrs.remove('time') sensors = { sensor['abbreviation']: sensor['id'] for sensor in list( Sensor.objects.filter(abbreviation__in=sensors_abbrs).values( 'abbreviation', 'id')) } with open(dump_file, "r") as f: num_lines = sum(1 for line in f) - 1 experiment_start_unix = int( time.mktime( time.strptime(experiment_meta['start_time'], '%Y-%m-%d %H:%M:%S'))) * (10**6) rock = Rock.objects.get(id=experiment_meta['rock_id']) experiment = Experiment(start_time=experiment_meta['start_time'], description=experiment_meta['description'], rock_id=rock, checksum=checksum, nr_data_points=num_lines * len(sensors_abbrs)) experiment.sensors = [id for id in sensors.values()] experiment.save() add_experiment_to_db.delay(checksum) return HttpResponse('EXPERIMENT_BEING_ADDED_TO_THE_DB')
def handle(self, *args, **options): try: user_data = {} if hasattr(self.stdin, 'isatty') and not self.stdin.isatty(): raise NotRunningInTTYException("Not running in a TTY") for field_name in Experiment.REQUIRED_FIELDS: field = Experiment._meta.get_field(field_name) user_data[field_name] = None while user_data[field_name] is None: message = field_name.upper() + ': ' user_data[field_name] = self.get_input_data(field, message) except KeyboardInterrupt: self.stderr.write("\nOperation cancelled.") sys.exit(1) except NotRunningInTTYException: self.stdout.write( "Experiment creation skipped due to not running in a TTY. " "You can run `manage.py create_exp` in your project " "to create one manually.") app_name = user_data['name'] if app_name not in settings.INSTALLED_APPS: try: src = 'exp0' dest = app_name shutil.copytree(src, dest) except Exception as e: self.stderr.write("Directory not copied. Error: %s" % str(e)) try: template_dir = app_name + '/templates/' + app_name os.makedirs(template_dir) with open("vlab/settings.py", "a") as myFile: myFile.write("INSTALLED_APPS += ('%s',)\n" % app_name) myFile.close() experiment = Experiment(**user_data) experiment.save() except Exception as e: self.stderr.write("Directory not copied. Error 1: %s" % str(e)) shutil.rmtree(app_name)
def sync_experiment_row(legacy_row): experiment_plate_id = legacy_row[0] worm_strain = get_worm_strain(legacy_row[1], legacy_row[2]) legacy_library_plate_name = legacy_row[3] temperature = legacy_row[4] date = legacy_row[5] is_junk = legacy_row[6] comment = legacy_row[7] all_match = True if experiment_plate_id < 40000: screen_stage = 1 else: screen_stage = 2 new_plate = ExperimentPlate(id=experiment_plate_id, screen_stage=screen_stage, temperature=temperature, date=date, comment=comment) all_match &= update_or_save_object(command, new_plate, recorded_plates, plate_fields_to_compare) experiment_plate = get_experiment_plate(experiment_plate_id) for well in get_well_list(): new_well = Experiment( id=generate_experiment_id(experiment_plate_id, well), plate=experiment_plate, well=well, worm_strain=worm_strain, library_stock=get_library_stock(legacy_library_plate_name, well), is_junk=is_junk) all_match &= update_or_save_object(command, new_well, recorded_wells, well_fields_to_compare) return all_match
def test_can_save_same_experiment_to_different_owners(self): owner1 = User.objects.get(username='******') owner2 = User.objects.get(username='******') Experiment.objects.create( title='A title', description='A description', nes_id=1, owner=owner1, version=17, sent_date=datetime.utcnow(), slug='slug6' # last slug in tests_helper was 'slug' ) experiment2 = Experiment(title='A title', description='A description', nes_id=1, owner=owner2, version=17, sent_date=datetime.utcnow(), slug='slug7') experiment2.full_clean()
def setUp(self): self.experiment = Experiment(name='backgroundcolor', state=ENABLED_STATE) self.experiment.save() self.request = request_factory.get('/') self.request.session = DatabaseSession()
def setUp(self): self.experiment = Experiment(name=EXPERIMENT_NAME, state=ENABLED_STATE) self.experiment.save() self.request = request_factory.get('/') self.request.session = DatabaseSession() self.experiment_counter = ExperimentCounter()
def setUp(self): self.experiment = Experiment(name='backgroundcolor', state=ENABLED_STATE) self.experiment.save() self.experiment_counter = ExperimentCounter()