本文整理汇总了Python中mne.read_label函数的典型用法代码示例。如果您正苦于以下问题:Python read_label函数的具体用法?Python read_label怎么用?Python read_label使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了read_label函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: test_label_io
def test_label_io():
"""Test IO of label files
"""
label = read_label(label_fname)
label.save(op.join(tempdir, 'foo'))
label2 = read_label(op.join(tempdir, 'foo-lh.label'))
assert_labels_equal(label, label2)
开发者ID:mshamalainen,项目名称:mne-python,代码行数:7,代码来源:test_label.py
示例2: _sortlist
def _sortlist(label_list, stc, src):
sort_list = []
sort_list.append(label_list[0])
for test_fn in label_list[1:]:
test_label = mne.read_label(test_fn)
i = 0
insert = False
while (i < len(sort_list)) and insert == False:
class_label = mne.read_label(sort_list[i])
class_pca = stc.extract_label_time_course(class_label, src, mode='pca_flip')
test_pca = stc.extract_label_time_course(test_label, src, mode='pca_flip')
class_pca = np.squeeze(class_pca)
test_pca = np.squeeze(test_pca)
class_pow = np.sum(class_pca ** 2)
test_pow = np.sum(test_pca ** 2)
# sort the list
if test_pow < class_pow:
sort_list.insert(i, test_fn)
insert = True
i = i + 1
if insert == False:
sort_list.append(test_fn)
return sort_list
开发者ID:dongqunxi,项目名称:ChronoProc,代码行数:25,代码来源:cluster_ROIs.py
示例3: test_label_io
def test_label_io():
"""Test IO of label files
"""
label = read_label(label_fname)
label.save('foo')
label2 = read_label('foo-lh.label')
assert_labels_equal(label, label2)
开发者ID:starzynski,项目名称:mne-python,代码行数:7,代码来源:test_label.py
示例4: test_label_subject
def test_label_subject():
"""Test label subject name extraction."""
label = read_label(label_fname)
assert_is(label.subject, None)
assert ('unknown' in repr(label))
label = read_label(label_fname, subject='fsaverage')
assert (label.subject == 'fsaverage')
assert ('fsaverage' in repr(label))
开发者ID:kambysese,项目名称:mne-python,代码行数:8,代码来源:test_label.py
示例5: test_label_subject
def test_label_subject():
"""Test label subject name extraction
"""
label = read_label(label_fname)
assert_is(label.subject, None)
assert_true("unknown" in repr(label))
label = read_label(label_fname, subject="fsaverage")
assert_true(label.subject == "fsaverage")
assert_true("fsaverage" in repr(label))
开发者ID:YoheiOseki,项目名称:mne-python,代码行数:9,代码来源:test_label.py
示例6: test_label_io
def test_label_io():
"""Test IO of label files
"""
label = read_label(label_fname)
write_label('foo', label)
label2 = read_label('foo-lh.label')
for key in label.keys():
if key in ['comment', 'hemi']:
assert_true(label[key] == label2[key])
else:
assert_array_almost_equal(label[key], label2[key], 5)
开发者ID:sudo-nim,项目名称:mne-python,代码行数:12,代码来源:test_label.py
示例7: test_source_space
def test_source_space():
"Test SourceSpace Dimension"
subject = 'fsaverage'
data_path = mne.datasets.sample.data_path()
mri_sdir = os.path.join(data_path, 'subjects')
mri_dir = os.path.join(mri_sdir, subject)
src_path = os.path.join(mri_dir, 'bem', subject + '-ico-5-src.fif')
label_dir = os.path.join(mri_dir, 'label')
label_ba1 = mne.read_label(os.path.join(label_dir, 'lh.BA1.label'))
label_v1 = mne.read_label(os.path.join(label_dir, 'lh.V1.label'))
label_mt = mne.read_label(os.path.join(label_dir, 'lh.MT.label'))
label_ba1_v1 = label_ba1 + label_v1
label_v1_mt = label_v1 + label_mt
src = mne.read_source_spaces(src_path)
source = SourceSpace((src[0]['vertno'], src[1]['vertno']), subject,
'ico-5', mri_sdir)
index = source.dimindex(label_v1)
source_v1 = source[index]
index = source.dimindex(label_ba1_v1)
source_ba1_v1 = source[index]
index = source.dimindex(label_v1_mt)
source_v1_mt = source[index]
index = source_ba1_v1.dimindex(source_v1_mt)
source_v1_intersection = source_ba1_v1[index]
assert_source_space_equal(source_v1, source_v1_intersection)
# index from label
index = source.index_for_label(label_v1)
assert_array_equal(index.source[index.x].vertno[0],
np.intersect1d(source.lh_vertno, label_v1.vertices, 1))
# parcellation and cluster localization
parc = mne.read_labels_from_annot(subject, parc='aparc', subjects_dir=mri_sdir)
indexes = [source.index_for_label(label) for label in parc
if len(label) > 10]
x = np.vstack([index.x for index in indexes])
ds = source._cluster_properties(x)
for i in xrange(ds.n_cases):
eq_(ds[i, 'location'], parc[i].name)
# multiple labels
lingual_index = source.dimindex('lingual-lh')
cuneus_index = source.dimindex('cuneus-lh')
assert_array_equal(source.dimindex(('cuneus-lh', 'lingual-lh')),
np.logical_or(cuneus_index, lingual_index))
lingual_source = source[lingual_index]
cuneus_source = source[cuneus_index]
sub_source = source[source.dimindex(('cuneus-lh', 'lingual-lh'))]
eq_(sub_source[sub_source.dimindex('lingual-lh')], lingual_source)
eq_(sub_source[sub_source.dimindex('cuneus-lh')], cuneus_source)
eq_(len(sub_source), len(lingual_source) + len(cuneus_source))
开发者ID:YoheiOseki,项目名称:Eelbrain,代码行数:52,代码来源:test_data.py
示例8: _merge_rois
def _merge_rois(mer_path, label_list):
"""
Function to merge a list of given labels.
Parameters
----------
mer_path: str
The directory for storing merged ROIs.
label_list: list
Labels to be merged
"""
class_list = []
class_list.append(label_list[0])
for test_fn in label_list[1:]:
test_label = mne.read_label(test_fn)
i = 0
belong = False
while (i < len(class_list)) and (belong is False):
class_label = mne.read_label(class_list[i])
label_name = class_label.name
if test_label.hemi != class_label.hemi:
i = i + 1
continue
overlapped = len(np.intersect1d(test_label.vertices,
class_label.vertices))
if overlapped > 0:
com_label = test_label + class_label
pre_test = test_label.name.split('_')[0]
pre_class = class_label.name.split('_')[0]
# label_name = pre_class + '_%s-%s' %(pre_test,class_label.name.split('-')[-1])
if pre_test != pre_class:
pre_class += ',%s' % pre_test
pre_class = list(set(pre_class.split(',')))
new_pre = ''
for pre in pre_class[:-1]:
new_pre += '%s,' % pre
new_pre = pre_class[-1]
label_name = '%s_' % (new_pre) + \
class_label.name.split('_')[-1]
os.remove(class_list[i])
os.remove(test_fn)
fn_newlabel = mer_path + '%s.label' %label_name
if os.path.isfile(fn_newlabel):
fn_newlabel = fn_newlabel[:fn_newlabel.rfind('_')] + '_new, %s' % fn_newlabel.split('_')[-1]
mne.write_label(fn_newlabel, com_label)
class_list[i] = fn_newlabel
belong = True
i = i + 1
if belong is False:
class_list.append(test_fn)
return len(class_list)
开发者ID:dongqunxi,项目名称:jumeg,代码行数:51,代码来源:apply_merge.py
示例9: _cluster_rois
def _cluster_rois(sel_path, label_list, stc, src, min_dist, weight, mni_subject='fsaverage'):
"""
subfunctions of merge_ROIs
----------
mer_path: str
The directory for storing merged ROIs.
label_list: list
Labels to be merged
"""
class_list = []
class_list.append(label_list[0])
for test_fn in label_list[1:]:
test_label = mne.read_label(test_fn)
i = 0
belong = False
while (i < len(class_list)) and (belong is False):
class_label = mne.read_label(class_list[i])
if test_label.hemi != class_label.hemi:
i = i + 1
continue
else:
# Get the representative STCs for class label and test label
class_pca = stc.extract_label_time_course(class_label, src, mode='pca_flip')
test_pca = stc.extract_label_time_course(test_label, src, mode='pca_flip')
# Mark the more apparent ROI
exch = False
class_pca_pow = np.sum(class_pca ** 2)
test_pca_pow = np.sum(test_pca ** 2)
max_pca = class_pca
if np.max(class_pca_pow) < np.max(test_pca_pow):
max_pca = test_pca
exch = True
# Compute the similarity
thre = max_pca.std() * weight
diff = np.abs(np.linalg.norm(class_pca) - np.linalg.norm(test_pca))
if diff < thre:
if exch == True:
os.remove(class_list[i])
class_list[i] = test_fn
elif exch == False:
os.remove(test_fn)
belong = True
i = i + 1
if belong is False:
class_list.append(test_fn)
return len(class_list)
开发者ID:dongqunxi,项目名称:ChronoProc,代码行数:50,代码来源:avg_ROIs_definition03.py
示例10: test_label_io
def test_label_io():
"""Test IO of label files
"""
label = read_label(label_fname)
label.save(op.join(tempdir, 'foo'))
label2 = read_label(op.join(tempdir, 'foo-lh.label'))
assert_labels_equal(label, label2)
# pickling
dest = op.join(tempdir, 'foo.pickled')
with open(dest, 'w') as fid:
pickle.dump(label, fid, pickle.HIGHEST_PROTOCOL)
with open(dest) as fid:
label2 = pickle.load(fid)
assert_labels_equal(label, label2)
开发者ID:dichaelen,项目名称:mne-python,代码行数:15,代码来源:test_label.py
示例11: test_label_time_course
def test_label_time_course():
"""Test extracting label data from SourceEstimate"""
values, times, vertices = label_time_courses(real_label_fname, stc_fname)
stc = read_source_estimate(stc_fname)
label_lh = read_label(real_label_fname)
stc_lh = stc.in_label(label_lh)
assert_array_almost_equal(stc_lh.data, values)
assert_array_almost_equal(stc_lh.times, times)
assert_array_almost_equal(stc_lh.vertno[0], vertices)
label_rh = read_label(real_label_rh_fname)
stc_rh = stc.in_label(label_rh)
label_bh = label_rh + label_lh
stc_bh = stc.in_label(label_bh)
assert_array_equal(stc_bh.data, np.vstack((stc_lh.data, stc_rh.data)))
开发者ID:Anevar,项目名称:mne-python,代码行数:15,代码来源:test_label.py
示例12: test_morph
def test_morph():
"""Test inter-subject label morphing
"""
label_orig = read_label(real_label_fname)
label_orig.subject = 'sample'
# should work for specifying vertices for both hemis, or just the
# hemi of the given label
vals = list()
for grade in [5, [np.arange(10242), np.arange(10242)], np.arange(10242)]:
label = label_orig.copy()
# this should throw an error because the label has all zero values
assert_raises(ValueError, label.morph, 'sample', 'fsaverage')
label.values.fill(1)
label = label.morph(None, 'fsaverage', 5, grade, subjects_dir, 1)
label = label.morph('fsaverage', 'sample', 5, None, subjects_dir, 2)
assert_true(np.mean(in1d(label_orig.vertices, label.vertices)) == 1.0)
assert_true(len(label.vertices) < 3 * len(label_orig.vertices))
vals.append(label.vertices)
assert_array_equal(vals[0], vals[1])
# make sure label smoothing can run
assert_equal(label.subject, 'sample')
verts = [np.arange(10242), np.arange(10242)]
for hemi in ['lh', 'rh']:
label.hemi = hemi
label.morph(None, 'fsaverage', 5, verts, subjects_dir, 2)
assert_raises(TypeError, label.morph, None, 1, 5, verts,
subjects_dir, 2)
assert_raises(TypeError, label.morph, None, 'fsaverage', 5.5, verts,
subjects_dir, 2)
with warnings.catch_warnings(record=True): # morph map could be missing
label.smooth(subjects_dir=subjects_dir) # make sure this runs
开发者ID:wronk,项目名称:mne-python,代码行数:31,代码来源:test_label.py
示例13: test_morph
def test_morph():
"""Test inter-subject label morphing
"""
label_orig = read_label(real_label_fname)
label_orig.subject = "sample"
# should work for specifying vertices for both hemis, or just the
# hemi of the given label
vals = list()
for grade in [5, [np.arange(10242), np.arange(10242)], np.arange(10242)]:
label = label_orig.copy()
# this should throw an error because the label has all zero values
assert_raises(ValueError, label.morph, "sample", "fsaverage")
label.values.fill(1)
label.morph(None, "fsaverage", 5, grade, subjects_dir, 1, copy=False)
label.morph("fsaverage", "sample", 5, None, subjects_dir, 2, copy=False)
assert_true(np.mean(in1d(label_orig.vertices, label.vertices)) == 1.0)
assert_true(len(label.vertices) < 3 * len(label_orig.vertices))
vals.append(label.vertices)
assert_array_equal(vals[0], vals[1])
# make sure label smoothing can run
assert_equal(label.subject, "sample")
verts = [np.arange(10242), np.arange(10242)]
for hemi in ["lh", "rh"]:
label.hemi = hemi
label.morph(None, "fsaverage", 5, verts, subjects_dir, 2)
assert_raises(TypeError, label.morph, None, 1, 5, verts, subjects_dir, 2)
assert_raises(TypeError, label.morph, None, "fsaverage", 5.5, verts, subjects_dir, 2)
label.smooth(subjects_dir=subjects_dir) # make sure this runs
开发者ID:YoheiOseki,项目名称:mne-python,代码行数:28,代码来源:test_label.py
示例14: _get_fwd_labels
def _get_fwd_labels():
fwd = read_forward_solution(fname_fwd)
fwd = convert_forward_solution(fwd, force_fixed=True, use_cps=True)
fwd = pick_types_forward(fwd, meg=True, eeg=False)
labels = [read_label(op.join(data_path, 'MEG', 'sample', 'labels',
'%s.label' % label)) for label in label_names]
return fwd, labels
开发者ID:Eric89GXL,项目名称:mne-python,代码行数:7,代码来源:test_source.py
示例15: test_label_in_src
def test_label_in_src():
"""Test label in src"""
src = read_source_spaces(src_fname)
label = read_label(v1_label_fname)
# construct label from source space vertices
vert_in_src = np.intersect1d(label.vertices, src[0]['vertno'], True)
where = in1d(label.vertices, vert_in_src)
pos_in_src = label.pos[where]
values_in_src = label.values[where]
label_src = Label(vert_in_src, pos_in_src, values_in_src,
hemi='lh').fill(src)
# check label vertices
vertices_status = in1d(src[0]['nearest'], label.vertices)
vertices_in = np.nonzero(vertices_status)[0]
vertices_out = np.nonzero(np.logical_not(vertices_status))[0]
assert_array_equal(label_src.vertices, vertices_in)
assert_array_equal(in1d(vertices_out, label_src.vertices), False)
# check values
value_idx = digitize(src[0]['nearest'][vertices_in], vert_in_src, True)
assert_array_equal(label_src.values, values_in_src[value_idx])
# test exception
vertices = np.append([-1], vert_in_src)
assert_raises(ValueError, Label(vertices, hemi='lh').fill, src)
开发者ID:wronk,项目名称:mne-python,代码行数:27,代码来源:test_label.py
示例16: test_generate_sparse_stc
def test_generate_sparse_stc():
""" Test generation of sparse source estimate """
labels = [read_label(op.join(data_path, 'MEG', 'sample', 'labels',
'%s.label' % label)) for label in label_names]
n_times = 10
tmin = 0
tstep = 1e-3
stc_data = np.ones((len(labels), n_times))\
* np.arange(len(labels))[:, None]
stc_1 = generate_sparse_stc(fwd['src'], labels, stc_data, tmin, tstep, 0)
for i, label in enumerate(labels):
if label.hemi == 'lh':
hemi_idx = 0
else:
hemi_idx = 1
idx = np.intersect1d(stc_1.vertno[hemi_idx], label.vertices)
idx = np.searchsorted(stc_1.vertno[hemi_idx], idx)
if hemi_idx == 1:
idx += len(stc_1.vertno[0])
assert_true(np.all(stc_1.data[idx] == float(i)))
assert_true(stc_1.data.shape[0] == len(labels))
assert_true(stc_1.data.shape[1] == n_times)
# make sure we get the same result when using the same seed
stc_2 = generate_sparse_stc(fwd['src'], labels, stc_data, tmin, tstep, 0)
assert_array_equal(stc_1.lh_vertno, stc_2.lh_vertno)
assert_array_equal(stc_1.rh_vertno, stc_2.rh_vertno)
开发者ID:emanuele,项目名称:mne-python,代码行数:35,代码来源:test_source.py
示例17: test_morph
def test_morph():
"""Test inter-subject label morphing
"""
label_orig = read_label(real_label_fname)
label_orig.subject = 'sample'
# should work for specifying vertices for both hemis, or just the
# hemi of the given label
vals = list()
for grade in [5, [np.arange(10242), np.arange(10242)], np.arange(10242)]:
label = label_orig.copy()
# this should throw an error because the label has all zero values
assert_raises(ValueError, label.morph, 'sample', 'fsaverage')
label.values.fill(1)
label.morph(None, 'fsaverage', 5, grade, subjects_dir, 2,
copy=False)
label.morph('fsaverage', 'sample', 5, None, subjects_dir, 2,
copy=False)
assert_true(np.mean(in1d(label_orig.vertices, label.vertices)) == 1.0)
assert_true(len(label.vertices) < 3 * len(label_orig.vertices))
vals.append(label.vertices)
assert_array_equal(vals[0], vals[1])
# make sure label smoothing can run
label.morph(label.subject, 'fsaverage', 5,
[np.arange(10242), np.arange(10242)], subjects_dir, 2,
copy=False)
# subject name should be inferred now
label.smooth(subjects_dir=subjects_dir)
开发者ID:Anevar,项目名称:mne-python,代码行数:27,代码来源:test_label.py
示例18: test_simulate_stc
def test_simulate_stc():
""" Test generation of source estimate """
fwd = read_forward_solution_meg(fname_fwd, force_fixed=True)
labels = [read_label(op.join(data_path, "MEG", "sample", "labels", "%s.label" % label)) for label in label_names]
mylabels = []
for i, label in enumerate(labels):
new_label = Label(
vertices=label.vertices,
pos=label.pos,
values=2 * i * np.ones(len(label.values)),
hemi=label.hemi,
comment=label.comment,
)
mylabels.append(new_label)
n_times = 10
tmin = 0
tstep = 1e-3
stc_data = np.ones((len(labels), n_times))
stc = simulate_stc(fwd["src"], mylabels, stc_data, tmin, tstep)
for label in labels:
if label.hemi == "lh":
hemi_idx = 0
else:
hemi_idx = 1
idx = np.intersect1d(stc.vertices[hemi_idx], label.vertices)
idx = np.searchsorted(stc.vertices[hemi_idx], idx)
if hemi_idx == 1:
idx += len(stc.vertices[0])
assert_true(np.all(stc.data[idx] == 1.0))
assert_true(stc.data[idx].shape[1] == n_times)
# test with function
def fun(x):
return x ** 2
stc = simulate_stc(fwd["src"], mylabels, stc_data, tmin, tstep, fun)
# the first label has value 0, the second value 2, the third value 6
for i, label in enumerate(labels):
if label.hemi == "lh":
hemi_idx = 0
else:
hemi_idx = 1
idx = np.intersect1d(stc.vertices[hemi_idx], label.vertices)
idx = np.searchsorted(stc.vertices[hemi_idx], idx)
if hemi_idx == 1:
idx += len(stc.vertices[0])
res = ((2.0 * i) ** 2.0) * np.ones((len(idx), n_times))
assert_array_almost_equal(stc.data[idx], res)
开发者ID:jasmainak,项目名称:mne-python,代码行数:59,代码来源:test_source.py
示例19: fiff_mne
def fiff_mne(ds, fwd='{fif}*fwd.fif', cov='{fif}*cov.fif', label=None, name=None,
tstart= -0.1, tstop=0.6, baseline=(None, 0)):
"""
adds data from one label as
"""
if name is None:
if label:
_, lbl = os.path.split(label)
lbl, _ = os.path.splitext(lbl)
name = lbl.replace('-', '_')
else:
name = 'stc'
info = ds.info['info']
raw = ds.info['raw']
fif_name = raw.info['filename']
fif_name, _ = os.path.splitext(fif_name)
if fif_name.endswith('raw'):
fif_name = fif_name[:-3]
fwd = fwd.format(fif=fif_name)
if '*' in fwd:
d, n = os.path.split(fwd)
names = fnmatch.filter(os.listdir(d), n)
if len(names) == 1:
fwd = os.path.join(d, names[0])
else:
raise IOError("No unique fwd file matching %r" % fwd)
cov = cov.format(fif=fif_name)
if '*' in cov:
d, n = os.path.split(cov)
names = fnmatch.filter(os.listdir(d), n)
if len(names) == 1:
cov = os.path.join(d, names[0])
else:
raise IOError("No unique cov file matching %r" % cov)
fwd = mne.read_forward_solution(fwd, force_fixed=False, surf_ori=True)
cov = mne.Covariance(cov)
inv = _mn.make_inverse_operator(info, fwd, cov, loose=0.2, depth=0.8)
epochs = mne_Epochs(ds, tstart=tstart, tstop=tstop, baseline=baseline)
# mne example:
snr = 3.0
lambda2 = 1.0 / snr ** 2
if label is not None:
label = mne.read_label(label)
stcs = _mn.apply_inverse_epochs(epochs, inv, lambda2, dSPM=False, label=label)
x = np.vstack(s.data.mean(0) for s in stcs)
s = stcs[0]
dims = ('case', var(s.times, 'time'),)
ds[name] = ndvar(x, dims, properties=None, info='')
return stcs
开发者ID:teonbrooks,项目名称:Eelbrain,代码行数:59,代码来源:fiff.py
示例20: _get_data
def _get_data(tmin=-0.1, tmax=0.15, all_forward=True, epochs=True,
epochs_preload=True, data_cov=True):
"""Read in data used in tests."""
label = mne.read_label(fname_label)
events = mne.read_events(fname_event)
raw = mne.io.read_raw_fif(fname_raw, preload=True)
forward = mne.read_forward_solution(fname_fwd)
if all_forward:
forward_surf_ori = _read_forward_solution_meg(
fname_fwd, surf_ori=True)
forward_fixed = _read_forward_solution_meg(
fname_fwd, force_fixed=True, surf_ori=True, use_cps=False)
forward_vol = _read_forward_solution_meg(fname_fwd_vol)
else:
forward_surf_ori = None
forward_fixed = None
forward_vol = None
event_id, tmin, tmax = 1, tmin, tmax
# Setup for reading the raw data
raw.info['bads'] = ['MEG 2443', 'EEG 053'] # 2 bad channels
# Set up pick list: MEG - bad channels
left_temporal_channels = mne.read_selection('Left-temporal')
picks = mne.pick_types(raw.info, meg=True, eeg=False, stim=True,
eog=True, ref_meg=False, exclude='bads',
selection=left_temporal_channels)
raw.pick_channels([raw.ch_names[ii] for ii in picks])
raw.info.normalize_proj() # avoid projection warnings
if epochs:
# Read epochs
epochs = mne.Epochs(
raw, events, event_id, tmin, tmax, proj=True,
baseline=(None, 0), preload=epochs_preload,
reject=dict(grad=4000e-13, mag=4e-12, eog=150e-6))
if epochs_preload:
epochs.resample(200, npad=0, n_jobs=2)
epochs.crop(0, None)
evoked = epochs.average()
info = evoked.info
else:
epochs = None
evoked = None
info = raw.info
noise_cov = mne.read_cov(fname_cov)
noise_cov['projs'] = [] # avoid warning
with warnings.catch_warnings(record=True): # bad proj
noise_cov = mne.cov.regularize(noise_cov, info, mag=0.05, grad=0.05,
eeg=0.1, proj=True)
if data_cov:
with warnings.catch_warnings(record=True): # too few samples
data_cov = mne.compute_covariance(epochs, tmin=0.04, tmax=0.145)
else:
data_cov = None
return raw, epochs, evoked, data_cov, noise_cov, label, forward,\
forward_surf_ori, forward_fixed, forward_vol
开发者ID:HSMin,项目名称:mne-python,代码行数:59,代码来源:test_lcmv.py
注:本文中的mne.read_label函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论