Giter Club home page Giter Club logo

miind's People

Contributors

davidsichau avatar dekamps avatar hugh-osborne avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

miind's Issues

miindsim and possibly miindsimv fail to build on intel architectures

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.

BinEstimator for LIF/QIF neurons

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.

fiducial basename should match ".mat"

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.

lost.py seems mishandle base names with underscores

(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 %

analyse_response.py from response_curve_lif example, hardcoded directory

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'

python-descartes is no longer maintained, please consider dropping it as a dependency

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,

Mesh inconsistent with mapping: reversal. Nr cells in strip from: 0,from: 407. If a strip is numbered, but has no cells, the reversal file should not contain an entry with this strip number.

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.

Add metadata to .root output file

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.

projection format not entirely xml

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>

automating lost procedure

I have an idea on how we could automate fitting quadrilaterals on lost clusters:

  1. run MatrixGenerator as usual
  2. visualize and select number of clusters
  3. apply k-means to identify cluster positions
  4. use shapely to enclose clusters in polygons in a similar manner as in this blog

Feature Request: Run MIIND in Windows

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.

Regarding the xml input file

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.

progress display ends at 50%

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%)

Name conventions in root file

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.

Error when running xml: key error "algorithm name"

  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'

Calculating marginal densities takes far too long and is very cumbersome

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.