Exemplo n.º 1
0
 def test_query_report(self):
     
     s1 = Subject(subject_id=md.s1_subject_id,
                  gender=md.s1_gender,
                  age=md.s1_age,
                  handedness=md.s1_handedness,
                  edinburgh_handedness_raw=md.s1_edinburgh_handedness_raw,
                  ravens_iq_raw=md.s1_ravens_iq_raw,
                  dataset_code=md.s1_dataset_code,
                  file_path=md.s1_file_path,
                  mmse=md.s1_mmse)
     db.session.add(s1)
     
     s2 = Subject(subject_id=md.s2_subject_id,
                  gender=md.s2_gender,
                  age=md.s2_age,
                  handedness=md.s2_handedness,
                  edinburgh_handedness_raw=md.s2_edinburgh_handedness_raw,
                  ravens_iq_raw=md.s2_ravens_iq_raw,
                  dataset_code=md.s2_dataset_code,
                  file_path=md.s2_file_path,
                  mmse=md.s2_mmse)
     db.session.add(s2)
     
     s3 = Subject(subject_id=md.s3_subject_id,
                  gender=md.s3_gender,
                  age=md.s3_age,
                  handedness=md.s3_handedness,
                  edinburgh_handedness_raw=md.s3_edinburgh_handedness_raw,
                  ravens_iq_raw=md.s3_ravens_iq_raw,
                  dataset_code=md.s3_dataset_code,
                  file_path=md.s3_file_path,
                  mmse=md.s3_mmse)
     db.session.add(s3)
     
     s4 = Subject(subject_id=md.s4_subject_id,
                  gender=md.s4_gender,
                  age=md.s4_age,
                  handedness=md.s4_handedness,
                  edinburgh_handedness_raw=md.s4_edinburgh_handedness_raw,
                  ravens_iq_raw=md.s4_ravens_iq_raw,
                  dataset_code=md.s4_dataset_code,
                  file_path=md.s4_file_path,
                  mmse=md.s4_mmse)
     db.session.add(s4)
     
     db.session.commit()
     
     # initial request
     resp = self.client.get(f'/query_report?{md.brc_atlas_females_query}')
     data = json.loads(resp.get_data())
     
     assert isinstance(data, dict)
     assert isinstance(data['dataset'], dict)
     assert len(data['dataset'].keys()) == 1
     assert list(data['dataset'].keys())[0] == md.d1_code
     assert int(data['dataset'][md.d1_code]) == 1 # query string is for females in BRC_ATLAS dataset
Exemplo n.º 2
0
 def insert_tract_test_data(self):
     s1 = Subject(subject_id=md.s1_subject_id,
                  gender=md.s1_gender,
                  age=md.s1_age,
                  handedness=md.s1_handedness,
                  edinburgh_handedness_raw=md.s1_edinburgh_handedness_raw,
                  ravens_iq_raw=md.s1_ravens_iq_raw,
                  dataset_code=md.s1_dataset_code,
                  file_path=md.s1_file_path,
                  mmse=md.s1_mmse)
     db.session.add(s1)
     
     s2 = Subject(subject_id=md.s2_subject_id,
                  gender=md.s2_gender,
                  age=md.s2_age,
                  handedness=md.s2_handedness,
                  edinburgh_handedness_raw=md.s2_edinburgh_handedness_raw,
                  ravens_iq_raw=md.s2_ravens_iq_raw,
                  dataset_code=md.s2_dataset_code,
                  file_path=md.s2_file_path,
                  mmse=md.s2_mmse)
     db.session.add(s2)
     
     s3 = Subject(subject_id=md.s3_subject_id,
                  gender=md.s3_gender,
                  age=md.s3_age,
                  handedness=md.s3_handedness,
                  edinburgh_handedness_raw=md.s3_edinburgh_handedness_raw,
                  ravens_iq_raw=md.s3_ravens_iq_raw,
                  dataset_code=md.s3_dataset_code,
                  file_path=md.s3_file_path,
                  mmse=md.s3_mmse)
     db.session.add(s3)
     
     s4 = Subject(subject_id=md.s4_subject_id,
                  gender=md.s4_gender,
                  age=md.s4_age,
                  handedness=md.s4_handedness,
                  edinburgh_handedness_raw=md.s4_edinburgh_handedness_raw,
                  ravens_iq_raw=md.s4_ravens_iq_raw,
                  dataset_code=md.s4_dataset_code,
                  file_path=md.s4_file_path,
                  mmse=md.s4_mmse)
     db.session.add(s4)
     
     d1 = Dataset(md.d1_code, md.d1_name, md.d1_file_path, md.d1_query_params)
     db.session.add(d1)
     
     t1 = Tract(md.t1_code, md.t1_name, md.t1_file_path, md.t1_description)
     db.session.add(t1)
     
     t2 = Tract(md.t2_code, md.t2_name, md.t2_file_path, md.t2_description)
     db.session.add(t2)
     
     db.session.commit()
Exemplo n.º 3
0
 def test_get_static_tract_info_no_subjects(self):
     ''' Test 404 returned when no subjects in query. '''
     
     s2 = Subject(subject_id=md.s2_subject_id,
                  gender=md.s2_gender,
                  age=md.s2_age,
                  handedness=md.s2_handedness,
                  edinburgh_handedness_raw=md.s2_edinburgh_handedness_raw,
                  ravens_iq_raw=md.s2_ravens_iq_raw,
                  dataset_code=md.s2_dataset_code,
                  file_path=md.s2_file_path,
                  mmse=md.s2_mmse)
     db.session.add(s2)
     
     s4 = Subject(subject_id=md.s4_subject_id,
                  gender=md.s4_gender,
                  age=md.s4_age,
                  handedness=md.s4_handedness,
                  edinburgh_handedness_raw=md.s4_edinburgh_handedness_raw,
                  ravens_iq_raw=md.s4_ravens_iq_raw,
                  dataset_code=md.s4_dataset_code,
                  file_path=md.s4_file_path,
                  mmse=md.s4_mmse)
     db.session.add(s4)
     
     d1 = Dataset(md.d1_code, md.d1_name, md.d1_file_path, md.d1_query_params)
     db.session.add(d1)
     
     t1 = Tract(md.t1_code, md.t1_name, md.t1_file_path, md.t1_description)
     db.session.add(t1)
     
     t2 = Tract(md.t2_code, md.t2_name, md.t2_file_path, md.t2_description)
     db.session.add(t2)
     
     db.session.commit()
     
     resp = self.client.get(f'/get_tract_info/{md.t1_code}?{md.brc_atlas_males_query}')
     self.assert404(resp)
Exemplo n.º 4
0
 def test_get_tract_no_subjects(self):
     ''' Test behaviour when there are no subjects returned by the selected query. '''
     s2 = Subject(subject_id=md.s2_subject_id,
                  gender=md.s2_gender,
                  age=md.s2_age,
                  handedness=md.s2_handedness,
                  edinburgh_handedness_raw=md.s2_edinburgh_handedness_raw,
                  ravens_iq_raw=md.s2_ravens_iq_raw,
                  dataset_code=md.s2_dataset_code,
                  file_path=md.s2_file_path,
                  mmse=md.s2_mmse)
     db.session.add(s2)
     
     s4 = Subject(subject_id=md.s4_subject_id,
                  gender=md.s4_gender,
                  age=md.s4_age,
                  handedness=md.s4_handedness,
                  edinburgh_handedness_raw=md.s4_edinburgh_handedness_raw,
                  ravens_iq_raw=md.s4_ravens_iq_raw,
                  dataset_code=md.s4_dataset_code,
                  file_path=md.s4_file_path,
                  mmse=md.s4_mmse)
     db.session.add(s4)
     
     d1 = Dataset(md.d1_code, md.d1_name, md.d1_file_path, md.d1_query_params)
     db.session.add(d1)
     
     t1 = Tract(md.t1_code, md.t1_name, md.t1_file_path, md.t1_description)
     db.session.add(t1)
     
     t2 = Tract(md.t2_code, md.t2_name, md.t2_file_path, md.t2_description)
     db.session.add(t2)
     
     db.session.commit()
     
     resp = self.tract_test_response(md.t1_code, md.brc_atlas_males_query)
     
     self.assert404(resp)
Exemplo n.º 5
0
 def test_query_report_nonexistent_dataset(self):
     # only add subject from TESTDATASET
     s4 = Subject(subject_id=md.s4_subject_id,
                  gender=md.s4_gender,
                  age=md.s4_age,
                  handedness=md.s4_handedness,
                  edinburgh_handedness_raw=md.s4_edinburgh_handedness_raw,
                  ravens_iq_raw=md.s4_ravens_iq_raw,
                  dataset_code=md.s4_dataset_code,
                  file_path=md.s4_file_path,
                  mmse=md.s4_mmse)
     db.session.add(s4)
     
     db.session.commit()
     
     # query for females in BRC_ATLAS
     resp = self.client.get(f'/query_report?{md.brc_atlas_females_query}')
     data = json.loads(resp.get_data())
     
     assert isinstance(data, dict)
     assert isinstance(data['dataset'], dict)
     assert len(data['dataset'].keys()) == 1
     assert list(data['dataset'].keys())[0] == md.d1_code
     assert int(data['dataset'][md.d1_code]) == 0
Exemplo n.º 6
0
 def test_subject_tract_metrics(self):
     
     # insert subjects
     sbjct1 = Subject(subject_id=DatabaseUtilsTestCase.sbjct1_subject_id,
                      gender=DatabaseUtilsTestCase.sbjct1_gender,
                      age=DatabaseUtilsTestCase.sbjct1_age,
                      handedness=DatabaseUtilsTestCase.sbjct1_handedness,
                      edinburgh_handedness_raw=DatabaseUtilsTestCase.sbjct1_edinburgh_handedness_raw,
                      ravens_iq_raw=DatabaseUtilsTestCase.sbjct1_ravens_iq_raw,
                      dataset_code=DatabaseUtilsTestCase.sbjct1_dataset_code,
                      file_path=DatabaseUtilsTestCase.sbjct1_file_path,
                      mmse=DatabaseUtilsTestCase.sbjct1_mmse)
     db.session.add(sbjct1)
     sbjct2 = Subject(subject_id=DatabaseUtilsTestCase.sbjct2_subject_id,
                      gender=DatabaseUtilsTestCase.sbjct2_gender,
                      age=DatabaseUtilsTestCase.sbjct2_age,
                      handedness=DatabaseUtilsTestCase.sbjct2_handedness,
                      edinburgh_handedness_raw=DatabaseUtilsTestCase.sbjct2_edinburgh_handedness_raw,
                      ravens_iq_raw=DatabaseUtilsTestCase.sbjct2_ravens_iq_raw,
                      dataset_code=DatabaseUtilsTestCase.sbjct2_dataset_code,
                      file_path=DatabaseUtilsTestCase.sbjct2_file_path,
                      mmse=DatabaseUtilsTestCase.sbjct2_mmse)
     db.session.add(sbjct2)
     sbjct3 = Subject(subject_id=DatabaseUtilsTestCase.sbjct3_subject_id,
                      gender=DatabaseUtilsTestCase.sbjct3_gender,
                      age=DatabaseUtilsTestCase.sbjct3_age,
                      handedness=DatabaseUtilsTestCase.sbjct3_handedness,
                      edinburgh_handedness_raw=DatabaseUtilsTestCase.sbjct3_edinburgh_handedness_raw,
                      ravens_iq_raw=DatabaseUtilsTestCase.sbjct3_ravens_iq_raw,
                      dataset_code=DatabaseUtilsTestCase.sbjct3_dataset_code,
                      file_path=DatabaseUtilsTestCase.sbjct3_file_path,
                      mmse=DatabaseUtilsTestCase.sbjct3_mmse)
     db.session.add(sbjct3)
     
     # insert test tract
     tract1 = Tract(code=DatabaseUtilsTestCase.tract1_code,
                    name=DatabaseUtilsTestCase.tract1_name,
                    file_path=DatabaseUtilsTestCase.tract1_file_path,
                    description=DatabaseUtilsTestCase.tract1_description)
     db.session.add(tract1)
     
     # insert subject metrics
     sbjct1_mets = SubjectTractMetrics(subject_id=DatabaseUtilsTestCase.sbjct1_subject_id,
                                  tract_code=DatabaseUtilsTestCase.tract1_code,
                                  method_code=DatabaseUtilsTestCase.method1_code,
                                  mean_MD=0.5,
                                  std_MD=0.01,
                                  mean_FA=0.5,
                                  std_FA=0.01,
                                  volume=10)
     db.session.add(sbjct1_mets)
     sbjct2_mets = SubjectTractMetrics(subject_id=DatabaseUtilsTestCase.sbjct2_subject_id,
                                  tract_code=DatabaseUtilsTestCase.tract1_code,
                                  method_code=DatabaseUtilsTestCase.method1_code,
                                  mean_MD=0.5,
                                  std_MD=0.01,
                                  mean_FA=0.5,
                                  std_FA=0.01,
                                  volume=10)
     db.session.add(sbjct2_mets)
     sbjct3_mets = SubjectTractMetrics(subject_id=DatabaseUtilsTestCase.sbjct3_subject_id,
                                  tract_code=DatabaseUtilsTestCase.tract1_code,
                                  method_code=DatabaseUtilsTestCase.method1_code,
                                  mean_MD=0.5,
                                  std_MD=0.01,
                                  mean_FA=0.5,
                                  std_FA=0.01,
                                  volume=10)
     db.session.add(sbjct3_mets)
     
     db.session.commit()
     
     test_query = {
                     "TESTDATASET1": {
                                 "method": "DTI",
                                 "constraints": {
                                                 "handedness": {"type": "checkbox", "values": ["R","L"]}
                                                 }
                                 }
                   }
     
     metrics = dbu.subject_tract_metrics(test_query, DatabaseUtilsTestCase.tract1_code)
     assert type(metrics) == np.ndarray
     assert metrics.shape == (3,5)
     assert np.sum(metrics) == 33.06
Exemplo n.º 7
0
 def test_subject_id_dataset_file_path(self):
     # insert 2 test datasets
     dataset1 = Dataset(code=DatabaseUtilsTestCase.dataset1_code,
                       name=DatabaseUtilsTestCase.dataset1_name,
                       file_path=DatabaseUtilsTestCase.dataset1_file_path,
                       query_params=DatabaseUtilsTestCase.dataset1_query_params)
     db.session.add(dataset1)
     dataset2 = Dataset(code=DatabaseUtilsTestCase.dataset2_code,
                       name=DatabaseUtilsTestCase.dataset2_name,
                       file_path=DatabaseUtilsTestCase.dataset2_file_path,
                       query_params=DatabaseUtilsTestCase.dataset2_query_params)
     db.session.add(dataset2)
     # insert subjects
     sbjct1 = Subject(subject_id=DatabaseUtilsTestCase.sbjct1_subject_id,
                      gender=DatabaseUtilsTestCase.sbjct1_gender,
                      age=DatabaseUtilsTestCase.sbjct1_age,
                      handedness=DatabaseUtilsTestCase.sbjct1_handedness,
                      edinburgh_handedness_raw=DatabaseUtilsTestCase.sbjct1_edinburgh_handedness_raw,
                      ravens_iq_raw=DatabaseUtilsTestCase.sbjct1_ravens_iq_raw,
                      dataset_code=DatabaseUtilsTestCase.sbjct1_dataset_code,
                      file_path=DatabaseUtilsTestCase.sbjct1_file_path,
                      mmse=DatabaseUtilsTestCase.sbjct1_mmse)
     db.session.add(sbjct1)
     sbjct2 = Subject(subject_id=DatabaseUtilsTestCase.sbjct2_subject_id,
                      gender=DatabaseUtilsTestCase.sbjct2_gender,
                      age=DatabaseUtilsTestCase.sbjct2_age,
                      handedness=DatabaseUtilsTestCase.sbjct2_handedness,
                      edinburgh_handedness_raw=DatabaseUtilsTestCase.sbjct2_edinburgh_handedness_raw,
                      ravens_iq_raw=DatabaseUtilsTestCase.sbjct2_ravens_iq_raw,
                      dataset_code=DatabaseUtilsTestCase.sbjct2_dataset_code,
                      file_path=DatabaseUtilsTestCase.sbjct2_file_path,
                      mmse=DatabaseUtilsTestCase.sbjct2_mmse)
     db.session.add(sbjct2)
     sbjct3 = Subject(subject_id=DatabaseUtilsTestCase.sbjct3_subject_id,
                      gender=DatabaseUtilsTestCase.sbjct3_gender,
                      age=DatabaseUtilsTestCase.sbjct3_age,
                      handedness=DatabaseUtilsTestCase.sbjct3_handedness,
                      edinburgh_handedness_raw=DatabaseUtilsTestCase.sbjct3_edinburgh_handedness_raw,
                      ravens_iq_raw=DatabaseUtilsTestCase.sbjct3_ravens_iq_raw,
                      dataset_code=DatabaseUtilsTestCase.sbjct3_dataset_code,
                      file_path=DatabaseUtilsTestCase.sbjct3_file_path,
                      mmse=DatabaseUtilsTestCase.sbjct3_mmse)
     db.session.add(sbjct3)
     sbjct4 = Subject(subject_id=DatabaseUtilsTestCase.sbjct4_subject_id,
                      gender=DatabaseUtilsTestCase.sbjct4_gender,
                      age=DatabaseUtilsTestCase.sbjct4_age,
                      handedness=DatabaseUtilsTestCase.sbjct4_handedness,
                      edinburgh_handedness_raw=DatabaseUtilsTestCase.sbjct4_edinburgh_handedness_raw,
                      ravens_iq_raw=DatabaseUtilsTestCase.sbjct4_ravens_iq_raw,
                      dataset_code=DatabaseUtilsTestCase.sbjct4_dataset_code,
                      file_path=DatabaseUtilsTestCase.sbjct4_file_path,
                      mmse=DatabaseUtilsTestCase.sbjct4_mmse)
     db.session.add(sbjct4)
     db.session.commit()
     
     test_query = {
                     "TESTDATASET1": {
                                 "method": "DTI",
                                 "constraints": {
                                                 "handedness": {"type": "checkbox", "values": ["R","L"]}
                                                 }
                                 },
                     "TESTDATASET2": {
                                 "method": "DTI",
                                 "constraints": {
                                                 "handedness": {"type": "checkbox", "values": ["R","L"]}
                                                 }
                                 
                                 }
                   }
     
     result = dbu.subject_id_dataset_file_path(test_query)
     assert len(result) == 4
     sorted_result = sorted(result, key=lambda subject: subject[0])
     assert sorted_result[0][0] == DatabaseUtilsTestCase.sbjct1_subject_id
     assert sorted_result[0][1] == DatabaseUtilsTestCase.dataset1_file_path
     assert sorted_result[1][0] == DatabaseUtilsTestCase.sbjct2_subject_id
     assert sorted_result[1][1] == DatabaseUtilsTestCase.dataset1_file_path
     assert sorted_result[2][0] == DatabaseUtilsTestCase.sbjct3_subject_id
     assert sorted_result[2][1] == DatabaseUtilsTestCase.dataset1_file_path
     assert sorted_result[3][0] == DatabaseUtilsTestCase.sbjct4_subject_id
     assert sorted_result[3][1] == DatabaseUtilsTestCase.dataset2_file_path
Exemplo n.º 8
0
 def test_generate_mean_maps(self):
     s1 = Subject(subject_id=md.s1_subject_id,
                  gender=md.s1_gender,
                  age=md.s1_age,
                  handedness=md.s1_handedness,
                  edinburgh_handedness_raw=md.s1_edinburgh_handedness_raw,
                  ravens_iq_raw=md.s1_ravens_iq_raw,
                  dataset_code=md.s1_dataset_code,
                  file_path=md.s1_file_path,
                  mmse=md.s1_mmse)
     db.session.add(s1)
     
     s2 = Subject(subject_id=md.s2_subject_id,
                  gender=md.s2_gender,
                  age=md.s2_age,
                  handedness=md.s2_handedness,
                  edinburgh_handedness_raw=md.s2_edinburgh_handedness_raw,
                  ravens_iq_raw=md.s2_ravens_iq_raw,
                  dataset_code=md.s2_dataset_code,
                  file_path=md.s2_file_path,
                  mmse=md.s2_mmse)
     db.session.add(s2)
     
     s3 = Subject(subject_id=md.s3_subject_id,
                  gender=md.s3_gender,
                  age=md.s3_age,
                  handedness=md.s3_handedness,
                  edinburgh_handedness_raw=md.s3_edinburgh_handedness_raw,
                  ravens_iq_raw=md.s3_ravens_iq_raw,
                  dataset_code=md.s3_dataset_code,
                  file_path=md.s3_file_path,
                  mmse=md.s3_mmse)
     db.session.add(s3)
     
     s4 = Subject(subject_id=md.s4_subject_id,
                  gender=md.s4_gender,
                  age=md.s4_age,
                  handedness=md.s4_handedness,
                  edinburgh_handedness_raw=md.s4_edinburgh_handedness_raw,
                  ravens_iq_raw=md.s4_ravens_iq_raw,
                  dataset_code=md.s4_dataset_code,
                  file_path=md.s4_file_path,
                  mmse=md.s4_mmse)
     db.session.add(s4)
     
     d1 = Dataset(code=md.d1_code, name=md.d1_name, file_path=md.d1_file_path, query_params=md.d1_query_params)
     db.session.add(d1)
     
     d2 = Dataset(code=md.d2_code, name=md.d2_name, file_path=md.d2_file_path, query_params=md.d1_query_params)
     db.session.add(d2)
     
     db.session.commit()
     
     self.saved_file_path = ''
     self.saved_img = None
     
     def nib_save_patch(img, file_path):
         self.saved_file_path = file_path
         self.saved_img = img
         data = img.get_data()
         assert np.all(data == 1.)
     
     def nib_load_patch(file_path):
         if du.TEMPLATE_FILE_NAME in file_path:
             return md.template_nifti
         elif md.s1_subject_id in file_path:
             return md.s1_MD if 'MD' in file_path else md.s1_FA
         elif md.s3_subject_id in file_path:
             return md.s3_MD if 'MD' in file_path else md.s3_FA
         else:
             print('Unexpected file path passed to nib_load_path in test_views.test_generate_maps')
             print(file_path)
             return
         
     # assert the cache is empty for query string before response
     assert not current_app.cache.get(md.brc_atlas_males_query)
     
     # first request
     with monkey_patch(du.nib, 'save', nib_save_patch):
         with monkey_patch(du.nib, 'load', nib_load_patch):
             resp = self.client.get(f'/generate_mean_maps?{md.brc_atlas_males_query}')
     
     self.assertStatus(resp, 204)
     assert current_app.cache.get(md.brc_atlas_males_query) # check data has been cached