ipcress(1)

πŸ“¦
version 2.4.0 Β· 2 versions
, in debian bookworm, debian trixie, ubuntu jammy, ubuntu noble, ubuntu questing, ubuntu resolute, ubuntu stonking

πŸ’– ipcress β€” the In-silico PCR Experiment Simulation System πŸ’–

okay so bestie, welcome to ipcress(1), the PCR simulation tool that's about to be your new obsession. this is from the exonerate family, and it's giving main character energy in the world of in-silico PCR. let's get into it 🧬✨


✨ SYNOPSIS ✨

ipcress [ options ] <primer file> <sequence paths>

🌸 DESCRIPTION 🌸

so ipcress is literally the In-silico PCR Experiment Simulation System. no cap.

here's the vibe: it's a tool for simulating PCR experiments. you hand it a file full of primers plus a set of sequences, and it predicts PCR products for you. that's it, that's the whole thing, and it's iconic. πŸŽ€

now, ipcress is similar to the e-PCR program from the NCBI, but β€” and this is the part where it ate β€” it's much faster, and it does not suffer from those problems identifying matches when there are ambiguity symbols near primer ends. periodt. πŸ’…

and here's the glow-up: if you supply many primer pairs together, ipcress will simulate the PCR experiments in parallel, which lets you do genome-wide simulation of large numbers of experiments. she's scalable, she's efficient, she's everything. it uses a bunch of libraries from the exonerate sequence comparison tool, iykyk. πŸ¦‹


πŸ“ INPUT FORMAT πŸ“

the input for ipcress is a simple white-space delimited file describing one experiment per line. each line has these 5 fields, in this order:

  • id β€” an identifier for this experiment
  • primer_A β€” sequence for the first primer
  • primer_B β€” sequence for the second primer
  • min_product_len β€” minimum product length to report
  • max_product_len β€” maximum product length to report

here's an example line in this format, so you can see exactly what it's supposed to look like:

ID0001 CATGCATGCATGC CGATGCANGCATGCT 900 1100

πŸŽ€ OUTPUT FORMAT πŸŽ€

the output format describes one PCR product per-line, and it's prefixed by "ipcress:", followed by these 11 fields:

  • sequence_id β€” the sequence identifier
  • experiment_id β€” the PCR experiment id
  • product_length β€” the PCR product length
  • primer_5 β€” the 5' primer (either A or B)
  • pos_5 β€” position of the 5' primer
  • mismatch_5 β€” number of mismatches on 5' primer
  • primer_3 β€” same field, for the 3' primer
  • pos_3 β€” same field, for the 3' primer
  • mismatch_3 β€” same field, for the 3' primer
  • description β€” a description of the PCR product

(those last three lines up there are the same fields for the 3' primer, in case that wasn't obvious β€” the original lists them grouped together like primer_3 | pos_3 | mismatch_3)

the description field is one of these 4 strings:

  • forward β€” normal product, primer A followed by B
  • revcomp β€” normal product, primer B followed by A
  • single_A β€” bad product generated by primer_A only
  • single_B β€” bad product generated by primer_B only

also there's a human-readable output that gets displayed too, but it's not designed for parsing (peep --pretty down below πŸ‘€).


πŸ’… GENERAL OPTIONS πŸ’…

most arguments have a short form and a long form. the long forms are more likely to stay stable over time, so if you're writing scripts that call ipcress, use the long forms, bestie. that's the move. ✨

  • -h | --shorthelp <boolean> β€” show help. this displays a concise summary of the available options, the defaults, and the values currently set.
  • --help <boolean> β€” this shows all the help options, including the defaults, the value currently set, and the environment variable which may be used to set each parameter. there will be an indication of which options are mandatory. mandatory options have no default and must have a value supplied for ipcress to run. if mandatory options are used in order, their flags may be skipped from the command line (see the examples below πŸ‘‡). and unlike this man page, the info from this option will always be up to date with the latest version of the program. iconic behaviour honestly.
  • -v | --version <boolean> β€” display the version number. also displays other info like the build date and the glib version used.

🌈 FILE INPUT OPTIONS 🌈

  • -i | --input <path> β€” PCR experiment data in the ipcress file format described above.
  • -s | --sequence <paths> β€” specify the sequences. multiple files may be specified here, which reduces the FSM building overhead and makes ipcress run faster than running the process separately. efficiency queen. πŸ‘‘

πŸ”₯ IPCRESS PARAMETERS πŸ”₯

  • -m | --mismatch <mismatches> β€” specify the number of mismatches allowed per primer. heads up though: allowing mismatches reduces the speed of the program, because a large primer neighbourhood must be constructed, and fewer experiments can be fitted in memory prior to each scan of the sequence databases. tradeoffs, babe.
  • -M | --memory <Mb> β€” specify the amount of memory the program should use. the more memory you give ipcress, the faster it runs, because more PCR experiments can be conducted in each scan of the sequence databases. but β€” this does not include memory used during the scan (for storing partial results and sequences), so the actual amount of memory used will be slightly higher. read the fine print fr fr.
  • -p | --pretty <boolean> β€” display results in a human-readable format, not designed for parsing. pretty but not parse-y, got it?
  • -P | --products <boolean> β€” display PCR products as a FASTA format sequence.
  • -S | --seed <length> β€” specify the seed length for the wordneighbourhood for the FSM. if set to zero, the full primer is used. shorter words reduce the size of the neighbourhood, but increase the time taken by ipcress to filter false positive matches. so like, small seed = small neighbourhood = more waiting. πŸ’€

🧚 ENVIRONMENT 🧚

not documented yet. πŸ™ˆ


⭐ EXAMPLES ⭐

  1. ```text ipcress test.ipcress sequence.fasta

this is the simplest way that `ipcress` can be used. baby steps, you got this. πŸ’–

2. ```text
ipcress dbsts_human.ipcress --sequence ncbi30/*.fasta --mismatch 1

compare an input file against a set of fasta files, allowing one mismatch in each primer.


πŸ¦‹ VERSION πŸ¦‹

this documentation accompanies version 2.2.0 of the exonerate package.


πŸ’œ AUTHOR πŸ’œ

Guy St.C. Slater. <guy@ebi.ac.uk>.

see the AUTHORS file accompanying the source code for a list of contributors. shoutout to the whole squad. 🫢


🌸 AVAILABILITY 🌸

the source code for the exonerate package is available under the terms of the GNU general public licence.

please see the file COPYING which was distrubuted with this package, or http://www.gnu.org/licenses/gpl.txt for details.

this package has been developed as part of the ensembl project. please see http://www.ensembl.org/ for more info.


πŸ‘‘ SEE ALSO πŸ‘‘

exonerate(1), e-PCR


okay that's the whole page bestie, go simulate some PCR experiments and slay. this page is from March 2003, and it's the ipcress(1) manual from the exonerate package, version 2.2.0 β€” vintage but still absolutely eating. mwah πŸ’…βœ¨πŸŽ€