本文整理汇总了Python中qiita_db.study.Study类的典型用法代码示例。如果您正苦于以下问题:Python Study类的具体用法?Python Study怎么用?Python Study使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Study类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: test_build_study_info_new_study
def test_build_study_info_new_study(self):
info = {
'timeseries_type_id': 1,
'portal_type_id': 1,
'lab_person_id': None,
'principal_investigator_id': 3,
'metadata_complete': False,
'mixs_compliant': True,
'study_description': 'desc',
'study_alias': 'alias',
'study_abstract': 'abstract'}
user = User('[email protected]')
Study.create(user, 'test_study_1', efo=[1], info=info)
obs = _build_study_info('private', user)
StudyTuple = namedtuple('StudyInfo', 'id title meta_complete '
'num_samples_collected shared num_raw_data pi '
'pmids owner status')
exp = [
StudyTuple(
id=2,
title='test_study_1',
meta_complete=False, num_samples_collected=None,
shared='',
num_raw_data=0,
pi='<a target="_blank" href="mailto:[email protected]">'
'PIDude</a>',
pmids='',
owner='<a target="_blank" href="mailto:[email protected]">'
'[email protected]</a>',
status='sandbox')]
self.assertEqual(obs, exp)
开发者ID:BrindhaBioinfo,项目名称:qiita,代码行数:34,代码来源:test_study_handlers.py
示例2: test_build_study_info_new_study
def test_build_study_info_new_study(self):
info = {
'timeseries_type_id': 1,
'lab_person_id': None,
'principal_investigator_id': 3,
'metadata_complete': False,
'mixs_compliant': True,
'study_description': 'desc',
'study_alias': 'alias',
'study_abstract': 'abstract'}
user = User('[email protected]')
Study.create(user, 'test_study_1', efo=[1], info=info)
obs = _build_study_info(user)
self.exp.append({
'study_id': 2,
'status': 'sandbox',
'study_abstract': 'abstract',
'metadata_complete': False,
'study_title': 'test_study_1',
'num_raw_data': 0,
'number_samples_collected': 0,
'shared': '',
'pmid': '',
'publication_doi': '',
'pi':
'<a target="_blank" href="mailto:[email protected]">PIDude</a>',
'proc_data_info': []})
self.assertEqual(obs, self.exp)
开发者ID:mivamo1214,项目名称:qiita,代码行数:29,代码来源:test_study_handlers.py
示例3: test_create_nonqiita_portal
def test_create_nonqiita_portal(self):
qiita_config.portal = "EMP"
Study.create(User("[email protected]"), "NEW!", [1], self.info, Investigation(1))
# make sure portal is associated
obs = self.conn_handler.execute_fetchall("SELECT * from qiita.study_portal WHERE study_id = 2")
self.assertEqual(obs, [[2, 2], [2, 1]])
开发者ID:DarcyMyers,项目名称:qiita,代码行数:7,代码来源:test_study.py
示例4: sample_template_checks
def sample_template_checks(study_id, user, check_exists=False):
"""Performs different checks and raises errors if any of the checks fail
Parameters
----------
study_id : int
The study id
user : qiita_db.user.User
The user trying to access the study
check_exists : bool, optional
If true, check if the sample template exists
Raises
------
HTTPError
404 if the study does not exist
403 if the user does not have access to the study
404 if check_exists == True and the sample template doesn't exist
"""
try:
study = Study(int(study_id))
except QiitaDBUnknownIDError:
raise HTTPError(404, reason='Study does not exist')
if not study.has_access(user):
raise HTTPError(403, reason='User does not have access to study')
# Check if the sample template exists
if check_exists and not SampleTemplate.exists(study_id):
raise HTTPError(404, reason="Study %s doesn't have sample information"
% study_id)
开发者ID:antgonza,项目名称:qiita,代码行数:30,代码来源:sample_template.py
示例5: setUp
def setUp(self):
fd, self.seqs_fp = mkstemp(suffix='_seqs.fastq')
close(fd)
fd, self.barcodes_fp = mkstemp(suffix='_barcodes.fastq')
close(fd)
self.filetype = 2
self.filepaths = [(self.seqs_fp, 1), (self.barcodes_fp, 2)]
self.studies = [Study(1)]
_, self.db_test_raw_dir = get_mountpoint('raw_data')[0]
with open(self.seqs_fp, "w") as f:
f.write("\n")
with open(self.barcodes_fp, "w") as f:
f.write("\n")
self._clean_up_files = []
# Create a new study
info = {
"timeseries_type_id": 1,
"metadata_complete": True,
"mixs_compliant": True,
"number_samples_collected": 25,
"number_samples_promised": 28,
"portal_type_id": 3,
"study_alias": "FCM",
"study_description": "Microbiome of people who eat nothing but "
"fried chicken",
"study_abstract": "Exploring how a high fat diet changes the "
"gut microbiome",
"emp_person_id": StudyPerson(2),
"principal_investigator_id": StudyPerson(3),
"lab_person_id": StudyPerson(1)
}
Study.create(User("[email protected]"), "Test study 2", [1], info)
开发者ID:zonca,项目名称:qiita,代码行数:34,代码来源:test_data.py
示例6: check_access
def check_access(study_id, user_id):
"""Checks if user given has access to the study given
Parameters
----------
study_id : int
ID of the study to check access to
user_id : str
ID of the user to check access for
Returns
-------
dict
Empty dict if access allowed, else a dict in the form
{'status': 'error',
'message': reason for error}
"""
try:
study = Study(int(study_id))
except QiitaDBUnknownIDError:
return {'status': 'error',
'message': 'Study does not exist'}
if not study.has_access(User(user_id)):
return {'status': 'error',
'message': 'User does not have access to study'}
return {}
开发者ID:ElDeveloper,项目名称:qiita,代码行数:27,代码来源:util.py
示例7: get
def get(self, arguments):
study_id = int(self.get_argument('study_id'))
# this block is tricky because you can either pass the sample or the
# prep template and if none is passed then we will let an exception
# be raised because template will not be declared for the logic below
if self.get_argument('prep_template', None):
template = PrepTemplate(int(self.get_argument('prep_template')))
if self.get_argument('sample_template', None):
template = None
tid = int(self.get_argument('sample_template'))
try:
template = SampleTemplate(tid)
except QiitaDBUnknownIDError:
raise HTTPError(404, "SampleTemplate %d does not exist" % tid)
study = Study(template.study_id)
# check whether or not the user has access to the requested information
if not study.has_access(User(self.current_user)):
raise HTTPError(403, "You do not have access to access this "
"information.")
df = dataframe_from_template(template)
stats = stats_from_df(df)
self.render('metadata_summary.html', user=self.current_user,
study_title=study.title, stats=stats,
study_id=study_id)
开发者ID:gustabf,项目名称:qiita,代码行数:29,代码来源:study_handlers.py
示例8: test_get_accessible_filepath_ids
def test_get_accessible_filepath_ids(self):
self._set_processed_data_private()
# shared has access to all study files and analysis files
obs = get_accessible_filepath_ids(User('[email protected]'))
self.assertEqual(obs, set([1, 2, 5, 6, 7, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20]))
# Now shared should not have access to the study files
self._unshare_studies()
obs = get_accessible_filepath_ids(User('[email protected]'))
self.assertEqual(obs, set([12, 13, 14, 15]))
# Now shared should not have access to any files
self._unshare_analyses()
obs = get_accessible_filepath_ids(User('[email protected]'))
self.assertEqual(obs, set())
# Now shared has access to public study files
self._set_processed_data_public()
obs = get_accessible_filepath_ids(User('[email protected]'))
self.assertEqual(obs, set([1, 2, 5, 6, 7, 11, 16, 19, 20]))
# Test that it doesn't break: if the SampleTemplate hasn't been added
exp = set([1, 2, 5, 6, 7, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20])
obs = get_accessible_filepath_ids(User('[email protected]'))
self.assertEqual(obs, exp)
info = {
"timeseries_type_id": 1,
"metadata_complete": True,
"mixs_compliant": True,
"number_samples_collected": 4,
"number_samples_promised": 4,
"portal_type_id": 3,
"study_alias": "TestStudy",
"study_description": "Description of a test study",
"study_abstract": "No abstract right now...",
"emp_person_id": 1,
"principal_investigator_id": 1,
"lab_person_id": 1
}
Study.create(User('[email protected]'), "Test study", [1], info)
obs = get_accessible_filepath_ids(User('[email protected]'))
self.assertEqual(obs, exp)
# test in case there is a prep template that failed
self.conn_handler.execute(
"INSERT INTO qiita.prep_template (data_type_id, raw_data_id) "
"VALUES (2,1)")
obs = get_accessible_filepath_ids(User('[email protected]'))
self.assertEqual(obs, exp)
# admin should have access to everything
count = self.conn_handler.execute_fetchone("SELECT count(*) FROM "
"qiita.filepath")[0]
exp = set(range(1, count + 1))
obs = get_accessible_filepath_ids(User('[email protected]'))
self.assertEqual(obs, exp)
开发者ID:aashish24,项目名称:qiita,代码行数:60,代码来源:test_meta_util.py
示例9: _build_study_info
def _build_study_info(studytype, user=None):
"""builds list of namedtuples for study listings"""
if studytype == "private":
studylist = user.user_studies
elif studytype == "shared":
studylist = user.shared_studies
elif studytype == "public":
studylist = Study.get_by_status('public')
else:
raise IncompetentQiitaDeveloperError("Must use private, shared, "
"or public!")
StudyTuple = namedtuple('StudyInfo', 'id title meta_complete '
'num_samples_collected shared num_raw_data pi '
'pmids owner status')
infolist = []
for s_id in studylist:
study = Study(s_id)
status = study.status
# Just passing the email address as the name here, since
# name is not a required field in qiita.qiita_user
owner = study_person_linkifier((study.owner, study.owner))
info = study.info
PI = StudyPerson(info['principal_investigator_id'])
PI = study_person_linkifier((PI.email, PI.name))
pmids = ", ".join([pubmed_linkifier([pmid])
for pmid in study.pmids])
shared = _get_shared_links_for_study(study)
infolist.append(StudyTuple(study.id, study.title,
info["metadata_complete"],
info["number_samples_collected"],
shared, len(study.raw_data()),
PI, pmids, owner, status))
return infolist
开发者ID:jwdebelius,项目名称:qiita,代码行数:35,代码来源:listing_handlers.py
示例10: delete_study
def delete_study(self, study, user, callback):
"""Delete study
Parameters
----------
study : Study
The current study object
user : User
The current user object
callback : function
The callback function to call with the results once the processing
is done and it fails
"""
study_id = study.id
study_title = study.title
try:
Study.delete(study_id)
# redirecting to list but also passing messages
# we need to change the request.method to GET
self.request.method = 'GET'
ListStudiesHandler(self.application, self.request)._execute(
[t(self.request) for t in self.application.transforms],
message=('Study "%s" has been deleted' % study_title),
msg_level='success')
except Exception as e:
msg = "Couldn't remove study %d: %s" % (study_id, str(e))
msg_level = "danger"
callback((msg, msg_level, 'study_information_tab', None, None))
开发者ID:adamrp,项目名称:qiita,代码行数:31,代码来源:description_handlers.py
示例11: test_build_study_info_new_study
def test_build_study_info_new_study(self):
ProcessedData(1).status = 'public'
info = {
'timeseries_type_id': 1,
'portal_type_id': 1,
'lab_person_id': None,
'principal_investigator_id': 3,
'metadata_complete': False,
'mixs_compliant': True,
'study_description': 'desc',
'study_alias': 'alias',
'study_abstract': 'abstract'}
user = User('[email protected]')
Study.create(user, 'test_study_1', efo=[1], info=info)
obs = _build_study_info(user)
self.exp.append({
'status': 'sandbox',
'checkbox': "<input type='checkbox' value='2' />",
'abstract': 'abstract',
'meta_complete': "<span class='glyphicon glyphicon-remove'>"
"</span>",
'title': '<a href=\'#\' data-toggle=\'modal\' data-target=\'#study'
'-abstract-modal\' onclick=\'fillAbstract("studies-table"'
', 1)\'><span class=\'glyphicon glyphicon-file\' aria-hidden=\''
'true\'></span></a> | <a href=\'/study/description/2\' id=\''
'study1-title\'>test_study_1</a>',
'num_raw_data': 0, 'id': 2, 'num_samples': '0',
'shared': "<span id='shared_html_2'></span><br/><a class='btn "
"btn-primary btn-xs' data-toggle='modal' data-target='#share-study"
"-modal-view' onclick='modify_sharing(2);'>Modify</a>",
'pmid': '', 'pi':
'<a target="_blank" href="mailto:[email protected]">PIDude</a>'})
self.assertEqual(obs, self.exp)
开发者ID:zonca,项目名称:qiita,代码行数:34,代码来源:test_study_handlers.py
示例12: test_remove_portal
def test_remove_portal(self):
Portal.create("NEWPORTAL", "SOMEDESC")
# Select some samples on a default analysis
qiita_config.portal = "NEWPORTAL"
a = Analysis(User("[email protected]").default_analysis)
a.add_samples({1: ['1.SKB8.640193', '1.SKD5.640186']})
Portal.delete("NEWPORTAL")
obs = self.conn_handler.execute_fetchall(
"SELECT * FROM qiita.portal_type")
exp = [[1, 'QIITA', 'QIITA portal. Access to all data stored '
'in database.'],
[2, 'EMP', 'EMP portal']]
self.assertItemsEqual(obs, exp)
obs = self.conn_handler.execute_fetchall(
"SELECT * FROM qiita.analysis_portal")
exp = [[1, 1], [2, 1], [3, 1], [4, 1], [5, 1], [6, 1], [7, 2], [8, 2],
[9, 2], [10, 2]]
self.assertItemsEqual(obs, exp)
with self.assertRaises(QiitaDBLookupError):
Portal.delete("NOEXISTPORTAL")
with self.assertRaises(QiitaDBError):
Portal.delete("QIITA")
Portal.create("NEWPORTAL2", "SOMEDESC")
# Add analysis to this new portal and make sure error raised
qiita_config.portal = "NEWPORTAL2"
Analysis.create(User("[email protected]"), "newportal analysis", "desc")
qiita_config.portal = "QIITA"
with self.assertRaises(QiitaDBError):
Portal.delete("NEWPORTAL2")
# Add study to this new portal and make sure error raised
info = {
"timeseries_type_id": 1,
"metadata_complete": True,
"mixs_compliant": True,
"number_samples_collected": 25,
"number_samples_promised": 28,
"study_alias": "FCM",
"study_description": "Microbiome of people who eat nothing but "
"fried chicken",
"study_abstract": "Exploring how a high fat diet changes the "
"gut microbiome",
"emp_person_id": StudyPerson(2),
"principal_investigator_id": StudyPerson(3),
"lab_person_id": StudyPerson(1)
}
Portal.create("NEWPORTAL3", "SOMEDESC")
qiita_config.portal = "NEWPORTAL3"
Study.create(User('[email protected]'), "Fried chicken microbiome",
[1], info)
qiita_config.portal = "QIITA"
with self.assertRaises(QiitaDBError):
Portal.delete("NEWPORTAL3")
开发者ID:adamrp,项目名称:qiita,代码行数:57,代码来源:test_portal.py
示例13: test_get_edit_utf8
def test_get_edit_utf8(self):
"""Make sure the page loads when utf8 characters are present"""
study = Study(1)
study.title = "TEST_ø"
study.alias = "TEST_ø"
study.description = "TEST_ø"
study.abstract = "TEST_ø"
response = self.get('/study/edit/1')
self.assertEqual(response.code, 200)
self.assertNotEqual(str(response.body), "")
开发者ID:mivamo1214,项目名称:qiita,代码行数:10,代码来源:test_study_handlers.py
示例14: test_delete
def test_delete(self):
title = "Fried chicken microbiome"
study = Study.create(User('[email protected]'), title, [1], self.info)
study.delete(study.id)
self.assertFalse(study.exists(title))
with self.assertRaises(QiitaDBError):
Study.delete(1)
with self.assertRaises(QiitaDBUnknownIDError):
Study.delete(41)
开发者ID:aashish24,项目名称:qiita,代码行数:11,代码来源:test_study.py
示例15: test_download_raw_data
def test_download_raw_data(self):
# it's possible that one of the tests is deleting the raw data
# so we will make sure that the files exists so this test passes
study = Study(1)
all_files = [x['fp'] for a in study.artifacts()
for x in a.filepaths]
for fp in all_files:
if not exists(fp):
with open(fp, 'w') as f:
f.write('')
response = self.get('/download_raw_data/1')
self.assertEqual(response.code, 200)
exp = (
'2125826711 58 /protected/raw_data/1_s_G1_L001_sequences.fastq.gz '
'raw_data/1_s_G1_L001_sequences.fastq.gz\n'
'2125826711 58 /protected/raw_data/'
'1_s_G1_L001_sequences_barcodes.fastq.gz '
'raw_data/1_s_G1_L001_sequences_barcodes.fastq.gz\n'
'- [0-9]* /protected/templates/1_prep_1_qiime_[0-9]*-[0-9]*.txt '
'mapping_files/1_mapping_file.txt\n'
'1756512010 1093210 /protected/BIOM/7/biom_table.biom '
'BIOM/7/biom_table.biom\n'
'- [0-9]* /protected/templates/1_prep_2_qiime_[0-9]*-[0-9]*.txt '
'mapping_files/7_mapping_file.txt\n')
self.assertRegex(response.body.decode('ascii'), exp)
response = self.get('/download_study_bioms/200')
self.assertEqual(response.code, 405)
# changing user so we can test the failures
BaseHandler.get_current_user = Mock(
return_value=User("[email protected]"))
response = self.get('/download_study_bioms/1')
self.assertEqual(response.code, 405)
# now, let's make sure that when artifacts are public AND the
# public_raw_download any user can download the files
study.public_raw_download = True
BaseHandler.get_current_user = Mock(
return_value=User("[email protected]"))
response = self.get('/download_study_bioms/1')
self.assertEqual(response.code, 405)
# 7 is an uploaded biom, which should now be available but as it's a
# biom, only the prep info file will be retrieved
Artifact(7).visibility = 'public'
BaseHandler.get_current_user = Mock(
return_value=User("[email protected]"))
response = self.get('/download_study_bioms/1')
self.assertEqual(response.code, 200)
exp = (
'- [0-9]* /protected/templates/1_prep_2_qiime_[0-9]*-[0-9]*.txt '
'mapping_files/7_mapping_file.txt\n')
self.assertRegex(response.body.decode('ascii'), exp)
开发者ID:antgonza,项目名称:qiita,代码行数:54,代码来源:test_download.py
示例16: test_get_valid_one_arg
def test_get_valid_one_arg(self):
df = Study(1).sample_template.to_dataframe()
df = df[['ph', 'country']]
df = {idx: [row['country']] for idx, row in df.iterrows()}
exp = {'header': ['country'], 'samples': df}
response = self.get('/api/v1/study/1/samples/categories=country',
headers=self.headers)
self.assertEqual(response.code, 200)
obs = json_decode(response.body)
self.assertEqual(obs, exp)
开发者ID:antgonza,项目名称:qiita,代码行数:11,代码来源:test_study_samples.py
示例17: study_tags_patch_request
def study_tags_patch_request(user_id, study_id,
req_op, req_path, req_value=None, req_from=None):
"""Modifies an attribute of the artifact
Parameters
----------
user_id : int
The id of the user performing the patch operation
study_id : int
The id of the study on which we will be performing the patch operation
req_op : str
The operation to perform on the study
req_path : str
The attribute to patch
req_value : str, optional
The value that needs to be modified
req_from : str, optional
The original path of the element
Returns
-------
dict of {str, str}
A dictionary with the following keys:
- status: str, whether if the request is successful or not
- message: str, if the request is unsuccessful, a human readable error
"""
if req_op == 'replace':
req_path = [v for v in req_path.split('/') if v]
if len(req_path) != 1:
return {'status': 'error',
'message': 'Incorrect path parameter'}
attribute = req_path[0]
# Check if the user actually has access to the study
access_error = check_access(study_id, user_id)
if access_error:
return access_error
study = Study(study_id)
if attribute == 'tags':
message = study.update_tags(User(user_id), req_value)
return {'status': 'success',
'message': message}
else:
# We don't understand the attribute so return an error
return {'status': 'error',
'message': 'Attribute "%s" not found. '
'Please, check the path parameter' % attribute}
else:
return {'status': 'error',
'message': 'Operation "%s" not supported. '
'Current supported operations: replace' % req_op}
开发者ID:josenavas,项目名称:QiiTa,代码行数:53,代码来源:studies.py
示例18: _get_accessible_raw_data
def _get_accessible_raw_data(user):
"""Retrieves a tuple of raw_data_id and one study title for that
raw_data
"""
d = {}
accessible_studies = user.user_studies.union(user.shared_studies)
for sid in accessible_studies:
study = Study(sid)
study_title = study.title
for rdid in study.raw_data():
d[int(rdid)] = study_title
return d
开发者ID:MarkBruns,项目名称:qiita,代码行数:12,代码来源:prep_template_tab.py
示例19: filter_by_processed_data
def filter_by_processed_data(self, datatypes=None):
"""Filters results to what is available in each processed data
Parameters
----------
datatypes : list of str, optional
Datatypes to selectively return. Default all datatypes available
Returns
-------
study_proc_ids : dict of dicts of lists
Processed data ids with samples for each study, in the format
{study_id: {datatype: [proc_id, proc_id, ...], ...}, ...}
proc_data_samples : dict of lists
Samples available in each processed data id, in the format
{proc_data_id: [samp_id1, samp_id2, ...], ...}
samples_meta : dict of pandas DataFrames
metadata for the found samples, keyed by study. Pandas indexed on
sample_id, column headers are the metadata categories searched
over
"""
with TRN:
if datatypes is not None:
# convert to set for easy lookups
datatypes = set(datatypes)
study_proc_ids = {}
proc_data_samples = {}
samples_meta = {}
headers = {c: val for c, val in enumerate(self.meta_headers)}
for study_id, study_meta in viewitems(self.results):
# add metadata to dataframe and dict
# use from_dict because pandas doesn't like cursor objects
samples_meta[study_id] = pd.DataFrame.from_dict(
{s[0]: s[1:] for s in study_meta}, orient='index')
samples_meta[study_id].rename(columns=headers, inplace=True)
# set up study-based data needed
study = Study(study_id)
study_sample_ids = {s[0] for s in study_meta}
study_proc_ids[study_id] = defaultdict(list)
for proc_data_id in study.processed_data():
proc_data = ProcessedData(proc_data_id)
datatype = proc_data.data_type()
# skip processed data if it doesn't fit the given datatypes
if datatypes is not None and datatype not in datatypes:
continue
filter_samps = proc_data.samples.intersection(
study_sample_ids)
if filter_samps:
proc_data_samples[proc_data_id] = sorted(filter_samps)
study_proc_ids[study_id][datatype].append(proc_data_id)
return study_proc_ids, proc_data_samples, samples_meta
开发者ID:adamrp,项目名称:qiita,代码行数:52,代码来源:search.py
示例20: test_delete
def test_delete(self):
title = "Fried chicken microbiome"
# the study is assigned to investigation 1
study = Study.create(User("[email protected]"), title, [1], self.info, Investigation(1))
# sharing with other user
study.share(User("[email protected]"))
study.delete(study.id)
self.assertFalse(study.exists(title))
with self.assertRaises(QiitaDBError):
Study.delete(1)
with self.assertRaises(QiitaDBUnknownIDError):
Study.delete(41)
开发者ID:DarcyMyers,项目名称:qiita,代码行数:14,代码来源:test_study.py
注:本文中的qiita_db.study.Study类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论