my code doesn't give me desired output:
import re f = open("cub.txt") cub = f.read() f.close() r = re.compile("([a-a]{1})\s([a-a,'a'])\s([-+]?[0-9]*\.?[0-9]*)") matches = re.findall(r, cub) print (matches)
contents of cub text file :
uuu f 0.45 16.8 ( 45768) ucu s 0.18 14.1 ( 38296) uau y 0.40 11.8 ( 32211) ugu c 0.40 8.8 ( 23851) uuc f 0.55 20.2 ( 54936) ucc s 0.20 15.7 ( 42683) uac y 0.60 17.8 ( 48342) ugc c 0.60 13.3 ( 36075) uua l 0.08 7.0 ( 19129) uca s 0.15 11.6 ( 31442) uaa * 0.41 0.8 ( 2046) uga * 0.59 1.1 ( 2986) uug l 0.13 12.6 ( 34146) ucg s 0.07 5.2 ( 14079) uag q 0.01 0.5 ( 1281) ugg w 1.00 12.0 ( 32616)
cuu l 0.13 12.4 ( 33708) ccu p 0.27 15.3 ( 41672) cau h 0.40 9.5 ( 25885) cgu r 0.10 5.4 ( 14682) cuc l 0.18 16.8 ( 45753) ccc p 0.30 17.0 ( 46097) cac h 0.60 14.4 ( 39081) cgc r 0.19 10.4 ( 28305) cua l 0.06 6.0 ( 16211) cca p 0.28 15.7 ( 42767) caa q 0.27 12.1 ( 33018) cga r 0.10 5.3 ( 14339) cug l 0.41 38.5 (104699) ccg p 0.14 7.8 ( 21091) cag q 0.72 32.6 ( 88743) cgg r 0.18 9.7 ( 26453)
auu 0.35 16.8 ( 45653) acu t 0.25 13.3 ( 36078) aau n 0.43 16.9 ( 46039) agu s 0.14 11.2 ( 30390) auc 0.46 22.0 ( 59906) acc t 0.31 16.5 ( 44951) aac n 0.57 22.5 ( 61099) agc s 0.26 20.2 ( 54867) aua 0.18 8.8 ( 23805) aca t 0.30 16.1 ( 43884) aaa k 0.44 27.3 ( 74256) aga r 0.22 12.2 ( 33289) aug m 1.00 23.2 ( 62972) acg t 0.14 7.7 ( 20943) aag k 0.56 34.3 ( 93393) agg r 0.21 11.7 ( 31945)
guu v 0.21 13.1 ( 35593) gcu 0.29 20.8 ( 56528) gau d 0.50 25.3 ( 68683) ggu g 0.18 11.4 ( 30898) guc v 0.22 13.6 ( 36917) gcc 0.32 22.9 ( 62202) gac d 0.50 24.9 ( 67783) ggc g 0.31 19.7 ( 53631) gua v 0.12 7.8 ( 21277) gca 0.26 19.0 ( 51713) gaa e 0.43 31.0 ( 84178) gga g 0.27 17.6 ( 47765) gug v 0.45 28.2 ( 76624) gcg 0.13 9.1 ( 24768) gag e 0.57 40.9 (111123) ggg g 0.25 16.0 ( 43513)
desired output:
{'a': {'gca': '0.26', 'gcc': '0.32', 'gcu': '0.29', 'gcg': '0.13'}, 'c': {'ugc': '0.60', 'ugu': '0.40'}, 'e': {'gag': '0.57', 'gaa': '0.43'}, 'd': {'gau': '0.50', 'gac': '0.50'}, 'g': {'ggu': '0.18', 'ggg': '0.25', 'gga': '0.27', 'ggc': '0.31'}, 'f': {'uuu': '0.45', 'uuc': '0.55'}, 'i': {'aua': '0.18', 'auc': '0.46', 'auu': '0.35'}, 'h': {'cac': '0.60', 'cau': '0.40'}, 'k': {'aag': '0.56', 'aaa': '0.44'}, '*': {'uaa': '0.41', 'uga': '0.59'}, 'm': {'aug': '1.00'}, 'l': {'cuu': '0.13', 'cug': '0.41', 'cuc': '0.18', 'cua': '0.06', 'uug': '0.13', 'uua': '0.08'}, 'n': {'aau': '0.43', 'aac': '0.57'}, 'q': {'caa': '0.27', 'cag': '0.72', 'uag': '0.01'}, 'p': {'ccu': '0.27', 'ccg': '0.14', 'cca': '0.28', 'ccc': '0.30'}, 's': {'ucu': '0.18', 'agc': '0.26', 'ucg': '0.07', 'ucc': '0.20', 'uca': '0.15', 'agu': '0.14'}, 'r': {'cga': '0.10', 'cgc': '0.19', 'aga': '0.22', 'agg': '0.21', 'cgg': '0.18', 'cgu': '0.10'}, 't': {'acc': '0.31', 'aca': '0.30', 'acg': '0.14', 'acu': '0.25'}, 'w': {'ugg': '1.00'}, 'v': {'guc': '0.22', 'gua': '0.12', 'gug': '0.45', 'guu': '0.21'}, 'y': {'uac': '0.60', 'uau': '0.40'}}
# read in file single line. open('cub.txt', 'r') myfile: data=myfile.read().replace('\n', '') # split individual items. data = data.split(" ") result = {} index, item in enumerate(data): # check if item codon. if item.isalpha() , len(item) == 3: # key next item after codon. key = data[index+1] # makes internal hash if not done already, , inserts result. if key not in result: result[key] = {} result[key][item] = data[index+2] print(result)
keep in mind not maintain order (since you're wanting result in hashes (which don't maintain order).
to maintain order can use ordereddict
:
from collections import ordereddict # read in file single line. open('cub.txt', 'r') myfile: data=myfile.read().replace('\n', '') # split individual items. data = data.split(" ") result = {} index, item in enumerate(data): # check if item codon. if item.isalpha() , len(item) == 3: # key next item after codon. key = data[index+1] # makes internal hash if not done already, , inserts result. if key not in result: result[key] = {} result[key][item] = data[index+2] # order keys. ordered_result = ordereddict(sorted(result.items(), key=lambda t: t[0])) # order internal hashes. key, value in ordered_result.items(): ordered_result[key] = ordereddict(sorted(value.items(), key=lambda t: t[0])) print(ordered_result)
Comments
Post a Comment