Skip to content

Commit f9ea379

Browse files
authored
chore: Convert copilot to pydanic models (#671)
* Commented out SceneData, upgraded Rider, downloaded EphysLinkModels * GetManipulators * GetPos * Parse input data * GotoPos * DriveToDepth * SetInsideBrain and SetCanWrite
1 parent 583a999 commit f9ea379

File tree

14 files changed

+641
-583
lines changed

14 files changed

+641
-583
lines changed

Assets/Editor/ModelsManager.cs

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
using System.IO;
2+
using System.Net;
3+
using UnityEditor;
4+
using UnityEngine;
5+
6+
namespace Editor
7+
{
8+
public static class ModelsManager
9+
{
10+
[MenuItem("Tools/Update Schemas")]
11+
public static void UpdateSchemas()
12+
{
13+
var webClient = new WebClient();
14+
15+
webClient.DownloadFile(
16+
"https://raw.githubusercontent.com/VirtualBrainLab/vbl-aquarium/main/models/csharp/EphysLinkModels.cs",
17+
"Assets/Scripts/EphysLink/EphysLinkModels.cs");
18+
19+
Debug.Log("Schemas updated successfully!");
20+
}
21+
22+
private static void GetSchemas(string srcURL, string outFile)
23+
{
24+
25+
if (!Directory.Exists(outFile))
26+
{
27+
Directory.CreateDirectory(outFile);
28+
}
29+
30+
string[] files = Directory.GetFiles(srcURL, "*.cs");
31+
32+
foreach (string file in files)
33+
{
34+
string fileName = Path.GetFileName(file);
35+
string destFilePath = Path.Combine(outFile, fileName);
36+
File.Copy(file, destFilePath, true);
37+
}
38+
39+
AssetDatabase.Refresh();
40+
}
41+
}
42+
}

Assets/Tests/CommunicationManagerTests.cs.meta renamed to Assets/Editor/ModelsManager.cs.meta

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/Scripts/EphysLink/CommunicationManager.cs

Lines changed: 87 additions & 113 deletions
Large diffs are not rendered by default.
Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
using UnityEngine;
2+
3+
public struct AngularResponse
4+
{
5+
public Vector3 Angles;
6+
public string Error;
7+
8+
public AngularResponse(Vector3 angles, string error)
9+
{
10+
Angles = angles;
11+
Error = error;
12+
}
13+
}
14+
15+
public struct BooleanStateResponse
16+
{
17+
public bool State;
18+
public string Error;
19+
20+
public BooleanStateResponse(bool state, string error)
21+
{
22+
State = state;
23+
Error = error;
24+
}
25+
}
26+
27+
public struct CanWriteRequest
28+
{
29+
public string ManipulatorId;
30+
public bool CanWrite;
31+
public float Hours;
32+
33+
public CanWriteRequest(string manipulatorId, bool canWrite, float hours)
34+
{
35+
ManipulatorId = manipulatorId;
36+
CanWrite = canWrite;
37+
Hours = hours;
38+
}
39+
}
40+
41+
public struct DriveToDepthRequest
42+
{
43+
public string ManipulatorId;
44+
public float Depth;
45+
public float Speed;
46+
47+
public DriveToDepthRequest(string manipulatorId, float depth, float speed)
48+
{
49+
ManipulatorId = manipulatorId;
50+
Depth = depth;
51+
Speed = speed;
52+
}
53+
}
54+
55+
public struct DriveToDepthResponse
56+
{
57+
public float Depth;
58+
public string Error;
59+
60+
public DriveToDepthResponse(float depth, string error)
61+
{
62+
Depth = depth;
63+
Error = error;
64+
}
65+
}
66+
67+
68+
public struct GetManipulatorsResponse
69+
{
70+
public string[] Manipulators;
71+
public int NumAxes;
72+
public Vector4 Dimensions;
73+
public string Error;
74+
75+
public GetManipulatorsResponse(string[] manipulators, int numAxes, Vector4 dimensions, string error)
76+
{
77+
Manipulators = manipulators;
78+
NumAxes = numAxes;
79+
Dimensions = dimensions;
80+
Error = error;
81+
}
82+
}
83+
84+
85+
public struct GotoPositionRequest
86+
{
87+
public string ManipulatorId;
88+
public Vector4 Position;
89+
public float Speed;
90+
91+
public GotoPositionRequest(string manipulatorId, Vector4 position, float speed)
92+
{
93+
ManipulatorId = manipulatorId;
94+
Position = position;
95+
Speed = speed;
96+
}
97+
}
98+
99+
public struct InsideBrainRequest
100+
{
101+
public string ManipulatorId;
102+
public bool Inside;
103+
104+
public InsideBrainRequest(string manipulatorId, bool inside)
105+
{
106+
ManipulatorId = manipulatorId;
107+
Inside = inside;
108+
}
109+
}
110+
111+
112+
public struct PositionalResponse
113+
{
114+
public Vector4 Position;
115+
public string Error;
116+
117+
public PositionalResponse(Vector4 position, string error)
118+
{
119+
Position = position;
120+
Error = error;
121+
}
122+
}
123+
124+
public struct ShankCountResponse
125+
{
126+
public int ShankCount;
127+
public string Error;
128+
129+
public ShankCountResponse(int shankCount, string error)
130+
{
131+
ShankCount = shankCount;
132+
Error = error;
133+
}
134+
}
135+

Assets/Scripts/EphysLink/EphysLinkModels.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/Scripts/Pinpoint/JSON/SceneData.cs

Lines changed: 76 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -12,82 +12,82 @@ public struct SceneData
1212

1313
public string Settings;
1414

15-
public static SceneData ToSceneData(string atlasName, string transformName,
16-
RigData[] rigDatas,
17-
ProbeData[] probeDatas,
18-
CraniotomyData[] craniotomyDatas,
19-
string settings)
20-
{
21-
SceneData sceneData = new SceneData();
22-
sceneData.AtlasName = atlasName;
23-
sceneData.TransformName = transformName;
24-
sceneData.Settings = settings;
25-
26-
sceneData.Data = new string[rigDatas.Length + probeDatas.Length];
27-
int di = 0;
28-
29-
foreach (RigData rigData in rigDatas)
30-
{
31-
SceneDataStorage temp = new SceneDataStorage();
32-
temp.Type = SceneDataType.Rig;
33-
temp.Data = JsonUtility.ToJson(rigData);
34-
sceneData.Data[di++] = JsonUtility.ToJson(temp);
35-
}
36-
37-
foreach (ProbeData probeData in probeDatas)
38-
{
39-
SceneDataStorage temp = new SceneDataStorage();
40-
temp.Type = SceneDataType.Probe;
41-
temp.Data = JsonUtility.ToJson(probeData);
42-
sceneData.Data[di++] = JsonUtility.ToJson(temp);
43-
}
44-
45-
foreach (CraniotomyData craniotomyData in craniotomyDatas)
46-
{
47-
SceneDataStorage temp = new SceneDataStorage();
48-
temp.Type = SceneDataType.Craniotomy;
49-
temp.Data = JsonUtility.ToJson(craniotomyData);
50-
sceneData.Data[di++] = JsonUtility.ToJson(temp);
51-
}
52-
53-
return sceneData;
54-
}
55-
56-
public static (string atlasName, string transformName,
57-
RigData[] rigDatas,
58-
ProbeData[] probeDatas,
59-
CraniotomyData[] craniotomyDatas) FromSceneData(string sceneDataJSON)
60-
{
61-
SceneData sceneData = JsonUtility.FromJson<SceneData>(sceneDataJSON);
62-
string atlasName = sceneData.AtlasName;
63-
string transformName = sceneData.TransformName;
64-
65-
List<RigData> rigDatas = new List<RigData>();
66-
List<ProbeData> probeDatas = new List<ProbeData>();
67-
List<CraniotomyData> craniotomyDatas = new();
68-
69-
foreach (string data in sceneData.Data)
70-
{
71-
SceneDataStorage temp = JsonUtility.FromJson<SceneDataStorage>(data);
72-
switch (temp.Type)
73-
{
74-
case SceneDataType.Probe:
75-
probeDatas.Add(JsonUtility.FromJson<ProbeData>(temp.Data));
76-
break;
77-
case SceneDataType.Rig:
78-
rigDatas.Add(JsonUtility.FromJson<RigData>(temp.Data));
79-
break;
80-
case SceneDataType.Craniotomy:
81-
craniotomyDatas.Add(JsonUtility.FromJson<CraniotomyData>(temp.Data));
82-
break;
83-
}
84-
}
85-
86-
return (atlasName, transformName,
87-
rigDatas.ToArray(),
88-
probeDatas.ToArray(),
89-
craniotomyDatas.ToArray());
90-
}
15+
// public static SceneData ToSceneData(string atlasName, string transformName,
16+
// RigData[] rigDatas,
17+
// ProbeData[] probeDatas,
18+
// CraniotomyData[] craniotomyDatas,
19+
// string settings)
20+
// {
21+
// SceneData sceneData = new SceneData();
22+
// sceneData.AtlasName = atlasName;
23+
// sceneData.TransformName = transformName;
24+
// sceneData.Settings = settings;
25+
//
26+
// sceneData.Data = new string[rigDatas.Length + probeDatas.Length];
27+
// int di = 0;
28+
//
29+
// foreach (RigData rigData in rigDatas)
30+
// {
31+
// SceneDataStorage temp = new SceneDataStorage();
32+
// temp.Type = SceneDataType.Rig;
33+
// temp.Data = JsonUtility.ToJson(rigData);
34+
// sceneData.Data[di++] = JsonUtility.ToJson(temp);
35+
// }
36+
//
37+
// foreach (ProbeData probeData in probeDatas)
38+
// {
39+
// SceneDataStorage temp = new SceneDataStorage();
40+
// temp.Type = SceneDataType.Probe;
41+
// temp.Data = JsonUtility.ToJson(probeData);
42+
// sceneData.Data[di++] = JsonUtility.ToJson(temp);
43+
// }
44+
//
45+
// foreach (CraniotomyData craniotomyData in craniotomyDatas)
46+
// {
47+
// SceneDataStorage temp = new SceneDataStorage();
48+
// temp.Type = SceneDataType.Craniotomy;
49+
// temp.Data = JsonUtility.ToJson(craniotomyData);
50+
// sceneData.Data[di++] = JsonUtility.ToJson(temp);
51+
// }
52+
//
53+
// return sceneData;
54+
// }
55+
56+
// public static (string atlasName, string transformName,
57+
// RigData[] rigDatas,
58+
// ProbeData[] probeDatas,
59+
// CraniotomyData[] craniotomyDatas) FromSceneData(string sceneDataJSON)
60+
// {
61+
// SceneData sceneData = JsonUtility.FromJson<SceneData>(sceneDataJSON);
62+
// string atlasName = sceneData.AtlasName;
63+
// string transformName = sceneData.TransformName;
64+
//
65+
// List<RigData> rigDatas = new List<RigData>();
66+
// List<ProbeData> probeDatas = new List<ProbeData>();
67+
// List<CraniotomyData> craniotomyDatas = new();
68+
//
69+
// foreach (string data in sceneData.Data)
70+
// {
71+
// SceneDataStorage temp = JsonUtility.FromJson<SceneDataStorage>(data);
72+
// switch (temp.Type)
73+
// {
74+
// case SceneDataType.Probe:
75+
// probeDatas.Add(JsonUtility.FromJson<ProbeData>(temp.Data));
76+
// break;
77+
// case SceneDataType.Rig:
78+
// rigDatas.Add(JsonUtility.FromJson<RigData>(temp.Data));
79+
// break;
80+
// case SceneDataType.Craniotomy:
81+
// craniotomyDatas.Add(JsonUtility.FromJson<CraniotomyData>(temp.Data));
82+
// break;
83+
// }
84+
// }
85+
//
86+
// return (atlasName, transformName,
87+
// rigDatas.ToArray(),
88+
// probeDatas.ToArray(),
89+
// craniotomyDatas.ToArray());
90+
// }
9191

9292
public override string ToString()
9393
{

0 commit comments

Comments
 (0)