def main(): plugin = nanome.Plugin( "MD Simulation", "Run molecular dynamics on the selected complexes, using OpenMM", "MD", True) plugin.set_plugin_class(MDSimulation) plugin.run('127.0.0.1', 8888)
def main(): plugin = nanome.Plugin( "GlycamCB", "Input an oligasaccharide sequence and obtain a minimized pdb.", "pdb_from_sequence", False) plugin.set_plugin_class(GlycamCB) plugin.run('127.0.0.1', 8888)
def main(): parser = argparse.ArgumentParser( description= 'Parse Arguments to determine flavor of Docking to instantiate') parser.add_argument('--algorithm', choices=['smina', 'autodock4'], default='smina') args, _ = parser.parse_known_args() plugin_class = None name = '' algo = args.algorithm if algo == "smina": name = "Smina" plugin_class = SminaDocking elif algo == "autodock4": name = "Autodock4" plugin_class = Autodock4Docking elif algo == "rhodium": name = "Rhodium" plugin_class = RhodiumDocking # Create the plugin, register Docking as the class to instantiate, and start listening plugin_name = f'{name} Docking' description = f'Run docking using {plugin_name}. Lets user choose the receptor, ligands, and diverse options' category = "Docking" advanced_settings = True plugin = nanome.Plugin(plugin_name, description, category, advanced_settings) plugin.set_plugin_class(plugin_class) plugin.run()
def main(): parser = Plugin.create_parser() args, _ = parser.parse_known_args() default_name = 'Cookbook' arg_name = args.name or [] plugin_name = ' '.join(arg_name) or default_name description = 'Interact with your Nanome session via Jupyter Notebook.' tags = ['Interactions'] plugin = nanome.Plugin(plugin_name, description, tags) plugin.set_plugin_class(PluginService) # CLI Args take priority over environment variables for NTS settnigs host = args.host or os.environ.get('NTS_HOST') port = args.port or os.environ.get('NTS_PORT') or 0 key = args.key or os.environ.get('NTS_KEY') configs = {} if host: configs['host'] = host if port: configs['port'] = int(port) if key: configs['key'] = key plugin.run(**configs)
def main(): plugin = nanome.Plugin( "Chemical Properties", "Calculates and displays different properties of chemicals using the RDKit Python library", "Analysis", True) plugin.set_plugin_class(ChemicalProperties) plugin.run('127.0.0.1', 8888)
def main(): if not NANOBABEL: Logs.error('Error: nanobabel not found, please set NANOBABEL env var') sys.exit(1) plugin = nanome.Plugin("Minimization", "Run minimization on selected structures. See Advanced Parameters for forcefield, number of steps, and steepest descent", "Minimization", True) plugin.set_plugin_class(Minimization) plugin.run()
def main(): plugin = nanome.Plugin('Electrostatic Potential', 'Calculates Electrostatic Potential Map', 'ESP', False, integrations=[Integrations.calculate_esp]) plugin.set_plugin_class(ElectrostaticPotential) plugin.run()
def main(): plugin = nanome.Plugin( "Structure Prep", "Select your structures from the Entry List, then press Run to regenerate bonds and secondary structure.", "Structure", True, integrations=[Integrations.structure_prep]) plugin.set_plugin_class(StructurePrep) plugin.run()
def main(): plugin = nanome.Plugin( "Chemical Properties", "Calculates and displays different properties of chemicals using the RDKit Python library", "Analysis", True, integrations=[Integrations.analysis]) plugin.set_plugin_class(ChemicalProperties) plugin.run()
def launch_plugin(class_name, args): module_name = "test_plugins." + class_name import nanome sys.argv = args module = importlib.import_module(module_name) plugin = nanome.Plugin(module.NAME, module.DESCRIPTION, module.CATEGORY, module.HAS_ADVANCED_OPTIONS) clsmembers = inspect.getmembers(module, inspect.isclass) class_target = None for clsmember in clsmembers: if class_name == clsmember[0]: class_target = clsmember[1] break if class_target == None: nanome.util.Logs.error ("Plugin must have the same name as the containing file") plugin.set_plugin_class(class_target) plugin.run("config", "config", "config")
def main(): enable_accounts = True try: for i in range(len(sys.argv)): if sys.argv[i] in ["-d", "--disable-accounts"]: enable_accounts = False except: pass plugin_class = WorkspaceManagerAccounts if enable_accounts else WorkspaceManagerNoAccounts # Plugin plugin = nanome.Plugin( "Workspace Manager", "Allows standalone VR headset to save and load workspaces", "Loading", False) plugin.set_plugin_class(plugin_class) plugin.run()
def main(): # Plugin server (for Web) api_key = None https = False url = None port = None try: for i, arg in enumerate(sys.argv): if arg == '--api-key': api_key = sys.argv[i + 1] elif arg in ['--https', '-s', '--ssl-cert']: https = True elif arg in ['-u', '--url']: url = sys.argv[i + 1] elif arg in ['-w', '--web-port']: port = int(sys.argv[i + 1]) except: pass if port is None: port = 443 if https else DEFAULT_WEB_PORT # Plugin integrations = [ Integrations.import_file, Integrations.export_locations, Integrations.export_file, ] plugin = nanome.Plugin( 'Vault', 'Use your browser to upload files and folders to make them available in Nanome.', 'Files', False, integrations=integrations) plugin.set_plugin_class(Vault) plugin.set_custom_data(url, port, api_key) plugin.run()
def main(): # Plugin server (for Web) web_port = DEFAULT_SERVER_PORT keep_files_days = DEFAULT_KEEP_FILES_DAYS try: for i in range(len(sys.argv)): if sys.argv[i] == "-w": web_port = int(sys.argv[i + 1]) elif sys.argv[i] == "-k": keep_files_days = int(sys.argv[i + 1]) except: pass server = WebLoaderServer(web_port, keep_files_days) server.start() # Plugin plugin = nanome.Plugin( "Load from Web", "Use your browser to upload files and folders to make them available in Nanome.", "Loading", False) plugin.set_plugin_class(WebLoader) plugin.run('127.0.0.1', 8888)
def main(): description = "Display realtime scoring info about a selected ligand." plugin = nanome.Plugin("Realtime Scoring", description, "Scoring", True) plugin.set_plugin_class(RealtimeScoring) plugin.run()
def main(): plugin = nanome.Plugin("URL Loader", "Load molecule from database", "Loading", False) plugin.set_plugin_class(URLLoader) plugin.run('127.0.0.1', 8888)
def main(): plugin = nanome.Plugin("URL Loader", "Load molecule from database", "Loading", True) plugin.set_plugin_class(URLLoader) plugin.run()
self.request_files(["./api_bad_test.txt", "api_test.txt"], self.on_files_received) # Read two files def on_files_received(self, file_list): # For each file we read, display if error, and file content for file in file_list: nanome.util.Logs.debug( "Error?", str(nanome.util.FileErrorCode(file.error_code)), "Content:", file.data) # Prepare to write file "api_test.txt", with content "AAAA" file = nanome.util.FileSaveData() file.path = "./api_test.txt" file.write_text("AAAA") self.save_files([file], self.on_save_files_result) # Write file def on_save_files_result(self, result_list): # Check for writing errors for result in result_list: nanome.util.Logs.debug( "Saving", result.path, "Error?", str(nanome.util.FileErrorCode(result.error_code))) if __name__ == "__main__": plugin = nanome.Plugin( "Example File API", "Test File API by reading current directory, reading api_test.txt and api_bad_test.txt and modifying api_test.txt", "Examples", False) plugin.set_plugin_class(FilesAPITest) plugin.run()
def main(): plugin = nanome.Plugin('{{name}}', '{{description}}', '{{category}}', False) plugin.set_plugin_class({{class}}) plugin.run('127.0.0.1', 8888)
def main(): plugin = nanome.Plugin("RMSD", "Aligns complexes using RMSD calculations.", "Alignment", False) plugin.set_plugin_class(RMSD) plugin.run()
def main(): plugin = nanome.Plugin('Matryx', 'Interact with the Matryx platform', 'Utilities', False) plugin.set_plugin_class(Matryx) plugin.run('127.0.0.1', 8888)
sys.stdout.flush() time.sleep(3) class Test(nanome.PluginInstance): pass process = None def pre_run(): print("Pre run") sys.stdout.flush() global process process = Process(target=start_process) process.start() def post_run(): print("Post run") sys.stdout.flush() process.kill() if __name__ == "__main__": plugin = nanome.Plugin("Test Autoreload", "", "Test", False) plugin.pre_run = pre_run plugin.post_run = post_run plugin.set_plugin_class(Test) plugin.run('127.0.0.1', 8888)
self.all_atoms = [] for complex in workspace.complexes: for atom in complex.atoms: self.all_atoms.append(atom) all_atom_indices.append(atom.index) self.create_stream(all_atom_indices, self.stream_created) def stream_created(self, stream, error): a_pos = [] for atom in self.all_atoms: atom.position.y += 1 a_pos.append(atom.position.x) a_pos.append((atom.position.y) % 100) a_pos.append(atom.position.z) def repeat(): self.stream_created(stream, None) stream.update(a_pos, repeat) def on_run(self): self.request_workspace(self.on_workspace_received) def __init__(self): pass if __name__ == "__main__": plugin = nanome.Plugin("Profile Streams", "", "Test", False) plugin.set_plugin_class(UpdateWorkspace) plugin.run('127.0.0.1', 8888)