Difference for vnd/vnd_read.tcl from version 1.46 to 1.47

version 1.46version 1.47
Line 1
Line 1
 ## VND -- Visual Neuronal Dynamics I/O, parsing, selection, and data storage ## VND -- Visual Neuronal Dynamics I/O, parsing, selection, and data storage
 ## ##
 ## $Id: vnd_read.tcl,v 1.46 2025/02/13 01:59:17 barryi Exp $ ## $Id: vnd_read.tcl,v 1.47 2025/04/28 21:30:41 barryi Exp $
 ## ##
 ## ##
 ## Home Page ## Home Page
Line 7269
Line 7269
   set targetNodes ""   set targetNodes ""
   foreach e $targetGlobalNodeIdList {   foreach e $targetGlobalNodeIdList {
     foreach {ex ey ez exrot eyrot ezrot etype efileset_num epop enode_id egroup_id egroup_index ecartesian}  $node($e) {}     foreach {ex ey ez exrot eyrot ezrot etype efileset_num epop enode_id egroup_id egroup_index ecartesian}  $node($e) {}
   
     puts "target node($e) epop= $epop  enode_id= $enode_id"     puts "target node($e) epop= $epop  enode_id= $enode_id"
     lappend targetNodes [list $epop $enode_id ]     lappend targetNodes [list $epop $enode_id ]
   }   }
Line 7280
Line 7281
     foreach {searchnode_pop searchnode_node_id} $n  {}     foreach {searchnode_pop searchnode_node_id} $n  {}
       #first, we match only for the source node Id (lsearch -sorted option includes acting like -exact option )       #first, we match only for the source node Id (lsearch -sorted option includes acting like -exact option )
     set node_id_match_data_list_indices [lsearch -integer -all -index 1  $globalEdgeDataList $searchnode_node_id]     set node_id_match_data_list_indices [lsearch -integer -all -index 1  $globalEdgeDataList $searchnode_node_id]
     #puts "for node_id $searchnode_node_id, length of node_id_match_data_list_indices is [llength $node_id_match_data_list_indices]"     puts "for node_id $searchnode_node_id (searchnode_pop = $searchnode_pop), length of node_id_match_data_list_indices is [llength $node_id_match_data_list_indices]"
     #second, we search among this node_id_match_data_list for also making pop match      #second, we search among this node_id_match_data_list for also making pop match 
     foreach node_match_index $node_id_match_data_list_indices {     foreach node_match_index $node_id_match_data_list_indices {
       # note dataList style, has appended globalEdgeId       # note dataList style, has appended globalEdgeId
Line 7310
Line 7311
   #  }   #  }
   #}   #}
   puts "search partially complete, matches to only source_node_edge= [llength $source_node_edges]"    puts "search partially complete, matches to only source_node_edge= [llength $source_node_edges]" 
    # display members of this searchnode_pop and searchnode_node_id 
   
   # search this subset of edges which has sourceNode in order to see which of these edges also have targetNodes   # search this subset of edges which has sourceNode in order to see which of these edges also have targetNodes
   set source_and_target_node_edges ""   set source_and_target_node_edges ""
   foreach e $source_node_edges {   foreach e $source_node_edges {
Line 7317
Line 7320
     set edge_target_node_pop $edge_pop_hash(target_node_population,$eedge_fileset_num,$epop)     set edge_target_node_pop $edge_pop_hash(target_node_population,$eedge_fileset_num,$epop)
     foreach n $targetNodes {     foreach n $targetNodes {
       foreach {searchnode_pop searchnode_node_id} $n  {       foreach {searchnode_pop searchnode_node_id} $n  {
          #puts "e= $e edge_target_node_pop= $edge_target_node_pop searchnode_pop= $searchnode_pop  etarget_node_id= $etarget_node_id (current n of targetNodes)searchnode_node_id= $searchnode_node_id"
         if { ($edge_target_node_pop == $searchnode_pop) && ($etarget_node_id == $searchnode_node_id) } {         if { ($edge_target_node_pop == $searchnode_pop) && ($etarget_node_id == $searchnode_node_id) } {
           # add to the list of edges that reach both source and target           # add to the list of edges that reach both source and target
            puts "found source target MATCH e= $e"
           lappend source_and_target_node_edges $e           lappend source_and_target_node_edges $e
         }         }
       }       }
Line 7494
Line 7499
           foreach {t_ex t_ey t_ez t_exrot t_eyrot t_ezrot t_etype t_efileset_num t_epop t_enode_id t_egroup_id t_egroup_index t_ecartesian}  $node($target_globalNodeId) {}           foreach {t_ex t_ey t_ez t_exrot t_eyrot t_ezrot t_etype t_efileset_num t_epop t_enode_id t_egroup_id t_egroup_index t_ecartesian}  $node($target_globalNodeId) {}
           set target_pointList $morphoHash($t_efileset_num,$t_etype)           set target_pointList $morphoHash($t_efileset_num,$t_etype)
           #find match in target_pointList for $eaff_swc_id              #find match in target_pointList for $eaff_swc_id   
           puts "t_efileset_num= $t_efileset_num  t_etype= $t_etype"           #puts "t_efileset_num= $t_efileset_num  t_etype= $t_etype"
           puts "theEdgeId= $theEdgeId target_globalNodeId= $target_globalNodeId t_etype= $t_etype  eaff_swc_id is $eaff_swc_id, llength target_pointList= [llength $target_pointList]"           #puts "theEdgeId= $theEdgeId target_globalNodeId= $target_globalNodeId t_etype= $t_etype  eaff_swc_id is $eaff_swc_id, llength target_pointList= [llength $target_pointList]"
           set morph_point_num [lsearch -exact -index 0 $target_pointList $eaff_swc_id]           set morph_point_num [lsearch -exact -index 0 $target_pointList $eaff_swc_id]
           puts "morph_point_num= $morph_point_num"           puts "morph_point_num= $morph_point_num"
           if {$morph_point_num == -1} {           if {$morph_point_num == -1} {
             #draw nothing             #instead of drawing nothing, here draw -- in current style -- from source soma to target soma
             puts "Warning: no swc morphology point found to draw"             puts "Warning: no swc morphology point found to draw. Setting target position to target soma." 
             set v_target_pos [list $t_ex $t_ey $t_ez]
           } else {           } else {
               set morph_point [lindex $target_pointList $morph_point_num]               set morph_point [lindex $target_pointList $morph_point_num]
               foreach {mp_n mp_type mp_x mp_y mp_z mp_radius mp_parent} $morph_point {}               foreach {mp_n mp_type mp_x mp_y mp_z mp_radius mp_parent} $morph_point {}
Line 7511
Line 7517
               }               }
               set morph_point_parent [lindex $target_pointList $morph_point_parent_num]               set morph_point_parent [lindex $target_pointList $morph_point_parent_num]
               foreach {mp_par_n mp_par_type mp_par_x mp_par_y mp_par_z mp_par_radius mp_par_parent} $morph_point_parent {}               foreach {mp_par_n mp_par_type mp_par_x mp_par_y mp_par_z mp_par_radius mp_par_parent} $morph_point_parent {}
               puts "morph_point_num= $morph_point_num  morph_point_parent_num= $morph_point_parent_num mp_x= $mp_x $mp_y= $mp_y mp_z= $mp_z mp_par_x= $mp_par_x $mp_par_y= $mp_par_y mp_par_z= $mp_par_z"                #puts "morph_point_num= $morph_point_num  morph_point_parent_num= $morph_point_parent_num mp_x= $mp_x $mp_y= $mp_y mp_z= $mp_z mp_par_x= $mp_par_x $mp_par_y= $mp_par_y mp_par_z= $mp_par_z" 
                                
               ##set type_zrot $typeHash(rot_zaxis,$t_efileset_num,$t_etype)               ##set type_zrot $typeHash(rot_zaxis,$t_efileset_num,$t_etype)
               #set m [transmult  [transoffset [list $t_ex $t_ey $t_ez]] [transaxis x $t_exrot rad ] [transaxis y $t_eyrot rad] [transaxis z $t_ezrot rad] [transaxis z [expr $type_zrot] rad]]               #set m [transmult  [transoffset [list $t_ex $t_ey $t_ez]] [transaxis x $t_exrot rad ] [transaxis y $t_eyrot rad] [transaxis z $t_ezrot rad] [transaxis z [expr $type_zrot] rad]]
Line 7521
Line 7527
                #move the points                #move the points
               set vm [coordtrans $m $v]               set vm [coordtrans $m $v]
               set vm_par [coordtrans $m $v]               set vm_par [coordtrans $m $v]
               puts "vm= $vm  vm_par= $vm_par" 
               set v_target_pos [vecadd $vm_par [vecscale $eaff_swc_pos  [vecsub $vm $vm_par]]]               set v_target_pos [vecadd $vm_par [vecscale $eaff_swc_pos  [vecsub $vm $vm_par]]]
               puts "vm= $vm  vm_par= $vm_par vpos= $v_target_pos"               #puts "vm= $vm  vm_par= $vm_par vpos= $v_target_pos"
            }
            #now draw in requested style.  If there was no afferent target in the morphology, v_target_pos will have simply been set to the target soma position, so that something gets drawn to indicate the connection
               switch $style {               switch $style {
  
                 simple_edge_swc {                 simple_edge_swc {
Line 7545
Line 7551
                 }                 }
             }              } 
           }           }
         }         
  
  
         ^source_morphology   {          ^source_morphology   { 
Line 7572
Line 7578
           puts "WARNING: STUB.  NOT IMPLEMENTED YET"           puts "WARNING: STUB.  NOT IMPLEMENTED YET"
         }          } 
         default {         default {
                   showError "style $style not recognized for connections (edges).  Style should be one of: simple_edge, source_soma, target_soma, source_target_soma, source_morph_sphere, target_morph_sphere, source_target_morph_sphere"                   showError "style $style not recognized for connections (edges).  Style should be one of: simple_edge, source_soma, target_soma, source_target_soma, source_morph_sphere, target_morph_sphere, source_target_morph_sphere, simple_edge_swc, source_sphere_swc, target_sphere_swc, source_target_sphere_swc"
                   return -1                   return -1
         }         }
       }       }


Legend:
Removed in v.1.46 
changed lines
 Added in v.1.47



Made by using version 1.65 of cvs2html