Skip to main content
Glama

qudi MCP Integration

by dirkenglund
measurement_tools.cpython-313.pyc13.8 kB
� �+�h�9��`�SrSSKrSSKrSSKrSSKrSSKJrJrJrJ r SSK J r "SS5r g)z� Measurement tools for qudi MCP integration Handles measurement module loading, execution, and data acquisition through qudi's measurement framework. �N)�Dict�List�Any�Optional�)�RunLevelc ��\rSrSrSrSrS\S\\\4S\\\44Sjr S\\\4S\\\44S jr S\\\4S\\\44S jr S\\\4S\\\44S jr S\\\4S\\\44S jr S\\\4S\\\44S jrS\\\4S\\\44SjrS\4SjrS\S\\\4S\4SjrS\S\\\4S\S\\\44SjrSrg)�MeasurementTools�z*Measurement execution and management toolsc�F�Xl[R"S5Ulg)Nzqudi-mcp.measurements)�server�logging� getLogger�logger)�selfr s �_/Users/englund/Projects/QPG-MIT/qudi-iqo-modules-QPG/mcp_integration/tools/measurement_tools.py�__init__�MeasurementTools.__init__s��� ��'�'�(?�@�� ��name� arguments�returnc���# �URURURURURUR S.nX;aSSU30$X1"U5IShv�N $N7f)zRoute measurement tool calls)zmeasurement.list_moduleszmeasurement.startzmeasurement.statuszmeasurement.stopzmeasurement.get_datazmeasurement.save_data�errorzUnknown measurement tool: N)� _list_modules�_start_measurement� _get_status�_stop_measurement� _get_data� _save_data)rrr�tool_maps r� handle_tool�MeasurementTools.handle_toolsn���)-�(:�(:�!%�!8�!8�"&�"2�"2� $� 6� 6�$(�N�N�%)�_�_�  �� � ��9�$��@�A� A��^�I�.�.�.�.�s�AA(�!A&�"A(�argsc ���# �URR[R:XaLSSS/SQS.SSS/S QS.S SS /S QS.S SS/SQS.SSS/SQS./URRRSS.$/SS.$7f)z"List available measurement modules�photoluminescence_scan� spectroscopyzPL spectroscopy measurement)�wavelength_start�wavelength_end�wavelength_step�integration_time� laser_power)r�type� description� parameters� gate_sweep� transportzGate voltage sweep measurement)� gate_start�gate_end� gate_step� bias_voltage�measurement_time�resonance_scanzResonance frequency scan)�frequency_start� frequency_end�frequency_step�powerr+� time_trace� time_serieszTime-resolved measurement)� total_time�time_resolution�trigger_source� 2d_gate_map� transport_2dz2D gate voltage map)� gate1_start� gate1_end� gate1_steps� gate2_start� gate2_end� gate2_stepsr5r+zSimulated measurement modules)�modules�runlevel�messagez+qudi measurement modules not yet integrated)rIrK)r rJr�DRY_RUN�value)rr$s rr�MeasurementTools._list_modules(s���� �;�;� � �8�#3�#3� 3�!9� .�'D�'� �!-� +�'G�'� �!1� .�'A�'� �!-� -�'B�'� �!.� .�'<�'� �I.�^!�K�K�0�0�6�6�:�c2�2 �l�D� � �s�A:A<c ��z# �URS5nURS05nU(dSS0$/nUR5HTupVURRR XV5upxUR XWUS.5 U(aMISUSU3US.s $ [ [R"55S S n U UUS [R"5S S URX#5S.n X�RRU 'URR[R:Xa2[R "UR#U 55 SU UUU SSUS.$URR[R$:XaSU US.$[R "UR#U 55 SU UUU SSUS.$7f)z-Start a measurement with specified parameters� module_namer/rzmodule_name is required)� parameter�saferKzSafety validation failed for z: )r�validation_resultsN��runninggr)�id�moduler/�status� start_time�progress� data_points�estimated_duration�startedr\z&Dry-run: Simulated measurement started)rX�measurement_idrWr/r\rKrSz9LIVE mode measurements require approval (not implemented))rr^rWz9Simulation mode: Realistic measurement simulation started)�get�itemsr �safety_checker�validate_parameter�append�str�uuid�uuid4�time�_estimate_duration�measurement_staterJrrL�asyncio� create_task�_simulate_measurement�LIVE) rr$rPr/rS�paramrM�is_saferKr^ris rr�#MeasurementTools._start_measurementfs�����h�h�}�-� ��X�X�l�B�/� ���6�7� 7� ��&�,�,�.�L�E�#�{�{�9�9�L�L�U�Z� �G� � %� %�E�W^�&_� `��7�<�U�G�2�g�Y�O�*<��� /��T�Z�Z�\�*�2�A�.��!�!�$���)�)�+���"&�"9�"9�+�"R�  ��9J� � �%�%�n�5� �;�;� � �8�#3�#3� 3� � � �� :� :�>� J� K�$�"0�%�(�&7�8L�&M�C�&8�� � �;�;� � �8�=�=� 0�T�"0�%�� � ���D�6�6�~�F�G� �,�!�$�"3�4H�"I�R�"4� � �s �BF;� D/F;c �� # �URS5nU(alX RR;aSSUS30$URRUnUUSUSUSUS[R"5US - US S .$[ URR5URRR 5VVs0sH/upCUUSUSUS[R"5US - S ._M1 snnS .$s snnf7f)zGet measurement statusr^r� Measurement � not foundrXrWrZr[rYr\)r^rXrWrZr[� elapsed_timer\)rXrWrZrt)�active_measurements� measurements)r_r rirg�lenr`)rr$r^�state�mids rr�MeasurementTools._get_status�s'������"2�3�� ��[�[�%B�%B�B��<��/?�z�!J�K�K��K�K�1�1�.�A�E�"0���/���/�!�*�-�$�]�3� $� � � �e�L�.A� A�&+�,@�&A�� �(+�4�;�;�+H�+H�'I�'+�k�k�&C�&C�&I�&I�&K�!�'L� �� �"'��/�"'��/�$)�*�$5�(,� � � �e�L�6I�(I� �� 'L�!� � ��!�s�C D� 6D� Dc��n# �URS5nU(dSS0$X RR;aSSUS30$URRUnUSS:waSSUS USS 30$S US'[R"5US 'S U[R"5US - USSUS3S.$7f)zStop a running measurementr^r�measurement_id is requiredrrrsrXrUrKz is not running (status: �)�stopped� stop_timerYr[z stopped)rXr^rtr[rK)r_r rirg)rr$r^rxs rr�"MeasurementTools._stop_measurement�s�������"2�3����9�:� :� ���!>�!>� >��|�N�+;�:�F�G� G�� � �-�-�n�=�� ��?�i� '��\�.�)9�9R�SX�Ya�Sb�Rc�cd�e�� � $��h��!�Y�Y�[��k�� �,� �I�I�K�%� �*=�=� ��/�%�n�%5�X�>�  � �s�B3B5c��# �URS5nU(dSS0$X RR;aSSUS30$URRUnURR[R [R 4;a@URUSUSUS5nUUS [URS /55US S .$SS 0$7f)zGet measurement datar^rr|rrrsrWr/r[rX�xzSimulated measurement data)r^rXr[�datarKz,Real measurement data access not implemented) r_r rirJrrL�SIM�_generate_simulated_datarw)rr$r^rxr�s rr�MeasurementTools._get_data�s�������"2�3����9�:� :� ���!>�!>� >��|�N�+;�:�F�G� G�� � �-�-�n�=�� �;�;� � �H�$4�$4�h�l�l�#C� C��0�0��x��%� �BU�W\�]j�Wk�l�D�#1���/�"�4�8�8�C��#4�5��7� � � �C� � �s�CCc��# �URS5nURS5nU(dSS0$X RR;aSSUS30$U(dEURRUn[[R"55nUSSUSUS 3nURR [ R:Xa S UUS U3S .$S UUS U3S .$7f)zSave measurement datar^�filenamerr|rrrsrW�_z.dat�successzDry-run: Would save data to )rXr^r�rKzSimulated save to )r_r ri�intrgrJrrL)rr$r^r�rx� timestamps rr �MeasurementTools._save_data s�������"2�3���8�8�J�'����9�:� :� ���!>�!>� >��|�N�+;�:�F�G� G���K�K�1�1�.�A�E��D�I�I�K�(�I���/�*�!�N�+;�1�Y�K�t�L�H� �;�;� � �8�#3�#3� 3�#�"0�$�9�(��D� � � �,� �+�H�:�6�  � �s�CCr^c��d# �URRUnUSnSnX4- n[U5HKnUSS:wa OA[R"U5IShv�N US-U- US'[ USS-5US 'MM USS:Xa#S US'S US'[ R "5US 'ggNT7f) z4Simulate measurement execution with realistic timingr\�rXrUN�rZ�dr[� completed��?�completion_time)r ri�rangerj�sleepr�rg)rr^rx�duration�steps� step_time�is rrl�&MeasurementTools._simulate_measurement,s����� � �-�-�n�=���-�.�����$� ��u��A��X��)�+���-�-� �*� *� *�!"�Q��%��E�*� �#&�u�Z�'8�3�'>�#?�E�-� �� ��?�i� '�)�E�(�O� #�E�*� �'+�y�y�{�E�#� $� (� +�s�AB0�B.�AB0rPr/c��SSSSSS.nURUS5nSU;aXBS-nSU;a XBSS - -n[US 5$) z<Estimate measurement duration based on module and parametersg>@gN@g�F@g^@g��@)r&r0r7r<rAr+r�gY@g �@)r_�min)rrPr/� base_times� base_times rrh�#MeasurementTools._estimate_durationEsk��'+��"�� �  � ��N�N�;��5� � �� +� �$6�7� 7�I� �j� � �W�-��5� 6�I��9�f�%�%r� num_pointsc��SSKnUS:XawURSSU5nURUS- S-*S- 5S URR[ U55--nUR 5UR 5S .$US :XapURS S U5nUR U5S-SURR[ U55--nUR 5UR 5S.$US:Xa}URSSU5nURSUR-U-5S URR[ U55--nUR 5UR 5S.$URSSU5nURR[ U55nUR 5UR 5S.$)z-Generate realistic simulated measurement datarNr&ivi�i}rrTg�������?)� wavelength� intensityr0g�r�g�������?)� gate_voltage�currentr<� )rg�signalr�)r��y) �numpy�linspace�exp�randomrw�tolist�abs�sin�pi)rrPr/r��npr�r�s rr��)MeasurementTools._generate_simulated_dataZs~�� � �2� 2�� � �C��j�1�A����!�c�'�A���(�3�4�s�R�Y�Y�=M�=M�c�RS�f�=U�7U�U�A�"#�(�(�*�1�8�8�:�F� F� �L� (�� � �D�#�z�2�A����q� �1� �t�b�i�i�&6�&6�s�1�v�&>�>�>�A�$%�H�H�J�1�8�8�:�F� F� �L� (�� � �A�r�:�.�A����q�2�5�5�y�1�}�%��b�i�i�.>�.>�s�1�v�.F�(F�F�A��H�H�J�!�(�(�*�=� =�� � �A�s�J�/�A�� � � � ��Q��(�A�����!�(�(�*�5� 5r)rr N)�__name__� __module__� __qualname__�__firstlineno__�__doc__rrdrrr"rrrrrr rl�floatrhr�r��__static_attributes__�rrr r su��4�A�/�c�/�d�3��8�n�/��c�SV�h��/�"< ��S�#�X��< �4��S��>�< �|E �T�#�s�(�^�E ��S�#�X��E �N!�d�3��8�n�!��c�3�h��!�F �D��c��N� �t�C��H�~� �: �D��c��N� �t�C��H�~� �:  �T�#�s�(�^�  ��S�#�X��  �D3�#�3�2&�c�&�t�C��H�~�&�RW�&�*6�C�6�T�#�s�(�^�6�ad�6�im�nq�sv�nv�iw�6rr ) r�rrjrgre�typingrrrr�safetyrr r�rr�<module>r�s-����� � �,�,��b6�b6r

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dirkenglund/qudi-mcp-integration'

If you have feedback or need assistance with the MCP directory API, please join our Discord server