Birden fazla veri akışını senkronize etmek için Laboratuvar Akış Katmanı (LSL)

Roshini Randeniya

1 Eki 2025

Paylaş:

Roshini Randeniya ve Lucas Kleine tarafından

Operasyon:
Komut satırında çalıştırıldığında, bu script hemen bir LSL akışı başlatır. 'Enter' tuşuna basıldığında, bir tetikleyici gönderir ve bir ses dosyası çalar."""

import sounddevice as sd
import soundfile as sf
from pylsl import StreamInfo, StreamOutlet

def wait_for_keypress():
print("Ses çalmayı başlatmak ve bir LSL işareti göndermek için ENTER tuşuna basın.")

while True: # This loop waits for a keyboard input
    input_str = input()  # Wait for input from the terminal
    if input_str == "":  # If the enter key is pressed, proceed
        break

def AudioMarker(audio_file, outlet): # ses çalma ve işaret gönderme fonksiyonu
data, fs = sf.read(audio_file) # Ses dosyasını yükleyin

print("Playing audio and sending LSL marker...")
marker_val = [1]
outlet.push_sample(marker_val) # Send marker indicating the start of audio playback
sd.play(data, fs) # play the audio
sd.wait()  # Wait until audio is done playing
print("Audio playback finished.")

if name == "main": # ANA DÖNGÜ
# İşaretler için LSL akışını ayarlayın
stream_name = 'AudioMarkers'
stream_type = 'Markers'
n_chans = 1
sr = 0 # İşaretler düzensiz olduğu için örnekleme hızını 0 olarak ayarlayın
chan_format = 'int32'
marker_id = 'uniqueMarkerID12345'

info = StreamInfo(stream_name, stream_type, n_chans, sr, chan_format, marker_id)
outlet = StreamOutlet(info) # create LSL outlet

# Keep the script running and wait for ENTER key to play audio and send marker
while True:
    wait_for_keypress()
    audio_filepath = "/path/to/your/audio_file.wav"  # replace with correct path to your audio file
    AudioMarker(audio_filepath, outlet)
    # After playing audio and sending a marker, the script goes back to waiting for the next keypress</code></pre><p><em><strong>**By running this file (even before playing the audio), you've initiated an LSL stream through an outlet</strong></em><strong>. Now we'll view that stream in LabRecorder</strong></p><p><strong>STEP 5 - Use LabRecorder to view and save all LSL streams</strong></p><ol><li data-preset-tag="p"><p>Open LabRecorder</p></li><li data-preset-tag="p"><p>Press <em><strong>Update</strong></em>. The available LSL streams should be visible in the stream list<br> • You should be able to see streams from both EmotivPROs (usually called "EmotivDataStream") and the marker stream (called "AudioMarkers")</p></li><li data-preset-tag="p"><p>Click <em><strong>Browse</strong></em> to select a location to store data (and set other parameters)</p></li><li data-preset-tag="p"><p>Select all streams and press <em><strong>Record</strong></em> to start recording</p></li><li data-preset-tag="p"><p>Click Stop when you want to end the recording</p></li></ol><p><br></p><img alt="" src="https://framerusercontent.com/images/HFGuJF9ErVu2Jxrgtqt11tl0No.jpg"><h2><strong>Working with the data</strong></h2><p><strong>LabRecorder outputs an XDF file (Extensible Data Format) that contains data from all the streams. XDF files are structured into, </strong><em><strong>streams</strong></em><strong>, each with a different </strong><em><strong>header</strong></em><strong> that describes what it contains (device name, data type, sampling rate, channels, and more). You can use the below codeblock to open your XDF file and display some basic information.</strong></p><pre data-language="JSX"><code>

**Bu dosyayı çalıştırarak (ses çalmak öncesinde bile), bir çıkış üzerinden bir LSL akışı başlattınız. Şimdi bu akışı LabRecorder'da görüntüleyeceğiz

ADIM 5 - Tüm LSL akışlarını görüntülemek ve kaydetmek için LabRecorder'ı kullanın

  1. LabRecorder'ı açın

  2. Güncelle'ye basın. Kullanılabilir LSL akışları akış listesinde görünmelidir
    • EmotivPRO'lar (genellikle "EmotivDataStream" adıyla anılır) ve işaret akışını ("AudioMarkers" olarak adlandırılır) görebilmelisiniz

  3. Gözat'a tıklayarak veri saklamak için bir yer seçin (ve diğer parametreleri ayarlayın)

  4. Tüm akışları seçin ve kayda başlamak için Kaydet'e basın

  5. Kaydı sonlandırmak istediğinizde Durdur'a tıklayın



Veri ile çalışmak

LabRecorder, tüm akışlardan verileri içeren bir XDF dosyası (Genişletilebilir Veri Formatı) çıktısı verir. XDF dosyaları, her biri ne içerdiğini açıklayan farklı bir başlık ile akışlar olarak yapılandırılır (cihaz adı, veri türü, örnekleme oranı, kanallar ve daha fazlası). XDF dosyanızı açmak ve bazı temel bilgileri görüntülemek için aşağıdaki kod bloğunu kullanabilirsiniz.

Bu örnek script, EmotivPRO yazılımından toplanan EEG verilerini içe aktarmak ve açıklamak için birkaç temel işlevi gösterir. MNE'yi bir XDF dosyasını yüklemek, bazı temel meta verileri yazdırmak, bir info nesnesi oluşturmak ve güç spektrumu çizmek için kullanır."""

import pyxdf
import mne
import matplotlib.pyplot as plt
import numpy as np

XDF dosyanızın yolu

data_path = '/path/to/your/xdf_file.xdf'

XDF dosyasını yükle

streams, fileheader = pyxdf.load_xdf(data_path)
print("XDF Dosya Başlığı:", fileheader)
print("Bulunan akış sayısı:", len(streams))

for i, stream in enumerate(streams):
print("\nAkış", i + 1)
print("Akış Adı:", stream['info']['name'][0])
print("Akış Türü:", stream['info']['type'][0])
print("Kanal Sayısı:", stream['info']['channel_count'][0])
sfreq = float(stream['info']['nominal_srate'][0])
print("Örnekleme Oranı:", sfreq)
print("Örnek Sayısı:", len(stream['time_series']))
print("İlk 5 veri noktasını yazdır:", stream['time_series'][:5])

channel_names = [chan['label'][0] for chan in stream['info']['desc'][0]['channels'][0]['channel']]
print("Channel Names:", channel_names)
channel_types = 'eeg'
MNE info nesnesi oluştur

info = mne.create_info(channel_names, sfreq, channel_types)
data = np.array(stream['time_series']).T # Veri dönüştürülmelidir: kanallar x örnekler
raw = mne.io.RawArray(data, info)
raw.plot_psd(fmax=50) # basit bir spektrogram (güç spektral yoğunluğu) çizin

Ek kaynaklar

  • EMOTIV GitHub'dan bu eğitimi bir Jupyter not defteri olarak indirin

  • LSL çevrimiçi belgelerine göz atın, GitHub'daki resmi README dosyası dahil

  • Veri toplama için desteklenen bir veya daha fazla cihaz edinmeniz gerekecek

  • Tüm EMOTIV beyin cihazları, EmotivPRO yazılımına bağlanır; burada LSL, veri akışlarını göndermek ve almak için yerleşik yetenekler sunar

Ek kaynaklar:

  • EMOTIV'in cihazlarını kullanarak LSL çalıştırmak için kod, örnek scriptlerle birlikte

  • YouTube'da faydalı LSL demosu

  • Tüm bağlı kütüphaneler için SCCN LSL GitHub deposu

  • Bir alt modül ve uygulama koleksiyonu için GitHub deposu

  • Hyperscanning çalışmaları için HyPyP analiz boru hattı

Roshini Randeniya ve Lucas Kleine tarafından

Operasyon:
Komut satırında çalıştırıldığında, bu script hemen bir LSL akışı başlatır. 'Enter' tuşuna basıldığında, bir tetikleyici gönderir ve bir ses dosyası çalar."""

import sounddevice as sd
import soundfile as sf
from pylsl import StreamInfo, StreamOutlet

def wait_for_keypress():
print("Ses çalmayı başlatmak ve bir LSL işareti göndermek için ENTER tuşuna basın.")

while True: # This loop waits for a keyboard input
    input_str = input()  # Wait for input from the terminal
    if input_str == "":  # If the enter key is pressed, proceed
        break

def AudioMarker(audio_file, outlet): # ses çalma ve işaret gönderme fonksiyonu
data, fs = sf.read(audio_file) # Ses dosyasını yükleyin

print("Playing audio and sending LSL marker...")
marker_val = [1]
outlet.push_sample(marker_val) # Send marker indicating the start of audio playback
sd.play(data, fs) # play the audio
sd.wait()  # Wait until audio is done playing
print("Audio playback finished.")

if name == "main": # ANA DÖNGÜ
# İşaretler için LSL akışını ayarlayın
stream_name = 'AudioMarkers'
stream_type = 'Markers'
n_chans = 1
sr = 0 # İşaretler düzensiz olduğu için örnekleme hızını 0 olarak ayarlayın
chan_format = 'int32'
marker_id = 'uniqueMarkerID12345'

info = StreamInfo(stream_name, stream_type, n_chans, sr, chan_format, marker_id)
outlet = StreamOutlet(info) # create LSL outlet

# Keep the script running and wait for ENTER key to play audio and send marker
while True:
    wait_for_keypress()
    audio_filepath = "/path/to/your/audio_file.wav"  # replace with correct path to your audio file
    AudioMarker(audio_filepath, outlet)
    # After playing audio and sending a marker, the script goes back to waiting for the next keypress</code></pre><p><em><strong>**By running this file (even before playing the audio), you've initiated an LSL stream through an outlet</strong></em><strong>. Now we'll view that stream in LabRecorder</strong></p><p><strong>STEP 5 - Use LabRecorder to view and save all LSL streams</strong></p><ol><li data-preset-tag="p"><p>Open LabRecorder</p></li><li data-preset-tag="p"><p>Press <em><strong>Update</strong></em>. The available LSL streams should be visible in the stream list<br> • You should be able to see streams from both EmotivPROs (usually called "EmotivDataStream") and the marker stream (called "AudioMarkers")</p></li><li data-preset-tag="p"><p>Click <em><strong>Browse</strong></em> to select a location to store data (and set other parameters)</p></li><li data-preset-tag="p"><p>Select all streams and press <em><strong>Record</strong></em> to start recording</p></li><li data-preset-tag="p"><p>Click Stop when you want to end the recording</p></li></ol><p><br></p><img alt="" src="https://framerusercontent.com/images/HFGuJF9ErVu2Jxrgtqt11tl0No.jpg"><h2><strong>Working with the data</strong></h2><p><strong>LabRecorder outputs an XDF file (Extensible Data Format) that contains data from all the streams. XDF files are structured into, </strong><em><strong>streams</strong></em><strong>, each with a different </strong><em><strong>header</strong></em><strong> that describes what it contains (device name, data type, sampling rate, channels, and more). You can use the below codeblock to open your XDF file and display some basic information.</strong></p><pre data-language="JSX"><code>

**Bu dosyayı çalıştırarak (ses çalmak öncesinde bile), bir çıkış üzerinden bir LSL akışı başlattınız. Şimdi bu akışı LabRecorder'da görüntüleyeceğiz

ADIM 5 - Tüm LSL akışlarını görüntülemek ve kaydetmek için LabRecorder'ı kullanın

  1. LabRecorder'ı açın

  2. Güncelle'ye basın. Kullanılabilir LSL akışları akış listesinde görünmelidir
    • EmotivPRO'lar (genellikle "EmotivDataStream" adıyla anılır) ve işaret akışını ("AudioMarkers" olarak adlandırılır) görebilmelisiniz

  3. Gözat'a tıklayarak veri saklamak için bir yer seçin (ve diğer parametreleri ayarlayın)

  4. Tüm akışları seçin ve kayda başlamak için Kaydet'e basın

  5. Kaydı sonlandırmak istediğinizde Durdur'a tıklayın



Veri ile çalışmak

LabRecorder, tüm akışlardan verileri içeren bir XDF dosyası (Genişletilebilir Veri Formatı) çıktısı verir. XDF dosyaları, her biri ne içerdiğini açıklayan farklı bir başlık ile akışlar olarak yapılandırılır (cihaz adı, veri türü, örnekleme oranı, kanallar ve daha fazlası). XDF dosyanızı açmak ve bazı temel bilgileri görüntülemek için aşağıdaki kod bloğunu kullanabilirsiniz.

Bu örnek script, EmotivPRO yazılımından toplanan EEG verilerini içe aktarmak ve açıklamak için birkaç temel işlevi gösterir. MNE'yi bir XDF dosyasını yüklemek, bazı temel meta verileri yazdırmak, bir info nesnesi oluşturmak ve güç spektrumu çizmek için kullanır."""

import pyxdf
import mne
import matplotlib.pyplot as plt
import numpy as np

XDF dosyanızın yolu

data_path = '/path/to/your/xdf_file.xdf'

XDF dosyasını yükle

streams, fileheader = pyxdf.load_xdf(data_path)
print("XDF Dosya Başlığı:", fileheader)
print("Bulunan akış sayısı:", len(streams))

for i, stream in enumerate(streams):
print("\nAkış", i + 1)
print("Akış Adı:", stream['info']['name'][0])
print("Akış Türü:", stream['info']['type'][0])
print("Kanal Sayısı:", stream['info']['channel_count'][0])
sfreq = float(stream['info']['nominal_srate'][0])
print("Örnekleme Oranı:", sfreq)
print("Örnek Sayısı:", len(stream['time_series']))
print("İlk 5 veri noktasını yazdır:", stream['time_series'][:5])

channel_names = [chan['label'][0] for chan in stream['info']['desc'][0]['channels'][0]['channel']]
print("Channel Names:", channel_names)
channel_types = 'eeg'
MNE info nesnesi oluştur

info = mne.create_info(channel_names, sfreq, channel_types)
data = np.array(stream['time_series']).T # Veri dönüştürülmelidir: kanallar x örnekler
raw = mne.io.RawArray(data, info)
raw.plot_psd(fmax=50) # basit bir spektrogram (güç spektral yoğunluğu) çizin

Ek kaynaklar

  • EMOTIV GitHub'dan bu eğitimi bir Jupyter not defteri olarak indirin

  • LSL çevrimiçi belgelerine göz atın, GitHub'daki resmi README dosyası dahil

  • Veri toplama için desteklenen bir veya daha fazla cihaz edinmeniz gerekecek

  • Tüm EMOTIV beyin cihazları, EmotivPRO yazılımına bağlanır; burada LSL, veri akışlarını göndermek ve almak için yerleşik yetenekler sunar

Ek kaynaklar:

  • EMOTIV'in cihazlarını kullanarak LSL çalıştırmak için kod, örnek scriptlerle birlikte

  • YouTube'da faydalı LSL demosu

  • Tüm bağlı kütüphaneler için SCCN LSL GitHub deposu

  • Bir alt modül ve uygulama koleksiyonu için GitHub deposu

  • Hyperscanning çalışmaları için HyPyP analiz boru hattı

Roshini Randeniya ve Lucas Kleine tarafından

Operasyon:
Komut satırında çalıştırıldığında, bu script hemen bir LSL akışı başlatır. 'Enter' tuşuna basıldığında, bir tetikleyici gönderir ve bir ses dosyası çalar."""

import sounddevice as sd
import soundfile as sf
from pylsl import StreamInfo, StreamOutlet

def wait_for_keypress():
print("Ses çalmayı başlatmak ve bir LSL işareti göndermek için ENTER tuşuna basın.")

while True: # This loop waits for a keyboard input
    input_str = input()  # Wait for input from the terminal
    if input_str == "":  # If the enter key is pressed, proceed
        break

def AudioMarker(audio_file, outlet): # ses çalma ve işaret gönderme fonksiyonu
data, fs = sf.read(audio_file) # Ses dosyasını yükleyin

print("Playing audio and sending LSL marker...")
marker_val = [1]
outlet.push_sample(marker_val) # Send marker indicating the start of audio playback
sd.play(data, fs) # play the audio
sd.wait()  # Wait until audio is done playing
print("Audio playback finished.")

if name == "main": # ANA DÖNGÜ
# İşaretler için LSL akışını ayarlayın
stream_name = 'AudioMarkers'
stream_type = 'Markers'
n_chans = 1
sr = 0 # İşaretler düzensiz olduğu için örnekleme hızını 0 olarak ayarlayın
chan_format = 'int32'
marker_id = 'uniqueMarkerID12345'

info = StreamInfo(stream_name, stream_type, n_chans, sr, chan_format, marker_id)
outlet = StreamOutlet(info) # create LSL outlet

# Keep the script running and wait for ENTER key to play audio and send marker
while True:
    wait_for_keypress()
    audio_filepath = "/path/to/your/audio_file.wav"  # replace with correct path to your audio file
    AudioMarker(audio_filepath, outlet)
    # After playing audio and sending a marker, the script goes back to waiting for the next keypress</code></pre><p><em><strong>**By running this file (even before playing the audio), you've initiated an LSL stream through an outlet</strong></em><strong>. Now we'll view that stream in LabRecorder</strong></p><p><strong>STEP 5 - Use LabRecorder to view and save all LSL streams</strong></p><ol><li data-preset-tag="p"><p>Open LabRecorder</p></li><li data-preset-tag="p"><p>Press <em><strong>Update</strong></em>. The available LSL streams should be visible in the stream list<br> • You should be able to see streams from both EmotivPROs (usually called "EmotivDataStream") and the marker stream (called "AudioMarkers")</p></li><li data-preset-tag="p"><p>Click <em><strong>Browse</strong></em> to select a location to store data (and set other parameters)</p></li><li data-preset-tag="p"><p>Select all streams and press <em><strong>Record</strong></em> to start recording</p></li><li data-preset-tag="p"><p>Click Stop when you want to end the recording</p></li></ol><p><br></p><img alt="" src="https://framerusercontent.com/images/HFGuJF9ErVu2Jxrgtqt11tl0No.jpg"><h2><strong>Working with the data</strong></h2><p><strong>LabRecorder outputs an XDF file (Extensible Data Format) that contains data from all the streams. XDF files are structured into, </strong><em><strong>streams</strong></em><strong>, each with a different </strong><em><strong>header</strong></em><strong> that describes what it contains (device name, data type, sampling rate, channels, and more). You can use the below codeblock to open your XDF file and display some basic information.</strong></p><pre data-language="JSX"><code>

**Bu dosyayı çalıştırarak (ses çalmak öncesinde bile), bir çıkış üzerinden bir LSL akışı başlattınız. Şimdi bu akışı LabRecorder'da görüntüleyeceğiz

ADIM 5 - Tüm LSL akışlarını görüntülemek ve kaydetmek için LabRecorder'ı kullanın

  1. LabRecorder'ı açın

  2. Güncelle'ye basın. Kullanılabilir LSL akışları akış listesinde görünmelidir
    • EmotivPRO'lar (genellikle "EmotivDataStream" adıyla anılır) ve işaret akışını ("AudioMarkers" olarak adlandırılır) görebilmelisiniz

  3. Gözat'a tıklayarak veri saklamak için bir yer seçin (ve diğer parametreleri ayarlayın)

  4. Tüm akışları seçin ve kayda başlamak için Kaydet'e basın

  5. Kaydı sonlandırmak istediğinizde Durdur'a tıklayın



Veri ile çalışmak

LabRecorder, tüm akışlardan verileri içeren bir XDF dosyası (Genişletilebilir Veri Formatı) çıktısı verir. XDF dosyaları, her biri ne içerdiğini açıklayan farklı bir başlık ile akışlar olarak yapılandırılır (cihaz adı, veri türü, örnekleme oranı, kanallar ve daha fazlası). XDF dosyanızı açmak ve bazı temel bilgileri görüntülemek için aşağıdaki kod bloğunu kullanabilirsiniz.

Bu örnek script, EmotivPRO yazılımından toplanan EEG verilerini içe aktarmak ve açıklamak için birkaç temel işlevi gösterir. MNE'yi bir XDF dosyasını yüklemek, bazı temel meta verileri yazdırmak, bir info nesnesi oluşturmak ve güç spektrumu çizmek için kullanır."""

import pyxdf
import mne
import matplotlib.pyplot as plt
import numpy as np

XDF dosyanızın yolu

data_path = '/path/to/your/xdf_file.xdf'

XDF dosyasını yükle

streams, fileheader = pyxdf.load_xdf(data_path)
print("XDF Dosya Başlığı:", fileheader)
print("Bulunan akış sayısı:", len(streams))

for i, stream in enumerate(streams):
print("\nAkış", i + 1)
print("Akış Adı:", stream['info']['name'][0])
print("Akış Türü:", stream['info']['type'][0])
print("Kanal Sayısı:", stream['info']['channel_count'][0])
sfreq = float(stream['info']['nominal_srate'][0])
print("Örnekleme Oranı:", sfreq)
print("Örnek Sayısı:", len(stream['time_series']))
print("İlk 5 veri noktasını yazdır:", stream['time_series'][:5])

channel_names = [chan['label'][0] for chan in stream['info']['desc'][0]['channels'][0]['channel']]
print("Channel Names:", channel_names)
channel_types = 'eeg'
MNE info nesnesi oluştur

info = mne.create_info(channel_names, sfreq, channel_types)
data = np.array(stream['time_series']).T # Veri dönüştürülmelidir: kanallar x örnekler
raw = mne.io.RawArray(data, info)
raw.plot_psd(fmax=50) # basit bir spektrogram (güç spektral yoğunluğu) çizin

Ek kaynaklar

  • EMOTIV GitHub'dan bu eğitimi bir Jupyter not defteri olarak indirin

  • LSL çevrimiçi belgelerine göz atın, GitHub'daki resmi README dosyası dahil

  • Veri toplama için desteklenen bir veya daha fazla cihaz edinmeniz gerekecek

  • Tüm EMOTIV beyin cihazları, EmotivPRO yazılımına bağlanır; burada LSL, veri akışlarını göndermek ve almak için yerleşik yetenekler sunar

Ek kaynaklar:

  • EMOTIV'in cihazlarını kullanarak LSL çalıştırmak için kod, örnek scriptlerle birlikte

  • YouTube'da faydalı LSL demosu

  • Tüm bağlı kütüphaneler için SCCN LSL GitHub deposu

  • Bir alt modül ve uygulama koleksiyonu için GitHub deposu

  • Hyperscanning çalışmaları için HyPyP analiz boru hattı

Okumaya devam et

Sinirsel Osilasyonların Temelleri

© 2026 Emotiv, Tüm hakları saklıdır.

Consent

Gizlilik Seçenekleriniz (Çerez Ayarları)

*Açıklama – EMOTIV ürünleri yalnızca araştırma uygulamaları ve kişisel kullanım için tasarlanmıştır. Ürünlerimiz, AB direktifi 93/42/EEC'de tanımlandığı gibi Tıbbi Cihazlar olarak satılmamaktadır. Ürünlerimiz hastalıkların teşhisi veya tedavisi için tasarlanmamış veya niyet edilmemiştir.

Çeviriler Hakkında Not: Bu web sitesinin İngilizce dışındaki sürümleri, sizin kolaylığınız için yapay zeka kullanılarak çevrilmiştir. Doğruluk için çabalasak da, otomatik çeviriler hatalar veya orijinal metinden farklı incelikler içerebilir. En doğru bilgi için lütfen bu sitenin İngilizce versiyonuna başvurun.

© 2026 Emotiv, Tüm hakları saklıdır.

Consent

Gizlilik Seçenekleriniz (Çerez Ayarları)

*Açıklama – EMOTIV ürünleri yalnızca araştırma uygulamaları ve kişisel kullanım için tasarlanmıştır. Ürünlerimiz, AB direktifi 93/42/EEC'de tanımlandığı gibi Tıbbi Cihazlar olarak satılmamaktadır. Ürünlerimiz hastalıkların teşhisi veya tedavisi için tasarlanmamış veya niyet edilmemiştir.

Çeviriler Hakkında Not: Bu web sitesinin İngilizce dışındaki sürümleri, sizin kolaylığınız için yapay zeka kullanılarak çevrilmiştir. Doğruluk için çabalasak da, otomatik çeviriler hatalar veya orijinal metinden farklı incelikler içerebilir. En doğru bilgi için lütfen bu sitenin İngilizce versiyonuna başvurun.

© 2026 Emotiv, Tüm hakları saklıdır.

Consent

Gizlilik Seçenekleriniz (Çerez Ayarları)

*Açıklama – EMOTIV ürünleri yalnızca araştırma uygulamaları ve kişisel kullanım için tasarlanmıştır. Ürünlerimiz, AB direktifi 93/42/EEC'de tanımlandığı gibi Tıbbi Cihazlar olarak satılmamaktadır. Ürünlerimiz hastalıkların teşhisi veya tedavisi için tasarlanmamış veya niyet edilmemiştir.

Çeviriler Hakkında Not: Bu web sitesinin İngilizce dışındaki sürümleri, sizin kolaylığınız için yapay zeka kullanılarak çevrilmiştir. Doğruluk için çabalasak da, otomatik çeviriler hatalar veya orijinal metinden farklı incelikler içerebilir. En doğru bilgi için lütfen bu sitenin İngilizce versiyonuna başvurun.