AstroPatterns - a scanner for astrological constellations
AstroPatterns is a a tool for quickly finding astrological constellations through the time. It is particularly helpful in the search for resonances between two horoscopes. Such resonances are of interest in both branches of astrology: in individual as well as in mundane astrology.
Some typical use cases are:
- You want to know all years in which the native had or will have a solar revolution with Sun or Moon in the seventh field, connected by a Trine aspect to Venus, as this repeats a certain constellation of the natal chart.
- Say you have a database of artists. You would like to know all members of this database whose horoscope is in strong resonance to the horoscope of the Earth Shift (July 17, 1802, 22h48m27s UT).
- You are interested in your "astrological relatives" — all members of a chart collection sharing some constellations with you - having e.g. Sun in Capricorn in an angular house and at least one of Moon, ASC and MC positioned in the earth element.
- In a list of events connected to the history of the United States, you would like to find out the events having the highest number of connections to the chart of the USA.
- You would like to rectify a chart: From two or three options for a birth chart, you would like to find out the candidate which correlates most with some important events in the native's life.
In the middle ages, an astrologer was busy with lots of astronomical computations — tasks like casting charts, computing directions, profections, solar revolutions and much more — before he finally could apply his "core competence": the horoscope interpretation itself. If the French astrologer Alexandre Volguine is right, the ancient astrologers
"always started studying the epoch by means of directions and erected as many horoscopes as possible for the individual case at hand: Solar and lunar revolutions for ten years. Also, an individual horoscope had to be compared with mundane horoscopes - with the eclipses, syzygies and great conjunctions. All celestial phenomena of the times in question had to be scanned in relation with the individual nativity and the solar horoscopes..." 
With the advent of computers, life became easier for astrologers. Today, there is an abundance of computer programs, displaying a horoscope chart on a mouse click, together with all the relevant auxiliary horoscopes. On another mouse click, the astrologer is served with a complete list of transits or even directions (i.e. "progressions" for our native English astrologers), which would have kept him busy for hours in the mid of the last century.
But even with high quality astrological programs at hand, there would be still a lot of work involved if one would follow the outline of Alexandre Volguine: The horoscope computation being quick nowadays, I was missing a program with the ability to evaluate a large series of horoscopes, looking for some astrological constellation. This feature is important in many situations. To have it available now with AstroPatterns, opens the horizon of a more intense astrological research.
The concept - Patterns meet Ranges
There are two central notions in AstroPatterns: Range and Pattern. The main action of AstroPatterns will be to check the presence of a Pattern in a given Range. A Range is basically a rule to produce a series of horoscopes. A Pattern is another kind of rule that can be evaluated on a horoscope, resulting in a score value (or in a simple boolean value: "true" meaning the Pattern holds for this horoscope, otherwise it results to "false"):
A Range is any notion connected to a repetition in time. It can be thought of as a list of horoscopes or merely of dates, given either explicitly or by a certain algorithm. A Range can be iterated or listed. Some examples of Ranges are
- A ListRange is simply a list of horoscopes or, if no place is given, of Julian date values. It may be given from an arbitrary text file or from standard input. Also, the output of another AstroPatterns call, may be used to produce such a list.
- An IntervalRange given by a Julian start date, an end date and the number of days between two successive elements. This is a more typical example, since it only consists of a recipe how to generate the data and doesn't keep these dates explicitly.
- A ConjunctionRange gives the dates of all conjunctions of two planets (or other factors) within a certain interval.
- Similarly, an IngressRange scans for a customizable kind of sign ingresses, e.g. the Sun's Aries ingresses used by many mundane astrologers for yearly predictions.
- There are many more Ranges, see the doc on Ranges for all the Range types that are currently implemented.
While the Range defines the set of horoscopes to be analyzed, the Pattern defines what we are looking for. The Pattern will then be applied to the Range, resulting in a hit list or in a subset for which the Pattern can be detected. There are four notions of Pattern, in increasing generality:
- The ElementPattern counts how many astrological objects are positioned in one of the four astrological elements - in fire signs, earth signs, air signs or water signs. This is a very easy Pattern which doesn't even need a reference horoscope.
- The ResonancePattern counts the different inter-aspects between a horoscope with a fixed reference horoscope. It can count transit resonances, returning aspects, aspect receptions or any combination of these categories, optionally weighted by the current mundane positions of the planets.
- The ConstellationPattern will be the one that you most frequently use if you want to explore a set of horoscopes for a constellation that you already know. For example, you can look for all horoscopes of the given Range having the Sun in an angular house (I, IV, VII or X), and being in a water sign, where at the same time the Moon is in a trine aspect to Neptune, and the Ascendant is somewhere in the zodiac zone between 7° and 24° Sagittarius. Even a search for midpoint aspects is possible (like Mars/Saturn = Ascendant, or even Mars / Saturn = Jupiter / Venus ).
- The maximum flexibility is provided by the FreePattern. Using the FreePattern, you can define yourself the score function which AstroPatterns should optimize. To achieve this flexibility, however, you have to define your rule in a programming language. When working with AstroPattern's Excel UI, Visual Basic would be an appropriate choice. But you can use whatever language you prefer for defining your own Patterns (the only requirement is that the language supports function references, so that your custom score function can be passed into the AstroPatterns API).
As a working example for the Excel UI of AstroPatterns, we will have a look at a claim of the German astrologer E. H. Troinski (who added the tertiary progressions to the instrumentarium of prognostical astrology). He claimed that the Pattern
Saturn in Ten, Mars in Twelve and Sun in One
in an Aries ingress or another relevant horoscope of mundane astrology with certainty is connected with dramatical political changes .
For the Sun's Aries ingress, there is no special Range. We can use the transit Range, however, specifying the Sun as Planet and the longitude 0° as parameter. Since Troinski's Pattern is a ConstellationPattern, we open the dialog "Run Settings" and fill it with these data:
In the tab ConstellationPattern, we now directly enter Troinski's formula in a machine-readable format which nevertheless can be read and understood easily by astrologers:
Going back to the Workplace tab, we fill out the missing parameters. We would be interested in all Vernal ingresses of Sun in the time span from 753 B.C. up to 1800 for Rome. We therefore enter the "start time" and "end time" accordingly. For the reference place, we use 12.5° East and 41.9° North as rough coordinates. Hitting "compute", gives the result after a few seconds:
For the given time span, this is a complete list of the spring equinoxes of the Sun having Sun in I, Saturn in X and Mars in XII. It amazingly looks af if the genuine Roman time (including the empire of its follower, the Roman-catholic church) has been left out by Troinski's Pattern! The two years showing this constellation are of no particular importance in Roman history. It comes out that Troinski had miscomputed the house cusps for years like 44 B.C. (Cesar's assassination) which led Troinski to his hypothesis.
A further research would look at other Ranges, for example at syzygies instead of Vernal ingresses, or would try to change in some manner Troinski's definition of critical constellation. But please appreciate how quickly claims like that of Troinski can be verified (or falsified) using AstroPatterns.
The interactive shell apc+
AstroPatterns is designed as a library which can be connected to an arbitrary User Interface. Besides the Excel worksheet, there is a REPL (read-evaluate-print loop) shell for AstroPatterns called apc+. Refer to the apc+ documentation for a detailed users' guide. For this introduction, it suffices to show you how the above task could have been done with the console program apc+.exe:
Observe that the times are different. As indicated by the labels, the output of the Excel worksheet is in Ephemeris Time (ET), whereas the lists of apc+ are displayed in Universal Time (UT). The difference is called Delta T. As you see, in ancient times this difference already amounts to several hours. Thus it is very important not to confuse UT with ET and always to keep track of the time scale in which you express your times.
References  quoted from A. Barbault, Astrologische Zukunftsdeutung - Transite, M&T Astrodata, Zürich 1987, translated into English by the author.
 E. H. Troinski, 1001 weltpolitische Horoskope, Baumgartner Verlag, Warpke/Billerbeck 1955, p. 27 pp.