This is a website. It can have links to other pages.
jpn-- / larch Goto Github PK
View Code? Open in Web Editor NEWLarch: a Python tool for choice modeling
Home Page: http://larch.newman.me
License: GNU General Public License v3.0
Larch: a Python tool for choice modeling
Home Page: http://larch.newman.me
License: GNU General Public License v3.0
This is a website. It can have links to other pages.
I get this error when I am trying to use weights in the idca format.
LarchError: Weight is only allowed in the idco table, but there will be no such
table
However, the documentation of the software says we can use weight with idca format.
When the class membership model is defined with a dataservice, the alternatives of the dataservice are adopted as the alternatives of the model… but for this particular (sub)model, the “alternatives” are supposed to be the classes not the alternatives. This bug only arises when a dataservice is declared when the class membership model is created, which is why it doesn’t happen in the demo script or tests so far, as they don't use data for that submodel.
May I know what is the default setting for the convergence tolerance? Is there any way that I could make it large?
I am doing a 400+ choices simple MNL model, but the convergence tolerance reaches 0.0001 then goes back to large value for many more iterations and it seems never stop. Can I change it?
The larch reporter class does not appear to be working. I am new to larch so am not sure if this is an environment specific problem or a general bug.
The minimal reproducible example is to attempt run example 201 as outlined in the start of example 202:
import larch, numpy, pandas, os
from larch import P, X
exampville_mode_choice_file = larch.example(201, output_file='/tmp/exampville_mode_choice.html')
Running through example 201 line by line following https://larch.newman.me/example/201_exville_mode_choice.html gives an issue near the very end at:
report = larch.Reporter(title=m.title)
report << '# Parameter Summary' << m.parameter_summary()
I have been able to reproduce this issue on both Windows and windows subsystem for linux (ubuntu 20).
I created an environment on both platforms as follows:
conda create -n larch2 python=3.7 larch
conda install geopandas
where geopandas is installed additionally to run the exampville examples.
# This file may be used to create an environment using:
# $ conda create --name <env> --file <this file>
# platform: linux-64
_libgcc_mutex=0.1=conda_forge
_openmp_mutex=4.5=1_gnu
abseil-cpp=20210324.2=h9c3ff4c_0
addict=2.4.0=py37h89c1867_0
appdirs=1.4.4=pyh9f0ad1d_0
arrow-cpp=5.0.0=py37h43e6a4c_0_cpu
atk-1.0=2.36.0=h3371d22_4
attrs=21.2.0=pyhd8ed1ab_0
aws-c-cal=0.5.11=h95a6274_0
aws-c-common=0.6.2=h7f98852_0
aws-c-event-stream=0.2.7=h3541f99_13
aws-c-io=0.10.5=hfb6a706_0
aws-checksums=0.1.11=ha31a3da_7
aws-sdk-cpp=1.8.186=hb4091e7_3
backcall=0.2.0=pyh9f0ad1d_0
backports=1.0=py_2
backports.functools_lru_cache=1.6.4=pyhd8ed1ab_0
beautifulsoup4=4.9.3=pyhb0f4dca_0
blosc=1.21.0=h9c3ff4c_0
boost-cpp=1.74.0=h312852a_4
bzip2=1.0.8=h7f98852_4
c-ares=1.17.1=h7f98852_1
ca-certificates=2021.5.30=ha878542_0
cairo=1.16.0=h6cf1ce9_1008
certifi=2021.5.30=py37h89c1867_0
cfitsio=3.470=hb418390_7
click=7.1.2=pyh9f0ad1d_0
click-plugins=1.1.1=py_0
cligj=0.7.2=pyhd8ed1ab_0
cloudpickle=1.6.0=py_0
colorama=0.4.4=pyh9f0ad1d_0
curl=7.78.0=hea6ffbf_0
cycler=0.10.0=py_2
decorator=4.4.2=py_0
docutils=0.17.1=py37h89c1867_0
et_xmlfile=1.0.1=py_1001
expat=2.4.1=h9c3ff4c_0
fiona=1.8.20=py37hc1d69b0_1
font-ttf-dejavu-sans-mono=2.37=hab24e00_0
font-ttf-inconsolata=3.000=h77eed37_0
font-ttf-source-code-pro=2.038=h77eed37_0
font-ttf-ubuntu=0.83=hab24e00_0
fontconfig=2.13.1=hba837de_1005
fonts-conda-ecosystem=1=0
fonts-conda-forge=1=0
freetype=2.10.4=h0708190_1
freexl=1.0.6=h7f98852_0
fribidi=1.0.10=h36c2ea0_0
gdal=3.3.1=py37hb0e9ad2_1
gdk-pixbuf=2.42.6=h04a7f16_0
geopandas=0.9.0=pyhd8ed1ab_1
geopandas-base=0.9.0=pyhd8ed1ab_1
geos=3.9.1=h9c3ff4c_2
geotiff=1.6.0=h4f31c25_6
gettext=0.19.8.1=h0b5b191_1005
gflags=2.2.2=he1b5a44_1004
giflib=5.2.1=h36c2ea0_2
glog=0.5.0=h48cff8f_0
graphite2=1.3.13=h58526e2_1001
graphviz=2.48.0=h85b4f2f_0
grpc-cpp=1.38.1=h36ce80c_0
gtk2=2.24.33=h539f30e_1
gts=0.7.6=h64030ff_2
harfbuzz=2.8.2=h83ec7ef_0
hdf4=4.2.15=h10796ff_3
hdf5=1.10.6=nompi_h6a2412b_1114
icu=68.1=h58526e2_0
importlib-metadata=4.6.1=py37h89c1867_0
importlib_metadata=4.6.1=hd8ed1ab_0
iniconfig=1.1.1=pyh9f0ad1d_0
ipython=7.25.0=py37h085eea5_1
ipython_genutils=0.2.0=py_1
jbig=2.1=h7f98852_2003
jdcal=1.4.1=py_0
jedi=0.18.0=py37h89c1867_2
jinja2=3.0.1=pyhd8ed1ab_0
joblib=1.0.1=pyhd8ed1ab_0
jpeg=9d=h36c2ea0_0
json-c=0.15=h98cffda_0
kealib=1.4.14=hcc255d8_2
kiwisolver=1.3.1=py37h2527ec5_1
krb5=1.19.2=hcc1bbae_0
larch=5.5.5=py37h6f94858_0
lcms2=2.12=hddcbb42_0
ld_impl_linux-64=2.36.1=hea4e1c9_2
lerc=2.2.1=h9c3ff4c_0
libblas=3.9.0=10_openblas
libbrotlicommon=1.0.9=h7f98852_5
libbrotlidec=1.0.9=h7f98852_5
libbrotlienc=1.0.9=h7f98852_5
libcblas=3.9.0=10_openblas
libcurl=7.78.0=h2574ce0_0
libdap4=3.20.6=hd7c4107_2
libdeflate=1.7=h7f98852_5
libedit=3.1.20191231=he28a2e2_2
libev=4.33=h516909a_1
libevent=2.1.10=hcdb4288_3
libffi=3.3=h58526e2_2
libgcc-ng=11.1.0=hc902ee8_5
libgd=2.3.2=h78a0170_0
libgdal=3.3.1=h8f005ca_1
libgfortran-ng=11.1.0=h69a702a_5
libgfortran5=11.1.0=h6c583b3_5
libglib=2.68.3=h3e27bee_0
libgomp=11.1.0=hc902ee8_5
libiconv=1.16=h516909a_0
libkml=1.3.0=h238a007_1014
liblapack=3.9.0=10_openblas
libnetcdf=4.8.0=nompi_hcd642e3_103
libnghttp2=1.43.0=h812cca2_0
libopenblas=0.3.17=pthreads_h8fe5266_1
libpng=1.6.37=h21135ba_2
libpq=13.3=hd57d9b9_0
libprotobuf=3.16.0=h780b84a_0
librsvg=2.50.7=hc3c00ef_0
librttopo=1.1.0=h1185371_6
libspatialindex=1.9.3=h9c3ff4c_4
libspatialite=5.0.1=h8694cbe_5
libssh2=1.9.0=ha56f1ee_6
libstdcxx-ng=11.1.0=h56837e0_5
libthrift=0.14.2=he6d91bd_1
libtiff=4.3.0=hf544144_1
libtool=2.4.6=h58526e2_1007
libutf8proc=2.6.1=h7f98852_0
libuuid=2.32.1=h7f98852_1000
libwebp=1.2.0=h3452ae3_0
libwebp-base=1.2.0=h7f98852_2
libxcb=1.13=h7f98852_1003
libxml2=2.9.12=h72842e0_0
libxslt=1.1.33=h15afd5d_2
libzip=1.8.0=h4de3113_0
lxml=4.6.3=py37h77fd288_0
lz4-c=1.9.3=h9c3ff4c_1
lzo=2.10=h516909a_1000
mapclassify=2.4.3=pyhd8ed1ab_0
markupsafe=2.0.1=py37h5e8e339_0
matplotlib-base=3.4.2=py37hdd32ed1_0
matplotlib-inline=0.1.2=pyhd8ed1ab_2
mock=4.0.3=py37h89c1867_1
more-itertools=8.8.0=pyhd8ed1ab_0
munch=2.5.0=py_0
ncurses=6.2=h58526e2_4
networkx=2.6.2=pyhd8ed1ab_0
numexpr=2.7.3=py37hdc94413_0
numpy=1.21.1=py37h038b26d_0
olefile=0.46=pyh9f0ad1d_1
openjpeg=2.4.0=hb52868f_1
openpyxl=3.0.7=pyhd8ed1ab_0
openssl=1.1.1k=h7f98852_0
orc=1.6.9=h58a87f1_0
packaging=21.0=pyhd8ed1ab_0
pandas=1.3.1=py37h219a48f_0
pango=1.48.7=hb8ff022_0
parquet-cpp=1.5.1=2
parso=0.8.2=pyhd8ed1ab_0
patsy=0.5.1=py_0
pcre=8.45=h9c3ff4c_0
pexpect=4.8.0=pyh9f0ad1d_2
pickleshare=0.7.5=py_1003
pillow=8.3.1=py37h0f21c89_0
pip=21.2.1=pyhd8ed1ab_0
pixman=0.40.0=h36c2ea0_0
pluggy=0.13.1=py37h89c1867_4
poppler=21.03.0=h93df280_0
poppler-data=0.4.10=0
postgresql=13.3=h2510834_0
proj=8.0.1=h277dcde_0
prompt-toolkit=3.0.19=pyha770c72_0
pthread-stubs=0.4=h36c2ea0_1001
ptyprocess=0.7.0=pyhd3deb0d_0
py=1.10.0=pyhd3deb0d_0
pyarrow=5.0.0=py37h58331f5_0_cpu
pydot=1.4.2=py37h89c1867_0
pygments=2.9.0=pyhd8ed1ab_0
pyparsing=2.4.7=pyh9f0ad1d_0
pyproj=3.1.0=py37h2f13a41_3
pytables=3.6.1=py37h0c4f3e0_3
pytest=6.2.4=py37h89c1867_0
python=3.7.10=hffdb5ce_100_cpython
python-dateutil=2.8.2=pyhd8ed1ab_0
python_abi=3.7=2_cp37m
pytz=2021.1=pyhd8ed1ab_0
pyyaml=5.4.1=py37h5e8e339_0
re2=2021.06.01=h9c3ff4c_0
readline=8.1=h46c0cb4_0
rtree=0.9.7=py37h0b55af0_2
s2n=1.0.10=h9b69904_0
scikit-learn=0.24.2=py37h18a542f_0
scipy=1.7.0=py37h29e03ee_1
seaborn=0.11.1=hd8ed1ab_1
seaborn-base=0.11.1=pyhd8ed1ab_1
setuptools=49.6.0=py37h89c1867_3
shapely=1.7.1=py37h2d1e849_5
six=1.16.0=pyh6c4a22f_0
snappy=1.1.8=he1b5a44_3
soupsieve=2.0.1=py_1
sqlite=3.36.0=h9cd32fc_0
statsmodels=0.12.2=py37h902c9e0_0
threadpoolctl=2.2.0=pyh8a188c0_0
tiledb=2.3.2=he87e0bf_0
tk=8.6.10=h21135ba_1
toml=0.10.2=pyhd8ed1ab_0
tornado=6.1=py37h5e8e339_1
tqdm=4.62.0=pyhd8ed1ab_0
traitlets=5.0.5=py_0
typing_extensions=3.10.0.0=pyha770c72_0
tzcode=2021a=h7f98852_2
tzdata=2021a=he74cb21_1
wcwidth=0.2.5=pyh9f0ad1d_2
wheel=0.36.2=pyhd3deb0d_0
xerces-c=3.2.3=h9d8b166_2
xlsxwriter=1.4.5=pyhd8ed1ab_0
xmle=0.1.21=pyh44b312d_0
xorg-kbproto=1.0.7=h7f98852_1002
xorg-libice=1.0.10=h7f98852_0
xorg-libsm=1.2.3=hd9c2040_1000
xorg-libx11=1.7.2=h7f98852_0
xorg-libxau=1.0.9=h7f98852_0
xorg-libxdmcp=1.1.3=h7f98852_0
xorg-libxext=1.3.4=h7f98852_1
xorg-libxrender=0.9.10=h7f98852_1003
xorg-renderproto=0.11.1=h7f98852_1002
xorg-xextproto=7.3.0=h7f98852_1002
xorg-xproto=7.0.31=h7f98852_1007
xz=5.2.5=h516909a_1
yaml=0.2.5=h516909a_0
zipp=3.5.0=pyhd8ed1ab_0
zlib=1.2.11=h516909a_1010
zstd=1.5.0=ha95c52a_0
There's an infinite recursion in the xml writing. This is the stack trace I get on WSL(on windows I didn't even get a stack trace, just "Process finished with exit code -1073741571 (0xC00000FD)"):
Traceback (most recent call last):
File "/home/m-richards/conda/envs/larch2/lib/python3.7/site-packages/xmle/elem.py", line 179, in from_string
return xml.etree.ElementTree.fromstring(xml_as_string, parser=XMLParser(target=TreeBuilder(element_factory=cls)))
File "/home/m-richards/conda/envs/larch2/lib/python3.7/xml/etree/ElementTree.py", line 1315, in XML
parser.feed(text)
xml.etree.ElementTree.ParseError: undefined entity: line 17, column 32
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/m-richards/conda/envs/larch2/lib/python3.7/site-packages/xmle/elem.py", line 186, in from_string
return cls.from_string("<div>"+xml_as_string.replace("<style scoped>", "<style scoped='1'>")+"</div>", _fix1=True)
File "/home/m-richards/conda/envs/larch2/lib/python3.7/site-packages/xmle/elem.py", line 186, in from_string
return cls.from_string("<div>"+xml_as_string.replace("<style scoped>", "<style scoped='1'>")+"</div>", _fix1=True)
File "/home/m-richards/conda/envs/larch2/lib/python3.7/site-packages/xmle/elem.py", line 186, in from_string
return cls.from_string("<div>"+xml_as_string.replace("<style scoped>", "<style scoped='1'>")+"</div>", _fix1=True)
[Previous line repeated 994 more times]
File "/home/m-richards/conda/envs/larch2/lib/python3.7/site-packages/xmle/elem.py", line 179, in from_string
return xml.etree.ElementTree.fromstring(xml_as_string, parser=XMLParser(target=TreeBuilder(element_factory=cls)))
File "/home/m-richards/conda/envs/larch2/lib/python3.7/xml/etree/ElementTree.py", line 1315, in XML
parser.feed(text)
File "/home/m-richards/conda/envs/larch2/lib/python3.7/site-packages/xmle/elem.py", line 28, in __init__
if isinstance(tag, Element):
RecursionError: maximum recursion depth exceeded while calling a Python object
作者您好,我正在尝试将larch安装到我的linux系统上,但是无论是我用pip安装,还是用conda,都失败了,请问我应该如何解决?谢谢
I've run into an issue with idce data in larch.numba. For a reproducible example based on larch exampville see https://gist.github.com/janzill/a961da02ac80cd961fe4688ab1398e25. When running this several times sometimes the estimation with larch.numba succeeds and sometimes it just produces a negative infinite log-likelihood. Even when it succeeds the values are always different from larch cython (the comparison is part of the example above).
The problem seems to be in the data initialisation step, because once the model parameters are set calculating the log-likelihood leads to identical results, both in terms of initial log-likelihood (i.e. running m.loglike() repeatedly) and the estimated parameters when maximising the log-likelihood. However, initialising a new model instance and loading the data can lead to a different initial log-likelihood and then different estimation solutions. I've observed initial log-likelihoods of nans, -infs, and numerical values varying over several orders of magnitude. Does this hint at the idce sharrow integration not working properly?
Hello again
I've been trying to work through the machine-learning example: https://larch.newman.me/machine_learning.html
The line
m.fit(df, y=df.chose)
Produces the following error message:
File "C:\Users\amitrani\AppData\Local\conda\conda\envs\Python 3.7\lib\site-packages\larch\model\model.py", line 91, in fit
from .dataframes import _check_dataframe_of_dtypeModuleNotFoundError: No module named 'larch.model.dataframes'
The line in question is
from .dataframes import _check_dataframe_of_dtype
At the top of the same module there is a line
from ..dataframes import DataFrames
So, I tried adding a period in front of .dataframes on the line where it was crashing, changing it to:
from ..dataframes import _check_dataframe_of_dtype
and that did seem to get it past that point.
Please could you check to see if this fix is correct?
Unfortunately, it then crashed again somewhere else:
File "C:\Users\amitrani\AppData\Local\conda\conda\envs\Python 3.7\lib\site-packages\pandas\core\indexing.py", line 1252, in _validate_read_indexer
raise KeyError("{} not in index".format(not_found))KeyError: "['(altnum==5)*hhinc', 'altnum==2', 'altnum==3', 'altnum==4', '(altnum==6)*hhinc', 'altnum==5', '(altnum==4)*hhinc', '(altnum==3)*hhinc', '(altnum==2)*hhinc', 'altnum==6'] not in index"
I tried simplifying the model specification and the following ran all the way through:
m.utility_ca = (
PX('tottime')
+ PX('totcost'))
m.fit(df, y=df.chose)
proba = m.predict_proba(df)
proba.head(10)
So this remaining issue might be a model specification problem, but it isn't clear what is needed to solve the problem.
I tried including the hhinc variable in the index:
df.set_index(['casenum','altnum','hhinc'], inplace=True, drop=False)
m.fit(df, y=df.chose)
... but this did not solve the problem.
Any advice you could offer on how to progress here would be much appreciated.
Thanks
Alex
Referring to this example (and 302)
https://larch.newman.me/example/301_itin_mnl.html
The following line causes a crash:
d = example(300, 'd')
Traceback (most recent call last):
File "", line 1, in
d = example(300, 'd')File "C:\Users\amitrani\AppData\Local\conda\conda\envs\Python 3.7\lib\site-packages\larch\examples_init_.py", line 142, in example
return _exec_example_n(n, extract=extract, echo=echo)File "C:\Users\amitrani\AppData\Local\conda\conda\envs\Python 3.7\lib\site-packages\larch\examples_init_.py", line 124, in _exec_example_n
f = os.path.join(exampledocdir, get_examplefile(n))File "C:\Users\amitrani\AppData\Local\conda\conda\envs\Python 3.7\lib\site-packages\larch\examples_init_.py", line 41, in get_examplefile
raise UnknownExampleCode(n)UnknownExampleCode: 300
Thanks
Hello,
I have met an error on installing Larch.
When I installed with "pip install larch", I met "could not find a version that satisfies the requirement larch".
And when I clone the source code and installed with "python setup.py install". I got the error on the picture.
How can I install Larch?
Best regards,
Mengchen
Hello.
Firstly, thanks very much for sharing Larch and the related help materials, all of which looks like it will be very useful.
I'm keen to get started using Larch but unfortunately I'm stuck right at the start.
I am using a Windows 10 64 bit machine and have set up the "taiga" environment with Anaconda following the suggestion on https://larch.readthedocs.io/en/latest/getting-started.html
I was hoping to start working through the examples, but importing Larch in Python produces an error:
In [21]: import numpy, pandas, os
In [22]: import larch
Traceback (most recent call last):
File "<ipython-input-22-616f4cc7d303>", line 1, in <module>
import larch
File "C:\Users\amitrani\AppData\Local\conda\conda\envs\taiga\lib\site-packages\larch\__init__.py", line 61, in <module>
from . import core
File "C:\Users\amitrani\AppData\Local\conda\conda\envs\taiga\lib\site-packages\larch\core.py", line 23, in <module>
_core = swig_import_helper()
File "C:\Users\amitrani\AppData\Local\conda\conda\envs\taiga\lib\site-packages\larch\core.py", line 22, in swig_import_helper
return importlib.import_module('_core')
File "C:\Users\amitrani\AppData\Local\conda\conda\envs\taiga\lib\importlib\__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
ModuleNotFoundError: No module named '_core'
I checked the python architecture as suggested in https://larch.readthedocs.io/en/latest/faq.html:
In[20]: platform.architecture(), sys.maxsize
Out[20]: (('64bit', 'WindowsPE'), 9223372036854775807)
Any help you could offer would be much appreciated. Please let me know if you need any further information.
Kind regards
Alex Mitrani
Is there a linux version of larch? If not, are there any plans to create a linux version?
Indexing skims on arbitrary IDs returns an error
skims = larch.OMX(omx_file, mode='r' ) lx.Dataset.construct.from_omx(skims, indexes='taz')
Results in
AttributeError Traceback (most recent call last)
Input In [58], in <cell line: 1>()
----> 1 lx.Dataset.construct.from_omx(skims, indexes='taz')
File D:\src\OuterLoop\gsm-poc.venv\lib\site-packages\larch\dataset\construct.py:14, in _steal..wrapper(*args, **kwargs)
13 def wrapper(*args, **kwargs):
---> 14 return func(*args, **kwargs)
File D:\src\OuterLoop\gsm-poc.venv\lib\site-packages\sharrow\dataset.py:235, in from_omx(omx, index_names, indexes, renames)
228 indexes = {
229 index_names[0]: zero_based(omx_shape[0]),
230 index_names[1]: zero_based(omx_shape[1]),
231 }
232 if indexes is not None:
233 d["coords"] = {
234 index_name: {"dims": index_name, "data": index}
--> 235 for index_name, index in indexes.items()
236 }
237 return xr.Dataset.from_dict(d)
AttributeError: 'str' object has no attribute 'items'
Hi Jeff,
I run the jupyter notebook which requres to import larch in my personal python environment.
The version I download is version = '5.5.2'
However I got the error shows as below:
----> 5 from .controller import Model5c as _Model5c
6 from ..dataframes import DataFrames, get_dataframe_format
7 from .linear import LinearFunction_C, DictOfLinearFunction_C
ModuleNotFoundError: No module named 'larch.model.controller'
I am wondering if the controller.py
missing in the model directory.
The outputs in the data summaries for IDCA data currently ignore the alternative availability criteria. Is there a good way we can make these tables exclude the unavailable alternatives?
Hello @jpn--,
I noticed that the package is currently built for three specific platforms. However, building Larch as a noarch package (is it even possible?) would make it more accessible to users on different platforms (cry in Mac ARM64 😢) and simplify the build process. Also, this would allow Mac ARM64 users to use ActivitySim's dev environment to create a new environment, currently we cannot do this because Larch doesn't have a Mac ARM64 build on Conda.
Please let me know if you are open to supporting noarch build and release. I would be happy to contribute by opening a pull request with the necessary modifications.
Thanks :)
Is there a possibility to use this library with GPU for faster computation?
I am trying to use a previously estimated model to score new data. Is there an equivalent of sklearn's predict function in Larch?
Any help is much appreciated.
Hi jeff,
I recently installed larch. Even though it takes some time. I used the format (conda install -c conda-forge/label/cf202003 larch). Now I get an error whenever I tried to use larch.dataframe (df, cg='chosen', crack=TRUE).
TYPE ERROR: module object is not callable.. Please whats the problem with this.
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.