Skip to content

Commit 14975ef

Browse files
committed
2 parents e37b609 + d518cb3 commit 14975ef

21 files changed

+703
-84
lines changed

ingest/admin.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@
88
from django.utils.translation import ugettext_lazy
99

1010
from django.db.models import F
11-
from .models import ImageMetadata, Collection, People, Project, DescriptiveMetadata, Contributor, Instrument, Dataset, Specimen, Image, EventsLog, Sheet, ProjectPeople, Funder, Publication
11+
12+
from .models import ImageMetadata, Collection, People, Project, DescriptiveMetadata, Contributor, Instrument, Dataset, Specimen, Image, EventsLog, Sheet, ProjectPeople, Funder, Publication, Consortium, SWC
13+
1214
admin.site.site_header = 'Brain Image Library Admin Portal'
1315
class ContributorsInline(admin.TabularInline):
1416
model = Contributor
@@ -24,6 +26,10 @@ class SpecimensInline(admin.TabularInline):
2426
model = Specimen
2527
class ImagesInline(admin.TabularInline):
2628
model = Image
29+
class SWCSInline(admin.TabularInline):
30+
model = SWC
31+
class ConsortiaInline(admin.TabularInline):
32+
model = Consortium
2733
admin.site.disable_action('delete_selected')
2834
@admin.action(description='Mark selected Collection(s) as Validated and Submitted')
2935
def mark_as_validated_and_submitted(modeladmin, request, queryset):
@@ -115,3 +121,9 @@ class EventsLogAdmin(admin.ModelAdmin):
115121
@admin.register(ProjectPeople)
116122
class ProjectPeople(admin.ModelAdmin):
117123
list_display = ("id", "project_id", "people_id", "is_po", "is_po", "doi_role")
124+
@admin.register(SWC)
125+
class SWC(admin.ModelAdmin):
126+
list_display = ("id", "tracingFile", "sourceData", "sourceDataSample", "sourceDataSubmission", "coordinates", "coordinatesRegistration", "brainRegion", "brainRegionAtlas", "brainRegionAtlasName", "brainRegionAxonalProjection", "brainRegionDendriticProjection", "neuronType","segmentTags","proofreadingLevel", "notes", "sheet", "swc_uuid")
127+
@admin.register(Consortium)
128+
class Consortium(admin.ModelAdmin):
129+
list_display = ("id", "short_name", "long_name")
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# Generated by Django 3.2.18 on 2023-06-01 15:23
2+
3+
from django.db import migrations, models
4+
import django.db.models.deletion
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
('ingest', '0014_metadataversion'),
11+
]
12+
13+
operations = [
14+
migrations.CreateModel(
15+
name='Consortium',
16+
fields=[
17+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
18+
('short_name', models.CharField(max_length=256)),
19+
('long_name', models.CharField(max_length=1000)),
20+
],
21+
),
22+
migrations.CreateModel(
23+
name='ProjectConsortium',
24+
fields=[
25+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
26+
('consortium', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='ingest.consortium')),
27+
('project', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='ingest.project')),
28+
],
29+
),
30+
]

ingest/migrations/0015_swc.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# Generated by Django 3.2.18 on 2023-05-25 16:34
2+
3+
from django.db import migrations, models
4+
import django.db.models.deletion
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
('ingest', '0014_metadataversion'),
11+
]
12+
13+
operations = [
14+
migrations.CreateModel(
15+
name='SWC',
16+
fields=[
17+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
18+
('tracingFile', models.CharField(blank=True, max_length=256, null=True)),
19+
('sourceData', models.CharField(blank=True, max_length=256, null=True)),
20+
('sourceDataSample', models.CharField(blank=True, max_length=256, null=True)),
21+
('sourceDataSubmission', models.CharField(blank=True, max_length=256, null=True)),
22+
('coordinates', models.CharField(blank=True, max_length=256, null=True)),
23+
('coordinatesRegistration', models.CharField(blank=True, max_length=256, null=True)),
24+
('brainRegion', models.CharField(blank=True, max_length=256, null=True)),
25+
('brainRegionAtlas', models.CharField(blank=True, max_length=256, null=True)),
26+
('brainRegionAtlasName', models.CharField(blank=True, max_length=256, null=True)),
27+
('brainRegionAxonalProjection', models.CharField(blank=True, max_length=256, null=True)),
28+
('brainRegionDendriticProjection', models.CharField(blank=True, max_length=256, null=True)),
29+
('neuronType', models.CharField(blank=True, max_length=256, null=True)),
30+
('segmentTags', models.CharField(blank=True, max_length=256, null=True)),
31+
('proofreadingLevel', models.CharField(blank=True, max_length=256, null=True)),
32+
('notes', models.TextField()),
33+
('data_set', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='ingest.dataset')),
34+
('sheet', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='ingest.sheet')),
35+
],
36+
),
37+
]
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+
]
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# Generated by Django 3.2.18 on 2023-06-08 12:10
2+
3+
from django.db import migrations
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('ingest', '0015_consortium_projectconsortium'),
10+
('ingest', '0016_swc_swc_uuid'),
11+
]
12+
13+
operations = [
14+
]

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: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,14 @@ def __str__(self):
1818
funded_by = models.CharField(max_length=256)
1919
is_biccn = models.BooleanField(default=False)
2020

21+
class Consortium(models.Model):
22+
short_name = models.CharField(max_length=256)
23+
long_name = models.CharField(max_length=1000)
24+
25+
class ProjectConsortium(models.Model):
26+
project = models.ForeignKey(Project, on_delete=models.SET_NULL, blank=False, null=True)
27+
consortium = models.ForeignKey(Consortium, on_delete=models.SET_NULL, null = True, blank=True)
28+
2129
class People(models.Model):
2230
def __str__(self):
2331
return self.name
@@ -432,4 +440,22 @@ class MetadataVersion(models.Model):
432440
dataset_status= models.CharField(max_length=256, blank=True, null=True)
433441
event = models.ForeignKey(EventsLog, on_delete=models.SET_NULL, blank=True, null=True)
434442

435-
443+
class SWC(models.Model):
444+
tracingFile = models.CharField(max_length=256, blank=True, null=True)
445+
sourceData = models.CharField(max_length=256, blank=True, null=True)
446+
sourceDataSample = models.CharField(max_length=256, blank=True, null=True)
447+
sourceDataSubmission = models.CharField(max_length=256, blank=True, null=True)
448+
coordinates = models.CharField(max_length=256, blank=True, null=True)
449+
coordinatesRegistration = models.CharField(max_length=256, blank=True, null=True)
450+
brainRegion = models.CharField(max_length=256, blank=True, null=True)
451+
brainRegionAtlas = models.CharField(max_length=256, blank=True, null=True)
452+
brainRegionAtlasName = models.CharField(max_length=256, blank=True, null=True)
453+
brainRegionAxonalProjection = models.CharField(max_length=256, blank=True, null=True)
454+
brainRegionDendriticProjection = models.CharField(max_length=256, blank=True, null=True)
455+
neuronType = models.CharField(max_length=256, blank=True, null=True)
456+
segmentTags = models.CharField(max_length=256, blank=True, null=True)
457+
proofreadingLevel = models.CharField(max_length=256, blank=True, null=True)
458+
notes = models.TextField()
459+
swc_uuid = models.CharField(max_length = 1000, blank=False, null=True)
460+
data_set = models.ForeignKey(Dataset, on_delete=models.SET_NULL, blank=True, null=True)
461+
sheet = models.ForeignKey(Sheet, on_delete=models.SET_NULL, blank=True, null=True)

ingest/static/ingest/addprojectusers.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ function add_users() {
1515
}
1616
)
1717
});
18-
console.log(output_rows);
1918
fetch(`${window.origin}/ingest/write_user_to_project_people/`, {
2019
method: "POST",
2120
credentials: "include",

ingest/static/ingest/changebiladminprivs.js

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,7 @@ function change_bil_admin_privs() {
77
output_rows.push({
88
"person_id": person_id.getAttribute('value'),
99
"is_bil_admin": is_bil_admin.value,
10-
})
11-
12-
console.log(output_rows)
13-
14-
10+
})
1511

1612
fetch(`${window.origin}/ingest/change_bil_admin_privs/`, {
1713
method: "POST",

0 commit comments

Comments
 (0)