| 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 | |
|---|