npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@yumeayai/dsh-swiss-target

v0.1.0

Published

SwissTargetPrediction batch prediction for DeepSeek Harness: submit SMILES strings, retrieve predicted protein targets (UniProt/ChEMBL ids, probability scores, known actives) and export them to CSV, through a swiss_target_batch tool, a /swiss command, and

Readme

SwissTargetPrediction batch prediction — DeepSeek Harness plugin & agent skill

English | 中文

Want to know which proteins a molecule — or a whole series — might act on? Hand it the SMILES. It submits each one to SwissTargetPrediction, waits for the prediction, and lays the results out as one table: target and common name, UniProt and ChEMBL ids, target class, probability, and the known actives behind each target (3D/2D). The same table is written to a CSV in the session workspace.

Note: This tool is unofficial and not affiliated with the Swiss Institute of Bioinformatics (SIB). Please respect their server usage policies. If the predictions go into research, cite Daina, Michielin & Zoete, Nucleic Acids Research 47(W1), W357–W364 (2019).

What you get

  • A whole batch in one go. Paste one SMILES per line; submitting, waiting and collecting the results is the plugin's job.
  • Everything the service reports, in one table. Target and common name, UniProt and ChEMBL ids, target class, probability, known actives (3D/2D).
  • Salt forms handled for you. A hydrochloride, a sodium salt or another ionic form is desalted before submission — and neutralised where that is safe — with every change listed for you. SwissTargetPrediction takes one molecule per query, so pasting a salt as-is simply returns nothing.
  • Three ways to run it. Ask the agent; type /swiss in the composer; or open the SwissTarget panel and paste your list.
  • No blind waiting. Progress and elapsed time while it runs, results still there if you switch away, and a written reason for every molecule that failed.
  • Human, mouse or rat.
  • Results you can keep. The full table goes to a CSV in the session workspace, and the panel exports it on demand.
  • English and Chinese UI.

Install

Into a Harness profile, straight from a release — nothing to clone:

dsh plugin --profile <profile> add https://github.com/YumeAyai/dsh-swiss-target/releases/latest/download/dsh-swiss-target.tar.gz

Or from the repository, or from a copy you already have:

dsh plugin --profile <profile> add github:YumeAyai/dsh-swiss-target
dsh plugin --profile <profile> add /absolute/path/to/this/directory

As an agent skill (the same directory is the skill bundle):

git clone https://github.com/YumeAyai/dsh-swiss-target.git ~/.dsh/skills/dsh-swiss-target

Usage

Ask the agent

swiss_target_batch(smiles=["CC(=O)OC1=CC=CC=C1C(=O)O", "CN1C=NC2=C1C(=O)N(C(=O)N2C)C"])

| Parameter | Default | Meaning | |---|---|---| | smiles | — | One SMILES string per molecule, at most 25 per call | | organism | Homo_sapiens | Also Mus_musculus, Rattus_norvegicus | | output_csv | swiss_target_results.csv | Relative to the session workspace, or absolute |

From the composer

/swiss CC(=O)OC1=CC=CC=C1C(=O)O
/swiss {"smiles":["CCO","c1ccccc1"],"organism":"Homo_sapiens"}

One SMILES per line (# starts a comment), or the JSON payload the panel sends.

From the panel

Open a session, choose SwissTarget in the conversation view tabs, paste one SMILES per line, pick the organism and run. The results appear as a table, and Export CSV downloads them; the host also writes the whole batch into the workspace.

While it runs the panel shows progress and elapsed time — 5–60 seconds per molecule is normal. Switching tabs or sessions and coming back keeps the draft and the results.

Example output

| Target | Common name | Uniprot ID | ChEMBL ID | Target Class | Probability* | Known actives (3D/2D) | input_smiles | |---|---|---|---|---|---|---|---| | Cyclooxygenase-1 | PTGS1 | P23219 | CHEMBL221 | Oxidoreductase | 0.756 | 13 / 2 | CC(=O)OC1=CC=CC=C1C(=O)O |

Salt forms and mixtures

Most active pharmaceutical ingredients are weighed as a salt — a hydrochloride, a sodium salt, a tartrate — and SwissTargetPrediction takes one molecule per query: submitting [Cl-].CC(=O)Oc1ccccc1C(=O)O as-is returns nothing at all. So every line is converted before it is submitted:

| You submit | Actually submitted | What happened | |---|---|---| | [Cl-].CC(=O)Oc1ccccc1C(=O)O | CC(=O)Oc1ccccc1C(=O)O | chloride counter-ion dropped | | CN(C)CCOC(c1ccccc1)c1ccccc1.Cl | CN(C)CCOC(c1ccccc1)c1ccccc1 | neutral HCl adduct dropped | | CC(=O)[O-].[Na+] | CC(=O)O | sodium dropped, carboxylate neutralised | | [Na+].[O-]C(=O)c1ccccc1O | OC(=O)c1ccccc1O | sodium dropped, phenolate/carboxylate neutralised | | [NH3+]CC(=O)[O-] | NCC(=O)O | zwitterion neutralised | | C[N+](C)(C)CCOC(c1ccccc1)c1ccccc1.[Cl-] | quaternary parent | chloride dropped, the charge stays (no hydrogen to lose) | | CCO.c1ccccc1 | c1ccccc1 | a real mixture: largest fragment kept, the rest reported | | [Na+].[Cl-] | — | refused: counter-ions only |

Your structure is never rewritten beyond that: only counter-ions are dropped, and only charges that can be neutralised safely are touched — a nitro or a quaternary ammonium group is submitted as written. The original line and the submitted form each keep a CSV column (input_smiles, submitted_smiles), and every change is listed in the tool result and in the panel.

Good to know

  • The service throttles. After a run of submissions it refuses new jobs for a while. The client retries each molecule three times, then marks that molecule as failed with its reason and finishes the rest. Retry the failed ones later.
  • Caps. At most 25 molecules per call; at most the service's own top 100 targets per molecule.
  • Timing. Submissions are sequential with a 2-second pause; one molecule usually takes 5–60 seconds.
  • Organism. Human (default), mouse, rat.
  • Predictions, not evidence. Do not present them as measurements.

License

This code is released under the ISC License. The data and predictions are owned by SwissTargetPrediction / SIB.

A Node.js port of the Python client swiss_target_batch, which keeps the original source and its own install instructions.