Jaimini calculations
Calculate Chara Karakas, Rashi Drishti, Karakamsha, Arudha Pada, Upapada, and Argala from shared placements, one named result at a time.
Jaimini is a school of Jyotisha, not a single calculation. Ascendant exposes each Jaimini result as its own function, and you ask for exactly the one you want. There is no "run Jaimini" call.
| Function | Result |
|---|---|
CharaKarakas.calculate | Seven planetary roles, ranked by degree within a sign. |
RashiDrishti.calculate | The signs a reference sign aspects. |
Karakamsha.calculate | The D9 sign of the planet holding the Atmakaraka role. |
ArudhaPada.calculate | The Arudha Pada of one house. |
Upapada.calculate | The Arudha Pada of the twelfth house. |
Argala.calculate | Supporting and obstructing relationships around a reference. |
Apart from RashiDrishti, which takes a sign, every function takes the
Placements from Chart.generate. None of them needs a moment or location.
This guide runs each one for the same birth and shows how to read the result.
Set up
import {
Argala,
ArudhaPada,
CharaKarakas,
Chart,
Karakamsha,
RashiDrishti,
Runtime,
Upapada,
} from "astro-ascendant";
import { DateTime, ManagedRuntime } from "effect";
const runtime = ManagedRuntime.make(Runtime.MainLayer);
const located = Chart.LocatedMoment.make({
moment: Chart.Moment.make({ date: DateTime.makeUnsafe("2000-01-01T12:00:00Z") }),
latitude: 12.9716,
longitude: 77.5946,
});
const { placements, charts } = await runtime.runPromise(Chart.generate(located, [9]));
const lagnaSign = charts[0].houses[1].sign; // "Gemini"The Jaimini functions read sign positions and degrees from the placements, so the ayanamsa you choose can change their results. See Choose a school and settings. The examples below use the library defaults, and the results are the same for any house system.
Chara Karakas
The Chara Karakas are seven roles given to the seven classical planets in descending order of degree within their signs. The planet with the highest degree is the Atmakaraka, and the lowest is the Darakaraka. Rahu and Ketu take no role.
const karakas = await runtime.runPromise(CharaKarakas.calculate(placements));
for (const role of CharaKarakas.Roles.literals) {
const holders = karakas.assignments[role];
console.log(role, holders.map(({ planet, degree }) => `${planet} ${degree.toFixed(2)}°`));
}For the birth above:
| Role | Planet | Degree in sign |
|---|---|---|
| Atmakaraka | Moon | 19.55° |
| Amatyakaraka | Saturn | 16.62° |
| Bhratrikaraka | Sun | 16.59° |
| Matrikaraka | Mercury | 8.11° |
| Putrakaraka | Venus | 7.79° |
| Gnatikaraka | Mars | 4.19° |
| Darakaraka | Jupiter | 1.48° |
Each role maps to a non-empty list of holders. Ties are exact: planets at the
same degree share every role their tied ranks cover, so a role can have more than
one holder. Always treat assignments[role] as a list.
Rashi Drishti
Rashi Drishti gives the signs that one reference sign influences under Jaimini's sign aspects. It takes a sign, not placements:
const drishti = await runtime.runPromise(RashiDrishti.calculate(lagnaSign));
console.log(drishti.targets); // ["Virgo", "Sagittarius", "Pisces"]Gemini is a dual sign, and its three targets are the other dual signs. The
result's provenance method is movable-fixed-dual.
Karakamsha
The Karakamsha is the D9 sign occupied by the planet holding the Atmakaraka role:
const karakamsha = await runtime.runPromise(Karakamsha.calculate(placements));
console.log(karakamsha.placements); // [{ planet: "Moon", sign: "Pisces" }]The result is a list. If planets tie for the Atmakaraka role, each of them
contributes a Karakamsha sign. The Chara Karakas that led to it are not returned,
so call CharaKarakas.calculate as well if you need them.
Arudha Pada
An Arudha Pada projects a house onto a sign. Count from the house's sign to its lord, then count the same distance again from the lord. Ask for the house you want by number, 1 to 12:
const a1 = await runtime.runPromise(ArudhaPada.calculate(placements, 1));
const a7 = await runtime.runPromise(ArudhaPada.calculate(placements, 7));Each result carries the working, so you can show it:
| House | Source sign | Lord | Lord's sign | Arudha sign |
|---|---|---|---|---|
| 1 | Gemini | Mercury | Sagittarius | Gemini |
| 7 | Sagittarius | Jupiter | Aries | Sagittarius |
The fields are house, sourceSign, lord, lordSign, and sign.
Plain projection only
Ascendant calculates the plain projection, and its provenance method is
plain-projection. It does not apply the classical adjustments for a projection
that lands on the source sign or on the seventh sign from it. In the example,
both Arudhas land on their own source signs, which is exactly where some
traditions apply an adjustment. Apply that rule yourself if your tradition
requires it, and say so alongside the result.
Upapada
The Upapada is the Arudha Pada of the twelfth house, with its own function:
const upapada = await runtime.runPromise(Upapada.calculate(placements));
// { house: 12, sourceSign: "Taurus", lord: "Venus", lordSign: "Scorpio", sign: "Taurus" }Its provenance method is twelfth-house-plain-projection, so the same
plain-projection note applies.
Argala
Argala describes the planets that support or obstruct a reference from the signs around it. The reference is either a sign or Ketu:
const argala = await runtime.runPromise(
Argala.calculate(placements, { kind: "Sign", sign: lagnaSign }),
);A sign reference counts in the ordinary direction. A Ketu reference starts at the sign Ketu occupies and counts in the reverse direction:
const fromKetu = await runtime.runPromise(Argala.calculate(placements, { kind: "Ketu" }));
// fromKetu.referenceSign === "Capricorn", fromKetu.direction === "reverse"The result separates the relations by position. For Gemini:
| Kind | Position from the reference | Sign | Planets |
|---|---|---|---|
| Supporting | 2 | Cancer | Rahu |
| Supporting | 4 | Virgo | none |
| Supporting | 11 | Aries | Jupiter, Saturn |
| Obstructing | 12 | Taurus | none |
| Obstructing | 10 | Pisces | none |
| Obstructing | 3 | Leo | none |
| Secondary supporting | 5 | Libra | Moon |
| Secondary obstructing | 9 | Aquarius | Mars |
Read the fields as supporting and obstructing, each with three relations, plus
secondarySupporting and secondaryObstructing, each with one. The result also
records direction (forward or reverse) and the referenceSign.
Provenance
Every Jaimini result carries a provenance with school: "Jaimini", a method,
and a version. Store it with the result, because it names the exact rule used:
| Result | Method |
|---|---|
| Chara Karakas | exact-degree-shared-roles |
| Rashi Drishti | movable-fixed-dual |
| Karakamsha | atmakaraka-d9-sign |
| Arudha Pada | plain-projection |
| Upapada | twelfth-house-plain-projection |
| Argala | structural-positions |
The version is the date the method last changed, currently 2026-11-01 for all
six. See Provenance and verification.
When it fails
Each function fails with its own typed errors. An evidence error means the placements did not contain exactly one entry for a planet the calculation needs, which points to placements built or edited by hand. Karakamsha and Argala can also fail with a calculation error. See Errors and typed failures.
Ashtakavarga
Calculate Bhinnashtakavarga, Sarvashtakavarga, reduced tables, and Shodhya Pinda from shared placements, and read them by sign and house.
Transit searches
Find the next or previous sign ingresses, longitude hits, house-cusp crossings, and stations of one graha, and attach charts to each event.
