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)
Пример #2
0
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)
Пример #3
0
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()
Пример #4
0
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)
Пример #6
0
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()
Пример #10
0
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()
Пример #12
0
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()
Пример #13
0
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()
Пример #15
0
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)
Пример #16
0
def main():
    plugin = nanome.Plugin("URL Loader", "Load molecule from database",
                           "Loading", True)
    plugin.set_plugin_class(URLLoader)
    plugin.run()
Пример #17
0
        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()
Пример #18
0
def main():
    plugin = nanome.Plugin('{{name}}', '{{description}}', '{{category}}', False)
    plugin.set_plugin_class({{class}})
    plugin.run('127.0.0.1', 8888)
Пример #19
0
def main():
    plugin = nanome.Plugin("RMSD", "Aligns complexes using RMSD calculations.",
                           "Alignment", False)
    plugin.set_plugin_class(RMSD)
    plugin.run()
Пример #20
0
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)
Пример #21
0
        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)
Пример #22
0
        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)