-
Notifications
You must be signed in to change notification settings - Fork 0
Troubleshooting
filter expects the clean summary artifact written by pxseek fetch, not the raw ProteomeCentral TSV export.
# Correct
pxseek fetch -o px_datasets.tsv
pxseek filter -i px_datasets.tsv -s "Homo sapiens" -o human.tsv
# Wrong: do not point filter at a raw downloadIf you downloaded the TSV directly from ProteomeCentral in a browser, it will have HTML tags in the cells and column names that do not match what filter expects. Always use pxseek fetch to produce the input for filter.
- If
filtersays no filters were specified, add at least one: species, repository, keywords, date, or instrument. - If
--deepfails, make sure you also passed-kor--keywords. Deep search requires keywords. - If you are piping artifacts, use
-o -to write to stdout and-i -or--input -to read from stdin. - If pxseek says
Unknown artifact file suffix, use.tsv,.csv,.json, no suffix, or pass--formatexplicitly. - If
lookuprejects an identifier, check that it is aPXDorRPXDfollowed by at least 6 digits. Native IDs from partner repositories (likeMSVfrom MassIVE orJPSTfrom jPOST) are not accepted by the ProteomeCentral API. - If nothing matches your filter, remove filters and add them back one at a time to find the one that is too restrictive.
- If a command seems to hang, it is probably waiting for HTTP responses. The default delay between requests is 1 second. A
lookupof 100 datasets takes at least 100 seconds plus transfer time.
pxseek accepts TSV, CSV, and JSON artifacts. In auto mode, file-based format detection is strict:
-
.tsvmeans TSV. -
.csvmeans CSV. -
.jsonmeans JSON. - No suffix falls back to TSV.
- Any other suffix raises an error instead of silently defaulting to TSV.
If you want a custom extension like results.txt, pass --format explicitly:
pxseek fetch -o results.txt --format tsvWhen writing to disk, pxseek creates missing parent directories automatically. This works:
pxseek fetch -o results/run1/summary.json --format jsonIf the target path itself is a directory, or if a cache base path points to a file instead of a directory, pxseek now fails with a friendly CLI error instead of a raw filesystem exception.
Artifacts can flow through stdin as well as files. Use - as the input or output path:
pxseek fetch -o - | pxseek filter -i - -s "Homo sapiens" -o - | pxseek lookup --input - -o details.tsvFor stdin artifacts, pxseek auto-detects JSON, TSV, and CSV from the content when no suffix exists. If you are debugging a pipeline, check the boundary one stage at a time:
- Run
pxseek fetch -o -by itself and inspect the output. - Pipe that into
pxseek filter -i - ... -o -and confirm the filtered artifact looks correct. - Only then add
pxseek lookup --input -to the end of the pipeline.
pxseek caches data in .pxseek_cache/ in the current working directory. This directory is gitignored and safe to delete if you want to clear all cached data.
Summary cache. The ProteomeXchange summary listing is cached for 24 hours by default. If you run pxseek fetch twice within 24 hours, the second run uses the cache unless you pass --refresh.
XML cache. Individual dataset XML files are cached permanently. ProteomeXchange metadata is immutable once published, so there is no expiration. Cached XML is reused across lookup and filter --deep runs.
Stale cache fallback. If the network is down and you have cached summary data, pxseek fetch and pxseek filter serve the cached data with a warning instead of failing. An error is raised only when there is no cache at all.
Clearing the cache. Delete the .pxseek_cache/ directory:
rm -rf .pxseek_cache/Or use a different cache directory with --cache-dir to keep multiple caches for different projects.
When lookup or filter --deep needs to fetch XML for more than 50 datasets, pxseek shows a confirmation prompt with the estimated time:
Fetch XML for 150 dataset(s)? (~150s at 1.0s/request) [y/N]:Answer n or press Ctrl-C to abort. Answer y to proceed.
Use the --yes or -y flag to skip the prompt in scripts or when you have already confirmed the size.
If some datasets fail to fetch or parse during lookup, the successful results are still written to the output file. A warning lists the failed identifiers. When there are more than 10 failures, the list is truncated with "and N more". Use -v (verbose) to see the full list.
# Partial failure warning
Warning: 3 dataset(s) could not be fetched/parsed: PXD999998, PXD999999, PXD000000If all lookups fail, pxseek exits with an error and writes no output file.
pxseek supports both PXD and RPXD identifiers. RPXD identifiers are used for reanalysis datasets. All commands (filter, lookup, --deep) work the same way with RPXD IDs.
pxseek adds a 1-second delay between individual XML requests to avoid overloading the ProteomeCentral server. You can adjust this with the --delay option (set to 0 for tests or private servers, though this is not recommended for normal use).
If a single XML request fails with a connection-level error, pxseek retries up to 3 times with exponential backoff (1 second, 2 seconds, 4 seconds). HTTP errors like 404 or 500 are not retried.
- Run
pxseek fetch -o px_datasets.tsvand confirm it produces output. - Test one simple filter:
pxseek filter -i px_datasets.tsv -s "Homo sapiens". - Inspect the output (column names, a few rows of data).
- Add more filters gradually, one at a time.
- Use
lookupor--deeponly after the summary stage looks right. - If deep search is slow, check how many candidates it needs to fetch XML for.
Metadata discovery and shortlist-building across ProteomeXchange datasets. It answers questions like "how many human cancer proteomics datasets were published in 2024?" or "what phosphoproteomics datasets exist for mouse brain tissue?"
No. pxseek helps you find relevant datasets and capture metadata such as descriptions, identifiers, DOIs, and FTP locations. Downloading the actual data files from the FTP servers is up to you.
They serve different stages of the workflow. fetch gives you a fast broad summary table in one HTTP request. lookup gives you richer per-dataset detail, but it requires one HTTP request per dataset. You would not want to fetch detailed XML for 50,000 datasets, so you filter first and look up only the shortlist.
Use --deep when the key term is likely to appear in the dataset description rather than in the title or keyword fields. For example, "ubiquitylation" might be described in detail in the abstract but not appear in the short title.
Yes. That is the normal workflow. Start with species, repository, date, instrument, or keywords. After filtering down to a manageable shortlist, use lookup to get the detailed metadata.
- Run
pxseek --helporpxseek <command> --help. - Check the other pages in this wiki.
- Open an issue at https://github.com/LangeLab/pxseek/issues.
Getting started
Reference
Help