Skip to content

Commit 8fdc37a

Browse files
Luke TuiteLuke Tuite
authored andcommitted
added mne.py to generate uuids for swcs
1 parent f33ca06 commit 8fdc37a

File tree

5 files changed

+215
-1
lines changed

5 files changed

+215
-1
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Generated by Django 3.2.18 on 2023-06-06 15:44
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('ingest', '0015_swc'),
10+
]
11+
12+
operations = [
13+
migrations.AddField(
14+
model_name='swc',
15+
name='swc_uuid',
16+
field=models.CharField(max_length=1000, null=True),
17+
),
18+
]

ingest/mne.py

Lines changed: 181 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,181 @@
1+
#---------------------------
2+
# Based on this system:
3+
# http://gurno.com/adam/mne/
4+
#---------------------------
5+
class Mne:
6+
def num_to_mne(num):
7+
dataa= [
8+
"zip", "ace", "act", "add", "age",
9+
"aim", "air", "and", "ant", "ape",
10+
"arm", "art", "ash", "ask", "bad",
11+
"bag", "ban", "bar", "bat", "bay",
12+
"bed", "bet", "bid", "big", "bin",
13+
"bit", "bog", "boo", "box", "bud",
14+
"bug", "bun", "bus", "cab", "can",
15+
"cap", "car", "cat", "cop", "cot",
16+
"cow", "cry", "cub", "cup", "cut",
17+
"day", "den", "did", "die", "dig",
18+
"dim", "dip", "dog", "dry", "dub",
19+
"dud", "dug", "ear", "eat", "eel",
20+
"egg", "elf", "elk", "elm", "end",
21+
"fan", "far", "fat", "fed", "few",
22+
"fib", "fig", "fin", "fit", "fix",
23+
"fly", "fog", "foo", "fox", "fry",
24+
"fun", "gab", "gag", "gap", "gas",
25+
"gel", "gem", "get", "gin", "got",
26+
"gum", "gut", "had", "has", "hat",
27+
"hen", "hex", "hid", "hip", "hit",
28+
"hog", "hop", "hot", "how", "hub",
29+
"hug", "hum", "hut", "ice", "ill",
30+
"imp", "ink", "irk", "jab", "jam",
31+
"jar", "jaw", "jet", "jig", "job",
32+
"jog", "jot", "joy", "key", "kid",
33+
"kin", "kit", "lab", "lag", "lap",
34+
"law", "lax", "lay", "leg", "let",
35+
"lid", "lip", "lit", "lot", "low",
36+
"mad", "map", "mat", "men", "met",
37+
"mix", "mob", "moo", "mop", "mud",
38+
"mug", "nab", "nag", "nap", "net",
39+
"new", "nil", "nip", "nod", "nor",
40+
"now", "nut", "oak", "oat", "odd",
41+
"off", "old", "orb", "out", "owl",
42+
"own", "pad", "pal", "pan", "pay",
43+
"pen", "pet", "pie", "pig", "pin",
44+
"pit", "ply", "pod", "pop", "pot",
45+
"pox", "pry", "pun", "pup", "put",
46+
"rag", "ran", "rat", "raw", "red",
47+
"rid", "rig", "rip", "rot", "row",
48+
"rub", "rug", "run", "rut", "rye",
49+
"sad", "sag", "sap", "sat", "saw",
50+
"say", "set", "shy", "sip", "sit",
51+
"ski", "sky", "sly", "sob", "soy",
52+
"spa", "spy", "tab", "tag", "tan",
53+
"tap", "tar", "tax", "the", "tie",
54+
"tin", "tip", "top", "toy", "try",
55+
"tub", "tug", "use", "van", "vat",
56+
"vex", "vow", "wag", "war", "was",
57+
"wax", "web", "wet", "who", "wig",
58+
"win", "wit", "yes", "yet", "zoo",
59+
"all"]
60+
#-----------------------------------
61+
#store 256 decoded elements in stack
62+
#-----------------------------------
63+
stack=[]
64+
#print("NUM=",num)
65+
q=num
66+
if q < 256 :
67+
q,r = divmod(num,256)
68+
stack.append(r)
69+
#print(q,r)
70+
else:
71+
while q > 255 :
72+
q,r = divmod(q,256)
73+
stack.append(r)
74+
#print(q,r)
75+
#q,r = divmod(q,256)
76+
stack.append(q)
77+
#print(q,r)
78+
#else:
79+
#print(len(stack))
80+
#----------------------
81+
#Finally code the stack
82+
#----------------------
83+
rstring=""
84+
first=True
85+
for element in reversed(stack):
86+
if first:
87+
first=False
88+
else:
89+
rstring=rstring + '-'
90+
rstring=rstring+dataa[element]
91+
#print ("R:",stack)
92+
93+
return rstring
94+
95+
def mne_to_num(mme):
96+
datad= {
97+
"zip" : "000", "ace" : "001", "act" : "002", "add" : "003", "age" : "004",
98+
"aim" : "005", "air" : "006", "and" : "007", "ant" : "008", "ape" : "009",
99+
"arm" : "010", "art" : "011", "ash" : "012", "ask" : "013", "bad" : "014",
100+
"bag" : "015", "ban" : "016", "bar" : "017", "bat" : "018", "bay" : "019",
101+
"bed" : "020", "bet" : "021", "bid" : "022", "big" : "023", "bin" : "024",
102+
"bit" : "025", "bog" : "026", "boo" : "027", "box" : "028", "bud" : "029",
103+
"bug" : "030", "bun" : "031", "bus" : "032", "cab" : "033", "can" : "034",
104+
"cap" : "035", "car" : "036", "cat" : "037", "cop" : "038", "cot" : "039",
105+
"cow" : "040", "cry" : "041", "cub" : "042", "cup" : "043", "cut" : "044",
106+
"day" : "045", "den" : "046", "did" : "047", "die" : "048", "dig" : "049",
107+
"dim" : "050", "dip" : "051", "dog" : "052", "dry" : "053", "dub" : "054",
108+
"dud" : "055", "dug" : "056", "ear" : "057", "eat" : "058", "eel" : "059",
109+
"egg" : "060", "elf" : "061", "elk" : "062", "elm" : "063", "end" : "064",
110+
"fan" : "065", "far" : "066", "fat" : "067", "fed" : "068", "few" : "069",
111+
"fib" : "070", "fig" : "071", "fin" : "072", "fit" : "073", "fix" : "074",
112+
"fly" : "075", "fog" : "076", "foo" : "077", "fox" : "078", "fry" : "079",
113+
"fun" : "080", "gab" : "081", "gag" : "082", "gap" : "083", "gas" : "084",
114+
"gel" : "085", "gem" : "086", "get" : "087", "gin" : "088", "got" : "089",
115+
"gum" : "090", "gut" : "091", "had" : "092", "has" : "093", "hat" : "094",
116+
"hen" : "095", "hex" : "096", "hid" : "097", "hip" : "098", "hit" : "099",
117+
"hog" : "100", "hop" : "101", "hot" : "102", "how" : "103", "hub" : "104",
118+
"hug" : "105", "hum" : "106", "hut" : "107", "ice" : "108", "ill" : "109",
119+
"imp" : "110", "ink" : "111", "irk" : "112", "jab" : "113", "jam" : "114",
120+
"jar" : "115", "jaw" : "116", "jet" : "117", "jig" : "118", "job" : "119",
121+
"jog" : "120", "jot" : "121", "joy" : "122", "key" : "123", "kid" : "124",
122+
"kin" : "125", "kit" : "126", "lab" : "127", "lag" : "128", "lap" : "129",
123+
"law" : "130", "lax" : "131", "lay" : "132", "leg" : "133", "let" : "134",
124+
"lid" : "135", "lip" : "136", "lit" : "137", "lot" : "138", "low" : "139",
125+
"mad" : "140", "map" : "141", "mat" : "142", "men" : "143", "met" : "144",
126+
"mix" : "145", "mob" : "146", "moo" : "147", "mop" : "148", "mud" : "149",
127+
"mug" : "150", "nab" : "151", "nag" : "152", "nap" : "153", "net" : "154",
128+
"new" : "155", "nil" : "156", "nip" : "157", "nod" : "158", "nor" : "159",
129+
"now" : "160", "nut" : "161", "oak" : "162", "oat" : "163", "odd" : "164",
130+
"off" : "165", "old" : "166", "orb" : "167", "out" : "168", "owl" : "169",
131+
"own" : "170", "pad" : "171", "pal" : "172", "pan" : "173", "pay" : "174",
132+
"pen" : "175", "pet" : "176", "pie" : "177", "pig" : "178", "pin" : "179",
133+
"pit" : "180", "ply" : "181", "pod" : "182", "pop" : "183", "pot" : "184",
134+
"pox" : "185", "pry" : "186", "pun" : "187", "pup" : "188", "put" : "189",
135+
"rag" : "190", "ran" : "191", "rat" : "192", "raw" : "193", "red" : "194",
136+
"rid" : "195", "rig" : "196", "rip" : "197", "rot" : "198", "row" : "199",
137+
"rub" : "200", "rug" : "201", "run" : "202", "rut" : "203", "rye" : "204",
138+
"sad" : "205", "sag" : "206", "sap" : "207", "sat" : "208", "saw" : "209",
139+
"say" : "210", "set" : "211", "shy" : "212", "sip" : "213", "sit" : "214",
140+
"ski" : "215", "sky" : "216", "sly" : "217", "sob" : "218", "soy" : "219",
141+
"spa" : "220", "spy" : "221", "tab" : "222", "tag" : "223", "tan" : "224",
142+
"tap" : "225", "tar" : "226", "tax" : "227", "the" : "228", "tie" : "229",
143+
"tin" : "230", "tip" : "231", "top" : "232", "toy" : "233", "try" : "234",
144+
"tub" : "235", "tug" : "236", "use" : "237", "van" : "238", "vat" : "239",
145+
"vex" : "240", "vow" : "241", "wag" : "242", "war" : "243", "was" : "244",
146+
"wax" : "245", "web" : "246", "wet" : "247", "who" : "248", "wig" : "249",
147+
"win" : "250", "wit" : "251", "yes" : "252", "yet" : "253", "zoo" : "254",
148+
"all" : "255" }
149+
stack=[]
150+
values=mme.split('-')
151+
#lookup numbers and put on stack
152+
for i in values:
153+
stack.append(int(datad[i]))
154+
#print("F:",stack)
155+
vsum=0
156+
value=0
157+
for i in range(0,len(stack)-1,1):
158+
#print ("Stack[",i,"]: ", stack[i])
159+
#print("len(stack)-i-1: ",len(stack)-i-1)
160+
vsum=256**(len(stack)-i-1) * stack[i] + vsum
161+
#vsum=value
162+
#if stack[i]==0 :
163+
#else:
164+
# value=(256**(pwr)) * stack[i]
165+
#vsum=vsum+value
166+
#print (i,vsum)
167+
#print("Stack length=",len(stack))
168+
vsum=vsum+stack[len(stack)-1]
169+
#print("Final VSUM: ",vsum)
170+
return(vsum)
171+
172+
def mne_test(self):
173+
#Simple Test code for MNE:
174+
mne = Mne()
175+
testvalues=[5,255,256,257,511,512,513,65535,65536,65537,16777215,16777216,16777217]
176+
for i in testvalues:
177+
vv=self.num_to_mne(i)
178+
print("Coding: ", i, vv)
179+
print("Deconding: ",vv, mne.mne_to_num(vv))
180+
181+

ingest/models.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -448,5 +448,6 @@ class SWC(models.Model):
448448
segmentTags = models.CharField(max_length=256, blank=True, null=True)
449449
proofreadingLevel = models.CharField(max_length=256, blank=True, null=True)
450450
notes = models.TextField()
451+
swc_uuid = models.CharField(max_length = 1000, blank=False, null=True)
451452
data_set = models.ForeignKey(Dataset, on_delete=models.SET_NULL, blank=True, null=True)
452453
sheet = models.ForeignKey(Sheet, on_delete=models.SET_NULL, blank=True, null=True)

ingest/templates/ingest/swc_detail.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ <h3>SWC</h3>
1919
<th>segmentTags</th>
2020
<th>proofreadingLevel</th>
2121
<th>notes</th>
22+
<th>swc_uuid</th>
2223
</tr>
2324
</thead>
2425
<tbody>
@@ -39,6 +40,7 @@ <h3>SWC</h3>
3940
<td>{{ s.segmentTags }}</td>
4041
<td>{{ s.proofreadingLevel }}</td>
4142
<td>{{ s.notes }}</td>
43+
<td>{{s.swc_uuid}}</td>
4244
</tr>
4345
{% endfor %}
4446
</table>

ingest/views.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
from celery.result import AsyncResult
2525

2626
from . import tasks
27+
from .mne import Mne
2728
from .field_list import required_metadata
2829
from .filters import CollectionFilter
2930
from .forms import CollectionForm, ImageMetadataForm, DescriptiveMetadataForm, UploadForm, collection_send
@@ -1625,7 +1626,18 @@ def save_swc_sheet(swcs, sheet, saved_datasets):
16251626
notes = s['notes']
16261627

16271628
swc = SWC(tracingFile=tracingFile, sourceData=sourceData, sourceDataSample=sourceDataSample, sourceDataSubmission=sourceDataSubmission, coordinates=coordinates, coordinatesRegistration=coordinatesRegistration, brainRegion=brainRegion, brainRegionAtlas=brainRegionAtlas, brainRegionAtlasName=brainRegionAtlasName, brainRegionAxonalProjection=brainRegionAxonalProjection, brainRegionDendriticProjection=brainRegionDendriticProjection, neuronType=neuronType, segmentTags=segmentTags, proofreadingLevel=proofreadingLevel, notes=notes, data_set_id=data_set_id,sheet_id=sheet.id)
1628-
swc.save()
1629+
swc_no_uuid = swc.save()
1630+
print(swc_no_uuid.id)
1631+
1632+
1633+
swc_uuid = Mne.num_to_mne(swc_no_uuid.id)
1634+
1635+
print(swc_uuid)
1636+
1637+
this_swc = SWC.objects.get(id=swc_no_uuid.id)
1638+
# this_swc(swc_uuid=swc_uuid)
1639+
# this_swc.save()
1640+
16291641
return True
16301642
except Exception as e:
16311643
print(repr(e))

0 commit comments

Comments
 (0)