dekamps / miind Goto Github PK
View Code? Open in Web Editor NEWHome Page: http://miind.sf.net
License: MIT License
Home Page: http://miind.sf.net
License: MIT License
Because these libraries are declared as shared (they are the python modules), on intel architecture, a linker flag -fPIC is required which has been missed in these two libraries.
The correct and easy fix is to add ${CMAKE_CXX_FLAGS} to the linking step in the CMakeLists.txt of both libraries:
Line 69 in MIIND_ROOT/libs/MiindPythonLib/CMakeList.txt:
target_link_libraries( ${MIIND_LIBRARY_PREFIX}sim ${LIBLIST})
->
target_link_libraries( ${MIIND_LIBRARY_PREFIX}sim ${LIBLIST} ${CMAKE_CXX_FLAGS})
Line 73 in MIIND_ROOT/libs/MiindPythonGPULib/CMakeList.txt:
target_link_libraries( ${MIIND_LIBRARY_PREFIX}simv ${LIBLIST})
->
target_link_libraries( ${MIIND_LIBRARY_PREFIX}simv ${LIBLIST} ${CMAKE_CXX_FLAGS})
Check that this doesn't break the github actions build process then push to master as a hotfix.
There is no need for a new pypi version.
To ensure that a user does not combine files from different parameter sets, files that belong to the same .model
can have a global unique identifier in the header
Feature Request
BinEstimator is a class that contains a generic search algorithm for finding which bins a bin covers after translation. For a large number of bins this can be done more efficiently using the analytic solutions of the neural model, enhancing the efficiency of LIF/QIF simulations.
When using MatrixGenerator and lost.py the fiducial filename is assumed to be the basename of ".model". This is inconvenient if you want to make multiple ".mat" files in the same folder since for each new matrix generation the algorithms will all look for the same fiducial file.
To make it even simpler, MatrixGenerator could make the fiducial file if it does not already exist, avoiding these name issues altogether.
Probably doing modulo when checking when to write files. Should check that time since last is greater.
(base) scsmdk@x86_64-apple-darwin13 lucas % python lost.py PIF_osc_input_0.01_0_0_0_.lost
Traceback (most recent call last):
File "lost.py", line 173, in
main(sys.argv)
File "lost.py", line 123, in main
l=read_fiducial(bn + '.fid')
File "lost.py", line 70, in read_fiducial
tree = ET.parse(fn)
File "/Users/scsmdk/anaconda3/lib/python3.7/xml/etree/ElementTree.py", line 1197, in parse
tree.parse(source, parser)
File "/Users/scsmdk/anaconda3/lib/python3.7/xml/etree/ElementTree.py", line 587, in parse
source = open(source, "rb")
FileNotFoundError: [Errno 2] No such file or directory: 'PIF.fid'
(base) scsmdk@x86_64-apple-darwin13 lucas %
LifMeshGenerator.py defines a LIF mesh. It contains both a V_max and an epsilon parameter. One of them is needed to provide a small cell above the threshold potential to create a threshold cell, but it is not clear which one (it seems to be V_max, in that case epsilon should go)
To better support research for which direct simulation is required, MIIND should provide an algorithm, based on GridAlgorithm to simulate a population of individual neurons.
also we need a shabang in mesh.py
Suggestion:
add SimulationName to the .model_mesh
folder name
check if the output folder exist and look for an overwrite flag
when running the response_curve example i.e.
cp -r MIIND_ROOT/examples/response_curve_lif/ working_dir
cd working_dir/response_curve_lif/ working_dir
python response_curve.py
miind.py --d gain_curve response_*.xml
submit.py gain_curve
python analyse_response.py
analyse_response.py then looks in MIIND_ROOT/build/jobs/response and not in the correct MIIND_ROOT/build/jobs/gain_curve i.e.
Traceback (most recent call last):
File "response_analyse.py", line 13, in <module>
f = open(jobpath)
IOError: [Errno 2] No such file or directory: 'MIIND_ROOT/build/jobs/response/joblist'
Now, the name name.model_mesh
is the same as name.model
, however as the .root
file gets its name from the SimulationName
in the .xml
file, so should the density output name e.g. SimulationName.model_mesh
Hello,
thanks @hugh-osborne for dropping in to our weekly NeuroFedora meeting to tell us about MIIND. It looks great, and we're working on including it in NeuroFedora now:
https://pagure.io/neuro-sig/NeuroFedora/issue/449
We noticed that MIIND currently depends on descartes, which unfortunately is no longer maintained. The last release was in 2017, and the bitbucket project also does not exist any more. As a result, its tests are now failing and it is on the verge of being retired from Fedora:
https://bugzilla.redhat.com/show_bug.cgi?id=1907389
The Fedora maintainer also notes that other libraries like geopandas are also preparing to drop descartes as a dependency:
https://bugzilla.redhat.com/show_bug.cgi?id=1907389#c3
Would it be possible to please move away from using descartes in MIINDS too?
Cheers,
It would be desirable not to have any missing strip numbers but the Python format allows it.
The simulator will check consistency between reversal mapping and mesh and will note that
a reversal mapping is given for a strip number that is not present in the mesh.
We will later decide how to deal with strips that have all their cells edited out, but for now:
It is the responsibility of the modeller to provide a reversal mapping that is consistent with a mesh. If a mesh has a strip with 0 cells, this strip should not be present in the reversal mapping, i.e. in the .rev file that is presented to bind. This is, for now, a documentation issue.
As of now, the root file does not tell you which population gives which rate etc. The names from the xml files would be nice to pass on.
Update Connections for finite_size so that neuron-to-neuron mappings can be made with inputs to specific neurons. Record the spike history.
This will result in an error when lost.py looks for the .fid file if the basename of the lost file contains underscores
should be enough to change from:
i,j<vbins>vbin,vscaling;...</vbins><wbins>wbin,wscaling;...</wbins>
to
<coord>i,j</coord><vbins>vbin,vscaling;...</vbins><wbins>wbin,wscaling;...</wbins>
Now, the output directory for the density files (.model_mesh
) are written to the same directory as where the .model
file lies
I have an idea on how we could automate fitting quadrilaterals on lost clusters:
shapely
to enclose clusters in polygons in a similar manner as in this blogEven though the following is toggled off
<OnScreen>FALSE</OnScreen>
<WithState>FALSE</WithState>
<WriteNet>FALSE</WriteNet>
This is when running submit.py
The MIIND code should provide visual studio solution files for windows development. As Windows generally packages all dependencies up into library files, I suggest modifying the MIIND workflow to avoid the cpp code generation and cmake calls and use a self-contained executable which takes the XML file as a parameter and runs the simulation immediately. MIIND python API can still be used for analysis.
Can be solved for now by hand editing the model file to include the reset mapping. When this is not done, the simulator concludes -correctly- that the reset mapping isn't present in the model file and bails out.
Attributes vs single valued elements in input.xml
As of now the input xml have many single valued elements e.g.
<CanvasParameter>
<T_min>0</T_min>
<T_max>1.</T_max>
<F_min>0</F_min>
</CanvasParameter>
I propose to have these elements as attributes in stead, i.e.
<CanvasParameter
T_max="1."
T_min="0"
F_min="0"
/>
Thus conforming to json
, yaml
, i.e.
{
"CanvasParameter": {
"T_max": "1.",
"T_min": "0",
"F_min": "0",
}
}
'CanvasParameter':
- 'T_max': '1.'
- 'T_min': '0'
- 'F_min': '0'
In addition to conforming to multiple formats one also ease the building of python interfaces through working with dictionaries.
0% 10 20 30 40 50 60 70 80 90 100%
|----|----|----|----|----|----|----|----|----|----|
**************************Overall time spend
121.290263s wall, 93.270000s user + 4.730000s system = 98.000000s CPU (80.8%)
To be absolute sure you are looking at the right output in the root file, the naming should be inherited from the xml. As of now you must guess which population e.g. rate_0 and rate_1 belongs to.
Line 114 in d8dc4cc
should add xmldir, i.e. os.path.exists(os.path.join(xmldir, model))
remove this part in the beginning of the file
import matplotlib
matplotlib.use('Agg')
miindio.py should have a command to dump the marginal densities to two files per timestep.
File "/home/mikkel/apps/miind/python/miind.py", line 28, in <module>
directories.add_executable(dirname, filename, modname)
File "/home/mikkel/apps/miind/python/directories.py", line 137, in add_executable
create_cpp_file(xmlfile, dirpath, progname, modname)
File "/home/mikkel/apps/miind/python/directories.py", line 99, in create_cpp_file
codegen.generate_outputfile(fin,fout)
File "/home/mikkel/apps/miind/python/codegen.py", line 117, in generate_outputfile
nodes.parse_nodes(node_list,weighttype,outfile)
File "/home/mikkel/apps/miind/python/nodes.py", line 26, in parse_nodes
s = parse_node(node,weighttype,i)
File "/home/mikkel/apps/miind/python/nodes.py", line 15, in parse_node
s += algorithms.ALGORITHM_NAMES[node.attrib['algorithm']] + ','
KeyError: 'E'
Linked to another feature request "Dump Marginals to a File". MIIND API should as a one-time step, write the marginal densities to files as with the full densities. This should probably be performed in C++ and parallelised to speed it up.
The files can then be queried quickly in python. Although caching works fine, it may be confusing if the first time the user calls this it takes ages. Making the user run the "marginal generation" command will demonstrate that it's a one time but slow process.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.