Mercurial > repos > pablocarb > synbiodesign
annotate toolOptBioDes.py @ 26:fbf2e5072b32 draft
planemo upload commit c74b3ff2329f69ac7b309cc7d9bdf7b9d78106fb-dirty
author | pablocarb |
---|---|
date | Fri, 05 Jul 2019 17:29:50 -0400 |
parents | 8f42eba7e2eb |
children | 0ad6fda90f41 |
rev | line source |
---|---|
2
856bd14e6e96
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
diff
changeset
|
1 #!/usr/bin/env python3 |
856bd14e6e96
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
diff
changeset
|
2 # -*- coding: utf-8 -*- |
856bd14e6e96
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
diff
changeset
|
3 """ |
856bd14e6e96
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
diff
changeset
|
4 Created on Mar 19 |
856bd14e6e96
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
diff
changeset
|
5 |
856bd14e6e96
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
diff
changeset
|
6 @author: Pablo Carbonell |
856bd14e6e96
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
diff
changeset
|
7 @description: Query OptBioDes: optimal synbio design. |
856bd14e6e96
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
diff
changeset
|
8 |
856bd14e6e96
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
diff
changeset
|
9 """ |
856bd14e6e96
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
diff
changeset
|
10 import requests |
856bd14e6e96
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
diff
changeset
|
11 import argparse |
856bd14e6e96
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
diff
changeset
|
12 import csv |
856bd14e6e96
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
diff
changeset
|
13 import os |
856bd14e6e96
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
diff
changeset
|
14 import json |
856bd14e6e96
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
diff
changeset
|
15 |
856bd14e6e96
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
diff
changeset
|
16 def arguments(): |
856bd14e6e96
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
diff
changeset
|
17 parser = argparse.ArgumentParser(description='toolOptBioDes: Optimal SynBio Design. Pablo Carbonell, SYNBIOCHEM, 2019') |
4
6dbb43bdf2f4
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
3
diff
changeset
|
18 parser.add_argument('size', |
6dbb43bdf2f4
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
3
diff
changeset
|
19 help='Library size.') |
2
856bd14e6e96
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
diff
changeset
|
20 parser.add_argument('outfile', |
856bd14e6e96
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
diff
changeset
|
21 help='Output csv design file.') |
856bd14e6e96
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
diff
changeset
|
22 parser.add_argument('diagfile', |
856bd14e6e96
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
diff
changeset
|
23 help='Output csv diagnostics file.') |
24
8f42eba7e2eb
planemo upload commit 2414e76bee8adbe48fee12b14b13a743a03b9748-dirty
pablocarb
parents:
10
diff
changeset
|
24 parser.add_argument('-infile', default=None, |
8f42eba7e2eb
planemo upload commit 2414e76bee8adbe48fee12b14b13a743a03b9748-dirty
pablocarb
parents:
10
diff
changeset
|
25 help='Input csv file (DoE specifications sheet).') |
8f42eba7e2eb
planemo upload commit 2414e76bee8adbe48fee12b14b13a743a03b9748-dirty
pablocarb
parents:
10
diff
changeset
|
26 parser.add_argument('-partsfile', default=None, |
8f42eba7e2eb
planemo upload commit 2414e76bee8adbe48fee12b14b13a743a03b9748-dirty
pablocarb
parents:
10
diff
changeset
|
27 help='Input csv file (Regulartory parts).') |
8f42eba7e2eb
planemo upload commit 2414e76bee8adbe48fee12b14b13a743a03b9748-dirty
pablocarb
parents:
10
diff
changeset
|
28 parser.add_argument('-genesfile', default=None, |
8f42eba7e2eb
planemo upload commit 2414e76bee8adbe48fee12b14b13a743a03b9748-dirty
pablocarb
parents:
10
diff
changeset
|
29 help='Input csv file (Genetic parts).') |
8f42eba7e2eb
planemo upload commit 2414e76bee8adbe48fee12b14b13a743a03b9748-dirty
pablocarb
parents:
10
diff
changeset
|
30 parser.add_argument('-sbolOut', default=None, |
8f42eba7e2eb
planemo upload commit 2414e76bee8adbe48fee12b14b13a743a03b9748-dirty
pablocarb
parents:
10
diff
changeset
|
31 help='Output design in SBOL format.') |
10
6a1fbacdfaf5
planemo upload commit b97a4df6e4e3a6f3d14f18f3f30c47eb5657a362
pablocarb
parents:
9
diff
changeset
|
32 parser.add_argument('-server', default='http://optbiodes.synbiochem.co.uk/REST', |
2
856bd14e6e96
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
diff
changeset
|
33 help='OptBioDes server.') |
856bd14e6e96
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
diff
changeset
|
34 return parser |
856bd14e6e96
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
diff
changeset
|
35 |
856bd14e6e96
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
diff
changeset
|
36 def testApp(url): |
856bd14e6e96
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
diff
changeset
|
37 r = requests.get( url ) |
856bd14e6e96
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
diff
changeset
|
38 res = json.loads( r.content.decode('utf-8') ) |
856bd14e6e96
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
diff
changeset
|
39 print( res ) |
856bd14e6e96
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
diff
changeset
|
40 |
4
6dbb43bdf2f4
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
3
diff
changeset
|
41 def sheetUpload(doefile, size, outfile, diagfile, url): |
2
856bd14e6e96
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
diff
changeset
|
42 files = { 'file': open(doefile, 'rb' ) } |
8
6572347b3e1a
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
6
diff
changeset
|
43 values = {'size': int(size), 'format': 'csv'} |
2
856bd14e6e96
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
diff
changeset
|
44 r = requests.post( os.path.join(url, 'Query' ), files=files, data=values ) |
856bd14e6e96
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
diff
changeset
|
45 res = json.loads( r.content.decode('utf-8') ) |
856bd14e6e96
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
diff
changeset
|
46 M = res['data']['M'] |
856bd14e6e96
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
diff
changeset
|
47 with open(outfile, 'w') as h: |
856bd14e6e96
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
diff
changeset
|
48 cw = csv.writer(h) |
856bd14e6e96
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
diff
changeset
|
49 cw.writerow( res['data']['names'] ) |
856bd14e6e96
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
diff
changeset
|
50 for row in M: |
856bd14e6e96
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
diff
changeset
|
51 cw.writerow( row ) |
9
f9aef3df1fc8
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
8
diff
changeset
|
52 with open(diagfile, 'w') as h: |
8
6572347b3e1a
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
6
diff
changeset
|
53 cw = csv.writer(h) |
6572347b3e1a
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
6
diff
changeset
|
54 cw.writerow( ['Size', 'Efficiency'] ) |
6572347b3e1a
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
6
diff
changeset
|
55 cw.writerow( [res['data']['libsize'], res['data']['J']] ) |
2
856bd14e6e96
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
diff
changeset
|
56 print( 'Size:', res['data']['libsize'], 'Efficiency:', res['data']['J'] ) |
856bd14e6e96
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
diff
changeset
|
57 |
24
8f42eba7e2eb
planemo upload commit 2414e76bee8adbe48fee12b14b13a743a03b9748-dirty
pablocarb
parents:
10
diff
changeset
|
58 def partsUploadSbol( partsfile, genesfile, size, outfile, diagfile, sbolOut, server ): |
8f42eba7e2eb
planemo upload commit 2414e76bee8adbe48fee12b14b13a743a03b9748-dirty
pablocarb
parents:
10
diff
changeset
|
59 files = { |
8f42eba7e2eb
planemo upload commit 2414e76bee8adbe48fee12b14b13a743a03b9748-dirty
pablocarb
parents:
10
diff
changeset
|
60 'parts': open(partsfile, 'rb' ), |
8f42eba7e2eb
planemo upload commit 2414e76bee8adbe48fee12b14b13a743a03b9748-dirty
pablocarb
parents:
10
diff
changeset
|
61 'genes': open(genesfile, 'rb') |
8f42eba7e2eb
planemo upload commit 2414e76bee8adbe48fee12b14b13a743a03b9748-dirty
pablocarb
parents:
10
diff
changeset
|
62 } |
8f42eba7e2eb
planemo upload commit 2414e76bee8adbe48fee12b14b13a743a03b9748-dirty
pablocarb
parents:
10
diff
changeset
|
63 values = {'size': size} |
8f42eba7e2eb
planemo upload commit 2414e76bee8adbe48fee12b14b13a743a03b9748-dirty
pablocarb
parents:
10
diff
changeset
|
64 r = requests.post( os.path.join(url, 'Parts' ), files=files, data=values ) |
8f42eba7e2eb
planemo upload commit 2414e76bee8adbe48fee12b14b13a743a03b9748-dirty
pablocarb
parents:
10
diff
changeset
|
65 res = json.loads( r.content.decode('utf-8') ) |
8f42eba7e2eb
planemo upload commit 2414e76bee8adbe48fee12b14b13a743a03b9748-dirty
pablocarb
parents:
10
diff
changeset
|
66 M = res['data']['M'] |
8f42eba7e2eb
planemo upload commit 2414e76bee8adbe48fee12b14b13a743a03b9748-dirty
pablocarb
parents:
10
diff
changeset
|
67 with open(outfile, 'w') as h: |
8f42eba7e2eb
planemo upload commit 2414e76bee8adbe48fee12b14b13a743a03b9748-dirty
pablocarb
parents:
10
diff
changeset
|
68 cw = csv.writer(h) |
8f42eba7e2eb
planemo upload commit 2414e76bee8adbe48fee12b14b13a743a03b9748-dirty
pablocarb
parents:
10
diff
changeset
|
69 cw.writerow( res['data']['names'] ) |
8f42eba7e2eb
planemo upload commit 2414e76bee8adbe48fee12b14b13a743a03b9748-dirty
pablocarb
parents:
10
diff
changeset
|
70 for row in M: |
8f42eba7e2eb
planemo upload commit 2414e76bee8adbe48fee12b14b13a743a03b9748-dirty
pablocarb
parents:
10
diff
changeset
|
71 cw.writerow( row ) |
8f42eba7e2eb
planemo upload commit 2414e76bee8adbe48fee12b14b13a743a03b9748-dirty
pablocarb
parents:
10
diff
changeset
|
72 with open(diagfile, 'w') as h: |
8f42eba7e2eb
planemo upload commit 2414e76bee8adbe48fee12b14b13a743a03b9748-dirty
pablocarb
parents:
10
diff
changeset
|
73 cw = csv.writer(h) |
8f42eba7e2eb
planemo upload commit 2414e76bee8adbe48fee12b14b13a743a03b9748-dirty
pablocarb
parents:
10
diff
changeset
|
74 cw.writerow( ['Size', 'Efficiency'] ) |
8f42eba7e2eb
planemo upload commit 2414e76bee8adbe48fee12b14b13a743a03b9748-dirty
pablocarb
parents:
10
diff
changeset
|
75 cw.writerow( [res['data']['libsize'], res['data']['J']] ) |
8f42eba7e2eb
planemo upload commit 2414e76bee8adbe48fee12b14b13a743a03b9748-dirty
pablocarb
parents:
10
diff
changeset
|
76 open(sbolOut, 'w').write(res['data']['sbol']) |
8f42eba7e2eb
planemo upload commit 2414e76bee8adbe48fee12b14b13a743a03b9748-dirty
pablocarb
parents:
10
diff
changeset
|
77 print( 'Size:', res['data']['libsize'], 'Efficiency:', res['data']['J'] ) |
2
856bd14e6e96
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
diff
changeset
|
78 |
856bd14e6e96
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
diff
changeset
|
79 |
856bd14e6e96
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
diff
changeset
|
80 if __name__ == "__main__": |
856bd14e6e96
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
diff
changeset
|
81 parser = arguments() |
856bd14e6e96
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
diff
changeset
|
82 arg = parser.parse_args() |
856bd14e6e96
planemo upload commit 6a252d04f4b2f79606ab6679b6a91f957e33da7b-dirty
pablocarb
parents:
diff
changeset
|
83 assert os.path.exists(arg.infile) |
24
8f42eba7e2eb
planemo upload commit 2414e76bee8adbe48fee12b14b13a743a03b9748-dirty
pablocarb
parents:
10
diff
changeset
|
84 if arg.sbolOut is None: |
8f42eba7e2eb
planemo upload commit 2414e76bee8adbe48fee12b14b13a743a03b9748-dirty
pablocarb
parents:
10
diff
changeset
|
85 sheetUpload( arg.infile, arg.size, arg.outfile, arg.diagfile, arg.server ) |
8f42eba7e2eb
planemo upload commit 2414e76bee8adbe48fee12b14b13a743a03b9748-dirty
pablocarb
parents:
10
diff
changeset
|
86 else: |
8f42eba7e2eb
planemo upload commit 2414e76bee8adbe48fee12b14b13a743a03b9748-dirty
pablocarb
parents:
10
diff
changeset
|
87 partsUploadSbol( arg.partsfile, arg.genesfile, arg.size, arg.outfile, arg.diagfile, arg.sbolOut, arg.server ) |