Xiaofeng Liu

184 papers A* 13A 1B 11C 1Misc 2Journal 110Unranked 45
YearRankTypeTitle / Venue / Authors
2026 J jnl
Medical Image Anal.
Paula Andrea Pérez-Toro, Tomás Arias-Vergara, Fangxu Xing, Xiaofeng Liu, Maureen Stone, Jiachen Zhuo, Juan Rafael Orozco-Arroyave, Elmar Nöth, Jana Hutter, Jerry L. Prince, Andreas K. Maier, Jonghye Woo
2026 J jnl
CoRR
Yongsong Huang, Tzu-Hsuan Peng, Tomo Miyazaki, Xiaofeng Liu, Chun-Ting Chou, Ai-Chun Pang, Shinichiro Omachi
2026 J jnl
CoRR
Yubin Ge, Yongsong Huang, Xiaofeng Liu
2026 J jnl
Biomed. Signal Process. Control.
Shihua Qin, Fangxu Xing, Jihoon Cho, Jinah Park, Xiaofeng Liu, Amir Rouhollahi, Elias J. Bou Farhat, Hoda Javadikasgari, Ashraf Sabe, Farhad R. Nezami, Jonghye Woo, Iman Aganj
2026 J jnl
CoRR
Weiwei Ma, Xiaobing Yu, Peijie Qiu, Jin Yang, Pan Xiao, Xiaoqi Zhao, Xiaofeng Liu, Tomo Miyazaki, Shinichiro Omachi, Yongsong Huang
2026 J jnl
IEEE Trans. Circuits Syst. Video Technol.
Liyan Wang, Cong Wang, Jinshan Pan, Xiaofeng Liu, Weixiang Zhou, Xiaoran Sun, Wei Wang, Zhixun Su
2026 J jnl
CoRR
Xiaofeng Liu, Menghua Xia, Yanis Chemli, Georges El Fakhri, Chi Liu, Jinsong Ouyang
2025 J jnl
CoRR
Paula Andrea Pérez-Toro, Tomás Arias-Vergara, Fangxu Xing, Xiaofeng Liu, Maureen Stone, Jiachen Zhuo, Juan Rafael Orozco-Arroyave, Elmar Nöth, Jana Hutter, Jerry L. Prince, Andreas K. Maier, Jonghye Woo
2025 conf
Bildverarbeitung für die Medizin
Tomás Arias-Vergara, Paula Andrea Pérez-Toro, Xiaofeng Liu, Fangxu Xing, Maureen Stone, Jiachen Zhuo, Jerry L. Prince, Maria Schuster, Elmar Nöth, Jonghye Woo, Andreas K. Maier
2025 J jnl
IEEE Trans. Medical Imaging
Yanis Djebra, Xiaofeng Liu, Thibault Marin, Amal Tiss, Maëva Dhaynaut, Nicolas J. Guehl, Keith A. Johnson, Georges El Fakhri, Chao Ma, Jinsong Ouyang
2025 J jnl
npj Digit. Medicine
Zhen Li, Yiqian Shi, Li Wang, Jiayu Lu, Xueli Liu, Jonghye Woo, Jingsong Ouyang, Jiyi Hu, Di Zhou, Wentao Gong, Xiaojing Yang, Haoyan Yu, Yongkang Wang, Feidi Liu, Yafei Dong, Meng Ye, Shang Shi, Xiao Chen, Mingyan Qiu, Georges El Fakhri, Lin Kong, Xicai Sun, Yefeng Zheng, Yuxuan Shi, Hongmeng Yu, Xiaofeng Liu
2025 J jnl
Comput. Biol. Medicine
Sourav Saini, Xiaofeng Liu
2025 conf
ISBI
Xiaofeng Liu, Yongsong Huang, Thibault Marin, Yanis Chemli, Samira Vafay Eslahi, Amal Tiss, Keith A. Johnson, Georges El Fakhri, Jinsong Ouyang
2025 J jnl
CoRR
Xiaofeng Liu, Yongsong Huang, Thibault Marin, Samira Vafay Eslahi, Tiss Amal, Yanis Chemli, Keith A. Johnson, Georges El Fakhri, Jinsong Ouyang
2025 conf
CVPR Workshops
Xiaobing Yu, Jin Yang, Xiao Wu, Peijie Qiu, Xiaofeng Liu
2025 J jnl
CoRR
Xiaobing Yu, Jin Yang, Xiao Wu, Peijie Qiu, Xiaofeng Liu
2025 J jnl
IEEE Trans. Veh. Technol.
Renhe Guan, Xiaofeng Liu, Wei Wang, Yan Wang
2025 J jnl
CoRR
Yongsong Huang, Tomo Miyazaki, Xiaofeng Liu, Shinichiro Omachi
2025 J jnl
IEEE Trans. Geosci. Remote. Sens.
Yongsong Huang, Tomo Miyazaki, Xiaofeng Liu, Shinichiro Omachi
2025 J jnl
IEEE J. Sel. Top. Appl. Earth Obs. Remote. Sens.
Yongsong Huang, Tomo Miyazaki, Xiaofeng Liu, Shinichiro Omachi
2025 J jnl
IEEE Trans. Image Process.
Chaehwa Yoo, Xiaofeng Liu, Fangxu Xing, Jonghye Woo, Je-Won Kang
2025 conf
CVPR Workshops
Jia Wei, Xiaoqi Zhao, Jonghye Woo, Jinsong Ouyang, Georges El Fakhri, Qingyu Chen, Xiaofeng Liu
2025 J jnl
CoRR
Jia Wei, Xiaoqi Zhao, Jonghye Woo, Jinsong Ouyang, Georges El Fakhri, Qingyu Chen, Xiaofeng Liu
2025 J jnl
IEEE Trans. Pattern Anal. Mach. Intell.
Xiaofeng Liu, Site Li, Yubin Ge, Pengyi Ye, Jane You, Jun Lu
2025 conf
ISBI
Gihyeon Kim, Fangxu Xing, Hyoun-Joong Kong, Emiliano Santarnecchi, Helen A. Shih, Thomas Bortfeld, Georges El Fakhri, Xiaofeng Liu, Jang Hwan Choi, Jonghye Woo
2025 J jnl
CoRR
Xiaoqi Zhao, Peiqian Cao, Lihe Zhang, Zonglei Feng, Hanqi Liu, Jiaming Zuo, Youwei Pang, Weisi Lin, Georges El Fakhri, Huchuan Lu, Xiaofeng Liu
2025 J jnl
CoRR
Youwei Pang, Xiaoqi Zhao, Lihe Zhang, Huchuan Lu, Georges El Fakhri, Xiaofeng Liu, Shijian Lu
2025 A* conf
ACM Multimedia
Xiaofeng Liu, Guanchen Meng, Chongyang Feng, Risheng Liu, Zhongxuan Luo, Xin Fan
2025 J jnl
Pattern Recognit.
Yongsong Huang, Tomo Miyazaki, Xiaofeng Liu, Yafei Dong, Shinichiro Omachi
2025 A* conf
IJCAI
Xuesong Nie, Haoyuan Jin, Vijayakumar Bhagavatula, Xiaofeng Liu
2025 J jnl
CoRR
Xiaoqi Zhao, Youwei Pang, Chenyang Yu, Lihe Zhang, Huchuan Lu, Shijian Lu, Georges El Fakhri, Xiaofeng Liu
2025 J jnl
Pattern Recognit.
Xueli Liu, Wentao Gong, Xiao Chen, Zhen Li, Yinlong Liu, Li Wang, Quan Liu, Xicai Sun, Xiaofeng Liu, Xinrong Chen, Yuxuan Shi, Hongmeng Yu
2024 A conf
INTERSPEECH
Tomás Arias-Vergara, Paula Andrea Pérez-Toro, Xiaofeng Liu, Fangxu Xing, Maureen Stone, Jiachen Zhuo, Jerry L. Prince, Maria Schuster, Elmar Nöth, Jonghye Woo, Andreas K. Maier
2024 conf
ISBI
Yanis Djebra, Xiaofeng Liu, Thibault Marin, Amal Tiss, Maëva Dhaynaut, Nicolas J. Guehl, Keith A. Johnson, Georges El Fakhri, Chao Ma, Jinsong Ouyang
2024 J jnl
CoRR
Jihoon Cho, Xiaofeng Liu, Fangxu Xing, Jinsong Ouyang, Georges El Fakhri, Jinah Park, Jonghye Woo
2024 conf
ISBI
Xiaofeng Liu, Fangxu Xing, Hanna K. Gaggin, C.-C. Jay Kuo, Georges El Fakhri, Jonghye Woo
2024 J jnl
CoRR
Xu Han, Fangfang Fan, Jingzhao Rong, Xiaofeng Liu
2024 J jnl
CoRR
Yongsong Huang, Tomo Miyazaki, Xiaofeng Liu, Shinichiro Omachi
2024 J jnl
CoRR
Xiaoqi Zhao, Youwei Pang, Shijie Chang, Yuan Zhao, Lihe Zhang, Huchuan Lu, Jinsong Ouyang, Georges El Fakhri, Xiaofeng Liu
2024 J jnl
CoRR
Jihoon Cho, Suhyun Ahn, Beomju Kim, Hyungjoon Bae, Xiaofeng Liu, Fangxu Xing, Kyungeun Lee, Georges El Fakhri, Van J. Wedeen, Jonghye Woo, Jinah Park
2024 J jnl
Comput. Methods Programs Biomed.
Yongsong Huang, Tomo Miyazaki, Xiaofeng Liu, Kaiyuan Jiang, Zhengmi Tang, Shinichiro Omachi
2024 conf
EMNLP (Findings)
Xu Han, Linghao Jin, Xuezhe Ma, Xiaofeng Liu
2024 J jnl
CoRR
Xu Han, Linghao Jin, Xuezhe Ma, Xiaofeng Liu
2024 C conf
PACLIC
Shiyuan Zhang, Yubin Ge, Xiaofeng Liu
2024 J jnl
CoRR
Xiaofeng Liu, Jonghye Woo, Chao Ma, Jinsong Ouyang, Georges El Fakhri
2024 J jnl
CoRR
Xiaofeng Liu, Fangxu Xing, Jiachen Zhuo, Maureen Stone, Jerry L. Prince, Georges El Fakhri, Jonghye Woo
2024 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Xiaofeng Liu, Fangxu Xing, Jane You, Jun Lu, C.-C. Jay Kuo, Georges El Fakhri, Jonghye Woo
2024 conf
MICCAI (7)
Xiaofeng Liu, Fangxu Xing, Zhangxing Bian, Tomás Arias-Vergara, Paula Andrea Pérez-Toro, Andreas K. Maier, Maureen Stone, Jiachen Zhuo, Jerry L. Prince, Jonghye Woo
2024 J jnl
CoRR
Xiaofeng Liu, Nadya Shusharina, Helen A. Shih, C.-C. Jay Kuo, Georges El Fakhri, Jonghye Woo
2023 J jnl
CoRR
Xiaofeng Liu, Jerry L. Prince, Fangxu Xing, Jiachen Zhuo, Timothy G. Reese, Maureen Stone, Georges El Fakhri, Jonghye Woo
2023 J jnl
Medical Image Anal.
Xiaofeng Liu, Jerry L. Prince, Fangxu Xing, Jiachen Zhuo, Timothy G. Reese, Maureen Stone, Georges El Fakhri, Jonghye Woo
2023 J jnl
CoRR
Jing Wang, Xiaofeng Liu, Fangyun Wang, Lin Zheng, Fengqiao Gao, Hanwen Zhang, Xin Zhang, Wanqing Xie, Binbin Wang
2023 J jnl
CoRR
Jintang Xue, Yun-Cheng Wang, Chengwei Wei, Xiaofeng Liu, Jonghye Woo, C.-C. Jay Kuo
2023 conf
MICCAI (2)
Xiaofeng Liu, Helen A. Shih, Fangxu Xing, Emiliano Santarnecchi, Georges El Fakhri, Jonghye Woo
2023 J jnl
CoRR
Xiaofeng Liu, Helen A. Shih, Fangxu Xing, Emiliano Santarnecchi, Georges El Fakhri, Jonghye Woo
2023 J jnl
Neurocomputing
Wanqing Xie, Yubin Ge, Site Li, Mingzhen Li, Zhenhua Guo, Xiaofeng Liu
2023 J jnl
CoRR
Yongsong Huang, Tomo Miyazaki, Xiaofeng Liu, Kaiyuan Jiang, Zhengmi Tang, Shinichiro Omachi
2023 ed.
MTSAIL/LEAF/AI4Treat/MMMI/REMIA@MICCAI
Jonghye Woo, Alessa Hering, Wilson Silva, Xiang Li, Huazhu Fu, Xiaofeng Liu, Fangxu Xing, Sanjay Purushotham, Tejas Sudharshan Mathai, Pritam Mukherjee, Max De Grauw, Regina Beets-Tan, Valentina Corbetta, Elmar Kotter, Mauricio Reyes, Christian F. Baumgartner, Quanzheng Li, Richard M. Leahy, Bin Dong, Hao Chen, Yuankai Huo, Jinglei Lv, Xinxing Xu, Xiaomeng Li, Dwarikanath Mahapatra, Li Cheng, Caroline Petitjean, Benoît Presles
2023 J jnl
Medical Image Anal.
Xiaofeng Liu, Fangxu Xing, Georges El Fakhri, Jonghye Woo
2023 conf
ICIG (2)
Xiaofeng Liu, Jiaxin Gao, Yaohua Liu, Nenggan Zheng, Risheng Liu
2023 J jnl
CoRR
Xiaofeng Liu, Jiaxin Gao, Yaohua Liu, Risheng Liu, Nenggan Zheng
2023 J jnl
CoRR
Xiaofeng Liu, Jiaxin Gao, Ziyu Yue, Xin Fan, Risheng Liu
2023 conf
CVPR Workshops
Xiaoyang Kang, Xianhui Lin, Kai Zhang, Zheng Hui, Wangmeng Xiang, Jun-Yan He, Xiaoming Li, Peiran Ren, Xuansong Xie, Radu Timofte, Yixin Yang, Jinshan Pan, Zhong Zheng, Peng Qiyan, Jiangxin Zhang, Jinhui Dong, Jinjing Tan, Chi-Chen Lin, Lin Qipei Li, Qirong Liang, Ruipeng Gang, Xiaofeng Liu, Shuang Feng, Shuai Liu, Hao Wang, Chaoyu Feng, Furui Bai, Yuqian Zhang, Guangqi Shao, Xiaotao Wang, Lei Lei, Siqi Chen, Yu Zhang, Hanning Xu, Zheyuan Liu, Zhao Zhang, Yan Luo, Zhichao Zuo
2023 J jnl
IEEE Trans. Biomed. Eng.
Chae Hwa Yoo, Xiaofeng Liu, Fangxu Xing, Georges El Fakhri, Jonghye Woo, Je-Won Kang
2023 conf
MTSAIL/LEAF/AI4Treat/MMMI/REMIA@MICCAI
Kyungsu Lee, Haeyun Lee, Georges El Fakhri, Jorge Sepulcre, Xiaofeng Liu, Fangxu Xing, Jae Youn Hwang, Jonghye Woo
2023 J jnl
CoRR
Xiaofeng Liu, Thibault Marin, Tiss Amal, Jonghye Woo, Georges El Fakhri, Jinsong Ouyang
2023 J jnl
CoRR
Xiaofeng Liu, Thibault Marin, Tiss Amal, Jonghye Woo, Georges El Fakhri, Jinsong Ouyang
2023 J jnl
Artif. Intell. Medicine
Yongsong Huang, Wanqing Xie, Mingzhen Li, Ethan Xiao, Jane You, Xiaofeng Liu
2023 J jnl
CoRR
Xiaofeng Liu, Fangxu Xing, Maureen Stone, Jiachen Zhuo, Sidney S. Fels, Jerry L. Prince, Georges El Fakhri, Jonghye Woo
2023 conf
MICCAI (7)
Xiaofeng Liu, Fangxu Xing, Maureen Stone, Jiachen Zhuo, Sidney S. Fels, Jerry L. Prince, Georges El Fakhri, Jonghye Woo
2023 conf
ISBI
Xiaofeng Liu, Fangxu Xing, Hanna K. Gaggin, C.-C. Jay Kuo, Georges El Fakhri, Jonghye Woo
2023 J jnl
CoRR
Xiaofeng Liu, Fangxu Xing, Hanna K. Gaggin, C.-C. Jay Kuo, Georges El Fakhri, Jonghye Woo
2023 B conf
Image Processing
Xiaofeng Liu, Fangxu Xing, Jerry L. Prince, Maureen Stone, Georges El Fakhri, Jonghye Woo
2023 J jnl
CoRR
Xiaofeng Liu, Fangxu Xing, Jerry L. Prince, Maureen Stone, Georges El Fakhri, Jonghye Woo
2023 J jnl
CoRR
Yongsong Huang, Tomo Miyazaki, Xiaofeng Liu, Yafei Dong, Shinichiro Omachi
2023 conf
IPMI
Yongsong Huang, Wanqing Xie, Mingzhen Li, Mingmei Cheng, Jinzhou Wu, Weixiao Wang, Jane You, Xiaofeng Liu
2023 J jnl
CoRR
Yongsong Huang, Wanqing Xie, Mingzhen Li, Mingmei Cheng, Jinzhou Wu, Weixiao Wang, Jane You, Xiaofeng Liu
2022 conf
MICCAI (5)
Xiaofeng Liu, Fangxu Xing, Nadya Shusharina, Ruth Lim, C.-C. Jay Kuo, Georges El Fakhri, Jonghye Woo
2022 J jnl
CoRR
Xiaofeng Liu, Fangxu Xing, Nadya Shusharina, Ruth Lim, C.-C. Jay Kuo, Georges El Fakhri, Jonghye Woo
2022 J jnl
IEEE J. Biomed. Health Informatics
Fangxu Xing, Xiaofeng Liu, C.-C. Jay Kuo, Georges El Fakhri, Jonghye Woo
2022 Misc conf
ICASSP
Xiaofeng Liu, Fangxu Xing, Maureen Stone, Jerry L. Prince, Jangwon Kim, Georges El Fakhri, Jonghye Woo
2022 J jnl
CoRR
Lingsheng Kong, Bo Hu, Xiongchang Liu, Jun Lu, Jane You, Xiaofeng Liu
2022 J jnl
Int. J. Intell. Syst.
Lingsheng Kong, Bo Hu, Xiongchang Liu, Jun Lu, Jane You, Xiaofeng Liu
2022 J jnl
CoRR
Xiaofeng Liu, Chae Hwa Yoo, Fangxu Xing, Hyejin Oh, Georges El Fakhri, Je-Won Kang, Jonghye Woo
2022 J jnl
CoRR
Yongsong Huang, Tomo Miyazaki, Xiaofeng Liu, Shinichiro Omachi
2022 J jnl
IEEE J. Biomed. Health Informatics
Wanqing Xie, Lizhong Liang, Yao Lu, Chen Wang, Jihong Shen, Hui Luo, Xiaofeng Liu
2022 B conf
Image Processing
Fangxu Xing, Xiaofeng Liu, Timothy G. Reese, Maureen Stone, Van J. Wedeen, Jerry L. Prince, Georges El Fakhri, Jonghye Woo
2022 J jnl
CoRR
Xiaofeng Liu, Fangxu Xing, Georges El Fakhri, Jonghye Woo
2022 J jnl
Comput. Medical Imaging Graph.
Wanqing Xie, Chen Wang, Zhixiong Lin, Xudong Luo, Wenqian Chen, Manzhu Xu, Lizhong Liang, Xiaofeng Liu, Yanzhong Wang, Hui Luo, Mingmei Cheng
2022 J jnl
IEEE Trans. Pattern Anal. Mach. Intell.
Xiaofeng Liu, Chao Yang, Jane You, C.-C. Jay Kuo, B. V. K. Vijaya Kumar
2022 conf
ISBI
Xiaofeng Liu, Fangxu Xing, Georges El Fakhri, Jonghye Woo
2022 J jnl
CoRR
Xiaofeng Liu, Fangxu Xing, Georges El Fakhri, Jonghye Woo
2022 J jnl
CoRR
Xiaofeng Liu, Fangxu Xing, Jerry L. Prince, Maureen Stone, Georges El Fakhri, Jonghye Woo
2022 B conf
Image Processing
Xiaofeng Liu, Fangxu Xing, Jerry L. Prince, Maureen Stone, Georges El Fakhri, Jonghye Woo
2022 J jnl
CoRR
Xiaofeng Liu, Fangxu Xing, Jia You, Jun Lu, C.-C. Jay Kuo, Georges El Fakhri, Jonghye Woo
2022 conf
MICCAI (6)
Xiaofeng Liu, Fangxu Xing, Jerry L. Prince, Jiachen Zhuo, Maureen Stone, Georges El Fakhri, Jonghye Woo
2022 J jnl
CoRR
Xiaofeng Liu, Fangxu Xing, Jerry L. Prince, Jiachen Zhuo, Maureen Stone, Georges El Fakhri, Jonghye Woo
2022 J jnl
CoRR
Xiaofeng Liu, Chaehwa Yoo, Fangxu Xing, C.-C. Jay Kuo, Georges El Fakhri, Jonghye Woo
2022 B conf
Image Processing
Xiaofeng Liu, Chaehwa Yoo, Fangxu Xing, C.-C. Jay Kuo, Georges El Fakhri, Je-Won Kang, Jonghye Woo
2022 J jnl
CoRR
Xiaofeng Liu, Fangxu Xing, Thibault Marin, Georges El Fakhri, Jonghye Woo
2022 B conf
Image Processing
Xiaofeng Liu, Fangxu Xing, Thibault Marin, Georges El Fakhri, Jonghye Woo
2022 J jnl
IEEE J. Biomed. Health Informatics
Xiaofeng Liu, Fangxu Xing, Chao Yang, Chung-Chieh Jay Kuo, Suma Babu, Georges El Fakhri, Thomas Jenkins, Jonghye Woo
2022 J jnl
IEEE Trans. Intell. Transp. Syst.
Xiaofeng Liu, Yunhong Lu, Xiongchang Liu, Song Bai, Site Li, Jane You
2021 conf
ISBI
Xiaofeng Liu, Fangxu Xing, Georges El Fakhri, Jonghye Woo
2021 J jnl
CoRR
Xiaofeng Liu, Fangxu Xing, Georges El Fakhri, Jonghye Woo
2021 conf
MICCAI (2)
Xiaofeng Liu, Fangxu Xing, Chao Yang, Georges El Fakhri, Jonghye Woo
2021 J jnl
CoRR
Xiaofeng Liu, Fangxu Xing, Chao Yang, Georges El Fakhri, Jonghye Woo
2021 A* conf
ICCV
Xiaofeng Liu, Zhenhua Guo, Site Li, Fangxu Xing, Jane You, C.-C. Jay Kuo, Georges El Fakhri, Jonghye Woo
2021 J jnl
CoRR
Xiaofeng Liu, Zhenhua Guo, Site Li, Fangxu Xing, Jane You, C.-C. Jay Kuo, Georges El Fakhri, Jonghye Woo
2021 J jnl
Medical Image Anal.
Jing Wang, Xiaofeng Liu, Fangyun Wang, Lin Zheng, Fengqiao Gao, Hanwen Zhang, Xin Zhang, Wanqing Xie, Binbin Wang
2021 conf
ACL/IJCNLP (1)
Yubin Ge, Ly Dinh, Xiaofeng Liu, Jinsong Su, Ziyao Lu, Ante Wang, Jana Diesner
2021 conf
EMBC
Wanqing Xie, Lizhong Liang, Yao Lu, Hui Luo, Xiaofeng Liu
2021 J jnl
CoRR
Wanqing Xie, Lizhong Liang, Yao Lu, Hui Luo, Xiaofeng Liu
2021 A* conf
AAAI
Tong Che, Xiaofeng Liu, Site Li, Yubin Ge, Ruixiang Zhang, Caiming Xiong, Yoshua Bengio
2021 A* conf
IJCAI
Xiaofeng Liu, Bo Hu, Linghao Jin, Xu Han, Fangxu Xing, Jinsong Ouyang, Jun Lu, Georges El Fakhri, Jonghye Woo
2021 J jnl
CoRR
Xiaofeng Liu, Bo Hu, Linghao Jin, Xu Han, Fangxu Xing, Jinsong Ouyang, Jun Lu, Georges El Fakhri, Jonghye Woo
2021 conf
ISBI
Xiaofeng Liu, Fangxu Xing, Jerry L. Prince, Aaron Carass, Maureen Stone, Georges El Fakhri, Jonghye Woo
2021 J jnl
CoRR
Xiaofeng Liu, Fangxu Xing, Jerry L. Prince, Aaron Carass, Maureen Stone, Georges El Fakhri, Jonghye Woo
2021 Misc conf
ICASSP
Yubin Ge, Site Li, Xuyang Li, Fangfang Fan, Wanqing Xie, Jane You, Xiaofeng Liu
2021 J jnl
CoRR
Yubin Ge, Site Li, Xuyang Li, Fangfang Fan, Wanqing Xie, Jane You, Xiaofeng Liu
2021 J jnl
CoRR
Xiaofeng Liu, Bo Hu, Xiongchang Liu, Jun Lu, Jane You, Lingsheng Kong
2021 B conf
Image Processing
Fangxu Xing, Maureen Stone, Jerry L. Prince, Xiaofeng Liu, Georges El Fakhri, Jonghye Woo
2021 conf
MICCAI (3)
Xiaofeng Liu, Fangxu Xing, Maureen Stone, Jiachen Zhuo, Timothy G. Reese, Jerry L. Prince, Georges El Fakhri, Jonghye Woo
2021 J jnl
CoRR
Xiaofeng Liu, Fangxu Xing, Maureen Stone, Jiachen Zhuo, Timothy G. Reese, Jerry L. Prince, Georges El Fakhri, Jonghye Woo
2021 J jnl
CoRR
Xiaofeng Liu, Linghao Jin, Xu Han, Jun Lu, Jane You, Lingsheng Kong
2021 J jnl
CoRR
Wanqing Xie, Lizhong Liang, Yao Lu, Chen Wang, Jihong Shen, Hui Luo, Xiaofeng Liu
2021 J jnl
Pattern Recognit.
Xiaofeng Liu, Linghao Jin, Xu Han, Jane You
2021 A* conf
ICCV
Xiaofeng Liu, Site Li, Yubin Ge, Pengyi Ye, Jane You, Jun Lu
2021 J jnl
CoRR
Xiaofeng Liu, Site Li, Yubin Ge, Pengyi Ye, Jane You, Jun Lu
2021 conf
EMBC
Xiaofeng Liu, Fangxu Xing, Hanna K. Gaggin, Weichung Wang, C.-C. Jay Kuo, Georges El Fakhri, Jonghye Woo
2021 J jnl
CoRR
Xiaofeng Liu, Fangxu Xing, Hanna K. Gaggin, Weichung Wang, C.-C. Jay Kuo, Georges El Fakhri, Jonghye Woo
2021 A* conf
AAAI
Xiaofeng Liu, Xiongchang Liu, Bo Hu, Wenxuan Ji, Fangxu Xing, Jun Lu, Jane You, C.-C. Jay Kuo, Georges El Fakhri, Jonghye Woo
2021 J jnl
CoRR
Xiaofeng Liu, Xiongchang Liu, Bo Hu, Wenxuan Ji, Fangxu Xing, Jun Lu, Jane You, C.-C. Jay Kuo, Georges El Fakhri, Jonghye Woo
2021 J jnl
CoRR
Xiaofeng Liu, Fangxu Xing, Chao Yang, C.-C. Jay Kuo, Georges El Fakhri, Jonghye Woo
2021 J jnl
CoRR
Xiaofeng Liu, Fangxu Xing, Chao Yang, C.-C. Jay Kuo, Suma Babu, Georges El Fakhri, Thomas Jenkins, Jonghye Woo
2020 conf
ICSSE
Xiaofeng Liu, Risheng Liu, Ming Zhu, Wei Zhong, Xin Fan, Zhongxuan Luo, Wanhui Zhang
2020 conf
ECCV (9)
Xiaofeng Liu, Tong Che, Yiqun Lu, Chao Yang, Site Li, Jane You
2020 J jnl
CoRR
Xiaofeng Liu, Tong Che, Yiqun Lu, Chao Yang, Site Li, Jane You
2020 conf
CVPR Workshops
Gewen He, Xiaofeng Liu, Fangfang Fan, Jane You
2020 J jnl
IEEE Trans. Inf. Forensics Secur.
Xiaofeng Liu, Zhenhua Guo, Jane You, B. V. K. Vijaya Kumar
2020 B conf
ICPR
Xiaofeng Liu, Bo Hu, Xiongchang Liu, Jun Lu, Jane You, Lingsheng Kong
2020 B conf
ICPR
Xiaofeng Liu, Linghao Jin, Xu Han, Jun Lu, Jane You, Lingsheng Kong
2020 conf
CVPR Workshops
Gewen He, Xiaofeng Liu, Fangfang Fan, Jane You
2020 A* conf
AAAI
Xiaofeng Liu, Yuzhuo Han, Song Bai, Yi Ge, Tianxing Wang, Xu Han, Site Li, Jane You, Jun Lu
2020 J jnl
CoRR
Xiaofeng Liu, Yuzhuo Han, Song Bai, Yi Ge, Tianxing Wang, Xu Han, Site Li, Jane You, Ju Lu
2020 J jnl
CoRR
Xiaofeng Liu, Linghao Jin, Xu Han, Jane You
2020 J jnl
CoRR
Xiaofeng Liu, Yimeng Zhang, Xiongchang Liu, Song Bai, Site Li, Jane You
2020 A* conf
CVPR
Xiaofeng Liu, Wenxuan Ji, Jane You, Georges El Fakhri, Jonghye Woo
2020 conf
BrainLes@MICCAI (1)
Xiaofeng Liu, Fangxu Xing, Chao Yang, C.-C. Jay Kuo, Georges El Fakhri, Jonghye Woo
2020 J jnl
Neurocomputing
Xiaofeng Liu, Fangfang Fan, Lingsheng Kong, Zhihui Diao, Wanqing Xie, Jun Lu, Jane You
2020 conf
CVPR Workshops
Yuzhuo Han, Xiaofeng Liu, Zhenfei Sheng, Yutao Ren, Xu Han, Jane You, Risheng Liu, Zhongxuan Luo
2019 J jnl
CoRR
Xiaofeng Liu, Zhenhua Guo, Jane You, B. V. K. Vijaya Kumar
2019 A* conf
ICCV
Yang Zou, Zhiding Yu, Xiaofeng Liu, B. V. K. Vijaya Kumar, Jinsong Wang
2019 J jnl
CoRR
Yang Zou, Zhiding Yu, Xiaofeng Liu, B. V. K. Vijaya Kumar, Jinsong Wang
2019 A* conf
ICCV
Xiaofeng Liu, Yang Zou, Tong Che, Ping Jia, Peng Ding, Jane You, B. V. K. Vijaya Kumar
2019 J jnl
CoRR
Xiaofeng Liu, Yang Zou, Tong Che, Peng Ding, Ping Jia, Jane You, B. V. K. Vijaya Kumar
2019 J jnl
CoRR
Tong Che, Xiaofeng Liu, Site Li, Yubin Ge, Ruixiang Zhang, Caiming Xiong, Yoshua Bengio
2019 J jnl
CoRR
Xiaofeng Liu, B. V. K. Vijaya Kumar, Chao Yang, Qingming Tang, Jane You
2019 A* conf
CVPR
Xiaofeng Liu, Site Li, Lingsheng Kong, Wanqing Xie, Ping Jia, Jane You, B. V. K. Vijaya Kumar
2019 J jnl
Pattern Recognit.
Xiaofeng Liu, B. V. K. Vijaya Kumar, Ping Jia, Jane You
2019 A* conf
ICCV
Xiaofeng Liu, Zhenhua Guo, Site Li, Ping Jia, Lingsheng Kong, Jane You, B. V. K. Vijaya Kumar
2019 J jnl
CoRR
Xiaofeng Liu, Zhenhua Guo, Site Li, Lingsheng Kong, Ping Jia, Jane You, B. V. K. Vijaya Kumar
2019 J jnl
CoRR
Chao Yang, Xiaofeng Liu, Qingming Tang, C.-C. Jay Kuo
2019 conf
ICCV Workshops
Xiaofeng Liu, Xu Han, Yukai Qiao, Yi Ge, Site Li, Jun Lu
2019 J jnl
CoRR
Xiaofeng Liu, Xu Han, Yukai Qiao, Yi Ge, Jun Lu
2018 B conf
ICPR
Xiaofeng Liu, Zhaofeng Li, Lingsheng Kong, Zhihui Diao, Junliang Yan, Yang Zou, Chao Yang, Ping Jia, Jane You
2018 conf
ECCV (2)
Yuhang Song, Chao Yang, Zhe Lin, Xiaofeng Liu, Qin Huang, Hao Li, C.-C. Jay Kuo
2018 B conf
ICPR
Xiaofeng Liu, Yang Zou, Lingsheng Kong, Zhihui Diao, Junliang Yan, Jun Wang, Site Li, Ping Jia, Jane You
2018 conf
ECCV (11)
Xiaofeng Liu, B. V. K. Vijaya Kumar, Chao Yang, Qingming Tang, Jane You
2018 J jnl
CoRR
Chao Yang, Yuhang Song, Xiaofeng Liu, Qingming Tang, C.-C. Jay Kuo
2018 conf
ISBA
Xiaofeng Liu, B. V. K. Vijaya Kumar, Yubin Ge, Chao Yang, Jane You, Ping Jia
2018 conf
ECCV Workshops (6)
Xiaofeng Liu, Yang Zou, Yuhang Song, Chao Yang, Jane You, B. V. K. Vijaya Kumar
2017 conf
CVPR Workshops
Xiaofeng Liu, B. V. K. Vijaya Kumar, Jane You, Ping Jia
2012 J jnl
IEEE Trans. Medical Imaging
Xiaofeng Liu, Khaled Z. Abd-Elmoniem, Maureen L. Stone, Emi Z. Murano, Jiachen Zhuo, Rao P. Gullapalli, Jerry L. Prince
2011 conf
ISBI
Jiehua Li, Xiaofeng Liu, Jiachen Zhuo, Rao P. Gullapalli, Jason M. Zara
2010 J jnl
IEEE Trans. Medical Imaging
Xiaofeng Liu, Jerry L. Prince
2009 conf
MICCAI (1)
Xiaofeng Liu, Khaled Z. Abd-Elmoniem, Jerry L. Prince
2009 J jnl
IEEE Trans. Medical Imaging
Junghoon Lee, Xiaofeng Liu, Ameet K. Jain, Danny Y. Song, Everette Clif Burdette, Jerry L. Prince, Gabor Fichtinger
2009 B conf
Image Processing
Xiaofeng Liu, Ying Bai, Jerry L. Prince
2008 conf
MICCAI (2)
Junghoon Lee, Xiaofeng Liu, Jerry L. Prince, Gabor Fichtinger
2008 conf
ISBI
Junghoon Lee, Xiaofeng Liu, Ameet K. Jain, Jerry L. Prince, Gabor Fichtinger
2007 conf
ISBI
Xiaofeng Liu, Emi Z. Murano, Maureen L. Stone, Jerry L. Prince
2007 conf
MICCAI (1)
Xiaofeng Liu, Ameet K. Jain, Gabor Fichtinger
2006 conf
ISBI
Xiaofeng Liu, Maureen L. Stone, Jerry L. Prince
redb/extractors/database_exporters.py
← Index redb/extractors/database_exporters.py python
from abc import ABC, abstractmethod
from datetime import datetime, timezone
from dataclasses import asdict
import hashlib
import json
import inspect
from typing import Any, Dict, List, Union
from redb import settings
import traceback
from contextlib import contextmanager

class DatabaseExporter(ABC):
    @abstractmethod
    def export(self, data: Any, **kwargs) -> bool:
        """Export data to the database"""
        pass

class ElasticsearchExporter(DatabaseExporter):
    def __init__(self, logger: Any, index_prefix: str):
        self.client = settings.get_elasticsearch_client()
        self.index_prefix = index_prefix
        self.log = logger

    def export(self, data: Any, **kwargs) -> bool:
        self.log.debug(inspect.currentframe().f_code.co_name)
        if not isinstance(data, list):
            data = [data]
            
        now_t = datetime.now(timezone.utc).strftime("%Y-%m-%d %H:%M:%S")
        index = kwargs.get('index')
        tag = kwargs.get('tag')
        hashes = kwargs.get('hashes')
        
        for dataclass_ in data:
            try:
                # Convert dataclass to dict and filter out None values
                document = {k: v for k, v in asdict(dataclass_).items() if v is not None}
                
                if tag:
                    document["tag"] = tag
                document |= hashes
                document["timestamp_utc"] = now_t
                document["known_benign"] = kwargs.get('known_benign', False)
                document["known_malicious"] = kwargs.get('known_malicious', False)

                if "_id" in document:
                    tmp_id = document.pop("_id") + document["sha256"]
                    _id = hashlib.sha256(tmp_id.encode()).hexdigest()
                else:
                    _id = document["sha256"]

                doc_dump = json.dumps(document)
                self.client.index(index=index, id=_id, document=doc_dump)
                
            except Exception as e:
                self.log.error(f"Failed to export to Elasticsearch: {e}")
                return False
                
        return True

class PrintExporter(DatabaseExporter):
    """Exporter that prints results instead of uploading to database (for dry-run mode)"""
    def __init__(self, logger: Any, index_prefix: str):
        self.index_prefix = index_prefix
        self.log = logger
        self.log.debug(f"PrintExporter initialized with index_prefix: {index_prefix}")

    def export(self, data: Any, **kwargs) -> bool:
        try:
            import json
            from dataclasses import asdict, is_dataclass

            self.log.debug(f"PrintExporter.export called with data type: {type(data)}")

            if data is None:
                self.log.debug("PrintExporter.export: data is None, returning True")
                return True

            if not isinstance(data, list):
                data = [data]

            for i, item in enumerate(data):
                if is_dataclass(item) and not isinstance(item, type):
                    # Convert dataclass instance to dict
                    try:
                        item_dict = asdict(item)
                        print(json.dumps(item_dict, indent=2, default=str))
                    except Exception as e:
                        self.log.error(f"PrintExporter.export: Error converting dataclass: {e}")
                        print(str(item))
                elif isinstance(item, dict):
                    # Already a dict, print as JSON
                    print(json.dumps(item, indent=2, default=str))
                else:
                    # Fallback for other types
                    print(json.dumps(item, indent=2, default=str) if not isinstance(item, str) else item)

            self.log.debug("PrintExporter.export: completed successfully")
            return True
        except Exception as e:
            self.log.error(f"PrintExporter.export: Failed to print data: {e}")
            return False


class ClickHouseExporter(DatabaseExporter):
    def __init__(self, logger: Any, index_prefix: str, client=None):
        self.index_prefix = index_prefix
        self.log = logger
        self.client = client

    @contextmanager
    def clickhouse_connection(self):
        client = settings.create_clickhouse_client()
        try:
            yield client
        finally:
            try:
                client.close()
            except:
                pass
    # def export(self, data: Any, **kwargs) -> bool:
    #     try:
    #         # Handle multi-table export case
    #         # if isinstance(data, dict) and 'multi_table' in data:
    #         #     for table_name, table_data in data.items():
    #         #         if table_name != 'multi_table' and isinstance(table_data, dict) and 'table' in table_data:
    #         #             self.log.debug(f"Exporting to table: {table_data['table']}")
    #         #             self.log.debug(f"Column names: {table_data['column_names']}")
    #         #             self.log.debug(f"Column types: {table_data['column_type_names']}")
    #         #             self.log.debug(f"Data sample: {table_data['data'][0] if table_data['data'] else 'No data'}")
                        
    #         #             try:
    #         #                 result = self.client.insert(
    #         #                     table_data['table'],
    #         #                     table_data['data'],
    #         #                     column_names=table_data['column_names'],
    #         #                     column_type_names=table_data['column_type_names']
    #         #                 )
    #         #                 if not result:
    #         #                     self.log.error(f"Failed to insert into table {table_data['table']}")
    #         #                     return False
    #         #             except Exception as e:
    #         #                 self.log.error(f"Error inserting into table {table_data['table']}: {e}")
    #         #                 self.log.error(f"Data that caused error: {table_data['data']}")
    #         #                 return False
    #         #     return True

    #         if isinstance(data, dict) and 'multi_table' in data:
    #             for table_name, table_data in data.items():
    #                 if table_name != 'multi_table' and isinstance(table_data, dict) and 'table' in table_data:
    #                     self.log.debug(f"Exporting to table: {table_data['table']}")
                        
    #                     # Validate each row before insert
    #                     for row in table_data['data']:
    #                         for val, col_name, col_type in zip(row, table_data['column_names'], 
    #                                                         table_data['column_type_names']):
    #                             # Check for empty strings
    #                             if isinstance(val, str) and not val:
    #                                 self.log.error(f"Empty string found for column {col_name}")
    #                                 raise ValueError(f"Empty string not allowed for column {col_name}")
                                
    #                             # Log all string values for certificate_serial_number
    #                             if col_name == 'certificate_serial_number':
    #                                 self.log.debug(f"Serial number value: '{val}', type: {type(val)}, "
    #                                             f"repr: {repr(val)}")
                        
    #                     try:
    #                         result = self.client.insert(
    #                             table_data['table'],
    #                             table_data['data'],
    #                             column_names=table_data['column_names'],
    #                             column_type_names=table_data['column_type_names']
    #                         )
    #                         if not result:
    #                             self.log.error(f"Failed to insert into table {table_data['table']}")
    #                             return False
    #                     except Exception as e:
    #                         self.log.error(f"Error inserting into table {table_data['table']}: {e}")
    #                         self.log.error(f"Data that caused error: {table_data['data']}")
    #                         return False
    #             return True

    #         # Handle single table case
    #         table = kwargs.get('table')
    #         if not table:
    #             raise ValueError("Table name must be provided for ClickHouse export")
            
    #         # Unpack the tuple returned by prepare_export_data
    #         if isinstance(data, tuple):
    #             if len(data) != 3:
    #                 raise ValueError("Data tuple must contain exactly 3 elements: (data, column_names, column_type_names)")
    #             insert_data, column_names, column_type_names = data
    #         else:
    #             # Use provided column names and types from kwargs
    #             insert_data = data
    #             column_names = kwargs.get('column_names')
    #             column_type_names = kwargs.get('column_type_names')
                
    #         if not (column_names and column_type_names):
    #             raise ValueError("column_names and column_type_names must be provided")

    #         # Ensure data is in list format for batch insert
    #         if not isinstance(insert_data, list):
    #             insert_data = [insert_data]
                
    #         self.client.insert(
    #             table,
    #             insert_data,
    #             column_names=column_names,
    #             column_type_names=column_type_names
    #         )
    #         return True
            
    #     except Exception as e:
    #         self.log.error(f"Failed to export to ClickHouse: {e}")
    #         return False

    def get_client(self):
        """Get existing client or create new one if needed"""
        if self.client:
            return self.client
        try:
            return settings.create_clickhouse_client() 
        except Exception as e:
            self.log.error(f"Failed to create ClickHouse client: {e}")
            return None
            
    # WORKING SIMPLE VERSION
    def export(self, data: Any, **kwargs) -> bool:
        try:
            # # Handle multi-table export case
            # # if isinstance(data, dict) and 'multi_table' in data:
            # #     for table_data in data.values():
            # #         if isinstance(table_data, dict) and 'table' in table_data:
            # #             result = self.client.insert(
            # #                 table_data['table'],
            # #                 table_data['data'],
            # #                 column_names=table_data['column_names'],
            # #                 column_type_names=table_data['column_type_names']
            # #             )
            # #             if not result:  # If any insert fails, return False
            # #                 return False
            # #     return True
            # if isinstance(data, dict) and 'multi_table' in data:
            #     for key, table_data in data.items():
            #         if key != 'multi_table' and isinstance(table_data, dict) and 'table' in table_data:
            #             # Add type hints
            #             typed_data = []
            #             for row in table_data['data']:
            #                 typed_row = []
            #                 for val, type_name in zip(row, table_data['column_type_names']):
            #                     if isinstance(val, str) and not val:
            #                         val = 'UNKNOWN'
            #                     if type_name == 'String' or 'LowCardinality(String)' in type_name:
            #                         val = str(val) if val is not None else 'UNKNOWN'
            #                     typed_row.append(val)
            #                 typed_data.append(typed_row)
                        
            #             table_data['data'] = typed_data
                        
            #             result = self.client.insert(
            #                 table_data['table'],
            #                 table_data['data'],
            #                 column_names=table_data['column_names'],
            #                 column_type_names=table_data['column_type_names'],
            #                 settings={'input_format_values_interpret_expressions': 0}  # Disable type inference
            #             )
            #             if not result:
            #                 return False
            #         return True

            # Get a new client connection for this export operation
            with self.clickhouse_connection() as client:
                if not client:
                    return False

                # LAST WORKING VERSION
                if isinstance(data, dict) and 'multi_table' in data:
                    for key, table_data in data.items():
                        if key != 'multi_table' and isinstance(table_data, dict) and 'table' in table_data:
                            # Debug logging
                            self.log.debug(f"Processing table: {table_data['table']}")
                            self.log.debug(f"Column names: {table_data['column_names']}")
                            self.log.debug(f"Column types: {table_data['column_type_names']}")
                            
                            typed_data = []
                            for row_idx, row in enumerate(table_data['data']):
                                typed_row = []
                                for val_idx, (val, type_name, col_name) in enumerate(
                                    zip(row, table_data['column_type_names'], table_data['column_names'])
                                ):
                                    try:
                                        # Handle different types
                                        if val is None:
                                            if 'Nullable' in type_name:
                                                val = None  # Keep None for Nullable columns
                                            elif 'Array' in type_name:
                                                val = []
                                            elif 'Int' in type_name or 'UInt' in type_name:
                                                val = 0
                                            elif 'FixedString(16)' in type_name:
                                                val = b'\x00' * 16  # Binary FixedString
                                            elif 'String' in type_name or 'LowCardinality' in type_name:
                                                val = 'UNKNOWN'
                                            elif 'DateTime' in type_name:
                                                val = datetime.now(timezone.utc)
                                            elif 'Boolean' in type_name:
                                                val = False
                                            else:
                                                self.log.error(f"Unhandled type {type_name} for null value")
                                                val = 'UNKNOWN'
                                        
                                        # Log problematic values
                                        if isinstance(val, str) and not val.strip():
                                            self.log.warning(f"Empty string found in table {table_data['table']}, "
                                                        f"column {col_name}, row {row_idx}")
                                        
                                        # Ensure array types are always lists
                                        if 'Array' in type_name and not isinstance(val, list):
                                            val = [val]
                                        
                                        typed_row.append(val)
                                    except Exception as e:
                                        self.log.error(f"Error processing value in table {table_data['table']}, "
                                                    f"column {col_name} ({type_name}), "
                                                    f"row {row_idx}, value: {repr(val)}")
                                        raise
                                        
                                typed_data.append(typed_row)
                            
                            table_data['data'] = typed_data

                            # Skip insert if there is nothing to insert
                            if not typed_data:
                                self.log.debug(f"No data to insert for table {table_data['table']}, skipping.")
                                continue

                            # Debug log the first row of data
                            self.log.debug(f"Sample row for {table_data['table']}: {typed_data[0]}")

                            result = client.insert(
                                table_data['table'],
                                table_data['data'],
                                column_names=table_data['column_names'],
                                column_type_names=table_data['column_type_names'],
                                settings={'input_format_values_interpret_expressions': 0}
                            )
                            if not result:
                                self.log.error(f"Insert failed for table {table_data['table']}")
                                return False
                    return True

                # Handle single table case
                table = kwargs.get('table')
                if not table:
                    raise ValueError("Table name must be provided for ClickHouse export")
                
                # Unpack the tuple returned by prepare_export_data
                if isinstance(data, tuple):
                    if len(data) != 3:
                        raise ValueError("Data tuple must contain exactly 3 elements: (data, column_names, column_type_names)")
                    insert_data, column_names, column_type_names = data
                else:
                    # Use provided column names and types from kwargs
                    insert_data = data
                    column_names = kwargs.get('column_names')
                    column_type_names = kwargs.get('column_type_names')
                    
                if not (column_names and column_type_names):
                    raise ValueError("column_names and column_type_names must be provided")

                # Ensure data is in list format for batch insert
                if not isinstance(insert_data, list):
                    insert_data = [insert_data]

                # Skip insert if there is nothing to insert
                if not insert_data:
                    self.log.debug(f"No data to insert for table {table}, skipping.")
                    return True

                client.insert(
                    table,
                    insert_data,
                    column_names=column_names,
                    column_type_names=column_type_names,
                    settings={'input_format_values_interpret_expressions': 0}  # Disable type inference
                )
                return True

        except TypeError as e:
            # Get the actual value causing the error from the exception traceback
            import sys
            exc_type, exc_value, exc_traceback = sys.exc_info()
            
            # Walk through the traceback to find the frame with the problematic value
            current = exc_traceback
            while current:
                if 'string.py' in current.tb_frame.f_code.co_filename and '_data_size' in current.tb_frame.f_code.co_name:
                    locals_dict = current.tb_frame.f_locals
                    problematic_value = locals_dict.get('x')
                    self.log.error(f"TypeError with value: {problematic_value} (type: {type(problematic_value)})")
                    self.log.error(f"Full locals at error: {locals_dict}")
                    break
                current = current.tb_next
            
            self.log.error(f"Failed to export to ClickHouse: {e}")
            self.log.error("Full traceback:")
            self.log.error(traceback.format_exc())
            return False
        except Exception as e:
            self.log.error(f"Failed to export to ClickHouse: {e}")
            self.log.error(traceback.format_exc())
            return False
        finally:
            # Only close if we created a new client
            if client and client != self.client:
                # Close the client connection
                try:
                    client.close()
                except:
                    pass