CAAD Futures 2025
  • Home
  • Programme
    • Technical Programme
    • Conference Schedule
    • Catalytic Interfaces Activities
  • Instructions
    • Paper: Conference Proceedings
    • Paper: Catalytic Interfaces
    • Presentation: All Streams
    • Setup: Catalytic Interfaces
  • Keynotes
  • Tickets
    • Public Keynote
    • General Ticketing
    • Side Events
  • About
    • Travel Info
    • Committee
    • Ambition
  1. NO MORE!!!!

On this page

  • NO MORE!!!!

NO MORE!!!!

import pandas as pd
ex=pd.read_excel('events/cf25dat.xlsx')
EX=ex[['ID','Title','Authors','Abstract']]
# ex['Title']=ex['Title'].str.upper()
# ex.to_excel('cf25dat.xlsx')
gx=pd.read_csv('20250623 - Detailed Schedule - v10(FINAL).csv',encoding='unicode_escape')#CHANGE THIS TO MATCH NEW INPUT!
/var/folders/rs/m2cwbt951nlfsrncdqwyny5h0000gn/T/ipykernel_23829/2035001923.py:1: DtypeWarning: Columns (0,1,2,3,4,5,6,7,9,10,11,12,13,14,15) have mixed types. Specify dtype option on import or set low_memory=False.
  gx=pd.read_csv('20250623 - Detailed Schedule - v10(FINAL).csv',encoding='unicode_escape')#CHANGE THIS TO MATCH NEW INPUT!
gx[gx['EasyChair']!=gx['Unnamed: 12']]
FILTER OPTIONS FILTER OPTIONS.1 Time session code Presentations name session title title authors EasyChair Unnamed: 9 Unnamed: 10 Unnamed: 11 Unnamed: 12 Unnamed: 13 Session Chairs TBD COMMENTS
0 NaN 7/1/2025 NaN NaN NaN NaN NaN NaN NaN Tuesday 1 July NaN NaN NaN NaN NaN NaN
1 NaN 7/1/2025 18:00 - 21:00 NaN Welcome Drinks NaN NaN NaN NaN 18:00 - 21:00 Welcome Drinks NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
3 NaN 7/2/2025 NaN NaN NaN NaN NaN NaN NaN Wednesday 2 July NaN NaN NaN NaN NaN NaN
4 NaN 7/2/2025 8:30 - 9:00 NaN Registration & Opening NaN NaN NaN NaN 8:30 - 9:00 Registration NaN NaN NaN NaN NaN
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
1048568 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
1048569 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
1048570 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
1048571 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
1048572 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

1048573 rows × 16 columns

g=gx.dropna(subset=['EasyChair'])
gx.loc[127]
FILTER OPTIONS                             Parallel Paper Presentations
FILTER OPTIONS.1                                               7/4/2025
Time                                                     12:10 - 12:20 
session code                                                       P-A3
Presentations name                             Parallel Presentations 3
session title                                 EVALUATING & EXPANDING AI
title                 AI2D-ARCHITECTURE: A BENCHMARK FOR EVALUATING ...
authors                                     Xuyou Yang and Immanuel Koh
EasyChair                                                          80.0
Unnamed: 9                                                          NaN
Unnamed: 10                                                         NaN
Unnamed: 11                                              12:10 - 12:20 
Unnamed: 12                                                      [ 80 ]
Unnamed: 13           AI2D-ARCHITECTURE: A BENCHMARK FOR EVALUATING ...
Session Chairs TBD                                                  NaN
COMMENTS                                                            NaN
Name: 127, dtype: object
gx.loc[gx['EasyChair']==80].dropna(subset=['EasyChair'])
FILTER OPTIONS FILTER OPTIONS.1 Time session code Presentations name session title title authors EasyChair Unnamed: 9 Unnamed: 10 Unnamed: 11 Unnamed: 12 Unnamed: 13 Session Chairs TBD COMMENTS
127 Parallel Paper Presentations 7/4/2025 12:10 - 12:20 P-A3 Parallel Presentations 3 EVALUATING & EXPANDING AI AI2D-ARCHITECTURE: A BENCHMARK FOR EVALUATING ... Xuyou Yang and Immanuel Koh 80.0 NaN NaN 12:10 - 12:20 [ 80 ] AI2D-ARCHITECTURE: A BENCHMARK FOR EVALUATING ... NaN NaN
# g[['Date','Time','session code']]
# df=g

# # --- 0) your original df has columns: Date, Time, session code

# # --- 1) drop any rows where Time, Date or code is missing
# df = df.dropna(subset=['Time','Date','session code'])

# # --- 2) pull out exactly two HH:MM groups (as strings)
# df[['start','end']] = df['Time'].str.extract(
#     r'(\d{1,2}:\d{2})\s*-\s*(\d{1,2}:\d{2})'
# )

# # --- 3) drop rows where extract failed (you’ll now have only pure strings)
# df = df.dropna(subset=['start','end'])

# # --- 4) if you want to enforce two-digit hours, parse & re-format;
# #     otherwise you can skip to step 5.
# df['start'] = (
#     pd.to_datetime(df['start'], format='%H:%M', errors='coerce')
#       .dt.strftime('%H:%M')
# )
# df['end'] = (
#     pd.to_datetime(df['end'],   format='%H:%M', errors='coerce')
#       .dt.strftime('%H:%M')
# )
# # drop any rows that still failed parsing
# df = df.dropna(subset=['start','end'])

# # --- 5) group by code (and date), taking earliest start & latest end
# span = (
#     df
#     .groupby(['session code','Date'], as_index=False)
#     .agg(
#         start=('start','min'),
#         end  =('end',  'max')
#     )
# )

# # --- 6) build your dict: code → "YYYY-MM-DD HH:MM - HH:MM"
# result = {
#     row['session code']:
#       f"{row['Date'].date()} {row['start']} - {row['end']}"
#     for _, row in span.iterrows()
# }

# print(result)
absin=pd.read_csv('CAADFutures_abstractin.csv')
g.shape
(87, 16)
g=g.drop([127])
g['Date']=g['FILTER OPTIONS.1']
g['EasyChair']=g['EasyChair'].astype(str).replace('[','').str.replace(']','').str.strip().str.replace('[','').str.replace('.0','')
g['EasyChair']=g['EasyChair'].astype(int)
datemape=dict(zip(g['EasyChair'],g['Date']))
timemape=dict(zip(g['EasyChair'],g['Time']))
topicmape=dict(zip(g['EasyChair'],g['session title']))
sessimape=dict(zip(g['EasyChair'],g['session code']))
titlemap=dict(zip(g['EasyChair'],g['Unnamed: 13']))
EX['Date']=EX['ID'].map(datemape)
EX['Time']=EX['ID'].map(timemape)
EX['Session']=EX['ID'].map(sessimape)
EX['Final Topic']=EX['ID'].map(topicmape)
EX['TitleAlt']=EX['ID'].map(titlemap)
/var/folders/rs/m2cwbt951nlfsrncdqwyny5h0000gn/T/ipykernel_23763/3794125394.py:1: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  EX['Date']=EX['ID'].map(datemape)
/var/folders/rs/m2cwbt951nlfsrncdqwyny5h0000gn/T/ipykernel_23763/3794125394.py:2: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  EX['Time']=EX['ID'].map(timemape)
/var/folders/rs/m2cwbt951nlfsrncdqwyny5h0000gn/T/ipykernel_23763/3794125394.py:3: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  EX['Session']=EX['ID'].map(sessimape)
/var/folders/rs/m2cwbt951nlfsrncdqwyny5h0000gn/T/ipykernel_23763/3794125394.py:4: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  EX['Final Topic']=EX['ID'].map(topicmape)
/var/folders/rs/m2cwbt951nlfsrncdqwyny5h0000gn/T/ipykernel_23763/3794125394.py:5: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  EX['TitleAlt']=EX['ID'].map(titlemap)
datemape[80]
KeyError: 80
EX.loc[EX['Final Topic'].isna(),'Final Topic']='CATALYTIC INTERFACE'
EX.sort_values(by=['Date','Time'])
ID Title Authors Abstract Date Time Session Final Topic TitleAlt
0 238 DESIGN VALIDATION FOR ROBOTIC FABRICATION: A M... Pok Yin Victor Leung and Yijiang Huang The use of robotics in construction offers tra... 7/2/2025 11:25 - 11:40 S-S1 INTELLIGENT ROBOTIC ASSEMBLY DESIGN VALIDATION FOR ROBOTIC FABRICATION: A M...
1 349 TPACS: PHYGITAL-AIDED CONSTRUCTION SYSTEM BASE... Yuhong Wu and Tiantian Lo As construction complexity increases in the ar... 7/2/2025 11:40 - 11:55 S-S1 INTELLIGENT ROBOTIC ASSEMBLY TPACS: PHYGITAL-AIDED CONSTRUCTION SYSTEM BASE...
2 36 PARAMETRIC BIOMIMICRY: TRANSLATING SPIRAL SEAS... Ali Farajmandi and Negar Kalantar The architectural marvel of spiral seashells, ... 7/2/2025 11:55 - 12:10 S-S1 INTELLIGENT ROBOTIC ASSEMBLY PARAMETRIC BIOMIMICRY: TRANSLATING SPIRAL SEAS...
3 169 REC-ARCH: A CASE STUDY RECOMMENDER SYSTEM FOR ... Danrui Li, Yichao Shi, Yaluo Wang, Ziying Shi ... Efficiently searching for relevant case studie... 7/2/2025 13:10 - 13:20 P-B1 AUGMENTING DESIGN GENERATION REC-ARCH: A CASE STUDY RECOMMENDER SYSTEM FOR ...
4 87 MACHINE LEARNING AND MIXED REALITY-CONTROLLED ... Qi Wang, Zhiyong Dong, Maowei Jiang and Peter Búš Worker safety and operational efficiency remai... 7/2/2025 13:10 - 13:20 P-C1 INTELLIGENT ROBOTICS & LAYOUT PLANNING MACHINE LEARNING AND MIXED REALITY-CONTROLLED ...
... ... ... ... ... ... ... ... ... ...
84 389 FROM AUGMENTATION TO AUTONOMY: HUMAN–XR–ROBOT ... Igor Pantic, Soomeen Hahm, Peter Búš and Zhiyo... The future of architectural practice is increa... 7/4/2025 15:50 - 16:10 CI CATALYTIC INTERFACE FROM AUGMENTATION TO AUTONOMY: HUMAN–XR–ROBOT ...
85 427 TOWARDS AIXR: DESIGNING A FRAMEWORK FOR AI-INF... Matias del Campo, Joseph Kenny, Eleni Vasiliki... This paper presents AIXR, a framework for arti... 7/4/2025 16:10 - 16:30 CI CATALYTIC INTERFACE TOWARDS AIXR: DESIGNING A FRAMEWORK FOR AI-INF...
86 445 BUILDINGS AS SYMBIOTIC SYSTEMS: CYBERNETIC ADA... Davide Schaumann, Andrew Vande Moere, Yuval Ka... Contemporary architectural design increasingly... 7/4/2025 16:30 - 16:50 CI CATALYTIC INTERFACE BUILDINGS AS SYMBIOTIC SYSTEMS: CYBERNETIC ADA...
81 458 CATALYTIC DESIGN INTERFACES: AI-GUIDED BUILDIN... Tejas Chavan, Houssame E. Hsain, Camiel Weijen... This paper presents HIKARI, a working prototyp... 7/4/2025 16:50 - 17:10 CI CATALYTIC INTERFACE CATALYTIC DESIGN INTERFACES: AI-GUIDED BUILDIN...
69 80 AI2D-ARCHITECTURE: A BENCHMARK FOR EVALUATING ... Xuyou Yang and Immanuel Koh Multimodal large language models (MLLMs), e.g.... NaN NaN NaN CATALYTIC INTERFACE NaN

87 rows × 9 columns

EX.sort_values(by=['Date','Time']).to_excel('events/cf25dat.xlsx')

NO MORE!!!!

trt=absin[absin['#']==27]
putabs=dict(zip(absin['#'],absin['Abstract']))
g['Date']=g['FILTER OPTIONS.1']
topicmape=dict(zip(g['EasyChair'],g['session title']))
sessimape=dict(zip(g['EasyChair'],g['session code']))
timemape=dict(zip(g['EasyChair'],g['Time']))
idex=ex['ID'].unique()
g['EasyChair']=g['EasyChair'].astype(int)
datemape=dict(zip(g['EasyChair'],g['Date']))
timemape=dict(zip(g['EasyChair'],g['Time']))
topicmape=dict(zip(g['EasyChair'],g['session title']))
sessimape=dict(zip(g['EasyChair'],g['session code']))
# g['EasyChair']
ex.loc[ex['ID']==135]
[c for c in g['EasyChair'].unique() if c not in idex]
[c for c in idex if c not in g['EasyChair'].unique()]
ex=ex.loc[~ex['ID'].isin([214, 376, 283, 27])]
en=ex[['ID','Title','Authors','Final Topic','Session','Abstract']]
en.reset_index(inplace=True)
# trt
g['EasyChair']
# #One-off 27 to be added. 

en.loc[88,'ID']=27
en.loc[88,'Title']=trt['Title'].values[0]
en.loc[88,'Authors']=trt['Authors'].values[0]
en.loc[88,'Abstract']=trt['Abstract'].values[0]
ex['Session']=ex['ID'].map(sessimape)
g[g['EasyChair']==135]
ex.loc[ex['ID']==135]
# sessimape['27']
en.loc[88,'Session']=sessimape[27]
en.loc[88,'Final Topic']=topicmape[27]
en.tail(3)
# absin.loc[absin['#']==457]
# en.head(2)
# topicmape[238]
# ct=81
# for i in [457, 82, 330, 389, 427, 445, 458]:
#     try:
#         id,aut,title,subs,typesub,timesub,abs=absin.loc[absin['#']==i].values[0]
#         en.loc[ct]=ct+4,id,title,aut,topicmape[i],sessimape[i],abs
#     except:
#         print(i)
#         tnt=g[g['EasyChair']==i]
#         en.loc[87]=87+4,tnt['EasyChair'].values[0],tnt['title'].values[0],tnt['authors'].values[0],tnt['session title'].values[0],tnt['session code'].values[0],None
#     ct +=1
en['Session']=en['ID'].map(sessimape)
# en.loc[en['Final Topic'].isna(),'Final Topic']='Catalytic Interface'
# # en.loc[en.tail(6).index,'Final Topic']='Catalyi
p2drop=[c for c in idex if c not in g['EasyChair'].unique()]
en.shape
en['Date']=en['ID'].map(datemape)
en['Time']=en['ID'].map(timemape)
en.loc[~en['ID'].isin(p2drop)].to_excel('events/cf25dat.xlsx')
en
# en.loc[87,'Abstract']=putabs[458]
# putabs[458]
# tnt=g[g['EasyChair']==458]
# en.loc[87]=87+4,tnt['EasyChair'],tnt['title'],tnt['a
tn=absin.loc[absin['#']==i].values
tn[0][0]
g[g['EasyChair']==i].values
tnt['EasyChair'].values[0]
ex['Date']=ex['ID'].map(datemape)
ex['Time']=ex['ID'].map(timemape)
ex['Session']=ex['ID'].map(sessimape)
ex.to_excel('events/cf25dat.xlsx')
© 2025, Hong Kong University, All rights reserved.

faculty of arch

caadfutures