Ex.3Cultural Trends Through Manuscript Metadata

📚 Context

As a digital humanist, you are studying the cultural and intellectual movements of the European Renaissance by analyzing metadata from a large corpus of digitized manuscripts. These manuscripts come from various European archives and are described with metadata such as:

  • title: Title of the manuscript
  • author: Author’s name (if known)
  • year: Approximate year of creation
  • language: Language of the manuscript
  • location: City or region where the manuscript was produced
  • institution: The current institution where the manuscript is preserved
  • type: Type of manuscript (e.g., “scientific”, “religious”, “literary”, “legal”)

This metadata is stored as a list of dictionaries in Python.


🧩 Dataset Sample

python manuscripts = [
{
"title": "Summa Theologica",
"author": "Thomas Aquinas",
"year": 1274,
"language": "Latin",
"location": "Naples",
"institution": "Biblioteca Nazionale",
"type": "religious"
},
{
"title": "De Revolutionibus Orbium Coelestium",
"author": "Nicolaus Copernicus",
"year": 1543,
"language": "Latin",
"location": "Nuremberg",
"institution": "Jagiellonian Library",
"type": "scientific"
},
...
]

🎯 Assignment Objectives

Your goal is to build a set of Python functions that support historical interpretation by analyzing this metadata.


Tasks

1. Chronological Distribution

  • Write a function count_by_century(data) that returns a dictionary mapping each century (e.g., 1200s, 1300s, …) to the number of manuscripts produced.

2. Language Evolution

  • Write a function language_distribution_over_time(data) that returns a nested dictionary: python { "Latin": {1300: 4, 1400: 10}, "Italian": {1300: 1, 1400: 5}, ... } Each key is a language, and the value is another dictionary showing the count of manuscripts per century in that language.

3. Regional Specialization

  • Write a function manuscript_types_by_location(data) that returns: python { "Florence": {"religious": 5, "literary": 8}, "Paris": {"scientific": 2, "religious": 9}, ... } This shows how different cities specialized in different manuscript types.

4. Institutional Concentration

  • Write a function top_institutions(data, n=3) that returns the top n institutions by the number of manuscripts in the dataset.

5. Author Productivity Timeline

  • Write a function author_timeline(data) that returns: python { "Dante Alighieri": [1315], "Copernicus": [1543], ... } The result shows each author with the list of years when their manuscripts were created.

🔍 Advanced Interpretive Bonus Tasks

6. Detecting the Renaissance Shift

  • Use your functions to analyze when and where the shift from religious to scientific manuscripts becomes evident. Provide Python code that filters the manuscripts by type and century, then prints a basic summary.

7. Cultural Network Inference

  • Write a function author_language_location(data) that creates a triple-indexed dictionary: python { "Copernicus": {"Latin": ["Nuremberg"]}, "Thomas Aquinas": {"Latin": ["Naples", "Paris"]}, } This helps infer linguistic and geographic networks of intellectual production.

🧠 Reflection Questions (non-programmatic)

  1. What does the metadata suggest about the role of Latin as a scholarly lingua franca?
  2. How do patterns of manuscript types correlate with known historical movements (e.g., Humanism, Scientific Revolution)?
  3. What limitations might this metadata-only approach have compared to full-text analysis?

📦 Optional Extension

Provide students with a .json or .csv file and ask them to:

  • Load the dataset using json or pandas
  • Clean inconsistent data entries (e.g., “latin” vs “Latin”)
  • Visualize results using matplotlib or seaborn