Skip to content

Instantly share code, notes, and snippets.

@janhesse53
Created February 5, 2025 13:18
Show Gist options
  • Select an option

  • Save janhesse53/6331db2f61b833a20fb09c0892d547ba to your computer and use it in GitHub Desktop.

Select an option

Save janhesse53/6331db2f61b833a20fb09c0892d547ba to your computer and use it in GitHub Desktop.
My Dialog
Display the source blob
Display the rendered blob
Raw
{"cells": [{"cell_type": "markdown", "metadata": {}, "source": ["**AI Prompt**\n", "\n", "Hi, in my Day to Day work i often have to deal with parts lists of products, because our clients are mostly SME's in manufacturing. So My Goal is to create a few little helpers to deal with data representing parts list and how to perform some analytics and visulizations. Can you help me with it?"]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Response**\n", "\n", "I'd be happy to help you work with parts lists and create tools for analysis and visualization. To provide the most relevant assistance, could you tell me a bit more about:\n", "\n", "1. What format is your parts list data typically in? (e.g., Excel, CSV, database)\n", "2. What kind of analysis do you usually need to perform? (e.g., cost calculations, inventory tracking, dependency analysis)\n", "3. How comfortable are you with Python or other programming languages?\n", "\n", "This will help me suggest approaches that best match your needs and skill level."]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Prompt**\n", "\n", "Most of the time the data is in csv format, but lets just assume we get the data into a pandas Dataframe and the parts list is decoded into a table with two columns [Predecessor, Successor], with item ids in them. We have additional information about the item ids in another table items. For the start i would just ike to be able to quickly answer questions like what parts (and how may) are in my item of interest. What other items are very similiar to the one item of interest. How can i visulize the parts list, as a diagram as different kind of table formats, etc.\n", "\n", "To lay the groundwork for this i was thinking of representing the parts list as graphs with networkx. Give honest and critical feedback? What are considerations, up and downsides? and what alternatives are there?"]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Response**\n", "\n", "Using NetworkX for representing parts lists as graphs is actually a very solid approach! Let me break down the pros and cons:\n", "\n", "Pros of NetworkX:\n", "1. Natural representation of hierarchical relationships\n", "2. Built-in algorithms for:\n", " - Finding all paths (useful for tracing component dependencies)\n", " - Similarity metrics between nodes\n", " - Easy visualization capabilities\n", "3. Efficient traversal of complex structures\n", "4. Can handle both directed (BOM hierarchy) and undirected relationships\n", "\n", "Potential downsides:\n", "1. Memory overhead for very large BOMs (>100k parts)\n", "2. Learning curve if you're not familiar with graph theory concepts\n", "3. Some visualizations can get messy with large structures\n", "\n", "Main alternatives to consider:\n", "1. Pure SQL queries with recursive CTEs\n", "2. Simple parent-child tables with recursive processing\n", "3. Tree data structures\n", "\n", "Would you like to explore any of these approaches in more detail? Or shall we start with a simple NetworkX implementation to see if it meets your needs?"]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Prompt**\n", "\n", "Before we decide and begin lets dive a little bit more into similarity metrics between nodes. How would that work on a conceptual level? When are nodes similiar?"]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Response**\n", "\n", "In the context of parts lists, nodes (items) can be considered similar in several interesting ways:\n", "\n", "1. Structural Similarity:\n", " - Based on shared components (successors)\n", " - Based on where they appear as components (predecessors)\n", " - Based on their position in the overall hierarchy\n", "\n", "2. Path-based Similarity:\n", " - How similar are the paths leading to/from these nodes\n", " - Do they share common ancestors or descendants\n", "\n", "For example, two different models of a motor might be considered similar if they share 80% of the same components, even if they're not identical.\n", "\n", "Would you like me to explain any of these approaches in more detail? Or would it help to discuss a specific example to make it more concrete?"]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Prompt**\n", "\n", "Often time our clients struggle with complexity management, just little changes on an already existing item leads to a new item id. For example just the color of one part is different. How could weigh some differences more than others? Sometimes the motor for one item changes and the motor is completly different but all the other paths from this item are completly the same, so those items should have a high similarity score."]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Response**\n", "\n", "Ah, this is a great point about weighted similarity! You're describing a common challenge in manufacturing where not all differences should be weighted equally. Let's think about how we could approach this:\n", "\n", "1. Component Importance Weighting:\n", " - Critical components (like motors) could have higher weights in similarity calculations\n", " - Cosmetic differences (like color) could have lower weights\n", " - We could assign weights based on:\n", " * Component cost\n", " * Functional importance\n", " * Assembly level (top-level differences vs deep in the structure)\n", "\n", "2. Hierarchical Distance:\n", " - Changes closer to leaf nodes (basic components) might be less significant\n", " - Changes at assembly levels might be more significant\n", " - Or vice versa, depending on your needs\n", "\n", "Would you like to explore how we could implement such a weighting system? We could start with a simple example to see how this might work in practice."]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Prompt**\n", "\n", "Thanks, i just wanted to make sure we can do the things, but lets start simple. Can you create some basic sample data. Maybe 10 different products with varying depth and complexity with some overlapping parts and components and some exclusive ones."]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Response**\n", "\n", "I'll help you create sample data that represents a realistic but manageable set of products. Let's create it together.\n", "\n", "First, let's define what our sample products could be - maybe a few variants of electric bikes? They would share many components but also have meaningful differences. Would that work as an example? \n", "\n", "If so, we could have:\n", "- Basic, Premium, and Sport models\n", "- Each with some variant (like different colors or motor sizes)\n", "- Some common components (frame, wheels, basic electronics)\n", "- Some exclusive components (premium display, sport suspension)\n", "\n", "Would this scenario be useful for our exploration? If yes, we can create the data structure. If not, what kind of products would you prefer to use as examples?"]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Prompt**\n", "\n", "Lets just start with the predecessor-successesor relationship and worry about attributes later. Just start by making a table with two columns predecessor, successesor. As a real world like product please use vacuum pumps. They tipically have a motor some kind of steel casing, a Operating principle (Rotary vane vacuum pumps, dry-running, Rotary vane vacuum pumps, oil-lubricated, Screw vacuum pumps, Claw vacuum pumps, Roots booster vacuum pumps, Side channel vacuum pumps, Radial vacuum pumps) and other parts like Hoses, angles, cosmetic parts, covers, etc."]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Response**\n", "\n", "I'll help structure this data for vacuum pumps. Let's start with a basic predecessor-successor relationship where each row represents one component being part of another component/assembly.\n", "\n", "Would you like me to propose a structure like this:\n", "```\n", "predecessor,successor\n", "PUMP_001,MOTOR_A1 # A rotary vane pump with its components\n", "PUMP_001,CASE_RV1\n", "PUMP_001,VANE_ASM1\n", "VANE_ASM1,VANE_001\n", "VANE_ASM1,BEARING_01\n", "```\n", "\n", "Before I create more data, does this format look right to you? And would you like me to include multiple pump types with some shared and some unique components?"]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Prompt**\n", "\n", "Yes this looks great, please do it."]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Response**\n", "\n", "I'll create a sample dataset with different types of vacuum pumps. I'll include:\n", "- 2 rotary vane pumps (one oil-lubricated, one dry-running)\n", "- 1 screw vacuum pump\n", "- 1 claw vacuum pump\n", "\n", "Would you like me to write this data directly as Python code to create a pandas DataFrame, or would you prefer a CSV format that you can then import? Also, should we include some shared components (like similar motors or cases) between different pump types to make our similarity analysis more interesting later?"]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Prompt**\n", "\n", "Write out the code to genereate the pandas dataframe directly and make the similarity analysis interesting by having a few shared components and diefferent and exclusive components. It should also include how often the part is installed."]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Response**\n", "\n", "I'll help you create a DataFrame with realistic vacuum pump structures. Let's create it with pandas, including quantities for each component. Here's the proposed code:\n", "\n", "```python\n", "import pandas as pd\n", "\n", "data = [\n", " # Rotary Vane Pump (Oil-lubricated) - PUMP_RV1\n", " ['PUMP_RV1', 'MOTOR_A1', 1],\n", " ['PUMP_RV1', 'CASE_STD1', 1],\n", " ['PUMP_RV1', 'VANE_ASM1', 1],\n", " ['PUMP_RV1', 'OIL_SYSTEM1', 1],\n", " ['VANE_ASM1', 'VANE_001', 6],\n", " ['VANE_ASM1', 'BEARING_01', 2],\n", " \n", " # Rotary Vane Pump (Dry-running) - PUMP_RV2\n", " ['PUMP_RV2', 'MOTOR_A1', 1], # Same motor as RV1\n", " ['PUMP_RV2', 'CASE_STD1', 1], # Same case as RV1\n", " ['PUMP_RV2', 'VANE_ASM2', 1],\n", " ['VANE_ASM2', 'VANE_002', 6], # Different vane type\n", " ['VANE_ASM2', 'BEARING_01', 2], # Same bearings\n", " \n", " # Screw Pump - PUMP_SC1\n", " ['PUMP_SC1', 'MOTOR_B1', 1], # Different motor\n", " ['PUMP_SC1', 'CASE_SC1', 1],\n", " ['PUMP_SC1', 'SCREW_ASM1', 1],\n", " ['SCREW_ASM1', 'SCREW_001', 2],\n", " ['SCREW_ASM1', 'BEARING_02', 4], # Different bearings\n", " \n", " # Claw Pump - PUMP_CL1\n", " ['PUMP_CL1', 'MOTOR_A1', 1], # Same motor as RV pumps\n", " ['PUMP_CL1', 'CASE_CL1', 1],\n", " ['PUMP_CL1', 'CLAW_ASM1', 1],\n", " ['CLAW_ASM1', 'CLAW_001', 2],\n", " ['CLAW_ASM1', 'BEARING_02', 4] # Same bearings as screw pump\n", "]\n", "\n", "df = pd.DataFrame(data, columns=['predecessor', 'successor', 'quantity'])\n", "```\n", "\n", "Would you like me to explain the relationships I've created here, or would you prefer to examine the data first and ask questions about specific aspects?"]}, {"cell_type": "code", "metadata": {}, "source": ["import pandas as pd\n", "\n", "data = [\n", " # Rotary Vane Pump (Oil-lubricated) - PUMP_RV1\n", " ['PUMP_RV1', 'MOTOR_A1', 1],\n", " ['PUMP_RV1', 'CASE_STD1', 1],\n", " ['PUMP_RV1', 'VANE_ASM1', 1],\n", " ['PUMP_RV1', 'OIL_SYSTEM1', 1],\n", " ['VANE_ASM1', 'VANE_001', 6],\n", " ['VANE_ASM1', 'BEARING_01', 2],\n", " \n", " # Rotary Vane Pump (Dry-running) - PUMP_RV2\n", " ['PUMP_RV2', 'MOTOR_A1', 1], # Same motor as RV1\n", " ['PUMP_RV2', 'CASE_STD1', 1], # Same case as RV1\n", " ['PUMP_RV2', 'VANE_ASM2', 1],\n", " ['VANE_ASM2', 'VANE_002', 6], # Different vane type\n", " ['VANE_ASM2', 'BEARING_01', 2], # Same bearings\n", " \n", " # Screw Pump - PUMP_SC1\n", " ['PUMP_SC1', 'MOTOR_B1', 1], # Different motor\n", " ['PUMP_SC1', 'CASE_SC1', 1],\n", " ['PUMP_SC1', 'SCREW_ASM1', 1],\n", " ['SCREW_ASM1', 'SCREW_001', 2],\n", " ['SCREW_ASM1', 'BEARING_02', 4], # Different bearings\n", " \n", " # Claw Pump - PUMP_CL1\n", " ['PUMP_CL1', 'MOTOR_A1', 1], # Same motor as RV pumps\n", " ['PUMP_CL1', 'CASE_CL1', 1],\n", " ['PUMP_CL1', 'CLAW_ASM1', 1],\n", " ['CLAW_ASM1', 'CLAW_001', 2],\n", " ['CLAW_ASM1', 'BEARING_02', 4] # Same bearings as screw pump\n", "]\n", "\n", "df = pd.DataFrame(data, columns=['predecessor', 'successor', 'quantity'])\n", "df.head(6)"], "outputs": [{"data": {"text/plain": [" predecessor successor quantity\n", "0 PUMP_RV1 MOTOR_A1 1\n", "1 PUMP_RV1 CASE_STD1 1\n", "2 PUMP_RV1 VANE_ASM1 1\n", "3 PUMP_RV1 OIL_SYSTEM1 1\n", "4 VANE_ASM1 VANE_001 6\n", "5 VANE_ASM1 BEARING_01 2"], "text/html": ["<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>predecessor</th>\n", " <th>successor</th>\n", " <th>quantity</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>PUMP_RV1</td>\n", " <td>MOTOR_A1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>PUMP_RV1</td>\n", " <td>CASE_STD1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>PUMP_RV1</td>\n", " <td>VANE_ASM1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>PUMP_RV1</td>\n", " <td>OIL_SYSTEM1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>VANE_ASM1</td>\n", " <td>VANE_001</td>\n", " <td>6</td>\n", " </tr>\n", " <tr>\n", " <th>5</th>\n", " <td>VANE_ASM1</td>\n", " <td>BEARING_01</td>\n", " <td>2</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Prompt**\n", "\n", "Perfect, can you now create a dataframe with different attributes for every id?"]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Response**\n", "\n", "I'll help create an attributes DataFrame. Let's consider some relevant attributes for vacuum pump components:\n", "- component_type (motor, case, bearing, etc.)\n", "- material (steel, aluminum, etc.)\n", "- weight (in kg)\n", "- cost (in currency units)\n", "- supplier_code\n", "- procurement time (days)\n", "- production time (min)\n", "\n", "Would these attributes make sense? If so, I can create the DataFrame. Or would you prefer different/additional attributes that would be more relevant for your analysis?"]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Prompt**\n", "\n", "This looks great. Please create sample data."]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Response**\n", "\n", "I'll create a DataFrame with these attributes. Here's the code:\n", "\n", "```python\n", "attributes_data = {\n", " 'id': [\n", " 'PUMP_RV1', 'PUMP_RV2', 'PUMP_SC1', 'PUMP_CL1', # Final assemblies\n", " 'MOTOR_A1', 'MOTOR_B1', # Motors\n", " 'CASE_STD1', 'CASE_SC1', 'CASE_CL1', # Cases\n", " 'VANE_ASM1', 'VANE_ASM2', 'SCREW_ASM1', 'CLAW_ASM1', # Subassemblies\n", " 'VANE_001', 'VANE_002', 'SCREW_001', 'CLAW_001', # Core components\n", " 'BEARING_01', 'BEARING_02', # Bearings\n", " 'OIL_SYSTEM1' # Oil system\n", " ],\n", " 'component_type': [\n", " 'assembly', 'assembly', 'assembly', 'assembly',\n", " 'motor', 'motor',\n", " 'case', 'case', 'case',\n", " 'subassembly', 'subassembly', 'subassembly', 'subassembly',\n", " 'vane', 'vane', 'screw', 'claw',\n", " 'bearing', 'bearing',\n", " 'lubrication'\n", " ],\n", " 'material': [\n", " 'mixed', 'mixed', 'mixed', 'mixed',\n", " 'steel/copper', 'steel/copper',\n", " 'cast_iron', 'steel', 'aluminum',\n", " 'mixed', 'mixed', 'mixed', 'mixed',\n", " 'ceramic', 'carbon', 'hardened_steel', 'hardened_steel',\n", " 'steel', 'ceramic',\n", " 'mixed'\n", " ],\n", " 'weight_kg': [\n", " 45.0, 42.0, 55.0, 48.0, # Assemblies\n", " 12.5, 15.0, # Motors\n", " 18.0, 22.0, 15.0, # Cases\n", " 8.0, 7.5, 12.0, 10.0, # Subassemblies\n", " 0.2, 0.15, 2.5, 2.0, # Core components\n", " 0.3, 0.25, # Bearings\n", " 3.5 # Oil system\n", " ],\n", " 'cost': [\n", " 2500, 2300, 3000, 2800, # Assemblies\n", " 800, 1000, # Motors\n", " 400, 600, 450, # Cases\n", " 300, 280, 450, 400, # Subassemblies\n", " 50, 65, 150, 140, # Core components\n", " 30, 45, # Bearings\n", " 150 # Oil system\n", " ],\n", " 'supplier_code': [\n", " 'INTERNAL', 'INTERNAL', 'INTERNAL', 'INTERNAL',\n", " 'SUP_A', 'SUP_A',\n", " 'SUP_B', 'SUP_B', 'SUP_C',\n", " 'INTERNAL', 'INTERNAL', 'INTERNAL', 'INTERNAL',\n", " 'SUP_D', 'SUP_D', 'SUP_E', 'SUP_E',\n", " 'SUP_F', 'SUP_F',\n", " 'SUP_G'\n", " ],\n", " 'procurement_days': [\n", " 0, 0, 0, 0, # Assemblies (manufactured internally)\n", " 14, 14, # Motors\n", " 7, 10, 7, # Cases\n", " 0, 0, 0, 0, # Subassemblies (manufactured internally)\n", " 5, 5, 8, 8, # Core components\n", " 3, 3, # Bearings\n", " 5 # Oil system\n", " ],\n", " 'production_time_min': [\n", " 120, 110, 150, 130, # Assemblies\n", " 0, 0, # Motors (bought)\n", " 0, 0, 0, # Cases (bought)\n", " 45, 40, 60, 55, # Subassemblies\n", " 0, 0, 0, 0, # Core components (bought)\n", " 0, 0, # Bearings (bought)\n", " 0 # Oil system (bought)\n", " ]\n", "}\n", "\n", "df_attributes = pd.DataFrame(attributes_data)\n", "```\n", "\n", "Would you like to see the first few rows to verify the data structure? Also, we could add more attributes or modify existing ones if needed for your analysis."]}, {"cell_type": "code", "metadata": {}, "source": ["attributes_data = {\n", " 'id': [\n", " 'PUMP_RV1', 'PUMP_RV2', 'PUMP_SC1', 'PUMP_CL1', # Final assemblies\n", " 'MOTOR_A1', 'MOTOR_B1', # Motors\n", " 'CASE_STD1', 'CASE_SC1', 'CASE_CL1', # Cases\n", " 'VANE_ASM1', 'VANE_ASM2', 'SCREW_ASM1', 'CLAW_ASM1', # Subassemblies\n", " 'VANE_001', 'VANE_002', 'SCREW_001', 'CLAW_001', # Core components\n", " 'BEARING_01', 'BEARING_02', # Bearings\n", " 'OIL_SYSTEM1' # Oil system\n", " ],\n", " 'component_type': [\n", " 'assembly', 'assembly', 'assembly', 'assembly',\n", " 'motor', 'motor',\n", " 'case', 'case', 'case',\n", " 'subassembly', 'subassembly', 'subassembly', 'subassembly',\n", " 'vane', 'vane', 'screw', 'claw',\n", " 'bearing', 'bearing',\n", " 'lubrication'\n", " ],\n", " 'material': [\n", " 'mixed', 'mixed', 'mixed', 'mixed',\n", " 'steel/copper', 'steel/copper',\n", " 'cast_iron', 'steel', 'aluminum',\n", " 'mixed', 'mixed', 'mixed', 'mixed',\n", " 'ceramic', 'carbon', 'hardened_steel', 'hardened_steel',\n", " 'steel', 'ceramic',\n", " 'mixed'\n", " ],\n", " 'weight_kg': [\n", " 45.0, 42.0, 55.0, 48.0, # Assemblies\n", " 12.5, 15.0, # Motors\n", " 18.0, 22.0, 15.0, # Cases\n", " 8.0, 7.5, 12.0, 10.0, # Subassemblies\n", " 0.2, 0.15, 2.5, 2.0, # Core components\n", " 0.3, 0.25, # Bearings\n", " 3.5 # Oil system\n", " ],\n", " 'cost': [\n", " 2500, 2300, 3000, 2800, # Assemblies\n", " 800, 1000, # Motors\n", " 400, 600, 450, # Cases\n", " 300, 280, 450, 400, # Subassemblies\n", " 50, 65, 150, 140, # Core components\n", " 30, 45, # Bearings\n", " 150 # Oil system\n", " ],\n", " 'supplier_code': [\n", " 'INTERNAL', 'INTERNAL', 'INTERNAL', 'INTERNAL',\n", " 'SUP_A', 'SUP_A',\n", " 'SUP_B', 'SUP_B', 'SUP_C',\n", " 'INTERNAL', 'INTERNAL', 'INTERNAL', 'INTERNAL',\n", " 'SUP_D', 'SUP_D', 'SUP_E', 'SUP_E',\n", " 'SUP_F', 'SUP_F',\n", " 'SUP_G'\n", " ],\n", " 'procurement_days': [\n", " 0, 0, 0, 0, # Assemblies (manufactured internally)\n", " 14, 14, # Motors\n", " 7, 10, 7, # Cases\n", " 0, 0, 0, 0, # Subassemblies (manufactured internally)\n", " 5, 5, 8, 8, # Core components\n", " 3, 3, # Bearings\n", " 5 # Oil system\n", " ],\n", " 'production_time_min': [\n", " 120, 110, 150, 130, # Assemblies\n", " 0, 0, # Motors (bought)\n", " 0, 0, 0, # Cases (bought)\n", " 45, 40, 60, 55, # Subassemblies\n", " 0, 0, 0, 0, # Core components (bought)\n", " 0, 0, # Bearings (bought)\n", " 0 # Oil system (bought)\n", " ]\n", "}\n", "\n", "df_attributes = pd.DataFrame(attributes_data)\n", "df_attributes.head()"], "outputs": [{"data": {"text/plain": [" id component_type ... procurement_days production_time_min\n", "0 PUMP_RV1 assembly ... 0 120\n", "1 PUMP_RV2 assembly ... 0 110\n", "2 PUMP_SC1 assembly ... 0 150\n", "3 PUMP_CL1 assembly ... 0 130\n", "4 MOTOR_A1 motor ... 14 0\n", "\n", "[5 rows x 8 columns]"], "text/html": ["<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>id</th>\n", " <th>component_type</th>\n", " <th>material</th>\n", " <th>weight_kg</th>\n", " <th>cost</th>\n", " <th>supplier_code</th>\n", " <th>procurement_days</th>\n", " <th>production_time_min</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>PUMP_RV1</td>\n", " <td>assembly</td>\n", " <td>mixed</td>\n", " <td>45.0</td>\n", " <td>2500</td>\n", " <td>INTERNAL</td>\n", " <td>0</td>\n", " <td>120</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>PUMP_RV2</td>\n", " <td>assembly</td>\n", " <td>mixed</td>\n", " <td>42.0</td>\n", " <td>2300</td>\n", " <td>INTERNAL</td>\n", " <td>0</td>\n", " <td>110</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>PUMP_SC1</td>\n", " <td>assembly</td>\n", " <td>mixed</td>\n", " <td>55.0</td>\n", " <td>3000</td>\n", " <td>INTERNAL</td>\n", " <td>0</td>\n", " <td>150</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>PUMP_CL1</td>\n", " <td>assembly</td>\n", " <td>mixed</td>\n", " <td>48.0</td>\n", " <td>2800</td>\n", " <td>INTERNAL</td>\n", " <td>0</td>\n", " <td>130</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>MOTOR_A1</td>\n", " <td>motor</td>\n", " <td>steel/copper</td>\n", " <td>12.5</td>\n", " <td>800</td>\n", " <td>SUP_A</td>\n", " <td>14</td>\n", " <td>0</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "markdown", "metadata": {}, "source": ["# Summary\n", "\n", "We're working with a manufacturing dataset that represents vacuum pumps and their components. We have two main data structures:\n", "\n", "A bill of materials (BOM) table showing predecessor-successor relationships between parts, including quantities needed\n", "An attributes table containing detailed information about each component (like weight, cost, material, etc.)\n", "Our goal is to create tools and analyses that help with:\n", "\n", "- Understanding product structures\n", "- Finding similarities between different products\n", "- Visualizing parts relationships\n", "- Analyzing costs and complexity\n", "\n", "We've created sample data with 4 different types of vacuum pumps (rotary vane oil-lubricated, rotary vane dry-running, screw, and claw), with some shared components between them to make similarity analysis interesting."]}, {"cell_type": "code", "metadata": {}, "source": ["df"], "outputs": [{"data": {"text/plain": [" predecessor successor quantity\n", "0 PUMP_RV1 MOTOR_A1 1\n", "1 PUMP_RV1 CASE_STD1 1\n", "2 PUMP_RV1 VANE_ASM1 1\n", "3 PUMP_RV1 OIL_SYSTEM1 1\n", "4 VANE_ASM1 VANE_001 6\n", "5 VANE_ASM1 BEARING_01 2\n", "6 PUMP_RV2 MOTOR_A1 1\n", "7 PUMP_RV2 CASE_STD1 1\n", "8 PUMP_RV2 VANE_ASM2 1\n", "9 VANE_ASM2 VANE_002 6\n", "10 VANE_ASM2 BEARING_01 2\n", "11 PUMP_SC1 MOTOR_B1 1\n", "12 PUMP_SC1 CASE_SC1 1\n", "13 PUMP_SC1 SCREW_ASM1 1\n", "14 SCREW_ASM1 SCREW_001 2\n", "15 SCREW_ASM1 BEARING_02 4\n", "16 PUMP_CL1 MOTOR_A1 1\n", "17 PUMP_CL1 CASE_CL1 1\n", "18 PUMP_CL1 CLAW_ASM1 1\n", "19 CLAW_ASM1 CLAW_001 2\n", "20 CLAW_ASM1 BEARING_02 4"], "text/html": ["<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>predecessor</th>\n", " <th>successor</th>\n", " <th>quantity</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>PUMP_RV1</td>\n", " <td>MOTOR_A1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>PUMP_RV1</td>\n", " <td>CASE_STD1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>PUMP_RV1</td>\n", " <td>VANE_ASM1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>PUMP_RV1</td>\n", " <td>OIL_SYSTEM1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>VANE_ASM1</td>\n", " <td>VANE_001</td>\n", " <td>6</td>\n", " </tr>\n", " <tr>\n", " <th>5</th>\n", " <td>VANE_ASM1</td>\n", " <td>BEARING_01</td>\n", " <td>2</td>\n", " </tr>\n", " <tr>\n", " <th>6</th>\n", " <td>PUMP_RV2</td>\n", " <td>MOTOR_A1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>7</th>\n", " <td>PUMP_RV2</td>\n", " <td>CASE_STD1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>8</th>\n", " <td>PUMP_RV2</td>\n", " <td>VANE_ASM2</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>9</th>\n", " <td>VANE_ASM2</td>\n", " <td>VANE_002</td>\n", " <td>6</td>\n", " </tr>\n", " <tr>\n", " <th>10</th>\n", " <td>VANE_ASM2</td>\n", " <td>BEARING_01</td>\n", " <td>2</td>\n", " </tr>\n", " <tr>\n", " <th>11</th>\n", " <td>PUMP_SC1</td>\n", " <td>MOTOR_B1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>12</th>\n", " <td>PUMP_SC1</td>\n", " <td>CASE_SC1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>13</th>\n", " <td>PUMP_SC1</td>\n", " <td>SCREW_ASM1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>14</th>\n", " <td>SCREW_ASM1</td>\n", " <td>SCREW_001</td>\n", " <td>2</td>\n", " </tr>\n", " <tr>\n", " <th>15</th>\n", " <td>SCREW_ASM1</td>\n", " <td>BEARING_02</td>\n", " <td>4</td>\n", " </tr>\n", " <tr>\n", " <th>16</th>\n", " <td>PUMP_CL1</td>\n", " <td>MOTOR_A1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>17</th>\n", " <td>PUMP_CL1</td>\n", " <td>CASE_CL1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>18</th>\n", " <td>PUMP_CL1</td>\n", " <td>CLAW_ASM1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>19</th>\n", " <td>CLAW_ASM1</td>\n", " <td>CLAW_001</td>\n", " <td>2</td>\n", " </tr>\n", " <tr>\n", " <th>20</th>\n", " <td>CLAW_ASM1</td>\n", " <td>BEARING_02</td>\n", " <td>4</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["df_attributes"], "outputs": [{"data": {"text/plain": [" id component_type ... procurement_days production_time_min\n", "0 PUMP_RV1 assembly ... 0 120\n", "1 PUMP_RV2 assembly ... 0 110\n", "2 PUMP_SC1 assembly ... 0 150\n", "3 PUMP_CL1 assembly ... 0 130\n", "4 MOTOR_A1 motor ... 14 0\n", "5 MOTOR_B1 motor ... 14 0\n", "6 CASE_STD1 case ... 7 0\n", "7 CASE_SC1 case ... 10 0\n", "8 CASE_CL1 case ... 7 0\n", "9 VANE_ASM1 subassembly ... 0 45\n", "10 VANE_ASM2 subassembly ... 0 40\n", "11 SCREW_ASM1 subassembly ... 0 60\n", "12 CLAW_ASM1 subassembly ... 0 55\n", "13 VANE_001 vane ... 5 0\n", "14 VANE_002 vane ... 5 0\n", "15 SCREW_001 screw ... 8 0\n", "16 CLAW_001 claw ... 8 0\n", "17 BEARING_01 bearing ... 3 0\n", "18 BEARING_02 bearing ... 3 0\n", "19 OIL_SYSTEM1 lubrication ... 5 0\n", "\n", "[20 rows x 8 columns]"], "text/html": ["<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>id</th>\n", " <th>component_type</th>\n", " <th>material</th>\n", " <th>weight_kg</th>\n", " <th>cost</th>\n", " <th>supplier_code</th>\n", " <th>procurement_days</th>\n", " <th>production_time_min</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>PUMP_RV1</td>\n", " <td>assembly</td>\n", " <td>mixed</td>\n", " <td>45.00</td>\n", " <td>2500</td>\n", " <td>INTERNAL</td>\n", " <td>0</td>\n", " <td>120</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>PUMP_RV2</td>\n", " <td>assembly</td>\n", " <td>mixed</td>\n", " <td>42.00</td>\n", " <td>2300</td>\n", " <td>INTERNAL</td>\n", " <td>0</td>\n", " <td>110</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>PUMP_SC1</td>\n", " <td>assembly</td>\n", " <td>mixed</td>\n", " <td>55.00</td>\n", " <td>3000</td>\n", " <td>INTERNAL</td>\n", " <td>0</td>\n", " <td>150</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>PUMP_CL1</td>\n", " <td>assembly</td>\n", " <td>mixed</td>\n", " <td>48.00</td>\n", " <td>2800</td>\n", " <td>INTERNAL</td>\n", " <td>0</td>\n", " <td>130</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>MOTOR_A1</td>\n", " <td>motor</td>\n", " <td>steel/copper</td>\n", " <td>12.50</td>\n", " <td>800</td>\n", " <td>SUP_A</td>\n", " <td>14</td>\n", " <td>0</td>\n", " </tr>\n", " <tr>\n", " <th>5</th>\n", " <td>MOTOR_B1</td>\n", " <td>motor</td>\n", " <td>steel/copper</td>\n", " <td>15.00</td>\n", " <td>1000</td>\n", " <td>SUP_A</td>\n", " <td>14</td>\n", " <td>0</td>\n", " </tr>\n", " <tr>\n", " <th>6</th>\n", " <td>CASE_STD1</td>\n", " <td>case</td>\n", " <td>cast_iron</td>\n", " <td>18.00</td>\n", " <td>400</td>\n", " <td>SUP_B</td>\n", " <td>7</td>\n", " <td>0</td>\n", " </tr>\n", " <tr>\n", " <th>7</th>\n", " <td>CASE_SC1</td>\n", " <td>case</td>\n", " <td>steel</td>\n", " <td>22.00</td>\n", " <td>600</td>\n", " <td>SUP_B</td>\n", " <td>10</td>\n", " <td>0</td>\n", " </tr>\n", " <tr>\n", " <th>8</th>\n", " <td>CASE_CL1</td>\n", " <td>case</td>\n", " <td>aluminum</td>\n", " <td>15.00</td>\n", " <td>450</td>\n", " <td>SUP_C</td>\n", " <td>7</td>\n", " <td>0</td>\n", " </tr>\n", " <tr>\n", " <th>9</th>\n", " <td>VANE_ASM1</td>\n", " <td>subassembly</td>\n", " <td>mixed</td>\n", " <td>8.00</td>\n", " <td>300</td>\n", " <td>INTERNAL</td>\n", " <td>0</td>\n", " <td>45</td>\n", " </tr>\n", " <tr>\n", " <th>10</th>\n", " <td>VANE_ASM2</td>\n", " <td>subassembly</td>\n", " <td>mixed</td>\n", " <td>7.50</td>\n", " <td>280</td>\n", " <td>INTERNAL</td>\n", " <td>0</td>\n", " <td>40</td>\n", " </tr>\n", " <tr>\n", " <th>11</th>\n", " <td>SCREW_ASM1</td>\n", " <td>subassembly</td>\n", " <td>mixed</td>\n", " <td>12.00</td>\n", " <td>450</td>\n", " <td>INTERNAL</td>\n", " <td>0</td>\n", " <td>60</td>\n", " </tr>\n", " <tr>\n", " <th>12</th>\n", " <td>CLAW_ASM1</td>\n", " <td>subassembly</td>\n", " <td>mixed</td>\n", " <td>10.00</td>\n", " <td>400</td>\n", " <td>INTERNAL</td>\n", " <td>0</td>\n", " <td>55</td>\n", " </tr>\n", " <tr>\n", " <th>13</th>\n", " <td>VANE_001</td>\n", " <td>vane</td>\n", " <td>ceramic</td>\n", " <td>0.20</td>\n", " <td>50</td>\n", " <td>SUP_D</td>\n", " <td>5</td>\n", " <td>0</td>\n", " </tr>\n", " <tr>\n", " <th>14</th>\n", " <td>VANE_002</td>\n", " <td>vane</td>\n", " <td>carbon</td>\n", " <td>0.15</td>\n", " <td>65</td>\n", " <td>SUP_D</td>\n", " <td>5</td>\n", " <td>0</td>\n", " </tr>\n", " <tr>\n", " <th>15</th>\n", " <td>SCREW_001</td>\n", " <td>screw</td>\n", " <td>hardened_steel</td>\n", " <td>2.50</td>\n", " <td>150</td>\n", " <td>SUP_E</td>\n", " <td>8</td>\n", " <td>0</td>\n", " </tr>\n", " <tr>\n", " <th>16</th>\n", " <td>CLAW_001</td>\n", " <td>claw</td>\n", " <td>hardened_steel</td>\n", " <td>2.00</td>\n", " <td>140</td>\n", " <td>SUP_E</td>\n", " <td>8</td>\n", " <td>0</td>\n", " </tr>\n", " <tr>\n", " <th>17</th>\n", " <td>BEARING_01</td>\n", " <td>bearing</td>\n", " <td>steel</td>\n", " <td>0.30</td>\n", " <td>30</td>\n", " <td>SUP_F</td>\n", " <td>3</td>\n", " <td>0</td>\n", " </tr>\n", " <tr>\n", " <th>18</th>\n", " <td>BEARING_02</td>\n", " <td>bearing</td>\n", " <td>ceramic</td>\n", " <td>0.25</td>\n", " <td>45</td>\n", " <td>SUP_F</td>\n", " <td>3</td>\n", " <td>0</td>\n", " </tr>\n", " <tr>\n", " <th>19</th>\n", " <td>OIL_SYSTEM1</td>\n", " <td>lubrication</td>\n", " <td>mixed</td>\n", " <td>3.50</td>\n", " <td>150</td>\n", " <td>SUP_G</td>\n", " <td>5</td>\n", " <td>0</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Prompt**\n", "\n", "Lets start by visualizing the product structure with networkX."]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Response**\n", "\n", "I'll help you create a visualization of the product structure using NetworkX. Would you like to start by visualizing one specific pump (like PUMP_RV1) first to keep it clear and manageable? Or would you prefer to see all pumps at once?\n", "\n", "I can help guide you through:\n", "1. Creating the NetworkX graph from our DataFrame\n", "2. Setting up the visualization parameters (layout, colors, labels)\n", "3. Displaying the result\n", "\n", "Which approach would you prefer to start with?"]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Prompt**\n", "\n", "Before we start, i think we do not have a use case where we have to visulaize every product at once, but rather one at a time. But i don't know if it might be smart to create one wholistic graph with all products and then just visulize parts of it or create a individual graph for every visulization. What should we consider?"]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Response**\n", "\n", "That's a great question about architecture! Let's consider the pros and cons of each approach:\n", "\n", "Single Holistic Graph:\n", "Pros:\n", "- Maintains relationships between shared components\n", "- Better for similarity analysis\n", "- More efficient if you need to switch between different views\n", "- Easier to track common components across products\n", "\n", "Cons:\n", "- More memory usage\n", "- More complex to manage\n", "- Need to carefully filter for visualization\n", "\n", "Individual Graphs:\n", "Pros:\n", "- Simpler to manage\n", "- Lower memory usage per graph\n", "- Cleaner code structure\n", "- Faster to generate single views\n", "\n", "Cons:\n", "- Duplicates shared component information\n", "- Harder to analyze cross-product relationships\n", "- Need to recreate graphs for each analysis\n", "\n", "Given your interest in similarity analysis and the fact that we have shared components (like MOTOR_A1 being used in multiple pumps), would you lean towards the holistic approach? We could create a base graph and then write functions to extract and visualize subgraphs as needed.\n", "\n", "What are your thoughts on these trade-offs?"]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Prompt**\n", "\n", "What do you think about doing both? I would start with the individual graph approach because its easier to implement and we might find out more about our requieremnts on the journey. After that if we still think its useful to create a holistic graph we can do it then."]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Response**\n", "\n", "That's a really smart approach! Starting simple and iterating based on learned requirements is a solid software development practice. I like how you're thinking about this.\n", "\n", "Shall we start by creating a function that builds and visualizes a graph for a single pump? We can:\n", "\n", "1. First write a function that takes a pump ID (like 'PUMP_RV1') and creates its graph\n", "2. Add visualization parameters (colors based on component_type, etc.)\n", "3. Test it with different pumps to see how it works\n", "\n", "Once we have this working, we'll better understand:\n", "- What visualization features we need\n", "- How we handle shared components in practice\n", "- Where we might need the holistic approach\n", "\n", "Would you like to start with creating this basic function for a single pump?"]}, {"cell_type": "markdown", "metadata": {}, "source": ["Approach:\n", "1. filter df based on predecessor and get successors\n", "2. add successors to part_list\n", "3. then go through each successors and use them as predecessor to find new successors (jump to 1.)\n", "4. do this until there are no more new successors"]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Prompt**\n", "\n", "Does this approach make sense?"]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Response**\n", "\n", "Yes, that's a good approach! You're describing a recursive or iterative process to build the complete bill of materials (BOM) tree. Let me break down why this works:\n", "\n", "1. Start with the top-level pump (root node)\n", "2. Find its immediate components (first level)\n", "3. For each component found, find its subcomponents (next level)\n", "4. Repeat until no more components are found (leaf nodes)\n", "\n", "This is essentially a depth-first or breadth-first traversal, depending on how we implement it. \n", "\n", "Would you like to start implementing this? We could begin with either:\n", "1. A simple recursive function\n", "2. An iterative approach using a queue/list\n", "\n", "Which implementation style would you prefer to try first?"]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Prompt**\n", "\n", "What are the pros and cons of each approach? and are the already implementations we can use?"]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Response**\n", "\n", "Let me break down the approaches:\n", "\n", "Recursive Approach:\n", "Pros:\n", "- Clean, intuitive code that mirrors the tree structure\n", "- Simpler to implement initially\n", "- Natural for tree-like structures\n", "\n", "Cons:\n", "- Can hit recursion depth limits with very deep structures\n", "- More memory overhead due to call stack\n", "- Can be harder to debug\n", "\n", "Iterative Approach:\n", "Pros:\n", "- Better memory efficiency\n", "- No recursion depth limits\n", "- Often faster execution\n", "- Easier to debug\n", "\n", "Cons:\n", "- Code can be more complex to write and understand\n", "- Need to manage the queue/stack explicitly\n", "\n", "As for existing implementations:\n", "NetworkX actually provides several built-in functions we could use:\n", "- `descendants()` - gets all descendants of a node\n", "- `subgraph()` - extracts a subgraph\n", "- Various tree/hierarchy traversal algorithms\n", "\n", "Would you like to explore using these built-in functions first, or would you prefer to implement our own solution to better understand the process?"]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Prompt**\n", "\n", "Then lets do the iterative approach."]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Response**\n", "\n", "Alright, let's build an iterative solution step by step. We'll use a queue or list to keep track of nodes we need to process.\n", "\n", "Would you like to try implementing it yourself with some guidance, or would you prefer to see a basic implementation first? \n", "\n", "If you want to try it, here's a suggested structure:\n", "1. Start with an empty queue and add the initial pump ID\n", "2. While the queue isn't empty:\n", " - Take a node from the queue\n", " - Find its immediate successors from the DataFrame\n", " - Add new successors to the queue\n", " - Add the relationships to our graph\n", "\n", "Would you like to try implementing this structure, or would you prefer more guidance first?"]}, {"cell_type": "code", "metadata": {}, "source": ["df.head()"], "outputs": [{"data": {"text/plain": [" predecessor successor quantity\n", "0 PUMP_RV1 MOTOR_A1 1\n", "1 PUMP_RV1 CASE_STD1 1\n", "2 PUMP_RV1 VANE_ASM1 1\n", "3 PUMP_RV1 OIL_SYSTEM1 1\n", "4 VANE_ASM1 VANE_001 6"], "text/html": ["<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>predecessor</th>\n", " <th>successor</th>\n", " <th>quantity</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>PUMP_RV1</td>\n", " <td>MOTOR_A1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>PUMP_RV1</td>\n", " <td>CASE_STD1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>PUMP_RV1</td>\n", " <td>VANE_ASM1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>PUMP_RV1</td>\n", " <td>OIL_SYSTEM1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>VANE_ASM1</td>\n", " <td>VANE_001</td>\n", " <td>6</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["df[df['predecessor'] == 'PUMP_RV1']"], "outputs": [{"data": {"text/plain": [" predecessor successor quantity\n", "0 PUMP_RV1 MOTOR_A1 1\n", "1 PUMP_RV1 CASE_STD1 1\n", "2 PUMP_RV1 VANE_ASM1 1\n", "3 PUMP_RV1 OIL_SYSTEM1 1"], "text/html": ["<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>predecessor</th>\n", " <th>successor</th>\n", " <th>quantity</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>PUMP_RV1</td>\n", " <td>MOTOR_A1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>PUMP_RV1</td>\n", " <td>CASE_STD1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>PUMP_RV1</td>\n", " <td>VANE_ASM1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>PUMP_RV1</td>\n", " <td>OIL_SYSTEM1</td>\n", " <td>1</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["df.loc[df['predecessor'] == 'PUMP_RV1', 'successor'].unique()"], "outputs": [{"data": {"text/plain": ["array(['MOTOR_A1', 'CASE_STD1', 'VANE_ASM1', 'OIL_SYSTEM1'], dtype=object)"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["def find_successors(df,predecessor):\n", " return set(df.loc[df['predecessor'] == predecessor, 'successor'])\n", "\n", "find_successors(df,'PUMP_RV1')"], "outputs": [{"data": {"text/plain": ["{'CASE_STD1', 'MOTOR_A1', 'OIL_SYSTEM1', 'VANE_ASM1'}"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["parts = set(['PUMP_RV1'])\n", "parts"], "outputs": [{"data": {"text/plain": ["{'PUMP_RV1'}"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["queue = set(['PUMP_RV1'])\n", "queue"], "outputs": [{"data": {"text/plain": ["{'PUMP_RV1'}"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["queue.pop()"], "outputs": [{"data": {"text/plain": ["'PUMP_RV1'"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["queue"], "outputs": [{"data": {"text/plain": ["set()"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "markdown", "metadata": {}, "source": ["pop() doesn't just select the lastelemet of the set but removes it from the set."]}, {"cell_type": "code", "metadata": {}, "source": ["parts = set(['PUMP_RV1'])\n", "queue = set(['PUMP_RV1'])\n", "\n", "find_successors(df,queue.pop())"], "outputs": [{"data": {"text/plain": ["{'CASE_STD1', 'MOTOR_A1', 'OIL_SYSTEM1', 'VANE_ASM1'}"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["parts = set(['PUMP_RV1'])\n", "queue = set(['PUMP_RV1'])\n", "\n", "successors = find_successors(df,queue.pop())\n", "successors - parts"], "outputs": [{"data": {"text/plain": ["{'CASE_STD1', 'MOTOR_A1', 'OIL_SYSTEM1', 'VANE_ASM1'}"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["parts = set(['PUMP_RV1'])\n", "queue = set(['PUMP_RV1'])\n", "\n", "successors = find_successors(df,queue.pop())\n", "new_parts = successors - parts\n", "parts.update(new_parts)\n", "parts"], "outputs": [{"data": {"text/plain": ["{'CASE_STD1', 'MOTOR_A1', 'OIL_SYSTEM1', 'PUMP_RV1', 'VANE_ASM1'}"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["parts = set(['PUMP_RV1'])\n", "queue = set(['PUMP_RV1'])\n", "\n", "successors = find_successors(df,queue.pop())\n", "new_parts = successors - parts\n", "parts.update(new_parts)\n", "queue.update(new_parts)\n", "queue"], "outputs": [{"data": {"text/plain": ["{'CASE_STD1', 'MOTOR_A1', 'OIL_SYSTEM1', 'VANE_ASM1'}"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["successors = find_successors(df,queue.pop())\n", "new_parts = successors - parts\n", "parts.update(new_parts)\n", "queue.update(new_parts)\n", "queue"], "outputs": [{"data": {"text/plain": ["{'CASE_STD1', 'OIL_SYSTEM1', 'VANE_ASM1'}"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["successors = find_successors(df,queue.pop())\n", "new_parts = successors - parts\n", "parts.update(new_parts)\n", "queue.update(new_parts)\n", "queue"], "outputs": [{"data": {"text/plain": ["{'BEARING_01', 'CASE_STD1', 'OIL_SYSTEM1', 'VANE_001'}"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["successors = find_successors(df,queue.pop())\n", "new_parts = successors - parts\n", "parts.update(new_parts)\n", "queue.update(new_parts)\n", "queue"], "outputs": [{"data": {"text/plain": ["{'BEARING_01', 'CASE_STD1', 'OIL_SYSTEM1'}"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["parts"], "outputs": [{"data": {"text/plain": ["{'BEARING_01',\n", " 'CASE_STD1',\n", " 'MOTOR_A1',\n", " 'OIL_SYSTEM1',\n", " 'PUMP_RV1',\n", " 'VANE_001',\n", " 'VANE_ASM1'}"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["def get_all_parts(df, root_id):\n", " parts = set([root_id])\n", " queue = set([root_id])\n", " while queue:\n", " successors = find_successors(df, queue.pop())\n", " new_parts = successors - parts\n", " parts.update(new_parts)\n", " queue.update(new_parts) \n", " return parts\n", "\n", "parts = get_all_parts(df, 'PUMP_RV1')\n", "parts"], "outputs": [{"data": {"text/plain": ["{'BEARING_01',\n", " 'CASE_STD1',\n", " 'MOTOR_A1',\n", " 'OIL_SYSTEM1',\n", " 'PUMP_RV1',\n", " 'VANE_001',\n", " 'VANE_ASM1'}"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["df[df['predecessor'].isin(parts) | df['successor'].isin(parts)]"], "outputs": [{"data": {"text/plain": [" predecessor successor quantity\n", "0 PUMP_RV1 MOTOR_A1 1\n", "1 PUMP_RV1 CASE_STD1 1\n", "2 PUMP_RV1 VANE_ASM1 1\n", "3 PUMP_RV1 OIL_SYSTEM1 1\n", "4 VANE_ASM1 VANE_001 6\n", "5 VANE_ASM1 BEARING_01 2\n", "6 PUMP_RV2 MOTOR_A1 1\n", "7 PUMP_RV2 CASE_STD1 1\n", "10 VANE_ASM2 BEARING_01 2\n", "16 PUMP_CL1 MOTOR_A1 1"], "text/html": ["<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>predecessor</th>\n", " <th>successor</th>\n", " <th>quantity</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>PUMP_RV1</td>\n", " <td>MOTOR_A1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>PUMP_RV1</td>\n", " <td>CASE_STD1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>PUMP_RV1</td>\n", " <td>VANE_ASM1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>PUMP_RV1</td>\n", " <td>OIL_SYSTEM1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>VANE_ASM1</td>\n", " <td>VANE_001</td>\n", " <td>6</td>\n", " </tr>\n", " <tr>\n", " <th>5</th>\n", " <td>VANE_ASM1</td>\n", " <td>BEARING_01</td>\n", " <td>2</td>\n", " </tr>\n", " <tr>\n", " <th>6</th>\n", " <td>PUMP_RV2</td>\n", " <td>MOTOR_A1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>7</th>\n", " <td>PUMP_RV2</td>\n", " <td>CASE_STD1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>10</th>\n", " <td>VANE_ASM2</td>\n", " <td>BEARING_01</td>\n", " <td>2</td>\n", " </tr>\n", " <tr>\n", " <th>16</th>\n", " <td>PUMP_CL1</td>\n", " <td>MOTOR_A1</td>\n", " <td>1</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["def get_df_for_product(df, root_id):\n", " parts = get_all_parts(df, root_id)\n", " return df[df['predecessor'].isin(parts) & df['successor'].isin(parts)]\n", "\n", "get_df_for_product(df,'PUMP_RV1')"], "outputs": [{"data": {"text/plain": [" predecessor successor quantity\n", "0 PUMP_RV1 MOTOR_A1 1\n", "1 PUMP_RV1 CASE_STD1 1\n", "2 PUMP_RV1 VANE_ASM1 1\n", "3 PUMP_RV1 OIL_SYSTEM1 1\n", "4 VANE_ASM1 VANE_001 6\n", "5 VANE_ASM1 BEARING_01 2"], "text/html": ["<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>predecessor</th>\n", " <th>successor</th>\n", " <th>quantity</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>PUMP_RV1</td>\n", " <td>MOTOR_A1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>PUMP_RV1</td>\n", " <td>CASE_STD1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>PUMP_RV1</td>\n", " <td>VANE_ASM1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>PUMP_RV1</td>\n", " <td>OIL_SYSTEM1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>VANE_ASM1</td>\n", " <td>VANE_001</td>\n", " <td>6</td>\n", " </tr>\n", " <tr>\n", " <th>5</th>\n", " <td>VANE_ASM1</td>\n", " <td>BEARING_01</td>\n", " <td>2</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["df"], "outputs": [{"data": {"text/plain": [" predecessor successor quantity\n", "0 PUMP_RV1 MOTOR_A1 1\n", "1 PUMP_RV1 CASE_STD1 1\n", "2 PUMP_RV1 VANE_ASM1 1\n", "3 PUMP_RV1 OIL_SYSTEM1 1\n", "4 VANE_ASM1 VANE_001 6\n", "5 VANE_ASM1 BEARING_01 2\n", "6 PUMP_RV2 MOTOR_A1 1\n", "7 PUMP_RV2 CASE_STD1 1\n", "8 PUMP_RV2 VANE_ASM2 1\n", "9 VANE_ASM2 VANE_002 6\n", "10 VANE_ASM2 BEARING_01 2\n", "11 PUMP_SC1 MOTOR_B1 1\n", "12 PUMP_SC1 CASE_SC1 1\n", "13 PUMP_SC1 SCREW_ASM1 1\n", "14 SCREW_ASM1 SCREW_001 2\n", "15 SCREW_ASM1 BEARING_02 4\n", "16 PUMP_CL1 MOTOR_A1 1\n", "17 PUMP_CL1 CASE_CL1 1\n", "18 PUMP_CL1 CLAW_ASM1 1\n", "19 CLAW_ASM1 CLAW_001 2\n", "20 CLAW_ASM1 BEARING_02 4"], "text/html": ["<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>predecessor</th>\n", " <th>successor</th>\n", " <th>quantity</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>PUMP_RV1</td>\n", " <td>MOTOR_A1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>PUMP_RV1</td>\n", " <td>CASE_STD1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>PUMP_RV1</td>\n", " <td>VANE_ASM1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>PUMP_RV1</td>\n", " <td>OIL_SYSTEM1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>VANE_ASM1</td>\n", " <td>VANE_001</td>\n", " <td>6</td>\n", " </tr>\n", " <tr>\n", " <th>5</th>\n", " <td>VANE_ASM1</td>\n", " <td>BEARING_01</td>\n", " <td>2</td>\n", " </tr>\n", " <tr>\n", " <th>6</th>\n", " <td>PUMP_RV2</td>\n", " <td>MOTOR_A1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>7</th>\n", " <td>PUMP_RV2</td>\n", " <td>CASE_STD1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>8</th>\n", " <td>PUMP_RV2</td>\n", " <td>VANE_ASM2</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>9</th>\n", " <td>VANE_ASM2</td>\n", " <td>VANE_002</td>\n", " <td>6</td>\n", " </tr>\n", " <tr>\n", " <th>10</th>\n", " <td>VANE_ASM2</td>\n", " <td>BEARING_01</td>\n", " <td>2</td>\n", " </tr>\n", " <tr>\n", " <th>11</th>\n", " <td>PUMP_SC1</td>\n", " <td>MOTOR_B1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>12</th>\n", " <td>PUMP_SC1</td>\n", " <td>CASE_SC1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>13</th>\n", " <td>PUMP_SC1</td>\n", " <td>SCREW_ASM1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>14</th>\n", " <td>SCREW_ASM1</td>\n", " <td>SCREW_001</td>\n", " <td>2</td>\n", " </tr>\n", " <tr>\n", " <th>15</th>\n", " <td>SCREW_ASM1</td>\n", " <td>BEARING_02</td>\n", " <td>4</td>\n", " </tr>\n", " <tr>\n", " <th>16</th>\n", " <td>PUMP_CL1</td>\n", " <td>MOTOR_A1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>17</th>\n", " <td>PUMP_CL1</td>\n", " <td>CASE_CL1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>18</th>\n", " <td>PUMP_CL1</td>\n", " <td>CLAW_ASM1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>19</th>\n", " <td>CLAW_ASM1</td>\n", " <td>CLAW_001</td>\n", " <td>2</td>\n", " </tr>\n", " <tr>\n", " <th>20</th>\n", " <td>CLAW_ASM1</td>\n", " <td>BEARING_02</td>\n", " <td>4</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["pump2_df = get_df_for_product(df,'PUMP_RV2')\n", "pump2_df"], "outputs": [{"data": {"text/plain": [" predecessor successor quantity\n", "6 PUMP_RV2 MOTOR_A1 1\n", "7 PUMP_RV2 CASE_STD1 1\n", "8 PUMP_RV2 VANE_ASM2 1\n", "9 VANE_ASM2 VANE_002 6\n", "10 VANE_ASM2 BEARING_01 2"], "text/html": ["<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>predecessor</th>\n", " <th>successor</th>\n", " <th>quantity</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>6</th>\n", " <td>PUMP_RV2</td>\n", " <td>MOTOR_A1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>7</th>\n", " <td>PUMP_RV2</td>\n", " <td>CASE_STD1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>8</th>\n", " <td>PUMP_RV2</td>\n", " <td>VANE_ASM2</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>9</th>\n", " <td>VANE_ASM2</td>\n", " <td>VANE_002</td>\n", " <td>6</td>\n", " </tr>\n", " <tr>\n", " <th>10</th>\n", " <td>VANE_ASM2</td>\n", " <td>BEARING_01</td>\n", " <td>2</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Prompt**\n", "\n", "Can you give me a simple example of how to create the nodes and edges in networkX?"]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Response**\n", "\n", "I'll show you a basic example of creating a graph in NetworkX. Let's start with a small portion of your data:\n", "\n", "```python\n", "import networkx as nx\n", "\n", "# Create a directed graph\n", "G = nx.DiGraph()\n", "\n", "# Add nodes (can add one at a time or multiple)\n", "G.add_node('PUMP_RV1')\n", "G.add_nodes_from(['MOTOR_A1', 'CASE_STD1'])\n", "\n", "# Add edges (with quantity as an attribute)\n", "G.add_edge('PUMP_RV1', 'MOTOR_A1', quantity=1)\n", "G.add_edge('PUMP_RV1', 'CASE_STD1', quantity=1)\n", "```\n", "\n", "Would you like to try this basic example first? Then we can expand it to include visualization and more data from your DataFrame."]}, {"cell_type": "code", "metadata": {}, "source": ["pump2_df"], "outputs": [{"data": {"text/plain": [" predecessor successor quantity\n", "6 PUMP_RV2 MOTOR_A1 1\n", "7 PUMP_RV2 CASE_STD1 1\n", "8 PUMP_RV2 VANE_ASM2 1\n", "9 VANE_ASM2 VANE_002 6\n", "10 VANE_ASM2 BEARING_01 2"], "text/html": ["<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>predecessor</th>\n", " <th>successor</th>\n", " <th>quantity</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>6</th>\n", " <td>PUMP_RV2</td>\n", " <td>MOTOR_A1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>7</th>\n", " <td>PUMP_RV2</td>\n", " <td>CASE_STD1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>8</th>\n", " <td>PUMP_RV2</td>\n", " <td>VANE_ASM2</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>9</th>\n", " <td>VANE_ASM2</td>\n", " <td>VANE_002</td>\n", " <td>6</td>\n", " </tr>\n", " <tr>\n", " <th>10</th>\n", " <td>VANE_ASM2</td>\n", " <td>BEARING_01</td>\n", " <td>2</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["nodes = set(pump2_df['predecessor']) | set(pump2_df['successor'])\n", "nodes"], "outputs": [{"data": {"text/plain": ["{'BEARING_01', 'CASE_STD1', 'MOTOR_A1', 'PUMP_RV2', 'VANE_002', 'VANE_ASM2'}"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["import networkx as nx\n", "\n", "G = nx.DiGraph()\n", "\n", "for node in nodes:\n", " G.add_node(node)\n", "\n", "for _,row in pump2_df.iterrows():\n", " G.add_edge(row['predecessor'], row['successor'], quantity=row['quantity'])"], "outputs": [], "execution_count": null}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Prompt**\n", "\n", "Does this look good? How can i now visulize the graph? (perfect would be a tree like layout)"]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Response**\n", "\n", "Yes, that's a good start! For visualization, NetworkX works well with matplotlib. Here's how you can create a tree-like visualization:\n", "\n", "```python\n", "import matplotlib.pyplot as plt\n", "\n", "# Create the layout (hierarchical)\n", "pos = nx.spring_layout(G, k=1, iterations=50) # or try nx.kamada_kawai_layout(G)\n", "\n", "# Setup the plot\n", "plt.figure(figsize=(10, 8))\n", "\n", "# Draw the graph\n", "nx.draw(G, pos,\n", " with_labels=True,\n", " node_color='lightblue',\n", " node_size=2000,\n", " arrowsize=20)\n", "\n", "# Add edge labels (quantities)\n", "edge_labels = nx.get_edge_attributes(G, 'quantity')\n", "nx.draw_networkx_edge_labels(G, pos, edge_labels)\n", "\n", "plt.title(\"Pump RV2 Structure\")\n", "plt.axis('off')\n", "plt.show()\n", "```\n", "\n", "Try this and let me know if you'd like to:\n", "1. Adjust the layout (there are several options)\n", "2. Change the visual style (colors, sizes, fonts)\n", "3. Add more information to the visualization\n", "\n", "Which aspect would you like to improve?"]}, {"cell_type": "code", "metadata": {}, "source": ["import matplotlib.pyplot as plt\n", "\n", "options = {\n", " \"font_size\": 6,\n", " \"node_size\": 300,\n", " # \"node_color\": \"white\",\n", " # \"edgecolors\": \"black\",\n", " # \"linewidths\": 5,\n", " # \"width\": 5,\n", "}\n", "\n", "pos = nx.kamada_kawai_layout(G) # or try nx.kamada_kawai_layout(G)\n", "plt.figure(figsize=(3, 3))\n", "\n", "nx.draw(G, pos, with_labels=True, **options) # node_size=1000,arrowsize=20\n", "\n", "edge_labels = nx.get_edge_attributes(G, 'quantity')\n", "nx.draw_networkx_edge_labels(G, pos, edge_labels)\n", "\n", "plt.axis('off')\n", "plt.show()"], "outputs": [{"data": {"text/plain": ["<Figure size 300x300 with 1 Axes>"], "image/png": "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6CHef/99nDp1CgBw1113YejQoSJXRLXB7eCIiMiRGAA9wNWrVzFr1iwApTNIly5dColEInJVVBscASQiIkdiAPQA06dPt9wnNnbsWLRr107kiqi2uB0cERE5EgOgmzt27Bg++eQTAIC/vz/mzp0rckVkD9wOjoiIHIkB0I0JgoAJEybAZDIBAKZNm4aoqCiRqyJ7YAuYiIgciQHQja1duxY///wzAKBx48aYMGGCuAWR3bAFTEREjsQA6KaKi4sxadIky+OFCxdCqVSKWBHZE1vARETkSAyAbmrJkiU4f/48AOC+++7DoEGDxC2I7IotYCIiciQGQDeUmZmJOXPmAACkUimWLFnCZV88DFvARETkSAyAbmjq1KnQarUAgKeffhqJiYkiV0T2xhFAIiJyJIkgCILYRZDtDh06hI4dOwIoDQmnT59GRESEyFWRIwQEBKCgoABxcXFIS0sTuxwiIvIgHAF0I+ZlX8xef/11hj8PZp4IwhYwERHZGwOgG/n222/x22+/AQBatGiB8ePHi1wROZK5DcwWMBER2RsDoJsoLCzElClTLI8XL14MHx8fESsiRzMHwOLiYhQXF4tbDBEReRQGQDcxf/58XLp0CQDQp08f9OnTR+SKyNG4FiARETkKA6AbuHjxIubPnw8AkMvlWLRokcgVkTNwJjARETkKA6AbePXVV1FUVAQAeP7559GyZUuRKyJn4FqARETkKAyALm7fvn1YtWoVACAsLAwzZswQuSJyFraAiYjIURgAXZjJZMJLL71kefzGG29YhQLybGwBExGRozAAurCvv/4ahw8fBgAkJibiqaeeErkicia2gImIyFEYAF3UjRs38N///tfyeMmSJZDL5SJWRM7GFjARETkKA6CLmjt3LrKysgAAgwYNwn333SdyReRsbAETEZGjMAC6oL///tuy1ItCocDChQtFrojEcOsIIFvARERkTwyALmjSpEkoKSkBALz88sto0qSJyBWRGDgCSEREjsIA6GJ+/vlnrF27FgAQGRmJ1157TeSKSCycBEJERI7CAOhCDAYDJkyYYHn81ltvISAgQLyCSFQBAQGQSkv/F+UIIBER2RMDoAv59NNPcezYMQBAu3btMGbMGJErIjFJJBLLKCADIBER2RMDoIvIy8vD9OnTLY+XLFliGf0h72UOgGwBExGRPTFhuIjZs2cjJycH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"}, "metadata": {"image/png": {"width": 320, "height": 320}}, "output_type": "display_data"}], "execution_count": null}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Prompt**\n", "\n", "wrap it up into a fuction that takes the filtered df and plots the graph."]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Response**\n", "\n", "I'll help you create a function that takes a DataFrame and creates the graph visualization. Here's a suggested implementation:\n", "\n", "```python\n", "def visualize_product_structure(df, title=None, figsize=(6, 6)):\n", " # Create graph\n", " G = nx.DiGraph()\n", " \n", " # Add nodes and edges\n", " nodes = set(df['predecessor']) | set(df['successor'])\n", " G.add_nodes_from(nodes)\n", " \n", " for _, row in df.iterrows():\n", " G.add_edge(row['predecessor'], row['successor'], quantity=row['quantity'])\n", " \n", " # Visualization settings\n", " options = {\n", " \"font_size\": 8,\n", " \"node_size\": 1000,\n", " \"node_color\": \"lightblue\",\n", " \"with_labels\": True,\n", " \"arrowsize\": 20\n", " }\n", " \n", " # Create plot\n", " plt.figure(figsize=figsize)\n", " pos = nx.kamada_kawai_layout(G)\n", " \n", " nx.draw(G, pos, **options)\n", " \n", " # Add quantity labels\n", " edge_labels = nx.get_edge_attributes(G, 'quantity')\n", " nx.draw_networkx_edge_labels(G, pos, edge_labels)\n", " \n", " if title:\n", " plt.title(title)\n", " plt.axis('off')\n", " plt.show()\n", "```\n", "\n", "Would you like to try it with one of your filtered DataFrames? We can then adjust the visualization parameters if needed."]}, {"cell_type": "code", "metadata": {}, "source": ["def visualize_product_structure(df, figsize=(4, 4)):\n", " G = nx.DiGraph()\n", " nodes = set(df['predecessor']) | set(df['successor'])\n", " G.add_nodes_from(nodes)\n", " \n", " for _, row in df.iterrows(): G.add_edge(row['predecessor'], row['successor'], quantity=row['quantity'])\n", " \n", " options = {\n", " \"font_size\": 8,\n", " \"node_size\": 1000,\n", " \"node_color\": \"lightblue\",\n", " \"with_labels\": True,\n", " \"arrowsize\": 20\n", " }\n", "\n", " plt.figure(figsize=figsize)\n", " pos = nx.kamada_kawai_layout(G)\n", " \n", " nx.draw(G, pos, **options)\n", " \n", " edge_labels = nx.get_edge_attributes(G, 'quantity')\n", " nx.draw_networkx_edge_labels(G, pos, edge_labels)\n", " plt.axis('off')\n", " plt.show()"], "outputs": [], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["get_df_for_product(df, 'PUMP_RV1')"], "outputs": [{"data": {"text/plain": [" predecessor successor quantity\n", "0 PUMP_RV1 MOTOR_A1 1\n", "1 PUMP_RV1 CASE_STD1 1\n", "2 PUMP_RV1 VANE_ASM1 1\n", "3 PUMP_RV1 OIL_SYSTEM1 1\n", "4 VANE_ASM1 VANE_001 6\n", "5 VANE_ASM1 BEARING_01 2"], "text/html": ["<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>predecessor</th>\n", " <th>successor</th>\n", " <th>quantity</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>PUMP_RV1</td>\n", " <td>MOTOR_A1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>PUMP_RV1</td>\n", " <td>CASE_STD1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>PUMP_RV1</td>\n", " <td>VANE_ASM1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>PUMP_RV1</td>\n", " <td>OIL_SYSTEM1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>VANE_ASM1</td>\n", " <td>VANE_001</td>\n", " <td>6</td>\n", " </tr>\n", " <tr>\n", " <th>5</th>\n", " <td>VANE_ASM1</td>\n", " <td>BEARING_01</td>\n", " <td>2</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["filtered_df = get_df_for_product(df, 'PUMP_RV1')\n", "visualize_product_structure(filtered_df)"], "outputs": [{"data": {"text/plain": ["<Figure size 400x400 with 1 Axes>"], "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0cAAANHCAYAAAD9uiaDAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAewgAAHsIBbtB1PgAA4vBJREFUeJzs3Xd80+UWx/FPkqZ7UVoou+w9ZMgSmaIgigICKrIFFXHh3nrFrVwVFUVZylWRpSgqSxABmSJDQKBsWmgp3TNN7h+1kVpKV0qa9Pt+vfqS/OZJwCYnz3nOY7DZbDZEREREREQqOKOzAxARERERESkPlByJiIiIiIig5EhERERERARQciQiIiIiIgIoORIREREREQGUHImIiIiIiABKjkRERERERAAlRyIiIiIiIoCSIxEREREREUDJkYiIiIiICKDkSEREREREBFByJCIiIiIiAig5EhERERERAZQciYiIiIiIAEqOREREREREACVHIiIiIiIigJIjERERERERQMmRiIiIiIgIoORIREREREQEUHIkIiIiIiICKDkSEREREREBlByJiIiIiIgASo5EREREREQAJUciIiIiIiKAkiMRERERERFAyZGIiIiIiAig5EhERERERARQciQiIiIiIgIoORIREREREQGUHImIiIiIiABKjkRERERERAAlRyIiIiIiIoCSIxEREREREUDJkYiIiIiICKDkSEREREREBFByJCIiIiIiAig5EhERERERAZQciYiIiIiIAEqOREREREREACVHIiIiIiIigJIjERERERERQMmRiIiIiIgIAB7ODkBcV4bFSnxGFilZFtItVtIt2aRbrGRmW7HawIYNAwaMBvA0GfH2MOLtYcLbw4if2YNgLzNeHsrPRURERKR8UHIkRWKz2UjMtBCdnMH59Czi07NItWSX+rq+HiaCvc1U8jYT7u9FoKcHBoPBARGLiIiIiBSPwWaz2ZwdhJRPNpuNmNRMopLTiUrJIDWr9MlQYXzNJqr5eVHN35swX08lSiIiIiJy2Sg5knwyLNkcTUjjSELqZUmICuJrNlE3yJeIIB+8PExOi0NEREREKgYlR2KXmJHFgbgUTiWlYS1H/yqMBqgR4EPjED8CvczODkdERERE3JSSIyE1K5t955I4lpDm7FAKVSfIh6aVA/A1ayRJRERERBxLyVEFZrFa2Reb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9thjrtsTJ040MA3ygrFjx+r111+XlF6Qpk6dqvfff19z5szRhx9+qJ9//lleXl5q0qSJwUkBY7EhAwDArW3atEnNmjWTJE2bNk0DBw40OFHuiI2NVVhYmOLj4+Xv76/Tp08rODjY6FjwYE6nU6+//rpee+01SVKpUqVksVh04sQJ+fv7a+PGjbrzzjsNTgkYi5EjAIBba9q0qVasWKHXX3893xQjSQoKCtKAAQMkSQkJCZo+fbrBieDpTCaTXnnlFdcOdmfPntWJEycUEBBAMQL+xsgRAMCjOJ3OfLNg/MCBA6pRo4ak9It5Hjx4MN987chel79vEhMTtXjxYj333HM6deqUAgICtGHDBooR8DdGjgAAHiU/lYPq1au7phQeOnRI69atMzgRPJXJZFJ8fLwWL16sDz74QKdOnVJQUJA2bdpEMQL+hXIEAMizTp06ZXSEW8a23sgOycnJWrp0qd566y39/PPPCg4O1qZNm3THHXcYHQ1wK5QjAECe9O2336pSpUpaunSp0VFuSdeuXVWyZElJ0uLFi3Xy5EmDE8ET2e12RURE6MCBAwoICNDmzZtVs2ZNo2MBbodyBADIczZu3KgHHnhAycnJ6tGjh1auXGl0pCzz8vLSsGHDJEkOh0NffPGFwYlglEOHDungwYNZeq6/v79Gjhyprl27aseOHapevXo2pwPyBjZkAADkOTabTQMGDNCsWbMkST4+Plq6dKlat25tcLKsOXPmjG677TbZbDaFhobqzz//lI+Pj9GxkIsOHDigli1byul0Kjw83LVRx81KS0uTl5dXNqcD8g5GjgAAeY7VatW3336rnj17SpJSUlLUpUsXRUREGJwsa0qUKOH6WiIjI/XDDz8YnAi5af/+/WrRooXOnz+vyMhIPf3007LZbFk6F8UIuD7KEQAgT7JarZo5c6a6desmKX1BeufOnbVx40Zjg2XR8OHDXX9mY4b8Y9++fWrRooUiIyMlSfXq1dOcOXNktVoNTgbkTUyrAwDkaampqerZs6eWLFkiKX3txapVq9S4cWODk90cp9Op2rVra+/evZKknTt3qm7duganQk765Zdf1KpVK128eFGSVL9+fa1evVohISHGBgPyMEaOAAB5mre3t3744Qd17NhRkpSQkKD27dtr27ZtBie7OSaTiW2985E9e/ZcUYwaNGigNWvWUIyAHMbI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KovFYnAyALeKkSMAALJBo0aNtGLFCvn7+0tK39a5V69erkX6ucnb21vDhg2TJNntdn355Ze5niGv+uGHH3Tfffe5itHAgQMpRkAewsgRAADZaMOGDerQoYNr3VH37t01e/bsXN+57K+//lKZMmVks9lUrFgxnTx5kuvt3KI5c+aoX79+stvtkqQHHnhAkyZNohgBeQgjRwAAZKNmzZpp6dKl8vX1lZS+NuX+++93jTTklpIlS6p79+6SpHPnzmnevHm5+vp5zaxZs64oRkOGDNHkyZMpRkAeQzkCACCbtWzZUosWLXKtN/rhhx80YMCAXC9II0aMcP15woQJufraecn333+v+++/31WMhg4dqq+//lpmMx+jgLyGaXUAAOSQFStWqFu3bq51R/3799e0adNybbTB6XSqVq1a2r9/v6T06zLVrl07V147r5g5c6YGDBggh8MhSXrooYf0xRdfUIyAPIrvbAAAckiHDh00d+5c13qjGTNmaOjQoa4P2jnNZDKxrfctmDFjxhXFaNiwYRQjII9j5AgAgBy2cOFC9erVyzWtbujQofryyy9z5UN2fHy8wsLCFBsbqwIFCuj06dMqWLBgjr+up5s+fboeeOABXf6Y9Oijj2rChAkUIyCP4zscAIAc1q1bN82aNcs1nW7SpEkaPny4cuP3kwEBAXrggQckSUlJSZo6dWqOv6an++abb64oRo899pg+++wzihGQDzByBABALpk9e7b69evnmqY1YsQIjR8/XiaTKUdf99ChQ6pataokqUKFCjp8+DAf9K9h6tSpevDBB13FKLf+HwFwD/xkBAAgl9x3332aPn2664P2hAkTNHLkyBwfQapSpYpat24tSTp69KhWr16do6/nqSZPnnxFMXriiScoRkA+QzkCACAX3X///Zo6darrA/e4ceP03HPP5XhBYmOG6/v66681dOhQ1/+HJ598UuPGjaMYAfkM0+oAADDAlClT9OCDD7pujxkzRm+99VaOfRi32WyqUKGCTp48KZPJpKNHj6pcuXI58lqe5quvvtKwYcNct59++ml99NFHFCMgH2LkCAAAAwwZMkRffvml6/Y777yjV199Ncdez2q16pFHHpGUfv2jzz//PMdey5N88cUXVxSjZ555hmIE5GOMHAEAYKDPPvtMI0aMcN1+7bXX9PLLL+fIa0VGRqpUqVJKTU1V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1I8//qizZ88qJSVFhQoVUo0aNdSxY0f1799foaGhGT53/vz56tGjhySpywPD9MDoV274evu2/ag1c77VoT27FHPhgixWq4IKFlJoWGlVubOe6rdoo8q1617xnB5VS2bqa3ntm7mq0eB/mXpsRo4d2KsV303Vrzu3K+rcWckkBRUqrMLFSqhK7bqq3aS57mjc7KYy/Vv1+o30+rfzdP7Un3q0dYMr7jObzfL1D1BAcIhKV6ysKrXrqWmXexUVUPGa59u9e7fCw8O1a9cu7dq1S7///rucTqe+/fZb9e/f/6bzZQfKEQAAADzOhQsX1LdvX61du1aSVLZsWbVo0UL+/v46e/astmzZorVr1+rll1/W2rVr1aBBg6vOMXnyZNefNy6Zp/7PvCCrl9c1X3P6B29o0eTPJUnFSpdRrf81VQH/AF2KPK8/ft2nAzu26K8/jurZ8V9n+PzaTZorpEjRa54/5BolLjOWfztZU995RQ6HQ4WKlVD1Bv9TQFCwYqMu6tiv+3To5506sGOrqxw179b7qnNEXzivPZvXX/P+sPIVrjrWsG0n+fr5S5KSEuIVHXlO+7Zu1q71a/X9p++pQ58Bmv3VZwoICLjqua+//roWLVqU5a85J1COAAAA4FFiYmLUpEkTHTp0SFWrVtVXX32lpk2bXvGYlJQUffPNN3rllVd05syZq85x+vRprVq1SmaLRUGFCis68rx2RqxRw7YdM3zNXevXatHkz2WxWvXEe+PVpFO3K+63paXply0bdf7UyWvm7v7QiFsaGbqW44d+dRWjwWNeU4f+Q2SxWFz3OxwOHdy1Q7/t2uE69vi74646z/7tW1zlKKP7MzLouZdVtFTpK46lJCcpYv5szfjobS3/frra//mH1q1dIx8fnyse17BhQ1WvXl116tTRnXfeqSFDhmjDhg2Z+6JzCOUIAAAAHuXxxx/XoUOHVLZsWf34448qVKjQVY/x8fHRww8/rK5duyo6Ovqq+6dNmya73a47726pyrXu1OwJH2ndvO+vWY42L08f4WjUrvNVxUiSrF5eqtus1S19XVm1deVSORwOValdV50HPXTV/WazWdXrN1T1+g1zJY+PbwG17/eAKt9RR2P7ddOPmzfp/fff10svvXTF40aPHp0reW4GGzIAAADAYxw7dkwzZ86UJH388ccZFqN/K1asmKpUqXLFMafT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"}, "metadata": {"image/png": {"width": 419, "height": 419}}, "output_type": "display_data"}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["filtered_df = get_df_for_product(df, 'VANE_ASM1')\n", "visualize_product_structure(filtered_df)"], "outputs": [{"data": {"text/plain": ["<Figure size 400x400 with 1 Axes>"], "image/png": "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"}, "metadata": {"image/png": {"width": 419, "height": 419}}, "output_type": "display_data"}], "execution_count": null}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Prompt**\n", "\n", "How could we use the multipartite layout? We would have to find a way to give information about the level on which the nodes lay, right?\n", "Should we get the level when we create the graph for visualizing? Because it depends on the choice of root node what the levels are right?"]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Response**\n", "\n", "Yes, exactly! For a multipartite layout, we need to assign levels to nodes, and these levels depend on the root node we choose. We could:\n", "\n", "1. Calculate levels during graph creation by:\n", " - Starting at root (level 0)\n", " - Direct successors (level 1)\n", " - Their successors (level 2)\n", " - And so on...\n", "\n", "Would you like to try implementing it yourself? After that we can modify the visualization function to use these levels."]}, {"cell_type": "code", "metadata": {}, "source": ["root_id = 'PUMP_RV2'\n", "parts = {root_id: 0}\n", "queue = [(root_id, 0)]\n", "\n", "queue"], "outputs": [{"data": {"text/plain": ["[('PUMP_RV2', 0)]"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["node, level = queue.pop(0)\n", "print(node, level)"], "outputs": [{"name": "stdout", "output_type": "stream", "text": ["PUMP_RV2 0\n"]}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["root_id = 'PUMP_RV2'\n", "parts = {root_id: 0}\n", "queue = [(root_id, 0)]\n", "\n", "node, level = queue.pop(0)\n", "\n", "successors = find_successors(df, node)\n", "successors"], "outputs": [{"data": {"text/plain": ["{'CASE_STD1', 'MOTOR_A1', 'VANE_ASM2'}"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["root_id = 'PUMP_RV2'\n", "parts = {root_id: 0}\n", "queue = [(root_id, 0)]\n", "\n", "node, level = queue.pop(0)\n", "successors = find_successors(df, node)\n", "\n", "for succ in successors:\n", " if succ not in parts:\n", " parts[succ] = level+1\n", " queue.append((succ, level+1))\n", "\n", "parts"], "outputs": [{"data": {"text/plain": ["{'PUMP_RV2': 0, 'CASE_STD1': 1, 'MOTOR_A1': 1, 'VANE_ASM2': 1}"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["def get_all_parts(df, root_id):\n", " parts = {root_id: 0}\n", " queue = [(root_id, 0)]\n", " while queue:\n", " node, level= queue.pop(0)\n", " successors = find_successors(df, node)\n", " for succ in successors:\n", " if succ not in parts:\n", " parts[succ] = level+1\n", " queue.append((succ, level+1))\n", " return parts\n", "\n", "parts = get_all_parts(df, 'PUMP_RV1')\n", "parts"], "outputs": [{"data": {"text/plain": ["{'PUMP_RV1': 0,\n", " 'OIL_SYSTEM1': 1,\n", " 'CASE_STD1': 1,\n", " 'VANE_ASM1': 1,\n", " 'MOTOR_A1': 1,\n", " 'BEARING_01': 2,\n", " 'VANE_001': 2}"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["pump_df = get_df_for_product(df,'PUMP_RV1')\n", "pump_df"], "outputs": [{"data": {"text/plain": [" predecessor successor quantity\n", "0 PUMP_RV1 MOTOR_A1 1\n", "1 PUMP_RV1 CASE_STD1 1\n", "2 PUMP_RV1 VANE_ASM1 1\n", "3 PUMP_RV1 OIL_SYSTEM1 1\n", "4 VANE_ASM1 VANE_001 6\n", "5 VANE_ASM1 BEARING_01 2"], "text/html": ["<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>predecessor</th>\n", " <th>successor</th>\n", " <th>quantity</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>PUMP_RV1</td>\n", " <td>MOTOR_A1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>PUMP_RV1</td>\n", " <td>CASE_STD1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>PUMP_RV1</td>\n", " <td>VANE_ASM1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>PUMP_RV1</td>\n", " <td>OIL_SYSTEM1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>VANE_ASM1</td>\n", " <td>VANE_001</td>\n", " <td>6</td>\n", " </tr>\n", " <tr>\n", " <th>5</th>\n", " <td>VANE_ASM1</td>\n", " <td>BEARING_01</td>\n", " <td>2</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["parts"], "outputs": [{"data": {"text/plain": ["{'PUMP_RV1': 0,\n", " 'OIL_SYSTEM1': 1,\n", " 'CASE_STD1': 1,\n", " 'VANE_ASM1': 1,\n", " 'MOTOR_A1': 1,\n", " 'BEARING_01': 2,\n", " 'VANE_001': 2}"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["for part in parts:\n", " print(part, parts[part])"], "outputs": [{"name": "stdout", "output_type": "stream", "text": ["PUMP_RV1 0\n", "OIL_SYSTEM1 1\n", "CASE_STD1 1\n", "VANE_ASM1 1\n", "MOTOR_A1 1\n", "BEARING_01 2\n", "VANE_001 2\n"]}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["import networkx as nx\n", "\n", "G = nx.DiGraph()\n", "\n", "for node in parts:\n", " G.add_node(node, level=parts[node])\n", "\n", "for _,row in pump_df.iterrows():\n", " G.add_edge(row['predecessor'], row['successor'], quantity=row['quantity'])\n", "\n", "pos = nx.multipartite_layout(G, subset_key='level')\n", "nx.draw(G, pos)\n", "edge_labels = nx.get_edge_attributes(G, 'quantity')\n", "nx.draw_networkx_edge_labels(G, pos, edge_labels)\n", "plt.axis('off')\n", "plt.show()"], "outputs": [{"data": {"text/plain": ["<Figure size 640x480 with 1 Axes>"], "image/png": "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pJeKNwCpptINAACQbjYoAUgllW4AAIBsEFACkDoq3QAAANmh4g1Aqqh0AwAAZIsNSgBSQaUbAAAgmwSUAFQ8lW4AAIDsUvEGoKKpdAMAAGSbDUoAKpJKNwAAQD4IKAGoOCrdAAAA+aHiDUBFUekGAADIFxuUAFQElW4AAIB8ElACkDiVbgAAgPxS8QYgUSrdAAAA+WaDEoBEqHQDAAAQIaAEIAEq3QAAAGyg4g1AWal0AwAA8E42KAEoC5VuAAAAtkRACUDJqXQDAACwNSreAJSUSjcAAADbUlUoFApJDwFANj388MNx+OGHd/1ZpRsAAIBN2aAEoGQOO+ywOO200yJifaV7/vz5wkkAAAA2YoMSgJJ644034u67746///u/j6qqqqTHAQAAoMIIKAHosnr16hg0aFB0dnZGdbUlewAAAErPT58AxIIFC+JDH/pQXHnllRERUV1dHX5/BQAAQDn0T3oAAJL105/+ND772c9GRMSqVati4sSJccopp6hjAwAAUBY2KAFy7JZbbokvfvGLEbF+a/LZZ5+NH/7whzFv3ryICFuUAAAAlJyAEiBnNoSO999/f9xyyy2xevXqGDVqVOyzzz5RKBTi8ccfj+nTp8eyZcuiqqoqOjs7E54YAACALBNQAuRMVVVVLFu2LL71rW/FQw89FBER55xzTtxzzz3xgQ98IFatWhUPPPBAfP/7348I16MEAACgtASUADm0Zs2amDNnTlRVVcU111wTF198cYwePTpuuOGGiIh4+eWXY8aMGXH77bdHRLgeJQAAACUjoATIodGjR8ett94aZ555Znz+85+PiIiOjo74+Mc/HldffXVERDz77LNx8803ux4lAAAAJVVV8BMnQG698sor8Z73vGejr7W2tsbpp58eM2bMiJ133jk++clPxjXXXBNDhw6Nzs7OqK72uy0AAACKx0+ZADm2aTgZETFw4MC49tpr4/3vf7/rUQIAAFByAkoANjN69Oj4zne+ExGuRwkAAEBpCSgB2KKjjz56u9ejtE0JAABAXwkoAdiq888/P6ZMmRKFQiEee+yxmD59eixbtiyqqqqio6Oja5ty3bp1ERHR2dmZ5LgAAACkkIASgK3a0vUov/e970VERL9+/WLNmjXx61//Or7+9a9HhGtUAgAA0HMCSgC2adPrUd55551x5513xpo1a2LGjBnxrW99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4qqrriraawOQL4JJAOCdBJTQByrflFtPA8sTTjgh7rrrrqK898UXXxzXXHNNvPe9741vfetb8fd///euPwlAjwgmAYAt8VMl9MGGavfMmTNj8ODBERHxl7/8JQ499NCYPn16yP8ptp133jmOPfbY+D//5//EY489FitWrIhf/epX8bWvfS0OPvjg6Nev30aPf8973lOU9+3s7IwHH3wwIiJ22223GD9+fESESxoA0C1NTU1x3nnnxdixY+O73/1uVzhZW1sbF110Ubz44otx9dVXCycBIKdsUEKRqHxTCTbdsLzwwgtjypQpfX7dl19+OT7wgQ+4/iQAPWJjEgDoDgElFJHKN5WmWBXsDdefHDRoUJx77rmuPwnANgkmAYCeUPGGIlL5ptIU6/qQDz30UEREDBkyJOrr6yNiffgJAO+kyg0A9IaAEkrgpJNOiqeeeioOPvjgiFi/WXnuuefGqaeeGi0tLQlPBz3j+pMAbI9gEgDoCwEllMiYMWPiwQcfjAsuuKDrazNmzIgDDzww5s2bl+Bk0DNNTU0xf/78iIh473vfG3vssUdECCgBEEwCAMUhoIQSUvkmC5555plobW2N2tra2GuvvdwcBwDBJABQVAJKKAOVb9LmneH5hutP7rLLLq4/CZBzgkkAoBQElFAmKt+kyYb6dnt7e/zhD3+IiOJcf3LBggVx7rnnxowZM2Lp0qXFGRaAkhNMAgClVFXQMYWymzVrVkydOjVWrlwZEW9XwadNm+a6fiSmUCjEH//4x9hhhx1i6NChMWjQoGhubo7dd989Wltb4+STT44f/ehHsdNOO0WhUOjVv6vXXXddXHjhhV1/Hj9+fEyePDkmT54cH/rQh/xgC1Bhmpqa4uqrr44f/OAHXaFkxPpg8txzz42vfOUr/tsNAPSZgBISsmjRojjttNPi8ccf7/ralClT4qabboq6uroEJyOvVqxYEZ///Oejvb099ttvvxg3bly8/PLLcfHFF0dtbW2cd955cdVVV/XpPU444YT45S9/udW/F1gCVAbBJABQTgJKSFBbW1tcfPHFcf3113d9bezYsXH77bfHxIkTE5yMPHrooYfiyCOP7PpzTU1N1NXVxdKlS2Pw4MHx6U9/Os4+++zYaaed4t3vfnevbpazatWqePjhh2POnDkxZ86cePLJJ7d5PUuBJUB5CSYBgCQIKKEC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t7+d8LTAtqT5DLH38J3i3n86whkiJQSUQMVQ+QZ426aB5RNPPNHt5256h+8nFq2IU74/t1SjltyMsyfFB8fskvQYQDc88MAD8bGPfSwiIs4444y46aabtnp93La2tqipcaddqGTOEJSLgBKoOCrfABtrb2/f5vUnt+bss8+O733ve/FP//1U3P3MqyWarvRO2G9k3PjpA5IeA9iOzs7O2HvvvePPf/5z7LfffvHkk09G//6u/wZp5gxBuVQnPQDApk466aR46qmnuuqJbW1tce6558app54aLS0tCU8HUH5PP/10j8PJiIgf/OAHsa69I+5/7rUSTFU+9z/3WrR39LzuDpTXb37zm/jzn/8cEREXXXSRcBIqwJ/+9Kf4h3/4h7j++uu3eU3YLWnv6HSGoGwElEBFGjNmTDz44INxwQUXdH1txowZceCBB8a8efMSnAyg/ObMmdOr502YMCFeWLYm3lrXUdyByuytdR3xwtKe/VAFlN8dd9wRERFVVVVx3HHHdX19xYoV8ec//zlWrFiR1GiQW5dddlnccsst8eUvfzl23333uO6667odVD6/dLUzBGUjoAQq1oZq98yZM2Pw4MEREfGXv/wlDj300Jg+fXq4QgWQF90JKAcOHBiHHXZYfPWrX40777wzmpqa4plnnomGpmxsnmflc0CWPfrooxGx/hfNO+20U/z0pz+NCRMmxK677hof+MAHYtddd4299torrrvuumhtbU14WsiHZcuWdf3/pUuXxoUXXtjtoDIr33uz8jmyTkAJVDyVbyDv3vnDxQbve9/74rTTTosbbrghHnvssa6b6lx77bXxyU9+MkaOHBkREY0ZOZRn5XNAVnV2dsbChQsjImLo0KFx/vnnx2c+85lobGzc6HF/+tOf4sILL4yPfOQjXdcbB8qru0FlVr73ZuVzZJ2AEkgFlW8gz7797W/Hpz/96Y22IxcvXhz//d//Heeff34cfPDBW70Tbla2BhpezcbngKxqaWmJzs7113lraGiIG2+8MUaMGBG33XZbrFixIt588834/e9/H4ccckhERDzyyCPxD//wD0mODLm3vaDSGYJychdvIHXc5Rug+w69+oF4tWVt0mP02btr+8etU0YnPQbkQnV1dXzgAx/o0XNeeeWVeO9739v153e9610xf/782GuvvTZ63FtvvRWTJk2KZ555JiLW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kBgBJQAAAACQGAElAAAAAJAYASUAAAAAkBgBJQAAAACQGAElAAAAAJAYASUAAAAAkBgBJQAAAACQGAElAAAAAJAYASUAAAAAkBgBJQAAAACQGAElAAAAAJAYASUAAAAAkBgBJQAAAACQGAElAAAAAJAYASUAAAAAkBgBJQAAAACQGAElAAAAAJAYASUAAAAAkBgBJQAAAACQGAElAAAAAJAYASUAAAAAkBgBJQAAAACQGAElAAAAAJAYASUAAAAAkBgBJQAAAACQGAElAAAAAJAYASUAAAAAkBgBJQAAAACQGAElAAAAAJAYASUAAAAAkBgBJQAAAACQGAElAAAAAJAYASUAAAAAkBgBJQAAAACQGAElAAAAAJAYASUAAAAAkBgBJQAAAACQGAElAAAAAJAYASUAAAAAkBgBJQAAAACQGAElAAAAAJAYASUAAAAA/387diwAAAAAMMjfehh7CiPYCEoAAAAAYCMoAQAAAICNoAQAAAAANoISAAAAANgISgAAAABgIygBAAAAgI2gBAAAAAA2ghIAAAAA2AhKAAAAAGAjKAEAAACAjaAEAAAAADaCEgAAAADYCEoAAAAAYCMoAQAAAICNoAQAAAAANoISAAAAANgEEUaCGRv6FYMAAAAASUVORK5CYII="}, "metadata": {"image/png": {"width": 660, "height": 499}}, "output_type": "display_data"}], "execution_count": null}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Prompt**\n", "\n", "how can i add node lables in a small font?"]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Response**\n", "\n", "You can add node labels by including these parameters in the nx.draw() function. Here's how:\n", "\n", "```python\n", "nx.draw(G, pos,\n", " with_labels=True,\n", " font_size=8, # controls label size\n", " node_size=1000, # adjust if labels are too cramped\n", " node_color='lightblue')\n", "```\n", "\n", "Would you like to try this and then adjust the font size and node size until you get the right balance? We can also try different font families or colors if needed."]}, {"cell_type": "code", "metadata": {}, "source": ["import networkx as nx\n", "\n", "G = nx.DiGraph()\n", "\n", "for node in parts:\n", " G.add_node(node, level=parts[node])\n", "\n", "for _,row in pump_df.iterrows():\n", " G.add_edge(row['predecessor'], row['successor'], quantity=row['quantity'])\n", "\n", "pos = nx.multipartite_layout(G, subset_key='level')\n", "nx.draw(G, pos, with_labels=True, font_size=8)\n", "edge_labels = nx.get_edge_attributes(G, 'quantity')\n", "nx.draw_networkx_edge_labels(G, pos, edge_labels)\n", "plt.axis('off')\n", "plt.show()"], "outputs": [{"data": {"text/plain": ["<Figure size 640x480 with 1 Axes>"], "image/png": "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FiUAAAAAwOEIKAHAyxSEjr/++qtmzZql1NRUNW7cWJdddpmsVqu2bt2qjz/+WAkJCTKZTLJYLAaPGAAAAADgyQgoAcDLmEwmJSQk6K233tL69eslSY8++qiWLVumSy+9VMnJyVq1apU+/fRTSaxHCQAAAABwLAJKAPBCaWlpWrNmjUwmk95++20999xzCg8P13vvvSdJOn78uObPn6+5c+dKEutRAgAAAAAchoASALxQeHi4vvzyS917770aP368JCkvL0/XXXedJk+eLEnas2ePZsyYwXqUAAAAAACHMln5jhMAvNaJEyfUpEmTQq9lZWXpnnvu0fz581WjRg2NGDFCb7/9tsLCwmSxWGQ287MtAAAAAID98F0mAHixi8NJSQoICNCUKVN0ySWXsB4lAAAAAMDhCCgBAEWEh4frww8/lMR6lAAAAAAAxyKgBAAUa9CgQWWuR8lsSgAAAABAVRFQAgBK9MQTT+jWW2+V1WrVli1b9PHHHyshIUEmk0l5eXm22ZQ5OTmSJIvFYuRwAQAAAABuiIASAFCi4taj/OSTTyRJPj4+SktL088//6yXX35ZEmtUAgAAAAAqjoASAFCqi9ejXLBggRYsWKC0tDTNnz9fb731liZPnqyRI0dKYo1KAAAAAEDFmKxMdQEAlMPkyZP1/PPPy2QyqWfPnoqIiNBPP/2kEydOyGQy6ZNPPtH9999v9DABAAAAAG6GgBIAUCqr1WqbFXnLLbdo0aJFCgoKUkZGhiTp8ssv19y5c3XppZcaOUwAAAAAgJui4g0AKFVBOHn27Fn17t1b1atXt4WT48eP165duwgnAQAAAACV5mv0AAAArm/fvn2aN2+epk+frpSUFJlMJs2YMUNjxowxemgAAAAAADdHQAkAXiA+Pl716tWT2VyxifNWq1Vbt27VBx98oO+++05SfqX7+++/V9u2bR0xVAAAAACAl6HiDQAebvHixbrsssv02muvVfhck8mkkydPas6cOZKkBx98ULt27SKcBAAAAADYDZvkAICHys7O1qRJk/Tee+9Jksxms9avX69evXpV6Dq5ubl69NFHNXDgQN15550OGCkAAAAAwJsRUAKABzp27Jhuu+02bdu2zfbayJEjNX36dNWoUaPC18vLy5OPj489hwgAAAAAgCQq3gDgcRYvXqzOnTvbwkl/f399/PHHmjNnTqXC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OaaaJNlvwI45e+xeOeWAQenZzXMxAQDYQEAJANAO1dbW5tRTT8306dMbNb6xqyjvnvdavn77vCyvWLe9U2xQv15d863xw/OR4bu12DUAAGg/BJQAAO3QT37yk3zxi19s9PitraJ8vaIy37jjmdw597XmmuJWnThyt3zz5OHZqWfXVrsmAABtj4ASAKCdefnll7PPPvtk/fr1TXpfQ6so//DMkkyePjevr265VZMN2bln13z3YyMybtiAVr82AABtg4ASAKCdeeSRRzJ27Ngmv2/33XfPiy++WG8V5Q0PvZgrZs5vzultk8tPGppzDxtS6GkAAFAAxYWeAAAATXPwwQdnypQpmTBhQt7znvc0emfsxYsX54orrqj7+uo/P9cmwskkufx383P1n58r9DQAACgAKygBANq51atXZ968eZkzZ06efvrpun+uXLlyk7EHHnhgnnjiiTazcvLdrKQEAOh8BJQAAB1QbW1tFi1alKeffjpPPPFEpk2blvLy8tx0001Zt+v+uXDq7EJPsUHXfGq0Z1ICAHQiAkoAgE7k9YrKHP+jvxZkQ5zG6tera+750lF29wYA6CQ8gxIAoBP5xh3PtOlwMkmWV6zLN+6YV+hpAADQSgSUAACdxF1zX8udc18r9DQaZebTr+Xuee1jrgAAbB8BJQBAJ7C6sqrdrUr8+u3zsrqyqtDTAACghQkoAQA6gRlPvZLlFW272v1uyyvW5fY5rxZ6GgAAtDCb5AAANLPBgwdn0aJFSZIvfOEL+fGPf9zg2B/+8If56le/miQpKSlJVdXmVwz+/ve/z0033ZRZs2Zl6dKlKS0tze67755jjjkmF110UYYNG1Zv/I033pjzzjuvyXPf+YQvpdfID9U7tm75S6l44q689dLTqVq1PKmuSvEOfdJt9/3Ta9jR6bHPQQ2eb9H3T9zkWFFp1w3vH/S+7DjqxHTfY9hm3rnBfgN2zN1fODJFRUVN+j6+8IUv5Kc//WmS5I477shJJ53U4Njq6upMnz49s2fPrvv1xhtvbPG/BwAAzUdACQDQzN4ZUO6888559dVX07Xr5nek3n///bNgwYIkmw8oV65cmbPOOit33nlnkmTYsGEZOnRo1q9fn8cffzyLFy9OcXFxLr300nz729+uC/IefPDBXHvttUmS5RWV+fPflyVJKhfPT1X5aynts1u67T50k/n0ev/xdYFhbW1tyh+YmpUP/zaprUlJr53Sdbf3pqikS9a//nLWL1uYJOmxz0Hpd/JXU9xth03OtzGg7D5kVEp69k2S1Kxdmcolz6ZmdXmSovQ99oL0HjO+wd/PaRcemoMG79Tg6+9WWVmZgQMH5o033kiSnHLKKZk+fXqD48vLy9O3b99NjgsoAQBaR2mhJwAA0FEddNBBefzxx3P77bfntNNO2+T1WbNmZcGCBRkzZkwee+yxTV5ft25djj/++DzyyCMZMmRIbrrpphx++OF1r9fW1mbq1Kn57Gc/m+9+97tZu3ZtrrzyyiTJEUcckSOOOCJJ8oXfPJl5/6pKL595VarKX0u33Yem34lf3uL837zv2qx6/PYUlXbNTsdflJ4jPlRvJWPlKwuy/Hf/L2uffzxLb/56Bnzy+ykq6bLZc5WNnZDue42s+7pm/Vt5/XdXZs0/ZuXNP9+QHfY7PKU79tvse6f8bVGTAsrp06fnjTfeyMCBA/Paa69l5syZWbp0afr377/Z8V26dMknP/nJHHjggRk1alR22mmnHHDAAY2+HgAA28czKAEAWsj555+fJLn++us3+/p1111Xb9y7XXHFFXnkkUfSp0+f3H///fXCySQpKirK2WefnZtvvjlJctVVV+WPf/xjvTFV1TW5d/7SJs997YtPZtXjtydJ+p381fQaedwmNetug/ZL/7O+m+LuvbLu1b9nxUO/afT5i7t0T9/jLtzwRXVV3nrhiQbH3jt/aaqqaxp97o2/r1/84hdz1FFHpaqqKlOmTGlwfM+ePTN16tT8+7//e44++uiUlZU1+loAAGw/ASUAQAsZMWJEDjrooNxzzz155ZVX6r1WUVGRW265JbvvvnuOP/74Td67atWq/OxnP0uSfP3rX89ee+3V4HVOPPHEnHzyyUmS73znO/Vee25ZRdaur27y3Fc8fEuSpMe+B2eH945tcFxp711SdtiZSZKVs3+Xmso1jb5G6Y47p7hH7yRJ9ZryBsetXV+d55etbtQ5Fy5cmPvuuy+lpaU555xzMmnSpCQNh8QAABSegBIAoAWdf/75qampyY033ljv+C233JKKiopMnDgxxcWb3pL96U9/ysqVK5MkZ5999lavc8455yRJ/vrXv2bFihV1x+e+sqKhtzSo+q2KVL78TJKk5/Bjtjq+5/CjkyS1lWvy1ktzG32d2tqa1KxbmyQp2aHPFsc29vu4/vrrU1tbmxNOOCEDBgzIqaeemrKysixYsCCzZs1q9NwAAGg9AkoAgBZ01llnpUePHpsElNdff32KiooarHfPnj07STJkyJDssssuW73OmDFjkiQ1NTV54om369LztiGgXLfk+aR2Q6W6227v3er4kh3KUlrW/1/vfa7R13lr4Zyken1SUprue4/e4tjGfB/vDII3/r726NEjZ565YYXnxuo3AABti4ASAKAFlZWV5eMf/3iee+65/OUvf0mS/P3vf89DDz2Uo446Knvvvfdm37ds2YZdtxva2OXd3jlu43uTbVtBWbP27fds3Hl7a4p79kmSVK/Z+vWq16zI6gUP5vU7r0qKirPTcZ9N6Y47b/E9c1/d+nnvueeevPzyy+nfv38++tGP1h3fWPPeuGoVAIC2xS7eAAAt7Pzzz8+vfvWrXH/99TnqqKPqnofY0OrJbVFbW7vZ40tWvNVs19geS389eZNjRaXdsusZ30yPwQds9f2N+T6uvfbaJBvq7qWlb9/mjhkzJsOHD8+8efNy88031wWWAAC0DVZQAgC0sKOPPjpDhgzJtGnT8uabb2bKlCnp3bt3JkyY0OB7+vXrlyRZurRxO3D/85//rPv3d1bCK6sav/v1Rhs3rkmS6tVvNuo9NavLk2yoe29O9yGj0nP4sek57Oh0H3xgUtIltVWVef13/y/ry5ds9fyVVVve6GfZsmW54447kmw++N3ajuoAABSOFZQAAC2sqKgo5557bi677LJMnDgxS5YsyWc+85n06NGjwfeMHr3hmYwvvvhili1bttXnUD766KNJkuLi4hx44IF1x9dVNz2g7Np/nyRFSWpT+do/Ulq26xbHV69ZkaoVG4LUrgP23eyYsrET0n2vkXVfV616Pf+85RtZv2xRlt/xwww4+79SVFTU4DW2FrTedNNNWb9+fUpLS3PBBRds8vrGavesWbOyYMGC7Lfffls8HwAArccKSgCAVnDuueemuLg4v/vd75Jsvd59zDHHZMcdd0ySTJkyZavn3zjmyCOPTJ8+feqOdy1p+u1eSY8d022PYUmS1XPv2+r41fP+lCQp6toj3fcc0ahrlO64c3Y55dKkuDTrXv17Vj/z5y2O71a65e9j4wY4VVVVeeihhzb5NWfOnE3GAgDQNggoAQBawZ577pnx48dn5513ztix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"}, "metadata": {"image/png": {"width": 660, "height": 499}}, "output_type": "display_data"}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["def viz_parts_tree(pump_df, parts):\n", " G = nx.DiGraph()\n", " for node in parts: G.add_node(node, level=parts[node])\n", " for _,row in pump_df.iterrows(): G.add_edge(row['predecessor'], row['successor'], quantity=row['quantity'])\n", " pos = nx.multipartite_layout(G, subset_key='level')\n", " nx.draw(G, pos, with_labels=True, font_size=8)\n", " edge_labels = nx.get_edge_attributes(G, 'quantity')\n", " nx.draw_networkx_edge_labels(G, pos, edge_labels)\n", " plt.axis('off')\n", " plt.show()\n", "\n", "viz_parts_tree(pump_df, parts)"], "outputs": [{"data": {"text/plain": ["<Figure size 640x480 with 1 Axes>"], "image/png": "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FiUAAAAAwOEIKAHAyxSEjr/++qtmzZql1NRUNW7cWJdddpmsVqu2bt2qjz/+WAkJCTKZTLJYLAaPGAAAAADgyQgoAcDLmEwmJSQk6K233tL69eslSY8++qiWLVumSy+9VMnJyVq1apU+/fRTSaxHCQAAAABwLAJKAPBCaWlpWrNmjUwmk95++20999xzCg8P13vvvSdJOn78uObPn6+5c+dKEutRAgAAAAAchoASALxQeHi4vvzyS917770aP368JCkvL0/XXXedJk+eLEnas2ePZsyYwXqUAAAAAACHMln5jhMAvNaJEyfUpEmTQq9lZWXpnnvu0fz581WjRg2NGDFCb7/9tsLCwmSxWGQ287MtAAAAAID98F0mAHixi8NJSQoICNCUKVN0ySWXsB4lAAAAAMDhCCgBAEWEh4frww8/lMR6lAAAAAAAxyKgBAAUa9CgQWWuR8lsSgAAAABAVRFQAgBK9MQTT+jWW2+V1WrVli1b9PHHHyshIUEmk0l5eXm22ZQ5OTmSJIvFYuRwAQAAAABuiIASAFCi4taj/OSTTyRJPj4+SktL088//6yXX35ZEmtUAgAAAAAqjoASAFCqi9ejXLBggRYsWKC0tDTNnz9fb731liZPnqyRI0dKYo1KAAAAAEDFmKxMdQEAlMPkyZP1/PPPy2QyqWfPnoqIiNBPP/2kEydOyGQy6ZNPPtH9999v9DABAAAAAG6GgBIAUCqr1WqbFXnLLbdo0aJFCgoKUkZGhiTp8ssv19y5c3XppZcaOUwAAAAAgJui4g0AKFVBOHn27Fn17t1b1atXt4WT48eP165duwgnAQAAAACV5mv0AAAArm/fvn2aN2+epk+frpSUFJlMJs2YMUNjxowxemgAAAAAADdHQAkAXiA+Pl716tWT2VyxifNWq1Vbt27VBx98oO+++05SfqX7+++/V9u2bR0xVAAAAACAl6HiDQAebvHixbrsssv02muvVfhck8mkkydPas6cOZKkBx98ULt27SKcBAAAAADYDZvkAICHys7O1qRJk/Tee+9Jksxms9avX69evXpV6Dq5ubl69NFHNXDgQN15550OGCkAAAAAwJsRUAKABzp27Jhuu+02bdu2zfbayJEjNX36dNWoUaPC18vLy5OPj489hwgAAAAAgCQq3gDgcRYvXqzOnTvbwkl/f399/PHHmjNnTqXC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OaaaJNlvwI45e+xeOeWAQenZzXMxAQDYQEAJANAO1dbW5tRTT8306dMbNb6xqyjvnvdavn77vCyvWLe9U2xQv15d863xw/OR4bu12DUAAGg/BJQAAO3QT37yk3zxi19s9PitraJ8vaIy37jjmdw597XmmuJWnThyt3zz5OHZqWfXVrsmAABtj4ASAKCdefnll7PPPvtk/fr1TXpfQ6so//DMkkyePjevr265VZMN2bln13z3YyMybtiAVr82AABtg4ASAKCdeeSRRzJ27Ngmv2/33XfPiy++WG8V5Q0PvZgrZs5vzultk8tPGppzDxtS6GkAAFAAxYWeAAAATXPwwQdnypQpmTBhQt7znvc0emfsxYsX54orrqj7+uo/P9cmwskkufx383P1n58r9DQAACgAKygBANq51atXZ968eZkzZ06efvrpun+uXLlyk7EHHnhgnnjiiTazcvLdrKQEAOh8BJQAAB1QbW1tFi1alKeffjpPPPFEpk2blvLy8tx0001Zt+v+uXDq7EJPsUHXfGq0Z1ICAHQiAkoAgE7k9YrKHP+jvxZkQ5zG6tera+750lF29wYA6CQ8gxIAoBP5xh3PtOlwMkmWV6zLN+6YV+hpAADQSgSUAACdxF1zX8udc18r9DQaZebTr+Xuee1jrgAAbB8BJQBAJ7C6sqrdrUr8+u3zsrqyqtDTAACghQkoAQA6gRlPvZLlFW272v1uyyvW5fY5rxZ6GgAAtDCb5AAANLPBgwdn0aJFSZIvfOEL+fGPf9zg2B/+8If56le/miQpKSlJVdXmVwz+/ve/z0033ZRZs2Zl6dKlKS0tze67755jjjkmF110UYYNG1Zv/I033pjzzjuvyXPf+YQvpdfID9U7tm75S6l44q689dLTqVq1PKmuSvEOfdJt9/3Ta9jR6bHPQQ2eb9H3T9zkWFFp1w3vH/S+7DjqxHTfY9hm3rnBfgN2zN1fODJFRUVN+j6+8IUv5Kc//WmS5I477shJJ53U4Njq6upMnz49s2fPrvv1xhtvbPG/BwAAzUdACQDQzN4ZUO6888559dVX07Xr5nek3n///bNgwYIkmw8oV65cmbPOOit33nlnkmTYsGEZOnRo1q9fn8cffzyLFy9OcXFxLr300nz729+uC/IefPDBXHvttUmS5RWV+fPflyVJKhfPT1X5aynts1u67T50k/n0ev/xdYFhbW1tyh+YmpUP/zaprUlJr53Sdbf3pqikS9a//nLWL1uYJOmxz0Hpd/JXU9xth03OtzGg7D5kVEp69k2S1Kxdmcolz6ZmdXmSovQ99oL0HjO+wd/PaRcemoMG79Tg6+9WWVmZgQMH5o033kiSnHLKKZk+fXqD48vLy9O3b99NjgsoAQBaR2mhJwAA0FEddNBBefzxx3P77bfntNNO2+T1WbNmZcGCBRkzZkwee+yxTV5ft25djj/++DzyyCMZMmRIbrrpphx++OF1r9fW1mbq1Kn57Gc/m+9+97tZu3ZtrrzyyiTJEUcckSOOOCJJ8oXfPJl5/6pKL595VarKX0u33Yem34lf3uL837zv2qx6/PYUlXbNTsdflJ4jPlRvJWPlKwuy/Hf/L2uffzxLb/56Bnzy+ykq6bLZc5WNnZDue42s+7pm/Vt5/XdXZs0/ZuXNP9+QHfY7PKU79tvse6f8bVGTAsrp06fnjTfeyMCBA/Paa69l5syZWbp0afr377/Z8V26dMknP/nJHHjggRk1alR22mmnHHDAAY2+HgAA28czKAEAWsj555+fJLn++us3+/p1111Xb9y7XXHFFXnkkUfSp0+f3H///fXCySQpKirK2WefnZtvvjlJctVVV+WPf/xjvTFV1TW5d/7SJs997YtPZtXjtydJ+p381fQaedwmNetug/ZL/7O+m+LuvbLu1b9nxUO/afT5i7t0T9/jLtzwRXVV3nrhiQbH3jt/aaqqaxp97o2/r1/84hdz1FFHpaqqKlOmTGlwfM+ePTN16tT8+7//e44++uiUlZU1+loAAGw/ASUAQAsZMWJEDjrooNxzzz155ZVX6r1WUVGRW265JbvvvnuOP/74Td67atWq/OxnP0uSfP3rX89ee+3V4HVOPPHEnHzyyUmS73znO/Vee25ZRdaur27y3Fc8fEuSpMe+B2eH945tcFxp711SdtiZSZKVs3+Xmso1jb5G6Y47p7hH7yRJ9ZryBsetXV+d55etbtQ5Fy5cmPvuuy+lpaU555xzMmnSpCQNh8QAABSegBIAoAWdf/75qampyY033ljv+C233JKKiopMnDgxxcWb3pL96U9/ysqVK5MkZ5999lavc8455yRJ/vrXv2bFihV1x+e+sqKhtzSo+q2KVL78TJKk5/Bjtjq+5/CjkyS1lWvy1ktzG32d2tqa1KxbmyQp2aHPFsc29vu4/vrrU1tbmxNOOCEDBgzIqaeemrKysixYsCCzZs1q9NwAAGg9AkoAgBZ01llnpUePHpsElNdff32KiooarHfPnj07STJkyJDssssuW73OmDFjkiQ1NTV54om369LztiGgXLfk+aR2Q6W6227v3er4kh3KUlrW/1/vfa7R13lr4Zyken1SUprue4/e4tjGfB/vDII3/r726NEjZ565YYXnxuo3AABti4ASAKAFlZWV5eMf/3iee+65/OUvf0mS/P3vf89DDz2Uo446Knvvvfdm37ds2YZdtxva2OXd3jlu43uTbVtBWbP27fds3Hl7a4p79kmSVK/Z+vWq16zI6gUP5vU7r0qKirPTcZ9N6Y47b/E9c1/d+nnvueeevPzyy+nfv38++tGP1h3fWPPeuGoVAIC2xS7eAAAt7Pzzz8+vfvWrXH/99TnqqKPqnofY0OrJbVFbW7vZ40tWvNVs19geS389eZNjRaXdsusZ30yPwQds9f2N+T6uvfbaJBvq7qWlb9/mjhkzJsOHD8+8efNy88031wWWAAC0DVZQAgC0sKOPPjpDhgzJtGnT8uabb2bKlCnp3bt3JkyY0OB7+vXrlyRZurRxO3D/85//rPv3d1bCK6sav/v1Rhs3rkmS6tVvNuo9NavLk2yoe29O9yGj0nP4sek57Oh0H3xgUtIltVWVef13/y/ry5ds9fyVVVve6GfZsmW54447kmw++N3ajuoAABSOFZQAAC2sqKgo5557bi677LJMnDgxS5YsyWc+85n06NGjwfeMHr3hmYwvvvhili1bttXnUD766KNJkuLi4hx44IF1x9dVNz2g7Np/nyRFSWpT+do/Ulq26xbHV69ZkaoVG4LUrgP23eyYsrET0n2vkXVfV616Pf+85RtZv2xRlt/xwww4+79SVFTU4DW2FrTedNNNWb9+fUpLS3PBBRds8vrGavesWbOyYMGC7Lfffls8HwAArccKSgCAVnDuueemuLg4v/vd75Jsvd59zDHHZMcdd0ySTJkyZavn3zjmyCOPTJ8+feqOdy1p+u1eSY8d022PYUmS1XPv2+r41fP+lCQp6toj3fcc0ahrlO64c3Y55dKkuDTrXv17Vj/z5y2O71a65e9j4wY4VVVVeeihhzb5NWfOnE3GAgDQNggoAQBawZ577pnx48dn5513ztix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"}, "metadata": {"image/png": {"width": 660, "height": 499}}, "output_type": "display_data"}], "execution_count": null}, {"cell_type": "markdown", "metadata": {}, "source": ["# Example Usage (Visulization)\n", "\n", "We have data in the form of predecessor and successor pairs with a quantity. This structure is commonly used in ERP systems like SAP to represent Bills of Materials (BOM). A common usecase is to first visulize specific parts."]}, {"cell_type": "code", "metadata": {}, "source": ["df"], "outputs": [{"data": {"text/plain": [" predecessor successor quantity\n", "0 PUMP_RV1 MOTOR_A1 1\n", "1 PUMP_RV1 CASE_STD1 1\n", "2 PUMP_RV1 VANE_ASM1 1\n", "3 PUMP_RV1 OIL_SYSTEM1 1\n", "4 VANE_ASM1 VANE_001 6\n", "5 VANE_ASM1 BEARING_01 2\n", "6 PUMP_RV2 MOTOR_A1 1\n", "7 PUMP_RV2 CASE_STD1 1\n", "8 PUMP_RV2 VANE_ASM2 1\n", "9 VANE_ASM2 VANE_002 6\n", "10 VANE_ASM2 BEARING_01 2\n", "11 PUMP_SC1 MOTOR_B1 1\n", "12 PUMP_SC1 CASE_SC1 1\n", "13 PUMP_SC1 SCREW_ASM1 1\n", "14 SCREW_ASM1 SCREW_001 2\n", "15 SCREW_ASM1 BEARING_02 4\n", "16 PUMP_CL1 MOTOR_A1 1\n", "17 PUMP_CL1 CASE_CL1 1\n", "18 PUMP_CL1 CLAW_ASM1 1\n", "19 CLAW_ASM1 CLAW_001 2\n", "20 CLAW_ASM1 BEARING_02 4"], "text/html": ["<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>predecessor</th>\n", " <th>successor</th>\n", " <th>quantity</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>PUMP_RV1</td>\n", " <td>MOTOR_A1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>PUMP_RV1</td>\n", " <td>CASE_STD1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>PUMP_RV1</td>\n", " <td>VANE_ASM1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>PUMP_RV1</td>\n", " <td>OIL_SYSTEM1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>VANE_ASM1</td>\n", " <td>VANE_001</td>\n", " <td>6</td>\n", " </tr>\n", " <tr>\n", " <th>5</th>\n", " <td>VANE_ASM1</td>\n", " <td>BEARING_01</td>\n", " <td>2</td>\n", " </tr>\n", " <tr>\n", " <th>6</th>\n", " <td>PUMP_RV2</td>\n", " <td>MOTOR_A1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>7</th>\n", " <td>PUMP_RV2</td>\n", " <td>CASE_STD1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>8</th>\n", " <td>PUMP_RV2</td>\n", " <td>VANE_ASM2</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>9</th>\n", " <td>VANE_ASM2</td>\n", " <td>VANE_002</td>\n", " <td>6</td>\n", " </tr>\n", " <tr>\n", " <th>10</th>\n", " <td>VANE_ASM2</td>\n", " <td>BEARING_01</td>\n", " <td>2</td>\n", " </tr>\n", " <tr>\n", " <th>11</th>\n", " <td>PUMP_SC1</td>\n", " <td>MOTOR_B1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>12</th>\n", " <td>PUMP_SC1</td>\n", " <td>CASE_SC1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>13</th>\n", " <td>PUMP_SC1</td>\n", " <td>SCREW_ASM1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>14</th>\n", " <td>SCREW_ASM1</td>\n", " <td>SCREW_001</td>\n", " <td>2</td>\n", " </tr>\n", " <tr>\n", " <th>15</th>\n", " <td>SCREW_ASM1</td>\n", " <td>BEARING_02</td>\n", " <td>4</td>\n", " </tr>\n", " <tr>\n", " <th>16</th>\n", " <td>PUMP_CL1</td>\n", " <td>MOTOR_A1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>17</th>\n", " <td>PUMP_CL1</td>\n", " <td>CASE_CL1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>18</th>\n", " <td>PUMP_CL1</td>\n", " <td>CLAW_ASM1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>19</th>\n", " <td>CLAW_ASM1</td>\n", " <td>CLAW_001</td>\n", " <td>2</td>\n", " </tr>\n", " <tr>\n", " <th>20</th>\n", " <td>CLAW_ASM1</td>\n", " <td>BEARING_02</td>\n", " <td>4</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["pump_id = 'PUMP_RV1'\n", "pump_id"], "outputs": [{"data": {"text/plain": ["'PUMP_RV1'"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["pump_df = get_df_for_product(df, pump_id)\n", "pump_df"], "outputs": [{"data": {"text/plain": [" predecessor successor quantity\n", "0 PUMP_RV1 MOTOR_A1 1\n", "1 PUMP_RV1 CASE_STD1 1\n", "2 PUMP_RV1 VANE_ASM1 1\n", "3 PUMP_RV1 OIL_SYSTEM1 1\n", "4 VANE_ASM1 VANE_001 6\n", "5 VANE_ASM1 BEARING_01 2"], "text/html": ["<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>predecessor</th>\n", " <th>successor</th>\n", " <th>quantity</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>PUMP_RV1</td>\n", " <td>MOTOR_A1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>PUMP_RV1</td>\n", " <td>CASE_STD1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>PUMP_RV1</td>\n", " <td>VANE_ASM1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>PUMP_RV1</td>\n", " <td>OIL_SYSTEM1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>VANE_ASM1</td>\n", " <td>VANE_001</td>\n", " <td>6</td>\n", " </tr>\n", " <tr>\n", " <th>5</th>\n", " <td>VANE_ASM1</td>\n", " <td>BEARING_01</td>\n", " <td>2</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["parts = get_all_parts(df, pump_id)\n", "parts"], "outputs": [{"data": {"text/plain": ["{'PUMP_RV1': 0,\n", " 'OIL_SYSTEM1': 1,\n", " 'CASE_STD1': 1,\n", " 'VANE_ASM1': 1,\n", " 'MOTOR_A1': 1,\n", " 'BEARING_01': 2,\n", " 'VANE_001': 2}"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["viz_parts_tree(pump_df, parts)"], "outputs": [{"data": {"text/plain": ["<Figure size 640x480 with 1 Axes>"], "image/png": "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FiUAAAAAwOEIKAHAyxSEjr/++qtmzZql1NRUNW7cWJdddpmsVqu2bt2qjz/+WAkJCTKZTLJYLAaPGAAAAADgyQgoAcDLmEwmJSQk6K233tL69eslSY8++qiWLVumSy+9VMnJyVq1apU+/fRTSaxHCQAAAABwLAJKAPBCaWlpWrNmjUwmk95++20999xzCg8P13vvvSdJOn78uObPn6+5c+dKEutRAgAAAAAchoASALxQeHi4vvzyS917770aP368JCkvL0/XXXedJk+eLEnas2ePZsyYwXqUAAAAAACHMln5jhMAvNaJEyfUpEmTQq9lZWXpnnvu0fz581WjRg2NGDFCb7/9tsLCwmSxWGQ287MtAAAAAID98F0mAHixi8NJSQoICNCUKVN0ySWXsB4lAAAAAMDhCCgBAEWEh4frww8/lMR6lAAAAAAAxyKgBAAUa9CgQWWuR8lsSgAAAABAVRFQAgBK9MQTT+jWW2+V1WrVli1b9PHHHyshIUEmk0l5eXm22ZQ5OTmSJIvFYuRwAQAAAABuiIASAFCi4taj/OSTTyRJPj4+SktL088//6yXX35ZEmtUAgAAAAAqjoASAFCqi9ejXLBggRYsWKC0tDTNnz9fb731liZPnqyRI0dKYo1KAAAAAEDFmKxMdQEAlMPkyZP1/PPPy2QyqWfPnoqIiNBPP/2kEydOyGQy6ZNPPtH9999v9DABAAAAAG6GgBIAUCqr1WqbFXnLLbdo0aJFCgoKUkZGhiTp8ssv19y5c3XppZcaOUwAAAAAgJui4g0AKFVBOHn27Fn17t1b1atXt4WT48eP165duwgnAQAAAACV5mv0AAAArm/fvn2aN2+epk+frpSUFJlMJs2YMUNjxowxemgAAAAAADdHQAkAXiA+Pl716tWT2VyxifNWq1Vbt27VBx98oO+++05SfqX7+++/V9u2bR0xVAAAAACAl6HiDQAebvHixbrsssv02muvVfhck8mkkydPas6cOZKkBx98ULt27SKcBAAAAADYDZvkAICHys7O1qRJk/Tee+9Jksxms9avX69evXpV6Dq5ubl69NFHNXDgQN15550OGCkAAAAAwJsRUAKABzp27Jhuu+02bdu2zfbayJEjNX36dNWoUaPC18vLy5OPj489hwgAAAAAgCQq3gDgcRYvXqzOnTvbwkl/f399/PHHmjNnTqXC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OaaaJNlvwI45e+xeOeWAQenZzXMxAQDYQEAJANAO1dbW5tRTT8306dMbNb6xqyjvnvdavn77vCyvWLe9U2xQv15d863xw/OR4bu12DUAAGg/BJQAAO3QT37yk3zxi19s9PitraJ8vaIy37jjmdw597XmmuJWnThyt3zz5OHZqWfXVrsmAABtj4ASAKCdefnll7PPPvtk/fr1TXpfQ6so//DMkkyePjevr265VZMN2bln13z3YyMybtiAVr82AABtg4ASAKCdeeSRRzJ27Ngmv2/33XfPiy++WG8V5Q0PvZgrZs5vzultk8tPGppzDxtS6GkAAFAAxYWeAAAATXPwwQdnypQpmTBhQt7znvc0emfsxYsX54orrqj7+uo/P9cmwskkufx383P1n58r9DQAACgAKygBANq51atXZ968eZkzZ06efvrpun+uXLlyk7EHHnhgnnjiiTazcvLdrKQEAOh8BJQAAB1QbW1tFi1alKeffjpPPPFEpk2blvLy8tx0001Zt+v+uXDq7EJPsUHXfGq0Z1ICAHQiAkoAgE7k9YrKHP+jvxZkQ5zG6tera+750lF29wYA6CQ8gxIAoBP5xh3PtOlwMkmWV6zLN+6YV+hpAADQSgSUAACdxF1zX8udc18r9DQaZebTr+Xuee1jrgAAbB8BJQBAJ7C6sqrdrUr8+u3zsrqyqtDTAACghQkoAQA6gRlPvZLlFW272v1uyyvW5fY5rxZ6GgAAtDCb5AAANLPBgwdn0aJFSZIvfOEL+fGPf9zg2B/+8If56le/miQpKSlJVdXmVwz+/ve/z0033ZRZs2Zl6dKlKS0tze67755jjjkmF110UYYNG1Zv/I033pjzzjuvyXPf+YQvpdfID9U7tm75S6l44q689dLTqVq1PKmuSvEOfdJt9/3Ta9jR6bHPQQ2eb9H3T9zkWFFp1w3vH/S+7DjqxHTfY9hm3rnBfgN2zN1fODJFRUVN+j6+8IUv5Kc//WmS5I477shJJ53U4Njq6upMnz49s2fPrvv1xhtvbPG/BwAAzUdACQDQzN4ZUO6888559dVX07Xr5nek3n///bNgwYIkmw8oV65cmbPOOit33nlnkmTYsGEZOnRo1q9fn8cffzyLFy9OcXFxLr300nz729+uC/IefPDBXHvttUmS5RWV+fPflyVJKhfPT1X5aynts1u67T50k/n0ev/xdYFhbW1tyh+YmpUP/zaprUlJr53Sdbf3pqikS9a//nLWL1uYJOmxz0Hpd/JXU9xth03OtzGg7D5kVEp69k2S1Kxdmcolz6ZmdXmSovQ99oL0HjO+wd/PaRcemoMG79Tg6+9WWVmZgQMH5o033kiSnHLKKZk+fXqD48vLy9O3b99NjgsoAQBaR2mhJwAA0FEddNBBefzxx3P77bfntNNO2+T1WbNmZcGCBRkzZkwee+yxTV5ft25djj/++DzyyCMZMmRIbrrpphx++OF1r9fW1mbq1Kn57Gc/m+9+97tZu3ZtrrzyyiTJEUcckSOOOCJJ8oXfPJl5/6pKL595VarKX0u33Yem34lf3uL837zv2qx6/PYUlXbNTsdflJ4jPlRvJWPlKwuy/Hf/L2uffzxLb/56Bnzy+ykq6bLZc5WNnZDue42s+7pm/Vt5/XdXZs0/ZuXNP9+QHfY7PKU79tvse6f8bVGTAsrp06fnjTfeyMCBA/Paa69l5syZWbp0afr377/Z8V26dMknP/nJHHjggRk1alR22mmnHHDAAY2+HgAA28czKAEAWsj555+fJLn++us3+/p1111Xb9y7XXHFFXnkkUfSp0+f3H///fXCySQpKirK2WefnZtvvjlJctVVV+WPf/xjvTFV1TW5d/7SJs997YtPZtXjtydJ+p381fQaedwmNetug/ZL/7O+m+LuvbLu1b9nxUO/afT5i7t0T9/jLtzwRXVV3nrhiQbH3jt/aaqqaxp97o2/r1/84hdz1FFHpaqqKlOmTGlwfM+ePTN16tT8+7//e44++uiUlZU1+loAAGw/ASUAQAsZMWJEDjrooNxzzz155ZVX6r1WUVGRW265JbvvvnuOP/74Td67atWq/OxnP0uSfP3rX89ee+3V4HVOPPHEnHzyyUmS73znO/Vee25ZRdaur27y3Fc8fEuSpMe+B2eH945tcFxp711SdtiZSZKVs3+Xmso1jb5G6Y47p7hH7yRJ9ZryBsetXV+d55etbtQ5Fy5cmPvuuy+lpaU555xzMmnSpCQNh8QAABSegBIAoAWdf/75qampyY033ljv+C233JKKiopMnDgxxcWb3pL96U9/ysqVK5MkZ5999lavc8455yRJ/vrXv2bFihV1x+e+sqKhtzSo+q2KVL78TJKk5/Bjtjq+5/CjkyS1lWvy1ktzG32d2tqa1KxbmyQp2aHPFsc29vu4/vrrU1tbmxNOOCEDBgzIqaeemrKysixYsCCzZs1q9NwAAGg9AkoAgBZ01llnpUePHpsElNdff32KiooarHfPnj07STJkyJDssssuW73OmDFjkiQ1NTV54om369LztiGgXLfk+aR2Q6W6227v3er4kh3KUlrW/1/vfa7R13lr4Zyken1SUprue4/e4tjGfB/vDII3/r726NEjZ565YYXnxuo3AABti4ASAKAFlZWV5eMf/3iee+65/OUvf0mS/P3vf89DDz2Uo446Knvvvfdm37ds2YZdtxva2OXd3jlu43uTbVtBWbP27fds3Hl7a4p79kmSVK/Z+vWq16zI6gUP5vU7r0qKirPTcZ9N6Y47b/E9c1/d+nnvueeevPzyy+nfv38++tGP1h3fWPPeuGoVAIC2xS7eAAAt7Pzzz8+vfvWrXH/99TnqqKPqnofY0OrJbVFbW7vZ40tWvNVs19geS389eZNjRaXdsusZ30yPwQds9f2N+T6uvfbaJBvq7qWlb9/mjhkzJsOHD8+8efNy88031wWWAAC0DVZQAgC0sKOPPjpDhgzJtGnT8uabb2bKlCnp3bt3JkyY0OB7+vXrlyRZurRxO3D/85//rPv3d1bCK6sav/v1Rhs3rkmS6tVvNuo9NavLk2yoe29O9yGj0nP4sek57Oh0H3xgUtIltVWVef13/y/ry5ds9fyVVVve6GfZsmW54447kmw++N3ajuoAABSOFZQAAC2sqKgo5557bi677LJMnDgxS5YsyWc+85n06NGjwfeMHr3hmYwvvvhili1bttXnUD766KNJkuLi4hx44IF1x9dVNz2g7Np/nyRFSWpT+do/Ulq26xbHV69ZkaoVG4LUrgP23eyYsrET0n2vkXVfV616Pf+85RtZv2xRlt/xwww4+79SVFTU4DW2FrTedNNNWb9+fUpLS3PBBRds8vrGavesWbOyYMGC7Lfffls8HwAArccKSgCAVnDuueemuLg4v/vd75Jsvd59zDHHZMcdd0ySTJkyZavn3zjmyCOPTJ8+feqOdy1p+u1eSY8d022PYUmS1XPv2+r41fP+lCQp6toj3fcc0ahrlO64c3Y55dKkuDTrXv17Vj/z5y2O71a65e9j4wY4VVVVeeihhzb5NWfOnE3GAgDQNggoAQBawZ577pnx48dn5513ztix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"}, "metadata": {"image/png": {"width": 660, "height": 499}}, "output_type": "display_data"}], "execution_count": null}, {"cell_type": "markdown", "metadata": {}, "source": ["# Graph Querying"]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Prompt**\n", "\n", "Hey can you show me the basic structure of how i can query a graph? For example based on structures, node and edge attributes and so on?"]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Response**\n", "\n", "I'll show you some common graph querying operations in NetworkX. Would you like to try these basic queries first?\n", "\n", "```python\n", "# Basic node queries\n", "G.nodes() # all nodes\n", "G.nodes(data=True) # nodes with their attributes\n", "G[node_name] # get specific node's neighbors\n", "G.nodes[node_name] # get node attributes\n", "\n", "# Basic edge queries\n", "G.edges() # all edges\n", "G.edges(data=True) # edges with their attributes\n", "G.in_edges(node_name) # incoming edges to a node\n", "G.out_edges(node_name) # outgoing edges from a node\n", "\n", "# Attribute-based queries\n", "[n for n,d in G.nodes(data=True) if d['level']==1] # nodes at level 1\n", "[e for e,d in G.edges(data=True) if d['quantity']>1] # edges with quantity > 1\n", "```\n", "\n", "Would you like to try some of these queries on our pump graph? We can then explore more complex queries based on what you're interested in."]}, {"cell_type": "code", "metadata": {}, "source": ["G.nodes()"], "outputs": [{"data": {"text/plain": ["NodeView(('PUMP_RV1', 'OIL_SYSTEM1', 'CASE_STD1', 'VANE_ASM1', 'MOTOR_A1', 'BEARING_01', 'VANE_001'))"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["G.nodes(data=True)"], "outputs": [{"data": {"text/plain": ["NodeDataView({'PUMP_RV1': {'level': 0}, 'OIL_SYSTEM1': {'level': 1}, 'CASE_STD1': {'level': 1}, 'VANE_ASM1': {'level': 1}, 'MOTOR_A1': {'level': 1}, 'BEARING_01': {'level': 2}, 'VANE_001': {'level': 2}})"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["G['OIL_SYSTEM1']"], "outputs": [{"data": {"text/plain": ["AtlasView({})"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Prompt**\n", "\n", "What is an AtlasView and what can i do with it?"]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Response**\n", "\n", "An AtlasView in NetworkX is a read-only view of the node's adjacency (neighbor) information. In this case, it's empty {} because 'OIL_SYSTEM1' is a leaf node (it has no successors).\n", "\n", "Let's look at a more interesting example with a node that has neighbors:\n", "\n", "```python\n", "G['PUMP_RV1'] # should show successors\n", "G['VANE_ASM1'] # should show successors\n", "\n", "# You can also use these methods for more explicit neighbor information:\n", "list(G.successors('PUMP_RV1')) # nodes this points to\n", "list(G.predecessors('VANE_ASM1')) # nodes pointing to this\n", "```\n", "\n", "Would you like to try these to see the difference between leaf nodes and nodes with connections?"]}, {"cell_type": "code", "metadata": {}, "source": ["G['VANE_ASM1']"], "outputs": [{"data": {"text/plain": ["AtlasView({'VANE_001': {'quantity': 6}, 'BEARING_01': {'quantity': 2}})"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["G.predecessors('VANE_ASM1')"], "outputs": [{"data": {"text/plain": ["<dict_keyiterator at 0x75d34c0bb7e0>"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["list(G.successors('PUMP_RV1'))"], "outputs": [{"data": {"text/plain": ["['MOTOR_A1', 'CASE_STD1', 'VANE_ASM1', 'OIL_SYSTEM1']"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Prompt**\n", "\n", "That way i get just a list of the node names is there a way to get the actual nodes back?"]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Response**\n", "\n", "Yes! In NetworkX, you can get the full node data in a few ways:\n", "\n", "```python\n", "# Get nodes with all their attributes\n", "[(n, G.nodes[n]) for n in G.successors('PUMP_RV1')]\n", "\n", "# Or if you want node and edge data together\n", "[(n, G.nodes[n], G.edges[('PUMP_RV1', n)]) for n in G.successors('PUMP_RV1')]\n", "\n", "# Or using out_edges with data\n", "list(G.out_edges('PUMP_RV1', data=True))\n", "```\n", "\n", "Would you like to try these to see which format works best for your needs? Each gives you different combinations of node and edge information."]}, {"cell_type": "code", "metadata": {}, "source": ["[(n, G.nodes[n]) for n in G.successors('PUMP_RV1')]"], "outputs": [{"data": {"text/plain": ["[('MOTOR_A1', {'level': 1}),\n", " ('CASE_STD1', {'level': 1}),\n", " ('VANE_ASM1', {'level': 1}),\n", " ('OIL_SYSTEM1', {'level': 1})]"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["G.nodes()"], "outputs": [{"data": {"text/plain": ["NodeView(('PUMP_RV1', 'OIL_SYSTEM1', 'CASE_STD1', 'VANE_ASM1', 'MOTOR_A1', 'BEARING_01', 'VANE_001'))"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["G.nodes()['PUMP_RV1']"], "outputs": [{"data": {"text/plain": ["{'level': 0}"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["G.nodes['PUMP_RV1']"], "outputs": [{"data": {"text/plain": ["{'level': 0}"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["[(n, G.nodes[n], G.edges[('PUMP_RV1', n)]) for n in G.successors('PUMP_RV1')]"], "outputs": [{"data": {"text/plain": ["[('MOTOR_A1', {'level': 1}, {'quantity': 1}),\n", " ('CASE_STD1', {'level': 1}, {'quantity': 1}),\n", " ('VANE_ASM1', {'level': 1}, {'quantity': 1}),\n", " ('OIL_SYSTEM1', {'level': 1}, {'quantity': 1})]"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["list(G.out_edges('PUMP_RV1', data=True))"], "outputs": [{"data": {"text/plain": ["[('PUMP_RV1', 'MOTOR_A1', {'quantity': 1}),\n", " ('PUMP_RV1', 'CASE_STD1', {'quantity': 1}),\n", " ('PUMP_RV1', 'VANE_ASM1', {'quantity': 1}),\n", " ('PUMP_RV1', 'OIL_SYSTEM1', {'quantity': 1})]"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["list(G.in_edges('MOTOR_A1', data=True))"], "outputs": [{"data": {"text/plain": ["[('PUMP_RV1', 'MOTOR_A1', {'quantity': 1})]"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["G.edges(data=True)"], "outputs": [{"data": {"text/plain": ["OutEdgeDataView([('PUMP_RV1', 'MOTOR_A1', {'quantity': 1}), ('PUMP_RV1', 'CASE_STD1', {'quantity': 1}), ('PUMP_RV1', 'VANE_ASM1', {'quantity': 1}), ('PUMP_RV1', 'OIL_SYSTEM1', {'quantity': 1}), ('VANE_ASM1', 'VANE_001', {'quantity': 6}), ('VANE_ASM1', 'BEARING_01', {'quantity': 2})])"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["[e for e in G.edges(data=True)]"], "outputs": [{"data": {"text/plain": ["[('PUMP_RV1', 'MOTOR_A1', {'quantity': 1}),\n", " ('PUMP_RV1', 'CASE_STD1', {'quantity': 1}),\n", " ('PUMP_RV1', 'VANE_ASM1', {'quantity': 1}),\n", " ('PUMP_RV1', 'OIL_SYSTEM1', {'quantity': 1}),\n", " ('VANE_ASM1', 'VANE_001', {'quantity': 6}),\n", " ('VANE_ASM1', 'BEARING_01', {'quantity': 2})]"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["[(pred,succ,d) for pred,succ,d in G.edges(data=True) if d['quantity']>=2]"], "outputs": [{"data": {"text/plain": ["[('VANE_ASM1', 'VANE_001', {'quantity': 6}),\n", " ('VANE_ASM1', 'BEARING_01', {'quantity': 2})]"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["[n for n in G.nodes(data=True)]"], "outputs": [{"data": {"text/plain": ["[('PUMP_RV1', {'level': 0}),\n", " ('OIL_SYSTEM1', {'level': 1}),\n", " ('CASE_STD1', {'level': 1}),\n", " ('VANE_ASM1', {'level': 1}),\n", " ('MOTOR_A1', {'level': 1}),\n", " ('BEARING_01', {'level': 2}),\n", " ('VANE_001', {'level': 2})]"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["[(n,d) for n,d in G.nodes(data=True) if d['level']<2]"], "outputs": [{"data": {"text/plain": ["[('PUMP_RV1', {'level': 0}),\n", " ('OIL_SYSTEM1', {'level': 1}),\n", " ('CASE_STD1', {'level': 1}),\n", " ('VANE_ASM1', {'level': 1}),\n", " ('MOTOR_A1', {'level': 1})]"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Prompt**\n", "\n", "If i want to ask questions like give me all products that have a specific part implemented. How should i go about it? My first intuition would be to create a graph with all the products. But how would we go from there? Does this make sense?"]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Response**\n", "\n", "Yes, that's a good question! There are a couple of approaches we could take:\n", "\n", "1. Using the complete graph approach:\n", " - Create one large graph with all products\n", " - Use `G.predecessors()` recursively to find all \"parent\" assemblies of a part\n", " - This would show all products containing that part\n", "\n", "2. Using the existing DataFrame approach:\n", " - Start with the part ID\n", " - Find all predecessors in the DataFrame\n", " - Recursively move up until we reach top-level products\n", "\n", "Would you like to try one of these approaches? We could start with a simple example like \"find all pumps that use MOTOR_A1\" to see how it works. Which approach would you prefer to explore first?"]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Prompt**\n", "\n", "What are pros and cons of each approach?"]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Response**\n", "\n", "Let me break down the pros and cons of each approach:\n", "\n", "DataFrame Approach:\n", "Pros:\n", "- Simple to implement and understand\n", "- Memory efficient (uses existing data structure)\n", "- Fast for small to medium datasets\n", "- Easy to modify queries without rebuilding structures\n", "\n", "Cons:\n", "- May require multiple DataFrame operations\n", "- Could be slower for very large datasets with many queries\n", "- Need to handle recursion manually\n", "\n", "Complete Graph Approach:\n", "Pros:\n", "- Built-in graph traversal algorithms\n", "- Efficient for multiple queries once built\n", "- Natural representation of relationships\n", "- Better for complex relationship queries\n", "\n", "Cons:\n", "- Higher initial memory usage\n", "- Need to rebuild graph if data changes\n", "- Could be overkill for simple queries\n", "- More complex to maintain\n", "\n", "Would you like to try implementing one of these approaches to see how it works in practice? We could start with the simpler DataFrame approach and then compare it with the graph approach if needed."]}, {"cell_type": "markdown", "metadata": {}, "source": ["# Complete Graph Approach"]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Prompt**\n", "\n", "Then lets take the Complete Graph Approach, because in the future we plan to use the whole graph to find similar products (similar graphs, similar parts, etc)."]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Response**\n", "\n", "Good decision! Let's build the complete graph step by step:\n", "\n", "1. First, shall we create a function that builds the complete graph from our DataFrame? We can add attributes like:\n", "- Node attributes: component_type, level (from root)\n", "- Edge attributes: quantity\n", "\n", "Then we can write a function to find all products containing a specific part using graph traversal.\n", "\n", "Would you like to start with building the complete graph, or would you prefer to see the overall structure first?\n", "\n", "Remember, we already have our sample data in `df` and `df_attributes` that we can use."]}, {"cell_type": "code", "metadata": {}, "source": ["df.head()"], "outputs": [{"data": {"text/plain": [" predecessor successor quantity\n", "0 PUMP_RV1 MOTOR_A1 1\n", "1 PUMP_RV1 CASE_STD1 1\n", "2 PUMP_RV1 VANE_ASM1 1\n", "3 PUMP_RV1 OIL_SYSTEM1 1\n", "4 VANE_ASM1 VANE_001 6"], "text/html": ["<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>predecessor</th>\n", " <th>successor</th>\n", " <th>quantity</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>PUMP_RV1</td>\n", " <td>MOTOR_A1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>PUMP_RV1</td>\n", " <td>CASE_STD1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>PUMP_RV1</td>\n", " <td>VANE_ASM1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>PUMP_RV1</td>\n", " <td>OIL_SYSTEM1</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>VANE_ASM1</td>\n", " <td>VANE_001</td>\n", " <td>6</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["df_attributes.head()"], "outputs": [{"data": {"text/plain": [" id component_type ... procurement_days production_time_min\n", "0 PUMP_RV1 assembly ... 0 120\n", "1 PUMP_RV2 assembly ... 0 110\n", "2 PUMP_SC1 assembly ... 0 150\n", "3 PUMP_CL1 assembly ... 0 130\n", "4 MOTOR_A1 motor ... 14 0\n", "\n", "[5 rows x 8 columns]"], "text/html": ["<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>id</th>\n", " <th>component_type</th>\n", " <th>material</th>\n", " <th>weight_kg</th>\n", " <th>cost</th>\n", " <th>supplier_code</th>\n", " <th>procurement_days</th>\n", " <th>production_time_min</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>PUMP_RV1</td>\n", " <td>assembly</td>\n", " <td>mixed</td>\n", " <td>45.0</td>\n", " <td>2500</td>\n", " <td>INTERNAL</td>\n", " <td>0</td>\n", " <td>120</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>PUMP_RV2</td>\n", " <td>assembly</td>\n", " <td>mixed</td>\n", " <td>42.0</td>\n", " <td>2300</td>\n", " <td>INTERNAL</td>\n", " <td>0</td>\n", " <td>110</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>PUMP_SC1</td>\n", " <td>assembly</td>\n", " <td>mixed</td>\n", " <td>55.0</td>\n", " <td>3000</td>\n", " <td>INTERNAL</td>\n", " <td>0</td>\n", " <td>150</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>PUMP_CL1</td>\n", " <td>assembly</td>\n", " <td>mixed</td>\n", " <td>48.0</td>\n", " <td>2800</td>\n", " <td>INTERNAL</td>\n", " <td>0</td>\n", " <td>130</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>MOTOR_A1</td>\n", " <td>motor</td>\n", " <td>steel/copper</td>\n", " <td>12.5</td>\n", " <td>800</td>\n", " <td>SUP_A</td>\n", " <td>14</td>\n", " <td>0</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["set(df['predecessor'])"], "outputs": [{"data": {"text/plain": ["{'CLAW_ASM1',\n", " 'PUMP_CL1',\n", " 'PUMP_RV1',\n", " 'PUMP_RV2',\n", " 'PUMP_SC1',\n", " 'SCREW_ASM1',\n", " 'VANE_ASM1',\n", " 'VANE_ASM2'}"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["all_nodes = set(df['predecessor']) | set(df['successor'])\n", "all_nodes"], "outputs": [{"data": {"text/plain": ["{'BEARING_01',\n", " 'BEARING_02',\n", " 'CASE_CL1',\n", " 'CASE_SC1',\n", " 'CASE_STD1',\n", " 'CLAW_001',\n", " 'CLAW_ASM1',\n", " 'MOTOR_A1',\n", " 'MOTOR_B1',\n", " 'OIL_SYSTEM1',\n", " 'PUMP_CL1',\n", " 'PUMP_RV1',\n", " 'PUMP_RV2',\n", " 'PUMP_SC1',\n", " 'SCREW_001',\n", " 'SCREW_ASM1',\n", " 'VANE_001',\n", " 'VANE_002',\n", " 'VANE_ASM1',\n", " 'VANE_ASM2'}"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["root_nodes = set(df['predecessor']) - set(df['successor'])\n", "root_nodes"], "outputs": [{"data": {"text/plain": ["{'PUMP_CL1', 'PUMP_RV1', 'PUMP_RV2', 'PUMP_SC1'}"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["G = nx.DiGraph()\n", "G.add_nodes_from(all_nodes)\n", " \n", "for _, row in df.iterrows(): G.add_edge(row['predecessor'], row['successor'], quantity=row['quantity'])"], "outputs": [], "execution_count": null}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Prompt**\n", "\n", "Okay we now have the whole graph. We now should write a function that moves up the graph to find all the product and intermediate product which contain the root. Lets build it step by step."]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Response**\n", "\n", "Yes, let's build a function to find all products containing a specific part. We'll work bottom-up through the graph.\n", "\n", "Let's start with a basic approach:\n", "1. First, let's try to get immediate predecessors of a part using `G.predecessors()`\n", "2. Then we'll need to recursively get their predecessors too\n", "3. Finally, we can filter for just the root products if needed\n", "\n", "Would you like to try getting the immediate predecessors of a part first? For example, let's try with 'MOTOR_A1' which we know is used in multiple pumps:\n", "\n", "```python\n", "list(G.predecessors('MOTOR_A1'))\n", "```\n", "\n", "Should we try this and then build up the recursive part step by step?"]}, {"cell_type": "code", "metadata": {}, "source": ["list(G.predecessors('MOTOR_A1'))"], "outputs": [{"data": {"text/plain": ["['PUMP_RV1', 'PUMP_RV2', 'PUMP_CL1']"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["def get_all_predecessors(G, root_id):\n", " parts = []\n", " queue = [root_id]\n", " while queue:\n", " node = queue.pop(0)\n", " preds = G.predecessors(node)\n", " for p in preds:\n", " if p not in parts:\n", " parts.append(p)\n", " queue.append(p)\n", " return parts\n", "\n", "preds = get_all_predecessors(G, 'MOTOR_A1')\n", "preds"], "outputs": [{"data": {"text/plain": ["['PUMP_RV1', 'PUMP_RV2', 'PUMP_CL1']"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["get_all_predecessors(G,'SCREW_001')"], "outputs": [{"data": {"text/plain": ["['SCREW_ASM1', 'PUMP_SC1']"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Prompt**\n", "\n", "Does this seem right? i used a similar structure to get_all_parts..."]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Response**\n", "\n", "Yes, your implementation looks good! The structure is similar to get_all_parts but works in the opposite direction (up instead of down the graph). \n", "\n", "Let's verify it works correctly by checking a few test cases:\n", "1. MOTOR_A1 shows up in 3 pumps (PUMP_RV1, PUMP_RV2, PUMP_CL1) \u2713\n", "2. SCREW_001 is only in PUMP_SC1 (through SCREW_ASM1) \u2713\n", "3. Let's try a BEARING which we know is used in multiple assemblies\n", "\n", "Would you like to test it with BEARING_01 or BEARING_02 to further validate the function? This would help us confirm it correctly finds all paths up through intermediate assemblies."]}, {"cell_type": "code", "metadata": {}, "source": ["get_all_predecessors(G,'BEARING_01')"], "outputs": [{"data": {"text/plain": ["['VANE_ASM1', 'VANE_ASM2', 'PUMP_RV1', 'PUMP_RV2']"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Prompt**\n", "\n", "Can you write a function that gets alls successors from a graph G, use the same structure."]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Response**\n", "\n", "Yes, we can write a similar function but using `G.successors()` instead of `G.predecessors()`. Here's the structure:\n", "\n", "```python\n", "def get_all_successors(G, root_id):\n", " parts = []\n", " queue = [root_id]\n", " while queue:\n", " node = queue.pop(0)\n", " succs = G.successors(node)\n", " for s in succs:\n", " if s not in parts:\n", " parts.append(s)\n", " queue.append(s)\n", " return parts\n", "```\n", "\n", "Would you like to test it with some examples? We could try:\n", "1. A pump to see all its components\n", "2. An intermediate assembly to see its parts\n", "3. A leaf node (should return empty list)\n", "\n", "Which test case would you like to try first?"]}, {"cell_type": "code", "metadata": {}, "source": ["def get_all_successors(G, root_id):\n", " parts = []\n", " queue = [root_id]\n", " while queue:\n", " node = queue.pop(0)\n", " succs = G.successors(node)\n", " for s in succs:\n", " if s not in parts:\n", " parts.append(s)\n", " queue.append(s)\n", " return parts\n", "\n", "get_all_successors(G, 'VANE_ASM1')"], "outputs": [{"data": {"text/plain": ["['VANE_001', 'BEARING_01']"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["get_all_successors(G, 'SCREW_001')"], "outputs": [{"data": {"text/plain": ["[]"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["get_all_successors(G, 'PUMP_RV2')"], "outputs": [{"data": {"text/plain": ["['MOTOR_A1', 'CASE_STD1', 'VANE_ASM2', 'VANE_002', 'BEARING_01']"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Prompt**\n", "\n", "How could we select a subgraph based on a list of nodes but with only the edges between those nodes?"]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Response**\n", "\n", "NetworkX provides a built-in method for this exact purpose: `G.subgraph()`. It creates a new graph containing only the specified nodes and the edges between them.\n", "\n", "We could use it like this:\n", "```python\n", "nodes_of_interest = get_all_successors(G, 'PUMP_RV2') # or any other list of nodes\n", "nodes_of_interest.append('PUMP_RV2') # don't forget to add the root if needed\n", "subgraph = G.subgraph(nodes_of_interest)\n", "```\n", "\n", "Would you like to try this and visualize the resulting subgraph? We could use our earlier visualization function to see the result."]}, {"cell_type": "code", "metadata": {}, "source": ["nodes_of_interest = get_all_successors(G, 'PUMP_RV2') # or any other list of nodes\n", "nodes_of_interest.append('PUMP_RV2') # don't forget to add the root if needed\n", "sub_g = G.subgraph(nodes_of_interest)"], "outputs": [], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["plt.figure(figsize=(3,3))\n", "pos = nx.kamada_kawai_layout(sub_g)\n", "\n", "nx.draw(sub_g, pos, with_labels=True, font_size=8)\n", "\n", "edge_labels = nx.get_edge_attributes(sub_g, 'quantity')\n", "nx.draw_networkx_edge_labels(sub_g, pos, edge_labels)\n", "plt.axis('off')\n", "plt.show()"], "outputs": [{"data": {"text/plain": ["<Figure size 300x300 with 1 Axes>"], "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAKACAYAAAAMzckjAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAewgAAHsIBbtB1PgAAoplJREFUeJzs3Xd8jef/x/HXyckeImaCilU7KLGpVlF7K7WpVmlL+8XX+lZ1odWpSwdqVpWYtVsUQY0iqFIj9goJ2ck55/dHfjmVSgiS3Bnv5+ORR3POue9zvY+28cnnvq/rMtlsNhsiIiIikmc4GB1ARERERLKWCkARERGRPEYFoIiIiEgeowJQREREJI9RASgiIiKSx6gAFBEREcljVACKiIiI5DEqAEVERETyGBWAIiIiInmMCkARERGRPEYFoIiIiEgeowJQREREJI9RASgiIiKSx6gAFBEREcljVACKiIiI5DEqAEVERETyGBWAIiIiInmMCkARERGRPEYFoIiIiEgeowJQREREJI9RASgiIiKSx6gAFBEREcljVACKiIiI5DEqAEVERETyGBWAIiIiInmMCkARERGRPEYFoIiIiEgeowJQREREJI9RASgiIiKSx6gAFBEREcljVACKiIiI5DEqAEVERETyGBWAIiIiInmMCkARERGRPEYFoIiIiEgeowJQREREJI9RASgiIiKSx6gAFBEREcljVACKiIiI5DEqAEVERETyGBWAIiIiInmMCkARERGRPEYFoIiIiEgeowJQREREJI9RASgiIiKSx6gAFBEREcljHI0OkJslWqz8fTWSkPMRHDofQcj5CC5FxBKXaCXeYsXZ7ICLowO+3q4EFPemanFvAop7U66wJ45m1eYiIiKSOUw2m81mdIjcxGazsSf0BnN3hrLhyGViEiz3/R5uTmaaVy5K33r+1PL3wWQyZUJSERERyatUAGaQqLhElu4/z7ydoRy9dCvD3reirxd96vnTsUZxPFzUsBUREZGHpwIwA6w5dJHXlx/iWmR8po1RyNOZtztUpVVVv0wbQ0RERPIGFYAPISwyjgkrDvNzyMUsG7NtNT/eal+VAh7OWTamiIiI5C4qAB/QusOXGLc0hLCozOv6paWghzOTOgXwdBXfLB9bREREcj4VgA9g1vZTvLnqiNExmNiuMv0blDY6hoiIiOQwKgDv0xeb/2bq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vbp967olS5bQuXPnLM0gIiIimUsFYBa7efOmvcj692SPhIQEOnTowJo1awAoUaIEO3bsoESJElmacdasWQwcOBCAggULEhISgp+f3z3OEhERkZxCBWA2ExkZyRNPPMHevXsBCAgIYOvWrZm6N/C/2Ww2unTpwtKlSwFo2bIlq1ev1i4hIiIiuYTuAcxmPD09+fnnnylTpgwAISEhdOrUibi4uCzLYDKZ+Oabb/D19QVg7dq1fPnll1k2voiIiGQudQCzqWPHjtGgQQPCwsIAePbZZ5k3bx4ODllXs69bt46WLVsC4Orqyr59+6hUqVKWjS8iIiKZQx3AbKp8+fKsWrXKPknkhx9+YMyYMVma4emnn+bll18GIDY2ll69ehEfH5+lGURERCTjqQDMxurVq8fChQvtXb+pU6fy2WefZWmG9957z971++OPP1IsVyMiIiI5ky4B5wDTp09nyJAhQNL9eT/99BNdunTJsvH37dtHvXr1SEhIwGQysWXLFho3bpxl44uIiEjGUgcwB3jxxRcZN24ckDRDt1evXmzbti3Lxq9Zs6Z9b2CbzUafPn2IiIjIsvFFREQkY6kDmEPYbDb69+/PnDlzgKS9hbdv355lkzIsFgtPPvkkW7duBaBv377Mnj07S8YWERGRjKUCMAeJj4+nbdu2bNiwAQB/f3927NiRZYs0nz59mmrVqtn3CF60aBHdunXLkrFFREQk46gAzGFu3brF448/zv79+wGoUaMGv/32G15eXlky/ty5c+nbty+Q1IUMCQmhePHiWTK2iIiIZAzdA5jDeHl5sXr1akqWLAnA/v376dq1KwkJCVkyfu/evXnmmWcAuHHjBv3798dqtWbJ2CIiIpIxVADmQH5+fqxduxYfHx8A1q9fz6BBg8iKZq7JZOKrr76yd/02btzItGnTMn1cERERyTgqAHOoSpUqsWLFClxcXACYM2cOr7/+epaMXaBAAb7//nv74zFjxnDo0KEsGVtEREQengrAHKxRo0bMnz8fk8kEwLvvvsvXX3+dJWM3a9aMV199FYC4uDh69eqVpfsVi4iIyINTAZjDdenShU8++cT+eOjQoaxYsSJLxp48eTJVqlQB4ODBg1nWgRQREZGHo1nAucSoUaP44IMPAHBzc+PXX3+lXr16mT7ugQMHqFOnDvHx8ZhMJn755ReefPLJTB9XRERE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"}, "metadata": {"image/png": {"width": 320, "height": 320}}, "output_type": "display_data"}], "execution_count": null}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Prompt**\n", "\n", "how could we add the levels (to use the multipartite layout) after we created the graph sub_g?"]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Response**\n", "\n", "To add levels to the existing subgraph, we have a few options:\n", "\n", "1. Using node attributes:\n", "```python\n", "# Calculate levels starting from root\n", "def add_levels(G, root_id):\n", " levels = {root_id: 0}\n", " queue = [(root_id, 0)]\n", " while queue:\n", " node, level = queue.pop(0)\n", " for succ in G.successors(node):\n", " if succ not in levels:\n", " levels[succ] = level + 1\n", " queue.append((succ, level + 1))\n", " \n", " # Add levels as node attributes\n", " nx.set_node_attributes(G, levels, 'level')\n", " return G\n", "```\n", "\n", "Would you like to try this approach? Then we could use the multipartite layout with the new level attributes. Or would you prefer to explore a different method?"]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Prompt**\n", "\n", "How could we automatically detect the root_id, because we might not know it?"]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Response**\n", "\n", "In a directed graph, we can find the root node(s) by looking for nodes that have no incoming edges (predecessors). Here are two ways to do it:\n", "\n", "1. Using in_degree (number of incoming edges):\n", "```python\n", "# Find nodes with in_degree = 0\n", "root_nodes = [node for node in G.nodes() if G.in_degree(node) == 0]\n", "```\n", "\n", "2. Using predecessors:\n", "```python\n", "# Find nodes with no predecessors\n", "root_nodes = [node for node in G.nodes() if not list(G.predecessors(node))]\n", "```\n", "\n", "For our subgraph, we should only get one root node, but in general, this could return multiple roots. Would you like to try either approach and handle the case where we might get multiple roots?"]}, {"cell_type": "code", "metadata": {}, "source": ["root_nodes = [node for node in sub_g.nodes() if sub_g.in_degree(node) == 0]\n", "root_nodes"], "outputs": [{"data": {"text/plain": ["['PUMP_RV2']"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["# Calculate levels starting from root\n", "def add_levels(G):\n", " roots = [node for node in G.nodes() if G.in_degree(node) == 0]\n", " if len(roots)==1:\n", " root_id = roots[0]\n", " levels = {root_id: 0}\n", " queue = [(root_id, 0)]\n", " while queue:\n", " node, level = queue.pop(0)\n", " for succ in G.successors(node):\n", " if succ not in levels:\n", " levels[succ] = level + 1\n", " queue.append((succ, level + 1))\n", " \n", " nx.set_node_attributes(G, levels, 'level')\n", " else:\n", " print('Has multiple roots or no roots at all!')\n", " return G\n", "\n", "sub_g = add_levels(sub_g)\n", "sub_g.nodes(data=True)"], "outputs": [{"data": {"text/plain": ["NodeDataView({'MOTOR_A1': {'level': 1}, 'VANE_ASM2': {'level': 1}, 'VANE_002': {'level': 2}, 'BEARING_01': {'level': 2}, 'CASE_STD1': {'level': 1}, 'PUMP_RV2': {'level': 0}})"]}, "metadata": {}, "output_type": "execute_result", "execution_count": null}], "execution_count": null}, {"cell_type": "code", "metadata": {}, "source": ["plt.figure(figsize=(3,3))\n", "pos = nx.multipartite_layout(sub_g, subset_key='level')\n", "\n", "nx.draw(sub_g, pos, with_labels=True, font_size=8)\n", "\n", "edge_labels = nx.get_edge_attributes(sub_g, 'quantity')\n", "nx.draw_networkx_edge_labels(sub_g, pos, edge_labels)\n", "plt.axis('off')\n", "plt.show()"], "outputs": [{"data": {"text/plain": ["<Figure size 300x300 with 1 Axes>"], "image/png": "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iouLk6+vr0aPHl1k2uzZsyVJYWFhSkxM1OzZsysUgHXq1NGF1PPStsVq0H9cld5D46i/VGm5ijj73/dkPpeogFZd1OTOl2T0DZAkZR/+SacXv6rz6z/S218O0GfP3V1kuXfffVdff/21wsLCtGnTJrVpU/AYuSNHjqhPnz766quvdMMNNxT59zYYDBo4cKCeeeYZ3XTTTTKZTPZpGzdu1ODBg7VyZfX2ZpaEn37wChMmTNArr7yiuXPn6r333pMkewQCgLcxGAwaP368pD/27pWmcHpUVJSaNm1qf/348eNau3atTCaTFi1aJIPBoNWrVyspKanc7T/22OOSwaj0HStkTj9bjXfieHkpvyv7122SwahGtz1ljz9JCmzXQ8GRf5JsVq2c/77Mlj9+hlitVr355puSpDfffNMef5LUpk0b+7Tp06cX+dnTrl07rV+/XrfcckuR+JOkfv366fnnn6+R90kAwuNNmTJFH374oSTp4MGDmjVrlt59911JRCAA7zVu3DiZTCbt2rVL+/btK3GenJwcff7555KKH/6dM2eOrFarbr31VvXq1UsDBw6UxWLR3Llzy91245btFRQ+QDZzrtI2L6z+m3Gg7F+2SpL8L+skn5CmxabX6dRPkpTxy49KOJlqf33r1q1KTk6Wv7+/hg8fXmy54cOHy8/PTydPntSPP/5Y4fFcc801lXwHFUMAwqOtWrVKCxYskCRddtllkqQDBw7oo48+IgIBeLXmzZvrtttuk/THodxLff3110pNTVWLFi10yy232F+32Wz2PYOFexIrukdRko6fzyq4uMPkq4x965R/9ni13osj5Z06LEnyC21f4nT/5ldIkmz5OVq7bY/99d27d0uSwsPDFRAQUGy5wMBAhYeHF5m3In799dcKz1sZBCA81pkzZxQTE6MjRwoe4j1p0iRNnjxZkhQfH68PP/yQCATg1Qr36i1cuFB5ecVvx1IYc4V7CwutW7dOx44dU9OmTRUVFSVJuuOOO1S/fn398ssv2rRpU5nbPXE+Sz4hTVW362DJZtX5jfMc9ZaqzZx6SpLkU69JidON/nVk8K8jSfopLsH+euHPmpYtW5a67ssvv7zIvOXJysrSv/71rwrNW1lcBAKPtXr1an300UeSpIceekgTJkyQJOXn52v69Onav3+//dDwE088wYUhALzO4MGDFRoaquTk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L3/5i3788UeHPzmoonKO75f53AnJ5Ks6V91Q6nwGo0lBnfrrwvavlbFvrT0AU3+YJ1tutoKvHiS/pgXh7O9TcA6h2WzW7NmztXjxYknSPffcU6ExVeXf4qOPPtKjjz5K/AEoVa0HoI+Pj5YuXapbbrlFK1as0OWXX65evXqpcePGSklJ0ZYtW5Senq6WLVvq66+/LvMJF6EhATqZVvxeXO7mmuETtemfT+rzzz/Xiy++aH96SqHbb79dDRs2tB8yioqKKjX+pIL7ex0/ftx+1XBph40efPBB9enTx0HvAu7ugQce0AcffKAzZ87Y/36xr776ShcuXFBoaGi5T6EYNGiQmjVrVuQJN6XN9/LLL+v666+XJL355pvq37+/srLKPy0iZeU7ZU6v3/c++YQU36NelsJbSNW54jqZAko//1gquBjkwvavlX34J1kyz8sU1EC2/Fyl71qp9F0rZarbSH5N28jasIFu+f4f2rt3r5KTkyVJL7zwgm66qWq3qSrPnj179Mgjj8hms6lt27ZavHixPTovVd452wA8V60HoCRdddVV2rt3r95//33FxMToxx9/VHp6uurVq6eIiAgNGTJEEydOVP369ctcT2RYiHb9nlorY65JAwcMVJ2fB2nNmjWaMmWK/dFbhfz9/XXffffZr8os7zygc+fOSSo4rFfWifj9+/cnAGHXo0cPRUZGKi4uTn5+fho1alSR6YX39hs1alSxZ8xeysfHR/fee6/++c9/ljg9MjJSH3zwgT38CvXr10+33XabVq9eXe54M+PXlzm9Xo9oqRIBaM3Nst/br6xbzBTya9pavk3bKv/0b8qIW6+QnncqpPc98g/rqJyje5WXfEh5p35T4tELOhfgr8svv1y33XabHnzwwWLv25FSU1Ptd1FISEgo9SkrEgEIeDODrbz7sbiwr3Ye1zOLS36GqTuZeWcX3dmt/POB4DibN28uciFSSkqKnnnmGUlS79699eCDDxaZf9y4cbU5PI8xZsyYIr+EXLrHryx8vgGg5jhlD6CjRIYVv4DEHXnK+3AnH3/8sebOnVvitJJulUMAVs2ECRO0Y8cOtWvXTpMmTarUni9P+Vx4yvsA4FncOgDbNwlWoK9J2fll34bBlQX6mtSuieOfkgK4gl69eunAgeL30asIPt8AUHPcOgB9TEbd1KmZYvaerPFtWbLSdP67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"}, "metadata": {"image/png": {"width": 320, "height": 320}}, "output_type": "display_data"}], "execution_count": null}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Prompt**\n", "\n", "Please recap everything we have done so far and what functions we created and what for."]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Response**\n", "\n", "Let me summarize what we've built so far:\n", "\n", "1. Basic Graph Functions:\n", "- `find_successors(df, predecessor)`: Gets immediate successors from DataFrame\n", "- `get_all_parts(df, root_id)`: Gets all parts (with levels) for a product\n", "- `get_df_for_product(df, root_id)`: Filters DataFrame to only include rows for specific product\n", "\n", "2. Graph Traversal Functions:\n", "- `get_all_predecessors(G, root_id)`: Finds all assemblies/products that contain a specific part\n", "- `get_all_successors(G, root_id)`: Finds all components that make up a specific assembly/product\n", "- `add_levels(G)`: Automatically detects root and adds level attributes for visualization\n", "\n", "3. Visualization:\n", "- `visualize_product_structure(df, figsize)`: Original visualization function\n", "- We also created versions using different layouts (kamada_kawai and multipartite)\n", "\n", "Key Capabilities We've Built:\n", "1. Finding what products contain a specific part\n", "2. Getting complete bill of materials for a product\n", "3. Visualizing product structures hierarchically\n", "4. Working with both individual products and the complete product database\n", "\n", "Would you like to explore any of these areas in more detail or see additional examples of how they work together?"]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Prompt**\n", "\n", "Lets assume we start with a df and df_attributes.\n", "1. Create a graph containing everything nodes, edges and the data for nodes and edges.\n", "2. we can select subgraph with get_all_predecessors and get_all_successors.\n", "3. if we want to visualize these subgraphs we can enrich them with add_levels and then plot them\n", "But we dont have plotting function yet whcih takes in a graph and then plots it. Lets create this function."]}, {"cell_type": "markdown", "metadata": {}, "source": ["**AI Response**\n", "\n", "Yes, let's create a comprehensive plotting function that takes a graph as input. We'll want to:\n", "\n", "1. Support both kamada_kawai and multipartite layouts\n", "2. Handle node and edge labels\n", "3. Allow customization of visual parameters\n", "\n", "Here's a suggested structure:\n", "```python\n", "def plot_graph(G, layout='multipartite', figsize=(6,6), font_size=8, node_size=1000, node_color='lightblue'):\n", " \"\"\"\n", " Plot a graph with specified layout and styling\n", " \n", " Parameters:\n", " - G: NetworkX graph\n", " - layout: 'multipartite' or 'kamada_kawai'\n", " - figsize, font_size, node_size, node_color: visual parameters\n", " \"\"\"\n", " plt.figure(figsize=figsize)\n", " \n", " # Create layout\n", " if layout == 'multipartite':\n", " if 'level' not in G.nodes[list(G.nodes())[0]]:\n", " G = add_levels(G)\n", " pos = nx.multipartite_layout(G, subset_key='level')\n", " else:\n", " pos = nx.kamada_kawai_layout(G)\n", " \n", " # Draw graph\n", " nx.draw(G, pos,\n", " with_labels=True,\n", " font_size=font_size,\n", " node_size=node_size,\n", " node_color=node_color)\n", " \n", " # Add edge labels\n", " edge_labels = nx.get_edge_attributes(G, 'quantity')\n", " nx.draw_networkx_edge_labels(G, pos, edge_labels)\n", " \n", " plt.axis('off')\n", " plt.show()\n", "```\n", "\n", "Would you like to try this function and then adjust any of the parameters or add additional features?"]}], "metadata": {"kernelspec": {"display_name": "python3", "language": "python", "name": "python3"}}, "nbformat": 4, "nbformat_minor": 4}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment