Found 298 repositories(showing 30)
ManojKumarPatnaik
A list of practical projects that anyone can solve in any programming language (See solutions). These projects are divided into multiple categories, and each category has its own folder. To get started, simply fork this repo. CONTRIBUTING See ways of contributing to this repo. You can contribute solutions (will be published in this repo) to existing problems, add new projects, or remove existing ones. Make sure you follow all instructions properly. Solutions You can find implementations of these projects in many other languages by other users in this repo. Credits Problems are motivated by the ones shared at: Martyr2’s Mega Project List Rosetta Code Table of Contents Numbers Classic Algorithms Graph Data Structures Text Networking Classes Threading Web Files Databases Graphics and Multimedia Security Numbers Find PI to the Nth Digit - Enter a number and have the program generate PI up to that many decimal places. Keep a limit to how far the program will go. Find e to the Nth Digit - Just like the previous problem, but with e instead of PI. Enter a number and have the program generate e up to that many decimal places. Keep a limit to how far the program will go. Fibonacci Sequence - Enter a number and have the program generate the Fibonacci sequence to that number or to the Nth number. Prime Factorization - Have the user enter a number and find all Prime Factors (if there are any) and display them. Next Prime Number - Have the program find prime numbers until the user chooses to stop asking for the next one. Find Cost of Tile to Cover W x H Floor - Calculate the total cost of the tile it would take to cover a floor plan of width and height, using a cost entered by the user. Mortgage Calculator - Calculate the monthly payments of a fixed-term mortgage over given Nth terms at a given interest rate. Also, figure out how long it will take the user to pay back the loan. For added complexity, add an option for users to select the compounding interval (Monthly, Weekly, Daily, Continually). Change Return Program - The user enters a cost and then the amount of money given. The program will figure out the change and the number of quarters, dimes, nickels, pennies needed for the change. Binary to Decimal and Back Converter - Develop a converter to convert a decimal number to binary or a binary number to its decimal equivalent. Calculator - A simple calculator to do basic operators. Make it a scientific calculator for added complexity. Unit Converter (temp, currency, volume, mass, and more) - Converts various units between one another. The user enters the type of unit being entered, the type of unit they want to convert to, and then the value. The program will then make the conversion. Alarm Clock - A simple clock where it plays a sound after X number of minutes/seconds or at a particular time. Distance Between Two Cities - Calculates the distance between two cities and allows the user to specify a unit of distance. This program may require finding coordinates for the cities like latitude and longitude. Credit Card Validator - Takes in a credit card number from a common credit card vendor (Visa, MasterCard, American Express, Discoverer) and validates it to make sure that it is a valid number (look into how credit cards use a checksum). Tax Calculator - Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax. Factorial Finder - The Factorial of a positive integer, n, is defined as the product of the sequence n, n-1, n-2, ...1, and the factorial of zero, 0, is defined as being 1. Solve this using both loops and recursion. Complex Number Algebra - Show addition, multiplication, negation, and inversion of complex numbers in separate functions. (Subtraction and division operations can be made with pairs of these operations.) Print the results for each operation tested. Happy Numbers - A happy number is defined by the following process. Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers. Display an example of your output here. Find the first 8 happy numbers. Number Names - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type if that's less). Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers). Coin Flip Simulation - Write some code that simulates flipping a single coin however many times the user decides. The code should record the outcomes and count the number of tails and heads. Limit Calculator - Ask the user to enter f(x) and the limit value, then return the value of the limit statement Optional: Make the calculator capable of supporting infinite limits. Fast Exponentiation - Ask the user to enter 2 integers a and b and output a^b (i.e. pow(a,b)) in O(LG n) time complexity. Classic Algorithms Collatz Conjecture - Start with a number n > 1. Find the number of steps it takes to reach one using the following process: If n is even, divide it by 2. If n is odd, multiply it by 3 and add 1. Sorting - Implement two types of sorting algorithms: Merge sort and bubble sort. Closest pair problem - The closest pair of points problem or closest pair problem is a problem of computational geometry: given n points in metric space, find a pair of points with the smallest distance between them. Sieve of Eratosthenes - The sieve of Eratosthenes is one of the most efficient ways to find all of the smaller primes (below 10 million or so). Graph Graph from links - Create a program that will create a graph or network from a series of links. Eulerian Path - Create a program that will take as an input a graph and output either an Eulerian path or an Eulerian cycle, or state that it is not possible. An Eulerian path starts at one node and traverses every edge of a graph through every node and finishes at another node. An Eulerian cycle is an eulerian Path that starts and finishes at the same node. Connected Graph - Create a program that takes a graph as an input and outputs whether every node is connected or not. Dijkstra’s Algorithm - Create a program that finds the shortest path through a graph using its edges. Minimum Spanning Tree - Create a program that takes a connected, undirected graph with weights and outputs the minimum spanning tree of the graph i.e., a subgraph that is a tree, contains all the vertices, and the sum of its weights is the least possible. Data Structures Inverted index - An Inverted Index is a data structure used to create full-text search. Given a set of text files, implement a program to create an inverted index. Also, create a user interface to do a search using that inverted index which returns a list of files that contain the query term/terms. The search index can be in memory. Text Fizz Buzz - Write a program that prints the numbers from 1 to 100. But for multiples of three print “Fizz” instead of the number and for the multiples of five print “Buzz”. For numbers which are multiples of both three and five print “FizzBuzz”. Reverse a String - Enter a string and the program will reverse it and print it out. Pig Latin - Pig Latin is a game of alterations played in the English language game. To create the Pig Latin form of an English word the initial consonant sound is transposed to the end of the word and an ay is affixed (Ex.: "banana" would yield anana-bay). Read Wikipedia for more information on rules. Count Vowels - Enter a string and the program counts the number of vowels in the text. For added complexity have it report a sum of each vowel found. Check if Palindrome - Checks if the string entered by the user is a palindrome. That is that it reads the same forwards as backward like “racecar” Count Words in a String - Counts the number of individual words in a string. For added complexity read these strings in from a text file and generate a summary. Text Editor - Notepad-style application that can open, edit, and save text documents. Optional: Add syntax highlighting and other features. RSS Feed Creator - Given a link to RSS/Atom Feed, get all posts and display them. Quote Tracker (market symbols etc) - A program that can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked. For CLI, show whether the stock has moved up or down. Optional: If GUI, the program can show green up and red down arrows to show which direction the stock value has moved. Guestbook / Journal - A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shoutbox. Optional: Deploy it on Google App Engine or Heroku or any other PaaS (if possible, of course). Vigenere / Vernam / Ceasar Ciphers - Functions for encrypting and decrypting data messages. Then send them to a friend. Regex Query Tool - A tool that allows the user to enter a text string and then in a separate control enter a regex pattern. It will run the regular expression against the source text and return any matches or flag errors in the regular expression. Networking FTP Program - A file transfer program that can transfer files back and forth from a remote web sever. Bandwidth Monitor - A small utility program that tracks how much data you have uploaded and downloaded from the net during the course of your current online session. See if you can find out what periods of the day you use more and less and generate a report or graph that shows it. Port Scanner - Enter an IP address and a port range where the program will then attempt to find open ports on the given computer by connecting to each of them. On any successful connections mark the port as open. Mail Checker (POP3 / IMAP) - The user enters various account information include web server and IP, protocol type (POP3 or IMAP), and the application will check for email at a given interval. Country from IP Lookup - Enter an IP address and find the country that IP is registered in. Optional: Find the Ip automatically. Whois Search Tool - Enter an IP or host address and have it look it up through whois and return the results to you. Site Checker with Time Scheduling - An application that attempts to connect to a website or server every so many minute or a given time and check if it is up. If it is down, it will notify you by email or by posting a notice on the screen. Classes Product Inventory Project - Create an application that manages an inventory of products. Create a product class that has a price, id, and quantity on hand. Then create an inventory class that keeps track of various products and can sum up the inventory value. Airline / Hotel Reservation System - Create a reservation system that books airline seats or hotel rooms. It charges various rates for particular sections of the plane or hotel. For example, first class is going to cost more than a coach. Hotel rooms have penthouse suites which cost more. Keep track of when rooms will be available and can be scheduled. Company Manager - Create a hierarchy of classes - abstract class Employee and subclasses HourlyEmployee, SalariedEmployee, Manager, and Executive. Everyone's pay is calculated differently, research a bit about it. After you've established an employee hierarchy, create a Company class that allows you to manage the employees. You should be able to hire, fire, and raise employees. Bank Account Manager - Create a class called Account which will be an abstract class for three other classes called CheckingAccount, SavingsAccount, and BusinessAccount. Manage credits and debits from these accounts through an ATM-style program. Patient / Doctor Scheduler - Create a patient class and a doctor class. Have a doctor that can handle multiple patients and set up a scheduling program where a doctor can only handle 16 patients during an 8 hr workday. Recipe Creator and Manager - Create a recipe class with ingredients and put them in a recipe manager program that organizes them into categories like desserts, main courses, or by ingredients like chicken, beef, soups, pies, etc. Image Gallery - Create an image abstract class and then a class that inherits from it for each image type. Put them in a program that displays them in a gallery-style format for viewing. Shape Area and Perimeter Classes - Create an abstract class called Shape and then inherit from it other shapes like diamond, rectangle, circle, triangle, etc. Then have each class override the area and perimeter functionality to handle each shape type. Flower Shop Ordering To Go - Create a flower shop application that deals in flower objects and use those flower objects in a bouquet object which can then be sold. Keep track of the number of objects and when you may need to order more. Family Tree Creator - Create a class called Person which will have a name, when they were born, and when (and if) they died. Allow the user to create these Person classes and put them into a family tree structure. Print out the tree to the screen. Threading Create A Progress Bar for Downloads - Create a progress bar for applications that can keep track of a download in progress. The progress bar will be on a separate thread and will communicate with the main thread using delegates. Bulk Thumbnail Creator - Picture processing can take a bit of time for some transformations. Especially if the image is large. Create an image program that can take hundreds of images and converts them to a specified size in the background thread while you do other things. For added complexity, have one thread handling re-sizing, have another bulk renaming of thumbnails, etc. Web Page Scraper - Create an application that connects to a site and pulls out all links, or images, and saves them to a list. Optional: Organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file. Online White Board - Create an application that allows you to draw pictures, write notes and use various colors to flesh out ideas for projects. Optional: Add a feature to invite friends to collaborate on a whiteboard online. Get Atomic Time from Internet Clock - This program will get the true atomic time from an atomic time clock on the Internet. Use any one of the atomic clocks returned by a simple Google search. Fetch Current Weather - Get the current weather for a given zip/postal code. Optional: Try locating the user automatically. Scheduled Auto Login and Action - Make an application that logs into a given site on a schedule and invokes a certain action and then logs out. This can be useful for checking webmail, posting regular content, or getting info for other applications and saving it to your computer. E-Card Generator - Make a site that allows people to generate their own little e-cards and send them to other people. Do not use Flash. Use a picture library and perhaps insightful mottos or quotes. Content Management System - Create a content management system (CMS) like Joomla, Drupal, PHP Nuke, etc. Start small. Optional: Allow for the addition of modules/addons. Web Board (Forum) - Create a forum for you and your buddies to post, administer and share thoughts and ideas. CAPTCHA Maker - Ever see those images with letters numbers when you signup for a service and then ask you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms. Files Quiz Maker - Make an application that takes various questions from a file, picked randomly, and puts together a quiz for students. Each quiz can be different and then reads a key to grade the quizzes. Sort Excel/CSV File Utility - Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. Create Zip File Maker - The user enters various files from different directories and the program zips them up into a zip file. Optional: Apply actual compression to the files. Start with Huffman Algorithm. PDF Generator - An application that can read in a text file, HTML file, or some other file and generates a PDF file out of it. Great for a web-based service where the user uploads the file and the program returns a PDF of the file. Optional: Deploy on GAE or Heroku if possible. Mp3 Tagger - Modify and add ID3v1 tags to MP3 files. See if you can also add in the album art into the MP3 file’s header as well as other ID3v2 tags. Code Snippet Manager - Another utility program that allows coders to put in functions, classes, or other tidbits to save for use later. Organized by the type of snippet or language the coder can quickly lookup code. Optional: For extra practice try adding syntax highlighting based on the language. Databases SQL Query Analyzer - A utility application in which a user can enter a query and have it run against a local database and look for ways to make it more efficient. Remote SQL Tool - A utility that can execute queries on remote servers from your local computer across the Internet. It should take in a remote host, user name, and password, run the query and return the results. Report Generator - Create a utility that generates a report based on some tables in a database. Generates sales reports based on the order/order details tables or sums up the day's current database activity. Event Scheduler and Calendar - Make an application that allows the user to enter a date and time of an event, event notes, and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. Optional: Allow the application to create re-occurrence events that reoccur every day, week, month, year, etc. Budget Tracker - Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. Optional: Allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period. TV Show Tracker - Got a favorite show you don’t want to miss? Don’t have a PVR or want to be able to find the show to then PVR it later? Make an application that can search various online TV Guide sites, locate the shows/times/channels and add them to a database application. The database/website then can send you email reminders that a show is about to start and which channel it will be on. Travel Planner System - Make a system that allows users to put together their own little travel itinerary and keep track of the airline/hotel arrangements, points of interest, budget, and schedule. Graphics and Multimedia Slide Show - Make an application that shows various pictures in a slide show format. Optional: Try adding various effects like fade in/out, star wipe, and window blinds transitions. Stream Video from Online - Try to create your own online streaming video player. Mp3 Player - A simple program for playing your favorite music files. Add features you think are missing from your favorite music player. Watermarking Application - Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. Optional: Use threading to process multiple images simultaneously. Turtle Graphics - This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have moved forward, left or right, lift or drop the pen, etc. Do a search online for "Turtle Graphics" for more information. Optional: Allow the program to read in the list of commands from a file. GIF Creator A program that puts together multiple images (PNGs, JPGs, TIFFs) to make a smooth GIF that can be exported. Optional: Make the program convert small video files to GIFs as well. Security Caesar cipher - Implement a Caesar cipher, both encoding, and decoding. The key is an integer from 1 to 25. This cipher rotates the letters of the alphabet (A to Z). The encoding replaces each letter with the 1st to 25th next letter in the alphabet (wrapping Z to A). So key 2 encrypts "HI" to "JK", but key 20 encrypts "HI" to "BC". This simple "monoalphabetic substitution cipher" provides almost no security, because an attacker who has the encoded message can either use frequency analysis to guess the key, or just try all 25 keys.
Aastha2104
Introduction Parkinson’s Disease is the second most prevalent neurodegenerative disorder after Alzheimer’s, affecting more than 10 million people worldwide. Parkinson’s is characterized primarily by the deterioration of motor and cognitive ability. There is no single test which can be administered for diagnosis. Instead, doctors must perform a careful clinical analysis of the patient’s medical history. Unfortunately, this method of diagnosis is highly inaccurate. A study from the National Institute of Neurological Disorders finds that early diagnosis (having symptoms for 5 years or less) is only 53% accurate. This is not much better than random guessing, but an early diagnosis is critical to effective treatment. Because of these difficulties, I investigate a machine learning approach to accurately diagnose Parkinson’s, using a dataset of various speech features (a non-invasive yet characteristic tool) from the University of Oxford. Why speech features? Speech is very predictive and characteristic of Parkinson’s disease; almost every Parkinson’s patient experiences severe vocal degradation (inability to produce sustained phonations, tremor, hoarseness), so it makes sense to use voice to diagnose the disease. Voice analysis gives the added benefit of being non-invasive, inexpensive, and very easy to extract clinically. Background Parkinson's Disease Parkinson’s is a progressive neurodegenerative condition resulting from the death of the dopamine containing cells of the substantia nigra (which plays an important role in movement). Symptoms include: “frozen” facial features, bradykinesia (slowness of movement), akinesia (impairment of voluntary movement), tremor, and voice impairment. Typically, by the time the disease is diagnosed, 60% of nigrostriatal neurons have degenerated, and 80% of striatal dopamine have been depleted. Performance Metrics TP = true positive, FP = false positive, TN = true negative, FN = false negative Accuracy: (TP+TN)/(P+N) Matthews Correlation Coefficient: 1=perfect, 0=random, -1=completely inaccurate Algorithms Employed Logistic Regression (LR): Uses the sigmoid logistic equation with weights (coefficient values) and biases (constants) to model the probability of a certain class for binary classification. An output of 1 represents one class, and an output of 0 represents the other. Training the model will learn the optimal weights and biases. Linear Discriminant Analysis (LDA): Assumes that the data is Gaussian and each feature has the same variance. LDA estimates the mean and variance for each class from the training data, and then uses properties of statistics (Bayes theorem , Gaussian distribution, etc) to compute the probability of a particular instance belonging to a given class. The class with the largest probability is the prediction. k Nearest Neighbors (KNN): Makes predictions about the validation set using the entire training set. KNN makes a prediction about a new instance by searching through the entire set to find the k “closest” instances. “Closeness” is determined using a proximity measurement (Euclidean) across all features. The class that the majority of the k closest instances belong to is the class that the model predicts the new instance to be. Decision Tree (DT): Represented by a binary tree, where each root node represents an input variable and a split point, and each leaf node contains an output used to make a prediction. Neural Network (NN): Models the way the human brain makes decisions. Each neuron takes in 1+ inputs, and then uses an activation function to process the input with weights and biases to produce an output. Neurons can be arranged into layers, and multiple layers can form a network to model complex decisions. Training the network involves using the training instances to optimize the weights and biases. Naive Bayes (NB): Simplifies the calculation of probabilities by assuming that all features are independent of one another (a strong but effective assumption). Employs Bayes Theorem to calculate the probabilities that the instance to be predicted is in each class, then finds the class with the highest probability. Gradient Boost (GB): Generally used when seeking a model with very high predictive performance. Used to reduce bias and variance (“error”) by combining multiple “weak learners” (not very good models) to create a “strong learner” (high performance model). Involves 3 elements: a loss function (error function) to be optimized, a weak learner (decision tree) to make predictions, and an additive model to add trees to minimize the loss function. Gradient descent is used to minimize error after adding each tree (one by one). Engineering Goal Produce a machine learning model to diagnose Parkinson’s disease given various features of a patient’s speech with at least 90% accuracy and/or a Matthews Correlation Coefficient of at least 0.9. Compare various algorithms and parameters to determine the best model for predicting Parkinson’s. Dataset Description Source: the University of Oxford 195 instances (147 subjects with Parkinson’s, 48 without Parkinson’s) 22 features (elements that are possibly characteristic of Parkinson’s, such as frequency, pitch, amplitude / period of the sound wave) 1 label (1 for Parkinson’s, 0 for no Parkinson’s) Project Pipeline pipeline Summary of Procedure Split the Oxford Parkinson’s Dataset into two parts: one for training, one for validation (evaluate how well the model performs) Train each of the following algorithms with the training set: Logistic Regression, Linear Discriminant Analysis, k Nearest Neighbors, Decision Tree, Neural Network, Naive Bayes, Gradient Boost Evaluate results using the validation set Repeat for the following training set to validation set splits: 80% training / 20% validation, 75% / 25%, and 70% / 30% Repeat for a rescaled version of the dataset (scale all the numbers in the dataset to a range from 0 to 1: this helps to reduce the effect of outliers) Conduct 5 trials and average the results Data a_o a_r m_o m_r Data Analysis In general, the models tended to perform the best (both in terms of accuracy and Matthews Correlation Coefficient) on the rescaled dataset with a 75-25 train-test split. The two highest performing algorithms, k Nearest Neighbors and the Neural Network, both achieved an accuracy of 98%. The NN achieved a MCC of 0.96, while KNN achieved a MCC of 0.94. These figures outperform most existing literature and significantly outperform current methods of diagnosis. Conclusion and Significance These robust results suggest that a machine learning approach can indeed be implemented to significantly improve diagnosis methods of Parkinson’s disease. Given the necessity of early diagnosis for effective treatment, my machine learning models provide a very promising alternative to the current, rather ineffective method of diagnosis. Current methods of early diagnosis are only 53% accurate, while my machine learning model produces 98% accuracy. This 45% increase is critical because an accurate, early diagnosis is needed to effectively treat the disease. Typically, by the time the disease is diagnosed, 60% of nigrostriatal neurons have degenerated, and 80% of striatal dopamine have been depleted. With an earlier diagnosis, much of this degradation could have been slowed or treated. My results are very significant because Parkinson’s affects over 10 million people worldwide who could benefit greatly from an early, accurate diagnosis. Not only is my machine learning approach more accurate in terms of diagnostic accuracy, it is also more scalable, less expensive, and therefore more accessible to people who might not have access to established medical facilities and professionals. The diagnosis is also much simpler, requiring only a 10-15 second voice recording and producing an immediate diagnosis. Future Research Given more time and resources, I would investigate the following: Create a mobile application which would allow the user to record his/her voice, extract the necessary vocal features, and feed it into my machine learning model to diagnose Parkinson’s. Use larger datasets in conjunction with the University of Oxford dataset. Tune and improve my models even further to achieve even better results. Investigate different structures and types of neural networks. Construct a novel algorithm specifically suited for the prediction of Parkinson’s. Generalize my findings and algorithms for all types of dementia disorders, such as Alzheimer’s. References Bind, Shubham. "A Survey of Machine Learning Based Approaches for Parkinson Disease Prediction." International Journal of Computer Science and Information Technologies 6 (2015): n. pag. International Journal of Computer Science and Information Technologies. 2015. Web. 8 Mar. 2017. Brooks, Megan. "Diagnosing Parkinson's Disease Still Challenging." Medscape Medical News. National Institute of Neurological Disorders, 31 July 2014. Web. 20 Mar. 2017. Exploiting Nonlinear Recurrence and Fractal Scaling Properties for Voice Disorder Detection', Little MA, McSharry PE, Roberts SJ, Costello DAE, Moroz IM. BioMedical Engineering OnLine 2007, 6:23 (26 June 2007) Hashmi, Sumaiya F. "A Machine Learning Approach to Diagnosis of Parkinson’s Disease."Claremont Colleges Scholarship. Claremont College, 2013. Web. 10 Mar. 2017. Karplus, Abraham. "Machine Learning Algorithms for Cancer Diagnosis." Machine Learning Algorithms for Cancer Diagnosis (n.d.): n. pag. Mar. 2012. Web. 20 Mar. 2017. Little, Max. "Parkinsons Data Set." UCI Machine Learning Repository. University of Oxford, 26 June 2008. Web. 20 Feb. 2017. Ozcift, Akin, and Arif Gulten. "Classifier Ensemble Construction with Rotation Forest to Improve Medical Diagnosis Performance of Machine Learning Algorithms." Computer Methods and Programs in Biomedicine 104.3 (2011): 443-51. Semantic Scholar. 2011. Web. 15 Mar. 2017. "Parkinson’s Disease Dementia." UCI MIND. N.p., 19 Oct. 2015. Web. 17 Feb. 2017. Salvatore, C., A. Cerasa, I. Castiglioni, F. Gallivanone, A. Augimeri, M. Lopez, G. Arabia, M. Morelli, M.c. Gilardi, and A. Quattrone. "Machine Learning on Brain MRI Data for Differential Diagnosis of Parkinson's Disease and Progressive Supranuclear Palsy."Journal of Neuroscience Methods 222 (2014): 230-37. 2014. Web. 18 Mar. 2017. Shahbakhi, Mohammad, Danial Taheri Far, and Ehsan Tahami. "Speech Analysis for Diagnosis of Parkinson’s Disease Using Genetic Algorithm and Support Vector Machine."Journal of Biomedical Science and Engineering 07.04 (2014): 147-56. Scientific Research. July 2014. Web. 2 Mar. 2017. "Speech and Communication." Speech and Communication. Parkinson's Disease Foundation, n.d. Web. 22 Mar. 2017. Sriram, Tarigoppula V. S., M. Venkateswara Rao, G. V. Satya Narayana, and D. S. V. G. K. Kaladhar. "Diagnosis of Parkinson Disease Using Machine Learning and Data Mining Systems from Voice Dataset." SpringerLink. Springer, Cham, 01 Jan. 1970. Web. 17 Mar. 2017.
This project demonstrates various signal processing techniques, such as signal generation, window functions, filtering, downsampling, zero-padding, and the application of time-frequency analysis using the Short-Time Fourier Transform (STFT).
AmynaSec-Research-Labs
Powering Hardware, Radio, Web, and IoT Security Assessments Trilokya OS is a powerful, security-focused operating system designed for penetration testers, security researchers, and ethical hackers specializing in hardware security, radio frequency (RF) analysis, web application security, and IoT penetration testing.
dankovacek
An interactive application for exploring the nature of flood frequency analysis.
zwynne
A set of MATLAB scripts for the application of the level-crossing Random Decrement Technique, a time-domain operational modal analysis method, combined with the Matrix Pencil Method for extraction of frequencies and damping ratios of surface waves in lakes and reservoirs.
Jai-Agarwal-04
Sentiment Analysis with Insights using NLP and Dash This project show the sentiment analysis of text data using NLP and Dash. I used Amazon reviews dataset to train the model and further scrap the reviews from Etsy.com in order to test my model. Prerequisites: Python3 Amazon Dataset (3.6GB) Anaconda How this project was made? This project has been built using Python3 to help predict the sentiments with the help of Machine Learning and an interactive dashboard to test reviews. To start, I downloaded the dataset and extracted the JSON file. Next, I took out a portion of 7,92,000 reviews equally distributed into chunks of 24000 reviews using pandas. The chunks were then combined into a single CSV file called balanced_reviews.csv. This balanced_reviews.csv served as the base for training my model which was filtered on the basis of review greater than 3 and less than 3. Further, this filtered data was vectorized using TF_IDF vectorizer. After training the model to a 90% accuracy, the reviews were scrapped from Etsy.com in order to test our model. Finally, I built a dashboard in which we can check the sentiments based on input given by the user or can check the sentiments of reviews scrapped from the website. What is CountVectorizer? CountVectorizer is a great tool provided by the scikit-learn library in Python. It is used to transform a given text into a vector on the basis of the frequency (count) of each word that occurs in the entire text. This is helpful when we have multiple such texts, and we wish to convert each word in each text into vectors (for using in further text analysis). CountVectorizer creates a matrix in which each unique word is represented by a column of the matrix, and each text sample from the document is a row in the matrix. The value of each cell is nothing but the count of the word in that particular text sample. What is TF-IDF Vectorizer? TF-IDF stands for Term Frequency - Inverse Document Frequency and is a statistic that aims to better define how important a word is for a document, while also taking into account the relation to other documents from the same corpus. This is performed by looking at how many times a word appears into a document while also paying attention to how many times the same word appears in other documents in the corpus. The rationale behind this is the following: a word that frequently appears in a document has more relevancy for that document, meaning that there is higher probability that the document is about or in relation to that specific word a word that frequently appears in more documents may prevent us from finding the right document in a collection; the word is relevant either for all documents or for none. Either way, it will not help us filter out a single document or a small subset of documents from the whole set. So then TF-IDF is a score which is applied to every word in every document in our dataset. And for every word, the TF-IDF value increases with every appearance of the word in a document, but is gradually decreased with every appearance in other documents. What is Plotly Dash? Dash is a productive Python framework for building web analytic applications. Written on top of Flask, Plotly.js, and React.js, Dash is ideal for building data visualization apps with highly custom user interfaces in pure Python. It's particularly suited for anyone who works with data in Python. Dash apps are rendered in the web browser. You can deploy your apps to servers and then share them through URLs. Since Dash apps are viewed in the web browser, Dash is inherently cross-platform and mobile ready. Dash is an open source library, released under the permissive MIT license. Plotly develops Dash and offers a platform for managing Dash apps in an enterprise environment. What is Web Scrapping? Web scraping is a term used to describe the use of a program or algorithm to extract and process large amounts of data from the web. Running the project Step 1: Download the dataset and extract the JSON data in your project folder. Make a folder filtered_chunks and run the data_extraction.py file. This will extract data from the JSON file into equal sized chunks and then combine them into a single CSV file called balanced_reviews.csv. Step 2: Run the data_cleaning_preprocessing_and_vectorizing.py file. This will clean and filter out the data. Next the filtered data will be fed to the TF-IDF Vectorizer and then the model will be pickled in a trained_model.pkl file and the Vocabulary of the trained model will be stored as vocab.pkl. Keep these two files in a folder named model_files. Step 3: Now run the etsy_review_scrapper.py file. Adjust the range of pages and product to be scrapped as it might take a long long time to process. A small sized data is sufficient to check the accuracy of our model. The scrapped data will be stored in csv as well as db file. Step 4: Finally, run the app.py file that will start up the Dash server and we can check the working of our model either by typing or either by selecting the preloaded scrapped reviews.
Flapjacode
A Flipper Zero application for scanning and analyzing SubGHz signals using the CC1101 transceiver module. Features Static Frequency Scanning: Monitor specific frequencies for SubGHz signals Dynamic Frequency Hopping: Automatically scan across multiple frequency bands Signal Analysis: Detect and analyze various SubGHz protocols Saved Signals: Store
Prediction of travel time has major concern in the research domain of Intel- ligent Transportation Systems (ITS). Clustering strategy can be used as a powerful tool of discovering hidden knowledge that can easily be applied on historical traffic data to predict accurate travel time. In our Modified K-means Clustering (MKC) approach, a set of historical data is portioned into a group of meaningful sub- classes (also known as clusters) based on travel time, frequency of travel time and velocity for a specific road segment and time group. The information from these are processed and provided back to the travellers in real time. Traffic flow modelling and driving condition analysis have many applications to various areas, such as Intelligent Trans- portation Systems (ITS), adaptive cruise control, pollutant emissions dispersion and safety.
noahjonesx
Markov Text Generation Problem Description The Infinite Monkey Theorem1 (IFT) says that if a monkey hits keys at random on a typewriter it will almost surely, given an infinite amount of time, produce a chosen text (like the Declaration of Independence, Hamlet, or a script for ... Planet of the Apes). The probability of this actually happening is, of course, very small but the IFT claims that it is still possible. Some people have tested this hypotheis in software and, after billions and billions of simulated years, one virtual monkey was able to type out a sequence of 19 letters that can be found in Shakespeare’s The Two Gentlemen of Verona. (See the April 9, 2007 edition of The New Yorker if you’re interested; but, hypothesis testing with real monkeys2 is far more entertaining.) The IFT might lead to some interesting conversations with Rust Cohle, but the practical applications are few. It does, however, bring up the idea of automated text generation, and there the ideas and applications are not only interesting but also important. Claude Shannon essentially founded the field of information theory with the publication of his landmark paper A Mathematical Theory of Computation3 in 1948. Shannon described a method for using Markov chains to produce a reasonable imitation of a known text with sometimes startling results. For example, here is a sample of text generated from a Markov model of the script for the 1967 movie Planet of the Apes. "PLANET OF THE APES" Screenplay by Michael Wilson Based on Novel By Pierre Boulle DISSOLVE TO: 138 EXT. GROVE OF FRUIT TREES - ESTABLISHING SHOT - DAY Zira run back to the front of Taylor. The President, I believe the prosecutor's charge of this man. ZIRA Well, whoever owned them was in pretty bad shape. He picks up two of the strain. You got what you wanted, kid. How does it taste? Silence. Taylor and cuffs him. Over this we HEAR from a distance is a crude horse-drawn wagon is silhouetted-against the trunks and branches of great trees and bushes on the horse's rump. Taylor lifts his right arm to ward off the blow, and the room and lands at the feet of Cornelius and Lucius are sorting out equipment falls to his knees, buries his head silently at the Ranch). DISSOLVE TO: 197 INT. CAGES - CLOSE SHOT - FEATURING LANDON - FROM TAYLOR'S VOICE (o.s.) I've got a fine veternary surgeons under my direction? ZIRA Taylor! ZIRA There is a small lake, looking like a politician. TAYLOR Dodge takes a pen and notebook from the half-open door of a guard room. Taylor bursts suddenly confronted by his 1https://en.wikipedia.org/wiki/Infinite_monkey_theorem2https://web.archive.org/web/20130120215600/http://www.vivaria.net/experiments/notes/publication/NOTES_ EN.pdf3http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=6773024 1 original pursuer (the dismounted cop coming up with a cigar butt and places it in the drawer beside them. TAYLOR What's the best there is a. loud RAP at the doll was found beside the building. Zira waits at the third table. TAYLOR Good question. Is he a man? CORNELIUS (impatiently. DODGE Blessed are the vegetation. These SHOTS are INTERCUT with: 94 WHAT THE ASTRONAUTS They examine the remnants of the cage. ZIRA (plunging on) Their speech organs are adequate. The flaw lies not in anatomy but in the back of his left sleeve. TAYLOR (taking off his shirt. 80 DODGE AND LANDON You don't sound happy in your work. GALEN (defensively) Gorilla hunter stands over a dead man, one fo Besides a few spelling errors and some rather odd things that make you wonder about the author, this passage is surprisingly human-like. This is a simple example of natural language generation, a sub-area of natural language processing—a very active area of research in computer science. The particular approach we’re using in this assignment was famously implemented as the fictitious Mark V. Shaney4 and the Emacs command Disassociated Press5. Approach So, here’s the basic idea: Imagine taking a book (say, Tom Sawyer) and determining the probability with which each character occurs. You would probably find that spaces are the most common, that the character ‘e’ is fairly common, and that the character ‘q’ is rather uncommon. After completing this “level 0” analysis, you would be able to produce random Tom Sawyer text based on character probabilities. It wouldn’t have much in common with the real thing, but at least the characters would tend to occur in the proper propor- tion. In fact, here’s an example of what you might produce: Level 0 rla bsht eS ststofo hhfosdsdewno oe wee h .mr ae irii ela iad o r te u t mnyto onmalysnce, ifu en c fDwn oee iteo Now imagine doing a slightly more sophisticated level 1 analysis by determining the probability with which each character follows every other character. You would probably discover that ‘h’ follows ‘t’ more frequently than ‘x’ does, and you would probably discover that a space follows ‘.’ more frequently than ‘,’ does. You could now produce some randomly generated Tom Sawyer text by picking a character to begin with and then always choosing the next character based on the previous one and the probabilities revealed by the analysis. Here’s an example: Level 1 "Shand tucthiney m?" le ollds mind Theybooure He, he s whit Pereg lenigabo Jodind alllld ashanthe ainofevids tre lin-p asto oun theanthadomoere Now imagine doing a level k analysis by determining the probability with which each character follows every possible sequence of characters of length k (kgrams). A level 5 analysis of Tom Sawyer for example, would reveal that ‘r’ follows “Sawye” more frequently than any other character. After a level k analysis, you would be able to produce random Tom Sawyer by always choosing the next character based on the previous k characters (a kgram) and the probabilities revealed by the analysis. 4https://en.wikipedia.org/wiki/Mark_V._Shaney5https://en.wikipedia.org/wiki/Dissociated_press Page 2 of 5 At only a moderate level of analysis (say, levels 5-7), the randomly generated text begins to take on many of the characteristics of the source text. It probably won’t make complete sense, but you’ll be able to tell that it was derived from Tom Sawyer as opposed to, say, The Sound and the Fury. Here are some more examples of text that is generated from increasing levels of analysis of Tom Sawyer. (These “levels of analysis” are called order K Markov models.) K = 2 "Yess been." for gothin, Tome oso; ing, in to weliss of an’te cle - armit. Papper a comeasione, and smomenty, fropeck hinticer, sid, a was Tom, be suck tied. He sis tred a youck to themen K = 4 en themself, Mr. Welshman, but him awoke, the balmy shore. I’ll give him that he couple overy because in the slated snufflindeed structure’s kind was rath. She said that the wound the door a fever eyes that WITH him. K = 6 people had eaten, leaving. Come - didn’t stand it better judgment; His hands and bury it again, tramped herself! She’d never would be. He found her spite of anything the one was a prime feature sunset, and hit upon that of the forever. K = 8 look-a-here - I told you before, Joe. I’ve heard a pin drop. The stillness was complete, how- ever, this is awful crime, beyond the village was sufficient. He would be a good enough to get that night, Tom and Becky. K = 10 you understanding that they don’t come around in the cave should get the word "beauteous" was over-fondled, and that together" and decided that he might as we used to do - it’s nobby fun. I’ll learn you." To create an order K Markov model of a given source text, you would need to identify all kgrams in the source text and associate with each kgram all the individual characters that follow it. This association or mapping must also capture the frequency with which a given character follows a given kgram. For example, suppose that k = 2 and the sample text is: agggcagcgggcg The Markov model would have to represent all the character strings of length two (2-grams) in the source text, and associate with them the characters that follow them, and in the correct proportion. The following table shows one way of representing this information. kgram Characters that follow ag gc gg gcgc gc agg ca g cg g Once you have created an order K Markov model of a given source text, you can generate new text based on this model as follows. Page 3 of 5 1. Randomly pick k consecutive characters that appear in the sample text and use them as the initial kgram. 2. Append the kgram to the output text being generated. 3. Repeat the following steps until the output text is sufficiently long. (a) Select a character c that appears in the sample text based on the probability of that character following the current kgram. (b) Append this character to the output text. (c) Update the kgram by removing its first character and adding the character just chosen (c) as its last character. If this process encounters a situation in which there are no characters to choose from (which can happen if the only occurrence of the current kgram is at the exact end of the source), simply pick a new kgram at random and continue. As an example, suppose that k = 2 and the sample text is that from above: agggcagcgggcg Here are four different output text strings of length 10 that could have been the result of the process described above, using the first two characters (’ag’) as the initial kgram. agcggcagcg aggcaggcgg agggcaggcg agcggcggca For another example, suppose that k = 2 and the sample text is: the three pirates charted that course the other day Here is how the first three characters of new text might be generated: •A two-character sequence is chosen at random to become the initial kgram. Let’s suppose that “th” is chosen. So, kgram = th and output = th. •The first character must be chosen based on the probability that it follows the kgram (currently “th”) in the source. The source contains five occurrences of “th”. Three times it is followed by ’e’, once it is followed by ’r’, and once it is followed by ’a’. Thus, the next character must be chosen so that there is a 3/5 chance that an ’e’ will be chosen, a 1/5 chance that an ’r’ will be chosen, and a 1/5 chance that an ’a’ will be chosen. Let’s suppose that we choose an ’e’ this time. So, kgram = he and output = the. •The next character must be chosen based on the probability that it follows the kgram (currently “he”) in the source. The source contains three occurrences of “he”. Twice it is followed by a space and once it is followed by ’r’. Thus, the next character must be chosen so that there is a 2/3 chance that a space will be chosen and a 1/3 chance that an ’r’ will be chosen. Let’s suppose that we choose an ’r’ this time. So, kgram = er and output = ther. •The next character must be chosen based on the probability that it follows the kgram (currently “er”) in the source. The source contains only one occurrence of “er”, and it is followed by a space. Thus, the next character must be a space. So, kgram = r_ and output = ther_, where ’_’ represents a blank space. Page 4 of 5 Implementation Details You are provided with two Java files that you must use to develop your solution: MarkovModel.java and TextGenerator.java. The constructors of MarkovModel build the order-k model of the source text. You are required to represent the model with the provided HashMap field. The main method of TextGenerator must process the following three command line arguments (in the args array): •A non-negative integer k •A non-negative integer length. •The name of an input file source that contains more than k characters. Your program must validate the command line arguments by making sure that k and length are non- negative and that source contains at least k characters and can be opened for reading. If any of the command line arguments are invalid, your program must write an informative error message to System.out and terminate. If there are not enough command line arguments, your program must write an informative error message to System.out and terminate. With valid command line arguments, your program must use the methods of the MarkovModel class to create an order k Markov model of the sample text, select the initial kgram, and make each character selection. You must implement the MarkovModel methods according to description of the Markov modeling process in the section above. A few sample texts have been provided, but Project Gutenberg (http://www.gutenberg.org) maintains a large collection of public domain literary works that you can use as source texts for fun and practice. Acknowledgments This assignment is based on the ideas of many people, Jon Bentley and Owen Astrachan in particular.
TheLittleEngineers
CC-FlexiMIDI-V1R0-03.09.2009 and CC-FlexiMIDI-V1R1-03.09.2009 : Updated to CC-FlexiMIDI-V1R2-12.29.2019 on December 29, 2019 ================================ BACKGROUND: CC-FlexiMIDI-V1R0-03.09.2009 - A Hardware M.I.D.I. Interface Program Pak Cartridge for the Tandy Radio Shack TRS-80 Color Computer 1, 2 and 3, including clones and compatibles (Tano Dragon 64, Dragon Data D32, D64 and D200, Tandy Data Products TDP-100, etcetera) by "Little" John Eric Turner and his father "Big" John Robert (J.R.) Turner. Copyright 09 March 2009. Originally released as Open-Source Hardware on March 9, 2009. Subsequently released under a Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) License on 21 May 2019. ENJOY! Note that the original design is crap, however, a debugged version is forthcoming from "Uncle" Robert "The R.A.T." Allen Turner. CC-FlexiMIDI-V1R0-03.09.2009 has been updated to CC-FlexiMIDI-V1R1-03.09.2009 by R.A. Turner on May 21, 2019, just over ten years after the initial release of Version 1, Revision 0. Version 1, Revision 1 is Copyright (C) 2019 by the above mentioned parties and is released under a Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) License on 21 May 2019. =============================== DESCRIPTION: This project is an updated version of the "CC-FlexiMIDI-V1R0-03.09.2009", a hardware MIDI Interface Card for the Tandy Radio Shack TRS-80 Color Computer 1,2 and 3, Dragon Data Dragon D32, D64 and D200, Tandy Data Products TDP-100, Tano Dragon 64 and other clones and compatibles. The original "CC-FlexiMIDI-V1R0-03.09.2009" was designed by my nephew, "Little John", on March 8-9, 2009 as a learning excercise. He was teaching himself to use E.A.G.L.E. in order to design products for the TRS-80 Color Computer line of computers, with the help of his father, my brother, "Big John" or "J.R." as he is known to me. The "CC-FlexiMIDI-V1R0-03.09.2009" was among his very first (learning the art of circuit design) works. It is a terrible design only because he knew nothing about circuit design at the time and it does not appear that his father, "Big John" (J.R.) offered any input in regards to this particular design. I, "Uncle" Robert "The R.A.T." Allen Turner, have decided to polish up the design a bit and lay out a manufacturable Printed Circuit Board which I will release under a Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) License. As such, I will analyze "Little John's" original design and then provide my improved version. The original "CC-FlexiMIDI-V1R0-03.09.2009" design files, as provided by "Little John" and his father (J.R.) are contained in the "Original (Deprecated)" folder of this archive and should be referenced for this initial analysis of the design. ================================ ANALYSIS OF ORIGINAL DESIGN: Load up the "CC-FlexiMIDI-V1R0-03.09.2009.sch" schematic file and have it handy for this discussion. Starting with Page 1 of the schematic, we see the expected cartridge (program pak) plug followed by an oddly interesting series of "purported" interrupts, labeled IRQ0* and IRQ1* (the "*" indicates low-level triggering, or active low). These "Interrupts", IRQ0* and IRQ1* appear to go, through disable jumpers, to Pins 1 and 2 of the CoCo Cartridge (Program PAK) Connector. This is both ODD and INTERESTING because Pins 1 and 2 of that connector are -12V and +12V, respectively, on ALL CoCo 1's, TDP-100's and ALL Multi-Pak Interfaces. Both of these pins are +12V on the Dragon computers. Those self-same pins, however, are NOT connected to anything on ANY stock, unmodified, CoCo 2 or 3 computers. I am thus forced to draw the following conclusion: "Little John" apparently allowed for using Pins 1 and 2 of a CoCo 2 or 3 Cartridge Slot to connect to any desired interrupt within the CoCo 2 or 3. That is, a CoCo 2 or 3 might be modified to connect Pins 1 and/or 2 of the Cartridge Slot to any of the CPU Interrupts, the PIA Interrupt (CART*), G.I.M.E. (A.C.V.C.) Interrupts (CoCo 3 only), etcetera. This is an UNECCESSARY feature of the "FlexiMIDI" design and my initial inclination was to omit it from the design. However, since there are jumpers that allow these "hacked in" custom interrupts to be disabled (removed) via JP1 and/or JP2 or connected together (wire or'ed) via JP3, I have decided to leave them in the design should anyone be so inclined as to use this custom interrupt scheme for experimentation or otherwise. Also on Page 1 is a fairly standard RESET switch which I would imagine could prove to be quite convenient but potentially problematic if the device is plugged into a Multi-Pak Interface (RESET* is buffered in a single direction in the M.P.I. and should not be triggered from any cartridge plugged into the M.P.I.), Power ON L.E.D. (which I assume might be quite distracting) and some pull-up resistors for the interrupts, custom and legit. Lastly, there is a 220uF Electrolytic Capacitor for Vcc (+5V) filtering. Ideally, a low ESR Electrolytic should be used, however, paralleling a 220uF Electrolytic with a .1uF Ceramic Disc should provide approximately the same result as a single Low ESR type. Moving on to Page 2, we see a crystal oscillator comprised of three inverters, three resistors and a crystal rated at 1 to 2 MHz. The third inverter actually acts as a buffer and "shaper". Schmitt Trigger inverters are used, although this is not actually necessary it does provide a nice, sharp square wave. Without the hysteresis provided by the schmitt triggers the waveform would appear quasi-sinusoidal at the crystal frequency if viewed on an oscilloscope, but would still function just fine. The output of that third inverter, the buffer stage, is fed into a pair of toggling D type Flip-Flops which provide a divide by two output and a divide by four output, either of which may be selected by jumper JP4. Ideally, we want a solid 500KHz squarewave as the ACIA Clock (which "Little John" labeled "MIDICLOCK" or "MIDICLK"). If a 1MHz crystal is used we would place JP4 on Pins 1 and 2. With a 2MHz crystal we would connect JP4 Pins 2 and 3. This is flexible in that it allows the use of either a 1MHz or 2MHz crystal, whichever might be handy. In my case, and for the redesign, I have a large stock of 16MHz half-can oscillators and so this is what I will be using in the redesign. The 500KHz then, will be derived from the 16MHz oscillator by using the 16MHz to clock a binary counter. At the bottom left of Page 2, we also see three inverters used to invert A7, A4 and A3. This appears to be part of the "address decoding" scheme. Lastly, we see the decoupling capacitors for the inverters and "d-flops". This page (page 2) of the design is fairly solid and well designed. Moving on to page 3, we see the "heart" of the "CC-FlexiMIDI-V1R0-03.09.2009" MIDI Interface Pak. A 74LS133 13-Input NAND is used for address decoding. The 74LS133 in conjunction with the aforementioned inverters and the ACIA enable lines fully decode the ACIA into two consectutive memory addresses. With this, we can now decipher the addressing of the device. This will be done by writing A15 - A0 and filling in the "bit status" required to enable the ACIA, as follows: ========================================================================= | A15 A14 A13 A12 | A11 A10 A09 A08 | A07 A06 A05 A04 | A03 A02 A01 A00 | |=================|=================|=================|=================| | 1 1 1 1 | 1 1 1 1 | 0 1 1 0 | 0 1 1 x | |=================|=================|=================|================== | F | F | 6 | x | ========================================================================= Looking at the above table and noting that A0 selects one of the two internal ACIA registers, it is clear that "Little John" mapped the ACIA to 0xFF66 and 0xFF67. This seems ODD because the most popular MIDI Packs designed for use with the Tandy Radio Shack TRS-80 Color Computer decode the ACIA to 0xFF6E and 0xFF6F. A bit of research, however, led to the discovery that the original CoCo MIDI Pack, "The Colorchestra", mapped the ACIA at 0xFF66 and 0xFF67. The "Colorchestra" was released in 1985 by "Color Horizons" and I own two of them. The aforementioned "research" was simply me looking at the "Colorchestra" P.C.B. and deciphering the address decoding which turns out to be 0xFF66-67. I assume that "Little John" arrived at the 0xFF66-67 addressing in a similar manner as to that just mentioned. It would be relatively easy to redesign the "FlexiMIDI" to respond to both sets of addresses thus guaranteeing compatibility with everything. I have decided, however, that the redesign will feature a semi-programmable address decoder allowing the ACIA to be mapped to any two consecutive addresses within the 0xFF6n area. This will allow the "Flexi-MIDI" to be even more flexible. Setting the address decoder to respond to 0xFF66-67 will make the device "Colorchestra" compatible, whilst setting the decoder to respond to 0xFF6E-6F will make it compatible with the MIDI Interfaces produced by Speech Systems, MusicWare, Rulaford Research, Glenside CoCo Club and other CoCo MIDI Packs. As mentioned, it would be relatively easy to hardwire the decoder to respond to both the 0xFF66-67 and the 0xFF6E-6F address ranges, but I feel that this is unneccesary. Next, we see the 6850 ACIA. This is the "true heart" of the device - a hardware serial port. Looking at the 6850 section of this page of the schematic, we see yet another oddly interesting Interrupt Selection circuit. It is in the form of a 2x4 Jumper Block. This appears to allow selection of any 1 of 4 interrupts to be triggered by the ACIA. IRQ0* and IRQ1* are the previously mentioned "custom" interrupts. NMI* is the 6809 or G.I.M.E./A.C.V.C. Non-Maskable Interrupt Input. The last interrupt on the 2x4 block is the CART* interrupt. This is actually the 6809 or G.I.M.E. IRQ* line that is passed through a PIA inside the CoCo/Dragon. This, the CART* interrupt is the one that should be used for compatibility. The remaining circuitry on Page 3 are fairly standard circuits for MIDI IN, OUT and THROUGH. These go to 5-pin headers. It appears that "Little John" intended for MIDI Cable ends to be soldered to these headers. The redesign will feature 5-pin DIN MIDI connectors. I do see some potential problems with these MIDI IN, OUT and THRU connections on "Little John's" original design. The first problem that I notice is that the MIDI Ground Pins are connected to the same Ground (common or GND) as the computer and MIDI Pack circuitry. This is no good as it violates the MIDI specification and defeats the purpose of the opto-isolator. Thus, the redesign will sever the ground connection of the DIN connectors from the ground connection of the MIDI Interface Pak circuitry. Next, the 330 Ohm (330R) pull-up resistor connected to the output of the opto-isolator should probably be 270R, however, the device should work fine with the 330R resistor. The redesign will have this changed to 270R. The 10K resistor connected to the "BASE" of the opto-isolator darlington-transistor pair should not be needed. I will allow for it in the redesign for testing purposes. The output of the opto-isolator is sent through two schmitt trigger inverters before being applied to the "Receive Data" input of the ACIA. I am drawing the following conclusion in regards to those two inverters: It seems the design was originally intended for use with a Sharp PC-900 or PC-900V digital opto-isolator which has an internal schmitt trigger, the hysteresis of which provides nice, sharp waveform edges. It appears that "Little John" decided, instead, to use a 6N138 opto-isolator, which does not have hysteresis (schmitt triggering) and thus he must have included the two inverters to alleviate this perceived problem. I am relatively certain, however, that these two inverters are unneccessary and thus I will remove them in the redesign. Had I not used two of the inverters in the hex-inverter package for address decoding, I might have left these two inverters in the redesign, however, I decided the savings of one chip was worth eliminating these two inverters. Hopefully, results will be satisfactory. That is about it for the initial analysis of "Little John's" original design. I shall now proceed to design a slightly improved and, hopefully, manufacturable version of "Little John's CC-FlexiMIDI-V1R0-03.09.2009" Hardware M.I.D.I. Interface Pack. This redesign will be titled: "CC-FlexiMIDI-V1R1-03.09.2009". ================================ THE REDESIGN: Load up the NEW design from the CURRENT folder in the archive and use it to follow this discussion. Starting with Page 1 of the schematic, I will start the redesign with the Cartridge Program Pak Slot Plug (Edge-Card or Edge-Fingers). This is what will actually plug into the cartridge port on the computer or Multi-Pak Interface (M.P.I.). Next, I will add an edge card socket wired in parallel to the edge-fingers. This is based on "Little John's" Universal Footprint which means that you can fit either a 40-pin card socket or a 40-pin header. This will allow an additional cartridge or other hardware to be plugged directly into the MIDI Interface, thus eliminating the need for a "y-cable" or Multi-Pak Interface. The +5V is filtered with a 220uF Electrolytic Capacitor in parallel with a .1uF Ceramic Disc or Dacron/Polyester/Mylar capacitor. A Power ON L.E.D. indicator is included here, along with an enable/disable jumper. Removing the jumper disables the Power ON L.E.D. should it become a distraction. Next, I'll add in the "CUSTOM" Interrupts, including their jumpers. The jumpers should be REMOVED from all of these if the device is to be used with a CoCo 1 and/or M.P.I. (Multi-Pak Interface) or with ANY of the CoCo Clones and/or compatibles, including the Dragon. In actuality, these jumpers should never be needed and thus should never be installed - they are for experimental purposes only. Removing the jumpers prevents the accidental application of +/-12V to the IRQ* output pin of the ACIA which would fry the ACIA. I have included 680R "failsafe" resistors, but it is likely that they would not prevent a fried ACIA. Lastly, I have included the RESET Switch for convenience. The RESET switch should NEVER be pressed if the device is inserted in a Multi-Pak Interface as you may blow the 74LS367 in the M.P.I. That is about it for Page 1 of the redesign. Moving on to Page 2: This page is exclusively dedicated to the Baud Rate Generator for the ACIA. Starting at the left, we see the bypass capacitors for the 74LS590 counter. I have used both a 10uF Electrolytic and a .1uF (100nF) Ceramic Disc. This would be important for a ripple counter, however, the LS590 is a synchronous counter and so the Electrolytic could be omitted. I chose to leave it in. There is also a bypass capacitor for the 16MHz oscillator can. I created a dual-footprint for the oscillator can which allows the use of a full or half can oscillator. The 16MHz is fed into the LS590 counter which provides a choice of ten different clocks for the ACIA. For compatibility with existing standard MIDI packs for the CoCo, the 500KHz clock should be selected. The LS590 has an output register which is clocked by the same 16MHz that clocks the counter section. The enable pin of the oscillator is connected to system RESET* which prevents it from oscillating when the system is in a reset state. This pin could have been left floating causing the oscillator to always oscillate. It will work either way. Page 3 is the semi-programmable address decoder. The 74LS133 in conjunction with the two inverters decodes 0xFF6n - the output will go low on any access to the 0xFF6x range. Only 12 of the 13 inputs to the LS133 were needed. The unused input could be connected to Vcc, E or RESET*. It is important to gate the E Clock in at some point and it could have been done here. I chose to connect the input to RESET*. The ACIA actually has an E Clock input which gates it with the E-Clock so it probably does not need to be gated to the address decoder, though, as you'll see, I gated the E-Clock into the next stage. The 74LS138 decodes 1 of 8 sets of even/odd addresses in the 0xFF6n range (it is enabled by the output of the LS133 and the E-Clock).) So, when any address in the 0xFF6n range appears on the address buss during the high time of the E-clock, the LS138 is enabled and decodes A1-A3 into 1-of-8 chip selects. For maximum compatibility, the 0xFF6E-F output should be selected. Page 4: This is the 6850 ACIA. This should be either a 68B50 or a 63B50 or 63C50 for operation at up to 2MHz CPU Clocks. This should be pretty self-explanatory. The 6850 datasheet can fill in any necessary details. Page 5: This is a fairly standard MIDI IN circuit. There are two optocouplers here: a 6N138 and a PC-900 - You should use ONLY ONE, not both. R9 is only needed if you use the 6N138. The diode is a 1N4148 or 1N914A. Page 6: This is a fairly standard MIDI Out circuit. Page 7: This is the final page and is a fairly standard MIDI Thru circuit. It simply echoes the MIDI In. Well, that's about it for a redesign of "Little John's" original. I am ordering some prototype boards to see if this thing will work. Updated to CC-FlexiMIDI-V1R2-12.29.2019 on December 29, 2019 - This minor update: A Universal 5-Pin DIN component was created and the GND Connection was reconnected to MIDI OUT and MIDI THRU. NO GND connection was made to MIDI IN. This should now create a proper MIDI Interface.
AbdulMoizAli
Automatic Extractive Text Summarization using TF-IDF Frequency Analysis. This is a Node.js web application using Express.js on the server side.
meignen
contains the program of the paper : S. Meignen and N. Singh, "Analysis of Reassignment Operators Used in Synchrosqueezing Transforms: with an Application to Instantaneous Frequency Estimation", IEEE Transactions on Signal Processing, vol. 70, pp.216-227, 2021.
Sandeep-AnilKumar
I have taken a famous C++ file sharing and chatting application in Linux, and have successfully performed Input Sensitive Profiling on it. Profiling is a form of dynamic program analysis that measures, for example, the space (memory) or time complexity of a program, the usage of particular instructions, or the frequency and duration of function calls.
Big data analysis and application, including word segmentation and word frequency calculation through jieba, word cloud output word cloud, and google news search articles as the analysis topics.
Simple Python web application to identify the latest trends in system and network security using frequency analysis
tomizzo11
A project focused on creating a Qt application for time frequency analysis of sound files.
GiannisAthan
Parts of my thesis with the title "Analysis and design of holographic metasurfaces and study of their applications in wireless mobile telecommunication at microwave and millimeter frequencies"
aashishbishow
A real-time guitar tuner application written in C++ using PortAudio for audio input and FFTW for frequency analysis. It captures audio from the microphone, computes the dominant frequency using FFT, and identifies the closest musical note to help tune your guitar accurately.
hungngo97
This paper illustrates the advantages of Gabor transform and its modification to Fourier transform to perform time-frequency analysis. This technique allows us to extract feature from subsets of the original data and understand better properties of each signal’s part. This paper demonstrates the feature extraction on audio analysis application by using spectrograms and sound frequency retrieval from musical recordings.
hungngo97
This paper illustrates an introduction to Fourier transform and its application to engineering fields, including an application to time-frequency analysis and feature extraction. This paper demonstrates the denoising ability of Fourier transform through an application in detecting a marble’s location inside a dog’s intestine through ultrasound data (fake data).
XIVAliakbarZarkoob
This repository is dedicated to the study and application of wavelet transforms for analyzing and processing one-dimensional (1D) and two-dimensional (2D) data. Wavelet transforms are a versatile mathematical tool, providing localized time-frequency analysis, ideal for non-stationary signals and images.
JasonLee12345
APRAD stands for Autonomous Portable low Frequency Receiver and Display. It is an android application to record, create and view signals from sound waves and electromagnetic waves (special preamplifier and antenna required). It also has the capability for signal synthesis and analysis. APRAD was developed at the College of Engineering and Applied Science under the direction of Prof. Mark Golkowski. The development was supported by the National Science Foundation under CAREER grant AGS 1254365. APRAD is intended to be used as an educational and outreach tool as well as very low frequency radio surveying tool. It's available and free on Googld Play Store.
programmingboy
The sudden outburst of the Internet has made it easier for people to communicate with people across the world. Social media provides humongous data to carry out various algorithms and predict the output. WhatApp is considered to be the most popular application due to its huge customer base. In this project, we have performed the text and opinion mining on WhatsApp chat data to understand the people in a better way. We chose WhatsApp data due to its number of users and way of retrieving data. Our project will deliver the graphical visualizations for Text analysis and sentimental analysis which include message count, emojis, frequency of the texts and emojis, lexical diversity, word cloud and sentiment score. We believe that the results of this project could help the Government, companies and Organizations to gain better insights about the people. This analysis might also help to avoid conflicts that might arise due to emotional mismatch or misunderstanding.
OnkarRaut45
Detection of human emotions through voice-pattern and speech-pattern analysis has many applications such as better assisting human-machine interactions. In particular, we worked on classification models of emotions elicited by speeches based on deep neural networks (CNNs), Support Vector Machine (SVM), Multilayer Perceptron (MLP) Classification based on acoustic features such as Mel Frequency Cepstral Coefficient (MFCC). The models have been trained to classify three different emotions (happy, sad, angry). These 3 emotions will be identified using Hindi audio dataset extracted from Bollywood movies/series.
galmchd92
This paper presents the design and development of a prototype for measuring electrical quantities in which assists the customer in managing the electricity consumption of their home. The system developed is a voltage and alternating current meter, whose core is an ESP32 module, which uses advantage of features native to the Arduino IDE platform. The functionalities of the prototype are the measurements of the fundamental electrical quantities, the calculation of the active power in real time, the calculation of the monthly energy consumption and the monthly cost of the residence, in order to present reliable values, the results are determined through data redundancy systems. Furthermore, another analysis is the transmission of data over long distances using a communication protocol that allows files transfer, such as LoraWan, a technology which uses radio frequency and allows long distance communication with minimal power consumption. In addition, the goal is to develop an application, on iOS and Android systems, with communication to the power meter, where the company responsible for the power supply has the access to perform the appropriate technical analysis of energy supply and for the costumer evaluate energy consumption expenses at different periods. This entire system is interactive as it allows the consumer to set expense goals and receive messages about missed goals or if power failure detection in the grid.
MohammedAlYafei
This app has adopted this privacy policy (“Privacy Policy”) to explain how This app collects, stores, and uses the information collected in connection with This app’s Services. BY INSTALLING, USING, REGISTERING TO OR OTHERWISE ACCESSING THE SERVICES, YOU AGREE TO THIS PRIVACY POLICY AND GIVE AN EXPLICIT AND INFORMED CONSENT TO THE PROCESSING OF YOUR PERSONAL DATA IN ACCORDANCE WITH THIS PRIVACY POLICY. IF YOU DO NOT AGREE TO THIS PRIVACY POLICY, PLEASE DO NOT INSTALL, USE, REGISTER TO OR OTHERWISE ACCESS THE SERVICES. This app reserves the right to modify this Privacy Policy at reasonable times, so please review it frequently. If This app makes material or significant changes to this Privacy Policy, This app may post a notice on This app’s website along with the updated Privacy Policy. Your continued use of Services will signify your acceptance of the changes to this Privacy Policy. Non-personal data For purposes of this Privacy Policy, “non-personal data” means information that does not directly identify you. The types of non-personal data This app may collect and use include, but are not limited to: application properties, including, but not limited to application name, package name and icon installed on your device. Your checkin (include like, recommendation) of a game will be disclosed to all This app users. This app may use and disclose to This app’s partners and contractors the collected non-personal data for purposes of analyzing usage of the Services, advertisement serving, managing and providing the Services and to further develop the Services and other This app services and products. You recognize and agree that the analytics companies utilized by This app may combine the information collected with other information they have independently collected from other services or products relating to your activities. These companies collect and use information under their own privacy policies. Personal Data For purposes of this Privacy Policy, “personal data” means personally identifiable information that specifically identifies you as an individual. Personal information collected by This app is information voluntarily provided to us by you when you create your account or change your account information. The information includes your facebook id, name, gender, location and your friends’id on facebook. This app also stores your game checkins, likes, dislikes, recommendations and messages. This app may use collected personal data for purposes of analyzing usage of the Services, providing customer and technical support, managing and providing Services (including managing advertisement serving) and to further develop the Services and other This app services and products. This app may combine non-personal data with personal data. Please note that certain features of the Services may be able to connect to your social networking sites to obtain additional information about you. In such cases, This app may be able to collect certain information from your social networking profile when your social networking site permits it, and when you consent to allow your social networking site to make that information available to This app. This information may include, but is not limited to, your name, profile picture, gender, user ID, email address, your country, your language, your time zone, the organizations and links on your profile page, the names and profile pictures of your social networking site “friends” and other information you have included in your social networking site profile. This app may associate and/or combine as well as use information collected by This app and/or obtained through such social networking sites in accordance with this Privacy Policy. Disclosure and Transfer of Personal Data This app collects and processes personal data on a voluntary basis and it is not in the business of selling your personal data to third parties. Personal data may, however, occasionally be disclosed in accordance with applicable legislation and this Privacy Policy. Additionally, This app may disclose personal data to its parent companies and its subsidiaries in accordance with this Privacy Policy. This app may hire agents and contractors to collect and process personal data on This app’s behalf and in such cases such agents and contractors will be instructed to comply with our Privacy Policy and to use personal data only for the purposes for which the third party has been engaged by This app. These agents and contractors may not use your personal data for their own marketing purposes. This app may use third party service providers such as credit card processors, e-mail service providers, shipping agents, data analyzers and business intelligence providers. This app has the right to share your personal data as necessary for the aforementioned third parties to provide their services for This app. This app is not liable for the acts and omissions of these third parties, except as provided by mandatory law. This app may disclose your personal data to third parties as required by law enforcement or other government officials in connection with an investigation of fraud, intellectual property infringements, or other activity that is illegal or may expose you or This app to legal liability. This app may also disclose your personal data to third parties when This app has a reason to believe that a disclosure is necessary to address potential or actual injury or interference with This app’s rights, property, operations, users or others who may be harmed or may suffer loss or damage, or This app believes that such disclosure is necessary to protect This app ’s rights, combat fraud and/or comply with a judicial proceeding, court order, or legal process served on This app. To the extent permitted by applicable law, This app will make reasonable efforts to notify you of such disclosure through This app’s website or in another reasonable manner. Safeguards This app follows generally accepted industry standards and maintains reasonable safeguards to attempt to ensure the security, integrity and privacy of the information in This app’s possession. Only those persons with a need to process your personal data in connection with the fulfillment of their tasks in accordance with the purposes of this Privacy Policy and for the purposes of performing technical maintenance, have access to your personal data in This app’s possession. Personal data collected by This app is stored in secure operating environments that are not available to the public. To prevent unauthorized on-line access to personal data, This app maintains personal data behind a firewall-protected server. However, no system can be 100% secure and there is the possibility that despite This app’s reasonable efforts, there could be unauthorized access to your personal data. By using the Services, you assume this risk. Other Please be aware of the open nature of certain social networking and other open features of the Services This app may make available to you. You may choose to disclose data about yourself in the course of contributing user generated content to the Services. Any data that you disclose in any of these forums, blogs, chats or the like is public information, and there is no expectation of privacy or confidentiality. This app is not responsible for any personal data you choose to make public in any of these forums. If you are under 15 years of age or a minor in your country of residence, please ask your legal guardian’s permission to use or access the Services. This app takes children’s privacy seriously, and encourages parents and/or guardians to play an active role in their children's online experience at all times. This app does not knowingly collect any personal information from children below the aforementioned age and if This app learns that This app has inadvertently gathered personal data from children under the aforementioned age, This app will take reasonable measures to promptly erase such personal data from This app’s records. This app may store and/or transfer your personal data to its affiliates and partners in and outside of EU/EEA member states and the United States in accordance with mandatory legislation and this Privacy Policy. This app may disclose your personal data to third parties in connection with a corporate merger, consolidation, restructuring, the sale of substantially all of This app’s stock and/or assets or other corporate change, including, without limitation, during the course of any due diligence process provided, however, that this Privacy Policy shall continue to govern such personal data. This app regularly reviews its compliance with this Privacy Policy. If This app receives a formal written complaint from you, it is This app’s policy to attempt to contact you directly to address any of your concerns. This app will cooperate with the appropriate governmental authorities, including data protection authorities, to resolve any complaints regarding the collection, use, transfer or disclosure of personal data that cannot be amicably resolved between you and This app. 3rd party services We use 3rd party services in our apps. These services collect usage data in compliance with their Privacy Policies. The services are described below. Advertising 3rd party ad serving systems allow user data to be utilized for advertising communication purposes displayed in the form of banners and other advertisements on This app apps, possibly based on user interests. Admob We use Admob by Google as the main ad server. Please see Admob Privacy Policy – https://www.google.com/intl/en/policies/privacy/ Analytics 3rd party analytics services allow us to monitor and analyze app usage, better understand our audience and user behavior. Flurry We use Flurry Analytics to collect, monitor and analyze log data, including frequency of use, length of time spent in the app, in order to improve functionality and user-friendliness of our apps. Please see Flurry Privacy Policy – http://www.flurry.com/privacy-policy.html Google Analytics Google Analytics is an analysis service provided by Google Inc. Google utilizes the collected data to track and examine the use of This app Apps, to prepare reports on user activities and share them with other Google services. Google may use the data to contextualize and personalize the ads of its own advertising network. (http://www.google.com/intl/en/policies/privacy/) Children’s Online Privacy Protection Act Compliance We are in compliance with the requirements of COPPA, we do not collect any personal information from anyone under 13 years of age. Our products and services are all directed to people who are at least 13 years old or older. Contact Us
abbhishek4444
Implementation of a machine learning algorithm for grid frequency dynamics stability analysis in smart grid applications.
fatalnyy
Cross-platform mobile application developed in Xamarin for statistical analysis of frequency spectrum occupancy, written in C# language. Data was stored in SQLite database.
bilalq126
Image Signal Processing Suite - Advanced Image Analysis Application Features: Edge detection, noise reduction, frequency domain filtering, enhancement Tech Stack: Streamlit + OpenCV + PIL + scipy + plotly