Source code for subcell_pipeline.visualization.fiber_points
"""Methods for visualizing fiber points."""importnumpyasnpfromsimulariumioimport(AgentData,DisplayData,MetaData,TrajectoryConverter,TrajectoryData,UnitData,)
[docs]defgenerate_trajectory_converter_for_fiber_points(fiber_points:list[np.ndarray],type_names:list[str],meta_data:MetaData,display_data:dict[str,DisplayData],time_units:UnitData,spatial_units:UnitData,fiber_radius:float=0.5,)->TrajectoryConverter:""" Generate a TrajectoryConverter for the given fiber points. Parameters ---------- fiber_points List of fibers, where each fiber has the shape (timesteps x points x 3). type_names List of type names. meta_data Simularium metadata object. display_data Map of type names to Simularium display data objects. time_units Time unit data. spatial_units Spatial unit data. fiber_radius Radius to render fiber. Returns ------- : Simularium trajectory converter. """# build subpoints array with correct dimensionsn_fibers=len(fiber_points)total_steps=fiber_points[0].shape[0]n_points=fiber_points[0].shape[1]subpoints=np.zeros((total_steps,n_fibers,n_points,3))fortime_ixinrange(total_steps):forfiber_ixinrange(n_fibers):subpoints[time_ix][fiber_ix]=fiber_points[fiber_ix][time_ix]subpoints=subpoints.reshape((total_steps,n_fibers,3*n_points))# convert to simulariumtraj_data=TrajectoryData(meta_data=meta_data,agent_data=AgentData(times=np.arange(total_steps),n_agents=n_fibers*np.ones(total_steps),viz_types=1001*np.ones((total_steps,n_fibers)),# fiber viz type = 1001unique_ids=np.array(total_steps*[list(range(n_fibers))]),types=total_steps*[type_names],positions=np.zeros((total_steps,n_fibers,3)),radii=fiber_radius*np.ones((total_steps,n_fibers)),n_subpoints=3*n_points*np.ones((total_steps,n_fibers)),subpoints=subpoints,display_data=display_data,),time_units=time_units,spatial_units=spatial_units,)returnTrajectoryConverter(traj_data)