diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c18dd8d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +__pycache__/ diff --git a/patterns.graphml b/patterns.graphml index d053c88..d269db1 100644 --- a/patterns.graphml +++ b/patterns.graphml @@ -11,7 +11,7 @@ INDEPENDENT REGIONS TOWNS REGIONS - 0 + 2 THE DISTRIBUTION OF TOWNS @@ -89,7 +89,7 @@ IDENTIFIABLE NEIGHBORHOOD TOWNS COMMUNITY BOUNDARIES - 0 + 2 NEIGHBORHOOD BOUNDARY @@ -101,7 +101,7 @@ WEB OF PUBLIC TRANSPORTATION TOWNS COMMUNITY CONNECTIONS - 0 + 1 RING ROADS @@ -125,19 +125,19 @@ MINI-BUSES TOWNS COMMUNITY CONNECTIONS - 0 + 1 FOUR-STORY LIMIT TOWNS COMMUNITY CHARACTER - 0 + 2 NINE PER CENT PARKING TOWNS COMMUNITY CHARACTER - 0 + 2 PARALLEL ROADS @@ -191,7 +191,7 @@ PROMENADE TOWNS LOCAL CENTERS - 0 + 2 SHOPPING STREET @@ -227,7 +227,7 @@ HOUSE CLUSTER TOWNS HOUSE CLUSTERS - 0 + 2 ROW HOUSES @@ -245,13 +245,13 @@ OLD PEOPLE EVERYWHERE TOWNS HOUSE CLUSTERS - 0 + 2 WORK COMMUNITY TOWNS WORK COMMUNITIES - 0 + 2 INDUSTRIAL RIBBON @@ -281,7 +281,7 @@ MARKET OF MANY SHOPS TOWNS WORK COMMUNITIES - 0 + 2 HEALTH CENTER @@ -317,13 +317,13 @@ NETWORK OF PATHS AND CARS TOWNS ROADS AND PATHS - 0 + 2 MAIN GATEWAYS TOWNS ROADS AND PATHS - 1 + 2 ROAD CROSSING @@ -443,6 +443,7 @@ ADVENTURE PLAYGROUND TOWNS LOCAL COMMON LAND + 0 ANIMALS @@ -450,17 +451,17 @@ LOCAL COMMON LAND 0 - + THE FAMILY TOWNS - LOCAL COMMON LAND + THE FAMILY 1 HOUSE FOR A SMALL FAMILY TOWNS THE FAMILY - 0 + 1 HOUSE FOR A COUPLE @@ -478,19 +479,19 @@ YOUR OWN HOME TOWNS THE FAMILY - 0 + 2 SELF-GOVERNING WORKSHOPS AND OFFICES TOWNS WORK GROUPS - 0 + 2 SMALL SERVICES WITHOUT RED TAPE TOWNS WORK GROUPS - 0 + 1 OFFICE CONNECTIONS @@ -502,7 +503,7 @@ MASTER AND APPRENTICES TOWNS WORK GROUPS - 0 + 1 TEENAGE SOCIETY @@ -520,13 +521,13 @@ CHILDREN'S HOME TOWNS WORK GROUPS - 0 + 1 INDIVIDUALLY OWNED SHOPS TOWNS LOCAL SHOPS - 0 + 2 STREET CAFE @@ -550,7 +551,7 @@ TRAVELER'S INN TOWNS LOCAL SHOPS - 0 + 1 BUS STOP @@ -592,7 +593,7 @@ CIRCULATION REALMS BUILDINGS BUILDING ARRANGEMENT - 2 + 1 MAIN BUILDING @@ -634,13 +635,13 @@ SOUTH FACING OUTDOORS BUILDINGS BUILDING LOCATION - 0 + 2 POSITIVE OUTDOOR SPACE BUILDINGS BUILDING LOCATION - 0 + 2 WINGS OF LIGHT @@ -664,13 +665,13 @@ MAIN ENTRANCE BUILDINGS BUILDING SHAPE - 0 + 2 HALF-HIDDEN GARDEN BUILDINGS BUILDING SHAPE - 0 + 1 ENTRANCE TRANSITION @@ -688,13 +689,13 @@ HIERARCHY OF OPEN SPACE BUILDINGS BUILDING SHAPE - 0 + 1 COURTYARDS WHICH LIVE BUILDINGS BUILDING SHAPE - 0 + 2 CASCADE OF ROOFS @@ -766,7 +767,7 @@ INTIMACY GRADIENT BUILDINGS GRADIENTS OF SPACE - 0 + 2 INDOOR SUNLIGHT @@ -778,7 +779,7 @@ COMMON AREAS AT THE HEART BUILDINGS GRADIENTS OF SPACE - 0 + 2 ENTRANCE ROOM @@ -814,19 +815,19 @@ TAPESTRY OF LIGHT AND DARK BUILDINGS GRADIENTS OF SPACE - 0 + 1 COUPLE'S REALM BUILDINGS HOUSE ROOMS - 0 + 1 CHILDREN'S REALM BUILDINGS HOUSE ROOMS - 0 + 1 SLEEPING TO THE EAST @@ -838,25 +839,25 @@ FARMHOUSE KITCHEN BUILDINGS HOUSE ROOMS - 0 + 2 PRIVATE TERRACE ON THE STREET BUILDINGS HOUSE ROOMS - 0 + 2 A ROOM OF ONE's OWN BUILDINGS HOUSE ROOMS - 0 + 2 SEQUENCE OF SITTING SPACES BUILDINGS HOUSE ROOMS - 0 + 1 BED CLUSTER @@ -928,7 +929,7 @@ TEENAGER'S COTTAGE BUILDINGS OUTBUILDINGS - 0 + 1 OLD AGE COTTAGE @@ -958,7 +959,7 @@ LIGHT ON TWO SIDES OF EVERY ROOM BUILDINGS ROOM EDGES - 0 + 2 BUILDING EDGE @@ -982,7 +983,7 @@ OUTDOOR ROOM BUILDINGS ROOM EDGES - 0 + 2 STREET WINDOWS @@ -1006,13 +1007,13 @@ SIX-FOOT BALCONY BUILDINGS ROOM EDGES - 0 + 2 CONNECTION TO THE EARTH BUILDINGS ROOM EDGES - 0 + 2 TERRACED SLOPE @@ -1144,25 +1145,25 @@ CEILING HEIGHT VARIETY BUILDINGS ROOM SHAPES - 0 + 2 THE SHAPE OF INDOOR SPACE BUILDINGS ROOM SHAPES - 0 + 2 WINDOWS OVERLOOKING LIFE BUILDINGS ROOM SHAPES - 0 + 1 HALF-OPEN WALL BUILDINGS ROOM SHAPES - 0 + 1 INTERIOR WINDOWS @@ -1186,13 +1187,13 @@ THICK WALLS BUILDINGS WALLS - 0 + 2 CLOSETS BETWEEN ROOMS BUILDINGS WALLS - 0 + 1 SUNNY COUNTER @@ -1210,12 +1211,13 @@ WAIST-HIGH SHELF BUILDINGS WALLS + 0 BUILT-IN SEATS BUILDINGS WALLS - 0 + 1 CHILD CAVES @@ -1233,7 +1235,7 @@ STRUCTURE FOLLOWS SOCIAL SPACES CONSTRUCTION PHILOSOPHY OF STRUCTURE - 0 + 2 EFFICIENT STRUCTURE @@ -1265,23 +1267,23 @@ STRUCTURAL LAYOUT 0 - + THICKENING THE OUTER WALLS - BUILDINGS - WALLS - 0 + CONSTRUCTION + STRUCTURAL LAYOUT + 1 COLUMNS AT THE CORNERS CONSTRUCTION STRUCTURAL LAYOUT - 0 + 2 FINAL COLUMN DISTRIBUTION CONSTRUCTION STRUCTURAL LAYOUT - 0 + 2 ROOT FOUNDATIONS @@ -1317,19 +1319,19 @@ FLOOR-CEILING VAULTS CONSTRUCTION STRUCTURAL FRAME - 0 + 2 ROOF VAULTS CONSTRUCTION STRUCTURAL FRAME - 0 + 1 NATURAL DOORS AND WINDOWS CONSTRUCTION OPENINGS - 0 + 2 LOW SILL @@ -1353,7 +1355,7 @@ FRAMES AS THICKENED EDGES CONSTRUCTION OPENINGS - 0 + 2 COLUMN PLACE @@ -1419,7 +1421,7 @@ WINDOWS WHICH OPEN WIDE CONSTRUCTION SURFACES - 0 + 1 SOLID DOORS WITH GLASS @@ -1443,7 +1445,7 @@ HALF-INCH TRIM CONSTRUCTION SURFACES - 0 + 2 SEAT SPOTS @@ -1461,7 +1463,7 @@ SITTING WALL CONSTRUCTION OUTDOOR DETAILS - 1 + 2 CANVAS ROOFS @@ -1485,7 +1487,7 @@ PAVING WITH CRACKS BETWEEN THE STONES CONSTRUCTION OUTDOOR DETAILS - 0 + 2 SOFT TILE AND BRICK @@ -1521,7 +1523,7 @@ THINGS FROM YOUR LIFE CONSTRUCTION ORNAMENTATION - 0 + 1 start @@ -1529,13 +1531,10 @@ start - - end - - + end - + end @@ -1544,37 +1543,28 @@ start - - end - - + end - + end - + end start - + end end - - start - - - end - - + end - + end @@ -1583,40 +1573,28 @@ start - - start - - - start - start - - end - - + end - + end - - start - start - + end - + end - + end - + end @@ -1625,22 +1603,22 @@ start - + end - + end - + end - + end - + end - + end @@ -1652,85 +1630,67 @@ start - - end - - + end - + end - + end - + end - + end - - start - - - start - - - start - start - - start - - - end - - + end - + end - + end - + end - + end - + end - + end - + end - + end - + end - + end - + end - + end - + end - + end @@ -1742,27 +1702,21 @@ start - - end - - + end - + end - + end - + end - + end - - start - start @@ -1775,19 +1729,16 @@ start - - end - - + end - + end - + end - + end @@ -1802,22 +1753,22 @@ start - + end - + end - + end - + end - + end - + end @@ -1829,22 +1780,22 @@ start - + end - + end - + end - + end - + end - + end @@ -1853,58 +1804,49 @@ start - - start - start - - start - - - end - - + end - + end - + end - + end - + end - + end - + end - + end start - + end - + end - + end - + end - + end @@ -1913,16 +1855,16 @@ start - + end - + end - + end - + end @@ -1934,58 +1876,58 @@ start - + end - + end - + end - + end - + end - + end - + end - + end - + end - + end - + end - + end - + end - + end - + end - + end - + end - + end @@ -1997,9 +1939,6 @@ start - - start - start @@ -2012,28 +1951,22 @@ start - - start - - - end - - + end - + end - + end - + end - + end - + end @@ -2048,37 +1981,25 @@ start - - start - - - start - - - start - start - + end - - end - - + end - + end - + end - + end - + end @@ -2090,88 +2011,73 @@ start - - end - - - end - - + end - + end - + end - + end - + end - + end - - start - start - - start - - + end - + end - + end - + end - + end - + end - + end - + end - + end - - start - start - + end - + end - + end - + end - + end - + end @@ -2183,9 +2089,6 @@ start - - start - start @@ -2195,190 +2098,154 @@ start - + end - + end - + end - + end - + end start - - start - start - + end - - end - - - end - - + end - + end - + end - + end - + end - + end - + end - + end - - start - - - start - - + end - + end - + end - + end - + end - + end - + end - + end - + end start - - start - - - start - - + end - + end - + end - + end - + end - + end - - start - start - - start - - - end - - - end - - + end - + end - + end - + end - + end - + end - - start - - + end - + end - + end - + end start - + end - + end - + end - + end - + end - + end @@ -2390,58 +2257,52 @@ start - - end - - + end - + end - + end - + end start - - start - - + end - + end - + end - + end - + end start - + end - + end - + end - + end - + end @@ -2459,28 +2320,28 @@ start - + end - + end - + end - + end - + end - + end - + end - + end @@ -2489,82 +2350,55 @@ start - - start - start start - - start - start - - end - - + end - + end - + end - + end - - start - start start - + end - - start - - - start - start - - start - start start - - end - - - end - - + end - + end - + end - + end @@ -2582,64 +2416,40 @@ start - - end - - - end - - - end - - + end - + end - - start - - start - - end - + end - + end - - start - start - - start - - - end - - + end - + end - + end - + end - + end - + end @@ -2651,13 +2461,13 @@ start - + end - + end - + end @@ -2678,76 +2488,55 @@ start - - start - - + end - + end - + end - - start - - - start - start start - + end - + end - + end - + end - + end - + end - - start - - - start - - - start - start start - - end - - + end - + end - + end - + end @@ -2756,30 +2545,21 @@ start - - start - - - start - - + end - + end - + end - + end - + end - - start - start @@ -2789,52 +2569,37 @@ start - + end - + end - + end - + end - + end - + end - + end - - start - - - start - - - start - - - start - start - - end - - + end - + end - + end @@ -2846,22 +2611,19 @@ start - - start - start - + end - + end - + end - + end @@ -2870,85 +2632,64 @@ start - - start - - + end - + end - + end - + end - - start - - - start - - + end - + end - + end - + end - + end - + end start - - start - start - - start - start start - - end - - + end - + end - + end - - end - - + end - + end - + end @@ -2960,36 +2701,30 @@ start - - start - start start - + end - + end - + end - + end - + end - + end - - start - start @@ -2999,42 +2734,39 @@ start - + end - + end - + end - + end - + end - + end - + end - + end - + end - + end start - - start - start @@ -3047,61 +2779,25 @@ start - + end - + end - + end - - start + + end - - start - - - end - - - end - - - end - - - end - - - end - - - start - - - start - - - end - - - end - - - end - - - end - - + end - + end - + end @@ -3113,85 +2809,58 @@ start - - start - - + end - + end - + end - + end - + end - + end - - start - - - start - - - start - - - start - - - start - - - start - - - start - - + end - + end - + end - + end - + end - + end - + end - - start - - + end - + end - + end - + end - + end @@ -3200,52 +2869,40 @@ start - + end - + end - - start - - - start - start start - - start - - + end - + end - + end - + end - + end - + end - + end - - end - - + end @@ -3254,79 +2911,61 @@ start - - start - - - start - start - + end - + end - + end - + end - + end start - - start - start - - end - - + end - + end - + end - + end - + end - + end start - - start - - + end - + end - + end - - end - - + end @@ -3335,12 +2974,6 @@ start - - start - - - start - start @@ -3350,19 +2983,19 @@ start - + end - + end - + end - + end - + end @@ -3371,25 +3004,25 @@ start - + end - + end - + end - + end - + end - + end - + end @@ -3398,60 +3031,51 @@ start - - start - - - end - - + end - + end - + end - + end - + end - + end start - + end - + end - + end - + end - + end - + end - + end start - - start - start @@ -3461,19 +3085,16 @@ start - + end - + end - + end - - end - - + end @@ -3497,126 +3118,108 @@ start - + end - + end - + end start - - start - - + end - + end - + end - + end - + end - + end - - start - start - + end - + end - + end - + end - + end - + end - + end - + end - + end - + end - + end - + end - + end - - start - start start - - end - - - end - - + end - + end - + end - + end - + end - + end - + end - + end - - start - start @@ -3629,123 +3232,93 @@ start - - start - - - start - start - - start - - - start - start - - start - - + end - + end - + end start - - start - start - - end - - + end - + end - + end - + end - + end - + end - + end - + end - + end - - start - - + end - + end - + end - + end - + end - + end - + end - + end - + end - + end - + end start - - start - start - - start - start @@ -3755,55 +3328,43 @@ start - - start - - + end - + end - + end - + end - - start - start start - - start - start - - end - - + end - + end - + end - + end - + end - + end @@ -3812,30 +3373,21 @@ start - + end - - end - - + end - + end - + end - + end - - start - - - start - start @@ -3860,37 +3412,37 @@ start - + end - + end - + end - + end - + end - + end - + end - + end - + end - + end - + end @@ -3899,34 +3451,28 @@ start - - start - start start - - end - - + end - + end - + end - + end - + end - + end @@ -3935,22 +3481,22 @@ start - + end - + end - + end - + end - + end - + end @@ -3959,70 +3505,52 @@ start - - start + + end - + end - + end - + end - + end - + end - + end - + end - + + start + + end - + end - - start - - - start - - - end - - - end - - - end - - - end - - - end - - + end - + end - + end - + end - + end @@ -4034,34 +3562,31 @@ start - - end - - + end - + end - + end - + end - + end - + end - + end - + end - + end @@ -4070,19 +3595,16 @@ start - - end - - + end - + end - + end - + end @@ -4091,36 +3613,27 @@ start - - start - - - end - - + end - + end - + end - + end - + end - + end start - - start - start @@ -4142,76 +3655,55 @@ start - - start - - - start - - - end - - + end - + end - + end - + end - + end - + end - + end - - start - start - - start - start - - start - start - - end - - + end - + end - + end - + end - + end - + end - + end @@ -4220,9 +3712,6 @@ start - - start - start @@ -4232,114 +3721,78 @@ start - - end - - - end - - + end - + end - + end - + end - + end - - start - - - start - - - start - - - start - - - start - - + end - + end - + end - + end - + end - + end - + end - + end start - - start - - - start - start - - start - - + end - + end - + end - + end - + end - + end - + end - + end - - start - start - - start - start @@ -4349,48 +3802,36 @@ start - - end - - + end - + end - + end - - end - - + end - + end - + end - + end - + end - + end - - start - start - - start - start @@ -4400,151 +3841,133 @@ start - + end - + end - + end - - start - start - + end - + end - + end - + end - + end - + end - + end - - start - start start - + end - + end - + end - + end - + end - + end - + end - + end - - start - start - - start - start start - + end - + end - + end - + end - + end - + end - + end - + end - + end - + end start - - start - - - end - - + end - + end - + end - + end - + end - + end - + end - + end @@ -4556,72 +3979,60 @@ start - - start - - + end - - end - - + end - + end - + end - + end - + end start - - start - start - + end - + end - + end - + end - + end - + end - + end - + end - + end - + end - - start - start @@ -4634,40 +4045,28 @@ start - - end - - + end - + end - + end - + end - - start - start - - start - start - - end - - + end - + end @@ -4679,25 +4078,22 @@ start - - start - - + end - + end - + end - + end - + end - + end @@ -4706,169 +4102,133 @@ start - - start - start - - start - - + end - + end - + end - + end - + end - + end - + end - + end - - start - - + end - + end - + end - + end - + end - + end - + end - + end - + end - + end start - - start - start - - end - - - end - - - end - - - end - - - end - - + end - + end - + end - + end - + end - + end - + end - + end - + end - + end - + end - - start - start start - - start - start start - + end - + end - + end - - end - - + end - + end - + end - + end @@ -4883,19 +4243,19 @@ start - + end - + end - + end - + end - + end @@ -4910,40 +4270,31 @@ start - - start - start - + end - + end - + end - + end - - start - - - start - - + end - + end - + end - + end @@ -4955,31 +4306,25 @@ start - - start - start - + end - + end - + end - - end - - + end - + end - + end @@ -4994,28 +4339,28 @@ start - + end - + end - + end - + end - + end - + end - + end - + end @@ -5033,28 +4378,22 @@ start - + end - - end - - - end - - + end - + end - + end - + end - + end @@ -5081,31 +4420,25 @@ start - - start - start - + end - + end - - end - - + end - + end - + end - + end @@ -5114,54 +4447,39 @@ start - - end - - - end - - + end - + end - + end - + end - + end - - start - start - - start - start start - + end - + end start - - start - start @@ -5174,9 +4492,6 @@ start - - start - start @@ -5186,25 +4501,22 @@ start - - start - - + end - + end - + end - + end - + end - + end @@ -5219,117 +4531,87 @@ start - - start - start start - - start - - + end - + end - + end - + end - + end - - start - start start - - end - - - end - - + end - + end - + end - + end - + end - + end - + end - + end - + end - - start - - - start - start - - end - - + end - + end - + end - + end - + end - + end - - start - start start - - start - start @@ -5339,25 +4621,25 @@ start - + end - + end - + end - + end - + end - + end - + end @@ -5366,34 +4648,31 @@ start - - start - start - + end - + end - + end - + end - + end - + end - + end - + end @@ -5405,57 +4684,39 @@ start - - start - start start - - start - - + end - + end - + end - + end - - start - start start - - start - - - start - - + end - + end - + end - - start - start @@ -5468,27 +4729,21 @@ start - - end - - + end - + end - + end - + end - + end - - start - start @@ -5501,31 +4756,25 @@ start - + end - + end - + end - + end - - start - start - - end - - + end - + end @@ -5537,51 +4786,39 @@ start - + end - + end - + end - + end - + end - - start - start - - start - start - + end - + end - + end - + end - - start - - - start - start @@ -5594,25 +4831,19 @@ start - - start - - - end - - + end - + end - + end - + end - + end @@ -5624,40 +4855,34 @@ start - + end - + end - + end - + end - - start - start - + end - + end start - - start - - + end - + end @@ -5672,18 +4897,12 @@ start - - end - - + end start - - start - start @@ -5699,67 +4918,46 @@ start - - start - - - start - - - start - - - end - - + end - + end - + end - + end - + end - - start - - + end - + end - + end - + end - + end - + end - - start - - - start - - + end - + end - + end @@ -5768,70 +4966,61 @@ start - - start - start - + end - + end - + end - + end - + end - + end - - start - - + end - + end - + end - + end - + end - + end - + end - + end - - start - start - + end - + end - + end @@ -5843,177 +5032,129 @@ start - - start - start start - - end - - + end - + end - + end - - end - - + end - + end - + end start - + end - + end - end + start end - + end - - start + + end - + start - + start - - start + + end - - end - - + end - + end - + end - - start - - - start - - - start - - + end - - end - - - end - - - end - - - end - - - end - - + end start - - end - - + end - + end - + end - + end - - start - start start - + end - + end - + end - + end - + end - + end - + end - + end - + end - - start - start start - - start - start @@ -6023,55 +5164,43 @@ start - - end - - + end - + end - + end - + end - + end end - - end - - - end - - + end - - start - start start - + end - + end - + end - + end @@ -6083,210 +5212,120 @@ start - - end - - + end - + end - + end - + end - + end - + end - + end - + end - - start - - - start - - - start - - + end - - start - - - start - - - start - - + end - + end - + end - - start - start start - - start - - - end - - - start - start - + end start - - end - - + end - + end - - start - start - + end - + end - + end - + end - + end - + end - + end - + end - + end - + end - + end - - start - start start - + end - + end - - end - - - end - - - end - - - start - - - start - start - - start - start start - - start - - - start - - - start - - - start - - - start - - - start - - - start - - - end - - - end - - - end - start @@ -6299,39 +5338,27 @@ start - + end - + end start - - start - - - start - - - start - - + end - + end - + end - + end - - start - start @@ -6353,25 +5380,16 @@ start - - end - - - end - - start + end start - + end - - end - - + end @@ -6383,34 +5401,22 @@ start - - end - - - end - - + end - + end - + end - - start - start start - - end - - + end @@ -6419,13 +5425,10 @@ start - - start - - + end - + end @@ -6434,15 +5437,9 @@ start - - start - start - - start - start @@ -6455,37 +5452,28 @@ start - - start - start - + end - - end - - + end - - start - start - + end - + end - + end - + end @@ -6509,75 +5497,39 @@ start - - end - - + end - + end - + end - + end start - - start - start - - end - - + end - + end - + end - - start - start - - start - - - start - start - - start - - - start - - - start - - - start - - - start - - - start - start @@ -6590,37 +5542,25 @@ start - + end - + end - - end - - - end - - + end start - - start - start start - - end - - + end @@ -6629,16 +5569,16 @@ start - + end - + end - + end - + end @@ -6650,25 +5590,13 @@ start - - end - - - end - - + end - - start - - - start - start - + end @@ -6677,18 +5605,15 @@ start - + end - + end start - - start - start @@ -6698,21 +5623,18 @@ start - + end - + end - + end start - - start - start @@ -6722,81 +5644,48 @@ start - - end - - - end - - + end start - - start - start - - start - - + end start - - start - - + end - - start - - - start - - - start - start start - + end - + end - + end - + end start - - start - start - - start - - - start - start @@ -6806,9 +5695,6 @@ start - - start - start @@ -6821,22 +5707,7 @@ start - - start - - - start - - - start - - - end - - - end - - + end @@ -6854,34 +5725,22 @@ start - - start - start - - start - - - start - start start - + end - - end - - + end - + end @@ -6893,9 +5752,6 @@ start - - start - start @@ -6908,20 +5764,8 @@ start - - start - - - end - - start - - - start - - - start + end start @@ -6932,24 +5776,12 @@ start - + end - + end - - end - - - start - - - start - - - start - start @@ -6971,21 +5803,12 @@ start - - start - start start - - end - - - end - start @@ -7010,9 +5833,6 @@ start - - start - start @@ -7025,51 +5845,36 @@ start - - start - start - + end - + end start - - start - start - - end - - - end - - + end - + end - + end - + end start - - start - start @@ -7079,22 +5884,67 @@ start - + start - + start - + start - + + start + + + start + + start - + + start + + + start + + + start + + + end + + + end + + + start + + + start + + + start + + + start + + + start + + + start + + + start + + + end + + end - + end diff --git a/process.py b/process.py index 51475d9..7d21800 100644 --- a/process.py +++ b/process.py @@ -84,7 +84,7 @@ (72, 'LOCAL SPORTS'), (73, 'ADVENTURE PLAYGROUND'), (74, 'ANIMALS'), - (73, 'THE FAMILY'), + (75, 'THE FAMILY'), (76, 'HOUSE FOR A SMALL FAMILY'), (77, 'HOUSE FOR A COUPLE'), (78, 'HOUSE FOR ONE PERSON'), @@ -150,7 +150,7 @@ (138, 'SLEEPING TO THE EAST'), (139, 'FARMHOUSE KITCHEN'), (140, 'PRIVATE TERRACE ON THE STREET'), - (141, "A ROOM OF ONE's OWN"), + (141, "A ROOM OF ONE'S OWN"), (142, 'SEQUENCE OF SITTING SPACES'), (143, 'BED CLUSTER'), (144, 'BATHING ROOM'), @@ -220,7 +220,7 @@ (208, 'GRADUAL STIFFENING'), (209, 'ROOF LAYOUT'), (210, 'FLOOR AND CEILING LAYOUT'), - (201, 'THICKENING THE OUTER WALLS'), + (211, 'THICKENING THE OUTER WALLS'), (212, 'COLUMNS AT THE CORNERS'), (213, 'FINAL COLUMN DISTRIBUTION'), (214, 'ROOT FOUNDATIONS'), @@ -303,7 +303,7 @@ ('STRUCTURAL LAYOUT', range(209, 214)), ('STRUCTURAL FRAME', range(214, 221)), ('OPENINGS', range(221, 226)), - ('STRUCTURAL SUBSIDIARIES', range(26, 233)), + ('STRUCTURAL SUBSIDIARIES', range(226, 233)), ('SURFACES', range(233, 241)), ('OUTDOOR DETAILS', range(241, 249)), ('ORNAMENTATION', range(249, 254))] @@ -436,7 +436,20 @@ def setStars(lines): for pattern in notFound: nodesDict[pattern]['stars'] = 0 +def addEdge(g, seen, parent, child, origin): + # Skip self-references and edges we've already recorded (the book declares + # most links in both patterns' texts). + if parent is child: + return + if (parent.id, child.id) in seen or (child.id, parent.id) in seen: + return + seen.add((parent.id, child.id)) + e = g.add_edge(parent, child, True) + e['origin'] = origin + def addEdges(g, lines): + seen = set() + prevNode = None for i, line in enumerate(lines): match = isHeading(line) if match: @@ -444,14 +457,21 @@ def addEdges(g, lines): pattern = next((p for p in patterns if group in p[1]), None) if pattern != None: node = nodesDict[pattern[0]] + # The paragraph after this heading is this pattern's preamble: it + # names the LARGER patterns this one helps complete. for string in re.findall(r'\((\d+)\)', lines[i + 2]): if int(string) in nodesDict: - e = g.add_edge(nodesDict[int(string)], node, True) - e['origin'] = 'start' - for string in re.findall(r'\((\d+)\)', lines[i - 2]): - if int(string) in nodesDict: - e = g.add_edge(node, nodesDict[int(string)], True) - e['origin'] = 'end' + addEdge(g, seen, nodesDict[int(string)], node, 'start') + # The paragraph before this heading is the PREVIOUS pattern's + # closing: it names the smaller patterns that complete IT. It must + # be attributed to prevNode, not to this pattern - attributing it + # here shifted every 'end' edge one pattern forward and produced + # 66 self-edges. + if prevNode is not None: + for string in re.findall(r'\((\d+)\)', lines[i - 2]): + if int(string) in nodesDict: + addEdge(g, seen, prevNode, nodesDict[int(string)], 'end') + prevNode = node def postProcessGraph(g, lines): # Add manual fixes here. diff --git a/test_process.py b/test_process.py new file mode 100644 index 0000000..5dc1f8b --- /dev/null +++ b/test_process.py @@ -0,0 +1,32 @@ +import unittest +import process + +class TestProcessData(unittest.TestCase): + + def test_no_duplicate_pattern_ids(self): + """ + Tests that there are no duplicate pattern IDs in process.patterns. + """ + seen_ids = set() + duplicates = [] + for pattern_id, _ in process.patterns: + if pattern_id in seen_ids: + duplicates.append(pattern_id) + seen_ids.add(pattern_id) + self.assertEqual(len(duplicates), 0, f"Found duplicate pattern IDs: {duplicates}") + + def test_no_overlapping_subsection_ranges(self): + """ + Tests that there are no overlapping ranges in process.subsections. + """ + subsections = process.subsections + for i in range(len(subsections)): + for j in range(i + 1, len(subsections)): + s1_name, s1_range = subsections[i] + s2_name, s2_range = subsections[j] + # Check for overlap + overlap = max(0, min(s1_range.stop, s2_range.stop) - max(s1_range.start, s2_range.start)) + self.assertEqual(overlap, 0, f"Subsection ranges for '{s1_name}' and '{s2_name}' overlap.") + +if __name__ == '__main__': + unittest.main() \ No newline at end of file