kschan0214 / sepia Goto Github PK
View Code? Open in Web Editor NEWMatlab GUI pipeline application for quantitative susceptibility mapping (QSM)
License: MIT License
Matlab GUI pipeline application for quantitative susceptibility mapping (QSM)
License: MIT License
Greetings and Regards.
I am writing an article, I cited sepia . But I did not find a reference to the whole brain referencing in your article.
Thank you for sending me the related reference.
Thanks
Hello! I have a question about the SepiaIOWrapper file. I get this error:
performing polynomial fitting...There was an error! Please check the command window/error message file for more information.
Output argument "b" (and maybe others) not assigned during call to "PolyFit".
Error in BackgroundRemovalMacro (line 106)
[,RDF,] = PolyFit(double(RDF),maskLocalFiled,refine_order);
Error in SepiaIOWrapper (line 264)
localField = BackgroundRemovalMacro(totalField,maskLocalfield,matrixSize,voxelSize,algorParam,headerAndExtraData);
Error in sepiaIO (line 78)
SepiaIOWrapper(input,output,maskFullName,algorParam);
My RDF is empty and my totalField also. I was wondering where this can go wrong, because my header and phase and mag data are valid according to the sepia guide.
Hello.
For phase unwrapping, there is option for mask.
I want to ask if the brain mask provided (which is better than default BET), can be used for such purposes.
Thanks.
Best,
Ho-Joon Lee
Hi Kwok,
I'm trying to process a subject using Sepia with single echo 7T data. However, when trying to run sepia it errors out with the folloing error message:
Index exceeds the number of array elements (3).
Error in SepiaIOWrapper>check_input_dimension (line 472)
if matrixSize_magn(4) ~= length(TE)
Error in SepiaIOWrapper (line 185)
check_input_dimension(magn,fieldMap,matrixSize,TE);
Error in sepiaIO (line 78)
SepiaIOWrapper(input,output,maskFullName,algorParam);
Error in sepia_config (line 32)
sepiaIO(input,output_basename,mask_filename,algorParam);
Error in run (line 91)
evalin('caller', strcat(script, ';'));
Error in sepia>PushbuttonStart_Callback (line 471)
run(configFilename);
Error while evaluating UIControl Callback.
Is this an issue due to the fact that i'm using single echo data? Or am I missing something very obvious?
See below for the log, error and config file.
Looking forward to hearing from you!
Best,
Jasper
Config:
% This file is generated by SEPIA version: v0.8.1
% add general Path
sepia_addpath
% Input/Output filenames
input = '/Users/jnuninga/Documents/MATLAB/Subject_1' ;
output_basename = '/Users/jnuninga/Documents/MATLAB/Subject_1/output/Sepia' ;
mask_filename = [''] ;
% General algorithm parameters
algorParam=struct();
algorParam.general.isBET = 0 ;
algorParam.general.isInvert = 0 ;
% Total field recovery algorithm parameters
algorParam.unwrap.echoCombMethod = 'Optimum weights' ;
algorParam.unwrap.unwrapMethod = 'Laplacian (MEDI)' ;
algorParam.unwrap.isEddyCorrect = 0 ;
algorParam.unwrap.isSaveUnwrappedEcho = 0 ;
% Background field removal algorithm parameters
algorParam.bfr.refine_method = '3D Polynomial' ;
algorParam.bfr.refine_order = 4 ;
algorParam.bfr.erode_radius = 0 ;
algorParam.bfr.method = 'LBV' ;
algorParam.bfr.tol = 0.0001 ;
algorParam.bfr.depth = 5 ;
algorParam.bfr.peel = 2 ;
% QSM algorithm parameters
algorParam.qsm.reference_tissue = 'None' ;
algorParam.qsm.method = 'TKD' ;
algorParam.qsm.threshold = 0.15 ;
sepiaIO(input,output_basename,mask_filename,algorParam);
Log:
SEPIA configuration file already exists in the output directory.
Running script: /Users/jnuninga/Documents/MATLAB/Subject_1/output/sepia_config.m
Running one-stop processing pipeline...
Output directory : /Users/jnuninga/Documents/MATLAB/Subject_1/output/
Output filename prefix : Sepia_
---------
Load data
---------
Searching input directory...
One 'ph' file is found: /Users/jnuninga/Documents/MATLAB/Subject_1/S1_phase.nii
One 'mag' file is found: /Users/jnuninga/Documents/MATLAB/Subject_1/S1_magn.nii
No file with name containing string 'weights' is detected.
One 'header' file is found: /Users/jnuninga/Documents/MATLAB/Subject_1/sepia_header.mat
Phase data is loaded.
Magnitude data is loaded.
No weighting map is loaded. Default QSM weighting method will be used for QSM.
Header data is loaded.
Validating SEPIA header...
Input SEPIA header is valid.
Validating input NIfTI files...
There was an error! Please check the command window/error message file for more information.
Error:
The identifier was:
MATLAB:badsubscript
The message was:
Index exceeds the number of array elements (3).
Error in SepiaIOWrapper>check_input_dimension (line 472)
if matrixSize_magn(4) ~= length(TE)
Error in SepiaIOWrapper (line 185)
check_input_dimension(magn,fieldMap,matrixSize,TE);
Error in sepiaIO (line 78)
SepiaIOWrapper(input,output,maskFullName,algorParam);
Error in sepia_config (line 32)
sepiaIO(input,output_basename,mask_filename,algorParam);
Error in run (line 91)
evalin('caller', strcat(script, ';'));
Error in sepia>PushbuttonStart_Callback (line 471)
run(configFilename);
Hello, I am unable to find the tutorial data, as I cannot find ~/sepia_tutorial/sepia101_data/. Is it in the sepia-master folder? Thank you.
Hi,
Searching input directory based on SEPIA default naming structure...
#####################################################
#####################################################
There was an error! Please check the command window/error message file for more information.
Reference to non-existent field 'folder'.
My input data were magnitude.nii and phase.nii + the Sepiaheader.mat.
These data worked well on a 2017Rb and 2023Rb Matlab versions
Could it be an issue with the Matlab version ?
Thanks,
Aurelien
Failed to open the link of SEGUE: https://xip.uclb.com/i/software/SEGUE.html
Greetings and Regards
I had a question about the function of sepia in referencing the whole brain.
What exactly is being done in this calculation?
Is the average magnetic susceptibility of all brain voxels 0 ?
Explain to me if possible
I have fsl installed and followed the instructions on FSL website to setup environment variables and path in Matlab. However, sepia seems unable to find BET. There is also no path setting for BET in sepia. Please advise on how to set up FSL path to use BET in sepia.
Hello,
I have started using SEPIA GUI for susceptibility mapping. I noticed that when I choose for example Region Growing and LVB, in matlab command window I see:
---The following unwrapping method is being used: Laplacian
---The resulting field map with the following unit: Hz
---Computing weighting map...Done!
---Saving unwrapped field map...done!
---Step 2: Recovering local field...
---The following method is being used: LBV
If i runt it a couple of times without any change, I get at some point my selections printed. Is it something that occurs to other users?
Maybe a re-install would solve it?
I will make sure to update, thanks in advance for any hint.
hello
i have one question about segmentation...
which tools or software do u prefer to segment susceptibility map?automatic ROIs detections on T1 ??
i know about FSL, but it is hard for me to work with it...
can u suggest me easier software?
and which tools do u prefer for analysis ROIs??
thanks
Hello dear
This is the error occurred while trying to run sepia.m :
Undefined function or variable 'SEGUE_dir'.
Error in sepia_addpath (line 15)
CheckPathValidity(MEDI_dir,STISuite_dir,FANSI_dir,SEGUE_dir);
Error in sepia (line 48)
sepia_addpath;
what is this direction for ? I read the documentation but this directory was not mentioned .
I hope you could help me
thanks a lot!
Hi Kwok,
Thanks for building a great and very helpful QSM utility; as a beginner to QSM it's really helpful to have these sorts of GUI-based programs and your terrific walkthroughs to get started.
Using SEPIA I was able to create an SWI image from my data. However, when I try to run the whole Sepia (one-stop) pipeline, I click on the "run" button but nothing happens. I'm quite certain it has all the requisite data since it works for SWI. I've tried entering the phase, magnitude and header data separately as well but that doesn't seem to work. [I had the header units wrong initially.] Also, each of the other steps individually does not appear to have a start button at all (see attached).
I am probably doing something wrong, and hoping for your thoughts and assistance if possible! Thanks very much.
I am getting an error when I run the LBV for background removal, and I am unsure how to get around it:
Invalid MEX-file
'/Users/hochy/Documents/MATLAB/MEDI_toolbox-2/functions/_LBV/mexMGv6.mexmaci64':
dlopen(/Users/hochy/Documents/MATLAB/MEDI_toolbox-2/functions/_LBV/mexMGv6.mexmaci64,
0x0006): Library not loaded: @rpath/libMatlabEngine.dylib
Referenced from:
/Users/hochy/Documents/MATLAB/MEDI_toolbox-2/functions/_LBV/mexMGv6.mexmaci64
Reason: tried: '/Applications/MATLAB_R2022a.app/bin/maci64/libMatlabEngine.dylib' (no such
file), '/Applications/MATLAB_R2022a.app/bin/maci64/./libMatlabEngine.dylib' (no such file),
'/Applications/MATLAB_R2022a.app/bin/maci64/../../sys/os/maci64/libMatlabEngine.dylib' (no
such file), '/Applications/MATLAB_R2022a.app/Contents/MacOS/libMatlabEngine.dylib' (no such
file), '/Applications/MATLAB_R2022a.app/Contents/MacOS/./libMatlabEngine.dylib' (no such
file),
'/Applications/MATLAB_R2022a.app/Contents/MacOS/../../standalone/bin/maci64/libMatlabEngine.dylib'
(no such file),
'/Applications/MATLAB_R2022a.app/Contents/MacOS/../../sys/os/maci64/libMatlabEngine.dylib'
(no such file), '/Applications/MATLAB_R2022a.app/bin/maci64/libMatlabEngine.dylib' (no such
file)
I ran the > mex mexMGv6.cpp and this was the output:
Building with 'Xcode Clang++'.
/Users/hochy/Documents/MATLAB/MEDI_toolbox-2/functions/_LBV/mexMGv6.cpp:734:13: warning: 'delete' applied to a pointer that was allocated with 'new[]'; did you mean 'delete[]'? [-Wmismatched-new-delete]
delete mask_int;
^
[]
/Users/hochy/Documents/MATLAB/MEDI_toolbox-2/functions/_LBV/mexMGv6.cpp:725:29: note: allocated with 'new[]' here
int* mask_int = new int this->n_vox[0];
^
1 warning generated.
ld: warning: -undefined error is deprecated
ld: warning: -undefined error is deprecated
ld: warning: -undefined error is deprecated
ld: warning: -undefined error is deprecated
MEX completed successfully.
I am not sure how to get around this issue?
Also, what does the reference tissue mean? I am working with data for mouse brains, and whenever I pick a reference tissue all of my susceptibility values go to 0.
Sorry for all of the questions!
Great job, SEPIA is well designed, and would be very useful for those who want to come to QSM by customizing their pipeline. Then the documentation with exercices etc..is very interesting.
Yet I tried to reproduce result obtained using MEDI+ with MEDI+ in SEPIA ....but unfortunaltelly I'm far to succeed...so I tired step by step..beginning by phase unwrapping....And I'm wondering why the saved "unwarped_echo_phase" is absolutely identical to the initial phase....(or could be just inverted when "invert phase data" is checked) ...
Did someone verify the unwrapped echo phase output ? thank in advance,
With the new directory structure, the GPU feature is not supported at current stage.
Hi, I currently possess magnitude and phase maps in NIFTI format. However, I find myself in need of the corresponding header files for these images. When I tried to use 'Get header info' in the 'Utility' tab of the GUI to generate header file, I got 'No TE file is identified.' errors.
Could you kindly provide instructions or insights on how to extract the header files from the existing magnitude and phase maps in NIFTI format? or could you tell me what the format and content of TE file looks like?
Thank you for your time.
after loading the files and making the sepia_header file as per suggestions, while starting following error appears:Phase data is loaded.
<<<<<<<<<"Magnitude data is loaded.
No weighting map is loaded. Default QSM weighting method will be used for QSM.
Header data is loaded.
Validating SEPIA header...
Input SEPIA header is valid.
Validating input NIfTI files...
There was an error! Please check the command window/error message file for more information.
Error using SepiaIOWrapper>check_input_dimension (line 481)
Input NIfTI data and SEPIA header do not have the same number
of echoes. Please check these files.
Error in SepiaIOWrapper (line 186)
check_input_dimension(magn,fieldMap,matrixSize,TE);
Error in sepiaIO (line 78)
SepiaIOWrapper(input,output,maskFullName,algorParam);
Error in sepia_config_3 (line 34)
sepiaIO(input,output_basename,mask_filename,algorParam);
Error in run (line 91)
evalin('caller', strcat(script, ';'));
Error in sepia>PushbuttonStart_Callback (line 471)
run(configFilename);
Error while evaluating UIControl Callback.>>>>>>>>>>>>>>>>>>>>>>
How do one change number of echoes in header, if needed?
SEPIA's QSM application has two options to compute a weighting map for QSM dipole inversion methods that incorporating prior information:
In v0.8.0, when option 2 is chosen, there is a bug in the code such that the subsequent signal weighting map is automatically set to the binary signal mask, instead of using, e.g. the RMS of the (multi-echo) magnitude data.
This bug will be fixed in the next update.
Hii I have been working on SEPIA toolbox for a while and I have run into some problems with the scans using the ROMEO. The scans look messy starting from the field map stage till end of SEPIA processing pipeline and I have little clue on what could have gone wrong. It would be great if you can take a look into it! I use SEPIA 1.2.2.3 for processing. I will add the images of the chimap and fieldmap of good and bad brain scans.
Hi Kwok + Jose',
Just to let you know that STI suite has moved from
https://people.eecs.berkeley.edu/~chunlei.liu/software.html
to
https://chunleiliulab.github.io/software.html
for the SEPIA toolbox page
https://sepia-documentation.readthedocs.io/en/latest/ aka
https://github.com/kschan0214/sepia.documentation/blob/master/docs/index.rst
Cheers,
Simon
When I run xQSM as the dipole inversion step, I get the following error:
The following QSM algorithm will be used: xQSM
Warning: Name is nonexistent or not a directory:
/home/common/matlab/sepia/external/deepMRI/xQSM/matlab/eval
In path (line 109)
In addpath (line 86)
In Wrapper_QSM_xQSM (line 39)
In QSMMacro (line 108)
In SepiaIOWrapper (line 327)
In sepiaIO (line 79)
In sepia_config_56 (line 38)
In run (line 91)
In sepia>PushbuttonStart_Callback (line 353)
Warning: Name is nonexistent or not a directory:
/home/common/matlab/sepia/external/deepMRI/xQSM_data/checkpoints
In path (line 109)
In addpath (line 86)
In Wrapper_QSM_xQSM (line 40)
In QSMMacro (line 108)
In SepiaIOWrapper (line 327)
In sepiaIO (line 79)
In sepia_config_56 (line 38)
In run (line 91)
In sepia>PushbuttonStart_Callback (line 353)
There was an error! Please check the command window/error message file for more information.
Unrecognized function or variable 'field'.
Error in Wrapper_QSM_xQSM (line 50)
[localField, pos] = ZeroPadding(field, 8);
Error in QSMMacro (line 108)
chi = feval(wrapper_QSM_function{k},localField,mask,matrixSize_new,voxelSize,algorParam, headerAndExtraData);
Error in SepiaIOWrapper (line 327)
[chi,mask_ref] = QSMMacro(localField,mask_QSM,matrixSize,voxelSize,algorParam,headerAndExtraData);
Error in sepiaIO (line 79)
SepiaIOWrapper(input,output,maskFullName,algorParam);
Error in sepia_config_56 (line 38)
sepiaIO(input,output_basename,mask_filename,algorParam);
Error in run (line 91)
evalin('caller', strcat(script, ';'));
Error in sepia>PushbuttonStart_Callback (line 353)
run(configFilename);
Error while evaluating UIControl Callback.
Do I need to install another toolbox to use this method?
I have read the closed issue (SEPIA results != STISuite results #4) similar to this one.
However, I haven't found a solution and reason like him.
Below were my steps. 【single echo】
Left was the results obtained by using Sepia (choose STISuite algorithms). The right was performed in STISuite v3.0.
The two results were very similar, but I found the Right (STISuite) one was smoother and the left one showed a more coarse appearance.
The Infos showed a difference in Intensity Range and others.
Is there a reason or an error in my operation? (Plus: In terms of the difference in intensity, I think the masks used were not the main reason.)
Hy,
I am new to QSM and I am using SEPIA for generating my first chi-maps. It looks quite great!
Anyway, I have scrolled through out the documentation but I am not able to find how the fieldmap is generated after the phase unwrapping, could you help me?
I have both brain and phantom images. The phantom is a cylinder (24 cm diameter) filled with water with 4 inserts (about 6 cm diameter) with different susceptibility values. While SEPIA seems to function properly on brain images, I have unsatisfactory results for the phantom: in particular the phantom’s localfieldmap appears quite flat (I have tried different algorithms but nothing works). Have you any ideas about why in this simpler geometry the algorithm fails?
Is there any method to check the ‘goodness’ of the localfieldmap generated by the background removal step?
Thank you very much for your attention.
In previous SEPIA versions, incorrect B0 direction is read when loading a NIfTI file to the 'Get_header_info' Utility function ('Op2' and 'Op3') if the data is acquired in a sagittal or coronal direction.
We have identified the cause of the issue and it will be fixed in the next release.
At the moment, a small patch to fix the issue can also be downloaded in:
https://surfdrive.surf.nl/files/index.php/s/nXGJ248aq5woXaQ
You can then copy and replace those in $SEPIA_HOME/utils
In SEPIA v0.8.0, we tried to fix a bug in the WH_wTGV.m
of FANSI toolbox which will be used when the following options are selected:
The bug occurs in line 122 of the original WH_wTGV.m
:
Lap = E1+E1t+E2+E2t+E3+E3t;
where variables E1t, E2t and E3t are undefined before their usage.
To fix this we created a new function called WH_wTGV_4sepia.m
and updated the line as
Lap = E1+Et1+E2+Et1+E3+Et2; %Lap = E1+E1t+E2+E2t+E3+E3t;
Upon checking, we found that the amendment is incorrect and we updated the line as
Lap = E1+Et1+E2+Et2+E3+Et3; %Lap = E1+E1t+E2+E2t+E3+E3t;
in the current master branch (commit 25c994, 3 August 2020).
The difference between the two versions is shown here:
If you are using SEPIA release v0.8.0 and want to use the above FANSI algorithm setting, please update SEPIA to the current master branch.
Dear SEPIA users,
A new version of SEPIA will be released in the coming weeks. In addition to fixing some minor bugs in previous versions, the new one will be compatible with the latest MEDI and FANSI toolboxes' methods. The new version will also be more flexible for developers to integrate their methods to the SEPIA framework. Stay tuned for the update! :)
Kwok
Dear all,
I have a small question regarding the sepia header. I tried to create the header following the suggestions in the docs as follows:
B0 = 3; % magnetic field strength, in Tesla
B0_dir = [0;0;1]; % main magnetic field direction, [x,y,z]
CF = 342.581e6; % imaging frequency, in Hz (B0*gyromagnetic_ratio)
TE = [0.002,0.005,0.008,0.011,0.014,0.017,0.020,0.023,0.026,0.029,0.032,0.035,0.038,0.041,0.044,0.047,0.050,0.053,0.056,0.059]; % echo time for each GRE image, in second
delta_TE = 0.003; % echo spacing, in second
matrixSize = [198,192,160]; % image matrix size
voxelSize = [1,1,1]; % spatial resolution of the data, in mm
where my data is 20 echo times. However, when the SEPIA GUI is running, it reports an error during the load of the file as follows:
Error using load
Number of columns on line 2 of ASCII file
F:\MRIConvert\BF201121\FullBrain_Mag_Phs_Data\sepia_header.m must be the
same as previous lines.
Error in SepiaIOWrapper (line 206)
load([inputDir filesep headerList(1).name]);
Error in sepiaIO (line 41)
SepiaIOWrapper(input,output,maskFullName,algorParam);
Error in sepia_config_8 (line 33)
sepiaIO(input,output_basename,mask_filename,algorParam);
Error in run (line 91)
evalin('caller', strcat(script, ';'));
Error in sepia>PushbuttonStart_Callback (line 468)
run(configFilename);
Error while evaluating UIControl Callback.
It seems that it is an error from Matlab itself but not from SEPIA, but I don't get what would be the error. I tried to use the SEPIA GUI who created this header but also shows an error as follows:
Saving header file...
Error using
sepia_handle_panel_utility_get_header>PushbuttonRun_Utility_getHeader_Callback
(line 423)
Brace indexing is not supported for variables of this type.
Error while evaluating UIControl Callback.
So for now I don't have any options. If someone got the same error and can help me it would be nice.
Thanks a bunch,
Frank
We encountered some weird (phase unwrapping looking) artefacts in our QSM maps. These artefacts came from the Phase data file after conversion with the dicom2nifti conversion tool (as proposed in the sepia documentation), as it was not in the -pi to pi range. The reader appears to not cope well with that data format from a Philips scanner.
Dear Kwok,
After running SEPIA for the participants, now I want to corregister the subject Chimap to AHEAD template. So, I used the SEPIA GUI for this but the problem is, it is very slow. I have used the latest version of SEPIA 1.2.2.5. It has been 10 hours of running it in MATLAB, but it is still not finished. Is there something that should be changed in the option to make it run faster? Would be great to know how to solve this!
PS: I have attached some images of the config I used along with some command line steps that came as it was getting executed
Hi Kwok,
I'm trying to process a batch job using Sepia with single echo 3T data.
And I want know how to process a batch job in getting header info like running SEPIA function with edited config file?
Looking forward to hearing from you!
Best,
Zoe
nifti file: https://wwa.lanzoui.com/iNiunsg5wef
Question1:
Mask file was created by FSL brain extration (bet) in Sepia.
L: in Sepia (STISuite v3.0 ), mask file =Sepia_mask.nii.gz
R: in STISuite v3.0,mask file = Sepia_mask.nii.gz
Intensity Range was different: L (-0.1792:0.2911), R (-0.2003:0.3273)
Question2:
Mask file was created by "single button for QSM!"
in STISuite v3.0.
This mask is different from mask created by "bet", seemed to be better for QSM reconstruction according to the QSM file which showed the internal pallidum structure.
L: in Sepia (STISuite v3.0 ), mask file =S001_Mask_STISuite_singlebutton.nii
R: in STISuite v3.0,mask file = S001_Mask_STISuite_singlebutton.nii
Intensity Range was different: L (-0.4812:0.376), R (-0.4722:0.4511)
Q_Different_intensity_range_in_Sepia_(STISuite_v3.0_)_compared_with_STISuite_v3.0.pdf
When you run SEPIA for R2 star mapping, when you use NLLS, you get an error that stats function 'Signal_mGRE' is missing.
Obviously it appears that the function is present in the R2 star repository, but is missing from the SEPIA repository.
Thanks.
Hi Kwok-Shing,
There's a function dipole_kernel_fansi
in the FANSI toolbox that has been recently modified and is no longer compatible with the way used in the code.
You can fix it by just removing the last argument (B0_dir) :)
Zahra
Hello.
I am trying to compute QSM on rodent data. Images were converted from paravision format using brkraw.
After completion of the pipeline, some derived maps appear to be spatially discordant to the original magnitude image. It may seem like this is due to mask erosion, but it truly seems to be misaligned. Please see a snapshot of the magnitude image and sepia outputs, and notice how the Chi map seems to be shifted with respect to the magnitude image. The last panel in the figure shows sepia configuration used.
Am I doing anything wrong with how the maps are calculated? Your help is much appreciated!
hi and with the best regards,
thanks for your amazing tools.
im working on SEPIA
there are different tools for different processing parts,such as MEDI,VSHARP,TKD and ....
but can u help me to find optimized parameters for each one of these ??
for example threshold for TKD or lambda for MEDI or others...
thanks
Hello!
I have been using SEPIA and STISuite 3.0.
I produced tissue phase images of the same sample using 1. SEPIA (Laplacian STISuite and VSHARP_STISuite) and 2.The same template functions in STISuite 3.0 by running them in a matlab script. Apparently, I get different results in terms of contrast in the tissue phase (of course, I checked that SEPIA uses the same functions by checking the logs and to be sure I even run it step by step in matlab).
Any idea why this is happening? I will dig in a little bit more when I have the time.
An example of my results is below (STI suite template functions results to the left and SEPIA results using STISuite function to the right):
Best regards,
DImitri
Hi, I noticed that SEPIA has the function to generate R2 * map, but I couldn't find the relevant documentation. Could you tell me what files should I input to generate R2 * map? Thank you so much!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.