1 | """ |
---|
2 | Populates the active server instance with various test datasets |
---|
3 | """ |
---|
4 | import random |
---|
5 | from genetrack import conf, logger |
---|
6 | from genetrack.server.web.models import * |
---|
7 | from genetrack.server.web import authorize, status |
---|
8 | |
---|
9 | from django.contrib.auth.models import User |
---|
10 | |
---|
11 | # the user used to populate the data |
---|
12 | user = User.objects.get(email='admin') |
---|
13 | |
---|
14 | # potential project names |
---|
15 | project_names = [ |
---|
16 | 'Mouse project HBB %s', |
---|
17 | 'Yeast mutant RAV %s', |
---|
18 | 'Yeast mutant RAP2 %s', |
---|
19 | 'Fly data DR2%s', |
---|
20 | 'Human HELA 16 %s', |
---|
21 | 'Human HELA 17 %s', |
---|
22 | ] |
---|
23 | |
---|
24 | # generates projects |
---|
25 | |
---|
26 | def generate(n=5): |
---|
27 | |
---|
28 | projects = [] |
---|
29 | for i in range(1, n): |
---|
30 | name = random.choice(project_names) % i |
---|
31 | info = 'some info=%s' % i |
---|
32 | project = authorize.create_project(user=user, name=name, info=info) |
---|
33 | projects.append(project) |
---|
34 | logger.info('creating %s' % name) |
---|
35 | |
---|
36 | # data names |
---|
37 | data_names = ( 'short-good-input.gtrack', 'short-data.bed') |
---|
38 | |
---|
39 | # visualization names |
---|
40 | track_names = ( 'differential expression', 'HELA subtract', 'Default track') |
---|
41 | |
---|
42 | |
---|
43 | # a subset of projects get data, visualization and results added to them |
---|
44 | subset = projects[-1:] |
---|
45 | for project in subset: |
---|
46 | |
---|
47 | # create some tracks for this project |
---|
48 | for tname in track_names: |
---|
49 | json = dict() |
---|
50 | track = authorize.create_track(user=user, pid=project.id, name=tname, json=json ) |
---|
51 | logger.info('creating track %s' % track.name) |
---|
52 | |
---|
53 | assert (project.track_count(), len(track_names)) |
---|
54 | |
---|
55 | # upload some data names |
---|
56 | for name in data_names: |
---|
57 | logger.info('uploading data %s' % name) |
---|
58 | stream = File( open(conf.testdata(name)) ) |
---|
59 | data = authorize.create_data(user=user, pid=project.id, stream=stream, name=name, info='test data') |
---|
60 | |
---|
61 | # create some results |
---|
62 | logger.info('adding results content and image') |
---|
63 | stream1 = File( open(conf.testdata('short-results.txt')) ) |
---|
64 | image1 = File( open(conf.testdata('readcounts.png'),'rb') ) |
---|
65 | result1 = authorize.create_result( user=user, data=data, content=stream1, image=image1) |
---|
66 | |
---|
67 | image2 = File( open(conf.testdata('shift.png'), 'rb') ) |
---|
68 | result2 = authorize.create_result( user=user, data=data, content=None, image=image2) |
---|
69 | |
---|
70 | if __name__ == '__main__': |
---|
71 | generate() |
---|
72 | |
---|