= Attendees = * Conrad, Elaine, Greg, Eric, TomF, TomG, Scooter = Agenda = * ChimeraX 0.6 release - Performance - APIs * Review milestone priorities = Discussion = * ChimeraX 0.6 performance - Looking up bfactor (1 million times): - ChimeraX: - ctypes: 1.38s - custom library with property wrapping: 0.5s - custom library with no wrapping: 0.185s - random floating point attribute in Python: 0.072s - '''Cython with no wrapping: 0.021s''' - Chimera 1: - access bfactor via wrappy2: 0.062s - '''custom library with no wrapping: 0.181s''' - Options: - wrappy3 (does not understand numpy arrays) - Cython - Collect data - Port custom library code to Chimera 1 and get timing. Is it 3x slower due to argument parsing? - Write custom library in Cython and compare against ctypes timing. * ChimeraX 0.6 APIs * Release APIs used in tutorials - Tutorials need to be edited for clarity - First cut (dumping minimal required information into file) for all but "fetch" tutorial is in - First editing pass has **not** been done yet - Need to make sure all the links work and have real content - Need to add "Supported API" string to doc strings of public classes, methods and functions (see [wiki:2017-09-21]) * APIs used in tutorials (so far) - :py:class:`chimerax.core.atomic.Atom` - :py:class:`chimerax.core.atomic.AtomicStructure` - :py:class:`chimerax.core.atomic.Bond` - :py:class:`chimerax.core.atomic.Collection` - :py:class:`chimerax.core.atomic.Residue` - - :py:class:`chimerax.core.commands` - :py:class:`chimerax.core.commands.cli.CmdDesc` - :py:class:`chimerax.core.commands.ModelsArg` - :py:class:`chimerax.core.commands.register` - :py:class:`chimerax.core.commands.register_selector` - :py:func:`chimerax.core.commands.cli.register` - :py:func:`chimerax.core.commands.run` - - :py:class:`chimerax.core.logger.Logger` - - :py:class:`chimerax.core.models.Model` - - :py:class:`chimerax.core.objects.Objects` - - :py:class:`chimerax.core.session.Session` - - :py:class:`chimerax.core.toolshed.BundleAPI` - :py:class:`chimerax.core.toolshed.BundleInfo` - :py:class:`chimerax.core.toolshed.CommandInfo` - :py:class:`chimerax.core.toolshed.SelectorInfo` - :py:class:`chimerax.core.toolshed.ToolInfo` - :py:class:`~chimerax.core.toolshed.BundleAPI.fetch_from_database` - :py:class:`~chimerax.core.toolshed.BundleAPI.finish` - :py:class:`~chimerax.core.toolshed.BundleAPI.get_class` - :py:class:`~chimerax.core.toolshed.BundleAPI.initialize` - :py:class:`~chimerax.core.toolshed.BundleAPI.open_file` - :py:class:`~chimerax.core.toolshed.BundleAPI.register_command` - :py:class:`~chimerax.core.toolshed.BundleAPI.register_selector` - :py:class:`~chimerax.core.toolshed.BundleAPI.save_file` - :py:class:`~chimerax.core.toolshed.BundleAPI.start_tool` - - :py:class:`chimerax.core.ui.HtmlToolInstance` - - :py:class:`chimerax.core.ui.widgets.HtmlView. - - :py:func:`chimerax.core.io.open_filename` = Action Items = * Conrad will enable registration code * Eric will collect data on custom library (Chimera 1, Cython, etc) * Conrad will write bundle code tutorial * Conrad will continue working on ribbon tickets * Conrad will create ticket to investigate implementing the "like" operator - e.g., to specify polymer in atomspec