The AstroPatterns User's Guide
The AstroPatterns User's Guide
AstroPatterns.xls is the Excel workbook for AstroPatterns. It is the main User Interface for
AstroPatterns. Customizing and data input are distributed over several worksheets.
apc.exe is a command-line tool for calling some AstroPatterns functions. It is a predecessor of apc+.exe but
may still be useful for some very simple calls of AstroPatterns (type ap -h to get help on its options).
http://astropatterns.sourceforge.net/guide.html 1/22
11/26/2018 The AstroPatterns User's Guide
apc+.exe is a flexible interactive shell for AstroPatterns, accepting an astrological programming language as
input. See the apc+ Documentation for details.
astropatterns.dll is the core library of AstroPatterns. It contains all the logic and functionality exposed in this
documentation. The other programs of the folder like apc+ or AstroPatterns.xls only provide different kinds of
access to these functions – these functions themselves being implemented in astropatterns.dll.
davdb.csv is an extract of the Deutscher Astrologen-Verband database, initiated and mainly assembled by Dr. Peter
Niehenke. The extract contains the data in the simple format required by the ListRange of AstroPatterns: Using
a Perl program, the Julian date, longitude and latitude of the first A93/B93 record for the person in question have
been extracted, together with the string "Last name, first name" which is used as label. davdb.csv can be used as
direct file input for the ListRange. There is a caveat: 1'149 records of the AAF file could not be transformed with the
script and are therefore missing in this CSV file. The reason was that no #B93 part of the record was present, so
the geographical longitude and latitude could not be extracted. We remain with 27'876 horoscopes, a big part of
them collected by the famous Michel and Françoise Gauquelin. The file must not be used commercially and is
subject to license terms.
HoroGraphic.exe is a small Windows program for visualization of horoscopes. It displays one or two horoscopes, the
user can control its content by some keys and the clipboard, as described in the HoroGraphic documentation.
swedll32.dll is the core library of the Swiss Ephemeris, containing the algorithms for the computation of the
planetary positions. It is part of the Swiss Ephemeris distribution and subject to its own license. It is part of the
release only as a fallback. Usually, you can instruct Windows to look for the Swiss Ephemeris library in your sweph
folder. If you don't do this, Windows will take the DLL contained in this folder.
test.exe is an executable containing some self-test of the library. If you start it in a MS-DOS console window, it
should execute and pass some 30 or 40 automatical tests. This program exists only for diagnostical purposes.
locations.txt is a list of locations, mainly in Germany, in a format suitable for the console programs apc.exe and
apc+.exe (for the Excel Sheet, this file is not used).
AstroPatterns needs not only to find the ephemeris files but also the library swedll32.dll which contains the
executable code of the Swiss Ephemeris calculation algorithms. To achieve this, you may either add the
subdirectory sweph/bin to the environment variable PATH of your computer. If you don't do this, AstroPatterns
will use the current version of the DLL (1.73) which I have made part of the AstroPatterns distribution.
Source code
The source code is publicly available on the sourceforge CVS repository of AstroPatterns. The web interface of
the CVS is found on http://astropatterns.cvs.sourceforge.net/viewvc/astropatterns/. It contains the C++ code of
the DLL as well as the code for HoroGraphic and apc+. Also, the VBA code of AstroPattern.xls and this documentation
are under version control.
http://astropatterns.sourceforge.net/guide.html 2/22
11/26/2018 The AstroPatterns User's Guide
The Visual Basic part of the workbook contains the glue code necessary for calling the AstroPattern functions, as
well as input checks, parsing of constellation formulae, etc. Since Visual Basic macros can be abused for writing
malware, you will get a macro warning when opening the Excel workbook the first time: You are asked whether you
really want to process the Visual Basic code of this workbook. In order to use AstroPatterns, you need to
confirm this question.
The control of AstroPatterns.xls is spread over several worksheets. These worksheets have specific names
by which they are addressed in the coding. Also, the input areas are expected to be in certain cell Ranges. Hence
you are free to add more sheets to the workbook, but you shouldn't change the names or layout of the existing
worksheets. For some sheets, I have introduced a sheet protection (with empty password) - just to prevent that
you accidentally change cell contents.
After opening, AstroPatterns.xls will automatically navigate to the Workplace sheet. As start date and end
date, we enter 2010. This tells AstroPatterns to put the allowed time interval from January 1, 2010 until the
end of December 31, 2010. The field Max Size can be used to control the length of the list to a certain maximum. If
you look for the charts giving the highest score for a certain Pattern, it will accelerate the application significantly if
you bound the list size here. In the case at hand – computing syzygies – we know that the list is bounded by 24
anyway: There can be no more than 24 syzygies in a year. It is therefore of no relevance to impose a bound here.
We leave the field empty.
Next, we open the Run Settings dialog and choose "Syzygy" for Range and "No Pattern":
In the section to the right which is reserved for data of a reference horoscope, we only enter some geographical
coordinates. Since for syzygies, no reference horoscope is required, this goes OK. The geographical coordinates will
nevertheless serve as base for the chart display in the hit list.
Before we finally hit Compute, the blue control area finally looks as follows:
The computer then puts the result into the worksheet, a list of 24 dates, as expected:
http://astropatterns.sourceforge.net/guide.html 3/22
11/26/2018 The AstroPatterns User's Guide
The list shows for each hit the Julian date – a successive day number – then the Calendar Date and the Ephemeris
Time (ET). There is no Score in this case - because score values are only computed in the presence of Patterns: In
our simple example, we didn't specify a Pattern.
Right after the Score column, there are three more columns in the result list which are only used with ListRanges:
The field Label is used as a textual identifier. The two columns for geographical longitude and latitude allow for
ListRanges to enter an individual geographical location for each horoscope of the set.
If you click into a result line, the HoroGraphic window should pop up, showing you the horoscope for this date. If
you go up or down with the arrow keys, the chart graphic will be updated. For example, for the February Full Moon,
you get the graphic
http://astropatterns.sourceforge.net/guide.html 4/22
11/26/2018 The AstroPatterns User's Guide
showing the precise opposition of Sun and Moon, up to one degree at the horizon axis for Berlin, Jupiter being in
conjunction up to 10' of arcs with the Sun at the Descendant.
Why Berlin? Well, the coordinates are taken from the cells of column F, where you can enter the data of a reference
horoscope.
After entering the date and time (UT), the Julian day number (JD in ET) is computed and placed in the cell aside.
The Julian Day number is a system of time measurement which basically counts the days (measured in ET, or more
precisely: in terrestrial time (TT)) that passed since January 1, 4713 BC. This is useful, for example in calculating
differences of dates. The cell belows shows the corresponding Ephemeris Time. For this year - 1871 - it does not
differ from the Universal Time. But if you change the date to 1.1.1000, say, you will see that the difference already
increased to about 25 minutes.
Due to the lack of an integrated location database in AstroPatterns, I have added a link to a web page which
basically presents the Google Maps geocoding services in a usable frame. You can use it to get the coordinates of
the city by simply entering the name of that city. You can then transfer the geographical latitude and longitude
values in decimal format into the Excel sheet. Only requirement for using this service: You need to be online.
As soon as we entered date and time of the reference horoscope, HoroGraphic will show the Germany chart in the
inner wheel, while the horoscope of the currently selected line flips to the outer side. If you would prefer it the
http://astropatterns.sourceforge.net/guide.html 5/22
11/26/2018 The AstroPatterns User's Guide
other way, you can put the focus on HoroGraphic by clicking on its window area and then entering the key t for
"toggle": Then, inner and horoscope change their roles.
However, in the presence of a reference horoscope, one would usually like to have the reference horoscope in the
inner wheel. Configured this way, one can easily "zap" down from chart to chart, seeing the current constellations
in the outer wheel. Since the zodiac and the axes are fixed like the inner horoscope, one can focus on the journey
of the planets and which aspects they form to the inner horoscope. In the syzygy example in relationship to the
Germany horoscope, the following new moon from October 7, 2010, looks particularly interesting, with a
conjunction of Mercury and Saturn at the Ascendant, the syzygy itself being in the first house:
Configuring AstroPatterns
Overall settings
In the worksheet General settings, some global variables can be set that are valid through the whole session.
Ephemeris Path.- This is the name of the directory containing the compressed ephemeris files used by Swiss
Ephemeris. It is possible to specify a relative name: You don't need to specify the full directory path. If you omit
the drive name (C:) like here, the system takes the drive on which the current program is running (which may be a
memory stick with varying drive letter).
Verbosity (0..9).- Controls how much log output will be produced during Pattern evaluation – while 9 is the
highest level of verbosity, 0 means to generate no output at all. You can inspect this output in the Log worksheet.
Don't be afraid that a verbose run could affect the performance: On whatever value you have set the verbosity
level - the iteration on the Range is run in silent mode. Only after that, when the Top N list is returned to the caller
and the scores are recomputed for the list display, the verbose mode is switched on.
Geocentric/Heliocentric.- This is a very strong switch. All planetary computations performed at any place in the
AstroPatterns library will be based on the selected system here. Even the visualization program HoroGraphic,
although not part of AstroPatterns itself, works with the mode you entered here.
House system.- You may choose between Placidus (P), Koch (K), Regiomontanus (R), Campanus (C), Equal (A)
and Vehlow (V). All calculations of AstroPatterns will then be performed using the selected house system.
Contrary to the helio/geo flag, however, the visualization program HoroGraphic only works with Placidus cusps.
http://astropatterns.sourceforge.net/guide.html 6/22
11/26/2018 The AstroPatterns User's Guide
In the Planets worksheet, you find a list of the planets which should be used by AstroPatterns.
You are by no means restricted to the planets listed there: You are free to extend AstroPatterns by any planet
known to Swiss Ephemeris. Just invent a two-letter acronym for your object, enter the Swiss Ephemeris object
number and append it to the list:
Here, "15" is the Swiss Ephemeris number of Chiron. You will find a complete list of available objects in the Swiss
Ephemeris documentation. Here is a list of some popular objects you could add:
Planet SE Number
Mean Lunar Node 10
True Lunar Node 11
Lilith (Mean Lunar Apogee) 12
Chiron 15
Eris (2003 UB313) 146199
Quaoar (2002 LM60) 60000
Ceres 10001
Pallas 10002
Juno 10003
Vesta 10004
Pholus 15145
It should be noted, however, that the application HoroGraphic only displays a fixed set of planets - a customization
of HoroGraphic is not (yet?) possible. But this is only a visualization app. The core functions of AstroPatterns,
the evaluation of the different Patterns and Ranges, always uses the planet set as defined in the Planets worksheet.
AstroPatterns will scan the Planets worksheet until it detects an empty line. This means, you may restrict the
number of planets used in AstroPatterns' calculations by simply inserting an empty line:
If you insert an empty line after the definition of Saturn, as shown in the screenshot, AstroPatterns will only
work with the classical seven astrological planets.
http://astropatterns.sourceforge.net/guide.html 7/22
11/26/2018 The AstroPatterns User's Guide
The short text of the planet should be unique. It is used at several places in AstroPatterns: In the
ConstellationPattern worksheet, you can use the short texts for astrological formulae like SO OPP MO. In some
situations, the short texts will be used for logging (the log can be inspected on the Log worksheet), giving more
detailed information on how a particular horoscope achieved a certain score. Also, the long text of a planet is used.
For example, in the Run Settings popup, the argument listboxes are populated with the planets' long names if a
planet is required.
The column essential strength gives a strength value > 0 of the planet by its nature, i.e. independent of its position
in sign and house. The values for Sun, Moon and Mercury till Pluto have been taken from Koch's Aspektlehre nach
Kepler [1], p.73. They can be used in Patterns (and are in use, for example in the ElementPattern).
The values in the column orb base are used for orb determination, see below. Initially, their values are simply a
copy of the essential strength value. But they can be changed independently from the essential strength, which
allows to set priorities in transit score computations using planetary strength in different ways, without changing
the underlying orb criteria.
Customizing Aspects
The Aspects worksheet is used for defining the aspects to be considered and to customize their names and
properties. This aspect customizing is only used in the implementation of Patterns. It is not relevant for Ranges like
AspectRange (where you enter the angle directly).
a name,
an abbreviated name (which will be used in formulae like those of the ConstellationPattern),
its angular value,
its base number which is used for calculating the strength of an aspect between two planets (see below).
Similar to the Planets worksheet, the program stops scanning aspects as soon as it encounters a row with no name
entered. So, as described earlier, you can insert an empty line somewhere in the aspect customizing — the system
will take into respect only the aspects situated above that empty line.
Here, orb_base(aspect) is a kind of aspect strength which can be defined in the Aspects worksheet. On the other
hand, orb_base(pl1) and orb_base(pl2) are the values taken from the orb base column in the planets' customizing.
Our modification of [1] consists in balancing out the asymmetry of the classical orb definition by using the average
of two orbs. To illustrate this, let's consider an example: Let Pluto and Sun be in a distance of 96° of ecliptical
longitude. Are Sun and Pluto forming a square aspect or not? According to [1], the answer depends: If you
regarded the Sun as approaching the square to Pluto (Sun Square Pluto), the aspect would not be formed, since a
square aspect of Pluto only has an orb of 3*1.5 = 4.5. On the other hand, Pluto has entered into the square of Sun,
since square aspects of Sun throw an orb of 3*3 = 9 degrees.
But nowadays, the difference between these two aspects is usually neglected. A square of Sun and Pluto is – in the
eyes of the majority of astrologers – equivalent to a square of Pluto and Sun. To be in line with this, we take the
average of the two orbs. In the example, this amounts to an orb of 3 * (1.5 + 3) / 2 = 6° 45' for square aspects
between Sun and Pluto.
As for the strength of an actual aspect: An exact aspect will have the maximum strength. Since a higher orb
corresponds to a more significant aspect, the strength that we assign to an exact aspect will be the value of its orb.
The more the difference from exactness, the smaller will simply be the strength. Finally, when the boundary of the
orb is reached, the strength will be zero. Thus, we have the following formula for the aspect strength:
http://astropatterns.sourceforge.net/guide.html 8/22
11/26/2018 The AstroPatterns User's Guide
where actual_angular_diff means the difference between the longitudes of the second object and the the first
object's aspect. This can be visualized by the following graph:
Of course, there are more sophisticated ways of aspect analysis, as described by E. C. Kühr [2]. It might be
preserved to future releases of AstroPatterns to implement this kind of aspect analysis: Among other things,
Kühr takes into respect the actual Sun's or Moon's diameter, the ecliptical latitude of the objects, the fact whether
the aspect is in application or separation (which has an influence on the strength of the aspect) and whether there
is a sign change involved (for aspects that are integer multiples of 30°, f course).
This works as a cutoff parameter. All aspects having a computed strength below this value will be ignored (i.e. will
be treated as if there were no such aspect). The purpose of this parameter is to help you focus on strong aspects.
Customizing mundane positions
Apart from its essential strength as derived from the nature of the object itself, there also is an accidental strength
for a planet, resulting from its zodiacal and mundane position, i.e. the position of the planet in the circle of houses:
A planet near the axes will – in the opinion of most astrologers – be more important than at other places of the
circle of houses.
In the Mundane Positions worksheet, you have two options to define the mundane strength: Either in a continuous
or in a discrete style. In the continuous style, the strength of a mundane position will be read off from a smooth
curve, whereas in the discrete style only the house position (1, 2, ... 12) decides about the strength.
In the mid of the sheet – at row 45 – you will find the switch between these options. Setting the flag to 1, house
positions will be used, as customized in the part below of this row. If you enter a zero here, the smooth curve will
be used that you defined in the upper part of the sheet:
http://astropatterns.sourceforge.net/guide.html 9/22
11/26/2018 The AstroPatterns User's Guide
Your input is extended periodically by some rows below and above your input, to allow a visualization with Excel's
built-in non-periodical interpolating spline: These are the rows with the negative degree values and the values >
360°. They are not ready for input but are transferred from your input data. You find the graphic of how your curve
looks to the right of your input column:
You can use the discrete mundane positions as a filter for certain house positions by assigning zero to all houses
you aren't interested in (but think of using the ConstellationPattern directly for such a task instead).
The ElementPattern
Extending the syzygies example, we would like to know the horoscopes of this series having a maximum
component of the Earth element. For questions of this type, you can use the ElementPattern. If you switch to the
ElementPattern worksheet, you see the configurations that are possible for an ElementPattern scan:
http://astropatterns.sourceforge.net/guide.html 10/22
11/26/2018 The AstroPatterns User's Guide
In the first cell, you enter the element you are searching for, simply coded as a a number: 0 for Fire, 1 for Earth, 2
for Air and 3 for Water.
You can activate a weighting by mundane position. If active, each planet that is present in the element will
contribute with the strength of its mundane position, as customized in the Mundane Positions worksheet. If
inactive, the number of planets will simply be counted.
There are switches to include the position of ascendant and medium coeli into the element count.
If we set the switches as in the screenshot above, this means we are looking for syzygies in 2010 containing as
many planets in the earth element as possible (calculated with our weight customizing, which makes Sun and Moon
twice as strong as Neptune and Pluto). Now, we restrict the Max size to ten – we are only interested in the first ten
horoscopes. After hitting Compute, we get the following top 10 list:
This time, the Score column is filled. The horoscope with the highest score is that of the Taurus new moon, which
was somehow to expect since Sun and Moon have the highest weights (3 points). Furthermore, the horoscope
shows Mercury (2 points), Saturn (2.5 points) and Pluto (1.5 points) in Earth signs.
If you switch on the weighting by mundane position, giving the highest score to angular houses, the list changes,
but the first place is still the horoscope of the new moon in May:
http://astropatterns.sourceforge.net/guide.html 11/22
11/26/2018 The AstroPatterns User's Guide
But the New Moon now has a new score of 30 points. How is this score computed? If you want to know how
AstroPatterns achieved its results, you may have a look at the Log worksheet. For each of the top N members,
the ElementPattern collects a detailed table explaining the result:
--- Score computed for 14. 5.2010 1h 4m23s : 30.000000
SO | 23TA 9'11" | 47.26 | 2.0 || 0.0 | 3.0 | 0.0 | 0.0 || 0.0 | 6.0 | 0.0 | 0.0 || 6.0 |
MO | 23TA 9'11" | 47.26 | 2.0 || 0.0 | 3.0 | 0.0 | 0.0 || 0.0 | 6.0 | 0.0 | 0.0 || 6.0 |
ME | 2TA49'55" | 27.91 | 3.0 || 0.0 | 2.0 | 0.0 | 0.0 || 0.0 | 6.0 | 0.0 | 0.0 || 6.0 |
VE | 22GE47'43" | 91.58 | 3.0 || 0.0 | 0.0 | 2.0 | 0.0 || 0.0 | 0.0 | 6.0 | 0.0 || 0.0 |
MA | 18LE 7'35" | 167.50 | 1.0 || 2.5 | 0.0 | 0.0 | 0.0 || 2.5 | 0.0 | 0.0 | 0.0 || 0.0 |
JU | 26PI17' 7" | 7.19 | 3.0 || 0.0 | 0.0 | 0.0 | 2.0 || 0.0 | 0.0 | 0.0 | 6.0 || 0.0 |
SA | 28VI 4' 7" | 187.97 | 3.0 || 0.0 | 2.5 | 0.0 | 0.0 || 0.0 | 7.5 | 0.0 | 0.0 || 7.5 |
UR | 29PI30'56" | 8.61 | 3.0 || 0.0 | 0.0 | 0.0 | 2.0 || 0.0 | 0.0 | 0.0 | 6.0 || 0.0 |
NE | 28AQ37' 1" | 354.66 | 1.0 || 0.0 | 0.0 | 1.5 | 0.0 || 0.0 | 0.0 | 1.5 | 0.0 || 0.0 |
PL | 5CP 5' 1" | 293.18 | 3.0 || 0.0 | 1.5 | 0.0 | 0.0 || 0.0 | 4.5 | 0.0 | 0.0 || 4.5 |
Score without axes : 30.0
A Pattern may (or may not) write specific informations into the log. In the case of the ElementPattern, we get a
table displaying for each planet
In the example, you see Sun and Moon achieving each 6 points (essential strength 3, multiplied by house position
strength 2), Mercury again 6 points (essential strength 2, times house strength 3, it is in an angular house!),
Saturn in an angular house (3 points) times its essential strength (2.5 points) contributing 7.5 points, and Pluto,
likewise angular (3) with essential strength 1.5, adds 4.5 points, yielding a total of 30 points.
Maybe you think Pluto should have a higher essential strength, or you only want to take angular planets into
account – no problem: Simply change the settings in the PlanetSettings and/or MundanePositions worksheet and
re-run the computation. The Compute function of the Workplace sheet always uses the current settings you have
made in the other sheets. You will see that even the house system chosen in the General worksheet has a strong
influence on the result: If you choose Vehlow (V) instead of Placidus (P), the Capricorn new moon from January 15,
2010 will be at the top of the list.
The ConstellationPattern
The ConstellationPattern is much more flexible than the ElementPattern and thus has a wider range of uses. The
Excel workbook has a built-in formula parser which allows to combine certain elementary Patterns to more complex
Patterns.
Observe that the ability of searching aspects from midpoints to midpoints means that we can search for "tetrads"
as they are used in the Hamburg school and in cosmobiology: ma/sa con so/mo is nothing else than what would be
written down as ma/sa = so/mo in the Hamburg school.
You can combine these elementary constellations using the logical operators and and or. You may use brackets to
group your expression (even nested brackets are allowed). Here is a more complex example:
http://astropatterns.sourceforge.net/guide.html 12/22
11/26/2018 The AstroPatterns User's Guide
In the top area of the sheet, there is a button Check input which checks your formula for syntactic correctness and
helps detect typos.
The ConstellationPattern in the screenshot is to be spelled out as follows: Find all horoscopes of the given Range,
having
If we run this Pattern for our example – the 2010 syzygies – we get the following list:
Since we have a Pattern built of boolean conditions, this is not a hit list! The first element of the list is in no way
"the best fit" of the search. It is simply one of the hits, not more. Its rank is totally equal to all the other hits of the
list. We can see this from the Score column: All the hits have the same score, the value 1 corresponding simply to
true, meaning the Pattern to be satisfied. We see that only four of the 24 syzygies happen to meet our complex
ConstellationPattern.
Weighted ConstellationPatterns
You can assign a weight to each elementary constellation and combine them with the plus operator:
http://astropatterns.sourceforge.net/guide.html 13/22
11/26/2018 The AstroPatterns User's Guide
Here, we are looking for conjunctions of Mars with Jupiter, Saturn or Uranus, and in the same horoscope a
prevalence of the main astrological factors in the air element. Differently to the and and or operators, the weighted
sum operator is not a boolean Pattern, you really get a hit list when running it. An aspect gets a score by its
exactness, as explained above in the section Customizing Aspects and Aspect detection. Here, we multiply this
score by 2. The boolean expressions like "Sun in air" will give the value 1 if satisfied. To scale this with the aspect
score, we weight them with the weight factor 8.
Planet clusters
There are two Patterns dedicated to detecting planet clusters. One of them, the StelliumPattern, can be used as a
building block for more complex Patterns in the ConstellationPattern worksheet. The other Pattern, scoring a chart
with André Barbaults cyclic index, can only be entered directly in the Workplace worksheet.
The StelliumPattern
As a simple example, we will ask for those conjunction charts of Jupiter and Saturn in the last 2000 years showing
a cluster of the ten standard astrological "planets". In the Run Settings dialog, we enter the aspect Range combined
with the ConstellationPattern:
http://astropatterns.sourceforge.net/guide.html 14/22
11/26/2018 The AstroPatterns User's Guide
For simplicity, we use the ConstellationPattern worksheet only for specifying the StelliumPattern (we could also
decorate this Pattern by further elementary conditions from the enumeration above). The StelliumPattern requires
the maximum extent of the cluster as parameter. We set this argument to 150 degrees:
Now, after hitting Compute in the Workplace sheet, we obtain the following hit list. The leading conjunction is a
minima, not an element shift, dating back to 452. Nevertheless, the chart is interesting. The conjunction itself is
displaced from the rest of the planets, which would build an even much closer stellium.
The score of the StelliumPattern is the difference from the maximum extent. The top chart having a score of 51.7,
means that the cluster itself has an extent of 150-51.7 = 98.3 degrees. It is thus significantly closer than the
stellium of the 1980 conjunction which is located on rank 3 of the result list. But nevertheless, the 1980 conjunction
is more important since it is a shift – it is the first conjunction in the air element, after almost 200 years of earth
conjunctions.
http://astropatterns.sourceforge.net/guide.html 15/22
11/26/2018 The AstroPatterns User's Guide
When applying the Pattern to the example Range of Jupiter-Saturn conjunctions between 0 and 2200, we get the
following result:
http://astropatterns.sourceforge.net/guide.html 16/22
11/26/2018 The AstroPatterns User's Guide
Thus, the 1980 shift is even less significant when looked at with Barbault's cyclic index. Indeed, the cyclic index and
the ClusterPattern have different focus: The former looks for as many planets being as close together as possible,
but an outlier positioned far aside doesn't deteriorate the score too much. On the other hand, for the
ClusterPattern every planet counts, and an outlier can spoil the chart's score completely.
The ResonancePattern
With the ResonancePattern, you are able to compare the charts produced by the current Range with a reference
chart. Contrary to the ConstellationPattern, you do not fix in advance the aspects you are looking for but let the
Pattern itself find the relevant aspects for you. For most choices, there is a repetition criterion: Except for the
option Simple Transits, an aspect of a current planet to a planet in the reference chart will not be handled as a
resonance by itself. The aspects of the current planets will only count as resonance if there is some kind of
repetition when comparing with the reference chart.
The ResonancePattern allows the following choices for the kind of repetition:
A current planet forming an aspect to a natal planet, repeating an aspect that it already had in the natal chart. The
nativity shows an aspect SO SQU MA, while the current MA is in opposition to the natal SO. As in the other kinds of
resonance, the nature of the aspect is not taken into account (but you can influence the aspects to consider using
the AspectSettings worksheet). This is what we call a transit resonance.
A current planet forming an aspect to another current planet, thus repeating a linkage that already existed in the
natal chart. Example: Current Jupiter forming a trine to current Saturn, where already the natal chart showed a
conjunction of Jupiter and Saturn. This is called a returning aspect.
A current planet forming an aspect to a natal planet, while at the same time the latter planet in the current chart
forms an aspect to the first planet in the natal chart. Example: Current Sun in square aspect to natal Moon, while at
the same time current Moon is in sextile to natal Sun. This is what we call a reception aspect.
If you want to ignore repetition and simply count the number of aspects formed, you have the Simple Transits
option.
You can customize which type of repetitions you would like to observe. Also, it is possible to weight resonances with
the mundane positions and strength of the two involved planets (as seen in their own horoscopes).
http://astropatterns.sourceforge.net/guide.html 17/22
11/26/2018 The AstroPatterns User's Guide
For the switches Use mundane positions and Use planetary strengths, you have the following options:
(A+B)/2 (1) Take the arithmetic mean of the two strengths involved.
A (2) Use only the strength of the first (the current) planet.
B (3) Use only the strength of the second (the natal) planet.
- (0) Don't weight with this strength at all.
We would like to know which of the Jupiter Saturn conjunctions since the foundation of the German Reich had the
highest number of correlations to its foundation chart (31.12.1870, 23h6m24s UT). We only want to count the
number of occurrences, no weight factors at all. This gives us the following list:
The ResonancePattern writes a log explicitly listing all the contributions to the score.
--------------- Compute Score -------------------------------------------------
--- For 8. 8.1940 1h23m58s
--- Call of get_correlation:
First planet set:
135.341 193.070 116.778 93.683 142.627 44.457 44.457 55.904 173.809 122.856
Second planet set:
280.146 35.109 299.464 285.813 180.440 78.991 271.997 115.155 19.021 47.132
0.00 0.00 0.00 1.00 1.00 1.00 1.00 0.00 1.00 1.00
1.00 0.00 0.00 1.00 1.00 1.00 0.00 0.00 1.00 0.00
0.00 0.00 1.00 0.00 1.00 0.00 0.00 1.00 0.00 0.00
1.00 1.00 0.00 0.00 1.00 0.00 1.00 0.00 0.00 1.00
1.00 0.00 0.00 0.00 0.00 1.00 0.00 0.00 1.00 1.00
1.00 1.00 0.00 1.00 1.00 0.00 0.00 0.00 0.00 1.00
1.00 1.00 0.00 1.00 1.00 0.00 0.00 0.00 0.00 1.00
1.00 0.00 1.00 0.00 1.00 0.00 0.00 1.00 0.00 0.00
0.00 0.00 0.00 0.00 1.00 1.00 0.00 1.00 0.00 0.00
0.00 1.00 1.00 0.00 1.00 1.00 1.00 1.00 0.00 0.00
--- End of get_correlation()
SO QCX VE (1.000000)
SO SQQ SA (1.000000)
MO SQU SO (1.000000)
MO TRI JU (1.000000)
ME SXT MA (1.000000)
ME CON UR (1.000000)
VE OPP SO (1.000000)
VE SSQ PL (1.000000)
MA SQU PL (1.000000)
JU CON MO (1.000000)
SA TRI SO (1.000000)
SA CON MO (1.000000)
SA SQQ MA (1.000000)
SA CON PL (1.000000)
UR TRI ME (1.000000)
NE SQU JU (1.000000)
http://astropatterns.sourceforge.net/guide.html 18/22
11/26/2018 The AstroPatterns User's Guide
PL SXT MA (1.000000)
PL QCX SA (1.000000)
-> Returning Transit Score for 8. 8.1940 1h23m58s : 18.000000
MO SXT SO (1.000000)
JU QCX MO (1.000000)
SA SQU SO (1.000000)
SA QCX MO (1.000000)
UR SXT ME (1.000000)
PL SSX VE (1.000000)
-> Returning Aspect Score for 8. 8.1940 1h23m58s : 6.000000
VE OPP SO (1.000000) - SO QCX VE (1.000000)
VE SXT MO (1.000000) - MO SQU VE (1.000000)
MA SQQ SO (1.000000) - SO SSQ MA (1.000000)
JU TRI SO (1.000000) - SO SXT JU (1.000000)
JU CON MO (1.000000) - MO TRI JU (1.000000)
JU SQQ MA (1.000000) - MA SXT JU (1.000000)
SA TRI SO (1.000000) - SO SQQ SA (1.000000)
SA TRI VE (1.000000) - VE OPP SA (1.000000)
UR TRI ME (1.000000) - ME CON UR (1.000000)
NE CON MA (1.000000) - MA TRI NE (1.000000)
PL SXT MA (1.000000) - MA SQU PL (1.000000)
PL SSQ JU (1.000000) - JU CON PL (1.000000)
PL QCX SA (1.000000) - SA CON PL (1.000000)
-> Reception Aspect Score for 8. 8.1940 1h23m58s : 13.000000
The program first calculates a correlation matrix between the current and the natal planets. For each planet pair, it
sets the matrix coefficient to 1 if an aspect occurs (or to the aspect strength with mundane weight, depending on
your customizing), and to 0 if there is no aspect between these two planets. Together with a similar matrix for the
natal chart correlated with itself, and a transit chart correlated with itself, it simply counts corresponding places of
these matrices having non-zero coefficients.
The results are then listed for each category in the log. You may be astonished how many aspects are found
between two charts if a computer is scrutinously looking at them. This will even be the case if you narrow down the
aspect orbs and restrict the scope to only "strong" aspects like opposition, conjunction and square.
The FreePattern
All kinds of preconfigured Patterns have their limits. In research, one sometimes would like to inspect Patterns
defined in an adhoc manner. AstroPatterns serves this purpose by offering the FreePattern.
The FreePattern is a kind of "expert mode" of AstroPatterns: The AstroPatterns library allows to inject the
function which computes the score for a horoscope from outside. This function can be defined in any programming
language that allows passing function references as parameters to a library function.
The pointer of such a score function has to be of the following type (using C for the definition):
Here, t_horo* is a pointer to a horoscope data structure (consisting of three doubles jd_et, lon and lat – these are
all the data needed for a horoscope calculation). If you write a function in Visual Basic, this translates to a definition
like
Public Function myScoreFunction(ByRef h As t_horo) As Double
Using the AddressOf operator in Visual Basic, a pointer to such a function can be passed as a Long integer to an API
function like ap_set_free_pattern in our case.
As an example, you find the function resonanceWithSolar on the FreePattern worksheet. As explained there, this
score function tries to involve the solar horoscope that is valid for the current time. Please have a look at the code
in the VBA module FreePatterns if you are interested in the programming details. The Pattern internally applies the
ResonancePatterns twice: It looks for resonances of the solar horoscope with the natal chart, and after that it
computes the resonances of the current horoscope with the natal chart. It then performs the intersection of all
resonances found. This is the score. There are some utility functions available for usage in own custom Patterns.
See the API reference for details.
A ListRange simply is a list of horoscopes. They can be viewed, edited, loaded and saved in the ListRange
worksheet. Also, the result list of a former AstroPatterns run can be copied into the ListRange worksheet for
further processing.
With all these features, the ListRange allows an arbitrary chaining of the Pattern computation process: Starting with
evaluating Pattern 1 on Range 1, you get a result list which can be reused as Range 2 for a Pattern 2, and so on.
In this case, the input is quite easy, and the output is computed in less than two seconds on an average computer.
But you may imagine more complex examples, for example combining a Range with a complex Pattern where it
would be useful to save the computed data. To achieve this, you transfer the data to the ListRange worksheet using
the button
After navigating to the ListRange worksheet, you see the data have been taken over and enriched by the UT date
and time. You may add some labels to the list, change the data, add geographic locations, and so on and finally
save the data to a file using the button Save to file. If you look at the saved file using a plain text editor, you see
that the file format is indeed very simple:
http://astropatterns.sourceforge.net/guide.html 20/22
11/26/2018 The AstroPatterns User's Guide
Here, the LON and LAT are optional (indicated by the square brackets). The LABEL usually is the name of the
horoscope owner or a short description of an event, respectively. DATE_UT and TIME_UT have to be entered in
European fashion: 1.12.2000 for December 1, 2000, and the UT formatted like 12h20m22s. On the other hand, LON
and LAT are entered as decimal numbers (with sign, the minus indicating West and South, respectively).
Additionally, lines containing only whitespace characters, and lines starting with the # symbol are ignored and can
be used to place manual comments into the file. Indeed, you could create a file in this format using any plain text
editor, even notepad. The following file is a perfectly legal input file for an AstroPatterns ListRange:
# My little dataset
1.1.1900;0h;Begin of the 20th century (0h UT);14.5;52
1.1.2000;0h;Begin of the 21st cetnruy (0h UT);13.4;51.6
After having finished your input, it is a good idea to save the ListRange with the button Save To File so that you can
later pull it in from the file.
If you want to use a ListRange that has been entered this way, don't forget to set the switch Use worksheet data to
1 = yes. Otherwise the AstroPatterns Range loop would try to obtain its data directly from a file.
Also, comment lines and empty lines are allowed – they will be skipped when the file is scanned by
AstroPatterns:
# This is a comment line, the following line is left empty intentionally
http://astropatterns.sourceforge.net/guide.html 21/22
11/26/2018 The AstroPatterns User's Guide
As an example, we ask for those horoscopes of the DAV database having the highest value of Barbault's Cyclic
Index. To answer this question, we enter the file davdb.csv in the ListRange worksheet:
In row 6 Use worksheet data, you enter a 0. In this example, we don't want to use worksheet data but directly
work with a file. Instead of typing the file name manually, you may also use the button Search file right of the input
cell for picking the file from a file explorer tree.
After this, change to the Workplace sheet, and specifiy ListRange in the Run Settings dialog. Even when specifying
the ListRange, the start date and end date are evaluated. This means you have to enter values here, and they
really work as filter. This is a useful feature. For example, when working with a horoscope collection, you can
restrict the horoscopes to a certain epoch simply by setting an appropriate start date and end date. In our case, we
want to use all available horoscopes, so we choose the interval big enough to include all the horoscopes of the
Range.
As for the Pattern: The cyclic index doesn't appear in the Run Settings dialog which is preserved for Patterns with
an own worksheet. But nevertheless you can enter it directly. The number, as mentioned above, is 9. So we end up
with the following result list,
... and the winner is the Italian opera composer Ruggero Cavallo, born in April 23, 1857. He makes a cyclic index
record of 6'701 points. This man indeed has an interesting Taurus stellium, with only Saturn and Neptune standing
apart. According to Taeger's Internationale Horoscope Lexikon, his birth register is available, so the time should be
reliable too – the stellium therefore is located in the eighth house.
References
[1] Koch, W. Aspektlehre nach Kepler, Rohm Verlag, Bietigheim, published without year.
[2] E. C. Kühr, Aspektanalyse, Verlag Rudolf Cerny, Wien 1948.
http://astropatterns.sourceforge.net/guide.html 22/22