Cord Twist (S/Z Ply/Spin)


1. Cord Twist (aka Ply/Spin) - Number of Z Cords

The number of Z-twisted cords in a khipu. Each cord has one of two ply/spin’s - affectionately known as S or Z twist depending on the diagonal’s direction in the string.

2. Summary Results:

Measure Result
Number of Khipus That Match 80 (12%)
Number of Significant Khipus 80 (12%)
Five most Significant Khipu JC010, UR193, KH0081, JC005, UR283
Image Quilt Click here

3. Summary Charts:

Code
import plotly
# Initialize plotly
plotly.offline.init_notebook_mode(connected = False);
Code
# Read in the Fieldmark and its associated dataframe and match dictionary
from fieldmark_khipu_summary import FieldmarkZCords
aFieldmark = FieldmarkZCords()
khipu_summary_df = aFieldmark.get_khipu_summary_df()

raw_match_dict = aFieldmark.raw_match_dict()
Code
# Plot Significant khipu
from plotly import express as px
import pandas as pd

import utils_khipu as ukhipu    
significant_khipus = aFieldmark.significant_khipus()
significant_values = [raw_match_dict[aKFG_Name] for aKFG_Name in significant_khipus]
significant_df =  pd.DataFrame(list(zip(significant_khipus, significant_values)), columns =['KFG_Name', 'Value'])
fig = px.bar(significant_df, x='KFG_Name', y='Value', labels={"KFG_Name": "KFG Name", "Value": "Number of Z Cords", },
             title=f"<b>{ukhipu.pct_kfg_khipus(len(significant_khipus))}</b> Significant Khipu for Number of Z Cords", width=944, height=450).update_layout(showlegend=True).show()
JC010UR193KH0081JC005UR283UR291AUR050KH0001JC011UR1149JC009UR144UR039UR110JC013UR112JC023JC014UR287UR103UR292AUR251UR054UR1095JC001UR1087UR289JC004UR282JC012UR288HP045JC022UR051UR284UR0520100200300
5.5% (36) Significant Khipu for Number of Z CordsKFG NameNumber of Z Cords

S-Cords vs Z-Cords

Code
fig = px.scatter(khipu_summary_df, x="num_s_cords", y="num_z_cords", log_x=True, log_y=True,
                 size="num_cords", color="num_cords", 
                 labels={"num_s_cords": "#S Cords (Log10)", "num_z_cords": "#Z Cords"},
                 hover_data=['kfg_name'], title="<b>S Cords (Log10) vs Z Cords (Log10)</b>",
                 width=944, height=944);
fig.update_layout(showlegend=True).show()
1251025100251000278912345678910234567891002345
20040060080010001200140016001800num_cordsS Cords (Log10) vs Z Cords (Log10)#S Cords (Log10)#Z Cords

4. Exploratory Data Analysis

Mixed Twist Khipus

Urton in Sign of the Inka Khipu spends quite some time on mixed twist khipus. Just how often do mixed twist khipus occur?

Code
# How many khipus lack twist information
import qollqa_chuspa as qc        # A Khipu Qollca is a warehouse that holds khipu (and other databases)
khipu_dict, all_khipus = qc.fetch_khipus()

untwisted_khipus = []
twisted_khipus = []
num_untwisted_khipus = 0
for aKhipu in all_khipus:
    num_cords = aKhipu.num_all_cords(include_subsidiaries=True)
    num_S_cords = aKhipu.num_s_cords()
    num_Z_cords = aKhipu.num_z_cords()
    # If less then 10% of the cords are S or Z cords, then we consider it a khipu without twist information
    if (num_S_cords+num_Z_cords) < .1*num_cords:
        untwisted_khipus.append(aKhipu)
    else:
        twisted_khipus.append(aKhipu)


num_untwisted_khipus = len(untwisted_khipus)
num_twisted_khipus = len(twisted_khipus)


print(f"# of Khipus without Twist Information = {num_untwisted_khipus} out of {len(all_khipus)} = {ukhipu.pct_kfg_khipus(num_untwisted_khipus)}")
print(f"# of Khipus with Twist Information = {num_twisted_khipus} out of {len(all_khipus)} = {ukhipu.pct_kfg_khipus(num_twisted_khipus)}")

mixed_twist_khipus = []
for aKhipu in twisted_khipus:
    num_S_cords = aKhipu.num_s_cords()
    num_Z_cords = aKhipu.num_z_cords()
    # If less then 10% of the cords are S or Z cords, then we consider it a khipu without twist information
    if num_S_cords > 0 and num_Z_cords > 0:
        mixed_twist_khipus.append(aKhipu)

num_mixed_twist_khipus = len(mixed_twist_khipus)
print(f"# of Khipus with Mixed Twist Information = {len(mixed_twist_khipus)} out of {len(twisted_khipus)} = {ukhipu.pct_kfg_khipus(len(mixed_twist_khipus))}")
# of Khipus without Twist Information = 137 out of 654 = 20.9%  (137)
# of Khipus with Twist Information = 517 out of 654 = 79.1%  (517)
# of Khipus with Mixed Twist Information = 33 out of 517 = 5.0%  (33)

Just 5% of the khipus in the KFG Database have mixed twists!

Code
import utils_loom as uloom

print(f"{khipu_summary_df[khipu_summary_df.num_z_cords > 0].shape[0]} khipus exist with Z cords")
percent_str = uloom.percent_info(khipu_summary_df.num_z_cords.sum(), khipu_summary_df.num_cords.sum())
print(f"{khipu_summary_df.num_z_cords.sum()} Z cords exist - about {percent_str} of all cords")
79 khipus exist with Z cords
3398 Z cords exist - about 6% (3398 of 58235) of all cords
33 khipus have mixed twist construction

5. Conclusion

  • Mixed twist cords occur very rarely (5% of the khipus) and Z cords only occur on 6% of the cords in the KFG Database (remember that 79% of the khipus in the KFG Database record their S/Z twist)
  • Z cords associate with S Cords.
  • In the network graph presented in the fieldmarks preface, Z Cords and S cords occur somewhat close together, but it’s not a great match. Analysis of Z-cords in general is limited by the fact that 20% of KFG khipus are missing cord spin/ply information.

    There is some sort of reason/rationale for Z Cords… but, to paraphrase Buffalo Springfield, (For What It’s Worth 1967):

“there’s something happening here, what it is ain’t exactly clear.”