Recombination Frequency Calculator for Two-Point Crosses
The recombination frequency calculator converts offspring counts from a two-point genetic cross into the percentage that show recombinant phenotypes.
Run — free
Enter the number of recombinant offspring and the total number scored, and the calculator applies the standard observed-frequency formula. The result includes the recombinant count, the inferred non-recombinant count, and the recombination frequency as a percentage. It is useful for checking genetics exercises, summarizing cross data, and preparing the first step of a linkage analysis without manually repeating the arithmetic.
Identify recombinant offspring before calculating
Begin by deciding which offspring classes are recombinant for the two loci in the cross. In a typical testcross, the most frequent phenotype classes usually represent the parental combinations, while the less frequent reciprocal classes represent recombinants. Add every recombinant class together to obtain the recombinant offspring count. Then add all observed classes, parental and recombinant, to obtain the total offspring count. The calculator expects those two aggregated counts rather than a list of phenotype classes, so classification remains an experimental and biological decision. Reciprocal recombinant classes should both be included even when their counts differ because of sampling variation. Likewise, do not remove unusual but valid observations merely to make reciprocal classes match. The total must describe the same scored population as the recombinant count. If some offspring could not be classified reliably, decide on an exclusion rule before examining the result and apply that rule consistently to both counts. Clear classification is essential because the arithmetic cannot detect a phenotype placed in the wrong category. Once the counts are sound, the calculation itself is direct and reproducible.
Understand the percentage and its limits
Recombination frequency is calculated as recombinant offspring divided by total offspring, multiplied by one hundred. For example, a frequency of eighteen percent means that eighteen percent of the scored progeny had recombinant combinations for the two markers. In a conventional two-point linkage analysis, lower observed frequencies are consistent with loci that are closer together, while a value near fifty percent is consistent with independent assortment or loci so far apart that multiple crossovers obscure their linkage. The percentage is an observed sample statistic, not a direct record of every crossover event. Double and other even-numbered crossovers between distant loci can restore the parental marker arrangement and therefore go uncounted in a two-point cross. For that reason, recombination frequency should not be interpreted as an exact physical distance across all ranges. It is often treated as an approximate map distance in centimorgans only for relatively short intervals where undetected multiple crossovers are uncommon. This calculator deliberately reports the frequency itself and does not apply a mapping function or claim a chromosome distance.
Check and report the result responsibly
Before using the result, verify that the recombinant count does not exceed the total and that the total is greater than zero. The calculator enforces both conditions and accepts only nonnegative whole-number counts because offspring are discrete observations. It returns the inferred non-recombinant count as an additional consistency check: that value plus the recombinant count must equal the total entered. When reporting the frequency, retain enough precision to show the calculation without suggesting unrealistic certainty. The calculator rounds only beyond six decimal places, while a laboratory report may reasonably use fewer digits according to sample size and course conventions. Include the underlying counts beside the percentage so readers can distinguish, for example, a result based on twenty offspring from the same percentage based on two thousand. Biological conclusions should also consider sampling uncertainty, cross design, viability effects, scoring errors, and whether the marker classes were assigned correctly. For formal linkage mapping, compare reciprocal classes, evaluate larger samples, and use three-point crosses or suitable mapping functions when multiple crossovers may matter. The returned percentage is a transparent summary of the observed two-point cross, not a substitute for those broader analyses.
What you can do with it
Check a genetics exercise
Confirm the recombinant percentage from phenotype-class totals in a two-point testcross.
Summarize laboratory cross data
Turn validated offspring counts into a consistent percentage for a report or data table.
Screen for possible linkage
Use the observed frequency as an initial indicator before performing a fuller linkage analysis.
FAQ
What formula does the calculator use?
It divides recombinant offspring by total offspring and multiplies the result by one hundred.
Which offspring count as recombinant?
They are the offspring with non-parental allele combinations for the two loci. Their identification depends on the cross design and phenotype classes.
Can recombination frequency exceed fifty percent?
The raw observed calculation can exceed fifty percent because of sampling variation or classification issues, although the expected upper limit used in classical linkage interpretation is fifty percent. Review the class assignments and experimental design before interpreting such a result.
Is the percentage always equal to map distance in centimorgans?
No. It is a useful approximation for short intervals, but multiple crossovers cause two-point recombination frequency to underestimate longer distances.
What does the API calculation cost?
Each API request costs $0.002. The same deterministic calculation can also run in the browser.
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/bio/recombination-frequency \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"recombinant_offspring":184,"total_offspring":1000}'const res = await fetch("https://api.kit.forhosting.com/bio/recombination-frequency", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"recombinant_offspring": 184,
"total_offspring": 1000
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/bio/recombination-frequency",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"recombinant_offspring": 184,
"total_offspring": 1000
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/bio/recombination-frequency", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"recombinant_offspring":184,"total_offspring":1000}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"recombinant_offspring":184,"total_offspring":1000}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/bio/recombination-frequency", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"recombinant_offspring": 184,
"total_offspring": 1000
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "bio.recombination_frequency",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |