diff options
Diffstat (limited to 'posts')
13 files changed, 33 insertions, 307 deletions
diff --git a/posts/2019-05-05-Custom-Snowboard-Anemone-Theme/index.html b/posts/2019-05-05-Custom-Snowboard-Anemone-Theme/index.html index 016a763..2ae2000 100644 --- a/posts/2019-05-05-Custom-Snowboard-Anemone-Theme/index.html +++ b/posts/2019-05-05-Custom-Snowboard-Anemone-Theme/index.html @@ -1,4 +1,4 @@ -<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"/><meta name="og:site_name" content="Navan Chauhan"/><link rel="canonical" href="https://navanchauhan.github.io/posts/2019-05-05-Custom-Snowboard-Anemone-Theme"/><meta name="twitter:url" content="https://navanchauhan.github.io/posts/2019-05-05-Custom-Snowboard-Anemone-Theme"/><meta name="og:url" content="https://navanchauhan.github.io/posts/2019-05-05-Custom-Snowboard-Anemone-Theme"/><title>Creating your own custom theme for Snowboard or Anemone | Navan Chauhan</title><meta name="twitter:title" content="Creating your own custom theme for Snowboard or Anemone | Navan Chauhan"/><meta name="og:title" content="Creating your own custom theme for Snowboard or Anemone | Navan Chauhan"/><meta name="description" content="Tutorial on creating your own custom theme for Snowboard or Anemone"/><meta name="twitter:description" content="Tutorial on creating your own custom theme for Snowboard or Anemone"/><meta name="og:description" content="Tutorial on creating your own custom theme for Snowboard or Anemone"/><meta name="twitter:card" content="summary"/><link rel="stylesheet" href="/styles.css" type="text/css"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><link rel="shortcut icon" href="/images/favicon.png" type="image/png"/><link rel="alternate" href="/feed.rss" type="application/rss+xml" title="Subscribe to Navan Chauhan"/><meta name="twitter:image" content="https://navanchauhan.github.io/images/logo.png"/><meta name="og:image" content="https://navanchauhan.github.io/images/logo.png"/></head><head><script>var _paq=window._paq=window._paq||[];_paq.push(['trackPageView']),_paq.push(['enableLinkTracking']),function(){var a='https://navanspi.duckdns.org:6969/analytics/';_paq.push(['setTrackerUrl',a+'matomo.php']),_paq.push(['setSiteId','2']);var e=document,t=e.createElement('script'),p=e.getElementsByTagName('script')[0];t.type='text/javascript',t.async=!0,t.src=a+'matomo.js',p.parentNode.insertBefore(t,p)}();</script></head><head><script src="https://www.googletagmanager.com/gtag/js?id=UA-108635191-1v"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-108635191-1');</script></head><body class="item-page"><header><div class="wrapper"><a class="site-name" href="/">Navan Chauhan</a><nav><ul><li><a href="/about">About Me</a></li><li><a class="selected" href="/posts">Posts</a></li><li><a href="/publications">Publications</a></li><li><a href="/assets/résumé.pdf">Résumé</a></li><li><a href="https://navanchauhan.github.io/repo">Repo</a></li></ul></nav></div></header><div class="wrapper"><article><div class="content"><span class="reading-time">5 minute read</span><span class="reading-time">Created on May 5, 2019</span><span class="reading-time">Last modified on June 1, 2020</span><h1>Creating your own custom theme for Snowboard or Anemone</h1><h3>Contents</h3><ul><li>Getting Started</li><li>Theme Configuration</li><li>Creating Icons</li><li>Exporting Icons</li><li>Icon Masks</li><li>Packaging</li><li>Building the DEB</li></ul><h2>Getting Started</h2><p><strong>Note: Without the proper folder structure, your theme may not show up!</strong></p><ul><li>Create a new folder called <code>themeName.theme</code> (Replace themeName with your desired theme name)</li><li>Within <code>themeName.theme</code> folder, create another folder called <code>IconBundles</code> (<strong>You cannot change this name</strong>)</li></ul><h2>Theme Configuration</h2><ul><li>Now, inside the <code>themeName.theme</code> folder, create a file called <code>Info.plist</code> and paste the following</li></ul><pre><code><div class="highlight"><span></span><?xml <span class="nv">version</span><span class="o">=</span><span class="s2">"1.0"</span> <span class="nv">encoding</span><span class="o">=</span><span class="s2">"UTF-8"</span>?> +<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"/><meta name="og:site_name" content="Navan Chauhan"/><link rel="canonical" href="https://navanchauhan.github.io/posts/2019-05-05-Custom-Snowboard-Anemone-Theme"/><meta name="twitter:url" content="https://navanchauhan.github.io/posts/2019-05-05-Custom-Snowboard-Anemone-Theme"/><meta name="og:url" content="https://navanchauhan.github.io/posts/2019-05-05-Custom-Snowboard-Anemone-Theme"/><title>Creating your own custom theme for Snowboard or Anemone | Navan Chauhan</title><meta name="twitter:title" content="Creating your own custom theme for Snowboard or Anemone | Navan Chauhan"/><meta name="og:title" content="Creating your own custom theme for Snowboard or Anemone | Navan Chauhan"/><meta name="description" content="Tutorial on creating your own custom theme for Snowboard or Anemone"/><meta name="twitter:description" content="Tutorial on creating your own custom theme for Snowboard or Anemone"/><meta name="og:description" content="Tutorial on creating your own custom theme for Snowboard or Anemone"/><meta name="twitter:card" content="summary"/><link rel="stylesheet" href="/styles.css" type="text/css"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><link rel="shortcut icon" href="/images/favicon.png" type="image/png"/><link rel="alternate" href="/feed.rss" type="application/rss+xml" title="Subscribe to Navan Chauhan"/><meta name="twitter:image" content="https://navanchauhan.github.io/images/logo.png"/><meta name="og:image" content="https://navanchauhan.github.io/images/logo.png"/></head><head><script>var _paq=window._paq=window._paq||[];_paq.push(['trackPageView']),_paq.push(['enableLinkTracking']),function(){var a='https://navanspi.duckdns.org:6969/analytics/';_paq.push(['setTrackerUrl',a+'matomo.php']),_paq.push(['setSiteId','2']);var e=document,t=e.createElement('script'),p=e.getElementsByTagName('script')[0];t.type='text/javascript',t.async=!0,t.src=a+'matomo.js',p.parentNode.insertBefore(t,p)}();</script></head><head><script src="https://www.googletagmanager.com/gtag/js?id=UA-108635191-1v"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-108635191-1');</script></head><body class="item-page"><header><div class="wrapper"><a class="site-name" href="/">Navan Chauhan</a><nav><ul><li><a href="/about">About Me</a></li><li><a class="selected" href="/posts">Posts</a></li><li><a href="/publications">Publications</a></li><li><a href="/assets/résumé.pdf">Résumé</a></li><li><a href="https://navanchauhan.github.io/repo">Repo</a></li></ul></nav></div></header><div class="wrapper"><article><div class="content"><span class="reading-time">5 minute read</span><span class="reading-time">Created on May 5, 2019</span><span class="reading-time">Last modified on September 15, 2020</span><h1>Creating your own custom theme for Snowboard or Anemone</h1><h3>Contents</h3><ul><li>Getting Started</li><li>Theme Configuration</li><li>Creating Icons</li><li>Exporting Icons</li><li>Icon Masks</li><li>Packaging</li><li>Building the DEB</li></ul><h2>Getting Started</h2><p><strong>Note: Without the proper folder structure, your theme may not show up!</strong></p><ul><li>Create a new folder called <code>themeName.theme</code> (Replace themeName with your desired theme name)</li><li>Within <code>themeName.theme</code> folder, create another folder called <code>IconBundles</code> (<strong>You cannot change this name</strong>)</li></ul><h2>Theme Configuration</h2><ul><li>Now, inside the <code>themeName.theme</code> folder, create a file called <code>Info.plist</code> and paste the following</li></ul><pre><code><div class="highlight"><span></span><?xml <span class="nv">version</span><span class="o">=</span><span class="s2">"1.0"</span> <span class="nv">encoding</span><span class="o">=</span><span class="s2">"UTF-8"</span>?> <!DOCTYPE plist PUBLIC <span class="s2">"-//Apple//DTD PLIST 1.0//EN"</span> <span class="s2">"http://www.apple.com/DTDs/PropertyList-1.0.dtd"</span>> <plist <span class="nv">version</span><span class="o">=</span><span class="s2">"1.0"</span>> <dict> @@ -8,7 +8,7 @@ <string>Icons</string> </dict> </plist> -</div></code></pre><ul><li>Replace <code>PackageName</code> with the name of the Pacakge and replace <code>ThemeName</code> with the Theme Name</li></ul><p>Now, you might ask what is the difference between <code>PackageName</code> and <code>ThemeName</code>?</p><p>Well, if for example you want to publish two variants of your icons, one dark and one white but you do not want the user to seperately install them. Then, you would name the package <code>MyTheme</code> and include two themes <code>Blackie</code> and <code>White</code> thus creating two entries. More about this in the end</p><h2>Creating Icons</h2><ul><li>Open up the Image Editor of your choice and create a new file having a resolution of 512x512</li></ul><p><strong>Note: Due to IconBundles, we just need to create the icons in one size and they get resized automaticaly</strong> :ghost:</p><p><strong>Want to create rounded icons?</strong> Create them squared only, we will learn how to apply masks!</p><h2>Exporting Icons</h2><p><strong>Note: All icons must be saved as <code>*.png</code> (Tip: This means you can even create partially transparent icons!)</strong></p><ul><li>All Icons must be saved in <code>themeName.theme>IconBundles</code> as <code>bundleID-large.png</code></li></ul><h5>Finding BundleIDs</h5><p><strong>Stock Application BundleIDs</strong></p><table><thead><tr><th>Name</th><th>BundleID</th></tr></thead><tbody><tr><td>App Store</td><td>com.apple.AppStore</td></tr><tr><td>Apple Watch</td><td>com.apple.Bridge</td></tr><tr><td>Calculator</td><td>com.apple.calculator</td></tr><tr><td>Calendar</td><td>com.apple.mobilecal</td></tr><tr><td>Camera</td><td>com.apple.camera</td></tr><tr><td>Classroom</td><td>com.apple.classroom</td></tr><tr><td>Clock</td><td>com.apple.mobiletimer</td></tr><tr><td>Compass</td><td>com.apple.compass</td></tr><tr><td>FaceTime</td><td>com.apple.facetime</td></tr><tr><td>Files</td><td>com.apple.DocumentsApp</td></tr><tr><td>Game Center</td><td>com.apple.gamecenter</td></tr><tr><td>Health</td><td>com.apple.Health</td></tr><tr><td>Home</td><td>com.apple.Home</td></tr><tr><td>iBooks</td><td>com.apple.iBooks</td></tr><tr><td>iTunes Store</td><td>com.apple.MobileStore</td></tr><tr><td>Mail</td><td>com.apple.mobilemail</td></tr><tr><td>Maps</td><td>com.apple.Maps</td></tr><tr><td>Measure</td><td>com.apple.measure</td></tr><tr><td>Messages</td><td>com.apple.MobileSMS</td></tr><tr><td>Music</td><td>com.apple.Music</td></tr><tr><td>News</td><td>com.apple.news</td></tr><tr><td>Notes</td><td>com.apple.mobilenotes</td></tr><tr><td>Phone</td><td>com.apple.mobilephone</td></tr><tr><td>Photo Booth</td><td>com.apple.Photo-Booth</td></tr><tr><td>Photos</td><td>com.apple.mobileslideshow</td></tr><tr><td>Playgrounds</td><td>come.apple.Playgrounds</td></tr><tr><td>Podcasts</td><td>com.apple.podcasts</td></tr><tr><td>Reminders</td><td>com.apple.reminders</td></tr><tr><td>Safari</td><td>com.apple.mobilesafari</td></tr><tr><td>Settings</td><td>com.apple.Preferences</td></tr><tr><td>Stocks</td><td>com.apple.stocks</td></tr><tr><td>Tips</td><td>com.apple.tips</td></tr><tr><td>TV</td><td>com.apple.tv</td></tr><tr><td>Videos</td><td>com.apple.videos</td></tr><tr><td>Voice Memos</td><td>com.apple.VoiceMemos</td></tr><tr><td>Wallet</td><td>com.apple.Passbook</td></tr><tr><td>Weather</td><td>com.apple.weather</td></tr></tbody></table><p><strong>3rd Party Applications BundleID</strong> Click <a href="http://offcornerdev.com/bundleid.html">here</a></p><h3>Icon Masks</h3><ul><li>Getting the Classic Rounded Rectangle Masks</li></ul><p>In your <code>Info.plist</code> file add the following value between <code><dict></code> and </dict> +</div></code></pre><ul><li>Replace <code>PackageName</code> with the name of the Package and replace <code>ThemeName</code> with the Theme Name</li></ul><p>Now, you might ask what is the difference between <code>PackageName</code> and <code>ThemeName</code>?</p><p>Well, if for example you want to publish two variants of your icons, one dark and one white but you do not want the user to seperately install them. Then, you would name the package <code>MyTheme</code> and include two themes <code>Blackie</code> and <code>White</code> thus creating two entries. More about this in the end</p><h2>Creating Icons</h2><ul><li>Open up the Image Editor of your choice and create a new file having a resolution of 512x512</li></ul><p><strong>Note: Due to IconBundles, we just need to create the icons in one size and they get resized automatically</strong> :ghost:</p><p><strong>Want to create rounded icons?</strong> Create them squared only, we will learn how to apply masks!</p><h2>Exporting Icons</h2><p><strong>Note: All icons must be saved as <code>*.png</code> (Tip: This means you can even create partially transparent icons!)</strong></p><ul><li>All Icons must be saved in <code>themeName.theme>IconBundles</code> as <code>bundleID-large.png</code></li></ul><h5>Finding BundleIDs</h5><p><strong>Stock Application BundleIDs</strong></p><table><thead><tr><th>Name</th><th>BundleID</th></tr></thead><tbody><tr><td>App Store</td><td>com.apple.AppStore</td></tr><tr><td>Apple Watch</td><td>com.apple.Bridge</td></tr><tr><td>Calculator</td><td>com.apple.calculator</td></tr><tr><td>Calendar</td><td>com.apple.mobilecal</td></tr><tr><td>Camera</td><td>com.apple.camera</td></tr><tr><td>Classroom</td><td>com.apple.classroom</td></tr><tr><td>Clock</td><td>com.apple.mobiletimer</td></tr><tr><td>Compass</td><td>com.apple.compass</td></tr><tr><td>FaceTime</td><td>com.apple.facetime</td></tr><tr><td>Files</td><td>com.apple.DocumentsApp</td></tr><tr><td>Game Center</td><td>com.apple.gamecenter</td></tr><tr><td>Health</td><td>com.apple.Health</td></tr><tr><td>Home</td><td>com.apple.Home</td></tr><tr><td>iBooks</td><td>com.apple.iBooks</td></tr><tr><td>iTunes Store</td><td>com.apple.MobileStore</td></tr><tr><td>Mail</td><td>com.apple.mobilemail</td></tr><tr><td>Maps</td><td>com.apple.Maps</td></tr><tr><td>Measure</td><td>com.apple.measure</td></tr><tr><td>Messages</td><td>com.apple.MobileSMS</td></tr><tr><td>Music</td><td>com.apple.Music</td></tr><tr><td>News</td><td>com.apple.news</td></tr><tr><td>Notes</td><td>com.apple.mobilenotes</td></tr><tr><td>Phone</td><td>com.apple.mobilephone</td></tr><tr><td>Photo Booth</td><td>com.apple.Photo-Booth</td></tr><tr><td>Photos</td><td>com.apple.mobileslideshow</td></tr><tr><td>Playgrounds</td><td>come.apple.Playgrounds</td></tr><tr><td>Podcasts</td><td>com.apple.podcasts</td></tr><tr><td>Reminders</td><td>com.apple.reminders</td></tr><tr><td>Safari</td><td>com.apple.mobilesafari</td></tr><tr><td>Settings</td><td>com.apple.Preferences</td></tr><tr><td>Stocks</td><td>com.apple.stocks</td></tr><tr><td>Tips</td><td>com.apple.tips</td></tr><tr><td>TV</td><td>com.apple.tv</td></tr><tr><td>Videos</td><td>com.apple.videos</td></tr><tr><td>Voice Memos</td><td>com.apple.VoiceMemos</td></tr><tr><td>Wallet</td><td>com.apple.Passbook</td></tr><tr><td>Weather</td><td>com.apple.weather</td></tr></tbody></table><p><strong>3rd Party Applications BundleID</strong> Click <a href="http://offcornerdev.com/bundleid.html">here</a></p><h3>Icon Masks</h3><ul><li>Getting the Classic Rounded Rectangle Masks</li></ul><p>In your <code>Info.plist</code> file add the following value between <code><dict></code> and </dict> ``` <key>IB-MaskIcons</key> @@ -58,7 +58,7 @@ would result in * Create a new folder outside `themeName.theme` with the name you want to be shown on Cydia, e.g `themeNameForCydia` * Create another folder called `DEBIAN` in `themeNameForCydia` (It needs to be uppercase) -* In `DEBIAN` create an extensionless file called `control` and edit it using your favourite text editor +* In `DEBIAN` create an extension-less file called `control` and edit it using your favourite text editor Paste the following in it, replacing `yourname`, `themename`, `Theme Name`, `A theme with beautiful icons!` and `Your Name` with your details: @@ -75,7 +75,7 @@ Section: Themes * Important Notes: * The package field **MUST** be lower case! - * The version field **MUST** be changed everytime you update your theme! + * The version field **MUST** be changed every-time you update your theme! * The control file **MUST** have an extra blank line at the bottom! * Now, Create another folder called `Library` in `themeNameForCydia` @@ -90,7 +90,7 @@ Section: Themes 1) Install Homenbrew `/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"` (Run this in the terminal) 2) Install dpkg, by running `brew install dpkg` -**There is a terrible thing called .DS_Store which if not removed, will cause a problem durin either build or installation** +**There is a terrible thing called .DS_Store which if not removed, will cause a problem during either build or installation** * To remove this we first need to open the folder in the terminal diff --git a/posts/2019-12-04-Google-Teachable-Machines/index.html b/posts/2019-12-04-Google-Teachable-Machines/index.html index 254d7f5..94ea7e8 100644 --- a/posts/2019-12-04-Google-Teachable-Machines/index.html +++ b/posts/2019-12-04-Google-Teachable-Machines/index.html @@ -1 +1 @@ -<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"/><meta name="og:site_name" content="Navan Chauhan"/><link rel="canonical" href="https://navanchauhan.github.io/posts/2019-12-04-Google-Teachable-Machines"/><meta name="twitter:url" content="https://navanchauhan.github.io/posts/2019-12-04-Google-Teachable-Machines"/><meta name="og:url" content="https://navanchauhan.github.io/posts/2019-12-04-Google-Teachable-Machines"/><title>Image Classifier With Teachable Machines | Navan Chauhan</title><meta name="twitter:title" content="Image Classifier With Teachable Machines | Navan Chauhan"/><meta name="og:title" content="Image Classifier With Teachable Machines | Navan Chauhan"/><meta name="description" content="Tutorial on creating a custom image classifier quickly with Google Teachanle Machines"/><meta name="twitter:description" content="Tutorial on creating a custom image classifier quickly with Google Teachanle Machines"/><meta name="og:description" content="Tutorial on creating a custom image classifier quickly with Google Teachanle Machines"/><meta name="twitter:card" content="summary"/><link rel="stylesheet" href="/styles.css" type="text/css"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><link rel="shortcut icon" href="/images/favicon.png" type="image/png"/><link rel="alternate" href="/feed.rss" type="application/rss+xml" title="Subscribe to Navan Chauhan"/><meta name="twitter:image" content="https://navanchauhan.github.io/images/logo.png"/><meta name="og:image" content="https://navanchauhan.github.io/images/logo.png"/></head><head><script>var _paq=window._paq=window._paq||[];_paq.push(['trackPageView']),_paq.push(['enableLinkTracking']),function(){var a='https://navanspi.duckdns.org:6969/analytics/';_paq.push(['setTrackerUrl',a+'matomo.php']),_paq.push(['setSiteId','2']);var e=document,t=e.createElement('script'),p=e.getElementsByTagName('script')[0];t.type='text/javascript',t.async=!0,t.src=a+'matomo.js',p.parentNode.insertBefore(t,p)}();</script></head><head><script src="https://www.googletagmanager.com/gtag/js?id=UA-108635191-1v"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-108635191-1');</script></head><body class="item-page"><header><div class="wrapper"><a class="site-name" href="/">Navan Chauhan</a><nav><ul><li><a href="/about">About Me</a></li><li><a class="selected" href="/posts">Posts</a></li><li><a href="/publications">Publications</a></li><li><a href="/assets/résumé.pdf">Résumé</a></li><li><a href="https://navanchauhan.github.io/repo">Repo</a></li></ul></nav></div></header><div class="wrapper"><article><div class="content"><span class="reading-time">2 minute read</span><span class="reading-time">Created on December 4, 2019</span><span class="reading-time">Last modified on June 1, 2020</span><h1>Image Classifier With Teachable Machines</h1><p>Made for Google Code-In</p><p><strong>Task Description</strong></p><p>Using Glitch and the Teachable Machines, build a Book Detector with Tensorflow.js. When a book is recognized, the code would randomly suggest a book/tell a famous quote from a book. Here is an example Project to get you started: https://glitch.com/~voltaic-acorn</p><h3>Details</h3><ol><li>Collecting Data</li></ol><p>Teachable Machine allows you to create your dataset just by using your webcam! I created a database consisting of three classes ( Three Books ) and approximately grabbed 100 pictures for each book/class</p><img src="/assets/gciTales/01-teachableMachines/01-collect.png"/><ol start="2"><li>Training</li></ol><p>Training on teachable machines is as simple as clicking the train button. I did not even have to modify any configurations.</p><img src="/assets/gciTales/01-teachableMachines/02-train.png"/><ol start="3"><li>Finding Labels</li></ol><p>Because I originally entered the entire name of the book and it's author's name as the label, the class name got truncated (Note to self, use shorter class names :p ). I then modified the code to print the modified label names in an alert box.</p><img src="/assets/gciTales/01-teachableMachines/03-label.png"/><img src="/assets/gciTales/01-teachableMachines/04-alert.png"/><ol start="4"><li>Adding a suggestions function</li></ol><p>I first added a text field on the main page and then modified the JavaScript file to suggest a similar book whenever the model predicted with an accuracy >= 98%</p><img src="/assets/gciTales/01-teachableMachines/05-html.png"/><img src="/assets/gciTales/01-teachableMachines/06-js.png"/><ol start="5"><li>Running!</li></ol><p>Here it is running!</p><img src="/assets/gciTales/01-teachableMachines/07-eg.png"/><img src="/assets/gciTales/01-teachableMachines/08-eg.png"/><p>Remix this project:-</p><p>https://luminous-opinion.glitch.me</p></div><span>Tagged with: </span><ul class="tag-list"><li><a href="/tags/tutorial">Tutorial</a></li></ul></article></div><footer><p>Made with ❤️ using <a href="https://github.com/johnsundell/publish">Publish</a></p><p><a href="/feed.rss">RSS feed</a></p></footer></body></html>
\ No newline at end of file +<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"/><meta name="og:site_name" content="Navan Chauhan"/><link rel="canonical" href="https://navanchauhan.github.io/posts/2019-12-04-Google-Teachable-Machines"/><meta name="twitter:url" content="https://navanchauhan.github.io/posts/2019-12-04-Google-Teachable-Machines"/><meta name="og:url" content="https://navanchauhan.github.io/posts/2019-12-04-Google-Teachable-Machines"/><title>Image Classifier With Teachable Machines | Navan Chauhan</title><meta name="twitter:title" content="Image Classifier With Teachable Machines | Navan Chauhan"/><meta name="og:title" content="Image Classifier With Teachable Machines | Navan Chauhan"/><meta name="description" content="Tutorial on creating a custom image classifier quickly with Google Teachable Machines"/><meta name="twitter:description" content="Tutorial on creating a custom image classifier quickly with Google Teachable Machines"/><meta name="og:description" content="Tutorial on creating a custom image classifier quickly with Google Teachable Machines"/><meta name="twitter:card" content="summary"/><link rel="stylesheet" href="/styles.css" type="text/css"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><link rel="shortcut icon" href="/images/favicon.png" type="image/png"/><link rel="alternate" href="/feed.rss" type="application/rss+xml" title="Subscribe to Navan Chauhan"/><meta name="twitter:image" content="https://navanchauhan.github.io/images/logo.png"/><meta name="og:image" content="https://navanchauhan.github.io/images/logo.png"/></head><head><script>var _paq=window._paq=window._paq||[];_paq.push(['trackPageView']),_paq.push(['enableLinkTracking']),function(){var a='https://navanspi.duckdns.org:6969/analytics/';_paq.push(['setTrackerUrl',a+'matomo.php']),_paq.push(['setSiteId','2']);var e=document,t=e.createElement('script'),p=e.getElementsByTagName('script')[0];t.type='text/javascript',t.async=!0,t.src=a+'matomo.js',p.parentNode.insertBefore(t,p)}();</script></head><head><script src="https://www.googletagmanager.com/gtag/js?id=UA-108635191-1v"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-108635191-1');</script></head><body class="item-page"><header><div class="wrapper"><a class="site-name" href="/">Navan Chauhan</a><nav><ul><li><a href="/about">About Me</a></li><li><a class="selected" href="/posts">Posts</a></li><li><a href="/publications">Publications</a></li><li><a href="/assets/résumé.pdf">Résumé</a></li><li><a href="https://navanchauhan.github.io/repo">Repo</a></li></ul></nav></div></header><div class="wrapper"><article><div class="content"><span class="reading-time">2 minute read</span><span class="reading-time">Created on December 4, 2019</span><span class="reading-time">Last modified on September 15, 2020</span><h1>Image Classifier With Teachable Machines</h1><p>Made for Google Code-In</p><p><strong>Task Description</strong></p><p>Using Glitch and the Teachable Machines, build a Book Detector with Tensorflow.js. When a book is recognized, the code would randomly suggest a book/tell a famous quote from a book. Here is an example Project to get you started: https://glitch.com/~voltaic-acorn</p><h3>Details</h3><ol><li>Collecting Data</li></ol><p>Teachable Machine allows you to create your dataset just by using your webcam! I created a database consisting of three classes ( Three Books ) and approximately grabbed 100 pictures for each book/class</p><img src="/assets/gciTales/01-teachableMachines/01-collect.png"/><ol start="2"><li>Training</li></ol><p>Training on teachable machines is as simple as clicking the train button. I did not even have to modify any configurations.</p><img src="/assets/gciTales/01-teachableMachines/02-train.png"/><ol start="3"><li>Finding Labels</li></ol><p>Because I originally entered the entire name of the book and it's author's name as the label, the class name got truncated (Note to self, use shorter class names :p ). I then modified the code to print the modified label names in an alert box.</p><img src="/assets/gciTales/01-teachableMachines/03-label.png"/><img src="/assets/gciTales/01-teachableMachines/04-alert.png"/><ol start="4"><li>Adding a suggestions function</li></ol><p>I first added a text field on the main page and then modified the JavaScript file to suggest a similar book whenever the model predicted with an accuracy >= 98%</p><img src="/assets/gciTales/01-teachableMachines/05-html.png"/><img src="/assets/gciTales/01-teachableMachines/06-js.png"/><ol start="5"><li>Running!</li></ol><p>Here it is running!</p><img src="/assets/gciTales/01-teachableMachines/07-eg.png"/><img src="/assets/gciTales/01-teachableMachines/08-eg.png"/><p>Remix this project:-</p><p>https://luminous-opinion.glitch.me</p></div><span>Tagged with: </span><ul class="tag-list"><li><a href="/tags/tutorial">Tutorial</a></li></ul></article></div><footer><p>Made with ❤️ using <a href="https://github.com/johnsundell/publish">Publish</a></p><p><a href="/feed.rss">RSS feed</a></p></footer></body></html>
\ No newline at end of file diff --git a/posts/2019-12-08-Image-Classifier-Tensorflow/index.html b/posts/2019-12-08-Image-Classifier-Tensorflow/index.html index 9b4db41..300fc2e 100644 --- a/posts/2019-12-08-Image-Classifier-Tensorflow/index.html +++ b/posts/2019-12-08-Image-Classifier-Tensorflow/index.html @@ -1,4 +1,4 @@ -<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"/><meta name="og:site_name" content="Navan Chauhan"/><link rel="canonical" href="https://navanchauhan.github.io/posts/2019-12-08-Image-Classifier-Tensorflow"/><meta name="twitter:url" content="https://navanchauhan.github.io/posts/2019-12-08-Image-Classifier-Tensorflow"/><meta name="og:url" content="https://navanchauhan.github.io/posts/2019-12-08-Image-Classifier-Tensorflow"/><title>Creating a Custom Image Classifier using Tensorflow 2.x and Keras for Detecting Malaria | Navan Chauhan</title><meta name="twitter:title" content="Creating a Custom Image Classifier using Tensorflow 2.x and Keras for Detecting Malaria | Navan Chauhan"/><meta name="og:title" content="Creating a Custom Image Classifier using Tensorflow 2.x and Keras for Detecting Malaria | Navan Chauhan"/><meta name="description" content="Tutorial on creating an image classifier model using TensorFlow which detects malaria"/><meta name="twitter:description" content="Tutorial on creating an image classifier model using TensorFlow which detects malaria"/><meta name="og:description" content="Tutorial on creating an image classifier model using TensorFlow which detects malaria"/><meta name="twitter:card" content="summary"/><link rel="stylesheet" href="/styles.css" type="text/css"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><link rel="shortcut icon" href="/images/favicon.png" type="image/png"/><link rel="alternate" href="/feed.rss" type="application/rss+xml" title="Subscribe to Navan Chauhan"/><meta name="twitter:image" content="https://navanchauhan.github.io/images/logo.png"/><meta name="og:image" content="https://navanchauhan.github.io/images/logo.png"/></head><head><script>var _paq=window._paq=window._paq||[];_paq.push(['trackPageView']),_paq.push(['enableLinkTracking']),function(){var a='https://navanspi.duckdns.org:6969/analytics/';_paq.push(['setTrackerUrl',a+'matomo.php']),_paq.push(['setSiteId','2']);var e=document,t=e.createElement('script'),p=e.getElementsByTagName('script')[0];t.type='text/javascript',t.async=!0,t.src=a+'matomo.js',p.parentNode.insertBefore(t,p)}();</script></head><head><script src="https://www.googletagmanager.com/gtag/js?id=UA-108635191-1v"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-108635191-1');</script></head><body class="item-page"><header><div class="wrapper"><a class="site-name" href="/">Navan Chauhan</a><nav><ul><li><a href="/about">About Me</a></li><li><a class="selected" href="/posts">Posts</a></li><li><a href="/publications">Publications</a></li><li><a href="/assets/résumé.pdf">Résumé</a></li><li><a href="https://navanchauhan.github.io/repo">Repo</a></li></ul></nav></div></header><div class="wrapper"><article><div class="content"><span class="reading-time">4 minute read</span><span class="reading-time">Created on December 8, 2019</span><span class="reading-time">Last modified on June 1, 2020</span><h1>Creating a Custom Image Classifier using Tensorflow 2.x and Keras for Detecting Malaria</h1><p><strong>Done during Google Code-In. Org: Tensorflow.</strong></p><h2>Imports</h2><pre><code><div class="highlight"><span></span><span class="o">%</span><span class="n">tensorflow_version</span> <span class="mf">2.</span><span class="n">x</span> <span class="c1">#This is for telling Colab that you want to use TF 2.0, ignore if running on local machine</span> +<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"/><meta name="og:site_name" content="Navan Chauhan"/><link rel="canonical" href="https://navanchauhan.github.io/posts/2019-12-08-Image-Classifier-Tensorflow"/><meta name="twitter:url" content="https://navanchauhan.github.io/posts/2019-12-08-Image-Classifier-Tensorflow"/><meta name="og:url" content="https://navanchauhan.github.io/posts/2019-12-08-Image-Classifier-Tensorflow"/><title>Creating a Custom Image Classifier using Tensorflow 2.x and Keras for Detecting Malaria | Navan Chauhan</title><meta name="twitter:title" content="Creating a Custom Image Classifier using Tensorflow 2.x and Keras for Detecting Malaria | Navan Chauhan"/><meta name="og:title" content="Creating a Custom Image Classifier using Tensorflow 2.x and Keras for Detecting Malaria | Navan Chauhan"/><meta name="description" content="Tutorial on creating an image classifier model using TensorFlow which detects malaria"/><meta name="twitter:description" content="Tutorial on creating an image classifier model using TensorFlow which detects malaria"/><meta name="og:description" content="Tutorial on creating an image classifier model using TensorFlow which detects malaria"/><meta name="twitter:card" content="summary"/><link rel="stylesheet" href="/styles.css" type="text/css"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><link rel="shortcut icon" href="/images/favicon.png" type="image/png"/><link rel="alternate" href="/feed.rss" type="application/rss+xml" title="Subscribe to Navan Chauhan"/><meta name="twitter:image" content="https://navanchauhan.github.io/images/logo.png"/><meta name="og:image" content="https://navanchauhan.github.io/images/logo.png"/></head><head><script>var _paq=window._paq=window._paq||[];_paq.push(['trackPageView']),_paq.push(['enableLinkTracking']),function(){var a='https://navanspi.duckdns.org:6969/analytics/';_paq.push(['setTrackerUrl',a+'matomo.php']),_paq.push(['setSiteId','2']);var e=document,t=e.createElement('script'),p=e.getElementsByTagName('script')[0];t.type='text/javascript',t.async=!0,t.src=a+'matomo.js',p.parentNode.insertBefore(t,p)}();</script></head><head><script src="https://www.googletagmanager.com/gtag/js?id=UA-108635191-1v"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-108635191-1');</script></head><body class="item-page"><header><div class="wrapper"><a class="site-name" href="/">Navan Chauhan</a><nav><ul><li><a href="/about">About Me</a></li><li><a class="selected" href="/posts">Posts</a></li><li><a href="/publications">Publications</a></li><li><a href="/assets/résumé.pdf">Résumé</a></li><li><a href="https://navanchauhan.github.io/repo">Repo</a></li></ul></nav></div></header><div class="wrapper"><article><div class="content"><span class="reading-time">4 minute read</span><span class="reading-time">Created on December 8, 2019</span><span class="reading-time">Last modified on September 15, 2020</span><h1>Creating a Custom Image Classifier using Tensorflow 2.x and Keras for Detecting Malaria</h1><p><strong>Done during Google Code-In. Org: Tensorflow.</strong></p><h2>Imports</h2><pre><code><div class="highlight"><span></span><span class="o">%</span><span class="n">tensorflow_version</span> <span class="mf">2.</span><span class="n">x</span> <span class="c1">#This is for telling Colab that you want to use TF 2.0, ignore if running on local machine</span> <span class="kn">from</span> <span class="nn">PIL</span> <span class="kn">import</span> <span class="n">Image</span> <span class="c1"># We use the PIL Library to resize images</span> <span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span> @@ -58,7 +58,7 @@ np.random.shuffle<span class="o">(</span>s<span class="o">)</span> <span class="n">model</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">layers</span><span class="o">.</span><span class="n">Dropout</span><span class="p">(</span><span class="mf">0.2</span><span class="p">))</span> <span class="n">model</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">layers</span><span class="o">.</span><span class="n">Dense</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="n">activation</span><span class="o">=</span><span class="s2">"softmax"</span><span class="p">))</span><span class="c1">#2 represent output layer neurons </span> <span class="n">model</span><span class="o">.</span><span class="n">summary</span><span class="p">()</span> -</div></code></pre><h3>Compiling Model</h3><p>We use the adam optimiser as it is an adaptive learning rate optimization algorithm that's been designed specifically for <em>training</em> deep neural networks, which means it changes its learning rate automaticaly to get the best results</p><pre><code><div class="highlight"><span></span><span class="n">model</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="n">optimizer</span><span class="o">=</span><span class="s2">"adam"</span><span class="p">,</span> +</div></code></pre><h3>Compiling Model</h3><p>We use the Adam optimiser as it is an adaptive learning rate optimisation algorithm that's been designed specifically for <em>training</em> deep neural networks, which means it changes its learning rate automatically to get the best results</p><pre><code><div class="highlight"><span></span><span class="n">model</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="n">optimizer</span><span class="o">=</span><span class="s2">"adam"</span><span class="p">,</span> <span class="n">loss</span><span class="o">=</span><span class="s2">"sparse_categorical_crossentropy"</span><span class="p">,</span> <span class="n">metrics</span><span class="o">=</span><span class="p">[</span><span class="s2">"accuracy"</span><span class="p">])</span> </div></code></pre><h3>Training Model</h3><p>We train the model for 10 epochs on the training data and then validate it using the testing data</p><pre><code><div class="highlight"><span></span><span class="n">history</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">X_train</span><span class="p">,</span><span class="n">y_train</span><span class="p">,</span> <span class="n">epochs</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">validation_data</span><span class="o">=</span><span class="p">(</span><span class="n">X_test</span><span class="p">,</span><span class="n">y_test</span><span class="p">))</span> diff --git a/posts/2019-12-16-TensorFlow-Polynomial-Regression/index.html b/posts/2019-12-16-TensorFlow-Polynomial-Regression/index.html index b9322b0..75b14ec 100644 --- a/posts/2019-12-16-TensorFlow-Polynomial-Regression/index.html +++ b/posts/2019-12-16-TensorFlow-Polynomial-Regression/index.html @@ -1,9 +1,9 @@ -<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"/><meta name="og:site_name" content="Navan Chauhan"/><link rel="canonical" href="https://navanchauhan.github.io/posts/2019-12-16-TensorFlow-Polynomial-Regression"/><meta name="twitter:url" content="https://navanchauhan.github.io/posts/2019-12-16-TensorFlow-Polynomial-Regression"/><meta name="og:url" content="https://navanchauhan.github.io/posts/2019-12-16-TensorFlow-Polynomial-Regression"/><title>Polynomial Regression Using TensorFlow | Navan Chauhan</title><meta name="twitter:title" content="Polynomial Regression Using TensorFlow | Navan Chauhan"/><meta name="og:title" content="Polynomial Regression Using TensorFlow | Navan Chauhan"/><meta name="description" content="Polynomial regression using TensorFlow"/><meta name="twitter:description" content="Polynomial regression using TensorFlow"/><meta name="og:description" content="Polynomial regression using TensorFlow"/><meta name="twitter:card" content="summary"/><link rel="stylesheet" href="/styles.css" type="text/css"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><link rel="shortcut icon" href="/images/favicon.png" type="image/png"/><link rel="alternate" href="/feed.rss" type="application/rss+xml" title="Subscribe to Navan Chauhan"/><meta name="twitter:image" content="https://navanchauhan.github.io/images/logo.png"/><meta name="og:image" content="https://navanchauhan.github.io/images/logo.png"/></head><head><script>var _paq=window._paq=window._paq||[];_paq.push(['trackPageView']),_paq.push(['enableLinkTracking']),function(){var a='https://navanspi.duckdns.org:6969/analytics/';_paq.push(['setTrackerUrl',a+'matomo.php']),_paq.push(['setSiteId','2']);var e=document,t=e.createElement('script'),p=e.getElementsByTagName('script')[0];t.type='text/javascript',t.async=!0,t.src=a+'matomo.js',p.parentNode.insertBefore(t,p)}();</script></head><head><script src="https://www.googletagmanager.com/gtag/js?id=UA-108635191-1v"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-108635191-1');</script></head><body class="item-page"><header><div class="wrapper"><a class="site-name" href="/">Navan Chauhan</a><nav><ul><li><a href="/about">About Me</a></li><li><a class="selected" href="/posts">Posts</a></li><li><a href="/publications">Publications</a></li><li><a href="/assets/résumé.pdf">Résumé</a></li><li><a href="https://navanchauhan.github.io/repo">Repo</a></li></ul></nav></div></header><div class="wrapper"><article><div class="content"><span class="reading-time">17 minute read</span><span class="reading-time">Created on December 16, 2019</span><span class="reading-time">Last modified on June 1, 2020</span><h1>Polynomial Regression Using TensorFlow</h1><p><strong>In this tutorial you will learn about polynomial regression and how you can implement it in Tensorflow.</strong></p><p>In this, we will be performing polynomial regression using 5 types of equations -</p><ul><li>Linear</li><li>Quadratic</li><li>Cubic</li><li>Quartic</li><li>Quintic</li></ul><h2>Regression</h2><h3>What is Regression?</h3><p>Regression is a statistical measurement that is used to try to determine the relationship between a dependent variable (often denoted by Y), and series of varying variables (called independent variables, often denoted by X ).</p><h3>What is Polynomial Regression</h3><p>This is a form of Regression Analysis where the relationship between Y and X is denoted as the nth degree/power of X. Polynomial regression even fits a non-linear relationship (e.g when the points don't form a straight line).</p><h2>Imports</h2><pre><code><div class="highlight"><span></span><span class="kn">import</span> <span class="nn">tensorflow.compat.v1</span> <span class="k">as</span> <span class="nn">tf</span> +<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"/><meta name="og:site_name" content="Navan Chauhan"/><link rel="canonical" href="https://navanchauhan.github.io/posts/2019-12-16-TensorFlow-Polynomial-Regression"/><meta name="twitter:url" content="https://navanchauhan.github.io/posts/2019-12-16-TensorFlow-Polynomial-Regression"/><meta name="og:url" content="https://navanchauhan.github.io/posts/2019-12-16-TensorFlow-Polynomial-Regression"/><title>Polynomial Regression Using TensorFlow | Navan Chauhan</title><meta name="twitter:title" content="Polynomial Regression Using TensorFlow | Navan Chauhan"/><meta name="og:title" content="Polynomial Regression Using TensorFlow | Navan Chauhan"/><meta name="description" content="Polynomial regression using TensorFlow"/><meta name="twitter:description" content="Polynomial regression using TensorFlow"/><meta name="og:description" content="Polynomial regression using TensorFlow"/><meta name="twitter:card" content="summary"/><link rel="stylesheet" href="/styles.css" type="text/css"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><link rel="shortcut icon" href="/images/favicon.png" type="image/png"/><link rel="alternate" href="/feed.rss" type="application/rss+xml" title="Subscribe to Navan Chauhan"/><meta name="twitter:image" content="https://navanchauhan.github.io/images/logo.png"/><meta name="og:image" content="https://navanchauhan.github.io/images/logo.png"/></head><head><script>var _paq=window._paq=window._paq||[];_paq.push(['trackPageView']),_paq.push(['enableLinkTracking']),function(){var a='https://navanspi.duckdns.org:6969/analytics/';_paq.push(['setTrackerUrl',a+'matomo.php']),_paq.push(['setSiteId','2']);var e=document,t=e.createElement('script'),p=e.getElementsByTagName('script')[0];t.type='text/javascript',t.async=!0,t.src=a+'matomo.js',p.parentNode.insertBefore(t,p)}();</script></head><head><script src="https://www.googletagmanager.com/gtag/js?id=UA-108635191-1v"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-108635191-1');</script></head><body class="item-page"><header><div class="wrapper"><a class="site-name" href="/">Navan Chauhan</a><nav><ul><li><a href="/about">About Me</a></li><li><a class="selected" href="/posts">Posts</a></li><li><a href="/publications">Publications</a></li><li><a href="/assets/résumé.pdf">Résumé</a></li><li><a href="https://navanchauhan.github.io/repo">Repo</a></li></ul></nav></div></header><div class="wrapper"><article><div class="content"><span class="reading-time">17 minute read</span><span class="reading-time">Created on December 16, 2019</span><span class="reading-time">Last modified on September 15, 2020</span><h1>Polynomial Regression Using TensorFlow</h1><p><strong>In this tutorial you will learn about polynomial regression and how you can implement it in Tensorflow.</strong></p><p>In this, we will be performing polynomial regression using 5 types of equations -</p><ul><li>Linear</li><li>Quadratic</li><li>Cubic</li><li>Quartic</li><li>Quintic</li></ul><h2>Regression</h2><h3>What is Regression?</h3><p>Regression is a statistical measurement that is used to try to determine the relationship between a dependent variable (often denoted by Y), and series of varying variables (called independent variables, often denoted by X ).</p><h3>What is Polynomial Regression</h3><p>This is a form of Regression Analysis where the relationship between Y and X is denoted as the nth degree/power of X. Polynomial regression even fits a non-linear relationship (e.g when the points don't form a straight line).</p><h2>Imports</h2><pre><code><div class="highlight"><span></span><span class="kn">import</span> <span class="nn">tensorflow.compat.v1</span> <span class="k">as</span> <span class="nn">tf</span> <span class="n">tf</span><span class="o">.</span><span class="n">disable_v2_behavior</span><span class="p">()</span> <span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span> <span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span> <span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span> -</div></code></pre><h2>Dataset</h2><h3>Creating Random Data</h3><p>Even though in this tutorial we will use a Position Vs Salary datasset, it is important to know how to create synthetic data</p><p>To create 50 values spaced evenly between 0 and 50, we use NumPy's linspace funtion</p><p><code>linspace(lower_limit, upper_limit, no_of_observations)</code></p><pre><code><div class="highlight"><span></span><span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">50</span><span class="p">,</span> <span class="mi">50</span><span class="p">)</span> +</div></code></pre><h2>Dataset</h2><h3>Creating Random Data</h3><p>Even though in this tutorial we will use a Position Vs Salary dataset, it is important to know how to create synthetic data</p><p>To create 50 values spaced evenly between 0 and 50, we use NumPy's linspace function</p><p><code>linspace(lower_limit, upper_limit, no_of_observations)</code></p><pre><code><div class="highlight"><span></span><span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">50</span><span class="p">,</span> <span class="mi">50</span><span class="p">)</span> <span class="n">y</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">50</span><span class="p">,</span> <span class="mi">50</span><span class="p">)</span> </div></code></pre><p>We use the following function to add noise to the data, so that our values</p><pre><code><div class="highlight"><span></span><span class="n">x</span> <span class="o">+=</span> <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">uniform</span><span class="p">(</span><span class="o">-</span><span class="mi">4</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">50</span><span class="p">)</span> <span class="n">y</span> <span class="o">+=</span> <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">uniform</span><span class="p">(</span><span class="o">-</span><span class="mi">4</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">50</span><span class="p">)</span> @@ -22,7 +22,7 @@ <span class="o">|</span> <span class="n">Senior</span> <span class="n">Partner</span> <span class="o">|</span> <span class="mi">8</span> <span class="o">|</span> <span class="mi">300000</span> <span class="o">|</span> <span class="o">|</span> <span class="n">C</span><span class="o">-</span><span class="n">level</span> <span class="o">|</span> <span class="mi">9</span> <span class="o">|</span> <span class="mi">500000</span> <span class="o">|</span> <span class="o">|</span> <span class="n">CEO</span> <span class="o">|</span> <span class="mi">10</span> <span class="o">|</span> <span class="mi">1000000</span> <span class="o">|</span> -</div></code></pre><p>We convert the salary column as the ordinate (y-cordinate) and level column as the abscissa</p><pre><code><div class="highlight"><span></span><span class="n">abscissa</span> <span class="o">=</span> <span class="n">df</span><span class="p">[</span><span class="s2">"Level"</span><span class="p">]</span><span class="o">.</span><span class="n">to_list</span><span class="p">()</span> <span class="c1"># abscissa = [1,2,3,4,5,6,7,8,9,10]</span> +</div></code></pre><p>We convert the salary column as the ordinate (y-coordinate) and level column as the abscissa</p><pre><code><div class="highlight"><span></span><span class="n">abscissa</span> <span class="o">=</span> <span class="n">df</span><span class="p">[</span><span class="s2">"Level"</span><span class="p">]</span><span class="o">.</span><span class="n">to_list</span><span class="p">()</span> <span class="c1"># abscissa = [1,2,3,4,5,6,7,8,9,10]</span> <span class="n">ordinate</span> <span class="o">=</span> <span class="n">df</span><span class="p">[</span><span class="s2">"Salary"</span><span class="p">]</span><span class="o">.</span><span class="n">to_list</span><span class="p">()</span> <span class="c1"># ordinate = [45000,50000,60000,80000,110000,150000,200000,300000,500000,1000000]</span> </div></code></pre><pre><code><div class="highlight"><span></span><span class="n">n</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">abscissa</span><span class="p">)</span> <span class="c1"># no of observations</span> <span class="n">plt</span><span class="o">.</span><span class="n">scatter</span><span class="p">(</span><span class="n">abscissa</span><span class="p">,</span> <span class="n">ordinate</span><span class="p">)</span> @@ -32,7 +32,7 @@ <span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span> </div></code></pre><img src="/assets/gciTales/03-regression/1.png"/><h2>Defining Stuff</h2><pre><code><div class="highlight"><span></span><span class="n">X</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">placeholder</span><span class="p">(</span><span class="s2">"float"</span><span class="p">)</span> <span class="n">Y</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">placeholder</span><span class="p">(</span><span class="s2">"float"</span><span class="p">)</span> -</div></code></pre><h3>Defining Variables</h3><p>We first define all the coefficients and constant as tensorflow variables haveing a random intitial value</p><pre><code><div class="highlight"><span></span><span class="n">a</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">Variable</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">randn</span><span class="p">(),</span> <span class="n">name</span> <span class="o">=</span> <span class="s2">"a"</span><span class="p">)</span> +</div></code></pre><h3>Defining Variables</h3><p>We first define all the coefficients and constant as tensorflow variables having a random initial value</p><pre><code><div class="highlight"><span></span><span class="n">a</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">Variable</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">randn</span><span class="p">(),</span> <span class="n">name</span> <span class="o">=</span> <span class="s2">"a"</span><span class="p">)</span> <span class="n">b</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">Variable</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">randn</span><span class="p">(),</span> <span class="n">name</span> <span class="o">=</span> <span class="s2">"b"</span><span class="p">)</span> <span class="n">c</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">Variable</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">randn</span><span class="p">(),</span> <span class="n">name</span> <span class="o">=</span> <span class="s2">"c"</span><span class="p">)</span> <span class="n">d</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">Variable</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">randn</span><span class="p">(),</span> <span class="n">name</span> <span class="o">=</span> <span class="s2">"d"</span><span class="p">)</span> @@ -304,4 +304,4 @@ <span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s1">'Quintic Regression Result'</span><span class="p">)</span> <span class="n">plt</span><span class="o">.</span><span class="n">legend</span><span class="p">()</span> <span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span> -</div></code></pre><img src="/assets/gciTales/03-regression/6.png"/><h2>Results and Conclusion</h2><p>You just learnt Polynomial Regression using TensorFlow!</p><h2>Notes</h2><h3>Overfitting</h3><blockquote><p>> Overfitting refers to a model that models the training data too well.Overfitting happens when a model learns the detail and noise in the training data to the extent that it negatively impacts the performance of the model on new data. This means that the noise or random fluctuations in the training data is picked up and learned as concepts by the model. The problem is that these concepts do not apply to new data and negatively impact the models ability to generalize.</p></blockquote><blockquote><p>Source: Machine Learning Mastery</p></blockquote><p>Basically if you train your machine learning model on a small dataset for a really large number of epochs, the model will learn all the deformities/noise in the data and will actually think that it is a normal part. Therefore when it will see some new data, it will discard that new data as noise and will impact the accuracy of the model in a negative manner</p></div><span>Tagged with: </span><ul class="tag-list"><li><a href="/tags/tutorial">Tutorial</a></li><li><a href="/tags/tensorflow">Tensorflow</a></li><li><a href="/tags/colab">Colab</a></li></ul></article></div><footer><p>Made with ❤️ using <a href="https://github.com/johnsundell/publish">Publish</a></p><p><a href="/feed.rss">RSS feed</a></p></footer></body></html>
\ No newline at end of file +</div></code></pre><img src="/assets/gciTales/03-regression/6.png"/><h2>Results and Conclusion</h2><p>You just learnt Polynomial Regression using TensorFlow!</p><h2>Notes</h2><h3>Overfitting</h3><blockquote><p>> Overfitting refers to a model that models the training data too well.Overfitting happens when a model learns the detail and noise in the training data to the extent that it negatively impacts the performance of the model on new data. This means that the noise or random fluctuations in the training data is picked up and learned as concepts by the model. The problem is that these concepts do not apply to new data and negatively impact the models ability to generalise.</p></blockquote><blockquote><p>Source: Machine Learning Mastery</p></blockquote><p>Basically if you train your machine learning model on a small dataset for a really large number of epochs, the model will learn all the deformities/noise in the data and will actually think that it is a normal part. Therefore when it will see some new data, it will discard that new data as noise and will impact the accuracy of the model in a negative manner</p></div><span>Tagged with: </span><ul class="tag-list"><li><a href="/tags/tutorial">Tutorial</a></li><li><a href="/tags/tensorflow">Tensorflow</a></li><li><a href="/tags/colab">Colab</a></li></ul></article></div><footer><p>Made with ❤️ using <a href="https://github.com/johnsundell/publish">Publish</a></p><p><a href="/feed.rss">RSS feed</a></p></footer></body></html>
\ No newline at end of file diff --git a/posts/2019-12-22-Fake-News-Detector/index.html b/posts/2019-12-22-Fake-News-Detector/index.html index 4f1197c..3ffb14a 100644 --- a/posts/2019-12-22-Fake-News-Detector/index.html +++ b/posts/2019-12-22-Fake-News-Detector/index.html @@ -1,4 +1,4 @@ -<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"/><meta name="og:site_name" content="Navan Chauhan"/><link rel="canonical" href="https://navanchauhan.github.io/posts/2019-12-22-Fake-News-Detector"/><meta name="twitter:url" content="https://navanchauhan.github.io/posts/2019-12-22-Fake-News-Detector"/><meta name="og:url" content="https://navanchauhan.github.io/posts/2019-12-22-Fake-News-Detector"/><title>Building a Fake News Detector with Turicreate | Navan Chauhan</title><meta name="twitter:title" content="Building a Fake News Detector with Turicreate | Navan Chauhan"/><meta name="og:title" content="Building a Fake News Detector with Turicreate | Navan Chauhan"/><meta name="description" content="In this tutorial we will build a fake news detecting app from scratch, using Turicreate for the machine learning model and SwiftUI for building the app"/><meta name="twitter:description" content="In this tutorial we will build a fake news detecting app from scratch, using Turicreate for the machine learning model and SwiftUI for building the app"/><meta name="og:description" content="In this tutorial we will build a fake news detecting app from scratch, using Turicreate for the machine learning model and SwiftUI for building the app"/><meta name="twitter:card" content="summary"/><link rel="stylesheet" href="/styles.css" type="text/css"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><link rel="shortcut icon" href="/images/favicon.png" type="image/png"/><link rel="alternate" href="/feed.rss" type="application/rss+xml" title="Subscribe to Navan Chauhan"/><meta name="twitter:image" content="https://navanchauhan.github.io/images/logo.png"/><meta name="og:image" content="https://navanchauhan.github.io/images/logo.png"/></head><head><script>var _paq=window._paq=window._paq||[];_paq.push(['trackPageView']),_paq.push(['enableLinkTracking']),function(){var a='https://navanspi.duckdns.org:6969/analytics/';_paq.push(['setTrackerUrl',a+'matomo.php']),_paq.push(['setSiteId','2']);var e=document,t=e.createElement('script'),p=e.getElementsByTagName('script')[0];t.type='text/javascript',t.async=!0,t.src=a+'matomo.js',p.parentNode.insertBefore(t,p)}();</script></head><head><script src="https://www.googletagmanager.com/gtag/js?id=UA-108635191-1v"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-108635191-1');</script></head><body class="item-page"><header><div class="wrapper"><a class="site-name" href="/">Navan Chauhan</a><nav><ul><li><a href="/about">About Me</a></li><li><a class="selected" href="/posts">Posts</a></li><li><a href="/publications">Publications</a></li><li><a href="/assets/résumé.pdf">Résumé</a></li><li><a href="https://navanchauhan.github.io/repo">Repo</a></li></ul></nav></div></header><div class="wrapper"><article><div class="content"><span class="reading-time">7 minute read</span><span class="reading-time">Created on December 22, 2019</span><span class="reading-time">Last modified on June 1, 2020</span><h1>Building a Fake News Detector with Turicreate</h1><p><strong>In this tutorial we will build a fake news detecting app from scratch, using Turicreate for the machine learning model and SwiftUI for building the app</strong></p><p>Note: These commands are written as if you are running a jupyter notebook.</p><h2>Building the Machine Learning Model</h2><h3>Data Gathering</h3><p>To build a classifier, you need a lot of data. George McIntire (GH: @joolsa) has created a wonderful dataset containing the headline, body and wheter it is fake or real. Whenever you are looking for a dataset, always try searching on Kaggle and GitHub before you start building your own</p><h3>Dependencies</h3><p>I used a Google Colab instance for training my model. If you also plan on using Google Colab then I reccomend choosing a GPU Instance (It is Free) This allows you to train the model on the GPU. Turicreat is built on top of Apache's MXNet Framework, for us to use GPU we need to install a CUDA compatible MXNet package.</p><pre><code><div class="highlight"><span></span><span class="nt">!pip</span><span class="na"> install turicreate</span> +<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"/><meta name="og:site_name" content="Navan Chauhan"/><link rel="canonical" href="https://navanchauhan.github.io/posts/2019-12-22-Fake-News-Detector"/><meta name="twitter:url" content="https://navanchauhan.github.io/posts/2019-12-22-Fake-News-Detector"/><meta name="og:url" content="https://navanchauhan.github.io/posts/2019-12-22-Fake-News-Detector"/><title>Building a Fake News Detector with Turicreate | Navan Chauhan</title><meta name="twitter:title" content="Building a Fake News Detector with Turicreate | Navan Chauhan"/><meta name="og:title" content="Building a Fake News Detector with Turicreate | Navan Chauhan"/><meta name="description" content="In this tutorial we will build a fake news detecting app from scratch, using Turicreate for the machine learning model and SwiftUI for building the app"/><meta name="twitter:description" content="In this tutorial we will build a fake news detecting app from scratch, using Turicreate for the machine learning model and SwiftUI for building the app"/><meta name="og:description" content="In this tutorial we will build a fake news detecting app from scratch, using Turicreate for the machine learning model and SwiftUI for building the app"/><meta name="twitter:card" content="summary"/><link rel="stylesheet" href="/styles.css" type="text/css"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><link rel="shortcut icon" href="/images/favicon.png" type="image/png"/><link rel="alternate" href="/feed.rss" type="application/rss+xml" title="Subscribe to Navan Chauhan"/><meta name="twitter:image" content="https://navanchauhan.github.io/images/logo.png"/><meta name="og:image" content="https://navanchauhan.github.io/images/logo.png"/></head><head><script>var _paq=window._paq=window._paq||[];_paq.push(['trackPageView']),_paq.push(['enableLinkTracking']),function(){var a='https://navanspi.duckdns.org:6969/analytics/';_paq.push(['setTrackerUrl',a+'matomo.php']),_paq.push(['setSiteId','2']);var e=document,t=e.createElement('script'),p=e.getElementsByTagName('script')[0];t.type='text/javascript',t.async=!0,t.src=a+'matomo.js',p.parentNode.insertBefore(t,p)}();</script></head><head><script src="https://www.googletagmanager.com/gtag/js?id=UA-108635191-1v"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-108635191-1');</script></head><body class="item-page"><header><div class="wrapper"><a class="site-name" href="/">Navan Chauhan</a><nav><ul><li><a href="/about">About Me</a></li><li><a class="selected" href="/posts">Posts</a></li><li><a href="/publications">Publications</a></li><li><a href="/assets/résumé.pdf">Résumé</a></li><li><a href="https://navanchauhan.github.io/repo">Repo</a></li></ul></nav></div></header><div class="wrapper"><article><div class="content"><span class="reading-time">7 minute read</span><span class="reading-time">Created on December 22, 2019</span><span class="reading-time">Last modified on September 15, 2020</span><h1>Building a Fake News Detector with Turicreate</h1><p><strong>In this tutorial we will build a fake news detecting app from scratch, using Turicreate for the machine learning model and SwiftUI for building the app</strong></p><p>Note: These commands are written as if you are running a jupyter notebook.</p><h2>Building the Machine Learning Model</h2><h3>Data Gathering</h3><p>To build a classifier, you need a lot of data. George McIntire (GH: @joolsa) has created a wonderful dataset containing the headline, body and whether it is fake or real. Whenever you are looking for a dataset, always try searching on Kaggle and GitHub before you start building your own</p><h3>Dependencies</h3><p>I used a Google Colab instance for training my model. If you also plan on using Google Colab then I recommend choosing a GPU Instance (It is Free) This allows you to train the model on the GPU. Turicreate is built on top of Apache's MXNet Framework, for us to use GPU we need to install a CUDA compatible MXNet package.</p><pre><code><div class="highlight"><span></span><span class="nt">!pip</span><span class="na"> install turicreate</span> <span class="na">!pip uninstall -y mxnet</span> <span class="na">!pip install mxnet-cu100==1.4.0.post0</span> </div></code></pre><p>If you do not wish to train on GPU or are running it on your computer, you can ignore the last two lines</p><h3>Downloading the Dataset</h3><pre><code><div class="highlight"><span></span><span class="nt">!wget</span><span class="na"> -q "https</span><span class="p">:</span><span class="nc">//github.com/joolsa/fake_real_news_dataset/raw/master/fake_or_real_news.csv.zip"</span> @@ -39,7 +39,7 @@ </div></code></pre><h3>Exporting the Model</h3><pre><code><div class="highlight"><span></span><span class="n">model_name</span> <span class="o">=</span> <span class="s1">'FakeNews'</span> <span class="n">coreml_model_name</span> <span class="o">=</span> <span class="n">model_name</span> <span class="o">+</span> <span class="s1">'.mlmodel'</span> <span class="n">exportedModel</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">export_coreml</span><span class="p">(</span><span class="n">coreml_model_name</span><span class="p">)</span> -</div></code></pre><p><strong>Note: To download files from Google Volab, simply click on the files section in the sidebar, right click on filename and then click on downlaod</strong></p><p><a href="https://colab.research.google.com/drive/1onMXGkhA__X2aOFdsoVL-6HQBsWQhOP4">Link to Colab Notebook</a></p><h2>Building the App using SwiftUI</h2><h3>Initial Setup</h3><p>First we create a single view app (make sure you check the use SwiftUI button)</p><p>Then we copy our .mlmodel file to our project (Just drag and drop the file in the XCode Files Sidebar)</p><p>Our ML Model does not take a string directly as an input, rather it takes bag of words as an input. DescriptionThe bag-of-words model is a simplifying representation used in NLP, in this text is represented as a bag of words, without any regatd of grammar or order, but noting multiplicity</p><p>We define our bag of words function</p><pre><code><div class="highlight"><span></span><span class="kd">func</span> <span class="nf">bow</span><span class="p">(</span><span class="n">text</span><span class="p">:</span> <span class="nb">String</span><span class="p">)</span> <span class="p">-></span> <span class="p">[</span><span class="nb">String</span><span class="p">:</span> <span class="nb">Double</span><span class="p">]</span> <span class="p">{</span> +</div></code></pre><p><strong>Note: To download files from Google Colab, simply click on the files section in the sidebar, right click on filename and then click on download</strong></p><p><a href="https://colab.research.google.com/drive/1onMXGkhA__X2aOFdsoVL-6HQBsWQhOP4">Link to Colab Notebook</a></p><h2>Building the App using SwiftUI</h2><h3>Initial Setup</h3><p>First we create a single view app (make sure you check the use SwiftUI button)</p><p>Then we copy our .mlmodel file to our project (Just drag and drop the file in the XCode Files Sidebar)</p><p>Our ML Model does not take a string directly as an input, rather it takes bag of words as an input. DescriptionThe bag-of-words model is a simplifying representation used in NLP, in this text is represented as a bag of words, without any regard for grammar or order, but noting multiplicity</p><p>We define our bag of words function</p><pre><code><div class="highlight"><span></span><span class="kd">func</span> <span class="nf">bow</span><span class="p">(</span><span class="n">text</span><span class="p">:</span> <span class="nb">String</span><span class="p">)</span> <span class="p">-></span> <span class="p">[</span><span class="nb">String</span><span class="p">:</span> <span class="nb">Double</span><span class="p">]</span> <span class="p">{</span> <span class="kd">var</span> <span class="nv">bagOfWords</span> <span class="p">=</span> <span class="p">[</span><span class="nb">String</span><span class="p">:</span> <span class="nb">Double</span><span class="p">]()</span> <span class="kd">let</span> <span class="nv">tagger</span> <span class="p">=</span> <span class="bp">NSLinguisticTagger</span><span class="p">(</span><span class="n">tagSchemes</span><span class="p">:</span> <span class="p">[.</span><span class="n">tokenType</span><span class="p">],</span> <span class="n">options</span><span class="p">:</span> <span class="mi">0</span><span class="p">)</span> diff --git a/posts/2020-01-15-Setting-up-Kaggle-to-use-with-Colab/index.html b/posts/2020-01-15-Setting-up-Kaggle-to-use-with-Colab/index.html index d7b1e62..afd97b8 100644 --- a/posts/2020-01-15-Setting-up-Kaggle-to-use-with-Colab/index.html +++ b/posts/2020-01-15-Setting-up-Kaggle-to-use-with-Colab/index.html @@ -1,5 +1,5 @@ -<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"/><meta name="og:site_name" content="Navan Chauhan"/><link rel="canonical" href="https://navanchauhan.github.io/posts/2020-01-15-Setting-up-Kaggle-to-use-with-Colab"/><meta name="twitter:url" content="https://navanchauhan.github.io/posts/2020-01-15-Setting-up-Kaggle-to-use-with-Colab"/><meta name="og:url" content="https://navanchauhan.github.io/posts/2020-01-15-Setting-up-Kaggle-to-use-with-Colab"/><title>Setting up Kaggle to use with Google Colab | Navan Chauhan</title><meta name="twitter:title" content="Setting up Kaggle to use with Google Colab | Navan Chauhan"/><meta name="og:title" content="Setting up Kaggle to use with Google Colab | Navan Chauhan"/><meta name="description" content="Tutorial on setting up kaggle, to use with Google Colab"/><meta name="twitter:description" content="Tutorial on setting up kaggle, to use with Google Colab"/><meta name="og:description" content="Tutorial on setting up kaggle, to use with Google Colab"/><meta name="twitter:card" content="summary"/><link rel="stylesheet" href="/styles.css" type="text/css"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><link rel="shortcut icon" href="/images/favicon.png" type="image/png"/><link rel="alternate" href="/feed.rss" type="application/rss+xml" title="Subscribe to Navan Chauhan"/><meta name="twitter:image" content="https://navanchauhan.github.io/images/logo.png"/><meta name="og:image" content="https://navanchauhan.github.io/images/logo.png"/></head><head><script>var _paq=window._paq=window._paq||[];_paq.push(['trackPageView']),_paq.push(['enableLinkTracking']),function(){var a='https://navanspi.duckdns.org:6969/analytics/';_paq.push(['setTrackerUrl',a+'matomo.php']),_paq.push(['setSiteId','2']);var e=document,t=e.createElement('script'),p=e.getElementsByTagName('script')[0];t.type='text/javascript',t.async=!0,t.src=a+'matomo.js',p.parentNode.insertBefore(t,p)}();</script></head><head><script src="https://www.googletagmanager.com/gtag/js?id=UA-108635191-1v"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-108635191-1');</script></head><body class="item-page"><header><div class="wrapper"><a class="site-name" href="/">Navan Chauhan</a><nav><ul><li><a href="/about">About Me</a></li><li><a class="selected" href="/posts">Posts</a></li><li><a href="/publications">Publications</a></li><li><a href="/assets/résumé.pdf">Résumé</a></li><li><a href="https://navanchauhan.github.io/repo">Repo</a></li></ul></nav></div></header><div class="wrapper"><article><div class="content"><span class="reading-time">1 minute read</span><span class="reading-time">Created on January 15, 2020</span><span class="reading-time">Last modified on June 1, 2020</span><h1>Setting up Kaggle to use with Google Colab</h1><p><em>In order to be able to access Kaggle Datasets, you will need to have an account on Kaggle (which is Free)</em></p><h2>Grabbing Our Tokens</h2><h3>Go to Kaggle</h3><img src="/assets/posts/kaggle-colab/ss1.png" alt=""Homepage""/><h3>Click on your User Profile and Click on My Account</h3><img src="/assets/posts/kaggle-colab/ss2.png" alt=""Account""/><h3>Scroll Down untill you see Create New API Token</h3><img src="/assets/posts/kaggle-colab/ss3.png"/><h3>This will download your token as a JSON file</h3><img src="/assets/posts/kaggle-colab/ss4.png"/><p>Copy the File to the root folder of your Google Drive</p><h2>Setting up Colab</h2><h3>Mounting Google Drive</h3><pre><code><div class="highlight"><span></span><span class="kn">import</span> <span class="nn">os</span> +<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"/><meta name="og:site_name" content="Navan Chauhan"/><link rel="canonical" href="https://navanchauhan.github.io/posts/2020-01-15-Setting-up-Kaggle-to-use-with-Colab"/><meta name="twitter:url" content="https://navanchauhan.github.io/posts/2020-01-15-Setting-up-Kaggle-to-use-with-Colab"/><meta name="og:url" content="https://navanchauhan.github.io/posts/2020-01-15-Setting-up-Kaggle-to-use-with-Colab"/><title>Setting up Kaggle to use with Google Colab | Navan Chauhan</title><meta name="twitter:title" content="Setting up Kaggle to use with Google Colab | Navan Chauhan"/><meta name="og:title" content="Setting up Kaggle to use with Google Colab | Navan Chauhan"/><meta name="description" content="Tutorial on setting up kaggle, to use with Google Colab"/><meta name="twitter:description" content="Tutorial on setting up kaggle, to use with Google Colab"/><meta name="og:description" content="Tutorial on setting up kaggle, to use with Google Colab"/><meta name="twitter:card" content="summary"/><link rel="stylesheet" href="/styles.css" type="text/css"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><link rel="shortcut icon" href="/images/favicon.png" type="image/png"/><link rel="alternate" href="/feed.rss" type="application/rss+xml" title="Subscribe to Navan Chauhan"/><meta name="twitter:image" content="https://navanchauhan.github.io/images/logo.png"/><meta name="og:image" content="https://navanchauhan.github.io/images/logo.png"/></head><head><script>var _paq=window._paq=window._paq||[];_paq.push(['trackPageView']),_paq.push(['enableLinkTracking']),function(){var a='https://navanspi.duckdns.org:6969/analytics/';_paq.push(['setTrackerUrl',a+'matomo.php']),_paq.push(['setSiteId','2']);var e=document,t=e.createElement('script'),p=e.getElementsByTagName('script')[0];t.type='text/javascript',t.async=!0,t.src=a+'matomo.js',p.parentNode.insertBefore(t,p)}();</script></head><head><script src="https://www.googletagmanager.com/gtag/js?id=UA-108635191-1v"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-108635191-1');</script></head><body class="item-page"><header><div class="wrapper"><a class="site-name" href="/">Navan Chauhan</a><nav><ul><li><a href="/about">About Me</a></li><li><a class="selected" href="/posts">Posts</a></li><li><a href="/publications">Publications</a></li><li><a href="/assets/résumé.pdf">Résumé</a></li><li><a href="https://navanchauhan.github.io/repo">Repo</a></li></ul></nav></div></header><div class="wrapper"><article><div class="content"><span class="reading-time">1 minute read</span><span class="reading-time">Created on January 15, 2020</span><span class="reading-time">Last modified on September 15, 2020</span><h1>Setting up Kaggle to use with Google Colab</h1><p><em>In order to be able to access Kaggle Datasets, you will need to have an account on Kaggle (which is Free)</em></p><h2>Grabbing Our Tokens</h2><h3>Go to Kaggle</h3><img src="/assets/posts/kaggle-colab/ss1.png" alt=""Homepage""/><h3>Click on your User Profile and Click on My Account</h3><img src="/assets/posts/kaggle-colab/ss2.png" alt=""Account""/><h3>Scroll Down until you see Create New API Token</h3><img src="/assets/posts/kaggle-colab/ss3.png"/><h3>This will download your token as a JSON file</h3><img src="/assets/posts/kaggle-colab/ss4.png"/><p>Copy the File to the root folder of your Google Drive</p><h2>Setting up Colab</h2><h3>Mounting Google Drive</h3><pre><code><div class="highlight"><span></span><span class="kn">import</span> <span class="nn">os</span> <span class="kn">from</span> <span class="nn">google.colab</span> <span class="kn">import</span> <span class="n">drive</span> <span class="n">drive</span><span class="o">.</span><span class="n">mount</span><span class="p">(</span><span class="s1">'/content/drive'</span><span class="p">)</span> </div></code></pre><p>After this click on the URL in the output section, login and then paste the Auth Code</p><h3>Configuring Kaggle</h3><pre><code><div class="highlight"><span></span><span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="s1">'KAGGLE_CONFIG_DIR'</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"/content/drive/My Drive/"</span> -</div></code></pre><p>Voila! You can now download kaggel datasets</p></div><span>Tagged with: </span><ul class="tag-list"><li><a href="/tags/tutorial">Tutorial</a></li><li><a href="/tags/colab">Colab</a></li><li><a href="/tags/turicreate">Turicreate</a></li><li><a href="/tags/kaggle">Kaggle</a></li></ul></article></div><footer><p>Made with ❤️ using <a href="https://github.com/johnsundell/publish">Publish</a></p><p><a href="/feed.rss">RSS feed</a></p></footer></body></html>
\ No newline at end of file +</div></code></pre><p>Voila! You can now download Kaggle datasets</p></div><span>Tagged with: </span><ul class="tag-list"><li><a href="/tags/tutorial">Tutorial</a></li><li><a href="/tags/colab">Colab</a></li><li><a href="/tags/turicreate">Turicreate</a></li><li><a href="/tags/kaggle">Kaggle</a></li></ul></article></div><footer><p>Made with ❤️ using <a href="https://github.com/johnsundell/publish">Publish</a></p><p><a href="/feed.rss">RSS feed</a></p></footer></body></html>
\ No newline at end of file diff --git a/posts/2020-03-08-Making-Vaporwave-Track/index.html b/posts/2020-03-08-Making-Vaporwave-Track/index.html index 92c2148..6dbaa38 100644 --- a/posts/2020-03-08-Making-Vaporwave-Track/index.html +++ b/posts/2020-03-08-Making-Vaporwave-Track/index.html @@ -1 +1 @@ -<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"/><meta name="og:site_name" content="Navan Chauhan"/><link rel="canonical" href="https://navanchauhan.github.io/posts/2020-03-08-Making-Vaporwave-Track"/><meta name="twitter:url" content="https://navanchauhan.github.io/posts/2020-03-08-Making-Vaporwave-Track"/><meta name="og:url" content="https://navanchauhan.github.io/posts/2020-03-08-Making-Vaporwave-Track"/><title>Making My First Vaporwave Track (Remix) | Navan Chauhan</title><meta name="twitter:title" content="Making My First Vaporwave Track (Remix) | Navan Chauhan"/><meta name="og:title" content="Making My First Vaporwave Track (Remix) | Navan Chauhan"/><meta name="description" content="I made my first vaporwave remix"/><meta name="twitter:description" content="I made my first vaporwave remix"/><meta name="og:description" content="I made my first vaporwave remix"/><meta name="twitter:card" content="summary"/><link rel="stylesheet" href="/styles.css" type="text/css"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><link rel="shortcut icon" href="/images/favicon.png" type="image/png"/><link rel="alternate" href="/feed.rss" type="application/rss+xml" title="Subscribe to Navan Chauhan"/><meta name="twitter:image" content="https://navanchauhan.github.io/images/logo.png"/><meta name="og:image" content="https://navanchauhan.github.io/images/logo.png"/></head><head><script>var _paq=window._paq=window._paq||[];_paq.push(['trackPageView']),_paq.push(['enableLinkTracking']),function(){var a='https://navanspi.duckdns.org:6969/analytics/';_paq.push(['setTrackerUrl',a+'matomo.php']),_paq.push(['setSiteId','2']);var e=document,t=e.createElement('script'),p=e.getElementsByTagName('script')[0];t.type='text/javascript',t.async=!0,t.src=a+'matomo.js',p.parentNode.insertBefore(t,p)}();</script></head><head><script src="https://www.googletagmanager.com/gtag/js?id=UA-108635191-1v"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-108635191-1');</script></head><body class="item-page"><header><div class="wrapper"><a class="site-name" href="/">Navan Chauhan</a><nav><ul><li><a href="/about">About Me</a></li><li><a class="selected" href="/posts">Posts</a></li><li><a href="/publications">Publications</a></li><li><a href="/assets/résumé.pdf">Résumé</a></li><li><a href="https://navanchauhan.github.io/repo">Repo</a></li></ul></nav></div></header><div class="wrapper"><article><div class="content"><span class="reading-time">2 minute read</span><span class="reading-time">Created on March 8, 2020</span><span class="reading-time">Last modified on June 1, 2020</span><h1>Making My First Vaporwave Track (Remix)</h1><p>I finally completed my first quick and dirty vaporwave remix of "I Want It That Way" by the Backstreet Boys</p><h1>V A P O R W A V E</h1><p>Vaporwave is all about A E S T H E T I C S. Vaporwave is a type of music genre that emmerged as a parody of Chillwave, shared more as a meme rather than a proper musical genre. Of course this changed as the genre become mature</p><h1>How to Vaporwave</h1><p>The first track which is considered to be actual Vaporwave is Ramona Xavier's Macintosh Plus, this unspokenly set the the guidelines for making Vaporwave</p><ul><li>Take a 1980s RnB song</li><li>Slow it down</li><li>Add Bass and Trebble</li><li>Add again</li><li>Add Reverb ( make sure its wet )</li></ul><p>There you have your very own Vaporwave track.</p><p>( Now, there are some tracks being produced which are not remixes and are original )</p><h1>My Remix</h1><iframe width="300" height="202" src="https://www.bandlab.com/embed/?id=aa91e786-6361-ea11-a94c-0003ffd1cad8&blur=false" frameborder="0" allowfullscreen></iframe><h1>Where is the Programming?</h1><p>The fact that there are steps on producing Vaporwave, this gave me the idea that Vaporwave can actually be made using programming, stay tuned for when I publish the program which I am working on ( Generating A E S T H E T I C artwork and remixes)</p></div><span>Tagged with: </span><ul class="tag-list"><li><a href="/tags/vaporwave">Vaporwave</a></li><li><a href="/tags/music">Music</a></li></ul></article></div><footer><p>Made with ❤️ using <a href="https://github.com/johnsundell/publish">Publish</a></p><p><a href="/feed.rss">RSS feed</a></p></footer></body></html>
\ No newline at end of file +<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"/><meta name="og:site_name" content="Navan Chauhan"/><link rel="canonical" href="https://navanchauhan.github.io/posts/2020-03-08-Making-Vaporwave-Track"/><meta name="twitter:url" content="https://navanchauhan.github.io/posts/2020-03-08-Making-Vaporwave-Track"/><meta name="og:url" content="https://navanchauhan.github.io/posts/2020-03-08-Making-Vaporwave-Track"/><title>Making My First Vaporwave Track (Remix) | Navan Chauhan</title><meta name="twitter:title" content="Making My First Vaporwave Track (Remix) | Navan Chauhan"/><meta name="og:title" content="Making My First Vaporwave Track (Remix) | Navan Chauhan"/><meta name="description" content="I made my first vaporwave remix"/><meta name="twitter:description" content="I made my first vaporwave remix"/><meta name="og:description" content="I made my first vaporwave remix"/><meta name="twitter:card" content="summary"/><link rel="stylesheet" href="/styles.css" type="text/css"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><link rel="shortcut icon" href="/images/favicon.png" type="image/png"/><link rel="alternate" href="/feed.rss" type="application/rss+xml" title="Subscribe to Navan Chauhan"/><meta name="twitter:image" content="https://navanchauhan.github.io/images/logo.png"/><meta name="og:image" content="https://navanchauhan.github.io/images/logo.png"/></head><head><script>var _paq=window._paq=window._paq||[];_paq.push(['trackPageView']),_paq.push(['enableLinkTracking']),function(){var a='https://navanspi.duckdns.org:6969/analytics/';_paq.push(['setTrackerUrl',a+'matomo.php']),_paq.push(['setSiteId','2']);var e=document,t=e.createElement('script'),p=e.getElementsByTagName('script')[0];t.type='text/javascript',t.async=!0,t.src=a+'matomo.js',p.parentNode.insertBefore(t,p)}();</script></head><head><script src="https://www.googletagmanager.com/gtag/js?id=UA-108635191-1v"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-108635191-1');</script></head><body class="item-page"><header><div class="wrapper"><a class="site-name" href="/">Navan Chauhan</a><nav><ul><li><a href="/about">About Me</a></li><li><a class="selected" href="/posts">Posts</a></li><li><a href="/publications">Publications</a></li><li><a href="/assets/résumé.pdf">Résumé</a></li><li><a href="https://navanchauhan.github.io/repo">Repo</a></li></ul></nav></div></header><div class="wrapper"><article><div class="content"><span class="reading-time">2 minute read</span><span class="reading-time">Created on March 8, 2020</span><span class="reading-time">Last modified on September 15, 2020</span><h1>Making My First Vaporwave Track (Remix)</h1><p>I finally completed my first quick and dirty vaporwave remix of "I Want It That Way" by the Backstreet Boys</p><h1>V A P O R W A V E</h1><p>Vaporwave is all about A E S T H E T I C S. Vaporwave is a type of music genre that emerged as a parody of Chillwave, shared more as a meme rather than a proper musical genre. Of course this changed as the genre become mature</p><h1>How to Vaporwave</h1><p>The first track which is considered to be actual Vaporwave is Ramona Xavier's Macintosh Plus, this set the the guidelines for making Vaporwave</p><ul><li>Take a 1980s RnB song</li><li>Slow it down</li><li>Add Bass and Treble</li><li>Add again</li><li>Add Reverb ( make sure its wet )</li></ul><p>There you have your very own Vaporwave track.</p><p>( Now, there are some tracks being produced which are not remixes and are original )</p><h1>My Remix</h1><iframe width="300" height="202" src="https://www.bandlab.com/embed/?id=aa91e786-6361-ea11-a94c-0003ffd1cad8&blur=false" frameborder="0" allowfullscreen></iframe><h1>Where is the Programming?</h1><p>The fact that there are steps on producing Vaporwave, this gave me the idea that Vaporwave can actually be made using programming, stay tuned for when I publish the program which I am working on ( Generating A E S T H E T I C artwork and remixes)</p></div><span>Tagged with: </span><ul class="tag-list"><li><a href="/tags/vaporwave">Vaporwave</a></li><li><a href="/tags/music">Music</a></li></ul></article></div><footer><p>Made with ❤️ using <a href="https://github.com/johnsundell/publish">Publish</a></p><p><a href="/feed.rss">RSS feed</a></p></footer></body></html>
\ No newline at end of file diff --git a/posts/2020-04-13-Fixing-X11-Error-AmberTools-macOS/index.html b/posts/2020-04-13-Fixing-X11-Error-AmberTools-macOS/index.html index 44f9312..d1c7421 100644 --- a/posts/2020-04-13-Fixing-X11-Error-AmberTools-macOS/index.html +++ b/posts/2020-04-13-Fixing-X11-Error-AmberTools-macOS/index.html @@ -1,4 +1,4 @@ -<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"/><meta name="og:site_name" content="Navan Chauhan"/><link rel="canonical" href="https://navanchauhan.github.io/posts/2020-04-13-Fixing-X11-Error-AmberTools-macOS"/><meta name="twitter:url" content="https://navanchauhan.github.io/posts/2020-04-13-Fixing-X11-Error-AmberTools-macOS"/><meta name="og:url" content="https://navanchauhan.github.io/posts/2020-04-13-Fixing-X11-Error-AmberTools-macOS"/><title>Fixing X11 Error on macOS Catalina for AmberTools 18/19 | Navan Chauhan</title><meta name="twitter:title" content="Fixing X11 Error on macOS Catalina for AmberTools 18/19 | Navan Chauhan"/><meta name="og:title" content="Fixing X11 Error on macOS Catalina for AmberTools 18/19 | Navan Chauhan"/><meta name="description" content="Fixing Could not find the X11 libraries; you may need to edit config.h, AmberTools macOS Catalina"/><meta name="twitter:description" content="Fixing Could not find the X11 libraries; you may need to edit config.h, AmberTools macOS Catalina"/><meta name="og:description" content="Fixing Could not find the X11 libraries; you may need to edit config.h, AmberTools macOS Catalina"/><meta name="twitter:card" content="summary"/><link rel="stylesheet" href="/styles.css" type="text/css"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><link rel="shortcut icon" href="/images/favicon.png" type="image/png"/><link rel="alternate" href="/feed.rss" type="application/rss+xml" title="Subscribe to Navan Chauhan"/><meta name="twitter:image" content="https://navanchauhan.github.io/images/logo.png"/><meta name="og:image" content="https://navanchauhan.github.io/images/logo.png"/></head><head><script>var _paq=window._paq=window._paq||[];_paq.push(['trackPageView']),_paq.push(['enableLinkTracking']),function(){var a='https://navanspi.duckdns.org:6969/analytics/';_paq.push(['setTrackerUrl',a+'matomo.php']),_paq.push(['setSiteId','2']);var e=document,t=e.createElement('script'),p=e.getElementsByTagName('script')[0];t.type='text/javascript',t.async=!0,t.src=a+'matomo.js',p.parentNode.insertBefore(t,p)}();</script></head><head><script src="https://www.googletagmanager.com/gtag/js?id=UA-108635191-1v"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-108635191-1');</script></head><body class="item-page"><header><div class="wrapper"><a class="site-name" href="/">Navan Chauhan</a><nav><ul><li><a href="/about">About Me</a></li><li><a class="selected" href="/posts">Posts</a></li><li><a href="/publications">Publications</a></li><li><a href="/assets/résumé.pdf">Résumé</a></li><li><a href="https://navanchauhan.github.io/repo">Repo</a></li></ul></nav></div></header><div class="wrapper"><article><div class="content"><span class="reading-time">2 minute read</span><span class="reading-time">Created on April 13, 2020</span><span class="reading-time">Last modified on June 1, 2020</span><h1>Fixing X11 Error on macOS Catalina for AmberTools 18/19</h1><p>I was trying to install AmberTools on my macOS Catalina Installation. Running <code>./configure -macAccelerate clang</code> gave me an error that it could not find X11 libraries, even though <code>locate libXt</code> showed that my installation was correct.</p><p>Error:</p><pre><code><div class="highlight"><span></span>Could not find the X11 libraries<span class="p">;</span> you may need to edit config.h +<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"/><meta name="og:site_name" content="Navan Chauhan"/><link rel="canonical" href="https://navanchauhan.github.io/posts/2020-04-13-Fixing-X11-Error-AmberTools-macOS"/><meta name="twitter:url" content="https://navanchauhan.github.io/posts/2020-04-13-Fixing-X11-Error-AmberTools-macOS"/><meta name="og:url" content="https://navanchauhan.github.io/posts/2020-04-13-Fixing-X11-Error-AmberTools-macOS"/><title>Fixing X11 Error on macOS Catalina for AmberTools 18/19 | Navan Chauhan</title><meta name="twitter:title" content="Fixing X11 Error on macOS Catalina for AmberTools 18/19 | Navan Chauhan"/><meta name="og:title" content="Fixing X11 Error on macOS Catalina for AmberTools 18/19 | Navan Chauhan"/><meta name="description" content="Fixing Could not find the X11 libraries; you may need to edit config.h, AmberTools macOS Catalina"/><meta name="twitter:description" content="Fixing Could not find the X11 libraries; you may need to edit config.h, AmberTools macOS Catalina"/><meta name="og:description" content="Fixing Could not find the X11 libraries; you may need to edit config.h, AmberTools macOS Catalina"/><meta name="twitter:card" content="summary"/><link rel="stylesheet" href="/styles.css" type="text/css"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><link rel="shortcut icon" href="/images/favicon.png" type="image/png"/><link rel="alternate" href="/feed.rss" type="application/rss+xml" title="Subscribe to Navan Chauhan"/><meta name="twitter:image" content="https://navanchauhan.github.io/images/logo.png"/><meta name="og:image" content="https://navanchauhan.github.io/images/logo.png"/></head><head><script>var _paq=window._paq=window._paq||[];_paq.push(['trackPageView']),_paq.push(['enableLinkTracking']),function(){var a='https://navanspi.duckdns.org:6969/analytics/';_paq.push(['setTrackerUrl',a+'matomo.php']),_paq.push(['setSiteId','2']);var e=document,t=e.createElement('script'),p=e.getElementsByTagName('script')[0];t.type='text/javascript',t.async=!0,t.src=a+'matomo.js',p.parentNode.insertBefore(t,p)}();</script></head><head><script src="https://www.googletagmanager.com/gtag/js?id=UA-108635191-1v"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-108635191-1');</script></head><body class="item-page"><header><div class="wrapper"><a class="site-name" href="/">Navan Chauhan</a><nav><ul><li><a href="/about">About Me</a></li><li><a class="selected" href="/posts">Posts</a></li><li><a href="/publications">Publications</a></li><li><a href="/assets/résumé.pdf">Résumé</a></li><li><a href="https://navanchauhan.github.io/repo">Repo</a></li></ul></nav></div></header><div class="wrapper"><article><div class="content"><span class="reading-time">2 minute read</span><span class="reading-time">Created on April 13, 2020</span><span class="reading-time">Last modified on September 15, 2020</span><h1>Fixing X11 Error on macOS Catalina for AmberTools 18/19</h1><p>I was trying to install AmberTools on my macOS Catalina Installation. Running <code>./configure -macAccelerate clang</code> gave me an error that it could not find X11 libraries, even though <code>locate libXt</code> showed that my installation was correct.</p><p>Error:</p><pre><code><div class="highlight"><span></span>Could not find the X11 libraries<span class="p">;</span> you may need to edit config.h to <span class="nb">set</span> the XHOME and XLIBS variables. Error: The X11 libraries are not in the usual location ! To search <span class="k">for</span> them try the command: locate libXt @@ -13,4 +13,4 @@ Error: The X11 libraries are not in the usual location ! To build Amber without XLEaP, re-run configure with <span class="err">'</span>-noX11: ./configure -noX11 --with-python /usr/local/bin/python3 -macAccelerate clang Configure failed due to the errors above! -</div></code></pre><p>I searcehd on Google for a solution on their, sadly there was not even a single thread which had a solution about this error.</p><h2>The Fix</h2><p>Simply reinstalling XQuartz using homebrew fixed the error <code>brew cask reinstall xquartz</code></p><p>If you do not have xquartz installed, you need to run <code>brew cask install xquartz</code></p></div><span>Tagged with: </span><ul class="tag-list"><li><a href="/tags/moleculardynamics">Molecular-Dynamics</a></li><li><a href="/tags/macos">macOS</a></li></ul></article></div><footer><p>Made with ❤️ using <a href="https://github.com/johnsundell/publish">Publish</a></p><p><a href="/feed.rss">RSS feed</a></p></footer></body></html>
\ No newline at end of file +</div></code></pre><p>I searched on Google for a solution. Sadly, there was not even a single thread which had a solution about this error.</p><h2>The Fix</h2><p>Simply reinstalling XQuartz using homebrew fixed the error <code>brew cask reinstall xquartz</code></p><p>If you do not have XQuartz installed, you need to run <code>brew cask install xquartz</code></p></div><span>Tagged with: </span><ul class="tag-list"><li><a href="/tags/moleculardynamics">Molecular-Dynamics</a></li><li><a href="/tags/macos">macOS</a></li></ul></article></div><footer><p>Made with ❤️ using <a href="https://github.com/johnsundell/publish">Publish</a></p><p><a href="/feed.rss">RSS feed</a></p></footer></body></html>
\ No newline at end of file diff --git a/posts/2020-05-31-compiling-open-babel-on-ios/index.html b/posts/2020-05-31-compiling-open-babel-on-ios/index.html index af3ad63..b98c35c 100644 --- a/posts/2020-05-31-compiling-open-babel-on-ios/index.html +++ b/posts/2020-05-31-compiling-open-babel-on-ios/index.html @@ -1,5 +1,5 @@ -<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"/><meta name="og:site_name" content="Navan Chauhan"/><link rel="canonical" href="https://navanchauhan.github.io/posts/2020-05-31-compiling-open-babel-on-ios"/><meta name="twitter:url" content="https://navanchauhan.github.io/posts/2020-05-31-compiling-open-babel-on-ios"/><meta name="og:url" content="https://navanchauhan.github.io/posts/2020-05-31-compiling-open-babel-on-ios"/><title>Compiling Open Babel on iOS | Navan Chauhan</title><meta name="twitter:title" content="Compiling Open Babel on iOS | Navan Chauhan"/><meta name="og:title" content="Compiling Open Babel on iOS | Navan Chauhan"/><meta name="description" content="Compiling Open Babel on iOS"/><meta name="twitter:description" content="Compiling Open Babel on iOS"/><meta name="og:description" content="Compiling Open Babel on iOS"/><meta name="twitter:card" content="summary"/><link rel="stylesheet" href="/styles.css" type="text/css"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><link rel="shortcut icon" href="/images/favicon.png" type="image/png"/><link rel="alternate" href="/feed.rss" type="application/rss+xml" title="Subscribe to Navan Chauhan"/><meta name="twitter:image" content="https://navanchauhan.github.io/images/logo.png"/><meta name="og:image" content="https://navanchauhan.github.io/images/logo.png"/></head><head><script>var _paq=window._paq=window._paq||[];_paq.push(['trackPageView']),_paq.push(['enableLinkTracking']),function(){var a='https://navanspi.duckdns.org:6969/analytics/';_paq.push(['setTrackerUrl',a+'matomo.php']),_paq.push(['setSiteId','2']);var e=document,t=e.createElement('script'),p=e.getElementsByTagName('script')[0];t.type='text/javascript',t.async=!0,t.src=a+'matomo.js',p.parentNode.insertBefore(t,p)}();</script></head><head><script src="https://www.googletagmanager.com/gtag/js?id=UA-108635191-1v"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-108635191-1');</script></head><body class="item-page"><header><div class="wrapper"><a class="site-name" href="/">Navan Chauhan</a><nav><ul><li><a href="/about">About Me</a></li><li><a class="selected" href="/posts">Posts</a></li><li><a href="/publications">Publications</a></li><li><a href="/assets/résumé.pdf">Résumé</a></li><li><a href="https://navanchauhan.github.io/repo">Repo</a></li></ul></nav></div></header><div class="wrapper"><article><div class="content"><span class="reading-time">5 minute read</span><span class="reading-time">Created on May 31, 2020</span><span class="reading-time">Last modified on June 25, 2020</span><h1>Compiling Open Babel on iOS</h1><p>Due to the fact that my summer vacations started today, I had the brilliant idea of trying to run open babel on my iPad. To give a little background, I had tried to compile AutoDock Vina using a cross-compiler but I had miserably failed.</p><p>I am running the Checkr1n jailbreak on my iPad and the Unc0ver jailbreak on my phone.</p><h2>But Why?</h2><p>Well, just because I can. This is literally the only reason I tried compiling it and also partially because in the long run I want to compile AutoDock Vina so I can do Molecular Docking on the go.</p><h2>Let's Go!</h2><p>How hard can it be to compile open babel right? It is just a simple software with clear and concise build instructions. I just need to use <code>cmake</code> to build and the <code>make</code> to install.</p><p>It is 11 AM in the morning. I install <code>clang, cmake and make</code> from the Sam Bingner's repository, fired up ssh, downloaded the source code and ran the build command.`clang</p><h3>Fail No. 1</h3><p>I couldn't even get cmake to run, I did a little digging arond StackOverflow and founf that I needed the iOS SDK, sure no problem. I waited for Xcode to update and transfered the SDKs to my iPad</p><pre><code><div class="highlight"><span></span>scp -r /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk root@192.168.1.8:/var/sdks/ -</div></code></pre><p>Them I told cmake that this is the location for my SDK 😠. Succesful! Now I just needed to use make.</p><h3>Fail No. 2</h3><p>It was giving the error that thread-local-storage was not supported on this device.</p><pre><code><div class="highlight"><span></span><span class="o">[</span> <span class="m">0</span>%<span class="o">]</span> Building CXX object src/CMakeFiles/openbabel.dir/alias.cpp.o +<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"/><meta name="og:site_name" content="Navan Chauhan"/><link rel="canonical" href="https://navanchauhan.github.io/posts/2020-05-31-compiling-open-babel-on-ios"/><meta name="twitter:url" content="https://navanchauhan.github.io/posts/2020-05-31-compiling-open-babel-on-ios"/><meta name="og:url" content="https://navanchauhan.github.io/posts/2020-05-31-compiling-open-babel-on-ios"/><title>Compiling Open Babel on iOS | Navan Chauhan</title><meta name="twitter:title" content="Compiling Open Babel on iOS | Navan Chauhan"/><meta name="og:title" content="Compiling Open Babel on iOS | Navan Chauhan"/><meta name="description" content="Compiling Open Babel on iOS"/><meta name="twitter:description" content="Compiling Open Babel on iOS"/><meta name="og:description" content="Compiling Open Babel on iOS"/><meta name="twitter:card" content="summary"/><link rel="stylesheet" href="/styles.css" type="text/css"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><link rel="shortcut icon" href="/images/favicon.png" type="image/png"/><link rel="alternate" href="/feed.rss" type="application/rss+xml" title="Subscribe to Navan Chauhan"/><meta name="twitter:image" content="https://navanchauhan.github.io/images/logo.png"/><meta name="og:image" content="https://navanchauhan.github.io/images/logo.png"/></head><head><script>var _paq=window._paq=window._paq||[];_paq.push(['trackPageView']),_paq.push(['enableLinkTracking']),function(){var a='https://navanspi.duckdns.org:6969/analytics/';_paq.push(['setTrackerUrl',a+'matomo.php']),_paq.push(['setSiteId','2']);var e=document,t=e.createElement('script'),p=e.getElementsByTagName('script')[0];t.type='text/javascript',t.async=!0,t.src=a+'matomo.js',p.parentNode.insertBefore(t,p)}();</script></head><head><script src="https://www.googletagmanager.com/gtag/js?id=UA-108635191-1v"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-108635191-1');</script></head><body class="item-page"><header><div class="wrapper"><a class="site-name" href="/">Navan Chauhan</a><nav><ul><li><a href="/about">About Me</a></li><li><a class="selected" href="/posts">Posts</a></li><li><a href="/publications">Publications</a></li><li><a href="/assets/résumé.pdf">Résumé</a></li><li><a href="https://navanchauhan.github.io/repo">Repo</a></li></ul></nav></div></header><div class="wrapper"><article><div class="content"><span class="reading-time">5 minute read</span><span class="reading-time">Created on May 31, 2020</span><span class="reading-time">Last modified on September 15, 2020</span><h1>Compiling Open Babel on iOS</h1><p>Due to the fact that my summer vacations started today, I had the brilliant idea of trying to run open babel on my iPad. To give a little background, I had tried to compile AutoDock Vina using a cross-compiler but I had miserably failed.</p><p>I am running the Checkr1n jailbreak on my iPad and the Unc0ver jailbreak on my phone.</p><h2>But Why?</h2><p>Well, just because I can. This is literally the only reason I tried compiling it and also partially because in the long run I want to compile AutoDock Vina so I can do Molecular Docking on the go.</p><h2>Let's Go!</h2><p>How hard can it be to compile open babel right? It is just a simple software with clear and concise build instructions. I just need to use <code>cmake</code> to build and the <code>make</code> to install.</p><p>It is 11 AM in the morning. I install <code>clang, cmake and make</code> from the Sam Bingner's repository, fired up ssh, downloaded the source code and ran the build command.`clang</p><h3>Fail No. 1</h3><p>I couldn't even get cmake to run, I did a little digging around StackOverflow and founf that I needed the iOS SDK, sure no problem. I waited for Xcode to update and transferred the SDKs to my iPad</p><pre><code><div class="highlight"><span></span>scp -r /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk root@192.168.1.8:/var/sdks/ +</div></code></pre><p>Them I told cmake that this is the location for my SDK 😠. Successful! Now I just needed to use make.</p><h3>Fail No. 2</h3><p>It was giving the error that thread-local-storage was not supported on this device.</p><pre><code><div class="highlight"><span></span><span class="o">[</span> <span class="m">0</span>%<span class="o">]</span> Building CXX object src/CMakeFiles/openbabel.dir/alias.cpp.o <span class="o">[</span> <span class="m">1</span>%<span class="o">]</span> Building CXX object src/CMakeFiles/openbabel.dir/atom.cpp.o In file included from /var/root/obabel/ob-src/src/atom.cpp:28: In file included from /var/root/obabel/ob-src/include/openbabel/ring.h:29: @@ -39,6 +39,6 @@ THREAD_LOCAL OB_EXTERN OBAromaticTyper aromtyper<span class="p">;</span> make<span class="o">[</span><span class="m">2</span><span class="o">]</span>: *** <span class="o">[</span>src/CMakeFiles/openbabel.dir/build.make:76: src/CMakeFiles/openbabel.dir/atom.cpp.o<span class="o">]</span> Error <span class="m">1</span> make<span class="o">[</span><span class="m">1</span><span class="o">]</span>: *** <span class="o">[</span>CMakeFiles/Makefile2:1085: src/CMakeFiles/openbabel.dir/all<span class="o">]</span> Error <span class="m">2</span> make: *** <span class="o">[</span>Makefile:129: all<span class="o">]</span> Error <span class="m">2</span> -</div></code></pre><p>Strange but it is alright, there is nothing that hasn't been answered on the internet.</p><p>I did a little digging around and could not find a solution 😔</p><p>As a temporary fix, I disabled multithreading by going and commenting the lines in the source code.</p><img src="/assets/posts/open-babel/s1.png" alt=""Open-Babel running on my iPad""/><h2>Packaging as a deb</h2><p>This was pretty straight forward, I tried installing it on my iPad and it was working pretty smoothly.</p><h2>Moment of Truth</h2><p>So I airdropped the .deb to my phone and tried installing it, the installation was succesful but when I tried <code>obabel</code> it just abborted.</p><img src="/assets/posts/open-babel/s2.jpg" alt=""Open Babel crashing""/><p>Turns out because I had created an install target of a seprate folder while compiling, the binaries were refferencing a non-existing dylib rather than those in the /usr/lib folder. As a quick workaround I transferred the deb folder to my laptop and used otool and install_name tool: <code>install_name_tool -change /var/root/obabel/ob-build/lib/libopenbabel.7.dylib /usr/lib/libopenbabel.7.dylib</code> for all the executables and then signed them using jtool</p><p>I then installed it and everything went smoothly, I even ran <code>obabel</code> and it executed perfectly, showing the version number 3.1.0 ✌️ Ahh, smooth victory.</p><p>Nope. When I tried converting from SMILES to pdbqt, it gave an error saying plugin not found. This was weird.</p><img src="/assets/posts/open-babel/s3.jpg" alt=""Open Babel Plugin Error""/><p>So I just copied the entire build folder from my iPad to my phone and tried runnig it. Oops, Apple Sandbox Error, Oh no!</p><p>I spent 2 hours around this problem, only to see the documentation and relaise I hadn't setup the environment variable 🤦♂️</p><h2>The Final Fix ( For Now )</h2><pre><code><div class="highlight"><span></span><span class="nb">export</span> <span class="nv">BABEL_DATADIR</span><span class="o">=</span><span class="s2">"/usr/share/openbabel/3.1.0"</span> +</div></code></pre><p>Strange but it is alright, there is nothing that hasn't been answered on the internet.</p><p>I did a little digging around and could not find a solution 😔</p><p>As a temporary fix, I disabled multithreading by going and commenting the lines in the source code.</p><img src="/assets/posts/open-babel/s1.png" alt=""Open-Babel running on my iPad""/><h2>Packaging as a deb</h2><p>This was pretty straight forward, I tried installing it on my iPad and it was working pretty smoothly.</p><h2>Moment of Truth</h2><p>So I airdropped the .deb to my phone and tried installing it, the installation was successful but when I tried <code>obabel</code> it just aborted.</p><img src="/assets/posts/open-babel/s2.jpg" alt=""Open Babel crashing""/><p>Turns out because I had created an install target of a separate folder while compiling, the binaries were referencing a non-existing dylib rather than those in the /usr/lib folder. As a quick workaround I transferred the deb folder to my laptop and used otool and install_name tool: <code>install_name_tool -change /var/root/obabel/ob-build/lib/libopenbabel.7.dylib /usr/lib/libopenbabel.7.dylib</code> for all the executables and then signed them using jtool</p><p>I then installed it and everything went smoothly, I even ran <code>obabel</code> and it executed perfectly, showing the version number 3.1.0 ✌️ Ahh, smooth victory.</p><p>Nope. When I tried converting from SMILES to pdbqt, it gave an error saying plugin not found. This was weird.</p><img src="/assets/posts/open-babel/s3.jpg" alt=""Open Babel Plugin Error""/><p>So I just copied the entire build folder from my iPad to my phone and tried running it. Oops, Apple Sandbox Error, Oh no!</p><p>I spent 2 hours around this problem, only to see the documentation and realise I hadn't setup the environment variable 🤦♂️</p><h2>The Final Fix ( For Now )</h2><pre><code><div class="highlight"><span></span><span class="nb">export</span> <span class="nv">BABEL_DATADIR</span><span class="o">=</span><span class="s2">"/usr/share/openbabel/3.1.0"</span> <span class="nb">export</span> <span class="nv">BABEL_LIBDIR</span><span class="o">=</span><span class="s2">"/usr/lib/openbabel/3.1.0"</span> </div></code></pre><p>This was the tragedy of trying to compile something without knowing enough about compiling. It is 11:30 as of writing this. Something as trivial as this should not have taken me so long. Am I going to try to compile AutoDock Vina next? 🤔 Maybe.</p><p>Also, if you want to try Open Babel on you jailbroken iDevice, install the package from my repository ( You, need to run the above mentioned final fix :p ). This was tested on iOS 13.5, I cannot tell if it will work on others or not.</p><p>Hopefully, I add some more screenshots to this post.</p><p>Edit 1: Added Screenshots, had to replicate the errors.</p></div><span>Tagged with: </span><ul class="tag-list"><li><a href="/tags/ios">iOS</a></li><li><a href="/tags/jailbreak">Jailbreak</a></li><li><a href="/tags/cheminformatics">Cheminformatics</a></li><li><a href="/tags/openbabel">Open-Babel</a></li></ul></article></div><footer><p>Made with ❤️ using <a href="https://github.com/johnsundell/publish">Publish</a></p><p><a href="/feed.rss">RSS feed</a></p></footer></body></html>
\ No newline at end of file diff --git a/posts/2020-06-01-Speeding-Up-Molecular-Docking-Workflow-AutoDock-Vina-and-PyMOL/index.html b/posts/2020-06-01-Speeding-Up-Molecular-Docking-Workflow-AutoDock-Vina-and-PyMOL/index.html index 27d01c9..c2726cf 100644 --- a/posts/2020-06-01-Speeding-Up-Molecular-Docking-Workflow-AutoDock-Vina-and-PyMOL/index.html +++ b/posts/2020-06-01-Speeding-Up-Molecular-Docking-Workflow-AutoDock-Vina-and-PyMOL/index.html @@ -1,8 +1,8 @@ -<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"/><meta name="og:site_name" content="Navan Chauhan"/><link rel="canonical" href="https://navanchauhan.github.io/posts/2020-06-01-Speeding-Up-Molecular-Docking-Workflow-AutoDock-Vina-and-PyMOL"/><meta name="twitter:url" content="https://navanchauhan.github.io/posts/2020-06-01-Speeding-Up-Molecular-Docking-Workflow-AutoDock-Vina-and-PyMOL"/><meta name="og:url" content="https://navanchauhan.github.io/posts/2020-06-01-Speeding-Up-Molecular-Docking-Workflow-AutoDock-Vina-and-PyMOL"/><title>Workflow for Lightning Fast Molecular Docking Part One | Navan Chauhan</title><meta name="twitter:title" content="Workflow for Lightning Fast Molecular Docking Part One | Navan Chauhan"/><meta name="og:title" content="Workflow for Lightning Fast Molecular Docking Part One | Navan Chauhan"/><meta name="description" content="This is my workflow for lightning fast molecular docking."/><meta name="twitter:description" content="This is my workflow for lightning fast molecular docking."/><meta name="og:description" content="This is my workflow for lightning fast molecular docking."/><meta name="twitter:card" content="summary"/><link rel="stylesheet" href="/styles.css" type="text/css"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><link rel="shortcut icon" href="/images/favicon.png" type="image/png"/><link rel="alternate" href="/feed.rss" type="application/rss+xml" title="Subscribe to Navan Chauhan"/><meta name="twitter:image" content="https://navanchauhan.github.io/images/logo.png"/><meta name="og:image" content="https://navanchauhan.github.io/images/logo.png"/></head><head><script>var _paq=window._paq=window._paq||[];_paq.push(['trackPageView']),_paq.push(['enableLinkTracking']),function(){var a='https://navanspi.duckdns.org:6969/analytics/';_paq.push(['setTrackerUrl',a+'matomo.php']),_paq.push(['setSiteId','2']);var e=document,t=e.createElement('script'),p=e.getElementsByTagName('script')[0];t.type='text/javascript',t.async=!0,t.src=a+'matomo.js',p.parentNode.insertBefore(t,p)}();</script></head><head><script src="https://www.googletagmanager.com/gtag/js?id=UA-108635191-1v"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-108635191-1');</script></head><body class="item-page"><header><div class="wrapper"><a class="site-name" href="/">Navan Chauhan</a><nav><ul><li><a href="/about">About Me</a></li><li><a class="selected" href="/posts">Posts</a></li><li><a href="/publications">Publications</a></li><li><a href="/assets/résumé.pdf">Résumé</a></li><li><a href="https://navanchauhan.github.io/repo">Repo</a></li></ul></nav></div></header><div class="wrapper"><article><div class="content"><span class="reading-time">2 minute read</span><span class="reading-time">Created on June 1, 2020</span><span class="reading-time">Last modified on June 2, 2020</span><h1>Workflow for Lightning Fast Molecular Docking Part One</h1><h2>My Setup</h2><ul><li>macOS Catalina ( RIP 32bit app)</li><li>PyMOL</li><li>AutoDock Vina</li><li>Open Babel</li></ul><h2>One Command Docking</h2><pre><code><div class="highlight"><span></span>obabel -:<span class="s2">"</span><span class="k">$(</span>pbpaste<span class="k">)</span><span class="s2">"</span> --gen3d -opdbqt -Otest.pdbqt <span class="o">&&</span> vina --receptor lu.pdbqt --center_x -9.7 --center_y <span class="m">11</span>.4 --center_z <span class="m">68</span>.9 --size_x <span class="m">19</span>.3 --size_y <span class="m">29</span>.9 --size_z <span class="m">21</span>.3 --ligand test.pdbqt +<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"/><meta name="og:site_name" content="Navan Chauhan"/><link rel="canonical" href="https://navanchauhan.github.io/posts/2020-06-01-Speeding-Up-Molecular-Docking-Workflow-AutoDock-Vina-and-PyMOL"/><meta name="twitter:url" content="https://navanchauhan.github.io/posts/2020-06-01-Speeding-Up-Molecular-Docking-Workflow-AutoDock-Vina-and-PyMOL"/><meta name="og:url" content="https://navanchauhan.github.io/posts/2020-06-01-Speeding-Up-Molecular-Docking-Workflow-AutoDock-Vina-and-PyMOL"/><title>Workflow for Lightning Fast Molecular Docking Part One | Navan Chauhan</title><meta name="twitter:title" content="Workflow for Lightning Fast Molecular Docking Part One | Navan Chauhan"/><meta name="og:title" content="Workflow for Lightning Fast Molecular Docking Part One | Navan Chauhan"/><meta name="description" content="This is my workflow for lightning fast molecular docking."/><meta name="twitter:description" content="This is my workflow for lightning fast molecular docking."/><meta name="og:description" content="This is my workflow for lightning fast molecular docking."/><meta name="twitter:card" content="summary"/><link rel="stylesheet" href="/styles.css" type="text/css"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><link rel="shortcut icon" href="/images/favicon.png" type="image/png"/><link rel="alternate" href="/feed.rss" type="application/rss+xml" title="Subscribe to Navan Chauhan"/><meta name="twitter:image" content="https://navanchauhan.github.io/images/logo.png"/><meta name="og:image" content="https://navanchauhan.github.io/images/logo.png"/></head><head><script>var _paq=window._paq=window._paq||[];_paq.push(['trackPageView']),_paq.push(['enableLinkTracking']),function(){var a='https://navanspi.duckdns.org:6969/analytics/';_paq.push(['setTrackerUrl',a+'matomo.php']),_paq.push(['setSiteId','2']);var e=document,t=e.createElement('script'),p=e.getElementsByTagName('script')[0];t.type='text/javascript',t.async=!0,t.src=a+'matomo.js',p.parentNode.insertBefore(t,p)}();</script></head><head><script src="https://www.googletagmanager.com/gtag/js?id=UA-108635191-1v"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-108635191-1');</script></head><body class="item-page"><header><div class="wrapper"><a class="site-name" href="/">Navan Chauhan</a><nav><ul><li><a href="/about">About Me</a></li><li><a class="selected" href="/posts">Posts</a></li><li><a href="/publications">Publications</a></li><li><a href="/assets/résumé.pdf">Résumé</a></li><li><a href="https://navanchauhan.github.io/repo">Repo</a></li></ul></nav></div></header><div class="wrapper"><article><div class="content"><span class="reading-time">2 minute read</span><span class="reading-time">Created on June 1, 2020</span><span class="reading-time">Last modified on September 15, 2020</span><h1>Workflow for Lightning Fast Molecular Docking Part One</h1><h2>My Setup</h2><ul><li>macOS Catalina ( RIP 32bit app)</li><li>PyMOL</li><li>AutoDock Vina</li><li>Open Babel</li></ul><h2>One Command Docking</h2><pre><code><div class="highlight"><span></span>obabel -:<span class="s2">"</span><span class="k">$(</span>pbpaste<span class="k">)</span><span class="s2">"</span> --gen3d -opdbqt -Otest.pdbqt <span class="o">&&</span> vina --receptor lu.pdbqt --center_x -9.7 --center_y <span class="m">11</span>.4 --center_z <span class="m">68</span>.9 --size_x <span class="m">19</span>.3 --size_y <span class="m">29</span>.9 --size_z <span class="m">21</span>.3 --ligand test.pdbqt </div></code></pre><p>To run this command you simple copy the SMILES structure of the ligand you want an it automatically takes it from your clipboard, generates the 3D structure in the AutoDock PDBQT format using Open Babel and then docks it with your receptor using AutoDock Vina, all with just one command.</p><p>Let me break down the commands</p><pre><code><div class="highlight"><span></span>obabel -:<span class="s2">"</span><span class="k">$(</span>pbpaste<span class="k">)</span><span class="s2">"</span> --gen3d -opdbqt -Otest.pdbqt </div></code></pre><p><code>pbpaste</code> and <code>pbcopy</code> are macOS commands for pasting and copying from and to the clipboard. Linux users may install the <code>xclip</code> and <code>xsel</code> packages from their respective package managers and then insert these aliases into their bash_profile, zshrc e.t.c</p><pre><code><div class="highlight"><span></span><span class="nb">alias</span> <span class="nv">pbcopy</span><span class="o">=</span><span class="s1">'xclip -selection clipboard'</span> <span class="nb">alias</span> <span class="nv">pbpaste</span><span class="o">=</span><span class="s1">'xclip -selection clipboard -o'</span> </div></code></pre><pre><code><div class="highlight"><span></span><span class="k">$(</span>pbpaste<span class="k">)</span> </div></code></pre><p>This is used in bash to evaluate the results of a command. In this scenario we are using it to get the contents of the clipboard.</p><p>The rest of the command is a normal Open Babel command to generate a 3D structure in PDBQT format and then save it as <code>test.pdbqt</code></p><pre><code><div class="highlight"><span></span><span class="o">&&</span> -</div></code></pre><p>This tells the termianl to only run the next part if the previous command runs succesfuly without any errors.</p><pre><code><div class="highlight"><span></span>vina --receptor lu.pdbqt --center_x -9.7 --center_y <span class="m">11</span>.4 --center_z <span class="m">68</span>.9 --size_x <span class="m">19</span>.3 --size_y <span class="m">29</span>.9 --size_z <span class="m">21</span>.3 --ligand test.pdbqt +</div></code></pre><p>This tells the terminal to only run the next part if the previous command runs successfully without any errors.</p><pre><code><div class="highlight"><span></span>vina --receptor lu.pdbqt --center_x -9.7 --center_y <span class="m">11</span>.4 --center_z <span class="m">68</span>.9 --size_x <span class="m">19</span>.3 --size_y <span class="m">29</span>.9 --size_z <span class="m">21</span>.3 --ligand test.pdbqt </div></code></pre><p>This is just the docking command for AutoDock Vina. In the next part I will tell how to use PyMOL and a plugin to directly generate the coordinates in Vina format <code> --center_x -9.7 --center_y 11.4 --center_z 68.9 --size_x 19.3 --size_y 29.9 --size_z 21.3</code> without needing to type them manually.</p></div><span>Tagged with: </span><ul class="tag-list"><li><a href="/tags/codesnippet">Code-Snippet</a></li><li><a href="/tags/moleculardocking">Molecular-Docking</a></li><li><a href="/tags/cheminformatics">Cheminformatics</a></li><li><a href="/tags/openbabel">Open-Babel</a></li><li><a href="/tags/autodock-vina">AutoDock Vina</a></li></ul></article></div><footer><p>Made with ❤️ using <a href="https://github.com/johnsundell/publish">Publish</a></p><p><a href="/feed.rss">RSS feed</a></p></footer></body></html>
\ No newline at end of file diff --git a/posts/2020-06-02-Compiling-AutoDock-Vina-on-iOS/index.html b/posts/2020-06-02-Compiling-AutoDock-Vina-on-iOS/index.html index 9553d47..e1b18af 100644 --- a/posts/2020-06-02-Compiling-AutoDock-Vina-on-iOS/index.html +++ b/posts/2020-06-02-Compiling-AutoDock-Vina-on-iOS/index.html @@ -1,4 +1,4 @@ -<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"/><meta name="og:site_name" content="Navan Chauhan"/><link rel="canonical" href="https://navanchauhan.github.io/posts/2020-06-02-Compiling-AutoDock-Vina-on-iOS"/><meta name="twitter:url" content="https://navanchauhan.github.io/posts/2020-06-02-Compiling-AutoDock-Vina-on-iOS"/><meta name="og:url" content="https://navanchauhan.github.io/posts/2020-06-02-Compiling-AutoDock-Vina-on-iOS"/><title>Compiling AutoDock Vina on iOS | Navan Chauhan</title><meta name="twitter:title" content="Compiling AutoDock Vina on iOS | Navan Chauhan"/><meta name="og:title" content="Compiling AutoDock Vina on iOS | Navan Chauhan"/><meta name="description" content="Compiling AutoDock Vina on iOS"/><meta name="twitter:description" content="Compiling AutoDock Vina on iOS"/><meta name="og:description" content="Compiling AutoDock Vina on iOS"/><meta name="twitter:card" content="summary"/><link rel="stylesheet" href="/styles.css" type="text/css"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><link rel="shortcut icon" href="/images/favicon.png" type="image/png"/><link rel="alternate" href="/feed.rss" type="application/rss+xml" title="Subscribe to Navan Chauhan"/><meta name="twitter:image" content="https://navanchauhan.github.io/images/logo.png"/><meta name="og:image" content="https://navanchauhan.github.io/images/logo.png"/></head><head><script>var _paq=window._paq=window._paq||[];_paq.push(['trackPageView']),_paq.push(['enableLinkTracking']),function(){var a='https://navanspi.duckdns.org:6969/analytics/';_paq.push(['setTrackerUrl',a+'matomo.php']),_paq.push(['setSiteId','2']);var e=document,t=e.createElement('script'),p=e.getElementsByTagName('script')[0];t.type='text/javascript',t.async=!0,t.src=a+'matomo.js',p.parentNode.insertBefore(t,p)}();</script></head><head><script src="https://www.googletagmanager.com/gtag/js?id=UA-108635191-1v"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-108635191-1');</script></head><body class="item-page"><header><div class="wrapper"><a class="site-name" href="/">Navan Chauhan</a><nav><ul><li><a href="/about">About Me</a></li><li><a class="selected" href="/posts">Posts</a></li><li><a href="/publications">Publications</a></li><li><a href="/assets/résumé.pdf">Résumé</a></li><li><a href="https://navanchauhan.github.io/repo">Repo</a></li></ul></nav></div></header><div class="wrapper"><article><div class="content"><span class="reading-time">3 minute read</span><span class="reading-time">Created on June 2, 2020</span><h1>Compiling AutoDock Vina on iOS</h1><p>Why? Because I can.</p><h2>Installing makedepend</h2><p><code>makedepend</code> is a Unix tool used to generate dependencies of C source files. Most modern programes do not use this anymore, but then again AutoDock Vina's source code hasn't been changed since 2011. The first hurdle came when I saw that there was no makedepend command, neither was there any package on any development repository for iOS. So, I tracked down the original source code for <code>makedepend</code> (https://github.com/DerellLicht/makedepend). According to the repository this is actually the source code for the makedepend utility that came with some XWindows distribution back around Y2K. I am pretty sure there is a problem with my current compiler configuration because I had to manually edit the <code>Makefile</code> to provide the path to the iOS SDKs using the <code>-isysroot</code> flag.</p><h2>Editting the Makefile</h2><p>Original Makefile ( I used the provided mac Makefile base )</p><pre><code><div class="highlight"><span></span><span class="nv">BASE</span><span class="o">=</span>/usr/local +<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"/><meta name="og:site_name" content="Navan Chauhan"/><link rel="canonical" href="https://navanchauhan.github.io/posts/2020-06-02-Compiling-AutoDock-Vina-on-iOS"/><meta name="twitter:url" content="https://navanchauhan.github.io/posts/2020-06-02-Compiling-AutoDock-Vina-on-iOS"/><meta name="og:url" content="https://navanchauhan.github.io/posts/2020-06-02-Compiling-AutoDock-Vina-on-iOS"/><title>Compiling AutoDock Vina on iOS | Navan Chauhan</title><meta name="twitter:title" content="Compiling AutoDock Vina on iOS | Navan Chauhan"/><meta name="og:title" content="Compiling AutoDock Vina on iOS | Navan Chauhan"/><meta name="description" content="Compiling AutoDock Vina on iOS"/><meta name="twitter:description" content="Compiling AutoDock Vina on iOS"/><meta name="og:description" content="Compiling AutoDock Vina on iOS"/><meta name="twitter:card" content="summary"/><link rel="stylesheet" href="/styles.css" type="text/css"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><link rel="shortcut icon" href="/images/favicon.png" type="image/png"/><link rel="alternate" href="/feed.rss" type="application/rss+xml" title="Subscribe to Navan Chauhan"/><meta name="twitter:image" content="https://navanchauhan.github.io/images/logo.png"/><meta name="og:image" content="https://navanchauhan.github.io/images/logo.png"/></head><head><script>var _paq=window._paq=window._paq||[];_paq.push(['trackPageView']),_paq.push(['enableLinkTracking']),function(){var a='https://navanspi.duckdns.org:6969/analytics/';_paq.push(['setTrackerUrl',a+'matomo.php']),_paq.push(['setSiteId','2']);var e=document,t=e.createElement('script'),p=e.getElementsByTagName('script')[0];t.type='text/javascript',t.async=!0,t.src=a+'matomo.js',p.parentNode.insertBefore(t,p)}();</script></head><head><script src="https://www.googletagmanager.com/gtag/js?id=UA-108635191-1v"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-108635191-1');</script></head><body class="item-page"><header><div class="wrapper"><a class="site-name" href="/">Navan Chauhan</a><nav><ul><li><a href="/about">About Me</a></li><li><a class="selected" href="/posts">Posts</a></li><li><a href="/publications">Publications</a></li><li><a href="/assets/résumé.pdf">Résumé</a></li><li><a href="https://navanchauhan.github.io/repo">Repo</a></li></ul></nav></div></header><div class="wrapper"><article><div class="content"><span class="reading-time">3 minute read</span><span class="reading-time">Created on June 2, 2020</span><span class="reading-time">Last modified on September 15, 2020</span><h1>Compiling AutoDock Vina on iOS</h1><p>Why? Because I can.</p><h2>Installing makedepend</h2><p><code>makedepend</code> is a Unix tool used to generate dependencies of C source files. Most modern programs do not use this anymore, but then again AutoDock Vina's source code hasn't been changed since 2011. The first hurdle came when I saw that there was no makedepend command, neither was there any package on any development repository for iOS. So, I tracked down the original source code for <code>makedepend</code> (https://github.com/DerellLicht/makedepend). According to the repository this is actually the source code for the makedepend utility that came with some XWindows distribution back around Y2K. I am pretty sure there is a problem with my current compiler configuration because I had to manually edit the <code>Makefile</code> to provide the path to the iOS SDKs using the <code>-isysroot</code> flag.</p><h2>Editing the Makefile</h2><p>Original Makefile ( I used the provided mac Makefile base )</p><pre><code><div class="highlight"><span></span><span class="nv">BASE</span><span class="o">=</span>/usr/local <span class="nv">BOOST_VERSION</span><span class="o">=</span>1_41 <span class="nv">BOOST_INCLUDE</span> <span class="o">=</span> <span class="k">$(</span>BASE<span class="k">)</span>/include <span class="nv">C_PLATFORM</span><span class="o">=</span>-arch i386 -arch ppc -isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min<span class="o">=</span><span class="m">10</span>.4 @@ -7,7 +7,7 @@ <span class="nv">BOOST_LIB_VERSION</span><span class="o">=</span> include ../../makefile_common -</div></code></pre><p>I installed Boost 1.68.0-1 from Sam Bingner's repository. ( Otherwise I would have had to compile boost too 😫 )</p><p>Editted Makefile</p><pre><code><div class="highlight"><span></span><span class="nv">BASE</span><span class="o">=</span>/usr +</div></code></pre><p>I installed Boost 1.68.0-1 from Sam Bingner's repository. ( Otherwise I would have had to compile boost too 😫 )</p><p>Edited Makefile</p><pre><code><div class="highlight"><span></span><span class="nv">BASE</span><span class="o">=</span>/usr <span class="nv">BOOST_VERSION</span><span class="o">=</span>1_68 <span class="nv">BOOST_INCLUDE</span> <span class="o">=</span> <span class="k">$(</span>BASE<span class="k">)</span>/include <span class="nv">C_PLATFORM</span><span class="o">=</span>-arch arm64 -isysroot /var/sdks/Latest.sdk @@ -26,4 +26,4 @@ include ../../makefile_common std::cerr << <span class="s2">"\n\nParse error on line "</span> <span class="s"><< e.line</span> << <span class="s2">" in file \""</span> <span class="s"><< e.file</span>.native_file_string<span class="o">()</span> << <span class="s2">"\": "</span> <span class="s"><< e.re</span>ason <span class="s"><< '\n';</span> <span class="s"> ~~~~~~ ^</span> <span class="s">2 errors gen</span>erated. -</div></code></pre><p>Turns out <code>native_file_string</code> was deprecated in Boost 1.57 and replaced with just <code>string</code></p><h3>Error 3 - Library Not Found</h3><p>This one still boggles me because there was no reason for it to not work, as a workaround I downloaded the DEB, extracted it and used that path for compiling.</p><h3>Error 4 - No Member Named 'native<em>file</em>string' Again.</h3><p>But, this time in another file and I quickle fixed it</p><h2>Moment of Truth</h2><p>Obviously it was working on my iPad, but would it work on another device? I transfered the compiled binary and</p><img src="/assets/posts/autodock-vina/s1.png" alt=""AutoDock Vina running on my iPhone""/><p>The package is available on my repository and only depends on boost. ( Both, Vina and Vina-Split are part of the package)</p></div><span>Tagged with: </span><ul class="tag-list"><li><a href="/tags/ios">iOS</a></li><li><a href="/tags/jailbreak">Jailbreak</a></li><li><a href="/tags/cheminformatics">Cheminformatics</a></li><li><a href="/tags/autodock-vina">AutoDock Vina</a></li><li><a href="/tags/moleculardocking">Molecular-Docking</a></li></ul></article></div><footer><p>Made with ❤️ using <a href="https://github.com/johnsundell/publish">Publish</a></p><p><a href="/feed.rss">RSS feed</a></p></footer></body></html>
\ No newline at end of file +</div></code></pre><p>Turns out <code>native_file_string</code> was deprecated in Boost 1.57 and replaced with just <code>string</code></p><h3>Error 3 - Library Not Found</h3><p>This one still boggles me because there was no reason for it to not work, as a workaround I downloaded the DEB, extracted it and used that path for compiling.</p><h3>Error 4 - No Member Named 'native<em>file</em>string' Again.</h3><p>But, this time in another file and I quickly fixed it</p><h2>Moment of Truth</h2><p>Obviously it was working on my iPad, but would it work on another device? I transferred the compiled binary and</p><img src="/assets/posts/autodock-vina/s1.png" alt=""AutoDock Vina running on my iPhone""/><p>The package is available on my repository and only depends on boost. ( Both, Vina and Vina-Split are part of the package)</p></div><span>Tagged with: </span><ul class="tag-list"><li><a href="/tags/ios">iOS</a></li><li><a href="/tags/jailbreak">Jailbreak</a></li><li><a href="/tags/cheminformatics">Cheminformatics</a></li><li><a href="/tags/autodock-vina">AutoDock Vina</a></li><li><a href="/tags/moleculardocking">Molecular-Docking</a></li></ul></article></div><footer><p>Made with ❤️ using <a href="https://github.com/johnsundell/publish">Publish</a></p><p><a href="/feed.rss">RSS feed</a></p></footer></body></html>
\ No newline at end of file diff --git a/posts/2020-08-01-Natural-Feature-Tracking-ARJS/index.html b/posts/2020-08-01-Natural-Feature-Tracking-ARJS/index.html index d6e1f73..9bdad25 100644 --- a/posts/2020-08-01-Natural-Feature-Tracking-ARJS/index.html +++ b/posts/2020-08-01-Natural-Feature-Tracking-ARJS/index.html @@ -1,4 +1,4 @@ -<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"/><meta name="og:site_name" content="Navan Chauhan"/><link rel="canonical" href="https://navanchauhan.github.io/posts/2020-08-01-Natural-Feature-Tracking-ARJS"/><meta name="twitter:url" content="https://navanchauhan.github.io/posts/2020-08-01-Natural-Feature-Tracking-ARJS"/><meta name="og:url" content="https://navanchauhan.github.io/posts/2020-08-01-Natural-Feature-Tracking-ARJS"/><title>Introduction to AR.js and Natural Feature Tracking | Navan Chauhan</title><meta name="twitter:title" content="Introduction to AR.js and Natural Feature Tracking | Navan Chauhan"/><meta name="og:title" content="Introduction to AR.js and Natural Feature Tracking | Navan Chauhan"/><meta name="description" content="An introduction to AR.js and NFT"/><meta name="twitter:description" content="An introduction to AR.js and NFT"/><meta name="og:description" content="An introduction to AR.js and NFT"/><meta name="twitter:card" content="summary"/><link rel="stylesheet" href="/styles.css" type="text/css"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><link rel="shortcut icon" href="/images/favicon.png" type="image/png"/><link rel="alternate" href="/feed.rss" type="application/rss+xml" title="Subscribe to Navan Chauhan"/><meta name="twitter:image" content="https://navanchauhan.github.io/images/logo.png"/><meta name="og:image" content="https://navanchauhan.github.io/images/logo.png"/></head><head><script>var _paq=window._paq=window._paq||[];_paq.push(['trackPageView']),_paq.push(['enableLinkTracking']),function(){var a='https://navanspi.duckdns.org:6969/analytics/';_paq.push(['setTrackerUrl',a+'matomo.php']),_paq.push(['setSiteId','2']);var e=document,t=e.createElement('script'),p=e.getElementsByTagName('script')[0];t.type='text/javascript',t.async=!0,t.src=a+'matomo.js',p.parentNode.insertBefore(t,p)}();</script></head><head><script src="https://www.googletagmanager.com/gtag/js?id=UA-108635191-1v"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-108635191-1');</script></head><body class="item-page"><header><div class="wrapper"><a class="site-name" href="/">Navan Chauhan</a><nav><ul><li><a href="/about">About Me</a></li><li><a class="selected" href="/posts">Posts</a></li><li><a href="/publications">Publications</a></li><li><a href="/assets/résumé.pdf">Résumé</a></li><li><a href="https://navanchauhan.github.io/repo">Repo</a></li></ul></nav></div></header><div class="wrapper"><article><div class="content"><span class="reading-time">20 minute read</span><span class="reading-time">Created on August 1, 2020</span><h1>Introduction to AR.js and Natural Feature Tracking</h1><h2>AR.js</h2><p>AR.js is a lightweight library for Augmented Reality on the Web, coming with features like Image Tracking, Location based AR and Marker tracking. It is the easiest option for cross-browser augmented reality.</p><p>The same code works for iOS, Android, Desktops and even VR Browsers!</p><p>It weas initially created by Jerome Etienne and is now maintained by Nicolo Carpignoli and the AR-js Organisation</p><h2>NFT</h2><p>Usually for augmented reality you need specialised markers, like this Hiro marker (notice the thick non-aesthetic borders 🤢)</p><img src="https://upload.wikimedia.org/wikipedia/commons/4/48/Hiro_marker_ARjs.png"/><p>This is called marker based tracking where the code knows what to look for. NFT or Natural Feature Tracing converts normal images into markers by extracting 'features' from it, this way you can use any image of your liking!</p><p>I'll be using my GitHub profile picture</p><img src="/images/me.jpeg"/><h2>Creating the Marker!</h2><p>First we need to create the marker files required by AR.js for NFT. For this we use Carnaux's repository 'NFT-Marker-Creator'.</p><pre><code><div class="highlight"><span></span>$ git clone https://github.com/Carnaux/NFT-Marker-Creator +<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"/><meta name="og:site_name" content="Navan Chauhan"/><link rel="canonical" href="https://navanchauhan.github.io/posts/2020-08-01-Natural-Feature-Tracking-ARJS"/><meta name="twitter:url" content="https://navanchauhan.github.io/posts/2020-08-01-Natural-Feature-Tracking-ARJS"/><meta name="og:url" content="https://navanchauhan.github.io/posts/2020-08-01-Natural-Feature-Tracking-ARJS"/><title>Introduction to AR.js and Natural Feature Tracking | Navan Chauhan</title><meta name="twitter:title" content="Introduction to AR.js and Natural Feature Tracking | Navan Chauhan"/><meta name="og:title" content="Introduction to AR.js and Natural Feature Tracking | Navan Chauhan"/><meta name="description" content="An introduction to AR.js and NFT"/><meta name="twitter:description" content="An introduction to AR.js and NFT"/><meta name="og:description" content="An introduction to AR.js and NFT"/><meta name="twitter:card" content="summary"/><link rel="stylesheet" href="/styles.css" type="text/css"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><link rel="shortcut icon" href="/images/favicon.png" type="image/png"/><link rel="alternate" href="/feed.rss" type="application/rss+xml" title="Subscribe to Navan Chauhan"/><meta name="twitter:image" content="https://navanchauhan.github.io/images/logo.png"/><meta name="og:image" content="https://navanchauhan.github.io/images/logo.png"/></head><head><script>var _paq=window._paq=window._paq||[];_paq.push(['trackPageView']),_paq.push(['enableLinkTracking']),function(){var a='https://navanspi.duckdns.org:6969/analytics/';_paq.push(['setTrackerUrl',a+'matomo.php']),_paq.push(['setSiteId','2']);var e=document,t=e.createElement('script'),p=e.getElementsByTagName('script')[0];t.type='text/javascript',t.async=!0,t.src=a+'matomo.js',p.parentNode.insertBefore(t,p)}();</script></head><head><script src="https://www.googletagmanager.com/gtag/js?id=UA-108635191-1v"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-108635191-1');</script></head><body class="item-page"><header><div class="wrapper"><a class="site-name" href="/">Navan Chauhan</a><nav><ul><li><a href="/about">About Me</a></li><li><a class="selected" href="/posts">Posts</a></li><li><a href="/publications">Publications</a></li><li><a href="/assets/résumé.pdf">Résumé</a></li><li><a href="https://navanchauhan.github.io/repo">Repo</a></li></ul></nav></div></header><div class="wrapper"><article><div class="content"><span class="reading-time">7 minute read</span><span class="reading-time">Created on August 1, 2020</span><span class="reading-time">Last modified on September 15, 2020</span><h1>Introduction to AR.js and Natural Feature Tracking</h1><h2>AR.js</h2><p>AR.js is a lightweight library for Augmented Reality on the Web, coming with features like Image Tracking, Location based AR and Marker tracking. It is the easiest option for cross-browser augmented reality.</p><p>The same code works for iOS, Android, Desktops and even VR Browsers!</p><p>It was initially created by Jerome Etienne and is now maintained by Nicolo Carpignoli and the AR-js Organisation</p><h2>NFT</h2><p>Usually for augmented reality you need specialised markers, like this Hiro marker (notice the thick non-aesthetic borders 🤢)</p><img src="https://upload.wikimedia.org/wikipedia/commons/4/48/Hiro_marker_ARjs.png"/><p>This is called marker based tracking where the code knows what to look for. NFT or Natural Feature Tracing converts normal images into markers by extracting 'features' from it, this way you can use any image of your liking!</p><p>I'll be using my GitHub profile picture</p><img src="/images/me.jpeg"/><h2>Creating the Marker!</h2><p>First we need to create the marker files required by AR.js for NFT. For this we use Carnaux's repository 'NFT-Marker-Creator'.</p><pre><code><div class="highlight"><span></span>$ git clone https://github.com/Carnaux/NFT-Marker-Creator Cloning into <span class="s1">'NFT-Marker-Creator'</span>... remote: Enumerating objects: <span class="m">79</span>, <span class="k">done</span>. @@ -68,283 +68,9 @@ Generator started at <span class="m">2020</span>-08-01 <span class="m">16</span> <span class="o">[</span>info<span class="o">]</span> Saving to asa.iset... <span class="o">[</span>info<span class="o">]</span> Done. <span class="o">[</span>info<span class="o">]</span> Generating FeatureList... -<span class="o">[</span>info<span class="o">]</span> Start <span class="k">for</span> <span class="m">72</span>.000000 dpi image. -<span class="o">[</span>info<span class="o">]</span> <span class="nv">ImageSize</span> <span class="o">=</span> <span class="m">309560</span><span class="o">[</span>pixel<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Extracted <span class="nv">features</span> <span class="o">=</span> <span class="m">24930</span><span class="o">[</span>pixel<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Filtered <span class="nv">features</span> <span class="o">=</span> <span class="m">6192</span><span class="o">[</span>pixel<span class="o">]</span> - <span class="m">544</span>/ <span class="m">545</span>.<span class="o">[</span>info<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Done. -<span class="o">[</span>info<span class="o">]</span> Max <span class="nv">feature</span> <span class="o">=</span> <span class="m">305</span> -<span class="o">[</span>info<span class="o">]</span> <span class="m">1</span>: <span class="o">(</span> <span class="m">22</span>,474<span class="o">)</span> : <span class="m">0</span>.211834 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.212201 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.583779, <span class="nv">sd</span><span class="o">=</span><span class="m">36</span>.253441 -<span class="o">[</span>info<span class="o">]</span> <span class="m">2</span>: <span class="o">(</span><span class="m">259</span>,449<span class="o">)</span> : <span class="m">0</span>.365469 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.373732 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.667143, <span class="nv">sd</span><span class="o">=</span><span class="m">64</span>.356659 -<span class="o">[</span>info<span class="o">]</span> <span class="m">3</span>: <span class="o">(</span><span class="m">244</span>,492<span class="o">)</span> : <span class="m">0</span>.368801 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.373514 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.644463, <span class="nv">sd</span><span class="o">=</span><span class="m">52</span>.414131 -<span class="o">[</span>info<span class="o">]</span> <span class="m">4</span>: <span class="o">(</span><span class="m">542</span>,503<span class="o">)</span> : <span class="m">0</span>.388110 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.393117 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.659145, <span class="nv">sd</span><span class="o">=</span><span class="m">21</span>.867199 -<span class="o">[</span>info<span class="o">]</span> <span class="m">5</span>: <span class="o">(</span><span class="m">544</span>,451<span class="o">)</span> : <span class="m">0</span>.426580 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.431487 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.697276, <span class="nv">sd</span><span class="o">=</span><span class="m">24</span>.540915 -<span class="o">[</span>info<span class="o">]</span> <span class="m">6</span>: <span class="o">(</span><span class="m">486</span>,334<span class="o">)</span> : <span class="m">0</span>.593511 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.565134 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.800069, <span class="nv">sd</span><span class="o">=</span><span class="m">31</span>.706526 -<span class="o">[</span>info<span class="o">]</span> <span class="m">7</span>: <span class="o">(</span><span class="m">217</span>,283<span class="o">)</span> : <span class="m">0</span>.602713 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.553285 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.815628, <span class="nv">sd</span><span class="o">=</span><span class="m">11</span>.092167 -<span class="o">[</span>info<span class="o">]</span> <span class="m">8</span>: <span class="o">(</span> <span class="m">44</span>,420<span class="o">)</span> : <span class="m">0</span>.612274 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.550906 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.832009, <span class="nv">sd</span><span class="o">=</span><span class="m">29</span>.664345 -<span class="o">[</span>info<span class="o">]</span> <span class="m">9</span>: <span class="o">(</span><span class="m">522</span>,343<span class="o">)</span> : <span class="m">0</span>.615029 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.569004 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.796405, <span class="nv">sd</span><span class="o">=</span><span class="m">34</span>.439430 -<span class="o">[</span>info<span class="o">]</span> <span class="m">10</span>: <span class="o">(</span> <span class="m">57</span>,476<span class="o">)</span> : <span class="m">0</span>.621610 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.568849 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.816438, <span class="nv">sd</span><span class="o">=</span><span class="m">41</span>.452328 -<span class="o">[</span>info<span class="o">]</span> <span class="m">11</span>: <span class="o">(</span><span class="m">407</span>,335<span class="o">)</span> : <span class="m">0</span>.626746 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.601339 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.802741, <span class="nv">sd</span><span class="o">=</span><span class="m">22</span>.136026 -<span class="o">[</span>info<span class="o">]</span> <span class="m">12</span>: <span class="o">(</span><span class="m">483</span>,375<span class="o">)</span> : <span class="m">0</span>.636573 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.552658 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.851101, <span class="nv">sd</span><span class="o">=</span><span class="m">53</span>.539089 -<span class="o">[</span>info<span class="o">]</span> <span class="m">13</span>: <span class="o">(</span> <span class="m">54</span>,509<span class="o">)</span> : <span class="m">0</span>.637408 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.563383 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.804955, <span class="nv">sd</span><span class="o">=</span><span class="m">34</span>.774330 -<span class="o">[</span>info<span class="o">]</span> <span class="m">14</span>: <span class="o">(</span> <span class="m">22</span>,386<span class="o">)</span> : <span class="m">0</span>.642944 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.630736 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.852005, <span class="nv">sd</span><span class="o">=</span><span class="m">29</span>.959364 -<span class="o">[</span>info<span class="o">]</span> <span class="m">15</span>: <span class="o">(</span><span class="m">459</span>,434<span class="o">)</span> : <span class="m">0</span>.649170 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.567012 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.817146, <span class="nv">sd</span><span class="o">=</span><span class="m">44</span>.087994 -<span class="o">[</span>info<span class="o">]</span> <span class="m">16</span>: <span class="o">(</span><span class="m">510</span>,409<span class="o">)</span> : <span class="m">0</span>.667462 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.572251 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.808130, <span class="nv">sd</span><span class="o">=</span><span class="m">49</span>.187576 -<span class="o">[</span>info<span class="o">]</span> <span class="m">17</span>: <span class="o">(</span><span class="m">330</span>,270<span class="o">)</span> : <span class="m">0</span>.690323 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.625252 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.836476, <span class="nv">sd</span><span class="o">=</span><span class="m">24</span>.105335 -<span class="o">[</span>info<span class="o">]</span> <span class="m">18</span>: <span class="o">(</span><span class="m">544</span>,270<span class="o">)</span> : <span class="m">0</span>.695668 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.550262 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.841321, <span class="nv">sd</span><span class="o">=</span><span class="m">53</span>.076946 -<span class="o">[</span>info<span class="o">]</span> <span class="m">19</span>: <span class="o">(</span><span class="m">443</span>,489<span class="o">)</span> : <span class="m">0</span>.696738 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.557579 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.868091, <span class="nv">sd</span><span class="o">=</span><span class="m">27</span>.418671 -<span class="o">[</span>info<span class="o">]</span> <span class="m">20</span>: <span class="o">(</span><span class="m">439</span>,373<span class="o">)</span> : <span class="m">0</span>.706379 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.658029 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.856492, <span class="nv">sd</span><span class="o">=</span><span class="m">52</span>.750744 -<span class="o">[</span>info<span class="o">]</span> <span class="m">21</span>: <span class="o">(</span><span class="m">381</span>,264<span class="o">)</span> : <span class="m">0</span>.712895 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.567250 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.829908, <span class="nv">sd</span><span class="o">=</span><span class="m">21</span>.462694 -<span class="o">[</span>info<span class="o">]</span> <span class="m">22</span>: <span class="o">(</span><span class="m">114</span>,344<span class="o">)</span> : <span class="m">0</span>.726579 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.574026 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.873275, <span class="nv">sd</span><span class="o">=</span><span class="m">19</span>.631178 -<span class="o">[</span>info<span class="o">]</span> <span class="m">23</span>: <span class="o">(</span><span class="m">450</span>,339<span class="o">)</span> : <span class="m">0</span>.730613 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.622663 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.840786, <span class="nv">sd</span><span class="o">=</span><span class="m">36</span>.808407 -<span class="o">[</span>info<span class="o">]</span> <span class="m">24</span>: <span class="o">(</span><span class="m">187</span>,316<span class="o">)</span> : <span class="m">0</span>.737529 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.568579 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.856549, <span class="nv">sd</span><span class="o">=</span><span class="m">35</span>.841721 -<span class="o">[</span>info<span class="o">]</span> <span class="m">25</span>: <span class="o">(</span><span class="m">155</span>,451<span class="o">)</span> : <span class="m">0</span>.741329 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.617655 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.848432, <span class="nv">sd</span><span class="o">=</span><span class="m">50</span>.381092 -<span class="o">[</span>info<span class="o">]</span> <span class="m">26</span>: <span class="o">(</span><span class="m">425</span>,406<span class="o">)</span> : <span class="m">0</span>.770987 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.674625 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.908930, <span class="nv">sd</span><span class="o">=</span><span class="m">39</span>.619099 -<span class="o">[</span>info<span class="o">]</span> <span class="m">27</span>: <span class="o">(</span><span class="m">520</span>,308<span class="o">)</span> : <span class="m">0</span>.773589 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.646116 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.856012, <span class="nv">sd</span><span class="o">=</span><span class="m">31</span>.303595 -<span class="o">[</span>info<span class="o">]</span> <span class="m">28</span>: <span class="o">(</span><span class="m">239</span>,244<span class="o">)</span> : <span class="m">0</span>.784615 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.655032 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.943640, <span class="nv">sd</span><span class="o">=</span><span class="m">25</span>.512465 -<span class="o">[</span>info<span class="o">]</span> <span class="m">29</span>: <span class="o">(</span><span class="m">415</span>,277<span class="o">)</span> : <span class="m">0</span>.784977 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.745286 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.898037, <span class="nv">sd</span><span class="o">=</span><span class="m">24</span>.985357 -<span class="o">[</span>info<span class="o">]</span> <span class="m">30</span>: <span class="o">(</span><span class="m">278</span>,244<span class="o">)</span> : <span class="m">0</span>.796536 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.713171 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.940000, <span class="nv">sd</span><span class="o">=</span><span class="m">36</span>.488716 -<span class="o">[</span>info<span class="o">]</span> <span class="m">31</span>: <span class="o">(</span><span class="m">536</span>,235<span class="o">)</span> : <span class="m">0</span>.825348 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.654568 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.901623, <span class="nv">sd</span><span class="o">=</span><span class="m">54</span>.036903 -<span class="o">[</span>info<span class="o">]</span> <span class="m">32</span>: <span class="o">(</span><span class="m">341</span>,310<span class="o">)</span> : <span class="m">0</span>.828034 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.796073 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.928327, <span class="nv">sd</span><span class="o">=</span><span class="m">57</span>.174885 -<span class="o">[</span>info<span class="o">]</span> <span class="m">33</span>: <span class="o">(</span><span class="m">355</span>,438<span class="o">)</span> : <span class="m">0</span>.833364 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.616488 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.944241, <span class="nv">sd</span><span class="o">=</span><span class="m">57</span>.199963 -<span class="o">[</span>info<span class="o">]</span> <span class="m">34</span>: <span class="o">(</span><span class="m">330</span>,215<span class="o">)</span> : <span class="m">0</span>.852530 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.778738 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.960263, <span class="nv">sd</span><span class="o">=</span><span class="m">31</span>.844889 -<span class="o">[</span>info<span class="o">]</span> <span class="m">35</span>: <span class="o">(</span><span class="m">307</span>,163<span class="o">)</span> : <span class="m">0</span>.859535 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.750590 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.963522, <span class="nv">sd</span><span class="o">=</span><span class="m">41</span>.524643 -<span class="o">[</span>info<span class="o">]</span> <span class="m">36</span>: <span class="o">(</span> <span class="m">43</span>,246<span class="o">)</span> : <span class="m">0</span>.865821 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.715005 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.967188, <span class="nv">sd</span><span class="o">=</span><span class="m">17</span>.746605 -<span class="o">[</span>info<span class="o">]</span> <span class="m">37</span>: <span class="o">(</span><span class="m">207</span>,171<span class="o">)</span> : <span class="m">0</span>.873648 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.753025 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.956383, <span class="nv">sd</span><span class="o">=</span><span class="m">22</span>.992336 -<span class="o">[</span>info<span class="o">]</span> <span class="m">38</span>: <span class="o">(</span> <span class="m">75</span>,383<span class="o">)</span> : <span class="m">0</span>.877258 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.809668 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.943998, <span class="nv">sd</span><span class="o">=</span><span class="m">24</span>.749569 -<span class="o">[</span>info<span class="o">]</span> <span class="m">39</span>: <span class="o">(</span> <span class="m">77</span>,438<span class="o">)</span> : <span class="m">0</span>.893997 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.853110 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.953184, <span class="nv">sd</span><span class="o">=</span><span class="m">37</span>.195824 -<span class="o">[</span>info<span class="o">]</span> <span class="m">40</span>: <span class="o">(</span><span class="m">186</span>,231<span class="o">)</span> : <span class="m">0</span>.897896 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.893945 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.959936, <span class="nv">sd</span><span class="o">=</span><span class="m">53</span>.592140 -<span class="o">[</span>info<span class="o">]</span> --------------------------------------------------------------- -<span class="o">[</span>info<span class="o">]</span> Start <span class="k">for</span> <span class="m">59</span>.184002 dpi image. -<span class="o">[</span>info<span class="o">]</span> <span class="nv">ImageSize</span> <span class="o">=</span> <span class="m">209216</span><span class="o">[</span>pixel<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Extracted <span class="nv">features</span> <span class="o">=</span> <span class="m">16664</span><span class="o">[</span>pixel<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Filtered <span class="nv">features</span> <span class="o">=</span> <span class="m">4219</span><span class="o">[</span>pixel<span class="o">]</span> - <span class="m">447</span>/ <span class="m">448</span>.<span class="o">[</span>info<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Done. -<span class="o">[</span>info<span class="o">]</span> Max <span class="nv">feature</span> <span class="o">=</span> <span class="m">205</span> -<span class="o">[</span>info<span class="o">]</span> <span class="m">1</span>: <span class="o">(</span> <span class="m">24</span>,404<span class="o">)</span> : <span class="m">0</span>.263453 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.272001 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.579902, <span class="nv">sd</span><span class="o">=</span><span class="m">30</span>.270309 -<span class="o">[</span>info<span class="o">]</span> <span class="m">2</span>: <span class="o">(</span><span class="m">181</span>,415<span class="o">)</span> : <span class="m">0</span>.286756 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.296179 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.570393, <span class="nv">sd</span><span class="o">=</span><span class="m">51</span>.832920 -<span class="o">[</span>info<span class="o">]</span> <span class="m">3</span>: <span class="o">(</span><span class="m">229</span>,375<span class="o">)</span> : <span class="m">0</span>.299946 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.301300 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.620830, <span class="nv">sd</span><span class="o">=</span><span class="m">63</span>.595726 -<span class="o">[</span>info<span class="o">]</span> <span class="m">4</span>: <span class="o">(</span><span class="m">443</span>,403<span class="o">)</span> : <span class="m">0</span>.395126 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.407708 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.635656, <span class="nv">sd</span><span class="o">=</span><span class="m">21</span>.330490 -<span class="o">[</span>info<span class="o">]</span> <span class="m">5</span>: <span class="o">(</span><span class="m">224</span>,412<span class="o">)</span> : <span class="m">0</span>.444073 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.451129 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.679228, <span class="nv">sd</span><span class="o">=</span><span class="m">50</span>.032726 -<span class="o">[</span>info<span class="o">]</span> <span class="m">6</span>: <span class="o">(</span><span class="m">402</span>,276<span class="o">)</span> : <span class="m">0</span>.562894 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.550990 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.783724, <span class="nv">sd</span><span class="o">=</span><span class="m">31</span>.768101 -<span class="o">[</span>info<span class="o">]</span> <span class="m">7</span>: <span class="o">(</span> <span class="m">22</span>,324<span class="o">)</span> : <span class="m">0</span>.597796 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.553165 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.803201, <span class="nv">sd</span><span class="o">=</span><span class="m">25</span>.844311 -<span class="o">[</span>info<span class="o">]</span> <span class="m">8</span>: <span class="o">(</span><span class="m">408</span>,318<span class="o">)</span> : <span class="m">0</span>.606647 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.558857 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.803414, <span class="nv">sd</span><span class="o">=</span><span class="m">50</span>.661160 -<span class="o">[</span>info<span class="o">]</span> <span class="m">9</span>: <span class="o">(</span><span class="m">378</span>,394<span class="o">)</span> : <span class="m">0</span>.616479 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.558946 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.824612, <span class="nv">sd</span><span class="o">=</span><span class="m">26</span>.079950 -<span class="o">[</span>info<span class="o">]</span> <span class="m">10</span>: <span class="o">(</span><span class="m">384</span>,361<span class="o">)</span> : <span class="m">0</span>.668396 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.603888 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.820440, <span class="nv">sd</span><span class="o">=</span><span class="m">36</span>.232616 -<span class="o">[</span>info<span class="o">]</span> <span class="m">11</span>: <span class="o">(</span><span class="m">337</span>,278<span class="o">)</span> : <span class="m">0</span>.671341 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.586483 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.837408, <span class="nv">sd</span><span class="o">=</span><span class="m">23</span>.079739 -<span class="o">[</span>info<span class="o">]</span> <span class="m">12</span>: <span class="o">(</span> <span class="m">52</span>,371<span class="o">)</span> : <span class="m">0</span>.679165 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.648876 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.842554, <span class="nv">sd</span><span class="o">=</span><span class="m">35</span>.683979 -<span class="o">[</span>info<span class="o">]</span> <span class="m">13</span>: <span class="o">(</span><span class="m">440</span>,260<span class="o">)</span> : <span class="m">0</span>.683035 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.577838 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.836932, <span class="nv">sd</span><span class="o">=</span><span class="m">36</span>.886761 -<span class="o">[</span>info<span class="o">]</span> <span class="m">14</span>: <span class="o">(</span><span class="m">444</span>,227<span class="o">)</span> : <span class="m">0</span>.687587 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.567562 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.837861, <span class="nv">sd</span><span class="o">=</span><span class="m">49</span>.854889 -<span class="o">[</span>info<span class="o">]</span> <span class="m">15</span>: <span class="o">(</span><span class="m">149</span>,266<span class="o">)</span> : <span class="m">0</span>.688923 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.572425 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.832697, <span class="nv">sd</span><span class="o">=</span><span class="m">31</span>.967720 -<span class="o">[</span>info<span class="o">]</span> <span class="m">16</span>: <span class="o">(</span><span class="m">290</span>,212<span class="o">)</span> : <span class="m">0</span>.714381 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.573321 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.825159, <span class="nv">sd</span><span class="o">=</span><span class="m">25</span>.429075 -<span class="o">[</span>info<span class="o">]</span> <span class="m">17</span>: <span class="o">(</span><span class="m">374</span>,309<span class="o">)</span> : <span class="m">0</span>.720491 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.711943 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.874688, <span class="nv">sd</span><span class="o">=</span><span class="m">58</span>.918808 -<span class="o">[</span>info<span class="o">]</span> <span class="m">18</span>: <span class="o">(</span><span class="m">103</span>,283<span class="o">)</span> : <span class="m">0</span>.723728 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.559241 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.835176, <span class="nv">sd</span><span class="o">=</span><span class="m">17</span>.688787 -<span class="o">[</span>info<span class="o">]</span> <span class="m">19</span>: <span class="o">(</span><span class="m">235</span>,200<span class="o">)</span> : <span class="m">0</span>.742138 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.745569 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.912951, <span class="nv">sd</span><span class="o">=</span><span class="m">36</span>.019238 -<span class="o">[</span>info<span class="o">]</span> <span class="m">20</span>: <span class="o">(</span><span class="m">128</span>,360<span class="o">)</span> : <span class="m">0</span>.770635 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.551060 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.871743, <span class="nv">sd</span><span class="o">=</span><span class="m">51</span>.743370 -<span class="o">[</span>info<span class="o">]</span> <span class="m">21</span>: <span class="o">(</span><span class="m">297</span>,368<span class="o">)</span> : <span class="m">0</span>.794845 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.553557 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.908358, <span class="nv">sd</span><span class="o">=</span><span class="m">48</span>.856777 -<span class="o">[</span>info<span class="o">]</span> <span class="m">22</span>: <span class="o">(</span><span class="m">348</span>,343<span class="o">)</span> : <span class="m">0</span>.798785 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.662930 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.928792, <span class="nv">sd</span><span class="o">=</span><span class="m">40</span>.917496 -<span class="o">[</span>info<span class="o">]</span> <span class="m">23</span>: <span class="o">(</span><span class="m">195</span>,204<span class="o">)</span> : <span class="m">0</span>.801663 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.621057 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.936245, <span class="nv">sd</span><span class="o">=</span><span class="m">25</span>.684557 -<span class="o">[</span>info<span class="o">]</span> <span class="m">24</span>: <span class="o">(</span><span class="m">325</span>,221<span class="o">)</span> : <span class="m">0</span>.810848 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.756911 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.898076, <span class="nv">sd</span><span class="o">=</span><span class="m">30</span>.086334 -<span class="o">[</span>info<span class="o">]</span> <span class="m">25</span>: <span class="o">(</span><span class="m">276</span>,253<span class="o">)</span> : <span class="m">0</span>.825425 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.812713 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.926472, <span class="nv">sd</span><span class="o">=</span><span class="m">58</span>.497112 -<span class="o">[</span>info<span class="o">]</span> <span class="m">26</span>: <span class="o">(</span> <span class="m">57</span>,409<span class="o">)</span> : <span class="m">0</span>.838737 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.829799 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.922687, <span class="nv">sd</span><span class="o">=</span><span class="m">45</span>.331120 -<span class="o">[</span>info<span class="o">]</span> <span class="m">27</span>: <span class="o">(</span><span class="m">174</span>,164<span class="o">)</span> : <span class="m">0</span>.846327 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.738286 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.963738, <span class="nv">sd</span><span class="o">=</span><span class="m">31</span>.914589 -<span class="o">[</span>info<span class="o">]</span> <span class="m">28</span>: <span class="o">(</span><span class="m">440</span>,191<span class="o">)</span> : <span class="m">0</span>.859450 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.752551 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.938949, <span class="nv">sd</span><span class="o">=</span><span class="m">62</span>.600094 -<span class="o">[</span>info<span class="o">]</span> <span class="m">29</span>: <span class="o">(</span><span class="m">271</span>,176<span class="o">)</span> : <span class="m">0</span>.865594 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.832825 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.961079, <span class="nv">sd</span><span class="o">=</span><span class="m">36</span>.463100 -<span class="o">[</span>info<span class="o">]</span> <span class="m">30</span>: <span class="o">(</span><span class="m">247</span>,141<span class="o">)</span> : <span class="m">0</span>.869905 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.719910 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.944092, <span class="nv">sd</span><span class="o">=</span><span class="m">39</span>.328327 -<span class="o">[</span>info<span class="o">]</span> <span class="m">31</span>: <span class="o">(</span> <span class="m">62</span>,315<span class="o">)</span> : <span class="m">0</span>.889240 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.820342 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.949085, <span class="nv">sd</span><span class="o">=</span><span class="m">28</span>.934418 -<span class="o">[</span>info<span class="o">]</span> <span class="m">32</span>: <span class="o">(</span> <span class="m">55</span>,200<span class="o">)</span> : <span class="m">0</span>.896143 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.724967 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.973851, <span class="nv">sd</span><span class="o">=</span><span class="m">18</span>.574352 -<span class="o">[</span>info<span class="o">]</span> --------------------------------------------------------------- -<span class="o">[</span>info<span class="o">]</span> Start <span class="k">for</span> <span class="m">46</span>.974373 dpi image. -<span class="o">[</span>info<span class="o">]</span> <span class="nv">ImageSize</span> <span class="o">=</span> <span class="m">132076</span><span class="o">[</span>pixel<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Extracted <span class="nv">features</span> <span class="o">=</span> <span class="m">10582</span><span class="o">[</span>pixel<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Filtered <span class="nv">features</span> <span class="o">=</span> <span class="m">2654</span><span class="o">[</span>pixel<span class="o">]</span> - <span class="m">355</span>/ <span class="m">356</span>.<span class="o">[</span>info<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Done. -<span class="o">[</span>info<span class="o">]</span> Max <span class="nv">feature</span> <span class="o">=</span> <span class="m">125</span> -<span class="o">[</span>info<span class="o">]</span> <span class="m">1</span>: <span class="o">(</span><span class="m">147</span>,328<span class="o">)</span> : <span class="m">0</span>.253711 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.261744 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.546386, <span class="nv">sd</span><span class="o">=</span><span class="m">49</span>.037407 -<span class="o">[</span>info<span class="o">]</span> <span class="m">2</span>: <span class="o">(</span> <span class="m">23</span>,318<span class="o">)</span> : <span class="m">0</span>.326023 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.332772 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.553814, <span class="nv">sd</span><span class="o">=</span><span class="m">29</span>.970749 -<span class="o">[</span>info<span class="o">]</span> <span class="m">3</span>: <span class="o">(</span><span class="m">180</span>,307<span class="o">)</span> : <span class="m">0</span>.332172 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.353050 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.582633, <span class="nv">sd</span><span class="o">=</span><span class="m">55</span>.894489 -<span class="o">[</span>info<span class="o">]</span> <span class="m">4</span>: <span class="o">(</span><span class="m">339</span>,229<span class="o">)</span> : <span class="m">0</span>.568601 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.561106 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.788570, <span class="nv">sd</span><span class="o">=</span><span class="m">35</span>.519234 -<span class="o">[</span>info<span class="o">]</span> <span class="m">5</span>: <span class="o">(</span> <span class="m">34</span>,277<span class="o">)</span> : <span class="m">0</span>.618809 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.583962 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.811560, <span class="nv">sd</span><span class="o">=</span><span class="m">31</span>.459497 -<span class="o">[</span>info<span class="o">]</span> <span class="m">6</span>: <span class="o">(</span><span class="m">120</span>,210<span class="o">)</span> : <span class="m">0</span>.655516 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.553481 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.808650, <span class="nv">sd</span><span class="o">=</span><span class="m">30</span>.417620 -<span class="o">[</span>info<span class="o">]</span> <span class="m">7</span>: <span class="o">(</span><span class="m">299</span>,226<span class="o">)</span> : <span class="m">0</span>.660352 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.551423 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.810235, <span class="nv">sd</span><span class="o">=</span><span class="m">40</span>.050533 -<span class="o">[</span>info<span class="o">]</span> <span class="m">8</span>: <span class="o">(</span><span class="m">289</span>,291<span class="o">)</span> : <span class="m">0</span>.672981 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.584721 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.865715, <span class="nv">sd</span><span class="o">=</span><span class="m">34</span>.681435 -<span class="o">[</span>info<span class="o">]</span> <span class="m">9</span>: <span class="o">(</span> <span class="m">85</span>,221<span class="o">)</span> : <span class="m">0</span>.735781 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.557358 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.837869, <span class="nv">sd</span><span class="o">=</span><span class="m">15</span>.401685 -<span class="o">[</span>info<span class="o">]</span> <span class="m">10</span>: <span class="o">(</span><span class="m">192</span>,150<span class="o">)</span> : <span class="m">0</span>.748029 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.762064 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.911963, <span class="nv">sd</span><span class="o">=</span><span class="m">36</span>.248280 -<span class="o">[</span>info<span class="o">]</span> <span class="m">11</span>: <span class="o">(</span><span class="m">348</span>,194<span class="o">)</span> : <span class="m">0</span>.750950 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.647856 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.880163, <span class="nv">sd</span><span class="o">=</span><span class="m">44</span>.824394 -<span class="o">[</span>info<span class="o">]</span> <span class="m">12</span>: <span class="o">(</span> <span class="m">27</span>,244<span class="o">)</span> : <span class="m">0</span>.779110 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.741316 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.889470, <span class="nv">sd</span><span class="o">=</span><span class="m">27</span>.621294 -<span class="o">[</span>info<span class="o">]</span> <span class="m">13</span>: <span class="o">(</span><span class="m">192</span>,110<span class="o">)</span> : <span class="m">0</span>.801694 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.737249 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.930409, <span class="nv">sd</span><span class="o">=</span><span class="m">40</span>.227238 -<span class="o">[</span>info<span class="o">]</span> <span class="m">14</span>: <span class="o">(</span><span class="m">142</span>,131<span class="o">)</span> : <span class="m">0</span>.807086 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.639763 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.952103, <span class="nv">sd</span><span class="o">=</span><span class="m">32</span>.719967 -<span class="o">[</span>info<span class="o">]</span> <span class="m">15</span>: <span class="o">(</span><span class="m">218</span>,190<span class="o">)</span> : <span class="m">0</span>.819924 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.789691 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.922567, <span class="nv">sd</span><span class="o">=</span><span class="m">52</span>.960388 -<span class="o">[</span>info<span class="o">]</span> <span class="m">16</span>: <span class="o">(</span><span class="m">265</span>,213<span class="o">)</span> : <span class="m">0</span>.829599 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.755986 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.906421, <span class="nv">sd</span><span class="o">=</span><span class="m">30</span>.495857 -<span class="o">[</span>info<span class="o">]</span> <span class="m">17</span>: <span class="o">(</span><span class="m">348</span>,159<span class="o">)</span> : <span class="m">0</span>.833503 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.770736 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.922161, <span class="nv">sd</span><span class="o">=</span><span class="m">62</span>.732380 -<span class="o">[</span>info<span class="o">]</span> <span class="m">18</span>: <span class="o">(</span><span class="m">241</span>,296<span class="o">)</span> : <span class="m">0</span>.846388 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.551359 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.934936, <span class="nv">sd</span><span class="o">=</span><span class="m">41</span>.934254 -<span class="o">[</span>info<span class="o">]</span> <span class="m">19</span>: <span class="o">(</span><span class="m">263</span>,178<span class="o">)</span> : <span class="m">0</span>.888409 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.791312 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.931626, <span class="nv">sd</span><span class="o">=</span><span class="m">35</span>.446648 -<span class="o">[</span>info<span class="o">]</span> --------------------------------------------------------------- -<span class="o">[</span>info<span class="o">]</span> Start <span class="k">for</span> <span class="m">37</span>.283585 dpi image. -<span class="o">[</span>info<span class="o">]</span> <span class="nv">ImageSize</span> <span class="o">=</span> <span class="m">82908</span><span class="o">[</span>pixel<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Extracted <span class="nv">features</span> <span class="o">=</span> <span class="m">6477</span><span class="o">[</span>pixel<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Filtered <span class="nv">features</span> <span class="o">=</span> <span class="m">1665</span><span class="o">[</span>pixel<span class="o">]</span> - <span class="m">281</span>/ <span class="m">282</span>.<span class="o">[</span>info<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Done. -<span class="o">[</span>info<span class="o">]</span> Max <span class="nv">feature</span> <span class="o">=</span> <span class="m">76</span> -<span class="o">[</span>info<span class="o">]</span> <span class="m">1</span>: <span class="o">(</span><span class="m">126</span>,255<span class="o">)</span> : <span class="m">0</span>.291458 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.293245 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.532445, <span class="nv">sd</span><span class="o">=</span><span class="m">44</span>.819416 -<span class="o">[</span>info<span class="o">]</span> <span class="m">2</span>: <span class="o">(</span><span class="m">259</span>,179<span class="o">)</span> : <span class="m">0</span>.544833 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.552487 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.779788, <span class="nv">sd</span><span class="o">=</span><span class="m">34</span>.632847 -<span class="o">[</span>info<span class="o">]</span> <span class="m">3</span>: <span class="o">(</span> <span class="m">22</span>,217<span class="o">)</span> : <span class="m">0</span>.577221 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.572050 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.765973, <span class="nv">sd</span><span class="o">=</span><span class="m">29</span>.686686 -<span class="o">[</span>info<span class="o">]</span> <span class="m">4</span>: <span class="o">(</span><span class="m">101</span>,164<span class="o">)</span> : <span class="m">0</span>.634161 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.551986 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.799318, <span class="nv">sd</span><span class="o">=</span><span class="m">26</span>.766178 -<span class="o">[</span>info<span class="o">]</span> <span class="m">5</span>: <span class="o">(</span><span class="m">263</span>,212<span class="o">)</span> : <span class="m">0</span>.644384 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.564216 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.795845, <span class="nv">sd</span><span class="o">=</span><span class="m">42</span>.637730 -<span class="o">[</span>info<span class="o">]</span> <span class="m">6</span>: <span class="o">(</span> <span class="m">22</span>,258<span class="o">)</span> : <span class="m">0</span>.680414 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.692315 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.791998, <span class="nv">sd</span><span class="o">=</span><span class="m">35</span>.050774 -<span class="o">[</span>info<span class="o">]</span> <span class="m">7</span>: <span class="o">(</span><span class="m">220</span>,182<span class="o">)</span> : <span class="m">0</span>.698840 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.592309 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.862061, <span class="nv">sd</span><span class="o">=</span><span class="m">37</span>.508007 -<span class="o">[</span>info<span class="o">]</span> <span class="m">8</span>: <span class="o">(</span><span class="m">229</span>,257<span class="o">)</span> : <span class="m">0</span>.703305 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.553369 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.864329, <span class="nv">sd</span><span class="o">=</span><span class="m">24</span>.709126 -<span class="o">[</span>info<span class="o">]</span> <span class="m">9</span>: <span class="o">(</span><span class="m">151</span>,118<span class="o">)</span> : <span class="m">0</span>.726578 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.738549 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.906151, <span class="nv">sd</span><span class="o">=</span><span class="m">38</span>.828815 -<span class="o">[</span>info<span class="o">]</span> <span class="m">10</span>: <span class="o">(</span><span class="m">177</span>,214<span class="o">)</span> : <span class="m">0</span>.781371 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.563572 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.832300, <span class="nv">sd</span><span class="o">=</span><span class="m">54</span>.721115 -<span class="o">[</span>info<span class="o">]</span> <span class="m">11</span>: <span class="o">(</span><span class="m">225</span>,215<span class="o">)</span> : <span class="m">0</span>.788058 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.755838 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.899616, <span class="nv">sd</span><span class="o">=</span><span class="m">50</span>.707241 -<span class="o">[</span>info<span class="o">]</span> <span class="m">12</span>: <span class="o">(</span><span class="m">158</span>,155<span class="o">)</span> : <span class="m">0</span>.794013 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.781587 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.916502, <span class="nv">sd</span><span class="o">=</span><span class="m">48</span>.264225 -<span class="o">[</span>info<span class="o">]</span> <span class="m">13</span>: <span class="o">(</span> <span class="m">63</span>,176<span class="o">)</span> : <span class="m">0</span>.841771 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.763143 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.907695, <span class="nv">sd</span><span class="o">=</span><span class="m">19</span>.686169 -<span class="o">[</span>info<span class="o">]</span> <span class="m">14</span>: <span class="o">(</span><span class="m">206</span>,145<span class="o">)</span> : <span class="m">0</span>.844404 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.752984 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.916683, <span class="nv">sd</span><span class="o">=</span><span class="m">35</span>.973286 -<span class="o">[</span>info<span class="o">]</span> <span class="m">15</span>: <span class="o">(</span><span class="m">270</span>,142<span class="o">)</span> : <span class="m">0</span>.845205 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.795885 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.935199, <span class="nv">sd</span><span class="o">=</span><span class="m">59</span>.147652 -<span class="o">[</span>info<span class="o">]</span> <span class="m">16</span>: <span class="o">(</span><span class="m">149</span>, <span class="m">75</span><span class="o">)</span> : <span class="m">0</span>.874711 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.796581 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.958077, <span class="nv">sd</span><span class="o">=</span><span class="m">47</span>.111187 -<span class="o">[</span>info<span class="o">]</span> <span class="m">17</span>: <span class="o">(</span><span class="m">113</span>,104<span class="o">)</span> : <span class="m">0</span>.877415 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.769141 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.966519, <span class="nv">sd</span><span class="o">=</span><span class="m">51</span>.069527 -<span class="o">[</span>info<span class="o">]</span> --------------------------------------------------------------- -<span class="o">[</span>info<span class="o">]</span> Start <span class="k">for</span> <span class="m">29</span>.592001 dpi image. -<span class="o">[</span>info<span class="o">]</span> <span class="nv">ImageSize</span> <span class="o">=</span> <span class="m">52192</span><span class="o">[</span>pixel<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Extracted <span class="nv">features</span> <span class="o">=</span> <span class="m">4027</span><span class="o">[</span>pixel<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Filtered <span class="nv">features</span> <span class="o">=</span> <span class="m">1050</span><span class="o">[</span>pixel<span class="o">]</span> - <span class="m">223</span>/ <span class="m">224</span>.<span class="o">[</span>info<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Done. -<span class="o">[</span>info<span class="o">]</span> Max <span class="nv">feature</span> <span class="o">=</span> <span class="m">50</span> -<span class="o">[</span>info<span class="o">]</span> <span class="m">1</span>: <span class="o">(</span><span class="m">102</span>,201<span class="o">)</span> : <span class="m">0</span>.289298 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.304870 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.535742, <span class="nv">sd</span><span class="o">=</span><span class="m">46</span>.188416 -<span class="o">[</span>info<span class="o">]</span> <span class="m">2</span>: <span class="o">(</span><span class="m">210</span>,148<span class="o">)</span> : <span class="m">0</span>.562558 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.576227 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.774472, <span class="nv">sd</span><span class="o">=</span><span class="m">41</span>.276623 -<span class="o">[</span>info<span class="o">]</span> <span class="m">3</span>: <span class="o">(</span> <span class="m">78</span>,129<span class="o">)</span> : <span class="m">0</span>.612243 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.551623 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.784806, <span class="nv">sd</span><span class="o">=</span><span class="m">23</span>.271040 -<span class="o">[</span>info<span class="o">]</span> <span class="m">4</span>: <span class="o">(</span><span class="m">177</span>,133<span class="o">)</span> : <span class="m">0</span>.688757 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.576350 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.879510, <span class="nv">sd</span><span class="o">=</span><span class="m">33</span>.073624 -<span class="o">[</span>info<span class="o">]</span> <span class="m">5</span>: <span class="o">(</span><span class="m">201</span>,187<span class="o">)</span> : <span class="m">0</span>.689806 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.643513 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.833690, <span class="nv">sd</span><span class="o">=</span><span class="m">35</span>.062008 -<span class="o">[</span>info<span class="o">]</span> <span class="m">6</span>: <span class="o">(</span><span class="m">114</span>, <span class="m">82</span><span class="o">)</span> : <span class="m">0</span>.729714 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.720887 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.903299, <span class="nv">sd</span><span class="o">=</span><span class="m">42</span>.064465 -<span class="o">[</span>info<span class="o">]</span> <span class="m">7</span>: <span class="o">(</span><span class="m">124</span>,118<span class="o">)</span> : <span class="m">0</span>.735968 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.746138 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.899143, <span class="nv">sd</span><span class="o">=</span><span class="m">45</span>.898678 -<span class="o">[</span>info<span class="o">]</span> <span class="m">8</span>: <span class="o">(</span> <span class="m">23</span>,164<span class="o">)</span> : <span class="m">0</span>.779643 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.747459 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.878366, <span class="nv">sd</span><span class="o">=</span><span class="m">34</span>.013752 -<span class="o">[</span>info<span class="o">]</span> <span class="m">9</span>: <span class="o">(</span><span class="m">140</span>,163<span class="o">)</span> : <span class="m">0</span>.809162 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.637383 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.881929, <span class="nv">sd</span><span class="o">=</span><span class="m">50</span>.335152 -<span class="o">[</span>info<span class="o">]</span> <span class="m">10</span>: <span class="o">(</span> <span class="m">23</span>,198<span class="o">)</span> : <span class="m">0</span>.819792 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.807587 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.883169, <span class="nv">sd</span><span class="o">=</span><span class="m">39</span>.944038 -<span class="o">[</span>info<span class="o">]</span> <span class="m">11</span>: <span class="o">(</span><span class="m">210</span>,113<span class="o">)</span> : <span class="m">0</span>.867805 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.835419 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.952952, <span class="nv">sd</span><span class="o">=</span><span class="m">62</span>.521526 -<span class="o">[</span>info<span class="o">]</span> --------------------------------------------------------------- -<span class="o">[</span>info<span class="o">]</span> Start <span class="k">for</span> <span class="m">23</span>.487186 dpi image. -<span class="o">[</span>info<span class="o">]</span> <span class="nv">ImageSize</span> <span class="o">=</span> <span class="m">32930</span><span class="o">[</span>pixel<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Extracted <span class="nv">features</span> <span class="o">=</span> <span class="m">2542</span><span class="o">[</span>pixel<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Filtered <span class="nv">features</span> <span class="o">=</span> <span class="m">663</span><span class="o">[</span>pixel<span class="o">]</span> - <span class="m">177</span>/ <span class="m">178</span>.<span class="o">[</span>info<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Done. -<span class="o">[</span>info<span class="o">]</span> Max <span class="nv">feature</span> <span class="o">=</span> <span class="m">26</span> -<span class="o">[</span>info<span class="o">]</span> <span class="m">1</span>: <span class="o">(</span> <span class="m">90</span>,150<span class="o">)</span> : <span class="m">0</span>.521553 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.522064 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.695849, <span class="nv">sd</span><span class="o">=</span><span class="m">47</span>.276417 -<span class="o">[</span>info<span class="o">]</span> <span class="m">2</span>: <span class="o">(</span><span class="m">150</span>,127<span class="o">)</span> : <span class="m">0</span>.588753 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.553176 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.839270, <span class="nv">sd</span><span class="o">=</span><span class="m">40</span>.334232 -<span class="o">[</span>info<span class="o">]</span> <span class="m">3</span>: <span class="o">(</span> <span class="m">63</span>,104<span class="o">)</span> : <span class="m">0</span>.657959 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.625311 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.845079, <span class="nv">sd</span><span class="o">=</span><span class="m">26</span>.239153 -<span class="o">[</span>info<span class="o">]</span> <span class="m">4</span>: <span class="o">(</span> <span class="m">86</span>, <span class="m">71</span><span class="o">)</span> : <span class="m">0</span>.716036 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.701616 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.897777, <span class="nv">sd</span><span class="o">=</span><span class="m">40</span>.668495 -<span class="o">[</span>info<span class="o">]</span> <span class="m">5</span>: <span class="o">(</span><span class="m">124</span>, <span class="m">92</span><span class="o">)</span> : <span class="m">0</span>.795828 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.799467 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.919533, <span class="nv">sd</span><span class="o">=</span><span class="m">46</span>.250336 -<span class="o">[</span>info<span class="o">]</span> <span class="m">6</span>: <span class="o">(</span> <span class="m">22</span>,140<span class="o">)</span> : <span class="m">0</span>.823488 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.788265 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.904299, <span class="nv">sd</span><span class="o">=</span><span class="m">37</span>.023449 -<span class="o">[</span>info<span class="o">]</span> <span class="m">7</span>: <span class="o">(</span><span class="m">158</span>, <span class="m">94</span><span class="o">)</span> : <span class="m">0</span>.846220 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.807598 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.945632, <span class="nv">sd</span><span class="o">=</span><span class="m">57</span>.189617 -<span class="o">[</span>info<span class="o">]</span> --------------------------------------------------------------- -<span class="o">[</span>info<span class="o">]</span> Start <span class="k">for</span> <span class="m">18</span>.641792 dpi image. -<span class="o">[</span>info<span class="o">]</span> <span class="nv">ImageSize</span> <span class="o">=</span> <span class="m">20727</span><span class="o">[</span>pixel<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Extracted <span class="nv">features</span> <span class="o">=</span> <span class="m">1597</span><span class="o">[</span>pixel<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Filtered <span class="nv">features</span> <span class="o">=</span> <span class="m">415</span><span class="o">[</span>pixel<span class="o">]</span> - <span class="m">140</span>/ <span class="m">141</span>.<span class="o">[</span>info<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Done. -<span class="o">[</span>info<span class="o">]</span> Max <span class="nv">feature</span> <span class="o">=</span> <span class="m">17</span> -<span class="o">[</span>info<span class="o">]</span> <span class="m">1</span>: <span class="o">(</span> <span class="m">66</span>,105<span class="o">)</span> : <span class="m">0</span>.595532 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.553885 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.773757, <span class="nv">sd</span><span class="o">=</span><span class="m">42</span>.355804 -<span class="o">[</span>info<span class="o">]</span> <span class="m">2</span>: <span class="o">(</span><span class="m">114</span>, <span class="m">96</span><span class="o">)</span> : <span class="m">0</span>.636754 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.558845 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.877043, <span class="nv">sd</span><span class="o">=</span><span class="m">41</span>.727524 -<span class="o">[</span>info<span class="o">]</span> <span class="m">3</span>: <span class="o">(</span> <span class="m">68</span>, <span class="m">63</span><span class="o">)</span> : <span class="m">0</span>.740243 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.674251 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.907678, <span class="nv">sd</span><span class="o">=</span><span class="m">48</span>.359558 -<span class="o">[</span>info<span class="o">]</span> <span class="m">4</span>: <span class="o">(</span> <span class="m">25</span>, <span class="m">97</span><span class="o">)</span> : <span class="m">0</span>.770776 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.551998 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.915293, <span class="nv">sd</span><span class="o">=</span><span class="m">33</span>.076458 -<span class="o">[</span>info<span class="o">]</span> <span class="m">5</span>: <span class="o">(</span><span class="m">102</span>, <span class="m">62</span><span class="o">)</span> : <span class="m">0</span>.878442 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.879749 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.958104, <span class="nv">sd</span><span class="o">=</span><span class="m">59</span>.505066 -<span class="o">[</span>info<span class="o">]</span> --------------------------------------------------------------- -<span class="o">[</span>info<span class="o">]</span> Start <span class="k">for</span> <span class="m">14</span>.796000 dpi image. -<span class="o">[</span>info<span class="o">]</span> <span class="nv">ImageSize</span> <span class="o">=</span> <span class="m">13104</span><span class="o">[</span>pixel<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Extracted <span class="nv">features</span> <span class="o">=</span> <span class="m">1028</span><span class="o">[</span>pixel<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Filtered <span class="nv">features</span> <span class="o">=</span> <span class="m">266</span><span class="o">[</span>pixel<span class="o">]</span> - <span class="m">111</span>/ <span class="m">112</span>.<span class="o">[</span>info<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Done. -<span class="o">[</span>info<span class="o">]</span> Max <span class="nv">feature</span> <span class="o">=</span> <span class="m">9</span> -<span class="o">[</span>info<span class="o">]</span> <span class="m">1</span>: <span class="o">(</span> <span class="m">48</span>, <span class="m">83</span><span class="o">)</span> : <span class="m">0</span>.625048 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.567549 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.834230, <span class="nv">sd</span><span class="o">=</span><span class="m">42</span>.692223 -<span class="o">[</span>info<span class="o">]</span> <span class="m">2</span>: <span class="o">(</span> <span class="m">89</span>, <span class="m">73</span><span class="o">)</span> : <span class="m">0</span>.670262 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.553308 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.882925, <span class="nv">sd</span><span class="o">=</span><span class="m">45</span>.027554 -<span class="o">[</span>info<span class="o">]</span> <span class="m">3</span>: <span class="o">(</span> <span class="m">52</span>, <span class="m">50</span><span class="o">)</span> : <span class="m">0</span>.786427 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.743476 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.927114, <span class="nv">sd</span><span class="o">=</span><span class="m">55</span>.718193 -<span class="o">[</span>info<span class="o">]</span> --------------------------------------------------------------- -<span class="o">[</span>info<span class="o">]</span> Start <span class="k">for</span> <span class="m">11</span>.743593 dpi image. -<span class="o">[</span>info<span class="o">]</span> <span class="nv">ImageSize</span> <span class="o">=</span> <span class="m">8277</span><span class="o">[</span>pixel<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Extracted <span class="nv">features</span> <span class="o">=</span> <span class="m">679</span><span class="o">[</span>pixel<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Filtered <span class="nv">features</span> <span class="o">=</span> <span class="m">166</span><span class="o">[</span>pixel<span class="o">]</span> - <span class="m">88</span>/ <span class="m">89</span>.<span class="o">[</span>info<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Done. -<span class="o">[</span>info<span class="o">]</span> Max <span class="nv">feature</span> <span class="o">=</span> <span class="m">4</span> -<span class="o">[</span>info<span class="o">]</span> <span class="m">1</span>: <span class="o">(</span> <span class="m">60</span>, <span class="m">64</span><span class="o">)</span> : <span class="m">0</span>.633060 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.550807 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.857935, <span class="nv">sd</span><span class="o">=</span><span class="m">42</span>.695072 -<span class="o">[</span>info<span class="o">]</span> <span class="m">2</span>: <span class="o">(</span> <span class="m">26</span>, <span class="m">63</span><span class="o">)</span> : <span class="m">0</span>.702131 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.685312 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.867015, <span class="nv">sd</span><span class="o">=</span><span class="m">38</span>.862392 -<span class="o">[</span>info<span class="o">]</span> <span class="m">3</span>: <span class="o">(</span> <span class="m">40</span>, <span class="m">30</span><span class="o">)</span> : <span class="m">0</span>.833010 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.834262 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.945118, <span class="nv">sd</span><span class="o">=</span><span class="m">62</span>.075710 -<span class="o">[</span>info<span class="o">]</span> --------------------------------------------------------------- -<span class="o">[</span>info<span class="o">]</span> Start <span class="k">for</span> <span class="m">9</span>.320896 dpi image. -<span class="o">[</span>info<span class="o">]</span> <span class="nv">ImageSize</span> <span class="o">=</span> <span class="m">5254</span><span class="o">[</span>pixel<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Extracted <span class="nv">features</span> <span class="o">=</span> <span class="m">398</span><span class="o">[</span>pixel<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Filtered <span class="nv">features</span> <span class="o">=</span> <span class="m">106</span><span class="o">[</span>pixel<span class="o">]</span> - <span class="m">70</span>/ <span class="m">71</span>.<span class="o">[</span>info<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Done. -<span class="o">[</span>info<span class="o">]</span> Max <span class="nv">feature</span> <span class="o">=</span> <span class="m">4</span> -<span class="o">[</span>info<span class="o">]</span> <span class="m">1</span>: <span class="o">(</span> <span class="m">47</span>, <span class="m">48</span><span class="o">)</span> : <span class="m">0</span>.706897 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.668202 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.875970, <span class="nv">sd</span><span class="o">=</span><span class="m">47</span>.628330 -<span class="o">[</span>info<span class="o">]</span> --------------------------------------------------------------- -<span class="o">[</span>info<span class="o">]</span> Start <span class="k">for</span> <span class="m">7</span>.398000 dpi image. -<span class="o">[</span>info<span class="o">]</span> <span class="nv">ImageSize</span> <span class="o">=</span> <span class="m">3248</span><span class="o">[</span>pixel<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Extracted <span class="nv">features</span> <span class="o">=</span> <span class="m">248</span><span class="o">[</span>pixel<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Filtered <span class="nv">features</span> <span class="o">=</span> <span class="m">65</span><span class="o">[</span>pixel<span class="o">]</span> - <span class="m">55</span>/ <span class="m">56</span>.<span class="o">[</span>info<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Done. -<span class="o">[</span>info<span class="o">]</span> Max <span class="nv">feature</span> <span class="o">=</span> <span class="m">1</span> -<span class="o">[</span>info<span class="o">]</span> <span class="m">1</span>: <span class="o">(</span> <span class="m">34</span>, <span class="m">33</span><span class="o">)</span> : <span class="m">0</span>.794624 <span class="nv">min</span><span class="o">=</span><span class="m">0</span>.780241 <span class="nv">max</span><span class="o">=</span><span class="m">0</span>.925466, <span class="nv">sd</span><span class="o">=</span><span class="m">59</span>.612782 -<span class="o">[</span>info<span class="o">]</span> --------------------------------------------------------------- -<span class="o">[</span>info<span class="o">]</span> Start <span class="k">for</span> <span class="m">5</span>.871797 dpi image. -<span class="o">[</span>info<span class="o">]</span> <span class="nv">ImageSize</span> <span class="o">=</span> <span class="m">2024</span><span class="o">[</span>pixel<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Extracted <span class="nv">features</span> <span class="o">=</span> <span class="m">161</span><span class="o">[</span>pixel<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Filtered <span class="nv">features</span> <span class="o">=</span> <span class="m">41</span><span class="o">[</span>pixel<span class="o">]</span> - <span class="m">43</span>/ <span class="m">44</span>.<span class="o">[</span>info<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Done. -<span class="o">[</span>info<span class="o">]</span> Max <span class="nv">feature</span> <span class="o">=</span> <span class="m">1</span> -<span class="o">[</span>info<span class="o">]</span> --------------------------------------------------------------- -<span class="o">[</span>info<span class="o">]</span> Start <span class="k">for</span> <span class="m">4</span>.660448 dpi image. -<span class="o">[</span>info<span class="o">]</span> <span class="nv">ImageSize</span> <span class="o">=</span> <span class="m">1295</span><span class="o">[</span>pixel<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Extracted <span class="nv">features</span> <span class="o">=</span> <span class="m">108</span><span class="o">[</span>pixel<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Filtered <span class="nv">features</span> <span class="o">=</span> <span class="m">26</span><span class="o">[</span>pixel<span class="o">]</span> - <span class="m">34</span>/ <span class="m">35</span>.<span class="o">[</span>info<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Done. -<span class="o">[</span>info<span class="o">]</span> Max <span class="nv">feature</span> <span class="o">=</span> <span class="m">1</span> -<span class="o">[</span>info<span class="o">]</span> --------------------------------------------------------------- -<span class="o">[</span>info<span class="o">]</span> Start <span class="k">for</span> <span class="m">3</span>.699000 dpi image. -<span class="o">[</span>info<span class="o">]</span> <span class="nv">ImageSize</span> <span class="o">=</span> <span class="m">812</span><span class="o">[</span>pixel<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Extracted <span class="nv">features</span> <span class="o">=</span> <span class="m">65</span><span class="o">[</span>pixel<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Filtered <span class="nv">features</span> <span class="o">=</span> <span class="m">17</span><span class="o">[</span>pixel<span class="o">]</span> - <span class="m">27</span>/ <span class="m">28</span>.<span class="o">[</span>info<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Done. -<span class="o">[</span>info<span class="o">]</span> Max <span class="nv">feature</span> <span class="o">=</span> <span class="m">0</span> -<span class="o">[</span>info<span class="o">]</span> --------------------------------------------------------------- -<span class="o">[</span>info<span class="o">]</span> Done. -<span class="o">[</span>info<span class="o">]</span> Saving FeatureSet... -<span class="o">[</span>info<span class="o">]</span> Done. -<span class="o">[</span>info<span class="o">]</span> Generating FeatureSet3... -<span class="o">[</span>info<span class="o">]</span> <span class="o">(</span><span class="m">568</span>, <span class="m">545</span><span class="o">)</span> <span class="m">72</span>.000000<span class="o">[</span>dpi<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Freak features - <span class="m">405</span><span class="o">[</span>info<span class="o">]</span> <span class="o">=========</span> <span class="nv">405</span> <span class="o">===========</span> -<span class="o">[</span>info<span class="o">]</span> <span class="o">(</span><span class="m">467</span>, <span class="m">448</span><span class="o">)</span> <span class="m">59</span>.184002<span class="o">[</span>dpi<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Freak features - <span class="m">401</span><span class="o">[</span>info<span class="o">]</span> <span class="o">=========</span> <span class="nv">401</span> <span class="o">===========</span> -<span class="o">[</span>info<span class="o">]</span> <span class="o">(</span><span class="m">371</span>, <span class="m">356</span><span class="o">)</span> <span class="m">46</span>.974373<span class="o">[</span>dpi<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Freak features - <span class="m">385</span><span class="o">[</span>info<span class="o">]</span> <span class="o">=========</span> <span class="nv">385</span> <span class="o">===========</span> -<span class="o">[</span>info<span class="o">]</span> <span class="o">(</span><span class="m">294</span>, <span class="m">282</span><span class="o">)</span> <span class="m">37</span>.283585<span class="o">[</span>dpi<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Freak features - <span class="m">486</span><span class="o">[</span>info<span class="o">]</span> <span class="o">=========</span> <span class="nv">486</span> <span class="o">===========</span> -<span class="o">[</span>info<span class="o">]</span> <span class="o">(</span><span class="m">233</span>, <span class="m">224</span><span class="o">)</span> <span class="m">29</span>.592001<span class="o">[</span>dpi<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Freak features - <span class="m">362</span><span class="o">[</span>info<span class="o">]</span> <span class="o">=========</span> <span class="nv">362</span> <span class="o">===========</span> -<span class="o">[</span>info<span class="o">]</span> <span class="o">(</span><span class="m">185</span>, <span class="m">178</span><span class="o">)</span> <span class="m">23</span>.487186<span class="o">[</span>dpi<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Freak features - <span class="m">232</span><span class="o">[</span>info<span class="o">]</span> <span class="o">=========</span> <span class="nv">232</span> <span class="o">===========</span> -<span class="o">[</span>info<span class="o">]</span> <span class="o">(</span><span class="m">147</span>, <span class="m">141</span><span class="o">)</span> <span class="m">18</span>.641792<span class="o">[</span>dpi<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Freak features - <span class="m">148</span><span class="o">[</span>info<span class="o">]</span> <span class="o">=========</span> <span class="nv">148</span> <span class="o">===========</span> -<span class="o">[</span>info<span class="o">]</span> <span class="o">(</span><span class="m">117</span>, <span class="m">112</span><span class="o">)</span> <span class="m">14</span>.796000<span class="o">[</span>dpi<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Freak features - <span class="m">113</span><span class="o">[</span>info<span class="o">]</span> <span class="o">=========</span> <span class="nv">113</span> <span class="o">===========</span> -<span class="o">[</span>info<span class="o">]</span> <span class="o">(</span><span class="m">93</span>, <span class="m">89</span><span class="o">)</span> <span class="m">11</span>.743593<span class="o">[</span>dpi<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Freak features - <span class="m">81</span><span class="o">[</span>info<span class="o">]</span> <span class="o">=========</span> <span class="nv">81</span> <span class="o">===========</span> -<span class="o">[</span>info<span class="o">]</span> <span class="o">(</span><span class="m">74</span>, <span class="m">71</span><span class="o">)</span> <span class="m">9</span>.320896<span class="o">[</span>dpi<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Freak features - <span class="m">51</span><span class="o">[</span>info<span class="o">]</span> <span class="o">=========</span> <span class="nv">51</span> <span class="o">===========</span> -<span class="o">[</span>info<span class="o">]</span> <span class="o">(</span><span class="m">58</span>, <span class="m">56</span><span class="o">)</span> <span class="m">7</span>.398000<span class="o">[</span>dpi<span class="o">]</span> -<span class="o">[</span>info<span class="o">]</span> Freak features - <span class="m">36</span><span class="o">[</span>info<span class="o">]</span> <span class="o">=========</span> <span class="nv">36</span> <span class="o">===========</span> + +... + <span class="o">[</span>info<span class="o">]</span> <span class="o">(</span><span class="m">46</span>, <span class="m">44</span><span class="o">)</span> <span class="m">5</span>.871797<span class="o">[</span>dpi<span class="o">]</span> <span class="o">[</span>info<span class="o">]</span> Freak features - <span class="m">23</span><span class="o">[</span>info<span class="o">]</span> <span class="o">=========</span> <span class="nv">23</span> <span class="o">===========</span> <span class="o">[</span>info<span class="o">]</span> <span class="o">(</span><span class="m">37</span>, <span class="m">35</span><span class="o">)</span> <span class="m">4</span>.660448<span class="o">[</span>dpi<span class="o">]</span> diff --git a/posts/index.html b/posts/index.html index 1e7a78f..299404f 100644 --- a/posts/index.html +++ b/posts/index.html @@ -1 +1 @@ -<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"/><meta name="og:site_name" content="Navan Chauhan"/><link rel="canonical" href="https://navanchauhan.github.io/posts"/><meta name="twitter:url" content="https://navanchauhan.github.io/posts"/><meta name="og:url" content="https://navanchauhan.github.io/posts"/><title>Posts | Navan Chauhan</title><meta name="twitter:title" content="Posts | Navan Chauhan"/><meta name="og:title" content="Posts | Navan Chauhan"/><meta name="description" content="Welcome to my personal fragment of the internet. Majority of the posts should be complete."/><meta name="twitter:description" content="Welcome to my personal fragment of the internet. Majority of the posts should be complete."/><meta name="og:description" content="Welcome to my personal fragment of the internet. Majority of the posts should be complete."/><meta name="twitter:card" content="summary"/><link rel="stylesheet" href="/styles.css" type="text/css"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><link rel="shortcut icon" href="/images/favicon.png" type="image/png"/><link rel="alternate" href="/feed.rss" type="application/rss+xml" title="Subscribe to Navan Chauhan"/><meta name="twitter:image" content="https://navanchauhan.github.io/images/logo.png"/><meta name="og:image" content="https://navanchauhan.github.io/images/logo.png"/></head><head><script>var _paq=window._paq=window._paq||[];_paq.push(['trackPageView']),_paq.push(['enableLinkTracking']),function(){var a='https://navanspi.duckdns.org:6969/analytics/';_paq.push(['setTrackerUrl',a+'matomo.php']),_paq.push(['setSiteId','2']);var e=document,t=e.createElement('script'),p=e.getElementsByTagName('script')[0];t.type='text/javascript',t.async=!0,t.src=a+'matomo.js',p.parentNode.insertBefore(t,p)}();</script></head><head><script src="https://www.googletagmanager.com/gtag/js?id=UA-108635191-1v"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-108635191-1');</script></head><body><header><div class="wrapper"><a class="site-name" href="/">Navan Chauhan</a><nav><ul><li><a href="/about">About Me</a></li><li><a class="selected" href="/posts">Posts</a></li><li><a href="/publications">Publications</a></li><li><a href="/assets/résumé.pdf">Résumé</a></li><li><a href="https://navanchauhan.github.io/repo">Repo</a></li></ul></nav></div></header><div class="wrapper"><h1>Posts</h1><p>Tips, tricks and tutorials which I think might be useful.</p><ul class="item-list"><li><article><h1><a href="/posts/2010-01-24-experiments">Experiments</a></h1><ul class="tag-list"><li><a href="/tags/experiment">Experiment</a></li></ul><span>🕑 1 minute read. January 24, 2010</span><p>Just a markdown file for all experiments related to the website</p></article></li><li><article><h1><a href="/posts/2019-05-05-Custom-Snowboard-Anemone-Theme">Creating your own custom theme for Snowboard or Anemone</a></h1><ul class="tag-list"><li><a href="/tags/tutorial">Tutorial</a></li><li><a href="/tags/jailbreak">Jailbreak</a></li><li><a href="/tags/designing">Designing</a></li><li><a href="/tags/snowboard">Snowboard</a></li><li><a href="/tags/anemone">Anemone</a></li></ul><span>🕑 5 minute read. May 5, 2019</span><p>Tutorial on creating your own custom theme for Snowboard or Anemone</p></article></li><li><article><h1><a href="/posts/2019-12-04-Google-Teachable-Machines">Image Classifier With Teachable Machines</a></h1><ul class="tag-list"><li><a href="/tags/tutorial">Tutorial</a></li></ul><span>🕑 2 minute read. December 4, 2019</span><p>Tutorial on creating a custom image classifier quickly with Google Teachanle Machines</p></article></li><li><article><h1><a href="/posts/2019-12-08-Image-Classifier-Tensorflow">Creating a Custom Image Classifier using Tensorflow 2.x and Keras for Detecting Malaria</a></h1><ul class="tag-list"><li><a href="/tags/tutorial">Tutorial</a></li><li><a href="/tags/tensorflow">Tensorflow</a></li><li><a href="/tags/colab">Colab</a></li></ul><span>🕑 4 minute read. December 8, 2019</span><p>Tutorial on creating an image classifier model using TensorFlow which detects malaria</p></article></li><li><article><h1><a href="/posts/2019-12-08-Splitting-Zips">Splitting ZIPs into Multiple Parts</a></h1><ul class="tag-list"><li><a href="/tags/codesnippet">Code-Snippet</a></li><li><a href="/tags/tutorial">Tutorial</a></li></ul><span>🕑 1 minute read. December 8, 2019</span><p>Short code snippet for splitting zips.</p></article></li><li><article><h1><a href="/posts/2019-12-10-TensorFlow-Model-Prediction">Making Predictions using Image Classifier (TensorFlow)</a></h1><ul class="tag-list"><li><a href="/tags/tutorial">Tutorial</a></li><li><a href="/tags/tensorflow">Tensorflow</a></li><li><a href="/tags/codesnippet">Code-Snippet</a></li></ul><span>🕑 1 minute read. December 10, 2019</span><p>Making predictions for image classification models built using TensorFlow</p></article></li><li><article><h1><a href="/posts/2019-12-16-TensorFlow-Polynomial-Regression">Polynomial Regression Using TensorFlow</a></h1><ul class="tag-list"><li><a href="/tags/tutorial">Tutorial</a></li><li><a href="/tags/tensorflow">Tensorflow</a></li><li><a href="/tags/colab">Colab</a></li></ul><span>🕑 17 minute read. December 16, 2019</span><p>Polynomial regression using TensorFlow</p></article></li><li><article><h1><a href="/posts/2019-12-22-Fake-News-Detector">Building a Fake News Detector with Turicreate</a></h1><ul class="tag-list"><li><a href="/tags/tutorial">Tutorial</a></li><li><a href="/tags/colab">Colab</a></li><li><a href="/tags/swiftui">SwiftUI</a></li><li><a href="/tags/turicreate">Turicreate</a></li></ul><span>🕑 7 minute read. December 22, 2019</span><p>In this tutorial we will build a fake news detecting app from scratch, using Turicreate for the machine learning model and SwiftUI for building the app</p></article></li><li><article><h1><a href="/posts/2020-01-14-Converting-between-PIL-NumPy">Converting between image and NumPy array</a></h1><ul class="tag-list"><li><a href="/tags/codesnippet">Code-Snippet</a></li><li><a href="/tags/tutorial">Tutorial</a></li></ul><span>🕑 1 minute read. January 14, 2020</span><p>Short code snippet for converting between PIL image and NumPy arrays.</p></article></li><li><article><h1><a href="/posts/2020-01-15-Setting-up-Kaggle-to-use-with-Colab">Setting up Kaggle to use with Google Colab</a></h1><ul class="tag-list"><li><a href="/tags/tutorial">Tutorial</a></li><li><a href="/tags/colab">Colab</a></li><li><a href="/tags/turicreate">Turicreate</a></li><li><a href="/tags/kaggle">Kaggle</a></li></ul><span>🕑 1 minute read. January 15, 2020</span><p>Tutorial on setting up kaggle, to use with Google Colab</p></article></li><li><article><h1><a href="/posts/2020-01-16-Image-Classifier-Using-Turicreate">Creating a Custom Image Classifier using Turicreate to detect Smoke and Fire</a></h1><ul class="tag-list"><li><a href="/tags/tutorial">Tutorial</a></li><li><a href="/tags/colab">Colab</a></li><li><a href="/tags/turicreate">Turicreate</a></li></ul><span>🕑 6 minute read. January 16, 2020</span><p>Tutorial on creating a custom Image Classifier using Turicreate and a dataset from Kaggle</p></article></li><li><article><h1><a href="/posts/2020-01-19-Connect-To-Bluetooth-Devices-Linux-Terminal">How to setup Bluetooth on a Raspberry Pi</a></h1><ul class="tag-list"><li><a href="/tags/codesnippet">Code-Snippet</a></li><li><a href="/tags/tutorial">tutorial</a></li><li><a href="/tags/raspberrypi">Raspberry-Pi</a></li><li><a href="/tags/linux">Linux</a></li></ul><span>🕑 1 minute read. January 19, 2020</span><p>Connecting to Bluetooth Devices using terminal, tested on Raspberry Pi Zero W</p></article></li><li><article><h1><a href="/posts/2020-03-03-Playing-With-Android-TV">Tinkering with an Android TV</a></h1><ul class="tag-list"><li><a href="/tags/androidtv">Android-TV</a></li><li><a href="/tags/android">Android</a></li></ul><span>🕑 1 minute read. March 3, 2020</span><p>Tinkering with an Android TV</p></article></li><li><article><h1><a href="/posts/2020-03-08-Making-Vaporwave-Track">Making My First Vaporwave Track (Remix)</a></h1><ul class="tag-list"><li><a href="/tags/vaporwave">Vaporwave</a></li><li><a href="/tags/music">Music</a></li></ul><span>🕑 2 minute read. March 8, 2020</span><p>I made my first vaporwave remix</p></article></li><li><article><h1><a href="/posts/2020-04-13-Fixing-X11-Error-AmberTools-macOS">Fixing X11 Error on macOS Catalina for AmberTools 18/19</a></h1><ul class="tag-list"><li><a href="/tags/moleculardynamics">Molecular-Dynamics</a></li><li><a href="/tags/macos">macOS</a></li></ul><span>🕑 2 minute read. April 13, 2020</span><p>Fixing Could not find the X11 libraries; you may need to edit config.h, AmberTools macOS Catalina</p></article></li><li><article><h1><a href="/posts/2020-05-31-compiling-open-babel-on-ios">Compiling Open Babel on iOS</a></h1><ul class="tag-list"><li><a href="/tags/ios">iOS</a></li><li><a href="/tags/jailbreak">Jailbreak</a></li><li><a href="/tags/cheminformatics">Cheminformatics</a></li><li><a href="/tags/openbabel">Open-Babel</a></li></ul><span>🕑 5 minute read. May 31, 2020</span><p>Compiling Open Babel on iOS</p></article></li><li><article><h1><a href="/posts/2020-06-01-Speeding-Up-Molecular-Docking-Workflow-AutoDock-Vina-and-PyMOL">Workflow for Lightning Fast Molecular Docking Part One</a></h1><ul class="tag-list"><li><a href="/tags/codesnippet">Code-Snippet</a></li><li><a href="/tags/moleculardocking">Molecular-Docking</a></li><li><a href="/tags/cheminformatics">Cheminformatics</a></li><li><a href="/tags/openbabel">Open-Babel</a></li><li><a href="/tags/autodock-vina">AutoDock Vina</a></li></ul><span>🕑 2 minute read. June 1, 2020</span><p>This is my workflow for lightning fast molecular docking.</p></article></li><li><article><h1><a href="/posts/2020-06-02-Compiling-AutoDock-Vina-on-iOS">Compiling AutoDock Vina on iOS</a></h1><ul class="tag-list"><li><a href="/tags/ios">iOS</a></li><li><a href="/tags/jailbreak">Jailbreak</a></li><li><a href="/tags/cheminformatics">Cheminformatics</a></li><li><a href="/tags/autodock-vina">AutoDock Vina</a></li><li><a href="/tags/moleculardocking">Molecular-Docking</a></li></ul><span>🕑 3 minute read. June 2, 2020</span><p>Compiling AutoDock Vina on iOS</p></article></li><li><article><h1><a href="/posts/2020-07-01-Install-rdkit-colab">Installing RDKit on Google Colab</a></h1><ul class="tag-list"><li><a href="/tags/tutorial">Tutorial</a></li><li><a href="/tags/codesnippet">Code-Snippet</a></li><li><a href="/tags/colab">Colab</a></li></ul><span>🕑 2 minute read. July 1, 2020</span><p>Install RDKit on Google Colab with one code snippet.</p></article></li><li><article><h1><a href="/posts/2020-08-01-Natural-Feature-Tracking-ARJS">Introduction to AR.js and Natural Feature Tracking</a></h1><ul class="tag-list"><li><a href="/tags/tutorial">Tutorial</a></li><li><a href="/tags/arjs">AR.js</a></li><li><a href="/tags/javascript">JavaScript</a></li><li><a href="/tags/augmentedreality">Augmented-Reality</a></li></ul><span>🕑 20 minute read. August 1, 2020</span><p>An introduction to AR.js and NFT</p></article></li><li><article><h1><a href="/posts/hello-world">Hello World</a></h1><ul class="tag-list"><li><a href="/tags/helloworld">hello-world</a></li></ul><span>🕑 1 minute read. April 16, 2019</span><p>My first post.</p></article></li></ul></div><footer><p>Made with ❤️ using <a href="https://github.com/johnsundell/publish">Publish</a></p><p><a href="/feed.rss">RSS feed</a></p></footer></body></html>
\ No newline at end of file +<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"/><meta name="og:site_name" content="Navan Chauhan"/><link rel="canonical" href="https://navanchauhan.github.io/posts"/><meta name="twitter:url" content="https://navanchauhan.github.io/posts"/><meta name="og:url" content="https://navanchauhan.github.io/posts"/><title>Posts | Navan Chauhan</title><meta name="twitter:title" content="Posts | Navan Chauhan"/><meta name="og:title" content="Posts | Navan Chauhan"/><meta name="description" content="Welcome to my personal fragment of the internet. Majority of the posts should be complete."/><meta name="twitter:description" content="Welcome to my personal fragment of the internet. Majority of the posts should be complete."/><meta name="og:description" content="Welcome to my personal fragment of the internet. Majority of the posts should be complete."/><meta name="twitter:card" content="summary"/><link rel="stylesheet" href="/styles.css" type="text/css"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><link rel="shortcut icon" href="/images/favicon.png" type="image/png"/><link rel="alternate" href="/feed.rss" type="application/rss+xml" title="Subscribe to Navan Chauhan"/><meta name="twitter:image" content="https://navanchauhan.github.io/images/logo.png"/><meta name="og:image" content="https://navanchauhan.github.io/images/logo.png"/></head><head><script>var _paq=window._paq=window._paq||[];_paq.push(['trackPageView']),_paq.push(['enableLinkTracking']),function(){var a='https://navanspi.duckdns.org:6969/analytics/';_paq.push(['setTrackerUrl',a+'matomo.php']),_paq.push(['setSiteId','2']);var e=document,t=e.createElement('script'),p=e.getElementsByTagName('script')[0];t.type='text/javascript',t.async=!0,t.src=a+'matomo.js',p.parentNode.insertBefore(t,p)}();</script></head><head><script src="https://www.googletagmanager.com/gtag/js?id=UA-108635191-1v"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-108635191-1');</script></head><body><header><div class="wrapper"><a class="site-name" href="/">Navan Chauhan</a><nav><ul><li><a href="/about">About Me</a></li><li><a class="selected" href="/posts">Posts</a></li><li><a href="/publications">Publications</a></li><li><a href="/assets/résumé.pdf">Résumé</a></li><li><a href="https://navanchauhan.github.io/repo">Repo</a></li></ul></nav></div></header><div class="wrapper"><h1>Posts</h1><p>Tips, tricks and tutorials which I think might be useful.</p><ul class="item-list"><li><article><h1><a href="/posts/2010-01-24-experiments">Experiments</a></h1><ul class="tag-list"><li><a href="/tags/experiment">Experiment</a></li></ul><span>🕑 1 minute read. January 24, 2010</span><p>Just a markdown file for all experiments related to the website</p></article></li><li><article><h1><a href="/posts/2019-05-05-Custom-Snowboard-Anemone-Theme">Creating your own custom theme for Snowboard or Anemone</a></h1><ul class="tag-list"><li><a href="/tags/tutorial">Tutorial</a></li><li><a href="/tags/jailbreak">Jailbreak</a></li><li><a href="/tags/designing">Designing</a></li><li><a href="/tags/snowboard">Snowboard</a></li><li><a href="/tags/anemone">Anemone</a></li></ul><span>🕑 5 minute read. May 5, 2019</span><p>Tutorial on creating your own custom theme for Snowboard or Anemone</p></article></li><li><article><h1><a href="/posts/2019-12-04-Google-Teachable-Machines">Image Classifier With Teachable Machines</a></h1><ul class="tag-list"><li><a href="/tags/tutorial">Tutorial</a></li></ul><span>🕑 2 minute read. December 4, 2019</span><p>Tutorial on creating a custom image classifier quickly with Google Teachable Machines</p></article></li><li><article><h1><a href="/posts/2019-12-08-Image-Classifier-Tensorflow">Creating a Custom Image Classifier using Tensorflow 2.x and Keras for Detecting Malaria</a></h1><ul class="tag-list"><li><a href="/tags/tutorial">Tutorial</a></li><li><a href="/tags/tensorflow">Tensorflow</a></li><li><a href="/tags/colab">Colab</a></li></ul><span>🕑 4 minute read. December 8, 2019</span><p>Tutorial on creating an image classifier model using TensorFlow which detects malaria</p></article></li><li><article><h1><a href="/posts/2019-12-08-Splitting-Zips">Splitting ZIPs into Multiple Parts</a></h1><ul class="tag-list"><li><a href="/tags/codesnippet">Code-Snippet</a></li><li><a href="/tags/tutorial">Tutorial</a></li></ul><span>🕑 1 minute read. December 8, 2019</span><p>Short code snippet for splitting zips.</p></article></li><li><article><h1><a href="/posts/2019-12-10-TensorFlow-Model-Prediction">Making Predictions using Image Classifier (TensorFlow)</a></h1><ul class="tag-list"><li><a href="/tags/tutorial">Tutorial</a></li><li><a href="/tags/tensorflow">Tensorflow</a></li><li><a href="/tags/codesnippet">Code-Snippet</a></li></ul><span>🕑 1 minute read. December 10, 2019</span><p>Making predictions for image classification models built using TensorFlow</p></article></li><li><article><h1><a href="/posts/2019-12-16-TensorFlow-Polynomial-Regression">Polynomial Regression Using TensorFlow</a></h1><ul class="tag-list"><li><a href="/tags/tutorial">Tutorial</a></li><li><a href="/tags/tensorflow">Tensorflow</a></li><li><a href="/tags/colab">Colab</a></li></ul><span>🕑 17 minute read. December 16, 2019</span><p>Polynomial regression using TensorFlow</p></article></li><li><article><h1><a href="/posts/2019-12-22-Fake-News-Detector">Building a Fake News Detector with Turicreate</a></h1><ul class="tag-list"><li><a href="/tags/tutorial">Tutorial</a></li><li><a href="/tags/colab">Colab</a></li><li><a href="/tags/swiftui">SwiftUI</a></li><li><a href="/tags/turicreate">Turicreate</a></li></ul><span>🕑 7 minute read. December 22, 2019</span><p>In this tutorial we will build a fake news detecting app from scratch, using Turicreate for the machine learning model and SwiftUI for building the app</p></article></li><li><article><h1><a href="/posts/2020-01-14-Converting-between-PIL-NumPy">Converting between image and NumPy array</a></h1><ul class="tag-list"><li><a href="/tags/codesnippet">Code-Snippet</a></li><li><a href="/tags/tutorial">Tutorial</a></li></ul><span>🕑 1 minute read. January 14, 2020</span><p>Short code snippet for converting between PIL image and NumPy arrays.</p></article></li><li><article><h1><a href="/posts/2020-01-15-Setting-up-Kaggle-to-use-with-Colab">Setting up Kaggle to use with Google Colab</a></h1><ul class="tag-list"><li><a href="/tags/tutorial">Tutorial</a></li><li><a href="/tags/colab">Colab</a></li><li><a href="/tags/turicreate">Turicreate</a></li><li><a href="/tags/kaggle">Kaggle</a></li></ul><span>🕑 1 minute read. January 15, 2020</span><p>Tutorial on setting up kaggle, to use with Google Colab</p></article></li><li><article><h1><a href="/posts/2020-01-16-Image-Classifier-Using-Turicreate">Creating a Custom Image Classifier using Turicreate to detect Smoke and Fire</a></h1><ul class="tag-list"><li><a href="/tags/tutorial">Tutorial</a></li><li><a href="/tags/colab">Colab</a></li><li><a href="/tags/turicreate">Turicreate</a></li></ul><span>🕑 6 minute read. January 16, 2020</span><p>Tutorial on creating a custom Image Classifier using Turicreate and a dataset from Kaggle</p></article></li><li><article><h1><a href="/posts/2020-01-19-Connect-To-Bluetooth-Devices-Linux-Terminal">How to setup Bluetooth on a Raspberry Pi</a></h1><ul class="tag-list"><li><a href="/tags/codesnippet">Code-Snippet</a></li><li><a href="/tags/tutorial">tutorial</a></li><li><a href="/tags/raspberrypi">Raspberry-Pi</a></li><li><a href="/tags/linux">Linux</a></li></ul><span>🕑 1 minute read. January 19, 2020</span><p>Connecting to Bluetooth Devices using terminal, tested on Raspberry Pi Zero W</p></article></li><li><article><h1><a href="/posts/2020-03-03-Playing-With-Android-TV">Tinkering with an Android TV</a></h1><ul class="tag-list"><li><a href="/tags/androidtv">Android-TV</a></li><li><a href="/tags/android">Android</a></li></ul><span>🕑 1 minute read. March 3, 2020</span><p>Tinkering with an Android TV</p></article></li><li><article><h1><a href="/posts/2020-03-08-Making-Vaporwave-Track">Making My First Vaporwave Track (Remix)</a></h1><ul class="tag-list"><li><a href="/tags/vaporwave">Vaporwave</a></li><li><a href="/tags/music">Music</a></li></ul><span>🕑 2 minute read. March 8, 2020</span><p>I made my first vaporwave remix</p></article></li><li><article><h1><a href="/posts/2020-04-13-Fixing-X11-Error-AmberTools-macOS">Fixing X11 Error on macOS Catalina for AmberTools 18/19</a></h1><ul class="tag-list"><li><a href="/tags/moleculardynamics">Molecular-Dynamics</a></li><li><a href="/tags/macos">macOS</a></li></ul><span>🕑 2 minute read. April 13, 2020</span><p>Fixing Could not find the X11 libraries; you may need to edit config.h, AmberTools macOS Catalina</p></article></li><li><article><h1><a href="/posts/2020-05-31-compiling-open-babel-on-ios">Compiling Open Babel on iOS</a></h1><ul class="tag-list"><li><a href="/tags/ios">iOS</a></li><li><a href="/tags/jailbreak">Jailbreak</a></li><li><a href="/tags/cheminformatics">Cheminformatics</a></li><li><a href="/tags/openbabel">Open-Babel</a></li></ul><span>🕑 5 minute read. May 31, 2020</span><p>Compiling Open Babel on iOS</p></article></li><li><article><h1><a href="/posts/2020-06-01-Speeding-Up-Molecular-Docking-Workflow-AutoDock-Vina-and-PyMOL">Workflow for Lightning Fast Molecular Docking Part One</a></h1><ul class="tag-list"><li><a href="/tags/codesnippet">Code-Snippet</a></li><li><a href="/tags/moleculardocking">Molecular-Docking</a></li><li><a href="/tags/cheminformatics">Cheminformatics</a></li><li><a href="/tags/openbabel">Open-Babel</a></li><li><a href="/tags/autodock-vina">AutoDock Vina</a></li></ul><span>🕑 2 minute read. June 1, 2020</span><p>This is my workflow for lightning fast molecular docking.</p></article></li><li><article><h1><a href="/posts/2020-06-02-Compiling-AutoDock-Vina-on-iOS">Compiling AutoDock Vina on iOS</a></h1><ul class="tag-list"><li><a href="/tags/ios">iOS</a></li><li><a href="/tags/jailbreak">Jailbreak</a></li><li><a href="/tags/cheminformatics">Cheminformatics</a></li><li><a href="/tags/autodock-vina">AutoDock Vina</a></li><li><a href="/tags/moleculardocking">Molecular-Docking</a></li></ul><span>🕑 3 minute read. June 2, 2020</span><p>Compiling AutoDock Vina on iOS</p></article></li><li><article><h1><a href="/posts/2020-07-01-Install-rdkit-colab">Installing RDKit on Google Colab</a></h1><ul class="tag-list"><li><a href="/tags/tutorial">Tutorial</a></li><li><a href="/tags/codesnippet">Code-Snippet</a></li><li><a href="/tags/colab">Colab</a></li></ul><span>🕑 2 minute read. July 1, 2020</span><p>Install RDKit on Google Colab with one code snippet.</p></article></li><li><article><h1><a href="/posts/2020-08-01-Natural-Feature-Tracking-ARJS">Introduction to AR.js and Natural Feature Tracking</a></h1><ul class="tag-list"><li><a href="/tags/tutorial">Tutorial</a></li><li><a href="/tags/arjs">AR.js</a></li><li><a href="/tags/javascript">JavaScript</a></li><li><a href="/tags/augmentedreality">Augmented-Reality</a></li></ul><span>🕑 7 minute read. August 1, 2020</span><p>An introduction to AR.js and NFT</p></article></li><li><article><h1><a href="/posts/hello-world">Hello World</a></h1><ul class="tag-list"><li><a href="/tags/helloworld">hello-world</a></li></ul><span>🕑 1 minute read. April 16, 2019</span><p>My first post.</p></article></li></ul></div><footer><p>Made with ❤️ using <a href="https://github.com/johnsundell/publish">Publish</a></p><p><a href="/feed.rss">RSS feed</a></p></footer></body></html>
\ No newline at end of file |