From 556edd17038840f60ca0414f58a836269d15eb26 Mon Sep 17 00:00:00 2001 From: "J. Sebastian Paez" Date: Wed, 25 Oct 2023 09:58:49 -0700 Subject: [PATCH] added data --- tests/dia_test.d/analysis.tdf | Bin 0 -> 24576 bytes tests/dia_test.d/analysis.tdf_bin | Bin 0 -> 91204 bytes tests/simulation_requirements.txt | 4 + tests/tdf_simulator_dia.ipynb | 946 ++++++++++++++++++++++++++++++ 4 files changed, 950 insertions(+) create mode 100644 tests/dia_test.d/analysis.tdf create mode 100644 tests/dia_test.d/analysis.tdf_bin create mode 100644 tests/simulation_requirements.txt create mode 100644 tests/tdf_simulator_dia.ipynb diff --git a/tests/dia_test.d/analysis.tdf b/tests/dia_test.d/analysis.tdf new file mode 100644 index 0000000000000000000000000000000000000000..8b834d50c5908b44176eb1728cc3993021522359 GIT binary patch literal 24576 zcmeI%UuYaf7y$5{ncds$>186docUL_2ijiJ#LJzhRw!qhTtjFsIg_)^g9zK~Brd(% zz3%RrCRi|4UwjaYPxVdksShetghHS%9#|jzibn+ zGLE@Mjg`ETcha&=XW47h6&sr^j#i3#W%TG&QBSprNa+XTsW8EW>on>qeR8@|oG8v7 zitBo6Zo#mp8?~cs$+Fvy6m2uwKj}GD!?zr}w7SEndp)vD$3n~FAbmsYk0 z<7r=xC663I=XO|g@RQptJnUEgYxQARKw#ZjM?Aek)a1|*T6_4eX(#PPr&Up0%R5ga zhJ*CMv)Wo$VA~Eoo<9E+R+HV`=+&8E?%+NzJd)@X4PX(7{ z{zzQQ=dP9Fd}ZswmK>8uwLWg~GF4XU+j@C6Z~F`-VA78lNc>$s_bL=6740e}Rqtj$E znc+-QCWFa4Bf%6SVxXV!jN{f4Pq)fkQF{m`^bTk8ncS24K1@b>c`1Vr1m%Y^b476? z`^4jUetQy;92LcnF{f5{nI{TVqB@cl`~O(y9}>OJcmL;TneOKo&_DnLKmY_l00ck) z1V8`;KmY_l;GP#4iY1Ur5hAjJ2|}^LPr0BCY8vW&9X*&$J#wLEpg?g=?FcwRF$E%fCtA z{rb*hXL0ks^PiaJ0hG}AB0D<5%!MnPvFdxzOPyE${_+dlB-bA`O|k!%=}n2=rnl$@ zKY<1UAOHd&00JNY0w4eaAOHd&00JOzj|wQVsB~b3@Gk|+yzZe98Sx_)`+rRTl;~gl z01X5{00ck)1V8`;KmY_l00ck)1VCUn2@s5t_|wAw|F28*cltg3jIQsdMZ#J@00ck) z1V8`;KmY_l00ck)1VCUn2z1FR-^62tuyhl>M1IK*P@?iH(X&tbkm$Svt6C5uBJg~6 QpcAQD5Wxe`o7sVX0g5%v(*OVf literal 0 HcmV?d00001 diff --git a/tests/dia_test.d/analysis.tdf_bin b/tests/dia_test.d/analysis.tdf_bin new file mode 100644 index 0000000000000000000000000000000000000000..c4ee16f9ecc8682129729eb5b4b2083e06ed78eb GIT binary patch literal 91204 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%0D0@f3j2= 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 c\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IdTimePolarityScanModeMsMsTypeTimsIdMaxIntensitySummedIntensitiesNumScansNumPeaksAccumulationTimeRampTime
010.1+90050339063350624720709251695100100
120.2+99105222012142948829238392709754376100100
230.3+9922230452625641095707444007091257057100100
340.4+90365228045732110617042693107091759738100100
450.5+995393512570570233213589396887092262419100100
560.6+997258618100770424046638821007092765100100100
\n", + "" + ], + "text/plain": [ + " Id Time Polarity ScanMode MsMsType TimsId MaxIntensity \\\n", + "0 1 0.1 + 9 0 0 503390 \n", + "1 2 0.2 + 9 9 10522 2012142 \n", + "2 3 0.3 + 9 9 22230 4526256 \n", + "3 4 0.4 + 9 0 36522 8045732 \n", + "4 5 0.5 + 9 9 53935 12570570 \n", + "5 6 0.6 + 9 9 72586 18100770 \n", + "\n", + " SummedIntensities NumScans NumPeaks AccumulationTime RampTime \n", + "0 63350624720 709 251695 100 100 \n", + "1 948829238392 709 754376 100 100 \n", + "2 4109570744400 709 1257057 100 100 \n", + "3 11061704269310 709 1759738 100 100 \n", + "4 23321358939688 709 2262419 100 100 \n", + "5 42404663882100 709 2765100 100 100 " + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "size = num_frames\n", + "peaks = num_scans * (num_scans + 1) // 2\n", + "\n", + "frames = pd.DataFrame(\n", + " {\n", + " \"Id\": np.arange(1, size + 1),\n", + " \"Time\": np.arange(1, size + 1, dtype=np.float64) / 10,\n", + " \"Polarity\": [\"+\"] * size,\n", + " \"ScanMode\": [scanmode] * size,\n", + " \"MsMsType\": msms_type,\n", + " \"TimsId\": frame_offsets,\n", + " \"MaxIntensity\": max_intensities,\n", + " \"SummedIntensities\": summed_intensities,\n", + " \"NumScans\": [num_scans] * size,\n", + " \"NumPeaks\": num_peaks,\n", + " # 'MzCalibration': [1] * size,\n", + " # 'T1': [1] * size,\n", + " # 'T2': [1] * size,\n", + " # 'TimsCalibration': [1] * size,\n", + " # 'PropertyGroup': [1] * size,\n", + " \"AccumulationTime\": [100] * size,\n", + " \"RampTime\": [100] * size,\n", + " # 'Pressure': [2] * size,\n", + " }\n", + ")\n", + "frames" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "2076aef6", + "metadata": { + "ExecuteTime": { + "end_time": "2023-09-28T15:25:03.251715Z", + "start_time": "2023-09-28T15:25:03.229805Z" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
WindowGroupScanNumBeginScanNumEndIsolationMzIsolationWidthCollisionEnergy
01301804005042
112303806005042
22301808005042
3223038010005042
\n", + "
" + ], + "text/plain": [ + " WindowGroup ScanNumBegin ScanNumEnd IsolationMz IsolationWidth \\\n", + "0 1 30 180 400 50 \n", + "1 1 230 380 600 50 \n", + "2 2 30 180 800 50 \n", + "3 2 230 380 1000 50 \n", + "\n", + " CollisionEnergy \n", + "0 42 \n", + "1 42 \n", + "2 42 \n", + "3 42 " + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# size -= 1\n", + "# precursors = pd.DataFrame(\n", + "# {\n", + "# \"Id\": np.arange(1, size + 1),\n", + "# \"LargestPeakMz\": 500.0 + np.arange(size),\n", + "# \"AverageMz\": 500.5 + np.arange(size),\n", + "# \"MonoisotopicMz\": 500.0 + np.arange(size),\n", + "# \"Charge\": [2 if i % 2 == 0 else 3 for i in range(size)],\n", + "# \"ScanNumber\": [1 if i % 2 == 0 else 2 for i in range(size)],\n", + "# \"Intensity\": [10] * size,\n", + "# \"Parent\": [(i // 2) * 2 + 1 for i in range(size)],\n", + "# }\n", + "# )\n", + "# size += 1\n", + "# precursors\n", + "\n", + "\n", + "# fragment_frames = pd.DataFrame(\n", + "# {\n", + "# 'Frame': [(i // 2 + 1) * 2 for i in range(size)],\n", + "# 'ScanNumBegin': [2 if i % 2 == 0 else 1 for i in range(size)],\n", + "# 'ScanNumEnd': [3 if i % 2 == 0 else 2 for i in range(size)],\n", + "# 'IsolationMz': 500.5 + np.arange(size),\n", + "# 'IsolationWidth': [2.0] * size,\n", + "# 'CollisionEnergy': [0.0] * size,\n", + "# 'Precursor': np.arange(1, size + 1),\n", + "# }\n", + "# )\n", + "# fragment_frames.iloc[-1] = fragment_frames.iloc[-3]\n", + "# fragment_frames.Frame.values[-1] = fragment_frames.Frame.values[-2]\n", + "# fragment_frames\n", + "\n", + "\n", + "dia_frame_msms_windows = pd.DataFrame(\n", + " {\n", + " \"WindowGroup\": [\n", + " 1 + (x // 2)\n", + " for x in range(num_dia_window_groups * scan_groups_per_window_group)\n", + " ],\n", + " \"ScanNumBegin\": [\n", + " 30 + (200 * (x % 2))\n", + " for x in range(num_dia_window_groups * scan_groups_per_window_group)\n", + " ],\n", + " \"ScanNumEnd\": 0,\n", + " \"IsolationMz\": [\n", + " 200 * (x + scan_groups_per_window_group)\n", + " for x in range(num_dia_window_groups * scan_groups_per_window_group)\n", + " ],\n", + " \"IsolationWidth\": 50,\n", + " \"CollisionEnergy\": 42,\n", + " }\n", + ")\n", + "dia_frame_msms_windows[\"ScanNumEnd\"] = 150 + dia_frame_msms_windows[\"ScanNumBegin\"]\n", + "dia_frame_msms_windows" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "ee0e91a2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
FrameWindowGroup
121
231
452
562
\n", + "
" + ], + "text/plain": [ + " Frame WindowGroup\n", + "1 2 1\n", + "2 3 1\n", + "4 5 2\n", + "5 6 2" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dia_frame_msms_info = pd.DataFrame(\n", + " {\n", + " \"Frame\": frames[\"Id\"][frames[\"MsMsType\"] == 9],\n", + " \"WindowGroup\": [\n", + " 1 + (x // num_dia_window_groups)\n", + " for x in range((frames[\"MsMsType\"] == 9).sum())\n", + " ],\n", + " }\n", + ")\n", + "\n", + "dia_frame_msms_info" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "9937ac5f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
id
01
12
\n", + "
" + ], + "text/plain": [ + " id\n", + "0 1\n", + "1 2" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dia_frame_msms_window_groups = pd.DataFrame(\n", + " {\"id\": [x + 1 for x in range(num_dia_window_groups)]}\n", + ")\n", + "dia_frame_msms_window_groups" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "d71b81b9", + "metadata": { + "ExecuteTime": { + "end_time": "2023-09-28T15:25:03.842767Z", + "start_time": "2023-09-28T15:25:03.822643Z" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
KeyValue
0TimsCompressionType2
1MaxNumPeaksPerScan2765100
2DigitizerNumSamples9050385
3MzAcqRangeLower100.0
4MzAcqRangeUpper1000.0
5AcquisitionSoftwaretimsTOF
6SampleNametest
7OneOverK0AcqRangeLower0.5
8OneOverK0AcqRangeUpper1.5
\n", + "
" + ], + "text/plain": [ + " Key Value\n", + "0 TimsCompressionType 2\n", + "1 MaxNumPeaksPerScan 2765100\n", + "2 DigitizerNumSamples 9050385\n", + "3 MzAcqRangeLower 100.0\n", + "4 MzAcqRangeUpper 1000.0\n", + "5 AcquisitionSoftware timsTOF\n", + "6 SampleName test\n", + "7 OneOverK0AcqRangeLower 0.5\n", + "8 OneOverK0AcqRangeUpper 1.5" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "global_meta_data = {\n", + " # \"SchemaType\": \"TDF\",\n", + " # \"SchemaVersionMajor\": 3,\n", + " # \"SchemaVersionMinor\": 7,\n", + " # \"AcquisitionSoftwareVendor\": \"Bruker\",\n", + " # \"InstrumentVendor\": \"Bruker\",\n", + " # \"ClosedProperly\": 1,\n", + " \"TimsCompressionType\": 2,\n", + " \"MaxNumPeaksPerScan\": int(frames.NumPeaks.values[-1]),\n", + " # \"AnalysisId\": \"00000000-0000-0000-0000-000000000000\",\n", + " \"DigitizerNumSamples\": num_tof,\n", + " \"MzAcqRangeLower\": mz_min,\n", + " \"MzAcqRangeUpper\": mz_max,\n", + " \"AcquisitionSoftware\": \"timsTOF\",\n", + " # \"AcquisitionSoftwareVersion\": \"0.0\",\n", + " # \"AcquisitionFirmwareVersion\": \"0.1\",\n", + " # \"AcquisitionDateTime\": \"2023-05-05T21:20:37.229+02:00\",\n", + " # \"InstrumentName\": \"timsTOF SCP\",\n", + " # \"InstrumentFamily\": 9,\n", + " # \"InstrumentRevision\": 3,\n", + " # \"InstrumentSourceType\": 11,\n", + " # \"InstrumentSerialNumber\": 0,\n", + " # \"OperatorName\": \"Admin\",\n", + " # \"Description\": \"\",\n", + " \"SampleName\": \"test\",\n", + " # \"MethodName\": \"test.m\",\n", + " # \"DenoisingEnabled\": 0,\n", + " # \"PeakWidthEstimateValue\": 0.000025,\n", + " # \"PeakWidthEstimateType\": 1,\n", + " # \"PeakListIndexScaleFactor\": 1,\n", + " \"OneOverK0AcqRangeLower\": im_min,\n", + " \"OneOverK0AcqRangeUpper\": im_max,\n", + " # \"DigitizerType\": \"SA248P\",\n", + " # \"DigitizerSerialNumber\": \"AQ00074235\",\n", + "}\n", + "global_meta_data = pd.DataFrame(\n", + " {\n", + " \"Key\": global_meta_data.keys(),\n", + " \"Value\": global_meta_data.values(),\n", + " }\n", + ")\n", + "global_meta_data" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "649fa28a", + "metadata": { + "ExecuteTime": { + "end_time": "2023-09-28T15:25:04.436258Z", + "start_time": "2023-09-28T15:25:04.389245Z" + } + }, + "outputs": [], + "source": [ + "if os.path.exists(tdf_file_name):\n", + " os.remove(tdf_file_name)\n", + "with sqlite3.connect(tdf_file_name) as sql_database_connection:\n", + " global_meta_data.to_sql(\"GlobalMetaData\", sql_database_connection, index=False)\n", + " frames.to_sql(\"Frames\", sql_database_connection, index=False)\n", + " dia_frame_msms_info.to_sql(\"DiaFrameMsMsInfo\", sql_database_connection, index=False)\n", + "\n", + " dia_frame_msms_window_groups.to_sql(\n", + " \"DiaFrameMsMsWindowGroups\", sql_database_connection, index=False\n", + " )\n", + "\n", + " dia_frame_msms_windows.to_sql(\n", + " \"DiaFrameMsMsWindows\", sql_database_connection, index=False\n", + " )\n", + "\n", + " # # There is no precursors table in my DIA .tdf\n", + " # precursors.to_sql(\n", + " # \"Precursors\",\n", + " # sql_database_connection,\n", + " # index=False\n", + " # )\n", + " # fragment_frames.to_sql(\n", + " # \"PasefFrameMsMsInfo\",\n", + " # sql_database_connection,\n", + " # index=False\n", + " # )" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "35217cb6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Id Time Polarity ScanMode MsMsType TimsId MaxIntensity \\\n", + "0 1 0.1 + 9 0 0 503390 \n", + "1 2 0.2 + 9 9 10522 2012142 \n", + "2 3 0.3 + 9 9 22230 4526256 \n", + "3 4 0.4 + 9 0 36522 8045732 \n", + "4 5 0.5 + 9 9 53935 12570570 \n", + "5 6 0.6 + 9 9 72586 18100770 \n", + "\n", + " SummedIntensities NumScans NumPeaks AccumulationTime RampTime \n", + "0 63350624720 709 251695 100 100 \n", + "1 948829238392 709 754376 100 100 \n", + "2 4109570744400 709 1257057 100 100 \n", + "3 11061704269310 709 1759738 100 100 \n", + "4 23321358939688 709 2262419 100 100 \n", + "5 42404663882100 709 2765100 100 100 \n" + ] + } + ], + "source": [ + "with sqlite3.connect(tdf_file_name) as sql_database_connection:\n", + " print(pd.read_sql_query(\"SELECT * FROM Frames\", sql_database_connection))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "b10148b5", + "metadata": { + "ExecuteTime": { + "end_time": "2023-09-28T15:11:12.359759Z", + "start_time": "2023-09-28T15:11:07.862708Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING:root:WARNING: No Bruker libraries are available for this operating system. Mobility and m/z values need to be estimated. While this estimation often returns acceptable results with errors < 0.02 Th, huge errors (e.g. offsets of 6 Th) have already been observed for some samples!\n", + "100%|██████████| 6/6 [00:00<00:00, 11.51it/s]\n" + ] + } + ], + "source": [ + "import alphatims.bruker\n", + "\n", + "alphatims.bruker.BRUKER_DLL_FILE_NAME = \"\"\n", + "data = alphatims.bruker.TimsTOF(folder_name)\n", + "# data.tof_indices" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "venv", + "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.11.5" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": false + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}