Welcome to the Linux Foundation Forum!

Linux, Python, C ++, Brain2 and errors.

Posts: 2
edited June 2024 in Software Development

Hi.

I try to make and run first time AI Neural Network on my computer.
Knowledge Python is basic.

I'm using Linux Ubuntu.

I install whole in system using apt.
When show communicate about pip, then I'm doing that.
[Is a lot of problems with right file names and compatibility.]

I try to configure to direction in home catalogue [advice from Gemini].
Port 65432 is unblocked in firewall.

Helpful is Gemini, but can't solve problems what I have now.

Please help me with that.

Python engine:

import brian2
import socket
import numpy as np

from brian2 import Neuron, Eq

Define neuron equations

eqs = '''
dv/dt = (I - gl(v-Vl) - gNa(m3)h(v-VNa) - gK*(n4)(v-VK)) / Cm
dm/dt = alpha_m(v)
(1-m) - beta_m(v)m
dh/dt = alpha_h(v)
(1-h) - beta_h(v)h
dn/dt = alpha_n(v)
(1-n) - beta_n(v)*n
'''

Define parameters and functions for the equations (replace with actual definitions)

Vl = -65mV # Leak reversal potential
VNa = 50
mV # Sodium reversal potential
VK = -70mV # Potassium reversal potential
Cm = 1
uF/cm2 # Membrane capacitance
gl = 0.3e-3siemens/cm2 # Leak conductance
gNa = 120e-3
siemens/cm2 # Sodium conductance
gK = 36e-3*siemens/cm2 # Potassium conductance

Define neuron object using custom equations

neurons = Neuron(eqs=eqs, methods={'alpha_m': alpha_m, 'beta_m': beta_m, 'alpha_h': alpha_h, 'beta_h': beta_h, 'alpha_n': alpha_n, 'beta_n': beta_n}) # Include all required methods

Standard variables

num_neurons = 1000
duration = 1000 # Simulation duration in milliseconds

(Replace with your implementation)

Hodgkin-Huxley neuron model with STDP learning (replace with your specific neuron and synapse definitions)

... (Include your specific code for defining synapses and learning rules)

Data variables

average_firing_rates = []
average_synaptic_weights = []

Recording functions

def record_firing_rates():
global average_firing_rates
average_firing_rates.append(np.mean(spike_monitor.count / (duration * 1000))) # Convert to Hz

def record_synaptic_weights():
global average_synaptic_weights
weights = synapses.weight # Assuming you have a 'synapses' object with weight attribute
average_synaptic_weights.append(np.mean(weights))

Network monitors

spike_monitor = brian2.SpikeMonitor(source=neurons)
brian2.NetworkOperation(record_firing_rates, dt=10brian2.ms) # Record every 10 ms
brian2.NetworkOperation(record_synaptic_weights, dt=100
brian2.ms) # Record every 100 ms

Network socket setup (replace with your IP address and port)

HOST = '127.0.0.1' # Standard loopback interface address (localhost)
PORT = 65432 # Port to listen on (non-privileged ports are > 1023)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))

Run the simulation

brian2.run(duration * brian2.ms)

Send data to C++ program (replace with IPC if on the same machine)

data = {'firing_rates': average_firing_rates, 'synaptic_weights': average_synaptic_weights}
data_str = str(data) # Convert data to string for sending
s.sendall(data_str.encode())

Close the socket

s.close()

I have to second code in C++:

include

include <stdio.h>

include <stdlib.h>

include <unistd.h>

include <string.h>

include <sys/types.h>

include <sys/socket.h>

include <netinet/in.h>

include <arpa/inet.h>

include

include <jsoncpp/json.h> // Include JSON library for parsing

int main() {
// Standard variables
int port = 65432; // Port used by Brian 2 simulation
std::string host = "localhost"; // Replace with IP address of Brian 2 (if not localhost)

// Socket setup
int sockfd;
struct sockaddr_in servaddr;

sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd == -1) {
perror("socket creation failed");
exit(EXIT_FAILURE);
}

memset(&servaddr, 0, sizeof(servaddr));

servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(port);
servaddr.sin_addr.s_addr = inet_addr(host.c_str());

if (connect(sockfd, (struct sockaddr*)&servaddr, sizeof(servaddr)) != 0) {
perror("connection failed");
exit(EXIT_FAILURE);
}

// Data receiving and processing loop
while (1) {
char buffer[1024]; // Adjust buffer size based on data volume
int n = recv(sockfd, buffer, sizeof(buffer), 0);
if (n == 0) {
printf("Connection closed by server\n");
break;
} else if (n == -1) {
perror("recv failed");
exit(EXIT_FAILURE);
}

  1. // Parse received data (assuming JSON format)
  2. std::string data_str(buffer, n);
  3. Json::Reader reader;
  4. Json::Value data;
  5. if (!reader.parse(data_str, data)) {

Error:

Python 3.12.3 (main, Apr 10 2024, 05:33:47) [GCC 13.2.0] on linux
Type "help", "copyright", "credits" or "license()" for more information.

= RESTART: /home/peter/python/ai_neural_brain_2/engine_brain_2.py =
ERROR Brian 2 encountered an unexpected error. If you think this is a bug in Brian 2, please report this issue either to the discourse forum at http://brian.discourse.group/, or to the issue tracker at https://github.com/brian-team/brian2/issues. Please include this file with debug information in your report: /tmp/brian_debug_vkzoele7.log Additionally, you can also include a copy of the script that was run, available at: /tmp/brian_script_fgiuug_k.py Thanks! [brian2]
Traceback (most recent call last):
File "/usr/lib/python3.12/idlelib/run.py", line 580, in runcode
exec(code, self.locals)
File "/home/peter/python/ai_neural_brain_2/engine_brain_2.py", line 5, in
from brian2 import Neuron, Eq
ImportError: cannot import name 'Neuron' from 'brian2' (/usr/lib/python3/dist-packages/brian2/init.py)

Welcome!

It looks like you're new here. Sign in or register to get started.
Sign In

Welcome!

It looks like you're new here. Sign in or register to get started.
Sign In

Categories

Upcoming Training