{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b37dee08-65d0-4f92-918d-c27e820c6d28",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Copyright 2025 Sony Corporation"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7d441cd7-cb51-4bad-bc23-4a60dc9448c3",
   "metadata": {},
   "source": [
    "## get Max F Value's meta division"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "98813dc5",
   "metadata": {},
   "outputs": [],
   "source": [
    "import subprocess\n",
    "import os\n",
    "import glob\n",
    "import shutil\n",
    "import sys\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "import matplotlib.patches as mpatches\n",
    "import matplotlib.lines as mlines"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "cbe621f8-f143-465f-b110-cff65d6f3cd1",
   "metadata": {},
   "outputs": [],
   "source": [
    "workdir = os.getcwd()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "4183a726-e926-40f9-89d8-83dec88a3c0a",
   "metadata": {},
   "outputs": [],
   "source": [
    "fsom_experiment_name = \"Flowsom\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6781f765-12f2-4794-8eac-c65ce8c6227d",
   "metadata": {},
   "outputs": [],
   "source": [
    "samplenames = [\"FP7000_34c\",\"Levine_32dim\",\"Levine_13dim\",\"Samusik_01\",\"Samusik_all\",]\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f6b10d8e-9426-4e79-a65e-365f62a55b94",
   "metadata": {},
   "outputs": [],
   "source": [
    "#range of search best F \n",
    "xrange_dict = {\"FP7000_34c\": range(14,20,1),\n",
    "               \"Levine_32dim\": range(14,37,1), \n",
    "               \"Levine_13dim\": range(24,50,1),\n",
    "               \"Samusik_01\": range(24,39,1),\n",
    "               \"Samusik_all\":range(24,39,1)\n",
    "              }"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f01b4c55-a1d5-4217-b4e2-8f53e90f8d3d",
   "metadata": {},
   "outputs": [],
   "source": [
    "for sample_name in samplenames:\n",
    "    print(sample_name)\n",
    "    fsom_exp_path = os.path.join(workdir,fsom_experiment_name,sample_name) \n",
    "    os.chdir(workdir)\n",
    "    resdf = pd.DataFrame()\n",
    "    meta_list = xrange_dict.get(sample_name) #samplename -> get range\n",
    "    for meta in meta_list:\n",
    "        directory = os.path.join(fsom_exp_path,\"%d\"%meta,\"10\")    \n",
    "        files = [file for file in os.listdir(directory) if (file.startswith(\"vseed_f1hang_\") and file.endswith(\"resh\"))]\n",
    "        df = pd.DataFrame()\n",
    "        for file in files:\n",
    "            file_path = os.path.join(directory, file)\n",
    "            # Get the numeric part from the file name and use it as an index\n",
    "            index = int(file.split('_')[2].split('.')[0])\n",
    "            temp_df = pd.read_csv(file_path,header=None)\n",
    "            # set index and concatenate\n",
    "            temp_df['index'] = index\n",
    "            temp_df.set_index('index', inplace=True)\n",
    "            df = pd.concat([df, temp_df])\n",
    "        data_hang = df.rename(columns={0:\"%d\"%meta})\n",
    "        resdf = pd.concat([resdf,data_hang],axis=1)\n",
    "    d = pd.melt(resdf) #flowsom result\n",
    "    max_index = resdf.mean().sort_values().idxmax()\n",
    "    max_idx = int(max_index) - 10\n",
    "    max_index2 = resdf.median().sort_values().idxmax()\n",
    "    print(max_index)\n",
    "    m = resdf.mean()\n",
    "    filename = \"%s_meta_F.csv\"%sample_name\n",
    "    m.to_csv(filename)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "4175938e-0525-4403-a30a-dcb23f63ba52",
   "metadata": {},
   "outputs": [],
   "source": [
    "BL_experiment_name = \"BL_FlowSOM\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "44e09c63-4414-4df8-a924-f469c34b594c",
   "metadata": {},
   "outputs": [],
   "source": [
    "for sample_name in samplenames:\n",
    "    print(sample_name)\n",
    "    exp_path = os.path.join(workdir,BL_experiment_name,sample_name) \n",
    "    os.chdir(workdir)\n",
    "    resdf = pd.DataFrame()\n",
    "    meta_list = xrange_dict.get(sample_name) #samplename -> get range\n",
    "    data = []\n",
    "    for meta in meta_list:\n",
    "        directory = os.path.join(exp_path)    \n",
    "        file = os.path.join(directory,\"f1_meta_%02d_it_10_hang.hres\"%meta)\n",
    "        with open(file,\"r\") as f:\n",
    "            value = float(f.readline().strip())\n",
    "        data.append((meta, value))\n",
    "    df = pd.DataFrame(data,columns=[\"meta\",\"Value\"])\n",
    "    filename = \"BL_%s_meta_f.csv\"%sample_name\n",
    "    df.to_csv(filename)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}